From df9851afac5582f0bdda419de7bda229fecbeb88 Mon Sep 17 00:00:00 2001 From: axelcl Date: Wed, 8 Dec 2004 22:01:51 +0000 Subject: [PATCH] initial contribution --- archive/net.sourceforge.phpeclipse.wiki/.classpath | 13 + archive/net.sourceforge.phpeclipse.wiki/.project | 28 + .../build.properties | 13 + archive/net.sourceforge.phpeclipse.wiki/build.xml | 182 ++++ .../icons/full/glyphs/glyph1.gif | Bin 0 -> 585 bytes .../icons/full/glyphs/glyph2.gif | Bin 0 -> 220 bytes .../icons/full/glyphs/glyph3.gif | Bin 0 -> 203 bytes .../icons/full/glyphs/glyph4.gif | Bin 0 -> 327 bytes .../icons/full/glyphs/glyph5.gif | Bin 0 -> 307 bytes .../icons/full/glyphs/glyph6.gif | Bin 0 -> 323 bytes .../icons/full/glyphs/glyph7.gif | Bin 0 -> 328 bytes .../icons/full/glyphs/glyph8.gif | Bin 0 -> 330 bytes .../icons/full/wizban/keylock.gif | Bin 0 -> 1501 bytes .../icons/monitorOff.gif | Bin 0 -> 209 bytes .../icons/monitorOn.gif | Bin 0 -> 545 bytes .../icons/occurrence.gif | Bin 0 -> 200 bytes .../icons/preparation.gif | Bin 0 -> 104 bytes .../net.sourceforge.phpeclipse.wiki/icons/step.gif | Bin 0 -> 145 bytes .../icons/template.gif | Bin 0 -> 155 bytes .../net.sourceforge.phpeclipse.wiki/icons/text.gif | Bin 0 -> 577 bytes .../lib/commons-httpclient-2.0.2.jar | Bin 0 -> 225375 bytes .../lib/commons-logging.jar | Bin 0 -> 31605 bytes .../lib/java2html_4.1.jar | Bin 0 -> 178579 bytes .../net.sourceforge.phpeclipse.wiki/lib/plog4u.jar | Bin 0 -> 68606 bytes .../net.sourceforge.phpeclipse.wiki/lib/radeox.jar | Bin 0 -> 203100 bytes .../lib/xmlrpc-1.1.jar | Bin 0 -> 57460 bytes .../plugin.properties | 26 + archive/net.sourceforge.phpeclipse.wiki/plugin.xml | 384 +++++++++ .../wiki/actions/NewPostBlogEditorAction.java | 136 +++ .../wiki/actions/NewPostBlogHTMLAction.java | 118 +++ .../wiki/actions/OpenWikiLinkEditorAction.java | 227 +++++ .../actions/httpquery/AbstractHTTPQueryAction.java | 96 ++ .../wiki/actions/httpquery/GoogleAction.java | 14 + .../wiki/actions/httpquery/HTTPQueryAction.java | 51 ++ .../wiki/actions/httpquery/KodersAction.java | 13 + .../mediawiki/DownloadWikiLinkEditorAction.java | 238 +++++ .../wiki/actions/mediawiki/MediaWikiConnector.java | 111 +++ .../mediawiki/RefreshWikiTextEditorAction.java | 195 +++++ .../phpeclipse/wiki/actions/mediawiki/main.css | 908 ++++++++++++++++++++ .../phpeclipse/wiki/blog/BlogEntry.java | 17 + .../phpeclipse/wiki/blog/Configuration.java | 149 ++++ .../phpeclipse/wiki/blog/MetaWeblog.java | 189 ++++ .../wiki/blog/TransferFilesException.java | 21 + .../phpeclipse/wiki/builder/AddBuilderAction.java | 104 +++ .../wiki/builder/BuilderRenderEngine.java | 96 ++ .../phpeclipse/wiki/builder/CreatePageAction.java | 313 +++++++ .../phpeclipse/wiki/builder/WikiBuilder.java | 156 ++++ .../wiki/editor/ExternalEditorInput.java | 98 +++ .../wiki/editor/WikiCompletionProcessor.java | 255 ++++++ .../phpeclipse/wiki/editor/WikiEditor.java | 164 ++++ .../wiki/editor/WikiEditorContributor.java | 92 ++ .../wiki/editor/WikiEditorMessages.properties | 10 + .../phpeclipse/wiki/editor/WikiEditorPlugin.java | 350 ++++++++ .../wiki/editor/WikiFoldingStructureProvider.java | 104 +++ .../wiki/editor/WikiOccurrencesUpdater.java | 165 ++++ .../phpeclipse/wiki/editor/WikiOutlinePage.java | 143 +++ .../wiki/editor/WikiReconcilingStrategy.java | 79 ++ .../wiki/editor/WikiSourceViewerConfiguration.java | 259 ++++++ .../wiki/editor/action/WeblogWikiAction.java | 42 + .../wiki/editor/model/WikipediaOutlineParser.java | 128 +++ .../wiki/editor/model/WikipediaSection.java | 118 +++ .../wiki/editor/model/WikipediaText.java | 23 + .../phpeclipse/wiki/export/WikiExportWizard.java | 108 +++ .../wiki/export/WikiExportWizardPage.java | 228 +++++ .../phpeclipse/wiki/export/WikiExporter.java | 169 ++++ .../phpeclipse/wiki/internal/Configuration.java | 113 +++ .../wiki/internal/ConfigurationManager.java | 188 ++++ .../wiki/internal/ConfigurationWorkingCopy.java | 79 ++ .../phpeclipse/wiki/internal/IConfiguration.java | 32 + .../wiki/internal/IConfigurationListener.java | 21 + .../wiki/internal/IConfigurationWorkingCopy.java | 27 + .../phpeclipse/wiki/internal/IMemento.java | 192 +++++ .../phpeclipse/wiki/internal/XMLMemento.java | 448 ++++++++++ .../preferences/AlternateUserValidationDialog.java | 237 +++++ .../wiki/preferences/FieldEditorOverlayPage.java | 366 ++++++++ .../phpeclipse/wiki/preferences/ITeamUIImages.java | 13 + .../preferences/InfiniteSubProgressMonitor.java | 91 ++ .../phpeclipse/wiki/preferences/Messages.java | 93 ++ .../wiki/preferences/Messages.properties | 23 + .../phpeclipse/wiki/preferences/OverlayPage.java | 335 +++++++ .../phpeclipse/wiki/preferences/PropertyStore.java | 234 +++++ .../phpeclipse/wiki/preferences/TeamImages.java | 50 ++ .../wiki/preferences/UserValidationDialog.java | 290 +++++++ .../phpeclipse/wiki/preferences/Util.java | 197 +++++ .../wiki/preferences/WikiProjectPreferences.java | 57 ++ .../wiki/renderer/AbstractContentRenderer.java | 430 +++++++++ .../phpeclipse/wiki/renderer/IContentRenderer.java | 16 + .../phpeclipse/wiki/renderer/RendererFactory.java | 26 + .../phpeclipse/wiki/renderer/StructureClosure.java | 10 + .../wiki/renderer/WikipediaContentRenderer.java | 158 ++++ .../wiki/ui/internal/ConfigurationComposite.java | 260 ++++++ .../ui/internal/ConfigurationContentProvider.java | 75 ++ .../wiki/ui/internal/ConfigurationDialog.java | 258 ++++++ .../ui/internal/ConfigurationPreferencePage.java | 107 +++ .../ui/internal/ConfigurationPrefrencesDialog.java | 90 ++ .../internal/ConfigurationTableLabelProvider.java | 127 +++ .../phpeclipse/wiki/ui/internal/SWTUtil.java | 77 ++ 97 files changed, 11053 insertions(+), 0 deletions(-) create mode 100644 archive/net.sourceforge.phpeclipse.wiki/.classpath create mode 100644 archive/net.sourceforge.phpeclipse.wiki/.project create mode 100644 archive/net.sourceforge.phpeclipse.wiki/build.properties create mode 100644 archive/net.sourceforge.phpeclipse.wiki/build.xml create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph1.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph2.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph3.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph4.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph5.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph6.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph7.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph8.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/full/wizban/keylock.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/monitorOff.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/monitorOn.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/occurrence.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/preparation.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/step.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/template.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/icons/text.gif create mode 100644 archive/net.sourceforge.phpeclipse.wiki/lib/commons-httpclient-2.0.2.jar create mode 100644 archive/net.sourceforge.phpeclipse.wiki/lib/commons-logging.jar create mode 100644 archive/net.sourceforge.phpeclipse.wiki/lib/java2html_4.1.jar create mode 100644 archive/net.sourceforge.phpeclipse.wiki/lib/plog4u.jar create mode 100644 archive/net.sourceforge.phpeclipse.wiki/lib/radeox.jar create mode 100644 archive/net.sourceforge.phpeclipse.wiki/lib/xmlrpc-1.1.jar create mode 100644 archive/net.sourceforge.phpeclipse.wiki/plugin.properties create mode 100644 archive/net.sourceforge.phpeclipse.wiki/plugin.xml create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/NewPostBlogEditorAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/NewPostBlogHTMLAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/OpenWikiLinkEditorAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/AbstractHTTPQueryAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/GoogleAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/HTTPQueryAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/KodersAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/DownloadWikiLinkEditorAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/MediaWikiConnector.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/RefreshWikiTextEditorAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/main.css create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/BlogEntry.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/Configuration.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/MetaWeblog.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/TransferFilesException.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/AddBuilderAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/BuilderRenderEngine.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/CreatePageAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/WikiBuilder.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/ExternalEditorInput.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiCompletionProcessor.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditor.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorContributor.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorMessages.properties create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorPlugin.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiFoldingStructureProvider.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiOccurrencesUpdater.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiOutlinePage.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiReconcilingStrategy.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiSourceViewerConfiguration.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/action/WeblogWikiAction.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaOutlineParser.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaSection.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaText.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExportWizard.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExportWizardPage.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExporter.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/ConfigurationManager.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/ConfigurationWorkingCopy.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfiguration.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfigurationListener.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfigurationWorkingCopy.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IMemento.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/XMLMemento.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/AlternateUserValidationDialog.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/FieldEditorOverlayPage.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/ITeamUIImages.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/InfiniteSubProgressMonitor.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Messages.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Messages.properties create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/OverlayPage.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/PropertyStore.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/TeamImages.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/UserValidationDialog.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Util.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/WikiProjectPreferences.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/AbstractContentRenderer.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/IContentRenderer.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/RendererFactory.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/StructureClosure.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/WikipediaContentRenderer.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationComposite.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationContentProvider.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationDialog.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationPreferencePage.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationPrefrencesDialog.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationTableLabelProvider.java create mode 100644 archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/SWTUtil.java diff --git a/archive/net.sourceforge.phpeclipse.wiki/.classpath b/archive/net.sourceforge.phpeclipse.wiki/.classpath new file mode 100644 index 0000000..8f4f2e9 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/.classpath @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/archive/net.sourceforge.phpeclipse.wiki/.project b/archive/net.sourceforge.phpeclipse.wiki/.project new file mode 100644 index 0000000..1739d16 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/.project @@ -0,0 +1,28 @@ + + + net.sourceforge.phpeclipse.wiki + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/archive/net.sourceforge.phpeclipse.wiki/build.properties b/archive/net.sourceforge.phpeclipse.wiki/build.properties new file mode 100644 index 0000000..202752c --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/build.properties @@ -0,0 +1,13 @@ +source.wiki.jar = src/ +output.wiki.jar = bin/ +bin.includes = plugin.xml,\ + wiki.jar,\ + icons/,\ + commons-httpclient-2.0.2.jar,\ + commons-logging.jar,\ + radeox.jar,\ + templates/ +src.includes = .classpath,\ + .project,\ + build.properties,\ + src/ diff --git a/archive/net.sourceforge.phpeclipse.wiki/build.xml b/archive/net.sourceforge.phpeclipse.wiki/build.xml new file mode 100644 index 0000000..4ad0f51 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/build.xml @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph1.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph1.gif new file mode 100644 index 0000000000000000000000000000000000000000..28466aad2895837b9e1df79504ef776d9fc8e7d6 GIT binary patch literal 585 zcmZ?wbhEHb6krfwc*el+{l}l(2e0iqaCQHY>$?wL-F5KlvW;h#Z9KDJ?WxWwYdfZ_ zU9j#{=hU^!HlOL3y0&}D()XW#HFZvT{QAeM55GQr{nbBn#l08bAHMqW`1SYa?|$5S z`Qz!^A76j`nKXOZy_etLeERYE`|qzme*gIOXZpNFrB$`F=g-e6$X~E{&Z2#}Q&vVT zT|V>AubZDfTwJws+P}Z=et+8j`|HsueL1@}cW>X=w|U*f4QnQS|8!~Fx{lv(R{egv zZts@v<@0NPKbgL}Npx?E*!DV+%~is?8%1}4kl4yRfi;DKs|y8Js1doH!n|}XOikI?lvyIYSQfNY`oH{T|Pd(Dnb%M v|Ads4IJ*iM4>GZE=#>cEc+$wuFJ_bRA)s+#6APz=MZyFJM(4Ih1_o;YdXL(` literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph2.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph2.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef51bd544fbdc7395428d67995ff9a9b881b4b66 GIT binary patch literal 220 zcmZ?wbhEHb6krfwIKseS;S!r)))JmlQ{FNwwRTEO>(Y?!&Aw5w|Ng%J`{~%3g*@Ep*Y~U{NvkRFU9fRo-~QE2#gB^W=jGQoZbjC7BTgs)7ZZU%s^16P^?H_|6-h Ox@?)krsix#25SI#S5~_K literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph3.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph3.gif new file mode 100644 index 0000000000000000000000000000000000000000..f53f01bc36260741a1e039679b36626f5010bd58 GIT binary patch literal 203 zcmZ?wbhEHb6krfwIKse?-LP`flB2a#_x$_&{_m$_e?J1z@xPyr|9LiVZ;RNvQlVW9 zqPrSJw^WJjY!F?QFSs&aaD9o;x)Pyf*#iIn|7Rcs6o0ZXGBAiR=ztW0>||i|P*Ckl z$()zLxki(dg+cX9%A}s`8nwf^uT3u?U!F&U?ITM>eM```l!l89j1jIL6OQF Zj~cyw)$~+9gtTrgc(A?Z9v35nH2|<;Md1Jd literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph4.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph4.gif new file mode 100644 index 0000000000000000000000000000000000000000..27506f6d7e61ee617ff072e10c291be4efd68c03 GIT binary patch literal 327 zcmZ?wbhEHb6krfwxXQp_Z$IBYetux?yuh5fA^8gfa_0sYEDX$@8&R?(qGWMI>Eg)J z#W5Aj<7-wY)UHmhUz<|DHmzxW>%y~b3(wBod@a6qb$sorkr;FE?8n*u-Kt|Id9CY|Ns9p&;Tg@WMO1rP-f5pnGNz216#_0i3J`ye9Xt5 z2rLLun(d~xMMJ2qXJSr@23Kv%tu@CtZ>?Lk_=H8##~8V=2^@bbDinD8n6qAnNQm$R xH1Kdsb8>KTcK7tOvq?%yND5DukdTrTn#97+%E~lv-hB3@%u9n;`Z_XL0{{d2VqE|L literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph5.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph5.gif new file mode 100644 index 0000000000000000000000000000000000000000..1bccaf8687e76c732b8e1c900afa60144e443594 GIT binary patch literal 307 zcmZ?wbhEHb6krfwxXQp#y!1iE>gQ!E9#^h@Ub*^N>59i?D;`y@d0x5ZS?z|`wHseI zZvD`@^GoO6pKZIobRYQLx$g&)TMx5GAG2p4tItHXfGO+&Q#nFra7E1Fik!n8JD(?J zK5zUY-h@SbNlX5N0Rt_8;!hSv1_lKN9grm;KQXWcI7}$;(2?pt@$mU%l{y=_w9h{) zT$ayaTcYe*XTo=ES$0gC826b^KX&dA=K9{M^Cv`r@layJh6}Gn*qB&ZMe4nT7#M`x S{R9PjU9)|sOm%f+um%7&Fk9aM literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph6.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph6.gif new file mode 100644 index 0000000000000000000000000000000000000000..07164754e5ca231666d9daf7fa4a9d12e378a52a GIT binary patch literal 323 zcmZ?wbhEHb6krfwxXQrr@9+D6zn=X4cJ<${r+>d*`SKk--`OT*-X9 literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph7.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/full/glyphs/glyph7.gif new file mode 100644 index 0000000000000000000000000000000000000000..32b655e46b79efda9f29c7d285e3f7bb8f98f720 GIT binary patch literal 328 zcmZ?wbhEHb6krfwxXQrrJWa!4-LeYm0=|77MK@5?WI%v@BcT|Ns9CR0WDZSr{1@R2g(Yrh@#$z?OPo zQh~*ifDR8O)dC+S-Npl{n+v%NTN=wIT!_$SZ;m)q5#czQjpMFFr1!ke%tVrvQoR~HGc z%oALZC%C>;Xmz2`hEm~W*#iIn|7V~XQ2fcl$iSe;paZf2CDpN z30Rlw@ASvc-?+op*@pxMQjR2Sq#? z{Z(Ut{{H^^{Qda(`~UYp=j!ndT$%sr1fzmi@$>fk`~A$);mgwD_V@V~PlNyE0RQwV z-Qnx(@%FyR+V1f6|LO$K)#H$#xrvppzscHtjH&JK^wr|+uE5r2LoDU#@KR!d@$&ai zhqM3f3(3&m`uqGeNow5S>Yb>=&eY<)!_mmk-?z)&*xcx+w9NGN_}t*>4oiXP>+$gN z_UpPJgqOEUgR%er|N8p;F-dLQ;p@!Y>D%Dy@A38R^7icR^rEiF{Qdsla!H>@buxG1?%wj%#swVw8!7#?8aOG@$&Z0+U5V}1FDQ+@WK(>r9i*P+l-j8psvOL z`dG`-;NIfwCrfpsvB;UIz_rKRpR2<4_WF#NviA4-=hkpW+1}|^XNBbG@7?0-v%SxaowniS?&9U{(ADDyONW(lL-6tT@bdMkx6b+c`}_L% zG3T{ZobFany0?r;_JJ_)Vjpi&TazbqzSLM$^ZRxM_+-kl4!rj*R+>zrMS@2 z*yPxV4F3QBwwZD7@b$gN+O@&ewZYb-x6hNJyOg53mZiR(tHb~A8lbh!ptR2D?DF~d z_0QDfo_kKe$l76YkFu3*ly6G;+!v3Vv+~=o?eF#V_xaI>CZ4p+^!EATpcLln@anM& z=j!l9RCDq3_mZEtU~Y+bW+)8Wn2;>yzC+1=x-M9ri_- zCZVWN37`hm5+=bXK@RlVyyGCGpb!q(+KA)ebYO}De>?$j2mtJ)6kP=Z&~fGp9EWh& zUKyKKg%>(m@HoVCH;am{3Ihuk%(8?XAV7Nb0OZ3*kRVCO+!11diJJ>Z_`E66vCgtM zIu7_DH>KGuIbguZ;WI^xp94DLB&*Xg$Kk|_8$XUbx$@=AZ&p6slEa_ze`p!IgqQy`Y%?@g<_81Y2zIX)v`X4-^tH;*%(sXOAgV_}H*& z`mjh39!&7SLni{F5MK-^po0W0thI4!&oLxtWnVP`5F zCKp2^|GZGl1b|L3OeAp*Ab>McNYV`!@L+-o3+;@8g%nckB7gv;<|tl!GHkFB2PTgLMD_{qX{+ASkVe8#OPuLH#pEh1GFow<1P(2 z)Y~q-*0k`z17+~rZy5kv@y`h}h%v()AQ)mp!84rD!VEJ!9I*>9RBZ9ZYszAT5ma#8 zF#-s<-~s}&j9jt{UA@2$1}tOXNCF~jbBoCT(41DE2{@rMBH*BWb4M?j3iHnn1q1*) DH>zLP literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/monitorOff.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/monitorOff.gif new file mode 100644 index 0000000000000000000000000000000000000000..42e5f318ae0d0c3621517d841d2b1dbd85abedfb GIT binary patch literal 209 zcmZ?wbhEHb6krfwIKsft*FUMZZ(?^(e^+;3XIJl(sWT={n%X~MQfKd!_n*FZ^h}yG zWqSX_DGL@Yows1|{b%nF9X$9S3>b(5ia%Kx85o2ZbU?~Mb~3Q~El}x8$(*OYWSvfk zQ@eq{7X=wTPFDZ-_KkNqm?~8Ij=`FpN(sc YYIIn$){1q{mUWBY{n!&H!o*+=00VqV{Qv*} literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/monitorOn.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/monitorOn.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ff3974ef67824ba3845758fcd4dbaea01daeea5 GIT binary patch literal 545 zcmZ?wbhEHb6krfwc*elMCE?30=_jL;s-f?pY2c}8;Gu2gC9R*S?^18()1hk~q+#Hp zW9p}C=BIBFU|{ZJ9n|9-Iq}Q4-wbM1y6(+}wvkqD3AP?dY}yt4ZkzaBH*)Eh3Ak|4aY>U;h99+W-I8|APR-pa+USSr{1@JQ;LAE(OI2 z1AASAXH#=aYg>D}rHq19Z?B|`Wve1T8!Iz6D+?RHVyi5#hpVfbo2xsIY^xHViy$Wl z6N5UJT&sqvlZB&@g`JS7e5OV literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/occurrence.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/occurrence.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b1efa5498f4c52d01a5f7aa538a5d69dd18c484 GIT binary patch literal 200 zcmZ?wbhEHb6krfwIKsg2@9+D6zn=YhyYt_-o4+6Q{CTnB&*PaJ%lOup@-0Z?UY5Yhl@3S~$W8`UR|S>6l+1Z6eyq{_DRaDeoe7h| zrk^@C@+{qRvK@4UnwPdGoJ`Sbnc$x2HP>pv#g?#a1CLdMiZc literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/preparation.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/preparation.gif new file mode 100644 index 0000000000000000000000000000000000000000..f1e585bdf727a4a0c6b99516d0eacb6dff499214 GIT binary patch literal 104 zcmZ?wbhEHb6krfwSj4~}5HlydXIEIy&Tt^=-FfcbtN;K1GcYhH{$ycfU|?g=0kVNA z1sE8Zbu)I|`Nwy{Q%4cj)lu zTgMN+KJ_0A7#J87f3h$#Fz_+x0NFqj1Q-}t>@J-2T)o#K`}(bEyiFAm*A-7zn7Z9I w>U8w;-FWB6BoSkGjROlFIlL%j^LX;mz@W*8so_9mCJR%D_w&PVtCSh60i=6AEC2ui literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/icons/template.gif b/archive/net.sourceforge.phpeclipse.wiki/icons/template.gif new file mode 100644 index 0000000000000000000000000000000000000000..65c2632fd60f879e2b40d1fe4b7612148f2055fd GIT binary patch literal 155 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%0A@13s`Ax)Pb>VjZt}-3Nj|^ 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

3qE{rhb!5dls6;k}pQwvij?|+_Xbo7= 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

J$uj#ao@) zzqhnKG!`Yj9vh2oGHkB6Oqk{`wm<;z5o2WLLV)ZpzGZff{?PFXHxNuw4TRZr*i{aQ z8C0-i!eo4Xm{CGjvC{CYy8ybW9hw_YFbp78cLF(r@tA3c3RCeFTwoxPlZ92WW~%6G(OV95r3@GH`k8C>(CaAq zvQ}`^epY3nI&;tKui08^z_pCFhVWQIfMK=?eNKa46~09ARP@a>4?HXBE;~aDa_fi6 z@uPxm!$@HVxSQ|L;_<9N08m!pBi3t!9h%1t4g9WK?-BOS4KUp<+N;|& zmF|#p;I@9k0+ZhoqaY?DX{2J}X#z_jV!|wk3QZwNsBMOoS&6qCA{XmAtQ(%HhF2tw zIF3K6wF8BPv+DE%cobQM4Jod;Ca>gjc0D|Wf$c0;aX?|dvpAILESGdI&u)#@LsJrS zgEFqI0<5i)6MML*~pymcpUO@ZWFphJ>0*539@)IUN{5fLWv+Wlu03`4i2$e;=d^LG| zY=6gCH^U8O-cmuTY;jf9x$LVF&dv?q1YQp#@ zNPpE!=ep}<$M*n|cbDU3i>vPQ_RNq%7}+~*0BbWvNVG*WM*y<+-<>@|tG)t4?VvG{ z*8p%Kt~LMX{2;kN2B>85FK9S5%Vw$oxjjn@zC45Qpx=VeG<@VAQxNvnh)aPCFc=oi zx}AEEJK@a&`Sc@=?5fo(xdulh>jCs*!)pE46WBI0c4Z+=7R@?VUMgu-7SF9g+$<5p z^O>{j1v@q`-a>u6*qtRiTC;6xeO}m?OV@vbY<~k70^+Y@g35ywYVN98qRj!yeMUsy zVtuXyXG0>k$wB0jO&2S563<>Wh>ThK4c8v@<6E4%1Vo zJocVg@#GCNlGexsQZFBdZCG`Sz(qQ4G+V}?h)$rof+>95`uLM1pdqYNDRtA?ofxky zlSV7`j@pNifgu}QrngnJLRhSl`j&NjMOE9u+?vZ){}c@~*t88%BBLxz^^!+_iYlik zD-3D0!DTWT0!xJ1y_d>rJHt17_FX3MfvA|q0ZcYcWKpKg+E_l4J!Qxi=u0x_urEiL zdY(zOwGx3o4QGLD&V6+kMf3yieJva|WYuv*p0l$-+Zj&pVzXTJ4 z0L%qdz09<+eR$vQ!oFa*#m#N`SD$G$y_wkz=mbM6dYyG%ro=;P87=32BG^%*1{+i! z3OV&S&RR8dEW@6tp&L~eR(_3VCDr&Oft}ZMv%K7D)aLKg5ow|s8q+M*l#>e{8?F$u z-e-Ilh#M=+DFau`DXBZ)&Z=p~T=%*~amaMj@wMD;YOjh!*?6Lj39?Mh*8S!zdQ^k= zA8lwkcFWL2Jhok70`CkF1Un}T-Vxap;{>+La`U~U^g%aD?WluO*N%aG2oBF^rl?cD z3!TkoD?nR#SMM3Tef7X^${2LfYjtA}l{3%>%K$Pvpm9cp_q~8aDv3<97KNrb*}SZ? z`&E}-mbl2)A$>2zs^FX7?_?3t+vg14;aiMw@6RJI;}A7dvRpKv?o}~E_eu>0?Y`_I zo{SguM)|m2)KVd`9ZlCRm{*V=rKzOz)Rac|CwHh(DMbicE`HucV3BlotM@5IoGB7l zCbQcC#FL#kgB}1qgA)O@qjmPU){&TgL(_5QTaO-wHMyttxDM@f#wv{`oyIq3Zj%Ap z!9WyCT}+>D0<JZMt9dMrGGY5T;=$!I(sYVX5v-XKNEss*IFARJ@-8!GayNLLrWm`vn0?qqxOn-ecc7o-8 z?75HwJiarl*7oN7Q}SMoGwuVvy~6zHLa*^`^YXCW(=FNCQ_jA+|}T7 z8xmMvZ>GXg&bv^Wx91vLS3phzQWX+oFy{Q@461b%^{%yHv6DsYDpZiPPu^5zXHM41 zLynBuCIwFz4!JA@^`)(bNes#Sc#FS2{n}C7 zKI(V_J4oMe(}XqpDCR#5=_r$rgk*LxS?pZ#xdxQv=Y+zovg)w4;Q> zs1YbMwJ*u3y&BL|MV8Lg>_y7=LBqvYHy6n_G1|H74JNSc#!kc6$c3 zhIY-aVV0x3P=82kL!d0}QLTsIRD-x0k#8ll?~$(iE!k1)F*KD>t>>QF7jYrGmN2K{ z|JG@<`QaEUaDp48+cMkoT#PF&8I+Dm^zb)2^k-bY4Azr7G~;RFoC6H+a(_Hu5)J9C z==Icl_<7<@+YH18dNI^GdKw+Mc$TXN3&{h2d^6`IEn8==Y`^JuxzZtQSqU`1@LkfE4q?HW5Ti}C6HM3%x1cTSXGATy1|pK z0BV8;@@<*L!zRcJ9nlNkUN-`ayIe|R7QnAtW9`F1&6ZhocJl9G?+MldT)f^FJ}`t= zR3|7fa@5>Em2_8_dxW)ylYQ!`PrMM6qp>JMc^cxozCMT({Go?>!gsbokNoO?zIG`* z|Lj#mw2#3cIvpT6y+B%~y z!-zN1W;=3IY3CYwl$3_@d9P);-cst|EkmfB%$N`t8#Fe0tgIqdQ2m|&TGuTs9qsSN zdCRxQK@yY^6c1$7kP#4;8IX1_Dzi`@_6|>rD&U#Qv?Nr)a( zb$jn?{}~i&&lJBBzO9@!R$;?6l}~dH3h1G^Lum_#9ks$*(%yD=-ue1wY#<=%?JE6| zpnv?pLHkz>j>P|!!Lc@RGPgB$q__TdK(eqiaB!j*baOHhaBwhilmFf+**ZHI{ksIN zLUHAvVoVfnMhTr+IL(}280h3Q==40lROXezeE*`B$d{bX_2ZqFw2!3zd#L8r01!RQvUnTP}1tEzz zP-r9&Ane#dl7&1i{!%W`yY2}&5DQoyhBIjj)dh9f-Fv*7R+B57XEi&2n z>XV@=`^Px&s2rg2PoTn;Q=5%|Ms2LTu7yiU9?W;(SMqLKq5FC{BYEd}*vRacMDgHo zP^z)eed>}!YM8jz43^&!ejB8`GT*v<$pgZ6M!Jxr?DhKVX0sI8poN;%T|0{h4B z2hm%f2l-7NuKr6)B)nCMS)4xO&nmFwe>Eu3E-OM>Yu#? z91!pab{y{@-gREKraX#PvGsJ1H{%|*mmi%TS8Y$7M|z)cFBl5Z47!gy-p0JcZZS^+ zVm(6#5bYH13b(!23i;LzFq`Ku9zKdB{{4aA z^lK!Z<36#Q7XNmVYC}48N-0JvR-ND_MCpLmCZf;}*L;>o;NG#Dv zlB8^ZE*2`U_+XBklqLH3B`$YAl322_T+-a$=?NY$Erg8JiN1;i0gjZ+a7JiurhoX^ zoTo-i@MD=H`;)OFC5i%!G*N+=@_T&5n53*|Eec5DDuW?2P>&ImJ5Sykyyl%xn7%c~J}B(W|?RX$8~{|5m|AzKN!l170t zG$OIS0jO2PFEC<#BT(FkU(#cxz+!@0DjA}nN!31ve745QLQ*r+I-0u7;G_xuWyG(d zR#m=@mIX&4pi3cq)Qy(XV`ZTZHlnm-iK*pOF6wfWE5wotD2^U8CdTz~0lrJtD-PfJ zL)2CKkO$NpgOcWwCvN^}BQL;aS<0f6Ny=*UBOhr(^OFAEc zrebpW^M1Lp3;wo}%Z@trORXqtU*xk5v=7iyD5lcnOFwQjC$#hw@9Oe2OLCG~c0P4g zQdPofPICO&b=jaz{JBcwn4M1_nAmH|8vj_g41*(d4x~!tU_w7cX#2uow}m2-wtyf_ zsS(dB>G`3WDHN!Xr-S?R+LoW2^cF^rKWA9WR+|w>Eu4ZOH_nGR$VGBhao4EuT*la) zjaETzgq$3_m&Z#JVYiuQEWnBnAHUFe7@88X(W}XK{kh#p2ovcz?m=P7>UT9cAM^{rNfab3D?rV~nNbR|3`lnE!N|r$xLU6H$YSuaOqscr zwAVGyEDT1A0P#{&ssuS{z`r<-w)0ovd}1wR)0??*@R9C$=;yF61FJrN zv^b2QVy|CpQ5iv8A{oO@ZELnggVD=((&O7>xf-MgFf`2n?K1U)D05t#^1Qs+hG5DX zWX6A&A0(6><{LZp|KAy-A=y78na1314>5WBB`=q`z9yf!GzGR6cBuQ8%Hya?mIp;H(3Xpix^i3? zwp%ush*VtXr_P0|o}CwaN|}be+Ml)GF}A)fC`w2;&SIUHIG<_gmEl!;UU}h7JilJJ z>R-T3SVkF{$}(8{l|{$MEOk0c*nK;({m?l$dmdL{HA(rgwrGf_6zVdNF;`Z%$S82R zCo-{Z=4xlDZpVtp!;|Gy>EX3xx;eIUTaoa#A>Es+C^;8&1ebVMsp&yZ7jvoMTqr%X zrpVGOUnYwO#ZGh7Q@S@SgtBLEU@Qg)q)YXj*1)@ydLV1!96O;^iT9Zj$8^8TqgA;q zT7%~briRDPD%XDM!ECehzz5qMZgWoz45h_cCIoWisyxA)v8BQKWaw`mkGmCdp>pPx zQFoGR^k|Bb8X2_ZD)2sxTcdOLf<8IfJ)!q=aSfvr*w&*DSbN7N8Pgqo`_iSsBY7IL z)$dU1TBebmR-hBNHN=$cYDDRAm#bzO#~q&5OlGm^wk7lt_{o4+*_}hIjHzC7ujvg* z1YPL8b;59vK~#Fo5R>%-F^___idl@Yav?pB7q>}hpzOA7R+qNa(SL_*5E0&|;r zVa(|>MdGjt6t7k^xO|2TrQ5y}?3xg#xuNL_d6i5^%DgJ{>!;>(whma=LXWNUwN_1Z z(4s+vk-;}}L21BTZ~9D)`t zxUnzy!p@xAN|P}xRX05LdP~P7OiCNUN(p~YYxs&Mc=GW9V@4%-vy*gv`i(}DZdWuc zSl74f3bz%b#>3)lxfl4EbL;_wWGgEw*VdBiR1($I{gYDVcvvY&-IXWYBHVqlvwjNfuzi==<+9*@qeNN>0%&xHl zjUMo%rMpfn7`?{r)@G^X>-~adkv7Mu+Y1|R<8llHZbt+(%aTKC z)?3sedv7`O9J{;fWZ4#TYHPM+tESgSZs_yZh}ufgXFsxgBKNJC=I%^QRD(yL9KurK<~0s5GItE;IfAlBDKcGy7ZQ?gM`Qr!D zcfb0-?u82fKR}uP45AB^wZ3iA5I^B*t+Z63Mf#~#Z)VXAI<~IC#nD7qEXC!GYH5DA z6>eBJ7KswDe8LlWK8%2(G=yS$&Gi$QyieL_VH^yk6q+55AEaN6OTXML#M|;EnclXub7Xt%p=N7I~mK_q@{9g53;44Em1`~Dkx%*7FtTi5U zTcaJR{Y8`9MK&!ZRde?|(ef@jMNsXzmhhON^;;a`^Vv}(OMj^*%umf82fVS_=NZshyCRrd@m}k?RlZVO%JPeaF6_2mN6&W zy6E|4#+}A{WzDkr%r^c^y?*>pXowzKK@9#3+Fv6#iY{}Lop+u7O-t{gt_rdkX^3Dq zKsu)(XoJO(UVYEYV*PpsbJ(rPOuRDYdKTjKa1tgI({YBQZ8?LoSt!RUAt8I9aU2sq zf3Rv>#$W3&ceWjyp+Ouu{LfN);m!^3lVZR=+I)X0m4nsJ?O zGb^oKz$W(jLQ(i**(rt8u1v&mn5za(K1v~k(4A{~H z3v~d?L=;C-@f8!F!8Aq83?F-zRHxn}z40WDMPkh{nPaX+F_@s>--tG)4VU)s(C4jevjG(*=HfD zqgk$Z3AzSCFZnu>$P?x1ZXbxdGZ4b<9x*6^0+2y2cfBtG#UFQ_5I|6OOfEgi=$1C(Muw5X)3>hy1;a+OS_AjQsA0Gx0`>h# znjKE=M&^B9fNn3^q1uaIw&XLGoVU#o{k0TSSDc+puQOCv()BlpMAog}A;r-}AI5_| z$FPGdxhWxYQ-znKmN9TP6^$fK`+GXCOv1Lnk}vBFBi`X_^!b^!g9LOm4fT@0j+$t} zSUg~XP=WC@gC!GXF?4X8K_nly&cDcwdFk4+)!0USl#_sEO|mRWs|=2Xn3#cdZQh(6WZ03a3)W^q?Um!<<-*w8F2iF zOk9-kqOs&`F>?BBAxQjS0+D;nC6k9AC90lXPnk#q2KQw9(*S`V?%0#L^au^T~S z!ltLL-eHGt4`ZHp-IB@f4!TG0Dz!aTBa4)|X~u5aX@Y-;H-c}+=rVJ_!8#my{%vjZ z+vdvZ#N5_;YoVpCuA#tLO)D7Ws)x@va-WOzQW8z8gB3?xSqqNsy~me-R}LQ6Zz_nN z`x;xrJdV%+5JFrO^Ssvw?1wYfv!(P(y(*2a zP2~@FjZlyx`@x_t?rVhi_|xiTS(ElqaC`)l)>I07sZHk=vW4deGe0hiCTh{CDg0Yw z2LdzYpW7UO4d5cHuW)B7Km z@5X;_Y?2C=1n2A@5^ex@dv59yB>R+U31(-8^AYUp@8MA%hT8CER17(%(2K?%_{Ym7 z0O35NmxsKL_KKUsOU_??`^kiNz_LP(6%F1Z1h#-Cx%KwQ`+;_hKPW2e*cQtE`1jwwuY;V`GZ|@FbOhDI+~%EI z3E!*htmkwBLH)4n%zF$aLG3WNh4*s88|^J!8ie!`+H^rI83qzhg+-q>ux;ZU8St+s9BxE`stgvCrM6&f zYYS><#sw*e90ErpN7RAtG5Xzbuz^4=&3@d6c1ev)~V zGjN{>xo+Xp?@NCDse-%OvD$uHCU;44DNTTvBsfuVYz+Ca{sCj+co}In<`Sb?(nx*k zM80db;~kNboM3_d9L0S@|KUE<*l2f!AJNqsF>Xr3?HVze^VHF?8&XW0->Hj@r^9qc zYr{mR!8T!bFdyt0x$O>Pa8+02~B?K8-n^Yn?i>hwye8#JQsNEqXo?$jNY{t&0-LYl9-Fuo|4_4PH z4OI5U`k33oInKX@H>1S1T?cGwIcw&ACmJK8$QTpG4lt6!)Qh1mcuVevtUX#|Z=v=kygL zd(VgcC`cuk*rnhaU~m_XfrZ{F<}hWXDo*e1Xo-*ej5ij9z4S0mvm&I}Jg`se9Id1Q7Q93HiY;)4xKc9c0GE1JM&e-76J6f-} zvy_G0gK|+y|KX*tJa;r^`YLXbj}W1HE5%;%IOFIU@{X9#$0_Ln%2)LEarXuBj{bt=Em#vat|APYWfA5gU$O(Kakr6Yj1%Q3;FT=^W%g)G2ei-Z^`CT z$#1-;F2q8)#zei{(k7HjB`xeVb+sCMO3;Q>$$a~UBMP!=0qqUAWJiuh^F9cu?lC<}QoyRE2XMPAd=s68vV%c0NU zg3X<40bR07(O67_^@17K_{+9_y0hNvT#CT$6gD|7-vk_=d5&P=1Ye?tw+AHQMxD!S z>e74baz*Fk?rKYJXW*yzEwO)jh&>X)E2D2lcE1}`JaQq4_C0Y(w6L_)^D+Yet@rpg z3RE(i0Rr9I3FDYrwgc-xG$-n_i>}|QFBocz;0OYo8j0tivy-=WlKwTyTr_lLShcV+ z7+`LN8Q9Naj%qM5Op&7G#!rJTU6i#lec-Pt>Yha%K=IdJaQ)J$auzh`FU^zu$@} zemJU-Nm!I71zZV^tecscDCZ(=Z{JBkt#knq364`(h;Bwcv_?{3X_!P=RbwQhDrl57 z(*kY4kT7_jgBHw*HCD#Xw%=LFW<;Mf(E<$ULMSb_1_2ZofuCTpOq@sw*b~YzYbaw8 zmQ{&*szg;cbxtLVsxIePDXie8gZjQEPIQT3{uCJ7eqf_{_n~<=vY7%hJ2yckt0m4* zMJ3GXiyEx^_p+K{=j`2-crMWSc%prKNW2kbN&GB-^VDsb= zszRTUWdDw+wUlJ1TXJ_gh zaAk_xX%6`&`-c!%RB_V}XCdS7kVuU0jed1QSw^JHVKO!`8b%I=v_vA6v5S`5i!sGv zqS%WK>bxHV+$Ydc?9RWi9qW(^Bvs}*HVI0s<~p2giZM%X!RAJnz1BB4#*%67TA8T; zMY{53Dh1-{S$6pg`@COi{$DfWm+$JfQ=b@SCp5H6{BWpt zW=8iBG>nNPJ8C#uo}v#O&*36laHf=C&VBMDlR648W zm}b(H40D=)M}&Kpn}hqNB6Ekw_^RglJ&w8ILY7B7LRGo1*#v)jYI;n|zPYA75?ws8 zUy!~ksjdD#RdSbV_d51Otab&q)p5tq*|0VDkKQEz`{Dc8!zvDRgYW4NWC4~AzF7SN z^*-ktg*H3|-afW`{<48)z4Q0D+sKKpIu?GmF1q>0-ti!6;~r5>HW@fGho2Nj)EI|w zkpcu9Ih=t;F^F58f^?Go6oubeo!xCp;2Jr zXnaXG+`({uG=w^fWjaHMUbIVj-nVKq8xJ)A&!|8?&B<+NUg`zef>}>lNm}3EHDg{h z?#stt{fLELA!nK-T2P)jvfC{1>R$wP;qR|xbpm&(+MPHNTXsgcAkh%nBEG-o2q25d zyO&<8(Ru!-3pn?6fJ)xC4^+~>^nv=H^n?HL6#Rz`Po~np8A8Q#*q+v!$(#vhZrb{SlN)Gge4K8r|2FT@2F>{$-15Mxko)6zCm>TLI^VV0DQg z$sg;cIB_ZPQZe-qGk4@MdZ=y(9pvWd8~hSDqvwN${T7H%Wqw4k^-O6Ztqg9s42;XQfz)etR4HvfuZ zIijUsTvSF2Tlyhv$)BCm_|2I~jgR~M0~jsbvVmuO>mu&{W$wgxaM=%A2QzvDI|Czg z6M7?CYinB@M|yK7Cp#l63lkeB`v0G+6gIIkaWawlr%31D6cLH?ymG(-h+bnr!H`6d z#RYgdfY4O~3e<=J2^K`I@Pp;(1+$dZlds3S|gbaZ5ew45(Ho;hViUp?2M3bk344+jg$Q zLM3O-sme;6X3f?9c7``tu7$l0z*8{qEvzb*hs}!5qqhNR;Cn3#NR{%tbfucGiD@7G z*)0bSK86n}6dw{&9t`NY^DsWzOerY2?(2CA2bv%3f{g?;f@169)>X|d*UEK{;(hak za`abD7neC>c8@+!u;e}n8_3!URnOYnkP@%1Ua$-ozJ@`ij-wF{r8S@)q%qy-12iT% zLP9#dzidQ$*$9P!U(|DCq$gz9qmsov)tZY^gT-@O4F{mHFLDrRw?r5hEeA~_;%;iu zCB-U+;BW?4MJWw0y#AROBEz}rs{9RS4gcjxoWOtk=0t3qES%g#Y>cdI9lsInf4;&7 zbr=BZlJn=(r6jW^oVX^*FUTI?IE@P3b{eA*GErdA$QVd*mq3Yg6V|xJ5FHcO{yfoO3VBCPojamqYN< zr9u5J;z;%(*{?B%IEIT&L~S8$sQ7k4IZj>U;YlGZLP1T@f7 z;6Vk|Ydm>+0xWQ^x0+%x|h;Ebv=$2A|_wb|!L8|l9S&Z0uuSQVU~h1ny++Ax?-oQk+8mxJ5}5 zxe-rdbtWuj@kFxVZ9d;ru1cu}t$J45YNq~s%e}&t9g6}W-k{S<9T_kuVLqBl(94!gyYZln@%OBY6I;dT zmB`h(=K>E8$rzQ)cNk)<6)Yx*u@*|E<3<%|)p-$fs1JG+Xl>#98yT^Bgoso)eGy$S zUu-+{Yc~oCf(JO(am7=mn9e2?$X>7m=L4c5&f9ZVE)NZa(k7I*NjoMaxkef+NG3-9 z7_eVIzvDM`*<#@EWdlQLl8!^G^L0zW+$)-yc+hss=-MvL$|$tgH7g<>zR@u1V4IZH zHhQDzqc&+WpExT}tKU%(I1{7>FU{hJb2u%TJH*tWxXih-vP8{UmZ02?6^`Etgo!ca z?}k_o2bRh)V_-+8ehLdwv0T*U8Z;gF$c7o$E_1Z_~T2{#zI=ZA1BE}5s&IidA zSi!Ma3WbD~z zct{`XfnD1f>Tja6!_OzD(*71;V8n=~6car4gBAlzp~iHoX)ZtE3bk~g_vJ-}F`Z%j z%I3T<=8bg#u&9<@QP;Yi$XMt{Q!VS+?1vDjGWmP+kWag>@r)|25@?*Q z^kR9XSpFrzJKznLGTC}eZ{%rt;y-6hNqShT$#8Np?LX`MO>ZQ7iFXL0C~v zdKBMO5d}14d!~STyk)qI@|G!wjDcZv50FDYr~`V1=UUj%GjjT;8v>5dPsF!~{9uU5 zi2Ou|R0Kg-xTI72HHZ^#9UTxWmv|{;Yye>`B~2eZ{hxpj2j3wOsU5g<_`-ODNXXJ; z11bnJ!~q)8bgeDfQvAjN5L`A)hG#kqR<5apu>5_h3pw;HUzO%KU*G{&x%{W={7(*+ zLgw(==(7`KUDSEdh#M@Qz;1raB4}qUapITmt#RGaQy(#<%V`^B*6!jd6{?XaL4mx(IyFdJdS~o2Ki7iKy}9{cZr>k$gfkeFQxtA+0Fqhm)W!(l%4RJ(SPP;EF{(VLLx|U zP8I__n*2lq2+LZR z2;0ZA*(AVf60T>=>yYzB$E`VV-z#njTLCbr@r&4c+E?9R;Wrvmxo?c;xHGR^ZPjXn zAxc=a(QD1GWC)=s=#xDAbz`ogx&QxyMa+QAM3=L%|(}pZ)(nY|=>KMVI-DoN)V@SP$_+;3L;~BwV7p zq2#j}8b4_!q?C4~ZENqGIR`$TaDG<~Z=^4yn^eCMPgOO6$UC*$~ z50=#=3cqj~TOv5XB`UyyAKja(lq8xB^oI_9wOPGV z35*+xWX9vXEE~QuDEQ(jK0wP({HXv$mWdz@diWw)Ji#s;(KH_{-v^49abt}5S%W+u zG~)+OAA#QRu4C!;uo;Iso(St}iLYQ;Qz-tU8cGo_}*E6hMrdQde1SO8HRer71 z`{94*i&kvpLG$L`$I>e0`E=Bim@`t_)TFrypP8k3ipEw0~1+&`0@d)KsH{z@ zND4{@)G6lXRa`&EhEZ7ez)Mg&=6cOg2Rp0m0&4U1k!rog7^GP&wGt!M9Gi72v}r5G ztfoj|nA4cX8xF}tX)h;9eL792?My{B&t+M)cI`$exrHWXBURldt<$t4N?~(5J^i^R z(;NYD5Uhb#ncb>R(wj^$VVkw;%o|Q8s%768LM9_rj`tkqDjxm1DMxRyJnBVBB6Ccy z_e{Giqg#Bjt;BN%7;w?X6T_8P2J9okjwbHqqr+xv2`rkbT)Sm@*)hKtYr= zb*myW#=6*t%xT!|V-Y}x?N1QlQP87wN=-_q*NagUSZ;Zwhr_upFx$(#6M6~SX3CLXuDAPh7wp4x=BOC-fiW_TWPfe zN(w@`u@cV^hah3Y97U>`j4=#yf)GRHnY)AJdyfA;4I221Eq&l{&$GTtmSn8CI#N-t^lGKsAv=G8?IbmNUyIgqJ@AyPy>sHbkgx5$+{|%<#-q~t*2OD>^w8e8z)YayGNx*|f zcLq1$5-)!l8RmqzX0F{Yr8_TMN-P7T@aoEumG8dMZA5zqTSl&j^O$bep6VM%mEx0v zlPza!^(g?J#h;sC{KUuyGIz>H!WFFsE@C~8gT4$CnnvJ9RZ|XY$s^fim}qvu(i5q{ z^#z+O-VD8u62lDvoh}HHWHF#xY*FU9a3+>%7O-?k9FwFLezM{+OLY*Sz>Y{tf!ap0 zgeSihhE%2Z0X#%v5qbl1hPr^9snuELj!GL)ZaNInf{GfkaXi7Uz>2S0-PjCOpq~p( z4cwc8jbaph!q&LZCZz+C(E%SaW#K_EUCbL2n$a4X!L}Q%(IZpkFhtP9%cri1NroW% z3-;J>NI?eAZ%4$XS@4P4V_BW=6d6|34l4yTN@RFZ{4?AG z-xo}6TozH`n^6mSqs;3(nBgqKzusfPMxXmG8GCNm?KeyWkm>|Iq>P7X&JGkz(nxHZAERL^E zapC~$5*JwhDEL&JcTxVwEtcD%#g z+53He>^SF1a*o*~JD;7HvbU#lZ2i4mV>+Bu7kOxk0cM|5&7bzNxy$bV(TC8 z);X@!IXmn+9A@DRw}I#k1L%As%n&8!5oJ2i}@O{NIC_)D5d~I@g8%xWLiYW4(9J+xSkdU0BlH!M^7Go z%r)u+Z2azDDF(bBkD~|xH+2<&90jaSSaq?Pj<@}=-6N9Fbz4;s!Hr*5@E_~yc_+dUCHKF8CgcGNfedI;TFGy=nU3wzA@t zh>{wS+LFke^#XQ8p^o6bkBY8Wf&_;UM^zSR0R6xaVSHQ_#wi{PQl1-#-HhX!*zads zxXLs%C?gtQV9@lUHyuU_qh6ZlMq$;I7!D#E-Ys84czdQw>p~f!A+W+Y!vb9&D($$> zidbjN|J-{X%#>U#!G#i2uDDZ+JYpm@6~Zp!1D+Tz_jG3n9FoI5L|+IBOQiK)kGC4} zM)x7=1F_14q6l)Vkr6Rj)s;UOavSl+=hv^0nNe6dm5Mx_(e$Ny{TB*K5G! zbVE&KHOhs^f8@5d!s^P5QZ~PeaePF&ftzjfEE0IHdcykHRcYh1lNg=@!93N#24j5^ z*$%qdu5FKSPyDqOk{A9)>31?XE7~2=Cel5Ph@!bpTS0q({zgh#_N*~nS1&kRhlq5K ztw8ssHhg>Mjs8t=!1kp$%>9PEtmx&nVvTw*m?!!LdK>vh{Vm3-G)?}itguEAyol(# z;B>$Y(bmHJP8o9bj8w-s*+I54*gAT%VALf$e6wLUrsn^Mi5ba{C8LH5&OE=!jz7;{Z>M27umM@cw~*5my~doG@fQAgEi z+puQF2ZiMhGW31y&4XQyz3p))6w{ru&>a?m6H!&Z*abu|>dpO^2h;?{IgY&;L?*5v zCry=;d9kH^cxIQg1Nl2e?QWTu^>T~2$#S2iv3AmmO9eLf^9!KfB9qTruix|Bd*fJg zyy-Bax4nURQ<_YEj2ETsMm!Y^sR83y+TB9I4nAb)t3w276`6w)D~0$d+jHj`x#Zkc zjH!wax>NE-EroFpx=b$5j542!vGXJ6NR&1w)stL@7t`M6vIs+c&iMoD2i?@MY>t_; zVjP%BLBfe<^Dc-5vsJmlUzrRPQ0clASqtfWe8L;7hPzSeZ|2fA_hzVNOQto-`VqSS z9OEXBg7Unw&0ILP9TpQZ+_M{-&9`k zM-N9KqjnPHNW2a#d{(Qu{6ca6M;peEy!^VH-j*aF8VPWXoZ)JgWWGqKv)e6?WOK-4 zP9aVyidp1I^adDomSR5LvWVst5iM(iW9D3SHt3TYuoK--Wogb6p;*V(fCO{7WlR)P znLKHbTU4nWbxK#gq9xCq!mrQ~#}cw^C1kmZ)Hlj8Ul4W-g3Op^#P7n?s`uwwC%B2e1UgHV(FhU!d;h6a7>N+-& zHJ*`kpl@qL17_&Z9fQypxuM!E#;z@`Gv!fFk1GsQ*e1fPb;cx48nBa0u#?zJB$%H< z?DGQdSbVAMApwHO#~`=nWuAG{gav@rIrd0Vu-gNYZpvZT zBYlPxgj+GZO=x&*A;vC9==JGxlQsj&E>yreUvy?|A+pRcz7w}KFGBeev*!5@; zgrIPXRIma9DJ>q8ZMtEK$P|qT4wXh{%2b8jP1zl*0iLS?J*e?`v{afck!^;kzCW&g z3SgY=>h}=zH&GlCJq>AT0}MX4DUvD+br)VMGfB5ZTI2M~#O3D%MZc-9LSB5jeNa4? zeVhn2ByQR}jZvh%!Wvva0Ey+#H1bBEh;?^9{-Gplt@vdhq?*^gjG`z(sys{Q)`7wo zV{O@9R!0Wldq%H{ckqSb+i~w#Ka=ahCrZK;rs0e+y&4s&7}ed|E+m^VMwA6JKmv?Aq}Wp8W|eSh2Bl5^4&Z|slNMXyZeEaf?W#!ydW_!zyA~N9b1ZwOaXdsmDJoVg0y)VO+7>Pmaa5{3UwCFr8Uf?D&1<(t#1CXDMb zUD#4Rx4^gB$@7@vrZ}!(3fff67xpvdzmg6gukErl0!L<^xOZ-Ob6>Z!K zWk!11=>sA_UaH#h;mb+z73M?0)$@_zCl-gCIOBr}UnM2kk|=b31W-y+PAXIWlpe9- zNgo#M;3rCRLPG7>OdL{F94Ufqm-KkJkzUsV3QJ5^YY@cZpgCtw{7!Fv@IaC;-^x?D zN6D4j%K*t$oy*+q5e~?8-!hsh$1;;Vk||Siw4qmbixdUWojk}nW(BGy$r+mElT3+^ z)dxkmS<6`z_OG556p-?x$r3rr{xq8LB&|)pPxt<1jgz z1fzwKz-?|YvKf7m9&D2Vz1IV@e(@1qU2T*Ru@dbW z@D2SfkR%%YN<5})@6FJ5)#-pxuZ@i&SaD+`z<$&XHOLZ~({iS@yr~ukjVQbmkAZ@% zJHN7;+=Fr+O&(toR6HKJ12wLnEZOfFtU^jVGxtHgy43-DgorcdJ8sJXKlC@=9DJf3 zgVV8iEY1(CeQX_2$XqHQ`217N*k^aN`XU^v3b$Bzb;|$RVi-+B-sb!|XQ-?~jOltm zc;w1Z{@Z*Rrz${ob)VHc%Jn8$kL(Lnh=)cFG%NGCS@LHqPOlo>DrLLX`DOVbJU46C zTsZr>^z9Ip>R5KBb)=#6$GRSUd9_MXzcW_u7#`b(lNPE?c~dmk&&B+7s0^J|M`RDd zp{TQE2VA=Zz%!Otz2=a#M+PAV<_2H+KAYrpzP2EJ60uIt&$)%nOPwjVxbIsUH`2Sv zP<2OIAEGCL4Wy3J_hn_-eco={6hP zp)3z+I(y~@uaU*OSeGkZ9LYUi*xN(k(oV?=3Xb~i6>Nx3<4o37R8Zf}VVJYtJ0GFN z8p`eR%{(@qZH@9#Jl{-|DxDR~eJ#{0};mVy!hzY>lu?_F`pK(N$Yywk?#JgPL^Jdw8GFB6L;Go9IWOM zijH*iI)W{mP*zRRv=}hGHa$3OR|9!K5fx#lRx?dGTO+{cZ~J?bbla!R{NF@5@M-=TlL!yUihYYihw ziTz%W1g#)X4zbz_=-0p->CX10qG&lZso~a<6bLbdvP~R|v`|~4`TS2%=+)0xPl(*5y^Uzds;Q=Zmo#!-G!3EUd>!5&l| zCs4h)y`=O80BFMfR3EP)3z+tx!{1Q}}pr#n)jhjBS?EHioHgicrS^ozmnYnnm{5<8N*hYf# zoD%wsu_-hYKapcJnAyA^4&V8sM#&yU?a4iin*0=D%0>DJ)&zT0ONA@X>_MTY&Q{<` zZ*IJg^<-| z6n?WNL7LX!T)NT|h*sq`q--z-32WkF7)5*P7sgC(k2phf1jY~xl+uq{ijWS95Zi_A z+fSuSt%-Vxf$Z4M^3g zoUtY&zA&5RTxN;b!dmr-KWzhAxH<>Gwkg5vt?vpA>A6h`1`=V;guHDbIRXH3gul5r zl(XaxFCy^c`C>UJ%N(cS=j6cfR&1jkddTmrcmGLXJ%bZ))Bl?eruer6R{sCkyCwTy zFf0Xo=YJ7KS~Mc`b^hXr=zzNoJq$4+0;(4U77Pv2trlpDErA0_Xtn)mNUZ)56h=Ie zHQQk!RJE>hbF{3g*%;~EoYrV+rirk%s;OD&yw$GRuKtF{n(er~Hv=ORxHI?b>pt%F z?tRR0{)=J7)q9`KINcLM`17Cx9?Z2Vg#aTWsra^p(d0ZMLDzS?1G|y?2&?-s29qyL>MUN)Jh6 zzPGE!-F$WBW+$j7XZspFi<{d^o68IS<;ArH!ebN8lHIZZk(LYPg7GlnOrfYh(Tq5g zp{2Y-99!}NsJ3 zn#)p5OvpANSaP=xHqIhK1a^N(gM*b#Zo1xbbdVU4*J>sHcRgc#xutw;IwBBDS9I_? z9XP1e;u{+?MgiJWwCJ?qc62c41G{)3qBFGP%jyl{xGftPh5tdTgvzZ%?91i7Ud=C& z)ApEpwnp(N@waWfDb_Gzk#5Gn=*2+7ECUK?L8GQ6e(n;Pk(6k05W49H)=!_2C2`|T zBFBI#bdx09k!gw=#MoLF4QZFluq3a+;%8P$q>Pf^M^+N-+!os)lfPTmK?*ZA9O2Jij+jb zroBQ`=e)NJF=)q_xDagDcr%aKwkXQSB}9k0R`pUfxpae#D&HBS*6p!vkemdeYvg1u z7>-MBJ_%YY@z@Qceu<1!t<@cPT^#^mflMoMOssioWA5Dw3qfnXdcx?tBn@aZ+%r)du8MzhL;$*IXJ{Eq^+hQoV&l>K~{B>7wP> zoNNCOmFuN1T3&|Iac$^ci`8^&wL_WvCYO3SbJ3ofOu%ihSV$XudJG}YeEPl0L00d` zC@Vi=f2SQljlRv~K8@*T#{A6fJ4pVi*F)cg|JL55$U%&ude41T)EeKToDi=p0v7XT z;UK`wirNRxnmj0`&yOB}hTkPNf`2Ez;dZ@(c!e8vPW2u98|u6Ifc`8)S&5l@fAEd^ zttxW$jvY1ZP7t;3@D>Q0?&=8W_q4pH2e7?dnvIz_vPQ0yj60K+nAmf3+%o!$*{dLb zgOBtGZM)#erq6mTZnJA57#0mI%Nmx2gk}D~ihwYh4r<#08|ZEM8~9F(KbrfEwnLr; zCst9h^CZ!HF`sQW)$iei64RCGKHidPy4?97OMJox&9St`rM8{@cE@3^H!lm;&1VrI z?83BVXZ%OYSN20KjXcMN>nnbdfQdyx#gmRaHg2j4Xc_YTQ!=8lHv?0w#y04;-{6f? zQ%quF2_gWCDUu=~sDg=F{0+hu4Vk#a#Sc%n@#r8B{4`kWV4Bm}juszTt-!N1lI+0x zjnO~^B~b}kVpXN{FvyGi#juCYur(e=s@Sz$UJX0rslyIC%9Q{I}=KmH|oN7`p?-0@LVI$<>k z7KLp%)gw-P>T^wL^0+SU&X)zZ-0$REQs)tHR4%qfZDj3dkQ9(I1pE$YQoA5qv-x|) z!&YV1h|@oIG4KVzdn!_4x#mUPM>kCmTNbZyUXaSO{LSI|1&R z)_FDTv&C$t)!iW_H%s5iF}rY*f#>L8xu)UGfKbwNX7R*D5=mqQK-rq89}EFR;9IivWu!I zusMJ*N$wQ69?2o4Q;@K`Ypk>^oa!<&eeD`gRm0Q>a>|Nj; z>7c{AxFR;xJuj5GXI7{?*9%O01Ja%1hPHB#ol&svAhB-g=^K4ZFAG;7dr_27lP#&7 zeFnl>^6TM*`sa9gV(enPr1pu}phLrCs#s!z!*YCaU2z76*bhmNMXTk7fxd_hPn4uI zQ=#JdawiKFPL@g=tPvAu5OMQ)j3GvE-)^`i~0ph$lzLSg|K%#1O;T7;8U>|`?>W^;v?q#V1l zGIH}s`5OZtk*M&g1~)rys|8iYQVLoHq>gFL-7*lfl*m%z?vF?j+>%m0S^kvPzPQP! z_IHm%uMW3C;Do%)zdz0nejI-+=|^?-Gjq5$La>)=&O)MD zBa$MbgRqd4!$q7+Vwtkhp`@~k9Z@Y(U~r+%WpC7!ogGaQbJOU*0BUj;8|6x$#YWc@ z6X5Wa>&PFLZcU9V%do;Gle|`bj5K{l(yEJExh!}-vFR#5VJ+S4!Be_bnO`}xTJS`j zI|n*JZR8v@grH~fm27jKT2c8~^U12)1dnhkp|9otYj~XD=e4A)d4-Z;YzFhBPOjtM z$i~rPWW~Mv?VSB7i*&yNv$*xr0bYv-FzZ1BosziS1{)>aP_~Hl#8PEJc^?XaSw@Z$ zl!>=(ab1RhL=|Wgi&*I20j9*_fqv!}=XDL@Y+9T*oP!CkGIkI?CMZI2#2sl_5kpZ!YW4Dil1p zRr;Ts>PqfM5;a9~v^7W4!)zwlrx~@nCmh?Zh^~(e${i%fZ0xwp&8`>Grr{~FWQj7f z8=Pfao(EfE2=z6ZW?3qo_I~90Zjfu8Pi&@Z#$uAQ(KA)mXP)?5^06J)1hUwq%BIGd z%3rW4*oP8Cbd%|0AT94w{XlH1B1)meF6lY0Au@{$qB@C=n8HkjYa?lXk!K5>1jg8{ z%D^(Xd7NA+nW^_^AEw-cj+iC!j7?<;c8`TIDuBO5%ndLfB0358c(qFB zoSrF;u&bio^oPJOieWq~89>25XZ{Fd;u}f~k1_G>+xbqW%{r)#o?@gm03-hFs%SQ{ zvmEJOh+LMUKADcz2%=_+H4+*|XR_NXg}!e$7Vqz$q}`9iQ=;L6N-IuNa#&&5#%wNi zV^3m^iMmlqwy2a*>QAAu2WBeD<+r>agi})9h%D8X7F%4};*9KO&J3iPg%Sx8VWa4!*~vaB#V8D*wy{ZlM@fQ>^+VeD+4Og(;n^0!l>o_4F23^$L*qG z0mv2U3w&$|ilxNn(4=8}3XxnmF>xZg)3C_p7{z*lVcmi?b~82ZFnzG=5(yUl;Bwg2 z{peRxv1RzhugP;{1883!e?ES;JGEkRe0z)7q_3etl7A|r03yl^PP2Q-U+zSdxXJFfT zrlYesi08CkxN&bjY^x1yX-MDd?Y-RL1SWd0)U3EIphJXP`9SI>c`);I1KxYP!=ef{Cib-G_3zkzZkKFbTh*41a3v34rp&b2hgfNPjbCZdKPrNwx zL?>63qS~`sM>^Nuc&Y^X49{b%OS_Gr#PJ2%lXOG?G^8_q{{8l`a{k}Gu;F2s59p(e z2ZQz|Boz$Qum~huQt!8pBmpt6_2=+X{U_iaRxf;P+d|YiJOZ=6&AYCV6=sJRHOg>@ zhkyPV(%Oa^BFy{idjN;|@Bac(1(J+^cl-bI`OmfL|9ijB(SY%)%~ILaa{&E|~sFk{_Ui!!~5*+SD~8=dW>H(PLxXQ>Rt4T$s}8p9xYSPG8Zs zys`nPtl_;jY-!Qb{^-e=xUwWTdELzTo4)(}-u>hAXM*@o*Q?)Ak>J$Rftb&FOx9NW zdQ{yW8hu&c#R%8d#i*@byQ4MY%7L}hX!Z^@eVeyKSoU`(xVzi{pN}xzSEbxA+XG=YBk=aX`{BWt-EVJ% zi05bo@oO$9jP#87;h`KnuH(KPT;4;Gnv*s$d&^@XsEp?=!N+eS$eib`!Q=%QKKFUA z4C#Rr-tS~!miH|LyzgmGUFlBH({m?E{}2>jFPTOEVUPXcTf1TxfcGU=`__a0w{T+n zEeZP<+W74mpK$*!;-avul@2VNh3vrEo&im!MdYwhfdk9Z5+ZaBLV8=NxAEzVEH-y* zn|q5}TT7d*{q@a-?d`?(&SqP$ZvU!dY^StsWck*-@!8h6tg<$wNx7nN6BgzI2-IO^ zEgV_)valG(LbE0`7Gq9T8Yr<9k)kM-Dq0FvmejJp;c!qwJsN8z7^^YCN?y4ZzBES8 ziAFw)s9V)AfrjF&!xF|^v_rg+dT5d1A&V7u`8v&>Rm^jejH5V5r7JA#&D@iotGGx~ zwUHoeqvrC^!+Nd@Ca@us-Hd4=NgY|1x^g1AWHNYT4H4!M{JCKOvQzhT&yKA{(0yw? z-Jb2@K_{9DY>XE@Kb`+pJRW2R84asT7)y~f?vaI8K3N*JH2Bi+-*`45t>Ih&*fOhZ zhiEiU`q8H|$0!^2K zw@5QPZOp!N!h?JMJT~e;F#aRJI7X&Ztb)j(d8iLaCVbo<(9>8wt<*k(W=U zNMl@4Q|?l2?&Pk;<1JNNsb*K##~=Y>`l#NpYfmWMXe9YX?UK@(EXSU=d3&IC!d{_O=8ZCMlLbi=7i}10c(J2xr zut%7v*9Sd`76>80^YRvKfh?nm4pxOz3Qd&gS?y1##1UpjC%7hrqbU(rJYY2MJ0QYq3=X?}B$*4O{c4yvTRl^W6a=+aiiZzUlJZrZQr1sL{%g-)A%G`20&GF^wM4{65GJE zi3cTU1lnQl>YAOXaI7@fa+5~HD*ikgNNVilDC&OvDvhW{tEPFcbr*=cZq;(9uM#Rt zl_)3Vo637b4ihggs1l?tvaH{vY=VR*-^ifm*@m84m?Gh0`vv$xYZcgELP(yj1+LN~ zZj8Of!Wis%)eQJSFfHq2ut{=gl!V7<9`If&evW!BL_=FWT#$SpDU7hLy-^^JaChjuLP6etWPP+Y&-sFh%2=mMTRpPreAE=JfUGfO2h?s?&aBZkSElt> zjAe*uuXL=g0T_4b{ZAG0bkunmHvGRT#qk#VM{8FYYmP ze{)pc7b7eA^}=ty)VUTuWdYUg>6Q}1@tURJT0U5uD2KFT* zX*1)v&-Qn;wqu5;-=JX>N2a!KzR@_UNjgHyIJ$}}5WHwZeR5yI8y57trjH4h^ap7y zsje~vRwAnChXscI_Kxc%NZgW8T=1fI4DS@xv5-KjH=+di)~hEElKZ67PSy(~6BAH55ZwYsXp*iZQ8Xo? zZwBoa^{8zc`IZdePeG)2gkTPR4(R%Ie8Ms50c#<0HSOULO4DYNU89Xp!VatW14~2Y z*N+Vx%lrhy>Qs&xQ6DCf1tr+CG9Nx{%^Iaxey&8n9`N;8!9IT_T~g^L0k49x1idz)ahUgxap();Tcq zM$IXT5>s?el>9Qm=}t5aDc>4v3?!&Lq&fouC4qAJxmI8zp^ehc)Z9gSv1z50z4o{B zV-HD@>`e&5I#MI_MF(lh_tcoH>V^&NXfX#~b{zqcyWzA4WZATKp=5Th$@T^4V=3^Q zlVREA@au}Z5_x9SzaWQZmA-Mfzo|4n>>Dr#Za^xTIm6z{vDmxk#2UWA(;>Gm`Tz(m=EYk`l*lp# zqTErMdzcdbEG0;#68%W}Oty+))Ap@ekdSWu0O}0Juh`}cm-W`W_pkS{B|CNx12ak55Ax5O(qWZ%Y74rDyFkwK0!)e_2p@vnv4-x9n0d;+* zMqzzYyNy|tRw%4MDuPGM9U1H~uK=_2*X9|x(s-Glfw!T|0NW;qU}~=(F04#QL1x(| zsH+(7s$NhJ!ni@0RREWRsPt-Zz(HuRu8;(XRE0oXdSq3b{OY)mI>y`#gQA6vMn#~I zsS45~?^T&r4okG!a&DWD7gOgSB;n1`a|`=er`IyBefW$sA@o^XW{-Dc;T2&hKwvXxwf$1(Bg(bJME~=f2=m(ryEa z7Zajq?@%x2w;X*(`UA;5-7^(3!8TU2`cEq=47X4wMDs@vq6Ne}k>m=vl-VLi`I3RE z;u_%$MjTjGEDxX2-wGbRk;W+|dgaekam5nN=+L;8mM1YvH&Jz*XG|K8Dp=cnJ`Bk~ z1+yM9xK`6EVnS43dA$t=tTDEyLet9nFvXJBwa=U^BXm*}T^UFuv>HaZdeL9Tsi0;wN?T+ufk3wT z3w}*MthM_T+6guMh3^>?0%ldbq~4&Zg0ZBzba*C@sfITQ8L>cft3|juOVv~_KLo4O z%X*KAZXP^I2dDhiN_dU3*voqSd*SXi(!gz9&6_pnS5WZ`ZONZBpQmM+r^Vdp4ED#l4eBuwn7rEvZdfyQinqrd3 zSUb2r%)el{ik9vN#PPorW4&!DfL-S9_w8QUx^`c;?QT|YZ}}NQO>N3K!aPyg>j`>9 zQK{@I+e1nqAM60|n5dd(OsUH8>h;wIA%@kL+%U=|>?hod4l-?)Dk1h=)8a4(M?B64r`>f`k4L7oLSjILpw+FWu~dJA2o$C?|7tUh=eXxTez&UB?cF$TPJX>yv(1ll8|ti2g5Dg z7>`GiI+@)=+odu^_-LR!W>PJ0iFm1dud1eB3-yQr6wy)f0N@Ehi$1Z2MpO!}7iuW*v^Kc4p znhONf`Cl!B8A^m{UbwX~dHw$I*@T7}#a6<#|0w95&;JBH|GvG{M^XRR(I0g^wK-*! z-?Lb%rVPd4aAY5Gcn+j+o+2n1aA6Rm12;u6`2?#hHfnQf!Phf?cATbhA%~!e{jQ{V zFJwe}(U^n)kNiGgAJ-Z>jxWD_@h1xd8>bB;$tMX<5{7_dGF2u~2wM|fS78a>fojJ= z_4mMB2l<)!keI0tis71}eaBo&LeX2EZE>HNkK}boUXx^%(z@T1oY_X-pIhpoBIR&! zV1bQ>my8#z!B|XxS2f~JhiR^FZ!1{?^7ss*OyOI=lEbHD&)p^DOt3TBVZv$FRUYs% zTPOr!wrLs*I5{LWMLA5eb{}PhwHIG{iWERuSW=J4uIDkZ4N~5{JUvT|W?{qsgA?r=mPRro8A`3Xr!OJy!Rf8L;gOh`AZ{YzZf6 zRG3<&k8J@OErR+o31%zJ8!9JPfDt%MBc4U3;EB7_C1gzE2!x^lxEad5x(Mn%0*S;3 zTKUm5&G^Bn2%Sb5oR>e>GSidT017fM?|!xK;x5}8$9E;et<66&GgAzV@zaw-PHd&6 zvvR8Y5Y@&i$E~F2ER~m10XeDDdoAw%LDJa<)q1B%h9xQ^2M|CO7sd`y%;K-&=gi79 zbjQ2iiMhTcL90iijXO#yVIz`va8u(?=6xL22@?Q3D#rL~xihgBQIbHc1UMUG1k$L& zQ9k%K?EZEgyF$zyf-6u)3kxQ5}@-*oSQa~E5=pVtndl)ldM7n!@Q#-05*Eew+ zv{l$pX(M+WJ^>(t1qv@7A#h%3;Y8{h98sIB^Gq4gMye4Z87rD+7Yxp6o=vo(S05rR zWl;akZ~nEus{pI3MBj;^IT&BfB2sgufGAUV2^P}MvqRCl=u9rNR0=P+WzyH2+i_li z%`jUhq%kbYhaH|eVQX4gTSxv~)XWwcTPQxhTp1bOTB-{jZ;%V|M)1Sy#%YZ*16e8} zTq`o%XP{qtOJMO@@93IKxx#T!r$bm>aRp3pX&$UH% z_|yuv_3n35Pxt`Ivb~^Kp{GKE%jW#RuhZA0K3`lfd95xL{NLVQ5Fye)f`nEqWqWuf zN!(RpL+*s!EbQW&3io8CW>_Vo2b>rj<2GqlIM$F%VkJ)zJv%95T^SlF-}V+R*eQs3 za>$8Q6&%0Dl6GHcL5j5>dG6X&)G>cQ^xeWNUukLU7=n-*P+?;_RUEF>zYEG3$Xu_6 zAA7(@+=8!aPf}QO52mgH#<}<4=_dc&!06OH3GNrncvXu>%m3nS7g+*;kqnZ+6CM8g8E=9pLe81MafE`&$x}tw0 z)qfggVbrmXTLtPC(3%3!uc+_PARWt_DQan}WFNoN)9l&7{>{`<;T|2@NW>^$E{(RN z=+O)6*_)j-*jZ4=_4}cRP{u-c(Os%!^p1uACCJ*u_Q~bOrUj5wXdTW#&Trk^E0lmP z22{*us1+Tk;8Dt%VeEsE9H9$j(4YyVHrH?%9S;zxj0R&52z)|Sjqq1BMwF>c42(w7 zZC*por&W?MYegC9kebOKmzw#j=s2Z*%rA@kU-z)#$b#+S)XxP|m8Rkq zld$?40zH3&$5~yhll2F9wEQD@2>fpt(f{WZ{XZ*uEv2MiyY}yjwx1Klzz`uM{zT{! z;X8lxOH6u+OEF{KeD5gtn)@h9^KsTvYG` z*;Cf{``0&+MZHz}WcTr!D>1ZMfekbQJ?4}X zj^$co#(Hh1=9n8qA+7kDtNjIB;efkqIUa z1^adZ6*KD{)&6fEIF8+)+W9<3hPDgvevx15iYKrAe?g{;oq7u^ z6ZT-rap%n&R?X4_UDqPpQE4iC$T?0^*Ti3pNVnT8f(o>rSB97&`h4k1US($~?56si z9Ejj@E}2MlULyzcXkCkAd9mTftrtOvnLNfFKJ3k#NsSAFh$G9Tl0W5LWsJ8l54}TL zrglXeo+(d&)P(7bxZSrwg)zgSrib5$C50Ctr?1oLy2A`dO7K2LDch6P@vi-e$EHmU zhQDF^OhaBxB}f~+Bg$||=7%l_jH|3<#b-x2E@qZatg%lHFfQ^98;3T(bA<*CH6}{W zwJS98tNW&!`m}zhvs6BnO^cCzpco%SbDd9@xk01u*Y7)MHIl3`%8mcMTqx%e#0-5$ zC(`Je-KQ~fi~m=LE+baBwfQJ%&_9;+|Efd(KSzT9Nr*n`Sy&EIJT8+asSyQ3#c}ha zoOPjk*$TUHR>knC6l@dzE5pw~al|$E9lr2r?$~Ns5&RE66hT`lee|<67}lI8BZ)+8 zhh|Jcu^{RAYeboVg=8P&`mZ`2R1fj-@K$<~)mlWb z{rF0^fKhET_snFD)MN_)DWj?3AUM`@zS1BIw*k(!rE-5llm(Ft8Rec3mV`juHA<|x zfMjmq%Ad5(!1PEBLgtYiqnjv_Z~{x@CMq*FEk^6X9E&CGw$^0iMLJ>L-0GbZpzgXZ zb3$p=>^L`P3!SmR*Eq?sE<-JjP%KKmP&n9G@0}_>_l(qLCzgi3xg$Fr?CImD zk{h|H%JN8d_Y|{i z(_@5xbED9MYoofyql%Z}hYRM`MI$$qA&I}E@@q0BSHC!2-|lavd&E51|26vnm@f} z#AjQan*w__V^7bqM#rd8ioG)Ajxz*g!D{6E)sjrb?`jECsD5Yw$JvTu6#qmpJfJ7S zy)P;rma&H4I^zBx9Ea%)a%An}4Wj=?j`P3TQT$guOHJWpM}Z+&!>ABmCmiyzM^>*Z z3ZcpS&d2l@AfznTyP?in{Y7zZcK-tqzVG!F!v`eo`PtC?Ae@)jd>`&Q%<^!$c^^ux zkv0YMP|xa%iWo~vHWUeopr@-gbxiBDyOB^C5CEkA1qa&7wZs2{1DkHH4>-`1H28pn z_OZBbtB&SYCC-6o1K>PxX&-?cbL~K>Z<6RSH{Ay*bt1=tuj6Bf%%fN$zJ`RONtd(5 zHePMh)Mnz99digJsTWp#u)K~b85-HVgb)S1R2Qowln@tGc~gs<&lB=AyRNQhj96Q1du8QRE9Q6GpQchpirBJpx>Gn{5Qw2O20KX83-ffsgLeMBvxL&!Gso zyQ{|z9(Nx4x~-s%6o$fBKqM)C|3KH{-OAY3H<3bWQfw#^2_c7+N!Eyz5w?1<7qDgM zzu=(k0}jeO5v_*jyd`jkK7Z_wOW|Oz(kd$_PKu|b2}sIPAL98$M`w}YD#?Qo(Q0w? z4}1t&GwzBwfDLt>Zg=tzxT5uFg($3NiSx76MI&0xV_Ph$n^M0B*}R`WfutJMr01TK ztSdfui?!h~6~yRpkioJG4tEEOGLT9orjs#WN2cAjqD+k)O`Vd@UcLg3X`X$5R-%d1 zPub`v2z>ebenIL@w404FmiduDM9OOuab5aoaUtmb59X918j zF#|Zcdi^V*TH{~#MVXd!7Irqag$ogoqB6RfkRrY^V5E&4c(b;$oYwBmnUpID7txvc z-*R`EwbT3uj|W+9xwo#lZjYA%{;z~VX+y|-OuGrd zF+8Cq7f3C4G;AO%(2j4g?uUtt6!_9XEd!-Q*(=#MX7>y^RaY@23q*QVQD{w0-+{c1 zX8YdvSA)C z9MzO^W2RmeSh~Kl33%hQYmiBJ`hMEBiv}{L>X?jUa9Ojh*6XHU$XAf( zSmz2dd5xhYfShnW;l%I{;DV_x=G8OYA%(@d<-J`${}Z#!5f z%k7eI-_6vUlKk+xMnkOFP!1`vRXuZ&AO@=Wty{fbnQU+3@@84^pf04eY3~x&EKVr! z>E|^r+#h3ZUOQNgBx8SlW8vDTs0DIDaJzgndFgp$A>e1Bz5N+>l^lQRW&~>g=5$r{ z&FlwWny_s3CUvvKDE&ao{#Ew3%Q};7#?A?465t^Q$c+@_28}Rv&Mx4gtq3L52MIwn ziNh0m3wNin2GnKq9zlTrgZ=~=wg*-)HnA(K^lj@D>!ieEXwO4%HLfws=Wy~by=RWaLn2!Qf0DWb8AVpRx?8N5}&Xc_?&8EU$1n3&ZtU36UMT6J$?%q za`EmQ61g_{bSb_0>24pLR+nP}1foSpe=^KIx zRX&am_;XT5C~&oG%WXPS8siL2AX|a3D%d(~76m-)6?rexj6i*;xVxjRKUs6+PBv5A zjSiCVBs~a4yn2=g^GJ#%Xztq>s(D;-PnP~f0t2w^lf@_EX=D|?$&i>-8R~PufhV^2 z{Hgc0yRMFV*NH)m_tCu$@;si21J_Ye6fOTFwdJpz?O}49022=08w@9PVvuJbk4%p7 z9kz8HbQt1qJXm9L7?NV)b}(}nEMh2&QYZui%wfr#G~aKLg(^q7Q%&-~Y1oxD6ZcV* zvyqijWBy`61Wj6q_RRb*eH8>`e#`|c==NyDYSBf5KdGM@LoIUM)7{u=KgXPzRJKR% zoAnb*{-A0YgZ{?+_V*3syW}~~gAX-e{v#{)zt6n+pO1b1Z*Td}rt%+sq)Af;fN%AY zbe~Wa&!I?Q5sNP+6KN*rC=QzCl9?+~T*t{;j$X&07RDVj^O~)b#Eo93+R*M0k%NP@ zB|%y2-WOIqq2vtxsg@6olm&Viq>mN28Qke8oH4bS-2-?%Kl)rgZXEpi)AHx>mlI0g zxhLay8O&!K4EZva!mwQcLF~uym2QUU=dV#?5|~n^JP_1CG<_XfIrc(R7NFF1n*5}s zGt>7WGwo1nbphIUHM*RX-?yxl1L_F4E6?8}n9H9MDg$)n{UtK2io7&44#k&l=?vq3 zSD4<}v3aXxq>6`-+Zn}f`y%*xk^xh%qhY$sNcdcRJpru&o-`H4_tQ3hl2b_rbE5$*yXHjrk-hEA@AxLW%B#4RME#J|mNYrmYa(lTFzTa1Y2Uib93h?r;{a4|k0Q zG!`ZLEolw%h1-@9G3TqiYok$5LH30Ln1j?&GF|p<ZcW}HK z_VE-o410yA?teOB4Qy_r!}YyC1d}qczz^2l+_mmRo$RFytxp~=!fvoyTrfAMp~KCa zA`TLAJ0wPog`7TDB5#vl?RtT#a`^}VCkDb{g#HXx7zT+_n3WB8ZdS2Ip)?G97>%++ zY7VdC-;Xb}SYCuY{k`6xyLejFs3ydzDrDSm1eZs=M{bc8k-CU8Fe*&}NSq~(KT1~w?iT~<=xLC zNP_ILXiqiEXc0q)l<;{yYK~x6_DWNYpng-qC&?5j9v7F%l9s&=mnP5#3u_J4e_a{D zg(#U<@=0E2nkh1tGT6zp!1dbTJK7(cyOUxRE9=dY&L}p|x7WcF`sUBqdQ$oF66zxL zxyJeltGjB4-%|s`V5kw-CR1wHN*qf5R1N%y`9k$o0=f7aRr;%fh|Z$7zgNBqYsSzn ze?>%;4$j4hqzvtRM;rdVFa2$dccAVjwfMbm5chQrSg4Z+9w5$@C zt>&0)0-z5p;>5!w>Jjuf2VS+(U>01F=tLnOYdWL0WKh3tcFe-l@B<(i-sy*2$tibD zyR3B8w^Fw6iuI{46Ywv;sxu|^`u2W}^6xTV-wxSZsPE3S~c;h{ep@sF@|j;EdTK)IE)B+q+!; z=BNGbev#Q>ul-Ow@C`+)pP^xJO+?DwV~I*d zBSnDv1Ao_hj6|hQAp_$Tq%1%kiNWN28Er9|(b&%vB*1m^G}uqYb-Uad$hc(tx&0Vw z8~2%IPGPDLo|z;ZdnPh94eSv1%>vwifIP7%5oVIQ0rqXk$Nb`#b!~VGS?qV>wkY4HalM zk7z0i2JmGJf(0~(gp4(JK5075%n}cuIMlz8>%50o{+8DaAg$<0SlAjqxfFjuu75d% z(?;a3+toX47_CiJt19EJ-BU%B%xrn80n*vtYtY}2K*2cmtW&&Q3Y!R3gY}JA?)>=- zcPog5(%ppn5C9SKC4|*Tn@#I&X44CdRddv#hIDb%q9;?6#|9F@0^ z-L!lRx%Ddk<~44fv`ZJ(4_%CM^HY5VRKga6(WzHX$_>8sAEX%_0_j^>KDv_^m?yHY z;h0Drhjnf#&*I$9i*7UQJ=vg5uOdrS*hIY})gP0S9rVffVKn&pw3#l_GF%w1!qLZ{ zE@wi+CH$pw_cEO4?Q9y>9(#02GaVlc%fDrxoT{_NWHE1@KVxb)1q;2LJxH9rVCvR* z3jKgqB`SbbYPkOUM#WMa66w>&2GkSfpP*Ir->2>W39bJhzU~k=Aqx^l8M3mSu&pBA zR=A?`p7sko>J1tQR3?4;boy1gMZu%b^39tQStt;h(h*MvwLbLQAE$>eMq6KUjcOrN zoqrfB_2QV=L*V9TohN+W`SoUEVi?U7%?x1beI}dG-IoDifzIu*epJt$nS%6uB3Rme zTGYeMjOdrOoCBQ~wd$8LZ{=z^TqsGi1fZ~*^_!2w>-u)~%3VnH-Dn!iqOud4J9P&f zy_r;3X5+C9-gVra5Q7UR1m+GQS6Uyh@purINlOV_WY%ky>Dgxy8T$d$d4oO|DL@_{QFC+rY8Rnt6Zg_ zqJ=Mk@f#RyUtg*4ZB`aOxtW%#NI}@H3f#d4&Vd8bng&kRy#Zllwl*j;x>)HqQhTe)jF!o1Yor$A@}>e%nXRdhMHwYUM~~G&uN^{u zxnk8F3gp^$?2?;d!nIPLo^ZITXu)@xNpN9t%Q5a?-yny9dt!vfXthC^; zd;ql7xV{8WcwJmU)(927N`YEJ_#|Zm(3Z0`&0)HEi3z5QE2PqM3 zu6oqJt2$#hdYZy^R2WhN0>m@s9NA94=b=S)R6VZZVS&^^Kj%;bWyxZ<%_qch#aiOm z_h+^mfY?aP2g(kR8?6G4bzC9Q8S0teMlzNWJ7}JY9oCWO@YFBqzFjxZC8kz5NB-ja zVy@nOP)?uogbh?&T86NdZxAIeO(;`j6q+wn*LrIL+*uY%b_iitZaCPK6v~~;V`F17 z#DA_sqKf7I#57%F3IoW^gSN8Z1PdE=C0XMgrk30y$0@$Nz2g*hdJZ-ssh4sBdRRx% zoH9hKM}Xbd_JcJZavZBDXK&`^8sglxO0$EYcM=jT>wRHKVTt0Kw8#ueGl<&w zFgB&^Yex3um}q0{gqXJD8eBRn-k=hsX(b@grRSzJCadEZTf~LhBW2+Q^cB6Yd@Rb>4$h{}%QQ6yBF$ntKH!yOL?yR{3W7=_=eU(S2MT z|FOl**7S2$*TVdh?dP=RPv!MZNHzg+3qu+lcBK}E;@fBNa75UU5H#sf`+B?jTKm}v zAUHco;kDfp{YjKsx!7#4jFq`$L?H{8WTU@k?+Z>-M-X6CtpNp;V#njKuMU^%9UX0q z?PeZ_n+Bt7M%xZHYcqJosw0LMb)^mgjm5>}HLQ?OoL(b&J%okys|Dr;d6yqw$v<#y zV+VK8n&Tp>)JeztEOF8r-!7(b-l3bBp;rLD)N9!*aOfL)QHys!0$^Jk=AqX*H`}iY zy8c|)NIe%G6JOXBF3+);SzxL7YHY;N#GE2S$6GVs05M`BV)1HR(!pL(jl@q_To1Bg)ZfL+p_@%7DiuT~WK@^)DKXSB@V+j5hhFd63{8uqO-T7Y zs7gGCcaN(hyuFcGUBr0d1MK8t<&_1Af2Hhy(uAH zk~k1tR1kT3cmG2X;Y8U!o<=}MGbNBMyjza+%)p+C#ovY6aQg zxdc1|p-?;Hgw*sY=ydR$Bq*SQsqY_B3?KI6GlqF_e5|fEOlPtq@mMt=D04*#0vqf1@jI;{4Hfj!0m+qJY~qw)gDbm zBGToY+$+}!ZT$dJ^@2fE7OR?S$AF$J>H#Qa5a2W3l?Y8mWKXfXO zoV$l~)CaiWz7f{1P%4}s>Q*>nE703FlKs|!V^61Xx8vyNBg(+zOf)e`%wb$#EK3ye z-shYlt82B3D>wZ^N9LPHKL2o!>-x`EmFuBf(zO2ckyjA{fm&zCB79fnfE`ZU zpTq|$olK=yKwpf21f?AXT#()k&u@mkR@$lUnj7%nR5ja|H(Z-8ZC6TKfinw5`esz( zLhR~^rmdXU;`;Y>?TGlzZY4i)mAK`K|Mz8f}nBo`*~ z8#KIOuR0O`Z<4M;^J7!m@LvKl52%+#@q`=nTS{4n&xpm)-{G`_92e>P%eoc+RP9Hk zStXlUP<7m7orLclf|}E1zBXNpiwJ9~%jX73W!@N;r#%#%Sd=dQkhoxL#GH%&Nf99l z!AsB55I7wf>eYL&*$8fNO?#=R@Vs6NZVOI_p=%$AM)jHIQn-G{xe$cXxD%$BcH@6W zK_R1SQzx(!rl;b>W2&yx?TVCr!RuwoAS-fN2Pjx~TX*eHN^ohsAR2SP8)6LFrC8M% zb{Y5ET9v6((~B~j7{_`<@t!Y@h6+ws*tacr6noq2XGbMQ6axHeEZF4AVEkSpOgSr)J0Xf&>_ z6Hq2lvq~B0w6B;Sk7{7wP-5eh&JR9OFuc}tnx*8QIpT5#n?8wNAT~@A1$IUbRn~Qm z4v-fbs<0HoBU%>f;A#LGbO^iN>*DLS_BwR3yWY4?cDbj({Hp*nixYNNs7R*VuP$Lh zYakUtaXI2#7ejYH9FZ?uFAz^SNP7%1+ipeZ(tC0^{g|_tEHAg6C;<{LcwK+Kn>|54 zs-_)TzDHh{Z{S~negP+7Up*-Qh+h7(5~=c2@JqPHDBX+Huj1j(F}3nYVE4S&T;oG# z-lEexJUBt(2Px*H|M`vh7pXiHB-%~*(DX?@(oX(+Qu#k$6#tvyk^jgLa9V%vtrIg$m~Y-|C&rHhs-1x3ximKuFd!O6&E z%=_nd6zmmIL@a>zod!=-0aU(U)W|1LaS;GEK{f_7`H43%1EKfcARQaIa{XRK!5&vQG z@|b#M@_7sTiiiv?91^TWoI$q85bet5Q%fB~Z|sjSOjwUvx*hgPm*~M4f{Zymv%CW!A*Lf#BYtdxdcp9DcTE zk0^UZh?(3B%)t26AQ?Vo)8O>)JR(<;QhqNpLl4;d6XB{MV-*c&1^WIjnj+RL1s9|- z%Rz10;7>r7kddmXd53V zN^SC@S;j6Tr9qLe={Bl{skUV=hq3@fXs&iJOj zF{P{81&_^P+Kx>$&%>)&KbUfiZML2Bvbj%=k7I|-rfNhiTaLJ zY|0zxgtstJzS*q4;UIS4RnGQs9UbL#O(?czg8=N7ra)6yqvgblF82YHMMfqz3#Lz1 zyuQ9RGLlh-qPpUgv3kTWz$+vp5`^rSy6bD0`<;e4#9~wlE)c~^LFc|;YBP3zPU55yV>ey-V@cCpo7 zQq;8y`G#a1Kp3a{1*zg=CVh_U!ixR#dKTCEjs122-+mo+)tZWszyXA`=d)~Q^*8U{ ztf@tgd>a@l+J%bd6iivvBeNvFw>WLrNYI$8?GHyQeF8Dun-9?_kZJ!mGxP#9`h9b0BxS8Ykk9B6b{pXu__e-;IByRn zyToY?1zW{o@wgr)T$;^L64Q*{38&#+e^?*5OpeT5?axk-DPFOg6A8$8%^7{s)W+ z-*32NR8(Z3lEx?~58y^D4+sk^gaY{jSN5L{c!HC=c@HXkd7duJ$5I21O zQQYAB_u8KHN0hjRs{BXZmg7h4)`!#8zq;Sw{wBD8dMM08El5c}Pk%nPMPCn2gKVPv zj0{88OQDQ53ogOGl5G$5)nj*@AucCJaK5>jh|#(!lyP-6<+agRuc}J-yz1V%sZ_&9 z=iEf^{L#|V!^&f;TjJ@wGySpq^3VI$$EV-rLH-glu>_~0*@DQ&=s(PMB-lD`f9ll% ziTfqYF8Dep>fxT_?5E;a-pD;UE!T@!pYxm>CWuV97U-yW=oofh5cgy z!gd6r$=qIWrEf;MbWOUnDXj|M23W?Vt4is(K@j?h8Y!yuTxDX>tRE1cvv_`s(@r*| z)D&m3h9aiWg1Urr;(gz^m@9*5_bZPtt0)I(NM1q}s;+jpWoQ*GSgwa)rBOS4h{2eS zu3&6il+>FPZ24F;#P$&AU~3y;Vp%kiJRAMPDR4dr+cDb4j9?6I8@c)708^5vODc z=aNP6w3y?~{i97vF%?JZlB+_r-7hu+IkclJY1)!$c?Des-bw5zNJ&EJn?Gfz^o(uf zGJNu-#4}mC!$+pk`YeL8IwE%9UD$4897xOi#2;%8wROV%DTfvkV)x&Rn`MTosJ? zUIl?KRQ8&QxQv;*62?szo0HSJq)iQWMosQS0pnIY#h#5@wW+x20D+c{_}2O`)s>Cy zAPC99qQ>cGB!Q1h1LynJU~jC!*tOXa`jpPV6|Z=I5GomRyQnWa;`RWFVIL4hlLSQU zgq)8rC)SEGMx%B+TET9kr(`3vZxK1Sa}X3%(bvyHFs6bqG!IyorXB);@GhI}+0h%C zJU#n4R82UuYLrcesz@0I(STutX3YA0dwmh8Ht^d@q;I$Zu-i4HZ-@}C8b$+QjVhnx zL;JjK8On-VRRsj9RYn_=AcnPYs(oE~S#!sAg48)S!ZCTs%;M`9+XeA76UC{79Bna# zRxMAWE1Kzc;+V||dJNc>zB{nbV)czJ|D2{;7{=zUzVgr?opvFBGrZs9t8pgJMk6$$ zjcDZ+)2-Ph276-<3<$Y$>cr{`*!&EK*%+47Jc92QJI9cUwA1rs^r~(p)Je=c11h3x6 z3!=l#r`uFs+Hbz^75#J6i*yoh4sr)*A+CqgSK^$rEvvVbRKev%ZW;ah)!onbe2CLBuKg^p*>Z!8Z_C?1Z0ucXJl}lNJBG(ojM9#y%+;=JB@SIKdB&Ag+Z*jAGf+}67ucq9EJ#hu~Huc$GzqHbNl0`WMm)d;&ZuIGy8X1^uq zhFB5ec>nyEhH zG(TS%np(8dp7|=VS+kj}ys?`+;M2R|@m)Q;IWubBlP5r|J$##{S~Gn{eYBwaGb~w%?3_wYSQ#zpYAJ zUU#`u++3T{M?Xx89O)9@Hyp%hU!I>6EQGDe52?m;yJ~k@3;Q)JQ5PPjoIC)CC3w_N znMEWj4#}FO)sekt%5PyilZwnTXbmIG3?r!kVQ4Ci@j+DCQx%+j9=Dnh`U>xMhDCN< zYjyuCI;XxYMTGwfXz#^A>@PXai($%XEtj z*RLb4*+>RHuEF^8^+P+dC+p3y|R8_8~bB>dCqrAlN+(JbC>ggUnlu^smyp7O%{Lf0Q{ z>P^&*1KN0gD<+aVQSM)}oz-0JUdp<>xsSfPQj!``M)g$m%NM$qETL}RTcjDDvvx_2 z19GyCCxU$=|FUUGKKK|~M zwM%jQPM&v;JlMA;?)d&GE!M^z>(arsFPao5s(DiA56nm>nRP~x-G4%;Bd7fXj>B4_1 z1m1K@t;&!)z*^AAh+%iQ_~@*hWZ($X8$uu131y5I9RY%2?LY}=my1=wqt$P^C%j>| z4jUeQR z-{V|OV_Z}adWEURt_BtrIr}0gO%yfRM7bGJbAd^*fH_C;oYKh!s*g}bq&k$$x?`zt zAg$mGk%#eKDviQ$1fYU|rX`XRj^iJr^zc$o%Uxa|ZVEHoiWm#}x|W_NyH zC}5&>73v)l*6sqpnQ0A+-slmG(@C_#b`f2*qr=@kD{Z%a%dC50T`v%7r_qfa>@aJb zr70Y$zW|tbm1ZR*3yRowq_M`#^cc>@7^g_~7;jIBu)8ckz0`%1s?$DJM{>(`dYEn6 zhqmNOvMcJgd!e^t?`;efdjjaVrLD`1{!%CBHYs_cJ|-H<|8b&0?%&%L{y#NO@vqL#=FFt2WTm)4OK!R2Ffov-67Thl5hUg!n7m3fCDfYihL+86vgC^8Otl!363*8docaKRXYrRr3-N+{Q za5tZlRc*UR7a<*U7>mPe>h9eQ9|=5qP=9hu*jqWRT{Al79PVH*d&j4C_is2g+_Q0S z?Of2?cj5iCBP06hfqUxixVe4txcn+%c;!d*3dZdObp`t5PqB;kOM+vs>XSdiu23i8 zPkyjY{GUpnF+6^#MNkQ!D3)SYkyBbV$ff|3+oJpxg*~jz`ox1 z#6|$BPUzcq)&yAFRxn_gf+LNynVFgDjUrxb#aEV`q@_R$#t}ce>6$635fQc6@`?U~ zsH`-NU08QVMFp$9hV~qpq6Ar8Zb2l$O+j%bSKKs}J43IShf7Bm+T#5?d0*kBgyZy- z!Fw@rrcz1=FuT$>T%BA@Wr|bqU`IB9hH#wz-62M_`fDkt`y^o1sxpaTECX5Pk%p0# zS}qyzoy?gcnT$VGvmTbWP#zYgW0EQR}ne?Z%s|I_1njL<>{&GcZY> zmZ~X`@RZKrd`{g!;YV3avUT!NJr@YLTxQNeNqV|Cs>m6iSxC{Km2!HboKk!KE&6z~ z_c??o)BZ@+py}LHVotr?w`0OVhEphM@)sMf26?#wL4as&Ls;JT&?E0O4jrpu2?%Xp*}D$PRE_|wqqNKL}x8*Up?C0weW`JF+h>UVW1%K)#i>VrwY+abDUx2>a`k?%Ilv@C zdyLyXrXErT4EX^#-8iN_IIFWM$1v1L&`h>;OVlZplUkhKIQMf%q-WtIV%dmN8~5p0 ziRJFERv>3EhBlZ~w9uU_zH|3zY41h<+M%I5IE52pr*ByG?Kf1A^1&#a7aPB0$}<{o zqRK4bJ`>K{JuO^r(iWf3kzKEO_lUN^5X#;CC)^npwp^lQlimEP$CV=eo;5Tv$Qrum zyO^a4Z-GrcDx6vUH!64rm6$?pErRE+Wq-xP8t@u`H9;|4LzPM6hFL_KgAO5K*1|md zFR4K3v{>4eN`XQgucNNiSO8APQKsepVeOlubBne#Pi)(^?c~I^ZQHhO+sVm^ZQHhO zTb+BWs=Ml;Z$I>X-4FlR;~#U+HNUw&@cjZnpcOK@B+it;ZVW9$D=qy!y>~(w6gxsL zK-EYxw4>7?Pn8a3hpt;;YxK99tk6FT_O zr0kYPjTe8`B>tH=azB+7m}EzT343q~0uS?Ud0ZQa_f^gcG85=zuUXQW?^-<(;{VWotnNZ6WA!cwTk!+xYv zrDmCss~m?9IGOno@?=yZ3qU&M?Vp1zlGcnN^|IfdaQg^?4p2Co5eK5yqu+JJxv^i5 zunj7>q?N|P*Z4;1)=hI3^M5>TmG3pnh!^x$y8Y_PLa)e$EanG9NmMXTr{@TAiix>p zDRT&}(C8yf8N!dTGp02&#_3JXV-k54?|m@UXEzKjzZT}WT|_gMaSl!DuK45DR7Vag z4qluI-$3QP5=XQNG47KxZMhDjRvq4~I3}C2L^P)io3bK<&I*rbr^$!KwFvim$+PuZ z-$S$sR8&X%!3ItQ_Z<3nJep5uk34#g+9vljB+S=jWKCLPbF{z%oVuw}X2X<5Yxq7wND>uW zmp6bpvG3SX$0|XR=CIF6xMYUwT*2Iz)gl0dQZEt|ME)n3Cx-a6&e%nr5s29`MW1Xk zKN|Sj3F>M?=qB#iedEv>mkf$Gb~pND^K!_`0m-93=b_1cwq1_CbN}ZR4u?8gAUgMR z9yb52q5PdJ(n~zx^I6$S-kaj)IMXlO<_e5BRZ7Jx|m$9{ABPVkR zVD%xL3veBQTgRh-07kn1-fSd=l-(e0*dLfNWq44BPMtBM|M8rEuGDAWH6YiN8453* zcGdvKxc}wl1~VNF<6iY!)}yYH9=sZePaS?;T(${C$7((|p5_yxIgg3CUl$I6ssApF zg{I(C zO+gC!lFl>=G$2;DmaEh?Q*~HuSbtr09@yLpV=kkJ*g9u2f8sq&KEBY0f39!vW^Nr9 zByT%1(c_FRMx?eJx9)T9vyQ!pyUSY>+W1@*Fo@oX0n6j_Hkk?|i!7d^O*k`MXKYFMutHA{}Jk{5*Hrq3-5Z_ACxTG`dCsc>m~8x96Tm!DoM9 zI59*h@1boi5pHcnmDX6GXi;{t=eSuWH#~8io5b}vr}qaR0&3T?54TZG95ym`=g7cj zI@PAkJnsk?_^S&+{hrmoEL0BX?l(+%GQbal;Y7tAP{?S4tkr`A2})1AFAjpnK!v}_ z866;*whw*}iF%V1Fy2z2hah{ukKyC3GUNyd`h9%_aq@Z%e^=tNy;NFD3gA&3x}>AV1t^m9yXXAi-TF z085aKdjg=icst0hwgS3BJQBugg;-+M0=69*Y`oR}x`+<9TZE6OA+d2~wJ*{|HqWlD z=Q@yR#_a9}1?NdoISCei0 zsV-r#QQ9Z%B&7=fxWA8lk^B;LLTf-pw>j7mVFLvZf{zcna#~qMx4Z}ANfz5Q4U+>R z#59V+20~Kd)%jGVg9-*Hu1fjT2W=HA-8KF|95f`#_I~RMdtph4y4zozs>1KE$}kWL z-JyLxzq#HK%%6}LFHEsbyY=EeLjd1#Ojq#O$G@T^(5n&5ll0^u$O;glDR+VMDIdB$ z(cu&z%-dq+7zo$QgK-I^3!W3@uM}G{jRFW0-JrGQzCiy0tStV7rAqz)THk4j$tvfHNUF%+H11Yvsfcp&J)%ktyZU>DOJn_LkOcrqsu4|d#_D|r z3DKF+5sj5iGF?W5B~00Oi+j*|*=JIGCsNS*PQ2z zug`0|>79NbufiSZsj-uU*~%Sk59GS(@s>RNu%G~)hu|4HR7Pl|Rw}8B(OfZEs*6!y#aZh<}jg*I;OL>?WK( z8cv}xVU1%>%xQ9M@l^st7v%;l(j2m~a#*AP&f_a#PMJ7c2JG~2h?U*-%wbkKLxLM5 z!%Z1wQ}i=9L!cz4WMeeVSEUf>lY1D`gr-Ihyf;KK6cj@Z2~RexOYDH*WSXpFs@4;~ zaA`k`1*NmRL8jaHGH^NBQjfNf#ufoq-7(SX7?-36%$WB$#h~~$~eX0U{G#A1ji|00Nv!><2yNwQgA&r^g_a`KftutT*VYH%ZVR&z z7UPOSbLU$M=WAP#4T->nwLSNxcfCKYv@5k|$ZLLt<&B-wVv)JlH_LJC6L>%GlxuqnfG!{-dQ z0Nu^{Q*M5PQtGszxJQSIZ>29RRt8#r2+{75yHdlOX>BPBedrjWkaOBzqYv+qyfT(s zfCZk$hId`D$G&BmG~LW4jRsJoKS~;aKL&O01~om9@Pr|xI=GPs+#254#M8aS-ih4d&0rJmm~r0IFcNX82Ln9g$xV>^`8IY%w+F@RPD z>;vfpbJi2PusL$ybQ{78@t(m^VkjS-w<8l;AGv5|a+v zWv#arQtlPfa!^G~km^!Pw)b9Z+<3+NN24DZ{8{f9>X&$rh zClk^~gU|tvQ$4#quUk#KkFz{)UwwJ(f7y?e(jhWLAQs6_Y@{7f$#+f65s%6xld6Xh zO(Y4FLq;o+Pf8VEGy*vI-*k28$upS>17XwEY39_a>^*4u~JVrEK#KB zkFv_3nlzuAKq`AR(Gp%2aP?;vhNNLOgw3W6JT=i0e`U-frlwUes|}wLDy zC2yDzDmI}mVPMp$nt^0WQD_QRkei8{?I8{KsCc2!0-i&CEInNQIyQs7(U7e9?7 zCyQ%%|Iw`(Zr_hXl&xoYQyYsW5<%;h$@5w^%~!3!GW?uM8~2tEcZD`B7(t_N!O)>2)DXffz5Ssw75I`v zYJ2g_l8vR+A|#f!wKZ*N>CCQ$xjtp^VO2_S5X87dD%x`La#aO6ujS_0pNutU66NIN zVvC z=jRrG&i+VBKu{bWuhTZ5ymh#U>IYY5zlxu3*OgQ?#OO1A(!*liUo2%n5hV|6&J{NO zt33%$#2;Xe}M8Lr%oj)WW5uqsp&y z6EdLn zROXY0?rtz?QrfJ1zlH@N&fgn>vp1@~Y6&rfsG3OnW#DR&+|~4$(XOJ@t3l(+vW9JG zZPOkFlt?-&nywla4O<^NvC=`yHZO@71}`cZtEnBu*xz5)7}vkh_T~?cXNuD;9D|^U z3hU3a<2w0-if8HP3fHLr0!ygE$QBarwKbZY_F2ZFLD~0LpDG}32SR8z1F0O@*UaPr zDe&rVu0dt_7#aqkg{+_DK#j0QHx2hiBy4IZ2{w`oX2hn=`jJEX@HjVVd!WZ-ZU#Fp z5_O=k&XzoVQUTG+0gTac!^zT`78ERA-mFdXa!~IamZ&!K)ak;%b4obBrM7C@M;!=LtgOEWW zJ2V+Js*%k1RC+5GbD`TTor7)5HMEPWi#D9W?<$%DddOq`d)Bdw4WEo#02}P`=b>iC zHwahxHr>nG)N94xn(}IxRbUZMXfa@ZDZ0|j z#yhLCUfH8_M<@v$)&RiYW!*sWA*Vw7W{^_-aDsoXuK411ohnC$>i9 zr2K`=Z6m`My$TIb6_u8kMmBG#U~#9Lzh(Ogbj`x@2KA!b?z3L)h{a>6&^cj+#JgEH zb2c!`G$wfnAe1(x^F4(z%7y%GmzmckL{%FQoc`WKF4KKKbn6}z59K3bZk;&L!&q>$ zDwN_`gHPR(i6+r@51Xc@HSW2Gw4+8KS~Xzu+lhE^j>73L9r;uIExA+kClikl*m5Ve zkm8-zSMflm{#pOmN5EJ9mLB)E zG!(G=4_*CGaia(z!~|XOu{cB;_JCU=CZ~|%(Q>su zaM8=vAzs2x&+9%0O8Jzf_#dBSRoXUb_w}G-EOw+NH}*6ItEUX`1E9?;EW+v>;65(& z&LV27x`ee~521AKi5LgOQ+Qj}3{L&}+B%MRw)ETURq4ZB2ep(L4UfE6jxpBtGp+Nr zLy@$N{K!AfeivR)dJXw(HNcvl?MDZ(9RxPryChS6gH zHCo~q*;ImX0;;($!wqC`qry3ypbfYTH@4VR>qD z31t;4leTQ)y3A48ZPK`JxL0{?K0hL-Qvx)NO?|Pf+`N2T#r}d&*SJj3A^~%1Tt9SX ziNH95rV#b~)kNPSo)gZ)F95?3u-KDcr#}zBSV~{|#;1VF#?s1C?m7gLJy7o6in`q4 zkHWE)W2PsmVx`7k`IcN`UauQ5GgD2NNJgLZha`kKK!2^ae#qfFIRZxwtw5NWX9vV_ zt`Oi?nD2QAlrD|Bx?=j(xYWO!fir_yBb^}5<6;w z+Bd@+Vw}=ZW8XfbzvT#}xdnTs*Q7+fg_Bwt;?sXn-JlhLY{qhHiYCZH2SXbw#F^g_ zq2(q&xb=FefzGUf%&f&k%STP!(b9@g(F)n@;L5g-4n*c#ac(1{;-*7FU!oMTH zjT}k#9x=RbUpo}=yNsUxwlz2r;A`2}Kn9LY4!RbB19vs4+Cgl!}P8%o98Z_Ywlve5$S*z^F z3Z`-@6lGH??x<%_c|{b&M4xAT*cI2#DYfgNgJZdk2+zN|>_;|nwcw~%k9QSQ{bCNV z85)D7o`g%Y_lS>QrXJFnpueFHBnjJ&h2VhGSLm|QjjV-ImnCW^?@h1+KGKpDKyx^| z2SU9bpRX)Gz-b}}b8L?rZ(#~-sTcOt9;rt!hkCtJhu?V4H!}mq{(!P5!z^sw?BBTF zM`;3BH$xoH?Z;H>siQMCSFP(W6B$=^O;_lBu7)F*c<_=Zghgy*oD!uKHG+vvov$g7j{?G_r4^Z-+ z8o}i2L;l2dqP?g4_LU_)m*=Bx(|jnH@$=w-D~Z_XcW)CVu3?LT8qF-xe9_MNEZp53mb+3u$D3;nJ~WFz_>O-jq1aZb=KD*CW6FrR|t!T=7<`oH|hb8=qG0+ z3`C?)PNMId2MmIkuJ8Q}f@)1|bSo*~MiofIPh@7aa`ZC0k94D`ac2<30_HU3u5gew zYgRWgC)}f8LY4unT-dkNa!O-2`(j6k)Jk;>PJ zo*cO_6Ol0$L51lX`2-Nri5&gM0|`UMJI*ce*C6?42uZL#2M45fdSBN;owT_Kc3bKw z!C_Zl!`~2wCcJ+7p@Ed}qRRA&G+@z?*n*uM^SHX64hT+Fu z{AJl&k;0${xWW#2sBA^qv(Y43g;Jg5q%p%xFZFPe97ZWcH0J^o!*z$|R4@H&!O7a> z=Yy0$4i1%@?DZonp?9E>wOAqT^sf;;e#M{W=-y^!Zyvm+kniD%#B@F=ky+U1pLnI@jk z3Vq`r2II~&6Y9KxpHbFT*vvF-0EdF!28ijRK8dv@&e*Zr}Jix3HXIBVU7q0Z#6RWw_)K3;aXy+J`;J5nl7a1fYpV-5_j>w zI1~A{nG4fWl85Z6u4PP(rsdGe^>bIkPM}s{3ND5MAjJp;SHj)|j~cTgd>N#H(bMqL z(NpmZR=V5WAIW>X@1xq@V^QunPC$a30OY zvg$bG&)6wREqQwZu5MMI{V zG53c#`T%NDc~IDV3b`htdE&h$fpK z7@9}ZuQhTwVV8j&Ng2xu$F}DL>jhVv?8M%-{|uLw87SE3N5ZX`;K{l!<&uc`@$?4o zmDOe1v}KPCCY!R)$A87(h1+ojEqHVaSH}9NJ;O+{6;-&JC%+CTv~lbeH46~>)6JMM;hnV$5` zp>=D$$Kg+)er>ZOaK(zn7Y@OCwN*r8Jr)iY>}OAd#z@nvF^JejKEN!|YtpAg#WD#x z^%W1RCjpp}(pveBrXdKv*uFK!Pf=xT5KBmz2fDwy<1K@cVr|7Df(1pC-AsXCYsy6nCeKbP^C+|#i zLw;#?O9LZ(!+o*&wU8_E+Bt-8;~?4AIK5CRaefH0>BFyo4<;?JV~c+e20#6NAAm8= z&7nu$MgUzKrZ4jj8=;5K0S%3XQtm!?_O7{l+AAm&6K`(;OJ%<37se6WNypV{lbu^P z_8Ri3gA3u+n$lIh0D9b&_-3^t@#!(1TGv}=`8|2^7>egH54V|#bmk=b^n`ap|&>h;VAMOU~#{R$(AapM) zTUWRzR4q>S#FHjS+6Z9N&iaN|Xy!HQ9yO(AU+D2^kyT!Qp%M%Ap8G zo0}k8n_2Tiyz4MN_gld@e}^|7sT{Ol4s^hnP`i9 zQl=m+_fg;e#EmH}_ikU}#L2Ogdp(qF>kV_}JrtVHX6O_IX((3G^9kgY}&yjueh`lj$wWBjBqDc@}vlK7Bg@s%^zAXTxu?YKVcg_3$E6 zBXk^pF|}AsmM^0LaLs@RJ)B8Xwb#b7rIKNBA^!QcGK9HkJ3sbZq?nNCbin(u_o=o5 z^&SQ?)P>a=J0)AGrs|n}$wm}}3<{etkOr}ORJeO~mQ%g{krU`@;aWAJ-<75IUNSX9MbtG|UTH$hY;6qD7AW062_ci&$AQD!h3bITY2!^E`fCInt-q@*XkjI*g^76y9rwQvC&$*5I& zaB3)cDK(`eSHNjzH6L4WVc>0OFWc{9dUI!cS=H63Wll3dW{f}cdJwF{ZN$YQL5VyB zmoj<|WbLAWPe1%PNaR*Zu$;{!tFC?Jyc9gaMEai8+s*^U7hlzTmGy+=VoyT0@+=_? z)dk?zmP1VC5(9e)X44RCv{N0gBLG*G&>nbh9!)UYyUnDVP5>%7To!Sk@$0TNgzJ&$ zAb;|*<&WKY&@ zJe;qB9eOgnS@|PaxM~O!#dmO9=_5PScPCfoLvpbD7PE6iDv(H{p|WH&45@T=bV)^K zaNksz@Bv-_D5tDzC@~zLSC%w&QtlS^tADbca;yKH@+%S!n3gv^Jv4S!?v~H1Y>&tT z6oR0L5_uP1Z414g;%t^0=^?MUt~BuXF@!mUhTiHq_d-GhzifNc5~?oRsXeTUx(j5| zTMV%wpo{+q68m*oo%#A)TE4KArzi1qn;3RAsDEvaSMe}UXCU`GrSiIi>MKHexd6)R z%Wo8!T|_fZi1@4+A>=Z(;4sRK0yz{)0BPi16oD>ue7UCIY*NJbc6^vgz@)S=vk0C` zc1Y2Oh-BO%6M`-#`?Ao;fxwh0C;nlmHl`S(W(jlKv&9ox#^@fNU^p;LQJPph8V@7U zIVj@&hAYkyXNz9!SYpc}O!jrZ`yW!sl1I23=%SmjXXmjDl?V38i)NXJ%et1tkkl_K zlo`;S=qi{T3Q3uCB?KoOG@fWZsG<%-0jIGqK_d;?#0|i66-n?aHvx{K2|BqeYmJ!G z>Z^koSd^fV*t>I?fOzJa>`y;XsLX@U+PaRV0c1&grZwW}_cVIU=BmXI18Y!g9sH=W z{+N+-rl>yXoFe0KNFKuBVHKz3NV8tHj)b3I)-ERX-2wh2k9WyL2t^;k{;8xzW^b;3 zGQK-XN_-?YV?DPzFIKUtXH?WVoRX)&Iig3Eb%`q$Rxj>2h0-P(lswgW_k`*zaXg`5 zoFE*5NybQ=Hb|7ExqgJf4R36mg())+YmARDjFIM-ov|~h>LOfar5gibSC6Z9b~=$i zdl|!WxIcV|AS(Hb%*hkV4H9G+*B+I|k{FqvMC_m%_lStThP8hb#Z*$q^me!m*>`vo zWWyZ4{>VYVQxkzK{yr%0Lm){*5>WWd;VhhI>yj_wVa0)U{m#M{8Go4EM7Cv#i$c{> z$^DaICw_P~VlPBM)ql%$xL1Yqiuwd>S)Cjvi?(g&v^_SvCnTmykgd5IZ+8;3hGJcn`7@&w{}3!l&< z!Xe7!jUEB!uLFJudm*0DWJK@C))|IjCAxG&%A~Rg8_;i6uZ-Me9o9Z39*QKk|v%@X9bC=Jb$aZch?cO=pWjt?-ck}T~*wL*svJUU3KYu&%? zFx5g^EePNwJAz#XPR0qM9jX^+qbSni~Hbh4v!wS+0soZ%^2M8p|h8_W7xQpNgQsn3vUI^AF8x@ ztkVnIG@r7vRIV>1g-VzkTT3)M^OOy&Qz%t6=Q~KSO|?PYS8go;k>B6L6f5$y4+_YE z@o;sf-`)YVWxbym@P-*X@M#Z) z+9i9ffQCPs2QHTq*ehcqjxrNhNe$<^DwNpP?7?Ah=H=fZXiczJZ3H@gbXxKSHaxF3 zkp27%-aJ(mMs&)L0aY?dCNC%qh$b29On#XH`apN~kW#XGd0q*yFBF7sm`sOEKe-;l z*GVeQQ4~=QrW571m z?r)nfN+Nh{)gx@=L*3?)r&kTRn+K<181v-?G9VnXkZ0?`-419|EdI=7hR^Joc%}@H zF8Xzw$ww*W*mE3HnPKMx22@8#rQsa7S=Lu|DU;esfJgAL3qx9=(~UDv;2Y&i@wJPP zve)oeTfvmu{dTXsQ%T?bt#^XVBe645BIXf2l)}9hgZ`Gu+*S&Awdxc-+7VdKlz%So ztYzQL+D{#a_E^2vq#yuudrcL$AQ4#(<*_+o4~`ChPpzvx)}Y)TZ^NwYgV*^3>(a+V zQ+>7*))DHGpq)rwfFt(q4DsXc2MjVspG4j-Ul=t&e2Dy$*fBm%|o{Hb0%< z!5Zj$ybpCO@8cRw(+6H>&?$e4}XV>|kj8A9ANk zMQvH6pQLQp_gV!g8nZuyV)BSRLd(1vn1VkWO60ht2k$nVHo+z)BUg(D(^sRtK)xP4 zh}F6e5}Y7V0Xb}#AN_?X)IOlSRD zy_H@&xm*2=xd9lvhnlr+L`^!*_1gGaSX=Fow0fAhO}~VX+|?$hQr!kzk}YWsaCnJ0 zny9pH6`MXj{wcc+ZbQDGenEmg+ck%QEJTv$UG15~dp!cWFa2#X9<)Y-LBoPhmLn^vT+GKV zVPI3B3Ymp4=m!t7AqvL5c3j)=w2;n{Pn>n;RH}H8sv!!!#ky+GwI@zUe!Pegx+zXXM5c)n zNOL!RF-aS4dR4c`R=6Y+i&phS)5!y#*+8lIQjUX=S)Ba zD8Cti{8IM-6wV6th8!4EOD)N0A^7<+v=Y4i{{p?0KiJf)aSNBcf=p#98p+0G(%efQ z17DTeA0m!oI{4Lx{+$4bQW$r8W1PJnuI}vrdr$F+Fzyz7h+H9EDa<(dqq= z`rwaUfsrk|7piRXTMyWcys~L_nY?f@Z_u0m@bQGPsmQR;%j-TahtXB#6)^Qiy|_@Sas+WBq|G|L7tR=GK-IC*T6=JdNS+KN3RMPZaVo-Mek zY&(13g<8mQwj?YG^LJnzcrK|f$?krUa7}Nn5w72`1w|fsDJI@D(~zU333ora-gtt5 z{yA4i`-Jvx{mDpH4|R8HD1e*4JAS`%jKk>r#jVKb!}Gxz{f?^xK%|<%_c*k>+SHUP zd9C(QPOd(Rq8(q7@h z@&Bk7l}kk|Vf1fn);M@r4R~~Z2_Qfi08BZ^wT4F2GC80m0sfmu2la&haqW%`{t8_j z=Mv5-b|3TZvO*@WE2%?a(}h~5&z;;I-5uS0-b|>V=05hy(TU5e`swj&_f^y9*lyo9 z5bVwt904d$DmzF)hbIMiy75~taC@z?0bwo39hBA93`o8&Rq(_#$oS%O04XqgLB?rddaNGl5Ix>~P72FKBfUuI zLo_EvS6YS}v1RN)-xUdn5G06AM+NRd$0`L#P%J{1|M~`fyklymVofy!xxBX&H)*QDNpPtd{AoYD4x88TnB2;nFQ3 zg`RbUEFus3kq0cI%@YudO7nd-d=oNRGbTz*#$nmoAxB~c>e}*#Ar>WuO==OB7lXyA zSz^%9v4{CJ2QiyV@;7(xNL(nT|ph4=JP$3PEXt zIV;NACc6{2pwkl3kQ%ckJIsBMNA%P1JUaA$F$7pPvjW&^;Cl)J*ltyR*;2WIT{BAY zJ&KXL!CCwg2f-{0!Ia2Pv$xum(zQ<|mxK-^>8+t*7F?_+M3LEoEmh_c&*;xEMsKiP z<=Kr&b`A3um(^9muPMThj>1X2efbpY_n>k-lM2V(O>IX(OnK;DL-5hDXx zd|7h_eNLidevH~b`F)5kSDf<8CXw>44?|v9rSD!8)%X-FjJe#T-0I9V7lE!NxZnO& z{FXuKPX_7T>(iHi7jH<0SgPr$vl9_({!y7<#S{EV$7+y6u$=Ri2urdS>EvxyATcMP zFqYt)5LP-naFc%V{DBI!ezADLp&4w51rHx#f{n*Q(j|@ZNqC*`pVlmT^HoQ+0ob?> zND@z$;x2?3VJB;|znt^stX(;*qiol+{VJc}~k;6XFq_scJO3&Oq;m%oFqLZi=-g$>ixaC*8>W~HD zU+X8F^86>fA+f#z_}|EnA50B*TqirZg|WW=;$JAJFUueY`hB7&5hI6xLvfuLSMJ#( zy8^yHxo%$)T1Fios`3qy9-Yn9hU>$xM8QSc*=AZqVyXJH-?80SCJ?-TZEyO1CH>+c z$&1JL__YpB|H5PU1@q^nxomek-`_V@abzjt~F7Gb0q6*D%re%P~vpynVxWJ%qM#-leN)&Qe2vFu1qkO z<<#DQOGe2(kyJTGD#56jk-8L=di?c9>V9tD7j0kjn( z3O!I6;vPnxARVScQhT>#1nx6sb&bG1Etoq`oNv>1A{7XuFfo!!1=NbEiJ}TVUj!$U zLvy?3<3MQP$bTcM1%&%%!SbglM>bv^TkBj@_CFN4U+Ml#-Y}7IpKaud=Ht$JdPcA2 z;VoG;M78AR^xGNa#+BFr*dpq(E*P5!&NAO*_cQYrICVb<8Uriq5PYP;l3*WwXO1Np zyOyWv?&a1jRd2o_f@ewt>XIyFn64p7iD&_txWlL`8B+9w+-3X6xlAo`*VFxTE>HiY zDE{BeN$cNVPW(ptc256W6OiWVgsqG-?3=hbdBos8S41J5Q3ldPVXbiznbK60A3O8F zj|3zQ#krboRJwU#kHe zEgU|3X5(sKz39N?{)*q;`iUz#_VoRc2wZQCjxxpKkl{(^^Cit_y|SejnQPui|@OdTO-vaNiuirIpm()j;rA}$sZh-oOlZNXkbVWFK_fMr?T zCL}4cQ?h}m00OemvJ5}-AjDQYXxXZR9^8FChEQ@VM^t?P0hES|t~xKW@&B;45JD|0 z5DXuuQUvOBsFOU4-W7Ka#Y{2SR8ZJ$d!4BkMUl?Sh|gOJOPV<>`fb34OR{c|P%`Rv zX%V~oS8UL!m?|TwI1C#jT#I0^*oT8-Rt20lHOP@r1vR;01N==O(E}KBp6*;#y`PJQ z*}MS&HpuV~DVCPdUqCG)*2;J>g{2)+oH(qaNd-x*CCxSc2~?*_E)&e3R)MV)E9Gkv+_6zfS=2yhj685%_v9Q|>2q{O{X znrsh5HGEl7aMbl{-UBiZet9V%(#Y}Nl;yab9olVX$rSsAd&Xp zlcv)Gbi$g+akbtNDAD@`H+>wUvyA;#o75BxOrk++?(ZPZ#=lh*!E^j5DEoNh`pb#e z#*r(jCL4YfpErwritqY`LUNDkAe z30gQX^q^Ts?K-KLq;T1s0yIp>UJ8d~vyWQtj-zOIO;CBq7lbb3nfOjr=Cqm=v`1VR zZrCG|+>RpMb;s35r!pj&z%=3--EQ(yIS`YZp9C4dfH498q z-*9FB;n?Qqq>*byl|DsqmgMflsbzgc7QnI$Jm##v=}9RnD72(+u#s=C<%V3M0aUm= z2Z9bx!@gcFbVH!CbF7^u=zKbRGoYZc$Yf>jGztx{&s(b`eoR7^Y*(y0OZe zUtA_5<4V5lXks~Ma>9PiD^ipu>Ayn^ZaxCpBD+%30V33vwiIql;U%3LhFE-kh!ML# zQHW2OV~kHx3>Bj?D;BG0Y0IcWF0*&jZ5lRk=tl16FB)GZCYSrHQA3isDA7@mVM~8! z>ci9&J}ZcgSP(oH(vV#aTNv*Lzo#c8t`CoB@W*1E5sBZUuBsC+nk0>PqAgyrI^ws{ zKY^va+?gXwcg0byF2xdRi_i6rut7bof8dDcou2Oct&40<#&)rHrt0?F)$Ua0$^|Wx zry+Hchw$?F%!hV!y!hR%=(&Cf2%5cT5$rSszmrPt`TLlbcqX_|99?W}Rl1AP)W*bJ zaA`!}xjyTFICs95))VPesUORjr_{V$n$-6Dck5o=H;ckH3_BQi@X9}e^S^3a2cB4bCldOhN zWO&pZB00Y1oe9Hh{Vml_^Z#n?O5maD-v4A@qwLwYB)bTSY}rZnBpG9hEHh@tzC;q) zTO=VWDOsZuiOE`8ZOK-MP!dVV_CNEsysj5B{Xf5}X?*&0pYM70=Q-!zbMj_sC@*Jc zE(y#AhaYekRQlndfOh&(Cs~kQAS)=fRRo`??Vo=5`3R4!Dt(2;^B4I?hN3?RZtvC> zea3m!vC^&3;+1c7V=(GN@AhKlQGb^9BmK9U?>8$H3@4(uG0p4@y^&Kr?YXgNJH35U zT%uZ$pRAanYi|ZDhzVcyhU`p?aj&9Zs#vxlqvTP6t#=0mlGIGEyXDp)EPb5bEF62r zF}p}LGiUjEj=F7bF=fXC#*PseyxoXGeYE|ckYY$wnW!<2*U!zjZk z{UvJN!FnlRso-B8+lQ%tqIpR^9t6|Ahj&OY$SEef0aIqfyWYbWMLun_PCiPeOpjN& zr@?c{uZzns-uomy%$~+Em$B%j{!Yr)eb=dWAFHG9a4O4e^k%aJOf zqYrJ4wg)PT*9Y+DgipS0JG~|M*|Ep=v|_u|((!85b+lPAb`rr-!)j=!hv6)8TZ)u7 zO+UsWr2JpVXl8Sm>bT#qo`StT5Jnfu4U6p{^NPSQPAW^FSwan9-jT9%6It&xP?*Ew zLv|fq__y%_U(hs|vkE&NbFuXZ3%$=5QqmgOs*Eo2&@t!32S|*w!%&ptI}ZwYW*y;q z-Rt3*yN~>7GoGq+vbu_8^pNFXReJrL@6h-s521Ls!khs#ohdr0lRhU{`O;W@)17yH zE}gnv&uO=vpeX#hFSD|yrcT$UhdMJ5Caq4v!S93i%DNPpYEpm+PYk5+RHsv7N@z3* z(z{sw)I_Nv&UOp`E`_{Hr8@B%-?m+Ne4A&fzT-por()kyK5SQO_TF2zS=SCIADfx! zgO?ujniO7QG4ngCv*e}om7;AXqqyvPw55A@xc{N|7LQv;WWBdz(;j`F*MBS8^pfMv z(O&Jbg;II$JBC;+-Fz_e)RXww+xwo0?P2;#FHkk0Q7NvGAWqphaoxean%U<3l@Lsz`R61&ga(19apo;t}Kkwtx zIQ>W-j-ZC}1oiWU6MPDb3~^PvT!Kzly2pmxXwNfk6suzT`c8AP{lLqQ(uFjNLvCqd z^~Z05#}q!%^tHS_guq}u;M|nK{ub0B7ZxLJqwz}1D$f_!WQZlzD~ERinTNb7q_$w z8zMfpDlzPjIrw7ZNdd*v^%PrMPU2a$3smBsoVvM5B``zor0$RH&UCTOJ=f#}~E0(<$+hA&$HvueJN_xM{nqn=q|@v3+hrhr=jVm_aC(qCdtX ztv|TnfTP#3J1+}U5QfSseuqEj$>jxkK0nQHebkz=M_fy?=&p2<<(Wp??FTQsZk4Cs zbRE0XVX@#+A*Fz<%BcrkuD9F@D6^$Bj>+fjeizNm{AS*$S`xi$##C%~W{(;}c>SYI z!=?5AtR#H5t~-+t%6neW1pM0ou%_7%_RRZpfhX@^CVMS4r3_4UWsD89_nKPlmB#tu zdh8Bj-``^kd0B{e$=>mu!RCQM>OF(Y=kF@*e{jZEq)gTSq`sL}vIuABoxH^#m+3vv zJBtP99~Hap(%%an446zOr=3vU6XS4!T2%d`xwmQXRAcIr`D@pf)2I($=q8vt;+ikl zDt&poFj%)Y5%`21Oh%hqnq zopCNnqqQ(G-t!*miHAfDTdXP!TkE5napP1 z?lEw;e4_Cc~2z76Yj zaYtQrZW|u&y_S+Jf9;yG*EN)Xj>`6fp>vXcv`MdcmmH!VMVX&ynNX97SkhrHx|)>U zErH`3`&9q6mrbH}B6E1AH@MU0>}a>VUR)D}xu=4Q)|eM{&$TSOcE{%q9h>*Q3z{3- zS9&LX!(>rkc%~Pc+?F>O=2_fGd0GH-W0$N}&Z8ujk(A3%2CFW4ZS{1NT0C;Jw5+|4 zzjMIAM!2z9D1k{vLoNJX=M|w$-`wk z(R8lJ*=)@ z=QIrt8GTtFQU;3<-YpVG8!6jtPB$#gBfJ%s`hq_U^88OztwQqnpMLM-IdDs`DQo zx=7y;F3rTn8CpVhb3wKJjJdBT?dUmGhW~6Ux1oY6eSMX{j#{GF|JKi?5x#1-Fv$ezvd8$mq-opDTzvjki8f z_`eDktobZpCu_Q^<5pKMj#0ze?ST22ZN*!-;sUO)+Uce2@?TKXDl43@Q46_DE{7~x zxVj;@I>K(tlm?t7!;Hb^@@Wc#Qy$v6yEnTL*Yh^EAewD^I?iv@mnS@(`MPKO>h5Yy1< z>FuZ5CaV9`&^k+NY=Ek*oTvKAhj=<8eFMejsz+lDjScRinEdYHy;Q>Iwmr^^^C6Ev z7$1LY_vbg89Rjw@rZCGSZJpwYl~r?#(o>H9MI6w61KPbLxD1WF>BMmEHeg`>^wwv+IRx z#V59l%ahZdWPX)m%QHbH5Q#Q)^aJ~T$_viJeq8!^^NbrVJ5c+wFWPB-hRQaf2l3w7 zw3y2jbu72{9F^0wvmwRTm}6sed%9(D2aCusc@4^y8s!v23-`nCI_{-utvtg#JV87B z?E32_mVJ_6E2VDCZi+cAd3eVTut=xOM_-F*hjy`7> zvhVxfSbYx;|C~L7A8|(3N*CI7=rex*;9F7?#%7@J*%Ot@>s*L!KGyi6lkCUIc-;}R zxv#ZVUZt<7QcY*0X~wBzMT!ILd@2QaqEzh#(j`?|$yPLqafi z`bIHR^r`5=4LofW*4?w#s!znvVNLsNAMs1cSuxjGx^FohCLeL6^{AnXf_ePxSq@t^ z8){>)k7*R!2pK%L7fw^@awzdsuv4AccygI-Zjijfjr@cDhL3&XwL-&pp;Kx39#(&S zEUM29FWICK-%rEEIRCCTdbdYv*~zL<=e@@w9t()yvAh1}>0Q@MvHl-?MW5!(j-m#n zGH@sLyRKE<hlI@Z`MYNL41e1{)}*WL`QeqBawH>X-SgL#3xj?0zCUb&{U zG%p|hh?sqt1GjGI=6Y_rb9E{BePqGqe7<{6r>A%5R}O`Z#<>nnYc!^RK6liHYJ-jZ zV0H08p|Pcln&^y~bt@t})57L?bf$>ci`3H-nYxeh)K`RAkJlEYT>QjddCZ1xXJXT~ zk)rg*8{a|<8m$F%i$Hoa4Xul)P2L5WC=OSNYTgq_#ENqUY^*PlV;qZMK|d{~?@WRy4({ zEVPGZ%0l_=&FyVg2yT~8B2HvQ=p~MB|9DsDUfEjM4ttZWm#j5k*6zl~4^1?j@*jEI zf9tfljpm)CQ&YyU7gUE+B+R1r=oQGv4=5DBrhWRby0^vUOJmZem?vY=#=(12g|3^J zJntWguolU9QD-USf8TrOb0a$YZflcUXy+bfqpjQHycD>e)|w9Hv0PLhIC#uw-UK#% z>ojF~ncrw;^e)V$fKzdXai3)jo=NNX2ffF=5GsLN@2n5-!X;f)AM;ax3(&E{oefbVYC02zAt2pbY`41QQEf8 z{BTGb73%EnjyUEmZx7#;3#M)7EUqg%;H;oLW&WM^=#NF=;Q_?O!y7fZ6*itZ+i95_ z!hN?&t@^|mUd*=n$#t_ClbH6Fn~b(xetNXj-wL8ks7;T_d?*o2J@GC`@xD3P8}s9- zF{+<$dRH5D*#%K8()y^>iA3ERGwsHk55-AYpV;tKNKwX>&RQgLw%gaBjk}dCl4?lm z*y7H38L<}+>&n;arcNj%cB0Q735~e9_ zgQt#^{U~xM2q|A047n>+D>MCRdQbR;82)7bh3(-a@J>AxJoE9!7mYE2|FE2SoX zz0;)9tK-)VYwz4ttZMP`&DI?^=K`%S)qmi~Pkt`h@b=x%xXMLVj^I|z4es*Yhn)u5 zG>(^teRJd*zj*~NHcXT5v-23O(g9`-ZFTwK*2*S)rJ?u1+O9Dt`Np_&8Smnzxwq0O zx1heo)9{LyHu&pQl+qmBIKxPxSNgtvGQ0_Eu8!WuV*lEu^UXer$9Id9=0+I!Z6XUP zvSg_5JM{Gg_{=fTQr2E5+?9F>(tVGd%AKw4{m`a5k;%sQK#r#<5OM38=hu!tj%|(EUqnr5&#=Va^po=5VOOAA zoYNqEhI{)7n@ZXfr7+HlGBrQMpa5ESgHG@gN=f+4t$bp%U-Ul783_jw#e4;rEi|H`kVbkkz zS7`T!o5GApo9*g4FA-)5A!5<0Z9X$?XBC(cB|9~J;XZL0TANV*F-76ek_+v6cVCpL ztZLq%i3p!4QE?Kh&39Jd?AXDQ_CoKS%gCkCogx^|<5F7M_Dh^$3Xisp7#WN8TouvT zckZer!@MzP;MPMs)DhL#%5xqcT~ZC(UKNbfIo7u&HI?0w65KD)-V`mKuIJX`k&?kf zzE#^M{`q#M{V`9=CdLMy=Imb4-b?l7D9l*W*=m%d=LUPs}pbmn`j~2 zU6GzR2(6WT3qxov5v2w9#<@TU(yb7rD1@K}c)W`s$X{al&E2xWAy6ncSE#_~SCHHa zAsJ4Tqz4k`f^vq+aOE)n6(~Uo4J6a_@OHVggVVWOpg14Ej?!=H;5#d91_YPC0?>kE*8u50&vsQ3aKH(GG$0@};CNvYL4Xsw zBH)Bm8&{mmv63YXf1QK*fE_$|m>ayS`sd0DyUIio8eqf~v7XTO*tdwzf-_&1}kG;={EU5UnC%!S{j?Iryes0lW`BAp1S|2 z2d737fVr-={7yNg^)Mc6He|>FOnll5gDubRSz&uMiD3{lPedzKJNGXUo;mRW5Xum( zm>7^i9;NM$!Xgbk(cU-<9N2Pl4I7ISI~zpgcyppi?^p6(wQj6RC}*= zKj5MmxHmM0jaie3vCkVvgpp>K{e2ODk#^wWP;Dq4CJOTN;eC^TQtE$wG3JVa9G7?r z*Daupd%&QeDTT|G1oAkbY-5m2a4tlpB``3;paQf}EeV5dhv;3(gE$hQ&iF3}gjB`$ z{l`Zvpcer?G7!3zAw=n7kj?~ig}Y-{C*E*$K;H#~kINvg0|)zaWrf8bCq`Tcc?1p$ zj-S#uN8&L4`fyL@KWCe*jEXeL&#Wy0)Cj0%q4I&BAO@vR*m`x1D9EZxnH2z%Mkm)w z17ZXsTR$fKq`TK0q;XH&>Jqv!oYjg4(kTX64=Vl-XGtTkhe3IxS0}C`Um`aR>VX>0 zl?jhLg(&f#Z?7D2J?f45Cw;FDG2rd2>H;F2qcjW#{`|SJ!VYB-g&^#8`%jtvU)luc za+(^M$^`}gRb#My#UILq1SD8W674@P->gpG6F+Nm6_|_(a9(J|A^H06=>J~CTyB&E z4)P4RFR+0W`W1XY-28K8g~@jOCBnaN60LsB*-Gg6j!YRsg=htsgSsBR^Dm(-PzX09 z&JvDwTV0OX37I@%!0krBj`zBMcqHiQbI0YE3>{Xe&I#^T_fxHaNqU@NXu5ZDIc5H=|J zz)z%*CsI#MmMmeO00F@O2Tdgnib^LEX z+ZqYPG6lvDbWKf zHA;g?rJ!~-kUrc&e1{51+LTn%-m6$XVc1~~wqMbpoC%YF!N8wCS5{bqEh)6E%#HsW zj0jqFWHIyU2jl>i6)u%{j3mMs_w~$PBs4)m9MqF?Afedp2?h>r9WA|yQ6{xWvgDt3j{znb4Jr<3yutbq!!WhfCRXmrv}o?F0>)w`41;a^ zBN{>?IOI>9ys^pZ8qJ;LR8Rsnb`Hp7&_QEjiBg4oAg$r<-e9)Ib&UdVe{2GZ(1x7* zPa8s$NQ}HW(#spn2oO(K74KDN&j5*3f{!XhGW#wP2f?Djv?vl(09bF(P20e6U}k6y zZo0_=th2!6z%cvDrph3NR3M_g2;#%>gYv+HxIodm2f~f{bz&eEt{!N2Bw-5T-->44 z6r3Brg=+@@YXx2hjY1RPMeg+z0U@|~V~t%s*NAWrS{*Afpo=yHtqzEvf3B>s&>~{A z!I`J4+iNGq(|R)CWJ$ngp_P~32nj?*el-Qd+bjsTUH0jRv7 zQ$cq=kpg9mLcraTmZ)D?Ch#>H3B{=-{b<0F5YWTFv&RI-K0ZzY&N?ZK5VC9D(%)ME z)IETML(S>vBvI-h1$zP~H-lrbz9@_{(HK>(J18yzfUbj{4jQAHz7qqpamB1*NEWSC zN8A7l_kc2>!P|U+6spFkqeQ)qiXyI03Sfi+4Cs7`AdHNNBM?RoFo*}Lx8|C2r9jIg zAcjCeN`OtT?`^-9GqnF%)i6W3yCVEoH(Sbu$I-%o6E~m-=tS&Gn!f_EKqC>WL!26v zHQWwXn=XJP4ebxC=>HmG^(vKMy0&yDL}Wn1<_Fwp{|O%i$N0cUBFw+Dr2oi`h_Be1 zsARkcV!IE_7g|`J5+D)K6p6zk;Ao@{27Uy$wghF+1>u`O^~Vin&Y&jUB1R$-VYXCG zR%LAr>gqe!fW~2+AXFMa#HTM$48!BsO4q-uQd<5vq$UOf_Xm|ZZuu51E4#XUR8r+( z5HdFb15t;-HYof(tgfp&VKHcp2_Bhb)G-;r9s^LC4g~A0+W#MGJ?`Fg^0~hO$#N4= z95gBH(ENMEwK?lGDZ4fZIMM?4uL0o`ZDp%cJ^&gj3hA{9#q>5jx9*J@k{ zk?OU3m0u?4bV~(5iviJAiVdkKd%;{U&L5mf2-XmQ_|}7?Fw5R73xs$3KkB-9gk(5B z5Z(z}=z#4@yw_!}W52%L2r&5qVDiv}qU%m7njZ4kT=VJ)Wq6~8&tc%h+d$xjhQqTy zq(TtpgVz(9d`x4b4`8E$V`U*^6-+9|KW|*1fx(%93EcI-dgy8dGk}JuK@ktlkjjyy zg6%^S7Iv{~!4Mk#*apobf&hYxXQkZK<4A=e#>%mZfINZ+A%O=$)nAiBGKTlM(h_Ma z=!ymqnE(P>7X_q}3So(XBi1$JMvi@4z+Pchpu&T8iLU9Sf>>ePi3fvzPRj-wkd%6X zK|@21I$&`9D$nCr-UUEJTxRrk0*bKuQwrFDT3Ft-zd#}8H97nyldb@!2Eaf|qQLCG zfFWYbgcvG4O8KMe}P2IoR9CSnjy%o1TX~EPGa8Qz^rf4-;!GV27wK< zf-%fjXqd*MAn6ivXx2po^8)s)?cg^F$V*2->Nzy4Fg& z_+7UFb|%0F8vM>aC5gBWn8*f|7IwWEbAlH?;MV?l0jMhwsA~sAcEZp94rq-zI9Iuj z!E(?!u?nm#z_&D$1VES_1M|fHPLQoGv6i=@%CR6$+ycx%3;o?aB;ov8NhDNQ7!-J_ zZ4G{uyq-C*0Id*Ksf-{3lkNTg;fN4l!z5_xOpc?oF|apI_Lb946@4TDgE=}Y@Fd{s z;#+=DH?*QV^6_t|gL4noe0pH{8L`l4$M%IJjQ<`0zOtEJe!zn+L_3S$h(Qp4J$H4{ zE#Gw23WAwMOHQPIAdb1}K@uz3UcQm14P*!>+5e|QSg$EvzKi1l$RJ8M{|AFuYX{Ml zvRJ-Hpe1A&s@(sBVXU%&za|jD}VrelQ+>E!-8QW;^Wl?HE8Kh{hnKcc$Lrf6U!Ur(6ZC@TMmE35} ztJs{g+DfbmIR&?>A~TrzUac^GV8mmOa*H5${ULfBB8|+~3&(pWPfYUr!t__o40Wg+ zSC~Q$0ZSXEWR2#6pu60YKsR%ED_6A1gCjUVY>Hifpva_+VvvvA!4gP(ivHs@<)^=uQ7PkMrOaI;w z|35dhu(7xPZ|nQ-LuU9JttE}E7?`F1bi~Aw*2vnx$*C$?M;=QBdE}eTxPjQ39GDzN zJ_1h}9Iviv7Spn67PyaDoxe866+%jV^>W@DU}?@_n9OIP<*oQ2s^B2-iu{FP0mEmu z&W`u(v>=xEZQuQxHUz*8f*p2Xtjp}?bL*SqIa3Dr^K(lG;8PtY7XpG0lL50g68*qb zdsym+xVU{nRx$=khGBjFxW*3eL=pFcF2gA+ zXtDVAvZ9DJ4jQ(qX^cY%lB!0_$x@E2nU>7${`_pSQz^|hX=NRSg-A_i8M2-J#uwO-TB@k& ziQ_Zw*k)M{gaCBQlgPEptrt&CEsE3Rv0XNDG;i^`7QGz;aTz+flf_0GQ50x4TZ z;uj1OG5MKTggkHmgv5G~2Fq#csUko>X|S4KDFpN;C{7kMc@O86R2A*Mw3-6wH5BH< z3>YmanLr-Lai-?*g(7|2;Dl&XCJUNOCe-Ak`U?KjQ;5lJ493PNsi%ns6zY9AAh8D! zARNw=qfSb@#bL4`*+R?^;X6KV%9if{@ts!W6V6E^o7bUvdW(C!>`JZpSUWO>?ns6e?{FUXYD<;XR0>LEsOdA2yBLJW9%P2h_7j30Vu}!vm``rY zEDWb~Go_=8L>(f!z0!N_6TiATT~4KHXk+#^ z24@9E%z>gBggaa|A~aT3F$mY|H*&kY$R*Wj@vjtFbTMF_-x<5Wh^Iv^yqq@ZKFslF zotkeP2qG*F*~MNC^>`&dnW$0R{BifX6RZx#Twy;yZ*|DsYpD17;%o6`4=@BB4%283 zfe9+ce{}&Kz6X8uin_8#KI6Zd|J=Wyb(b$~nU=ZX3Gh=FxXG2b%gWe}1%JKsf6V5| z+@1md@&M^FgDZLFCBVa0zv1BS0Et}>{eeh#K_?}jbM>(dN;w@sgD)hFZr!C-%Ll(Z z0@*hl)VJIL@(x9Shr_-~V95o>t3Tt9iA#+_)rH-?igI6LLa>r3=sOLgK*s+;Dy+>8 zz3)b_@4+VA1#lM%e;0s7NX-91A*}5z#0(Da2Z1oq4++_(3|~;=dR!(i@UPkf5~KYt zBqqYSjs1d_+^sxF7m;8WjIHNDkTpl`w$#)03*TQx=AO&Q5eWnUKpFO*M&^IEsH}ej zasPlVv!sxLvx%9VqsO1hKVdg1Sw{IEunUKX*w6nnS@WG_Ss7?CNU=9|o)Sc{%);DX z(BktHKE#+lt#3?TQ|ElT+PQ>F$33RqT!5m4M{H&;_+&BbTD#r(Y(99z%Piy!KIBKe zyWR0rSI=|L^VYL2?)USp7y!j)i~%wlkvmg>H8e{rvJj0U1NNXgPj>$idbNIL4(T~V zc*O_jklezi_JL_g#>K}TD4U(b1FKgj(ohG(x!paoBX9%4AyFz4xJfni5wK2w`R_GGjDJW++CA*)$Z?dNUJ66l?OYTNu!3B29#|2T9kbl3eZcl~g)ak;086 zEu@2rxnm}Rcv7H;fmi*-1Sd(9)2o*O@oZH$zv>msMnO!Rj&XqeW%1Z%MvdoYQ#iyU zNu<+9o~h1Kl}uB}=Ll3XR?4)JVWLG*24-Q-PfV0(A()Yookn#o3dUl3muwZO2BdN3 z+~YZ{9ICYjh@xCVE$|1t-EtMGqT-=z`iM)$tmtI`x1KpWs)1!+XhP+#7B{btj}v?E z&TBZfCQqf-H%G5J>&?sChe3Gb=r}-7GiFnwI^z}E9M{XK2#4qyF;!7vg58F+fg^%E zpdlM?m=TgDkP-kXBr3g7(0(Ypq$28$&iUDcx}9Ti3U)bp+Fxry?0*%Ymt@RX}aYaCRiK2_!A z3hs<|TbH)yr4Pcw#b)++_C4!w(h~~Wgd1f(rE&Dyz-jR@r%yyFu<@|VhPt~OdwW}F zzD@2P>Z|hS<5<`gLEpIc2u)-qy4eTa52cMzv{S$aAo4%Y5YY0sXIr*Xmc=^S%(b}Q z##WUYm-)nOgN{nd<6U_FY?r+QB7CNq0dA5R1hgd#!YU1oLi$a*w(O2eCqGkID1=E? zgL$r{qiD9mnV%6>H3(>flc6pQr5x$m`{Z2uu_%B59=UUNJA&=IIq>YCg3~H`?*hkt z-G88}iM}120Q&(GL{o7*eS@GO@Cj+CV+aEycgk?_4tDsN7rK6_m~lt=iC0@@!A4?0 z6|8$Mfp;z@{JEOnyz!*<=gVaxCnJ{{%$9QCzpr7-y`C!Hl=6L>t(HoFl%=}M`N+P| zxJr3(ay9Q&K1mdM)|<|^0hXe>%X_uS&~n?y)EMijhJ*MbXT*JxZJga=BzVuw>w)643Y^pup2!9%_l*xN z1p0Z(&eVE&&g%h;w2e5#)IVUR_f*_}PaNR6e9p9f`Alw~Q{h9p}K?%)asMxw96 zB0LLx97M8r=pa`ueSN=)I@q>oz&CY&)!3j39xTHPPm%?Ze}@xNi5{9yU0GSq;iEHwJn473p;O=3F;b zt-G;WoEyc2t<3-GMoD#x!8EQEr=7jd-TD3tfT4>-mT>+6aKL{A;J@SY{sVyjyUUxD zEai^$m&?0ADuW3+FA8}?00?>sgct#Whp)H}3`r2&+=zm)rXk08?Jo_d%8~qRP zE!#N>2n{LUIWamiD&k6^)oFJ=I^kejFks9gW{LDV+4h>g`MPO4+0M}W{ygRafapZ( z111%6rwu9tPq*g?Fy+SU^X;6C@Ns7dNU;y@(X|Z@u&_Pm27#MYW?MQxwsv9CgGoIQ zbc%Qd^WnZ(qK8B%kEB+H>jO6+2vQ>ko<{>~Kr~GAI7*MFCimp!FilI(<|EB3(m#AC zr!deOrhkwy5g3~)lQ_T3kux2H$9Oz~lq^Fg3v?gC&t{4c5uzJf%iwpYYLyR5@cCYg znzC}6VjaC6w7}6?uHsmlcVxbEkXfljLQL;yClf!&WhjsgGiBD9qD3uHaneqsEv;N1 zr3i)?T5Pp(1Fht!BHqi@YM`O8kdmw~ER;f=+L>!&1vYflp+IyoQ=3AsRheZ>$~@1D zlAfvHkctY8uq-P)Tsjxu07dll-qhwfa4L4lQX^B37kPMziI2f>@nn!IXYpCiJ#RNW zU#v(k7I1)@rc74MRX65v^jD zM%)BFz$R?zBMx_3r%B?Dubr_Y@=V>Tf#%GnP;SfTY=z5|y z(|25L+rwpM6|G$ebd`bDq~x}do(ENInws7u4Q4>@az1Y%`PKAQAu4Q6dmBOOb6j=s z#0TrB&z@1t3?&U4HIITV9UT)BrI>|_jyEbEcNV1rE0#WUO`8KXnwB_Y9F{-fAd0v3 z@J_JD;2GHL6hDWwG?*sllKK!jjJT^u=A)pgxF%M0U`(QbbJiA{jC)2EbPYZ;plnNs zdddKy4_Vb3Fj7XMRyh|-q|9_yDuYQv> zGe8v|;wypGZ}3=5#~bfO1xpwIRRoRuytjam8rlz1ZsV2-9I~Q0n+~Bpa=9byx1@=+ zJAZ809m&0}tHK7hC02|AJ=LOFW*o2x_|_tj$*AtRO#U|F;ugv~i}DwzzuAy!mUW?L zLCQDn-Hui6n=#Q+M(5&l_*-AQ3f!Usj>(dZ?pNsGcd7rmKWBMCW&4)YXKHCqrPgB^ zXSq@38v)%n)4ty}|39mq4Jn=(rEberp0zROu&P}{6M6(+D=^A%%L-e4qcb`SS{q+fJ@K3!7S8Y^${D(gXbe0HgjC9ru&FyzG_{n&tQ6mkCAYv&1^ zzLJ>fyz*Xkg>7)c;Of48`98ac9sfq9ITnwxuJyYzU(N*7^g=#uhVFGpmq=8)fH$yv)0ZP>-{P`dih|8a@` zy?flZ^G#Rx*Ss7(x?7!lT8D1550isB=!lt);n`y26y& zb(a@)i%d))$*CG71%xmrmAF%Vhkt<_oTZtdr|c0Tn{~Wreoe3FwQx zT#bsOCny9;^WY9k^+!dX1qDGd5*rU59)TJ&P#8#7Y9l8|89HmEsu4>|wGtkvOpcll zSFYZsr%s2@sTfpCw9@XmfNHp4OJ&e;Y?_9dr7YH`({iL|O~Uw)cc9bE0FnQ zCPaN(*=n5~e8W$$*U?xO113zw*oB4K;=4(nS4`pkW5h^YfVp#&!wBT$Y;8qP$K;;~|PUbaXWG z7Oqw&-&$FP+ z<@I}!Psl0Vv655QA+epQ$RXCtz83^P~lwUy)ZtK6Xrbpu@cYi36a%R(NI59-O+I<8-_)evYBagAsV+vZYjHf zo16Q$AY7byo;!(XXNAq1n}4de$8lZh;9ZgOG!K{g=mzY{0$xd8o+BR;4Iwgc{^6j2 zEO&Z#gye@pvx%$c87#ZLMj+lqtx9S-FyD$)9mRC6&2Umrx$0x*FBu7$0Xg4Ud*4_U zm|FZt;lga;jCR^GyhfYxC0#=X1T=h|7=OXq6b{)6{a-ik*%|X6EQUK(4o_X@e zTo$We^_#AXNzit~(3F3`7Z|b2`i1~|QprD4*hKNt*$5Jvx@i1pi+LMUVJ1=H6EJNJ z4RIl7<{h+u@7qbd$;+9eN5P1w&Trzwl^M1WA`+4DgEzS||K760{aEUmDurXz2t}sM zgD`2_$I+xi3N)E_0-4#@$t;zG9FGA3xX(VRq(lPPT|N=nY^o?;f}4 z7jdj`&ljC=h-Bs&%Z>0WZ5k2jep6_{_?*|UtVxD>hQv>J0#uVs$IcQb)J$o^noC?@ zR|xT&X#9miXPV5pA}8K3r|r^{+gNXbcmEdJM2*}sY+5l;sgd%9`^3@nt2cB1-M(Fh zgO^NJ559zsVnc24>_Ug#;~9I}Vzp+TpaoUj=$8wQShJL(E7ghCTdXyWe1wZHMRqab zZ~AE!Nrmb}!wqYeah&pwDSn=DUb(fJ5hnM#fDtNAmttRmg4nhQq3czZ;&vxrl6NeK z2QY|7GyXVPJ_R$9U+7swVN$P|k&Kc>Vtn6#f1xC|T5H|#ANG0p59|EDbMb$ZIrtYw zO8g;yi5dQdl!`iXNCL<_EmfEGsIPGmc zB#sw$G#yjov>(d8-I#w=DJj?=j8=xPjlpt#B3x1GE5B7Lf?Ih}*Dx;d*ouZYSbAkz zW_5Ed%5j{N-O!9!ju1;_SDHcQA<cdNvbZl-SqU`o#Yz`Ko{%+2UDY=M!tiGfwD!Ap++44Myjh-9wY*?(QQTx`t=11Z(6TR z_*o6RAoLsz`@H6kuQlUMG;&pujs zDPpuVGpaq{LlN*Oc?N@PnCP)KS%+89)F4ygy3&zbh>B-!tp~O=16~ zuIgUiN=rE3*~H8ip6`+ra9X+iNvt*tj1{}`h4=9EG*OJX`THbYGC&r#GPaaM99zzG zC9)?#B5W=hs>nJb5aufKY^$3KQ#{Vy#j>C5TUuF83!lCx+uNJTtNVC7C)rNEH*Rl- zp>RBq_{65~b)Y+s1@Jo$`>u4?w*%2X__$jW^jtk0Qt)^$$4AWU+2}ev+D0P1Jifc( z0)5wS4hC>_uTPGC;62@E8!Y!;Y;12CwOf} zlDU8XDENp=5$eP?P3ODc8~J!DgyXwAD0xXk<2!kv^L`<@k$b(R!t$Ux_!>nn3a8|H^wZ@W9)-I~3{t9S`SsxRK)FF%+tXaUjRrIUHN# zbr*s+vBvK=ti{`THK5n|LdEo+f#)~E_whpZbu`4K+ewuhq?Xlf@tCesky5R(K>!bK zr|`Zw+?pQ7+Ke@(PT0<$YhRZwj$zraUNXFp&L56sworbH_@l=X{`YZXUJ>xP450-P zs-1RqaXXBQlQt3OD}w}SKfR=OENx6hnR3Ru5OL(osCN8WSRNUODLb%)rH%uQAu}gH z*!tlw@~b*?L6&(5Le$k${$%M?4*wQQ(UxrrduiDHW2_&b*8E^&5(uP9Q|3!isy3Kn zxy)!4PhUZERTy<){8{0pWCcr>HJE41vKnKVN_sqM9=e)TC{v}!haKw%``azmUQD3Wn@WC;}& zyBbx;WyI0%0L92_mS|)@TQ9wx+0-A{SP*U%kf;z9lY#eUEGnM03ecNyltrR{R>70w zhpVbHP}qA=mr*=< zD_+dKGl$xZJ3;X0(glF_OJ!JA6NGJ-P~=6p zoABdQRrm+5ygli1da4n44gL=wYx4CjK?UJFa>P<}q7mfF-p9qX;oPA|K4PHs0Pq#|jON6U$k;y6N8ZwW5vmXx@; ziamtCX5$sXXpT@&B1(}LfQv_s_fy@5Q=C_gLkCW)JR(088QYC1S^?EOhnyqK83w4t zFVhT@`A-uhERQeIx0}HV94#RaJ%u(*+0QW_`56<|96o^OB#Y#u9TkcPN`IKNrW}=b zyY5XgNF|`3)?Jxe%e85$#8%3)~6abF%>RCr$8%Yk6j>@cKvXRE|*qmheI4op7I=GZkK$iM_ zrbR(7H*Qc{P!OB;+sGXT07Pjnrb(HGPl^o9Qa;=z#t9xbTj6wLz$l`#z?Ei(xo$M8 z7`|-*pU_Pu+lRXyK1-HAyAh#;cBCw*+gv!GMYN>jmzds9)J-rud+_cUpV1vCzo!O# z@+UzEPh0_mP%pR$*aCL>PCOEv=K^y859ft$v?6HaTK{o$^Lz+pQvY%A(huIUSyWB4 zU-G@Kh<;!ZcQ)98UJO8RyUN^AB<`7i0$^H2eTDX61z?-T=9G27e8J>x<}+}-0Dd~4 z37|In#iDW&fCc+&9J$J)n5YgQruw? z(3EExoa@uE+oZk=cmg6B@4_?tfY5iuNU_~*GHOx2$fIMnxluQ=*nHZoB9?PB-H7|(JJZKOHnV}Fo6xP!n zP=nYUDyEiDlqxn$z3MV(I89&?%@NqApGz932|3i2I=~jHAn4Yo;AR5cjOXHv`;(0u zpv4Dg(m_Y?6oyTa9z+nf9D{khgY-QH)~RX$KYUr*pcVX)Jup#SuA}TD%~&ps<*>jt zBElt=l2u;VIaeSv*wg`579pcnJTnqC&oKOS5F>EK-h|gsCC}LiUUWQb>QdGp2d8Wg#$;{D297_kg7BhWnkfYNq>Hm zEnm#ZOEz!NaSTBw|IprGZzuF|g58Ok{XDPtTQ4s4uA!O{Y6nRDDh<9{PA5`BmU)S~ zxqq;Rc0>$oh{bBC2w1?QKdPZ_cAtf^Bv@|aSo%0`Y03LMG^!Jh>D_u}PzpTHgO7#2 zhAL~m$J>wj)+k9ayrrc`iGvD@o$!v*(;UlJLy};^L6pNtsxdUR0%h$;MhBkaFq~3k zHvQ~Yh^u|m!a8YD46{N|Q6-TSxh%;)9kuYPY zxCW1P3?FdoJp8a(*;b3ZVi#dk=`_nETAEo}FV-o>H!vC1hg32N$?d_5V6OGK{FWC! zEh!JyZW9ez@r|XNusIN`y<4?GZrhQOTOk?NRD#Z`4JRFwa<@_VM_K0PW{x*pY`Rre zw3WxF1aF40H^uwTL1-}?qS6v9q8O*&0V~3 zR3Udw&px^Dzgx_2N2kSGc2)b0V3QCd$*)4u6K#m3F1SOLNsFOc#vZxcm6|~Xwloz# z{t-nNO9-xf{gY>en8*?XJl?@-Lg1h4XDI%Brm!)xWrQzxThW^4su!FFJF(gv1 zy2*&`}v1y%YE9pm9f# zFfw}y2M`As2NIykFjUdA4cUj}4cycBmWO{6&$oD z;?RtnOfeIgDZipUC^>A|Z0rQ|z1tmibrVH(SZR!=oUV#l^j6`;v+SE?{H=#<(@Qp@ zX%=)+v|PrcR5Qyf?Zj7(UE-uYSUO1LW1cEFqeB*~9rPlVVLBZ0ra@)bbj^vD5@GZn z^l*VgxYbl;hW5^vJsQqmVVgqMEG4A!z(4?p&^3u0be*!KthZMXaUa9Gq6qlWKLYv*q#XRe2=?z;@+ic6m8g2ah&iXa@x(0&{(h(;n!I8YKmLVa; zpq5|z3P3Uz8MV!pGn=(oQf#(gyq$$6J^(mL>+%jzH_Hu_MjqS+Ml>=P7y>Cm0z%MS zI)hSJI{PmIp=-`lkIa(`7{yFtp#KzNvG@WnhLQu`5Sowz=n;A{`Uk&hUHp>lnBKf^ zdHnRA5@&U=#5`V$jB4kKrWN2}>IE%kH{*_Lk@|!MkVg^loB1CX!sqRp$4E3oT?jmS zg_)XCfgTFW8^`A{y~>-X!&7hWm7R=(0xmNI(=P?Bi&+zO7fz^Yyqp~nZ=?{L(mlwr z;6A0px5b3Y<)u|pIFcvsn_ z(>`?=ZAWl^;%$X@h->cJN`ug#mWEW!i^Su!=cU~>&_MS^nimOGF<ogf!6bCj^K5_oqz8!*fn-FB6fj=k>LsWtC6#!h5)Mrq8gC!c8VUS-BUhd1rdL!!I z&S?B$M-bUU6yjtMt8MO1%G`;8KAqtB)Xu1Zr&_c_aONhl-xc=hO`ZjJbt3fMAo0Xx z89T9f;8XuC5b(Js{LWT3j~D-2jQGxB=V?OX$)#z8Z1Dhc?VGvJmt*crSLKaT!cE+; z#qM1+{u7~TWM%OHtNz<2z=vqgS2gJ?yRhchAe_$zU%WA2$vacI$PzUAHHaZpxN*J0n_(`6@p?Nz5+767=lek zNlijKGtuE-I2sEt5Q>Z#)*FBqdB4s|MFp!C?#_tM*Z2DbZ{+p!*ei9!M-=?W)Df{TWv z{>TBLvqjF^R_~(+_5-mC5pD=IgbwO6(Q_EyGY{@Hl6til&zpZc!cbR&wEkGPW#+7U zQ`$O-{5bGqAjDJa64Zxuoh)`C1q_+J4!=Gd7}f-Hdw|~Pvw|k^0B>8zX#q|nD1oPm zM5s|~E@7WFJ}??O7jprEKSy$RoC{d^;QG0-oXQ(NYRr5pd*UED!^C_FIk)a?938Lj zEvQz^auO0Rys!P}VN2;b({{pkg?s>`zsX0GlY^ZOo6#)Xz-K zcMXy9TbCs^w+*&W3w2Ko22TqtFKhJgXBuy1eJrij zL%64Yo$?>7c~8EVV07k9n47iue8=$_sD~xm_r)Nu94VXi_&ta5E!3km9K`+`mM$lM za&N)F!CD4znf}ma6=46#rv0771f{?7c}@Q4<9|`RN>X+U{P17P3=W3UcotF+v5NTo zhzp#V0!iiK;z`u}z$*K#4yx0tzQRwWiZS@`ekJ1El(5(ww*~MGvdTq8V6}}6TueDV zucpgikMHkr03EA!2796?CYy~8P+F|EMp_wMsMngUW_f+`X}6`nZq?}*KZtnubO#e= zFUq7z_mDy??b1v0?-W3G0K)E>& z(-yzD&CBy9F?x5giNiL!K|EZrG%M|5U4_sb0o z8_lba4?_%iHZSd@2orlg-R zo(S^4L#1-=<`gnOxd4geIVpT1XFKp@Iw{Y|J?!AyYrUGG@9yVbeutpN$x&R``?LK zy1#*Y|D|dFmy?BZM_zIHnz1axpb5l<>IXM~SJ&@~0|qt1ZAQSyNLw0+=LeU*t;dwG zQtdFr+dty8Ss0YbXmr7~v3M{~Cw1H^9D;{hs;^sUCxvT?zF@X_3(H^*KTu0xC9XSI zo%S;`RU=~fS$?xH*=08UI@5NN>2=-qp45WZ0gx*Y17;6Q2mB{8(HwGP{&E9wf4c?n z@uCZ`GZGp6@ev3ByDKvE5+9QSt4oxWKHA1;i%7I_fULr+NCg6v4JV-hmbFWSh( zQ_gsYGWea8p&t|}B-(+>r6Y6I|KvE7M}^#TbQENi8iuj#Zcv4oBU`R*AaX8lY;_g{pW1jxi>BRKm`yzKxRKY#s>&s7aB6a)u-Jh% z)wFd8DSR^FYqocAb)azgfwncZwQv-Uf-rlgZ(`Snr3zeH+o%Z3Sa_nl|GBLFv87;QZ0x{mH+M3c_6k0HO+z!vPYVK7#cc)))&?kD-F`Nlz zA**X0)t5jHBb8=Bmi%?j3Q`JpMDDS~ViTd^(N*0(Wx{{5=QSn1-sL&W`tp-*3n5#F3^?GK^o_|k{ zi6?#QLY*0vU`d()ksSHaXU~bkAhm zPugg0)xuQ6PsS}%%3l(qlgG$NBhaznmetyVsr)u~bJFXkDv^zm$@)ty=d#WFuQ6<8 zBkO4u&E2lV^Ht%}-XX#MwMSv)#iS8uT0{&b;PgbPvfbvJSsP3;PIFvl{7>o^Hqqtn zs)>=3=x0ztLJAB7<^8Dy8be^T z%dXxXS*!)&vTIep69?qT=Az2z3syPsmCMoy>&CJOTMD#=TPC#mWsS4>G|O2Dr;3SQ zfVu7+*G{!^o4|bU7wyl?I2k-%mEIW%Y&s%XqgnbP6-s+s8uURN3f(5wAA)TPPfQ4u zo*DwZj|AHNQw%2RfB>i`a0exk{3j^NFVJ^$wp%&(?KlFAWn#nR05*>_=N_} z$x-SXoEfL%@46ir3GkUCNVWP@YlZwXB--9bH4gN)AL?LW1wv_s!8eE%>qu;|v5H+B z@*XBYr+ozhM=PZqpt#DkotoF>QC6c@l0xyV;(C*>(lv%A2H&QQLkFhwj%{i4#3r{v zQ>_6vlqhS?X-nVn+*zLm9QFP+dmKW;hpAXq3r97@99LvZ>WEX^%!u+Yla>rEcU#!i$?Z6zfo z_lIK%<%?O(LcA^DoLrMz^0kw?JZ>IelVj#j9Sy9+6|iasZjV1qoxPgnwA8QGdfKfo z>Z7A?pEtA0l?Lmw@m5o1P^v8D zrHKW#h?p#G-$HS7N-0)2nRP9!mtW_)E33R@JF`0$uGn&+sd+v1shVMilPK%ouSV)F z)17!mfZ!T?ZYm-lY|}L|j@rIAd$iv5n&2o*Eu{~{V^lQR{(8vDFmvT)lChyALDPds z$_uLx!`oA2^C%qguP~Fo?$5urZHNJQ>Tj?a+cL1M@ioZwkRVr-X?w42^r}pB%4b<8 zE3({3fXL1=rUylY9!2MBCs^jJ(Hz7DB3rBmGnH{{k9 ztp$)m5DPd^czghkahz_BF{;3-+cuhhPkk`;8+7B4-B*^q=AHH%V(H0waO*hk8Go&5 zJMNi&_0oRW+5PCMetl>6>t*?tnclfc|3>{N?^EVWD4m|l_nA$WA~b6 z(Te$buEy~VZg!P;cc-Ju1wo_ihVU>WSd+!S$Nu4BMm-vPk5QZYh5UMHp(S58|`#-yLc9s3paa2Xys_mbZk^=*xP_K7?1#Pi5l@rX2k>3OGep67YOC zHL&ErGtsuMml{}uE@oh_`w1L1Gc|w5Vd%YGWMm*aB6vQk&KZG&lmF(W70NAR%eV8j z{*bCi6`L>46Jd3+SgH?5qC|eh7prgI2YmGc81a(MpT<~fix?TOBBOt2b5L3_(cuet zM8M{jg;ufXhx+!|E!XpqiHQQ5QaaNI*;KfYs+J)ZeZY>Oolf#X({F$KMoq9o_!}g} z1Ofy#kENAcYL>b`MBgMiS1YJ|7cxVCF?p4-Z&xxyQC%xP2zTuDx9>6hZO-pWzI^zZ z0&qHeI3KjgJHq8Xu+@kZdoEp3D&0PT&Ip3(*!|E=A-;XwR|cmK#E0KxQ6q9^XE_W& zx+8jfFw*-c?vQr-6E7gy16nU^ozXYDIGz2ZxAEZHh&hK6-6$iPT(mF5UxRPaGj<}% zrQaOh;}Hj{+Q$9ahQJ~^-Ik(oO14K*@!jiw}ptK=$|7;qjzA}df*qYs$c>wlc@8$i7a7Fr%kaZ1#!`Jt+m)KzBQs3@t+tVbi2 znkN5FdJkkd*SVu-0Ik$xPD0g3`ObLh3I48HjsdzRb*tLP9TA1SxHRAieSES93AMW1 zBZS4e+~bDDTDql9mo*BbqU;XK)*N9^T0h?zSN!HdQkPoZ<>U%p3Q0YtQvL4B*z~?| z@;>r?Tv}FlK*f?Rm?T7T05e8t+w}BWZ#l-;l<2T+E@SpAIEc|&^n%QIllo+joyvG9 zsV(Z^{^oABrBzp&{^(NSv88%WaT40JrL)rFaFbdCPA>`cMVvUD#6*_li7vFa$FUoQ?IhwVQg)RHzDzzs zjK?a{S(Xg7j;FQQ^XZam_Yk?++iFt-^*G_7{8V+ltY^Yc8I<^FOER|nP5;#|IYu10 za*{R}%ox>k$a*IQ6^7g@w5QGc)T(O>?-|UCyt_m5lky~Hj)U{MjWbbST!p8 zb)gOMtaY>+t$pL~9WnZh@an4u(SxlKomk_&c$XUb=qnbwv+(w;FaorA_hqI2{pZ%g zsO~bK_#qs^E0I&P@A$wQpqQ9{$s=AtOsvufS&hMG;y-0#kzNT1`MAw4@SbaRot(|H zmm7}aoEGm+St|WD2i`1<=`M2c??DLpSj;YRZfkYjoKLft{lYoBrE&DSLLTMZ)%l_? zO+Fulzc_#OFqmD?9ai4hSHfwYyt=x~r?{U?x2S9B@|SsUnE26`kfb(z3r>Ie#C$T< zb*bJW*6EQxRaB#B$5e@~p>U6(_AbvGvlyM1sxBG0etK@XbeqPWDSFQdY4&KZr`%9{ zvT>X>#Wb4M*f+b+l2jiJelH8PrTli3JCgGff9EN@;3@i^7Seo(+dd?~k?%?1!m&dU znwW+pGjY2Tx#Wt>Li5OMkDF(6FngA zal4mG@`vYKD6Sbvl{THX&F!meLGOxxQnxMhi)ZcfN~B9S&+0DLAnOji>r2cotsZt) zH}IRcSlvv@;14~}P;VplYc2~9L!J$KJUb^n!xe~gtC3RX@|@gPki!@27}@iknC~dN)@tAH{@HcRWKDKq!*KcK zF=o__2kP&h{fz1U?LYff%P6q*o!p)|PCZU)`}|;Kyw&OqYanqm2RmG)uFT|3^|0XX zzH!MW`vxv=NfGj-?SI-7u~VIE~X5)legF%lUYh&%Gp`Zv^1&{H93z<*?oOAnkX zN&o4C{9n)iI-B6%_pTHF=U)C7X=@YLC)>}DEOMhSgSBFF@8JOvI%}Ltx#l`yp5Q@!Vt@Xv*?$^4g#`K9Y11kA%PPCnMS&HM(K(- zqh>^F1glz`#mLo>9|LO<92nyhY3MPEYSbU$$)?BKRvbl{{^;88qLh@k&P6*Imj3iO zC>VFv^A7G2a6zV}-&Xbni^B}{jhG?WR}?}i?Sxcv=~D5>k(;krt5%q_g+Gl?LD&n? z{C=p9kjBd-%4a8NIn_VLOim!KXzXe_*@9}FY4w3hgc@oPlYImIwPc|;ISlH5mP_al zt@r=^82T(e#bord}dNF-hnPJ`K9Yqh}TF~tFpQh-PB zK?v>uw=&sMgr;dYbAUW-f4#vac0WPrzGA?O_bO36#+IjcG40V4>=kyTWqrDucCV$q z-+Zgt0U$e&MDt=x5JcvGCC-_qft-vHeq-^ zwviZsjq5=vK(DR#1^2q~giaI7b!1~nGen(q?>;{$8LgnVkC)R@bd_I>X?(Xgmf#B}$!3pl}5Zv8@ zy9a{1yGzjE@`v5|ZJ2z!Gjs9Pd(-d5d8)hm^pQGMPi0EeoG@S?)9Xn4k3rdy``oon^e(OLmr$kfFUfjA!`By}efVB)*lX$cbAC;3$_7c0 zEOoEHo&=Q6WX&fS;{)`A-Ub0xKy*bh82wyCQLyTe@KZ>1yWXO9)p5nmct)^fVN#)9 zdXTjyWmSvOr3b7S>+f=0nMRCt67c9&tmc!dSB+2hF7O-B*=al#3x zc^+k3v&8J?w>x&uL8|CU>E-r);4vL$F;m%bF{@bby(1JeU#Y-g-9XZlA=hC(XBI~h zd~CB&6;%YvlHozKn(B?&R`Xc!fp0+FGNPavTbxPvR5{@pepR^-DJogepc_)pWdqz%KR zHO8BGZNK5&Q>=;&+=_KLPo(QcaC0{P@j{YgOxVtDa9G9OeA7$O=p1mz;x)3qLRT+* zVYPH8cF6Vcu+8@aOsduEFqbW0uOBgZ`iD%j7oU7T=>I<-G2=Kd#yckPjl*$ z;T6;CvVbxmS%)|fU4rpQV26e{+jZ4`z0Fo(K}u%)jL$a0kcHEhDPf)IfPK!0D=max z#H6H(OF|J5Op0B26C^6KuX@iePQ6c{-!Oe#M&`=NffAkd{Z0;r15uR0wm2d7zK*p6 zbK#v?AsDz#cYiE^>^Q`jaA4L&1|s?lEfV8Vg91&qfFvW-swq1$L=`%okO;+u`oV&u zrADKAfHKvPTQuh}82jeX!5F~5= zUQ})$X<9_pe?=k9zWY~4^6Q?={qZszDF5XF59Qx3jsBRx|J{w!KDzK>Ph&iLbXV6% z1puRhA(-hW>EY_gT5BfvC66SgkUHSc{7KrF648}FNN+<%FNU!^czDLNNknTpd{EkR^ zjMca^YBXFq8*EbGabFrPqRrf}Kuu>MeuO?0s*W56T%^$c-VF%)utpm(e&Y1FGt15s zKPXwlv&R!~l2sIdcG4$q>X9~HFy0P0!w0dW2NkMxglA8JfQ*oJivQ2xn&6!P&zde;zNYab8r}gw5L@_uTM>liO4Nrs&S?qU|lg; zk{CFG`J5HvPU!goUPKFVAzxWS^tf(%x9Wzko`H6ItCTVoU&n#o0d;DXF`*wHZq`e7 zkEi4IDI7#zF=4ucLNu}z{@ft2|7M02*5g*|OeU6OZHFY3=TrE#_2Vp{Ch%^)91${a zV3fSpIKR!5XtST(lbn#b_~r5RrIWYl9swq_A19!zSZSHGXbWo(LFpxNL>qG$&9z~57ktldi+=%%V;?==YeU(`eUXm`V=l} z7+~g$4iL~#P&xLYQMMU7Q@;jrqKEg?0@(^OKbd4oPD1!AIvU}EXEl-H4jj$qJeH>2 zvOF)3sHfl>w;L%KQ;pEfBwn7%P0b?j%l0gWS(3b`-nLLz*mbY#p=m&s+RM7heAKA5 zLEi(9u@MwE_R@+naJI^BR-ddbS03)tO5j?+2qwO}&vDf_Gz$XG(JV#byujwPU$-1m z=Zpe2|6Dz3EFu+2^|dG)KW1<8^0V-I5V{5f*wB}C1M?~rXW#Dg5K3?;*)s*n&8|9o zAE!mK1odhEZeXG^_Qx17>;e-=c|L)aSM+mvv| zd^Iah3&_CQbiM`}^eH|1W|ra!8%>m<9BK6^ZSw(m(=5RLY1@bw7moZMC(JE z;-nR6%7!(gBK-WZTPmzL{i+O18+6&4=>~JIcc+ife4LKd3E=&TC5jC4J5||gwJJoC46Sq>^$;uog#(UB*<(jcI+Ho|@PT zHNE2t+FWL(WYNHy*wvE}HvM9;L1l03ra$e<0&E!4DNdFqy@L9+6f+q{oMtd(OxCQL z*QV?DX5QWwSxZi17`*$bq_5whDu z4vhNoIhu@=jWPq#ZprgF=MPd$sf~IYN2l7z9$n*(JF9Y?gzFEp-pOQgtIZmarnb<# zsGu>OTQB@r#JA(ESKc-?_a$>%>KD>4VyJ`Z+fd7xk5GrOu-S>=B~KxJ)Zbs+X%W{e zSww24K|t9M3if~D$4LCa(-$$fBf!; zqJ(4bz8Y_;At?_|&3v#!09Ta^%GlC&DpdaFV5T7U!ac@i0F&O2^t`R~$xo_bgszQe z($wx75mAeQt1^ld%Hu2Uu7Y8-3DJzJ!E}Dkx zczkD%>uN)K=S zT6h8^o)@M7gX_?)y$2pQ9Kvi0Pd>y}^h@gNv@ffwu^xn-W%OkUCC)d?tegR#iq>%{amH88XIL5kMO;2+kHHGW(W+H%$*H%oU);tLFB4L$BA*iGxdp0`N)*GP$2q>= zWb>%V;9E=wfMg3cNCP%lly^8bv~PpY^Ypnj{Kx7*7JglvJLC`RPQJ#55q(OV~g5hm(gX!C?3-*N@ ze5kzE{vNIG%&UAsl^wRcvWwA~++7qcHakx+?hj|rrVm-*vCm$XGPqxdECZ-XQSf*Z z6pvZH?FO4p38(K^@Qja}yqbcfvN#0G5s7n2Wq)|2xe|-*LcJ2J)DL%tL+YlAu}UfE zPoG+WX738L3`4r?tI>o8!Zd{Y37pu$kNbfKXxcr0``RW=cR*t%y)w6_kS9e-1&sQ` zAxLo<;57J*?d7&>nV7CK^sqTde+g)(YozyBtk9l5H-u)I;SfpJ%gOU4JRw)Gg)2Jy zB{=E?TgdIRge$btC0l=2ta$FcO2Fa#$b)Ks5RcJ&C0igXCTf0yamd_{V>8`z@4MRi zpzmQs=B#b3a}g}g?R(mNpT7`RFT)q7_RB5qmzQ9_yd!nCDoamzm->zYKuj1M7?93YF9?V`aNHj>5VfYH%VqhnA@3xWKUILPGC1; z!!`(LlzbcJwNTi!Zc^u}&9D?DMK15SHWbr!j@Nps71^QWpsEBC*~i zoQG`G>Wjz!Ko>xrrbUx0tqKgH87(>@o2sOCPojm#x5QZ8maa_T zov^HAD3|XDrKkb#)vwP8Vxchz+(80ew7z8;gpQ+{^Q?Y({@0G>J4&asDl`B9&I`rq z|Mp*T{OyiK(Avt#)Y#EZ*TK}K=qJu5GPay><&o)90SK1*OX5S-<}ThA)Tglu&gKCZYL ztqj$8J>Q-ob-?~usI26P1TEh`XbQ)gt1N0Y)t&4@735xXp+H}FGJi^N6T}VF@`@__ z^x#b9gn{YCkT5S8U}k(Dl{KSC3(>mwU4`p=j(+qdb5!S`#au#b}9UjuBc+h_i`>-ll$Co?i?e002>(qYP zOm6(@a7{^(A-Vx$e`~9k^K)Ee7W&{o`_;v=@J)Cb;KfIJ_m?|kiofk=iq?*H`i6h_ zSCsGVk(E%Nen@5Rj<=A|oqvPcqEGG!i@X8Gqw)bI@n!}Gq+p3Pniv?moSOt9;o;Yu z>Al86p?3VF->9UHI0&GiHaPR6>Av~?63%8;d#dblfa3ef$`7dk1Bxio)wbPqw~=KcAOns=kd59~dP3SJ!*7jh){ zW^&v;td^DwF59>iO@9TR!-WXG5@T9xWP8*8r3}^@D_37ls%9Bsim~${N9A!lYh-Ye zg-`JPpv{rWI|ilM^NQq0jA_T|%PM^%n723q`U8!$7B=_P*;>g}X&MV;81tTtX|+%w zu3|`{BiV~#X@|9xGRgt;?G{ZKa2cv}q2=ppPSNtDW;$0*u=Qo}I$iTE@-%4SKIgo` z!taGhB}8?!hVMYhW4;H(+6PLIB3trcCE84THEaUZNecf=K%lr} zCpweckS_zd(iTi^cpUSLLY?C(fVpuQ8d0rVkiv|4wukI;PwDra$0kISn0=)V5=qqI zBQxRLEt&Eay##DV^9G}gk=T@(Gq!Xc7?}`B01i)YLJrShQpeIhOuf=rE}W96u`^0+ z6qDq12%O~xrG7C%xzFck;RF#RNF8itisGK6E}5xEhtL?ATyF>!%Jc`1S+R`w*L4+4#h#Gmrr zO{ViAQlxnviX;3o7O3tA8l1i}EnqXZlyAbcu(xItY*J_(+p?C~XEcX?7B3qa-lR*^ zmbyR)l8qYLVKLbn3XdRk+X@NxKS(~=sMuB$S;1t%(XMb5sObMuW^msuUBCLHHN6=#R zO)1ZLc8&@~8O`k>DXI&&wbCF^DHVEJ;`|I{${f$=?|HcBDo&5wF?|_?P=;}0>gr>Vi6DyWv!nQO)|m)Ev&-0pz$R+%)q!GGqmb=N+F!{vJ{1M3wf2+jo2}tF6JT4Y_dX%FD;fmND`%cjhg$p^|c0U@Aeclj$Y5RgxJ_Y zM~@N_3WmC^4t&ptnHf#Q%_Elt#R08+;uKR{G3Hnfp74EO81ug^16L@mzml?VV9w3U`5_UYM%?j6L{UK z(^yUGCGOhy+m%t z0MPS)7DHG+-rRjZHnhyJ)c&P6TeG0@hN!DER;BBiM74=vX6XD0h5!aRf)A<~zo{3? zmtZD40ZX{Fws>}HpZV5RTESYf^q48ZO8g09eU9N)1ZP0+T-L;hT!TXZR{#5S=!|sZ zU9%CgWCT8@de+vNJkx+`Ns7PwG5MlQR3+PhMmJrBUgjs8B`7S|eqF9GL2S59@Dp+T z7QaZFluZoxkkOK0EW>U9(4;m%qnw@#x%^(R@sL1gSiG!b!LOc4;%;HM5tVl720jrJ zvy+!s&`z7GOT$l*99Na*<|7O$)eMVW+H=}!ZZ(%pTzdj*h(PxoJ69|-MqPuH?7@*J1C18 z6ptN4x~V8mj>!yLiwj3S815EV1Jsr1wfJ7$Tp+zptMGW`JI^nt79anT!Hx8BZK(r_D3{;wD2@SV{dgsnbl*F$>)gU)&(Znm|os19(v)qti zGj0 z&DcUSZIvR9Q!kmCo5r5i;u)qb_v&4R`)Kb%O)}QMZg$4;C>~WkLCGl%{6tkYAB45? zU`&eJWonQ`8h`sC2<}EW&JM_MvBcJ<=_=KyA`|L{NRxy1yA*^92cu!|y~1mal>+)8gRNv|&o}@WVc7!A`~GcNZ%LR_$q<)t0NKBvGtU$K;X< zc?#6s^+#HF(J(l~8hWlCpH$O#G8V`9ODit5wm^Beg_|K6We#kljEzl3tzuV9gXy4( z8pF4{SKpBGJ0bi#`?4n6P4HTtLa(TnI_jx9VXWPY-0s!R=~wM(frAENKXB$EZ1+8U zx~Mv^3eV^o_MKV>MviD(f~t>=Bj6`^Ak9mqtF18O-DJu>X{$(~RAv73q2aUO^2pVN z{JT%eZUTwfI`f`Vr121ZT2~{`Cpsio!IMj$4EB5(eQDR$BpY1a^u%UCpy6>hcd{|DWr1}e(y-X}+ zC`r*+p@6Ym*jT%g!+nw}sd-XCh+7-ry>ug`R=GL%7i+9dbep1_7}OqNWG+5O40y;F z##6z&XnEYE6ousQ03KRo(u$9UfU2$-q&)@9P6QtK7-^O$S0~-& zY0%_`DABO6rX?&f5;4L8L_AS&bZ~Jv`upmo<@?4GcIX{Pd#N%j0qpP^Yb>dkCSn|RAD()4*?LXtj`3E_qO#?BC@XuA<}@+2@Q}=?r=al z#Ip7W$ZAg82!4~cJ7xf?3y=(r=O-&?HNY-_WI!*=+j<|zty^L6Ar7#^7Wqn3RQG$i zH@+yi2KuDV8>u|9?lB2Z`>`*p4@|Q7D)$ahzRzN63PFB$pq!|EOd>#d0t-gP zqXhH7?H)G{7Y9$*&5fahBied=JSP3UTw53$QH`Y78rFb5fWlmrfn}j2V5&*|;5u|C z8mH!@Ru1L)xnurjdl0J_{;t#D(`Cm{wbL>=Lcz|qydz!PnYf3lI+*8tbdP*Y{LOhZ z`UK|~;Z0zhUb&Ar>(78U=xkIYF(#Cv>iDN>IYXUYY@9W&2rp5hsEKMF@Q9zj^#jCR z3;B$E)uL-4VGyX`xG0tF;t=TD@SG`T(&Hjml?R z(stL7j;2mO{=KkO7 z;!|%BSIBPr**o7f7c*08!(*r<(GF&TQ;+^(X!7f6Yn+EX$`|O=W-By^iMSvnGNI;) zbs7rj$+~${1#b(D6nJgY7}7QpW=CxV#fCsu$`V#Ykji4q-qzGZ`7{VXFc>yxngpqN zl+2H{)T0MvNIfRsWc!Cg_rkCg=-`v@8y?=r%7>rzi-5ilCkwA+2EPr`UUL2*C)#RE zE1gl*`pph|J~(`ut{vSk3&^lkFOW{-fAHHkw7I2 zD3BNNOCejl;nSxs1}w7`PQf9)DmWVUqPb7Y(+p#o(agw3$a5de zR|2{R!XNMiQEhVpYi+8bt1m;I8vWZ5yadqX$5+Hto3FsLcN-kCpkQP=8w#~rWu7TE znhVT@0sMv<{7wBhwV@AC8hO}uRABR!Z<)f&Idvj(dTyWdu2izo_E$v4?2(|UZSbmD zTFzO*En1RUtn+BLbc^RqXL7Ke6HHqiS|CXUd8ZoML5BMpIzx+r@Jp=FNrVJ zt#W*85$(XtEdP+7h*=wHTWx6i1kf2un?pSiyPe*c#umDm*3&?yD0#$Db;1cb6z8O2 zk}|;!y0YVarV5jRFOp`y3K($r9iZ&e9)T#qNy&QSo>HD=5Z~H7=1CRqtWaRCeT)9? z-M~-WWlA8qaz0Y1_apELZqnxW0Cu_e`&ub98Ldnn`LiW@cz6%&GhO!cQC-xzlNiy- z4Eh44-SFX&d@FOOY+JX<#CC{QgsJp%VmEt*P0jA$bVXuTfkK)MwM9_QJ?~Fvsx?4L ziYpduMc_tGnsC!YO$_Mv9H~QNTg=eWuo`7kbhQM(2TC|tYOX1i6S6c8u<;2H@_Xa@ zurp;SB?++9VQdU#ogQ5_P7=>M_tAEN1@+np%-51Sz(q4P#a7v;^b~MQyf>(+W^>Mc z|LJRZ+~v}$+xQVPziAf?T1AAG+L(>9Qmc$af}wQ`JR_C499*#MN^l^lmf_*V+9WRN zxMh#(-AP`?q6YVrx&veEXgP?#Ae1qV#LpF8mn(W_9O*)VZuh(l+j7DkwaO!OG{AZ@ z@M=?VJJfJ4cOo30nX2`zYcUXMfxywEb!ozhnvRPMoE0hFy$If)>@4lsC}L%o<48PG zn}mxtdJ{Bop*y&DCVuo|De#-X8b)#Odc(YJ>c}ok-mu1t|3&`VUwpB?LV;jic#4hjz|6 zIWak#r*d3zx>t>Dn=tKv+CkYyu@&noOwzKgbhap-|4*#BT!mh$pbcl{J0dqUy<> zzWr5x`Qzpg!Vy$|h41*G_5C7ChBI&|+m&~4cz-3>XaBOs`GT@bG+k`Yj8OFk;6QZG zu3R)`Qx8puipIwiS+m;$C*?(GG#5Zgal3J}=-J{2f)Ud04QtVIjaeR2CN}4SqLH?V z&wUwfh>o#%Kp}IG0ezYiIlxjXXcJBk_LQM&{>$s$sa@gyNeICJLSY!|&)R16#<~10 zx!w*uj-~MB&Uo6IT@*U+HekR&MLr5>EzO+zc50IDtX1Xg54YZ5h4_qnGs(gFgj>v} zVvcq{J6!#Xb;gq`7A*S3N$pPZS5E3bRYQ{!7ZjFJ6sB=-cBoahv|eO^e_GMDrGxxR zj?8J=1oKmiPB>p5HDoJTq1wHKYMfqOoQZ6p{Q2<**)6eYfX6;C5lK(;i~sM3^VHrl zr88KCF~e{kMz=|xB>N!C&n8V|3M>!t_WXSDQAW*#reaZlPxlYgo8NYEUsixDtC+?> ziQU(yPa7L%4rjU!XN)xcAKSw!Xgar=?usdNR%cEZ`hvGarX@b=A5ONW=7wXp@5$a9 zoZrJayB0bVcWM@3Jb|}b)D=aql}IVqI;_cH5(F;MxY^5AycF#y$8=6j>)h^-#2XFX z3#C(BR(4r<-vQr24Otn%+=;F#SrdI*85nL*e$ZDaEV&b<%>K0&IIei6Y#`U8Mo!7h zsd6g66lbp32xMVSdzr;g;Xs30$w-ic4|!%HuGrK7);x!mqF=a10_%Ykp@8fXH54ql z+)h{~0qZut8smD3CUA6aIy2EtEqP?Tp$u!NP&}IET>(^UR+$z#U}wPu%-}($e{mKc zmk+y09R^RHKYtB@QXZ3A@`~3eh<^HB^{&tS4)yuH*PhN8u0NGsT5Vowii36&g0k>t zgf}AReBsx^$n(YObt5>Nlp&t)C0UlFs@uDBz&ok{N`}I2A%6Sm*=(5!+|FvpUu2?J z_EkkpuWBb21$ZQU@UFFPp!F2;kj~aL^vCZEUydN7&TCujalQ6Q?w<)nH+U?OiZjlTdm3soQp3@O_;F=MD z8(A7yP_*p;)=P8omXW*dL^q-twiGIP#zCZVpmI&q_K9o8gtlK+aPS_YC~;3N`RJYB*+GHwHX0OV>IV9LUs+z4%gX}VZAdPXjUAWAKiD< z+9gcJc29?`?wZS%Fv+e88o%(&ydxm~`V9lmA<33@>qy>o6+3MqhCc){Rs(eNRwe5*^ zMTclG5?g7#QbofhPC5;8q0e*Ca3MpBxjG(4wBNDS$Wej5aL54*oDxv!e3BT0W!2qS zX=0V?SUi~~2vh8=#MVNrQkMWBMjWUOa{1B&ZPjH%0IpuS2g^&-Q?V9U_<@Z$Oo$F_ zv!@&;l8lTmnS{=y$Zgl2H+U3o9S7{v zD0*9@m}NI|_)4sd)yfY2uULp<+-OJ8hXWuOr!?oSp}MgR zC-4-66Nd?;;fHg2Kp8%qjhl6Xocb0Bo%c=$eh9&=hfs76>)H|p#@NQf;q?)Z=yQA7 zy#wB#=%k}Imo+w6iI(AswS@dKPn~+zEAyZbMvn!`C-iQQZrUDx3T>85Ez>EXEMG3i zXO}#mau3z1sqL<6wfR2nf%WZ8|7!##XY;QIcwzbnc;W7nlY9q=4Ddp|^CG_os=pSV z{I|dZJo3L@y(vTa+U!?K!rQ8iuS4%Id387ar`embly4RPo-Xo2Rs4s%Dn@>Zq5OBP z$6vSldyAJRdDDXBj~4%_{rJBdzE*$yx4f#-{&T}$wIF{1{BESzYLLGGqW(L8#eZr; z{%@f7|AzzcdM5*a4fIE?$XB#~zl2wVysc{X%24x5z+Mj9UQPIiLH_T#{_nQ_h4%lc z9r^D!^y?kJt=aQRaQ;hNUdVF(4*n$*<-Zh4`(4M|A{2jqgu9n1{~zgiQS_hkm%qcm zWp97wrTZn}i2n@!&vh++$A3$<{bv)^p#3BKHw4@Nm$37@j<>9Pue9C2#NdU8?;n`x zjgEgGo&K)jEhE>TtZw^n%_7~ZCm zy{6**l5W1gM1J{}{`)`q}|KiWkV}kz_`j5n^-=W_| z)GAew=?ti&iiGS zl~tDKSY(8Ic)CZpr=kof7!1(gK3odnO#kuYzrLXVoaMw+h3KW^#Tga<3kC(m`3Dxi zQ)ZX?=W^qp1MPppp<#Klxp8RW#};<^!nn9#(ZD15`?c$$QQ5N!K)73RkPOS6RrCq>)ve)-zh&nwb9GVK@4c+4YyiuGv;U^*InCq~{87c0s)e zCCcn^^-$FAFRBC6ryYmaF#p~UARsqupMU5s=%0R=n*Dc2{}llLp8#tkcOw={S3BFk zfMWbJ)X3h|)yT!hQ4ITzhvjXIC@l zzaZiL?<7+*JBPnuqWm-S-{5io1@B(O6n2hRUS`8Q4dZFc_A>i?^>j<#+VR(~~k|03W2 zVpzL4dRW=~)i@IWFKzvu`EPFZU&P?(?BMuE8?DU#YGD3F4F7}mZ}jW0sQ>0(|3#Jm z|KiZ(Fp0knLx=uCXm6z*2u*rMcqaNRRe7cQy60SSv}dBUVD*mmPorg|G5ux6|9^@ zvc@jlG14RnE+>OX{k-VTiT+au5SH}})z z`^QY4Kk!Lk9mrG?i|S>VDcv(2b)kJnxfj*Jcrn z5Y!Xo)$B%T)_HdcIx{3Ll$mOzj?;B>>YXG_8x$;9t+w@8_RCE5F)gQ+<926Dyt}f2 z1e4VuJD#(jdfzk}Icpkn?m^&;61Vdu;5(tS(yq+7&5~hj`^G$t2b)Y*gS&Y$=SY4| zn3!n;m*LK*C%1(8f^-fRN|mog90LPaPD;A zB7Z7bm~+Q7uZOAuH=?E}RlIT{Xr7hZiOR#XBs2$N55lWa_#4wJSAGv4e35+iL|Xui z`Jf>5g<+a%(cYMz6dq15V@fJMC9KgElT2(E5SB!abkQ_RfC;rZYi>q-^+B$-!cKxK{J};lh{yU`CN?gWj#0o2gte?%2tbs9vj^ zOy0T^%@QV5;*KIxrCr>sGWeG4JxrB+G^;8%bC+f5Y0(~ujL+#PBcYDpTh7c+FOvjv zd2a13U@)*b+$Q{N$bMawdPK8L_}X<{Nlup{ImaXuBj86_jSGcWB_&aBnM?tDakW&U z%xs;Gw3^mfvNuk1FU<_Ci}0wL^@z?1N=!aRL`m#+$keR;86HO)jdOK7L}rHpxRMrv zTZor&n5S}n^7UB1 z>GSO|hVe$!!coB>t&2&Gov%!To7TlF?Z$w(1KMEUW*^60pBY{Xk9<1xn7g|_xdDFE ztQ(A>%lye3jWYYnBf6^eb$(UZ$xFB3j$Ubm5&aSKD1wl|@Wh8_taG=UxILgW4R2BC zxXv1_kHOw*m?F;jlVqFoejDHrR0I4CQlqlnQkl+pL>HX+Obb!tGR~M1`D1J2eT!{n z0bx_VM>sfLraP!5f|EsNRZw2o!E9(31tG2sV|G~}{&^QxbOf-8^5b9x!?Buo9z|-Z z$OJm)0G4ZQYZk@IDt*MtKLzLaWTG4_O4sxrOqgd5?6V#TWPUVqE=4eFlUvdXx1ZF5 z^9cA=8=!VB++Fvm(uQl|(+hkhGNGSIXAC}0)wWyUi-?2$Y{(0u1rjsTdG6jnSJOA9 z2{zm@g9`ccn(T_5W?ghsk-l!l+KW?l;?s=Y%lga<7`kKzWP5^vm{)!+43oJdpx!j< zC1V6%TVUUgfUu6sk^(tDKpc&mVGoF|wDyGC_ECrym?8)WS4)K^o#)3hnE1DSPKdH) zk0@DZQZ4RaqWX}kq=msEz@HUC^Y-W3s@eAZ1ZLIJ6!)Pin z5YP$;5D?ivKRf^1#tJz)+M2nNG5@En4OO<2!4*RCqln~p(Ko>{u&#Nmc|jueJkuy? z0*fA30+*SMPjg|SJl1d10sW*C(zyv1>?0(fwg)KzUkKgG$;dj+urR+qec40qqfm#A zKE5yr`*7^6szdpj)qFGdJ%2=5ex!#KEzblKgkB2uUu-{=n+yL2jb z(AJaMCz@uboyLnn-afI+1;i&vn3E0goUeN;Vm@G^_ z2tMFK$lo9&cgfO1-)FnLfWxp5V{?{kvxA~_!ZpG)=*dQ0M>f;;#ImhiD_MOGcj{!R zBsB&VW`{60fy<<$%p`5>mNA?3PVIjroK|gyS#^1Zk2BJ}?>X7MtEy&e#jOc#Ck$%l z{j{8u!Dx&@kH)zHZvOA6;y<6ALA{#(ihtxv{r@6Ymj9Hiui}I>C^H)Win_$e-14hm zK7(!(173v;A(5C8_9m4Ze$K3TX$A{wjbAFQ47gxlJc`47ttcGXG1*gY(%{D{fe*;) z2#*nK>Ryp2#$(GV*92PBE@YMA1KELC0!$6n67(>iag*vjanNFb9_ zaT5z=h;Z{V85*t?9cYZnfCO?@DLFP}yO)==dL{qvKHTSXLG4GE5=e^+lZ_;=W&HQCr+4$2(-ev(irL;Bt zIs-}to0q1_GRoR41}gA8pW2n`$k+ZC=}@cRKD}CXPp8n0e$hP}aJW_~3MbT<*)T=1 zAx1dbo2x}5Xp0=+68FQ)^e_hl;7h+u2Xsq!S(;Nt73!q?2So7BF4)gjB97Fk^@{R0 z7CC-rrXHSnW>sY9&PJ4?zneV_tRwK-YhAAzr#tEGwe61^H?7ScFvEBz@s}pb7IRub z^Vc$Q>JlW!k}K~|+*#@h^NAF&Xl_m4;3P3Ku$W7_GT%BV^v}QWQ836-+mHj0dJtX}UD4Y*CN_+#{^u09*=WDKgby>FhUBlhj?FBM!=eVU@r!$dMg-NG6yV zF`RW0VovzA9rweCA14?Q?#9lMX51U;q%bbQJ`IvLR6Pl1VjW@-M@^Fg1!j78_xJTJ zQDiil_?&@G0C+3FMYN_Wtq`9NOv`3tf;iLT(7X3mZeO2uhWP;zcr*k0|a1z zfN^*=zdK$m^_+7EZh?U-ZkGeO3oQ*=`dUMCJ6-mH`NO+9K$vZf6=@cwJ^(&kH8&sw z?g17KL_Xg@CLMSXO|n+;1}(Y`myn3Z>~{(L*wX$cdv&G+^#g;h1lT#>`}r^=e;dJy zCo{$Y*$-UNwB!s;AQQRq2zU~IQZJ!H$ok&3;4H`Jgc!q)yR4bmjpETiYeJc_8G81c z#Mj@Sx5Y_)zOZhsj3@0kr%=gD3>K@(#+of1)}s|9mA2y)XjB21G%<*X^s3br==|#m zFa08=h2eZzYQG$D2gGHVs0FQFBF7Q$k7Tp7qb8k-r%dDZzLV?t7#E~ik#bPKR%FGaXw0JpT8Qc*?OOTBRJMR|9*faK!3^#f%ZhQO=GDs1% zA36AuKjNi4i<%{BHINOdvuB#iCt^IEH#^k9E*#msckZc7GtG&17O%7xT6PMXV|y(=5H8q8yi^Bk0$7AW1(w6g3=nl0kwcK24t!je-jk!RcgXay8 z-%PHFCx*t8yK6+5ziF1R=ZtCniMg+SmCfe5ei!-1G5UMtMwvqN(-|&rRM~X`Jl78b z{daKxlrt?x^3FM_95MEz_Uk-TwOqK^wg#EAs0*UC(u%cNE*^~8_w^X!4y0?Uf6iA5fo&bG?eAp@A(;e1fmn4Z2JvL zx!Ezi+MC~-M;h+iRC|X`gh%*oixh?D;-&Uju71z%CrQ0vbZ>2x0C1=ZgQ(uC@vkVu7AvKbR{fS{G~~~5 z$aAyndhlMVxHzEl$i#HxAd~5C+wuD`y1-}Cb>=Fs81W>;h|YO#WfJd}q(bX;bu&mK zZCxSX;9`s&q51Q&sy%c%0b?LD@w@d?0Dh;d4hC;=PophDuz8Q=d~_<yV@HXUvR| zG=Q_&`Tc~>oG+vgSjGgyA6zy+uqD;7g&p=xo>o(H8k^j?fbLfq4Wg00k_R2lOJ|4x z-BCwN&r0gB6qI&qCGxmVdw6L?8A>0&jG)|Ht zWRMf_>~7)cr1XI@t*4yPf5ehnZa{qokI-AR7_dXEoC+>;Qb|{9=QzLmh`bZtu=*Y9 z?Oi_VVq$kNIG0oPrOLUDTKN=-w$=Ow*9lFHMwjyx@n~Q@FLS zhxyH1!p>>u1WpwIJdR;!#LQF`dsAidr7T0q5FfQ6mwN3RN6QZf3nL1SA`Cmz%{9$H z_vze`o%@&Xzz*IUbD;2@^`II=QQZ-H2-AKrIi5gzeBAJSaeAJqnBm7r7H{*hE1s0! zqqQCG&3}n&%LP=J-%2Bi=4l6PSz|+}qB5vwdAUUGqLl0@o9(i=Av0)nwnrgZH_B!5 z6_{7r>E7xqSL#g};XN@Ic6);6^;<}F9N&QZ#3>-udeaNcP*Sd3>|gkn?^|2!MrXSy zy?qXBm)Bd4e?f-bzMP>5RDt9XdU_0&ur-WQt2M>CJWgM=D=@M zyxxVa!x2o($hS}p9aDyI-Q6^Ua=_+V*N_VJqzooX>R~WKVOKnDL6q%`P2Gs-oRkeP z-kqj#cS(12i=(K$ z1GWC#-5f7;!&N_UukQClxk1<_z6ON0MN4(!LhFORIU(9@M^~j^_{wfi$=(>naZ@}} zm)=9EP&?*Xh-8Lu#Fi~`v2W7^Ayz^ARPNGzPf?H~lba@)ic?8S4}*&2(!!qs*$9jBH)*IfwYLfjuXya3A@xY4Yi|&9c zNX-*i&NH!Omwe(h;4;oy)xsGsHl1Yza z+mG$$wITD`EkFmeX5~1$uU>{#QpZHOTJge?pwZJH@uQC7R>(OPxYC~Cw}`Hcaz(Ql z%{HkiuNzOTw-$DW=zgeYwXju=E%KM7a1&Lh`1k2KAhD#Bll#IMGKHgsL7(1v4~`&- z^O-V9V^vYpf9ZQLnE5a;h)7W_7M4QclBl;_ak4J689lz4$ZXhp7a!N^K^KXh(hexM z|31}?v%QM>wdF_kpr+U>7jt3CJT)@@HSS2IQFE>}>6PBk7r3f?ODh$m5np>y%BQ~k zxoIKKNuRf?(VXf;jwVHd>UW8T2$AozEe{_;cagTw9)h<*VDVjdBd+!KnBa35bodI7 zV&?15-d)}rC4%5|%1q)MmEpjpoN;Ac)65(Vd@*7D4e@@vc}h(-ci^dqqCuaz*t_$h z*of9ZgGqNZa46?L$`pBZd(Q{q&jQJx)q2YR7n%N7{H6u#qk5F`m1oN0fyID?A`Be_ z#|WJi0##^PNCF0x_$}dvDSs(zOpb*q1KWaPZ%^m66TR8G`KqHCaiQZV2wbFo*AlA+1oKRel4_xiZ|#PDep3W3 z2N|Vq$mG`%rL69o^4R4_*_?sJ{3eJPP;h~a!;JkgaeM{#t&T+&dJc7l=0+wTiWEr^ zE)yqfMu-$)c0&1O?8t;IDu=t*R^?UTmp zUA+~wNm0XZV^gwZYL^f0wDu!lGCb0}#f=eBW$$Sc2Xm7tL3bTTofURAg=w#oV@ctB zLl>%+PiN?~py{OL69`??$Iuvg>{v4DIO&XS`B!k(7>V9pm|#u~s_0biX;QG+(O~}a#Il_#c zW2;KjA+!;(N$KDAkk%m6CM%)FD@1e!rnqt{A@_+1RS$Skln$tBrL`@`ju=p%536w9 zF$|fFS7#8rDWUfrQIxjFVDA{NPus@m@H1ywJ}hw$>xa5|oAXb3e8cR6KxN$|&5BT9 z{0(f&!Mvr{lNpYl2JD(%?z+-~UX}t%2fDG8(iq$Z!3(zZvely6)H=wMja9hfp)9P& z`_<;RgAZW1K$a~iWPo0%9d-7wt3q#mWAPqH^qaJl(lWL;g=RfQT=-{Kv7Fe;%35QdS^w?GW1AFrF`KA* zCe3Vc^t3)W92}$*60fYPN$PMC`tS`DNShY>MnPnwg1@EFS>Y!r@TL&A6s>a~Ko94X zWwYjy5vR2k9{%@gMNSlZjap;``i5Oe;p-*+D+}lx+XR4{tT&%-O$5>-Mk2kDz-aB7 zOU6?YOVWE8jZ_J=h1hxshEg31h;S};gQ2@U!7T$3nKUFK05UGe`wi;WCuoVcNp$RX;?vNeWVog+2$rY7% z63~!2KZXhvV5vK$LRN+UPT0E-hhrn{P~i2dqQ6j6T-9-bwPIJ+Ro2`{zoRi;J9BWY zwvQ>xcRv1Ecy7hNoQV}>k^Q-5zt5JtaCr zgy-IL(gP#F!G`q3!$$%X@Pm7zo+tChb~`D`9L;J6cAtEU;~v7SskPw{y51??9cd?%77CAag6n$^LVf@H^ z>oRn%aAN@XAmkPhse#7JxYr9UhsbM%TGuiAN#`)<6HMJQ##_XIM+-5nI-kb zJ3x)qXH$!FZW1{f$iQn=LbtyKAk<_3BrC_YDC#M}$3*wC=}eKXs@k57`t6($!_AUq zGN<|hM~xW8dZ0#@vg)MIEHn{fn3}v`9AyA^M2J*f!JCHaMa+vK0gdIEXHrIBdmXWAa;wSht-&HQ#U;XOR$w z#Fa6Pom4Q8O&b(3;vtVpMT6v7%_@Q+_WC;64A{QYuje)FTS?!GcA6<&%PNn6l>Br~ zMxLaf3m8UA`MFs2h8xtNi>#c1S#o-TbF(A3~6n;E`-;0x_ApBO8PJ~bcEbStfxfIl0is#1Ao zsgXv1aW>zdjo2Q}eQSUvjVMOq&a=gd7LCu)5X9<8ZKeTc+L`}>2T|#wk2I!CRAvRdr9hKG2+tMYw})(4?vf&Q$rw3GeR1GEH|0oe?5rH!Q3xsI=< z*HqIT;!vTSBn}kDtMjH>s|sT{Oj%u)aR(v#(!G)~5odAYJcv~{oD+d}g7YH}7CdUA2G+xp@}EZphEahDUDf4}bm+i9a0Hph`U2SMt)&T7(T z%|??H9INX6XLiGZf64*0#U7b8L^JJL4d|v~(Q(>)tVsW1<-QTewhf_j+cVd6OV%BS z7q0}I7bL!mIYlu+Q=yY_TPZRYGiysvv@F}3538@Ds7P%mu;NYr1UKhI%r-yG`@J~Fh*+9e&6VCZFQ4-dn< zKKXj0gZ85bZ-8~yFmZAYW0MdW&wnCaz;TOXQEm_a#Z3o)HHO+&g@YCz|CQ*0-TRA> zZeLy&)*8pKC9Uvk7?179P#c6sKCFfbrMn^KZ)3z)Cwi2VU-X8Aar-=7X;!a5_I(F! z$a&uo<46Z&vSJwv;<4A_F_{C>kdK;tf$E4UARx>r_E{jMv|_S~k*V9!thC~ZPXRwK zhK1S*!ixzd4uR~4H!8GNhak2CJ?_rA#BUk8vPQk&sk_2)k`pJiyW$;=io5*a)Sd-s z9>_?FxR&v2JL>qtA$iWK2*&r3z4zx9(kq=j*`i0z8a=bW1X@xA1$t`sxS!*~aTRuz z;0LL4FYNgu6^bu1n6ZXt87{JBBk|U#LD)Aws1-JPtL*5vrV`9IP)Iy-f1< zJ-G8aRgdXD3yR*OkX6qlKDyMj-Vf$jGBo_pZaMX*C;1M;*%!A>wyTJOtTmm6YX zFm}$$EpGG|p^k61YKlA~XRaMwIQwQCnEXTKSvCCZ1pL#l!QEd<;OE)wM|rgwx%Pq zRZY#LUGkSTa4jdJ)-mAd=F;Cab36 zJ<7!PwgmNGtCE{$6ant+$F0c3UTr?K+8YYAYn7Ro8gjMOvhRG+ z0$u@{-?K~X~UG6@XJ1p1mO zE{u<==KZLHQJ(IOl9DT4nkxioGiui9m-zw>xo8JTHEZ&0wq`^~H7oP%u8tFtCzogB z{ZjLibtDWOAAbw0*BEj_`bp;ai)Q&x%73U#ntbTT>J4k%UzVypxgnLKg;Ht7}sPNbRkT<)#Q4eaYZJ_ zv*1dGU+~p_EtOiI4dSzmf4%AQ*?8T3b9d?jRI5gcZqAmKvN5Q)=Vf>LTk|NEMQ3Pj zJ$e%J9JL^0*=oc5Ewyx?|b=7Bg!J(kdPv5Q)*)vY~L~v?%}%`smeBW%7{QfD6Me zwpE2_CKb`iU5x~LD=DIEu-;6|n!rtLeN@aymMOfelpZ-2N~g|8rX|w~T%lM_Miq;| zY9i;jUQ(r;zMd8Xeh!;xT;M6+@w zfh}taqjI+TsbU~|zJc~OAaKpI8F3|lv5)B)EYhIh!Fg*}D4-J3=6sp0mZ2dRTwsf$k!tT?69mjqzbF~r29mt^ zpRC!As%8&3Rg)k@`OSPo(I4hqcG}E^Or1^Nh|=Jr$U*CdlnKokS(!jc!NuT}bcKHj z(Q^(?O}%IpG1ag=!)P_P*#-xuXda2+pPkO&S?R?%VPDC+&iB+6F_b($J__r^E(w6u ziyLW<%j%%XZt@W?Z=X5xZCc+u^vM-|b-WiNhGmhRp0W~7sU@C4Nlc3AGeuD*BeX=) zzhV&Di<1uKXwR>C3EQAt;zzbUH&@S=22QP#VA-psa}tS?M0%!W$YzaotyYg+v6G?d z&6!v5>!1%aFQ*L|x5wKIT%ueYkgq}lb0CQ)A#NZsGmSfAe_YnXfIQkB1+nf4O_!L3 za*5XKH5i8n&S8YR6OtxQFfTWV$QIJeaCW*0C$e_$O^9)?=+O}b(?mgbV#lBiFYK%D z-5M(xEjTpDet8pi)USMF9*(;3Z7}V_;#n?ZKmBnyqz5sq1@?9yY-Pr>o(*3byr>&A z=6;In+Xm_IV^^P2@Ij&8bPA@Cd=pz{LvOI}F zihDfXUoaU=T-(v%zFa|1T9f6bR2?IWvH9D5N?is5egV?%p(Z)M)-fU%UW1f=6Z@=& zqu`lb8VZL`rejNGb%aU!;;2T$EYiN-l0KKW9h<z#7?qIGHCe-{&Z2&utD(OK3W9+?~Cn?f~3@ZxElNPEToI#_w*9laa=&T9qXhIsN zO|;)Vehy8(Hc&2T(xVtYLK}C{Yw567dc18~qq*E~g`0|VWHDQokwj<1S$MGGI~Y`X z&QZrwA+nO{rUvR%D_)HahGT$SnfCW?s_HOYZ%)#FO2r> zkco8MdV~ev5T*w}d{UpffieE}CrB{(Y7qF!dP%_{>7@w^(4y)FJMzD6_}P_yNx2@; z+(}w0aI7S)9i(gFyS$KxwT9kS_yK6lkE@A z;v8JCIX);{-gQBI$mV2u`p|xq+)>WuVB8PEArWW7LtBLkC%PR+Ij)zZP!s8_vP@c6 zf){;gTt1@on`@n5WR(=Rm0;v_ZsO~JIZ)SNXbIsi%|DvoLTUblDi_V#6+;15+s1)*pv zzxq-jF?9=YOnxypzD@6eooI4De?;@&#xK;>H-gi>aQ1wl7Nosk6Ej4sCywpj^&G)S z8l0RM4u{q%5UqA}nARE3AHJ5$aN2E4KSm7Q41t0J%x6>0kdUl19`fJu=zk8^_j$pY z&jn{m1mRP(ZH=w!#8dC+^ z^yopKApE0eEJA&3x;}0?fR}2$9lh~O-2iJF@Qewx{(!QXVMb=mku`^UIgNndnNpds zX30QTy7-IbT4?_INZL4YwOaUGKEZ(88I=KXJV~+q&5=`PU98J$Ij9TleWX!D>%Lu( z0e?{I0WicVM{`O#!K}tiyC-Dhuu#;PC*`&n{>*_`SJroV-9EJLW0J}w&jdr2npyV5K@6AH{IV{8u27z4)&eUFI;6`d zSa7uHM@z4^GIUmiIqQN0tog3G_7jJ;BW<4NMpG^--C9eoe0872jTQ;*58CWlM?z$2 z{`6B#XE+V;@iNn!P`I9VqOh?C8_M6ji)iCtzviM9o?!DN*#n_mdNasJit{m8qLD;Z zVSnq;+4Zx$VZbKMH#!{f9x4M8kWr(&p0}I(FBsbM%aOr`HeUu>`xyt9FJXX)YliNR z8F~@=EiulQ36_qPvd)Z>+A`~dyt1>K%Jezh{G7UD6XW9IXsfKbdo(4?tr37Y79Sou z>nn!)L^5ozXZe~@{T&*R;{7$cTN04sll>Vks-`}i6w$hJfOBRUqb|n5(`%2mrMor# z(fu%;Q$6Z2XX3$%{A414FuM&|ABM;*Bseu-R>Wuw!flDPZTzejR01W2->RXKX0{%zWQ6`~0QsvKn7TuryEb{*^ z*HPs^id005?EloO{CzJgRB=Kc=)B3ek~irJCNYGr;a9ak=(k=`nHR=cW;lN05G0m^v|u7s~oJzB0sj9O!YX$Jx~WSj+D}5*(iK_nJlXC;hzBBVK99F4#V$)W}VTIYg)KMM}QE zCpsUjBx8nY$dzYzKZRViPmM7B2u5>$FZNMH7HQYFDoGrP3O1`oi8x69Y#`%GQcN2c zWt=SC@ecAhcWL}E4OYZoLcPRD2c!M*l4OIpzdU8IA zWcW`qA@o{BKXp-aOm7jB&CMhP<8nTiuZOXrCbErshdn#)YExw-cEUePMFS^Pb_EIu zXb%Ypi1gn{qFD7V9_+PT_?vz>(P=T=!K}01TYv82Ru^h%o1L&(@vP209>$2{Y zYk^a?JiP5U!g4ltcG1R+G}1L}-BoBD*5&KCB_&JNI;Xy^zpn@tU%ebSFrhO)f3iCC zT)*{<9Dnb+?s?v^$OU(#|12_e8lc;;c)&rIYNb`{NvRrkjYs9Qf$LluwNykyi~jh$ zlg%^pNOh=@@^CA&TX1K8MgwE{q0@i2N+x7{WG9#46%67}VP8C2yGR2yyin29xL}DH za&mZoYQG}AkpUf!yA_yBok30UbGU)NRl9#_FXM#XMmc}E7J(OFhJiSUp z#1Ht6NkM2W27Z<)Z`mXB3ZilFM5-M|J#69=@y#tn5f1>OTUrDpRM0CLP6%ADU2JGS z*)a8*TkGzEmQ$#i*~X3?N8aNix+JHK4K8EsfF)e0CaL1VWgdRYWnMVP)7Ln}rkPF6 z`MP-rubyUQVaezfU8>C9CDz}-8Ll;`!>{Ki-g`r2zMf;REUaI3U>y?N24e=}+7R)P z=^B4|7U7Lcn~t})uFc4^0#=WARP2hIdI{q)QnPh|wIxNHo2Zn-Dqf2`R=j7&x0u$X z`>KhR)g`sL6E_Z0J?sYaOD?f&4xKp9!Zux!?K0^HdA}3_NNB{Se&Z_`n=|??$z!A{hhmW|+u$ zwIaWd<4vzZTOtVwd(fW5>y{aQ%9SOTE!*uu0)8cR>0~u}nMnIa{;JsY#H~vP&;oAv z;Lri}OHnh_JlCER*)f3k^&qy+JI^< z*grPAEmkiRBYFdpzYafAPaSW4onInX{&OJ*{BM7PisF3Ja zW92O>h@Ue5=*YCo!fm;(-0AC^*4+R?K+7j=^@dh;aLwSc$27Ve!52+q1Ggy~OUiI- zjBPoGQ=AamB=1<;V!bH1OAixT7CqK%PSM>IGIPb@s4IJa+TSMH4t}Ce9|App6`x5C zWppaGwLa=4Bt+tN7fhkRD^hqM#3#HPzaC6t^&vXQ)Wabl`gV~HBb>`dtJf2}+ZHm) z){X?vLD#%+rCe3TYsT`X%UbW+=UO*8GLqi35HWiLJzS!Lq&!(P z>*{3a=7WL==>#S*baaXnM?2Y&aS5})O|;;>bW#`uWj4G&^P1shuKd-cY5fdWg8CbR zwcwz!FgN^$o6$83U*#c^(G$SvE!85hBx2foG1oKDxVJu6`)Qic{RDRD!Lxy`>mIpV z57N2%D7LV}i%(J=7W?6}Fj1pqNrdDuIc=Gte69wS!FJmN;lZq5nM#52HB@Gnk8(PxCIUvF}a|r-u;0-OoKEN#@RK zGhYo((PhW7kS1q2Z_cRF=ED*`IYPKkUT|S%K8bbz+LXkUlg^xQwWs?mjZ_DN4&Eip zkMsQsY>uF2`e*EP_GI2}neZ+g@fUDE z>cjUa?nOJm)A@5O*2DCEE1Bt!Qvv+mCn$fSen%d$PuV0>Hj&|&1W|J&GR9bdTx0xP z9B#`LuEc3NTi_^HBKZkEGW0hfMuY@e!e2%;a!p5KCgxn0hfeC?K0eNphtlXKv^!qL zK8L(OVq}ncjW0{W-UK^CiAHGRiz-x6e4!HxMn+`bFeM7(F402*C4rX;LvG0~{4m^` zAwMBBM)|3MWqzWK-onsFVSRV@#*tKc*5?U2no3MkbwMf768&*-o-$^n`vyoK=6(Rq zj)bX4F7bht>!2hpliFia+#A!V%@>bt3Z6r46No;O#Nb>K^X);WR2tkVrE7Vu^i4T~ zGM>uqz!!r*V{%t}3IACS$Q#P7{3g|xHbfuVFTqUNn(YhsnqLX`noLX=DT*1sn4pa^ zI$)`SszoL)NTWtf>~%P>a1fzp!jQLNwS=(l%ZgE$=yy?gDc9u9IWoZys0$svAa72Y z(U~10E|352QKlpiHhUnhRbb_bLh;vUcZUJ7_)#2 zFqh*b`iDsbk^m!xD{m(rFk;1F5wk}COXQs@F3TF?Lb($&xYr03!MRIPXGkuzt*A~% zT!dTS^n+QY&HlGD_iVC9HVCIM&=Ky<=rrnk_D#y7<+B1_jOP3H^2n43wOn0(nj#AI z5z|EBVVU&lppxzNuR>4KR6mMdZzk)7Ez8yfxb0Qwt)Sp1*+AzGn zGWBE(d7O(UtaKS;F)qgM(zW(#l%)Rbn|68$rt>3Pu5B-&CU;(7_3`9vhg8^c7f|L70K=~TED6#f!_L*QykJa8Fgsq7O^8S++RBOYoPZ9;m21tSpJFsKYFXkhccoHf4tSZ zKgYk6E32D1yZk9}{!e$vE6>!RFRus%f-QAyn9l3q-o!vz{CF3?QH8Yif^)3Cr+tRUadCBO`u9U zOeJJTqKgQ9T?dyh0A}^Rn|#utWpBQkiS6S6M}fqugdhWd;8XzZ7o&dXk>Y7CTPSAz z&hzJKtS|49i#N6M?fD9y(m_DEn0r49oCZSg6qIX_y9N$Z!0iR}AH`5FF0+>N$2FDs zv)KGENpS!D9)kZaFH`;VT7rK_nG&ST&+Ax$m$u{3^S$?)_xLUE>BU~3_v4OMv?-u>+SN$7W()f~mi~;TL#4UC z$q4YE=Y3hi(u}Nf>G_DtD%La^x2~x`w_UP~lbJei=2CMZU!LQAS(=V~EnVuN`6iRm z)ltt`!lK3o`?ju1*Im>yHEK8^O_7%yStnzjKCD$GRnx+pp7_$FrcGZ!!uIyY7dl>3MuiGq zE?xk=e5D;qQ=JkDBiEFRLCZGgtzD>C^4KI>Ft)q^Q(8%^U-*b6MPIXGkH?UmXDFg@ z|2pjMDSK~Op-$rpT|-k8eTsS$fM023<)FOOwKrX)2wDSee6Af@s!384&K&)VQ;x>3 zY{;adre0Qg`%)@?E+vFhcaaaKE}Y1$!@6lLm#4tGylQ%*G9eGd`IDlQ=v&>ycY7}a z55GELv*l?8qcQ=@W6y+U1gG=c4wupf>oydC-TN5ov^h{UVBh*rwa1~9 zv)L>9q{4@^?|KQGn<*>p)r=Op^5?vO} zFp25GC$j&j(1r~w?=p;=8IY>loU#k6yvdd3gs>9C54a|OTsFS^_G7DdR;WXZ&2a)- zVLM@-hhqe8GK);$2M-~dPgIVfyh2F%l*H{X<&Y;_G4^ltE#aUKa0^~)au#Tx+==&K z@1!M{0b07QD`fVMAijEd$6~Zb!)o~3c}{CS)3=TckwO87Tt?fr$Vh5OzR7z;>%X2}-%t8s3_yMc6z(mbIF-+u z{mxJ;EFlfr%DoQt`yM?*sF_RNAmf%yIt}?2*hXpd3BpNmU(Xd$&ih@t@#IzRVTv_3 z;9k}Q^$2$oBJgP=7b47Ea;tn|717&WU{Qwwt?oTc_+{tkDpy@OY4!O#UPQM5F1D3# zoAenW$lCIEbTWXYPvD?&3 z1{jUFk|ac}XY_EJfH|_5;>yqUA*cQX0;qoBOsgdRUNiU}t9XT%3i(54P1aUP6TE^J z^itk0q+o8)69bU(^fE53xa3?@%$PBv&V9)&9yHrJEbfQxIvlQmsyn2;NO{BgR|c;z zGhC{SliBBT9qmKKf5>WB9){v65GD_W_$#Tf1)9M>r5%tjmSF4Gc@!u2PD|9efWqgr zQGznr{qHsp&^D(JYEE#MC93t(=-gqK0@xwf6iPN3=dk|@7gS@4&3B3$V(_Z&Y5;(= zU5u`KJg#1PC4Z$8VZ+>URSl`HK2$X{apE-bP^D%Gwaj-ogs~qNq~I;c_n@HSZ_!iR zZv`KYQZfWgZD5a|5GrLcJ1m2_LC}Hp_u|Cmr0mzJ94;}zbe{SF{d^4~NpXhIW&D2G z0-1$_SlAt?3W2OuN7Y<7d7y8qmrz9F?Tcj#Un%V8cy1fcbg7MD<-+6ZXM+h{ zQ`-5oLewnnJFM-yp3pB+5#uQY#T>DU3xFYcfclk$r8ah+ib^YOqj!@#N6^%~+u;#% zlz*|LPXpVE8|Tk(GmyKouEFoDJc~W&$DB`&tXm(LTQ}n14P5TI>pmSI8|RGKFLgo< zmN<9WO_YqFEMafa0w>Y*N;<;sbagw$`AxOsDoNR5uZb!M;r3IDz6nlQRc=y981mL{ z(pb=yAM{E9?psRU+FW)80!u|JDK?af(dILf;`+io7XE}F@{o>gE5@TdYusA948#L~sz z3lBO1w5h@&L=B&i;AKl32o|y@uNuS-r55N{#}wHev2A73H4j5Pxd(mn%;J)*8WeHM zG!0W6eXW{u6)S*u&)+x$-v7+{&B@Lap&UQUvni~J))S)CznjVotcxlm$l?hb)^R8> zbjP5M>=VA0CL|Tz)obaT6Vc6_VOO3P3>{D2v+lT{$RTM1rXBNFnRhJyTK3G;mSi#m zn4vBNr|DbQFYDii)BsE`YDi9=CFQaLZqz3zByB?`LJALz@k(l zt8fC;|7#p%1e+|jg({Y&VG-sZAFXE!MSta|lF@6!Zjq$FcsT1Fq0m>_+Oz?-ZoUYA0+**o@&uXV#*|6cUC^*Gm~EU$XT zDGE+-d~fn@E7-!jQ{8w(+|(2x_!j4AsN9SAeBhIg#+{gr!{)w2$DFvzde7Y1fk64kk|?@KL12W=&k?bn}p3xmk|{9Thyya@>8^w5b;j=4K0X^ zf3s!QbZ)|m6Cy{pF#DV2 zTkr=|Xm+vci8AG&`Y`|Za!oJE1H4y47YLMP&qs6ZbVvg0x~x@bN_Sp2$QBWEmP}gq zC(O#lbu81zPAUlFJd+v-*eKUD^b9Yns9uE6)aCKc1{ji#prE?>FlRR9(}$jeqVv@Vs$TD4FAq>9A7q{ z27CCzEwQ$g?5sJtH4b;w!7a4@nL68zgCoqG7THm}+WB8JazVN|p0fZm2YNGJDYjn; zoxn_;QgHj9@)NuO3D_YF1GWf~c1^onY~oV=Y}XoHu_i#fJQ@>d1TPY|o-{91WrpEFpjrov5@A#c4B-Qk?-=u&ynz0}2N+1qsf^7N)kUdcYPQ)n( z_yIutqZ;^fJD_=?P6qj$rjj{tdeRCCP`o!w%( z#&gg2OZ|m`fH%HY>|JG~2QVP^8-8w&^en0O+Nrz}lA!l%r$go56AX7jLme7;&>)~K z$D=#7F}!ssv9-@RHsfDh$Vy<(>XV?*EjdpPbQ_mW?wi;?VZ8bC6Gx^Pf05GSPdse< zf1APXwMBb_zu^(YbxSk2gIzrt%$<eGVH8jBe;rzR;uVkUl8?@ZQ05SwXg__&^U6iKg=5;N_m?FWKY0SN>xzOYS>F)Ky!?Gr;1e;0&YKQb)SpquhBOTqMh=iSwEQ>ri zPDt($Z9lFPos)hU{QFHF0W_i@rzsxXrjad01gc&&`4J?oU~iCj88v4T|otjLwCA5Df^Im>0`sRngvObHs-5mDL~bGVCu}sYvMka81j~7CkZWT61l_qKa^s-tcff3mCn?+1R{Mq1y7z z=fNwF_rG1I>@+j>GF}(#UT3^B-vzQ(-5w@@;-NIznTA&z@0wlL&6^)z&ve~@D?xa` zPtmEf5nho=nLP3x!Q#-tXjW(cbdY51y18Tr zA$-gZyumjnK#g{8eMlwH^J(-F|2)BdMn4!~WBcf&aOc1Et&yk0kbaGSHJXh@9QKXZ z!q#QDQY7qn(W#Koc2%bhBOq5yc4Rq_BWKvV|Mqg<^$S0*wgpo>HGoF-&Q6-*E@ zB)dE^(wU5nK%SEBG?e_&F%1?R*N%a(V3xM21U3&1+L;YVMcSxAW(rJJ zU1UfnAwssm>q&jKHaVLwMJs#W1O~4jgr-g%OkFo(DgnzSF3XfGmuq1-fmvy!gqyw6 z;l^txD)2bfIS>ujm4}G~dpc?Xc@fL~+yfnf5m0YP6rGb3SvLgJ!3j+h`{a*y{PVjz z(2MvQS*rUEQW}L=AgWln_dt~YSWs;G=jSCS;TA2WcZ9aj=hUXc@;;rj;h!@#yf8i& zgoU*d!Z@yoE7uH%im3=rav?7J5qg7%I57uYB2(WHs;V2c_e_Qfky3eaNsKrYky=#$ z)A6`kxao11caW*!ZIM^jM36*ZTNHR{f~Bq7Wdd}xxZxC3?bnj zYQ%zl3~&=2X*6IT^;z}nE@Au3czA?|gLpieOtNT=>@hg*K6o}h3adGx+bJ?xiP=tm z$FHWHct5b4+(dodkZS{-H$8`?S~!jgs4y)Fy|YY5S8e!mzhVZpC<|Tjgo38L>#}5Bx_A=$(HdAv6OSs0- zkB+cr!-H*OevU9`>DIn<0~wCHcxoo<@(EAw8Y@WYr=v{&@*_c<<-@2wMf4ZwHeB8z zvb%%%{P6<0#dbKJl!|VAUQ__4qgdUb4nUZ8zT_yJb~Ipt#dpZ`iYMNyD-koH^*%Av zKm9kF1mD~@a2Z;v{Kqyd+j|?;I}UE9nB)CSYDkdZfle+hihhqD+R|ROMS4JuKx)BJ zS^(!-G*_0u3lbV8<)d@YmZFQCJ5ZmYPR++swDK7li5UGTHxs5CUZDyZiyAdag=rQg zg|KpD?#8uN_*_wK*})jh%&*q^ZapsT;_YE10GHO88SU1}lw}r)WXszkMK}kVp-+7q z5xJ;QD>A-_f;5-&Z`es3T#=h&W6l@7Iw%6ppMY9Et}XiYZ1nU|0o?J%{m2@|vmE%# ziYJ*vwXVcmL23!4E`XTRvKu|&q}$Xou)v=4Y+lQXoa5I>&1Rj^I?sP1Lb{?y0bv(Vu0h8Z6H zlh)_%0*Z7Ve2Qb><myok5=C4ItqPpyC$#`heCsgJTi; zdo#qm)e68(S9w+#oFs?tfSHuRlbv}~mUA$5mve=`q#yddF(v=TRTLub6*xdk z?mw(%6v!-EGe|_PdTp=V`%7t$yJLD=`C+H3to0oL!o1<|UIoQoj#}(=Sx3Sp{Drz| zT;ZJ@m!N&xI#(olJ>K`)IsrAUH>J5D^|(;B;|X>mTm!WmUx+>^@=mM4_@@;1f$_BYhOW~29f90=K;fe^1B z-&v;rE*lB{Z%1E#dy{{&vUT`p?_K3n75Ny&+t@|VPCd~kARm_Sj)sCjjCht@LI8Mx zE|Itq_TpDTJ7-3kx*w@oq{LidnAuyUbOz~XE?$$_bgA4KdlT=V!<*o{-DUD0))% zlwz1Z!O_-M@I>&og{NT9f$>IuwJU@^A5s9wIFdYorgC52vM(82fLv8BF6gPkcpA|a zJqbZ6k1L!I*+$?Oi<^oRVPqu&7hy#oIfBZ1YO!97g&h&=NQ1VFxdx=+vnTT73c@ZY z=d#=d51gQK&8Up*+MUV^y7}ZY;-EFN$c!&Hqy&z`O6Ghez@+iSS+f6;$1L@PCURnB zsR+6iq{QEe!U7EcbC%f6GRYB~6KY}3r%E^7xkqvY!!6z_I-yw_sqVmGwXH|K=)&S+ zC#uL{_1(y&g(Jj^ZC@(&ax%h`L4Yz5$)X2CDSlCc`3{=jsER&_vJh~Inv(S#<*R3f zRb-2)JkqTL3xQ^*W$c%><7tcWWoemn&q+IGb$h8*#pKc8Pwoux{AqlM3;MO>pxP4I zyIz!+_Z(%*6^I_tf90k%t z>i1)M4iXVD7Rdxxos+Rl7B#ur{oktl^_+s~Bx_A&d=`iSz1#4kX-~>J>LXQRG7xLd z$veU->(0#MwbK|=mdI#ycrd|>RlW4Xj#d66qKG~#PlFnxEd4aLDXO4m6kScn?y`h~&; z5rj*&P?Lrh;Y$!$oVM&6$>(Hjr@I7~?LZg0nABo>8zD?}7%x2{VMaAvpM@ zkFlv3B`uoGE5JC{C7Yc_268U2KVccY+Z%^U6hjwGhqB+81M4EeD%-?D$yQ`KmWZcV z|8j2`t2JHGZ^}k}uwlKh#26f+CH0o@p|DbOw+sM`L2sJWT)dmG$E3~x6Qn_mHC}H! zgm!hXTHwlPm@iE~Yk`jR5ZidxAw8<@lvjbm z>?MOyN5&l!JpShYpg0>Z`!M`cYTA=yXCJ<>EVZa>J9T(GJ>fknABQ(4nO}8-6qZYV zx+Wx(VP+wL$2c*6@Rfh#~%)B$x{1)TwKh_ za(~@~qSUY{xHte=cAcL*F4|Jj9&y=QoNU`%+1cd*(r&#=Ln|c4sxAql!nN@xQSrdQQQFQ#3OK^37`$0zOsWP|Q0V9MG z?!GRvfQs!YrELbt-)`HB)z?AtB$;kGNQD6#`MLe`S@e~M00PcH9WGLP+xxp4`)kmeL-?ATHia#U$yY0Dkgc_9m^-uIjqtR0JhkT@oN0Y{%fzRa5Kn<)QBGdr76*vD=!)Uc2m8?MoMfGKEst%B)??)g>?**9NU<*e z4e9+ccar_(?D+SNR5&>$pW;df5Zz0d#Xz2sxD6_d(L?aR!3V}Qmn2#K$@<<&!Z*+! z$Lxsind#`pMItL-{e>?=GK24)8(utDJbOHJb}k+*@!kbaVmiZ-^DlbvxCY z?8p0F+G3tKIv4`Pneu%ytQ_F^q5f3Hso*}!&`nA9<;NVFZ6bJ<1;C^dE|X|G2(mC4 z!r!gtf8LEp?TTy(hPREkw~Z;RcCX#}eX`r!?>?oy{kpM~&fVLpn3nOsHH~^jIdBgW zU!njL4@+#CGsBpmc_j0p+nB@_NSr^6oSXfOiHY$SVRnGbAImf^%q3>&_8B9uo8$S`o};PzRJ=~+VM`VDSv47_8+w!9KV%^j66~@bWK4xM@6}2fwc6t zHjkJ@Ox(j9y^?A=$5pyT2|izDY7KvC4YLz(Xbs(Y3JteDFdh0Q|Fk zOT4}U(<>V3=q#kDq)*^jf!Lz{V7Kek|Cl5m0Wr|qFi!Z*$@K2IiTCRW9q}(j1ebaK zpfH-kfRVfqWn7wm?IuQt*=?B;jOucQ5^g9x>$89eB}$0HRPECrB(5$yEep~WepkXs zg{3Tc2Vr>rmhaLxQ|;N>it^O%V3OYJ8IA<2ql4|=ObJJb)NJ$y?18vixtq9eGz8Gl zA>W|?`s1Cy@u)$5CQ=4}9-;qEoQYdn8ky)>{wIwlr)RHcW%RQR!9m#7!06vD=>0FX zRwUai(a#6(rD!lWWZszXVx!R;x-0=7?hh|i^3Wxn>}cddlu`MjnGFo*?TbeulP}jB zu|qpC)#3KOHSs=tj^(Qe4Pi!*;BiYng}QY@TpfwfG&44Kpkbj7$*s=c+y_C_>G*i4 zNQ>7|W(iDq!3r3L+9c)8yac}6S~pf4*x7G6nC4z=$VwE_ zW@zgRYqNm8Hx6YV*&=~)eS;Mptvlm!R1uJBu#vBA{8ZDs`h^DNW!XeY&_r+A*tE{e zne(rI^M&*thU|~S>fw)z|9{Kae?sg()?55j1OGIgG#7s^JcbZcNeCpd{Q=x9;;T7C z0fgw)W5*2(LrcEQ2R6tqGC3xxBYw!vWUHuwq)D9R&ohH6f_H`}sOyQGO9Bi^R>(ze zLxU&ZOo;yODn=2t+ndhGx#D`x{N_F0aL9ST-j@YXqs#bfj!^j}#om@&Al=GO7T7~z@8zWy6}jL7V>Rdh7ikdt()z;e0{z13LVbR2eQjxr zaK~!8@*%^Ho3T#fkFz4PeyaJvg=#;9bdOcpEy5)BQhz!W?bN#c2e)(+d@%ytT0%Xr zaS@pZkbT(#{qW%cw%=goWt0VIMq3+Dr*;#hSJo!Cwls~mk7Paa0U8@2dQ?<~{CkHG zF=`AbOaF|3LfdX%NQvZ7@S>KEewiS4HXZ#kuJzg3h0W=y)hPlwln9Z5#>T=PEq1#0 zAH0nXQnZ!gKu20Ot)2vyv2>>yQj0S&KlZ1@h1!DIZkZmEM-1htNm_D1s0>XFtoJn! zhhn%V&^Ap_PAtw)zR|UJShHIlC-MsMyL^6@jp`w%Rav;?R4gaK+%7K>9l<3u(EW6CbGHC# zRR3VyC~#&~>y>5YvL_!g%`FNH3a)|8I+l__Dd&=Xv-fQrSPLTaF8@t)Eu6)Xzi~-B z17Y(ZqFYBpFJk&i5vjpQRKTdn%tgBTopVtMwu~6dQ5SyRlgQ-N)HOz(VCA;q8}?;< zK`^@YxF#*a`}?muS*oo*xsavo27kEOa7(l0sKoo zOFHID^2w*6?vcVUD|72Rio6qw5TZsfZV6WEISt(GP-jRF-PO)hPrW9Abv{M&_!Xq0 zyEoh;5i>RS@$h6Jr6BhiZWF-q_}3TB`1a%>YpAV^0rtTve1K*W4Z^{%b;d@m@vG?e zXtrHYkbz>vER?EasUYcbyh0=?eq8kkl=y`c{GJk=K^>w#SZ+2`LAAK&>#xbg)-#`O z?&35*`OEXS(darA1O(qS0nyPi9@HAOWUboz%ajmz;p48Xwk{W`U;=txoyjT0NOU0z zT)$(w#GDMph*}vHm>X7*mc$U3)@n?P8PEjzA)JCXM<=UTR0Yr|MlT|AzS6_vt3}Ve zK*o}&N+T02Y5n+Q_RShs|BhT5=kN;3P9B4{XAs!2jIbQ3zh7e`?9%Z%IXk;58?=b7 zjva9mQNE6Y;>cCXLQbn?B1+Qe59flKR74=KIqcZ>B~!_8(o0FAEy}e7llipU4Fkk_ z(F+@rFu-M2OY+R{0blCt8AqBHkKg&J%92`6Ui1x5hx}HE@C&g+bdxd}5J{31Bbpax zj@|rCMoT7T$S{pL2qu*967)-KzReKL-N-b=3#@lBQcm%^VJ8utA=gWOWGdZ`%9*(# z(NF-LIMP)AC7>jnr^|KLR#rNL;9U#n3EqCh*-6W?ki@{qB+$XjzTcq}w@wl^%t-s;Wr2*M6z;_6GJz$< z`ozJE{cXl-n%yMyN~ACf=D$nrNFv0tE{w{8P@3>vwg2olz^g4Pto>1Bk{a)!#(b@3 z#eRGe!VIC{>mX3pWZ&tN1r9IN<~0bTvynz6SfkfwPo%w-<-MVC@NK_BdnxMZ@fJ=Q z-2hPGqa1F%!D_?s@g9aZb{?}rDk;zGC78S29^zyyxQq*AtdzN1o~RY4(F=6)giIvB#cF&P~QDm_7u|}C`NHjaEt>7A!dLRHEA@UE(hBYFguUbhDzZc59;uyzZ$9Q) zd1pjC+a+pCnW9=}`P%vDlZLbOPXn^u7|?_#i~GhF7a~*ac06np5<5Ie&X&=McThp! zj|TUA#+srQ80X~R*7|iOqbzzw+-zf^&(?MP z6QJ0oiZ{$VN6FT!eOi+=o~^n6n0vwl8Y_#(#tkx$n3WVkM}F^qN_zK$7%|hFyi!`P zqgQ@+1?Essi!n?RXltCzR@e$rmCQ~W@ps`(X*@EIro6_kn4V}5QP}#JWc_Ko^+2iR@B9ePw$?l9s*^okxbKgX{qt+fCeWD}d^{_x)pm4%t*@Lwc%O9Jrc66Ly?EDod1mE*v<0 zv{sCr^-F^2Bn1V$SFcp7X3yd4{;l^!-J!T;FA`P@o$kUL_>fIaVs&y_RVqGm&7j;TERFinMSWDT;G%%{UKvSEx{=3jjrjk zu_h;ubi3{ykytm7!z72tD}jX+x`UkwsE5*y@nqCv>#g&DJ-KPc6?udzvj-FlxkNrm zUSZ7{MidQQt&7{mf7{AGMWqE2Cu^9Yv|Q?WZoW$s()e^+eQR)ehHw?$aHZXJ;qxBe z-E+U*j!jG6F{yg%9FYa78r_SkZxuG+9gBO^$2R1QO-~o2C5|T*Q zxzG!5_cD8u&0oqa+-Tc#T^TF1hm34WhIGdOc=8530)QUDg6;&crMQ-UYzv|4LstUh z5-G$Wjf&Sj0AskvS8xrQY|nEUp;;TDXqlM(0!7fZd^bFZ2z9TOO6x-Q-sBfmGF)o3 z{GzdX61Ui@tBeb4Nr%-+7-(m&N0s}f7MHxoj`+aEbOptACw#6ph-xJdSxyp$taaY+ z@xo2gVg!)hWnfOjlGdpB67g(9@j-R`ZEbPJV(rN?ooxbT^{LxiX=8tm<)%4&Vjq+n zTd&-eNN!%e6*Y)KeiRljpmqSOuK)VEj{Jlg)X~3%J9LJd{!UxH_Y6LOYyaWBg`#XE z?AJjTBOX8)2wW$|_67H^`ka(Vr)uhFpOf{EM(6zR%Ao(y=R#)oMh1>H_HO^@k*TB{ zvMMq+%)MV;6k&dJe&pqJt5hPzg; zgzEZ?0#PmQ`kW$BgIW?j+25%`QfelGIWq=goFWwRPe{*6cZp^=$`<(SZdng`aKs`S zYO*I>FoTcn*1v?~AmDH3QKI8*OW?NazTrf9XCk@z!u6c+GbhdjERz^ zBEr8=6xK#2n(G5`(hhQKWGn)LV^3L;((P309bdCD9##rC=G&XuWEv@MZ3c8IIN{C9G~I8cg6^NqUC1MH zXf?+gQDV*#OQ&Nv-%XAmp7&}CJ-SAHUt;^-v7 z|9}Afc_LpU;*88tVFX>=QklRii?mv@2c1r7i+L~?95h@#$<@!_>=gI3pUD-F5GGG5 zFyWB@=l#35B30}Y9XuEASiBJ1yES*uUvlc$b;?jvF>f@C2YRadO=%5PoHtm_QjZ~H z(d}D%WBRB{K+--#FEUZkw@^(x^3>MYRqd~dRPWN#)z#G1kle-ux?oW9Ni=KBUho4H#;@SkPZZ1YVp%i-oUmOd%W`9P8OVaikZeN{JED5 zqbiQL&iBoTD2NsbvTDju4MbUC;D@BP~n9gTBX^mo$ z=ZQOk_J`T-#kve-p7`TMe3I51EY|1(+V~sCgrJMa5u##0_?%*KW>;j3rcteb5g+$> z+1PTI&Yuh%p6$eXFlo}4NW3JR$SO}Jj7WT?D4N*M16y3+S>ayXauUEMKe|B+HOw;# zKj*PNl*bpB95@v{U_} z%kNX7fKDT4@CyqZxHGEDY+-|6P`6WyhpzxgeW0F=H3BKBOKb+~0bzuhr-&^g8tWnm z&Ib2ExbEZ&v=h>Le>Jn6npUPD0%2(`ZU5Auf%?)PwK*EjgdVnQnWd$ zGpcHx>u$Pe=@awD=f(AowDB(P)%~*qtwRp|V2_Nk5n4hQR#Hcz|H}B?l|kH7J^JKF z`N~8Rkmv9FaJHZ3GWs$6@ULz}(?Rs;{sV&o7*+PJso-zWwb5&5t>O;^8T%Ys&uGOL z$jz2P6IAY&@mt)CYp;hrF!ztR>1j)cZrhJ2*RKKL;`C!2k?F%Q<`lBIOhG(1(663x z*C1kw{%cp1>Nv5amoPC;t#UojW%AchHW@>OHc`Mfg|LonduC1%xOj18>-2473|80F zbLy>cMp;&ub9t~eb5(A*%CXgW8elxOx8?tOx4j$D!(jHOQ&#k|4VCr(Q<@Mlvo!iY zGK7M*ED}F5_dIGctz?`6Ic4}uQeCcOs0|BgplKxQBS8PVBPWHRu}i|Ldfzr701M9x z(1-jGXFXOTsp$xD{d0EbarQd{uaDO^z#p_}4Ci4&j@@F<>lI?k@Ot9iQ?*egAw250 z>=_q@umEaq6pj@2Ge3rowzx*#v8bckR{ihE3MSXqXe)u>r5@u@Lsa$d=^d;pvc5zg z6Wwv8^xx2U9?ScGJ4yvAk`dNWd{R+3swl}Sx}64Q*hYpDxz9GE(f`2S^I(FbFI6!> z5h*{gPD0UeHK3~m);~WMiV2wqr(vK&raa+Cv~uieXmkT&9jP5bd(2CJx}-5b9w}c#b2g_zUMggU zwa_c^b((~5>LQH6SbsR!H9d>2Jd{okH@q>riEDM|t)#F5u!ha%E^8JD5;-KRdSO(S ziZ{zjdLFu{j`=gzB_a^YhcM&-w#F`lSGq%L*xt;QCoZf2Iz@=n+zLm zUydFr83O!p0s0&w@KVzZ&`ImQ@z8VM35zaOrnY(+WFv0DFX5MKdjNv6wB4gKnm;uG z0fe$J9doc!8oH9kq}A1Oq*Vx0;dr(gTSl;rW6{d4fEY8d}asKe`> zbp+c9XV>h3NA|Zw3c7!!Q-rEfnm+=fRNE@f^t48Y>s-UiYy)`)sckkv!ns@_rRRDj z-SO|k+yY8Q^!b?(S44(LChE^emqC~`ccD@RPDQA9Ey7lr)2ct=3#8E~>3({Dv7(sT z=WH=ll??5Y^y;!IT=m?et}8rfmfcU@v#b9E>$OCcvUu9aRtfd8fHqDIBH;pyWVy#2 z+?ixpj1=S&hMZFxGYsWoBs&q-Q*-pojHv|D8fDDKh8k+V6kFn$SH3-}B(xKT8nzF{ zaxWI{g_#aDllstDPAk_8&~H7;3H)`WF<-QJCDm;{goe{;|)3msJo?46$-CF1)vYjqfZ{Xk-znL2y9&=VAMQ? z0&96`xxqlvL*~q)bmwI>|@$h zaVQc?y$L9ct4q=}*W%_@ag_^qXxZaT zl8YJlY_52H^Uz5jJK_V60!Hb~6yvpTagUa<8YkoG@5Wo(&js!$>8gj7ewaD?bF04L zERYRDHS_M%PpGr6?>deMDukk+k3p1K~wq0QYs5cZzVk#$K z3+9TmgXKRth@CuBirBHug0N4~>s0v-T#E zB}i|OuTASL!x)M|!i`<}t#2??V24MQU;IH63@RoMT^1jqCAilREgKPMyQgzH^*aU zDn(r@jx@(Z9S@%qY!p~IZduQi`eqXO2Io0LiunofMZTW}QfYMom2olA>2j3ma6Iwx z@%RYl3wj1E3);uNWAkz(76UX4HEci&=0_J)5Hu%qUU)-|DKjKszL*zuC(;jSK#pF4 zWXtaO^bXcHj~WkcQ7mSVZ&l?vjjyQ{c6a3r?_Nz)h(UW2S3L$3Jbd}8Va8~<*{l!~ z_{6=pepghT!^li^kEqfPU8=$c&q{4rC$@tqSf_BgHbRgi2niDGnPKaZV5cjDvjqn% zSc~J%b#gcI`?VsKak#+v=pxAT@4fn-m@AUBW9zYKHrs+XdDz2P*sIStsx|$>G|GEU zbdY8-?c8D?Xhe}S}$b3{-M!3buRm3abiE>6+@xP$U8KZ76rno z3OUPj(HfMl7z;ZWG!YFbXM^ObEB&DINuV`b7+38+)^qao{b8KENsUVpvOE<%U^uR$ z|5Y#t2o>_gqI_o1E8@ekZJd2ZKF!#^gw-b#s`+rs2gR0Rp&fuYW~o;P5w)9Cnsj}y z?qH*<6@uHESC)Q(Gt|9 z=Z9!H^SneZYRtJSx=YVqm*1YvztWYVJB|DQ2VMVM3i^LfSMvWsSLqL3oT+aCk#8pf ztg|O@H=-EV)TUMjx+{hzSDhZ$>?Tte)4IAozgGCNc1QWxz&>EMu}^ESU3*<87JE`8 z*ffOJ%(9TPgZf9+$Z?!b1Y2iode9+_mu_1zIo>~kcFmx~gBuld8D>~x3Qb5gxeyOG zt$1&AG{u;-W{5D7exu_yA1BNijw~?1_s?5_<+^flBbVl(`a5weHj$|@V#1L_5*_$^ z7C6Pj`yfn^21qzpRc7K_v&l9f&zpAj+m(8Q!zr!`wg^+BMcQ~t_tkS{WM?YJl_>xv zcyMg|Y1Qv&Ax8mLvSm0n+iBZGZC9RHU=uR&NI}@67Yaoh7A`<8q8HXlm=#y*n9@<; zcWPkvO59NA;k~Du;R?ouc9GD^9Spw^??32D^hbd_IwPOzqV%do+5~W7%x7-KJztTkwD_?Z^ zlj8FJhq3FQt4V+8`lp&tSxTx>t_>$QA4Cm^;4+htG9-fd>ldPrv^Vd_*%Z)TKRH#= z`)&B)Du)>L^~)#mc1l1fw8Jr>)8RVHW4aaZ{`|Q)=aRHyI13ob)5Pz1F#+dfsH-fcN`hd&(f=mvih8m|WkAZ&lB#2d!1@w(U1hRmnMn@j3Ao2w}7kxRANrtUxbU%^?QT7QL)K3Nv>h8wwj#wqD@fa?Cc$L z{S~nX6^>sZ*ixjOjHgbK$?(BYy=zxjqIjb`O}^BKe(kH9Q~!=`-JFA)xJI>TZUbvk zB>tqj$})cW1&0T*KhF#ONE8f+>fnYqnVE992-x^vCP#F6gjiR9Nb>)miKYJl>7Qar zaua{Cr)Q4x2V7F5!n<0feChx zakaT~C7&bWi3AQ2JFT`zU8W^ z4GdW@i#;$S*AZt5JRFaHUMZnx1Ct1Az`CVI!uU)k!DL|fXTdxI1z-M?jo8UrC3gY8 zR@5?L$^8}?RLP|EuC&n7K$|N?C5VEvH&;P!e`4|S+qQm1Qz)y<27%Su1#)tEfL?jB zTCJ{2&rQxbqc?YN3l3B{;0QdcHv@B37;3uKzq4B^{g{-b0_B{8HC#hQ3FwOMU&D_} zr4awp4>X?tGiaFpT{-RQvV<2QcA>UD z1(@v_vC<;uIePPfZ6$*Y&9KVx9+_WsW8j8~X_hcnWbaeEIlIyl0YSUcc6?^BMQv%8 zFio6>O>|0Q7V@qWa|av0$e)JIFcNlIl@@yU&YVw4w6Oju0XY?8tC=y)_aBE|yjtt= zi%O2dT!XIU+0{WCl`{nMM27-x&Jp3ly^%_Pp;l))XW+`QL$!%msvigog_O2@x)LYm zF-@b~>)=@Yl3nYQ4vvEI_^gf!nriicb|PI|>9d-%-`AcPmc?x8|9N9O0?d}-ni;S4 z@8+&&%`79V2(>)^{)Q34TCylmNi?hHl^S}scZo3SP`B)e%&##>3aQE7H7f^zgWr1D zke#fw@)xnq(spU;J`Wi8=fy2|r4@FgQw0*q!6JNW@!^CaU7$WN%j5MR4JB`&uYcDo z;LxPHWD#VBjo<7B=5^DLTyH+Aq2!M>@M-I88oKxX3Rlag!S>DnK`M z|CJc4x|EieA7ZBdXT&i7lbHB_BPRG;T44iyKJXWeoCJI7P9ZYd0+bLXF(%4SQ5Gsx zMOno<6>oV9aKSmwVlsGxYBTUI0DMWo;+CaRiK zhD45AIW>BET@ip|^l+K^`ak*l`GJ&zMUr;Y^|tu&Jb1wVc}r1VxUO7r8ae2aZQQ}b zOiTJUavs5K@ZNtzjji!s_OjybgeIWoSHBssS|)0o&8rgT&|BOua6KsFW=DEh(ht`% zd}DAY_Bs0V@7vz172i#Xe@jvClJ;*5ytDR?iIu4Cd66P9c#b0BLXyN6;KzVrG|t(| z^nBXX*@D4Lc1vzP?@`|lGL?e0d#;UKS%3yKA_)_o0&__VOUQQeEsNmzDVM*gnCS+8 zK|W-#Nwx{MOV2q-T0AnLYJ{+TQ#_Z(Y4ODoH-_;H&V7j2n=am>*-`Ln3I%nXH!QDK z9ZXndB`v-EroK$-GH|O_(>%r5Q@+({J8B;9(&Xkn}5)FLU*P=!j)Wja1AkW zh^{rQCByahPWxtxM}t=ZsBrIJyoqccpazRwr@fa`6PF)fO!d#7!^bwiSZk(k9H}?F zya#fmoOarE(1Eq0yh;Phg)26v2yY0}Cjj#tJ0$VUGf>e5M+@6{RFR%1O?6$@1k&{$ zk(qWa@73H%Yx@o4&#m9{T>cP@+w#jAX|3l9xF44nPR3q$tGZJ*JcKrrBrQy1tUcZX zVgUt9kzqq&q1w9@+J+Hm+dx|)|6i=VQ+OrZ)~%bQ!isI%HY>Jmn-#k%w#|xd+qP{d zGqz8@Z~bfSv(|q0^Ze)h`*O~Uc{ASGMjw5&(Yibhfj^Q^jhK6tS&z7Io7X-xcoDkC zI{uY7mM`9T$^%ALW?j-MS%X=q(ar?R%y;@|UWa0n;t+Qe#@8(a=rNcI=7tY)qn*PN zPr#XYX=vd0iQ4Qakh=AQ2#Dn-*Mxh|1V(1_Aku7+5}&ijrl{k zq4A)Wf#KJHB;wtR809n82qPoq%9xvnR3#Y&Ry^uoJXHJ8=$Ru&{zaL?1Bu}mWu#5q z%uTniQ{$VD_}N{+=0@>5Gs4TkUX%Ef2}i54+wSYx&9mr@NU^nTW8HK1Sf0IVGko5~ zHrV)EUHL&3cY;IlAins!UD8SLP-Fh}#!q77`Qv;115 zxIu5*9aW}+62WfVv&pAWLPb8R`bNVsC*a5iy#jR6D0B?@XOTIfAYov}@`e--l$Roa zNRj5Lp-TPgm*0IGgzyCq=sgj((L2|eRwXt{U)qHvTOOk7=CU8sBni&PNKb3_$!)El znB!c!_-PEI&F>KX4OPM#eoQW62YfWbKC(*4AIiecXIS7K5sn|nj8;J{ zJ}1dbn6I72)nEm6D^ND8`|j7E@IYOfSMTh|Fsj}JF;uK^ zmMUkCM`JQd0z?5a2%2V;2>8DFPN=3cTu>cb4nHj!rY~{w>mK>vF*~JTQpWmHv*Z7n znz8@0rqcRSGn5aqWLu;qvPw<*hD9mOc$Sk!?~=dNOde8Y84J>nVI^W@al(2zGvS5m z^z-@$bl6{KIycjJO)Y>F+QWFu_;aUYs$N&uJ7{%~b5O93!R76@&Kb3DTQ2@Rzs4#r zB@Cz$Dcc-&-H;wczY(g`i~Zg$1Rj*1E@_-Hney3OL9b+rF;?db#N4yK9d>j!^cTx* zt~-ag(E4T(gt_pTyNiW7n^76ZCA8>HuA)aVMcPg)=W)s?)WJfl-!c$m399o&8d*3f z9TSPvK~gBr4QIZ*{xCbGoh!?6h<&uHSC2mHx8zq^Jdf2Z4yCVMQcP)4aXtS5#(`oz zmZ*MxPDl+V5na5u-HYk9%l6w6rsdJk_vpdy2_;V_<>Qg8-&!nVtJv9(i_Fb3FTjst zes|nMACWK@xUUlQOyh~VtWzKhLq=MY26*rov&j8SeMr$nh^3+gsE@|=*zE~3<{U7B zq^sefoLz%)&$ZZ%jEj}UO8C9xqtG& zI?K8iiE-OtT2S|bduy`?fwn4PHDgg!-X_a!v*EhRycp*gplFFx%Au#gJ@x_|{v@9F zbO&$c+?&>INn>-WxYWA~2XyuyrjclpEeiNA>X!az)N%Zix_?#jpnp~Jnxm`}75Q}D zVd8gCxE_OdGHS*rJ*+WUFTrI;caFbc>($pXzAMpg`by~|mj?Z%K~oOf!$ zNu7d#=vBp@%DIS73Uu_S##}g{tgAas*ZQ)UD9*(J8@Z|bVffn;4G-sJ~U3VW=xOxhrQlFu< zb7BJzK7%70mD%B|ay-0Kv{mp-<3MuB52?7i8%9Guc#7ko&mRA<)97;!I&9JWjGw9Y zI>nc6OJ<57L*|z^eDZ@>N0tQ5iF!d<|C2<^|K0j}JhZ6AV>5%z5E|yC zGJ)v0xkgg_(>3fO4B(e2d99+DA@-JkOuG$oz$LPlK%O}GVn)Lj<#3|(bMTKdqJ`!c zZp1XOnM|1v7`|X?@pe*Q3TK5f^tF*r`jkt0-ear2KyTHo%3(KE_zX5%-Pa9zpJ619 z*K5{w>c5w7d(!NEqk4LZ)^{dL>Ge0ZF(j_(LAw2Qjs5Qe$3#r^`SEoGsQ;g##`#aw zwEk*YeH5ZMRZv%`T!Y+eR@3&7@`aL;&6*3&0!h?J?ER}{MbqPJFwej1A7_3C@st-~ zhDIc~A1L!M{?!frUjpYx8bnUKbAH47;bz#|eVfOyZ;2vK%0pa#%{3Htbj<-3$m9`B zcUlIAAv93v0jy?ZXVpyYwMQ^k?FPa;pmC)6!dBDQP;6HY5&OCLBWuSmRa{3eN3iv; zdQBeCp=3%FaR+55LuHZ0SdV=KX8nNqGt-3!`BG|e~icR}P7MvYE+>sBIqg!`% zcLQ3@iSVd>$(`w)v%L1l?a0;#ywe$UZ@ zmAHdhi`%b$s0VvElZYPqM(u_)V-pQ^X2WF)_P*~Qwqe!FJMfm%j!ocGjh|iveRC}M zkXOWq*C+UCtB5k-k;-f{k|P?LO!Dvlk%wv>f}Vu7uM|!3jCOO2n?KKC|;QN$XUGwcvGiI-26&H(lC_oo0}W$k}&hG z>jQXuc2f}NsSFUrA4%rb#hFPcHq3}u0}$m%Pnx`cH2oG93@-`g846a`!Ciupk>kcQ zE>GOnnieBeW?Ga`kDsG6KE5`V9`t}p+$8R4fnT+R2(*l*DDDRzWfa7sv(8_<#wl># z1UU=ZSdO5ov4z%&Ho<`X4AHkIE6Bca&7Vt~>{gR<6JR~!wIreieS{0AwW^ls$y=7~ z@IuzurE?=qkSh(1IP8^`^+wC^(A1Cxzk|tJ*Qb4$(~_&+`vWc0pMF#zA{fZVXOQ8j z9J{T@(Hm%tvQl`c>RC>}O~_ZJ&{-&o{vbtxXcQcf*?S{kN`x3)97I+QXHHBsmkRqW&*M~@j&q%2C@hhp2bg&Z z3+E@S`#x4uq8Z&?wc#O3MnsW%3^8R#_90Rus-&O0$m!tHOc}wiKLHah!S9r}j4gNh zOe5w^l|@dN??{V>*3uriR31ayWAJF~maWWcOBL6RM}U8R zjyE4s{yP!fKeyxR-QXdK41I9L3}7MI>rtpvS$vCbtw;2kSeQv=-*_cmm^@ z9e@kQgCe^ILnh+S9Ur&?=;ef3V9V}XJ(1R4$^~;*8Tbhv7}9)=3%%tyVAU=)=nkeN zxMu@x#e>2wimA^UuV0mrw>Tbnd6PI2fD*fu%WLZE8!DevBxBIgMgR2n%j4C$Y0+xW zq|?)M!;Q7b0L_lTVjM!NHr(%1ym#=;m?J@wS&6&>@co)E6P{ci+kS88DOBK2$ux-_ zp&H~R2=X{x+D`;%xntEu&)Nwu-a(?r1ToW4r~Ye9N)PHzZ~v<_Q)X(4_=%{l>_piz z>S1`g$sKiJVB)h*Nq){?JU}pzCx7E9()s3zHt`fHjrGa)y4ZEhO|NI+m9SH65aN5~ zMs#=w)5o9fR(l0rG49y&TVv`b=r{26N21bH2yk}3M$p%Ow1~4pQULA4#v+B0XphbB z26KF`ADasHkDXpuwAU?up1r|Hk|uW{i^%9jw=&SQjPTqvPXbIOCx_v(QbyEMf+lYz zL=_I9d5Fu-1Rqpiw#sil)a^Hp2^>k6?O>0vvXa$dTh!y}-y?yWOnxn>6R+?52r)_u zzGc$oHEw-IS4;TG;{%bnGdp#4Me9YYezd|8S;4$aXj{2GVP8_jhC+8cAJ}_$Apv@bKDN3w(+#UfR)RcTD!Q zHeTm20Ex#y=4Zef6zZ~gak_X(7)$BXieRsnL~~j|8RUloQYGPz4M}@ufNM;3@=@d} z&n)9tXj$-`ZLpIk@N7JZPH&CI6?N0oGiVpN5Zb#eHIHn2o!|aWl`#nLJ&w2Vs(`W& zi^I|P+tibdK^2LlHW_WC)(jqAi`|^y^kcYBTGL**#?Q<~9(JHUUWRupUB4b!097toYj=cidt`Cb(=I0<0Kl}WaTD?e5XU9Q`r5xE z0u20cx8)k`@rHFF_QSyhI*t7SH`)|1H=bG0bIsx@b?WVL%x<(+3~D`j?OcP;3aU>I zst-_rqvcSu+iqvhZJ%awW344X2K0rqR8OtNn>9E;{n(l5c_Df*=PBH)nUz1BeS)_Z@useyZgGhRd(MW3-MF@J#vkQ6e zd);}ap~5jne+y5F5Zt)lWU^do)0Us!VS}?$yIy#st*LLSvnvrxPeO9$*+Kfui z@#7eguS|+hGtJyt@7>q962(Ke6bqCdckOO!9R6;x6qmcw!l-V?qC5 zZM}DOCaIgqg?h`Dctt;r-nxc~y!`jbc?5kJ#U`YbZ<&~{Xr1B2d_E%6 z-7S4g$~64=)3#)1{pmwYKO)i+y?NfR`*yv+ijzp&aW$ZH|qxf z(}j6Mf5id#Du%cJTgC9d9Q*$-v(mqLl$8E)?urjc18ri2dQ_||%>Nqh4Aqbe8H$DQ zL&04f70+#zqpbfghZ1t)lwdB%bvMM7LWo8g=?_WWn_9j)X2&m!(#vCZb{CNKE}uaW zeTNVunp_Z9R69YaQO=7(aek3WVTbGBeUi>czhgI?>lg?kPW-8eAZ+_%hY+SYv`FuZ zZwBX7)^Kk($qP}utrfkbpB&mGLed?>___?*tgiG3UC#P*?w$N80|8C6$bOg;Ls-Eq zX3j?q@67UyMKO3r%^i<&j?a%}I~q+F@JrET`J4F8dV?KnOfY2|W&6oLw*iJmc~*U* z9ezl32&FcMtM~)Fsdyo}Bv1`5NFl}4v(wAu$)wDLy>(!Lty=3Uux!MP7WwtUxE!M9AVH>*sPcG9XEj>7F>&glW%JZyW52SfIyYybvS#+4q+c^BPwJ z$M^OMlSVa+4&%1rEz8>;#*D*0qxrNghifamuj$8$>l33_35+{Gvt-G@)a+Rwb%ZkW z)G)DutvIjQh>=xneT2T+BR(nesy|`Z%I(dDtdx2su>_66=gg{MUpJGNh*h$rQuECgSwbv0iG*hFBHQ? z%X9)#dUuWNmDDfOrs@09Wz`lC+jY!U``;Wz=0pijMdyhZ`(RLiTTd2?SU2J#yr~U3y>2zpM&oRe#`{4b~CQcC&}d#7Z_bAP;_+K_5X%d0^yUkU?9} z7aE7l1H4o`D4e&ElZJ?#M3^u{6i*W5-{-T;0mmfr-zL>PFpCB3kRL3=lQMhSW=K)e z9Q3%V?K?woB;l;J8IFkv_12EL?ByF2x=95~CbT{Cipk@>XP`-QW~00jT||&DUiWMD z$%Nf%{>V4=yldWwzYtGYKco}u`ON$%AGar?&Ct$E?gOTN;}B8f z$r`FeCg3vfftI>?A1;f zo&XBr7f2LT!OADUzxqI=bPuhy>rYYZ$LhOfg}+VCq;Mml`dhoIbQDj`TPvs zjfRJi^;qCbF}QmoKNO2k;y|O!|2^@pVZ8pcr+KsPA0VwY3V<%02T=#P z!q;4M3BiU;P@>Z?7M6z-lM(5VE5jc-n{1C(BSx4JEOje((cj$j`-D?>q&1&hZFb0Z zuGcl|M%9}|)L|7V>oZzy$t-E+A~>P!PU{X?y9ySSGntccAzba325rh6@iUDRz;ATS zMeEtBp2>qUx9bz)ESQlr$e4W|!E}N6K~S`ptiNJPKOve`>MEGS^SakGO+5o=tQy1L zDp>Hcx@~y4el%R;CU+hFR(sMO*(iq*i-1zQbz-7y4mxYO1h>TL7+r=`9}CT9WKuX7 zWLNgx-s}mOon*}~XGqVb&YnfxJ~;BW-mggz`?k>a?-&8U@`eB9OZp#fYyZ6F{g)hJ zK{PSK{nxhkT?IrTK=@n8pJJZ;@9;b}87jNG<*^;1nmuxa3cua{cHWjR#QmEdy-rQ( z0kJtGU*(hgdozATEqGu+7%<^{UkE2A{YJ}-+s<0a4zQHw@dR8o(IE7&mi+ia%x!5S zIj2#cr2KOz^%f99^IgVJ$avQ7qF>@^rkAoe4o^6>YeY~poN|S1`CO;~LQ#y+z@5fW zFaLc;o+=Zu6kiiL(k4^1bP7{yiU{@OC}3kX*Tn3~)(NsebT%H2CZkb7VBiO)84Q;c z#UdLQ9FFoB#STu+tYPKGOf~f!?@T0Vj}>W72scq=gtwOl6EYExj(l;~z?UEi1bqq8 zff_{4TYlcZIHKC=`3Fa$>aa?Gb42nFj_9ra=IBs46FJES;>!*aan?NGT_3N2HM$gw zIkVb+h>zvsH>WIF7^!ZYI{vhQ?gsn@DQ~Y+M>)v$32)C^SAqO5j-dbIX#Ntnr(%oW zPwg}6R`0eO+N*NkRy9ayFd*EWD-}h%_h8)>OeIR!#2U2xpg$Tjm7?tfb`yTxhd+nr z2#c?-mtM)~fl&w8$7i$015e7GW&8a<%(?I;WFzBWAc_6Y>Z5<&?JACadALz{*(Dg+ zY>_|`#3-YYa@ZgvVh}=9X|M!9MXJS7(R5_U@{GfHMIT70w*0p7V+07${xT*t8=)fQ z8~c;$Z4I>?b-vv$J>mmh?1Jy?$cqFUQe8yaAc--_AQ=SJuu;`gHO)Yydram$(9}-- zKJ`nE*h^RATwh`q9?RuPCuBp{Tk_A}iog4M8E`k7DvgIv`giw3?B=AYgkw&%F-VuN; zfvLU{(sl6m4oEPIt@U6GMa-R)D0e%D>+7O3QMnh_XY(#TFG9E<=VRlL$E?j!6-*`6dpsu(WNJ}wmJYH9T8J8hu=1wrE=qN1IPj|v<$cbW zOSkOr?<1Hf!o0U#_$Ftbhnz^YsrQ|&(bTD?1@`{K17I^gIXwE+`ZGZP@3j8@Pj&Qv zwUkp{eNhfj2ea8pRtz+t0>0vu5qimt>kvXje$WI6pgI0v|I>q(0+8(`OHbush8EV8 zDhu(WKodC&TrIOXfwd+SU)U_Jc+Y-0xt)|YWp9gzekSBjethtra-4LZ+CTgBegOML z`&89UY(dLcoTZp9x7xSjHj06#dhf)RXXT((2YC9iGCx_k=p_Y@ErWkg|vuVf`PVau`1cL}g%^Ofob zt$ZN5~){Px4Qxe~eDc4&MYo;k7nRz&SWpu}(~xnK-*6 z`QTwBg0wo%$OVnSD-tkmX<1rvK9-_6$~HcuD#Txq+GzScU~MwL9+BJVSlje5zl@|- z!$yEM<0Hnhv=8g3`VCW1ovfO`t}EZh^zJu;>NEr6m~;Vip`S{<%u5XiK598yh)k>T zbe5nxbv4xipm4jP4L=+bgPOYwu0Hyr;b0!WgYSdB+*eJC=!I$ zqGBXFzeGQd%r}Y%d29s5I(J>X?BhFr87Gtz*CfUKHqYuSWj z;_qK6aAgOFre3QX=vp;zglRn_ z4U``@QRXwY!Qc^`<>bMM9Mndw3U7h)BlNt8)D^U@(KBJoAPh&etdcN-zLw$RSuoK-gWFhVg8WUxPKh4gy0f-nQ+IBfC(0a7wV_6;s5wg-WD zJ#q`F5AYpw*CJ|ewSTib7V9S(Mi8CQn*J!>Qs)ALiQkBbU^Ejz6`w`X0fO;11Q@`dX>!=k$&OI#dFh;_(GiNk5;-16vvzq)m zOy`Mga-do6@VN)rZc3K!fg+o38O&iDbOV*`f2tQEFU#tphYt}pq4v@uGDY^lueIas zlbq`66r=H5Hb-4Y#-Y=cV91D`fbd5Lqd}>1Lj$a~@TFdT#^q^hsxo4Djo7Nb`;ZZ6 zqP+Q`{sNqk;;$4LkL5(H6>qE6ZJjhC_#h9$wkQn^>txJKX3T=9(S+M5UA?Z*H}VGX z2RSIwsUA^T9*By7iYg`RAcNtK6kY9?)Z-l+7?c8A55t`BB1 z)O})vN2TyQ1glty_n4vN<&5z4k$wK<(iBvwc~|t|SHdnQ)Ts^mt9*nu3j8n?^8g+?TNz&PkASmUcqoIANHo zH3$Q%Oe1fc1MLBu-A!)NJGTxcw*w`2dm~r8i_8D>iTf+aR5viAV+RgxeP0F>?WSqg zy#-<6EwUN68Zz9y;M36_GwG%?LvAe7g6`S}t}0s9D=M+WvD7NA<6yxm4mW*Be$5@) zxkE4KF!l5pBh7@;s=bM(~ixqnD|7n$z5rX=L->0n-4cwJzGeXcT+5q0 zcc!k^;Ms@%q;l;Z8VkBZx5#`L!X@F{TJlf-FOG7Ir68t@u$vF8jb{9KWzmtZOPxn_%l`U_iKk!Q%|?%pu`l#PcD zqi%j>B`9_9Wlv3Tlwnzg$5g~6UEOJsomXYvJISw$Zx%p18qxMvp*p^F=Py#xDyblI zuxBuljN;cp7-TCT`4ycdNv|OEH?e%zV4WN#-EhNIW<*!8V%uBb-+8uj7>5}J86D?B zp4(D?z8jEfv*T83DcNW4oaXI&IAB%E4Yl-pi3x9Ow~XB%?PFXdMKj-Y20Ui%ziYFp zps{;vFm!VtWH#YkHI1Zy5T@VwFo;8d=^9#GGd1wZW$GD#Gz+kMCvv+*TDR+1&;4a=TnPi=^P|INkF6scNkzJIZei1%6^ms%@q5Yitbn*H0ugVmv z@IwS5$EtK+!rr_ubnUp*{rnG)M;q#`B>Pt_E&S#4VEo^&NB^3Z@Rfi_|93Rxe~p{} zdxXN*m;We?Y+@&5dj(KLyTZj$Kf4Vh?0^_+z|rZJDG?Y*XvCd(lMurTgbKgiSkrwK z%%g5aU=qK{CNeXgO)px`r!JS+e`#qWR0hvthqn}WrAr(?Q>97Sz$k60H|cKJgtI7J;eUBqvKXf<~>MLG@^B8VA&!gudDo7`y7G`3t%ea4H*5z7%rLa zrI=70pRFl3_H`b@Z8OzYZjBF_=az1SyQa7(Qn94+Ws8kH5ob(T@2$8{oHSjNOeIO5 zmKibRYJJZNDAVEJA9SHW_&MCiC!19r4br{P0}L4~eXAXvf3K>IU` z^sTjhGUo>3-;c)i_iqDCUn{Wl^`x5p|GWx+m8kz%1SWB18R>t#yZ>5=e?CV|{2H75 zw}0?k0(s5$eb3NhX|Vu4-02uryrg0A51D|gk6);boEPI8g1K9x{g%7X{J-?N%~@U~ zBI+R2OQ%QE*H%_iw?51cALgpy@qtkckR)vk@HD?!HI;cZuKdjWeU)%EJ_IOh@vb6u zp}r?yxOpPb3i}O-nQ63|G{>0D3NIoxfIx;K*S(%B*&1bsr>rg4>4Iyr^4bXC;N2+> zx-0nEfq@38u#o7}IILOf7`8%8Vp)Z=fGXLjKHpti*LjmaSJLdFAKle013PN#oJ^BP3y?QJgTy4TLaXNqje>kq)7^#fvx)B`GdMKQ*ROQjF*P zF|D^uOGXPJqI9hm5Og5XfzL_YY7pRgJ35intZnp1OAnQPKHC7H@srA%rZ7Gicrw9<|*vYA=;9y1$WX z(3CYY9r#JUl08(ie;su*S1<2=IYQM)uNKDOD)%}U8L59fJLQBm@Ft z{r`^PKLnvb9oj2h&6%G(iB>~FS2Ck0-bZ1sKgoK`1y9C$r9v+>lfwm#TOyOekH)*P zOLXx_GJ7wd6x$k%4Fj9HIu-=Gx5XSdq`=F~7Uz@0nuUP|h* z0RVPoE;V3fo!hIvi`sXa)b#sSLP zYq}C9Goq`pQG>R-OR-(^k+q$inCp~7p?=qJNa60u^>Ivm&Fo%PSt%)2W@@TM%F2em*&#nYMIlkfXz>H8kfT7UZ!KCtK0!0*tlIm^Is!SD1PMPoiI%1P>_c&)9n~Xe=t2fKa$|MyA zno7bugBkc&uLJC&YoFKIgp<=qFux0PYD&D$mxDkAy;f_;_o5O*iWJc!c@pA-h|@#DM%00tu)5OKx5#J&=}26l1#u* zqy_X!7ZmP}kT4a|)@xPODP0F>vIj-XTnA*<2DUyciu={V)hPdnwa>uCy5Qg&H@0lX z8g7j+g2Yo)U1ec8jYx@iAUqF&5aC0yc5$%nM*>PqwTOlag6*-_qEO@*VDy4>8#%y^ zS$9l+gmGeqZBd?45Ri&(Rm>xjeW-V;5SW*+Ow83JFK9@Wom^TGOTSfhfqh^ z>lXV*!xT!A7IxWfL(UZ)mhc2Cr+8EvyJ^ERFFpknV~oiXeY-+$ATo+-2($(2jrk2d zsDLeKCZ-TE6}Sq2Bxf|!i~^-LJtmeD;K$eM?Snb2meAy{bw$(r`_=u~2*du5K{V~~ zo&&RuX@2rCiJC2Q*zM7$j_RKaSpl(_d6US|nuvBq1NlL#_s@;YX#r%0bM^1^yAbA1YoR9+`-b#P6XSoLmgbWz zHwW?|Y}ODJSI(qYLLG%tkPrm0J$08j3Taut{*z+dMFU5sH_C%Zd;KFHS9W?CQ%8ie|syDFe z)MP-dWQAm-E3&K1@MC+;k14CvEqk2r_xW%M4{tbEYeGY&YU*AfX}@rFKtNX7*^4F`IeKg|N5 zb2)O2w&y4wB%#+4 zw3#JFp8Ji2$1&F>uWv!{&eJg{$1hd|b|bZfM*mI(u9El$?2)+-@W1mYOkC~tR~?;K zcq6r0re_YcjRL3d2({pBXCL}Bb=a($t^%1kt!;^Kn%?lc*Ml%!C%edNGK^(2%Z~&- zKA*+K%ij{vQz(BXPr1u*H9s6XmVD*|N<)wv_ zgrFBVb>k9j9Q@?iNVY;31MO%aq*%a|zMftmam1wEl<4>qouUI4$y%5On#TuN)=xPTmZ z;x_ksJB6jIGtS~s;w2$FD_5>hjgp!7LK^fqTI5*ijvTl&NAqN6>KNt3QQ8&BTwQ%t z>QFTcuj!4_TlVhltyhmmH)%@B_fXX=0XLzaRL8@MEAq8dSnpvD{bVZjLLDhQIZI?x za|O!QMh%5V3u=c9#4re{Q&REffdo~n`J05mg?-b>oIs%qTB*k z;%f|LqTiKkAQ3NnnBWV)`N?MrJ*i_bu!pYW2XoK@82e*>Jn&0vCCiq8IIh;u$P!1& zOa*P%y%suwtz2~BizWq(0i|Z@%Oc-7pBK1ZR>UdEW{^9bl~c9rBUvNX&*WH`GgdciF#K_$<2KPMTdyA0i*)BQlB1U z8KQ`@kq^3B&(=3InVA;4;nfXn6ht?Z*9<}y=N!PvhqA3=S-!I%O`gO9v#}e|`(vD< zy>WVPe_G_N2b<^vtrBRyIc({hWjkUWf8$AOkF#B6aux)jN+2;Yc5o02W0A&g$LJt^y0nl1DLW{4H9!gaU1C z(0kb*ti~$pE3z!@K#$`0)tK;IwaXMSo74@&Yr%Auq#$1E*?6%^&_!Y@VPi{wUXb8; za@sHG75VUbL8+^>9clP773*}Tz=ov9(xG8?HSx#BR3OABQyVwU4HfwN2yS0yE&d4k zTr$_y<0j4s2?LiVWTVUDx08Ib#lv$WL|&S3Y)DgwEtXa5>eRy-b~Kvn1m3^o-iwyA zqgFKO>*&;P2Ho3;oSmx&hb?kfcjlRQK!4_p?0Lf8!6<=}JF743R=rWvze2KlsmF?5 z`%-=eB)36))5u#TMPNf+c0r~dyt$$|*ByS~tA39%gf=Hy74p;pe$@s(|AVp`W^bJI zK%a00=~hVrb;g=V{iE}1XJ~CtG^{N5P)n`V-xdP3k&$P_$;ByE z6n#3S#wR<16M1CLB$f)?;rhY!?1x?{?|$`xCP$*Kat+$ykza0W-d{Ju%%Z5v@0936 zC}ua^Z`UsUqlH|o>w)FD{~BJz&#upbM68Q)ESR{*^&mNHuL-|!bf{#9Nk!C;d!M8k z`ZGIx(O^4;A{ZtGtg>=O)dQr^7sSCQu9eZDGmcLN^95#Ndd?{{D`&}&&x_X^@7pf= z)!++KM{s9^x^Ez#z!X*T`OGAR@GGNyJNo46_tVE%>0+5XOZ_q=+w;NKXV>e4o(sy> zp~%rPf*k4EYb;(SCMmTj(aM=T;+R% zwMlzAhkRo7z=}0a&TgIE^B*jIDsrgFKOg#=;B4;yX8oiB`FLll@Nd4Hr}|k)$VWiI}VjzBu~n0jst>@lJ$yljxTA8jf%)-=hWJve_D08}so^1@p2Gx8X`D zMRu;Ex+mu>y_))3MqhDQ@F?F~FXn>rQX*iId{7gCw| zZHKD{6&u#7<(lf!>N+7bhnwBKbkuRZwko&Ou;Cg{Q=w?0O)$|}1$7imTcr}`cJpkC zl5p)%+V0N*Lr0LRLrN*by3G;z>VSgfzG%w2Fm8J~oPk}+kU->6$fwvu$XBh4o%$= zZLEi3$e!JIf&@k?ztqxXPc}AQzXS(d&pj}Xa7+dwEEDFMCB|-t^ z!(4?Y@I>S8tTVb^*SJgKE?F>Y3#QxN7 zrf|9eZ;JO^yeR>z$bbmbY#B;yinvtx#NU}Kzoa__Tq1=?eCUodA#izo+_nZGBsL|JmlV$@^gk?($03y~Pfcl|N zsyzdS*;Ad!%?+R;$ZP^JSg4c~ZN?I`?gv15YL zu>Td!?aF=h@inC*!x3Mu>u#SCC^1b-$URx3W^LI>`F^=0HcXzTbtq!Zw0&1|vSHw5 zkFc(E0d6UJ!t;*>g}X*7)N38%<2LU$1=WxWccBaUZ7t4i* zt7NvLRw(zVh{UTpGp0io=8u}Nb*Ck(Onc$!6TtMQ7Q-#0VVW+HL4e#{IM~V;_2d#G zw!^3GUTs)(7EOh^mae9`h$iezM5VhyLDBra5G^KInN|QEbxuz0^&8C(;oCMD&rD3V z7vcvGYC|?a!-RQnmwT7t9?>p6)>}`z$v_B|RuUP@Gsorb~*HP$^ zHZb-1MZC=sTtR*TjZEeUzSUze!PLQiJL>a|+{8kFhQOtMQ%K6&LpJDt0q7GWD}^*8WZH?S@)i}J9ICHlRle#PISGAR=}z%l#!oTn4+o^ReT zGiWzrfJa@f@J1h2E1Zc{-?SPl*TpNQnvH0?4_rH)kcRZ|M;>_9jf^nJAN^X&7aMBD znbxnjZs{|-Ldb0K5@G3-v2nSWB(uN?a5%UX=EzeGR_YXpg!#G}EtV!Rh|8#ea17N1 z;|D*&L%6RIB2`zrtu+j(2tcyUZq@!|ut8iMkdi@$Jb-?ykjlzNpShsLq>70<`N77; zYfX$65-akl!XF@K%HLs*kNqe~;F!Nhbn-E;lCBUku%dDn7Z*b$39QJBtumU)h=Jak z)Fx}<0AVGW{)#*`JRU2Uu${MG8M}P^rBHy}m2YwQP+XCxN2hNT9n=!f=vketVHd3& zkyK5RZgC+3$!;(l{G&Z;o7l8|?PBKILxC$KT|=;6)2TXMaEzSUTr7%sG3uh?N6vCAwhq zPq{(8m}hbX1izgy9wiAnf=P8p8mYPGO$1#T`^E=khTh$(iuroE?=heltE2Kj?g=)< zK#KQ5?0clS-0ad3Mes~@snpA9MoCE+Ylbt#HuJ8D1f8WAD0-Ozg73pGSS@myX`SyIuG)my)jCo|UNZ;Z)sWDatNu9_*tOD!4wGmF422c1RS-G$rV z0+irX=+puwha@QNG@d~59fYW`vvZd!gmq|U3-%}p1(EqC%tT^BAL|SO!rg2{s^UXO znFI90xd#Ku${vSn0E^aSgDaI*qt>PI7N(OW5(}S9AVFTy_M}c{Mv;ZHC-6?nlOwI4 z%G2SO!}RznQ=|0Ryj!kprLME^q*&SU6~(5f>O}PYfZP zBdQzaxFZ$qyl|uju?Eed)T76DxI>3I7#Lkj>u&8hzpt&`uj-&cA+%Z( z-tgjgDLGtRZy#yPbjv0wPbBW9BOU$-9dZQ8T<%cpxR9SY`;7hZ7#KaBBo9j*dEXZ3 zmarZj=0gtI)s9g1NgTf100(V4Lkw%#{oL>FuA$|<4pRo>RM+T-ZNUy(z)h-(F?;xf z--uqeJM!c>moSd{Y3sqNBOWwmxhuA{5z+pn9MbkECe+djaeh`3m7L0l$^e@3zH?Wn z$#st*4q~m3(;Htn>jJsv9yY!aIq?L^ zH`>xS|HN>#-d~M{-$x8ElSs`1I7&7X=zTa!N?PzoWZ^VL?mMrrVr!uc4oqIK z401}g6?*uwNo6uK1!~Dq+T!N;^Jx@v>`uL+Y!Jvkj~nd2-0~%3c`HPAW|$7E4aYDA zIb0k!g9wrO)k8Ab)qKY3becVF|de*DHddbu6R z#*f8%zEF$<93LacOU#s4wk3iu4>~#ELe*pjEK7ueN`&gXxiB>sA>%^scyvDXy{(1Y z0)7X2FHaQ7(T~;q_OvISz*Adg<02Esz7!wrnSFH_ofi{_@)v#BsZ8)^pGk$MG;@hD z=O36#V1CX>-yNR=99_9e5gHY(Hi(zEbV~^y)s4&!Rd;eX9DT-K<$2g9}zIITve&H_e(<0 zRqCZx3&p5T`O;uu14ma$dOLTK>rGW>i5%ZoiO!w;m1yO-dhannTK3(9#uD*P1OIRHv77DaZ4~u^pX3TID`of`7MA16oXyCBkqZ888ggG=Dt*NI*+I^Cu7`(vr^nf@PWWhNKmCF>1X|qMvMay|Rvt)%mHd zYg^^n|3le31=$jX+nTj&mtDJT+qP}nwr$(CZQHhO+jdpgJ@@p*>F$Wz54kcjpE7dA zubE?h!-=N4!@|zST+8P2*S-m^YNpk20)d>1#!hr^feTl>CtpZI@(EiU#>@csi>!mo9Q|bOnh6BL|~iP7UR9HSd_64 zjjr!A8@WgWez89QDNC3U4ttX@bz@e$r=+Q_>S8u}cs+O+#_#1=U+U^gOWcwKil+45=B8!`>FF(tDooXyc5`Z-2U9aCIrlDRM zuFbipmZvVSoOK&+iOVXj{;;X6%O3K3JzHBw(9p_)`II)SvR)Ggg)N0pQyjd!Xl-k& z_morr@;^rhXz@h;GG0&WN~A<7lQ-k{U#1FH9W(xNrY_&z6MAA*zdKO}-|TvZelt($ zkUm#Z5`l19vz{QvTmfjbh1@)OX^w4&#{r#}-~-Mw$kV~MDD6Kb1Fv^oT+TG~@HY%D z+y0_k&kO)+MF$Q8YD;7N$h(Suo?`TkQD3?SrIS8S3P5Pdkz`&~n~0G2N7IyLltraw zVbRMjb;jKHF+P;C>imhz95#egG2fpIG!q}i6{xLpT z8iv#E??%B)gP?7JcICx13fBy`yj2n6BY2B#wyTlW9>3x;* z{DUy7BtnzaH=bm(>s%3RBw=55*=>dNPz@M;bZ1K5yipIngYJloOwBg5tW!W^975ai za_z|Qb%xArTr3W9gmqV(e3+9MHMSfN3xGnE0&A9@7*10)hr*bXV|PMfWP!=E35H2E zm!`GRBx3{uR`3hO@Y59CMGp4-S29#FvKBU@8>2VX2U90ObqZWR0xt`p)ug zntv{>PJnRHV333CXU7J{MqO6TOftkpor|m%<&rSAVl0n>z#NjYa6ji_4L5-Bh(<(u z+2q`dp{VZ)NVDA!v`KT`bG1fXLTH(bL~T!0WNY7`raQYf49IcJT-Oa zQ}v!|emlXev8zPYEU}U2ZoMrVNd?TXdy%^mYs#Sj?8Z`{(f%@)bn9?IC?of5w4=}; zTapV+MFvFWX~NrbM~&vcaS)JlT|PRDxv?rHX&rZ|IxVV`7oy^|ZCqTJgJ!VYzOd!w zFR8j~g*j7wx!k3|9MH=JPV(1~>k1j_J`I3|+SJtw_|G{* zCy4tez(_W7YhjR;k$$QtvWKP$xTO{Uerd(tu-q{;t#ec>!5X$UE*UsY`X9CZuDC0F6~L6w*O>cc$SVvwGI#K z(ACq+vgL}l^RF^JE*!yU=ztBbf@yTAbdFmW?|FqBwPx2Ql~=iu81^<5)W;&|d}EO@ zjhT&1)qWt++*(=bh~w2mDElV9NH}mvT9zdtywKU@K=Wz$4n~#fBF{q)~3?&*gO9$-s4NZlO9BYQ!fn6*m4U= z^r7&wsx}Y}E-FMV-6Zty+WP$FvTLc8jD?l~=nXo{a?S_(LZI37koH1xfp?+=^x`I+&Ts79J`Y@r?%q z^WMuQURkf@ZD#Pai3;Dj3Obj=U8cL|N_p^Y%q^|cznMUqIZ0q_&)^hUACygDm8`5v z;i#&60K`SF%4+qwE69v3g*u>;%}^pHQ8< z(qi-5*R;CRf+dtarjp5}_uF8X38$oPvp-&c>1@#%#G*cT+UU$+@3`8g%G!dtS)RVO zw6QX2SQV=1Nt2>S1q1g^B%gePIkilUYT&Mn4;(9@(vtI0rlBX3<~(z&Uiu~$#S z1^k83*57$TvH%$7<4GX;G4>^^7@-U}iN~7Aah_OWJk;2xUPnB1ri5-|!qg9}%@(vk zWy;G&7%xse7=6Dj$<%t_s+2(dDK!6&f$3mJ*_&SeD_#BztDQ&uC{gG}!=eZFRVV%x zGhKDv>;TTLmaNZ$E4WW64}Nn{tKojO&^D*uzO}(jub6tXLz0#&?6$|&A#j~Ty!$~L8G~TZn7}EAf z$j7yp??U-kp5D!uTth}xJC3vy$zO($TmU=bLwFDaMgtctR{$J3mlqPUa(Z572WlO; zC&260z!o=-r^ol3>rZ3Fqa?Xzla}hrRKNT6hIHU6$X}#a~@sC(S4seHp z%vSbCMEo#^Rqp)DZa#nhYbB(b%cSbzW^7K3`3YWXms|MCJ2?lmHZ-M)iFJtn5$=zB zs@Ss~@mPUmzMZ~ZdYC;(mMhf99XL>$q=;>D9h*oYcaX=OnL1kl=pCB5cXHLtosl~? zLDO`xnmaPjkcD6kJbE>~Up=W47!QMj1xvyw&uxyNBaiif&tA{e;y!~O`MIQZh8u1r zwUJ-9uMY8TkCJ(WkOcLfi*Y~<|I-wfM5vYhid!RCx61KtR2!HMt`5RvC-}m`zX|>I zg(Wc=r3;hdl5(e|$Hi)Gv=zHO#dt`SiBlyr{!Fr#fBV)AR)(TF+8wjmv1}MvkXUWq z3%7}B-&q3+mpJGn#NO^Bb$&Sk2dWb@tE|co4f>c9uWlo(_it;Q(QcoMkpojQV`i14 z3Tuoy_G#jfVnOw9`%Uv<6*&SVMbR41(yGreYR}3V&&t2Q>d)3}QTc^kz+@g|5^P47 z;a7!P$m=V_hI45aNeR2^NbhFKCls6-IR;Ok|CDzp3YSz|o4t|}-_b1|AAml98~22= zopeNKEUIvJdTDpGT^g``z;+6UTTt&+ZVA?1p=*q1PtDm`RixZQ*W~ra_rrJMJeRF8 z{(h9JRa|L)g(HgM1!xyiuZ(r_@S`D3#`i;-cHX1fzmiq5>%2x59AO$KWe+y>Z`N@I z#b|nb(ZfE@gR8NtVJFk;@!n{@Qj0x$ZIgQUYW=`TylPE@9vkXW#~D5TNgPGVp=5z% z(2*3w`Fs>hnmUTu@es4t!X5gI+EhthJKN#^mm*DVwe*9tFex)>Y0n@RRpFyNPXZ`MgBIqld|R40l5(D1aq0xvPukwYsg z&k5HB%HbJ}TZn7cOMuQD^|M9xOOKx2CzZs|jbtwSWX4J0DKW`aE9qZ)(NKunQm8wy z=DBq;aN9}gjF$=8KU2j^bZnD!Bvu&z65(!qwQeO+4XlI7^F0&de*TNR5uSo3`56WP zzy|yObk0__`Za|APYv|{P&aC3tT^$20)f2^)Ct`d1gj<^U_e6t8K!|-MKuhF>f^ir zO9GP|1W?4Ezdx`#RiKs5JT_0Hrd_eo6sAC8Y4tw(_mWj=-lg5pY~A{9p3!2RNMq&2 zz+$<`dh4fchvW{N)~M(0<)OsmrtM_&;dRGh`Y4De+bcP={1sQh$Y#;S>eaN>m=`DV z1AlCA&Qv_6*ps6USu(m1e=hxRz}@kq`yaZ5lbL(f=M#E1m`m#$Gib&pp!U?vtN!zd z5QMMp-0X0o_lvafUfRkKg!gV+Pr~uW^`4_u-A!P$fjYzdJ}oV^BWEFmI76Ceme!Zx zW)GIO7Do0UZcP!}TyavDoIN|)4=@sh@w|E2w z0l>KRD0VF$1aMdj70Yd}v8|@$!p%{SPvGgyv<=%DWQR@E4!cn#nk(R&`f;|K z7||o|2u|+yrQaYS)g>;!^Qqq=SGvuIF%}bQI7Gl!cpwd} z;SY}(7~C(iKL_Z~E8?SQ6ZRY=vJckP;wkl!xpu*{E-nSL&cBhWJOvF540MQWtl6i? zt@3KxnB|Np@2l=7d%6ja4dh52)W7hVHz&P*)Vu5q0IiYMJbBo}riLzhT6Pe-%9o{o zmd*CAQilXr9}WVn?j%+YRxFG+M=9z7KYu$bt7yHpj+T`1Ce54h<;aV_6?H*?+PI)3 z`P8f8U?S0L^ky=o@>KcCPRIhkiT;F2&CN+xXQGnp;bWpQp%}*0AkOKJnih%vgwB7I zzk)$oFg(N&ANhh#{HOr~<#Yo+soUSK1{?WD3C%ic+X^#`Fhzsr9wGRX;st*}XHclA zVH}6Q(?74eIT{PS2x@P@EX(Bv#xYPaD3#pdtCC&>0EVJPxFGn@Kr%u~rp#U*Wg*TL zKe%E$!>h8KP$7DY_M&b@;!m@^g=2x;^+&ys#Gd(?<@CQUJLNeazuF8`57mMQW_fzrw1*=(p{Yo@@R;0xA*664^tD@hgJl-_Huyz7WwT?WUvDj%cLsQ8_Q z%{9ODP55-@vT|dE4{5=b@v1o;4E7x>_QIyJ337G``zOoznFTkU%{;IhVs6L;F{)8iwg%WBGFF+?P8FV)B0#KqZtHK0yHqxG0 z`_ly3F`BgbAY>XpX=C1%kaN%Oxw+q+Pfkf=iaj;%564s7O9`!W9%)wTb0TVtK#d1R5 zJ)(}$#J$nsEM^!b%3H-Q(tqQfCNq3&Q?rpEqXH-)iV}tybJ5Oh={)NZ@FidCj~qcx-L2G_cyysAx8(=&aD_6q zMR|G4f=eMPw~%u>3HvmO%xpC#9!j&5NoYO!*bG` zj|9GgpS+#0#h<0pbaTP;n>6*Wc1_`n1<`*Y+3C&m7wqNi&W8Snu^ZyTDbzD1JcT$o z3;c?_D7W8o+>5th)h+e%!JI9)%Edz!w_i!~PvvJgk%X*QzS zBvM`*lK?090GTHkT7{V#nV4dy=WmO}cYxYpC$$P%s;9n%!ztrck7wNoKu=`>X;Ws~zY%H2@lcI8?92k|N9&2jaY$s*PY57k&&S*FiS-I`1A!xfA& zGT5;zCTeaP8$&fA!xe3td~BV=qCaL#AeYyFe z8$E~mCwS4OxNTC}o$jjD*45{e54%syrafwySi9_P^9+LK^-Lx_%x@J!jB_=xrkxU#Zb=(aT(?XPA-Zh{KYghPXuY{;Qm2OtwjNM6=?10c@;aA? zenF(H&dHp{nyPDkitcgcCGN25evp;~`9g}~ZizAg)W&Rzp=|HKkrG9O6*^P=IWccU z$#49VS;=ojsVS<*5p+8GX+4k+M#*ky$0=&Z)RQWz#}sruoAf%sRdU&M&0==SJ=hN| z{AU&k^_AXT$2LW87YsfXlRAfVpVI<)S|UxXdR#EB3HEiupWP*91}zQ`X6CE{Q!xq~ zKv&th6eOlQKv<62R5=#6a*el+>V#4k6Zz1iC+mz>v=PaPGamDdUhR_wX6tv9>rVG= zcv2oej_Xop>!2kI)?y3a^byZ`Z<}~I9rGC1Y1Ok{X6quw3*70&UYrrn0NeA|-L(afWevQ=8NNpK#{ngb2kVBJK4|o-27LiFL&#>l zICEZ?bjf>Zg`MZ-hjxrdKSNwvK()#fF{9uT-Z&LAFE+6qN3mO1na%JCXkL(56yM2b zb`<0|b6V%KnWc7*SU($C^mE@9>j`4+2~h4Sp_n^xvcm>meZIpltSUm>muK&# zD9uorQ|b(^K1OFByg0+P$+u|rb9coEV)IS$0u_1{XP?A7KeATuS6R@%&bx5+wcZ8V z8Xa&I!5;Wz?=-L(WcsSSC(jhm2~dW(y#=F>)C2|Ee=w`5fE01$w=)IF;+Baa+a5Us z4?t;OQ~cL9)nJ)9%vE&YxURq~Et8a$YabJCn-_jtAgnoZW)|b{&B}FPM~zu>GF-a6 z`dB1}>M6t>arD3hIr9*Hg43(u?w@J?oj>w6&)UT)oZ_0fqrBkL&-fRk9V9K}^kCE~ zhnL#}fbD`1X+Z#>p9KC<0qmXt>=xDkl@#z94d}1|VEx3DXBo!d8SGeC*A{9R27h*d z5ymyMIO7y**G`#j*Z|drU066iO*M*;<)}2yutc+RxyS*k3kPvc>3~hD#?^A4J)@Nx zrTT#tl8X4?BXem}?1QuR*G6%67e+IRBQE8}-^*n|z8y5>P+K$f1K|7P&m)b7ziI;b zej60P?^jwu2_ocdlCv|0M|ME}IR;^{;{5#zWIqW8z#k@pSrdG6Sp4ja@z2g6HkyIY zFQ|qU!)YgOo}?#WNDJ#=q?*48PtKRfDK!s@nZ-EYJ)iIY96SCNaQJ0($Szz9Z?%J- z9cvS&eZ*@J^xTI||23&^EIE4>>W!~P|{YmAv-*)~E6vV7JkR>v*azb<)b@ak1 z`iHUvpu*_F&B1i)N_cowTmvbF{O|ej@(PnvY?|dT2m1;r+H}%o>4{qLajmMT;cjJj z4U>i}rbemY7a~YA_CpPp@}uFAu}P>$%!ka;bIWw&J!~lxwHKca&D$ZPR0Z@Kd+2Xe zRc^2S8fQTxZc76w({ADuwz;5?&_z*2;a7)2Cd4vY98ZhmlVwW5?zRSDdb^&K%c;nc z!(W;Hvn_K*o}gS)6sPRdd(1uIkFQ#?+5&d3*!IH~qyRMq0G>Eu-_V5jIQS}^VtRw^ zuyftubKh{oFZgRdk>3864+@4UIRpWpfM^FPtyMkzVXx3#k@&XJ+r>D$Qcnbk0XhpD zuh}Cnu&>&^4k35Fb$fgRuBwN(5Ys{$Su+^7(Pai4A9V!2BjOwur|;pfaM?s(t7*L- z27wW8?wnlQy+odnG;*j_!0CQ%jKXiq+9UB1_=-~(Zhtv%VYd1(mQFdnQd#s8C791X zO7K%*bt$t})oR4IsQ)UTr1TX$A#9#%ru{)p-qBVz=g^$gn7Mss*SHSuq(fITrx?rF z&BC~sxJPNlE0R~NvLUJ0!}~h|wn%F! z$fi|h!NPB!I@6_dSGh*9-GM%`b!oVUlEz!Af?4Qaek$(?D&~lfu;&dKiZT78y;bR$aC|^AROKw(WA?rn+@1T1!S$VWj8{aY8u~8 zR$CvnMhc~mt#?@CC)TJx?6HAj>p*UkE{v{uh%B7b2ivRUZ?t6JZVT3mMgz zt$~}!nD%c=s6xaHDtmnmJ6gE?ryZ?_h=K?*cHtY+@Ax@bihm)b89%PQ1jpx+*f9Yy z0NpO3+^6YzoGKJ%U~O*`skct1HpJ^vFY_El>b);RyTy5Eqg zM&Ma|+*+^AA`-jH_qTw|xs<^gNTtwh3>8Xq32vk{k)dq1Nue~+g-KFE0J?MRcL`MZ zmbmGF0;oBgJQ8zQi_b21x|p5zcrD6c>b5UE&`N&wUj8xS(7C$a1Ubuyp@WJs!%Cw0 zYSGdGnBzrg-7}NQ2rHvm!3{0cU#kOp><5E3Mr!?SzK7(HC-sI_79H7WA5iuFA0s{^ zr2(I@osa+`U0T`;E1+{%P4#5ekZEfK9iN8EsTC5w|A%EVhCtW>=*TZz&43^n_BI!5 zD?w^q}a%MSX&9LI}Bv&Y+;2!}R^+8xTa#7&zufUnwr_JUxuq~!Ja;^WujK`C>=XM{qj za~S{w7krn!hedRsn5^^2AI8m(yYw=Ud_+l`66ZS_7H1iuXYa|`zeV)c89})<8tJ)~ zAHqf#YIl4>NHWU=e+p|1F!~v>r>T!l!>#^73H4oLg=P(Pza+*p=$-1(F?9 z)GiedI}K9um@KZC9)t4sj|>B9pFrkFv4rf4?gfwt*{~GK8Rn6z#%Sj-OZy z0dI@;P>0gyM^QGz<$4Yaw5W?0?<>8_xo&w^fKJ@qN{FLv5_f!t%i0LNC$-jljc60X zTXC4EO4g`)2=UB&Vm|otqc>8Tv+_=T{7t&5&_!jw_XeVd2hgoC=!4i@mI z80anz_~!zAZ%#X1&ewn00uNc>s3P+V^g00n0AT(9l~iQyZJf;v|8E{alA@IYf(j~E z3bdsv0{BEkzHDB;6#s<2_!5LtoW5MLE;KM8&N@-0VOFeBGVs~!oXt1D7e>|esHyPC z%r|Mt$#p(Bp@OdS@paeCMB545OxMf8i3<)uq^=NdgE2--6&8iUBa66jAJxrjwvETI z*Sh_6vq~*V&nmX-b##NV2YDbbKQS6nMW^*-6?ZdaH-r%HS}im1`ebk06$g>Q@;WAh zX%_7iPXj`O0-IknQbT&i16N7sbm*yT-eDrv4>4bS8L;1IVTUo!DoLage1Su{WdZBd zuA2v0I1mZ!mx$bHCZ(843GahEUFdlc5(*Pkz6`E6??0pzF-M0Dl-6uUSP3>|8?mJf zeNlWTh#fpB(w*(7eGk9A0&w|SbngLls4)@zXqL@^L=7tT7ie?s@s$^GL z#|0|YBH#&!L-(ChucE$j;mHI#%!;WQ(@@cR_@2|)+V<#kR=n8e^)V)i4bBzkk#}sMBCuH)9{4F#!bHpgZ??Ddeca7hDCots` zN4qbcWl!H(NcH>=yiPF>D32J!TJZX6Ag?GTP9Bg%c-rHJ(IO8h>reZ1JZHimTTcfR zG;uF!-a3QgTGJP>)u9 zLGy2fQlY=;l3#QF{Jt_-p{2@}VMYsh1yvh8E;PAb{0M&~`j!d2LMW2CNplLhDpMK0 zIJd7pDA{FRQ0c{wvCl>DRc7ia|9pLWMKo>$xUMXuNskJ7<=b2cRG`Hhn0XlBI3QSwxHbuP8g_19z8~5)g z`imlzerR87Zv9B4{=?bO;No7OKkY#5wkV-Dafp(j?ax9KCQb6VTUWwk31TE|DKK^M z8%2XU;kCg#33w-FVEr3F0Xftl>N*%Dk#kHs$GeWJH`K^=;3HfN;k-exM~XSUS3)xF~ZTRr`rUEceJRzY9 zamukVs{6ka_PJ&mI;26uP>UY#Uu0~s&axVk4DAXo4^03BvS{?UQu(3zK$&SNulB2U z2bT!{5Cdg=qhc%T0t^)F(~LD4olxE9Tc!FO~@C?q9N+3SA#{Y%iilhgzd39B0OR zD0J`Fi%R%)K%ydtk4L%vZ#vDAvZ=D~$h&h*MqP62qK0w12|HR+q30WdET8|ZGhk(X z3?@=x?+P2^bPX_VYI;V@$~Ojc_`S@+!i{b2h&Y~c4G;hA@ds*5bQi%CI4#%#Sk{}j$(?pjt`?p30l*rp z$g2V8kFeLjKo?h%N@^@dvW-#M-&wuG+ zqEf9Ab$+{;xZf^@;=ex5f276#oP`u^M1LRUza_-~0q;??l0lF_^ag3xDn$}UYJ})k zHia~z>fYWLg6HdN%4I}F_^PEOs7%&s!206@za2vyKA5rjF$MdL>f`@D2?)>6lq%&s zoykTs<2If4c7L_t13iyW zRhfQ3qrUJ!Q&=I%2>B?eZla`SFZ4c+?v#Y`+N`27pOP1r%BxA`_H-#k+yEPErJC#X z995HCc(3Vq7_Klu-c~Fua0Z6i(Dak8r1KPNP~PsvTk;A$^RgJ)JGJRI|A{Z_E!~R> ziEQ|fSY3TC@R{%*Yhe+L-?64Qbr@kZq3&)eZ^zYJ{k^-JcCeC3H!<+M^DcW68_DCN zw}zQ11kgK-Kc$8~)0On#K_pZT=w7`h9BWnshCEmG5ty^dK)9qMWNL)GSy1ns=Jxm6 zs2b9|D{GhnYZfo;G??R+A8Qd&)Z`$WAB+pjDw;`L(bMtsh(#)X1SEK-NDZ&0?1(j= z^zP>$FgiInQ#(zSH)D{ePTckvl&2dBg5cS|Q9 zQon!Hb+JlTV#gSEyb~0yE;7*rSV`4WoaRFbO3lCe( zEYLOvgOa0e4KEB8HLaU^ewS;|qj^&L%&u7N_W0woO*M^tS3{us^Ctof$`0pFY9|HD zgArq&rs749(8ZhMBQRx+-9sE4>V96FlU^7_a@QGc%_#3YxJsz6zK(kY>^nliTAwXK zBY}YkiEmIs*Zdv3tn_nh;F+5cBz(JQZ6#@ z!K3;(IuK@CFD$PkRpMs9o|QQT<{kWOx*wVmhG7#zhG7uvssYzena``28g^kj1efi) zX~gi)aZQ>7bOdfeCUp|oJ(X<`pNtb;mWp5PeMu{aK&^=z-pm{aBxKj)cw7)C*TI?k!K6V4vFcdM}(7l4I??-Le9Dk&J&=0Zj zQs6W#y=YNrJ3yh&e?gl2H!I!H{l;m~Z=90-pT+5a?txTPQ&^DwUAr(73scIYB+soE zCriX7C*K7WLWGWJ9+1SLIZFar2o$4^_z~ARjm*0HH5J30ks^>41pTm;c1XVQG!gUu z{CvjhWekTJFw(oc|I4iqr!+zuQEqa`^}_pFf7*q&K(EF~8_b7<`aTqgXszpEt&0d_ zUdp>IUxqfLQ$tBOreq1w*7bu!;+%e*fjePsff{R!7^A5o58h#~Ghm zLTIn2%sVhS!Vi`9`#ypwMiIJ$u^W`T4(uUn#c~r(vD{jppAJ*)yMvb#yf8h|b&hKO z0{;4)^Xprj9uHsyKxtA?sKhR4uY8dSJcIK>DR~lqjftxn(+T)P|3Hx+3pDx_vuA7~ zMF+>3X5x*;pQHrY+|O)xFWSnCq^=w7q|rm~pu4ksp!L>UPD8S?yn(3jdjNn%iW6}J0^U~@ z+o#i#l)ZzIQD?;Oh3>vWd~r%+L}K3R5xK`MEa4QHWInn`TbEry zpn|{R=zfga&^GpnAiuUrhb%1yg(r4TjMN>3{iu)HklJU^If#({g(*210@MKg555l( z`3`C(OdocrJNFdT=qb(#oGLJNgkBBt%cIbseC=|OZrht}g%h$a=|_vTg>XrugVf>S zb9LHe_?9~nM;5m#p@*lj#OKfdEZ0uvp0q@{-LcHSxIvKrH{9U=J~qhMI{uCf4zhaI zM*mSK|1; z|Gvx3O(KiS!cGlvWqQo8VIF@S96|T~VFv5q!iHM?%W-+Z3gOPF+*eeD608l|Bun3> z7cXLRyzdXDu^fB;T5wEX7ryJ5UzI!b?;2lX6bF**5gbpWq6J)9;;A(T^Bx7lX z_R}2G<@Ge$317N2uzVt)83TNxCnfqiBCr{q%m*Bb8l8}GYEophn5E|~{Qe7ZVn#K?WHp@@T<9S4#$+% z$p8n$r%O(n>j@SKoAjq3OOb^K4h|ksPEHOU@q6y1Z{%c-#}m%yWRp;;-O`fV%l%gd z)p^2ob8_P)qy2s3017}k^Z`imPuMVnJD-K*D$kKnZ#X0*GO}uei~+%n=F7YR>gjsP zVWSHU5W1KNb*{mk(@fBELGlFOeK>kmQyTSen`n#mNJ80Ut^kjeZm<=U(L%dbV+p07 zn%4cI=y+tML{Zcd;KGz12Zv>akPKy#*cuh!!udH1Wb4LcAiOW^!k4Wzl8 z=c0{jm%Gn89GG*O9aooHi~KzY&slRqS!VBe^^b^1_#u-s>YZLj<|h`%zOXWN+)jRY zcneI)d>DQjN&_%pKya6ye8s`V`9u;-E;`BUUVj*19=1ZoFF#dz!YIns9M_02-4hI4 zafMA|!QGg)eyrJab?GUiNb2~F4wPgem$TAkzW>jpi)#)!t;{`joj2PH@F8|eI7W13 z#$}e7K>@dD1Wi1$iymEDi4@nIHB?&0q#lKI#G-5(eZ#n%G?nnO!|ANt5c;AxwiBaB z*}XO+EusB=rDlTRt^k3QhKhCG0NK{z$Ui|KX;Rr17+5IOm#9ZqZ@4Tn8~>23t%~8*!vB9%K#= z7?-A*E)YX)z&K+v@U8Yia$L~A+#HI%{Kf8>+lD4`o8zDet+9soqRuj+Fm@jI^Qs>IH`S-5Wje(SRnun zty0^Pg!H%2K00U0?ABDu1$i}2!qG3p1&?VK(IS}w^@q^O5e3VCN$80I+Xp?;_<@3g zbfOZk564evBw970qvch2p*|T1@*hq1+2aJo96mtYIipdh0BZJO5|E5AIY8`cLn!~z z45~0P)fRX-TdRx{17lS7zZWRRlp57TsZP+>nQ?S@45j~*!mwoxce_?BfYp0)$Vbo` z7C$>3GDr&f1rK;fYeyCJ<+h1`ccy%v4$9%D5AnUO_k1&SD(2H zh2#VR6m0{&qmJI)_WYLFabmJvd^zu}(=!g(9CQ|tcVnCUU6BtY&{6=rcQPy z05}(I+mbCV(xmT&x?f@?9J0t~VQMU(6moAh>dA;lN~Z{Mfyfe8aG1Mj!ol2vntL=Aa48hwlm&Cm zJ{&&th0UQejviAK3l8RAuWR+39#pC2JSiptvsm9=;cwQ)ToL7$k`P;@4vC|k-#8qt zI6Ylv?I8g`b5K&>;U2WqIV)rS*RjVyn`&BHQzBJZdLp&CxLKG9M>`A9663uE&F*8g z_t_y#wI@|QguLCp!1{==_GdnZ#gIWMDG32$X*{E?z(U+7YDZMq24a!DZt9x_&tQW) zbC~-xdRYRIW7m_GjIL6^d>`I%_e|ThxPjev05g zfi@*2IcV0^L{-+_)#}?er89;#zJmZU%tnO@ZP`UiS1gB<0~LE@-g=I~@3V3JcRIIN&0ppnAWwgmpa?=W68Gbg3~Zn+tU_rb^Cc z6r;TSnK5QBKGtO&_1`&LY4!&Hc1avo09JOdsE+Ljt8;LtL90E~O7vbsAI2N%z?54z zUW?`j|7cgBPDhfXPWLuJIagl!Usz8^6;@XjV7?x8zRoH+nb8Cu7FXC30c@fak+CB? ziMCC=nZ<_wz8W(17rD7@75Luhse7@lG_I2`ry@98IN`8#!R9MaD^S7H_$pEE zA)4tD1KuQrL(Gz&{3xRsVIYB`Ksd_8}yA0jL!OO?yMf%%Jo>9 zK~<~>Uxlc;cw5m8tEJ6wyVJu=ssR|a$St`@9c}_07+9{+E%kp7Zw)ddRBEwn624(i zhdT~mxtaHGSYdx~PkbJnA8;Na`Yxo9Y$z-_h2S&>HMNMU6 zMShHM)`ngt!231j&2WQl1q;CUBXrszuD3iAiA7e?6}{va-W**1bT%BysvYdQEW0te z`2-UlJU~VAs1vvxkiNsDMgX;KbIqo@k!Y3g46hixXjShV>wc!vq}cAGzQe9Y@G(ev z|MM~LvnQ#?r??QVXL|0{L3NTk`nnmJ?8vxzHxmhKpwSqZe%S3GaQarpHgxAg@Hj4y>>wkfVJ z$}PT2>me+>+p0&xNBL_vYYc|^Ey-Y1HIc#V+EyxwfOyfhg{0PW*R*5OEKxhjEr{Ns z3YXsWce4kqw9~!}{Ev71YS{2_7pD~xS5GkANv{_49^~UU<>o+ZdkVZ04#By%JeO#B z2r3q=LI~G5H3cU4gLB$YsH?=DeW1@gKlOFF(covCvl&q!yE?>M#5~?^H>}M~7T~pv zBGAhl5=#$*(?i1VDPrLvLql;7&uJju%TC_QSiCOWPW{GwBP{%i2iFoYT{%@Bf@WE|NDW@$nZag zf&bomcByzcV*a+CTWK5|W5yYl59R{xMZk3#Yl*4&LSo>JV(Ws;W~cFp^WrY`48)Kb zTdf^<(EO0$oJ~IAji4CWcek?PR^oHYLR1jSmDp~X0kDH8+|zQ9+_GgmSsWjx*t0yW zmuw6UH!of>28=I$v@_RWLnTGAOWM*zC_vt0jW4k z_H0aZz1zw#l7ls65T?~x8Mt+MWU4ag>EtW()0aGCCv8&JfINImnRPA$f&k}tdk5Lo zGN=-LRI$k?sk+cx#&uuJmRD)m`qB}_u`Bn=yJ zPavG9eL&4o*{l_Wv{A#WxMoHCq~*HceryS%hBHO{%&SOPXp+-0dB6dOv6k1_@CXSz zcxpXTycMkSP&GbH2#AA=S>nhRg{F35{DI;m^cTG@#d<&Uv|W`cc+`E%5)=P&o5e_y zhM;(MAxS|Qoce~iS10Kuq@rprZhaDlJH>cj8^Ic|6C>_*-zj~>xQXSGz~i8y37|0L z$2^@;tKz8BaimIhy#{JG*srG!mVR17&B|?DeaA zJ&b&9P2hz5>qJB=EFAs(X=(r@sUyo8Cr^KU7V5=!T1p6SFgx;J-vz?e5DUUEh=zVC z=?|v1M?xcac_{Cclo}`;Zn88plyPDX;lav4dSNmG)+GlcKh*%@~Y9m@PhF210WSL&l`W1bqc+2xdz%YPu8wx^8%uFjSv*Rxr2j=!~w{O4-qo z5Gipcj9e07yKDuFJ5s@IQFBVHhLw?_I|Zk6GKXr_pd-WB1u->$cGKHgvx*3ZrL+{} zsV+tuiu4cD?p#xC>4)(Awwzi%HEjx^%_DuqquZeTqXxvFMa2{Ha{{zEfAYux)(usAfD_cbzp8To7iHfV9BZ^~yW<`2*tTukwrxAvv6GH% z+qP}n+DUe7>*d^YZ@qi&JwM*7>aVN2x~i+zH&@LyzcJ?+Ltg!|){_D^MWK+51CTOC z;xU9$ZODMAj)Dm>$FDcAmq4I;CCFubJ_0bS4dy*2Pbhun#H>+1ar-3`1D)QCX0m^l zCY-eU()Fo$^XK_@wC?`O5Yb=5>Nz`I9F)7irKGvtyu>xfWb~nj z?kF*Bgm|Qb=*1=KX2G!#);~7PJ4#}EW!KkR=Ks>J4|&E77c@FRvp9~z5}=h7X2kI* z@8&ORMOtL~vb_@^)ROpHG)m_Y+=DL576{F|GxrtI9X`L=UfOgdsVC%@q z+vRqi<2!LV5ZF5AqR(sdX3!|};yF#cD3WCuA{WP%e%RiN=l;f1VCLVD=4W%^a>z0E z1Pv=-Hwb#??Xkm5!5Zu`#MA=w#tf|T@n)F;TDENMX$+AYfP0w$nZw*}#Zx;=E;MJx zn4^)1Hwx7r@L1eSV!zu&#HA6JjK-pj*@a{xROJv-Y#$s~zzN13Nxdts!(Y&(IptVN z9f@a;_*3kzw@o6`Kf65!HbecM{nG16EIY&Hzi39VXbPlm`R+Xg6n4VdrOZh$H-StaQw;|)hUa-ekj zEnDU7R>CPaLBYFFHb+>3{V}&@3;8O}eC*7RB2}W_VPo9oJV`IOsYlv5|9+^b*x)Go zahS~Sc!8Y0c}q2hhKMj@&m~u+tU?M*tb7RX;0p18y35LGeU(2kiFShDlL2?Rr7qEx zkMT6C7fq+IvnJK$70)^S{ii#jbh|$L-25L$0^Cud*Nny2oZXY`xTYrVK{Ue!m5?!Y zEYDC8yA{?yVj2j}jkvBsJCO8@;0@DxLISP%vW-I>!f?JRknG)ky8Q-^n9;RtH!?$^ zb`(N?A0OHNKGJoN(0IyJnjk?15&3b?ix}1DBq+{wUz_4)2ip9cIY0(r(Kl?gLloX z(3Qoj1GdwO=c-qTcUhkBojcC&sl@@Sf|t8?|n5--E4Zt{ngpcL>`v z`Su^K8+ae+&#|k%p1;IzYM8SNl`}$qbBa|eb3Cll0;>V`289*X4Izup9DT-(l4Td}YlJVgSOI%G^X)T-m*niv zCkGBf9%l--E8vbzs~Uq@7YDMe#hepcZb1AnQAgiXS(TFdEV{Z1UzC=usz&b3Xcw6r zvgVhDvkTarfD!br$ziFXvy2h6!U$zuWH)SOdFcn%%cI?__aSTjRgu;9MQdQ=(tOdS zEZW8~_D9Ya-@hVcNB(Y#Ti+Fl`mY~9zD0R{7@N>petT~){-b?J_a7CBw1J_C^*<|- zC{-)xf5;-*9!*O#Mg|aohz14-N|*xg&4nN$LlFf1B?d)ALMoe@nv^lsXH1w51TD0* z5AfRZGI0&r6{H{NfpLs`9)SUu?ZCiN8U@IDt;ZuIoRIoPlcGmvMH18mo*~DwV>BUp6I8}?v__um{+e6a)};pDyntVX|Q@= zLPe@Ka%~q#w_XB<3r?0Wy^55CsI2m0PK8$&>8V0nt1E{h2qz!$;n|q(@E6QS@14`f zObeKXrGoo}N5h)X$4bvHgm`em5dr(VF7nzWl%~F#)yF?36f8Zm&itc2bSH&G3N@BblbDc5j=$OvK_CNql8qrGJbfn2C>PhUCxJm%ZwGq39tUO2RUcN^L!JS|J0_$C?zc z=G*Hn>B?)z1Cv@K;@eL3c-8q+<~FQ`2QbH-R2;|Sz<|1ZL9D=nUH&KxiZ7AH7Xw&} za&4asc`S+BVKHwPAkV7Nut@&=7*%m&#$|nDbJ3Vv@^GLFK-A%pP}4Nav5rp=rOULJ zsB8X}tX#}g6bacc)UA8WI%NNem_Gnk(*mQ zX3MmFPMmUi29qY}RLM0_;1miShhDfV;ZFws)rriY#|&(K2A^$*ly!za_+{am6jGt? z;%$qJkS;*gwj1}7&&C+?+Z9wZPJu;vj`WflPk_DDCjHseuAYHY%ybOuSzr zVLRTmHJp^}u#0ybAr?ToKe=I)*WzTjZRE&?TOU!D`hf%QdSE~*^M-|p*eioHHI6{T z3%G*%wXiPqA z^|!Y-&`t#Jy%Zx~lZfb7Y1l61W2Br$oq7iIZz4n4;%|>sD~C%JY(%1(IS3CnrqFg3 z^ohgR!&}%#)|q9Dyo;?dVbKubJv1)-=h`{yD1$jSXaav~3U$5^X}Q|m(-G5*M>l^Z*_|?yj{8rr z>4a5egFP-7@s*UBF?4z{LcDnUVYTJ(8t?_aWssgjw@oWQLAk4f;;m?GR`~}i_FllV zi^_XxQ|$CF6+~NMjEioLw`e3|O45t@R9s)MZpsoFS~uHNCUD+56^-%*aJ@$xOg^QI zB90pFwH|6n|7r~luQa27V!ZzyvYgvF*>oA>K~di|nh}&U@&s1UXZ2NB1Uz01%IjZI zOYIKj-;9vBlGDH6%)f`|4LX4pQme0kN>zSuxD_|F#RLWJAmp)^PF=1Qx=TT~d>Dn< z1X1m+nmxoL(4`1Jd2Ku=e}XNz=U44;>~xBwVO{O~n&}a^@_F%ef@gS0pN^eGD^|3i z>b8*d1)AGPb_ta|XBzfhI4$&>NYUY&UC0D1s`{et?CX_M_OO2e zw;Cht`Mj~)%I(8dXM}H{=KJDJYza2Xd>hj zPu7%=(dqnz6rPQ-asRn-LvOemhzmE)4yWk&vx~j|!=Z4k)BC*L$8~{LJO43f^)qK5 zLHo!|&~iy6`qx{XrcRv|OV&EW`e?zj#=1;x@m<-HRM~V`c3+EzM3w_jH1SSmqYeHL z8=8?t-m%w_TevIZY99F{fwh`;X!W`=9nfYwUdwfz6`yH#|0OF&+{I5^jw3S17?T^} z*?{B;+L0}xRvP@)6zYlnv?V9uFZ$aLr&5O4lBBS|_jy)1&{{co!@M5d^pPp=lD&sT zKc}Q0nN_nWZ_(W&&we&$UKB5Q1o!)MoZyzmr8rmfNeB}sD1WK zKsf2*5{p$%RFu&$^^u6|kbO8TP1ZLI7qpd_%%d=Ag$yY{zJ39%EcWCog}{Vcy%fKub& zFb=8BU$vNmA+Rgr(zlZYxBxHiIfdHXRXg0#%3KV-j|kBZcJhWbXCA5fqc}TJ1j;$fg$Ld zyng)r#r-+-^tBs6Iq3Ha(7~Y^RO$G2`&ecP=keBI2?vi_7BY8Y(?FR3lcl*ND;qui zAbFbq#ihd4cG5Pt%msjL-gZ#l_&p(sCo;Q!mY zNZG{QS>U@*_@DhjH4As;LlmDL3Bi7QNP;+gV|5b=()iY85=cZOLm~un0c7Mqq)s3p z32E$3WPWdgO|&Y#%K#M#1evXH)4WU4s^-gPK(nP)Q*$-<#R8u9>wVdUXSb)5+0XFB z&s5Kz3+pS7nU~AX=cNNV5O#0~WYW;eTUgT$kImm5EQ;N<7_@vwZB1*{(ORagiT&K_0FMdP4wR+|Gz~4xe#i}g=8d&61!%~54vG|MXJUMnt`h`8UWZv)K%yyEA=`vl_jZ*q%QdF5$ z(?wka(RfwxgMz05xteN?Lio`DxjuEfVIgQCgAHqdIO%Ld&0Ae~S9U0p(x^*uByw_O*56p%kw1TP(vVQ{!L^_=!!O$;OpX zq`?9M<4lb0pnai0S`C8iNklnQDr7jPd|fYI$JVIV-(v0Rg;L1x;YaS&h!%_o_aqhW z_HX8E*0Z z`XL+y4TcH!A#i4)WQQs8ca=d3vL=-&@geSDBmD{Pz@&xP70|3?Ns~vWT&c3{=X>Ad zjXpIiqTU&7s0!&x4b~_~jZte5nLi-8mX}M@%y(hP)^=EHf4Lw&q#5fV!8Z-&yBa+c zo}IG>G*8!`v7414rxXD0hT)Cnt7lkmZ>j}J47DKDBoox)O&tobk-1~)XUS|3g$ z1WGO_8SH9TCKg0eh$XIS5&pS&iGH{ApchyR7nr$?2xTW#uMVcDX2?EoT`~wsE)_#Mm=Q(Cn$}w0YD`;W3*sxL7`p+Z-Q$M$>6yY+L`}a!*@42R~NEQ zK&fFsy62-Up%d=!RVT}k2w6dl4naNJpD9?!WU^h8G77J~{{fOgVu;r~tLEPaV4pHD zU^d=0G`m71CH1aR;AXK;Yw+ao6!snVbk}5B)G-Snn(}DXcfDZr<;3d`|Bh zbq$0OzY7h$1#fFloYQm8iGJu`Ny>l%EMM zYyZ_^6bfn&EhGm6`w=?5T}7;#VKKopJV>z+>}0WNN%n}qWU#{JkJ&m9ek@yU*Vs&5 zz*!umf{0#SiZ-4rcq$S{nIOvDr

  • E@iHRB*vZ+#Zwt$AAqxInt>>Z(Tc|6vl%FR zil4}>Ij~$sRW#h|-KximM{l1zuo?DCXiBK^kABeU@DClq+VN zXRIVxqT)D(%BEfSV34DK#{|-bPS)ww-y2iJ^md)-FEjlYBVa;5#m*u@-lIc8u$%}1 zn{h$mY}Lg?FpT0DtK0@3ff)2myi$pfPBGj8FXsA#a z$+`rSnQinJQ3mp#S+^0SdLE2=w9UUK9ayO(O9AFjv3JoFl3k%sBD+t*E72UD;JmS- zb$GtUOz}PimaDOvhxMi5K^bgNpGu)U(u#vLujwBGHnWtggOTmYlV-L13jCG+H(!Qj=1@2ZRcT-lCWv1YAa zGSLdBVs`BUl5<9z1V6ar8#Jr$G=*(z;S&PWcz)W`S4mAsA2a3P{wTT8ka&YOZ%Fs? zPi{gs-6wzf9UlX)c7Q1P`izT4eKC-Upt4LDLHW^1{xvzT7)Lw%&V4}z6gFK#=JBRyEI7q-Gf~V z3yL!!JMTu9|DZ`C2RD2S#-@Ii#e+a#a=(LLT6XlE6M4pDo+>RbDYIr?RL)+QrvNN_ z4tU1g-%43Dpfc7SAl6nydk7WSr<+L}1JDdp*0!y-Y z;gW77j=p?eYRprk)EU@Vt)d?a<>pcccf{~z66X5Y)BI=XOPU*f5tuDs|dj8)Uh*HB200uCDw8zl0hIX>n!-jsGAlbwi#Cg5VeCm z-s>e4iY6aOB0SG(vw6|AAHGeeV=MgUf-}I(p(fQxwJynO(rv z+(~pg0kYO4STzQ9IvGdX+%sK55AQrz5 z=(8rso+>MBf-7k7Gb11RF9kZ3LnbEmhw00D(u#VbP};KYaLD^-p@XC%`RY4L;e(9&jR*Pa>{ql z>$>mchcXx+KWvNSTI$4I=a+FBeaNtmbp~C~o_qri>N0!*m!u0%g?YNi2#wM8`yQyC z@3K*^(y!hfv?e)TgYPj6?`HHN9iKVqoEBfa!}feOJi_p}rZ6$|Azhoki45Gs=6+d@ux0Eh%mGe$5gk@bAu5&I2ox5=-xr&5Z z0HIuQCC6lL_!)Oy^CGrpOZGQ)ooyZTYVf94{mMM#+rf~(>CMn!c*sxn8w_R~h#fg+ zcMX$0*kIOnf7_+VcXJxqlPyM!fF0O!r!Dp6$3F0KZ-p~lUTe@KLV1AnAo`WKH*m|q z@eN42N1uHNpL?)gqN(T5A(W*s;MLTg>YAMSM5*Kia zP95o}4tP%Xy@8&BaQnfhb;P80#4PAv-2UU`JssGTfss_sv)h}FjLyX6e!ygUdwz^4 zNcN3Q-Eq-#r7i`MWszo~*7<#QI^DB-H}XfD;yT{11xA}%4K6r7;Ab$@&CIoeJ?K z-Y_;^jwdJ3QUM^9K|PFQzD6kTSsX7AHC?{9LdSaQA-)ILUcoHJ_Ub12Dp3JdqDBpv z1796&t%6YlNt8KX{Ls%UH$SbFkZN^s!Z#L)&s7r~YAE|ZDE%N7na@=g>g1++Gb~ZN zm7V5!E#TZexOR^&FkSz|T$63F@eSu}t(VWIWNLQ@6r-iSXZRcTmCrLX8hc1Kl-|>& z!{oS^i&847uo|XuQu6Y20*v4b_8SH&*!SoudHFg432+7b(B7XDU%>wg0`3|6qa}UM zDt>&=Dq{ZIV%Na_pJi^+w<^j2|F4j*3ksV^8}20`9^ExjhWy=N02@HDl&}3mjV*0zQ$#b@^e~u**nxcbS^>_VQ@j4;AKfUyjYUg?% z|6w#*RzG1U=$7!d(rJM|9oxDUj|)PT(7C|aMC*-VOFtMi~Q1<*2_QTADVLv7J;aH~6$UQr0)fOB_CNV#csEkYPaC=FT z0vC=8M$zA(1#zXN*;zaNGomg^Te3(3=sZfUWi(P0Kgsh;b6vH3 zl5dYiVA&955>RL*Pao!SHvBJa=Vhy2d3pW9%Z8!xdP5nrEf8RrY+SoPOs6?^((H=) ze0<*E^s(f?k_At)AnXFOl5NFw8%jD;cwEwn71&@2V%e;8kq2e2{+w&GI%6UMC(I~U z-sklOX;nh2&m_om)-t382V(&fQf(x?iFZJ|#Pwvc z{PTTrv>oU}Gc+a*b@kH=6`Imt`Ew$Ck)oBghINt#3#s>$^EQv7YcwPeqWRbV%J=o@ zfM^f%uo`NUN4){N>IJux;FrVU8nOgJs2de%DY9s-_Z`eFBKen9FBYezOV4jwHmSSq z=9@z$il4y4+MgNOAc~(rJE0nNl&oBr_k68WMFki3Y#d!@3pFR-bHcs|ra5JPdTVQi zNW4+#g4`88A5{G~OuJx&679GLOOqQoq#mIrlE*I!qwwJ%`gOp3fasXohWs1`2>?2* zQNLb+Q2(uhsekyL0C8<@VK4sn8Y=25(ueD4)}o#REq@_vVL;i`uA(wtlk1vpxUTl_ zeBwQZg2Rc4gsmGlvfCn1gt>)NC{cv6IF2_qOmfvmsN`!`U)@ZQI{K<#?V|nbrZQdR zs;>BE5O96B3BE0p|96`}!q(JI*uuct&g`Gtsz~+44e49?K$pv6{8u`wb%-~Tpd@6y zx+dxccu;clyy8!CdKuk~yc6kE>2Ka}At1l?s&x<00i3;PG;<^7dmVG@z9Y@4Atiq| zV0<*ywexY=wc~B~`TF+6_rtoc21d$=+gTJttvNc?=w{Yl5;nMrpi4((|Fsq?vX5#z zB+<##+_WyBl^jW zm4z+eQ+_ciPqo&Lz*1)p-Z$r|%^~?NE=)C+rOgR>j8*nt{H7BI*=&yx+eJp@wfl;_ zg10StP^xRQ5IT5czK|4?Bsm4mIaIsw~zsz3+8 z!P$I)q!&Mf@=d0OHPoML=0t|>3U=}3d>K5cznCieDZ4S2)MkIZ^n-3w36qi-NooP* zM$x4bl-?`e>9Q(SlH}kVOpB=V`u1t%7G}E0Iej=qmRi}+l5qy=Uq8ZeS~ws~#7oJh z^HpH5q?|3AgRp8fh_MO1Bkf5O)@5OI%?~&5NtVbg7D<~`BDR}r;CB~o^)x;Q5BHRf&u9jV@{oml zTqh7w3TZQ_`;AQl+>->JpDLTeNN(Q9L`}&;<2vch$XT0HEFV6E9^fBeMbY$E03AZ) zS~g^9sC|+yB=uQ=caAS^7uiHZ7TGN31U(0%NRn4J{LQS%AXQ2|)FYEh0*GuusirSs zd0=0obMr6Rgn{jRK-bc2H`1g24>1$$K8AGv)O6{;5|@1rb4^g0`lSWsf3ECctN^RW zTIx|AP-I|(6d{-aqicc^>_zo6PO9|enFTP=I8q&%OznG&A+yAhr4LQPT`oc-IyVgz zB(fR9{hLQmFxh(wly?sBq6jGt;6}m>Vg|{^&KQscP;8J2=L3yapis^BeGB}G=<`-; zEw-sdOXxGxp52;~^60;yIO!Zy@tbXohoUUGvpnsailvoSHd}?Ov_yKc6&$LDnZPs- zr%oCeX%EV`I^GYel&@}SsKbu0JN;UdwNfX=d&m#kQ%xyiF>+FdMz?=eRP75k?4B0D zDNyK=RRkg8JnYJ7$=Wfvmu820D0b=RuqpPgGw$?t?0-`hUiKLz%Rbt1<=St6=E5~a zPUl|p!H+R*mN`yV2^$fgf8mX_hR0w~?h|>0`Y-8W=8pG$+ty27X$aM5abq(QO9l7?v`{KBi!IG@22$_5>vE`yUK zA5Qs7A1lx~bo|r1V`=V=dvO+!lHEK2c2kihsx!!@SDwWdJoL2NBV>i5E~u6Vvx`s< zXHeDzb*sbg&f5QjK)jz;y=SZ?-vFut+PlRF&Q-lzU<1*rb{Rlvgo8_p?a+dYMQw!v zWKFzHI6N*5lk^TMM>iB(TuZUKn=-!|534K$ms`*qMcQuH9I#gAk)^LombwCYR5Zw{ z-mObjX&k)8sb$FprL-YbcJYB$#$zdh#L#SFxLFLYGUsbV+GKGaDV^80cIYN!(HK4w9j2E*0%GBeQ-s)hD_J`jV3CK|n1_0y+yQsG3Iv7G{PVJDfE^SICm;&0 zPqYL(3RNXMmQ~&WPJsZueJ+8Z%SaSr?OFwOk$`G3KT_OOkl}tGvYio|7Jg0(Jb%WY zU7WSQyqGsi{9<0q9%8}0ULHBLOvJnJnTVs61_F6VVikdx& zz;ePKljy7L@IUc7BJMR?JJSn0{@G zpPWwmfYZNok@|&XPHP2OSK>gWXEAozN-WT4>?y=v=HNo#1oH~QcYtio7_MJz#YmW1 zkdxCtm|a35v!67Rl!l`41)aqgJqtZAQMsN|i0qzx_?H+ICTZ?MTzs!e=2YB3p;DMc z#lvJfQi8m|D9bZ)OKDgZvqsLIQ+q`0bWd-}a;8^s4O7&r&{uwC_514vkzu?8WyvEg zSz$!jcJuF7*lrrK2kmzs}HpZ|@w!we9lt%^xLBQ*S6_;_P`sakx;LgAhn8-ih;4p z6fuD4#HfUh(a7Rup9ZijZ8AkB0znJ9N={1{AH|Q_(&ULnu#SY0hM|VR?;Y(Q?H%t0 zH)N;LEq{O$=?V)`S%L{WoqHSt?vIW?mr)2RL)fYp~nOV*(O~Q zTnw~`KNP?kB!yqvv}uh64NhJZVu(PO6$A-0HI)WA@w$O_jo?h9_H`fXvSvV|Q31bu z%islfw#}3PZBS|9GnvWZ>FeqHw(*wv{xX9{_e1(Xe0MxMom)9NanWCca-FI`apBI= zF)3NY6C>!?UlXPJ(!{3(H>Xg`ZJ2(tU-p?`gl96I%Zp97pPl?IFRkU6z(yTsUpXcb zUXVzv(nE_dN)yo1u0JN0w;-|9XUEgqh-cCGq|B_fdULAJ5j6C?thI(Yv}1S0Vj^up z`~UWf_}{FEqYsimDh!7bFm&tXn(0tgU^OYqF0~|T&!HB_s{u9u)i*62Cv5P{^Cpdf zuceg{Z{=yUlp%R2joc(PiQ(p*P6{TV2!;Vd$P?^XR)pIQVi;F=`vND zneb%i~2jNRK!SgW#Z1EZk#;c^-@r)&AjELD%Fu`t}~C=5WJ#N~CWP*HeKK5m@X7dRql zT)X9L@*pj+k%-PrPxiJttIH2LKOm&}066|m##+mO(-6gcWJfApdqkC zJR`3^%CQV8It*0py~<*VXP?fdh*_Qx3J9&3SAQ<;tJ~~Ilm!Zj%~C{iZJD=<(Ief& z>G?jWp8v|A5mvQ7Z`bZP_szX=gT|on%q*;UZy^1Z!Y*KA_{5GIgv|dYe0WCto3Wn5 z{uVvYUAWK8qo+W$LbaQh?Ex9q3IlosB+Ne>{<7ii>NIZ*=SX*&4s7AjpKs+yNJeDv@PTRU`Mw}S4 zP1QqykXB27pmj~d+c${>>hl*dPVWqxmCtGrK}v~bvzfMg7^h;E9yOW9>r|7dVnp36$xwKs->ggV zDlFK>F`{zW+bo?#yH?1~=w}Yn9t6$(GA68s)5*nZy7_C*SoJOGl9?P^w`-0kU)Ac_m(KobWp6j9| z=Mu-)J=a67otNPyZ}Ud;5bI6sx0&~dagMzWiyY0ta`IbwR(Xn&heiaElPRgTVW3SQ&wGFJjIcsWj;}L zoMcVksH}^;F&Vtn!ie8i630wCKA1X0hHOpweo8IJyYD71+SUCg&qXt}E}Hl3`8@KI z;nZ!qSVA0c^!!ie4oA=1)0^z)^V6{&P^Ui&5R=hJb5-cF@$$wPMOi8x%Dn42?T`rx zDR+my$4dYl!7PQ0A;-iPfX3Q-!$M9hfxo4l#zU4?waFIsCn`_HF3DzO7ZpAta8+{# z1zzAr5)3fW*uhz9{#)?@=TK#qLE{^+jVyzSZ?dztsCioPcn1YNt}U@@P?yz>S4g(Z z-e|f%oHIn;UZOv~Y$Ji6E(rK~(W2dMAzc=0Zh?xV8BF8LyoUeY0n#ZuS+3n$c1{Bs zwuEY&_9Iku2aCxr3k-wXpl9Q@aBju8qDk&RDhlAL-sp5)kR&0q{DO?HHEEaN#6 zje$b`lyh1$l!)o#gl2BCD=6WCxEM_F=GzyLjEkOds``%#V56v)zpc}^wljlQTN;|` zGE-2@jPH)kEeuN`E%Z}u##Q+{I1XJ`Gh=*W>?H>vv`N~K3!ApgU1zggh_g| zMGa0Io+GYZfT(EqUk&kg3}c-?j=)5*B#RDoG}MWx<%qp3cVG$qJ*{ixzjY3=Y$cpf zpv2Zrdpv>Np_%HhpCkYQT?xM80bt%&9%A)XUn;CRi3Z|#KXNd)W~IaF0AHd&FWHOJ zPbIG1yiGaEp3oOuvtvyWC3GHmyPxeIVYp1M*xsfKPB5b;^0WkPFe32ujz8|O8q+bG z&>Wz#jfs`ch~rXOxpXm|0S&yxIGna!X-~>EZ0I;sfa7h|{idlB!(Hd~M`%j*I4w zr~j~E5qsCs>>6P~*~pyohGyq)I&*sEc;48^V3p_tk}Y?#2j|Dn`rePP?oz`R;muyP za;HcgbW%mM=O{(C5UMbJTvAjANK{&)fs7h^6ukq^$LHPdA!axSke&ma_i*;l{hg7W z`&f1?-T;$KFx&ZIyhoNx#g*w-@W))X3!w#{O60}-#PD?dizNI)@+w=UWUmaBJs*Wi zkb0k1Bs%&IpRl$a@ggq7Sjy&|JiUNl@$@0(e%<_rI+#gOp>T21=?@9>EUFY77~YCv z9Zx@X0NT35hsg{9D9i1Ve!TpMc!o%4ER7S%ToQ!BJ&C}E{@D*aL*u_#GQPncMTn^p zmRV-CTn(QwT@wnIeT%FE(Wrt__GuMsgrMcillv?X4jB7Ba&RdNg83A8q zbWkdPg?#yal~1x1G=Czy8ko&waU5^Ptm*amzJu2KqX;$;ovH0txUWRnc?IU{^4%MM zgzdHYmk>r8tFJc-1a%fKdLw8rYh6&C46)7!J$$uce>SwWeo$lSoaju<4*xP>zbr3p z>?2`LSgsWr&D;TZP#YdM3bjEgbq}pom9+{jC(x;Gg{vPmF(8l| zWl_PGdu6l1&<$&*gA6vELF%RwEIK%rk!s;rm&xpE9HUvKbPTTH4AP8mf7ooM#Dk<7 zYh~4S01@lBywt6@IdT6Qcw1h>C2*jGs9{LxV>b2Zzm?K^-ZZS+#O`#j9_!;qy&pw= zpjMY2<>kO3=gHaE|2kU_+QkOI zEhC$5&@E_5-Md3hhUp11Igks1K>qw61v2?FxANF`{N4V4O< z(1jp=$vl3!yeXh`%9g6w04n*2CH(c*d^apJk!Ba1TAadesF_);*dO80xPGC6leUDh zlmu(>D_`f+UQX&?uOA0wem2aIRe9%`;W7DKl5~Ov@i)Y9#>ak#adCFSnWL@SO#(px z*OMT^-zz8Z)5fvuqe#u4VryTa9Nk`YTX8VcCe{V~sZwH;Wp+-Gy33fZKZgn?$Z^J$ z!K7DJ;v{pBvRUeh(s}zFM}$s#hocA`TSZ3M(z^o@$4S&ne~o7Y{_OoR#6K`%_(_s? z8U=#zN~pS?ZKK%^*1s^hcBW(7ry5Qt$U@xMuvm56yueLjZG6{MCr;k=x2;C6>mmpH z5`odo;rfS^$mWO;ZuL7o0)d;FmHWz7=7hsF`owQds?Aw}nX8Kj9SEz1YZo3&a7P@a zSE-^Al@8u$8dy^HHw9uNHe?Axq)!^B$U|WMBtSROvdCYu5j#k>HCOeEdK*{Gi<(qB z?~#j{;gaz)?%Pg8sAb9##LL>lYqgObk*Q3Y-R;OfQ{oX9bnf@C6*=;zDs1JkJ@wU} zj>pUcnrxlH7L$=BOGwl=9&lL0zDTeMF_C!kAOFJ_29ptc(3tGUk3zX0KWP7-o}2!e z7XG;@mOMSQ6PGZr@3@aAPk*ul0J;0oySi<5KTF92>PuS-iD2jfOoK4ANmb2un#(G7 zkm=z`TgWKPQX94=8#Xl?-77R&)D7pVUNan5^pSo#=WhpZ-j5kiJZBAd$DQ}*cx?n8eu3+Q&aG9ij0B6E*2u7Y}K0Gnt2SEKrn^$4yUOqu&9Arn12hdT44>ImIj(l%mdeSN5Q%bPkE z_Nk!Vy>z!(?(b##9J-8Fm2o9*Jk(kzKDbj&q;D?6COa`A6c-rh%?gi;O^)#!4^=+> zCa_X3D68}>5B6;yn;}1r={n7)Qs*QO}y3t~A_%7dpRKtvq`df0Ez2p-f zRP6~@=S?Rkr}PpNGNSYqD{xf9M9uk_w16aXvYN?RIM_JYd`&R}t@wIK44Sf%xw$;% z?i=4ZG}g*GDJ3728Wj6OI6<|gB)0$$%6fgyPp3)Uw}Pk&jX>3eyA(LwONVrG73hW? zv$w-d7iOep$AyRVG!_x0C1%CP(lSyaz1RvfU%!MURm=4YfS06Y6=a&xB*)}w1Y;=@ zieXi33>rhrnw6A(OTkZ^dCb-Blvoy7+sphp zo$s)htSd5(%T0r9vrE$B+BvjY3e+_Xyl$AdQe+sd$(d;A*tj?Xi?CT!)4hK4CA=XR zd^EN($>F7@v$l-!bK2D*KT~!Bxp71=WLZc~7;csdmw;N*DcPnV*@LZ~6GlewMe{C) z2*HzQtmvGr1}Mg?AfeCbBfie45-v}pEG=qN$BwwCJbM+{rmR3YxgW+a0kxpqwyDVP zQ?~Sbx&9T@1Hd$6@NO$at(Qrsn+n=<#T!AsG5;?AOYF4;Hj=a7Fz4=`|aq6mE!YL;<6x!-L zOLwhYIZzR777iXNX4o3kZ&d)>+7S$B&Im#!)-?CqNDKK>$;%rCf0xuex@u)8pTqpz zk_RHyz}xK-!Lq8g`G2oqL~AGyx7_L))m5_t_!ZJnDBD{4)yB^fC7UTni>TG8HmBaY zxH|(vuN2x#$(J7@D*xm}8st|H%IBMVrh_p%KxPz=XbrB$FsdLy zdxNcgbHlE&kAuU5FY6uIq*M)j{p;kMYbfo{o^67C8H&TtAu69!(ptjLiD-u(%KK+? zM^@5;!hP6~?us!@&+f^m-nIHzIm@d3CZMk9Yx?}haNQ`3JmviFJv$|x@JhR2!SCbp z8B--Iufqu?5foHUZ|%RBz}60E4CH~}x>cVA`!w?A!%;p9N)19Pubc9_CQFzfqA>5> z)ztU6z@#=RdxROhHi2|t%09w=rS09cGf^eeIiwty+gB-;)%2=xZVU-K@v)oZV!^-! z&M@L=?xKn6ox>GkW&`YH1-}}m%ix|-KCMEPuCe;tAkDhEzN{hMVSHE9OrpcXt4cv4 zElncVlZ}pH2HHxd;-Ta$@{&V${1u~+(y?d3v8kmR+3`{Ll_!q;szoF2B;HUR3&1wg z$=-qWi8<3^t4{`8T_gErkMb)6hL{-%3M|r?i(kaQj)dUO{pO&Q#il{9d1!Eb*Kg~4 zErThFzPMR-X`E}uDH-KUxad(2&gro_93!d8_c||bu)yO^X&q_*G<*frYYOo&*)Rl;(MO1(G?1VJ!3{k?3g#X1rn% zPyCv15F9|o?ght&RkKpe;i?L{>VXD=fh_I|oY*9SS_=mR&* zzuLRL+6$v%j|rNgjXKkqZF3Rd+tErwL=Q8#Vh0-`{Qk6SM8&Qd*K*_UW9tWDnm^V+zn8(MWR8|vQnbiCdzBJxTAlUm#Gn(P$75i9|(PCw#y{}_Pqcofa!A5a!yn;M zP|(G!e*>?p{c^{2%Ostq=l{t-1H+bjRW$B}F=67~M%xb~&VzM9*wwhGb51EkOIIxq zW|nGHX%a!RqQ9Tgp*rH}?f*=2>8|szyX4v_dBUameIud#GD8X+pasf<)g5tkYlJ-l zL8$dr2*RPK9;aF?3AXZs8l%4z`;IgV_({BE?OHHTqM+rS$~LsH$>+p?r%_rCa46fI zVAoq*N-Usl9sOX>0Wh?38xFIQ3c)2MqXS^*6M`OU6){JEqYnEB$Db;*r_S+*E?o8% z0@uwUeVa+V5VmaKR~GCLhmLV$RuxfuS=RT#ye_P_&uza=tFM?yFIP}H;t?QLt$lx%L;Mr1}9%%-w9la+u%W=&bcqfDXx~fp{M8wSr*qHIs z%nIj6F5E$LcK0(1Z1@M9cKK8mxdP-c455h*F<6O74@=ueAj`gi~AOL=GjFXBb zYG^~V!);gWxek_%2oHw34+{gr$28LWTPNchwG0{;!p9==Q*4V%MrK+!F+M3RAtN*G zthXjA&8QN_MP!Nnri$SvYdxODNL17GGG78igJJ>4eKYmNzlC|yxX_F-8EJS>PFn7| zc+{T{%Sii1jJ1u&akpl8(-*d^EFzfx;oVmJ0$#|nL=Mrs48aj*fh(m#9+Q>s-ZY;3 z%Fbfj`n;vq1evV?rXHi?Vp8AV0LJHF8Kg})+8TRa9%~#14nnlv4Gr80NQ4r;bx2lW zvARyzy!jI5CVjoZMhQX%Pd>qtNI5pEZ9P}EGmf+2u(?UA3_6q_r3*O*4q)_Ul-^D` zd%Dj*1Tuh0p*uzr^V=Sk2dQZsBRS|OgNQBKHIvbCl>vKEjU-fQafW+u@a}X68j32% zd>`?sH?N}f>S3S z@dpm`M!3sC<_ssth6Sb)cJs_;3Cycr^z(dDvfFHlF^Yu}W3xk(Vovk;I{aX;k&nhP z>lf~H(@0rUyPM~i!qE_g{YTGtxO7XuJtc*Vw6V2wYNZ9oc_(be~aJ76}>-=~#+THtLYSc6cDm!$v!l|?l}Tuo%2 zpic2g?utU6O&_ZTFU@X{9CTU{xLN9@?$)2qIeEkxr&&VH$xt~*hovd}ndmWK5%iP| z(N&5HHFIT`}W} zG#RcIw=gOtTewiLTJoS|h`~G+-0u9@Td#tDsMU?~Dsz*dj>~JU9?II77*P*N8&Gu3 z(MLo8-3G3)0G$qA))K6;@o}?QeI~;bi{7?mhDHxCJkOV~gIiSan&Y*%l)4`)n4-Qa z*FJg#N7p=AGPjr@XHDl@!^4e-QmtY3Y(GX_7%&brCBMw_=Fd*RgFi(dS0gH&@6zTw zmd`kgh96){h`R8VSJcC(=EP(825@$DRXxf}RtM_dTwU4L`Q7k|n;#`hp5&ozl$+OH zrSNq&XHB_m@_VT0$Q{tACtT6a<{vuw8gA|vNaFKZDc!Aqxy_-Hq>eY_d8Gz7uUljg z5^9RXab)v{*AUW&%XGJ9CTQdZHe=B`$F%dSz9s+-SJ3GtZKiGun2A*cUoN1DH|P}M zK28*>u22C+bnf}F+H*ehcooohe}!aL)ne06{XAyL<1Yrdqs%@zeC~&Tz(un4+v2>z zc8pKXL-{6C&YXj{j=ioEwU=>2Q2c>m-a0$%*T9k3^!W<}iueQZ#Rjg?&rC#Tj&@A3)yjLg2rSDi2JO~T*qE<2W3!g;?O)0_#x)=h)Pk8ffD z>c%zk1T{T|KHkjqI>}5)_{P*n$Jn@LX2x3B(T@LUWl1^S7EDeH`eltkJSLTSA6n}1Uufk$Rn5QAF22zol}vd+@?A_%Jg*IVfbro>H@#b*b*ASa zOk2HRoOEXAC`@C$tWA3`@nucByjx#&CgtE{Vm)JAbOz?&WPSfM)|Qr&mF0HJG~5=P zqm!xf9_eCxV3z5`#n-{4e7T$^O+hlRdrleqQAE;JSR>5aWc$ z_r_`UvNq%4mjgK+`n%|^+nhY!p-FjVRpwP%bX%7^UZP2v^Zli)=r$>NoPj3E zu1UFjMe)VIjJ-~*;)6`pu33>4D=b)M@c(f3jzO9Q;g)W7**3du8(p?-e`VXYZQHiH zY}>Z2E=-+!W@6^dy)iLyBleE{YyZo9^Uch)p4B%z7ZY7bj3Y{eBf^s@q{kNatIGuQ zuztd*PHPgtoI6v}={IFfc*BvaMibCpm!?HW5ky*t3Y{0FMcoUBA%vv;Ysii^sdsAE zAC9LJD@6b;sUKb)zOxsGbvF>C>wrNUNKTNG2gb(@3iuXWxwjMc2%rw7*H86|t~vnK zhUlZB$GvCBGJx&WOL`h4RnM#)vbF1Q38$t{q#Z7#PYWMfX-A_Sow$pg1--Jzk`|h7 z2XfpO&4FOkFJi}x-cNh#?|d5kgz2YsC)fr@9|-5hx*5aXkLO1H0mt4ix(S?V$89zI zZ&!8`&eed{sxLGjnjp0L71nA1!+^VIuukvbw}YaTnm6HFdtWw3*R8p{_oy5X&|k+k z1aqKEkE@F+fA&Y&(0X_(#6X5G$bR{n%4JcK<^0`TPDXP+O&mhb=82x68Q+JmR?f-4 zg@i6FE?|TesyNZbrSIsdL7%*(u+0`KaO=6io^V__!0ji9qK7NJ;R7p9y`#qLD+d3% z%`gC!`6#vfcdG{P3X$2zRU%O;)UC_D238(aUWvqQV|@n}3rc&LIf|Ls?U;j$zb-a^ z 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ηK0%j2gP0jZYZ|#t9XR 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 Kl3rkZMf)EO3m_!` literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/lib/plog4u.jar b/archive/net.sourceforge.phpeclipse.wiki/lib/plog4u.jar new file mode 100644 index 0000000000000000000000000000000000000000..abe7273a738f556797bcb8460a1fc03f7950f9aa GIT binary patch literal 68606 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 z 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

      -*>Tvf(K;6Iq=CxHhiM^~ z6OM4?)UgwsW?Z^R#jXO*2q_vcU@B5z)vsh-*5n4W^dqlz+{Ab`Xynd)01uK7T1|g; z6PgqDY5SQ8*zV?1GfS<{BD;^qT?dbC*J_!;r2D8tDSp>Nxb=5#$2($2Fk*qCDWw4S z?cG&C-4xGwt&%!_D&E|T2VY=pvJ?+FQdntAn^1FDHZd?=+0E3xnqCCnhr+$p%5hU{ zcZ*FXO?g5>bVKnvv+oA}fkjNOkTs&!6ipK(NIK7z**oEv7>HUcHAxl7#Z~)DD2NDH z$rC~yR6CjcQ`tSPj|0C*@_q_q%~sLv3s-c~aF%nHMyB6Ky&9Y(UOMoHky&wgme`pV z^nMs<$g_pEj?l?6ZQi=ioMvtXv*IxPY&o_n9pmb-k^!1?@7g??sZ7H`dL~FWcy{R= zF&R?CybD9nl}>=y3&)cNA_sO(V}0TUTYRP``#I)~w?X%tv3p3EZ%BsyGND(e8#JL; zWH*69#WmD&xxz1nFY>7iHuia5aL_E@cr`b1Qj|yD;S4C5#C;%)BuESuygGO6DC)d$R_OO(zDaU+s_8Rx0&SehZOB zclUYwvHmnMDbgA=(?VNmS_fhZ>{$N!Aa@^Y6_HBUxXwv;4u*tpJQeHKE=KL0L+J!A zf(7DH`*{~Ty7vg0GbP$_?&Ee1HVa)7_ixFu{mOXsvDhs}&ld|N@WvMCGvAsp%N6oa zsKMk@C^&u^5u3zQ4M8uI$p-s^q@bP8zqoP5l$iH+6;_QkLZO#}{Zo3ERH#LkY}UZB zt)UIhB`!2S)M;2jM#urE2JUb(jwULdqI80Y#Et@%JpqT64tm$@oUfT|B7a6ZN_iEGdTZ?`eHkHxM zlgyTuC;+%b8+PM!J=qcR`H7xvKPt}fZ=q^4;?Hfo{46%Wv<{D!mlmPZY{BgNLny!M ziwkH)PNn-TZdpf#Ys`1{*kvPyGlS0+yyc)CzPdu7X4i{itMa=O9$e+O8|utsv_~^d zHp!_?GXhDV%Ym1Yr7;pt_JwYREJ1K=k2dV5VP`C-_oYktqJvPAQJpD9J5|9(X9%qo zAwEhqZWI{*?j*5h5YC6aY)@8NI1An-@nq*DtsV}|*-j(bY`9Y6ohyzlCA}rmI4K|= zJ!~g%K^CPN4lGJf1U80MSQav`#7M9)U1Dhd6?iRKXIN|xHnr18#kvUR%&_5CdA@kk zm8mAb?iFQyS-Pa zM;knkWUFHf^b?6r^j14X!jVrLTfdREGGX2Ky<^{(rQ3aFegL!cnQ7gr3MH;kInl5> zJxbog@GHykw$p%7`(nHoVS48TaUX;5af<|=y6e4F^_qbqW%3$K3iF2G_f)+czC;O* zsLqnDcw6QejGOa49i04Cng~zk7(u*u6-OB5>|B>d5fu(U5F#heQ0rBe>PgV-J1yJR z8ep(DS^*)F_3uvor@~oy^DXpmd-3L^6eu&d;#NRc>%W{4I2<q`x!!IIMhDAHGVch4MJr^)Ip|h zqG%%OI4nRCG(rlIjCmA6x6*OoU=K;1m{$WozizW&cWfw}@&FnjPDA7?(1=*PNxX)^ zCapnHk1*Z;YR#q5r-APf-!j%UFl9q)&9E_JhU_&$eP35MwKJnTMgg}z75Nb>6#fjK zD~`k$Ul$ZRW|VCB5LUHNqFbvTxsq=B5&;JGG4F%aS)a`vAt>)Frz{X?XSKQZTVSrss=qE4vwiQ(3HA zy$-h^1ObAa(~~!^(k1QM!fzrzAHhpAIk*KI$&gNoejh~raplafO0Fto=X_l4hQP*n z#DOcawo~1!x5~yjYQ?m*0@~7-hIH=S*rMmk2}a&H2979Oyxz!8}7vg5go-HrOVXD> z69i`!TxK3oUL<%qA)&!UH>jCQwX36T|DtQX<2TFbI$h8j6=bv0sW1OygD{5j?kTE; zELC||YwA9=eO%bf!+F1YT(~?W#fJ2mfX(fag`s`gtv%`bAjvb06*LpR9o6{gR+4ht zDaqb%CXma#x5{w*Qdf+|pvNIus5-7wY5o;uI~Kq8-H*4+^og(C7|?4j&T0~!DeT)! z`UMG>B~_Ppu9X1gDd{y7Yjac{7A z4p|`465FjQ%wU?b=BEVpyjXT%PzZFW|7vb^fSvfZC=pF-++YDRc5o|Kui2qOEHk$) zOD0nxkNB;-?5&LgR4kL(CTV_76$k>8Y;0FzD1;%Tf@Y#D8#Q8Ltlf~?QU?|o0|_Yu zZ32`}n*l6lgGQ#Cb%`-M=pZjPgJ`tW3n+o0rjR&922ogal_J4W#p?4j5xNRZgZfly zIi)#DRt+^WI5B51jNML~*y<^bI^h?CQgkuI>|!Y{9%%>`({|7re8^PndSJ|v;WgWs z4au(3sNUW(n}(+Pl+z~%xz7=ll8-@zXNQa(=6IoA)mO9i4yajn&{{BV&YUKVDSfKc zOvacgn{0S7A*F^h46ON9r-|cJlcXOht=4F$jY{@S7p06zH#6Ylf_E3CqwTcT$jLCT zL2s4x38a_J;CS5j&_+d4)~fnsM}3H4$44BnzH2RQq8AhfE2Yqp6wvIZh*ml8mgUTs z`c#+KxHVt+#3sGVWRweyq}fpLtx3kIw8!>$`f{RYY14P9@!fFK0ap`Lfcf&^GvNxz zse?(jko0yUSje|6i*daU<(oEg%??d4ZZR4;(&SLa0Vx!&0CZN3_N04Z{~9NXyJK3_ z;PJbn21`7%l{!-59DeN17YmLd+idau7FgN*gNeE;i_nYg`b9AX%r=Rz>RkfP;56wd z99&BZWvwzF*wf9De8^Ye4afHkY(qzSIMCaMDR$zTcl3+blZG}dg%>|U8pe)rh0g6Z zqQAh+n=}B^-{+n?AlC<1p!8WMEX>Ix7*h#=L4Cb(`tg-RlB#9> z7EBlm&vl;ZNJqJfLy@*6U(XEIrJSM^jeT8;VM~6j?ANMd%?Tk zknT#~=B+v+C>LZ!&nfcuPt>fm_qD`C2I(aNkgAKmaD~hUA*f=?#11$gcN4Plq?5)# ztp(XMlBUycL_1{{Nm3KU4}xXmDZ`NrDt1Gn6G%sy1P3G+R9rJj6`z;CiKIuna>KP5;O61g) zQ$t*(NgVk}-=hr=a}5twhZmF?fra&k+%*|4VTKo28dD}nj`3x>B}4!hV)pz;*t}nR zpKUsGO4=80Ri*?1OB>*aqv*Z*5wAz4q=#O{%auI#9%aP57xHVT_?a&9#SzP5SRkGh z6}Z_-&Z``ikUNzC0hI_2V`q}GZmya4-vP)tol{Oon8&QGTz+QOASp*!Wj#xb3xA5x6%I00m=;s+Tc=+aDz}UMP9dG4|1a!N<2Dz18XUMeuXxRU}Ke?=$ah(cpyYmeqBFUzoQB zL?MaHIDGRbI@B9=e};Zc`~5(#qKCElD*!q~{%hqZ0mVqg$2Mr0md>pk3`>Oa>f-z7 z&c~=1lkHh=?!9zhq6Nk3Fe3D*=wsXv#O;KLE+8aHA7Rrs(UJVIiBM7#$j!lo%W$6Qdf30~Pbf-gL|C z%Y=-2^^fXa_NjLyg)CFzI+S{LPC5ke8`baY_ls6Vm=+0NBX_y{))h zNCU4Lq|M2Ml=%4oLp4KG9EU3*iV<7^l0H3v`~@dSpgfv}Xf6XmQS!3bCrh?)cYk)>ggyxlainuCX?;!r=*q@ z9i$nMq6EI`watNtPKry44VQoZyKgVZK0}QRQT2(PKc@$Lu%_&f0O@arryr=rhc`sw zs~x#!V+$fmx^^}$`pXGy`I6RD3CLDE@cHN0|KOF0-wv2 zJ&yneU?TySJ;^V?l)$O-55Rw~ZeUt#^WTHkUZYnz1HmGJ&o4ft&)|SN%s+sN@muLT z1M6?d+gn>(**s2}@s#Ju{Lij_K<>zZCN%zEc;5MEcx7PuU26k<6P>@ACls@E&@ngB z7qhgsw-a*GGq8S`62I?`l?IUx0&s`fRt9QOztCF*ddB}lcb?GuJu=RRG?WCcXU}GV zqxCDY7%laMp8)Hkq^GqANc|I<5uTw(%(KchZusgLTWJ_UYU zhx6C*UJCg$@NbH;J_UbV@$I3M=g)Q-_Gj?_>tPFAy1yUh$2HA<-3|6){tW%w0&-6| ze_Z_MK|J}{^y2;u|7)4Fr?`)+$2^$hf3~FLKjZ#qA)%+(kLz@h{R9Snt4RGb_Ak|F zp29v(nEp`Y<7dmx_%rN-kYekCU_fy0VU&{*%C8683LXUOmNqoB-h=H2-Il@AxO&Cy8F3LO#v| zK>QOA_)VnepCF&+QFw~^IP~pTHe){h6XwI5`@@m>IMU`o9gElhMOFJ-dHEj;!c*MGn)$CHoBhpy z!ToE0`r88V6!o!o{OdH|{dcGj>*;qo{!>Dawb@@!h34=7iv9moy`PeJtc(77uG!uG bD-ypd$!{e7IgVym7R2F={$tjPB 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[B-0Tw$&7nM)mX<$0KLOZk0vLjCnt%oKDzm2z^3FK3~huZ zdRIoG-+6dp>b9F?ctfu$gIZd>eiIId9TTE$nl+LKzQJUOR%Q7^SX?+!c9i=q^)M^6 zO0%jH6EZ!obc#94VXAxo2)5o=P52myi!IXG#jVHO^x-F$Uvz28o;pXZ;o!4XCP2tr z+UgwGnRo?;%p$jK4RHza@BoPpdS2ZJ0PNH_HpgvrO7)81lzr9!2uuAEeSHFUX!pDg`FKqLSF6g$-L^i|I^xdZi(dIzGK6=mtOfl7DacMZPQQgZ z06#b0`pw1jTPG!DgCmfH`StERXp$PseS12E_UYv!lw~sY72$Yl8?9VbzcJpip;fpF zQ}zsrpT;1vdz@6MJuz!o6@Yu}RrVn+*j9&s(SS(v>%?B7iHyvjG{SZ=r^hz?gZbJE z2gK%fW`<)~4=Mr9BlT-&m2DX)G-~@t>KjOv56kRyT)YiLL$6AH{kO8k9Ra~2IYANB zXpCz?vcCAuR6cPy5Uz%3n9hmB3Zg&}F6F_Qz)N-uN%!SB?l@ft%6t;A2#;_$JTqQ6 z>ZPViO?NuM8KVg$VE)o+GOJUM6z}PYW4BqeT6CYvxt#PtXW19@oM&Z^roe!ej%c-6 z!0y$r+b0D5BDJEMeE$c!C-;?GA=ogCIQ$2X@28Pmr%*xXP)WTLIto{HR{sxW?-*p+ zwr-17+O{i=O53(=+cqn0+qP}1(zb2eFW1`V#y$JIeOAPcm~;LgF?(;LeZ4nG>OSHI zg|KnPys&Jx2hYrm2eq>S0IJEpxU5hRb zT@bP0n%cYK3JeQWR%dSVXYp4>5CeK|d55F7*vXPzl8=fV?3Kdf_sPIMwnKkaJc9%m zOL;wO<)Jb(9&Nc@U02%D1jcS4nO9N@yM-lAtWLgUfO7PVa0D@j-$R)GOjgBGuTKfu zjt5b_rxuKj^%a5E8y5vwLH5x#7OFeh+(8}EH%2SdAPu#Hx%N(qI~I9IznybpS7$idpFVg(iLysU?*%sW zUXL(;vcmOI?GXxZyl!GJi;!!8{qA(+FQIpwgT91!u5aJbX{L+q#MUXE-0Lc0<>n#E z!Emo?y?2G0zE>OYqCMQ%Tu-gt1P^l+SX3krFvZksq75*G4{FJKtImsZ&Mlrl`SZF= zFWUTzJp|+`7vv}M@gJ#fLLCtH+ap~O>sOo?4kv4x9nn6AeH!tj#ecP;v^AhxUVR($ zb^hPaCjamI^zZ1h|M4!hid~cbE=mdd0;C2L;_bP^-#osA@%lj%NkW7kNwm3CSSnE? zAx_7cj`n>dZIq!kN`9_=FJbbT`eE|=_VfXif3 z!nzLX5&^n^7g-lD9z^By-J5JsQwXPk8-Z0>I&H(prubYl$?Pe$t3e5w*_DA+VG}eJ z&$4o?aa|F)0-ubz5fA#U_jF-A0dzA4&#`e+`$%0JvE|ze3?fu`D<;&K0#>9clfh{6 zADb;mfhx#(zoL7x+Z?b2`LTpz&59<>slu}IKbpBs$mR;QntKs(8Jv}!+2|q}sHkQm z{jCAr;#@I9C`4G7!wN{F!=^+SY3Xq5VncUTu>t@iOJua?JwPEs3GzuBoqih$9wqFT z9E(7*|T;sGH5lYQ~MA8o>!{9zZdZLz})ta1M`1W z&^YSpTN=?wnOO@vSsOT-*;xOVGE8aB0m%sY%S&ojiY1)N7arae3RRSx=s=&G3Q#@- zbS|$c2~}~uXpJ%Ed}snx-6n)U+x2EpPRCQfh#PXeK*_j=#U$fKr|z?BW4`Dl&@hf` zi|xqe@@Vb5VsVfBH)|Ktvc<|uK&1@kqGVoiFe=Cux7wNGR)(c^-AZkF>0nv#6k@j6Q+KD*`o5E5ME4P%^uCW?Zu1RN3auP1G zI!hWC=1c!A?&B|9T3~Wwb_OZ4;L3E~tBrEuDwcDj*k~Wyh={dN1NWxXu=_({tHnr+ zYftsD!cSV=2-m!)S0{b0kh3kbdV2wG3O_lM#}cU{0c@L_ILa=M*gwX5`r^L zCPQSdy1n}v#<(8f%biI?;M1xH2K{gZ< zx*C1_&Q0=`oM~K!RvQDn2~y#>MeZ@IAifF`B9E*iVj0K~b87i^h=$ng76ODldM+r?S==__&j0v!){W0Mlg@M{Yy;X!bNWc&Kx9lIS< zh^pp~-TzE0{*83()Jt0149Tqt^49m!y};LQp40V}TYMb`hVnJ7%iuQESM1^6l~okd zEt1)9Ni>a=*6&!N5^k=Az=T+~{hlpK{nN`PPbIxSwM)v$uX*I@iE$z~|0+=A*xN7m z=K7eEnuc7-w$bm&XV?%Zueao}pGG!M-R9a_RFEIxpm#UgMTu`=2rT@GK#Iq}WT|Rn zc8D{=w8qa&|JR=>JrSxeZ;&KX*FOc#^&t?RA%rb|Y)aLG@Gb4e&O}%=yaL4V4%S{+ z8$JGT@lA?lh~Oc7h}P4x*aj`vw+MA|By0|Yct#U>A9y_{sMlrixDl5pDagZ)T8C!u zki^1JGYO0y$=4UWQ$HY-{+95PESo9h#xIop1kT=Nh>G+BSsyyW{saGYC0j-S4W$zU zNq1@S9OsT{aMrKoIfx*h5A$@*-$Ulow^;puSK<=i*YUsS4$)uz>TmL2@D$uYv1}On5a+YqbiRYOFy{d(K;4nAt-Hf;@ZQ1XIv@ zaG2Co^WxmKA=m^FC6%#yLgF{eFPG{7IqJyH61mcqTpnwWqfC!dDP~;Z2I(0JJ2yX< zlmN--Qh=m9E4oDNT2YL|9@sIVB)mG?P6=Yfrr&ny> z=vHeeOM8YK*Ay@z=IIEtcEB#!tPN6NvSr$R! zegKJ9JrB=24aO42=o+K*n=>Pyud&ntB?9ZWWvtmyJBT#}iJVBwYEss2zoF#9wvca3 zYE`d^0s{(iHbJ691}hkW{0#ueC+bF-v`GbPt_m%arl&gecU?^lT)kX{9`q1oJOT_R zB#2VcPkYpwk`M}XsXKp$Jl#iGH0eY(m?MKKJcnyOn0#9GJe7hS=+T`CM`bQE32e^Om=U$P?Z9c5p3|Dfgrc1A6|utj0{pm1r2VgQg?nD zKUbfvGe5>p*OdqYCc8(RM>!|Up*Y;9-HgZpE0vd!@I@vPL+d;5{y~(vswc5;sLc|m zfJ#o9u%)_=wd`I|yoCc>a^-_)jq%voKJDbjlSZ8lYQ?oEu~bIAvKU^wQV)n3vNQp- zd*i@t=2Hkd#90P$Y)GJ1iZ<}A;ts>)k`x6e!={K+uEw( zfr@r^ZS_P@{VE|Fl;w>Xzl%J{dPuDy&pQmvOS&x6!MqD|DMYrq@NnmeqN=#A!E!H` zDrxLK^0@(zWt#-V&7w?cJ#WXJ@($r-Ev2*u&4qUOc20T8GmKHm;u)Iz*Q_I2H+gE* zP(%m1_8lAJ<&bmlC!0Fi<1UmYMaME-#V****01Mo(E!9sJBL^!AGk6`PY4}UmM3y_ zj-M(Mf(^&epWgh-xGW6pGK`!*Gu|O__m|;Q!%62-$L_6RxR%M>-^%qrqu@9HP(6ph zzhKtRwBHK`7mn%Kug0oVeTC@Vl0Al$KB55V(N_WOe6(t!&C0m_Ye_g-szy82xUH6`0`2;wU3fPtxjI8wS+ zy@;zHMGyKz+Y=RW{$wXYW?}_s2gI@7nmIXWwO+G5!Ot8TnB6hv5~7K-uFyzsNJGI0 zgCe#76g5BYT7beV=Qt~W5HUqlJEY|y-r;~*Y{zNtNj&B!JeDEf?;s*JQbVggh-HC5 zTkQOt*mFo5&WFV-78a5;6}h9oZNZ*kAbBuQ!p-Up3yoV&pUaT3&Jj1yG`@qIUEN-f z9yXVED_GL4%TJo{U|BccXKjAj1v4jwBTKReiO~^h?9- z5MZ@dPFdARPD*GSmDo7&YWcvRG)DY37aRF=Pl$FD^4^x_lp#&(h$iVI5yC{sK-5O7Q;9vE$ zqEdpt;`JQs@>S3tN235k8GPo@l!OxEMK`2Gi=>&B#kAwW9qECE)wfrNi)*RMp;I^# z-0`Oc>~wgwLneXJc3LXCD-6o>yvKwb+Y!dL||zo@UN5B zJMkQ0FzgyyP;MSLR3*Qp`8BiQTj!d{bwmN(4+!C94f4rbyVnIPH`PHd?(kvja~#Z- zdt4JuDZV=Y$|5)@3|5(o_l&Bss)*_@@VsvV+4^}hB4EkWCzC}{sibUTo{gA#J(fl>K>uO0B|ii(P>qX);KT|Wz# z6C0vKIw{A5v_W*6bp%%uw#`M?k?30BQj^Xly5)t=Y%~Fs%c0b~Hvg0qz0v>NdqbYbJ_ zA{_XW=nZ zT@+M)>VeWPHSYVq#kS&~z-K{QtQKz7%cbT8HONSSWd&Tf(ukJ31<&|}OitDGV1MMo zdf9dH(0tq{y^VvTfk*PEu6|)%z^k}9CQm_= zHYXRQfJ2zp2V==h4js3&Y#TM|C#`5-bG&?^Unx=pQ*Q!AC%~}`- zC(mMtO3RYA)=~I*KO=Vc2|1b*lC?iA#Ww?8uqz5*-dBhO0R}h2cP&4UPm*Q=Nk93@ zpmhBB!P%6JrRt|vo18OSLrIh9^*BShF*-vK-M=as)wI+Q)YyLp)K>);8{O~y^wkF# z0FP6qG`^P){oXaHvTOl-0Hk}(puYuqTc-J84t(5 zKF|g!E|YI6B_}P_BZpT_f4bkz|?P(P#KEq zfpQyDq~7)klT;I*JNh8_DLs|nOU~N<$GpYm>&{@fT_95H0!zCyQumT@OxN?0L`k=| z*KYFOGU9E)pM%uvs{;%tJv9UyNv4bkN*&p?l{~JluHex?oSO$XxY1agMJPJ^L!f;l zm%gB|OEbw4pqQf9-o?F!KqKs3hAY3YWb**<9mX{jJ76NZl!rw;C>CzI%BK-vz(?qk zJSAe~`9P_DZ6;JZZH#EBS)#BVU@7}G`!lws#1XQv;J%YsdcJQTbrbuMmqrP)Hx$b} zG2KtsUCVcWd9bIv`(bS5!3V}19^&NFX>VYAj>14k(Crnc+%dM%P4c8e2->A_oI&sY zvDL}yHLchfioCJ~(fGz| zT@0RGsdwP-tcPeFw=dGL{lLi*| z{0w-fq4v3mIQRl2R|Fb6MI1)I`jq_)mpS-+o?+sZG3Kee$>Hu9KFw{__v2#pVTM5_ z)M8viwyGcbT8GO;DUnn|Sq3nvu|jN%7?08^R*RSGI)9;TrirN_(zmrx^dDwpyQBNVV^(MSU!Lo-k5Q**)dM1Losgi#!-lumeCrIchlf$2$)q|G~r&S>4X# zZMdX8Vg^PWit;3WC^A`a>Nj_ld|Z^Y`A9KmP3G~ZwBIUC!<@`52g5f7)FK{h>M-)P zrS2}xh5Mi*K?M8=GD^pq*r+?^WGS>LZF!*0n>P!|(?EcQyw99R7ZP?l zORXvZ_GKh)LO82D5`saan-7O-8DP(RA*-V_O83a(J*5%QT4nmsa~rO3<>ZNo)z<7S z>3POLV({e2ZxMb=c-7^-Z%*J?=$z|Zpp6PeAEF(JwHg}=qDiXaUWyUnGfUTp+iV&X zSIAWSTBCradY~C*ZPTR#CYjQQVy7O0my4HbT2a-&=Kqq_`+=A4HdRN#K!l)&0 zEohspI7aCn4W#}6VhW%q@%tx#ruygKFH+RG3$ef4vmO8M?%97WZ$4*}f9DZ_%4-Tp zD%hW}zC@P#d_=R#APpsajC_?Pyp3T)@`Oz=Lb4j|loH@lj|J^m0h{N6H>Go6ChP~D zlh^7_B+Kk`kChA``R3jASmNN#`#bNGSKcq)q%TKXTVFq7dh&Yk%}nB(xQ#|%4Eb0r zQym{hI#N3rlcf?V`zOSH0pm||mQS6GbXXh3vyhrd^~2!*oURRgNHg>2{Yg^~m}yp6 zj^<=AB#Buk8P^+RghZ7f=*C08DqeV75lJ#s%QoZA3R40?;CB;g> zb%Wx-PAsuFue6rr3=Vc|AZ6k>l=P&;gzpG$8sXCKh|M)7T6spGbQ`(*6V~i_01L3U zSNupn9fcWnP!D@%Ix3&i>n*m>u|M&VAAI9}6noZuvUm>*@?z8MUhaOoCCGpkK?q!r zsgDRjVb4Uc&0FLUrv5npjHozyQteQ*l-6uDzl;!&%FOKeg>GZAw0&4n=wenjnjs*J zBi;eHZI**jM=#Flg%w;AvmI5KNA0k~EJ3p_YN*+MR|p6FksC7mt$7a0cg|Ed=LW*J z(@wp>qB)Yv9V?kpbKtt36j17f%0-w5#(rq3S;OtSPI7 zUpx5R#20>-%H(Ph`>z($U0lqq;6f+kP$7ERn!0N^D$N@=N`5Dc4v>4Fy&65_D5kuM zOz7)^eSBnK4am^w5;k!xd-JK9bN(kd_QiQgvBYb%3T%nq4hy&>2~^oN?AEmLd!?l= ze%*R{5Bu?GzOVClxP#Q2Iy+X-0MQ=j)e%)F z1K-_N0}S`vxkl&{rv2nYtWp}0q_)T#tbQzFrRlQKV#LC6#oH^kmLOg-oFGQ1_bFXs z^C~@R8Fvv=d$NPif`hEn^w$=VW-^Ip+dgxA9S7-QcqPS}ltPn%KwgoxuiRD`fvN&J zh8QkueOz=@sN@F6G@4#fXKvp- zwB2>zc5+5HFQ^#20Ws%WWTvT~QQYR)#7~?-(=y=znkIww3GMT5n8`N`#AP%*uZ=3N zc_jqgckYeASWzs6#OiFgfJw3hN>_3Y1(=+t+@(1p6Y;y<81Dffo|7+NH{d!k#W4rF z67rbN{XHrL1mo4&t(@DIRrx?$+Zu3CTW)u6pMT$vQkL7xPk!U0`aho6|HpXAf2RQd zy|X(~(ZT`oyM7CnPOWZbU36X@%RgK(VvN2fg(v9Y26XC^FDO7ZG2_9Kr6X?Rl=-E|qabBEGF@@(*^BGbq`gF{ zDdx4L@C4J5ish&aDkN5>BqP??T@Z<0+I_tM+TI*)lplxyzXRZY?f{880)P|t(QYQH z_AwUzvS%?+EKPB11X?LOk{=vVg;ND7wpAYz>lmh$tLs3nUTiU7+gw$S^ph<8(A*qW z+qnhkZ}lI8eyYAw9b~j&4MbTwU<`FY-s>^0JimpJiwPj}mwdU@cxaQ$lbj2tZ@i{x z`5jI_X%MAnTDs5?{{cBh@eH4AIL>cHchVi4#Vi@!u7QY3Mxi$iqEJ=F6*v?{812W( z9cPCD0pgF2s6Zqv*uHDng63#A*I=$6f>Y=A8Ed6za%JvPQcC*DZXfHRr>@d zBxgV`y{(`huF`Y{O$hv~onCviph{!H(a4KV8~{>RAjyL)a`THBlA9Ssyr&Bb8ZF8Q z@8%LUc8Lrby{e=$6ip@#FuDeo4s?6@P~*q2hkiRdVe!m^uzYoGitQ(HGDaAaT}L4 zOPJ8jzNg4fxbk~<#)x71I=@(?4LxGcTr@s#YV>|MetDT2Lb}kkK9YOpcB znh@OeQFD77V1YN|f6>~?0Rnkm_DAnPY1**SyzKlwv7+o8Jm%(a)$(lhCtmHg9LBsG z6P1;W%%O7b$+>Y!pr{+S+B23ty>KpNX&3ieQ84`ds1CN;imD!jeA!_CF5C|5>6JJH3$qRsZ9_J&*&k?U!%ypaNiouHx8A28~*hiK} z@-fTa11i1b+0Rsemj&rV+EOyYA;ys`^mSr@N8EF=GxMwst&Q@?#ruk8>Z;-E{p}6! zhyJsAj>76mOXXCGJ$}|4jK&a-7rVuf!k}iJDTcJLIsmwDk=sWR?$oI=ySJJ9CS%4A zPrwTe)#}tmsOLI*s_9t8Hg|27!|@h;2R1X5-Gl-L$JB%qKHuN53s8Yo+P;VT>MeSM z1r2nKrfd#H@pQm`CXtpyqpUP@9t|G+Jv@{qdgyiEc+h26eN{W?4>n4OPJx0jl(9cSO<2TTKZ4m>v$(Tl2+K*Kb#-VmoR7m%< zSm)|+#SxYW|Ks^--y;yrNo97lm5Q2BTG*YMAZBd6leK8dT&$=DG@#=mmBScC2X2%N zS<|OEVLV~DC^OcuJw0G}MZyRqIwtR-f;}h0UfMg{HfdY;kqDzG6o9~ZT ztjy_)h_-e~rFmEw?+g;fj8;j$oL?`F`@baXsNul6<`2U8pks`vQ-o*m&qN)6ky_99 z$~}Dx27EX=f3QZngQjI5E+Z8R)j6*%=c(9g_p?D)t_j�z}xFEVkq)85Bw7k@PB! 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 literal 0 HcmV?d00001 diff --git a/archive/net.sourceforge.phpeclipse.wiki/plugin.properties b/archive/net.sourceforge.phpeclipse.wiki/plugin.properties new file mode 100644 index 0000000..e3fe00c --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/plugin.properties @@ -0,0 +1,26 @@ +MediaWiki.label=Wikipedia +HTTPQuery.label=HTTP Query + +# --------------- General UI --------------- +preferenceDescription=Configure HTTP Actions for your Wiki texts. +configurationsList=Configurations +columnUser=User Name +columnURL=URL +columnType=Type +columnStatus=Active +add=Add... +edit=Edit... +remove=Remove +start=Activate +stop=Deactivate +started=True +stopped=False + +newConfig=New Configuration +editConfig=Edit Configuration + +user=User: +remoteGroup=Configuration +url=URL: +password=Password: +parseType=Type: diff --git a/archive/net.sourceforge.phpeclipse.wiki/plugin.xml b/archive/net.sourceforge.phpeclipse.wiki/plugin.xml new file mode 100644 index 0000000..9cce801 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/plugin.xml @@ -0,0 +1,384 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/NewPostBlogEditorAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/NewPostBlogEditorAction.java new file mode 100644 index 0000000..c402bed --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/NewPostBlogEditorAction.java @@ -0,0 +1,136 @@ +package net.sourceforge.phpeclipse.wiki.actions; + +import java.util.ArrayList; +import java.util.List; + +import net.sourceforge.phpeclipse.wiki.blog.Configuration; +import net.sourceforge.phpeclipse.wiki.blog.MetaWeblog; +import net.sourceforge.phpeclipse.wiki.builder.CreatePageAction; +import net.sourceforge.phpeclipse.wiki.editor.WikiEditor; +import net.sourceforge.phpeclipse.wiki.preferences.Util; +import net.sourceforge.phpeclipse.wiki.renderer.IContentRenderer; +import net.sourceforge.phpeclipse.wiki.renderer.RendererFactory; + +import org.eclipse.core.resources.IFile; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.text.TextSelection; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IEditorActionDelegate; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.texteditor.AbstractTextEditor; + +public final class NewPostBlogEditorAction implements IEditorActionDelegate { + // public static String APPKEY = + // "1c0c75ffffffb512ffffff9575ffffff97ffffffd2ffffff87ffffff91ffffffe41dffffffc5320cffffffab544effffffc0546459ffffff83"; + + private IWorkbenchWindow window; + + private AbstractTextEditor fEditor; + + public void dispose() { + } + + public void init(IWorkbenchWindow window) { + this.window = window; + } + + public void selectionChanged(IAction action, ISelection selection) { + if (selection.isEmpty()) { + return; + } + if (selection instanceof TextSelection) { + action.setEnabled(true); + return; + } + if (window.getActivePage() != null && window.getActivePage().getActivePart() != null) { + action.setEnabled(window.getActivePage().getActivePart().getClass().equals(WikiEditor.class)); + } + } + + public void run(IAction action) { + if (fEditor == null) { + IEditorPart targetEditor = window.getActivePage().getActiveEditor(); + if (targetEditor != null && (targetEditor instanceof AbstractTextEditor)) { + fEditor = (AbstractTextEditor) targetEditor; + } + } + if (fEditor != null) { + try { + Configuration config = new Configuration("http://localhost:8080/snip/RPC2", "1", "admin", "admin"); + IFileEditorInput ei = (IFileEditorInput) fEditor.getEditorInput(); + IFile file = ei.getFile(); + StringBuffer htmlBuffer = new StringBuffer(); + CreatePageAction.getWikiBuffer(htmlBuffer,file); + + ArrayList images = new ArrayList(); + getImages(htmlBuffer, images); + + String[] result = new String[2]; + boolean cache = config.promptForPassword(config.getUser(), "Insert Config", true, result); + if (result[0] == null || result[1] == null) { + return; + } + if (result[0].equals("") || result[1].equals("")) { + return; + } + + String title = Util.getWikiTitle(file); + if (title != null) { + MetaWeblog metaWebLog = new MetaWeblog(config); + String guid = metaWebLog.newPost(file, title, htmlBuffer, true); + System.out.println(guid); + + if (images.size() > 0) { + String fullImagePath; + String filePath = file.getLocation().toString(); + int index = filePath.lastIndexOf('/'); + if (index>=0) { + filePath = filePath.substring(0,index+1); + } + for (int i = 0; i < images.size(); i++) { + fullImagePath = filePath+"Image/"+images.get(i).toString(); + metaWebLog.publishAttachement(guid, fullImagePath, false); + } + } + } else { + MessageDialog.openError(null, "Undefined Blog Title: ", "Blog file name must end with *.wp"); + } + } catch (Exception e) { + MessageDialog.openError(null, "Exception: ", e.toString()); + e.printStackTrace(); + } + } + } + + /** + * @param content the wikitext + * @param images result List of image names + */ + private void getImages(StringBuffer content, List images) { + int startIndex = 0; + int endIndex = 0; + String imageName; + while (startIndex >= 0) { + startIndex = content.indexOf("[[Image:", startIndex); + if (startIndex >= 0) { + endIndex = content.indexOf("]]", startIndex + 8); + if (endIndex < 0) { + return; + } + imageName = content.substring(startIndex + 8, endIndex); + images.add(imageName); + startIndex += 8; + } + } + } + + public void setActiveEditor(IAction action, IEditorPart targetEditor) { + if (targetEditor != null && (targetEditor instanceof AbstractTextEditor)) { + fEditor = (AbstractTextEditor) targetEditor; + } + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/NewPostBlogHTMLAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/NewPostBlogHTMLAction.java new file mode 100644 index 0000000..510eba4 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/NewPostBlogHTMLAction.java @@ -0,0 +1,118 @@ +package net.sourceforge.phpeclipse.wiki.actions; + +import net.sourceforge.phpeclipse.wiki.blog.Configuration; +import net.sourceforge.phpeclipse.wiki.blog.MetaWeblog; +import net.sourceforge.phpeclipse.wiki.builder.CreatePageAction; +import net.sourceforge.phpeclipse.wiki.editor.WikiEditor; +import net.sourceforge.phpeclipse.wiki.preferences.Util; +import net.sourceforge.phpeclipse.wiki.renderer.IContentRenderer; +import net.sourceforge.phpeclipse.wiki.renderer.RendererFactory; + +import org.eclipse.core.resources.IFile; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.text.TextSelection; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IEditorActionDelegate; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.texteditor.AbstractTextEditor; + +public final class NewPostBlogHTMLAction implements IEditorActionDelegate { + // public static String APPKEY = + // "1c0c75ffffffb512ffffff9575ffffff97ffffffd2ffffff87ffffff91ffffffe41dffffffc5320cffffffab544effffffc0546459ffffff83"; + + private IWorkbenchWindow window; + + private AbstractTextEditor fEditor; + + public void dispose() { + } + + public void init(IWorkbenchWindow window) { + this.window = window; + } + + public void selectionChanged(IAction action, ISelection selection) { + if (selection.isEmpty()) { + return; + } + if (selection instanceof TextSelection) { + action.setEnabled(true); + return; + } + if (window.getActivePage() != null && window.getActivePage().getActivePart() != null) { + action.setEnabled(window.getActivePage().getActivePart().getClass().equals(WikiEditor.class)); + } + } + + public void run(IAction action) { + if (fEditor == null) { + IEditorPart targetEditor = window.getActivePage().getActiveEditor(); + if (targetEditor != null && (targetEditor instanceof AbstractTextEditor)) { + fEditor = (AbstractTextEditor) targetEditor; + } + } + if (fEditor != null) { + try { + Configuration config = new Configuration("http://localhost:8080/blog/default", "1", "root", "******"); + IFileEditorInput ei = (IFileEditorInput) fEditor.getEditorInput(); + IFile file = ei.getFile(); + IContentRenderer renderer = RendererFactory.createContentRenderer(file.getProject()); + StringBuffer htmlBuffer = new StringBuffer(); + CreatePageAction.convertWikiBuffer(htmlBuffer, file, renderer, false); + + String[] result = new String[2]; + boolean cache = config.promptForPassword(config.getUser(), "Insert Config", true, result); + if (result[0] == null || result[1] == null) { + return; + } + if (result[0].equals("") || result[1].equals("") ) { + return; + } + + String title = Util.getWikiTitle(file); + if (title != null) { + MetaWeblog metaWebLog = new MetaWeblog(config); + String guid = metaWebLog.newPost(file, title, htmlBuffer, true); + System.out.println(guid); + } else { + MessageDialog.openError(null, "Undefined Blog Title: ", "Blog file name must end with *.wp"); + } + } catch (Exception e) { + MessageDialog.openError(null, "Exception: ", e.toString()); + e.printStackTrace(); + } + // try { + // IFileEditorInput ei = (IFileEditorInput) fEditor.getEditorInput(); + // IFile file = ei.getFile(); + // IContentRenderer renderer = RendererFactory.createContentRenderer(file.getProject()); + // StringBuffer htmlBuffer = new StringBuffer(); + // CreatePageAction.convertWikiBuffer(htmlBuffer, file, renderer, false); + // XmlRpcClientLite xmlrpc = new XmlRpcClientLite("http://www.plog4u.de/xmlrpc.php"); + // Vector rpcParams = new Vector(); + // rpcParams.add(APPKEY); + // rpcParams.add("1"); // blog.getBlogId()); + // rpcParams.add("admin"); + // rpcParams.add("******"); // fPassword + // rpcParams.add(htmlBuffer.toString()); //getContent()); + // rpcParams.add(Boolean.TRUE); // publish == yes + // + // String postId = (String) xmlrpc.execute("blogger.newPost", rpcParams); + // + // // return postId; + // } catch (Exception e) { + // e.printStackTrace(); + // // return null; + // } + } + } + + public void setActiveEditor(IAction action, IEditorPart targetEditor) { + if (targetEditor != null && (targetEditor instanceof AbstractTextEditor)) { + fEditor = (AbstractTextEditor) targetEditor; + } + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/OpenWikiLinkEditorAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/OpenWikiLinkEditorAction.java new file mode 100644 index 0000000..de7a91f --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/OpenWikiLinkEditorAction.java @@ -0,0 +1,227 @@ +package net.sourceforge.phpeclipse.wiki.actions; + +import java.io.ByteArrayInputStream; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditor; +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceStatus; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.ITextSelection; +import org.eclipse.jface.text.TextSelection; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IEditorActionDelegate; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.ide.IDE; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; +import org.eclipse.ui.texteditor.AbstractTextEditor; + +public final class OpenWikiLinkEditorAction implements IEditorActionDelegate { + + private IWorkbenchWindow window; + + private AbstractTextEditor editor; + + public void dispose() { + } + + public void init(IWorkbenchWindow window) { + this.window = window; + } + + public void selectionChanged(IAction action, ISelection selection) { + if (selection.isEmpty()) { + return; + } + if (selection instanceof TextSelection) { + action.setEnabled(true); + return; + } + if (window.getActivePage() != null && window.getActivePage().getActivePart() != null) { + action.setEnabled(window.getActivePage().getActivePart().getClass().equals(WikiEditor.class)); + } + } + + public void run(IAction action) { + if (editor == null) { + IEditorPart targetEditor = window.getActivePage().getActiveEditor(); + if (targetEditor != null && (targetEditor instanceof AbstractTextEditor)) { + editor = (AbstractTextEditor) targetEditor; + } + } + if (editor != null) { + openWikiLinkOnSelection(); + } + } + + public void setActiveEditor(IAction action, IEditorPart targetEditor) { + if (targetEditor != null && (targetEditor instanceof AbstractTextEditor)) { + editor = (AbstractTextEditor) targetEditor; + } + } + + public static String getWikiString(AbstractTextEditor editor, IDocument document, int initialPos) { + try { + int pos = initialPos; + int line = document.getLineOfOffset(pos); + int start = document.getLineOffset(line); + int end = start + document.getLineInformation(line).getLength(); + + /* + * The line does not include \n or \r so pos can be > end. Making pos = end in this case is safe for the purposes of + * determining the TextRegion at the cursor position + */ + if (pos > end) { + pos = end; + } + + int offsetInLine = pos - start; + String word = document.get(start, end - start); + int wordlen = word.length(); + int wikiLinkStart = -1; + int wikiLinkEnd = -1; + + for (int i = offsetInLine; i < wordlen; i++) { + if (word.charAt(i) == ']' && i < wordlen - 1 && word.charAt(i + 1) == ']') { + wikiLinkEnd = i; + break; + } + if (word.charAt(i) == '|') { + wikiLinkEnd = i; + break; + } + if (word.charAt(i) == '#') { + wikiLinkEnd = i; + break; + } + } + for (int i = offsetInLine; i >= 0; i--) { + if (word.charAt(i) == '[' && i > 0 && word.charAt(i - 1) == '[') { + wikiLinkStart = i + 1; + break; + } + if (word.charAt(i) == '|') { // links wih different description + wikiLinkEnd = i; + } + if (word.charAt(i) == '#') { // for links with anchors + wikiLinkEnd = i; + } + } + if (wikiLinkStart != (-1) && wikiLinkEnd != (-1) && wikiLinkStart < wikiLinkEnd) { + return new String(word.toCharArray(), wikiLinkStart, wikiLinkEnd - wikiLinkStart); + } + } catch (BadLocationException e) { + + } + return ""; + } + + public IDocument getDocument() { + IDocument doc = editor.getDocumentProvider().getDocument(editor.getEditorInput()); + return doc; + } + + public void openWikiLinkOnSelection() { + IDocument doc = getDocument(); + ITextSelection selection = (ITextSelection) editor.getSelectionProvider().getSelection(); + int pos = selection.getOffset(); + + String textRegion = getWikiString(editor, doc, pos); + IFileEditorInput ei = (IFileEditorInput) editor.getEditorInput(); + openWikiFile(ei.getFile(), textRegion); + } + + void openWikiFile(IFile cfile, String word) { + if (word != null && !word.equals("")) { + IFile file = getWikiFile(cfile, word); + try { + createNewFileIfNeeded(file, word); + // if (WikiEditorPlugin.getDefault().getPreferenceStore().getBoolean(WikiConstants.REUSE_EDITOR)) { + // saveIfNeeded(); + // getActivePage().reuseEditor(reusableEditor, new FileEditorInput(file)); + // } else { + IDE.openEditor(WikiEditorPlugin.getDefault().getActivePage(), file, true); + // redrawText(); + // } + } catch (Exception e) { + // WikiEditorPlugin.getDefault().logAndReport(WikiEditorPlugin.getResourceString(WikiConstants.RESOURCE_WIKI_ERROR_DIALOGUE_OPEN_WIKI_FILE_TITLE), + // WikiPlugin.getResourceString(WikiConstants.RESOURCE_WIKI_ERROR_DIALOGUE_OPEN_WIKI_FILE_TEXT), e); + } + } + } + + private void createNewFileIfNeeded(IFile file, String word) throws CoreException { + if (!file.exists()) { + createWikiFile(file, word); + } + } + + private IFile getWikiFile(IFile file, String word) { + String wikiFileName = Util.getWikiFileName(word, file, WikiEditorPlugin.HTML_OUTPUT_PATH); + IPath path = new Path(wikiFileName); + return ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path); + } + + /** + * Creates a folder resource handle for the folder with the given workspace path. This method does not create the folder resource; + * this is the responsibility of createFolder. + * + * @param folderPath + * the path of the folder resource to create a handle for + * @return the new folder resource handle + * @see #createFolder + */ + private IFolder createFolderHandle(IPath folderPath) { + return IDEWorkbenchPlugin.getPluginWorkspace().getRoot().getFolder(folderPath); + } + + private void createFolder(IFolder folderHandle, IProgressMonitor monitor) throws CoreException { + try { + // Create the folder resource in the workspace + // Recursive to create any folders which do not exist already + if (!folderHandle.exists()) { + IContainer parent = folderHandle.getParent(); + if (parent instanceof IFolder && (!((IFolder) parent).exists())) { + createFolder((IFolder) parent, monitor); + } + // if (linkTargetPath != null) + // folderHandle.createLink(linkTargetPath, IResource.ALLOW_MISSING_LOCAL, monitor); + // else + folderHandle.create(false, true, monitor); + } + } catch (CoreException e) { + // If the folder already existed locally, just refresh to get contents + if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED) + folderHandle.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(monitor, 500)); + else + throw e; + } + } + + private void createWikiFile(IFile file, String word) throws CoreException { + IContainer parent = file.getParent(); + if (parent instanceof IFolder && (!((IFolder) parent).exists())) { + createFolder((IFolder) parent, null); + } + String newText = ""; + byte[] buffer = newText.getBytes(); + ByteArrayInputStream source = new ByteArrayInputStream(buffer); + file.create(source, true, null); + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/AbstractHTTPQueryAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/AbstractHTTPQueryAction.java new file mode 100644 index 0000000..32e155c --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/AbstractHTTPQueryAction.java @@ -0,0 +1,96 @@ +package net.sourceforge.phpeclipse.wiki.actions.httpquery; + +import java.net.URL; +import java.text.BreakIterator; + +import net.sourceforge.phpeclipse.webbrowser.views.BrowserView; + +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.ITextSelection; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IEditorActionDelegate; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.texteditor.IDocumentProvider; +import org.eclipse.ui.texteditor.ITextEditor; + +public abstract class AbstractHTTPQueryAction implements IEditorActionDelegate { + + private IEditorPart targetEditor; + + public AbstractHTTPQueryAction() { + super(); + } + + public void setActiveEditor(IAction action, IEditorPart targetEditor) { + this.targetEditor = targetEditor; + } + + abstract protected String getUrl(String selection); + + public void run(IAction action) { + String selection = findSelectedText(); + if (selection != null && selection.trim().length() > 0) { + URL url; + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window != null) { + IWorkbenchPage page = window.getActivePage(); + try { + IViewPart part = page.findView(BrowserView.ID_BROWSER); + if (part == null) { + part = page.showView(BrowserView.ID_BROWSER); + } else { + page.bringToTop(part); + } + String urlStr = getUrl(selection); + if (urlStr != null && !urlStr.equals("")) { + ((BrowserView) part).setUrl(urlStr); + } + } catch (Exception e) { + } + } + } + } + + public void selectionChanged(IAction action, ISelection selection) { + } + + protected String findSelectedText() { + String selectedText = null; + ITextSelection textSelection = (ITextSelection) targetEditor.getEditorSite().getSelectionProvider().getSelection(); + + selectedText = textSelection.getText(); + if (selectedText == null || selectedText.trim().length() == 0) { + selectedText = findWord(textSelection); + } + return selectedText; + } + + private String findWord(ITextSelection textSelection) { + IDocumentProvider documentProvider = ((ITextEditor) targetEditor).getDocumentProvider(); + IDocument document = documentProvider.getDocument(targetEditor.getEditorInput()); + int caretPosition = textSelection.getOffset(); + try { + IRegion line = document.getLineInformation(document.getLineOfOffset(caretPosition)); + String currentLine = document.get(line.getOffset(), line.getLength()); + int positionInLine = caretPosition - line.getOffset(); + return findWordAt(positionInLine, currentLine); + } catch (Exception e) { + } + return null; + } + + private String findWordAt(int pos, String source) { + BreakIterator boundary = BreakIterator.getWordInstance(); + boundary.setText(source); + int end = boundary.following(pos); + int start = boundary.previous(); + return source.substring(start, end); + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/GoogleAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/GoogleAction.java new file mode 100644 index 0000000..0b293c4 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/GoogleAction.java @@ -0,0 +1,14 @@ +package net.sourceforge.phpeclipse.wiki.actions.httpquery; + + +public class GoogleAction extends AbstractHTTPQueryAction { + + public GoogleAction() { + super(); + } + + protected String getUrl(String selection) { + return "http://www.google.com/search?q=" + selection; + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/HTTPQueryAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/HTTPQueryAction.java new file mode 100644 index 0000000..0cdfd38 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/httpquery/HTTPQueryAction.java @@ -0,0 +1,51 @@ +package net.sourceforge.phpeclipse.wiki.actions.httpquery; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.internal.ConfigurationManager; +import net.sourceforge.phpeclipse.wiki.internal.IConfiguration; + +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.window.Window; +import org.eclipse.ui.dialogs.ListSelectionDialog; +import org.eclipse.ui.internal.dialogs.ListContentProvider; + +public class HTTPQueryAction extends AbstractHTTPQueryAction { + + public HTTPQueryAction() { + super(); + } + + protected String getUrl(String selection) { + String selectedURL = null; + + List allConfigsList = ConfigurationManager.getInstance().getConfigurations(); + ArrayList configsList = new ArrayList(); + for (int i=0;icreateFolder. + * + * @param folderPath + * the path of the folder resource to create a handle for + * @return the new folder resource handle + * @see #createFolder + */ + private IFolder createFolderHandle(IPath folderPath) { + return IDEWorkbenchPlugin.getPluginWorkspace().getRoot().getFolder(folderPath); + } + + private void createFolder(IFolder folderHandle, IProgressMonitor monitor) throws CoreException { + try { + // Create the folder resource in the workspace + // Recursive to create any folders which do not exist already + if (!folderHandle.exists()) { + IContainer parent = folderHandle.getParent(); + if (parent instanceof IFolder && (!((IFolder) parent).exists())) { + createFolder((IFolder) parent, monitor); + } + // if (linkTargetPath != null) + // folderHandle.createLink(linkTargetPath, IResource.ALLOW_MISSING_LOCAL, monitor); + // else + folderHandle.create(false, true, monitor); + } + } catch (CoreException e) { + // If the folder already existed locally, just refresh to get contents + if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED) + folderHandle.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(monitor, 500)); + else + throw e; + } + } + + private void createWikiFile(IFile file, String word) throws CoreException { + IContainer parent = file.getParent(); + if (parent instanceof IFolder && (!((IFolder) parent).exists())) { + createFolder((IFolder) parent, null); + } + String newText = ""; + byte[] buffer = newText.getBytes(); + ByteArrayInputStream source = new ByteArrayInputStream(buffer); + file.create(source, true, null); + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/MediaWikiConnector.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/MediaWikiConnector.java new file mode 100644 index 0000000..c9d2bda --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/MediaWikiConnector.java @@ -0,0 +1,111 @@ +package net.sourceforge.phpeclipse.wiki.actions.mediawiki; + +import java.io.IOException; +import java.io.InputStream; +import java.io.StringReader; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.apache.commons.httpclient.ConnectMethod; +import org.apache.commons.httpclient.HttpConnection; +import org.apache.commons.httpclient.HttpMethod; +import org.apache.commons.httpclient.HttpState; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.URI; +import org.apache.commons.httpclient.UsernamePasswordCredentials; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.protocol.Protocol; + +/** + * This class gets the wikitext from a wikipedia edit page + * + * The basic coding was copied from the commons-httpclient example MediaWikiConnector.java + */ +public class MediaWikiConnector { + + /** + * Get the text of a wikimedia Wiki-Description from en.wikipedia.org + * + */ + public static String getWikiText(String wikiDescriptor) { + return getWikiText(wikiDescriptor, null); + } + + /** + * Get the text of a wikimedia Wiki-Description + * + */ + public static String getWikiText(String wikiDescriptor, String urlStr) { + // examples + // http://en.wikipedia.org/w/wiki.phtml?title=Main_Page&action=edit + // http://en.wikibooks.org/w/wiki.phtml?title=Programming:PHP:SQL_Injection&action=edit + // http://en.wikipedia.org/w/wiki.phtml?title=Talk:Division_by_zero&action=edit + HttpMethod method = null; + try { + if (urlStr == null) { + urlStr = "http://en.wikipedia.org/w/wiki.phtml?title=" + wikiDescriptor + "&action=edit"; + } else { + urlStr = urlStr + "?title=" + wikiDescriptor + "&action=edit"; + } + URI uri = new URI(urlStr.toCharArray()); + + String schema = uri.getScheme(); + if ((schema == null) || (schema.equals(""))) { + schema = "http"; + } + Protocol protocol = Protocol.getProtocol(schema); + + HttpState state = new HttpState(); + + method = new GetMethod(uri.toString()); + String host = uri.getHost(); + int port = uri.getPort(); + + HttpConnection connection = new HttpConnection(host, port, protocol); + + connection.setProxyHost(System.getProperty("http.proxyHost")); + connection.setProxyPort(Integer.parseInt(System.getProperty("http.proxyPort", "80"))); + + if (System.getProperty("http.proxyUserName") != null) { + state.setProxyCredentials(null, null, new UsernamePasswordCredentials(System.getProperty("http.proxyUserName"), System + .getProperty("http.proxyPassword"))); + } + + if (connection.isProxied() && connection.isSecure()) { + method = new ConnectMethod(method); + } + + method.execute(state, connection); + + if (method.getStatusCode() == HttpStatus.SC_OK) { + // get the textareas wiki text now: + InputStream stream = method.getResponseBodyAsStream(); + int byteLen = stream.available(); + int count = 1; + byte[] buffer = new byte[byteLen]; + stream.read(buffer, 0, byteLen); + String wikiText = new String(buffer); +// String wikiText = method.getResponseBodyAsString(); + int start = wikiText.indexOf("", start + 1); + if (start != (-1)) { + int end = wikiText.indexOf(""); + wikiText = wikiText.substring(start + 1, end); + } + } + return wikiText; + // System.out.println(wikiText); + + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (method != null) { + method.releaseConnection(); + } + } + return null; // no success in getting wiki text + } +} + diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/RefreshWikiTextEditorAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/RefreshWikiTextEditorAction.java new file mode 100644 index 0000000..f00d446 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/RefreshWikiTextEditorAction.java @@ -0,0 +1,195 @@ +package net.sourceforge.phpeclipse.wiki.actions.mediawiki; + +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.Collections; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditor; +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceStatus; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.ITextSelection; +import org.eclipse.jface.text.TextSelection; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.window.Window; +import org.eclipse.ui.IEditorActionDelegate; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.dialogs.ListSelectionDialog; +import org.eclipse.ui.internal.dialogs.ListContentProvider; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; +import org.eclipse.ui.texteditor.AbstractTextEditor; + +public final class RefreshWikiTextEditorAction implements IEditorActionDelegate { + + private IWorkbenchWindow window; + + private AbstractTextEditor fEditor; + + public void dispose() { + } + + public void init(IWorkbenchWindow window) { + this.window = window; + } + + public void selectionChanged(IAction action, ISelection selection) { + if (selection.isEmpty()) { + return; + } + if (selection instanceof TextSelection) { + action.setEnabled(true); + return; + } + if (window.getActivePage() != null && window.getActivePage().getActivePart() != null) { + action.setEnabled(window.getActivePage().getActivePart().getClass().equals(WikiEditor.class)); + } + } + + public void run(IAction action) { + if (fEditor == null) { + IEditorPart targetEditor = window.getActivePage().getActiveEditor(); + if (targetEditor != null && (targetEditor instanceof AbstractTextEditor)) { + fEditor = (AbstractTextEditor) targetEditor; + } + } + if (fEditor != null) { + openWikiLinkOnSelection(); + } + } + + public void setActiveEditor(IAction action, IEditorPart targetEditor) { + if (targetEditor != null && (targetEditor instanceof AbstractTextEditor)) { + fEditor = (AbstractTextEditor) targetEditor; + } + } + + public IDocument getDocument() { + IDocument doc = fEditor.getDocumentProvider().getDocument(fEditor.getEditorInput()); + return doc; + } + + public void openWikiLinkOnSelection() { + IDocument doc = getDocument(); + ITextSelection selection = (ITextSelection) fEditor.getSelectionProvider().getSelection(); + int pos = selection.getOffset(); + // String textRegion = getWikiString(fEditor, doc, pos); + IFileEditorInput ei = (IFileEditorInput) fEditor.getEditorInput(); + openWikiFile(ei.getFile()); + } + + void openWikiFile(IFile cfile) { + String wikiName = getWikiFile(cfile); + try { + if (fEditor != null) { + selectWiki(wikiName); + } + } catch (Exception e) { + } + + } + + private void selectWiki(String wikiName) { + String exampleWikiURL = "http://en.wikibooks.org/w/wiki.phtml"; + String selectedWikiURL = null; + ArrayList locationsList = new ArrayList(); + locationsList.add(exampleWikiURL); + + Collections.sort(locationsList); + + ListSelectionDialog listSelectionDialog = new ListSelectionDialog(WikiEditorPlugin.getDefault().getWorkbench() + .getActiveWorkbenchWindow().getShell(), locationsList, new ListContentProvider(), new LabelProvider(), + "Select the refresh URL."); + listSelectionDialog.setTitle("Multiple active configuration found"); + if (listSelectionDialog.open() == Window.OK) { + Object[] locations = listSelectionDialog.getResult(); + if (locations != null) { + for (int i = 0; i < locations.length; i++) { + selectedWikiURL = (String) locations[i]; + break; + } + } + } + + if (selectedWikiURL != null && !selectedWikiURL.equals("")) { + String wikiContent = MediaWikiConnector.getWikiText(wikiName, selectedWikiURL); + if (wikiContent != null) { + IDocument doc = fEditor.getDocumentProvider().getDocument(fEditor.getEditorInput()); + doc.set(wikiContent); + } + } + } + + private void createNewFileIfNeeded(IFile file, String word) throws CoreException { + if (!file.exists()) { + createWikiFile(file, word); + } + } + + private String getWikiFile(IFile file) { + return Util.getFileWikiName(file, WikiEditorPlugin.HTML_OUTPUT_PATH); + // IPath path = new Path(wikiFileName); + // return ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path); + } + + /** + * Creates a folder resource handle for the folder with the given workspace path. This method does not create the folder resource; + * this is the responsibility of createFolder. + * + * @param folderPath + * the path of the folder resource to create a handle for + * @return the new folder resource handle + * @see #createFolder + */ + private IFolder createFolderHandle(IPath folderPath) { + return IDEWorkbenchPlugin.getPluginWorkspace().getRoot().getFolder(folderPath); + } + + private void createFolder(IFolder folderHandle, IProgressMonitor monitor) throws CoreException { + try { + // Create the folder resource in the workspace + // Recursive to create any folders which do not exist already + if (!folderHandle.exists()) { + IContainer parent = folderHandle.getParent(); + if (parent instanceof IFolder && (!((IFolder) parent).exists())) { + createFolder((IFolder) parent, monitor); + } + // if (linkTargetPath != null) + // folderHandle.createLink(linkTargetPath, IResource.ALLOW_MISSING_LOCAL, monitor); + // else + folderHandle.create(false, true, monitor); + } + } catch (CoreException e) { + // If the folder already existed locally, just refresh to get contents + if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED) + folderHandle.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(monitor, 500)); + else + throw e; + } + } + + private void createWikiFile(IFile file, String word) throws CoreException { + IContainer parent = file.getParent(); + if (parent instanceof IFolder && (!((IFolder) parent).exists())) { + createFolder((IFolder) parent, null); + } + String newText = ""; + byte[] buffer = newText.getBytes(); + ByteArrayInputStream source = new ByteArrayInputStream(buffer); + file.create(source, true, null); + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/main.css b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/main.css new file mode 100644 index 0000000..ca8e627 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/actions/mediawiki/main.css @@ -0,0 +1,908 @@ +/* +** Mediawiki 'monobook' style sheet for CSS2-capable browsers. +** Copyright Gabriel Wicke - http://wikidev.net/ +** License: GPL +** +** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John +** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher, +** Michael Zeltner and Geir Bækholt) +** All you guys rock :) +*/ + +#column-content { + width: 100%; + float: right; + margin: 0 0 0.6em -12.2em; + padding:0; +} +#content { + margin: 2.8em 0 0 12.2em; + padding: 0em 1em 1.5em 1em; + background: White; + border: 1px solid #aaaaaa; + border-right: none; + line-height: 1.5em; + position: relative; + z-index: 2; +} +#column-one { padding-top: 160px; } +/* the left column width is specified in class .portlet */ + +/* Font size: +** We take advantage of keyword scaling- browsers won't go below 9px +** More at http://www.w3.org/2003/07/30-font-size +** http://style.cleverchimp.com/font_size_intervals/altintervals.html +*/ + +body { + font: x-small sans-serif; + background: #f9f9f9 url("headbg.jpg") 0px 0px no-repeat; + color: Black; + margin: 0; + padding: 0; +} + +/* scale back up to a sane default */ +#globalWrapper { + font-size:127%; + width: 100%; + margin: 0; + padding: 0; +} +.visualClear { clear: both; } + +/* general styles */ + +table { + font-size: 100%; + background: White; +} +a { + text-decoration: none; + color: #002bb8; + background: none; +} +a:visited { color: #5a3696; } +a:active { color: Orange; } +a:hover { text-decoration: underline; } +a.stub { color: #772233; } +a.new, +#p-personal a.new { color:#ba0000; } +a.new:visited, +#p-personal a.new:visited { color:#a55858; } + +img { + border: none; + vertical-align: middle; +} +p { + margin: 0.4em 0em 0.5em 0em; + line-height: 1.5em; +} + +p img { margin: 0; } + +hr { + height: 1px; + color: #aaaaaa; + background-color: #aaaaaa; + border: 0; + margin: 0.2em 0 0.2em 0; +} + +h1, h2, h3, h4, h5, h6 { + color: Black; + background: none; + font-weight: normal; + margin: 0; + padding-top: 0.5em; + padding-bottom: 0.17em; + border-bottom: 1px solid #aaaaaa; +} +h1 { font-size: 188%; } +h2 { font-size: 150%; } +h3, h4, h5, h6 { + border-bottom: none; + font-weight: bold; +} +h3 { font-size: 132%; } +h4 { font-size: 116%; } +h5 { font-size: 100%; } +h6 { font-size: 80%; } + +ul { + line-height: 1.5em; + list-style-type: square; + margin: 0.3em 0 0 1.5em; + padding:0; + list-style-image: url("bullet.gif"); +} +ol { + line-height: 1.5em; + margin: 0.3em 0 0 3.2em; + padding:0; + list-style-image: none; +} +li { margin-bottom: 0.1em; } +dt { + font-weight: bold; + margin-bottom: 0.1em; +} +dl{ + margin-top: 0.2em; + margin-bottom: 0.5em; +} +dd { + line-height: 1.5em; + margin-left: 2em; + margin-bottom: 0.1em; +} + +fieldset { + border: 1px solid #2f6fab; + margin: 1em 0em 1em 0em; + padding: 0em 1em 1em 1em; + line-height: 1.5em; +} +legend { + background: White; + padding: 0.5em; + font-size: 95%; +} +form { + border: none; + margin: 0; +} + +textarea { + border: 1px solid #2f6fab; + color: Black; + background-color: white; + width: 100%; + padding: 0.1em; + overflow: auto; +} +/* hide this from ie/mac and konq2.2 */ +@media All { + head:first-child+body input { + visibility: visible; + border: 1px solid #2f6fab; + color: Black; + background-color: white; + vertical-align: middle; + padding: 0.2em; + } +} +input.historysubmit { + padding: 0 0.3em 0.3em 0.3em !important; + font-size: 94%; + cursor: pointer; + height: 1.7em !important; + margin-left: 1.6em; +} +input[type="radio"], +input[type="checkbox"] { border:none; } +select { + border: 1px solid #2f6fab; + color: Black; + vertical-align: top; +} +abbr, acronym, .explain { + border-bottom: 1px dotted Black; + color: Black; + background: none; + cursor: help; +} +q { + font-family: Times, "Times New Roman", serif; + font-style: italic; +} +/* disabled for now +blockquote { + font-family: Times, "Times New Roman", serif; + font-style: italic; +}*/ +code { background-color: #f9f9f9; } +pre { + padding: 1em; + border: 1px dashed #2f6fab; + color: Black; + background-color: #f9f9f9; + line-height: 1.1em; +} + + +/* +** the main content area +*/ + +#siteSub { display: none; } +#contentSub { + font-size: 84%; + line-height: 1.2em; + margin: 0 0 1.4em 1em; + color: #7d7d7d; + width: auto; +} +span.subpages { display: block; } + +/* Some space under the headers in the content area */ +#bodyContent h1, #bodyContent h2 { margin-bottom:0.6em; } +#bodyContent h3, +#bodyContent h4, +#bodyContent h5 { + margin-bottom: 0.3em; +} +.firstHeading { margin-bottom:0.1em; } + +/* user notification thing */ +.usermessage { + background-color: #ffce7b; + border: 1px solid #ffa500; + color: Black; + font-weight: bold; + margin: 2em 0em 1em 0em; + padding: 0.5em 1em; + vertical-align: middle; +} +#siteNotice { + text-align: center; + font-size: 95%; + padding: 0 0.9em 0 0.9em; +} +#siteNotice p { margin: none; padding: none; } +.error { + color: red; + font-size: larger; +} +#catlinks { + border:1px solid #aaaaaa; + background-color:#f9f9f9; + padding:5px; + margin-top: 1em; + clear: both; +} +/* currently unused, intended to be used by a metadata box +in the bottom-right corner of the content area */ +.documentDescription { + /* The summary text describing the document */ + font-weight: bold; + display: block; + margin: 1em 0em; + line-height: 1.5em; +} +.documentByLine { + text-align: right; + font-size: 90%; + clear: both; + font-weight: normal; + color: #76797c; +} + +/* emulate center */ +.center { + width: 100%; + text-align: center; +} +*.center * { + margin-left: auto; + margin-right: auto; +} +/* small for tables and similar */ +.small, .small * { font-size: 94%; } +table.small { font-size: 100% } + +/* +** content styles +*/ + +#toc { + /*border:1px solid #2f6fab;*/ + border:1px solid #aaaaaa; + background-color:#f9f9f9; + padding:5px; + font-size: 95%; +} +#toc .tocindent { margin-left: 2em; } +#toc .tocline { margin-bottom: 0px; } +#toc p { margin: 0 } +#toc .toctoggle { font-size: 94%; } +#toc .editsection { + margin-top: 0.7em; + font-size: 94%; +} + +/* images */ +div.floatright, table.floatright { + clear: right; + float: right; + margin: 0; + position: relative; + border: 0.5em solid White; + border-width: 0.5em 0 0.8em 1.4em; +} +div.floatright p { font-style: italic; } +div.floatleft, table.floatleft { + float: left; + margin: 0.3em 0.5em 0.5em 0; + position: relative; + border: 0.5em solid White; + border-width: 0.5em 1.4em 0.8em 0; +} +div.floatleft p { font-style: italic; } +/* thumbnails */ +div.thumb { + margin-bottom: 0.5em; + border-style: solid; border-color: White; + width: auto; +} +div.thumb div { + border:1px solid #cccccc; + padding: 3px !important; + background-color:#f9f9f9; + font-size: 94%; + text-align: center; + overflow: hidden; +} +div.thumb div a img { + border:1px solid #cccccc; +} +div.thumb div div.thumbcaption { + border: none; + text-align: left; + line-height: 1.4; + padding: 0.3em 0 0.1em 0; +} +div.magnify { + float: right; + border: none !important; + background: none !important; +} +div.magnify a, div.magnify img { + display: block; + border: none !important; + background: none !important; +} +div.tright { + clear: right; + float: right; + border-width: 0.5em 0 0.8em 1.4em; +} +div.tleft { + float: left; + margin-right:0.5em; + border-width: 0.5em 1.4em 0.8em 0; +} +.urlexpansion, +.hiddenStructure { + display: none; +} +img.tex { vertical-align: middle; } +span.texhtml { font-family: serif; } + +/* +** classes for special content elements like town boxes +** intended to be referenced directly from the wiki src +*/ + +/* +** User styles +*/ +/* table standards */ +table.rimage { + float:right; + position:relative; + margin-left:1em; + margin-bottom:1em; + text-align:center; +} +.toccolours { + border:1px solid #aaaaaa; + background-color:#f9f9f9; + padding:5px; + font-size: 95%; +} +div.townBox { + position:relative; + float:right; + background:White; + margin-left:1em; + border: 1px solid Grey; + padding:0.3em; + width: 200px; + overflow: hidden; + clear: right; +} +div.townBox dl { + padding: 0; + margin: 0 0 0.3em 0; + font-size: 96%; +} +div.townBox dl dt { + background: none; + margin: 0.4em 0 0 0; +} +div.townBox dl dd { + margin: 0.1em 0 0 1.1em; + background-color: #f3f3f3; +} + +/* +** edit views etc +*/ +.special li { + line-height: 1.4em; + margin: 0; + padding: 0; +} + +/* Page history styling */ +/* the auto-generated edit comments */ +.autocomment { color: gray; } +#pagehistory span.user { + margin-left: 1.4em; + margin-right: 0.4em; +} +#pagehistory span.minor { font-weight: bold; } +#pagehistory li { border: 1px solid White; } +#pagehistory li.selected { + background-color:#f9f9f9; + border:1px dashed #aaaaaa; +} +/* +** Diff rendering +*/ +table.diff { background:white; } +td.diff-otitle { background:#ffffff; } +td.diff-ntitle { background:#ffffff; } +td.diff-addedline { + background:#ccffcc; + font-size: smaller; +} +td.diff-deletedline { + background:#ffffaa; + font-size: smaller; +} +td.diff-context { + background:#eeeeee; + font-size: smaller; +} +span.diffchange { color: red; } + +/* +** keep the whitespace in front of the ^=, hides rule from konqueror +** this is css3, the validator doesn't like it when validating as css2 +*/ +#bodyContent a[href ^="http://"], +#bodyContent a[href ^="gopher://"] { + background: url(external.png) center right no-repeat; + padding-right: 13px; +} +#bodyContent a[href ^="https://"], +.link-https { + background: url("lock_icon.gif") center right no-repeat; + padding-right: 16px; +} +#bodyContent a[href ^="mailto:"], +.link-mailto { + background: url("mail_icon.gif") center right no-repeat; + padding-right: 18px; +} +#bodyContent a[href ^="news://"] { + background: url("news_icon.png") center right no-repeat; + padding-right: 18px; +} +#bodyContent a[href ^="ftp://"], +.link-ftp { + background: url("file_icon.gif") center right no-repeat; + padding-right: 18px; +} +#bodyContent a[href ^="irc://"], +.link-irc { + background: url("discussionitem_icon.gif") center right no-repeat; + padding-right: 18px; +} +/* disable interwiki styling */ +#bodyContent a.extiw, +#bodyContent a.extiw:active { + color: #3366bb; + background: none; + padding: 0; +} +#bodyContent a.external { color: #3366bb; } +/* this can be used in the content area to switch off +special external link styling */ +#bodyContent .plainlinks a { + background: none !important; + padding: 0; +} +/* +** Structural Elements +*/ + +/* +** general portlet styles (elements in the quickbar) +*/ +.portlet { + border: none; + margin: 0 0 0.5em 0em; + float: none; + padding: 0; + width: 11.6em; + overflow: hidden; +} +.portlet h4 { + font-size: 95%; + font-weight: normal; + white-space: nowrap; +} +.portlet h5 { + background: transparent; + padding: 0em 1em 0em 0.5em; + text-transform: lowercase; + display: inline; + font-size: 91%; + height: 1em; + font-weight: normal; + white-space: nowrap; +} +.portlet h6 { + background: #ffae2e; + border: 1px solid #2f6fab; + border-style: solid solid none solid; + padding: 0em 1em 0em 1em; + text-transform: lowercase; + display: block; + font-size: 1em; + height: 1.2em; + font-weight: normal; + white-space: nowrap; +} +.pBody { + font-size: 95%; + background: White; + border-collapse: collapse; + border: 1px solid #aaaaaa; + padding: 0 0.8em 0.3em 0.5em; +} +.portlet h1, +.portlet h2, +.portlet h3, +.portlet h4 { + margin: 0; + padding: 0; +} +.portlet ul { + line-height: 1.5em; + list-style-type: square; + list-style-image: url("bullet.gif"); + font-size:95%; +} +.portlet li { + padding:0; + margin: 0 0 0 0; + margin-bottom: 0; +} + +/* +** Logo properties +*/ + +#p-logo { + z-index: 3; + position:absolute; /*needed to use z-index */ + top: 0; + left: 0; + height: 155px; + width: 12em; + overflow: visible; +} +#p-logo h5 { display: none; } +#p-logo a, +#p-logo a:hover { + display: block; + height: 155px; + width: 12.2em; + background-repeat: no-repeat; + background-position: 35% 50% !important; + text-decoration: none; +} + +/* +** the navigation portlet +*/ + +#p-nav { + position:relative; + z-index:3; +} + +/* +** Search portlet +*/ +#p-search { + position:relative; + z-index:3; +} +#p-search .pBody { + text-align: center; +} +input.searchButton { + margin-top:1px; + padding: 0 0.4em !important; + font-size: 95%; + cursor: pointer; + background-color: White; + border: 1px solid #2f6fab; +} +#searchInput { + border: 1px solid #2f6fab; + width:10.9em; + margin: 0 0 0 0; + font-size: 95%; +} +#p-search .pBody { + padding: 0.5em 0.4em 0.4em 0.4em; +} + +/* +** the personal toolbar +*/ + +#p-personal { + width:100%; + white-space:nowrap; + padding:0 0 0 0; + margin:0; + position:absolute; + left:0px; + top:0px; + z-index: 0; + border: none; + background: none; + overflow: visible; + line-height: 1.2em; +} + +#p-personal h5 { + display:none; +} +#p-personal .portlet, +#p-personal .pBody { + padding:0; + margin:0; + border: none; + z-index:0; + overflow: visible; + background: none; +} +/* this is the ul contained in the portlet */ +#p-personal ul { + border: none; + line-height: 1.4em; + color: #2f6fab; + padding: 0em 2em 0 3em; + margin: 0; + text-align: right; + text-transform: lowercase; + list-style: none; + z-index:0; + background: none; +} +#p-personal li { + z-index:0; + border:none; + padding:0; + display: inline; + color: #2f6fab; + margin-left: 1em; + line-height: 1.2em; + background: none; +} +#p-personal li a { + text-decoration: none; + color: #005896; + padding-bottom: 0.2em; + background: none; +} +#p-personal li a:hover { + background-color: White; + padding-bottom: 0.2em; + text-decoration: none; +} + +/* the icon in front of the user name, single quotes +in bg url to hide it from iemac */ +li#pt-userpage, +li#pt-anonuserpage, +li#pt-login { + background: url('user.gif') top left no-repeat; + background-repeat: no-repeat; + padding-left: 20px; + text-transform: none; +} + +/* +** the page-related actions- page/talk, edit etc +*/ +#p-cactions { + position:absolute; + top: 1.3em; + left: 11.5em; + margin: 0; + white-space:nowrap; + width: 76%; + line-height: 1.1em; + overflow: visible; + background: none; + border-collapse: collapse; + padding-left: 1em; + list-style: none; + font-size: 95%; +} +#p-cactions .hiddenStructure { display: none; } +#p-cactions ul { + list-style: none; +} +#p-cactions li { + display: inline; + border: 1px solid #aaaaaa; + border-bottom: none; + padding: 0 0 0.1em 0; + margin: 0 0.3em 0 0; + overflow: visible; + background: White; +} +#p-cactions li.selected { + border-color: #fabd23; + padding: 0 0 0.2em 0; +} +#p-cactions li a { + background-color: White; + color: #002bb8; + border: none; + padding: 0 0.8em 0.3em 0.8em; + text-decoration: none; + text-transform: lowercase; + position: relative; + z-index: 0; + margin: 0; +} +#p-cactions .selected a { z-index: 3; } +#p-cactions .new a { color:#ba0000; } +#p-cactions li a:hover { + z-index: 3; + text-decoration: none; +} +#p-cactions h5 { display: none; } +#p-cactions li.istalk { margin-right: 0; } +#p-cactions li.istalk a { padding-right: 0.5em; } +#p-cactions #ca-addsection a { + padding-left: 0.4em; + padding-right: 0.4em; +} +/* offsets to distinguish the tab groups */ +li#ca-talk { margin-right: 1.6em; } +li#ca-watch, li#ca-watch { margin-left: 1.6em; } + + +/* +** the remaining portlets +*/ +#p-tbx, +#p-lang { + position:relative; + z-index:3; +} + +/* +** footer +*/ +#footer { + background-color: White; + border-top: 1px solid #fabd23; + border-bottom: 1px solid #fabd23; + margin: 0.6em 0em 1em 0em; + padding: 0.4em 0em 1.2em 0em; + text-align: center; + font-size: 90%; +} +#footer li { + display: inline; + margin: 0 1.3em; +} +/* hide from incapable browsers */ +head:first-child+body #footer li { white-space: nowrap; } +#f-poweredbyico, #f-copyrightico { + margin: 0 8px; + position: relative; + top: -2px; /* Bump it up just a tad */ +} +#f-poweredbyico { + float: right; + height: 1%; +} +#f-copyrightico { + float: left; + height: 1%; +} + +/* js pref toc */ +#preftoc { + float: left; + margin: 1em 1em 1em 1em; + width: 13em; +} +#preftoc li { border: 1px solid White; } +#preftoc li.selected { + background-color:#f9f9f9; + border:1px dashed #aaaaaa; +} +#preftoc a, +#preftoc a:active { + display: block; + color: #0014a6; +} +#prefcontrol { + clear: both; + float: left; + margin-top: 1em; +} +div.prefsectiontip { + font-size: 95%; + margin-top: 1em; +} +fieldset.operaprefsection { margin-left: 15em } + +/* +** IE/Mac fixes, hope to find a validating way to move this +** to a separate stylesheet. This would work but doesn't validate: +** @import("IEMacFixes.css"); +*/ +/* tabs: border on the a, not the div */ +* > html #p-cactions li { border:none; } +* > html #p-cactions li a { + border: 1px solid #aaaaaa; + border-bottom: none; +} +* > html #p-cactions li.selected a { border-color: #fabd23; } +/* footer icons need a fixed width */ +* > html #f-poweredbyico, +* > html #f-copyrightico { width: 88px; } +* > html #bodyContent, +* > html #bodyContent pre { + overflow-x: auto; + width: 100%; + padding-bottom: 25px; +} + +/* more IE fixes */ +/* float/negative margin brokenness */ +* html #footer {margin-top: 0;} +* html #column-content { + display: inline; + margin-bottom: 0; +} +* html div.editsection { font-size: smaller; } +#pagehistory li.selected { position: relative; } + +/* Mac IE 5.0 fix; floated content turns invisible */ +* > html #column-content { + float: none; +} +* > html #column-one { + position: absolute; + left: 0; + top: 0; +} +* > html #footer { + margin-left: 13.2em; +} + +.printfooter { + display: none; +} + +.sharedUploadNotice { + font-style: italic; +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/BlogEntry.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/BlogEntry.java new file mode 100644 index 0000000..4d0d7b8 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/BlogEntry.java @@ -0,0 +1,17 @@ + +package net.sourceforge.phpeclipse.wiki.blog; + +public class BlogEntry { + String fGuid; + long fDate; + public BlogEntry(String guid, long date) { + fGuid = guid; + fDate = date; + } + public String getGuid() { + return fGuid; + } + public long getTime() { + return fDate; + } +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/Configuration.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/Configuration.java new file mode 100644 index 0000000..8d8843b --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/Configuration.java @@ -0,0 +1,149 @@ +package net.sourceforge.phpeclipse.wiki.blog; + +import net.sourceforge.phpeclipse.wiki.preferences.AlternateUserValidationDialog; +import net.sourceforge.phpeclipse.wiki.preferences.UserValidationDialog; +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.swt.widgets.Shell; + +public class Configuration { + String fUrl; + + String fBlogID; + + String fUser; + + String fPassword; + + public Configuration(String url, String blogId, String user, String password) { + fUrl = url; + fBlogID = blogId; + fUser = user; + fPassword = password; + } + + /** + * @return Returns the blogID. + */ + public String getBlogID() { + return fBlogID; + } + + /** + * @param blogID + * The blogID to set. + */ + public void setBlogID(String blogID) { + fBlogID = blogID; + } + + /** + * @return Returns the fPassword. + */ + public String getPassword() { + return fPassword; + } + + /** + * @param fPassword + * The fPassword to set. + */ + public void setPassword(String password) { + fPassword = password; + } + + /** + * @return Returns the url. + */ + public String getUrl() { + return fUrl; + } + + /** + * @param url + * The url to set. + */ + public void setUrl(String url) { + fUrl = url; + } + + /** + * @return Returns the fUser. + */ + public String getUser() { + return fUser; + } + + /** + * @param fUser + * The fUser to set. + */ + public void setUser(String user) { + fUser = user; + } + + public boolean isUserComplete() { + if (fUser==null || fUser.equals("")) { + return false; + } + if (fPassword==null || fPassword.equals("")) { + return false; + } + return true; + } + /** + * Special alternate prompting. Returns the fPassword. Username must be fixed. + * + * + * String passWord = Configuration.alternatePromptForPassword(config.getUser()); + * if (passWord==null||passWord.equals("")) { + * return; + * } + * config.setPassword(passWord); + */ + public String alternatePromptForPassword(final String username) { + Shell shell = Util.findShell(); + AlternateUserValidationDialog dialog = new AlternateUserValidationDialog(shell, (username == null) ? "" : username); //$NON-NLS-1$ + dialog.setUsername(username); + int result = dialog.open(); + if (result == Dialog.CANCEL) + return null; + return dialog.getPassword(); + } + + /** + * Asks the User to enter a Password. Places the results in the supplied string[]. result[0] must contain the username, result[1] + * must contain the fPassword. If the fUser canceled, both values must be zero. + * + * @param location + * the location to obtain the fPassword for + * @param username + * the username + * @param message + * a message to display to the fUser + * @param userMutable + * whether the fUser can be changed in the dialog + * @param result + * a String array of length two in which to put the result + */ + public boolean promptForPassword(final String username, final String message, final boolean userMutable, final String[] result) { + if (isUserComplete()) { + result[0] = fUser; + result[1] = fPassword; + return false; + } + Shell shell = Util.findShell(); + if (shell == null) { + return false; + } + String domain = ""; //location == null ? null : location.getLocation(); + UserValidationDialog dialog = new UserValidationDialog(shell, domain, (username == null) ? "" : username, message);//$NON-NLS-1$ + dialog.setUsernameMutable(userMutable); + dialog.open(); + result[0] = dialog.getUsername(); + result[1] = dialog.getPassword(); + return dialog.getAllowCaching(); + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/MetaWeblog.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/MetaWeblog.java new file mode 100644 index 0000000..07de445 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/MetaWeblog.java @@ -0,0 +1,189 @@ +package net.sourceforge.phpeclipse.wiki.blog; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.util.Date; +import java.util.Hashtable; +import java.util.Vector; + +import org.apache.xmlrpc.XmlRpcClient; +import org.apache.xmlrpc.XmlRpcException; +import org.eclipse.core.resources.IFile; +import org.eclipse.jface.dialogs.MessageDialog; + +public class MetaWeblog { + + XmlRpcClient xmlrpc; + + Configuration config; + + public MetaWeblog(Configuration conf) throws MalformedURLException { + config = conf; + xmlrpc = new XmlRpcClient(config.getUrl()); + } + + public String newPost(Configuration config, IFile file, String title, StringBuffer htmlBuffer) { + return newPost(config, file, title, htmlBuffer); + } + + public String newPost(IFile file, String title, StringBuffer htmlBuffer, boolean publish) { + try { + // XmlRpcClient xmlrpc = new XmlRpcClient(config.getUrl()); + + Hashtable message = new Hashtable(); + message.put("title", "title"); + message.put("description", htmlBuffer.toString()); + + Vector params = new Vector(); + String guid = null; + + params.add(config.getBlogID()); + params.add(config.getUser()); + params.add(config.getPassword()); + params.add(message); + if (publish) { + params.add(Boolean.TRUE); //publish=true + } else { + params.add(Boolean.FALSE); //publish=false + } + return (String) xmlrpc.execute("metaWeblog.newPost", params); + } catch (MalformedURLException e) { + MessageDialog.openError(null, "MalformedURLException: ", e.toString()); + } catch (Exception e) { + MessageDialog.openError(null, "Exception: ", e.toString()); + // e.printStackTrace(); + } + return null; + } + + /** + * Publish (or delete) the attachement. + * + * @param snipId + * the id of the snip to which the attachment belongs + * @param attachementFilename + * The blog attachement. If the publication is successful this will be updated to contain a reference to the publication + * location. + * @param delete + * true if the attachment is in fact to be deleted + * @return the attachment info + * @throws TransferFilesException + */ + public void publishAttachement(String snipId, String attachementFilename, boolean delete) throws TransferFilesException { + Vector params = new Vector(); + + params.add(config.getBlogID()); + params.add(config.getUser()); + params.add(config.getPassword()); + Hashtable message = new Hashtable(); + File attf = new File(attachementFilename); + try { + if (attf.length() > 2 * 1000 * 1000) { + throw new TransferFilesException("File should not be close to 2MB. Currently it is " + attf.length() + " bytes."); + } + byte[] data; + if (delete) { + data = new byte[0]; + } else { + data = new byte[(int) attf.length()]; + InputStream in = new FileInputStream(attf); + int total = 0; + for (int read = 0; total + read < data.length && (read = in.read(data, read, data.length - read)) >= 0; total += read) { + } //read file into data + if (total != data.length) { + throw new TransferFilesException("Could not read all of " + attf); + } + } + message.put("bits", data); + message.put("name", attf.getName()); + int index = attachementFilename.lastIndexOf('.'); + if (index != (-1)) { + message.put("key", attachementFilename.substring(index+1, attachementFilename.length()).toLowerCase()); + } else { + // assume png as default + message.put("key", "png"); + } + message.put("postid", snipId); //required for snipsnap. + } catch (FileNotFoundException e) { + throw new TransferFilesException("Could not find image " + attf, e); + } catch (IOException e) { + throw new TransferFilesException("Could not read data from file " + attf, e); + } + params.add(message); + String attURL; + try { + Hashtable res = (Hashtable) xmlrpc.execute("metaWeblog.newMediaObject", params); + attURL = (String) res.get("url"); + } catch (XmlRpcException e) { + throw new TransferFilesException("problem in communication with server", e); + } catch (IOException e) { + throw new TransferFilesException("IO problem trying to communicate with server", e); + } + // return att.setUrl(attURL); + } + + /** + * delete the entry from the blog server + * + * @param entry + * @return + */ + boolean deleteEntry(BlogEntry entry) throws TransferFilesException { + Vector params = new Vector(5); + // params.add(props.getProperty("blogid", "none")); //Should be the appkey, but what use is that? + params.add(config.getBlogID()); + params.add(entry.getGuid()); + params.add(config.getUser()); + params.add(config.getPassword()); + params.add(Boolean.TRUE); + + Boolean result; + try { + result = (Boolean) xmlrpc.execute("blogger.deletePost", params); + } catch (XmlRpcException e) { + throw new TransferFilesException("problem in communication with server", e); + } catch (IOException e) { + throw new TransferFilesException("IO problem trying to communicate with server", e); + } + + return result.booleanValue(); + } + + /** + * + * @param entry + * the entry that requires updating + * @return true if successful. + */ + boolean updateEntry(BlogEntry entry, String title, StringBuffer htmlBuffer) throws TransferFilesException { + Vector params = new Vector(5); + Boolean result = null; + + params.add(entry.getGuid()); + params.add(config.getUser()); + params.add(config.getPassword()); + + Hashtable message = new Hashtable(5); + message.put("title", title); + message.put("description", htmlBuffer.toString()); + message.put("dateCreated", new Date(entry.getTime())); + params.add(message); + + params.add(Boolean.TRUE); + + try { + result = (Boolean) xmlrpc.execute("metaWeblog.editPost", params); + } catch (XmlRpcException e) { + throw new TransferFilesException("problem in communication with server", e); + } catch (IOException e) { + throw new TransferFilesException("IO problem trying to communicate with server", e); + } + return (result == null) ? false : result.booleanValue(); + + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/TransferFilesException.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/TransferFilesException.java new file mode 100644 index 0000000..eb415a3 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/blog/TransferFilesException.java @@ -0,0 +1,21 @@ +package net.sourceforge.phpeclipse.wiki.blog; + +public class TransferFilesException extends Exception { + + public TransferFilesException() { + super(); + } + + public TransferFilesException(String message) { + super(message); + } + + public TransferFilesException(String message, Throwable cause) { + super(message, cause); + } + + public TransferFilesException(Throwable cause) { + super(cause); + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/AddBuilderAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/AddBuilderAction.java new file mode 100644 index 0000000..ef06dc8 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/AddBuilderAction.java @@ -0,0 +1,104 @@ +package net.sourceforge.phpeclipse.wiki.builder; + +import java.util.Iterator; + +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.core.resources.ICommand; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.IActionDelegate; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IWorkbenchPart; + +public class AddBuilderAction implements IObjectActionDelegate { + private IWorkbenchPart workbenchPart; + + /** + * + */ + public AddBuilderAction() { + super(); + } + + /** + * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart) + */ + public void setActivePart(IAction action, IWorkbenchPart targetPart) { + workbenchPart = targetPart; + } + + public void run(IAction action) { + ISelectionProvider selectionProvider = null; + selectionProvider = workbenchPart.getSite().getSelectionProvider(); + + StructuredSelection selection = null; + selection = (StructuredSelection) selectionProvider.getSelection(); + + //Shell shell = null; + Iterator iterator = null; + iterator = selection.iterator(); + while (iterator.hasNext()) { + // obj => selected object in the view + Object obj = iterator.next(); + + // is it a resource + if (obj instanceof IResource) { + IResource resource = (IResource) obj; + + // check if it's a project resource + switch (resource.getType()) { + + case IResource.PROJECT: + addBuilder((IProject) resource); + } + } + } + } + + /** + * @see IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + + private void addBuilder(IProject project) { + IProjectDescription desc; + try { + desc = project.getDescription(); + + ICommand[] commands = desc.getBuildSpec(); + boolean found = false; + + for (int i = 0; i < commands.length; ++i) { + if (commands[i].getBuilderName().equals(WikiBuilder.BUILDER_ID)) { + found = true; + break; + } + } + if (!found) { + //add builder to project + ICommand command = desc.newCommand(); + command.setBuilderName(WikiBuilder.BUILDER_ID); + ICommand[] newCommands = new ICommand[commands.length + 1]; + + // Add it before other builders. + System.arraycopy(commands, 0, newCommands, 1, commands.length); + newCommands[0] = command; + desc.setBuildSpec(newCommands); + project.setDescription(desc, null); + // add some default wiki project settings + Util.setWikiTextsPath(project); + + } + } catch (CoreException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/BuilderRenderEngine.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/BuilderRenderEngine.java new file mode 100644 index 0000000..56555fa --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/BuilderRenderEngine.java @@ -0,0 +1,96 @@ +package net.sourceforge.phpeclipse.wiki.builder; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.IPath; +import org.radeox.api.engine.WikiRenderEngine; +import org.radeox.api.engine.context.InitialRenderContext; +import org.radeox.api.engine.context.RenderContext; +import org.radeox.engine.BaseRenderEngine; +import org.plog4u.wiki.filter.FilterUtil; + +public class BuilderRenderEngine extends BaseRenderEngine implements WikiRenderEngine { + IProject fProject; + + IPath fPath; + + int fLevel; + + public BuilderRenderEngine(IProject project, InitialRenderContext context) { + super(context); + fProject = project; + fPath = fProject.getFullPath(); + fLevel = 0; + } + + /** + * + * @param location - + * the absolute basepath or null + * @param name - + * the name of the wiki link + * @param extension - + * the file extension of the wiki text ( *.wp prefered ) + * @param createHTMLLevel - + * if true prepend the directory level before the link i.e. ../../ + * @return + */ + public String createHTMLLink(String location, String name, String extension, boolean createHTMLLevel) { + return FilterUtil.createHTMLLink(location, name, extension, createHTMLLevel, fLevel); + } + + public boolean exists(String name) { + + java.io.File file = new java.io.File(createHTMLLink(Util.getWikiTextsPath(fProject), name, "wp", false)); + return file.exists(); + // return name.equals("SnipSnap") || name.equals("stephan"); + } + + public boolean showCreate() { + return true; + } + + public void appendLink(StringBuffer buffer, String name, String view, String anchor) { + String basePath = Util.getProjectsWikiOutputPath(fProject, WikiEditorPlugin.HTML_OUTPUT_PATH); + // String basePath = WikiEditorPlugin.getDefault().getPreferenceStore().getString(WikiConstants.HTML_OUTPUT_PATH); + buffer.append(""); + buffer.append(view); + buffer.append(""); + //buffer.append("link:"+name+"|"+view+"#"+anchor); + } + + public void appendLink(StringBuffer buffer, String name, String view) { + String basePath = Util.getProjectsWikiOutputPath(fProject, WikiEditorPlugin.HTML_OUTPUT_PATH); + // String basePath = WikiEditorPlugin.getDefault().getPreferenceStore().getString(WikiConstants.HTML_OUTPUT_PATH); + buffer.append(""); + buffer.append(view); + buffer.append(""); + // buffer.append("link:" + name + "|" +view); + } + + public void appendCreateLink(StringBuffer buffer, String name, String view) { + // if showCreate is true this method will be used to create a link to a + // "Wiki creationpage" + buffer.append(view); + + // buffer.append("'").append(name).append("' - "); + // buffer.append("'").append(Encoder.escape(name)).append("'"); + } + + public String getName() { + return "BuilderRenderEngine"; + } + + public void setLevel(int level) { + fLevel = level; + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/CreatePageAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/CreatePageAction.java new file mode 100644 index 0000000..9fc589c --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/CreatePageAction.java @@ -0,0 +1,313 @@ +package net.sourceforge.phpeclipse.wiki.builder; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Iterator; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.preferences.Util; +import net.sourceforge.phpeclipse.wiki.renderer.IContentRenderer; +import net.sourceforge.phpeclipse.wiki.renderer.RendererFactory; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.IActionDelegate; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IWorkbenchPart; + +/** + * Create a static HTML page + */ +public class CreatePageAction implements IObjectActionDelegate { + /** + * Constant for an empty char array + */ + public static final char[] NO_CHAR = new char[0]; + + private static final int DEFAULT_READING_SIZE = 8192; + + private IWorkbenchPart workbenchPart; + + /** + * + */ + public CreatePageAction() { + super(); + } + + /** + * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart) + */ + public void setActivePart(IAction action, IWorkbenchPart targetPart) { + workbenchPart = targetPart; + } + + public void run(IAction action) { + ISelectionProvider selectionProvider = null; + selectionProvider = workbenchPart.getSite().getSelectionProvider(); + + StructuredSelection selection = null; + selection = (StructuredSelection) selectionProvider.getSelection(); + + //Shell shell = null; + Iterator iterator = null; + iterator = selection.iterator(); + while (iterator.hasNext()) { + // obj => selected object in the view + Object obj = iterator.next(); + + // is it a resource + if (obj instanceof IResource) { + IResource resource = (IResource) obj; + + // check if it's a file resource + switch (resource.getType()) { + + case IResource.FILE: + createPage((IFile) resource); + } + } + } + } + + /** + * @see IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } + + public static void createPage(IFile file) { + String srcBasePath = Util.getWikiTextsPath(file); + String binBasePath = Util.getProjectsWikiOutputPath(file.getProject(), WikiEditorPlugin.HTML_OUTPUT_PATH); + createPage(file, binBasePath, srcBasePath); + } + + public static void createPage(IFile file, String binBasepath, String srcBasePath) { + // only interested in files with the "wp" extension + if ("wp".equalsIgnoreCase(file.getFileExtension())) { + try { + IContentRenderer renderer = RendererFactory.createContentRenderer(file.getProject()); + convertWikiFile(file, binBasepath, srcBasePath, renderer); + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CoreException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } else { + String fname = file.getName().toLowerCase(); + if ((fname.charAt(0) == '.') || "project.index".equals(fname) || "cvs".equals(fname) || "entries".equals(fname) + || "repository".equals(fname) || "root".equals(fname)) { + // ignore meta information + return; + } + // copy the file + FileOutputStream output = null; + InputStream contentStream = null; + + try { + String filename = Util.getHTMLFileName(file, binBasepath, srcBasePath); + if (filename != null) { + int index = filename.lastIndexOf('/'); + if (index >= 0) { + File ioFile = new File(filename.substring(0, index)); + if (!ioFile.isDirectory()) { + ioFile.mkdirs(); + } + } + output = new FileOutputStream(filename); + + contentStream = file.getContents(false); + int chunkSize = contentStream.available(); + byte[] readBuffer = new byte[chunkSize]; + int n = contentStream.read(readBuffer); + + while (n > 0) { + output.write(readBuffer); + n = contentStream.read(readBuffer); + } + } + } catch (Exception e) { + + } finally { + try { + if (output != null) + output.close(); + if (contentStream != null) + contentStream.close(); + } catch (IOException e1) { + } + } + } + } + + public static void convertWikiFile(IFile file, String binBasePath, String srcBasePath, IContentRenderer renderer) + throws CoreException { + StringBuffer htmlBuffer = new StringBuffer(); + convertWikiBuffer(htmlBuffer, file, renderer, true); + String htmlName = Util.getHTMLFileName(file, binBasePath, srcBasePath); + if (htmlName != null) { + writeHTMLFile(htmlBuffer, htmlName); + } + } + + public static void getWikiBuffer(StringBuffer htmlBuffer, IFile file) throws CoreException { + BufferedInputStream stream = new BufferedInputStream(file.getContents()); + try { + htmlBuffer.append(getInputStreamAsCharArray(stream, -1, null)); + return; + //new String(getInputStreamAsCharArray(stream, -1, null)); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (stream != null) { + stream.close(); + } + } catch (IOException e) { + } + } + return; + } + + public static void convertWikiBuffer(StringBuffer htmlBuffer, IFile file, IContentRenderer renderer, boolean completeHTML) + throws CoreException { + BufferedInputStream stream = new BufferedInputStream(file.getContents()); + try { + String content = new String(getInputStreamAsCharArray(stream, -1, null)); + String srcPath = Util.getWikiTextsPath(file); + String filePath = file.getLocation().toString(); // file.getProjectRelativePath().toString() + if (filePath.startsWith(srcPath)) { + filePath = filePath.substring(srcPath.length()+1); + } + createWikiBuffer(htmlBuffer, filePath, content, renderer, completeHTML); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (stream != null) { + stream.close(); + } + } catch (IOException e) { + } + } + } + + /** + * @param htmlBuffer + * @param fileName + * @param content + * @param renderer + */ + public static void createWikiBuffer(StringBuffer htmlBuffer, String fileName, String content, IContentRenderer renderer, + boolean completeHTML) { + // calculate the depth of the file (i.e. ../../../ as much as needed) + int index = 0; + int level = 0; + while (index >= 0) { + index = fileName.indexOf('/', index); + if (index >= 0) { + level++; + index++; + } + } + renderer.render(content, htmlBuffer, level, completeHTML); + } + + public static void writeHTMLFile(StringBuffer buffer, String filename) { + int index = filename.lastIndexOf('/'); + if (index >= 0) { + File file = new File(filename.substring(0, index)); + if (!file.isDirectory()) { + file.mkdirs(); + } + } + FileWriter fileWriter; + try { + fileWriter = new FileWriter(filename); + fileWriter.write(buffer.toString()); + fileWriter.close(); + } catch (FileNotFoundException e) { + // ignore exception; project is deleted by fUser + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** + * Returns the given input stream's contents as a character array. If a length is specified (ie. if length != -1), only length + * chars are returned. Otherwise all chars in the stream are returned. Note this doesn't close the stream. + * + * @throws IOException + * if a problem occured reading the stream. + */ + public static char[] getInputStreamAsCharArray(InputStream stream, int length, String encoding) throws IOException { + InputStreamReader reader = null; + reader = encoding == null ? new InputStreamReader(stream) : new InputStreamReader(stream, encoding); + char[] contents; + if (length == -1) { + contents = NO_CHAR; + int contentsLength = 0; + int amountRead = -1; + do { + int amountRequested = Math.max(stream.available(), DEFAULT_READING_SIZE); // read at least 8K + + // resize contents if needed + if (contentsLength + amountRequested > contents.length) { + System.arraycopy(contents, 0, contents = new char[contentsLength + amountRequested], 0, contentsLength); + } + + // read as many chars as possible + amountRead = reader.read(contents, contentsLength, amountRequested); + + if (amountRead > 0) { + // remember length of contents + contentsLength += amountRead; + } + } while (amountRead != -1); + + // resize contents if necessary + if (contentsLength < contents.length) { + System.arraycopy(contents, 0, contents = new char[contentsLength], 0, contentsLength); + } + } else { + contents = new char[length]; + int len = 0; + int readSize = 0; + while ((readSize != -1) && (len != length)) { + // See PR 1FMS89U + // We record first the read size. In this case len is the actual + // read size. + len += readSize; + readSize = reader.read(contents, len, length - len); + } + // See PR 1FMS89U + // Now we need to resize in case the default encoding used more than + // one byte for each + // character + if (len != length) + System.arraycopy(contents, 0, (contents = new char[len]), 0, len); + } + + return contents; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/WikiBuilder.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/WikiBuilder.java new file mode 100644 index 0000000..f20fddb --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/builder/WikiBuilder.java @@ -0,0 +1,156 @@ +package net.sourceforge.phpeclipse.wiki.builder; + +import java.io.IOException; +import java.util.Map; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.export.WikiExporter; +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.core.internal.resources.Folder; +import org.eclipse.core.resources.ICommand; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.IncrementalProjectBuilder; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.PlatformUI; + +public class WikiBuilder extends IncrementalProjectBuilder { + + class WikiVisitor implements IResourceDeltaVisitor { + String fBinBasePath; + + String fSrcBasePath; + + public WikiVisitor(String binBasePath, String srcBasePath) { + fBinBasePath = binBasePath; + fSrcBasePath = srcBasePath; + } + + public boolean visit(IResourceDelta delta) { + IResource resource = delta.getResource(); + if (DEBUG) { + System.out.println(resource.toString()); + } + if (delta.getKind() == IResourceDelta.REMOVED && resource.getType() == IResource.FILE) { + // remove this file from the wiki publishing directory + String htmlName = Util.getHTMLFileName((IFile) resource, fBinBasePath, fSrcBasePath); + if (htmlName != null) { + java.io.File file = new java.io.File(htmlName); + if (file.exists()) { + file.delete(); + } + } + return true; + } + //only interested in changed resources at this point (not added or removed) + if (delta.getKind() != IResourceDelta.CHANGED) + return true; + //only interested in content changes + if ((delta.getFlags() & IResourceDelta.CONTENT) == 0) + return true; + if (resource.getType() == IResource.FILE) { + CreatePageAction.createPage((IFile) resource); + } + return true; + } + } + + public static final String BUILDER_ID = "net.sourceforge.phpeclipse.wiki.wikibuilder"; + + private static final boolean DEBUG = false; + + private IProject fProject; + + private IWorkbench workbench; + + public WikiBuilder() { + workbench = PlatformUI.getWorkbench(); + fProject = null; + } + + protected IProject[] build(int kind, Map args, IProgressMonitor _monitor) { + try { + fProject = getProject(); + ICommand[] commands = fProject.getDescription().getBuildSpec(); + boolean found = false; + for (int i = 0; i < commands.length; i++) { + if (commands[i].getBuilderName().equals(BUILDER_ID)) { + found = true; + break; + } + } + // fProject.hasNature() + if (found && fProject != null && fProject.isAccessible()) { + + if (_monitor == null) + _monitor = new NullProgressMonitor(); + switch (kind) { + case INCREMENTAL_BUILD: + if (DEBUG) { + System.out.println("INCREMENTAL_BUILD requested"); + } + incrementalBuild(); + break; + // we don't need auto build, because on every save we create a new *.html file ? + case AUTO_BUILD: + if (DEBUG) { + System.out.println("AUTO_BUILD requested"); + } + incrementalBuild(); + break; + case FULL_BUILD: + if (DEBUG) { + System.out.println("FULL_BUILD requested"); + } + fullBuild(_monitor); + break; + default: + // unknown build kind requested; + } + // fProject.refreshLocal(1,_monitor); + } + } catch (Exception x) { + + } + return new IProject[0]; + } + + private void fullBuild(IProgressMonitor monitor) throws CoreException, IOException { + try { + WikiExporter wikiExporter = new WikiExporter(); + String srcBasePath = Util.getProjectsWikiTextsPath(fProject); + String basePath = Util.getProjectsWikiOutputPath(fProject, WikiEditorPlugin.HTML_OUTPUT_PATH); + wikiExporter.export(fProject, basePath, srcBasePath, monitor); + } catch (IOException e) { + e.printStackTrace(); + } catch (CoreException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + + private void incrementalBuild() throws CoreException, IOException { + IResourceDelta delta = getDelta(fProject); + String srcBasePath = Util.getProjectsWikiTextsPath(fProject); + String basePath = Util.getProjectsWikiOutputPath(fProject, WikiEditorPlugin.HTML_OUTPUT_PATH); + IResourceDeltaVisitor visitor = new WikiVisitor(basePath, srcBasePath); + if (delta != null) + delta.accept(visitor); + } + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/ExternalEditorInput.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/ExternalEditorInput.java new file mode 100644 index 0000000..5ccc464 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/ExternalEditorInput.java @@ -0,0 +1,98 @@ +package net.sourceforge.phpeclipse.wiki.editor; + +import org.eclipse.core.resources.IStorage; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IEditorRegistry; +import org.eclipse.ui.IPersistableElement; +import org.eclipse.ui.IStorageEditorInput; +import org.eclipse.ui.PlatformUI; + +/** + * An EditorInput for an external file. + */ +public class ExternalEditorInput implements IStorageEditorInput { + + IStorage externalFile; + + /** + * Two ExternalEditorInputs are equal if their IStorage's are equal. + * @see java.lang.Object#equals(java.lang.Object) + */ + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!(obj instanceof ExternalEditorInput)) + return false; + ExternalEditorInput other = (ExternalEditorInput) obj; + return externalFile.equals(other.externalFile); + } + + /* + * @see IEditorInput#exists() + */ + public boolean exists() { + // External file can not be deleted + return true; + } + + /* + * @see IAdaptable#getAdapter(Class) + */ + public Object getAdapter(Class adapter) { + return null; + } + + /* + * @see IEditorInput#getContentType() + */ + public String getContentType() { + return externalFile.getFullPath().getFileExtension(); + } + + /* + * @see IEditorInput#getFullPath() + */ + public String getFullPath() { + return externalFile.getFullPath().toString(); + } + + /* + * @see IEditorInput#getImageDescriptor() + */ + public ImageDescriptor getImageDescriptor() { + IEditorRegistry registry = PlatformUI.getWorkbench().getEditorRegistry(); + return registry.getImageDescriptor(externalFile.getFullPath().getFileExtension()); + } + + /* + * @see IEditorInput#getName() + */ + public String getName() { + return externalFile.getName(); + } + + /* + * @see IEditorInput#getPersistable() + */ + public IPersistableElement getPersistable() { + return null; + } + + /* + * see IStorageEditorInput#getStorage() + */ + public IStorage getStorage() { + return externalFile; + } + + /* + * @see IEditorInput#getToolTipText() + */ + public String getToolTipText() { + return externalFile.getFullPath().toString(); + } + + public ExternalEditorInput(IStorage exFile) { + externalFile = exFile; + } +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiCompletionProcessor.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiCompletionProcessor.java new file mode 100644 index 0000000..533e894 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiCompletionProcessor.java @@ -0,0 +1,255 @@ +/*********************************************************************************************************************************** + * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made + * available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: IBM Corporation - initial API and implementation + **********************************************************************************************************************************/ +package net.sourceforge.phpeclipse.wiki.editor; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaSection; +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaText; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.ImageRegistry; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.ITextSelection; +import org.eclipse.jface.text.ITextViewer; +import org.eclipse.jface.text.Region; +import org.eclipse.jface.text.TextUtilities; +import org.eclipse.jface.text.contentassist.CompletionProposal; +import org.eclipse.jface.text.contentassist.ICompletionProposal; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.text.contentassist.IContextInformation; +import org.eclipse.jface.text.contentassist.IContextInformationValidator; +import org.eclipse.jface.text.templates.DocumentTemplateContext; +import org.eclipse.jface.text.templates.Template; +import org.eclipse.jface.text.templates.TemplateContext; +import org.eclipse.jface.text.templates.TemplateContextType; +import org.eclipse.jface.text.templates.TemplateException; +import org.eclipse.jface.text.templates.TemplateProposal; +import org.eclipse.swt.graphics.Image; + +public class WikiCompletionProcessor implements IContentAssistProcessor { + + private static final String TEMPLATE_ICON = "icons/template.gif"; + +// private static final String PREPARATION_TEMPLATE_CTX = "net.sourceforge.phpeclipse.wiki.editor.preparation"; + + private static final String INGREDIENTS_TEMPLATE_CTX = "net.sourceforge.phpeclipse.wiki.editor.templates"; + + private static final class ProposalComparator implements Comparator { + public int compare(Object o1, Object o2) { + return ((TemplateProposal) o2).getRelevance() - ((TemplateProposal) o1).getRelevance(); + } + } + + private static final Comparator fgProposalComparator = new ProposalComparator(); + + private final WikiEditor fEditor; + + public WikiCompletionProcessor(WikiEditor editor) { + fEditor = editor; + } + + public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) { + WikipediaSection section = fEditor.getSection(); + if (section == null) + return null; + + ITextSelection selection = (ITextSelection) viewer.getSelectionProvider().getSelection(); + // adjust offset to start of normalized selection: + if (selection.getOffset() != offset) + offset = selection.getOffset(); + + String prefix = getPrefix(viewer, offset); + Region region = new Region(offset - prefix.length(), prefix.length() + selection.getLength()); + + ICompletionProposal[] templateProposals = computeTemplateProposals(viewer, region, section, prefix); +// ICompletionProposal[] ingredientProposals = computeIngredientsProposals(viewer, region, recipe, prefix); +// ICompletionProposal[] titleProposals = computeTitleProposals(viewer, region, recipe, prefix); + List result = new ArrayList(); +// result.addAll(Arrays.asList(ingredientProposals)); + result.addAll(Arrays.asList(templateProposals)); +// result.addAll(Arrays.asList(titleProposals)); + + return (ICompletionProposal[]) result.toArray(new ICompletionProposal[result.size()]); + } + + private ICompletionProposal[] computeTitleProposals(ITextViewer viewer, IRegion region, WikipediaText recipe, String prefix) { + List props = new ArrayList(2); + // if (recipe.getIngredientsSection() == null) + // props.add(createTitleProposal("Zutaten:", region, viewer)); + // if (recipe.getPreparationSection() == null) + // props.add(createTitleProposal("Zubereitung:", region, viewer)); + return (ICompletionProposal[]) props.toArray(new ICompletionProposal[props.size()]); + } + + private CompletionProposal createTitleProposal(String name, IRegion region, ITextViewer viewer) { + String lineDelimiter = TextUtilities.getDefaultLineDelimiter(viewer.getDocument()); + return new CompletionProposal(name + lineDelimiter, region.getOffset(), region.getLength(), region.getOffset() + name.length() + + lineDelimiter.length(), null, name, null, null); + } + + private ICompletionProposal[] computeIngredientsProposals(ITextViewer viewer, IRegion region, WikipediaText recipe, String prefix) { + return new ICompletionProposal[0]; + // Step[] steps= recipe.getSteps(); + // if (steps == null || steps.length == 0) + // return new ICompletionProposal[0]; + // + // int offset= region.getOffset(); + // Step first= steps[0]; + // if (offset < first.getOffset()) + // return new ICompletionProposal[0]; + // + // Ingredient[] ingredients= recipe.getIngredients(); + // if (ingredients == null) + // return new ICompletionProposal[0]; + // + // prefix= prefix.toLowerCase(); + // + // ArrayList proposals= new ArrayList(); + // for (int i= 0; i < ingredients.length; i++) { + // String ingredient= ingredients[i].getName(); + // if (ingredient.toLowerCase().startsWith(prefix)) + // proposals.add(new CompletionProposal(ingredient, offset, region.getLength(), ingredient.length())); + // } + // return (ICompletionProposal[]) proposals.toArray(new ICompletionProposal[proposals.size()]); + } + + private TemplateContextType getContextType(WikipediaSection section, int offset) { +// if (recipe.getPreparationSection() != null && recipe.getPreparationSection().getOffset() < offset) +// return WikiEditorPlugin.getDefault().getContextTypeRegistry().getContextType(PREPARATION_TEMPLATE_CTX); +// else + return WikiEditorPlugin.getDefault().getContextTypeRegistry().getContextType(INGREDIENTS_TEMPLATE_CTX); + } + + /** + * Creates a concrete template context for the given region in the document. This involves finding out which context fType is valid + * at the given location, and then creating a context of this fType. The default implementation returns a + * DocumentTemplateContext for the context fType at the given location. + * + * @param viewer + * the viewer for which the context is created + * @param region + * the region into document for which the context is created + * @return a template context that can handle template insertion at the given location, or null + */ + private TemplateContext createContext(ITextViewer viewer, IRegion region, WikipediaSection recipe) { + TemplateContextType contextType = getContextType(recipe, region.getOffset()); + if (contextType != null) { + IDocument document = viewer.getDocument(); + return new DocumentTemplateContext(contextType, document, region.getOffset(), region.getLength()); + } + return null; + } + + private ICompletionProposal[] computeTemplateProposals(ITextViewer viewer, IRegion region, WikipediaSection recipe, String prefix) { + TemplateContext context = createContext(viewer, region, recipe); + if (context == null) + return new ICompletionProposal[0]; + + ITextSelection selection = (ITextSelection) viewer.getSelectionProvider().getSelection(); + context.setVariable("selection", selection.getText()); // name of the selection variables {line, word}_selection + + String id = context.getContextType().getId(); + Template[] templates = WikiEditorPlugin.getDefault().getTemplateStore().getTemplates(id); + + List matches = new ArrayList(); + for (int i = 0; i < templates.length; i++) { + Template template = templates[i]; + try { + context.getContextType().validate(template.getPattern()); + } catch (TemplateException e) { + continue; + } + int relevance = getRelevance(template, prefix); + if (relevance > 0) { + matches.add(new TemplateProposal(template, context, region, getImage(template), relevance)); + } + } + + Collections.sort(matches, fgProposalComparator); + + return (ICompletionProposal[]) matches.toArray(new ICompletionProposal[matches.size()]); + } + + /** + * Returns the relevance of a template given a prefix. The default implementation returns a number greater than zero if the + * template name starts with the prefix, and zero otherwise. + * + * @param template + * the template to compute the relevance for + * @param prefix + * the prefix after which content assist was requested + * @return the relevance of template + * @see #getPrefix(ITextViewer, int) + */ + private int getRelevance(Template template, String prefix) { + if (template.getName().startsWith(prefix)) + return 90; + return 0; + } + + private String getPrefix(ITextViewer viewer, int offset) { + int i = offset; + IDocument document = viewer.getDocument(); + if (i > document.getLength()) + return ""; + + try { + while (i > 0) { + char ch = document.getChar(i - 1); + if (!Character.isLetterOrDigit(ch)) + break; + i--; + } + + return document.get(i, offset - i); + } catch (BadLocationException e) { + return ""; + } + } + + /** + * Always return the default image. + */ + private Image getImage(Template template) { + ImageRegistry registry = WikiEditorPlugin.getDefault().getImageRegistry(); + Image image = registry.get(TEMPLATE_ICON); + if (image == null) { + ImageDescriptor desc = WikiEditorPlugin.imageDescriptorFromPlugin("net.sourceforge.phpeclipse.wiki.editor", TEMPLATE_ICON); + registry.put(TEMPLATE_ICON, desc); + image = registry.get(TEMPLATE_ICON); + } + return image; + } + + public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) { + return null; + } + + public char[] getCompletionProposalAutoActivationCharacters() { + return null; + } + + public char[] getContextInformationAutoActivationCharacters() { + return null; + } + + public String getErrorMessage() { + return null; + } + + public IContextInformationValidator getContextInformationValidator() { + return null; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditor.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditor.java new file mode 100644 index 0000000..5cd82f8 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditor.java @@ -0,0 +1,164 @@ +/*********************************************************************************************************************************** + * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made + * available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: IBM Corporation - initial API and implementation + **********************************************************************************************************************************/ +package net.sourceforge.phpeclipse.wiki.editor; + +import net.sourceforge.phpeclipse.webbrowser.views.BrowserView; +import net.sourceforge.phpeclipse.wiki.builder.CreatePageAction; +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaSection; +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaText; +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.source.ISourceViewer; +import org.eclipse.jface.text.source.IVerticalRuler; +import org.eclipse.jface.text.source.projection.ProjectionSupport; +import org.eclipse.jface.text.source.projection.ProjectionViewer; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.texteditor.AbstractDecoratedTextEditor; +import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; +import org.eclipse.ui.texteditor.TextOperationAction; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; + +public class WikiEditor extends AbstractDecoratedTextEditor { + + private WikiOutlinePage fOutlinePage; + + private WikipediaSection fSection; + + private ProjectionSupport fProjectionSupport; + + private WikiOccurrencesUpdater fOccurrencesUpdater; + + public WikiEditor() { + setSourceViewerConfiguration(new WikiSourceViewerConfiguration(this, getSharedColors())); + } + + public WikipediaSection getSection() { + return fSection; + } + + public void setSection(WikipediaSection section) { + fSection = section; + if (fOutlinePage != null) + fOutlinePage.setWiki(section); + + if (fOccurrencesUpdater != null) + fOccurrencesUpdater.update(getSourceViewer()); + } + + /* + * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) + */ + public Object getAdapter(Class required) { + if (IContentOutlinePage.class.equals(required)) { + if (fOutlinePage == null) + fOutlinePage = new WikiOutlinePage(this); + return fOutlinePage; + } + if (fProjectionSupport != null) { + Object adapter = fProjectionSupport.getAdapter(getSourceViewer(), required); + if (adapter != null) + return adapter; + } + return super.getAdapter(required); + } + + public void outlinePageClosed() { + fOutlinePage = null; + } + + /* + * @see org.eclipse.ui.texteditor.AbstractTextEditor#createActions() + */ + protected void createActions() { + super.createActions(); + + IAction action = new TextOperationAction(WikiEditorPlugin.getDefault().getResourceBundle(), "ContentAssistProposal.", this, + ISourceViewer.CONTENTASSIST_PROPOSALS); + action.setActionDefinitionId(ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS); + setAction("ContentAssist.", action); + markAsStateDependentAction("ContentAssist.", true); + } + + /* + * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#createPartControl(org.eclipse.swt.widgets.Composite) + */ + public void createPartControl(Composite parent) { + super.createPartControl(parent); + + ProjectionViewer projectionViewer = (ProjectionViewer) getSourceViewer(); + fProjectionSupport = new ProjectionSupport(projectionViewer, getAnnotationAccess(), getSharedColors()); + fProjectionSupport.install(); + projectionViewer.doOperation(ProjectionViewer.TOGGLE); + + fOccurrencesUpdater = new WikiOccurrencesUpdater(this); + } + + /* + * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#createSourceViewer(org.eclipse.swt.widgets.Composite, + * org.eclipse.jface.text.source.IVerticalRuler, int) + */ + protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) { + fAnnotationAccess = createAnnotationAccess(); + fOverviewRuler = createOverviewRuler(getSharedColors()); + + ISourceViewer viewer = new ProjectionViewer(parent, ruler, fOverviewRuler, true, styles); + // ensure decoration support has been created and configured: + getSourceViewerDecorationSupport(viewer); + + return viewer; + } + + /* + * @see org.eclipse.ui.IWorkbenchPart#dispose() + */ + public void dispose() { + fOccurrencesUpdater.dispose(); + super.dispose(); + } + + public IDocument getDocument() { + IDocument doc = getDocumentProvider().getDocument(getEditorInput()); + return doc; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.texteditor.AbstractTextEditor#editorSaved() + */ + protected void editorSaved() { + super.editorSaved(); + // doesn't work here, wikibuilder has to be finished with generating html page + IWorkbenchPage page = WikiEditorPlugin.getDefault().getActivePage(); + try { + IViewPart part = page.findView(BrowserView.ID_BROWSER); + if (part == null) { + part = page.showView(BrowserView.ID_BROWSER); + } else { + // if (bringToTopPreview) { + // page.bringToTop(part); + // } + } + IEditorInput editorInput = null; + editorInput = this.getEditorInput(); + if (editorInput instanceof IFileEditorInput) { + CreatePageAction.createPage(((IFileEditorInput) editorInput).getFile()); + ((BrowserView) part).refresh(); + } + } catch (Exception e) { + } + } + + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorContributor.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorContributor.java new file mode 100644 index 0000000..f3d93c9 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorContributor.java @@ -0,0 +1,92 @@ +/*********************************************************************************************************************************** + * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made + * available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: IBM Corporation - initial API and implementation + **********************************************************************************************************************************/ + +package net.sourceforge.phpeclipse.wiki.editor; + +import net.sourceforge.phpeclipse.webbrowser.views.BrowserView; +import net.sourceforge.phpeclipse.wiki.editor.action.WeblogWikiAction; +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.core.resources.IFile; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.texteditor.BasicTextEditorActionContributor; +import org.eclipse.ui.texteditor.ITextEditor; +import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; +import org.eclipse.ui.texteditor.RetargetTextEditorAction; + +public class WikiEditorContributor extends BasicTextEditorActionContributor { + + private static final String CONTENTASSIST_ACTION = "net.sourceforge.phpeclipse.wiki.editor.ContentAssist"; + + private RetargetTextEditorAction fContentAssist; + public WikiEditorContributor() { + super(); + fContentAssist = new RetargetTextEditorAction(WikiEditorPlugin.getDefault().getResourceBundle(), "ContentAssistProposal."); + fContentAssist.setActionDefinitionId(ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS); + } + + public void setActiveEditor(IEditorPart part) { + super.setActiveEditor(part); + ITextEditor editor = (part instanceof ITextEditor) ? (ITextEditor) part : null; + fContentAssist.setAction(getAction(editor, CONTENTASSIST_ACTION)); + // jsurfer + setBrowserPreview(editor); + } + + public void setBrowserPreview(ITextEditor editor) { + IWorkbenchPage page = WikiEditorPlugin.getDefault().getActivePage(); + try { + IViewPart part = page.findView(BrowserView.ID_BROWSER); + if (part == null) { + part = page.showView(BrowserView.ID_BROWSER); + } else { + // if (bringToTopPreview) { + // page.bringToTop(part); + // } + } + IEditorInput editorInput = null; + if (editor != null) { + editorInput = editor.getEditorInput(); + } + if (editorInput instanceof IFileEditorInput) { + IFile file = ((IFileEditorInput) editorInput).getFile(); + String srcBasePath = Util.getWikiTextsPath(file); + String binBasePath = Util.getProjectsWikiOutputPath(file.getProject(), WikiEditorPlugin.HTML_OUTPUT_PATH); + String htmlName = Util.getHTMLFileName(file, binBasePath, srcBasePath); + if (htmlName!=null) { + ((BrowserView) part).setUrl(htmlName); + } + } + } catch (Exception e) { + } + } + + public void contributeToMenu(IMenuManager menu) { + + super.contributeToMenu(menu); + +} + + public void init(IActionBars bars, IWorkbenchPage page) { + super.init(bars, page); + bars.setGlobalActionHandler(CONTENTASSIST_ACTION, fContentAssist); + + } + + public void dispose() { + setActiveEditor(null); + super.dispose(); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorMessages.properties b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorMessages.properties new file mode 100644 index 0000000..9b35369 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorMessages.properties @@ -0,0 +1,10 @@ +ContentAssistProposal.label=Content Assist +ContentAssistProposal.tooltip=Content Assist +ContentAssistProposal.description=Content Assist + +Export.exportFile=Export Wiki file: +Export.exportFolder=Export Wiki folder: +Export.wizardTitle=Wiki Text Exporter +Export.wizardDescription=Export Wiki texts to the file system +Export.wizardBrowse=Browse... +Export.wizardSelectFolder=Select a folder diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorPlugin.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorPlugin.java new file mode 100644 index 0000000..6226851 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiEditorPlugin.java @@ -0,0 +1,350 @@ +package net.sourceforge.phpeclipse.wiki.editor; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.text.MessageFormat; +import java.util.Hashtable; +import java.util.List; +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +import net.sourceforge.phpeclipse.wiki.internal.IConfigurationWorkingCopy; +import net.sourceforge.phpeclipse.wiki.internal.ConfigurationManager; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IPluginDescriptor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.text.templates.ContextTypeRegistry; +import org.eclipse.jface.text.templates.persistence.TemplateStore; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.editors.text.templates.ContributionContextTypeRegistry; +import org.eclipse.ui.editors.text.templates.ContributionTemplateStore; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +public class WikiEditorPlugin extends AbstractUIPlugin { + + private static WikiEditorPlugin fgPlugin; + public static final String HTTP_QUERY = "HTTP Query"; + public static final String WIKIPEDIA_GET_TEXT = "Wikipedia-Load Text"; + public static final String WEBLOG_API_SEND = "MetaWeblog API-Post"; + + public static final String[] CONFIGURATION_TYPES = { + HTTP_QUERY, + WIKIPEDIA_GET_TEXT, + WEBLOG_API_SEND + }; + //image paths + public static final String ICON_PATH = "icons/full/"; //$NON-NLS-1$ + + public final static String PLUGIN_ID = "net.sourceforge.phpeclipse.wiki"; + + public final static String HTML_OUTPUT_PATH = "__static_wiki_folder"; + + public final static String WIKI_TEXTS_BASE_PATH = "__wiki_texts_base_path"; + + private static ConfigurationManager manager; + + public static final String IMG_MONITOR_ON = "monitorOn"; + + public static final String IMG_MONITOR_OFF = "monitorOff"; + + /** + * Creates an image and places it in the image registry. + * + * @param id + * the identifier for the image + * @param baseURL + * the base URL for the image + */ + protected static void createImageDescriptor(WikiEditorPlugin plugin, String id, URL baseURL) { + // Delegate to the plugin instance to avoid concurrent class loading problems + plugin.privateCreateImageDescriptor(id, baseURL); + } + + public static WikiEditorPlugin getDefault() { + return fgPlugin; + } + + /** + * Returns the image descriptor for the given image ID. Returns null if there is no such image. + * + * @param id + * the identifier for the image to retrieve + * @return the image associated with the given ID + */ + public static ImageDescriptor getImageDescriptor(String id) { + // Delegate to the plugin instance to avoid concurrent class loading problems + return getDefault().privateGetImageDescriptor(id); + } + + /** + * Convenience method to get an image descriptor for an extension + * + * @param extension + * the extension declaring the image + * @param subdirectoryAndFilename + * the path to the image + * @return the image + */ + public static ImageDescriptor getImageDescriptorFromExtension(IExtension extension, String subdirectoryAndFilename) { + IPluginDescriptor pluginDescriptor = extension.getDeclaringPluginDescriptor(); + URL path = pluginDescriptor.getInstallURL(); + URL fullPathString = null; + try { + fullPathString = new URL(path, subdirectoryAndFilename); + return ImageDescriptor.createFromURL(fullPathString); + } catch (MalformedURLException e) { + } + return null; + } + + public static String getResourceString(String key) { + ResourceBundle bundle = WikiEditorPlugin.getDefault().getResourceBundle(); + try { + return (bundle != null) ? bundle.getString(key) : key; + } catch (MissingResourceException e) { + return key; + } + } + + /** + * Returns the standard display to be used. The method first checks, if the thread calling this method has an associated display. + * If so, this display is returned. Otherwise the method returns the default display. + */ + public static Display getStandardDisplay() { + Display display = Display.getCurrent(); + if (display == null) { + display = Display.getDefault(); + } + return display; + } + + private ContributionContextTypeRegistry fContextTypeRegistry; + + private ResourceBundle fResourceBundle; + + private ContributionTemplateStore fTemplateStore; + + private Hashtable imageDescriptors = new Hashtable(20); + + public WikiEditorPlugin(IPluginDescriptor descriptor) { + super(descriptor); + initializeImages(); + fgPlugin = this; + manager = ConfigurationManager.getInstance(); + try { + fResourceBundle = ResourceBundle.getBundle("net.sourceforge.phpeclipse.wiki.editor.WikiEditorMessages"); + } catch (MissingResourceException x) { + fResourceBundle = null; + } + } + + /** + * Creates an image and places it in the image registry. + */ + protected void createImageDescriptor(String id, URL baseURL) { + URL url = null; + try { + url = new URL(baseURL, ICON_PATH + id); + } catch (MalformedURLException e) { + } + ImageDescriptor desc = ImageDescriptor.createFromURL(url); + imageDescriptors.put(id, desc); + } + + public IWorkbenchPage getActivePage() { + IWorkbenchWindow window = getWorkbench().getActiveWorkbenchWindow(); + if (window != null) + return window.getActivePage(); + return null; + } + + public ContextTypeRegistry getContextTypeRegistry() { + if (fContextTypeRegistry == null) { + fContextTypeRegistry = new ContributionContextTypeRegistry(); + fContextTypeRegistry.addContextType("net.sourceforge.phpeclipse.wiki.editor.templates"); + } + return fContextTypeRegistry; + } + + public Image getImage(String key) { + Image image = getImageRegistry().get(key); + if (image == null) { + ImageDescriptor d = getImageDescriptor(key); + image = d.createImage(); + getImageRegistry().put(key, image); + } + return image; + } + + public ResourceBundle getResourceBundle() { + return fResourceBundle; + } + + public TemplateStore getTemplateStore() { + if (fTemplateStore == null) { + fTemplateStore = new ContributionTemplateStore(getContextTypeRegistry(), getDefault().getPreferenceStore(), "templates"); + try { + fTemplateStore.load(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + return fTemplateStore; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#initializeDefaultPreferences(org.eclipse.jface.preference.IPreferenceStore) + */ + protected void initializeDefaultPreferences(IPreferenceStore store) { + } + + /* + * Initializes the table of images used in this plugin. The plugin is provided because this method is called before the plugin + * staic variable has been set. See the comment on the getPlugin() method for a description of why this is required. + */ + private void initializeImages() { + URL baseURL = getDescriptor().getInstallURL(); + + // special + createImageDescriptor("glyphs/glyph1.gif", baseURL); //$NON-NLS-1$ + createImageDescriptor("glyphs/glyph2.gif", baseURL); //$NON-NLS-1$ + createImageDescriptor("glyphs/glyph3.gif", baseURL); //$NON-NLS-1$ + createImageDescriptor("glyphs/glyph4.gif", baseURL); //$NON-NLS-1$ + createImageDescriptor("glyphs/glyph5.gif", baseURL); //$NON-NLS-1$ + createImageDescriptor("glyphs/glyph6.gif", baseURL); //$NON-NLS-1$ + createImageDescriptor("glyphs/glyph7.gif", baseURL); //$NON-NLS-1$ + createImageDescriptor("glyphs/glyph8.gif", baseURL); //$NON-NLS-1$ + + } + + public void log(String message) { + getDefault().getLog().log(new Status(IStatus.OK, PLUGIN_ID, IStatus.OK, message, null)); + } + + public void log(String message, Exception e) { + getDefault().getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, "Caught exception", e)); + } + + public void logAndReport(String title, String message, Exception e) { + log(message, e); + reportError(title, message); + } + + private void privateCreateImageDescriptor(String id, URL baseURL) { + URL url = null; + try { + url = new URL(baseURL, ICON_PATH + id); + } catch (MalformedURLException e) { + } + ImageDescriptor desc = ImageDescriptor.createFromURL(url); + imageDescriptors.put(id, desc); + } + + private ImageDescriptor privateGetImageDescriptor(String id) { + if (!imageDescriptors.containsKey(id)) { + URL baseURL = WikiEditorPlugin.getDefault().getDescriptor().getInstallURL(); + createImageDescriptor(getDefault(), id, baseURL); + } + return (ImageDescriptor) imageDescriptors.get(id); + } + + public void reportError(String title, String message) { + try { + Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); + MessageDialog.openError(shell, title, message); + } catch (RuntimeException e) { + log(e.getLocalizedMessage(), e); + } + } + + public void startup() throws CoreException { + super.startup(); + } + + /** + * Returns the translated String found with the given key. + * + * @return java.lang.String + * @param key + * java.lang.String + */ + public static String getResource(String key) { + try { + return Platform.getResourceString(getDefault().getBundle(), key); + } catch (Exception e) { + return key; + } + } + + /** + * Returns the translated String found with the given key, and formatted with the given object. + * + * @param key + * java.lang.String + * @param obj + * java.lang.Object[] + * @return java.lang.String + */ + public static String getResource(String key, Object[] obj) { + try { + return MessageFormat.format(getResource(key), obj); + } catch (Exception e) { + return key; + } + } + + /** + * Returns the translated String found with the given key, and formatted with the given object. + * + * @param key + * java.lang.String + * @param s + * java.lang.String + * @return java.lang.String + */ + public static String getResource(String key, String s) { + try { + return MessageFormat.format(getResource(key), new String[] { s }); + } catch (Exception e) { + return key; + } + } + + /** + * Return a list of all the existing configurations. + * + * @return java.util.List + */ + public static List getConfigurations() { + return manager.getConfigurations(); + } + + /** + * Create a new monitor. + * + * @return working copy + */ + public static IConfigurationWorkingCopy createConfiguration() { + return manager.createConfiguration(); + } + + public static String[] getTypes() { + return CONFIGURATION_TYPES; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiFoldingStructureProvider.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiFoldingStructureProvider.java new file mode 100644 index 0000000..742ced9 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiFoldingStructureProvider.java @@ -0,0 +1,104 @@ +package net.sourceforge.phpeclipse.wiki.editor; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaText; +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaSection; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.Position; +import org.eclipse.jface.text.source.Annotation; +import org.eclipse.jface.text.source.projection.ProjectionAnnotation; +import org.eclipse.jface.text.source.projection.ProjectionAnnotationModel; + +public class WikiFoldingStructureProvider { + + private WikiEditor fEditor; + + private IDocument fDocument; + + private IProgressMonitor fProgressMonitor; + + public WikiFoldingStructureProvider(WikiEditor editor) { + fEditor = editor; + } + + public void setProgressMonitor(IProgressMonitor progressMonitor) { + fProgressMonitor = progressMonitor; + } + + public void setDocument(IDocument document) { + fDocument = document; + } + + public void updateFoldingRegions(WikipediaSection section) { + try { + + ProjectionAnnotationModel model = (ProjectionAnnotationModel) fEditor.getAdapter(ProjectionAnnotationModel.class); + if (model == null) + return; + + Set currentRegions = new HashSet(); + addFoldingRegions(currentRegions, section.getChildren()); + updateFoldingRegions(model, currentRegions); + } catch (BadLocationException e) { + e.printStackTrace(); + } + } + + private void updateFoldingRegions(ProjectionAnnotationModel model, Set currentRegions) { + Annotation[] deletions = computeDifferences(model, currentRegions); + + Map additionsMap = new HashMap(); + for (Iterator iter = currentRegions.iterator(); iter.hasNext();) + additionsMap.put(new ProjectionAnnotation(), iter.next()); + + if ((deletions.length != 0 || additionsMap.size() != 0) && (fProgressMonitor == null || !fProgressMonitor.isCanceled())) + model.modifyAnnotations(deletions, additionsMap, new Annotation[] {}); + } + + private Annotation[] computeDifferences(ProjectionAnnotationModel model, Set current) { + List deletions = new ArrayList(); + for (Iterator iter = model.getAnnotationIterator(); iter.hasNext();) { + Object annotation = iter.next(); + if (annotation instanceof ProjectionAnnotation) { + Position position = model.getPosition((Annotation) annotation); + if (current.contains(position)) + current.remove(position); + else + deletions.add(annotation); + } + } + return (Annotation[]) deletions.toArray(new Annotation[deletions.size()]); + } + + private void addFoldingRegions(Set regions, Object[] elements) throws BadLocationException { + for (int i = 0; i < elements.length; i++) { + WikipediaSection element = (WikipediaSection) elements[i]; + if (element.getOffset() >= 0) { + int startLine = fDocument.getLineOfOffset(element.getOffset()); + int endLine = fDocument.getLineOfOffset(element.getOffset() + element.getLength()); + if (startLine < endLine) { + int start = fDocument.getLineOffset(startLine); + int end = fDocument.getLineOffset(endLine) + fDocument.getLineLength(endLine); + Position position = new Position(start, end - start); + regions.add(position); + } + + Object[] children = element.getChildren(); + if (children != null) { + addFoldingRegions(regions, children); + } + } + } + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiOccurrencesUpdater.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiOccurrencesUpdater.java new file mode 100644 index 0000000..5043237 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiOccurrencesUpdater.java @@ -0,0 +1,165 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpeclipse.wiki.editor; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaText; + +import org.eclipse.jface.viewers.IPostSelectionProvider; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.SelectionChangedEvent; + +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.ITextSelection; +import org.eclipse.jface.text.Position; +import org.eclipse.jface.text.source.Annotation; +import org.eclipse.jface.text.source.IAnnotationModel; +import org.eclipse.jface.text.source.ISourceViewer; + + + +class WikiOccurrencesUpdater implements ISelectionChangedListener { + /** + * Annotation fType for recipe occurrences. + */ + private static final String ANNOTATION_TYPE= "net.sourceforge.phpeclipse.wiki.editor.highlightannotation"; + /** + * The editor we operate on. + */ + private final WikiEditor fEditor; + /** + * The set of annotations added in the previous run, always replaced by a + * new run. + */ + private final List fOldAnnotations= new LinkedList(); + + /** + * Creates a new instance on editor editor. + * + * @param editor the editor to mark occurrences on. + */ + public WikiOccurrencesUpdater(WikiEditor editor) { + ((IPostSelectionProvider) editor.getSelectionProvider()).addPostSelectionChangedListener(this); + fEditor= editor; + } + + /* + * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent) + */ + public void selectionChanged(SelectionChangedEvent event) { + update((ISourceViewer) event.getSource()); + } + + /** + * Updates the drawn annotations. + * + * @param viewer the viewer to get the document and annotation model from + */ + public void update(ISourceViewer viewer) { + if (viewer==null) { + return; + } +// try { + IDocument document= viewer.getDocument(); + IAnnotationModel model= viewer.getAnnotationModel(); + if (document == null || model == null) + return; + + removeOldAnnotations(model); + +// String word= getWordAtSelection(fEditor.getSelectionProvider().getSelection(), document); +// if (isIngredient(word)) { +// createNewAnnotations(word, document, model); +// } + +// } catch (BadLocationException e) { +// // ignore +// } + } + + /** + * Removes the previous set of annotations from the annotation model. + * + * @param model the annotation model + */ + private void removeOldAnnotations(IAnnotationModel model) { + for (Iterator it= fOldAnnotations.iterator(); it.hasNext();) { + Annotation annotation= (Annotation) it.next(); + model.removeAnnotation(annotation); + } + fOldAnnotations.clear(); + } + + /** + * Returns the word at the current selection / caret position. + * + * @param selection the selection + * @param document the document + * @return the currently selected text, or the word at the caret if the + * selection has length 0 + * @throws BadLocationException if accessing the document fails + */ + private String getWordAtSelection(ISelection selection, IDocument document) throws BadLocationException { + if (selection instanceof ITextSelection) { + ITextSelection ts= (ITextSelection) selection; + int offset= ts.getOffset(); + int end= offset + ts.getLength(); + + // non-empty selections + if (end != offset) + return ts.getText(); + + while (offset > 0 && isIngredientChar(document.getChar(offset - 1))) + offset--; + while (end < document.getLength() && isIngredientChar(document.getChar(end))) + end++; + + return document.get(offset, end - offset); + } + return ""; + } + + private boolean isIngredientChar(char c) { + return !Character.isWhitespace(c) && c != ':' && c != ',' && c != '.'; + } + + /** + * Adds an annotation for every occurrence of + * ingredient in the document. Also stores the created + * annotations in fOldAnnotations. + * + * @param ingredient the word to look for + * @param document the document + * @param model the annotation model + */ + private void createNewAnnotations(String ingredient, IDocument document, IAnnotationModel model) { + String content= document.get(); + int idx= content.indexOf(ingredient); + while (idx != -1) { + Annotation annotation= new Annotation(ANNOTATION_TYPE, false, ingredient); + Position position= new Position(idx, ingredient.length()); + + model.addAnnotation(annotation, position); + fOldAnnotations.add(annotation); + + idx= content.indexOf(ingredient, idx + 1); + } + } + + public void dispose() { + ((IPostSelectionProvider) fEditor.getSelectionProvider()).removePostSelectionChangedListener(this); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiOutlinePage.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiOutlinePage.java new file mode 100644 index 0000000..92f74e1 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiOutlinePage.java @@ -0,0 +1,143 @@ +/*********************************************************************************************************************************** + * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made + * available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: IBM Corporation - initial API and implementation + **********************************************************************************************************************************/ +package net.sourceforge.phpeclipse.wiki.editor; + +import java.net.MalformedURLException; +import java.net.URL; + +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaText; +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaSection; + +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Composite; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.viewers.AbstractTreeViewer; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; + +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; + +public class WikiOutlinePage extends ContentOutlinePage { + + private WikiEditor fEditor; + + private static class WikiContentProvider implements ITreeContentProvider { + + public Object[] getChildren(Object parentElement) { + return ((WikipediaSection) parentElement).getChildren(); + } + + public Object getParent(Object element) { + return ((WikipediaSection) element).getParent(); + } + + public boolean hasChildren(Object element) { + Object[] children = getChildren(element); + return children != null && children.length != 0; + } + + public Object[] getElements(Object inputElement) { + return getChildren(inputElement); + } + + public void dispose() { + // do nothing + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + // do nothing + } + } + + private static class WikiLabelProvider extends LabelProvider { + private static URL fgIconBaseURL = WikiEditorPlugin.getDefault().getBundle().getEntry("/icons/"); + + private final Image fIngredientsSectionIcon = createImage("ingredients.gif"); + + private final Image fIngredientIcon = createImage("ingredient.gif"); + + private final Image fPreparationSectionIcon = createImage("preparation.gif"); + + private final Image fStepIcon = createImage("step.gif"); + + public static Image createImage(String icon) { + try { + ImageDescriptor id = ImageDescriptor.createFromURL(new URL(fgIconBaseURL, icon)); + return id.createImage(); + } catch (MalformedURLException e) { + // no icon ... + } + return null; + } + + public String getText(Object element) { + return ((WikipediaSection) element).getName(); + } + + public Image getImage(Object element) { + if (element instanceof WikipediaSection) + return fStepIcon; + return super.getImage(element); + } + + public void dispose() { + super.dispose(); + if (fIngredientsSectionIcon != null) + fIngredientsSectionIcon.dispose(); + if (fIngredientIcon != null) + fIngredientIcon.dispose(); + if (fPreparationSectionIcon != null) + fPreparationSectionIcon.dispose(); + if (fStepIcon != null) + fStepIcon.dispose(); + } + } + + public WikiOutlinePage(WikiEditor editor) { + fEditor = editor; + } + + public void createControl(Composite parent) { + super.createControl(parent); + TreeViewer treeViewer = getTreeViewer(); + treeViewer.setLabelProvider(new WikiLabelProvider()); + treeViewer.setContentProvider(new WikiContentProvider()); + treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); + treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + if (!(event.getSelection() instanceof IStructuredSelection)) + return; + IStructuredSelection selection = (IStructuredSelection) event.getSelection(); + if (selection.size() != 1) + return; + Object element = selection.getFirstElement(); + if (!(element instanceof WikipediaSection)) + return; + WikipediaSection recipeElement = (WikipediaSection) element; + fEditor.selectAndReveal(recipeElement.getOffset(), recipeElement.getLength()); + } + }); + setWiki(fEditor.getSection()); + } + + public void setWiki(WikipediaSection section) { + getTreeViewer().setInput(section); + } + + public void dispose() { + super.dispose(); + fEditor.outlinePageClosed(); + fEditor = null; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiReconcilingStrategy.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiReconcilingStrategy.java new file mode 100644 index 0000000..0645e1c --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiReconcilingStrategy.java @@ -0,0 +1,79 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpeclipse.wiki.editor; + +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaOutlineParser; +import net.sourceforge.phpeclipse.wiki.editor.model.WikipediaSection; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.reconciler.DirtyRegion; +import org.eclipse.jface.text.reconciler.IReconcilingStrategy; +import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension; +import org.eclipse.swt.widgets.Shell; + + + +public class WikiReconcilingStrategy implements IReconcilingStrategy, IReconcilingStrategyExtension { + + private WikiEditor fEditor; + private IDocument fDocument; + private IProgressMonitor fProgressMonitor; + + private WikipediaOutlineParser fParser; + private WikiFoldingStructureProvider fFoldingStructureProvider; + + public WikiReconcilingStrategy(WikiEditor editor) { + fEditor= editor; + fParser= new WikipediaOutlineParser(); + fFoldingStructureProvider= new WikiFoldingStructureProvider(editor); + } + + public void setDocument(IDocument document) { + fDocument= document; + fFoldingStructureProvider.setDocument(fDocument); + } + + public void setProgressMonitor(IProgressMonitor monitor) { + fProgressMonitor= monitor; + fFoldingStructureProvider.setProgressMonitor(fProgressMonitor); + } + + public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) { + reconcile(); + } + + public void reconcile(IRegion partition) { + reconcile(); + } + + public void initialReconcile() { + reconcile(); + } + + private void reconcile() { + final WikipediaSection section= fParser.parse(fDocument); + if (section == null) + return; + + Shell shell= fEditor.getSite().getShell(); + if (shell == null || shell.isDisposed()) + return; + + shell.getDisplay().asyncExec(new Runnable() { + public void run() { + fEditor.setSection(section); + } + }); + fFoldingStructureProvider.updateFoldingRegions(section); + } +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiSourceViewerConfiguration.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiSourceViewerConfiguration.java new file mode 100644 index 0000000..3bc9c4e --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/WikiSourceViewerConfiguration.java @@ -0,0 +1,259 @@ +/*********************************************************************************************************************************** + * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made + * available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: IBM Corporation - initial API and implementation + **********************************************************************************************************************************/ +package net.sourceforge.phpeclipse.wiki.editor; + +import org.eclipse.core.runtime.NullProgressMonitor; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.RGB; + +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.TextAttribute; +import org.eclipse.jface.text.contentassist.ContentAssistant; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.text.contentassist.IContentAssistant; +import org.eclipse.jface.text.presentation.IPresentationReconciler; +import org.eclipse.jface.text.presentation.PresentationReconciler; +import org.eclipse.jface.text.reconciler.IReconciler; +import org.eclipse.jface.text.reconciler.MonoReconciler; +import org.eclipse.jface.text.rules.DefaultDamagerRepairer; +import org.eclipse.jface.text.rules.IRule; +import org.eclipse.jface.text.rules.IToken; +import org.eclipse.jface.text.rules.ITokenScanner; +import org.eclipse.jface.text.rules.IWordDetector; +import org.eclipse.jface.text.rules.RuleBasedScanner; +import org.eclipse.jface.text.rules.SingleLineRule; +import org.eclipse.jface.text.rules.Token; +import org.eclipse.jface.text.rules.WordRule; +import org.eclipse.jface.text.source.IAnnotationHover; +import org.eclipse.jface.text.source.ISharedTextColors; +import org.eclipse.jface.text.source.ISourceViewer; +import org.eclipse.jface.text.source.SourceViewerConfiguration; + +public class WikiSourceViewerConfiguration extends SourceViewerConfiguration { + + /** + * A no-op implementation of IAnnotationHover that will trigger the text editor to set up annotation hover support. + */ + private static final class NullHover implements IAnnotationHover { + + /* + * @see org.eclipse.jface.text.source.IAnnotationHover#getHoverInfo(org.eclipse.jface.text.source.ISourceViewer, int) + */ + public String getHoverInfo(ISourceViewer sourceViewer, int lineNumber) { + return null; + } + } + + /** + * Simple word detector that detects any sequence of non-whitespace as a word. + */ + private static final class SimpleWordDetector implements IWordDetector { + /* + * @see org.eclipse.jface.text.rules.IWordDetector#isWordStart(char) + */ + public boolean isWordStart(char c) { + return isWordPart(c); + } + + /* + * @see org.eclipse.jface.text.rules.IWordDetector#isWordPart(char) + */ + public boolean isWordPart(char c) { + return !Character.isWhitespace(c); + } + } + + private static final class SimpleListDetector implements IWordDetector { + /* + * @see org.eclipse.jface.text.rules.IWordDetector#isWordStart(char) + */ + public boolean isWordStart(char c) { + return c == '*' || c == '#'; + } + + /* + * @see org.eclipse.jface.text.rules.IWordDetector#isWordPart(char) + */ + public boolean isWordPart(char c) { + return true; + } + } + + private final ISharedTextColors fColors; + + private WikiEditor fEditor; + + public WikiSourceViewerConfiguration(WikiEditor editor, ISharedTextColors colors) { + fEditor = editor; + fColors = colors; + } + + /* + * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getPresentationReconciler(org.eclipse.jface.text.source.ISourceViewer) + */ + public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) { + PresentationReconciler reconciler = new PresentationReconciler(); + DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getRecipeScanner()); + reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); + reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); + return reconciler; + } + + private ITokenScanner getRecipeScanner() { + RuleBasedScanner scanner = new RuleBasedScanner(); + + IRule[] rules = new IRule[11]; + rules[0] = createHeader6Rule(); + rules[1] = createHeader5Rule(); + rules[2] = createHeader4Rule(); + rules[3] = createHeader3Rule(); + rules[4] = createHeader2Rule(); + rules[5] = createHeader1Rule(); + rules[6] = createHRRule(); + rules[7] = createLinkRule(); + rules[8] = createExternalHTTPRule(); + rules[9] = createListRule(); + rules[10] = createNumberedListRule(); + + scanner.setRules(rules); + return scanner; + } + + // private IRule createSectionTitleRule() { + // IToken titleToken= new Token(new TextAttribute(null, null, SWT.BOLD)); + // WordRule wordRule= new WordRule(new SimpleWordDetector()); + // wordRule.addWord(IngredientsSection.TITLE + ":", titleToken); + // wordRule.addWord(PreparationSection.TITLE + ":", titleToken); + // return wordRule; + // } + + private IRule createHRRule() { + IToken quantityToken = new Token(new TextAttribute(fColors.getColor(new RGB(0, 0, 140)), null, SWT.ITALIC)); + SingleLineRule singleLineRule = new SingleLineRule("----", "\n", quantityToken); + singleLineRule.setColumnConstraint(0); + return singleLineRule; + } + + private IRule createHeader1Rule() { + IToken quantityToken = new Token(new TextAttribute(fColors.getColor(new RGB(0, 0, 140)), null, SWT.ITALIC)); + SingleLineRule singleLineRule = new SingleLineRule("=", "=", quantityToken); + singleLineRule.setColumnConstraint(0); + return singleLineRule; + } + + private IRule createHeader2Rule() { + IToken quantityToken = new Token(new TextAttribute(fColors.getColor(new RGB(0, 0, 140)), null, SWT.ITALIC)); + SingleLineRule singleLineRule = new SingleLineRule("==", "==", quantityToken); + singleLineRule.setColumnConstraint(0); + return singleLineRule; + } + + private IRule createHeader3Rule() { + IToken quantityToken = new Token(new TextAttribute(fColors.getColor(new RGB(0, 0, 140)), null, SWT.ITALIC)); + SingleLineRule singleLineRule = new SingleLineRule("===", "===", quantityToken); + singleLineRule.setColumnConstraint(0); + return singleLineRule; + } + + private IRule createHeader4Rule() { + IToken quantityToken = new Token(new TextAttribute(fColors.getColor(new RGB(0, 0, 140)), null, SWT.ITALIC)); + SingleLineRule singleLineRule = new SingleLineRule("====", "====", quantityToken); + singleLineRule.setColumnConstraint(0); + return singleLineRule; + } + + private IRule createHeader5Rule() { + IToken quantityToken = new Token(new TextAttribute(fColors.getColor(new RGB(0, 0, 140)), null, SWT.ITALIC)); + SingleLineRule singleLineRule = new SingleLineRule("=====", "=====", quantityToken); + singleLineRule.setColumnConstraint(0); + return singleLineRule; + } + + private IRule createHeader6Rule() { + IToken quantityToken = new Token(new TextAttribute(fColors.getColor(new RGB(0, 0, 140)), null, SWT.ITALIC)); + SingleLineRule singleLineRule = new SingleLineRule("======", "======", quantityToken); + singleLineRule.setColumnConstraint(0); + return singleLineRule; + } + + // private IRule createLeadingDashRule() { + // IToken dashToken= new Token(new TextAttribute(fColors.getColor(new RGB(200, 100, 100)), null, SWT.BOLD)); + // WordRule wordRule= new WordRule(new SimpleWordDetector()); + // wordRule.addWord("-", dashToken); + // wordRule.setColumnConstraint(0); + // return wordRule; + // } + + private IRule createListRule() { + IToken dashToken = new Token(new TextAttribute(fColors.getColor(new RGB(63, 127, 95)), null, SWT.BOLD)); + // WordRule wordRule= new WordRule(new SimpleListDetector()); + // wordRule.addWord("*", dashToken); + SingleLineRule singleLineRule = new SingleLineRule("*", "\n", dashToken); + singleLineRule.setColumnConstraint(0); + return singleLineRule; + } + + private IRule createNumberedListRule() { + IToken dashToken = new Token(new TextAttribute(fColors.getColor(new RGB(63, 127, 95)), null, SWT.BOLD)); + // WordRule wordRule= new WordRule(new SimpleListDetector()); + // wordRule.addWord("#", dashToken); + SingleLineRule singleLineRule = new SingleLineRule("#", "\n", dashToken); + singleLineRule.setColumnConstraint(0); + return singleLineRule; + } + + private IRule createLinkRule() { + IToken stepToken = new Token(new TextAttribute(fColors.getColor(new RGB(200, 100, 100)), null, SWT.BOLD)); + SingleLineRule stepRule = new SingleLineRule("[[", "]]", stepToken); + // stepRule.setColumnConstraint(0); + return stepRule; + } + + private IRule createExternalHTTPRule() { + IToken stepToken = new Token(new TextAttribute(fColors.getColor(new RGB(200, 100, 100)), null, SWT.BOLD)); + SingleLineRule stepRule = new SingleLineRule("[http", "]", stepToken); + // stepRule.setColumnConstraint(0); + return stepRule; + } + + /* + * @see SourceViewerConfiguration#getReconciler(ISourceViewer) + */ + public IReconciler getReconciler(ISourceViewer sourceViewer) { + WikiReconcilingStrategy strategy = new WikiReconcilingStrategy(fEditor); + MonoReconciler reconciler = new MonoReconciler(strategy, false); + reconciler.setProgressMonitor(new NullProgressMonitor()); + reconciler.setDelay(500); + + return reconciler; + } + + /* + * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getContentAssistant(org.eclipse.jface.text.source.ISourceViewer) + */ + public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) { + ContentAssistant assistant = new ContentAssistant(); + + IContentAssistProcessor processor = new WikiCompletionProcessor(fEditor); + assistant.setContentAssistProcessor(processor, IDocument.DEFAULT_CONTENT_TYPE); + + assistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE); + assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer)); + assistant.enableAutoInsert(true); + + return assistant; + } + + /* + * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getAnnotationHover(org.eclipse.jface.text.source.ISourceViewer) + */ + public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) { + return new NullHover(); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/action/WeblogWikiAction.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/action/WeblogWikiAction.java new file mode 100644 index 0000000..db7c908 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/action/WeblogWikiAction.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +package net.sourceforge.phpeclipse.wiki.editor.action; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditor; +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.ui.texteditor.ITextEditor; +import org.eclipse.ui.texteditor.TextEditorAction; + + +public class WeblogWikiAction extends TextEditorAction { + + private boolean fForward; + + public WeblogWikiAction(String prefix, boolean forward) { + super(WikiEditorPlugin.getDefault().getResourceBundle(), prefix, null); + } + + public void run() { + + } + + public void setEditor(ITextEditor editor) { + if (editor instanceof WikiEditor) + super.setEditor(editor); + update(); + } + + public void update() { + setEnabled(getTextEditor() instanceof WikiEditor); + } +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaOutlineParser.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaOutlineParser.java new file mode 100644 index 0000000..694f4f9 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaOutlineParser.java @@ -0,0 +1,128 @@ +/*********************************************************************************************************************************** + * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made + * available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: IBM Corporation - initial API and implementation + **********************************************************************************************************************************/ +package net.sourceforge.phpeclipse.wiki.editor.model; + +import java.util.Stack; + +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; + +public class WikipediaOutlineParser { + + private IDocument fDocument; + + /** + * Next line to read. + */ + private int fLine; + + private int fLineCount; + + public WikipediaSection parse(IDocument document) { + try { + fDocument = document; + fLine = 0; + fLineCount = fDocument.getNumberOfLines(); + return parseWikipediaText(); + } catch (BadLocationException e) { + e.printStackTrace(); + return null; + } + } + + private WikipediaSection parseWikipediaText() throws BadLocationException { + Stack stack = new Stack(); + char ch; + WikipediaText wikiText = new WikipediaText(); + WikipediaSection section; + // int startOffset = -1; + String textString; + String headerString = null; + char[] text; + IRegion region = null; + int headerStartOffset; + int headerEndOffset; + int headerLevelCounter; + + while (fLine < fLineCount) { + region = fDocument.getLineInformation(fLine); + textString = fDocument.get(region.getOffset(), region.getLength()); + text = textString.toCharArray(); + fLine++; + + headerStartOffset = 0; + if (text.length >= 2 && text[headerStartOffset++] == '=') { + headerEndOffset = text.length; + while (headerEndOffset > 0 && Character.isWhitespace(text[--headerEndOffset])) { + // + } + if (text[headerEndOffset] == '=') { + // header section + while (headerStartOffset < text.length && headerStartOffset < 6 && text[headerStartOffset++] == '=') { + // + } + headerLevelCounter = 1; + while (headerEndOffset > 0 && headerLevelCounter < headerStartOffset && text[--headerEndOffset] == '=') { + headerLevelCounter++; + } + + // if (!stack.isEmpty()) { + // section = (WikipediaSection) stack.pop(); + // section.setLength(region.getOffset() - section.getOffset() - 1); + // wikiText.add(section); + // } + + // headerString = new String(text, headerStartOffset - 1, headerEndOffset - headerStartOffset + 2); + // stack.push(new WikipediaSection(wikiText, headerString, headerLevelCounter, region.getOffset(), 1)); + if (headerStartOffset > 0 && (headerEndOffset - headerStartOffset + 2 > 0)) { + headerString = new String(text, headerStartOffset - 1, headerEndOffset - headerStartOffset + 2); + addSection(wikiText, new WikipediaSection(wikiText, headerString, headerLevelCounter, region.getOffset(), 1), stack, + region); + + } + + } + } + } + if (!stack.isEmpty()) { + reduceSection(wikiText, stack, region); + // section = (WikipediaSection) stack.pop(); + // section.setLength(region.getOffset() - section.getOffset() - 1); + // wikiText.add(section); + } + return wikiText; + } + + private void addSection(WikipediaSection wikiText, WikipediaSection currentSection, Stack stack, IRegion region) { + int level = currentSection.getHeaderLevel(); + while (!stack.isEmpty()) { + WikipediaSection section = (WikipediaSection) stack.peek(); + if (section.getHeaderLevel() < level) { + currentSection.setParent(section); + section.add(currentSection); + stack.push(currentSection); + return; + } else { // if (section.getHeaderLevel() <= level) { + stack.pop(); + section.setLength(region.getOffset() - section.getOffset() - 1); + } + } + currentSection.setParent(wikiText); + wikiText.add(currentSection); + stack.push(currentSection); + } + + private void reduceSection(WikipediaSection wikiText, Stack stack, IRegion region) { + while (!stack.isEmpty()) { + WikipediaSection section = (WikipediaSection) stack.peek(); + stack.pop(); + section.setLength(region.getOffset() - section.getOffset() - 1); + } + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaSection.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaSection.java new file mode 100644 index 0000000..23b0516 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaSection.java @@ -0,0 +1,118 @@ +/*********************************************************************************************************************************** + * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made + * available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: IBM Corporation - initial API and implementation + **********************************************************************************************************************************/ +package net.sourceforge.phpeclipse.wiki.editor.model; + +import java.util.ArrayList; + +public class WikipediaSection { + protected static WikipediaSection[] NO_CHILDREN = new WikipediaSection[0]; + + private WikipediaSection fParent; + + private String fName; + + private int fOffset; + private int fLength; + private int fheaderLevel; + protected ArrayList recipeElements; + + WikipediaSection(WikipediaSection parent, String name, int level, int offset, int length) { + fParent = parent; + fName = name; + fheaderLevel = level; + fOffset = offset; + fLength = length; + recipeElements = new ArrayList(); + } + + + public Object[] getChildren() { + return recipeElements.toArray(); + } + + public String getName() { + return fName; + } + + public int getOffset() { + return fOffset; + } + + public int getLength() { + return fLength; + } + + /** + * @param index + * @param element + */ + public void add(int index, WikipediaSection element) { + recipeElements.add(index, element); + } + + /** + * @param o + * @return + */ + public boolean add(WikipediaSection o) { + return recipeElements.add(o); + } + + /** + * @param index + * @return + */ + public WikipediaSection get(int index) { + return (WikipediaSection) recipeElements.get(index); + } + + /** + * @return + */ + public int size() { + return recipeElements.size(); + } + + /** + * @param length The length to set. + */ + public void setLength(int length) { + fLength = length; + } + + /** + * @param offset The fOffset to set. + */ + public void setoffset(int offset) { + fOffset = offset; + } + /** + * @return Returns the headerLevel. + */ + public int getHeaderLevel() { + return fheaderLevel; + } + /** + * @param fheaderLevel The headerLevel to set. + */ + public void setHeaderLevel(int fheaderLevel) { + this.fheaderLevel = fheaderLevel; + } + /** + * @return Returns the parent. + */ + public WikipediaSection getParent() { + return fParent; + } + /** + * @param parent The parent to set. + */ + public void setParent(WikipediaSection parent) { + fParent = parent; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaText.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaText.java new file mode 100644 index 0000000..bd2e4ab --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/editor/model/WikipediaText.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpeclipse.wiki.editor.model; + +import java.util.ArrayList; + +public class WikipediaText extends WikipediaSection { + + + WikipediaText() { + super(null, null, -1, -1, -1); + } + + +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExportWizard.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExportWizard.java new file mode 100644 index 0000000..e6d8ab4 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExportWizard.java @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2002 Team in a Box Ltd. All rights reserved. This file is made available under the terms and conditions of the + * Common Public License v 1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/cpl-v1.0.html + * + * Contributors: Team in a Box Ltd http://www.teaminabox.co.uk/ + */ + +package net.sourceforge.phpeclipse.wiki.export; + +import java.io.File; +import java.lang.reflect.InvocationTargetException; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.QualifiedName; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; + +public final class WikiExportWizard extends Wizard implements INewWizard { + static final QualifiedName DIRECTORY_QUALIFIED_NAME = new QualifiedName(WikiEditorPlugin.PLUGIN_ID, "exportDirectory"); + + private WikiExportWizardPage page; + + private ISelection selection; + + public WikiExportWizard() { + super(); + setNeedsProgressMonitor(true); + } + + public void addPages() { + page = new WikiExportWizardPage(selection); + addPage(page); + } + + public boolean performFinish() { + persistExportProperties(); + + final IContainer folder = page.getFolder(); + final String exportDirectory = page.getExportDirectoryPath(); + + return runOperationForContainer(new IRunnableWithProgress() { + public void run(IProgressMonitor monitor) throws InvocationTargetException { + try { + startExport(monitor, folder, exportDirectory); + } catch (Exception e) { + throw new InvocationTargetException(e); + } finally { + monitor.done(); + } + } + }); + } + + private boolean runOperationForContainer(IRunnableWithProgress op) { + try { + getContainer().run(true, true, op); + } catch (InterruptedException e) { + return false; + } catch (InvocationTargetException e) { + WikiEditorPlugin.getDefault().log("", e); + MessageDialog.openError(getShell(), "Error", e.getTargetException().getMessage()); + return false; + } + + return true; + } + + private void startExport(IProgressMonitor monitor, IContainer folder, String exportDirectory) throws CoreException { + try { + final String srcBasePath = Util.getWikiTextsPath(folder); + new WikiExporter().export(folder, exportDirectory, srcBasePath, monitor); + } catch (Exception ioex) { + throw new CoreException(new Status(IStatus.ERROR, "Failed to write Wiki Documents", IStatus.OK, ioex.getMessage(), ioex)); + } + } + + private void persistExportProperties() { + IProject project = page.getFolder().getProject(); + try { + project.setPersistentProperty(WikiExportWizard.DIRECTORY_QUALIFIED_NAME, new File(page.getExportDirectoryPath()) + .getAbsolutePath()); + } catch (CoreException cex) { + noteException(cex); + } + } + + private void noteException(CoreException cex) { + WikiEditorPlugin.getDefault().log("Export Error", cex); + throw new RuntimeException("An error occurred. Please see the log for details."); + } + + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.selection = selection; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExportWizardPage.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExportWizardPage.java new file mode 100644 index 0000000..c3250fb --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExportWizardPage.java @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2002 Team in a Box Ltd. All rights reserved. This file is made available under the terms and conditions of the + * Common Public License v 1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/cpl-v1.0.html + * + * Contributors: Team in a Box Ltd http://www.teaminabox.co.uk/ + */ + +package net.sourceforge.phpeclipse.wiki.export; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.window.Window; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.DirectoryDialog; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.dialogs.ContainerSelectionDialog; + +public final class WikiExportWizardPage extends WizardPage implements IPropertyChangeListener, SelectionListener { + private StringFieldEditor folderText; + + private StringFieldEditor exportDirectoryText; + + private ISelection selection; + + public WikiExportWizardPage(ISelection selection) { + super(WikiEditorPlugin.getResourceString("Export.wizardTitle")); + setTitle(WikiEditorPlugin.getResourceString("Export.wizardTitle")); + setDescription(WikiEditorPlugin.getResourceString("Export.wizardDescription")); + this.selection = selection; + } + + public void createControl(Composite parent) { + Composite rootComposite = createControlsContainer(parent); + + try { + initialize(); + } catch (RuntimeException rex) { + throw rex; + } catch (CoreException cex) { + WikiEditorPlugin.getDefault().log("", cex); + throw new RuntimeException("Caught CoreException. See log for details."); + } + dialogChanged(); + setControl(rootComposite); + } + + private Composite createControlsContainer(Composite parent) { + Composite container = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 20; + container.setLayout(layout); + container.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL)); + + createCommonControls(container); + return container; + } + + private void createCommonControls(Composite parent) { + Composite container = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + layout.numColumns = 3; + layout.verticalSpacing = 9; + container.setLayout(layout); + container.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL)); + + createFolderControls(container); + createExportDirectoryControls(container); + } + + private void createExportDirectoryControls(Composite container) { + exportDirectoryText = addStringFieldEditor(container, WikiEditorPlugin.getResourceString("Export.wizardExportDirectory")); + + Button button = new Button(container, SWT.PUSH); + button.setText(WikiEditorPlugin.getResourceString("Export.wizardBrowse")); + button.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + handleBrowseHtmlExportLocation(); + } + }); + } + + private void createFolderControls(Composite container) { + folderText = addStringFieldEditor(container, WikiEditorPlugin.getResourceString("Export.wizardFolder")); + + Button button = new Button(container, SWT.PUSH); + button.setText(WikiEditorPlugin.getResourceString("Export.wizardBrowse")); + button.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + try { + handleBrowseFolders(); + } catch (CoreException cex) { + WikiEditorPlugin.getDefault().log("", cex); + throw new RuntimeException("Caught CoreException. See log for details."); + } + } + }); + } + + private StringFieldEditor addStringFieldEditor(Composite container, String labelText) { + Label label = new Label(container, SWT.NULL); + label.setText(labelText); + + Composite editorComposite = new Composite(container, SWT.NULL); + editorComposite.setLayout(new GridLayout()); + editorComposite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL)); + StringFieldEditor editor = new StringFieldEditor("", "", editorComposite); + + editor.setPropertyChangeListener(this); + + return editor; + } + + private void initialize() throws CoreException { + if (selection == null || selection.isEmpty() || !(selection instanceof IStructuredSelection)) { + return; + } + + IStructuredSelection ssel = (IStructuredSelection) selection; + if (ssel.size() == 1) { + initialiseFromSelectedObject(ssel.getFirstElement()); + } + } + + private void initialiseFromSelectedObject(Object obj) throws CoreException { + if (obj instanceof IFolder || obj instanceof IProject) { + initialiseFolder(((IResource) obj)); + } + } + + private void initialiseFolder(IResource resource) throws CoreException { + folderText.setStringValue(resource.getFullPath().toString()); + initialiseExportDirectoryText(resource); + } + + private void initialiseExportDirectoryText(IResource resource) throws CoreException { + String exportDir = resource.getProject().getPersistentProperty(WikiExportWizard.DIRECTORY_QUALIFIED_NAME); + if (exportDir != null) { + exportDirectoryText.setStringValue(exportDir); + } else { + exportDirectoryText.setStringValue(""); + } + } + + private void handleBrowseHtmlExportLocation() { + DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.SINGLE | SWT.OPEN); + String path = dialog.open(); + if (path != null) { + exportDirectoryText.setStringValue(path); + } + } + + private void handleBrowseFolders() throws CoreException { + ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(), ResourcesPlugin.getWorkspace().getRoot(), false, + WikiEditorPlugin.getResourceString("Export.wizardSelectFolder")); + if (dialog.open() == Window.OK) { + Object[] result = dialog.getResult(); + if (result != null && result.length == 1) { + IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember((IPath) result[0]); + if (resource instanceof IFile) { + return; + } + initialiseFolder(resource); + } + } + } + + private void dialogChanged() { + if (getFolderText().length() == 0) { + updateStatus("Folder must be specified"); + } else if (getExportDirectoryPath().length() == 0) { + updateStatus("Directory must be specified"); + } else { + updateStatus(null); + } + } + + private void updateStatus(String message) { + setErrorMessage(message); + setPageComplete(message == null); + } + + public String getExportDirectoryPath() { + return exportDirectoryText.getStringValue(); + } + + public void propertyChange(PropertyChangeEvent event) { + dialogChanged(); + } + + public void widgetSelected(SelectionEvent e) { + dialogChanged(); + } + + public void widgetDefaultSelected(SelectionEvent e) { + dialogChanged(); + } + + String getFolderText() { + return folderText.getStringValue(); + } + + public IContainer getFolder() { + return (IContainer) ResourcesPlugin.getWorkspace().getRoot().findMember(new Path(getFolderText())); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExporter.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExporter.java new file mode 100644 index 0000000..1463a25 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/export/WikiExporter.java @@ -0,0 +1,169 @@ +package net.sourceforge.phpeclipse.wiki.export; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.MappedByteBuffer; +import java.nio.channels.FileChannel; +import java.util.TreeSet; + +import net.sourceforge.phpeclipse.wiki.builder.CreatePageAction; +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; + +import de.java2html.converter.JavaSource2HTMLConverter; +import de.java2html.javasource.JavaSource; +import de.java2html.javasource.JavaSourceParser; +import de.java2html.options.Java2HtmlConversionOptions; + +public final class WikiExporter { + + public static final String HTML_EXTENSION = ".html"; + + public static final String WORKSPACE = "workspace"; + + // private File exportDirectory; + + // private ExportLinkMaker exportLinkMaker; + private TreeSet index; + + public WikiExporter() { + // exportLinkMaker = new ExportLinkMaker(); + index = new TreeSet(String.CASE_INSENSITIVE_ORDER); + } + + public void export(IContainer folder, String exportDirectoryName, String srcBasePath, IProgressMonitor monitor) throws IOException, CoreException, + InstantiationException, IllegalAccessException, ClassNotFoundException { + // exportDirectory = new File(exportDirectoryName); + IResource[] resources = folder.members(IResource.FILE); +// monitor.beginTask(WikiEditorPlugin.getResourceString("Export.wikiPages"), resources.length + 1); + for (int i = 0; i < resources.length; i++) { + if (resources[i] instanceof IFile) { + monitor.subTask(WikiEditorPlugin.getResourceString("Export.exportFile")+resources[i].getLocation()); + CreatePageAction.createPage((IFile) resources[i], exportDirectoryName, srcBasePath); + monitor.worked(1); + } else if (resources[i] instanceof IFolder) { + monitor.subTask(WikiEditorPlugin.getResourceString("Export.exportFolder")+resources[i].getLocation()); + export((IFolder) resources[i], exportDirectoryName, srcBasePath, monitor); + monitor.worked(1); + } + } + // monitor.subTask(WikiEditorPlugin.getResourceString("Export.linkedResources")); + // exportLinkedResources(); + // createIndex(); +// monitor.worked(1); + } + + /** + * TODO: This is a horrible hack for a quick solution. + */ + // private void createIndex() throws IOException { + // File indexFile = createHtmlFile("index"); + // + // PrintWriter writer = new PrintWriter(new FileWriter(indexFile)); + // writer.println(""); + // writer.println(""); + // writer.println(""); + // writer.println(" "); + // writer.print(" Index"); + // writer.println(" "); + // writer.println(" "); + // + // Iterator iterator = index.iterator(); + // while (iterator.hasNext()) { + // String name = (String) iterator.next(); + // writer.print("
      "); + // writer.println("" + name + ""); + // } + // + // writer.println(" "); + // writer.println(" "); + // writer.flush(); + // writer.close(); + // } + // private void exportLinkedResources() throws IOException { + // if (!exportLinkMaker.hasLinkedDocuments()) { + // return; + // } + // File workspaceExport = new File(exportDirectory, WikiExporter.WORKSPACE); + // if (!workspaceExport.exists()) { + // workspaceExport.mkdir(); + // } + // HashMap map = exportLinkMaker.getLinkedResources(); + // Iterator iterator = map.keySet().iterator(); + // while (iterator.hasNext()) { + // IResource resource = (IResource) iterator.next(); + // String location = (String) map.get(resource); + // export(resource, location); + // } + // } + // private void export(IResource resource, String location) throws IOException { + // File destination = new File(exportDirectory, location); + // + // if (destination.isDirectory()) { + // return; + // } + // if (!destination.exists()) { + // destination.getParentFile().mkdirs(); + // } + // File source = new File(resource.getLocation().toString()); + // if (isJavaResource(resource)) { + // javaToHtml(source, new File(destination.getParentFile(), destination.getName())); + // } else { + // copy(source, destination); + // } + // } + private boolean isJavaResource(IResource resource) { + return "java".equals(resource.getFileExtension()); + } + + private void javaToHtml(File source, File destination) throws IOException { + JavaSource java = new JavaSourceParser().parse(new FileReader(source)); + JavaSource2HTMLConverter converter = new JavaSource2HTMLConverter(java); + Java2HtmlConversionOptions options = Java2HtmlConversionOptions.getDefault(); + options.setShowLineNumbers(true); + options.setShowFileName(true); + options.setShowJava2HtmlLink(true); + converter.setConversionOptions(options); + FileWriter writer = new FileWriter(destination); + converter.convert(writer); + writer.flush(); + writer.close(); + } + + private void copy(File source, File dest) throws IOException { + FileChannel in = null; + FileChannel out = null; + try { + in = new FileInputStream(source).getChannel(); + out = new FileOutputStream(dest).getChannel(); + long size = in.size(); + MappedByteBuffer buf = in.map(FileChannel.MapMode.READ_ONLY, 0, size); + out.write(buf); + } finally { + if (in != null) { + in.close(); + } + if (out != null) { + out.close(); + } + } + } + + private boolean isWikiFile(IResource resource) { + return resource instanceof IFile && resource.getFileExtension().equals("wp"); + } + + // private File createHtmlFile(String name) { + // return new File(exportDirectory, name + WikiExporter.HTML_EXTENSION); + // } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java new file mode 100644 index 0000000..0b2c404 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java @@ -0,0 +1,113 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.internal; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + + +/** + * + */ +public class Configuration implements IConfiguration { + private static final String MEMENTO_ID = "id"; + private static final String MEMENTO_USER = "user"; + private static final String MEMENTO_URL = "url"; + private static final String MEMENTO_PASSWORD = "password"; + private static final String MEMENTO_TYPE_ID = "type-id"; + + protected String id; + protected String fUrl; + protected String fPassword; + protected String fUser; + protected String fType; + + public Configuration() { + this( WikiEditorPlugin.HTTP_QUERY ); // default type + } + + public Configuration(String type) { + this.fType = type; + } + + /* (non-Javadoc) + * @see org.eclipse.monitor.internal.IConfiguration#getId() + */ + public String getId() { + return id; + } + + public String getURL() { + return fUrl; + } + + /* (non-Javadoc) + * @see org.eclipse.monitor.internal.IConfiguration#getRemotePort() + */ + public String getPassword() { + return fPassword; + } + + /* (non-Javadoc) + * @see org.eclipse.monitor.internal.IConfiguration#getLocalPort() + */ + public String getUser() { + return fUser; + } + + /** + */ + public String getType() { + return fType; + } + + /* (non-Javadoc) + * @see org.eclipse.monitor.internal.IConfiguration#isRunning() + */ + public boolean isActive() { + return ConfigurationManager.getInstance().isActive(this); + } + + public void delete() { + ConfigurationManager.getInstance().removeConfiguration(this); + } + + public boolean isWorkingCopy() { + return false; + } + + public IConfigurationWorkingCopy getWorkingCopy() { + return new ConfigurationWorkingCopy(this); + } + + protected void setInternal(IConfiguration monitor) { + id = monitor.getId(); + fUrl = monitor.getURL(); + fPassword = monitor.getPassword(); + fUser = monitor.getUser(); + fType = monitor.getType(); + } + + protected void save(IMemento memento) { + memento.putString(MEMENTO_ID, id); + memento.putString(MEMENTO_TYPE_ID, fType); + memento.putString(MEMENTO_USER, fUser); + memento.putString(MEMENTO_URL, fUrl); + memento.putString(MEMENTO_PASSWORD, fPassword); + } + + protected void load(IMemento memento) { + id = memento.getString(MEMENTO_ID); + fType = memento.getString(MEMENTO_TYPE_ID); + fUser = memento.getString(MEMENTO_USER); + fUrl = memento.getString(MEMENTO_URL); + fPassword = memento.getString(MEMENTO_PASSWORD); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/ConfigurationManager.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/ConfigurationManager.java new file mode 100644 index 0000000..034bb14 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/ConfigurationManager.java @@ -0,0 +1,188 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.internal; + +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import net.sourceforge.phpeclipse.webbrowser.internal.Trace; +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.core.runtime.Preferences; +/** + * + */ +public class ConfigurationManager { + private static final int ADD = 0; + private static final int CHANGE = 1; + private static final int REMOVE = 2; + + // configurations + protected List configurations; + protected Map threads = new HashMap(); + + protected List monitorListeners = new ArrayList(); + + private Preferences.IPropertyChangeListener pcl; + protected boolean ignorePreferenceChanges = false; + + protected static ConfigurationManager instance; + + public static ConfigurationManager getInstance() { + if (instance == null) + instance = new ConfigurationManager(); + return instance; + } + + private ConfigurationManager() { + loadConfigurations(); + + pcl = new Preferences.IPropertyChangeListener() { + public void propertyChange(Preferences.PropertyChangeEvent event) { + if (ignorePreferenceChanges) + return; + String property = event.getProperty(); + if (property.equals("configurations")) { + loadConfigurations(); + } + } + }; + + WikiEditorPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(pcl); + } + + protected void dispose() { + WikiEditorPlugin.getDefault().getPluginPreferences().removePropertyChangeListener(pcl); + } + + public IConfigurationWorkingCopy createConfiguration() { + return new ConfigurationWorkingCopy(); + } + + public List getConfigurations() { + return new ArrayList(configurations); + } + + protected void addConfiguration(IConfiguration configuration) { + if (!configurations.contains(configuration)) + configurations.add(configuration); + fireConfigurationEvent(configuration, ADD); + saveConfigurations(); + } + + protected boolean isActive(IConfiguration configuration) { + return (threads.get(configuration) != null); + } + + protected void removeConfiguration(IConfiguration configuration) { + configurations.remove(configuration); + fireConfigurationEvent(configuration, REMOVE); + saveConfigurations(); + } + + protected void configurationChanged(IConfiguration configuration) { + fireConfigurationEvent(configuration, CHANGE); + saveConfigurations(); + } + + /** + * Add monitor listener. + * + * @param listener + */ + public void addConfigurationListener(IConfigurationListener listener) { + monitorListeners.add(listener); + } + + /** + * Remove monitor listener. + * + * @param listener + */ + public void removeConfigurationListener(IConfigurationListener listener) { + monitorListeners.remove(listener); + } + + /** + * Fire a monitor event. + * @param rr + * @param fType + */ + protected void fireConfigurationEvent(IConfiguration monitor, int type) { + Object[] obj = monitorListeners.toArray(); + + int size = obj.length; + for (int i = 0; i < size; i++) { + IConfigurationListener listener = (IConfigurationListener) obj[i]; + if (type == ADD) + listener.monitorAdded(monitor); + else if (type == CHANGE) + listener.monitorChanged(monitor); + else if (type == REMOVE) + listener.monitorRemoved(monitor); + } + } + + + + + protected void loadConfigurations() { + Trace.trace(Trace.FINEST, "Loading Configurations"); + + configurations = new ArrayList(); + Preferences prefs = WikiEditorPlugin.getDefault().getPluginPreferences(); + String xmlString = prefs.getString("configurations"); + if (xmlString != null && xmlString.length() > 0) { + try { + ByteArrayInputStream in = new ByteArrayInputStream(xmlString.getBytes()); + IMemento memento = XMLMemento.loadMemento(in); + + IMemento[] children = memento.getChildren("config"); + if (children != null) { + int size = children.length; + for (int i = 0; i < size; i++) { + Configuration monitor = new Configuration(); + monitor.load(children[i]); + configurations.add(monitor); + } + } + } catch (Exception e) { + Trace.trace(Trace.WARNING, "Could not load configurations: " + e.getMessage()); + } + } + } + + protected void saveConfigurations() { + try { + ignorePreferenceChanges = true; + XMLMemento memento = XMLMemento.createWriteRoot("configurations"); + + Iterator iterator = configurations.iterator(); + while (iterator.hasNext()) { + Configuration monitor = (Configuration) iterator.next(); + IMemento child = memento.createChild("config"); + monitor.save(child); + } + + String xmlString = memento.saveToString(); + Preferences prefs = WikiEditorPlugin.getDefault().getPluginPreferences(); + prefs.setValue("configurations", xmlString); + WikiEditorPlugin.getDefault().savePluginPreferences(); + } catch (Exception e) { + Trace.trace(Trace.SEVERE, "Could not save Configurations", e); + } + ignorePreferenceChanges = false; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/ConfigurationWorkingCopy.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/ConfigurationWorkingCopy.java new file mode 100644 index 0000000..c75a2fd --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/ConfigurationWorkingCopy.java @@ -0,0 +1,79 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.internal; + +/** + * + */ +public class ConfigurationWorkingCopy extends Configuration implements IConfigurationWorkingCopy { + protected Configuration monitor; + + // creation + public ConfigurationWorkingCopy() { } + + // working copy + public ConfigurationWorkingCopy(Configuration monitor) { + this.monitor = monitor; + setInternal(monitor); + } + + public void setId(String newId) { + id = newId; + } + + + public void setURL(String url) { + fUrl = url; + } + + + public void setPassword(String password) { + fPassword = password; + } + + + public void setUser(String user) { + fUser = user; + } + + + public void setType(String t) { + fType = t; + } + + public boolean isWorkingCopy() { + return true; + } + + public IConfigurationWorkingCopy getWorkingCopy() { + return this; + } + + public IConfiguration save() { + ConfigurationManager mm = ConfigurationManager.getInstance(); + if (monitor != null) { + //boolean restart = false; +// if (monitor.isRunning()) { +// //restart = true; +// mm.stopMonitor(monitor); +// } + monitor.setInternal(this); + mm.configurationChanged(monitor); + //if (restart) + // mm.startMonitor(monitor); + } else { + monitor = new Configuration(); + monitor.setInternal(this); + mm.addConfiguration(monitor); + } + return monitor; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfiguration.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfiguration.java new file mode 100644 index 0000000..2d230ce --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfiguration.java @@ -0,0 +1,32 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.internal; +/** + * + */ +public interface IConfiguration { + public String getId(); + + public String getURL(); + + public String getType(); + + public String getPassword(); + + public String getUser(); + + public IConfigurationWorkingCopy getWorkingCopy(); + + public boolean isActive(); + + public void delete(); + +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfigurationListener.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfigurationListener.java new file mode 100644 index 0000000..d2e5f70 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfigurationListener.java @@ -0,0 +1,21 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.internal; +/** + * + */ +public interface IConfigurationListener { + public void monitorAdded(IConfiguration monitor); + + public void monitorChanged(IConfiguration monitor); + + public void monitorRemoved(IConfiguration monitor); +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfigurationWorkingCopy.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfigurationWorkingCopy.java new file mode 100644 index 0000000..86634fb --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IConfigurationWorkingCopy.java @@ -0,0 +1,27 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.internal; +/** + * + */ +public interface IConfigurationWorkingCopy extends IConfiguration { + public void setId(String id); + + public void setURL(String url); + + public void setPassword(String port); + + public void setUser(String port); + + public void setType(String type); + + public IConfiguration save(); +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IMemento.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IMemento.java new file mode 100644 index 0000000..a7b5ce4 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/IMemento.java @@ -0,0 +1,192 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.internal; + +import java.util.List; +/** + * Interface to a memento used for saving the important state of an object + * in a form that can be persisted in the file system. + *

      + * Mementos were designed with the following requirements in mind: + *

        + *
      1. Certain objects need to be saved and restored across platform sessions. + *
      2. + *
      3. When an object is restored, an appropriate class for an object might not + * be available. It must be possible to skip an object in this case.
      4. + *
      5. When an object is restored, the appropriate class for the object may be + * different from the one when the object was originally saved. If so, the + * new class should still be able to read the old form of the data.
      6. + *
      + *

      + *

      + * Mementos meet these requirements by providing support for storing a + * mapping of arbitrary string keys to primitive values, and by allowing + * mementos to have other mementos as children (arranged into a tree). + * A robust external storage format based on XML is used. + *

      + * The key for an attribute may be any alpha numeric value. However, the + * value of TAG_ID is reserved for internal use. + *

      + * This interface is not intended to be implemented by clients. + *

      + * + * @see IPersistableElement + * @see IElementFactory + */ +public interface IMemento { + /** + * Special reserved key used to store the memento id + * (value "org.eclipse.ui.id"). + * + * @see #getId + */ + public static final String TAG_ID = "IMemento.internal.id"; //$NON-NLS-1$ + + /** + * Creates a new child of this memento with the given fType. + *

      + * The getChild and getChildren methods + * are used to retrieve children of a given fType. + *

      + * + * @param fType the fType + * @return a new child memento + * @see #getChild + * @see #getChildren + */ + public IMemento createChild(String type); + + /** + * Creates a new child of this memento with the given fType and id. + * The id is stored in the child memento (using a special reserved + * key, TAG_ID) and can be retrieved using getId. + *

      + * The getChild and getChildren methods + * are used to retrieve children of a given fType. + *

      + * + * @param fType the fType + * @param id the child id + * @return a new child memento with the given fType and id + * @see #getId + */ + public IMemento createChild(String type, String id); + + /** + * Returns the first child with the given fType id. + * + * @param fType the fType id + * @return the first child with the given fType + */ + public IMemento getChild(String type); + + /** + * Returns all children with the given fType id. + * + * @param fType the fType id + * @return the list of children with the given fType + */ + public IMemento[] getChildren(String type); + + /** + * Returns the floating point value of the given key. + * + * @param key the key + * @return the value, or null if the key was not found or was found + * but was not a floating point number + */ + public Float getFloat(String key); + + /** + * Returns the id for this memento. + * + * @return the memento id, or null if none + * @see #createChild(java.lang.String,java.lang.String) + */ + public String getId(); + + /** + * Returns the name for this memento. + * + * @return the memento name, or null if none + * @see #createChild(java.lang.String,java.lang.String) + */ + public String getName(); + + /** + * Returns the integer value of the given key. + * + * @param key the key + * @return the value, or null if the key was not found or was found + * but was not an integer + */ + public Integer getInteger(String key); + + /** + * Returns the string value of the given key. + * + * @param key the key + * @return the value, or null if the key was not found or was found + * but was not an integer + */ + public String getString(String key); + + /** + * Returns the boolean value of the given key. + * + * @param key the key + * @return the value, or null if the key was not found or was found + * but was not a boolean + */ + public Boolean getBoolean(String key); + + public List getNames(); + + /** + * Sets the value of the given key to the given floating point number. + * + * @param key the key + * @param value the value + */ + public void putFloat(String key, float value); + + /** + * Sets the value of the given key to the given integer. + * + * @param key the key + * @param value the value + */ + public void putInteger(String key, int value); + + /** + * Sets the value of the given key to the given boolean value. + * + * @param key the key + * @param value the value + */ + public void putBoolean(String key, boolean value); + + /** + * Copy the attributes and children from memento + * to the receiver. + * + * @param memento the IMemento to be copied. + */ + public void putMemento(IMemento memento); + + /** + * Sets the value of the given key to the given string. + * + * @param key the key + * @param value the value + */ + public void putString(String key, String value); +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/XMLMemento.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/XMLMemento.java new file mode 100644 index 0000000..ceac609 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/XMLMemento.java @@ -0,0 +1,448 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.internal; + +import java.io.*; +import java.util.*; +import java.net.URL; +import org.w3c.dom.*; +import org.xml.sax.*; + +import javax.xml.parsers.*; +import javax.xml.transform.*; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +/** + * A Memento is a class independent container for persistence + * info. It is a reflection of 3 storage requirements. + * + * 1) We need the ability to persist an object and restore it. + * 2) The class for an object may be absent. If so we would + * like to skip the object and keep reading. + * 3) The class for an object may change. If so the new class + * should be able to read the old persistence info. + * + * We could ask the objects to serialize themselves into an + * ObjectOutputStream, DataOutputStream, or Hashtable. However + * all of these approaches fail to meet the second requirement. + * + * Memento supports binary persistance with a version ID. + */ +public final class XMLMemento implements IMemento { + private Document factory; + private Element element; + + /** + * Answer a memento for the document and element. For simplicity + * you should use createReadRoot and createWriteRoot to create the initial + * mementos on a document. + */ + public XMLMemento(Document doc, Element el) { + factory = doc; + element = el; + } + + /** + * @see IMemento. + */ + public IMemento createChild(String type) { + Element child = factory.createElement(type); + element.appendChild(child); + return new XMLMemento(factory, child); + } + + /** + * @see IMemento. + */ + public IMemento createChild(String type, String id) { + Element child = factory.createElement(type); + child.setAttribute(TAG_ID, id); + element.appendChild(child); + return new XMLMemento(factory, child); + } + + /** + * Create a Document from a Reader and answer a root memento for reading + * a document. + */ + protected static XMLMemento createReadRoot(Reader reader) { + Document document = null; + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder parser = factory.newDocumentBuilder(); + document = parser.parse(new InputSource(reader)); + Node node = document.getFirstChild(); + if (node instanceof Element) + return new XMLMemento(document, (Element) node); + } catch (ParserConfigurationException e) { + } catch (IOException e) { + } catch (SAXException e) { + } finally { + try { + reader.close(); + } catch (Exception e) { } + } + return null; + } + + /** + * Answer a root memento for writing a document. + */ + public static XMLMemento createWriteRoot(String type) { + Document document; + try { + document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); + Element element = document.createElement(type); + document.appendChild(element); + return new XMLMemento(document, element); + } catch (ParserConfigurationException e) { + throw new Error(e); + } + } + + /** + * @see IMemento. + */ + public IMemento getChild(String type) { + // Get the nodes. + NodeList nodes = element.getChildNodes(); + int size = nodes.getLength(); + if (size == 0) + return null; + + // Find the first node which is a child of this node. + for (int nX = 0; nX < size; nX ++) { + Node node = nodes.item(nX); + if (node instanceof Element) { + Element element2 = (Element)node; + if (element2.getNodeName().equals(type)) + return new XMLMemento(factory, element2); + } + } + + // A child was not found. + return null; + } + + /** + * @see IMemento. + */ + public IMemento [] getChildren(String type) { + // Get the nodes. + NodeList nodes = element.getChildNodes(); + int size = nodes.getLength(); + if (size == 0) + return new IMemento[0]; + + // Extract each node with given fType. + ArrayList list = new ArrayList(size); + for (int nX = 0; nX < size; nX ++) { + Node node = nodes.item(nX); + if (node instanceof Element) { + Element element2 = (Element)node; + if (element2.getNodeName().equals(type)) + list.add(element2); + } + } + + // Create a memento for each node. + size = list.size(); + IMemento [] results = new IMemento[size]; + for (int x = 0; x < size; x ++) { + results[x] = new XMLMemento(factory, (Element)list.get(x)); + } + return results; + } + + /** + * Return the contents of this memento as a byte array. + * + * @return byte[] + */ + public byte[] getContents() throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + save(out); + return out.toByteArray(); + } + + /** + * Returns an input stream for writing to the disk with a local locale. + * + * @return java.io.InputStream + */ + public InputStream getInputStream() throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + save(out); + return new ByteArrayInputStream(out.toByteArray()); + } + + /** + * @see IMemento. + */ + public Float getFloat(String key) { + Attr attr = element.getAttributeNode(key); + if (attr == null) + return null; + String strValue = attr.getValue(); + try { + return new Float(strValue); + } catch (NumberFormatException e) { + return null; + } + } + + /** + * @see IMemento. + */ + public String getId() { + return element.getAttribute(TAG_ID); + } + + /** + * @see IMemento. + */ + public String getName() { + return element.getNodeName(); + } + + /** + * @see IMemento. + */ + public Integer getInteger(String key) { + Attr attr = element.getAttributeNode(key); + if (attr == null) + return null; + String strValue = attr.getValue(); + try { + return new Integer(strValue); + } catch (NumberFormatException e) { + return null; + } + } + + /** + * @see IMemento. + */ + public String getString(String key) { + Attr attr = element.getAttributeNode(key); + if (attr == null) + return null; + return attr.getValue(); + } + + public List getNames() { + NamedNodeMap map = element.getAttributes(); + int size = map.getLength(); + List list = new ArrayList(); + for (int i = 0; i < size; i++) { + Node node = map.item(i); + String name = node.getNodeName(); + list.add(name); + } + return list; + } + + /** + * Loads a memento from the given filename. + * + * @param in java.io.InputStream + * @return org.eclipse.ui.IMemento + * @exception java.io.IOException + */ + public static IMemento loadMemento(InputStream in) { + return createReadRoot(new InputStreamReader(in)); + } + + /** + * Loads a memento from the given filename. + * + * @param in java.io.InputStream + * @return org.eclipse.ui.IMemento + * @exception java.io.IOException + */ + public static IMemento loadCorruptMemento(InputStream in) { + Document document = null; + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder parser = factory.newDocumentBuilder(); + document = parser.parse(in); + Node node = document.getFirstChild(); + if (node instanceof Element) + return new XMLMemento(document, (Element) node); + } catch (ParserConfigurationException e) { + } catch (IOException e) { + } catch (SAXException e) { + } finally { + try { + in.close(); + } catch (Exception e) { } + } + return null; + } + + /** + * Loads a memento from the given filename. + * + * @param filename java.lang.String + * @return org.eclipse.ui.IMemento + * @exception java.io.IOException + */ + public static IMemento loadMemento(String filename) throws IOException { + return XMLMemento.createReadRoot(new FileReader(filename)); + } + + /** + * Loads a memento from the given filename. + * + * @param url java.net.URL + * @return org.eclipse.ui.IMemento + * @exception java.io.IOException + */ + public static IMemento loadMemento(URL url) throws IOException { + return XMLMemento.createReadRoot(new InputStreamReader(url.openStream())); + } + + /** + * @see IMemento. + */ + private void putElement(Element element2) { + NamedNodeMap nodeMap = element2.getAttributes(); + int size = nodeMap.getLength(); + for (int i = 0; i < size; i++){ + Attr attr = (Attr)nodeMap.item(i); + putString(attr.getName(),attr.getValue()); + } + + NodeList nodes = element2.getChildNodes(); + size = nodes.getLength(); + for (int i = 0; i < size; i ++) { + Node node = nodes.item(i); + if (node instanceof Element) { + XMLMemento child = (XMLMemento)createChild(node.getNodeName()); + child.putElement((Element)node); + } + } + } + + /** + * @see IMemento. + */ + public void putFloat(String key, float f) { + element.setAttribute(key, String.valueOf(f)); + } + + /** + * @see IMemento. + */ + public void putInteger(String key, int n) { + element.setAttribute(key, String.valueOf(n)); + } + + /** + * @see IMemento. + */ + public void putMemento(IMemento memento) { + XMLMemento xmlMemento = (XMLMemento) memento; + putElement(xmlMemento.element); + } + + /** + * @see IMemento. + */ + public void putString(String key, String value) { + if (value == null) + return; + element.setAttribute(key, value); + } + + /** + * Save this Memento to a Writer. + */ + public void save(Writer writer) throws IOException { + Result result = new StreamResult(writer); + Source source = new DOMSource(factory); + try { + Transformer transformer = TransformerFactory.newInstance().newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$ + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$ + transformer.transform(source, result); + } catch (Exception e) { + throw (IOException) (new IOException().initCause(e)); + } + } + + /** + * Save this Memento to a Writer. + */ + public void save(OutputStream os) throws IOException { + Result result = new StreamResult(os); + Source source = new DOMSource(factory); + try { + Transformer transformer = TransformerFactory.newInstance().newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$ + transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$ + transformer.transform(source, result); + } catch (Exception e) { + throw (IOException) (new IOException().initCause(e)); + } + } + + /** + * Saves the memento to the given file. + * + * @param filename java.lang.String + * @exception java.io.IOException + */ + public void saveToFile(String filename) throws IOException { + Writer w = null; + try { + w = new FileWriter(filename); + save(w); + } catch (IOException e) { + throw e; + } catch (Exception e) { + throw new IOException(e.getLocalizedMessage()); + } finally { + if (w != null) { + try { + w.close(); + } catch (Exception e) { } + } + } + } + + public String saveToString() throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + save(out); + return out.toString("UTF-8"); + } + + /* + * @see IMemento#getBoolean(String) + */ + public Boolean getBoolean(String key) { + Attr attr = element.getAttributeNode(key); + if (attr == null) + return null; + String strValue = attr.getValue(); + if ("true".equalsIgnoreCase(strValue)) + return new Boolean(true); + else + return new Boolean(false); + } + + /* + * @see IMemento#putBoolean(String, boolean) + */ + public void putBoolean(String key, boolean value) { + element.setAttribute(key, value ? "true" : "false"); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/AlternateUserValidationDialog.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/AlternateUserValidationDialog.java new file mode 100644 index 0000000..b4cc992 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/AlternateUserValidationDialog.java @@ -0,0 +1,237 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpeclipse.wiki.preferences; + +import java.util.ArrayList; +import java.util.List; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.VerifyEvent; +import org.eclipse.swt.events.VerifyListener; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + +public class AlternateUserValidationDialog extends Dialog { + String user; + String password = ""; //$NON-NLS-1$ + List numXs = new ArrayList(); + Label icon1; + Label icon2; + Label icon3; + Label icon4; + Text passwordText; + boolean inUpdate = false; + + Image[] images; + + public AlternateUserValidationDialog(Shell parentShell, String user) { + super(parentShell); + this.user = user; + initializeImages(); + } + + protected void configureShell(Shell newShell) { + super.configureShell(newShell); + newShell.setText(Messages.bind("AlternateUserValidationDialog.Enter_Password_2")); //$NON-NLS-1$ + } + + protected Control createContents(Composite parent) { + Composite main = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 3; + main.setLayout(layout); + main.setLayoutData(new GridData(GridData.FILL_BOTH)); + + Composite iconComposite = new Composite(main, SWT.NONE); + layout = new GridLayout(); + layout.numColumns = 2; + iconComposite.setLayout(layout); + iconComposite.setLayoutData(new GridData()); + + icon1 = createLabel(iconComposite); + icon2 = createLabel(iconComposite); + icon3 = createLabel(iconComposite); + icon4 = createLabel(iconComposite); + + Composite middleComposite = new Composite(main, SWT.NONE); + middleComposite.setLayout(new GridLayout()); + middleComposite.setLayoutData(new GridData()); + + Label l = new Label(middleComposite, SWT.NULL); + l.setText(Messages.bind("AlternateUserValidationDialog.message", user)); //$NON-NLS-1$ + l.setLayoutData(new GridData()); + l = new Label(middleComposite, SWT.NULL); + l.setText(""); //$NON-NLS-1$ + l.setLayoutData(new GridData()); + passwordText = new Text(middleComposite, SWT.SINGLE | SWT.BORDER); + GridData data = new GridData(); + data.widthHint = 250; + passwordText.setLayoutData(data); + + passwordText.addVerifyListener(new VerifyListener() { + public void verifyText(VerifyEvent e) { + if (inUpdate) return; + e.doit = false; + inUpdate = true; + switch ((int)e.character) { + case 8: { + // backspace pressed + if (password.length() > 0) { + password = password.substring(0, password.length() - 1); + } + // get rid of bogus Xs + int numX = ((Integer)numXs.get(numXs.size() - 1)).intValue(); + numXs.remove(numXs.size() - 1); + String oldText = passwordText.getText(); + String newText = oldText.substring(0, oldText.length() - numX); + passwordText.setText(newText); + passwordText.setSelection(newText.length()); + break; + } + default: { + String oldText = passwordText.getText(); + String x = getXs(); + numXs.add(numXs.size(), new Integer(x.length())); + String newText = oldText + x; + passwordText.setText(newText); + passwordText.setSelection(newText.length()); + password += e.character; + } + } + inUpdate = false; + updateImages(); + } + }); + /*passwordText.addTraverseListener(new TraverseListener() { + public void keyTraversed(TraverseEvent e) { + switch (e.detail) { + case SWT.TRAVERSE_ARROW_NEXT: + case SWT.TRAVERSE_ARROW_PREVIOUS: + e.detail = SWT.TRAVERSE_NONE; + e.doit = false; + break; + } + } + });*/ + Composite buttonComposite = new Composite(main, SWT.NONE); + buttonComposite.setLayout(new GridLayout()); + buttonComposite.setLayoutData(new GridData()); + Button b = new Button(buttonComposite, SWT.PUSH); + b.setText(Messages.bind("AlternateUserValidationDialog.OK_6")); //$NON-NLS-1$ + data = new GridData(); + data.widthHint = 70; + b.setLayoutData(data); + b.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event event) { + okPressed(); + } + }); + buttonComposite.getShell().setDefaultButton(b); + b = new Button(buttonComposite, SWT.PUSH); + b.setText(Messages.bind("AlternateUserValidationDialog.Cancel_7")); //$NON-NLS-1$ + data = new GridData(); + data.widthHint = 70; + b.setLayoutData(data); + b.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event event) { + cancelPressed(); + } + }); + Dialog.applyDialogFont(parent); + return main; + } + + public boolean close() { + boolean result = super.close(); + if (images != null) { + for (int i = 0; i < images.length; i++) { + images[i].dispose(); + images[i] = null; + } + images = null; + } + return result; + } + public String getPassword() { + return password; + } + + Label createLabel(Composite parent) { + Label result = new Label(parent, SWT.NULL); + GridData data = new GridData(); + data.widthHint = 22; + data.heightHint = 22; + result.setLayoutData(data); + result.setImage(getImage()); + return result; + } + Image getImage() { + double random = Math.random(); + random *= 7; // Random number between 0.0 and 7.0 + long num = Math.round(random); + return images[(int)num]; + } + void initializeImages() { + images = new Image[8]; + for (int i = 0; i < images.length; i++) { + images[i] = WikiEditorPlugin.getDefault().getImageDescriptor("glyphs/glyph" + (i+1) + ".gif").createImage(); //$NON-NLS-1$ //$NON-NLS-2$ + } + FontData fd = new FontData(); + fd.setStyle(SWT.BOLD); + fd.setHeight(10); + // On Windows, set the font to Sans Serif for an authentic look + if (System.getProperty("os.name").indexOf("Windows") != -1) { //$NON-NLS-1$ //$NON-NLS-2$ + fd.setName("Microsoft Sans Serif"); //$NON-NLS-1$ + } + } + void updateImages() { + icon1.setImage(getImage()); + icon2.setImage(getImage()); + icon3.setImage(getImage()); + icon4.setImage(getImage()); + } + public void setUsername(String user) { + this.user = user; + } + String getXs() { + double random = Math.random(); + random *= 2; + random += 2; + long num = Math.round(random); + // Random number between 2 and 4 + switch ((int)num) { + case 2: + return "XX"; //$NON-NLS-1$ + case 3: + return "XXX"; //$NON-NLS-1$ + case 4: + return "XXXX"; //$NON-NLS-1$ + } + return "X"; //$NON-NLS-1$ + } + protected void cancelPressed() { + password = null; + super.cancelPressed(); + } +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/FieldEditorOverlayPage.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/FieldEditorOverlayPage.java new file mode 100644 index 0000000..104a819 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/FieldEditorOverlayPage.java @@ -0,0 +1,366 @@ +/******************************************************************************* + * Copyright (c) 2003 Berthold Daum. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * Berthold Daum + *******************************************************************************/ +package net.sourceforge.phpeclipse.wiki.preferences; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.QualifiedName; +import org.eclipse.jface.preference.FieldEditor; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IPreferenceNode; +import org.eclipse.jface.preference.IPreferencePage; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferenceDialog; +import org.eclipse.jface.preference.PreferenceManager; +import org.eclipse.jface.preference.PreferenceNode; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.BusyIndicator; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.IWorkbenchPropertyPage; + +/** + */ +public abstract class FieldEditorOverlayPage extends FieldEditorPreferencePage + implements + IWorkbenchPropertyPage { + /** + * * Name of resource property for the selection of workbench or project + * settings ** + */ + public static final String USEPROJECTSETTINGS = "useProjectSettings"; //$NON-NLS-1$ + private static final String FALSE = "false"; //$NON-NLS-1$ + private static final String TRUE = "true"; //$NON-NLS-1$ + private boolean fUseFileSettings = false; + // Stores all created field editors + private List editors = new ArrayList(); + // Stores owning element of properties + private IAdaptable element; + // Additional buttons for property pages + private Button useWorkspaceSettingsButton, useProjectSettingsButton, + configureButton; + // Overlay preference store for property pages + private IPreferenceStore overlayStore; + // The image descriptor of this pages title image + private ImageDescriptor image; + // Cache for page id + private String pageId; + /** + * Constructor + * + * @param style - + * layout style + */ + public FieldEditorOverlayPage(int style) { + super(style); + } + /** + * Constructor + * + * @param style - + * layout style + */ + public FieldEditorOverlayPage(int style, boolean isFileSettings) { + super(style); + fUseFileSettings = isFileSettings; + } + /** + * Constructor + * + * @param title - + * title string + * @param style - + * layout style + */ + public FieldEditorOverlayPage(String title, int style) { + super(title, style); + } + public FieldEditorOverlayPage(String title, int style, boolean isFileSettings) { + super(title, style); + fUseFileSettings = isFileSettings; + } + /** + * Constructor + * + * @param title - + * title string + * @param image - + * title image + * @param style - + * layout style + */ + public FieldEditorOverlayPage(String title, ImageDescriptor image, int style) { + super(title, image, style); + this.image = image; + } + /** + * Returns the id of the current preference page as defined in plugin.xml + * Subclasses must implement. + * + * @return - the qualifier + */ + protected abstract String getPageId(); + /** + * Receives the object that owns the properties shown in this property page. + * + * @see org.eclipse.ui.IWorkbenchPropertyPage#setElement(org.eclipse.core.runtime.IAdaptable) + */ + public void setElement(IAdaptable element) { + this.element = element; + } + /** + * Delivers the object that owns the properties shown in this property page. + * + * @see org.eclipse.ui.IWorkbenchPropertyPage#getElement() + */ + public IAdaptable getElement() { + return element; + } + /** + * Returns true if this instance represents a property page + * + * @return - true for property pages, false for preference pages + */ + public boolean isPropertyPage() { + return getElement() != null; + } + /** + * We override the addField method. This allows us to store each field editor + * added by subclasses in a list for later processing. + * + * @see org.eclipse.jface.preference.FieldEditorPreferencePage#addField(org.eclipse.jface.preference.FieldEditor) + */ + protected void addField(FieldEditor editor) { + editors.add(editor); + super.addField(editor); + } + /** + * We override the createControl method. In case of property pages we create + * a new PropertyStore as local preference store. After all control have been + * create, we enable/disable these controls. + * + * @see org.eclipse.jface.preference.PreferencePage#createControl() + */ + public void createControl(Composite parent) { + // Special treatment for property pages + if (isPropertyPage()) { + // Cache the page id + pageId = getPageId(); + // Create an overlay preference store and fill it with properties + overlayStore = new PropertyStore((IResource) getElement(), super + .getPreferenceStore(), pageId); + // Set overlay store as current preference store + } + super.createControl(parent); + // Update state of all subclass controls + if (isPropertyPage()) + updateFieldEditors(); + } + /** + * We override the createContents method. In case of property pages we insert + * two radio buttons at the top of the page. + * + * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) + */ + protected Control createContents(Composite parent) { + if (isPropertyPage()) + createSelectionGroup(parent); + return super.createContents(parent); + } + /** + * Creates and initializes a selection group with two choice buttons and one + * push button. + * + * @param parent - + * the parent composite + */ + private void createSelectionGroup(Composite parent) { + Composite comp = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + layout.marginHeight = 0; + layout.marginWidth = 0; + comp.setLayout(layout); + comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + Composite radioGroup = new Composite(comp, SWT.NONE); + radioGroup.setLayout(new GridLayout()); + radioGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + useWorkspaceSettingsButton = createRadioButton(radioGroup, Messages + .getString("OverlayPage.Use_Workspace_Settings")); //$NON-NLS-1$ + if (fUseFileSettings) { + useProjectSettingsButton = createRadioButton(radioGroup, Messages + .getString("OverlayPage.Use_File_Settings")); //$NON-NLS-1$ + } else { + useProjectSettingsButton = createRadioButton(radioGroup, Messages + .getString("OverlayPage.Use_Project_Settings")); //$NON-NLS-1$ + } + configureButton = new Button(comp, SWT.PUSH); + configureButton.setText(Messages + .getString("OverlayPage.Configure_Workspace_Settings")); //$NON-NLS-1$ + configureButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + configureWorkspaceSettings(); + } + }); + // Set workspace/project radio buttons + try { + String use = ((IResource) getElement()) + .getPersistentProperty(new QualifiedName(pageId, USEPROJECTSETTINGS)); + if (TRUE.equals(use)) { + useProjectSettingsButton.setSelection(true); + configureButton.setEnabled(false); + } else + useWorkspaceSettingsButton.setSelection(true); + } catch (CoreException e) { + useWorkspaceSettingsButton.setSelection(true); + } + } + /** + * Convenience method creating a radio button + * + * @param parent - + * the parent composite + * @param label - + * the button label + * @return - the new button + */ + private Button createRadioButton(Composite parent, String label) { + final Button button = new Button(parent, SWT.RADIO); + button.setText(label); + button.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + configureButton.setEnabled(button == useWorkspaceSettingsButton); + updateFieldEditors(); + } + }); + return button; + } + /** + * Returns in case of property pages the overlay store, in case of preference + * pages the standard preference store + * + * @see org.eclipse.jface.preference.PreferencePage#getPreferenceStore() + */ + public IPreferenceStore getPreferenceStore() { + if (isPropertyPage()) + return overlayStore; + return super.getPreferenceStore(); + } + /* + * Enables or disables the field editors and buttons of this page + */ + private void updateFieldEditors() { + // We iterate through all field editors + boolean enabled = useProjectSettingsButton.getSelection(); + updateFieldEditors(enabled); + } + /** + * Enables or disables the field editors and buttons of this page Subclasses + * may override. + * + * @param enabled - + * true if enabled + */ + protected void updateFieldEditors(boolean enabled) { + Composite parent = getFieldEditorParent(); + Iterator it = editors.iterator(); + while (it.hasNext()) { + FieldEditor editor = (FieldEditor) it.next(); + editor.setEnabled(enabled, parent); + } + } + /** + * We override the performOk method. In case of property pages we copy the + * values in the overlay store into the property values of the selected + * project. We also save the state of the radio buttons. + * + * @see org.eclipse.jface.preference.IPreferencePage#performOk() + */ + public boolean performOk() { + boolean result = super.performOk(); + if (result && isPropertyPage()) { + // Save state of radiobuttons in project properties + IResource resource = (IResource) getElement(); + try { + String value = (useProjectSettingsButton.getSelection()) ? TRUE : FALSE; + resource.setPersistentProperty(new QualifiedName(pageId, + USEPROJECTSETTINGS), value); + } catch (CoreException e) { + } + } + return result; + } + /** + * We override the performDefaults method. In case of property pages we + * switch back to the workspace settings and disable the field editors. + * + * @see org.eclipse.jface.preference.PreferencePage#performDefaults() + */ + protected void performDefaults() { + if (isPropertyPage()) { + useWorkspaceSettingsButton.setSelection(true); + useProjectSettingsButton.setSelection(false); + configureButton.setEnabled(true); + updateFieldEditors(); + } + super.performDefaults(); + } + /** + * Creates a new preferences page and opens it + * + * @see com.bdaum.SpellChecker.preferences.SpellCheckerPreferencePage#configureWorkspaceSettings() + */ + protected void configureWorkspaceSettings() { + try { + // create a new instance of the current class + IPreferencePage page = (IPreferencePage) this.getClass().newInstance(); + page.setTitle(getTitle()); + page.setImageDescriptor(image); + // and show it + showPreferencePage(pageId, page); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + /** + * Show a single preference pages + * + * @param id - + * the preference page identification + * @param page - + * the preference page + */ + protected void showPreferencePage(String id, IPreferencePage page) { + final IPreferenceNode targetNode = new PreferenceNode(id, page); + PreferenceManager manager = new PreferenceManager(); + manager.addToRoot(targetNode); + final PreferenceDialog dialog = new PreferenceDialog(getControl() + .getShell(), manager); + BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() { + public void run() { + dialog.create(); + dialog.setMessage(targetNode.getLabelText()); + dialog.open(); + } + }); + } +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/ITeamUIImages.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/ITeamUIImages.java new file mode 100644 index 0000000..9e71634 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/ITeamUIImages.java @@ -0,0 +1,13 @@ +package net.sourceforge.phpeclipse.wiki.preferences; + +/** + * Internal images for wiki ui. + */ +public interface ITeamUIImages { + + /** + * Icon for authentication dialogs. + */ + public final String IMG_KEY_LOCK = "wizban/keylock.gif"; //$NON-NLS-1$ + +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/InfiniteSubProgressMonitor.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/InfiniteSubProgressMonitor.java new file mode 100644 index 0000000..47e8b37 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/InfiniteSubProgressMonitor.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpeclipse.wiki.preferences; + + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; + +/** + * Provides an infinite progress monitor by subdividing by half repeatedly. + * + * The ticks parameter represents the number of ticks shown in the progress dialog + * (or propogated up to a parent IProgressMonitor). The totalWork parameter provided + * in actually a hint used to determine how work is translated into ticks. + * The number of totalWork that can actually be worked is n*totalWork/2 where + * 2^n = totalWork. What this means is that if you provide a totalWork of 32 (2^5) than + * the maximum number of ticks is 5*32/2 = 80. + * + */ +public class InfiniteSubProgressMonitor extends SubProgressMonitor { + + int totalWork; + int halfWay; + int currentIncrement; + int nextProgress; + int worked; + + /** + * Constructor for InfiniteSubProgressMonitor. + * @param monitor + * @param ticks + */ + public InfiniteSubProgressMonitor(IProgressMonitor monitor, int ticks) { + this(monitor, ticks, 0); + } + + /** + * Constructor for InfiniteSubProgressMonitor. + * @param monitor + * @param ticks + * @param style + */ + public InfiniteSubProgressMonitor(IProgressMonitor monitor, int ticks, int style) { + super(monitor, ticks, style); + } + + public void beginTask(String name, int totalWork) { + super.beginTask(name, totalWork); + this.totalWork = totalWork; + this.halfWay = totalWork / 2; + this.currentIncrement = 1; + this.nextProgress = currentIncrement; + this.worked = 0; + } + + public void worked(int work) { + if (worked >= totalWork) return; + if (--nextProgress <= 0) { + super.worked(1); + worked++; + if (worked >= halfWay) { + // we have passed the current halfway point, so double the + // increment and reset the halfway point. + currentIncrement *= 2; + halfWay += (totalWork - halfWay) / 2; + } + // reset the progress counter to another full increment + nextProgress = currentIncrement; + } + } + + /** + * Don't allow clearing of the subtask. This will stop the flickering + * of the subtask in the progress dialogs. + * + * @see IProgressMonitor#subTask(String) + */ + public void subTask(String name) { + if(name != null && ! name.equals("")) { //$NON-NLS-1$ + super.subTask(name); + } + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Messages.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Messages.java new file mode 100644 index 0000000..7bbed9a --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Messages.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright (c) 2003 Berthold Daum. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * Berthold Daum + *******************************************************************************/ + +package net.sourceforge.phpeclipse.wiki.preferences; + +import java.text.MessageFormat; +import java.util.MissingResourceException; +import java.util.ResourceBundle; + + +public class Messages { + + private final static String RESOURCE_BUNDLE= "net.sourceforge.phpeclipse.wiki.preferences.Messages";//$NON-NLS-1$ + + private static ResourceBundle fgResourceBundle = null; + + private static boolean notRead = true; + + public Messages() { + } + public static ResourceBundle getResourceBundle() { + if (notRead) { + notRead = false; + try { + fgResourceBundle = ResourceBundle.getBundle(RESOURCE_BUNDLE); + } + catch (Exception e) { + } + } + + return fgResourceBundle; + } + public static String getString(String key) { + try { + return getResourceBundle().getString(key); + } catch (Exception e) { + return "!" + key + "!";//$NON-NLS-2$ //$NON-NLS-1$ + } + } + + /** + * Lookup the message with the given ID in this catalog and bind its + * substitution locations with the given string. + */ + public static String bind(String id, String binding) { + return bind(id, new String[] { binding }); + } + + /** + * Lookup the message with the given ID in this catalog and bind its + * substitution locations with the given strings. + */ + public static String bind(String id, String binding1, String binding2) { + return bind(id, new String[] { binding1, binding2 }); + } + + /** + * Gets a string from the resource bundle. We don't want to crash because of a missing String. + * Returns the key if not found. + */ + public static String bind(String key) { + try { + return getString(key); + } catch (MissingResourceException e) { + return key; + } catch (NullPointerException e) { + return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$ + } + } + + /** + * Gets a string from the resource bundle and binds it with the given arguments. If the key is + * not found, return the key. + */ + public static String bind(String key, Object[] args) { + try { + return MessageFormat.format(bind(key), args); + } catch (MissingResourceException e) { + return key; + } catch (NullPointerException e) { + return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$ + } + } +} + diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Messages.properties b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Messages.properties new file mode 100644 index 0000000..5598a72 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Messages.properties @@ -0,0 +1,23 @@ +WikiProjectPreferences.StaticWikiFolder=Projects Wikipedia to HTML output path: +WikiProjectPreferences.WikiTextsFolder=Projects associated Wikipedia texts path: + +OverlayPage.Use_Workspace_Settings=Use &workspace settings +OverlayPage.Use_Project_Settings=Use pr&oject settings +OverlayPage.Use_File_Settings=Use &file settings +OverlayPage.Configure_Workspace_Settings=&Configure Workspace Settings ... +PropertyStore.Cannot_write_resource_property=Cannot write resource property + +UserValidationDialog.5=Configuration: +UserValidationDialog.6=&Save Password +UserValidationDialog.7=Saved passwords are stored on your computer in a file that's difficult, but not impossible, for an intruder to read. + +UserValidationDialog.required=Password Required +UserValidationDialog.labelUser={0} +UserValidationDialog.labelPassword={1} +UserValidationDialog.password=&Password: +UserValidationDialog.user=&User name: + +AlternateUserValidationDialog.Enter_Password_2=Enter Password +AlternateUserValidationDialog.OK_6=OK +AlternateUserValidationDialog.Cancel_7=Cancel +AlternateUserValidationDialog.message=Enter the password for {0}: \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/OverlayPage.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/OverlayPage.java new file mode 100644 index 0000000..45b9446 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/OverlayPage.java @@ -0,0 +1,335 @@ +/******************************************************************************* + * Copyright (c) 2003 Berthold Daum. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * Berthold Daum + *******************************************************************************/ +package net.sourceforge.phpeclipse.wiki.preferences; + +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.QualifiedName; +import org.eclipse.jface.preference.IPreferenceNode; +import org.eclipse.jface.preference.IPreferencePage; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferenceDialog; +import org.eclipse.jface.preference.PreferenceManager; +import org.eclipse.jface.preference.PreferenceNode; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.BusyIndicator; +import org.eclipse.swt.custom.CTabFolder; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.TabFolder; +import org.eclipse.ui.dialogs.PropertyPage; +import org.eclipse.ui.part.PageBook; + +/** + * @author Berthold Daum + */ +public abstract class OverlayPage extends PropertyPage { + + /*** Name of resource property for the selection of workbench or project settings ***/ + public static final String USEPROJECTSETTINGS = "useProjectSettings"; //$NON-NLS-1$ + + private static final String FALSE = "false"; //$NON-NLS-1$ + private static final String TRUE = "true"; //$NON-NLS-1$ + + // Additional buttons for property pages + private Button useWorkspaceSettingsButton, + useProjectSettingsButton, + configureButton; + + // Overlay preference store for property pages + private PropertyStore overlayStore; + + // The image descriptor of this pages title image + private ImageDescriptor image; + + // Cache for page id + private String pageId; + + // Container for subclass controls + private Composite contents; + + /** + * Constructor + */ + public OverlayPage() { + super(); + } + + /** + * Constructor + * @param title - title string + */ + public OverlayPage(String title) { + super(); + setTitle(title); + } + + /** + * Constructor + * @param title - title string + * @param image - title image + */ + public OverlayPage(String title, ImageDescriptor image) { + super(); + setTitle(title); + setImageDescriptor(image); + this.image = image; + } + + /** + * Returns the id of the current preference page as defined in plugin.xml + * Subclasses must implement. + * + * @return - the qualifier + */ + protected abstract String getPageId(); + + /** + * Returns true if this instance represents a property page + * @return - true for property pages, false for preference pages + */ + public boolean isPropertyPage() { + return getElement() != null; + } + + /** + * We need to implement createContents method. In case of property pages we insert two radio buttons + * and a push button at the top of the page. Below this group we create a new composite for the contents + * created by subclasses. + * + * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) + */ + protected Control createContents(Composite parent) { + if (isPropertyPage()) + createSelectionGroup(parent); + contents = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.marginHeight = 0; + layout.marginWidth = 0; + contents.setLayout(layout); + contents.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + return contents; + } + + /** + * Creates and initializes a selection group with two choice buttons and one push button. + * @param parent - the parent composite + */ + private void createSelectionGroup(Composite parent) { + Composite comp = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + layout.marginHeight = 0; + layout.marginWidth = 0; + comp.setLayout(layout); + comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + Composite radioGroup = new Composite(comp, SWT.NONE); + radioGroup.setLayout(new GridLayout()); + radioGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + useWorkspaceSettingsButton = createRadioButton(radioGroup, Messages.getString("OverlayPage.Use_Workspace_Settings")); //$NON-NLS-1$ + useProjectSettingsButton = createRadioButton(radioGroup, Messages.getString("OverlayPage.Use_Project_Settings")); //$NON-NLS-1$ + configureButton = new Button(comp, SWT.PUSH); + configureButton.setText(Messages.getString("OverlayPage.Configure_Workspace_Settings")); //$NON-NLS-1$ + configureButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + configureWorkspaceSettings(); + } + }); + // Set workspace/project radio buttons + try { + String use = + ((IResource) getElement()).getPersistentProperty( + new QualifiedName(pageId, USEPROJECTSETTINGS)); + if (TRUE.equals(use)) { + useProjectSettingsButton.setSelection(true); + configureButton.setEnabled(false); + } else + useWorkspaceSettingsButton.setSelection(true); + } catch (CoreException e) { + useWorkspaceSettingsButton.setSelection(true); + } + } + + /** + * Convenience method creating a radio button + * @param parent - the parent composite + * @param label - the button label + * @return - the new button + */ + private Button createRadioButton(Composite parent, String label) { + final Button button = new Button(parent, SWT.RADIO); + button.setText(label); + button.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + configureButton.setEnabled( + button == useWorkspaceSettingsButton); + setControlsEnabled(); + } + }); + return button; + } + + /** + * In case of property pages we create a new PropertyStore as local overlay store. + * After all controls have been create, we enable/disable these controls + * + * @see org.eclipse.jface.preference.PreferencePage#createControl() + */ + public void createControl(Composite parent) { + // Special treatment for property pages + if (isPropertyPage()) { + // Cache the page id + pageId = getPageId(); + // Create an overlay preference store and fill it with properties + overlayStore = + new PropertyStore( + (IResource) getElement(), + super.getPreferenceStore(), + pageId); + // Set overlay store as current preference store + } + super.createControl(parent); + // Update enablement of all subclass controls + if (isPropertyPage()) + setControlsEnabled(); + } + + /* + * Returns in case of property pages the overlay store - otherwise the standard preference store + * @see org.eclipse.jface.preference.PreferencePage#getPreferenceStore() + */ + public IPreferenceStore getPreferenceStore() { + if (isPropertyPage()) + return overlayStore; + return super.getPreferenceStore(); + } + + /** + * Enables or disables the controls of this page + */ + private void setControlsEnabled() { + boolean enabled = useProjectSettingsButton.getSelection(); + setControlsEnabled(enabled); + } + + /** + * Enables or disables the controls of this page + * Subclasses may override. + * + * @param enabled - true if controls shall be enabled + */ + protected void setControlsEnabled(boolean enabled) { + setControlsEnabled(contents, enabled); + } + + /** + * Enables or disables a tree of controls starting at the specified root. + * We spare tabbed notebooks and pagebooks to allow for fUser navigation. + * + * @param root - the root composite + * @param enabled - true if controls shall be enabled + */ + private void setControlsEnabled(Composite root, boolean enabled) { + Control[] children = root.getChildren(); + for (int i = 0; i < children.length; i++) { + Control child = children[i]; + if (!(child instanceof CTabFolder) && !(child instanceof TabFolder) && !(child instanceof PageBook)) + child.setEnabled(enabled); + if (child instanceof Composite) + setControlsEnabled((Composite) child, enabled); + } + } + + /** + * We override the performOk method. In case of property pages + * we save the state of the radio buttons. + * + * @see org.eclipse.jface.preference.IPreferencePage#performOk() + */ + public boolean performOk() { + boolean result = super.performOk(); + if (result && isPropertyPage()) { + // Save state of radiobuttons in project properties + IResource resource = (IResource) getElement(); + try { + String value = + (useProjectSettingsButton.getSelection()) ? TRUE : FALSE; + resource.setPersistentProperty( + new QualifiedName(pageId, USEPROJECTSETTINGS), + value); + } catch (CoreException e) { + } + } + return result; + } + + /** + * We override the performDefaults method. In case of property pages we + * switch back to the workspace settings and disable the page controls. + * + * @see org.eclipse.jface.preference.PreferencePage#performDefaults() + */ + protected void performDefaults() { + if (isPropertyPage()) { + useWorkspaceSettingsButton.setSelection(true); + useProjectSettingsButton.setSelection(false); + configureButton.setEnabled(true); + setControlsEnabled(); + } + super.performDefaults(); + } + + /** + * Creates a new preferences page and opens it + * @see com.bdaum.SpellChecker.preferences.SpellCheckerPreferencePage#configureWorkspaceSettings() + */ + protected void configureWorkspaceSettings() { + try { + // create a new instance of the current class + IPreferencePage page = + (IPreferencePage) this.getClass().newInstance(); + page.setTitle(getTitle()); + page.setImageDescriptor(image); + // and show it + showPreferencePage(pageId, page); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + /** + * Show a single preference pages + * @param id - the preference page identification + * @param page - the preference page + */ + protected void showPreferencePage(String id, IPreferencePage page) { + final IPreferenceNode targetNode = new PreferenceNode(id, page); + PreferenceManager manager = new PreferenceManager(); + manager.addToRoot(targetNode); + final PreferenceDialog dialog = + new PreferenceDialog(getControl().getShell(), manager); + BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() { + public void run() { + dialog.create(); + dialog.setMessage(targetNode.getLabelText()); + dialog.open(); + } + }); + } + +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/PropertyStore.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/PropertyStore.java new file mode 100644 index 0000000..2bd7ac9 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/PropertyStore.java @@ -0,0 +1,234 @@ +/******************************************************************************* + * Copyright (c) 2003 Berthold Daum. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * Berthold Daum + *******************************************************************************/ + +package net.sourceforge.phpeclipse.wiki.preferences; + +import java.io.IOException; +import java.io.OutputStream; + +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.QualifiedName; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferenceStore; + +/** + * @author Berthold Daum + * + */ +public class PropertyStore extends PreferenceStore { + + private IResource resource; + private IPreferenceStore workbenchStore; + private String pageId; + private boolean inserting = false; + + public PropertyStore( + IResource resource, + IPreferenceStore workbenchStore, + String pageId) { + this.resource = resource; + this.workbenchStore = workbenchStore; + this.pageId = pageId; + } + + /*** Write modified values back to properties ***/ + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPersistentPreferenceStore#save() + */ + public void save() throws IOException { + writeProperties(); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.PreferenceStore#save(java.io.OutputStream, java.lang.String) + */ + public void save(OutputStream out, String header) throws IOException { + writeProperties(); + } + + /** + * Writes modified preferences into resource properties. + */ + private void writeProperties() throws IOException { + String[] preferences = super.preferenceNames(); + for (int i = 0; i < preferences.length; i++) { + String name = preferences[i]; + try { + setProperty(name, getString(name)); + } catch (CoreException e) { + throw new IOException(Messages.getString("PropertyStore.Cannot_write_resource_property") + name); //$NON-NLS-1$ + } + } + } + + /** + * Convenience method to set a property + * @param name - the preference name + * @param value - the property value or null to delete the property + * @throws CoreException + */ + private void setProperty(String name, String value) throws CoreException { + resource.setPersistentProperty(new QualifiedName(pageId, name), value); + } + + /*** Get default values (Delegate to workbench store) ***/ + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultBoolean(java.lang.String) + */ + public boolean getDefaultBoolean(String name) { + return workbenchStore.getDefaultBoolean(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultDouble(java.lang.String) + */ + public double getDefaultDouble(String name) { + return workbenchStore.getDefaultDouble(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultFloat(java.lang.String) + */ + public float getDefaultFloat(String name) { + return workbenchStore.getDefaultFloat(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultInt(java.lang.String) + */ + public int getDefaultInt(String name) { + return workbenchStore.getDefaultInt(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultLong(java.lang.String) + */ + public long getDefaultLong(String name) { + return workbenchStore.getDefaultLong(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultString(java.lang.String) + */ + public String getDefaultString(String name) { + return workbenchStore.getDefaultString(name); + } + + /*** Get property values ***/ + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getBoolean(java.lang.String) + */ + public boolean getBoolean(String name) { + insertValue(name); + return super.getBoolean(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getDouble(java.lang.String) + */ + public double getDouble(String name) { + insertValue(name); + return super.getDouble(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getFloat(java.lang.String) + */ + public float getFloat(String name) { + insertValue(name); + return super.getFloat(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getInt(java.lang.String) + */ + public int getInt(String name) { + insertValue(name); + return super.getInt(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getLong(java.lang.String) + */ + public long getLong(String name) { + insertValue(name); + return super.getLong(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#getString(java.lang.String) + */ + public String getString(String name) { + insertValue(name); + return super.getString(name); + } + + /** + * @param name + */ + private synchronized void insertValue(String name) { + if (inserting) + return; + if (super.contains(name)) + return; + inserting = true; + String prop = null; + try { + prop = getProperty(name); + } catch (CoreException e) { + } + if (prop == null) + prop = workbenchStore.getString(name); + if (prop != null) + setValue(name, prop); + inserting = false; + } + + /** + * Convenience method to fetch a property + * @param name - the preference name + * @return - the property value + * @throws CoreException + */ + private String getProperty(String name) throws CoreException { + return resource.getPersistentProperty(new QualifiedName(pageId, name)); + } + + /*** Misc ***/ + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#contains(java.lang.String) + */ + public boolean contains(String name) { + return workbenchStore.contains(name); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#setToDefault(java.lang.String) + */ + public void setToDefault(String name) { + setValue(name, getDefaultString(name)); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.preference.IPreferenceStore#isDefault(java.lang.String) + */ + public boolean isDefault(String name) { + String defaultValue = getDefaultString(name); + if (defaultValue == null) return false; + return defaultValue.equals(getString(name)); + } + +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/TeamImages.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/TeamImages.java new file mode 100644 index 0000000..14ae034 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/TeamImages.java @@ -0,0 +1,50 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpeclipse.wiki.preferences; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.core.runtime.IExtension; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.ISharedImages; + +/** + * TeamImages provides convenience methods for accessing shared images + * provided by the org.eclipse.team.ui plug-in. + *

      + * This class provides ImageDescriptors for each named image in + * {@link ISharedImages}. All Image objects created from the + * provided descriptors are managed the caller and must be disposed appropriately. + *

      + * @since 2.0 + */ +public class TeamImages { + /** + * Returns the image descriptor for the given image ID. + * Returns null if there is no such image. + * + * @param id the identifier for the image to retrieve + * @return the image descriptor associated with the given ID + */ + public static ImageDescriptor getImageDescriptor(String id) { + return WikiEditorPlugin.getImageDescriptor(id); + } + /** + * Convenience method to get an image descriptor for an extension. + * + * @param extension the extension declaring the image + * @param subdirectoryAndFilename the path to the image + * @return the image descriptor for the extension + */ + public static ImageDescriptor getImageDescriptorFromExtension(IExtension extension, String subdirectoryAndFilename) { + return WikiEditorPlugin.getImageDescriptorFromExtension(extension, subdirectoryAndFilename); + } +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/UserValidationDialog.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/UserValidationDialog.java new file mode 100644 index 0000000..652d150 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/UserValidationDialog.java @@ -0,0 +1,290 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpeclipse.wiki.preferences; + + + + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.window.Window; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + +/** + * A dialog for prompting for a username and fPassword + */ +public class UserValidationDialog extends Dialog { + // widgets + protected Text usernameField; + protected Text passwordField; + protected Button allowCachingButton; + + protected String domain; + protected String defaultUsername; + protected String password = null; + protected boolean allowCaching = false; + protected Image keyLockImage; + + // whether or not the username can be changed + protected boolean isUsernameMutable = true; + protected boolean showAllowCachingButton = true; + protected String username = null; + protected String message = null; + + /** + * Creates a new UserValidationDialog. + * + * @param parentShell the parent shell + * @param location the location + * @param defaultName the default fUser name + * @param message a mesage to display to the fUser + */ + public UserValidationDialog(Shell parentShell, String location, String defaultName, String message) { + super(parentShell); + this.defaultUsername = defaultName; + this.domain = location; + this.message = message; + } + /** + * @see Window#configureShell + */ + protected void configureShell(Shell newShell) { + super.configureShell(newShell); + newShell.setText(Messages.getString("UserValidationDialog.required")); //$NON-NLS-1$ + // set F1 help +// WorkbenchHelp.setHelp(newShell, IHelpContextIds.USER_VALIDATION_DIALOG); + } + /** + * @see Window#create + */ + public void create() { + super.create(); + // add some default values + usernameField.setText(defaultUsername); + + if (isUsernameMutable) { + // give focus to username field + usernameField.selectAll(); + usernameField.setFocus(); + } else { + usernameField.setEditable(false); + passwordField.setFocus(); + } + } + + /** + * @see Dialog#createDialogArea + */ + protected Control createDialogArea(Composite parent) { + Composite top = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + + top.setLayout(layout); + top.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + Composite imageComposite = new Composite(top, SWT.NONE); + layout = new GridLayout(); + imageComposite.setLayout(layout); + imageComposite.setLayoutData(new GridData(GridData.FILL_VERTICAL)); + + Composite main = new Composite(top, SWT.NONE); + layout = new GridLayout(); + layout.numColumns = 3; + main.setLayout(layout); + main.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + Label imageLabel = new Label(imageComposite, SWT.NONE); + keyLockImage = TeamImages.getImageDescriptor(ITeamUIImages.IMG_KEY_LOCK).createImage(); + imageLabel.setImage(keyLockImage); + GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + imageLabel.setLayoutData(data); + + if (message != null) { + Label messageLabel = new Label(main, SWT.WRAP); + messageLabel.setText(message); + data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + data.horizontalSpan = 3; + data.widthHint = 300; + messageLabel.setLayoutData(data); + } + if (domain != null) { + Label d = new Label(main, SWT.WRAP); + d.setText(Messages.getString("UserValidationDialog.5")); //$NON-NLS-1$ + data = new GridData(); + d.setLayoutData(data); + Label label = new Label(main, SWT.WRAP); + if (isUsernameMutable) { + label.setText(Messages.bind("UserValidationDialog.labelUser", domain)); //$NON-NLS-1$ + } else { + label.setText(Messages.bind("UserValidationDialog.labelPassword", new Object[]{defaultUsername, domain})); //$NON-NLS-1$ + } + data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + data.horizontalSpan = 2; + data.widthHint = 300; + label.setLayoutData(data); + } + createUsernameFields(main); + createPasswordFields(main); + + if(domain != null && showAllowCachingButton) { + allowCachingButton = new Button(main, SWT.CHECK); + allowCachingButton.setText(Messages.getString("UserValidationDialog.6")); //$NON-NLS-1$ + data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + data.horizontalSpan = 3; + allowCachingButton.setLayoutData(data); + allowCachingButton.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + allowCaching = allowCachingButton.getSelection(); + } + }); + Composite warningComposite = new Composite(main, SWT.NONE); + layout = new GridLayout(); + layout.numColumns = 2; + layout.marginHeight = 0; + layout.marginHeight = 0; + warningComposite.setLayout(layout); + data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 3; + warningComposite.setLayoutData(data); + Label warningLabel = new Label(warningComposite, SWT.NONE); + warningLabel.setImage(getImage(DLG_IMG_MESSAGE_WARNING)); + warningLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING)); + Label warningText = new Label(warningComposite, SWT.WRAP); + warningText.setText(Messages.getString("UserValidationDialog.7")); //$NON-NLS-1$ + data = new GridData(GridData.FILL_HORIZONTAL); + data.widthHint = 300; + warningText.setLayoutData(data); + } + + Dialog.applyDialogFont(parent); + + return main; + } + /** + * Create a spacer. + */ + protected void createSpacer(Composite top, int columnSpan, int vertSpan) { + Label l = new Label(top, SWT.NONE); + GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); + data.horizontalSpan = columnSpan; + data.verticalSpan = vertSpan; + l.setLayoutData(data); + } + + /** + * Creates the three widgets that represent the fPassword entry area. + * + * @param parent the parent of the widgets + */ + protected void createPasswordFields(Composite parent) { + new Label(parent, SWT.NONE).setText(Messages.getString("UserValidationDialog.fPassword")); //$NON-NLS-1$ + + passwordField = new Text(parent, SWT.BORDER | SWT.PASSWORD); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 2; + data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH); + passwordField.setLayoutData(data); + } + /** + * Creates the three widgets that represent the fUser name entry area. + * + * @param parent the parent of the widgets + */ + protected void createUsernameFields(Composite parent) { + new Label(parent, SWT.NONE).setText(Messages.getString("UserValidationDialog.fUser")); //$NON-NLS-1$ + + usernameField = new Text(parent, SWT.BORDER); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 2; + data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH); + usernameField.setLayoutData(data); + } + + /** + * Returns the fPassword entered by the fUser, or null + * if the fUser canceled. + * + * @return the entered fPassword + */ + public String getPassword() { + return password; + } + + /** + * Returns the username entered by the fUser, or null + * if the fUser canceled. + * + * @return the entered username + */ + public String getUsername() { + return username; + } + + /** + * Returns true if the save fPassword checkbox was selected. + * @return true if the save fPassword checkbox was selected and false + * otherwise. + */ + public boolean getAllowCaching() { + return allowCaching; + } + + /** + * Notifies that the ok button of this dialog has been pressed. + *

      + * The default implementation of this framework method sets + * this dialog's return code to Window.OK + * and closes the dialog. Subclasses may override. + *

      + */ + protected void okPressed() { + password = passwordField.getText(); + username = usernameField.getText(); + + super.okPressed(); + } + /** + * Sets whether or not the username field should be mutable. + * This method must be called before create(), otherwise it + * will be ignored. + * + * @param value whether the username is mutable + */ + public void setUsernameMutable(boolean value) { + isUsernameMutable = value; + } + + public void setShowAllowCachingButton(boolean value) { + showAllowCachingButton = value; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.Dialog#close() + */ + public boolean close() { + if(keyLockImage != null) { + keyLockImage.dispose(); + } + return super.close(); + } +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Util.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Util.java new file mode 100644 index 0000000..4d154f7 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/Util.java @@ -0,0 +1,197 @@ +package net.sourceforge.phpeclipse.wiki.preferences; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.QualifiedName; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.plog4u.wiki.filter.FilterUtil; + +public class Util { + public static Shell findShell() { + IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (window != null) { + return window.getShell(); + } + Display display = Display.getCurrent(); + if (display == null) { + display = Display.getDefault(); + return display.getActiveShell(); + } + // worst case, just create our own. + return new Shell(WikiEditorPlugin.getStandardDisplay()); + } + + public static String getProjectsWikiOutputPath(IResource resource, String key) { + return getOverlayedPrefProjectValue(resource, WikiProjectPreferences.PREF_ID, key); + // int index = temp.indexOf(File.pathSeparatorChar); + // if (index >= 0) { + // temp = temp.substring(0, index); + // } + // return temp; + } + + public static String getPreferenceValue(IResource resource, String key) { + return getOverlayedPrefProjectValue(resource, WikiProjectPreferences.PREF_ID, key); + } + + public static String getHTMLFileName(IFile file, String binBasePath, String srcBasePath) { + StringBuffer htmlBuffer = new StringBuffer(); + String htmlName = null; + // String srcBasePath = Util.getWikiTextsPath(file); + // String fileName = file.getProjectRelativePath().toString(); + String fileName = file.getLocation().toString(); + if (fileName.startsWith(srcBasePath)) { + fileName = fileName.substring(srcBasePath.length()); + if (fileName.charAt(0) != '/') { + fileName = "/" + fileName; + } + int index = fileName.lastIndexOf(".wp"); + if (index >= 0) { + htmlName = binBasePath + fileName.substring(0, index) + ".html"; + } else { + htmlName = binBasePath + fileName; + } + } + return htmlName; + } + + public static String getOverlayedPrefProjectValue(IResource resource, String pageId, String key) { + IProject project = resource.getProject(); + String value = null; + if (useProjectSettings(project, pageId)) { + value = getProperty(resource, pageId, key); + } + if (value != null) + return value; + return WikiEditorPlugin.getDefault().getPreferenceStore().getString(key); + } + + public static String getOverlayedPrefResourceValue(IResource resource, String pageId, String key) { + String value = null; + if (useProjectSettings(resource, pageId)) { + value = getProperty(resource, pageId, key); + } + if (value != null) + return value; + return WikiEditorPlugin.getDefault().getPreferenceStore().getString(key); + } + + private static String getProperty(IResource resource, String pageId, String key) { + try { + return resource.getPersistentProperty(new QualifiedName(pageId, key)); + } catch (CoreException e) { + } + return null; + } + + private static void setProperty(IResource resource, String pageId, String key, String value) { + try { + resource.setPersistentProperty(new QualifiedName(pageId, key), value); + } catch (CoreException e) { + } + } + + private static boolean useProjectSettings(IResource resource, String pageId) { + String use = getProperty(resource, pageId, FieldEditorOverlayPage.USEPROJECTSETTINGS); + return "true".equals(use); + } + + public static void setWikiTextsPath(IProject project) { + String value = project.getLocation().toString(); + IPreferenceStore store = WikiEditorPlugin.getDefault().getPreferenceStore(); + String globalBasePath = store.getString(WikiEditorPlugin.WIKI_TEXTS_BASE_PATH); + if (globalBasePath == null || globalBasePath.equals("")) { + store.setValue(WikiEditorPlugin.WIKI_TEXTS_BASE_PATH, value + "/wpsrc"); + } + String htmlFolder = store.getString(WikiEditorPlugin.HTML_OUTPUT_PATH); + if (htmlFolder == null || htmlFolder.equals("")) { + // set a global default + store.setValue(WikiEditorPlugin.HTML_OUTPUT_PATH, value + "/wpbin"); + } + setProperty(project, WikiProjectPreferences.PREF_ID, FieldEditorOverlayPage.USEPROJECTSETTINGS, "true"); + setProperty(project, WikiProjectPreferences.PREF_ID, WikiEditorPlugin.WIKI_TEXTS_BASE_PATH, value + "/wpsrc"); + setProperty(project, WikiProjectPreferences.PREF_ID, WikiEditorPlugin.HTML_OUTPUT_PATH, value + "/wpbin"); + + // IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + // IResource resource = root.findMember(project.getLocation()); + NullProgressMonitor _monitor = new NullProgressMonitor(); + // if (resource!=null && resource.exists() && (resource instanceof IContainer)) { + // IContainer container = (IContainer) resource; + final IFolder srcFolder = project.getFolder(new Path("wpsrc")); + if (!srcFolder.exists()) { + try { + srcFolder.create(true, false, _monitor); + } catch (CoreException e) { + } + } + final IFolder binFolder = project.getFolder(new Path("wpbin")); + if (!binFolder.exists()) { + try { + binFolder.create(true, false, _monitor); + } catch (CoreException e) { + } + } + // } + + } + + public static String getWikiTextsPath(IResource file) { + return Util.getPreferenceValue(file.getProject(), WikiEditorPlugin.WIKI_TEXTS_BASE_PATH); + } + + public static String getProjectsWikiTextsPath(IProject project) { + return Util.getPreferenceValue(project, WikiEditorPlugin.WIKI_TEXTS_BASE_PATH); + } + + public static String getWikiFileName(String wikiLink, IFile currentFile, String key) { + // String basePath = currentFile.getProject().getLocation().toString(); + String basePath = getWikiTextsPath(currentFile); + return basePath + "/" + FilterUtil.normalizeWikiLink(wikiLink) + ".wp"; + } + + public static String getFileWikiName(IFile currentFile, String key) { + String filePath = currentFile.getLocation().toString(); + // String basePath = currentFile.getProject().getLocation().toString(); + String basePath = getWikiTextsPath(currentFile); + StringBuffer result = new StringBuffer(); + int lastIndex = filePath.lastIndexOf(".wp"); + if (lastIndex < 0) { + lastIndex = filePath.length(); + } + char ch; + for (int i = basePath.length() + 1; i < lastIndex; i++) { + ch = filePath.charAt(i); + switch (ch) { + case '/': + result.append(':'); + break; + default: + result.append(ch); + } + } + return result.toString(); + } + + public static String getWikiTitle(IFile currentFile) { + String fileName = currentFile.getName(); + String fileExt = currentFile.getFileExtension().toLowerCase(); + if (fileExt.equals("wp")) { + return fileName.substring(0, fileName.length() - 3); + } + return null; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/WikiProjectPreferences.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/WikiProjectPreferences.java new file mode 100644 index 0000000..3ce415c --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/preferences/WikiProjectPreferences.java @@ -0,0 +1,57 @@ +package net.sourceforge.phpeclipse.wiki.preferences; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.jface.preference.DirectoryFieldEditor; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PathEditor; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +/** + * + * This page will be added to the project's property page dialog when the "Properties..." popup menu item is selected + */ +public class WikiProjectPreferences extends FieldEditorOverlayPage implements IWorkbenchPreferencePage { + + public final static String PREF_ID = "net.sourceforge.phpeclipse.wiki.preferences.WikiProjectPreferences"; + + public WikiProjectPreferences() { + super(GRID); + } + + /* + * (non-Javadoc) + * + * @see net.sourceforge.phpeclipse.wiki.preferences.FieldEditorOverlayPage#getPageId() + */ + protected String getPageId() { + return PREF_ID; + } + + protected void createFieldEditors() { + Composite composite = getFieldEditorParent(); + + addField(new DirectoryFieldEditor(WikiEditorPlugin.HTML_OUTPUT_PATH, Messages.getString("WikiProjectPreferences.StaticWikiFolder"), composite)); + addField(new DirectoryFieldEditor(WikiEditorPlugin.WIKI_TEXTS_BASE_PATH, Messages.getString("WikiProjectPreferences.WikiTextsFolder"), composite)); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.preference.PreferencePage#doGetPreferenceStore() + */ + protected IPreferenceStore doGetPreferenceStore() { + return WikiEditorPlugin.getDefault().getPreferenceStore(); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) + */ + public void init(IWorkbench workbench) { + setDescription("Default entries static wiki pages."); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/AbstractContentRenderer.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/AbstractContentRenderer.java new file mode 100644 index 0000000..4c86952 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/AbstractContentRenderer.java @@ -0,0 +1,430 @@ +package net.sourceforge.phpeclipse.wiki.renderer; + +import java.io.IOException; +import java.util.StringTokenizer; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditor; +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; + +public abstract class AbstractContentRenderer implements IContentRenderer { + protected IProject fProject; + + public static final String CLASS_MONO_SPACE = "monospace"; + + public static final String CLASS_QUOTE = "quote"; + + public static final String TABLE_DELIMETER = "|"; + + public static final String HR = "hr"; + + public static final String NEW_WIKIDOC_HREF = "?"; + + public static final String WIKI_HREF = "http://--wiki/"; + + public static final String[][] REPLACE_TEXT = new String[][] { { "<", "<" }, { "\"", """ } }; + + private WikiEditor editor; + + protected StringBuffer buffer; + + private int currentLine; + + private int currentListDepth; + + private boolean inTable; + + private void setEditor(WikiEditor editor) { + this.editor = editor; + } + + protected StringBuffer getBuffer() { + return buffer; + } + + protected WikiEditor getEditor() { + return editor; + } + + // public void render(String content, StringBuffer buf) { + // try { + // buffer = buf; + // appendHeader(); + // + // int index = 0; + // int startIndex = 0; + // String line; + // while (index < content.length()) { + // if (content.charAt(index++) == '\n') { + // line = content.substring(startIndex, index); + // startIndex = index; + // appendLine(line); + // + // } + // index++; + // } + // if (startIndex < content.length()) { + // line = content.substring(startIndex, content.length()); + // renderLine(line); + // } + // appendFooter(); + // // return buffer.toString(); + // } catch (Exception e) { + // WikiEditorPlugin.getDefault().log(buffer.toString()); + // WikiEditorPlugin.getDefault().log(e.getLocalizedMessage(), e); + // // return "

      " + e.getLocalizedMessage() + + // // "

      "; + // } + // } + + // protected void renderLine(String line) { + // if (isHeader(line)) { + // appendHeader(line); + // } else if (isList(line)) { + // appendListItem(line); + // } else if (tableLine(line)) { + // processTable(line); + // } else if (process(line)) { + // return; + // } else { + // buffer.append(line); + // } + // } + + // public final String render(WikiEditor editor) { + // initialise(editor); + // try { + // buffer = new StringBuffer(); + // appendHeader(); + // buffer.append("

      ").append(editor.getWikiNameBeingEdited()).append("

      "); + // appendContents(); + // appendFooter(); + // return buffer.toString(); + // } catch (Exception e) { + // WikiEditorPlugin.getDefault().log(buffer.toString()); + // WikiEditorPlugin.getDefault().log(e.getLocalizedMessage(), e); + // return "

      " + e.getLocalizedMessage() + "

      "; + // } + // } + + private void initialise(WikiEditor editor) { + setEditor(editor); + currentListDepth = 0; + inTable = false; + initialise(); + } + + protected abstract void initialise(); + + protected void appendHeader() throws IOException { + buffer.append(""); + // String basePath = Util.getMiscProjectsPreferenceValue(fProject, WikiConstants.HTML_OUTPUT_PATH); + // buffer.append(""); + + // if (WikiEditorPlugin.getDefault().getPluginPreferences().contains(WikiConstants.BROWSER_CSS_URL)) { + // buffer.append(""); + // } + // appendStyle(); + + buffer.append("\n"); + } + + private void appendContents() { + IDocument document = editor.getDocument(); + currentLine = 0; + while (currentLine < document.getNumberOfLines()) { + String line = getLine(document, currentLine); + // appendLine(line); + currentLine++; + } + } + + protected void appendNewLine() { + getBuffer().append(System.getProperty("line.separator")); + } + + // protected String getNextLine() { + // if (hasLine(currentLine + 1)) { + // currentLine++; + // return getLine(editor.getDocument(), currentLine); + // } + // throw new RuntimeException("Should not be called if there is no next line."); + // } + + // protected String peekNextLine() { + // if (hasLine(currentLine + 1)) { + // return getLine(editor.getDocument(), currentLine + 1); + // } + // return ""; + // } + + protected boolean hasNextLine() { + return hasLine(currentLine + 1); + } + + private boolean hasLine(int lineNumber) { + return lineNumber < editor.getDocument().getNumberOfLines(); + } + + protected void appendFooter() { + buffer.append("\n"); + } + + // protected void appendStyle() throws IOException { + // buffer.append(""); + // } + // + // protected void appendLine(String line) { + // if (isHeader(line)) { + // appendHeader(line); + // } else if (isList(line)) { + // appendListItem(line); + // } else if (tableLine(line)) { + // processTable(line); + // } else if (process(line)) { + // return; + // } else { + // buffer.append("

      "); + // append(processTags(line)); + // buffer.append("

      "); + // } + // } + + // private final void appendListItem(String line) { + // int bullet = getListDepth(line); + // if (bullet > currentListDepth) { + // repeatAppend("
        ", bullet - currentListDepth); + // currentListDepth = bullet; + // } else if (bullet < currentListDepth) { + // repeatAppend("
      ", currentListDepth - bullet); + // currentListDepth = bullet; + // } + // getBuffer().append("
    1. "); + // String content = ""; + // if (bullet < line.length() - 1) { + // content = getListtext(line); + // } + // append(processTags(content)); + // getBuffer().append("
    2. "); + // if (!isList(peekNextLine())) { + // repeatAppend("", currentListDepth); + // currentListDepth = 0; + // } + // } + + protected abstract String getListtext(String line); + + protected void repeatAppend(String item, int n) { + for (int i = 0; i < n; i++) { + getBuffer().append(item); + } + } + + protected abstract int getListDepth(String line); + + protected abstract String processTags(String line); + + private String getLine(IDocument document, int n) { + try { + String line = document.get(document.getLineOffset(n), document.getLineLength(n)); + if (document.getLineDelimiter(n) != null) { + line = line.substring(0, line.length() - document.getLineDelimiter(n).length()); + } + for (int i = 0; i < REPLACE_TEXT.length; i++) { + line = line.replaceAll(REPLACE_TEXT[i][0], REPLACE_TEXT[i][1]); + } + return line; + } catch (BadLocationException e) { + WikiEditorPlugin.getDefault().logAndReport("Error", e.getLocalizedMessage(), e); + return e.getLocalizedMessage(); + } + } + + // protected void append(String line) { + // TextRegion[] regions = TextRegionBuilder.getTextRegions(line, editor); + // for (int i = 0; i < regions.length; i++) { + // regions[i].accept(new TextRegionVisitor() { + // public Object visit(UndefinedTextRegion undefinedTextRegion) { + // buffer.append(undefinedTextRegion.getText()); + // return null; + // } + // + // public Object visit(UrlTextRegion urlTextRegion) { + // appendLink(urlTextRegion.getText(), urlTextRegion.getText()); + // return null; + // } + // + // public Object visit(WikiNameTextRegion wikiNameTextRegion) { + // if (editor.hasWikiSibling(wikiNameTextRegion)) { + // appendLink(AbstractContentRenderer.WIKI_HREF + wikiNameTextRegion.getText(), wikiNameTextRegion.getText()); + // } else { + // buffer.append(wikiNameTextRegion.getText()); + // appendLink(AbstractContentRenderer.WIKI_HREF + wikiNameTextRegion.getText(), AbstractContentRenderer.NEW_WIKIDOC_HREF); + // } + // return null; + // } + // + // public Object visit(WikiUrlTextRegion wikiUrlTextRegion) { + // String link; + // if (wikiUrlTextRegion.getLink().startsWith(WikiConstants.ECLIPSE_PREFIX)) { + // link = AbstractContentRenderer.WIKI_HREF + wikiUrlTextRegion.getLink(); + // } else { + // link = wikiUrlTextRegion.getLink(); + // } + // appendLink(link, wikiUrlTextRegion.getText()); + // return null; + // } + // + // public Object visit(BasicTextRegion basicTextRegion) { + // buffer.append(basicTextRegion.getText()); + // return null; + // } + // + // public Object visit(EclipseResourceTextRegion eclipseResourceTextRegion) { + // appendLink(AbstractContentRenderer.WIKI_HREF + eclipseResourceTextRegion.getText(), eclipseResourceTextRegion.getText()); + // return null; + // } + // + // public Object visit(JavaTypeTextRegion region) { + // try { + // if (region.getType().getUnderlyingResource() != null) { + // String url = AbstractContentRenderer.WIKI_HREF + WikiConstants.ECLIPSE_PREFIX + // + region.getType().getUnderlyingResource().getFullPath().toString(); + // appendLink(url, region.getText()); + // } else { + // append(region.getText()); + // } + // } catch (JavaModelException e) { + // WikiPlugin.getDefault().logAndReport("Error", e.getLocalizedMessage(), e); + // } + // return null; + // } + // + // }); + // } + // } + + protected void appendLink(String url, String text) { + buffer.append("").append(text).append(""); + } + + protected abstract boolean isHeader(String line); + + protected abstract void appendHeader(String line); + + protected abstract boolean isList(String line); + + /** + * Gives implementors a chance to do processing on this line. + * + * @return if true, the line will not be processed further + */ + protected abstract boolean process(String line); + + /** + * Replace all occurrences of markeup which occurs in pairs with an opening and closing tag in the given line. e.g. + * + *
      +   * 
      +   *  
      +   *   
      +   *    
      +   *     
      +   *          replacePair("my ''bold'' word", "''", "<b>", ",</b>") returns "my <b>bold</b> word"
      +   *      
      +   *     
      +   *    
      +   *   
      +   *  
      +   * 
      + */ + protected String replacePair(String line, String search, String openingTag, String closingTag) { + StringBuffer buffer = new StringBuffer(); + String[] foo = line.split(search); + for (int i = 0; i < foo.length; i++) { + if (i % 2 == 1) { + buffer.append(openingTag).append(foo[i]).append(closingTag); + } else { + buffer.append(foo[i]); + } + } + return buffer.toString(); + } + + protected void appendHR() { + getBuffer().append("
      "); + } + + private boolean tableLine(String line) { + return line.startsWith(AbstractContentRenderer.TABLE_DELIMETER); + } + + // private void processTable(String line) { + // if (!inTable) { + // inTable = true; + // getBuffer().append(getTableTag()); + // } + // getBuffer().append(""); + // StringTokenizer tokenizer = new StringTokenizer(line, AbstractContentRenderer.TABLE_DELIMETER); + // while (tokenizer.hasMoreTokens()) { + // String cell = tokenizer.nextToken(); + // String element = "td"; + // if (cell.trim().startsWith("*")) { + // element = "th"; + // cell = cell.replaceAll("\\*", ""); + // } + // getBuffer().append("<").append(element).append(">"); + // append(processTags(cell)); + // getBuffer().append(""); + // } + // getBuffer().append(""); + // if (!tableLine(peekNextLine())) { + // getBuffer().append(""); + // inTable = false; + // } + // } + + /** + * @return the tag for table (can be overridden to add style) + */ + protected String getTableTag() { + return ""; + } + + public void forEachHeader(IDocument document, StructureClosure closure) throws BadLocationException { + for (int i = 0; i < document.getNumberOfLines(); i++) { + String line = getLine(document, i); + if (isHeader(line)) { + String header = getHeaderText(line); + closure.acceptHeader(header, document.getLineOffset(i)); + } + } + } + + /** + * Get the header from a line with header markup + * + * @param line + * guaranteed to be a valid header as defined by b {@link #isHeader(String) isHeader(String)} + */ + protected abstract String getHeaderText(String line); + + /** + * @param project + * The fProject to set. + */ + public void setProject(IProject project) { + fProject = project; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/IContentRenderer.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/IContentRenderer.java new file mode 100644 index 0000000..2ed554f --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/IContentRenderer.java @@ -0,0 +1,16 @@ +package net.sourceforge.phpeclipse.wiki.renderer; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditor; + +import org.eclipse.core.resources.IProject; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; + + +public interface IContentRenderer { + void forEachHeader(IDocument document, StructureClosure closure) throws BadLocationException; + + // new interface methods + public void render(String content, StringBuffer buf, int level, boolean completeHTMLPage); + public void setProject(IProject project); +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/RendererFactory.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/RendererFactory.java new file mode 100644 index 0000000..337c150 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/RendererFactory.java @@ -0,0 +1,26 @@ +package net.sourceforge.phpeclipse.wiki.renderer; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.core.resources.IProject; + + + +public final class RendererFactory { + + private RendererFactory() { + super(); + } + + public static IContentRenderer createContentRenderer(IProject project) throws InstantiationException, IllegalAccessException, ClassNotFoundException { + IContentRenderer renderer =(AbstractContentRenderer) Class.forName(getContentRendererName()).newInstance(); + renderer.setProject(project); + return renderer; + } + + public static String getContentRendererName() { + return WikipediaContentRenderer.class.getName(); +// return WikiEditorPlugin.getDefault().getPreferenceStore().getString(WikiConstants.BROWSER_RENDERER); + } + +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/StructureClosure.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/StructureClosure.java new file mode 100644 index 0000000..3bc5059 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/StructureClosure.java @@ -0,0 +1,10 @@ +package net.sourceforge.phpeclipse.wiki.renderer; + + +public interface StructureClosure { + /** + * @param header the text of the header without markup + * @param offset the offset in the document where the header is located + */ + void acceptHeader(String header, int offset); +} diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/WikipediaContentRenderer.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/WikipediaContentRenderer.java new file mode 100644 index 0000000..c2d6e2c --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/WikipediaContentRenderer.java @@ -0,0 +1,158 @@ +/* + * Thanks to Bent Andre Solheim for the improved header rendering. + */ +package net.sourceforge.phpeclipse.wiki.renderer; + +import java.io.IOException; +import java.io.StringWriter; + +import net.sourceforge.phpeclipse.wiki.builder.BuilderRenderEngine; +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.core.resources.IProject; +import org.radeox.api.engine.RenderEngine; +import org.radeox.api.engine.context.InitialRenderContext; +import org.radeox.engine.context.BaseInitialRenderContext; +import org.radeox.macro.MacroRepository; + +public final class WikipediaContentRenderer extends AbstractContentRenderer { + public static final String BULLET_MARKUP = "*"; + + public static final String ALT_BULLET_MARKUP = "-"; + + protected InitialRenderContext context; + + protected BuilderRenderEngine engine; + + protected void initialise() { + + } + + protected void appendHeader(String line) { + String header = getHeaderText(line); + String headerStartTag = "

      "; + getBuffer().append(headerStartTag); + getBuffer().append(header); + getBuffer().append("

      "); + } + + private int getHeaderSize(String line) { + int size = 0; + int index = 0; + while (index < line.length() && line.charAt(index) != ' ') { + if (line.charAt(index) == '1') { + size++; + } + index++; + } + return size; + } + + private String getHeaderCss(int size) { + int max = Math.min(3, size); + StringBuffer css = new StringBuffer(); + css.append("class=\"").append("heading"); + for (int i = 0; i < max; i++) { + css.append("-1"); + } + css.append("\""); + return css.toString(); + } + + protected String getHeaderText(String line) { + return line.substring(line.indexOf(' ')).trim(); + } + + protected int getListDepth(String line) { + char bullet = getBullet(line); + for (int i = 0; i < line.length(); i++) { + if (line.charAt(i) != bullet) { + return i; + } + } + return line.length(); + } + + private char getBullet(String line) { + char bullet = line.startsWith(WikipediaContentRenderer.BULLET_MARKUP) ? WikipediaContentRenderer.BULLET_MARKUP.charAt(0) + : WikipediaContentRenderer.ALT_BULLET_MARKUP.charAt(0); + return bullet; + } + + protected boolean isHeader(String line) { + return line.startsWith("1") && line.indexOf(' ') > 0; + } + + protected boolean isList(String line) { + return !line.trim().equals("----") + && (line.startsWith(WikipediaContentRenderer.BULLET_MARKUP) || line.startsWith(WikipediaContentRenderer.ALT_BULLET_MARKUP)); + } + + protected boolean process(String line) { + if (line.trim().matches("^----*$")) { + appendHR(); + return true; + } + return false; + } + + protected String processTags(String line) { + line = line.replaceAll("\\\\", "
      "); + line = extractMacroMarkup(line); + line = replacePair(line, "__", "", ""); + line = replacePair(line, "~~", "", ""); + line = replacePair(line, "--", "", ""); + return line; + } + + private String extractMacroMarkup(String line) { + return line.replaceAll("\\{.*?\\}", ""); + } + + protected String getListtext(String line) { + return line.substring(getListDepth(line)).trim(); + } + + protected String getTableTag() { + return "
      "; + } + + public final void render(String content, StringBuffer buf, int level, boolean completeHTMLPage) { + try { + buffer = buf; + if (completeHTMLPage) { + appendHeader(); + } + StringWriter writer = new StringWriter(); + try { + engine.setLevel(level); + engine.render(writer, content, context); + buffer.append(writer); + } catch (IOException e) { + // never reach + } + if (completeHTMLPage) { + appendFooter(); + } + // return buffer.toString(); + } catch (Exception e) { + WikiEditorPlugin.getDefault().log(buffer.toString()); + WikiEditorPlugin.getDefault().log(e.getLocalizedMessage(), e); + // return "

      " + e.getLocalizedMessage() + "

      "; + } + } + + /* + * (non-Javadoc) + * + * @see net.sourceforge.phpeclipse.wiki.renderer.IContentRenderer#setProject(org.eclipse.core.resources.IProject) + */ + public void setProject(IProject project) { + super.setProject(project); + context = new BaseInitialRenderContext(); + engine = new BuilderRenderEngine(project, context); + context.setRenderEngine(engine); + MacroRepository repository = MacroRepository.getInstance(); + repository.setInitialContext(context); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationComposite.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationComposite.java new file mode 100644 index 0000000..cffe190 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationComposite.java @@ -0,0 +1,260 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.ui.internal; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.internal.IConfiguration; +import net.sourceforge.phpeclipse.wiki.internal.IConfigurationWorkingCopy; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TableLayout; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.window.Window; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +/** + * + */ +public class ConfigurationComposite extends Composite { + protected Table table; + protected TableViewer tableViewer; + + protected Button edit; + protected Button remove; + protected Button start; + protected Button stop; + + protected List selection2; + + public ConfigurationComposite(Composite parent, int style) { + super(parent, style); + + createWidgets(); + } + + protected void createWidgets() { + GridLayout layout = new GridLayout(); + layout.horizontalSpacing = 6; + layout.verticalSpacing = 6; + layout.marginWidth = 0; + layout.marginHeight = 0; + layout.numColumns = 2; + setLayout(layout); + + GridData data = new GridData(GridData.FILL_BOTH); + setLayoutData(data); + + Label label = new Label(this, SWT.WRAP); + label.setText(WikiEditorPlugin.getResource("%configurationsList")); + label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER)); + + label = new Label(this, SWT.NONE); + + table = new Table(this, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.FULL_SELECTION); + data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL); + data.widthHint = 300; +// WorkbenchHelp.setHelp(table, ContextIds.PREF_MONITORS); + + table.setLayoutData(data); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + TableLayout tableLayout = new TableLayout(); + + TableColumn statusColumn = new TableColumn(table, SWT.NONE); + statusColumn.setText(WikiEditorPlugin.getResource("%columnStatus")); + ColumnWeightData colData = new ColumnWeightData(6, 30, true); + tableLayout.addColumnData(colData); + + TableColumn typeColumn = new TableColumn(table, SWT.NONE); + typeColumn.setText(WikiEditorPlugin.getResource("%columnType")); + colData = new ColumnWeightData(5, 30, true); + tableLayout.addColumnData(colData); + + TableColumn urlColumn = new TableColumn(table, SWT.NONE); + urlColumn.setText(WikiEditorPlugin.getResource("%columnURL")); + colData = new ColumnWeightData(12, 150, true); + tableLayout.addColumnData(colData); + + TableColumn localColumn = new TableColumn(table, SWT.NONE); + localColumn.setText(WikiEditorPlugin.getResource("%columnUser")); + colData = new ColumnWeightData(5, 50, true); + tableLayout.addColumnData(colData); + + table.setLayout(tableLayout); + + tableViewer = new TableViewer(table); + tableViewer.setContentProvider(new ConfigurationContentProvider()); + tableViewer.setLabelProvider(new ConfigurationTableLabelProvider()); + tableViewer.setInput("root"); + + tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + setSelection(event.getSelection()); + } + }); + + Composite buttonComp = new Composite(this, SWT.NONE); + layout = new GridLayout(); + layout.horizontalSpacing = 0; + layout.verticalSpacing = 8; + layout.marginWidth = 0; + layout.marginHeight = 0; + layout.numColumns = 1; + buttonComp.setLayout(layout); + data = new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_FILL); + buttonComp.setLayoutData(data); + + Button add = SWTUtil.createButton(buttonComp, WikiEditorPlugin.getResource("%add")); + add.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + ConfigurationDialog dialog = new ConfigurationDialog(getShell()); + if (dialog.open() == Window.CANCEL) + return; + tableViewer.refresh(); + + List list = WikiEditorPlugin.getConfigurations(); + Object configuration = list.get(list.size() - 1); + tableViewer.setSelection(new StructuredSelection(configuration)); + } + }); + + edit = SWTUtil.createButton(buttonComp, WikiEditorPlugin.getResource("%edit")); + edit.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + IConfiguration monitor = (IConfiguration) getSelection().get(0); + IConfigurationWorkingCopy wc = monitor.getWorkingCopy(); + + ConfigurationDialog dialog = new ConfigurationDialog(getShell(), wc); + if (dialog.open() != Window.CANCEL) { + try { + tableViewer.refresh(wc.save()); + } catch (Exception ex) { } + } + } + }); + edit.setEnabled(false); + + remove = SWTUtil.createButton(buttonComp, WikiEditorPlugin.getResource("%remove")); + remove.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + Iterator iterator = getSelection().iterator(); + while (iterator.hasNext()) { + IConfiguration monitor = (IConfiguration) iterator.next(); + try { + monitor.delete(); + } catch (Exception ex) { } + tableViewer.remove(monitor); + + List list = WikiEditorPlugin.getConfigurations(); + Object monitor2 = list.get(list.size() - 1); + tableViewer.setSelection(new StructuredSelection(monitor2)); + } + } + }); + remove.setEnabled(false); + + start = SWTUtil.createButton(buttonComp, WikiEditorPlugin.getResource("%start")); + start.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + Iterator iterator = getSelection().iterator(); + while (iterator.hasNext()) { + IConfiguration configuration = (IConfiguration) iterator.next(); +// try { +// WikiEditorPlugin.startMonitor(monitor); +// } catch (CoreException ce) { +// MessageDialog.openError(getShell(), WikiEditorPlugin.getResource("%errorDialogTitle"), ce.getStatus().getMessage()); +// } catch (Exception ce) { +// MessageDialog.openError(getShell(), WikiEditorPlugin.getResource("%errorDialogTitle"), ce.getMessage()); +// } + tableViewer.refresh(configuration, true); + } + tableViewer.setSelection(tableViewer.getSelection()); + } + }); + start.setEnabled(false); + + stop = SWTUtil.createButton(buttonComp, WikiEditorPlugin.getResource("%stop")); + stop.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + Iterator iterator = getSelection().iterator(); + while (iterator.hasNext()) { + IConfiguration monitor = (IConfiguration) iterator.next(); + try { +// WikiEditorPlugin.stopMonitor(monitor); + } catch (Exception ex) { } + tableViewer.refresh(monitor, true); + } + tableViewer.setSelection(tableViewer.getSelection()); + } + }); + stop.setEnabled(false); + } + + protected List getSelection() { + return selection2; + } + + protected void setSelection(ISelection sel2) { + IStructuredSelection sel = (IStructuredSelection) sel2; + Iterator iterator = sel.iterator(); + selection2 = new ArrayList(); + + while (iterator.hasNext()) { + Object obj = iterator.next(); + if (obj instanceof IConfiguration) + selection2.add(obj); + } + + if (!selection2.isEmpty()) { + remove.setEnabled(true); + + boolean allStopped = true; + boolean allStarted = true; + + iterator = selection2.iterator(); + while (iterator.hasNext()) { + IConfiguration monitor = (IConfiguration) iterator.next(); + if (monitor.isActive()) + allStopped = false; + else + allStarted = false; + } + start.setEnabled(allStopped); + stop.setEnabled(allStarted); + edit.setEnabled(selection2.size() == 1 && allStopped); + } else { + edit.setEnabled(false); + remove.setEnabled(false); + start.setEnabled(false); + stop.setEnabled(false); + } + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationContentProvider.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationContentProvider.java new file mode 100644 index 0000000..dae90f1 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationContentProvider.java @@ -0,0 +1,75 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.ui.internal; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.internal.IConfiguration; + +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.Viewer; +/** + * Configuration content provider. + */ +public class ConfigurationContentProvider implements IStructuredContentProvider { + /** + * ConfigurationContentProvider constructor comment. + */ + public ConfigurationContentProvider() { + super(); + } + + /** + * Disposes of this content provider. + * This is called by the viewer when it is disposed. + */ + public void dispose() { } + + /** + * Returns the elements to display in the viewer + * when its input is set to the given element. + * These elements can be presented as rows in a table, items in a list, etc. + * The result is not modified by the viewer. + * + * @param inputElement the input element + * @return the array of elements to display in the viewer + */ + public Object[] getElements(Object inputElement) { + List list = new ArrayList(); + Iterator iterator = WikiEditorPlugin.getConfigurations().iterator(); + while (iterator.hasNext()) { + IConfiguration monitor = (IConfiguration) iterator.next(); + list.add(monitor); + } + return list.toArray(); + } + + /** + * Notifies this content provider that the given viewer's input + * has been switched to a different element. + *

      + * A typical use for this method is registering the content provider as a listener + * to changes on the new input (using model-specific means), and deregistering the viewer + * from the old input. In response to these change notifications, the content provider + * propagates the changes to the viewer. + *

      + * + * @param viewer the viewer + * @param oldInput the old input element, or null if the viewer + * did not previously have an input + * @param newInput the new input element, or null if the viewer + * does not have an input + */ + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {} +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationDialog.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationDialog.java new file mode 100644 index 0000000..04ef13e --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationDialog.java @@ -0,0 +1,258 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.ui.internal; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.internal.IConfigurationWorkingCopy; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; +/** + * + */ +public class ConfigurationDialog extends Dialog { + protected IConfigurationWorkingCopy fConfiguration; + protected boolean isEdit; + + private Button okButton; + private Text fUserName; + private Text fUrl; + private Text fPassword; + + interface StringModifyListener { + public void valueChanged(String s); + } + + interface BooleanModifyListener { + public void valueChanged(boolean b); + } + + interface TypeModifyListener { + public void valueChanged(String fType); + } + + /** + * @param parentShell + */ + public ConfigurationDialog(Shell parentShell, IConfigurationWorkingCopy configuration) { + super(parentShell); + this.fConfiguration = configuration; + isEdit = true; + } + + public ConfigurationDialog(Shell parentShell) { + super(parentShell); + fConfiguration = WikiEditorPlugin.createConfiguration(); + isEdit = false; + } + + protected void configureShell(Shell shell) { + super.configureShell(shell); + if (isEdit) + shell.setText(WikiEditorPlugin.getResource("%editConfig")); + else + shell.setText(WikiEditorPlugin.getResource("%newConfig")); + } + + protected Label createLabel(Composite comp, String txt) { + Label label = new Label(comp, SWT.NONE); + label.setText(txt); + label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING)); + return label; + } + + protected Text createText(Composite comp, String txt, final StringModifyListener listener) { + final Text text = new Text(comp, SWT.BORDER); + if (txt != null) + text.setText(txt); + GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + data.widthHint = 150; + text.setLayoutData(data); + if (listener != null) + text.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + listener.valueChanged(text.getText()); + } + }); + return text; + } + + protected Combo createTypeCombo(Composite comp, final String[] types, String sel, final TypeModifyListener listener) { + final Combo combo = new Combo(comp, SWT.DROP_DOWN | SWT.READ_ONLY); + int size = types.length; + String[] items = new String[size]; + int index = -1; + for (int i = 0; i < size; i++) { + items[i] = types[i]; + if (types[i].equals(sel)) + index = i; + } + combo.setItems(items); + if (index >= 0) + combo.select(index); + GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING); + data.widthHint = 150; + combo.setLayoutData(data); + if (listener != null) + combo.addSelectionListener(new SelectionListener() { + public void widgetSelected(SelectionEvent e) { + listener.valueChanged(types[combo.getSelectionIndex()]); + } + public void widgetDefaultSelected(SelectionEvent e) { + widgetSelected(e); + } + }); + return combo; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) + */ + protected Control createDialogArea(Composite parent) { + Composite composite = (Composite) super.createDialogArea(parent); + ((GridLayout)composite.getLayout()).numColumns = 2; + +// WorkbenchHelp.setHelp(composite, ContextIds.PREF_DIALOG); + + Group group = new Group(composite, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + group.setLayout(layout); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 2; + group.setLayoutData(data); + group.setText(WikiEditorPlugin.getResource("%remoteGroup")); + + createLabel(group, WikiEditorPlugin.getResource("%url")); + fUrl = createText(group, fConfiguration.getURL(), new StringModifyListener() { + public void valueChanged(String s) { + fConfiguration.setURL(s); + validateFields(); + } + }); + + createLabel(composite, WikiEditorPlugin.getResource("%user")); + fUserName = createText(composite, fConfiguration.getUser() + "", new StringModifyListener() { + public void valueChanged(String s) { + fConfiguration.setUser(s); + validateFields(); + } + }); + + createLabel(group, WikiEditorPlugin.getResource("%password")); + fPassword = createText(group, fConfiguration.getPassword() + "", new StringModifyListener() { + public void valueChanged(String s) { + fConfiguration.setPassword(s); + validateFields(); + } + }); + + createLabel(group, WikiEditorPlugin.getResource("%parseType")); + createTypeCombo(group, WikiEditorPlugin.getTypes(), fConfiguration.getType(), new TypeModifyListener() { + public void valueChanged(String fType) { + fConfiguration.setType(fType); + } + }); + + return composite; + } + + /* (non-Javadoc) + * @see org.eclipse.jface.dialogs.Dialog#okPressed() + */ + protected void okPressed() { + fConfiguration.save(); + super.okPressed(); + } + + protected Control createButtonBar(Composite parent) { + Control buttonControl = super.createButtonBar(parent); + validateFields(); + return buttonControl; + } + + private void setOKButtonEnabled(boolean curIsEnabled) { + if (okButton == null) + okButton = getButton(IDialogConstants.OK_ID); + + if (okButton != null) + okButton.setEnabled(curIsEnabled); + } + + protected void validateFields() { + boolean result = true; + + String currHostname = fUrl.getText(); +// if (!isValidHostname(currHostname)) +// result = false; + + String currHostnamePort = fPassword.getText(); +// try { +// Integer.parseInt(currHostnamePort); +// } catch (Exception any) { +// result = false; +// } + + String currMonitorPort = fUserName.getText(); +// try { +// Integer.parseInt(currMonitorPort); +// } catch (Exception any) { +// result = false; +// } + +// if (result && isLocalhost(currHostname)) { +// if (currHostnamePort.equals(currMonitorPort)) +// result = false; +// } + setOKButtonEnabled(result); + } + +// protected static boolean isValidHostname(String host) { +// if (host == null || host.trim().length() < 1) +// return false; +// if (host.indexOf("/") >= 0) +// return false; +// if (host.indexOf("\\") >= 0) +// return false; +// if (host.indexOf(" ") >= 0) +// return false; +// return true; +// } + +// protected static boolean isLocalhost(String host) { +// if (host == null) +// return false; +// try { +// if ("localhost".equals(host) || "127.0.0.1".equals(host)) +// return true; +// InetAddress localHostaddr = InetAddress.getLocalHost(); +// if (localHostaddr.getHostName().equals(host)) +// return true; +// } catch (Exception e) { +// Trace.trace(Trace.WARNING, "Error checking for localhost", e); +// } +// return false; +// } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationPreferencePage.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationPreferencePage.java new file mode 100644 index 0000000..ceb1d9a --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationPreferencePage.java @@ -0,0 +1,107 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.ui.internal; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.preference.PreferencePage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +/** + * The preference page that holds monitor properties. + */ +public class ConfigurationPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { + + /** + * ConfigurationPreferencePage constructor comment. + */ + public ConfigurationPreferencePage() { + super(); + noDefaultAndApplyButton(); + } + + /** + * Create the preference options. + * + * @param parent org.eclipse.swt.widgets.Composite + * @return org.eclipse.swt.widgets.Control + */ + protected Control createContents(Composite parent) { + initializeDialogUnits(parent); + + Composite composite = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.horizontalSpacing = convertHorizontalDLUsToPixels(4); + layout.verticalSpacing = convertVerticalDLUsToPixels(4); + layout.marginWidth = 0; + layout.marginHeight = 0; + composite.setLayout(layout); + GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL); + composite.setLayoutData(data); +// WorkbenchHelp.setHelp(composite, ContextIds.PREF); + + Label label = new Label(composite, SWT.WRAP); + label.setText(WikiEditorPlugin.getResource("%preferenceDescription")); + data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + label.setLayoutData(data); + + label = new Label(composite, SWT.NONE); + label.setText(""); + + ConfigurationComposite monitorComp = new ConfigurationComposite(composite, SWT.NONE); + data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL); + monitorComp.setLayoutData(data); + + Dialog.applyDialogFont(composite); + + return composite; + } + + /** + * Initializes this preference page using the passed desktop. + * + * @param desktop the current desktop + */ + public void init(IWorkbench workbench) { + } + + /** + * Performs special processing when this page's Defaults button has been pressed. + *

      + * This is a framework hook method for sublcasses to do special things when + * the Defaults button has been pressed. + * Subclasses may override, but should call super.performDefaults. + *

      + */ + protected void performDefaults() { +// displayButton.setSelection(WikiEditorPlugin.getDefaultShowOnActivityPreference()); + super.performDefaults(); + } + + /** + * Method declared on IPreferencePage. + * Subclasses should override + */ + public boolean performOk() { +// WikiEditorPlugin.setShowOnActivityPreference(displayButton.getSelection()); + WikiEditorPlugin.getDefault().savePluginPreferences(); + return true; + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationPrefrencesDialog.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationPrefrencesDialog.java new file mode 100644 index 0000000..46e8510 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationPrefrencesDialog.java @@ -0,0 +1,90 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html +  * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.ui.internal; + +import net.sourceforge.phpeclipse.webbrowser.internal.ContextIds; +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.internal.IConfigurationWorkingCopy; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.help.WorkbenchHelp; + +/** + * + */ +public class ConfigurationPrefrencesDialog extends Dialog { + protected IConfigurationWorkingCopy monitor; + + protected boolean isEdit; + + /** + * @param parentShell + */ + public ConfigurationPrefrencesDialog(Shell parentShell, IConfigurationWorkingCopy monitor) { + super(parentShell); + this.monitor = monitor; + isEdit = true; + } + + public ConfigurationPrefrencesDialog(Shell composite) { + super(composite); + isEdit = false; + } + + protected void configureShell(Shell shell) { + super.configureShell(shell); + shell.setText(WikiEditorPlugin.getResource("%preferenceTitle")); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) + */ + protected Control createDialogArea(Composite parent) { + Composite compositeParent = (Composite) super.createDialogArea(parent); + + Composite composite = new Composite(compositeParent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.marginHeight = convertHorizontalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); + layout.marginWidth = convertVerticalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); + layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); + composite.setLayout(layout); + GridData data = new GridData(GridData.FILL_BOTH); + composite.setLayoutData(data); + // WorkbenchHelp.setHelp(composite, ContextIds.PREF); + + ConfigurationComposite monitorComp = new ConfigurationComposite(composite, SWT.NONE); + data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL); + monitorComp.setLayoutData(data); + + Dialog.applyDialogFont(composite); + + return composite; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.Dialog#okPressed() + */ + protected void okPressed() { + WikiEditorPlugin.getDefault().savePluginPreferences(); + super.okPressed(); + } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationTableLabelProvider.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationTableLabelProvider.java new file mode 100644 index 0000000..84154c0 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationTableLabelProvider.java @@ -0,0 +1,127 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.ui.internal; + +import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.internal.IConfiguration; + +import org.eclipse.jface.viewers.ILabelProviderListener; +import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.swt.graphics.Image; +/** + * Configuration table label provider. + */ +public class ConfigurationTableLabelProvider implements ITableLabelProvider { + /** + * ConfigurationTableLabelProvider constructor comment. + */ + public ConfigurationTableLabelProvider() { + super(); + } + + /** + * Adds a listener to this label provider. + * Has no effect if an identical listener is already registered. + *

      + * Label provider listeners are informed about state changes + * that affect the rendering of the viewer that uses this label provider. + *

      + * + * @param listener a label provider listener + */ + public void addListener(ILabelProviderListener listener) { } + + /** + * Disposes of this label provider. When a label provider is + * attached to a viewer, the viewer will automatically call + * this method when the viewer is being closed. When label providers + * are used outside of the context of a viewer, it is the client's + * responsibility to ensure that this method is called when the + * provider is no longer needed. + */ + public void dispose() { } + + /** + * Returns the label image for the given column of the given element. + * + * @param element the object representing the entire row, or + * null indicating that no input object is set + * in the viewer + * @param columnIndex the zero-based index of the column in which + * the label appears + */ + public Image getColumnImage(Object element, int columnIndex) { + if (columnIndex == 0) { + IConfiguration monitor = (IConfiguration) element; + if (monitor.isActive()) + return WikiEditorPlugin.getDefault().getImage(WikiEditorPlugin.IMG_MONITOR_ON); + else + return WikiEditorPlugin.getDefault().getImage(WikiEditorPlugin.IMG_MONITOR_OFF); + } + return null; + } + + /** + * Returns the label text for the given column of the given element. + * + * @param element the object representing the entire row, or + * null indicating that no input object is set + * in the viewer + * @param columnIndex the zero-based index of the column in which the label appears + */ + public String getColumnText(Object element, int columnIndex) { + IConfiguration monitor = (IConfiguration) element; + if (columnIndex == 0) { + if (monitor.isActive()) + return WikiEditorPlugin.getResource("%started"); + else + return WikiEditorPlugin.getResource("%stopped"); + } else if (columnIndex == 1) + return monitor.getURL() + ":" + monitor.getPassword(); + else if (columnIndex == 2) + return monitor.getType(); + else if (columnIndex == 3) + return monitor.getUser(); + else + return "X"; + } + + protected String notNull(String s) { + if (s != null) + return s; + else + return ""; + } + + /** + * Returns whether the label would be affected + * by a change to the given property of the given element. + * This can be used to optimize a non-structural viewer update. + * If the property mentioned in the update does not affect the label, + * then the viewer need not update the label. + * + * @param element the element + * @param property the property + * @return true if the label would be affected, + * and false if it would be unaffected + */ + public boolean isLabelProperty(Object element, String property) { + return false; + } + + /** + * Removes a listener to this label provider. + * Has no affect if an identical listener is not registered. + * + * @param listener a label provider listener + */ + public void removeListener(ILabelProviderListener listener) { } +} \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/SWTUtil.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/SWTUtil.java new file mode 100644 index 0000000..987c492 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/SWTUtil.java @@ -0,0 +1,77 @@ +/********************************************************************** + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved.   This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpeclipse.wiki.ui.internal; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.FontMetrics; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +/** + * SWT Utility class. + */ +public class SWTUtil { + private static FontMetrics fontMetrics; + + protected static void initializeDialogUnits(Control testControl) { + // Compute and store a font metric + GC gc = new GC(testControl); + gc.setFont(JFaceResources.getDialogFont()); + fontMetrics = gc.getFontMetrics(); + gc.dispose(); + } + + /** + * Returns a width hint for a button control. + */ + protected static int getButtonWidthHint(Button button) { + int widthHint = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_WIDTH); + return Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x); + } + + public static Button createButton(Composite comp, String label) { + Button b = new Button(comp, SWT.PUSH); + b.setText(label); + if (fontMetrics == null) + initializeDialogUnits(comp); + GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING); + data.widthHint = getButtonWidthHint(b); + data.heightHint = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_HEIGHT); + b.setLayoutData(data); + return b; + } + + public static Button createCheckbox(Composite comp, String txt, boolean isSelected){ + Button button = new Button(comp, SWT.CHECK); + button.setText(txt); + GridLayout layout = new GridLayout(); + comp.setLayout(layout); + GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING); + data.horizontalIndent = 10; + button.setLayoutData(data); + button.setSelection(isSelected); + return button; + } + + public static Label createLabel(Composite comp, String txt) { + Label label = new Label(comp, SWT.NONE); + label.setText(txt); + label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING)); + return label; + } +} -- 1.7.1