This commit was manufactured by cvs2svn to create branch 'xtf20020514'.
Sprout from master 2002-05-13 21:38:59 UTC Christopher Elek <celek> '*** empty log message ***'
Cherrypick from master 2002-05-02 15:33:55 UTC vlad <vlad> '*** empty log message ***':
update/org.eclipse.update.core/doc/deltaHandler.html
update/org.eclipse.update.core/doc/installHandlers.html
Delete:
ant/org.eclipse.ant.core/.classpath
ant/org.eclipse.ant.core/.cvsignore
ant/org.eclipse.ant.core/.project
ant/org.eclipse.ant.core/about.html
ant/org.eclipse.ant.core/build.properties
ant/org.eclipse.ant.core/buildnotes_platform-ant.html
ant/org.eclipse.ant.core/doc/hglegal.htm
ant/org.eclipse.ant.core/doc/ngibmcpy.gif
ant/org.eclipse.ant.core/doc/org_eclipse_ant_core.html
ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antObjects.html
ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antTasks.html
ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antTypes.html
ant/org.eclipse.ant.core/plugin.properties
ant/org.eclipse.ant.core/plugin.xml
ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java
ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntRunner.java
ant/org.eclipse.ant.core/src/org/eclipse/ant/core/package.html
ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClassLoader.java
ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntCorePreferences.java
ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/IAntCoreConstants.java
ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Policy.java
ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Task.java
ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Type.java
ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/messages.properties
ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntRunner.java
ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/Policy.java
ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/messages.properties
ant/org.eclipse.ant.ui/.classpath
ant/org.eclipse.ant.ui/.cvsignore
ant/org.eclipse.ant.ui/.project
ant/org.eclipse.ant.ui/about.html
ant/org.eclipse.ant.ui/build.properties
ant/org.eclipse.ant.ui/icons/basic/clcl16/clear.gif
ant/org.eclipse.ant.ui/icons/basic/clcl16/hideOrShowTree.gif
ant/org.eclipse.ant.ui/icons/basic/clcl16/showOnlySelectedText.gif
ant/org.eclipse.ant.ui/icons/basic/cview16/ant_view.gif
ant/org.eclipse.ant.ui/icons/basic/eview16/ant_view.gif
ant/org.eclipse.ant.ui/icons/basic/wizban/ant_wiz.gif
ant/org.eclipse.ant.ui/icons/full/clcl16/clear.gif
ant/org.eclipse.ant.ui/icons/full/clcl16/hideOrShowTree.gif
ant/org.eclipse.ant.ui/icons/full/clcl16/showOnlySelectedText.gif
ant/org.eclipse.ant.ui/icons/full/cview16/ant_view.gif
ant/org.eclipse.ant.ui/icons/full/eview16/ant_view.gif
ant/org.eclipse.ant.ui/icons/full/eview16/build_exec.gif
ant/org.eclipse.ant.ui/icons/full/eview16/classpath.gif
ant/org.eclipse.ant.ui/icons/full/eview16/jar_l_obj.gif
ant/org.eclipse.ant.ui/icons/full/eview16/type.gif
ant/org.eclipse.ant.ui/icons/full/wizban/ant_wiz.gif
ant/org.eclipse.ant.ui/plugin.properties
ant/org.eclipse.ant.ui/plugin.xml
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AddTaskDialog.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntAction.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntConsole.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntConsolePreferencePage.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchDropDownAction.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchWizard.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchWizardPage.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntPreferencesPage.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntPropertyChangeListener.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntTreeContentProvider.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntTreeLabelProvider.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntUIPlugin.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/BuildCanceledException.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/ClasspathPage.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntContentProvider.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntLabelProvider.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntPage.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntPreferencePage.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/IAntPreferenceConstants.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/OutputStructureElement.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/Policy.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/RunAntActionDelegate.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TargetsListContentProvider.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TargetsListLabelProvider.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TasksPage.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TypesPage.java
ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/messages.properties
ant/org.eclipse.ant.ui/src_ant/org/eclipse/ant/internal/ui/ant/UIBuildLogger.java
platform/org.eclipse.platform/.classpath
platform/org.eclipse.platform/.cvsignore
platform/org.eclipse.platform/.project
platform/org.eclipse.platform/about.html
platform/org.eclipse.platform/about.ini
platform/org.eclipse.platform/about.mappings
platform/org.eclipse.platform/about.properties
platform/org.eclipse.platform/build.properties
platform/org.eclipse.platform/eclipse32.gif
platform/org.eclipse.platform/plugin.properties
platform/org.eclipse.platform/plugin.xml
platform/org.eclipse.platform/src/org/eclipse/core/launcher/Main.java
platform/org.eclipse.platform/src/org/eclipse/core/launcher/package.html
platform/org.eclipse.platform/welcome.xml
platform/org.eclipse.sdk/.cvsignore
platform/org.eclipse.sdk/about.html
platform/org.eclipse.sdk/about.ini
platform/org.eclipse.sdk/about.mappings
platform/org.eclipse.sdk/about.properties
platform/org.eclipse.sdk/about_prod.gif
platform/org.eclipse.sdk/build.properties
platform/org.eclipse.sdk/cpl-v05.html
platform/org.eclipse.sdk/eclipse.gif
platform/org.eclipse.sdk/eclipse32.gif
platform/org.eclipse.sdk/eclipse_lg.gif
platform/org.eclipse.sdk/install.ini
platform/org.eclipse.sdk/notice.html
platform/org.eclipse.sdk/platform.ini
platform/org.eclipse.sdk/platform.properties
platform/org.eclipse.sdk/plugin.properties
platform/org.eclipse.sdk/plugin.xml
platform/org.eclipse.sdk/plugin_customization.ini
platform/org.eclipse.sdk/plugin_customization.properties
platform/org.eclipse.sdk/prod.gif
platform/org.eclipse.sdk/product.ini
platform/org.eclipse.sdk/product.properties
platform/org.eclipse.sdk/splash.bmp
platform/org.eclipse.sdk/splash/readme.txt
platform/org.eclipse.sdk/splash/splash_basic.bmp
platform/org.eclipse.sdk/splash/splash_basic.xpm
platform/org.eclipse.sdk/splash/splash_full.bmp
platform/org.eclipse.sdk/splash/splash_full.xpm
platform/org.eclipse.sdk/welcome.xml
update/org.eclipse.update.core.linux/.classpath
update/org.eclipse.update.core.linux/.cvsignore
update/org.eclipse.update.core.linux/.project
update/org.eclipse.update.core.linux/about.html
update/org.eclipse.update.core.linux/build.properties
update/org.eclipse.update.core.linux/fragment.properties
update/org.eclipse.update.core.linux/fragment.xml
update/org.eclipse.update.core.linux/os/linux/libupdate.so
update/org.eclipse.update.core.linux/src/build.xml
update/org.eclipse.update.core.linux/src/update.cpp
update/org.eclipse.update.core.linux/src/update.h
update/org.eclipse.update.core.win32/.classpath
update/org.eclipse.update.core.win32/.cvsignore
update/org.eclipse.update.core.win32/.project
update/org.eclipse.update.core.win32/about.html
update/org.eclipse.update.core.win32/build.properties
update/org.eclipse.update.core.win32/fragment.properties
update/org.eclipse.update.core.win32/fragment.xml
update/org.eclipse.update.core.win32/os/win32/update.dll
update/org.eclipse.update.core.win32/src/build.xml
update/org.eclipse.update.core.win32/src/update.cpp
update/org.eclipse.update.core.win32/src/update.h
update/org.eclipse.update.examples/.classpath
update/org.eclipse.update.examples/.cvsignore
update/org.eclipse.update.examples/.project
update/org.eclipse.update.examples/Scrapbook2.jpage
update/org.eclipse.update.examples/about.html
update/org.eclipse.update.examples/bin/org/eclipse/update/examples/buildzip/java.page.jpage
update/org.eclipse.update.examples/build.properties
update/org.eclipse.update.examples/plugin.properties
update/org.eclipse.update.examples/plugin.xml
update/org.eclipse.update.examples/site/features/com.reddot.reddot_1.0.0.jar
update/org.eclipse.update.examples/site/features/com.reddot.reddot_2.0.0.jar
update/org.eclipse.update.examples/site/info/images/redDot.jpg
update/org.eclipse.update.examples/site/info/siteInfo.html
update/org.eclipse.update.examples/site/plugins/com.reddot.reddot_1.0.0.jar
update/org.eclipse.update.examples/site/plugins/com.reddot.reddot_2.0.0.jar
update/org.eclipse.update.examples/site/site.xml
update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipConverter.java
update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureContentProvider.java
update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureFactory.java
update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureParser.java
update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipPluginParser.java
update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipSiteContentProvider.java
update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipSiteFactory.java
update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/DefaultModelWriter.java
update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/Test.java
update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/java.page.jpage
update/org.eclipse.update.examples/src/org/eclipse/update/examples/freeform/FreeFormSiteContentProvider.java
update/org.eclipse.update.examples/src/org/eclipse/update/examples/freeform/FreeFormSiteFactory.java
update/org.eclipse.update.tests.core/.classpath
update/org.eclipse.update.tests.core/.cvsignore
update/org.eclipse.update.tests.core/.project
update/org.eclipse.update.tests.core/about.html
update/org.eclipse.update.tests.core/build.properties
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/features/feature3/feature.xml
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/Pde_core.jar
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/help.jar
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/junit_3.7.jar
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/feature3/feature.xml
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/helpFeature.jar
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/org.eclipse.pde.feature_1.0.0.jar
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/img/top_titlsm.gif
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/img/wel_ml.jpg
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/siteInfo.html
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/Pde_core.jar
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/help.jar
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/junit_3.7.jar
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/site.xml
update/org.eclipse.update.tests.core/data/FTPLikeSite/site.xml
update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site1/features/feature3/feature.xml
update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site1/site.xml
update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site2/features/feature3/features2.jarfile
update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site2/site.xml
update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site3/features/feature3/features2.jarfile
update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site3/site.xml
update/org.eclipse.update.tests.core/data/Site with space/features space/helpFeature.jar
update/org.eclipse.update.tests.core/data/Site with space/features space/space feature.jar
update/org.eclipse.update.tests.core/data/Site with space/info/img/top_titlsm.gif
update/org.eclipse.update.tests.core/data/Site with space/info/img/wel_ml.jpg
update/org.eclipse.update.tests.core/data/Site with space/info/siteInfo.html
update/org.eclipse.update.tests.core/data/Site with space/install/features space/feature3/feature.xml
update/org.eclipse.update.tests.core/data/Site with space/plugins space/Pde_core.jar
update/org.eclipse.update.tests.core/data/Site with space/plugins space/help.jar
update/org.eclipse.update.tests.core/data/Site with space/plugins space/junit_3.7.jar
update/org.eclipse.update.tests.core/data/Site with space/plugins space/org.eclipse.update.plugin1_1.1.1/plugin.xml
update/org.eclipse.update.tests.core/data/Site with space/plugins space/org.eclipse.update.plugin1_1.1.1/src.jar
update/org.eclipse.update.tests.core/data/Site with space/site.xml
update/org.eclipse.update.tests.core/data/SiteTypeExamples/site1/features/feature3/features2.jarfile
update/org.eclipse.update.tests.core/data/SiteTypeExamples/site1/site.xml
update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/features/helpFeature.jar
update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/features/org.eclipse.pde.feature_1.0.0.jar
update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/Pde_core.jar
update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/help.jar
update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/junit_3.7.jar
update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/img/top_titlsm.gif
update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/img/wel_ml.jpg
update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/siteInfo.html
update/org.eclipse.update.tests.core/data/SiteURLTest/data/site.xml
update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/file1.zip
update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/install/features/feature3/feature.xml
update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/site.xml
update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/features/features3.jar
update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/non data/another file.zip
update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/site.xml
update/org.eclipse.update.tests.core/data/features/features2.jar
update/org.eclipse.update.tests.core/data/features/org.eclipse.test.feature_1.0.0.jar
update/org.eclipse.update.tests.core/data/features/org.eclipse.update.core.tests.feature1_1.0.4.jar
update/org.eclipse.update.tests.core/data/features/org.eclipse_test_feature.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/features/org.eclipse.update.core.tests.childrenfeature_2.0.0.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/features/rootfeature.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/site.xml
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/features/childrenfeature.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/features/rootfeature.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/site.xml
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/features/childrenfeature.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/features/rootfeature.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/site.xml
update/org.eclipse.update.tests.core/data/parsertests/feature1.xml
update/org.eclipse.update.tests.core/data/parsertests/reddot.xml
update/org.eclipse.update.tests.core/data/parsertests/reddot1.xml
update/org.eclipse.update.tests.core/data/parsertests/site.properties
update/org.eclipse.update.tests.core/data/parsertests/site.xml
update/org.eclipse.update.tests.core/data/parsertests/site2.xml
update/org.eclipse.update.tests.core/data/parsertests/site3.xml
update/org.eclipse.update.tests.core/data/parsertests/site4.xml
update/org.eclipse.update.tests.core/data/parsertests/siteftp.xml
update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.feature1.plugin1_1.1.1.jar
update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.feature2.plugin2_2.2.2.jar
update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.dummy_7.9.8.jar
update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
update/org.eclipse.update.tests.core/data/reconciliationSites/site1/install/features/feature3/feature.xml
update/org.eclipse.update.tests.core/data/reconciliationSites/site1/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
update/org.eclipse.update.tests.core/data/reconciliationSites/site1/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
update/org.eclipse.update.tests.core/data/reconciliationSites/site2/install/features/feature3/feature.xml
update/org.eclipse.update.tests.core/data/reconciliationSites/site2/plugins/org.eclipse.update.core_2.0.0/plugin.xml
update/org.eclipse.update.tests.core/data/reconciliationSites/site2/plugins/org.eclipse.update.core_2.0.0/src.jar
update/org.eclipse.update.tests.core/data/resources.properties
update/org.eclipse.update.tests.core/data/site.xml
update/org.eclipse.update.tests.core/data/site2/site.xml
update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.0/plugin.xml
update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.0/src.jar
update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.1/plugin.xml
update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.1/src.jar
update/org.eclipse.update.tests.core/data/testAPI/features/feature3/feature.xml
update/org.eclipse.update.tests.core/data/testAPI/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
update/org.eclipse.update.tests.core/data/testAPI/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
update/org.eclipse.update.tests.core/data/testAPI/site.xml
update/org.eclipse.update.tests.core/data/xmls/apitests/org.eclipse.test.feature_1.0.0/feature.xml
update/org.eclipse.update.tests.core/data/xmls/apitests/org.eclipse_test_feature/feature.xml
update/org.eclipse.update.tests.core/data/xmls/feature_1.0.0/feature.xml
update/org.eclipse.update.tests.core/data/xmls/feature_1.0.0/feature1.gif
update/org.eclipse.update.tests.core/data/xmls/site1/site.xml
update/org.eclipse.update.tests.core/plugin.properties
update/org.eclipse.update.tests.core/plugin.xml
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/AllTests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/UpdateManagerTestCase.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/UpdateTestsPlugin.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/AllAPITests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/DefaultFeature.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/MyURLEntry.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestDefaultExecutableFeatureAPI.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestDefaultPackageFeatureAPI.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestLocalSiteAPI.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestNestedFeatureAPI.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestPluginContainerAPI.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestSiteAPI.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestSiteManagerAPI.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestUpdateManagerUtilsAPI.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/AllConfigurationsTests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/TestBackward.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/TestRevert.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/AllPlatformConfigurationTests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/PlatformConfigurationTestCase.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/TestPlatCfgAPI.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/TestPlatCfgDefault.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/implementation/SiteFTP.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/implementation/SiteFTPFactory.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/AllModelTests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/FeatureMain.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/SiteMain.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/feature.xml
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site.xml
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site_old_format.xml
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site_with_type.xml
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/test.properties
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nativeTests/TestLocalSystemInfo.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nestedfeatures/AllNestedTests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nestedfeatures/TestInstall.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/AllParserTests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestCategories.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestFeatureParse.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestSiteParse.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/reconciliation/AllReconciliationTests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/reconciliation/TestSiteReconciliation.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/AllRegularInstallTests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/MultipleTestLocalSite.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestDataEntryInstall.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestExecutableInstall.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestExecutablePackagedInstall.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestGetFeature.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestInstall.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestInstallURLSIteXML.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestLocalSite.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestSpaceInInstall.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularRemove/AllRegularRemoveTests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularRemove/TestRemove.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/AllTypesTests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/TestFeatureType.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/TestSiteType.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/uivalues/AllCoreUITests.java
update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/uivalues/TestUILabel.java
update/org.eclipse.update.tests.core/test.xml
update/org.eclipse.update.tests.core/test_with_mail.xml
update/org.eclipse.update.tests.core/webserver/Site with space/features space/helpFeature.jar
update/org.eclipse.update.tests.core/webserver/Site with space/features space/space feature.jar
update/org.eclipse.update.tests.core/webserver/Site with space/info/img/top_titlsm.gif
update/org.eclipse.update.tests.core/webserver/Site with space/info/img/wel_ml.jpg
update/org.eclipse.update.tests.core/webserver/Site with space/info/siteInfo.html
update/org.eclipse.update.tests.core/webserver/Site with space/install/features space/feature3/feature.xml
update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/Pde_core.jar
update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/help.jar
update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/junit_3.7.jar
update/org.eclipse.update.tests.core/webserver/Site with space/site.xml
update/org.eclipse.update.tests.core/webserver/UpdateManager/features/helpFeature.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager/features/org.eclipse.pde.feature_1.0.0.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager/info/img/top_titlsm.gif
update/org.eclipse.update.tests.core/webserver/UpdateManager/info/img/wel_ml.jpg
update/org.eclipse.update.tests.core/webserver/UpdateManager/info/siteInfo.html
update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/Pde_core.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/help.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/junit_3.7.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager/site.xml
update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/features2.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse.test.feature_1.0.0.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse.update.core.tests.feature1_1.0.4.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse_test_feature.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/features/org.eclipse.update.core.tests.childrenfeature_2.0.0.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/features/rootfeature.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/site.xml
update/org.eclipse.update.tests.core/webserver/UpdateManager2/org.eclipse.update.core.feature2_1.0.0/org.eclipse.update.core.feature2_2.2.2.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.feature1.plugin1_1.1.1.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.feature2.plugin2_2.2.2.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.dummy_7.9.8.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
update/org.eclipse.update.tests.core/webserver/UpdateManager2/site.properties
update/org.eclipse.update.tests.core/webserver/UpdateManager2/site.xml
update/org.eclipse.update.tests.core/webserver/WEB-INF/web.xml
update/org.eclipse.update.ui.forms/.classpath
update/org.eclipse.update.ui.forms/.cvsignore
update/org.eclipse.update.ui.forms/.project
update/org.eclipse.update.ui.forms/about.html
update/org.eclipse.update.ui.forms/build.properties
update/org.eclipse.update.ui.forms/plugin.properties
update/org.eclipse.update.ui.forms/plugin.xml
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/AbstractForm.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/AbstractSectionForm.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/CustomWorkbook.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ExpandableGroup.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormButton.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormEntry.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormLabel.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormSection.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormWidgetFactory.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HTMLTableLayout.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkAdapter.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkHandler.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkSettings.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IForm.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormPage.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormSelectionListener.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormTextListener.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormWorkbook.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IHyperlinkListener.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/NoTabsWorkbook.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ScrollableSectionForm.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SectionChangeManager.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SectionForm.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SelectableControl.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SelectableFormLabel.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/TableData.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/TableLayoutTest.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ToggleControl.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/WebForm.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/BulletParagraph.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/FormEngine.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/FormEngineLayout.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HTTPAction.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HyperlinkAction.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HyperlinkSegment.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IBulletParagraph.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IHyperlinkSegment.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IImageSegment.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IObjectReference.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IParagraph.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IParagraphSegment.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ITextModel.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ITextSegment.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ImageSegment.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/Locator.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/Paragraph.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ParagraphSegment.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/TextModel.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/TextSegment.java
update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/index.xml
update/org.eclipse.update.ui.win32/.classpath
update/org.eclipse.update.ui.win32/.cvsignore
update/org.eclipse.update.ui.win32/.project
update/org.eclipse.update.ui.win32/about.html
update/org.eclipse.update.ui.win32/build.properties
update/org.eclipse.update.ui.win32/fragment.properties
update/org.eclipse.update.ui.win32/fragment.xml
update/org.eclipse.update.ui.win32/icons/full/cview16/browser.gif
update/org.eclipse.update.ui.win32/icons/full/eview16/browser.gif
update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/BrowserControlSite.java
update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/WebBrowser.java
update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/WebBrowserView.java
update/org.eclipse.update.ui/.classpath
update/org.eclipse.update.ui/.cvsignore
update/org.eclipse.update.ui/.project
update/org.eclipse.update.ui/Graphics_update.html
update/org.eclipse.update.ui/about.html
update/org.eclipse.update.ui/build.properties
update/org.eclipse.update.ui/doc/searchCategory.html
update/org.eclipse.update.ui/icons/full/clcl16/backward_nav.gif
update/org.eclipse.update.ui/icons/full/clcl16/forward_nav.gif
update/org.eclipse.update.ui/icons/full/clcl16/go_nav.gif
update/org.eclipse.update.ui/icons/full/clcl16/home_nav.gif
update/org.eclipse.update.ui/icons/full/clcl16/refresh_nav.gif
update/org.eclipse.update.ui/icons/full/clcl16/show_unconf.gif
update/org.eclipse.update.ui/icons/full/clcl16/stop_nav.gif
update/org.eclipse.update.ui/icons/full/ctool16/config_wiz.gif
update/org.eclipse.update.ui/icons/full/ctool16/install_wiz.gif
update/org.eclipse.update.ui/icons/full/ctool16/new_bookmark_wiz.gif
update/org.eclipse.update.ui/icons/full/ctool16/new_folder_wiz.gif
update/org.eclipse.update.ui/icons/full/ctool16/new_search_wiz.gif
update/org.eclipse.update.ui/icons/full/ctool16/uninstall_wiz.gif
update/org.eclipse.update.ui/icons/full/ctool16/update_wiz.gif
update/org.eclipse.update.ui/icons/full/cview16/browser.gif
update/org.eclipse.update.ui/icons/full/cview16/configs.gif
update/org.eclipse.update.ui/icons/full/cview16/preview.gif
update/org.eclipse.update.ui/icons/full/cview16/update_pers.gif
update/org.eclipse.update.ui/icons/full/cview16/updates.gif
update/org.eclipse.update.ui/icons/full/dlcl16/backward_nav.gif
update/org.eclipse.update.ui/icons/full/dlcl16/forward_nav.gif
update/org.eclipse.update.ui/icons/full/dlcl16/go_nav.gif
update/org.eclipse.update.ui/icons/full/dlcl16/home_nav.gif
update/org.eclipse.update.ui/icons/full/dlcl16/refresh_nav.gif
update/org.eclipse.update.ui/icons/full/dlcl16/show_unconf.gif
update/org.eclipse.update.ui/icons/full/dlcl16/stop_nav.gif
update/org.eclipse.update.ui/icons/full/dtool16/config_wiz.gif
update/org.eclipse.update.ui/icons/full/dtool16/install_wiz.gif
update/org.eclipse.update.ui/icons/full/dtool16/new_bookmark_wiz.gif
update/org.eclipse.update.ui/icons/full/dtool16/new_folder_wiz.gif
update/org.eclipse.update.ui/icons/full/dtool16/new_search_wiz.gif
update/org.eclipse.update.ui/icons/full/dtool16/uninstall_wiz.gif
update/org.eclipse.update.ui/icons/full/dtool16/update_wiz.gif
update/org.eclipse.update.ui/icons/full/elcl16/backward_nav.gif
update/org.eclipse.update.ui/icons/full/elcl16/forward_nav.gif
update/org.eclipse.update.ui/icons/full/elcl16/go_nav.gif
update/org.eclipse.update.ui/icons/full/elcl16/home_nav.gif
update/org.eclipse.update.ui/icons/full/elcl16/refresh_nav.gif
update/org.eclipse.update.ui/icons/full/elcl16/show_unconf.gif
update/org.eclipse.update.ui/icons/full/elcl16/stop_nav.gif
update/org.eclipse.update.ui/icons/full/etool16/config_wiz.gif
update/org.eclipse.update.ui/icons/full/etool16/install_wiz.gif
update/org.eclipse.update.ui/icons/full/etool16/new_bookmark_wiz.gif
update/org.eclipse.update.ui/icons/full/etool16/new_folder_wiz.gif
update/org.eclipse.update.ui/icons/full/etool16/new_search_wiz.gif
update/org.eclipse.update.ui/icons/full/etool16/uninstall_wiz.gif
update/org.eclipse.update.ui/icons/full/etool16/update_wiz.gif
update/org.eclipse.update.ui/icons/full/eview16/browser.gif
update/org.eclipse.update.ui/icons/full/eview16/configs.gif
update/org.eclipse.update.ui/icons/full/eview16/preview.gif
update/org.eclipse.update.ui/icons/full/eview16/update_pers.gif
update/org.eclipse.update.ui/icons/full/eview16/updates.gif
update/org.eclipse.update.ui/icons/full/forms/def_provider.gif
update/org.eclipse.update.ui/icons/full/forms/form_banner.gif
update/org.eclipse.update.ui/icons/full/forms/form_underline.gif
update/org.eclipse.update.ui/icons/full/forms/topic.gif
update/org.eclipse.update.ui/icons/full/obj16/app_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/bfolder_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/category_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/cd_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/computer_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/config_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/feature_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/floppy_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/history_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/lsite_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/places_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/psearch_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/saved_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/site_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/tsearch_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/unconf_feature_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/updates_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/usearch_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/vfixed_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/vremote_obj.gif
update/org.eclipse.update.ui/icons/full/obj16/vremovable_obj.gif
update/org.eclipse.update.ui/icons/full/ovr16/current_co.gif
update/org.eclipse.update.ui/icons/full/ovr16/error_co.gif
update/org.eclipse.update.ui/icons/full/ovr16/installable_co.gif
update/org.eclipse.update.ui/icons/full/ovr16/linked_co.gif
update/org.eclipse.update.ui/icons/full/ovr16/unconfigured_co.gif
update/org.eclipse.update.ui/icons/full/wizban/config_wiz.gif
update/org.eclipse.update.ui/icons/full/wizban/def_wizban.jpg
update/org.eclipse.update.ui/icons/full/wizban/install_wiz.gif
update/org.eclipse.update.ui/icons/full/wizban/new_bookmark_wiz.gif
update/org.eclipse.update.ui/icons/full/wizban/new_folder_wiz.gif
update/org.eclipse.update.ui/icons/full/wizban/new_search_wiz.gif
update/org.eclipse.update.ui/icons/full/wizban/uninstall_wiz.gif
update/org.eclipse.update.ui/icons/full/wizban/update_wiz.gif
update/org.eclipse.update.ui/plugin.properties
update/org.eclipse.update.ui/plugin.xml
update/org.eclipse.update.ui/schema/searchCategory.exsd
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateManagerAction.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdatePerspective.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPlugin.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginImages.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/ActivityConstraints.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/ActivitySection.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/CategoryForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsHistory.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsHistoryItem.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DiscoveryFolderForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/IUpdateForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InfoLink.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InstallConfigurationForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InstallableSiteForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/LocalSiteForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/MainForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/MyComputerForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/PropertyWebForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/RevertSection.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SearchForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SearchResultSection.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SiteForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UIProblemHandler.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UnknownObjectForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateAdapterFactory.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateSection.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateWebForm.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/BookmarkFolder.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/BookmarkUtil.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfigurationSiteAdapter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfiguredFeatureAdapter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/DiscoveryFolder.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/FeatureAdapter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/FeatureReferenceAdapter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredFeatureAdapter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredSiteAdapter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredSiteContext.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IFeatureAdapter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ISiteAdapter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IUpdateModelChangedListener.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MissingFeature.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MonitorAdapter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputer.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputerDirectory.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputerFile.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/NamedModelObject.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/PendingChange.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/PreservedConfiguration.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SimpleFeatureAdapter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteBookmark.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteCategory.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/UIModelObject.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/UpdateModel.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/CategoryPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/DetailsPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/DiscoveryFolderPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/IUpdateFormPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/InstallConfigurationPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/InstallableSitePage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/LocalSitePage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/MainPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/MyComputerPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/SearchPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/SitePage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/UnknownObjectPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/UpdateFormPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/AboutInfo.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/ConfigurationInfo.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/DefaultContentProvider.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/EnvironmentUtil.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/OverlayIcon.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/PixelConverter.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/SWTUtil.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/VolumeLabelProvider.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/preferences/MainPreferencePage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/ConfigurationPropertyPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/SiteBookmarkPropertyPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/SiteBookmarkPropertySource.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/BackgroundProgressMonitor.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/BackgroundThread.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/DefaultUpdatesSearchObject.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/DriveSearchSettings.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ExpressionSearchCategory.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ISearchCategory.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ISearchQuery.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/MyComputerSearchDialog.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/MyComputerSearchSettings.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/PluginsSearchCategory.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategory.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategoryDescriptor.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategoryRegistryReader.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchObject.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchResultSite.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/UpdatesSearchCategory.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/AuthorizationDatabase.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/BannerPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationDialog.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationService.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/UserValidationDialog.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/BaseTreeView.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/ConfigurationView.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/DetailsView.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/IEmbeddedWebBrowser.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/MultiPageView.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/BannerPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/BaseNewWizardPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallDeltaWizard.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallDeltaWizardPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizard.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizardDialog.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/LicensePage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewFolderWizardPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewSearchWizardPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewSiteBookmarkWizardPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewWizard.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/ReviewPage.java
update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/TargetPage.java
update/org.eclipse.update/.classpath
update/org.eclipse.update/.cvsignore
update/org.eclipse.update/.vcm_meta
update/org.eclipse.update/about.html
update/org.eclipse.update/build.properties
update/org.eclipse.update/icons/full/ctool16/new.gif
update/org.eclipse.update/icons/full/ctool16/update.gif
update/org.eclipse.update/icons/full/wizban/new.gif
update/org.eclipse.update/icons/full/wizban/revert.gif
update/org.eclipse.update/icons/full/wizban/update.gif
update/org.eclipse.update/plugin.properties
update/org.eclipse.update/plugin.xml
update/org.eclipse.update/plugin.xml.off
update/org.eclipse.update/src/org/eclipse/update/internal/core/ISessionDefiner.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/IUMLock.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UMLock.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionDefinerReferenceUpdate.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManager.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerEntry.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerMessage.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerOperation.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerParcel.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerSession.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/URLHandler.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManager.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerException.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerPlugin.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerStrings.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerURLComparator.java
update/org.eclipse.update/src/org/eclipse/update/internal/core/updatemanagerstrings.properties
update/org.eclipse.update/src/org/eclipse/update/internal/ui/AuthorizationDatabase.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/Installation.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationDialog.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationResult.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationService.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerifier.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/KeyStores.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/Main.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplication.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationUserInterface.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationUserInterfaceProperties.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationWindow.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMDialog.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMDialogAction.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMPreferencePageSettings.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizard.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageComplete.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageInstallable.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageInstalling.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLaunchHistory.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLaunchHistoryComplete.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLocations.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLComplete.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstall.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstallable.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstalling.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPersistentProperties.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentNew.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentRevert.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentURLInstall.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentUpdate.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardTreeItem.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardTreeItemComparator.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardURLNamePairComparator.java
update/org.eclipse.update/src/org/eclipse/update/internal/ui/UserValidationDialog.java
diff --git a/ant/org.eclipse.ant.core/.classpath b/ant/org.eclipse.ant.core/.classpath
deleted file mode 100644
index 520e05a..0000000
--- a/ant/org.eclipse.ant.core/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="/org.apache.xerces"/>
- <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
- <classpathentry kind="src" path="/org.eclipse.core.boot"/>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="lib" path="/org.apache.ant/ant.jar" sourcepath="/org.apache.ant/antsrc.zip"/>
- <classpathentry kind="src" path="src_ant"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/ant/org.eclipse.ant.core/.cvsignore b/ant/org.eclipse.ant.core/.cvsignore
deleted file mode 100644
index 57b480f..0000000
--- a/ant/org.eclipse.ant.core/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-lib
diff --git a/ant/org.eclipse.ant.core/.project b/ant/org.eclipse.ant.core/.project
deleted file mode 100644
index 787040f..0000000
--- a/ant/org.eclipse.ant.core/.project
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.ant.core</name>
- <comment></comment>
- <projects>
- <project>org.apache.xerces</project>
- <project>org.eclipse.core.boot</project>
- <project>org.eclipse.core.runtime</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.team.cvs.core.cvsnature</nature>
- </natures>
-</projectDescription>
diff --git a/ant/org.eclipse.ant.core/about.html b/ant/org.eclipse.ant.core/about.html
deleted file mode 100644
index d79e465..0000000
--- a/ant/org.eclipse.ant.core/about.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>7th May, 2002</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Third Party Content</h3>
-
-<p>The Content includes items that have been sourced from third parties as follows:</p>
-
-<p><b>Ant 1.4.1</b></p>
-<p>The plug-in is based on software developed by The Apache Software Foundation as part of the Jakarta project.
-The following classes "Ant Derivative Work" are based on Ant code:</p>
-
-<ul>
- <li>InternalAntRunner contained in antsupportlib.jar and antsupportlibsrc.zip</li>
-</ul>
-
-<p>The Ant Derivative Work is:</p>
-
-<blockquote>Copyright (c) 1999 The Apache Software Foundation. All rights reserved.</blockquote>
-
-<p>Your use of the Ant Derivative Work is subject to the terms and conditions of the
-<a href="http://jakarta.apache.org/ant/manual/LICENSE">Apache Software License 1.1</a>.
-More specifically:</p>
-<blockquote>
- 1. Redistributions of source code must retain the above copyright notice, this list of<br />
- conditions and the following disclaimer.<br />
-<br />
- 2. Redistributions in binary form must reproduce the above copyright notice, this list of<br />
- conditions and the following disclaimer in the documentation and/or other materials<br />
- provided with the distribution.<br />
-<br />
- 3. The end-user documentation included with the redistribution, if any, must include the<br />
- following acknowledgment:<br />
- <blockquote>
- "This product includes software developed by the Apache Software Foundation<br />
- (<a href="http://www.apache.org/">http://www.apache.org/</a>)."
- </blockquote>
- Alternately, this acknowledgment may appear in the software itself, if and wherever such<br />
- third-party acknowledgments normally appear.<br />
-<br />
- 4. The names "Ant" and "Apache Software Foundation" must not be used to endorse or<br />
- promote products derived from this software without prior written permission. For written<br />
- permission, please contact <a href="mailto:apache@apache.org">apache@apache.org</a>.<br />
-<br />
- 5. Products derived from this software may not be called "Apache", nor may "Apache" appear<br />
- in their name, without prior written permission of the Apache Software Foundation.<br />
-<br />
- THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT<br />
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />
- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS<br />
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR<br />
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR<br />
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON<br />
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING<br />
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF<br />
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-</blockquote>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/build.properties b/ant/org.eclipse.ant.core/build.properties
deleted file mode 100644
index 2e19705..0000000
--- a/ant/org.eclipse.ant.core/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-source.antsupport.jar=src/
-source.lib/antsupportlib.jar=src_ant/
-bin.includes=plugin.xml,**/*.jar,plugin.properties,about.html
-jars.compile.order=antsupport.jar,lib/antsupportlib.jar
-jars.extra.classpath=../org.apache.ant/ant.jar
-javadoc.packages=org.eclipse.*
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/buildnotes_platform-ant.html b/ant/org.eclipse.ant.core/buildnotes_platform-ant.html
deleted file mode 100644
index 8038a09..0000000
--- a/ant/org.eclipse.ant.core/buildnotes_platform-ant.html
+++ /dev/null
@@ -1,281 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.7 [en] (WinNT; I) [Netscape]">
- <title>Eclipse Platform Release Notes Core</title>
-<!-- saved from url=(0079)http://home.ott.oti.com/hubba/drops/sdk/latest-javadoc/doc/buildnotes_core.html -->
-<!-- saved from url=(0079)http://home.ott.oti.com/hubba/drops/sdk/latest-javadoc/doc/buildnotes_core.html -->
-</head>
-<body>
-
-<h1>
-Eclipse Platform Build Notes<br>
-Ant</h1>
-Eclipse SDK Build 20020430
-<h2>
-What's new in this drop</h2>
-
-<h3>
-API changes</h3>
-
-<ul>
-<li>
-None.</li>
-</ul>
-
-<h3>
-Other highlights</h3>
-
-<ul>
-<li>
-Type commapatternset is now called eclipse.commapatternset .</li>
-</ul>
-
-<h3>
-Resolved Bugs</h3>
-
-<ul>
-<li>
-<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfield=bug_status&chfieldfrom=2002%2F04%2F12&chfieldto=2002%2F04%2F30&chfieldvalue=&product=Platform&component=Ant&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&order=Bug+Number">Click
-here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
-since the last integration build.</li>
-</ul>
-
-<h1>
-
-<hr WIDTH="100%">Eclipse Platform Build Notes<br>
-Ant</h1>
-Eclipse SDK Build 20020411
-<h2>
-What's new in this drop</h2>
-
-<h3>
-API changes</h3>
-
-<ul>
-<li>
-None.</li>
-</ul>
-
-<h3>
-Other highlights</h3>
-
-<ul>
-<li>
-None.</li>
-</ul>
-
-<h3>
-Resolved Bugs</h3>
-
-<ul>
-<li>
-<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfield=bug_status&chfieldfrom=2002%2F04%2F09&chfieldto=2002%2F04%2F12&chfieldvalue=&product=Platform&component=Ant&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=Active&newqueryname=&order=Bug+Number">Click
-here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
-since the last integration build.</li>
-</ul>
-
-<h1>
-
-<hr WIDTH="100%">Eclipse Platform Build Notes<br>
-Ant</h1>
-Eclipse SDK Build 20020409
-<h2>
-What's new in this drop</h2>
-
-<h3>
-API changes</h3>
-
-<ul>
-<li>
-<b><tt>org.eclipse.ant.core</tt></b> does not export <b><tt>org.apache.ant</tt></b>
-anymore. Plug-ins that need to have access to Ant classes need to require
-<b><tt>org.apache.ant</tt></b>
-directly.</li>
-
-<li>
-Tasks <b><tt>refreshLocal</tt></b> and <b><tt>incrementalBuild</tt></b>
-are not available anymore. Use <b><tt>eclipse.refreshLocal</tt></b> and
-<b><tt>eclipse.incrementalBuild</tt></b>
-instead.</li>
-</ul>
-
-<h3>
-Other highlights</h3>
-
-<ul>
-<li>
-New property <b><tt>eclipse.running</tt></b> is set for scripts running
-inside Eclipse.</li>
-
-<li>
-It is now possible to extend the Ant classpath by adding new JARs, folders,
-tasks and types through a preference (Workbench->Preferences->Ant->Customize).</li>
-</ul>
-
-<h3>
-Resolved Bugs</h3>
-
-<ul>
-<li>
-<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfield=bug_status&chfieldfrom=2002%2F01%2F29&chfieldto=2002%2F04%2F09&chfieldvalue=&product=Platform&component=Ant&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=Active&newqueryname=&order=Bug+Number">Click
-here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
-since the last integration build.</li>
-</ul>
-
-<h1>
-
-<hr WIDTH="100%">Eclipse Platform Build Notes<br>
-Ant</h1>
-Eclipse SDK Build 20020129
-<h2>
-What's new in this drop</h2>
-
-<h3>
-API changes</h3>
-
-<ul>
-<li>
-None.</li>
-</ul>
-
-<h3>
-Other highlights</h3>
-
-<ul>
-<li>
-None.</li>
-</ul>
-
-<h3>
-Resolved Bugs</h3>
-
-<ul>
-<li>
-<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfield=bug_status&chfieldfrom=2001%2F12%2F17&chfieldto=2002%2F01%2F29&chfieldvalue=&product=Platform&component=Ant&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=ant&newqueryname=&order=Bug+Number">Click
-here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
-since the last integration build.</li>
-</ul>
-
-<h1>
-
-<hr WIDTH="100%">Eclipse Platform Build Notes<br>
-Ant</h1>
-Eclipse SDK Build 20011218
-<h2>
-What's new in this drop</h2>
-
-<h3>
-API changes</h3>
-
-<ul>
-<li>
-None.</li>
-</ul>
-
-<h3>
-Other highlights</h3>
-
-<ul>
-<li>
-None.</li>
-</ul>
-
-<h3>
-Resolved Bugs</h3>
-
-<ul>
-<li>
-<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfield=bug_status&chfieldfrom=2001%2F12%2F11&chfieldto=2001%2F12%2F17&chfieldvalue=&product=Platform&component=Ant&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=ant&newqueryname=&order=Bug+Number">Click
-here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
-since the last integration build.</li>
-</ul>
-
-<h1>
-
-<hr WIDTH="100%">Eclipse Platform Build Notes<br>
-Ant</h1>
-Eclipse SDK Build 20011211
-<h2>
-What's new in this drop</h2>
-
-<h3>
-API changes</h3>
-
-<ul>
-<li>
-None.</li>
-</ul>
-
-<h3>
-Other highlights</h3>
-
-<ul>
-<li>
-Ant code from Apache has moved to a new plug-in called org.apache.ant..</li>
-</ul>
-
-<h3>
-Resolved Bugs</h3>
-
-<ul>
-<li>
-<a href="http://dev.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfield=bug_status&chfieldfrom=2001%2F11%2F27&chfieldto=2001%2F12%2F10&chfieldvalue=&product=Platform&component=Ant&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=Active&newqueryname=&order=Bug+Number">Click
-here</a> to see PRs which have been marked as RESOLVED, VERIFIED or CLOSED
-since the last integration build.</li>
-</ul>
-
-<h1>
-
-<hr WIDTH="100%">Eclipse Platform Build Notes<br>
-Ant</h1>
-Eclipse SDK Build 20011127 (v213)
-<h2>
-What's new in this drop</h2>
-
-<h3>
-API changes</h3>
-
-<ul>
-<li>
-None.</li>
-</ul>
-
-<h3>
-Other highlights</h3>
-
-<ul>
-<li>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5391">5391</a>
-Upgrade to Ant 1.4.1</li>
-</ul>
-
-<h1>
-
-<hr WIDTH="100%">Eclipse Platform Build Notes<br>
-Ant</h1>
-Eclipse SDK Build 20011120 (v211)
-<h2>
-What's new in this drop</h2>
-
-<h3>
-API changes</h3>
-
-<ul>
-<li>
-None.</li>
-</ul>
-
-<h3>
-Other highlights</h3>
-
-<ul>
-<li>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=5331">5331</a>
-Ant does not override optional tasks with org.eclipse.ant.core.antTasks
-extension point</li>
-</ul>
-
-</body>
-</html>
diff --git a/ant/org.eclipse.ant.core/doc/hglegal.htm b/ant/org.eclipse.ant.core/doc/hglegal.htm
deleted file mode 100644
index b071dbd..0000000
--- a/ant/org.eclipse.ant.core/doc/hglegal.htm
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.73 [en] (Win98; U) [Netscape]">
- <title>Legal Notices</title>
-</head>
-<body>
-
-<h3>
-<a NAME="Notices"></a>Notices</h3>
-(c) Copyright IBM Corp. 2000, 2001. All Rights Reserved.
-</body>
-</html>
diff --git a/ant/org.eclipse.ant.core/doc/ngibmcpy.gif b/ant/org.eclipse.ant.core/doc/ngibmcpy.gif
deleted file mode 100644
index 360f8e9..0000000
--- a/ant/org.eclipse.ant.core/doc/ngibmcpy.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core.html b/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core.html
deleted file mode 100644
index a8c550f..0000000
--- a/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <title>Ant Build Tool Core extension-points</title>
-</head>
-<body link="#0000FF" vlink="#800080">
-
-<center>
-<h1>
-Ant Build Tool Core Plug-in</h1></center>
-This document lists all of the extension points that the Ant Build Tool Core
-plug-in makes available to tool developers.
-<p>
-<hr WIDTH="100%">
-<h1>
-General Extension Points</h1>
-The following extension points can be used to extend the fundamental capabilities
-of the Ant core plug-in:
-<ul>
-<li>
-<a href="org_eclipse_ant_core_antObjects.html">org.eclipse.ant.core.antObjects</a></li>
-
-<li>
-<a href="org_eclipse_ant_core_antTasks.html">org.eclipse.ant.core.antTasks</a></li>
-
-<li>
-<a href="org_eclipse_ant_core_antTypes.html">org.eclipse.ant.core.antTypes</a></li>
-</ul>
-<a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001. All Rights Reserved." BORDER=0 height=12 width=195></a>
-</body>
-</html>
diff --git a/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antObjects.html b/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antObjects.html
deleted file mode 100644
index 3ec3f86..0000000
--- a/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antObjects.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.7 [en] (WinNT; I) [Netscape]">
- <title>AntObjects</title>
-</head>
-<body link="#0000FF" vlink="#800080">
-
-<center>
-<h1>
-AntObjects</h1></center>
-<b><i>Identifier: </i></b>org.eclipse.ant.core.antObjects
-<p><b><i>Description: </i></b>Allows plug-ins to define arbitrary classes
-for use by the Ant infrastructure. For example, in the case of a
-Javac compiler adapter, the compiler adapter factory can be supplied, via
-a property setting, with the name of an adapter class to use. Unfortunately,
-it is unlikely that the Ant Core plug-in would have this class on its classpath
-(or that of any of its prerequisites). To address this, clients should
-define an extension which plugs into this extension-point and maps a name
-onto a class. The Ant plug-in can then request that the declaring
-plug-in load the specified class.
-<p><b><i>Configuration Markup:</i></b>
-<p><tt> <!ELEMENT antObject EMPTY></tt>
-<br><tt> <!ATTLIST antObject</tt>
-<br><tt> name
-CDATA #REQUIRED</tt>
-<br><tt> class
-CDATA #REQUIRED</tt>
-<br><tt> library
-CDATA #REQUIRED</tt>
-<br><tt> ></tt>
-<ul>
-<li>
-<b>name -</b> name of the class to be defined</li>
-
-<li>
-<b>class</b> - the fully qualified name of a Java class</li>
-
-<li>
-<b>library</b> - a path relative to the plug-in install location for the
-library containing the object</li>
-</ul>
-<b><i>Examples: </i></b>The following is an example of an object declaration:
-<p><tt> <extension point="org.eclipse.ant.core.antObject"></tt>
-<br><tt> <antObject name="com.example.Foo"
-class="com.example.Foo"/></tt>
-<br><tt> </extension></tt>
-<p><b><i>API Information</i>:</b><i> </i>The objects declared via this
-extension-point are accessible though the following API:
-<p><tt> org.eclipse.core.ant.AntPlugin.getObjectExtensions</tt>
-<p><b><i>Supplied Implementation:</i></b> The platform itself does not
-supply any object extension.
-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001. All Rights Reserved." BORDER=0 height=12 width=195></a>
-</body>
-</html>
diff --git a/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antTasks.html b/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antTasks.html
deleted file mode 100644
index a6da96c..0000000
--- a/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antTasks.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.7 [en] (WinNT; I) [Netscape]">
- <title>AntTasks</title>
-</head>
-<body link="#0000FF" vlink="#800080">
-
-<center>
-<h1>
-AntTasks</h1></center>
-<b><i>Identifier: </i></b>org.eclipse.ant.core.antTasks
-<p><b><i>Description: </i></b>Allows plug-ins to define arbitrary Ant tasks
-for use by the Ant infrastructure. The standard Ant infrastructure
-allows for the addition of arbitrary tasks. Unfortunately, it is
-unlikely that the Ant Core plug-in would have the classes required by these
-tasks on its classpath (or that of any of its prerequisites). To
-address this, clients should define an extension which plugs into this
-extension-point and maps a task name onto a class. The Ant plug-in
-can then request that the declaring plug-in load the specified class.
-<p><b><i>Configuration Markup:</i></b>
-<p><tt> <!ELEMENT antTask EMPTY></tt>
-<br><tt> <!ATTLIST antTask</tt>
-<br><tt> name
-CDATA #REQUIRED</tt>
-<br><tt> class
-CDATA #REQUIRED</tt>
-<br><tt> library
-CDATA #REQUIRED</tt>
-<br><tt> ></tt>
-<ul>
-<li>
-<b>name -</b> name of the task to be defined</li>
-
-<li>
-<b>class</b> - the fully qualified name of a Java class implementing the
-task. Generally this class must be a subclass of <tt>org.apache.tools.ant.Task</tt>.</li>
-
-<li>
-<b>library</b> - a path relative to the plug-in install location for the
-library containing the task</li>
-</ul>
-<b><i>Examples: </i></b>The following is an example of an object declaration:
-<p><tt> <extension point="org.eclipse.ant.core.antTask"></tt>
-<br><tt> <antTask name="coolTask" class="com.example.CoolTask"/></tt>
-<br><tt> </extension></tt>
-<p><b><i>API Information</i>:</b><i> </i>The objects declared via this
-extension-point are accessible though the following API:
-<p><tt> org.eclipse.core.ant.AntPlugin.getTaskExtensions</tt>
-<p><b><i>Supplied Implementation:</i></b> The platform itself supplies
-a number of tasks including <tt>incremental, javac and refreshLocal</tt>.
-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001. All Rights Reserved." BORDER=0 height=12 width=195></a>
-</body>
-</html>
diff --git a/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antTypes.html b/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antTypes.html
deleted file mode 100644
index eadff6d..0000000
--- a/ant/org.eclipse.ant.core/doc/org_eclipse_ant_core_antTypes.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.7 [en] (WinNT; I) [Netscape]">
- <title>AntObjects</title>
-</head>
-<body link="#0000FF" vlink="#800080">
-
-<center>
-<h1>
-AntTypes</h1></center>
-<b><i>Identifier: </i></b>org.eclipse.ant.core.antTypes
-<p><b><i>Description: </i></b>Allows plug-ins to define arbitrary Ant datatypes
-for use by the Ant infrastructure. The standard Ant infrastructure
-allows for the addition of arbitrary datatypes. Unfortunately, it
-is unlikely that the Ant Core plug-in would have the classes required by
-these datatypes on its classpath (or that of any of its prerequisites).
-To address this, clients should define an extension which plugs into this
-extension-point and maps a datatype name onto a class. The Ant plug-in
-can then request that the declaring plug-in load the specified class.
-<p><b><i>Configuration Markup:</i></b>
-<p><tt> <!ELEMENT antType EMPTY></tt>
-<br><tt> <!ATTLIST antType</tt>
-<br><tt> name
-CDATA #REQUIRED</tt>
-<br><tt> class
-CDATA #REQUIRED</tt>
-<br><tt> library
-CDATA #REQUIRED</tt>
-<br><tt> ></tt>
-<ul>
-<li>
-<b>name -</b> name of the task to be defined</li>
-
-<li>
-<b>class</b> - the fully qualified name of a Java class implementing the
-datatype. Generally this class must be a subclass of <tt>org.apache.tools.ant.types.DataType</tt>.</li>
-
-<li>
-<b>library</b> - a path relative to the plug-in install location for the
-library containing the type</li>
-</ul>
-<b><i>Examples: </i></b>The following is an example of an object declaration:
-<p><tt> <extension point="org.eclipse.ant.core.antType"></tt>
-<br><tt> <antTask name="coolType" class="com.example.CoolType"/></tt>
-<br><tt> </extension></tt>
-<p><b><i>API Information</i>:</b><i> </i>The objects declared via this
-extension-point are accessible though the following API:
-<p><tt> org.eclipse.core.ant.AntPlugin.getTypeExtensions</tt>
-<p><b><i>Supplied Implementation:</i></b> The platform itself supplies
-a number of datatypes including <tt>commaPatternSet</tt>.
-<p><a href="hglegal.htm"><img SRC="ngibmcpy.gif" ALT="Copyright IBM Corp. 2000, 2001. All Rights Reserved." BORDER=0 height=12 width=195></a>
-</body>
-</html>
diff --git a/ant/org.eclipse.ant.core/plugin.properties b/ant/org.eclipse.ant.core/plugin.properties
deleted file mode 100644
index 172c8da..0000000
--- a/ant/org.eclipse.ant.core/plugin.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-pluginName = Ant Build Tool Core
-providerName = Object Technology International, Inc.
-objectsName = Ant Object Definitions
-tasksName = Ant Task Definitions
-typesName = Ant Type Definitions
diff --git a/ant/org.eclipse.ant.core/plugin.xml b/ant/org.eclipse.ant.core/plugin.xml
deleted file mode 100644
index ecdda07..0000000
--- a/ant/org.eclipse.ant.core/plugin.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin
- id="org.eclipse.ant.core"
- name="%pluginName"
- version="2.0.0"
- provider-name="%providerName"
- class="org.eclipse.ant.core.AntCorePlugin">
-
- <requires>
- <import plugin="org.apache.xerces"/>
- </requires>
-
- <runtime>
- <library name="antsupport.jar">
- <export name="*"/>
- </library>
- </runtime>
-
- <extension-point id="antObjects" name="%objectsName"/>
- <extension-point id="antTasks" name="%tasksName"/>
- <extension-point id="antTypes" name="%typesName"/>
-
- <!-- Applications -->
- <extension
- id="antRunner"
- point="org.eclipse.core.runtime.applications">
- <application>
- <run
- class="org.eclipse.ant.core.AntRunner">
- </run>
- </application>
- </extension>
-
- <!-- Objects -->
- <extension point="org.eclipse.ant.core.antObjects">
- <antObject
- name="org.eclipse.ant.internal.core.ant.InternalAntRunner"
- class="org.eclipse.ant.internal.core.ant.InternalAntRunner"
- library="lib/antsupportlib.jar">
- </antObject>
- </extension>
-
-</plugin>
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java
deleted file mode 100644
index cbef820..0000000
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntCorePlugin.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.core;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.ant.internal.core.AntCorePreferences;
-import org.eclipse.ant.internal.core.IAntCoreConstants;
-import org.eclipse.core.runtime.*;
-
-public class AntCorePlugin extends Plugin implements IAntCoreConstants {
-
- /**
- * The single instance of this plug-in runtime class.
- */
- private static AntCorePlugin plugin;
-
- /**
- * Table of Ant tasks (IConfigurationElement) added through the tasks extension point
- */
- private Map taskExtensions;
-
- /**
- * Table of Ant objects (IConfigurationElement) added through the objects extension point
- */
- private Map objectExtensions;
-
- /**
- * Table of Ant ypes (IConfigurationElement) added through the types extension point
- */
- private Map typeExtensions;
-
- /**
- *
- */
- private AntCorePreferences preferences;
-
- /**
- * Unique identifier constant (value <code>"org.eclipse.ant.core"</code>)
- * for the Ant Core plug-in.
- */
- public static final String PI_ANTCORE= "org.eclipse.ant.core";
-
- /**
- * Simple identifier constant (value <code>"antTasks"</code>)
- * for the Ant tasks extension point.
- */
- public static final String PT_TASKS = "antTasks";
-
- /**
- * Simple identifier constant (value <code>"antObjects"</code>)
- * for the Ant tasks extension point.
- */
- public static final String PT_OBJECTS = "antObjects";
-
- /**
- * Simple identifier constant (value <code>"antTypes"</code>)
- * for the Ant tasks extension point.
- */
- public static final String PT_TYPES = "antTypes";
-
- /**
- * Simple identifier constant (value <code>"class"</code>)
- * of a tag that appears in Ant extensions.
- */
- public static final String CLASS = "class";
-
- /**
- * Simple identifier constant (value <code>"name"</code>)
- * of a tag that appears in Ant extensions.
- */
- public static final String NAME = "name";
-
- /**
- * Simple identifier constant (value <code>"library"</code>)
- * of a tag that appears in Ant extensions.
- */
- public static final String LIBRARY = "library";
-
-public AntCorePlugin(IPluginDescriptor descriptor) {
- super(descriptor);
- plugin = this;
-}
-
-public void startup() throws CoreException {
- taskExtensions = extractExtensions(PT_TASKS);
- objectExtensions = extractExtensions(PT_OBJECTS);
- typeExtensions = extractExtensions(PT_TYPES);
-}
-
-public void shutdown() throws CoreException {
- if (preferences == null)
- return;
- preferences.updatePluginPreferences();
- savePluginPreferences();
-}
-
-protected Map extractExtensions(String point) {
- IExtensionPoint extensionPoint = getDescriptor().getExtensionPoint(point);
- if (extensionPoint == null)
- return null;
- IConfigurationElement[] extensions = extensionPoint.getConfigurationElements();
- Map result = new HashMap(extensions.length);
- for (int i = 0; i < extensions.length; i++) {
- String name = extensions[i].getAttribute(NAME);
- result.put(name, extensions[i]);
- }
- return result;
-}
-
-public AntCorePreferences getPreferences() {
- if (preferences == null)
- preferences = new AntCorePreferences(taskExtensions, objectExtensions, typeExtensions);
- return preferences;
-}
-
-/**
- * Returns this plug-in.
- *
- * @return the single instance of this plug-in runtime class
- */
-public static AntCorePlugin getPlugin() {
- return plugin;
-}
-
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntRunner.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntRunner.java
deleted file mode 100644
index 9e4967a..0000000
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/AntRunner.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.core;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.util.*;
-
-import org.eclipse.ant.internal.core.*;
-import org.eclipse.ant.internal.core.AntClassLoader;
-import org.eclipse.ant.internal.core.AntCorePreferences;
-import org.eclipse.core.boot.IPlatformRunnable;
-import org.eclipse.core.runtime.*;
-/**
- * Entry point for running Ant scripts inside Eclipse.
- */
-public class AntRunner implements IPlatformRunnable, IAntCoreConstants {
-
- protected String buildFileLocation = DEFAULT_BUILD_FILENAME;
- protected List buildListeners;
- protected Vector targets;
- protected Map userProperties;
- protected int messageOutputLevel = 2; // Project.MSG_INFO
- protected String buildLoggerClassName;
- protected String arguments;
-
-public AntRunner() {
- buildListeners = new ArrayList(5);
-}
-
-protected ClassLoader getClassLoader() {
- AntCorePreferences preferences = AntCorePlugin.getPlugin().getPreferences();
- URL[] urls = preferences.getURLs();
- ClassLoader[] pluginLoaders = preferences.getPluginClassLoaders();
- return new AntClassLoader(urls, pluginLoaders, null);
-}
-
-/**
- * Sets the buildFileLocation.
- *
- * @param buildFileLocation the file system location of the build file
- */
-public void setBuildFileLocation(String buildFileLocation) {
- if (buildFileLocation == null)
- this.buildFileLocation = DEFAULT_BUILD_FILENAME;
- else
- this.buildFileLocation = buildFileLocation;
-}
-
-/**
- *
- *
- * @param
- */
-public void setMessageOutputLevel(int level) {
- this.messageOutputLevel = level;
-}
-
-/**
- *
- */
-public void setArguments(String arguments) {
- this.arguments = arguments;
-}
-
-/**
- * Sets the executionTargets in the order they need to run.
- *
- */
-public void setExecutionTargets(String[] executionTargets) {
- targets = new Vector(10);
- for (int i = 0; i < executionTargets.length; i++)
- targets.add(executionTargets[i]);
-}
-
-/**
- * Adds a build listener.
- *
- * @param buildListener a build listener
- */
-public void addBuildListener(String className) {
- if (className == null)
- return;
- buildListeners.add(className);
-}
-
-/**
- * Adds a build logger.
- *
- * @param className a BuildLogger class name
- */
-public void addBuildLogger(String className) {
- this.buildLoggerClassName = className;
-}
-
-/**
- * Adds user properties.
- */
-public void addUserProperties(Map properties) {
- this.userProperties = properties;
-}
-
-/**
- * Runs the build script.
- */
-public void run() throws CoreException {
- try {
- ClassLoader loader = getClassLoader();
- Class classInternalAntRunner = loader.loadClass("org.eclipse.ant.internal.core.ant.InternalAntRunner");
- Object runner = classInternalAntRunner.newInstance();
- // set build file
- Method setBuildFileLocation = classInternalAntRunner.getMethod("setBuildFileLocation", new Class[] {String.class});
- setBuildFileLocation.invoke(runner, new Object[] {buildFileLocation});
- // add listeners
- Method addBuildListeners = classInternalAntRunner.getMethod("addBuildListeners", new Class[] {List.class});
- addBuildListeners.invoke(runner, new Object[] {buildListeners});
- // add build logger
- if (buildLoggerClassName != null) {
- Method addBuildLogger = classInternalAntRunner.getMethod("addBuildLogger", new Class[] {String.class});
- addBuildLogger.invoke(runner, new Object[] {buildLoggerClassName});
- }
- // add properties
- Method addUserProperties = classInternalAntRunner.getMethod("addUserProperties", new Class[] {Map.class});
- addUserProperties.invoke(runner, new Object[] {userProperties});
- // set message output level
- Method setMessageOutputLevel = classInternalAntRunner.getMethod("setMessageOutputLevel", new Class[] {int.class});
- setMessageOutputLevel.invoke(runner, new Object[] {new Integer(messageOutputLevel)});
- // set execution targets
- if (targets != null) {
- Method setExecutionTargets = classInternalAntRunner.getMethod("setExecutionTargets", new Class[] {Vector.class});
- setExecutionTargets.invoke(runner, new Object[] {targets});
- }
- // set extra arguments
- if (arguments != null) {
- Method setArguments = classInternalAntRunner.getMethod("setArguments", new Class[] {String.class});
- setArguments.invoke(runner, new Object[] {arguments});
- }
- // run
- Method run = classInternalAntRunner.getMethod("run", null);
- run.invoke(runner, null);
- } catch (InvocationTargetException e) {
- Throwable realException = e.getTargetException();
- throw new CoreException(new Status(IStatus.ERROR, PI_ANTCORE, ERROR_RUNNING_SCRIPT, Policy.bind("error.buildFailed"), realException));
- } catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR, PI_ANTCORE, ERROR_RUNNING_SCRIPT, Policy.bind("error.buildFailed"), e));
- }
-}
-
-/**
- * Invokes the building of a project object and executes a build using either a given
- * target or the default target.
- *
- * @param argArray the command line arguments
- * @exception execution exceptions
- */
-public Object run(Object argArray) throws Exception {
- ClassLoader loader = getClassLoader();
- Class classInternalAntRunner = loader.loadClass("org.eclipse.ant.internal.core.ant.InternalAntRunner");
- Object runner = classInternalAntRunner.newInstance();
- Method run = classInternalAntRunner.getMethod("run", new Class[] {Object.class});
- run.invoke(runner, new Object[] {argArray});
- return null;
-}
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/package.html b/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/package.html
deleted file mode 100644
index a931089..0000000
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/core/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides support for running the Ant build tool in the platform.
-<h2>
-Package Specification</h2>
-This package defines a number of task and data types and various infrastructure
-pieces which make Ant in the platform easier and more powerful.
-</body>
-</html>
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClassLoader.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClassLoader.java
deleted file mode 100644
index 41c5a92..0000000
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntClassLoader.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.core;
-
-import java.net.URL;
-import java.net.URLClassLoader;
-
-public class AntClassLoader extends URLClassLoader {
-
- protected ClassLoader[] pluginLoaders;
-
-public AntClassLoader(URL[] urls, ClassLoader[] pluginLoaders, ClassLoader parent) {
- super(urls, parent);
- this.pluginLoaders = pluginLoaders;
-}
-
-public Class loadClass(String name) throws ClassNotFoundException {
- Class result = loadClassParent(name);
- if (result == null)
- result = loadClassURLs(name);
- if (result == null)
- result = loadClassPlugins(name);
- if (result == null)
- throw new ClassNotFoundException(name);
- return result;
-}
-
-protected Class loadClassParent(String name) {
- try {
- ClassLoader parent = getParent();
- if (parent != null)
- return parent.loadClass(name);
- } catch (ClassNotFoundException e) {
- }
- return null;
-}
-
-protected Class loadClassURLs(String name) {
- try {
- return super.loadClass(name);
- } catch (ClassNotFoundException e) {
- }
- return null;
-}
-
-protected Class loadClassPlugins(String name) {
- Class result = null;
- if (pluginLoaders != null) {
- for (int i = 0; (i < pluginLoaders.length) && (result == null); i++) {
- try {
- result = pluginLoaders[i].loadClass(name);
- } catch (ClassNotFoundException e) {
- }
- }
- }
- return result;
-}
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntCorePreferences.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntCorePreferences.java
deleted file mode 100644
index 6b05f02..0000000
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/AntCorePreferences.java
+++ /dev/null
@@ -1,395 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.core;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-
-import org.eclipse.ant.core.AntCorePlugin;
-import org.eclipse.core.runtime.*;
-/**
- *
- */
-public class AntCorePreferences implements IAntCoreConstants {
-
- protected List defaultTasks;
- protected List defaultTypes;
- protected List defaultURLs;
- protected Task[] customTasks;
- protected Type[] customTypes;
- protected URL[] customURLs;
- protected Map defaultObjects;
- protected List pluginClassLoaders;
-
-public AntCorePreferences(Map defaultTasks, Map defaultObjects, Map defaultTypes) {
- initializePluginClassLoaders();
- defaultURLs = new ArrayList(20);
- this.defaultTasks = computeDefaultTasks(defaultTasks);
- this.defaultTypes = computeDefaultTypes(defaultTypes);
- this.defaultObjects = computeDefaultObjects(defaultObjects);
- restoreCustomObjects();
-}
-
-protected void restoreCustomObjects() {
- Preferences prefs = AntCorePlugin.getPlugin().getPluginPreferences();
- // tasks
- String tasks = prefs.getString(PREFERENCE_TASKS);
- if (tasks.equals(""))
- customTasks = new Task[0];
- else
- customTasks = extractTasks(prefs, getArrayFromString(tasks));
- // types
- String types = prefs.getString(PREFERENCE_TYPES);
- if (types.equals(""))
- customTypes = new Type[0];
- else
- customTypes = extractTypes(prefs, getArrayFromString(types));
- // urls
- String urls = prefs.getString(PREFERENCE_URLS);
- if (urls.equals(""))
- customURLs = getDefaultCustomURLs();
- else
- customURLs = extractURLs(prefs, getArrayFromString(urls));
-}
-
-protected Task[] extractTasks(Preferences prefs, String[] tasks) {
- List result = new ArrayList(10);
- for (int i = 0; i < tasks.length; i++) {
- try {
- String taskName = tasks[i];
- String[] values = getArrayFromString(prefs.getString(PREFIX_TASK + taskName));
- Task task = new Task();
- task.setTaskName(taskName);
- task.setClassName(values[0]);
- task.setLibrary(new URL(values[1]));
- result.add(task);
- } catch (MalformedURLException e) {
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, ERROR_MALFORMED_URL, Policy.bind("exception.malformedURL"), e);
- AntCorePlugin.getPlugin().getLog().log(status);
- }
- }
- return (Task[]) result.toArray(new Task[result.size()]);
-}
-
-protected Type[] extractTypes(Preferences prefs, String[] types) {
- List result = new ArrayList(10);
- for (int i = 0; i < types.length; i++) {
- try {
- String typeName = types[i];
- String[] values = getArrayFromString(prefs.getString(PREFIX_TYPE + typeName));
- Type type = new Type();
- type.setTypeName(typeName);
- type.setClassName(values[0]);
- type.setLibrary(new URL(values[1]));
- result.add(type);
- } catch (MalformedURLException e) {
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, ERROR_MALFORMED_URL, Policy.bind("exception.malformedURL"), e);
- AntCorePlugin.getPlugin().getLog().log(status);
- }
- }
- return (Type[]) result.toArray(new Type[result.size()]);
-}
-
-protected URL[] extractURLs(Preferences prefs, String[] urls) {
- List result = new ArrayList(10);
- for (int i = 0; i < urls.length; i++) {
- try {
- result.add(new URL(urls[i]));
- } catch (MalformedURLException e) {
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, ERROR_MALFORMED_URL, Policy.bind("exception.malformedURL"), e);
- AntCorePlugin.getPlugin().getLog().log(status);
- }
- }
- return (URL[]) result.toArray(new URL[result.size()]);
-}
-
-
-
-
-public URL[] getDefaultCustomURLs() {
- List result = new ArrayList(10);
- IPluginDescriptor descriptor = Platform.getPlugin("org.apache.ant").getDescriptor();
- addLibraries(descriptor, result);
- descriptor = Platform.getPlugin("org.apache.xerces").getDescriptor();
- addLibraries(descriptor, result);
- addToolsJar(result);
- return (URL[]) result.toArray(new URL[result.size()]);
-}
-
-protected List computeDefaultTasks(Map tasks) {
- List result = new ArrayList(10);
- for (Iterator iterator = tasks.entrySet().iterator(); iterator.hasNext();) {
- Map.Entry entry = (Map.Entry) iterator.next();
- Task task = new Task();
- task.setTaskName((String) entry.getKey());
- IConfigurationElement element = (IConfigurationElement) entry.getValue();
- task.setClassName(element.getAttribute(AntCorePlugin.CLASS));
- String library = element.getAttribute(AntCorePlugin.LIBRARY);
- if (library == null) {
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, ERROR_LIBRARY_NOT_SPECIFIED, Policy.bind("error.libraryNotSpecified", task.getTaskName()), null);
- AntCorePlugin.getPlugin().getLog().log(status);
- continue;
- }
- IPluginDescriptor descriptor = element.getDeclaringExtension().getDeclaringPluginDescriptor();
- try {
- URL url = Platform.asLocalURL(new URL(descriptor.getInstallURL(), library));
- task.setLibrary(url);
- defaultURLs.add(url);
- } catch (Exception e) {
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, ERROR_MALFORMED_URL, Policy.bind("exception.malformedURL"), e);
- AntCorePlugin.getPlugin().getLog().log(status);
- continue;
- }
- result.add(task);
- addPluginClassLoader(descriptor.getPluginClassLoader());
- }
- return result;
-}
-
-protected List computeDefaultTypes(Map types) {
- List result = new ArrayList(10);
- for (Iterator iterator = types.entrySet().iterator(); iterator.hasNext();) {
- Map.Entry entry = (Map.Entry) iterator.next();
- Type type = new Type();
- type.setTypeName((String) entry.getKey());
- IConfigurationElement element = (IConfigurationElement) entry.getValue();
- type.setClassName(element.getAttribute(AntCorePlugin.CLASS));
- String library = element.getAttribute(AntCorePlugin.LIBRARY);
- if (library == null) {
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, ERROR_LIBRARY_NOT_SPECIFIED, Policy.bind("error.libraryNotSpecified", type.getTypeName()), null);
- AntCorePlugin.getPlugin().getLog().log(status);
- continue;
- }
- IPluginDescriptor descriptor = element.getDeclaringExtension().getDeclaringPluginDescriptor();
- try {
- URL url = Platform.asLocalURL(new URL(descriptor.getInstallURL(), library));
- type.setLibrary(url);
- defaultURLs.add(url);
- } catch (Exception e) {
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, ERROR_MALFORMED_URL, Policy.bind("exception.malformedURL"), e);
- AntCorePlugin.getPlugin().getLog().log(status);
- continue;
- }
- result.add(type);
- addPluginClassLoader(descriptor.getPluginClassLoader());
- }
- return result;
-}
-
-/**
- * It returns the same objects as passed in the arguments. The only difference
- * is that it does extract other useful information.
- */
-protected Map computeDefaultObjects(Map objects) {
- for (Iterator iterator = objects.entrySet().iterator(); iterator.hasNext();) {
- Map.Entry entry = (Map.Entry) iterator.next();
- IConfigurationElement element = (IConfigurationElement) entry.getValue();
- String library = element.getAttribute(AntCorePlugin.LIBRARY);
- if (library == null) {
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, ERROR_LIBRARY_NOT_SPECIFIED, Policy.bind("error.libraryNotSpecified", (String) entry.getKey()), null);
- AntCorePlugin.getPlugin().getLog().log(status);
- continue;
- }
- IPluginDescriptor descriptor = element.getDeclaringExtension().getDeclaringPluginDescriptor();
- try {
- URL url = Platform.asLocalURL(new URL(descriptor.getInstallURL(), library));
- defaultURLs.add(url);
- } catch (Exception e) {
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, ERROR_MALFORMED_URL, Policy.bind("exception.malformedURL"), e);
- AntCorePlugin.getPlugin().getLog().log(status);
- continue;
- }
- addPluginClassLoader(descriptor.getPluginClassLoader());
- }
- return objects;
-}
-
-/**
- * Ant running through the command line tries to find tools.jar to help the user. Try
- * emulating the same behaviour here.
- */
-protected void addToolsJar(List destination) {
- IPath path = new Path(System.getProperty("java.home"));
- if (path.lastSegment().equalsIgnoreCase("jre"))
- path = path.removeLastSegments(1);
- path = path.append("lib").append("tools.jar");
- File tools = path.toFile();
- if (!tools.exists())
- return;
- try {
- destination.add(tools.toURL());
- } catch (MalformedURLException e) {
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, ERROR_MALFORMED_URL, Policy.bind("exception.malformedURL"), e);
- AntCorePlugin.getPlugin().getLog().log(status);
- }
-}
-
-protected void addLibraries(IPluginDescriptor source, List destination) {
- URL root = source.getInstallURL();
- ILibrary[] libraries = source.getRuntimeLibraries();
- for (int i = 0; i < libraries.length; i++) {
- try {
- URL url = new URL(root, libraries[i].getPath().toString());
- destination.add(Platform.asLocalURL(url));
- } catch (Exception e) {
- // FIXME: add error code and better message
- IStatus status = new Status(IStatus.ERROR, AntCorePlugin.PI_ANTCORE, -1, e.getMessage(), e);
- AntCorePlugin.getPlugin().getLog().log(status);
- continue;
- }
- }
-}
-
-
-
-protected void addPluginClassLoader(ClassLoader loader) {
- if (!pluginClassLoaders.contains(loader))
- pluginClassLoaders.add(loader);
-}
-
-
-
-public URL[] getURLs() {
- List result = new ArrayList(10);
- if (defaultURLs != null)
- result.addAll(defaultURLs);
- if (customURLs != null)
- result.addAll(Arrays.asList(customURLs));
- return (URL[]) result.toArray(new URL[result.size()]);
-}
-
-public ClassLoader[] getPluginClassLoaders() {
- return (ClassLoader[]) pluginClassLoaders.toArray(new ClassLoader[pluginClassLoaders.size()]);
-}
-
-protected void initializePluginClassLoaders() {
- pluginClassLoaders = new ArrayList(20);
- // ant.core should always be present
- pluginClassLoaders.add(Platform.getPlugin(AntCorePlugin.PI_ANTCORE).getDescriptor().getPluginClassLoader());
-}
-
-
-/**
- * Returns default + custom tasks.
- */
-public List getTasks() {
- List result = new ArrayList(10);
- if (defaultTasks != null)
- result.addAll(defaultTasks);
- if (customTasks != null)
- result.addAll(Arrays.asList(customTasks));
- return result;
-}
-
-public Task[] getCustomTasks() {
- return customTasks;
-}
-
-public Type[] getCustomTypes() {
- return customTypes;
-}
-
-public URL[] getCustomURLs() {
- return customURLs;
-}
-
-public void setCustomTasks(Task[] tasks) {
- this.customTasks = tasks;
-}
-
-public void setCustomTypes(Type[] types) {
- this.customTypes = types;
-}
-
-public void setCustomURLs(URL[] urls) {
- this.customURLs = urls;
-}
-
-/**
- * Returns default + custom types.
- */
-public List getTypes() {
- List result = new ArrayList(10);
- if (defaultTypes != null)
- result.addAll(defaultTypes);
- if (customTypes != null)
- result.addAll(Arrays.asList(customTypes));
- return result;
-}
-
-/**
- * Convert a list of tokens into an array. The list separator has to be specified.
- */
-public static String[] getArrayFromString(String list, String separator) {
- if (list == null || list.trim().equals(""))
- return new String[0];
- ArrayList result = new ArrayList();
- for (StringTokenizer tokens = new StringTokenizer(list, separator); tokens.hasMoreTokens();) {
- String token = tokens.nextToken().trim();
- if (!token.equals(""))
- result.add(token);
- }
- return (String[]) result.toArray(new String[result.size()]);
-}
-
-/**
- * convert a list of comma-separated tokens into an array
- */
-public static String[] getArrayFromString(String list) {
- return getArrayFromString(list, ",");
-}
-
-public void updatePluginPreferences() {
- Preferences prefs = AntCorePlugin.getPlugin().getPluginPreferences();
- updateTasks(prefs);
- updateTypes(prefs);
- updateURLs(prefs);
-}
-
-protected void updateTasks(Preferences prefs) {
- if (customTasks.length == 0) {
- prefs.setValue(PREFERENCE_TASKS, "");
- return;
- }
- StringBuffer tasks = new StringBuffer();
- for (int i = 0; i < customTasks.length; i++) {
- tasks.append(customTasks[i].getTaskName());
- tasks.append(",");
- prefs.setValue(PREFIX_TASK + customTasks[i].getTaskName(), customTasks[i].getClassName() + "," + customTasks[i].getLibrary().toExternalForm());
- }
- prefs.setValue(PREFERENCE_TASKS, tasks.toString());
-}
-
-protected void updateTypes(Preferences prefs) {
- if (customTypes.length == 0) {
- prefs.setValue(PREFERENCE_TYPES, "");
- return;
- }
- StringBuffer types = new StringBuffer();
- for (int i = 0; i < customTypes.length; i++) {
- types.append(customTypes[i].getTypeName());
- types.append(",");
- prefs.setValue(PREFIX_TYPE + customTypes[i].getTypeName(), customTypes[i].getClassName() + "," + customTypes[i].getLibrary().toExternalForm());
- }
- prefs.setValue(PREFERENCE_TYPES, types.toString());
-}
-
-protected void updateURLs(Preferences prefs) {
- StringBuffer urls = new StringBuffer();
- for (int i = 0; i < customURLs.length; i++) {
- urls.append(customURLs[i].toExternalForm());
- urls.append(",");
- }
- prefs.setValue(PREFERENCE_URLS, urls.toString());
-}
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/IAntCoreConstants.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/IAntCoreConstants.java
deleted file mode 100644
index bd47ef0..0000000
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/IAntCoreConstants.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.core;
-
-/**
- * Common constants.
- */
-public interface IAntCoreConstants {
-
- // default values
- public static final String PI_ANTCORE = "org.eclipse.ant.core";
- public static final String DEFAULT_BUILD_FILENAME = "build.xml";
-
- // error codes
- public static final int ERROR_RUNNING_SCRIPT = 1;
- public static final int ERROR_MALFORMED_URL = 2;
- public static final int ERROR_LIBRARY_NOT_SPECIFIED = 3;
-
- // preferences
- public static final String PREFERENCE_TASKS = "tasks";
- public static final String PREFERENCE_TYPES = "types";
- public static final String PREFERENCE_URLS = "urls";
- public static final String PREFIX_TASK = "task.";
- public static final String PREFIX_TYPE = "type.";
- public static final String PREFIX_URL = "url.";
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Policy.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Policy.java
deleted file mode 100644
index 2e8ff68..0000000
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Policy.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2000,2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.core;
-
-import java.text.MessageFormat;
-import java.util.*;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-
-public class Policy {
- private static final String bundleName = "org.eclipse.ant.internal.core.messages";//$NON-NLS-1$
- private static ResourceBundle bundle = ResourceBundle.getBundle(bundleName, Locale.getDefault());
-
-/**
- * Lookup the message with the given ID in this catalog
- */
-public static String bind(String id) {
- return bind(id, (String[])null);
-}
-public static IProgressMonitor monitorFor(IProgressMonitor monitor) {
- if (monitor == null)
- return new NullProgressMonitor();
- return monitor;
-}
-/**
- * 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});
-}
-
-/**
- * Lookup the message with the given ID in this catalog and bind its
- * substitution locations with the given string values.
- */
-public static String bind(String id, String[] bindings) {
- if (id == null)
- return "No message available";//$NON-NLS-1$
- String message = null;
- try {
- message = bundle.getString(id);
- } catch (MissingResourceException e) {
- // If we got an exception looking for the message, fail gracefully by just returning
- // the id we were looking for. In most cases this is semi-informative so is not too bad.
- return "Missing message: " + id + " in: " + bundleName;//$NON-NLS-1$
- }
- if (bindings == null)
- return message;
- return MessageFormat.format(message, bindings);
-}
-}
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Task.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Task.java
deleted file mode 100644
index 9d09cda..0000000
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Task.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.core;
-
-import java.net.URL;
-
-public class Task {
-
- protected String taskName;
- protected String className;
- protected URL library;
-
-/**
- * Gets the className.
- * @return Returns a String
- */
-public String getClassName() {
- return className;
-}
-
-/**
- * Sets the className.
- * @param className The className to set
- */
-public void setClassName(String className) {
- this.className = className;
-}
-
-/**
- * Gets the library.
- * @return Returns a URL
- */
-public URL getLibrary() {
- return library;
-}
-
-/**
- * Sets the library.
- * @param library The library to set
- */
-public void setLibrary(URL library) {
- this.library = library;
-}
-
-/**
- * Gets the taskName.
- * @return Returns a String
- */
-public String getTaskName() {
- return taskName;
-}
-
-/**
- * Sets the taskName.
- * @param taskName The taskName to set
- */
-public void setTaskName(String taskName) {
- this.taskName = taskName;
-}
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Type.java b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Type.java
deleted file mode 100644
index 3ba3664..0000000
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/Type.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.core;
-
-import java.net.URL;
-
-public class Type {
-
- protected String typeName;
- protected String className;
- protected URL library;
-
-/**
- * Gets the className.
- * @return Returns a String
- */
-public String getClassName() {
- return className;
-}
-
-/**
- * Sets the className.
- * @param className The className to set
- */
-public void setClassName(String className) {
- this.className = className;
-}
-
-/**
- * Gets the library.
- * @return Returns a URL
- */
-public URL getLibrary() {
- return library;
-}
-
-/**
- * Sets the library.
- * @param library The library to set
- */
-public void setLibrary(URL library) {
- this.library = library;
-}
-
-/**
- * Gets the taskName.
- * @return Returns a String
- */
-public String getTypeName() {
- return typeName;
-}
-
-/**
- * Sets the taskName.
- * @param taskName The taskName to set
- */
-public void setTypeName(String taskName) {
- this.typeName = taskName;
-}
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/messages.properties b/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/messages.properties
deleted file mode 100644
index 7603d25..0000000
--- a/ant/org.eclipse.ant.core/src/org/eclipse/ant/internal/core/messages.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-### Ant Core plugin message catalog
-
-### errors
-error.buildFailed = Build Failed.
-error.libraryNotSpecified = Library not specified for: {0}
-
-### exceptions
-exception.malformedURL = Malformed URL.
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntRunner.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntRunner.java
deleted file mode 100644
index 2713569..0000000
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/InternalAntRunner.java
+++ /dev/null
@@ -1,732 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.core.ant;
-
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999, 2000 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Ant", and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-import java.io.*;
-import java.util.*;
-
-import org.apache.tools.ant.*;
-import org.eclipse.ant.core.AntCorePlugin;
-import org.eclipse.ant.internal.core.*;
-import org.eclipse.ant.internal.core.Policy;
-import org.eclipse.ant.internal.core.Task;
-import org.eclipse.core.runtime.IConfigurationElement;
-/**
- * Eclipse application entry point into Ant. Derived from the original Ant Main class
- * to ensure that the functionality is equivalent when running in the platform.
- * <p>
- * <b>Note:</b> This class/interface is part of an interim API that is still under
- * development and expected to change significantly before reaching stability.
- * It is being made available at this early stage to solicit feedback from pioneering
- * adopters on the understanding that any code that uses this API will almost
- * certainly be broken (repeatedly) as the API evolves.
- * </p>
- */
-public class InternalAntRunner {
-
- /**
- *
- */
- protected List buildListeners;
-
- /**
- *
- */
- protected String buildFileLocation;
-
- /** Targets we want to run. */
- protected Vector targets;
-
- /**
- *
- */
- protected Map userProperties;
-
- /** Our current message output status. Follows Project.MSG_XXX */
- protected int messageOutputLevel = Project.MSG_INFO;
-
- /** Indicates whether output to the log is to be unadorned. */
- protected boolean emacsMode = false;
-
- /** Indicates we should only parse and display the project help information */
- protected boolean projectHelp = false;
-
- /** Stream that we are using for logging */
- private PrintStream out = System.out;
-
- /** Stream that we are using for logging error messages */
- private PrintStream err = System.err;
-
- /**
- * The Ant logger class. There may be only one logger. It will have the
- * right to use the 'out' PrintStream. The class must implements the BuildLogger
- * interface.
- */
- protected String loggerClassname = null;
-
- /** Extra arguments to be parsed as command line arguments. */
- protected String extraArguments = null;
-
- // properties
- private static final String PROPERTY_ECLIPSE_RUNNING = "eclipse.running";
-
-public InternalAntRunner() {
- buildListeners = new ArrayList(5);
-}
-
-/**
- * Adds a build listener.
- *
- * @param buildListener a build listener
- */
-public void addBuildListeners(List classNames) {
- List result = new ArrayList(10);
- try {
- for (Iterator iterator = classNames.iterator(); iterator.hasNext();) {
- String className = (String) iterator.next();
- Class listener = Class.forName(className);
- result.add(listener.newInstance());
- }
- } catch (Exception e) {
- throw new BuildException(e);
- }
- this.buildListeners = result;
-}
-
-/**
- * Adds a build logger .
- *
- * @param
- */
-public void addBuildLogger(String className) {
- this.loggerClassname = className;
-}
-
-/**
- * Adds user properties.
- */
-public void addUserProperties(Map properties) {
- this.userProperties = properties;
-}
-
-protected void addBuildListeners(Project project) {
- try {
- project.addBuildListener(createLogger());
- for (Iterator iterator = buildListeners.iterator(); iterator.hasNext();)
- project.addBuildListener((BuildListener) iterator.next());
- } catch (Exception e) {
- throw new BuildException(e);
- }
-}
-
-
-protected void setProperties(Project project) {
- project.setUserProperty(PROPERTY_ECLIPSE_RUNNING, "true");
- project.setUserProperty("ant.file" , getBuildFileLocation());
- project.setUserProperty("ant.version", getAntVersion());
- if (userProperties == null)
- return;
- for (Iterator iterator = userProperties.entrySet().iterator(); iterator.hasNext();) {
- Map.Entry entry = (Map.Entry) iterator.next();
- project.setUserProperty((String) entry.getKey(), (String) entry.getValue());
- }
-}
-
-protected void setTasks(Project project) {
- List tasks = AntCorePlugin.getPlugin().getPreferences().getTasks();
- if (tasks == null)
- return;
- try {
- for (Iterator iterator = tasks.iterator(); iterator.hasNext();) {
- Task task = (Task) iterator.next();
- Class taskClass = Class.forName(task.getClassName());
- project.addTaskDefinition(task.getTaskName(), taskClass);
- }
- } catch (ClassNotFoundException e) {
- throw new BuildException(e);
- }
-}
-
-protected void setTypes(Project project) {
- List types = AntCorePlugin.getPlugin().getPreferences().getTypes();
- if (types == null)
- return;
- try {
- for (Iterator iterator = types.iterator(); iterator.hasNext();) {
- Type type = (Type) iterator.next();
- Class typeClass = Class.forName(type.getClassName());
- project.addDataTypeDefinition(type.getTypeName(), typeClass);
- }
- } catch (Exception e) {
- throw new BuildException(e);
- }
-}
-
-
-/**
- * Parses the build script and adds necessary information into
- * the given project.
- */
-protected void parseScript(Project project) {
- File buildFile = new File(getBuildFileLocation());
- ProjectHelper.configureProject(project, buildFile);
-}
-
-/**
- * Runs the build script.
- */
-public void run() {
- if (extraArguments != null)
- processCommandLine(getArrayList(extraArguments));
- Project project = new Project();
- Throwable error = null;
- PrintStream originalErr = System.err;
- PrintStream originalOut = System.out;
- try {
- System.setOut(new PrintStream(new DemuxOutputStream(project, false)));
- System.setErr(new PrintStream(new DemuxOutputStream(project, true)));
- project.log(Policy.bind("label.buildFile", getBuildFileLocation()));
- fireBuildStarted(project);
- project.init();
- addBuildListeners(project);
- setProperties(project);
- setTasks(project);
- setTypes(project);
- parseScript(project);
- if (projectHelp) {
- printHelp(project);
- return;
- }
- if (targets != null && !targets.isEmpty())
- project.executeTargets(targets);
- else
- project.executeTarget(project.getDefaultTarget());
- } catch(RuntimeException e) {
- error = e;
- throw e;
- } catch(Error e) {
- error = e;
- throw e;
- } finally {
- if (error != null)
- error.printStackTrace();
- System.setErr(originalErr);
- System.setOut(originalOut);
- fireBuildFinished(project, error);
- }
-}
-
-/**
- * Logs a message with the client that lists the targets
- * in a project
- *
- * @param project the project to list targets from
- */
-private void printTargets(Project project) {
- // find the target with the longest name
- int maxLength = 0;
- Enumeration ptargets = project.getTargets().elements();
- String targetName;
- String targetDescription;
- Target currentTarget;
- // split the targets in top-level and sub-targets depending
- // on the presence of a description
- Vector topNames = new Vector();
- Vector topDescriptions = new Vector();
- Vector subNames = new Vector();
-
- while (ptargets.hasMoreElements()) {
- currentTarget = (Target)ptargets.nextElement();
- targetName = currentTarget.getName();
- targetDescription = currentTarget.getDescription();
- // maintain a sorted list of targets
- if (targetDescription == null) {
- int pos = findTargetPosition(subNames, targetName);
- subNames.insertElementAt(targetName, pos);
- } else {
- int pos = findTargetPosition(topNames, targetName);
- topNames.insertElementAt(targetName, pos);
- topDescriptions.insertElementAt(targetDescription, pos);
- if (targetName.length() > maxLength) {
- maxLength = targetName.length();
- }
- }
- }
-
- String defaultTarget = project.getDefaultTarget();
- if (defaultTarget != null && !"".equals(defaultTarget)) { // shouldn't need to check but...
- Vector defaultName = new Vector();
- Vector defaultDesc = null;
- defaultName.addElement(defaultTarget);
-
- int indexOfDefDesc = topNames.indexOf(defaultTarget);
- if (indexOfDefDesc >= 0) {
- defaultDesc = new Vector();
- defaultDesc.addElement(topDescriptions.elementAt(indexOfDefDesc));
- }
- printTargets(project, defaultName, defaultDesc, Policy.bind("label.defaultTarget"), maxLength);
-
- }
-
- printTargets(project, topNames, topDescriptions, Policy.bind("label.mainTargets"), maxLength);
- printTargets(project, subNames, null, Policy.bind("label.subTargets"), 0);
-}
-
-/**
- * Returns the appropriate insertion index for a given string into a sorted collection.
- *
- * @return the insertion index
- * @param names the initial collection of sorted strings
- * @param name the string whose insertion index into <code>names</code> is to be determined
- */
-private int findTargetPosition(Vector names, String name) {
- int result = names.size();
- for (int i = 0; i < names.size() && result == names.size(); i++) {
- if (name.compareTo((String) names.elementAt(i)) < 0)
- result = i;
- }
- return result;
-}
-
-/**
- * Logs a message with the client that lists the target names and optional descriptions
- *
- * @param names the targets names
- * @param descriptions the corresponding descriptions
- * @param heading the message heading
- * @param maxlen maximum length that can be allocated for a name
- */
-private void printTargets(Project project, Vector names, Vector descriptions, String heading, int maxlen) {
- // now, start printing the targets and their descriptions
- String lSep = System.getProperty("line.separator");
- // got a bit annoyed that I couldn't find a pad function
- String spaces = " ";
- while (spaces.length() < maxlen) {
- spaces += spaces;
- }
- StringBuffer msg = new StringBuffer();
- msg.append(heading + lSep + lSep);
- for (int i= 0; i < names.size(); i++) {
- msg.append(" ");
- msg.append(names.elementAt(i));
- if (descriptions != null) {
- msg.append(spaces.substring(0, maxlen - ((String) names.elementAt(i)).length() + 2));
- msg.append(descriptions.elementAt(i));
- }
- msg.append(lSep);
- }
- logMessage(project, msg.toString(), Project.MSG_INFO);
-}
-
-/**
- * Invokes the building of a project object and executes a build using either a given
- * target or the default target.
- *
- * @param argArray the command line arguments
- * @exception execution exceptions
- */
-public void run(Object argArray) throws Exception {
- boolean success = processCommandLine(getArrayList((String[]) argArray));
- if (!success)
- return;
- try {
- run();
- } catch (Exception e) {
- printMessage(e);
- throw e;
- }
-}
-
-/**
- * Prints the message of the Throwable if it is not null.
- *
- * @param t the throwable whose message is to be displayed
- */
-protected void printMessage(Throwable t) {
- String message= t.getMessage();
- if (message != null)
- logMessage(null, message, Project.MSG_ERR);
-}
-
-/**
- * Creates and returns the default build logger for logging build events to the ant log.
- *
- * @return the default build logger for logging build events to the ant log
- */
-protected BuildLogger createLogger() {
- BuildLogger logger = null;
- if (loggerClassname != null) {
- try {
- logger = (BuildLogger) (Class.forName(loggerClassname).newInstance());
- } catch (Exception e) {
- String message = Policy.bind("exception.cannotCreateLogger", loggerClassname);
- logMessage(null, message, Project.MSG_ERR);
- throw new BuildException(e);
- }
- } else {
- logger = new DefaultLogger();
- }
- logger.setMessageOutputLevel(messageOutputLevel);
- logger.setOutputPrintStream(out);
- logger.setErrorPrintStream(err);
- logger.setEmacsMode(emacsMode);
- return logger;
-}
-
-/**
- * We only have to do this because Project.fireBuildStarted is protected. If it becomes
- * public we should remove this method and call the appropriate one.
- */
-private void fireBuildStarted(Project project) {
- BuildEvent event = new BuildEvent(project);
- for (Iterator iterator = buildListeners.iterator(); iterator.hasNext();) {
- BuildListener listener = (BuildListener) iterator.next();
- listener.buildStarted(event);
- }
-}
-
-/**
- * We only have to do this because Project.fireBuildFinished is protected. If it becomes
- * public we should remove this method and call the appropriate one.
- */
-private void fireBuildFinished(Project project, Throwable error) {
- BuildEvent event = new BuildEvent(project);
- event.setException(error);
- for (Iterator iterator = buildListeners.iterator(); iterator.hasNext();) {
- BuildListener listener = (BuildListener) iterator.next();
- listener.buildFinished(event);
- }
-}
-
-protected void logMessage(Project project, String message, int priority) {
- if (project == null)
- project = new Project();
- BuildEvent event = new BuildEvent(project);
- event.setMessage(message, priority);
- for (Iterator iterator = buildListeners.iterator(); iterator.hasNext();) {
- BuildListener listener = (BuildListener) iterator.next();
- listener.messageLogged(event);
- }
-}
-
-/**
- * Sets the buildFileLocation.
- *
- * @param buildFileLocation the file system location of the build file
- */
-public void setBuildFileLocation(String buildFileLocation) {
- this.buildFileLocation = buildFileLocation;
-}
-
-protected String getBuildFileLocation() {
- if (buildFileLocation == null)
- buildFileLocation = new File("build.xml").getAbsolutePath();
- return buildFileLocation;
-}
-
-/**
- * Sets the message output level. Use -1 for none.
- *
- * @param
- */
-public void setMessageOutputLevel(int level) {
- this.messageOutputLevel = level;
-}
-
-/**
- *
- */
-public void setArguments(String args) {
- this.extraArguments = args;
-}
-
-/**
- * Sets the execution targets.
- *
- */
-public void setExecutionTargets(Vector executiongTargets) {
- targets = executiongTargets;
-}
-
-protected static String getAntVersion() throws BuildException {
- try {
- Properties props = new Properties();
- InputStream in = Main.class.getResourceAsStream("/org/apache/tools/ant/version.txt");
- props.load(in);
- in.close();
-
- StringBuffer msg = new StringBuffer();
- msg.append(Policy.bind("usage.antVersion"));
- msg.append(props.getProperty("VERSION") + " ");
- msg.append(Policy.bind("usage.compiledOn"));
- msg.append(props.getProperty("DATE"));
- return msg.toString();
- } catch (IOException ioe) {
- throw new BuildException(Policy.bind("exception.cannotLoadVersionInfo", ioe.getMessage()));
- } catch (NullPointerException npe) {
- throw new BuildException(Policy.bind("exception.cannotLoadVersionInfo", ""));
- }
-}
-
-/**
- * Looks for interesting command line arguments. Returns true is it is OK to run
- * the script.
- */
-protected boolean processCommandLine(List commands) {
- // looks for flag-like commands
- if (commands.remove("-help")) {
- printUsage();
- return false;
- }
- if (commands.remove("-version")) {
- printVersion();
- return false;
- }
- if (commands.remove("-quiet") || commands.remove("-q")) {
- messageOutputLevel = Project.MSG_WARN;
- }
- if (commands.remove("-verbose") || commands.remove("-v")) {
- messageOutputLevel = Project.MSG_VERBOSE;
- }
- if (commands.remove("-debug")) {
- messageOutputLevel = Project.MSG_DEBUG;
- }
- if (commands.remove("-emacs")) {
- emacsMode = true;
- }
- if (commands.remove("-projecthelp")) {
- projectHelp = true;
- }
-
- // look for argumments
- String[] args = getArguments(commands, "-logfile");
- if (args == null) {
- args = getArguments(commands, "-l");
- }
- if (args != null) {
- try {
- File logFile = new File(args[0]);
- out = new PrintStream(new FileOutputStream(logFile));
- err = out;
- } catch (IOException e) {
- logMessage(null, Policy.bind("exception.cannotWriteToLog"), Project.MSG_INFO);
- return false;
- }
- }
-
- args = getArguments(commands, "-buildfile");
- if (args == null) {
- args = getArguments(commands, "-file");
- if (args == null)
- args = getArguments(commands, "-f");
- }
- if (args != null) {
- buildFileLocation = args[0];
- targets = new Vector();
- for (int i = 1; i < args.length; i++)
- targets.add(args[i]);
- }
-
- args = getArguments(commands, "-listener");
- if (args != null)
- buildListeners.add(args[0]);
-
- args = getArguments(commands, "-logger");
- if (args != null)
- loggerClassname = args[0];
-
- processProperties(commands);
-
- return true;
-}
-
-protected void processProperties(List commands) {
- userProperties = new HashMap(10);
- String[] args = (String[]) commands.toArray(new String[commands.size()]);
- for (int i = 0; i < args.length; i++) {
- String arg = args[i];
- if (arg.startsWith("-D")) {
-
- /* Interestingly enough, we get to here when a user
- * uses -Dname=value. However, in some cases, the JDK
- * goes ahead * and parses this out to args
- * {"-Dname", "value"}
- * so instead of parsing on "=", we just make the "-D"
- * characters go away and skip one argument forward.
- *
- * I don't know how to predict when the JDK is going
- * to help or not, so we simply look for the equals sign.
- */
-
- String name = arg.substring(2, arg.length());
- String value = null;
- int posEq = name.indexOf("=");
- if (posEq > 0) {
- value = name.substring(posEq + 1);
- name = name.substring(0, posEq);
- } else if (i < args.length - 1)
- value = args[++i];
-
- userProperties.put(name, value);
- commands.remove(args[i]);
- }
- }
-}
-
-/**
- * Print the project description, if any
- */
-protected void printHelp(Project project) {
- if (project.getDescription() != null)
- logMessage(project, project.getDescription(), Project.MSG_INFO);
- printTargets(project);
-}
-
-/**
- * Logs a message with the client indicating the version of <b>Ant</b> that this class
- * fronts.
- */
-protected void printVersion() {
- logMessage(null, getAntVersion(), Project.MSG_INFO);
-}
-
-/**
- * Logs a message with the client outlining the usage of <b>Ant</b>.
- */
-protected void printUsage() {
- String lSep = System.getProperty("line.separator");
- StringBuffer msg = new StringBuffer();
- msg.append("ant [" + Policy.bind("usage.options") + "] ["
- + Policy.bind("usage.target") + " ["
- + Policy.bind("usage.target") + "2 ["
- + Policy.bind("usage.target") + "3] ...]]" + lSep);
- msg.append(Policy.bind("usage.Options") + ": " + lSep);
- msg.append(" -help " + Policy.bind("usage.printMessage") + lSep);
- msg.append(" -projecthelp " + Policy.bind("usage.projectHelp") + lSep);
- msg.append(" -version " + Policy.bind("usage.versionInfo") + lSep);
- msg.append(" -quiet " + Policy.bind("usage.beQuiet") + lSep);
- msg.append(" -verbose " + Policy.bind("usage.beVerbose") + lSep);
- msg.append(" -debug " + Policy.bind("usage.printDebugInfo") + lSep);
- msg.append(" -emacs " + Policy.bind("usage.emacsLog") + lSep);
- msg.append(" -logfile <file> " + Policy.bind("usage.useFile") + lSep);
- msg.append(" -logger <classname> " + Policy.bind("usage.logClass") + lSep);
- msg.append(" -listener <classname> " + Policy.bind("usage.listenerClass") + lSep);
- msg.append(" -buildfile <file> " + Policy.bind("usage.fileToBuild") + lSep);
- msg.append(" -D<property>=<value> " + Policy.bind("usage.propertiesValues") + lSep);
-// msg.append(" -find <file> " + Policy.bind("usage.findFileToBuild") + lSep);
-
- logMessage(null, msg.toString(), Project.MSG_INFO);
-}
-
-/**
- * From a command line list, get the array of arguments of a given parameter.
- * The parameter and its arguments are removed from the list.
- * @return null if the parameter is not found or has no arguments
- */
-protected String[] getArguments(List commands, String param) {
- int index = commands.indexOf(param);
- if (index == -1)
- return null;
- commands.remove(index);
- if (index == commands.size()) // if this is the last command
- return null;
- List args = new ArrayList(commands.size());
- while (index < commands.size()) { // while not the last command
- String command = (String) commands.get(index);
- if (command.startsWith("-")) // is it a new parameter?
- break;
- args.add(command);
- commands.remove(index);
- }
- if (args.isEmpty())
- return null;
- return (String[]) args.toArray(new String[args.size()]);
-}
-
-/**
- * Helper method to ensure an array is converted into an ArrayList.
- */
-private ArrayList getArrayList(String[] args) {
- // We could be using Arrays.asList() here, but it does not specify
- // what kind of list it will return. We do need a list that
- // implements the method List.remove(int) and ArrayList does.
- ArrayList result = new ArrayList(args.length);
- for (int i = 0; i < args.length; i++)
- result.add(args[i]);
- return result;
-}
-
-/**
- * Helper method to ensure an array is converted into an ArrayList.
- */
-private ArrayList getArrayList(String args) {
- ArrayList result = new ArrayList();
- for (StringTokenizer tokens = new StringTokenizer(args, ", "); tokens.hasMoreTokens();) {
- String token = tokens.nextToken().trim();
- if (!token.equals(""))
- result.add(token);
- }
- return result;
-}
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/Policy.java b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/Policy.java
deleted file mode 100644
index ef4673e..0000000
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/Policy.java
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/messages.properties b/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/messages.properties
deleted file mode 100644
index 32d3da2..0000000
--- a/ant/org.eclipse.ant.core/src_ant/org/eclipse/ant/internal/core/ant/messages.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-### Ant Core Library message catalog
-
-### exception
-exception.cannotAppendToReference = Cannot append to a reference.
-exception.cannotCreateLogger = Unable to instantiate logger: {0}
-exception.cannotLoadVersionInfo = Could not load the version information. {0}
-exception.cannotWriteToLog = Cannot write on the specified log file. Make sure the path exists and you have write permissions.
-exception.missingExcludesFile = Excludes file not found: {0}
-exception.missingIncludesFile = Includes file not found: {0}
-exception.notAPatternSet = Not a patternset: {0}
-exception.patternFile = An error occured while reading pattern file: {0}
-
-### labels
-label.buildFile = Build file: {0}
-label.defaultTarget = Default target:
-label.mainTargets = Main targets:
-label.subTargets = Subtargets:
-
-### usage
-usage.antVersion = Ant version
-usage.beQuiet = be extra quiet
-usage.beVerbose = be extra verbose
-usage.compiledOn = compiled on
-usage.emacsLog = produce logging information without adornments
-usage.fileToBuild = use given buildfile
-usage.findFileToBuild = search for buildfile towards the root of the filesystem and use it
-usage.listenerClass = add an instance of class as a project listener
-usage.logClass = the class which is to perform logging
-usage.options = options
-usage.Options = Options
-usage.printDebugInfo = print debugging information
-usage.printMessage = print this message
-usage.projectHelp = print project help information
-usage.propertiesValues = use value for given property
-usage.target = target
-usage.useFile = use given file for log
-usage.versionInfo = print the version information and exit
diff --git a/ant/org.eclipse.ant.ui/.classpath b/ant/org.eclipse.ant.ui/.classpath
deleted file mode 100644
index 01edae6..0000000
--- a/ant/org.eclipse.ant.ui/.classpath
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="src_ant"/>
- <classpathentry kind="src" path="/org.apache.ant"/>
- <classpathentry kind="src" path="/org.eclipse.ant.core"/>
- <classpathentry kind="src" path="/org.eclipse.core.resources"/>
- <classpathentry kind="src" path="/org.eclipse.ui"/>
- <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
- <classpathentry kind="src" path="/org.eclipse.core.boot"/>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="src" path="/org.eclipse.swt"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/ant/org.eclipse.ant.ui/.cvsignore b/ant/org.eclipse.ant.ui/.cvsignore
deleted file mode 100644
index 57b480f..0000000
--- a/ant/org.eclipse.ant.ui/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-lib
diff --git a/ant/org.eclipse.ant.ui/.project b/ant/org.eclipse.ant.ui/.project
deleted file mode 100644
index e0755bd..0000000
--- a/ant/org.eclipse.ant.ui/.project
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.ant.ui</name>
- <comment></comment>
- <projects>
- <project>org.apache.ant</project>
- <project>org.eclipse.ant.core</project>
- <project>org.eclipse.core.boot</project>
- <project>org.eclipse.core.resources</project>
- <project>org.eclipse.core.runtime</project>
- <project>org.eclipse.swt</project>
- <project>org.eclipse.ui</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.team.cvs.core.cvsnature</nature>
- </natures>
-</projectDescription>
diff --git a/ant/org.eclipse.ant.ui/about.html b/ant/org.eclipse.ant.ui/about.html
deleted file mode 100644
index 441774f..0000000
--- a/ant/org.eclipse.ant.ui/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>11th December, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.ui/build.properties b/ant/org.eclipse.ant.ui/build.properties
deleted file mode 100644
index ad9264d..0000000
--- a/ant/org.eclipse.ant.ui/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-source.antui.jar=src/
-source.lib/antuilib.jar=src_ant/
-bin.includes=icons/,plugin.xml,**/*.jar,plugin.properties,about.html
-jars.compile.order=antui.jar,lib/antuilib.jar
-jars.extra.classpath=../org.apache.ant/ant.jar
-javadoc.packages=org.eclipse.*
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.ui/icons/basic/clcl16/clear.gif b/ant/org.eclipse.ant.ui/icons/basic/clcl16/clear.gif
deleted file mode 100644
index 2558326..0000000
--- a/ant/org.eclipse.ant.ui/icons/basic/clcl16/clear.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/basic/clcl16/hideOrShowTree.gif b/ant/org.eclipse.ant.ui/icons/basic/clcl16/hideOrShowTree.gif
deleted file mode 100644
index 5a8c7ea..0000000
--- a/ant/org.eclipse.ant.ui/icons/basic/clcl16/hideOrShowTree.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/basic/clcl16/showOnlySelectedText.gif b/ant/org.eclipse.ant.ui/icons/basic/clcl16/showOnlySelectedText.gif
deleted file mode 100644
index be9eb92..0000000
--- a/ant/org.eclipse.ant.ui/icons/basic/clcl16/showOnlySelectedText.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/basic/cview16/ant_view.gif b/ant/org.eclipse.ant.ui/icons/basic/cview16/ant_view.gif
deleted file mode 100644
index 0165a50..0000000
--- a/ant/org.eclipse.ant.ui/icons/basic/cview16/ant_view.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/basic/eview16/ant_view.gif b/ant/org.eclipse.ant.ui/icons/basic/eview16/ant_view.gif
deleted file mode 100644
index 76be436..0000000
--- a/ant/org.eclipse.ant.ui/icons/basic/eview16/ant_view.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/basic/wizban/ant_wiz.gif b/ant/org.eclipse.ant.ui/icons/basic/wizban/ant_wiz.gif
deleted file mode 100644
index c4aaf15..0000000
--- a/ant/org.eclipse.ant.ui/icons/basic/wizban/ant_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/full/clcl16/clear.gif b/ant/org.eclipse.ant.ui/icons/full/clcl16/clear.gif
deleted file mode 100644
index 2558326..0000000
--- a/ant/org.eclipse.ant.ui/icons/full/clcl16/clear.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/full/clcl16/hideOrShowTree.gif b/ant/org.eclipse.ant.ui/icons/full/clcl16/hideOrShowTree.gif
deleted file mode 100644
index 5a8c7ea..0000000
--- a/ant/org.eclipse.ant.ui/icons/full/clcl16/hideOrShowTree.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/full/clcl16/showOnlySelectedText.gif b/ant/org.eclipse.ant.ui/icons/full/clcl16/showOnlySelectedText.gif
deleted file mode 100644
index be9eb92..0000000
--- a/ant/org.eclipse.ant.ui/icons/full/clcl16/showOnlySelectedText.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/full/cview16/ant_view.gif b/ant/org.eclipse.ant.ui/icons/full/cview16/ant_view.gif
deleted file mode 100644
index 03e30a2..0000000
--- a/ant/org.eclipse.ant.ui/icons/full/cview16/ant_view.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/full/eview16/ant_view.gif b/ant/org.eclipse.ant.ui/icons/full/eview16/ant_view.gif
deleted file mode 100644
index eba5891..0000000
--- a/ant/org.eclipse.ant.ui/icons/full/eview16/ant_view.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/full/eview16/build_exec.gif b/ant/org.eclipse.ant.ui/icons/full/eview16/build_exec.gif
deleted file mode 100644
index 20e7bae..0000000
--- a/ant/org.eclipse.ant.ui/icons/full/eview16/build_exec.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/full/eview16/classpath.gif b/ant/org.eclipse.ant.ui/icons/full/eview16/classpath.gif
deleted file mode 100644
index f966fc3..0000000
--- a/ant/org.eclipse.ant.ui/icons/full/eview16/classpath.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/full/eview16/jar_l_obj.gif b/ant/org.eclipse.ant.ui/icons/full/eview16/jar_l_obj.gif
deleted file mode 100644
index 11e04e2..0000000
--- a/ant/org.eclipse.ant.ui/icons/full/eview16/jar_l_obj.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/full/eview16/type.gif b/ant/org.eclipse.ant.ui/icons/full/eview16/type.gif
deleted file mode 100644
index 2db7604..0000000
--- a/ant/org.eclipse.ant.ui/icons/full/eview16/type.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/icons/full/wizban/ant_wiz.gif b/ant/org.eclipse.ant.ui/icons/full/wizban/ant_wiz.gif
deleted file mode 100644
index 42754e5..0000000
--- a/ant/org.eclipse.ant.ui/icons/full/wizban/ant_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/plugin.properties b/ant/org.eclipse.ant.ui/plugin.properties
deleted file mode 100644
index 0137810..0000000
--- a/ant/org.eclipse.ant.ui/plugin.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-antActionSetLabel = Ant
-antBuilderPropertyName=Tool Script Builders
-antConsole = Ant Console
-antConsolePreferences = Console
-antClasspathPreferences = Customize
-antLauncher = Ant Targets
-antPreferences = Ant
-executeAntLabel = Run Ant Script
-executeAntTooltip = Run Ant script
-executeToolScriptLabel = Run Tool &Script...
-pluginName = Ant Build Tool UI
-runAnt = Run &Ant...
-runAntTip = Run Ant with the selected build file
-providerName = Object Technology International, Inc.
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.ui/plugin.xml b/ant/org.eclipse.ant.ui/plugin.xml
deleted file mode 100644
index 6cffaff..0000000
--- a/ant/org.eclipse.ant.ui/plugin.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<plugin
- name = "%pluginName"
- id="org.eclipse.ant.ui"
- version="2.0.0"
- provider-name = "%providerName"
- class="org.eclipse.ant.internal.ui.AntUIPlugin">
-
- <requires>
- <import plugin="org.apache.ant"/>
- <import plugin="org.eclipse.ant.core"/>
- <import plugin="org.eclipse.core.resources"/>
- <import plugin="org.eclipse.ui"/>
- </requires>
-
- <runtime>
- <library name="antui.jar">
- <export name = "*"/>
- </library>
- </runtime>
-
- <extension point="org.eclipse.ui.popupMenus">
- <objectContribution
- id="org.eclipse.ant.ui.RunAnt"
- objectClass="org.eclipse.core.resources.IResource"
- nameFilter="*.xml">
- <action
- id="RunAnt"
- label="%runAnt"
- tooltip="%runAntTip"
- menubarPath="additions"
- enablesFor="1"
- class="org.eclipse.ant.internal.ui.RunAntActionDelegate">
- </action>
- </objectContribution>
- </extension>
-
- <extension point="org.eclipse.ui.views">
- <category
- id="org.eclipse.ant.ui"
- name="&Ant">
- </category>
- <view
- id="org.eclipse.ant.ui.antconsole"
- name="%antConsole"
- icon="icons/full/cview16/ant_view.gif"
- category="org.eclipse.ant.ui"
- class="org.eclipse.ant.internal.ui.AntConsole">
- </view>
- </extension>
-
- <extension point="org.eclipse.ui.preferencePages">
- <page
- id="org.eclipse.ant.ui.AntPreferences"
- name="%antPreferences"
- class="org.eclipse.ant.internal.ui.AntPreferencesPage">
- </page>
- <page
- id="org.eclipse.ant.ui.AntConsolePreferences"
- name="%antConsolePreferences"
- class="org.eclipse.ant.internal.ui.AntConsolePreferencePage"
- category="org.eclipse.ant.ui.AntPreferences">
- </page>
- <page
- id="org.eclipse.ant.ui.AntClasspathPreferences"
- name="%antClasspathPreferences"
- class="org.eclipse.ant.internal.ui.CustomizeAntPreferencePage"
- category="org.eclipse.ant.ui.AntPreferences">
- </page>
- </extension>
-
- <extension point="org.eclipse.ui.actionSets">
- <actionSet label="%antActionSetLabel"
- visible="false"
- id="org.eclipse.ant.ui.antActionSet">
- <action label="%executeAntLabel"
- pulldown="true"
- icon="icons/full/eview16/ant_view.gif"
- tooltip="%executeAntTooltip"
- class="org.eclipse.ant.internal.ui.AntLaunchDropDownAction"
- toolbarPath="ant"
- id="org.eclipse.ant.ui.antDropDownAction" />
- </actionSet>
- </extension>
-
-
- <!-- Objects -->
- <extension point="org.eclipse.ant.core.antObjects">
- <antObject
- name="org.eclipse.ant.internal.ui.ant.UIBuildLogger"
- class="org.eclipse.ant.internal.ui.ant.UIBuildLogger"
- library="lib/antuilib.jar">
- </antObject>
- </extension>
-
-</plugin>
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AddTaskDialog.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AddTaskDialog.java
deleted file mode 100644
index 263697b..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AddTaskDialog.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- ******************************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import java.net.URL;
-
-import org.eclipse.ant.core.AntCorePlugin;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-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.*;
-
-/**
- * Dialog to prompt the user to add a custom ant task or type.
- */
-public class AddTaskDialog extends Dialog {
- protected String title;
- protected String description;
-
- //task/type attributes
- protected String taskName;
- protected String className;
- protected URL library;
-
- //widgets
- protected Button okButton;
- protected Text nameField;
- protected Text classField;
- protected Combo libraryField;
-
- protected URL[] libraryUrls;
-
-/**
- * Creates a new task dialog with the given shell and title.
- */
-protected AddTaskDialog(Shell parentShell, String title, String description) {
- super(parentShell);
- this.title = title;
- this.description = description;
-}
-/**
- * @see Window#configureShell(Shell)
- */
-protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(title);
-}
-/**
- * @see Dialog#createButtonsForButtonBar(Composite)
- */
-protected void createButtonsForButtonBar(Composite parent) {
- okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
- createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
- updateEnablement();
-}
-/**
- * @see Dialog#createDialogArea(Composite)
- */
-protected Control createDialogArea(Composite parent) {
- Composite dialogArea = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginHeight = 10;
- layout.marginWidth = 10;
- dialogArea.setLayout(layout);
-
- Label label = new Label(dialogArea, SWT.NONE);
- label.setText(description);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 2;
- label.setLayoutData(data);
-
- label = new Label(dialogArea, SWT.NONE);
- label.setText(Policy.bind("preferences.customize.addTaskDialogName"));
- nameField = new Text(dialogArea, SWT.BORDER);
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
- nameField.setLayoutData(data);
- nameField.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- updateEnablement();
- }
- });
-
- label = new Label(dialogArea, SWT.NONE);
- label.setText(Policy.bind("preferences.customize.addTaskDialogClass"));
- classField = new Text(dialogArea, SWT.BORDER);
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
- classField.setLayoutData(data);
- classField.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- updateEnablement();
- }
- });
-
- label = new Label(dialogArea, SWT.NONE);
- label.setText(Policy.bind("preferences.customize.addTaskDialogLibrary"));
- libraryField = new Combo(dialogArea, SWT.READ_ONLY | SWT.BORDER);
- data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
- libraryField.setLayoutData(data);
- libraryField.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- updateEnablement();
- }
- });
-
- //populate library combo and select input library
- libraryUrls = AntCorePlugin.getPlugin().getPreferences().getCustomURLs();
- int selection = 0;
- for (int i = 0; i < libraryUrls.length; i++) {
- libraryField.add(libraryUrls[i].getFile());
- if (libraryUrls[i].equals(library))
- selection = i;
- }
-
- //intialize fields
- if (taskName != null)
- nameField.setText(taskName);
- if (className != null)
- classField.setText(className);
- if (libraryUrls.length >= 0)
- libraryField.select(selection);
- return dialogArea;
-}
-
-public String getClassName() {
- return className;
-}
-public void setClassName(String className) {
- this.className = className;
-}
-public URL getLibrary() {
- return library;
-}
-/**
- * @see Dialog#okPressed()
- */
-protected void okPressed() {
- className = classField.getText();
- taskName = nameField.getText();
- int selection = libraryField.getSelectionIndex();
- if (selection >= 0)
- library = libraryUrls[selection];
- super.okPressed();
-}
-public void setLibrary(URL library) {
- this.library = library;
-}
-public String getTaskName() {
- return taskName;
-}
-public void setTaskName(String taskName) {
- this.taskName = taskName;
-}
-protected void updateEnablement() {
- if (okButton != null)
- okButton.setEnabled(nameField.getText().length() > 0 &&
- classField.getText().length() > 0 &&
- libraryField.getSelectionIndex() >= 0);
-}
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntAction.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntAction.java
deleted file mode 100644
index 4ec3db4..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntAction.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import java.io.File;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.ProjectHelper;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-
-public class AntAction extends Action {
-
- private IFile file;
-
-public AntAction(IFile file) {
- super();
- this.file = file;
- if (file != null) {
- setText(file.getName());
- setToolTipText(file.getFullPath().toOSString());
- }
- else
- setText(Policy.bind("launcher.noFile"));
-}
-
-public void run() {
- if (file == null)
- return;
-
- // save the modified files if required by the user
- if (AntUIPlugin.getPlugin().getPreferenceStore().getBoolean(IAntPreferenceConstants.AUTO_SAVE)) {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().saveAllEditors(false);
- }
-
- Project project = extractProject(file);
- if (project == null)
- return;
-
- AntLaunchWizard wizard = new AntLaunchWizard(project,file);
- wizard.setNeedsProgressMonitor(true);
- WizardDialog dialog = new WizardDialog(AntUIPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell(),wizard);
- dialog.create();
- dialog.open();
-}
-
-protected Project extractProject(IFile sourceFile) {
- // create a project and initialize it
- Project antProject = new Project();
- antProject.init();
- antProject.setProperty("ant.file",sourceFile.getLocation().toOSString());
-
- try {
- ProjectHelper.configureProject(antProject,new File(sourceFile.getLocation().toOSString()));
- } catch (Exception e) {
- // If the document is not well-formated for example
- String message = e.getMessage();
- if (message == null)
- message = Policy.bind("error.antParsingError");
- IStatus status = new Status(IStatus.ERROR,AntUIPlugin.PI_ANTUI,IStatus.ERROR,message,e);
- ErrorDialog.openError(
- AntUIPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell(),
- Policy.bind("error.antScriptError"),
- Policy.bind("error.antParsingError"),
- status);
-
- return null;
- }
- return antProject;
-}
-
-}
-
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntConsole.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntConsole.java
deleted file mode 100644
index 1a7e9da..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntConsole.java
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntConsolePreferencePage.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntConsolePreferencePage.java
deleted file mode 100644
index a2f0e79..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntConsolePreferencePage.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import org.eclipse.jface.preference.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * A page to set the preferences for the console
- */
-public class AntConsolePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
-
-
-/**
- * Create the console page.
- */
-public AntConsolePreferencePage() {
- super(GRID);
-
- setDescription(Policy.bind("preferences.description"));
-
- IPreferenceStore store= AntUIPlugin.getPlugin().getPreferenceStore();
- setPreferenceStore(store);
-}
-public void createControl(Composite parent) {
- super.createControl(parent);
-
- // should do something here with the help..
- /*
- WorkbenchHelp.setHelp(
- parent,
- new Object[] { IAntHelpContextIds.ANT_CONSOLE_PREFERENCE_PAGE });
- */
-}
-/**
- * Create all field editors for this page
- */
-public void createFieldEditors() {
-
- ColorFieldEditor errOut= new ColorFieldEditor(IAntPreferenceConstants.CONSOLE_ERROR_RGB, Policy.bind("preferences.errorColor"), getFieldEditorParent());
- ColorFieldEditor warnOut= new ColorFieldEditor(IAntPreferenceConstants.CONSOLE_WARNING_RGB, Policy.bind("preferences.warningColor"), getFieldEditorParent());
- ColorFieldEditor infoOut= new ColorFieldEditor(IAntPreferenceConstants.CONSOLE_INFO_RGB, Policy.bind("preferences.infoColor"), getFieldEditorParent());
- ColorFieldEditor verbOut= new ColorFieldEditor(IAntPreferenceConstants.CONSOLE_VERBOSE_RGB, Policy.bind("preferences.verboseColor"), getFieldEditorParent());
- ColorFieldEditor debugOut= new ColorFieldEditor(IAntPreferenceConstants.CONSOLE_DEBUG_RGB, Policy.bind("preferences.debugColor"), getFieldEditorParent());
-
- FontFieldEditor font= new FontFieldEditor(IAntPreferenceConstants.CONSOLE_FONT, Policy.bind("preferences.font"), getFieldEditorParent());
-
- addField(errOut);
- addField(warnOut);
- addField(infoOut);
- addField(verbOut);
- addField(debugOut);
- addField(font);
-}
-/**
- * Returns the font data that describes the font to use for the console
- */
-protected static FontData getConsoleFontData() {
- IPreferenceStore pstore= AntUIPlugin.getPlugin().getPreferenceStore();
- FontData fontData= PreferenceConverter.getFontData(pstore, IAntPreferenceConstants.CONSOLE_FONT);
- return fontData;
-}
-/**
- * Returns the a color based on the type.
- */
-protected static Color getPreferenceColor(String type) {
- IPreferenceStore pstore= AntUIPlugin.getPlugin().getPreferenceStore();
- RGB outRGB= PreferenceConverter.getColor(pstore, type);
- return new Color(Display.getCurrent() ,outRGB);
-}
-/**
- * @see IWorkbenchPreferencePage#init
- */
-public void init(IWorkbench workbench) {
-}
-
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchDropDownAction.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchDropDownAction.java
deleted file mode 100644
index f38c142..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchDropDownAction.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.*;
-import org.eclipse.ui.part.FileEditorInput;
-
-/**
- * Superclass of run & debug pulldown actions.
- */
-public class AntLaunchDropDownAction implements IWorkbenchWindowPulldownDelegate {
-
-
-/**
- * @see IWorkbenchWindowActionDelegate
- */
-public void dispose() {
-}
-
-private void createMenuForAction(Menu parent, Action action) {
- ActionContributionItem item= new ActionContributionItem(action);
- item.fill(parent, -1);
-}
-
-/**
- * @see IWorkbenchWindowPulldownDelegate
- */
-public Menu getMenu(Control parent) {
- Menu menu= new Menu(parent);
- IFile[] historyList= AntUIPlugin.getPlugin().getHistory();
- int count= 0;
- for (int i = 0; i < historyList.length; i++) {
- IFile file = historyList[i];
- if (file == null)
- break;
- AntAction newAction= new AntAction(file);
- createMenuForAction(menu, newAction);
- count++;
- }
- if (count == 0)
- createMenuForAction(menu, new AntAction(null));
-
- return menu;
-}
-
-/**
- * @see IWorkbenchWindowActionDelegate
- */
-public void init(IWorkbenchWindow window){
-}
-
-/**
- * @see IActionDelegate
- */
-public void run(IAction action) {
- IWorkbenchWindow window= PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- IStructuredSelection selection= resolveSelection(window);
-
- if (selection != null) {
- Object selectedObject = selection.getFirstElement();
- if (selectedObject instanceof IFile) {
- if (((IFile) selectedObject).getFileExtension().equals("xml"))
- new AntAction((IFile) selectedObject).run();
- }
- else if (selectedObject instanceof FileEditorInput) {
- if ((((FileEditorInput) selectedObject).getFile()).getFileExtension().equals("xml"))
- new AntAction(((FileEditorInput) selectedObject).getFile()).run();
- }
- }
-}
-
-/**
- * Determines and returns the selection that provides context for the launch,
- * or <code>null</code> if there is no selection.
- */
-protected IStructuredSelection resolveSelection(IWorkbenchWindow window) {
- if (window == null) {
- return null;
- }
- ISelection selection= window.getSelectionService().getSelection();
- if (selection == null || selection.isEmpty() || !(selection instanceof IStructuredSelection)) {
- // there is no obvious selection - go fishing
- selection= null;
- IWorkbenchPage page= window.getActivePage();
- if (page == null) {
- //workspace is closed
- return null;
- }
-
- // first, see if there is an active editor, and try its input element
- IEditorPart editor= page.getActiveEditor();
- Object element= null;
- if (editor != null) {
- element= editor.getEditorInput();
- }
-
- if (selection == null && element != null) {
- selection= new StructuredSelection(element);
- }
- }
- return (IStructuredSelection)selection;
-}
-
-/**
- * @see IActionDelegate
- */
-public void selectionChanged(IAction action, ISelection selection){
-}
-
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchWizard.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchWizard.java
deleted file mode 100644
index ec4cab7..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchWizard.java
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchWizardPage.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchWizardPage.java
deleted file mode 100644
index b213baf..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntLaunchWizardPage.java
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntPreferencesPage.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntPreferencesPage.java
deleted file mode 100644
index afe102d..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntPreferencesPage.java
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntPropertyChangeListener.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntPropertyChangeListener.java
deleted file mode 100644
index 50a6b26..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntPropertyChangeListener.java
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntTreeContentProvider.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntTreeContentProvider.java
deleted file mode 100644
index dc7d8a0..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntTreeContentProvider.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * Content provider for the tree viewer of the Ant Console.
- */
-
-public class AntTreeContentProvider implements ITreeContentProvider {
-
- private AntConsole console;
-
-public AntTreeContentProvider(AntConsole console) {
- this.console = console;
-}
-
-/**
- * @see ITreeContentProvider#getChildren(Object)
- */
-public Object[] getChildren(Object parent) {
- return ((OutputStructureElement) parent).getChildren();
-}
-
-/**
- * @see ITreeContentProvider#getParent(Object)
- */
-public Object getParent(Object element) {
- return ((OutputStructureElement) element).getParent();
-}
-
-/**
- * @see ITreeContentProvider#hasChildren(Object)
- */
-public boolean hasChildren(Object element) {
- return ((OutputStructureElement) element).hasChildren();
-}
-
-/**
- * @see IStructuredContentProvider#getElements(Object)
- */
-public Object[] getElements(Object parent) {
- return ((OutputStructureElement) parent).getChildren();
-}
-
-/**
- * @see IContentProvider#dispose()
- */
-public void dispose() {
-}
-
-/**
- * @see IContentProvider#inputChanged(Viewer, Object, Object)
- */
-public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-}
-
-}
-
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntTreeLabelProvider.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntTreeLabelProvider.java
deleted file mode 100644
index 0eb5335..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntTreeLabelProvider.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * Label provider for the tree viewer of the Ant Console.
- */
-
-public class AntTreeLabelProvider implements ILabelProvider {
-
- private AntConsole console;
-
-public AntTreeLabelProvider(AntConsole console) {
- this.console = console;
-}
-
-
-/**
- * @see ILabelProvider#getImage(Object)
- */
-public Image getImage(Object element) {
- return null;
-}
-
-/**
- * @see ILabelProvider#getText(Object)
- */
-public String getText(Object element) {
- String text = ((OutputStructureElement) element).getName();
- if ( text == null)
- // this can happen if the userwrites a task name that doesn't exist => the #taskStarted will be triggered
- // but null will be given as a name to the current task, and then only, the exception will be raised
- return Policy.bind("antTreeLabelProvider.invalidTaskName");
- return text;
-}
-
-/**
- * @see IBaseLabelProvider#addListener(ILabelProviderListener)
- */
-public void addListener(ILabelProviderListener listener) {
-}
-
-/**
- * @see IBaseLabelProvider#dispose()
- */
-public void dispose() {
-}
-
-/**
- * @see IBaseLabelProvider#isLabelProperty(Object, String)
- */
-public boolean isLabelProperty(Object arg0, String arg1) {
- return false;
-}
-
-/**
- * @see IBaseLabelProvider#removeListener(ILabelProviderListener)
- */
-public void removeListener(ILabelProviderListener listener) {
-}
-
-}
-
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntUIPlugin.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntUIPlugin.java
deleted file mode 100644
index c0ac03e..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/AntUIPlugin.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceConverter;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-
-/**
- * The plug-in runtime class for the AntUI plug-in.
- */
-public final class AntUIPlugin extends AbstractUIPlugin {
- /**
- *
- */
- protected IProgressMonitor currentProgressMonitor;
-
- protected final HashMap imageDescriptors = new HashMap(30);
-
- /**
- * Unique identifier constant (value <code>"org.eclipse.ant.ui"</code>)
- * for the Ant UI plug-in.
- */
- public static final String PI_ANTUI= "org.eclipse.ant.ui";
-
- public static final String PROPERTIES_MESSAGES = "org.eclipse.ant.internal.ui.messages";
-
- public static final String IMG_ANT_SCRIPT= "icons/full/eview16/ant_view.gif";
- public static final String IMG_BUILDER= "icons/full/eview16/build_exec.gif";
- public static final String IMG_JAR_FILE = "icons/full/eview16/jar_l_obj.gif";
- public static final String IMG_CLASSPATH = "icons/full/eview16/classpath.gif";
- public static final String IMG_TYPE = "icons/full/eview16/type.gif";
-
- private static final String SETTINGS_COMMAND_HISTORY = "CommandHistory";
- private static final int MAX_COMMAND_HISTORY = 15;
-
-
- /**
- * The single instance of this plug-in runtime class.
- */
- private static AntUIPlugin plugin;
-
- private final static int MAX_HISTORY_SIZE= 5;
- /**
- * The most recent debug launches
- */
- private IFile[] antHistory = new IFile[MAX_HISTORY_SIZE];
-
-public IProgressMonitor getCurrentProgressMonitor() {
- return currentProgressMonitor;
-}
-
-public void setCurrentProgressMonitor(IProgressMonitor monitor) {
- this.currentProgressMonitor = monitor;
-}
-
-public AntUIPlugin(IPluginDescriptor desc) {
- super(desc);
- plugin= this;
-}
-
-public static AntUIPlugin getPlugin() {
- return plugin;
-}
-
-public static ResourceBundle getResourceBundle() {
- try {
- return ResourceBundle.getBundle(PROPERTIES_MESSAGES);
- } catch (MissingResourceException e) {
- ErrorDialog.openError(
- plugin.getWorkbench().getActiveWorkbenchWindow().getShell(),
- Policy.bind("exception.missingResourceBundle"),
- Policy.bind("exception.missingResourceBundle.message"),
- new Status(IStatus.ERROR,PI_ANTUI,0,Policy.bind("exception.missingResourceBundle.message"),e));
- return null;
- }
-}
-
-/**
- * Adds the given command to the command history.
- * - if the command doesn't exist: put it at the first place
- * - if it exists and is already at the first place: does nothing
- * - if it exists and is not at the first place: move it to the first place
-
- */
-public void addToCommandHistory(String command) {
- IDialogSettings settings = getDialogSettings();
- String[] oldHistory = settings.getArray(SETTINGS_COMMAND_HISTORY);
- if (oldHistory == null || oldHistory.length == 0) {
- settings.put(SETTINGS_COMMAND_HISTORY, new String[] {command});
- return;
- }
- if (command.equals(oldHistory[0])) {
- return;
- }
- //search for existing command and move to top if found
- int index;
- for (index=1; index<oldHistory.length; index++)
- if (command.equals(oldHistory[index]))
- break;
- if (index < oldHistory.length) {
- //it was found, so replace it
- for (int i=index; i>0; i--)
- oldHistory[i] = oldHistory[i-1];
- oldHistory[0] = command;
- settings.put(SETTINGS_COMMAND_HISTORY, oldHistory);
- }
- //not found -- add it to the history
- String[] newHistory;
- if (oldHistory.length == MAX_COMMAND_HISTORY) {
- //shift other commands down and add new one
- System.arraycopy(oldHistory, 0, oldHistory, 1, oldHistory.length-1);
- oldHistory[0] = command;
- newHistory = oldHistory;
- } else {
- // grow the history array
- newHistory = new String[oldHistory.length+1];
- System.arraycopy(oldHistory, 0, newHistory, 1, oldHistory.length);
- newHistory[0] = command;
- }
- settings.put(SETTINGS_COMMAND_HISTORY, newHistory);
-}
-/**
- * Adds the given file to the history:
- * - if the file doesn't exist: put it at the first place
- * - if it exists and is already at the first place: does nothing
- * - if it exists and is not at the first place: move it to the first place
- *
- * @param the file
- */
-public void addToHistory(IFile file) {
- if (file.equals(antHistory[0]))
- return;
-
- int index;
- for (index=1; index<MAX_HISTORY_SIZE; index++)
- if (file.equals(antHistory[index]))
- break;
- if (index == MAX_HISTORY_SIZE)
- index--;
- for (int i=index; i>0; i--)
- antHistory[i] = antHistory[i-1];
- antHistory[0] = file;
-}
-
-/**
- * Returns the history of tool script command that have been run.
- */
-public String[] getCommandHistory() {
- return getDialogSettings().getArray(SETTINGS_COMMAND_HISTORY);
-}
-/**
- * Returns the history of the AntPlugin, i.e. the files that were executed previously
- *
- * @return an array containing the files
- */
-public IFile[] getHistory() {
- return antHistory;
-}
-
-/**
- * Returns the ImageDescriptor for the icon with the given path
- *
- * @return the ImageDescriptor object
- */
-public ImageDescriptor getImageDescriptor(String path) {
- ImageDescriptor desc = (ImageDescriptor)imageDescriptors.get(path);
- if (desc != null)
- return desc;
- try {
- URL installURL = getDescriptor().getInstallURL();
- URL url = new URL(installURL,path);
- desc = ImageDescriptor.createFromURL(url);
- imageDescriptors.put(path, desc);
- return desc;
- } catch (MalformedURLException e) {
- return null;
- }
-}
-
-/**
- * @see AbstractUIPlugin#initializeDefaultPreferences
- */
-protected void initializeDefaultPreferences(IPreferenceStore prefs) {
- prefs.setDefault(IAntPreferenceConstants.AUTO_SAVE, false);
- prefs.setDefault(IAntPreferenceConstants.INFO_LEVEL, true);
- prefs.setDefault(IAntPreferenceConstants.VERBOSE_LEVEL, false);
- prefs.setDefault(IAntPreferenceConstants.DEBUG_LEVEL, false);
-
- PreferenceConverter.setDefault(prefs, IAntPreferenceConstants.CONSOLE_ERROR_RGB, new RGB(255, 0, 0)); // red - exactly the same as debug Consol
- PreferenceConverter.setDefault(prefs, IAntPreferenceConstants.CONSOLE_WARNING_RGB, new RGB(255, 100, 0)); // orange
- PreferenceConverter.setDefault(prefs, IAntPreferenceConstants.CONSOLE_INFO_RGB, new RGB(0, 0, 255)); // blue
- PreferenceConverter.setDefault(prefs, IAntPreferenceConstants.CONSOLE_VERBOSE_RGB, new RGB(0, 200, 125)); // green
- PreferenceConverter.setDefault(prefs, IAntPreferenceConstants.CONSOLE_DEBUG_RGB, new RGB(0, 0, 0)); // black
-
-}
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/BuildCanceledException.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/BuildCanceledException.java
deleted file mode 100644
index a69c995..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/BuildCanceledException.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import org.apache.tools.ant.BuildException;
-
-public class BuildCanceledException extends BuildException {
-
-public BuildCanceledException() {
- super(Policy.bind("exception.canceled"));
-}
-
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/ClasspathPage.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/ClasspathPage.java
deleted file mode 100644
index 2f9def0..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/ClasspathPage.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- ******************************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.*;
-
-/**
- * A widget group for the jars tab of the ant classpath preference page.
- */
-public class ClasspathPage extends CustomizeAntPage {
- //button constants
- protected static final int ADD_JAR_BUTTON = IDialogConstants.CLIENT_ID + 1;
- protected static final int ADD_FOLDER_BUTTON = IDialogConstants.CLIENT_ID + 2;
- protected static final int REMOVE_BUTTON = IDialogConstants.CLIENT_ID + 3;
-
-public ClasspathPage() {
-}
-/**
- * @see CustomizeAntPage#addButtonsToButtonGroup(Composite)
- */
-protected void addButtonsToButtonGroup(Composite parent) {
- createButton(parent, "preferences.customize.addJarButtonTitle", ADD_JAR_BUTTON);
- createButton(parent, "preferences.customize.addFolderButtonTitle", ADD_FOLDER_BUTTON);
- createSeparator(parent);
- createButton(parent, "preferences.customize.removeButtonTitle", REMOVE_BUTTON);
-}
-protected void addFolderButtonPressed() {
- DirectoryDialog dialog = new DirectoryDialog(tableViewer.getControl().getShell());
- String result = dialog.open();
- if (result != null) {
- try {
- URL url = new URL("file:" + result + "/");
- contentProvider.add(url);
- } catch (MalformedURLException e) {
- }
- }
-}
-protected void addJarButtonPressed() {
- FileDialog dialog = new FileDialog(tableViewer.getControl().getShell());
- dialog.setFilterExtensions(new String[] {"*.jar"});
- String result = dialog.open();
- if (result != null) {
- try {
- URL url = new URL("file:" + result);
- contentProvider.add(url);
- } catch (MalformedURLException e) {
- }
- }
-}
-/**
- * @see CustomizeAntPage#buttonPressed(int)
- */
-protected void buttonPressed(int buttonId) {
- switch (buttonId) {
- case ADD_JAR_BUTTON:
- addJarButtonPressed();
- break;
- case ADD_FOLDER_BUTTON:
- addFolderButtonPressed();
- break;
- case REMOVE_BUTTON:
- removeButtonPressed();
- break;
- }
-}
-/**
- * Creates and returns a tab item that contains this widget group.
- */
-public TabItem createTabItem(TabFolder folder) {
- TabItem item = new TabItem(folder, SWT.NONE);
- item.setText(Policy.bind("preferences.customize.classpathPageTitle"));
- final Image image = AntUIPlugin.getPlugin().getImageDescriptor(AntUIPlugin.IMG_CLASSPATH).createImage();
- item.setImage(image);
- item.setData(this);
- item.setControl(createControl(folder));
- item.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- if (image != null)
- image.dispose();
- }
- });
-
- return item;
-}
-
-
-
-
-
-
-
-
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntContentProvider.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntContentProvider.java
deleted file mode 100644
index 566c4bf..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntContentProvider.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- ******************************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.*;
-
-/**
- * Maintains a generic list of objects that are shown in a table viewer.
- */
-public class CustomizeAntContentProvider implements IStructuredContentProvider {
- protected final ArrayList elements = new ArrayList();
- protected TableViewer viewer;
-
-void add(Object o) {
- elements.add(o);
- viewer.add(o);
-}
-public void dispose() {
-}
-public Object[] getElements(Object inputElement) {
- return (Object[]) elements.toArray(new Object[elements.size()]);
-}
-public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- this.viewer = (TableViewer)viewer;
- elements.clear();
- if (newInput != null)
- elements.addAll((List)newInput);
-}
-void remove(Object o) {
- elements.remove(o);
- viewer.remove(o);
-}
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntLabelProvider.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntLabelProvider.java
deleted file mode 100644
index 646d447..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntLabelProvider.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- ******************************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import java.net.URL;
-
-import org.eclipse.ant.internal.core.Task;
-import org.eclipse.ant.internal.core.Type;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * Label provider for the items in the custmomize ant preference page:
- * URLs, Tasks, and Types.
- */
-public class CustomizeAntLabelProvider extends LabelProvider implements ITableLabelProvider {
- protected Image folderImage;
- protected Image jarImage;
- protected Image taskImage;
- protected Image typeImage;
-
-public CustomizeAntLabelProvider() {
-}
-public void dispose() {
- //note: folder and task are shared images
- folderImage = null;
- taskImage = null;
- if (jarImage != null) {
- jarImage.dispose();
- jarImage = null;
- }
- if (typeImage != null) {
- typeImage.dispose();
- typeImage = null;
- }
-}
-public Image getColumnImage(Object element, int columnIndex) {
- if (element instanceof URL) {
- URL url = (URL)element;
- if (url.getFile().endsWith("/")) {
- return folderImage();
- } else {
- return jarImage();
- }
- }
- if (element instanceof Task) {
- return taskImage();
- }
- if (element instanceof Type) {
- return typeImage();
- }
- return null;
-}
-public String getColumnText(Object element, int columnIndex) {
- if (element instanceof URL) {
- return ((URL)element).getFile();
- }
- if (element instanceof Task) {
- Task task = (Task)element;
- return task.getTaskName() + " (" + task.getLibrary().getFile()+ ": " + task.getClassName() + ")";
- }
- if (element instanceof Type) {
- Type type = (Type)element;
- return type.getTypeName() + " (" + type.getLibrary().getFile()+ ": " + type.getClassName() + ")";
- }
- return element.toString();
-}
-protected Image folderImage() {
- if (folderImage != null)
- return folderImage;
- folderImage = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
- return folderImage;
-}
-protected Image jarImage() {
- if (jarImage != null)
- return jarImage;
- jarImage = AntUIPlugin.getPlugin().getImageDescriptor(AntUIPlugin.IMG_JAR_FILE).createImage();
- return jarImage;
-}
-protected Image taskImage() {
- if (taskImage != null)
- return taskImage;
- taskImage = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_TASK_TSK);
- return taskImage;
-}
-protected Image typeImage() {
- if (typeImage != null)
- return typeImage;
- typeImage = AntUIPlugin.getPlugin().getImageDescriptor(AntUIPlugin.IMG_TYPE).createImage();
- return typeImage;
-}
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntPage.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntPage.java
deleted file mode 100644
index dd35dbf..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntPage.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- ******************************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-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.*;
-
-
-
-/**
- * Abstract superclass for all tabs that contribute to the ant classpath
- * preference page.
- */
-public abstract class CustomizeAntPage extends Object {
- SelectionAdapter selectionAdapter = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- buttonPressed(((Integer) e.widget.getData()).intValue());
- }
- };
- protected FontMetrics fontMetrics;
- protected TableViewer tableViewer;
- protected CustomizeAntContentProvider contentProvider;
-
-/**
- * This is where subclasses should add the buttons that are interesting for their page.
- */
-protected abstract void addButtonsToButtonGroup(Composite parent);
-/**
- * Should be overwritten by subclasses to handle button behaviour.
- */
-protected void buttonPressed(int buttonId) {
-}
-
-/**
- * Creates and returns a button with appropriate size and layout.
- * @param parent
- * @param labelKey The button text key, used to fetch the appropriate
- * message from the externalized catalog.
- */
-protected Button createButton(Composite parent, String labelKey, int buttonId) {
- Button button = new Button(parent, SWT.PUSH);
- button.setText(Policy.bind(labelKey));
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- int widthHint = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_WIDTH);
- data.widthHint = Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
- data.heightHint = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.BUTTON_HEIGHT);
- button.setLayoutData(data);
- button.setData(new Integer(buttonId));
- button.addSelectionListener(selectionAdapter);
- return button;
-}
-protected void createButtonGroup(Composite top) {
- Composite buttonGroup = new Composite(top, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- buttonGroup.setLayout(layout);
- buttonGroup.setLayoutData(new GridData(GridData.FILL_VERTICAL));
-
- addButtonsToButtonGroup(buttonGroup);
-}
-
-protected Label createSeparator(Composite parent) {
- Label separator= new Label(parent, SWT.NONE);
- separator.setVisible(false);
- GridData gd= new GridData();
- gd.horizontalAlignment= gd.FILL;
- gd.verticalAlignment= gd.BEGINNING;
- gd.heightHint= 4;
- separator.setLayoutData(gd);
- return separator;
-}
-protected void createTable(Composite parent) {
- Table table = new Table(parent, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER);
- table.setLayoutData(new GridData(GridData.FILL_BOTH));
- tableViewer = new TableViewer(table);
- contentProvider = new CustomizeAntContentProvider();
- tableViewer.setContentProvider(contentProvider);
- tableViewer.setLabelProvider(new CustomizeAntLabelProvider());
- tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- tableSelectionChanged((IStructuredSelection)event.getSelection());
- }
- });
-}
-
-/**
- * Returns the currently listed objects in the table. Returns null
- * if this widget has not yet been created or has been disposed.
- */
-public List getContents() {
- if (tableViewer == null || tableViewer.getControl().isDisposed())
- return null;
- Object[] elements = contentProvider.getElements(tableViewer.getInput());
- return Arrays.asList(elements);
-}
-protected void removeButtonPressed() {
- IStructuredSelection selection = (IStructuredSelection)tableViewer.getSelection();
- Object[] selected = selection.toArray();
- for (int i = 0; i < selected.length; i++) {
- contentProvider.remove(selected[i]);
- }
-}
-/**
- * Sets the contents of the table on this page. Has no effect
- * if this widget has not yet been created or has been disposed.
- */
-public void setInput(List inputs) {
- if (tableViewer == null || tableViewer.getControl().isDisposed())
- return;
- tableViewer.setInput(inputs);
- tableSelectionChanged((IStructuredSelection)tableViewer.getSelection());
-}
-/**
- * Subclasses may override to add behaviour when table selection changes.
- */
-protected void tableSelectionChanged(IStructuredSelection newSelection) {
-}
-
-/**
- * Creates and returns a control that contains this widget group.
- */
-public Control createControl(Composite parent) {
- Composite top = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginHeight = 2;
- layout.marginWidth = 2;
- top.setLayout(layout);
-
- //get font metrics for DLU -> pixel conversions
- GC gc = new GC(top);
- gc.setFont(top.getFont());
- fontMetrics = gc.getFontMetrics();
- gc.dispose();
-
- createTable(top);
- createButtonGroup(top);
- return top;
-}
-
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntPreferencePage.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntPreferencePage.java
deleted file mode 100644
index a5c71e0..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/CustomizeAntPreferencePage.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- ******************************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import java.net.URL;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.ant.core.AntCorePlugin;
-import org.eclipse.ant.internal.core.*;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
-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.*;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-/**
- * A page to set the preferences for the classpath
- */
-public class CustomizeAntPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
-
- protected ClasspathPage jarsPage;
- protected TasksPage tasksPage;
- protected TypesPage typesPage;
-/**
- * Create the console page.
- */
-public CustomizeAntPreferencePage() {
- setDescription(Policy.bind("preferences.customize.description"));
- IPreferenceStore store = AntUIPlugin.getPlugin().getPreferenceStore();
- setPreferenceStore(store);
-}
-/**
- * @see IWorkbenchPreferencePage#init
- */
-public void init(IWorkbench workbench) {
-}
-protected Control createContents(Composite parent) {
- TabFolder folder= new TabFolder(parent, SWT.NONE);
- folder.setLayout(new GridLayout());
- folder.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- jarsPage = new ClasspathPage();
- jarsPage.createTabItem(folder);
- tasksPage = new TasksPage();
- tasksPage.createTabItem(folder);
- typesPage = new TypesPage();
- typesPage.createTabItem(folder);
-
- //set the page inputs
- AntCorePreferences prefs = AntCorePlugin.getPlugin().getPreferences();
- jarsPage.setInput(Arrays.asList(prefs.getCustomURLs()));
- tasksPage.setInput(Arrays.asList(prefs.getCustomTasks()));
- typesPage.setInput(Arrays.asList(prefs.getCustomTypes()));
-
- return folder;
-}
-/**
- * @see PreferencePage#performDefaults()
- */
-protected void performDefaults() {
- super.performDefaults();
- AntCorePreferences prefs = AntCorePlugin.getPlugin().getPreferences();
- jarsPage.setInput(Arrays.asList(prefs.getDefaultCustomURLs()));
- tasksPage.setInput(Arrays.asList(prefs.getCustomTasks()));
- typesPage.setInput(Arrays.asList(prefs.getCustomTypes()));
-}
-/**
- * @see IPreferencePage#performOk()
- */
-public boolean performOk() {
- List contents = jarsPage.getContents();
- if (contents != null) {
- URL[] urls = (URL[]) contents.toArray(new URL[contents.size()]);
- AntCorePlugin.getPlugin().getPreferences().setCustomURLs(urls);
- }
- contents = tasksPage.getContents();
- if (contents != null) {
- Task[] tasks= (Task[]) contents.toArray(new Task[contents.size()]);
- AntCorePlugin.getPlugin().getPreferences().setCustomTasks(tasks);
- }
- contents = typesPage.getContents();
- if (contents != null) {
- Type[] types= (Type[]) contents.toArray(new Type[contents.size()]);
- AntCorePlugin.getPlugin().getPreferences().setCustomTypes(types);
- }
- return super.performOk();
-}
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/IAntPreferenceConstants.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/IAntPreferenceConstants.java
deleted file mode 100644
index 1bf9ec7..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/IAntPreferenceConstants.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-public interface IAntPreferenceConstants {
-
- // for the Ant preference page
-
- public static final String AUTO_SAVE = "Ant.autoSave";
-
- public static final String OUPUT_LEVEL = "Ant.outputLevel";
-
- public static final String INFO_LEVEL = "Ant.infoLevel";
-
- public static final String VERBOSE_LEVEL = "Ant.verboseLevel";
-
- public static final String DEBUG_LEVEL = "Ant.levelLevel";
-
-
- // Colors and police for the Ant Console
-
- public static final String CONSOLE_ERROR_RGB = "Ant.Console.errorColor";
-
- public static final String CONSOLE_WARNING_RGB = "Ant.Console.warningColor";
-
- public static final String CONSOLE_INFO_RGB = "Ant.Console.infoColor";
-
- public static final String CONSOLE_VERBOSE_RGB = "Ant.Console.verboseColor";
-
- public static final String CONSOLE_DEBUG_RGB = "Ant.Console.debugColor";
-
- public static final String CONSOLE_FONT = "Ant.Console.font";
-
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/OutputStructureElement.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/OutputStructureElement.java
deleted file mode 100644
index 5865470..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/OutputStructureElement.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import java.util.Vector;
-
-/**
- * Object which stores the index and the length of the output for a given
- * target or task (represented by a string)
- */
-
-public class OutputStructureElement {
-
- private OutputStructureElement parent = null;
- private Vector children;
- private String name;
- private int startIndex = 0;
- private int length = 0;
-
-
-/**
- * This constructor is intended to be used only by the first element of the structure (the root element)
- */
-public OutputStructureElement(String name) {
- // there's at least one target as it is the root which may be instantiated via this constructor
- children = new Vector(1);
- this.name = name;
-}
-
-/**
- * This constructor is used for any element but the first element of the structure (the root element)
- */
-public OutputStructureElement(String name, OutputStructureElement parent, int startIndex) {
- children = new Vector(0);
- this.name = name;
- this.startIndex = startIndex;
- parent.addChild(this);
-}
-
-public void addChild(OutputStructureElement child) {
- children.add(child);
- child.setParent(this);
-}
-
-public boolean hasChildren() {
- return !children.isEmpty();
-}
-
-public String getName() {
- return name;
-}
-
-public void setName(String name) {
- this.name = name;
-}
-
-public void setParent(OutputStructureElement parent) {
- this.parent = parent;
-}
-
-public OutputStructureElement getParent() {
- return parent;
-}
-
-public OutputStructureElement[] getChildren() {
- return (OutputStructureElement[]) children.toArray(new OutputStructureElement[children.size()]);
-}
-
-public void setStartIndex(int index) {
- startIndex = index;
-}
-
-public void setEndIndex(int index) {
- length = index - startIndex;
-}
-
-public int getStartIndex() {
- return startIndex;
-}
-
-public int getEndIndex() {
- return startIndex + length;
-}
-
-public int getLength() {
- return length;
-}
-
-public String toString() {
- return name;
-}
-
-}
-
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/Policy.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/Policy.java
deleted file mode 100644
index b4578f7..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/Policy.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2000,2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import java.text.MessageFormat;
-import java.util.*;
-
-import org.eclipse.core.runtime.*;
-
-public class Policy {
- private static ResourceBundle bundle = ResourceBundle.getBundle(AntUIPlugin.PROPERTIES_MESSAGES, Locale.getDefault());
-
-/**
- * Lookup the message with the given ID in this catalog
- */
-public static String bind(String id) {
- return bind(id, (String[])null);
-}
-/**
- * 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});
-}
-
-/**
- * Lookup the message with the given ID in this catalog and bind its
- * substitution locations with the given string values.
- */
-public static String bind(String id, String[] bindings) {
- if (id == null)
- return "No message available";//$NON-NLS-1$
- String message = null;
- try {
- message = bundle.getString(id);
- } catch (MissingResourceException e) {
- // If we got an exception looking for the message, fail gracefully by just returning
- // the id we were looking for. In most cases this is semi-informative so is not too bad.
- return "Missing message: " + id + "in: " + AntUIPlugin.PROPERTIES_MESSAGES;//$NON-NLS-1$
- }
- if (bindings == null)
- return message;
- return MessageFormat.format(message, bindings);
-}
-public static IProgressMonitor monitorFor(IProgressMonitor monitor) {
- if (monitor == null)
- return new NullProgressMonitor();
- return monitor;
-}
-public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks) {
- if (monitor == null)
- return new NullProgressMonitor();
- if (monitor instanceof NullProgressMonitor)
- return monitor;
- return new SubProgressMonitor(monitor, ticks);
-}
-public static IProgressMonitor subMonitorFor(IProgressMonitor monitor, int ticks, int style) {
- if (monitor == null)
- return new NullProgressMonitor();
- if (monitor instanceof NullProgressMonitor)
- return monitor;
- return new SubProgressMonitor(monitor, ticks, style);
-}
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/RunAntActionDelegate.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/RunAntActionDelegate.java
deleted file mode 100644
index fcb40e1..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/RunAntActionDelegate.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-
-
-public class RunAntActionDelegate implements IWorkbenchWindowActionDelegate {
-
- private IFile selection;
-
-/*
- * @see IWorkbenchWindowActionDelegate
- */
-public void dispose() {
-}
-
-/*
- * @see IWorkbenchWindowActionDelegate
- */
-public void init(IWorkbenchWindow window) {
-}
-/*
- * @see IActionDelegate
- */
-public void run(IAction action) {
-
- new AntAction(selection).run();
-}
-/*
- * @see IWorkbenchActionDelegate
- */
-public void selectionChanged(IAction action, ISelection selection) {
- this.selection = null;
- if (selection instanceof IStructuredSelection) {
- IStructuredSelection structuredSelection = (IStructuredSelection)selection;
- if (structuredSelection.size() == 1) {
- Object selectedResource = structuredSelection.getFirstElement();
- if (selectedResource instanceof IFile)
- this.selection = (IFile)selectedResource;
- }
- }
-}
-
-/**
- * Sets the file for the wizard.
- *
- * @param the file to parse
- */
-public void setFile(IFile file) {
- selection = file;
-}
-
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TargetsListContentProvider.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TargetsListContentProvider.java
deleted file mode 100644
index c769148..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TargetsListContentProvider.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import org.apache.tools.ant.Project;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * Content provider for the Ant dialog: it provides the ListViewer with the targets defined in the xml file.
- */
-
-public class TargetsListContentProvider implements IStructuredContentProvider {
-
- private static TargetsListContentProvider instance;
-
- static {
- instance = new TargetsListContentProvider();
- }
-
-// private to ensure that it remains a singleton
-private TargetsListContentProvider() {
- super();
-}
-
-public static TargetsListContentProvider getInstance() {
- return instance;
-}
-
-/**
- * Returns the targets found in the xml file after parsing.
- *
- * @param groupName the name of the group
- * @return the array of the targets found
- */
-public Object[] getElements(Object inputElement) {
- Project project = (Project)inputElement;
- return project.getTargets().values().toArray();
-}
-
-public void dispose() {
-}
-
-public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-}
-
-}
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TargetsListLabelProvider.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TargetsListLabelProvider.java
deleted file mode 100644
index da5c64b..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TargetsListLabelProvider.java
+++ /dev/null
Binary files differ
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TasksPage.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TasksPage.java
deleted file mode 100644
index 04286b4..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TasksPage.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- ******************************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import org.eclipse.ant.internal.core.Task;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-
-/**
- * A widget group for the tasks tab of the ant classpath preference page.
- */
-public class TasksPage extends CustomizeAntPage {
- protected Button editButton;
- protected Button removeButton;
-
- //button constants
- protected static final int ADD_TASK_BUTTON= IDialogConstants.CLIENT_ID + 1;
- protected static final int EDIT_TASK_BUTTON = IDialogConstants.CLIENT_ID + 2;
- protected static final int REMOVE_BUTTON = IDialogConstants.CLIENT_ID + 3;
-
-public TasksPage() {
-}
-protected void addButtonsToButtonGroup(Composite parent) {
- createButton(parent, "preferences.customize.addTaskButtonTitle", ADD_TASK_BUTTON);
- editButton = createButton(parent, "preferences.customize.editTaskButtonTitle", EDIT_TASK_BUTTON);
- createSeparator(parent);
- removeButton = createButton(parent, "preferences.customize.removeButtonTitle", REMOVE_BUTTON);
-}
-protected void addTaskButtonPressed() {
- String title = Policy.bind("preferences.customize.addTaskDialogTitle");
- String msg = Policy.bind("preferences.customize.addTaskDialogDescription");
- AddTaskDialog dialog = new AddTaskDialog(tableViewer.getControl().getShell(), title, msg);
- if (dialog.open() == Dialog.CANCEL)
- return;
-
- Task task = new Task();
- task.setTaskName(dialog.getTaskName());
- task.setClassName(dialog.getClassName());
- task.setLibrary(dialog.getLibrary());
- contentProvider.add(task);
-}
-protected void buttonPressed(int buttonId) {
- switch (buttonId) {
- case ADD_TASK_BUTTON:
- addTaskButtonPressed();
- break;
- case EDIT_TASK_BUTTON:
- editTaskButtonPressed();
- break;
- case REMOVE_BUTTON:
- removeButtonPressed();
- break;
- }
-}
-/**
- * Creates and returns a tab item that contains this widget group.
- */
-public TabItem createTabItem(TabFolder folder) {
- TabItem item = new TabItem(folder, SWT.NONE);
- item.setText(Policy.bind("preferences.customize.tasksPageTitle"));
- item.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_TASK_TSK));
- item.setData(this);
- item.setControl(createControl(folder));
- return item;
-}
-protected void editTaskButtonPressed() {
- String title = Policy.bind("preferences.customize.editTaskDialogTitle");
- String msg = Policy.bind("preferences.customize.editTaskDialogDescription");
- AddTaskDialog dialog = new AddTaskDialog(tableViewer.getControl().getShell(), title, msg);
- IStructuredSelection selection = (IStructuredSelection)tableViewer.getSelection();
- if (selection.isEmpty())
- return;
- Task task = (Task)selection.getFirstElement();
- dialog.setClassName(task.getClassName());
- dialog.setTaskName(task.getTaskName());
- dialog.setLibrary(task.getLibrary());
- if (dialog.open() == Dialog.CANCEL)
- return;
-
- task.setTaskName(dialog.getTaskName());
- task.setClassName(dialog.getClassName());
- task.setLibrary(dialog.getLibrary());
- tableViewer.update(task, null);
-}
-/**
- * @see CustomizeAntPage#tableSelectionChanged(ISelection)
- */
-protected void tableSelectionChanged(IStructuredSelection newSelection) {
- int size = newSelection.size();
- editButton.setEnabled(size == 1);
- removeButton.setEnabled(size > 0);
-}
-
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TypesPage.java b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TypesPage.java
deleted file mode 100644
index a04d5be..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/TypesPage.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- ******************************************************************************/
-package org.eclipse.ant.internal.ui;
-
-import org.eclipse.ant.internal.core.Type;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.*;
-
-/**
- * A widget group for the types tab of the ant classpath preference page.
- */
-public class TypesPage extends CustomizeAntPage {
- protected Button editButton;
- protected Button removeButton;
-
- //button constants
- protected static final int ADD_TYPE_BUTTON= IDialogConstants.CLIENT_ID + 1;
- protected static final int EDIT_TYPE_BUTTON = IDialogConstants.CLIENT_ID + 2;
- protected static final int REMOVE_BUTTON = IDialogConstants.CLIENT_ID + 3;
-
-public TypesPage() {
-}
-protected void addButtonsToButtonGroup(Composite parent) {
- createButton(parent, "preferences.customize.addTypeButtonTitle", ADD_TYPE_BUTTON);
- editButton = createButton(parent, "preferences.customize.editTypeButtonTitle", EDIT_TYPE_BUTTON);
- createSeparator(parent);
- removeButton = createButton(parent, "preferences.customize.removeButtonTitle", REMOVE_BUTTON);
-}
-protected void addTypeButtonPressed() {
- String title = Policy.bind("preferences.customize.addTypeDialogTitle");
- String msg = Policy.bind("preferences.customize.addTypeDialogDescription");
- AddTaskDialog dialog = new AddTaskDialog(tableViewer.getControl().getShell(), title, msg);
- if (dialog.open() == Dialog.CANCEL)
- return;
-
- Type type = new Type();
- type.setTypeName(dialog.getTaskName());
- type.setClassName(dialog.getClassName());
- type.setLibrary(dialog.getLibrary());
- contentProvider.add(type);
-}
-protected void buttonPressed(int buttonId) {
- switch (buttonId) {
- case ADD_TYPE_BUTTON:
- addTypeButtonPressed();
- break;
- case EDIT_TYPE_BUTTON:
- editTypeButtonPressed();
- break;
- case REMOVE_BUTTON:
- removeButtonPressed();
- break;
- }
-}
-public TabItem createTabItem(TabFolder folder) {
- TabItem item = new TabItem(folder, SWT.NONE);
- item.setText(Policy.bind("preferences.customize.typesPageTitle"));
- final Image image = AntUIPlugin.getPlugin().getImageDescriptor(AntUIPlugin.IMG_TYPE).createImage();
- item.setImage(image);
- item.setData(this);
- item.setControl(createControl(folder));
- item.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- if (image != null)
- image.dispose();
- }
- });
- return item;
-}
-protected void editTypeButtonPressed() {
- String title = Policy.bind("preferences.customize.editTypeDialogTitle");
- String msg = Policy.bind("preferences.customize.editTypeDialogDescription");
- AddTaskDialog dialog = new AddTaskDialog(tableViewer.getControl().getShell(), title, msg);
- IStructuredSelection selection = (IStructuredSelection)tableViewer.getSelection();
- if (selection.isEmpty())
- return;
- Type type= (Type)selection.getFirstElement();
- dialog.setClassName(type.getClassName());
- dialog.setTaskName(type.getTypeName());
- dialog.setLibrary(type.getLibrary());
- if (dialog.open() == Dialog.CANCEL)
- return;
-
- type.setTypeName(dialog.getTaskName());
- type.setClassName(dialog.getClassName());
- type.setLibrary(dialog.getLibrary());
- tableViewer.update(type, null);
-}
-/**
- * @see CustomizeAntPage#tableSelectionChanged(ISelection)
- */
-protected void tableSelectionChanged(IStructuredSelection newSelection) {
- int size = newSelection.size();
- editButton.setEnabled(size == 1);
- removeButton.setEnabled(size > 0);
-}
-}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/messages.properties b/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/messages.properties
deleted file mode 100644
index 73921b7..0000000
--- a/ant/org.eclipse.ant.ui/src/org/eclipse/ant/internal/ui/messages.properties
+++ /dev/null
@@ -1,114 +0,0 @@
-### Ant UI plugin message catalog
-
-
-### wizard
-wizard.title = Run Ant
-wizard.executeAntScriptTitle = Execute Ant Script
-wizard.executeAntScriptDescription = Select the targets to execute.
-wizard.availableTargetsLabel = Available Targets:
-wizard.argumentsLabel = Arguments:
-wizard.displayLogLabel = &Display execution log to Ant console
-
-
-### label provider
-labelprovider.defaultTarget = Default target
-antTreeLabelProvider.invalidTaskName = Invalid task name
-
-
-### preferences page
-preferences.savePriorToBuilding = Save all &modified resources automatically prior to manual execution of an Ant script
-preferences.preferedOutputLevel = Preferred output level
-preferences.info = &Information (normal)
-preferences.verbose = &Verbose
-preferences.debug = De&bug
-preferences.description = Console text color settings.
-preferences.errorColor = &Error:
-preferences.warningColor = &Warning:
-preferences.infoColor = &Information:
-preferences.verboseColor = &Verbose:
-preferences.debugColor = &Debug:
-preferences.font = Console font setting:
-
-preferences.customize.description = Customize the classpath, tasks and types used when running Ant scripts from Eclipse.
-preferences.customize.classpathPageTitle = Classpath
-preferences.customize.tasksPageTitle = Tasks
-preferences.customize.typesPageTitle = Types
-preferences.customize.addFolderButtonTitle = Add &Folder...
-preferences.customize.addJarButtonTitle = Add &Jar...
-preferences.customize.defaultButtonTitle = Restore &Defaults
-preferences.customize.removeButtonTitle = &Remove
-preferences.customize.addTypeButtonTitle = &Add Type
-preferences.customize.editTypeButtonTitle = &Edit Type
-preferences.customize.addTaskButtonTitle = &Add Task
-preferences.customize.editTaskButtonTitle = &Edit Task
-preferences.customize.addTaskDialogName = &Name
-preferences.customize.addTaskDialogClass = &Class
-preferences.customize.addTaskDialogLibrary = &Library
-preferences.customize.addTaskDialogDescription = Enter a name, java class, and library for your custom task.
-preferences.customize.addTaskDialogTitle = Add Task
-preferences.customize.editTaskDialogDescription = Modify the name, java class, and library of your custom task
-preferences.customize.editTaskDialogTitle = Edit Task
-preferences.customize.addTypeDialogDescription = Enter a name, java class, and library for your custom type.
-preferences.customize.addTypeDialogTitle = Add Type
-preferences.customize.editTypeDialogDescription = Modify the name, java class, and library of your custom type
-preferences.customize.editTypeDialogTitle = Edit Type
-
-### console labels
-#find_action.label=&Find...@Ctrl+F
-#find_action.tooltip=Find
-#find_action.image=
-#find_action.description=Find
-
-
-### monitor
-monitor.runningAnt = Running Ant.
-#monitor.buildStarted = Build started...
-#monitor.targetColumn = Target:
-#monitor.started = started.
-
-
-### console
-console.copy = &Copy@Ctrl+C
-console.selectAll = Select &All@Ctrl+A
-console.clearOutput = Clear &Output
-console.expandAll = &Expand All
-console.hideOutputStructureTree = Hide Output Structure Tree
-console.showOutputStructureTree = Show Output Structure Tree
-#console.hideTree = &Hide Tree
-console.showTree = &Show Tree
-console.showSelectedElementOnly = S&how Output of Selected Element Only
-console.showCompleteOutput = Show &Complete Output
-console.antScript = Ant Script
-#console.project = Project
-
-### launcher
-launcher.noFile = No file recently executed.
-
-### Ant builder property page
-#builderProperties.description= Tool scripts and external commands can be configured to run as part of the \n\
-#incremental build process. Use this page to add, remove, and configure tool \n\
-#scripts to run when this project is built.
-
-### status
-status.targetPropertyNotRead = Could not read ant targets property from resource: {0}.
-status.targetPropertyNotWritten = Could not write ant targets property to resource: {0}.
-status.logPropertyNotRead = Could not read log property from resource: {0}.
-status.logPropertyNotWritten = Could not write log property to resource: {0}.
-status.consoleNotInitialized = Could not initialize Ant console view
-status.argumentPropertyNotRead = Could not read argument property from resource: {0}.
-status.argumentPropertyNotWritten = Could not write argument property to resource: {0}.
-
-
-### error
-error.antScriptError = Ant script error.
-error.antParsingError = A problem occurred parsing the Ant file.
-error.antExecutionErrorTitle = Ant Execution Problems.
-error.antExecutionError = A problem occurred executing the Ant file.
-error.antExecutionErrorGeneral = See the output console for details.
-
-
-### exception
-exception.canceled = Canceled.
-exception.buildException = BuildException: {0}
-exception.missingResourceBundle = Missing Resource Bundle
-exception.missingResourceBundle.message = The resource properties for the Ant UI plugin could not be found.
diff --git a/ant/org.eclipse.ant.ui/src_ant/org/eclipse/ant/internal/ui/ant/UIBuildLogger.java b/ant/org.eclipse.ant.ui/src_ant/org/eclipse/ant/internal/ui/ant/UIBuildLogger.java
deleted file mode 100644
index 99e718a..0000000
--- a/ant/org.eclipse.ant.ui/src_ant/org/eclipse/ant/internal/ui/ant/UIBuildLogger.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.ant.internal.ui.ant;
-
-import java.io.PrintStream;
-import java.util.Iterator;
-import java.util.Vector;
-
-import org.apache.tools.ant.*;
-import org.eclipse.ant.internal.ui.*;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.widgets.Display;
-
-public class UIBuildLogger implements BuildLogger {
-
- protected int priorityFilter = Project.MSG_INFO;
- protected IProgressMonitor monitor;
- private int logLength = 0;
- private int lastTargetEndIndex = 0;
-
-public UIBuildLogger() {
- AntUIPlugin plugin = AntUIPlugin.getPlugin();
- this.monitor = Policy.monitorFor(plugin.getCurrentProgressMonitor());
-}
-
-/**
- * @see BuildListener#buildStarted(BuildEvent)
- */
-public void buildStarted(BuildEvent event) {
- checkCanceled();
-}
-
-/**
- * @see BuildListener#buildFinished(BuildEvent)
- */
-public void buildFinished(BuildEvent event) {
- checkCanceled();
- monitor.done();
- handleException(event);
-}
-
-protected void handleException(BuildEvent event) {
- Throwable exception = event.getException();
- if (exception == null)
- return;
- logMessage(Policy.bind("exception.buildException", exception.toString()), Project.MSG_ERR);
-}
-
-/**
- * @see BuildListener#targetStarted(BuildEvent)
- */
-public void targetStarted(BuildEvent event) {
- checkCanceled();
- createNewOutputStructureElement(event.getTarget().getName(), logLength);
-}
-
-protected void refreshConsoleTrees() {
- final Vector consoles = AntConsole.getInstances();
- if (consoles.size() == 0)
- return;
- // we get the display from the console #0 (that exists for sure because consoles!=null)
- Display display = ((AntConsole) consoles.get(0)).getSite().getShell().getDisplay();
- // create a new thread for synchronizing all the refresh operations
- display.syncExec(new Runnable() {
- public void run() {
- for (Iterator iterator = consoles.iterator(); iterator.hasNext();) {
- AntConsole console = (AntConsole) iterator.next();
- console.refreshTree();
- }
- }
- });
-}
-
-protected void createNewOutputStructureElement(String name, int index) {
- for (Iterator iterator = AntConsole.getInstances().iterator(); iterator.hasNext();) {
- AntConsole console = (AntConsole) iterator.next();
- OutputStructureElement newElement = new OutputStructureElement(name, console.getCurrentOutputStructureElement(), index);
- console.setCurrentOutputStructureElement(newElement);
- }
-}
-
-/**
- * @see BuildListener#targetFinished(BuildEvent)
- */
-public void targetFinished(BuildEvent event) {
- checkCanceled();
- monitor.worked(1);
- handleException(event);
- finishCurrentOutputStructureElement();
- // store the end index of this target's log (so that we can use it later)
- lastTargetEndIndex = logLength;
- refreshConsoleTrees();
-}
-
-/**
- * @see BuildListener#taskStarted(BuildEvent)
- */
-public void taskStarted(BuildEvent event) {
- checkCanceled();
- createNewOutputStructureElement(event.getTask().getTaskName());
-}
-
-/**
- * @see BuildListener#taskFinished(BuildEvent)
- */
-public void taskFinished(BuildEvent event) {
- checkCanceled();
- handleException(event);
- finishCurrentOutputStructureElement();
- refreshConsoleTrees();
-}
-
-/**
- * @see BuildListener#messageLogged(BuildEvent)
- */
-public void messageLogged(BuildEvent event) {
- checkCanceled();
- logMessage(event.getMessage(), event.getPriority());
-}
-
-protected void logMessage(String message, int priority) {
- if (priority > priorityFilter)
- return;
- message += '\n';
- for (Iterator iterator = AntConsole.getInstances().iterator(); iterator.hasNext();) {
- AntConsole console = (AntConsole) iterator.next();
- console.append(message, priority);
- }
- logLength += message.length();
-}
-
-protected void finishCurrentOutputStructureElement() {
- for (Iterator iterator = AntConsole.getInstances().iterator(); iterator.hasNext();) {
- AntConsole console = (AntConsole) iterator.next();
- // sets the index that indicates the end of the log part linked to this element
- OutputStructureElement output = console.getCurrentOutputStructureElement();
- output.setEndIndex(logLength);
- // and sets the current element to the parent of the element
- console.setCurrentOutputStructureElement(output.getParent());
- }
-}
-
-protected void checkCanceled() {
- if (monitor == null)
- return;
- if (monitor.isCanceled())
- throw new BuildCanceledException();
-}
-
-protected void createNewOutputStructureElement(String name) {
- createNewOutputStructureElement(name, logLength);
-}
-
-public void setMessageOutputLevel(int level) {
- this.priorityFilter = level;
-}
-
-public void setEmacsMode(boolean emacsMode) {
-}
-
-public void setErrorPrintStream(PrintStream err) {
-}
-
-public void setOutputPrintStream(PrintStream output) {
-}
-}
\ No newline at end of file
diff --git a/platform/org.eclipse.platform/.classpath b/platform/org.eclipse.platform/.classpath
deleted file mode 100644
index dbbc1d8..0000000
--- a/platform/org.eclipse.platform/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/platform/org.eclipse.platform/.cvsignore b/platform/org.eclipse.platform/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/platform/org.eclipse.platform/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/platform/org.eclipse.platform/.project b/platform/org.eclipse.platform/.project
deleted file mode 100644
index b6f0793..0000000
--- a/platform/org.eclipse.platform/.project
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.platform</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- </buildSpec>
- <natures>
- <nature>org.eclipse.team.cvs.core.cvsnature</nature>
- </natures>
-</projectDescription>
diff --git a/platform/org.eclipse.platform/about.html b/platform/org.eclipse.platform/about.html
deleted file mode 100644
index 441774f..0000000
--- a/platform/org.eclipse.platform/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>11th December, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/platform/org.eclipse.platform/about.ini b/platform/org.eclipse.platform/about.ini
deleted file mode 100644
index 334ee42..0000000
--- a/platform/org.eclipse.platform/about.ini
+++ /dev/null
@@ -1,25 +0,0 @@
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-# Property "aboutText" contains blurb for "About" dialog (translated)
-aboutText=%blurb
-
-# Property "windowImage" contains path to window icon (16x16)
-# needed for primary features only
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=eclipse32.gif
-
-# Property "aboutImage" contains path to product image (500x330 or 115x164)
-# needed for primary features only
-
-# Property "appName" contains name of the application (translated)
-# needed for primary features only
-
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-welcomePage=welcome.xml
-
-
diff --git a/platform/org.eclipse.platform/about.mappings b/platform/org.eclipse.platform/about.mappings
deleted file mode 100644
index 720ca87..0000000
--- a/platform/org.eclipse.platform/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-0=@build@
\ No newline at end of file
diff --git a/platform/org.eclipse.platform/about.properties b/platform/org.eclipse.platform/about.properties
deleted file mode 100644
index b49394c..0000000
--- a/platform/org.eclipse.platform/about.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-
-blurb=Eclipse Platform\n\
-\n\
-Version: 2.0\n\
-Build id: {0}\n\
-\n\
-(c) Copyright IBM Corp. and others 2000, 2002. All rights reserved.\n\
-Visit http://www.eclipse.org/platform
-
diff --git a/platform/org.eclipse.platform/build.properties b/platform/org.eclipse.platform/build.properties
deleted file mode 100644
index c5b5b48..0000000
--- a/platform/org.eclipse.platform/build.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-source.startup.jar=src/
-
-bin.includes=\
-about.html,\
-about.ini,\
-about.mappings,\
-about.properties,\
-eclipse32.gif,\
-plugin.xml,\
-plugin.properties,\
-welcome.xml,\
-startup.jar
diff --git a/platform/org.eclipse.platform/eclipse32.gif b/platform/org.eclipse.platform/eclipse32.gif
deleted file mode 100644
index fa12d1f..0000000
--- a/platform/org.eclipse.platform/eclipse32.gif
+++ /dev/null
Binary files differ
diff --git a/platform/org.eclipse.platform/plugin.properties b/platform/org.eclipse.platform/plugin.properties
deleted file mode 100644
index 25f69ce..0000000
--- a/platform/org.eclipse.platform/plugin.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-pluginName=Eclipse Platform
-providerName=Object Technology International, Inc.
\ No newline at end of file
diff --git a/platform/org.eclipse.platform/plugin.xml b/platform/org.eclipse.platform/plugin.xml
deleted file mode 100644
index ee98493..0000000
--- a/platform/org.eclipse.platform/plugin.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin
- name="%pluginName"
- id="org.eclipse.platform"
- version="2.0.0"
- provider-name="%providerName">
-
- <runtime>
- <library name="startup.jar" />
- </runtime>
-
-</plugin>
diff --git a/platform/org.eclipse.platform/src/org/eclipse/core/launcher/Main.java b/platform/org.eclipse.platform/src/org/eclipse/core/launcher/Main.java
deleted file mode 100644
index 01980aa..0000000
--- a/platform/org.eclipse.platform/src/org/eclipse/core/launcher/Main.java
+++ /dev/null
@@ -1,1081 +0,0 @@
-package org.eclipse.core.launcher;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.*;
-import java.util.*;
-
-/**
- * Startup class for Eclipse. Creates a class loader using
- * supplied URL of platform installation, loads and calls
- * the Eclipse Boot Loader. The startup arguments are as follows:
- * <dl>
- * <dd>
- * -application <id>: the identifier of the application to run
- * </dd>
- * <dd>
- * -boot <location>: the location, expressed as a URL, of the platform's boot.jar
- * </dd>
- * <dd>
- * -consolelog : enables log to the console. Handy when combined with -debug
- * </dd>
- * <dd>
- * -data <location>: sets the workspace location and the default location for projects
- * </dd>
- * <dd>
- * -debug [options file]: turns on debug mode for the platform and optionally specifies a location
- * for the .options file. This file indicates what debug points are available for a
- * plug-in and whether or not they are enabled. If a location is not specified, the platform searches
- * for the .options file under the install directory
- * </dd>
- * <dd>
- * -dev [entries]: turns on dev mode and optionally specifies comma-separated class path entries
- * which are added to the class path of each plug-in
- * </dd>
- * <dd>
- * -keyring <location>: the location of the authorization database on disk. This argument
- * has to be used together with the -password argument
- * </dd>
- * <dd>
- * -password <passwd>: the password for the authorization database
- * </dd>
- * <dd>
- * -plugins <location>: The arg is a URL pointing to a file which specs the plugin
- * path for the platform. The file is in property file format where the keys are user-defined
- * names and the values are comma separated lists of either explicit paths to plugin.xml
- * files or directories containing plugins. (e.g., .../eclipse/plugins).
- * </dd>
- * <dd>
- * -ws <window system>: sets the window system value
- * </dd>
- * </dl>
- */
-public class Main {
- /**
- * Indicates whether this instance is running in debug mode.
- */
- protected boolean debug = false;
-
- /**
- * The location of the launcher to run.
- */
- protected String bootLocation = null;
-
- /**
- * The location of the install root
- */
- protected String rootLocation = null;
-
- /**
- * The identifier of the application to run.
- */
- protected String application;
-
- /**
- * The identifier of the feature to run.
- */
- protected String feature;
-
- /**
- * The identifier of the configuration to use.
- */
- protected String configuration;
-
- /**
- * The path for finding find plugins.
- */
- protected URL pluginPathLocation;
-
- /**
- * The boot path location.
- */
- protected String location;
-
- /**
- * The class path entries.
- */
- protected String devClassPath = null;
-
- /**
- * Indicates whether this instance is running in development mode.
- */
- protected boolean inDevelopmentMode = false;
-
- // splash handling
- private String showSplash = null;
- private String endSplash = null;
- private boolean cmdInitialize = false;
- private Process showProcess = null;
- private boolean splashDown = false;
- private final Runnable endSplashHandler = new Runnable() {
- public void run() {
- takeDownSplash();
- }
- };
-
- // configuration properties
- private Properties props = new Properties();
- private HashMap featureIndex = new HashMap();
- private String baseLocation = null;
-
- // constants
- private static final String APPLICATION = "-application";
- private static final String BOOT = "-boot";
- private static final String INSTALL = "-install";
- private static final String INITIALIZE = "-initialize";
- private static final String DEBUG = "-debug";
- private static final String DEV = "-dev";
- private static final String DATA = "-data";
- private static final String CONFIGURATION = "-configuration";
- private static final String FEATURE = "-feature";
- private static final String SHOWSPLASH = "-showsplash";
- private static final String ENDSPLASH = "-endsplash";
- private static final String SPLASH_IMAGE = "splash.bmp";
- private static final String PI_BOOT = "org.eclipse.core.boot";
- private static final String BOOTLOADER = "org.eclipse.core.boot.BootLoader";
- private static final String BOOTJAR = "boot.jar";
- private static final String PLATFORM_URL = "platform:/base/";
-
- // constants: configuration file location
- private static final String CONFIG_FILE = "platform.cfg";
- private static final String ARG_USER_DIR = "user.dir";
-
- // constants: configuration file elements
- private static final String CFG_CORE_BOOT = "bootstrap." + PI_BOOT;
- private static final String CFG_FEATURE_ENTRY = "feature";
- private static final String CFG_FEATURE_ENTRY_DEFAULT = "feature.default.id";
- private static final String CFG_FEATURE_ENTRY_ID = "id";
- private static final String CFG_FEATURE_ENTRY_ROOT = "root";
- private static final String CFG_EOF = "eof";
-
-/**
- * Executes the launch.
- *
- * @return the result of performing the launch
- * @param args command-line arguments
- * @exception Exception thrown if a problem occurs during the launch
- */
-protected Object basicRun(String[] args) throws Exception {
- // locate boot plugin (may return -dev mode variations)
- URL[] bootPath = getBootPath(bootLocation);
-
- // splash handling is done here, because the default case needs to know
- // the location of the boot plugin we are going to use
- handleSplash(bootPath);
-
- // load the BootLoader and startup the platform
- Class clazz = getBootLoader(bootPath);
- Method method = clazz.getDeclaredMethod("run", new Class[] { String.class, URL.class, String.class, String[].class, Runnable.class });
- try {
- return method.invoke(clazz, new Object[] { application, pluginPathLocation, location, args, endSplashHandler });
- } catch (InvocationTargetException e) {
- if (e.getTargetException() instanceof Error)
- throw (Error) e.getTargetException();
- else
- throw e;
- }
-}
-/**
- * Returns a string representation of the given URL String. This converts
- * escaped sequences (%..) in the URL into the appropriate characters.
- * NOTE: due to class visibility there is a copy of this method
- * in InternalBootLoader
- */
-protected String decode(String urlString) {
- //try to use Java 1.4 method if available
- try {
- Class clazz = URLDecoder.class;
- Method method = clazz.getDeclaredMethod("decode", new Class[] {String.class, String.class});//$NON-NLS-1$
- //first encode '+' characters, because URLDecoder incorrectly converts
- //them to spaces on certain class library implementations.
- if (urlString.indexOf('+') >= 0) {
- int len = urlString.length();
- StringBuffer buf = new StringBuffer(len);
- for (int i = 0; i < len; i++) {
- char c = urlString.charAt(i);
- if (c == '+')
- buf.append("%2B");//$NON-NLS-1$
- else
- buf.append(c);
- }
- urlString = buf.toString();
- }
- Object result = method.invoke(null, new Object[] {urlString, "UTF-8"});//$NON-NLS-1$
- if (result != null)
- return (String)result;
- } catch (Exception e) {
- //JDK 1.4 method not found -- fall through and decode by hand
- }
- //decode URL by hand
- int len = urlString.length();
- ByteArrayOutputStream os = new ByteArrayOutputStream(len);
- for (int i = 0; i < len;) {
- char c = urlString.charAt(i++);
- if (c == '%') {
- if (len >= i + 2) {
- os.write(Integer.parseInt(urlString.substring(i, i + 2), 16));
- }
- i += 2;
- } else {
- os.write(c);
- }
- }
- try {
- return new String(os.toByteArray(), "UTF-8");//$NON-NLS-1$
- } catch (UnsupportedEncodingException e) {
- //use default encoding
- return new String(os.toByteArray());
- }
-}
-/**
- * Returns the result of converting a list of comma-separated tokens into an array
- *
- * @return the array of string tokens
- * @param prop the initial comma-separated string
- */
-private String[] getArrayFromList(String prop) {
- if (prop == null || prop.trim().equals(""))
- return new String[0];
- Vector list = new Vector();
- StringTokenizer tokens = new StringTokenizer(prop, ",");
- while (tokens.hasMoreTokens()) {
- String token = tokens.nextToken().trim();
- if (!token.equals(""))
- list.addElement(token);
- }
- return list.isEmpty() ? new String[0] : (String[]) list.toArray(new String[0]);
-}
-/**
- * Creates and returns a platform <code>BootLoader</code> which can be used to start
- * up and run the platform.
- *
- * @return the new boot loader
- * @param path search path for the BootLoader
- */
-public Class getBootLoader(URL[] path) throws Exception {
- URLClassLoader loader = new URLClassLoader(path, null);
- return loader.loadClass(BOOTLOADER);
-}
-/**
- * Returns the <code>URL</code>-based class path describing where the boot classes
- * are located when running in development mode.
- *
- * @return the url-based class path
- * @param base the base location
- * @exception MalformedURLException if a problem occurs computing the class path
- */
-protected URL[] getDevPath(URL base) throws MalformedURLException {
- URL url;
- String devBase = base.toExternalForm();
- if (!inDevelopmentMode) {
- url = new URL(devBase + BOOTJAR);
- return new URL[] {url};
- }
- String[] locations = getArrayFromList(devClassPath);
- ArrayList result = new ArrayList(locations.length);
- for (int i = 0; i < locations.length; i++) {
- String spec = devBase + locations[i];
- char lastChar = spec.charAt(spec.length() - 1);
- if ((spec.endsWith(".jar") || (lastChar == '/' || lastChar == '\\')))
- url = new URL (spec);
- else
- url = new URL(spec + "/");
- //make sure URL exists before adding to path
- if (new java.io.File(url.getFile()).exists())
- result.add(url);
- }
- url = new URL(devBase + BOOTJAR);
- if (new java.io.File(url.getFile()).exists())
- result.add(url);
- return (URL[])result.toArray(new URL[result.size()]);
-}
-
-/**
- * Returns the <code>URL</code>-based class path describing where the boot classes are located.
- *
- * @return the url-based class path
- * @param base the base location
- * @exception MalformedURLException if a problem occurs computing the class path
- */
-protected URL[] getBootPath(String base) throws MalformedURLException {
- URL url = null;
- // if the given location is not null, assume it is correct and use it.
- if (base != null) {
- url = new URL(base);
- if (debug)
- System.out.println("Boot URL: " + url.toExternalForm());
- return new URL[] {url};
- }
- // search for boot in root location
- URL[] result = null;
- url = new URL(rootLocation);
- String path = url.getFile();
- path = searchForBoot(path);
- // add on any dev path elements
- url = new URL(url.getProtocol(), url.getHost(), url.getPort(), path);
- result = getDevPath(url);
- if (debug) {
- System.out.println("Boot URL:");
- for (int i = 0; i < result.length; i++)
- System.out.println(" " + result[i].toExternalForm());
- }
- return result;
-}
-
-/**
- * Searches for a boot directory starting in the "plugins" subdirectory
- * of the given location. If one is found then this location is returned;
- * otherwise an exception is thrown.
- *
- * @return the location where boot directory was found
- * @param start the location to begin searching at
- */
-protected String searchForBoot(String start) {
- FileFilter filter = new FileFilter() {
- public boolean accept(File candidate) {
- return candidate.isDirectory() &&
- (candidate.getName().equals(PI_BOOT)
- || candidate.getName().startsWith(PI_BOOT + "_"));
- }
- };
- File[] boots = new File(start, "plugins").listFiles(filter);
- if (boots == null)
- throw new RuntimeException("Could not find bootstrap code. Check location of boot plug-in or specify -boot.");
- String result = null;
- Object maxVersion = null;
- for (int i = 0; i < boots.length; i++) {
- String name = boots[i].getName();
- int index = name.indexOf('_');
- String version;
- Object currentVersion;
- if (index == -1)
- version = ""; // Note: directory with version suffix is always > than directory without version suffix
- else
- version = name.substring(index + 1);
- currentVersion = getVersionElements(version);
- if (maxVersion == null) {
- result = boots[i].getAbsolutePath();
- maxVersion = currentVersion;
- } else {
- if (compareVersion((Object[])maxVersion, (Object[])currentVersion) < 0) {
- result = boots[i].getAbsolutePath();
- maxVersion = currentVersion;
- }
- }
- }
- if (result == null)
- throw new RuntimeException("Could not find bootstrap code. Check location of boot plug-in or specify -boot.");
- return result.replace(File.separatorChar, '/') + "/";
-}
-
-/**
- * Compares version strings.
- * @return result of comparison, as integer;
- * <code><0</code> if left < right;
- * <code>0</code> if left == right;
- * <code>>0</code> if left > right;
- */
-private int compareVersion(Object[] left, Object[] right) {
-
- int result = ((Integer)left[0]).compareTo((Integer)right[0]); // compare major
- if (result != 0)
- return result;
-
- result = ((Integer)left[1]).compareTo((Integer)right[1]); // compare minor
- if (result != 0)
- return result;
-
- result = ((Integer)left[2]).compareTo((Integer)right[2]); // compare service
- if (result != 0)
- return result;
-
- return ((String)left[3]).compareTo((String)right[3]); // compare qualifier
-}
-
-/**
- * Do a quick parse of version identifier so its elements can be correctly compared.
- * If we are unable to parse the full version, remaining elements are initialized
- * with suitable defaults.
- * @return an array of size 4; first three elements are of type Integer (representing
- * major, minor and service) and the fourth element is of type String (representing
- * qualifier). Note, that returning anything else will cause exceptions in the caller.
- */
-private Object[] getVersionElements(String version) {
- Object[] result = {new Integer(0), new Integer(0), new Integer(0), ""};
- StringTokenizer t = new StringTokenizer(version, ".");
- String token;
- int i = 0;
- while(t.hasMoreTokens() && i<4) {
- token = t.nextToken();
- if (i<3) {
- // major, minor or service ... numeric values
- try {
- result[i++] = new Integer(token);
- } catch(Exception e) {
- // invalid number format - use default numbers (0) for the rest
- break;
- }
- } else {
- // qualifier ... string value
- result[i++] = token;
- }
- }
- return result;
-}
-
-/**
- * Runs the platform with the given arguments. The arguments must identify
- * an application to run (e.g., <code>-application com.example.application</code>).
- * After running the application <code>System.exit(N)</code> is executed.
- * The value of N is derived from the value returned from running the application.
- * If the application's return value is an <code>Integer</code>, N is this value.
- * In all other cases, N = 0.
- * <p>
- * Clients wishing to run the platform without a following <code>System.exit</code>
- * call should use <code>run()</code>.
- *
- * @see #run
- *
- * @param args the command line arguments
- */
-public static void main(String[] args) {
- Object result = null;
- Main launcher = new Main();
- try {
- result = launcher.run(args);
- } catch (Throwable e) {
- // try and take down the splash screen.
- launcher.takeDownSplash();
- System.out.println("Exception launching the Eclipse Platform:");
- e.printStackTrace();
- }
- int exitCode = result instanceof Integer ? ((Integer) result).intValue() : 0;
- System.exit(exitCode);
-}
-
-/**
- * Runs this launcher with the arguments specified in the given string.
- *
- * @param argString the arguments string
- * @exception Exception thrown if a problem occurs during launching
- */
-public static void main(String argString) throws Exception {
- Vector list = new Vector(5);
- for (StringTokenizer tokens = new StringTokenizer(argString, " "); tokens.hasMoreElements();)
- list.addElement((String) tokens.nextElement());
- main((String[]) list.toArray(new String[list.size()]));
-}
-
-/**
- * Processes the command line arguments
- *
- * @return the arguments to pass through to the launched application
- * @param args the command line arguments
- */
-protected String[] processCommandLine(String[] args) throws Exception {
- int[] configArgs = new int[100];
- configArgs[0] = -1; // need to initialize the first element to something that could not be an index.
- int configArgIndex = 0;
- for (int i = 0; i < args.length; i++) {
- boolean found = false;
- // check for args without parameters (i.e., a flag arg)
- // check if debug should be enabled for the entire platform
- if (args[i].equalsIgnoreCase(DEBUG)) {
- debug = true;
- // passed thru this arg (i.e., do not set found = true
- continue;
- }
-
- // check if this is initialization pass
- if (args[i].equalsIgnoreCase(INITIALIZE)) {
- cmdInitialize = true;
- // passed thru this arg (i.e., do not set found = true
- continue;
- }
-
- // check if development mode should be enabled for the entire platform
- // If this is the last arg or there is a following arg (i.e., arg+1 has a leading -),
- // simply enable development mode. Otherwise, assume that that the following arg is
- // actually some additional development time class path entries. This will be processed below.
- if (args[i].equalsIgnoreCase(DEV) && ((i + 1 == args.length) || ((i + 1 < args.length) && (args[i + 1].startsWith("-"))))) {
- inDevelopmentMode = true;
- // do not mark the arg as found so it will be passed through
- continue;
- }
-
- // done checking for args. Remember where an arg was found
- if (found) {
- configArgs[configArgIndex++] = i;
- continue;
- }
- // check for args with parameters. If we are at the last argument or if the next one
- // has a '-' as the first character, then we can't have an arg with a parm so continue.
- if (i == args.length - 1 || args[i + 1].startsWith("-"))
- continue;
- String arg = args[++i];
-
- // look for the laucher to run
- if (args[i - 1].equalsIgnoreCase(BOOT)) {
- bootLocation = arg;
- found = true;
- }
-
- // look explicitly set install root
- if (args[i - 1].equalsIgnoreCase(INSTALL)) {
- rootLocation = arg;
- found = true;
- }
-
- // look for the development mode and class path entries.
- if (args[i - 1].equalsIgnoreCase(DEV)) {
- inDevelopmentMode = true;
- devClassPath = arg;
- continue;
- }
-
- // look for the location of workspace
- if (args[i - 1].equalsIgnoreCase(DATA)) {
- baseLocation = arg;
- continue; // pass the arg on
- }
-
- // look for the application to run
- if (args[i - 1].equalsIgnoreCase(APPLICATION)) {
- application = arg;
- found = true;
- }
-
- // look for the feature to run
- if (args[i - 1].equalsIgnoreCase(FEATURE)) {
- feature = arg;
- // we mark -feature for removal. It will be
- // reinserted after we determine the actual
- // feature we'll use
- found = true;
- }
-
- // look for the configuration to use
- if (args[i - 1].equalsIgnoreCase(CONFIGURATION)) {
- configuration = arg;
- // we mark -configuration for removal. It will be
- // reinserted after we determine the actual URL of
- // the configuration file to use.
- found = true;
- }
-
- // look for token to use to show the splash screen
- if (args[i - 1].equalsIgnoreCase(SHOWSPLASH)) {
- showSplash = arg;
- found = true;
- }
-
- // look for token to use to end the splash screen
- if (args[i - 1].equalsIgnoreCase(ENDSPLASH)) {
- endSplash = arg;
- found = true;
- }
-
- // done checking for args. Remember where an arg was found
- if (found) {
- configArgs[configArgIndex++] = i - 1;
- configArgs[configArgIndex++] = i;
- }
- }
- // remove all the arguments consumed by this argument parsing
- if (configArgIndex == 0)
- return args;
- String[] passThruArgs = new String[args.length - configArgIndex];
- configArgIndex = 0;
- int j = 0;
- for (int i = 0; i < args.length; i++) {
- if (i == configArgs[configArgIndex])
- configArgIndex++;
- else
- passThruArgs[j++] = args[i];
- }
- return passThruArgs;
-}
-/**
- * Runs the application to be launched.
- *
- * @return the return value from the launched application
- * @param args the arguments to pass to the application
- * @exception thrown if a problem occurs during launching
- */
-public Object run(String[] args) throws Exception {
- String[] passThruArgs = processCommandLine(args);
- passThruArgs = processConfiguration(passThruArgs);
- return basicRun(passThruArgs);
-}
-
-/*
- * After the command line arguments have been processed, we try
- * to locate and load the platform configuration file. It contains
- * information maintained by the install/ update support. In
- * particular, the following are needed at this point
- * in the startup sequence:
- * -> if -boot was not specified, which boot.jar to load
- * BootLoader from (original core.boot plugin may have been updated)
- * -> if -feature was not specified, what is the default feature
- * (product packagers can set the default)
- * -> if we were requested to put up the splash (-showsplash
- * was specified), which one (based on defaulted or
- * specified feature information)
- * Note, that if we can't find the platform configuration file,
- * or it does not contain the information we are looking for,
- * the startup support ends up computing "reasonable" defaults
- * as before (based on relative locations within the file system)
- */
-private String[] processConfiguration(String[] passThruArgs) throws MalformedURLException {
- // get install root location, if not specified
- if (rootLocation == null)
- rootLocation = getRootURL().toExternalForm();
-
- // attempt to locate configuration file
- URL configURL = null;
- if (configuration != null && !configuration.trim().equals("")) {
- configuration = configuration.replace(File.separatorChar, '/');
- if (configuration.equalsIgnoreCase(ARG_USER_DIR)) {
- // configuration is in current working directory
- String tmp = System.getProperty("user.dir");
- if (!tmp.endsWith(File.separator))
- tmp += File.separator;
- configURL = new URL("file:" + tmp.replace(File.separatorChar,'/') + CONFIG_FILE);
- } else if(configuration.endsWith("/")) {
- // configuration specified as directory URL
- configURL = new URL(configuration + CONFIG_FILE);
- } else {
- // configuration specified down to a file
- configURL = new URL(configuration);
- }
- } else {
- // configuration not specified - defer to BootLoader
- }
-
- // load configuration
- loadConfiguration(configURL);
-
- // get boot url, if none was specified
- if (bootLocation == null) {
- String urlString = loadAttribute(props, CFG_CORE_BOOT, null);
- if (urlString != null) {
- try {
- urlString = resolve(urlString);
- URL bootDir = new URL(urlString);
- URL bootURL = new URL(bootDir, BOOTJAR);
- if (bootDir.getProtocol().equals("file")) {
- File dir = new File(bootDir.getFile());
- if (dir.exists())
- // verify boot dir ... otherwise will do default search for boot
- bootLocation = bootURL.toExternalForm();
- } else
- bootLocation = bootURL.toExternalForm();
- } catch(MalformedURLException e) {
- // continue ... will do default search for boot
- }
- }
- }
-
- // get default primary feature, if none was specified
- if (feature == null)
- feature = getFeatureIdentifier();
-
- // get application for selected feature, if none was specified
- if (application == null && feature != null)
- application = getApplicationIdentifier();
-
- // reconstruct command line arguments for configuration elements
- // (-boot and -application are not passed to BootLoader)
- if (configURL == null && feature == null && rootLocation == null)
- return passThruArgs;
-
- ArrayList args = new ArrayList(Arrays.asList(passThruArgs));
-
- if (configURL != null) {
- args.add(CONFIGURATION);
- args.add(decode(configURL.toExternalForm()));
- }
-
- if (feature != null) {
- args.add(FEATURE);
- args.add(feature);
- }
-
- // pass root location downstream
- args.add(INSTALL);
- args.add(rootLocation);
-
- return (String[])args.toArray(new String[0]);
-}
-
-/**
- * Returns url of the location this class was loaded from
- */
-private URL getRootURL() throws MalformedURLException {
- URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
- String path = decode(url.getFile());
- if (path.endsWith(".jar"))
- path = path.substring(0, path.lastIndexOf("/")+1);
- url = new URL(url.getProtocol(), url.getHost(), url.getPort(), path);
- return url;
-}
-
-/*
- * Load the configuration file. If not specified, default to the current
- * working directory
- */
-private void loadConfiguration(URL url) {
- if (url == null) {
-
- String base = baseLocation;
- if (base == null) {
- // determine default workspace
- base = System.getProperty("user.dir");
- if (!base.endsWith(File.separator))
- base += File.separator;
- base += "workspace" + File.separator;
- } else {
- base = base.replace('/',File.separatorChar);
- }
-
- // look for configuration in workspace
- if (!base.endsWith(File.separator))
- base += File.separator;
-
- try {
- File cfg = new File(base + ".metadata" + File.separator + ".config" + File.separator + CONFIG_FILE);
- if (!cfg.exists()) {
- // look for configuration in install root (default)
- String install = getRootURL().getFile().replace('/',File.separatorChar);
- if (!install.endsWith(File.separator))
- install += File.separator;
- cfg = new File(install + ".config" + File.separator + CONFIG_FILE);
- if (!cfg.exists())
- cfg = null;
- }
- if (cfg != null)
- url = new URL("file", null, 0, cfg.getAbsolutePath());
- } catch(MalformedURLException e) {
- // continue ...
- }
- }
-
- if (url != null) {
- try {
- props = load(url);
- if (debug)
- System.out.println("Startup: using configuration " + url.toString());
- } catch(IOException e) {
- // continue ...
- if (debug)
- System.out.println("Startup: unable to load configuration\n" + e);
- }
- }
-}
-
-/*
- * Load the configuration
- */
-private Properties load(URL url) throws IOException {
- Properties props = new Properties();
- InputStream is = null;
- try {
- is = url.openStream();
- props.load(is);
- // check to see if we have complete config file
- if (!CFG_EOF.equals(props.getProperty(CFG_EOF))) {
- throw new IOException();
- }
- } finally {
- if (is!=null) {
- try {
- is.close();
- } catch(IOException e) {
- //ignore failure to close
- }
- }
- }
-
- // load feature index
- if (props != null) {
- String id = props.getProperty(CFG_FEATURE_ENTRY+".0."+CFG_FEATURE_ENTRY_ID);
- for (int i=1; id != null; i++) {
- featureIndex.put(id, Integer.toString(i-1));
- id = props.getProperty(CFG_FEATURE_ENTRY+"."+i+"."+CFG_FEATURE_ENTRY_ID);
- }
- }
-
- return props;
-}
-
-/*
- * Load a configuration attribute
- */
-private String loadAttribute(Properties props, String name, String dflt) {
- if (props == null)
- return dflt;
-
- String prop = props.getProperty(name);
- if (prop == null)
- return dflt;
- else
- return prop.trim();
-}
-
-/*
- * Handle splash screen.
- * We support 2 startup scenarios:
- *
- * (1) the executable launcher put up the splash screen. In that
- * scenario we are invoked with -endsplash command which is
- * fully formed to take down the splash screen
- *
- * (2) the executable launcher did not put up the splash screen,
- * but invokes Eclipse with partially formed -showsplash command.
- * In this scenario we determine which splash to display (based on
- * feature information) and then call -showsplash command.
- *
- * In both scenarios we pass a handler (Runnable) to the platform.
- * The handler is called as a result of the launched application calling
- * Platform.endSplash(). In the first scenario this results in the
- * -endsplash command being executed. In the second scenarios this
- * results in the process created as a result of the -showsplash command
- * being destroyed.
- *
- * @param bootPath search path for the boot plugin
- */
-private void handleSplash(URL[] bootPath) {
-
- // run without splash if we are initializing
- if (cmdInitialize) {
- showSplash = null;
- endSplash = null;
- return;
- }
-
- // if -endsplash is specified, use it and ignore any -showsplash command
- if (endSplash != null) {
- showSplash = null;
- return;
- }
-
- // check if we are running without a splash screen
- if (showSplash == null)
- return;
-
- // determine the splash path
- String path = getSplashPath(bootPath);
- if (debug && path != null) {
- System.out.println("Startup: splash path = "+path);
- }
-
- // Parse the showsplash command into its separate arguments.
- // The command format is:
- // <executable> -show <magicArg> [<splashPath>]
- // If either the <executable> or the <splashPath> arguments contain a
- // space, Runtime.getRuntime().exec( String ) will not work, even
- // if both arguments are enclosed in double-quotes. The solution is to
- // use the Runtime.getRuntime().exec( String[] ) method.
- String[] cmd = new String[ (path != null ? 4 : 3) ];
- int sIndex = 0;
- int eIndex = showSplash.indexOf( " -show" );
- if (eIndex == -1)
- return; // invalid -showsplash command
- cmd[0] = showSplash.substring( sIndex, eIndex );
- sIndex = eIndex + 1;
- eIndex = showSplash.indexOf( " ", sIndex );
- if (eIndex == -1)
- return; // invalid -showsplash command
- cmd[1] = showSplash.substring( sIndex, eIndex );
- cmd[2] = showSplash.substring( eIndex+1 );
- if (path != null)
- cmd[3] = path;
- try {
- showProcess = Runtime.getRuntime().exec(cmd);
- } catch (Exception e) {
- // continue without splash ...
- e.printStackTrace();
- }
- return;
-}
-
-/*
- * take down the splash screen. Try both take-down methods just in case
- * (only one should ever be set)
- */
-private void takeDownSplash() {
- if (splashDown) // splash is already down
- return;
-
- // check if -endsplash was specified
- if (endSplash != null) {
- try {
- Runtime.getRuntime().exec(endSplash);
- } catch (Exception e) {
- //ignore failure to end splash
- }
- }
-
- // check if -showsplash was specified and executed
- if (showProcess != null) {
- showProcess.destroy();
- showProcess = null;
- }
-
- splashDown = true;
-}
-
-/*
- * Return path of the splash image to use
- */
-private String getSplashPath(URL[] bootPath) {
-
- // see if we can get a splash for the launched feature
- String[] featurePath = getFeatureRoot();
- String path = lookupSplash(featurePath);
- if (path != null)
- return path;
-
- // no feature path, default to current boot plugin
- String temp = bootPath[0].getFile(); // take the first path element
- temp = temp.replace('/', File.separatorChar);
- int ix = temp.lastIndexOf("plugins"+File.separator);
- if (ix != -1) {
- int pix = temp.indexOf(File.separator, ix+8);
- if (pix != -1) {
- temp = temp.substring(0,pix);
- path = lookupSplash(new String[] { temp });
- return path;
- }
- }
-
- // sorry, no splash found
- return null;
-}
-
-/*
- * Do a locale-sensitive lookup of splash image
- */
- private String lookupSplash(String[] searchPath) {
- if (searchPath == null)
- return null;
-
- // get current locale information
- String localePath = Locale.getDefault().toString().replace('_', File.separatorChar);
-
- // search the specified path
- while (localePath != null) {
- String suffix;
- if (localePath.equals("")) {
- // look for nl'ed splash image
- suffix = SPLASH_IMAGE;
- } else {
- // look for default splash image
- suffix = "nl" + File.separator + localePath + File.separator + SPLASH_IMAGE;
- }
-
- // check for file in searchPath
- for (int i=0; i<searchPath.length; i++) {
- String path = searchPath[i];
- if (!path.endsWith(File.separator))
- path += File.separator;
- path += suffix;
- File splash = new File(path);
- if (splash.exists())
- return path; // return the first match found
- }
-
- // try the next variant
- if (localePath.equals(""))
- localePath = null;
- else {
- int ix = localePath.lastIndexOf(File.separator);
- if (ix == -1)
- localePath = "";
- else
- localePath = localePath.substring(0,ix);
- }
- }
-
- // sorry, could not find splash image
- return null;
- }
-
-/*
- * Return the feature identifier to use (specified or defaulted)
- */
-private String getFeatureIdentifier() {
-
- if (feature != null) // -feature was specified on command line
- return feature;
-
- // feature was not specified on command line
- String dflt = props.getProperty(CFG_FEATURE_ENTRY_DEFAULT);
- if (dflt != null)
- return dflt; // return customized default if set.
- else
- return null; // otherwise let BootLoader pick default
-}
-
-/*
- * Return the feature root if known
- */
-private String[] getFeatureRoot() {
- String ix = featureIndex(getFeatureIdentifier());
- String urlString = props.getProperty(CFG_FEATURE_ENTRY + "." + ix + "." + CFG_FEATURE_ENTRY_ROOT);
- if (urlString == null)
- return null;
-
- URL url = null;
- try {
- urlString = resolve(urlString); // resolve platform relative URLs
- url = new URL(urlString);
- if (url.getProtocol().equals("file"))
- return new String[] { url.getFile().replace('/', File.separatorChar)};
- else
- return null; // in the future may cache
- } catch(MalformedURLException e) {
- return null;
- }
-}
-
-/*
- * Return the application id (specified or defaulted)
- */
-private String getApplicationIdentifier() {
-
- if (application != null) // application was specified
- return application;
- else // let BootLoader pick the default if we failed
- return null;
-}
-
-/*
- * resolve platform:/base/ URLs
- */
- private String resolve(String urlString) throws MalformedURLException {
- if (urlString.startsWith(PLATFORM_URL)) {
- String root = getRootURL().toExternalForm();
- if (!root.endsWith("/"))
- root += "/";
- String path = urlString.substring(PLATFORM_URL.length());
- return root + path;
- } else
- return urlString;
- }
-
-/*
- *
- */
-private String featureIndex(String id) {
- if (id==null)
- return null;
- return (String)featureIndex.get(id);
-}
-}
diff --git a/platform/org.eclipse.platform/src/org/eclipse/core/launcher/package.html b/platform/org.eclipse.platform/src/org/eclipse/core/launcher/package.html
deleted file mode 100644
index ca2e7ce..0000000
--- a/platform/org.eclipse.platform/src/org/eclipse/core/launcher/package.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="IBM">
- <meta name="GENERATOR" content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]">
- <title>Package-level Javadoc</title>
-</head>
-<body>
-Launches the Eclipse Platform.
-<h2>
-Package Specification</h2>
-
-This package is the main entry point to the Eclipse Platform. To start the platform invoke the Main
-class in this package.
-<br>
-</body>
-</html>
diff --git a/platform/org.eclipse.platform/welcome.xml b/platform/org.eclipse.platform/welcome.xml
deleted file mode 100644
index 524c636..0000000
--- a/platform/org.eclipse.platform/welcome.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<welcomePage
- title="Welcome to the Workbench">
- <intro>This page will help familiarize you with the Eclipse Workbench.
-To get started, read the sections below and click on the related links. </intro>
-
-<item><b>Perspectives, views and editors </b>
-A window contains one or more perspectives. A perspective consists of views (e.g. Navigator)
-and editors for working with your resources.
-
-The shortcut bar at the far left of the window allows you to open new perspectives and move
-between perspectives that are already open. The perspective you are currently working with
-is shown in the title of the window and in the shortcut bar as a pushed-in icon.
-</item>
-
-
-<item><b>Configuring your perspectives</b>
-You can move views and editors around the workbench by dragging their titlebars. You can
-also add more views to your current perspective by using Window > Show View.
-To reset the perspective to its original state, choose <action pluginId="org.eclipse.ui" class="org.eclipse.ui.internal.ResetPerspectiveAction">Window > Reset Perspective</action>.
-
-Once you have arranged your perspective, you can save it using Window > Save Perspective As....
-You can customize the views, perspectives and New menu operations that show up for
-your perspective. To do this choose <action pluginId="org.eclipse.ui" class="org.eclipse.ui.internal.EditActionSetsAction">Window > Customize Perspective...</action> . A view can
-additionally be converted into a Fast View by dragging it to the shortcut bar (at the
-far left of the window). </item>
-
-<item><b>Learn more </b>
-To learn more you can browse the <topic id="/org.eclipse.platform.doc.user/toc.xml">Workbench User Guide</topic> or the <topic id="/org.eclipse.jdt.doc.user/toc.xml">Java Development User Guide</topic>.</item>
-
-
-</welcomePage>
\ No newline at end of file
diff --git a/platform/org.eclipse.sdk/.cvsignore b/platform/org.eclipse.sdk/.cvsignore
deleted file mode 100644
index 3a4edf6..0000000
--- a/platform/org.eclipse.sdk/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-.project
diff --git a/platform/org.eclipse.sdk/about.html b/platform/org.eclipse.sdk/about.html
deleted file mode 100644
index 768324e..0000000
--- a/platform/org.eclipse.sdk/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>11th December, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/platform/org.eclipse.sdk/about.ini b/platform/org.eclipse.sdk/about.ini
deleted file mode 100644
index 25d0f35..0000000
--- a/platform/org.eclipse.sdk/about.ini
+++ /dev/null
@@ -1,25 +0,0 @@
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-# Property "aboutText" contains blurb for "About" dialog (translated)
-aboutText=%blurb
-
-# Property "windowImage" contains path to window icon (16x16)
-windowImage=eclipse.gif
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=eclipse32.gif
-
-# Property "aboutImage" contains path to product image (500x330 or 115x164)
-aboutImage=eclipse_lg.gif
-
-# Property "appName" contains name of the application (translated)
-appName=%appName
-
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-welcomePage=welcome.xml
-
-
diff --git a/platform/org.eclipse.sdk/about.mappings b/platform/org.eclipse.sdk/about.mappings
deleted file mode 100644
index 720ca87..0000000
--- a/platform/org.eclipse.sdk/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-0=@build@
\ No newline at end of file
diff --git a/platform/org.eclipse.sdk/about.properties b/platform/org.eclipse.sdk/about.properties
deleted file mode 100644
index 8f8f787..0000000
--- a/platform/org.eclipse.sdk/about.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-
-appName=Eclipse
-
-blurb=Eclipse SDK\n\
-\n\
-Version: 2.0\n\
-Build id: {0}\n\
-\n\
-(c) Copyright IBM Corp. and others 2000, 2002. All rights reserved.\n\
-Visit http://eclipse.org
-
diff --git a/platform/org.eclipse.sdk/about_prod.gif b/platform/org.eclipse.sdk/about_prod.gif
deleted file mode 100644
index 262c524..0000000
--- a/platform/org.eclipse.sdk/about_prod.gif
+++ /dev/null
Binary files differ
diff --git a/platform/org.eclipse.sdk/build.properties b/platform/org.eclipse.sdk/build.properties
deleted file mode 100644
index 90bf029..0000000
--- a/platform/org.eclipse.sdk/build.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-bin.includes=\
-about.html,\
-about.ini,\
-about.mappings,\
-about.properties,\
-cpl-v05.html,\
-eclipse_lg.gif,\
-eclipse.gif,\
-eclipse32.gif,\
-install.ini,\
-notice.html,\
-platform.ini,\
-platform.properties,\
-plugin_customization.ini,\
-plugin_customization.properties,\
-product.ini,\
-product.properties,\
-plugin.xml,\
-plugin.properties,\
-splash/,\
-splash.bmp,\
-welcome.xml
-
diff --git a/platform/org.eclipse.sdk/cpl-v05.html b/platform/org.eclipse.sdk/cpl-v05.html
deleted file mode 100644
index 931c64d..0000000
--- a/platform/org.eclipse.sdk/cpl-v05.html
+++ /dev/null
@@ -1,239 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!-- saved from url=(0041)http://www.eclipse.org/legal/cpl-v05.html -->
-<HTML><HEAD><TITLE>Common Public License Version 0.5</TITLE>
-<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
-<META content="MSHTML 5.00.3315.2870" name=GENERATOR></HEAD>
-<BODY bgColor=#ffffff>
-<DIV align=center>
-<P>
-<TABLE border=0 cellPadding=10 cellSpacing=10 width="90%">
- <TBODY>
- <TR>
- <TD vAlign=top width="75%"><FONT face="Arial, Helvetica, sans serif"
- size=3>
- <H1>Common Public License Version 0.5</H1><TT>
- <P><FONT face="Courier New, Courier, mono">THE ACCOMPANYING PROGRAM IS
- PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY
- USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S
- ACCEPTANCE OF THIS AGREEMENT. </FONT></P>
- <P><FONT face="Courier New, Courier, mono"><B>1. DEFINITIONS
- </B></FONT></P>
- <P><FONT face="Courier New, Courier, mono">"Contribution"
-means:</FONT></P>
- <BLOCKQUOTE>
- <P><FONT face="Courier New, Courier, mono">a) in the case of the initial
- Contributor, the initial code and documentation distributed under this
- Agreement, and </FONT></P>
- <P><FONT face="Courier New, Courier, mono">b) in the case of each
- subsequent Contributor:</FONT></P>
- <P><FONT face="Courier New, Courier, mono">i) changes to the Program,
- and</FONT></P>
- <P><FONT face="Courier New, Courier, mono">ii) additions to the
- Program;</FONT></P>
- <P><FONT face="Courier New, Courier, mono">where such changes and/or
- additions to the Program originate from and are distributed by that
- particular Contributor. A Contribution 'originates' from a Contributor
- if it was added to the Program by such Contributor itself or anyone
- acting on such Contributor's behalf. Contributions do not include
- additions to the Program which: (i) are separate modules of software
- distributed in conjunction with the Program under their own license
- agreement, and (ii) are not derivative works of the
- Program.</FONT></P></BLOCKQUOTE>
- <P><FONT face="Courier New, Courier, mono">"Contributor" means any person
- or entity that distributes the Program. </FONT></P>
- <P><FONT face="Courier New, Courier, mono">"Licensed Patents " mean patent
- claims licensable by a Contributor which are necessarily infringed by the
- use or sale of its Contribution alone or when combined with the
- Program.</FONT></P>
- <P><FONT face="Courier New, Courier, mono">"Program" means the
- Contributions distributed in accordance with this Agreement. </FONT></P>
- <P><FONT face="Courier New, Courier, mono">"Recipient" means anyone who
- receives the Program under this Agreement, including all Contributors.
- </FONT></P>
- <P><FONT face="Courier New, Courier, mono"><B>2. GRANT OF
- RIGHTS</B></FONT></P>
- <BLOCKQUOTE>
- <P><FONT face="Courier New, Courier, mono">a) Subject to the terms of
- this Agreement, each Contributor hereby grants Recipient a
- non-exclusive, worldwide, royalty-free copyright license to reproduce,
- prepare derivative works of, publicly display, publicly perform,
- distribute and sublicense the Contribution of such Contributor, if any,
- and such derivative works, in source code and object code
- form.</FONT></P>
- <P><FONT face="Courier New, Courier, mono">b) Subject to the terms of
- this Agreement, each Contributor hereby grants Recipient a
- non-exclusive, worldwide, royalty-free patent license under Licensed
- Patents to make, use, sell, offer to sell, import and otherwise transfer
- the Contribution of such Contributor, if any, in source code and object
- code form. This patent license shall apply to the combination of the
- Contribution and the Program if, at the time the Contribution is added
- by the Contributor, such addition of the Contribution causes such
- combination to be covered by the Licensed Patents. The patent license
- shall not apply to any other combinations which include the
- Contribution. No hardware per se is licensed hereunder.</FONT></P>
- <P><FONT face="Courier New, Courier, mono">c) Recipient understands that
- although each Contributor grants the licenses to its Contributions set
- forth herein, no assurances are provided by any Contributor that the
- Program does not infringe the patent or other intellectual property
- rights of any other entity. Each Contributor disclaims any liability to
- Recipient for claims brought by any other entity based on infringement
- of intellectual property rights or otherwise. As a condition to
- exercising the rights and licenses granted hereunder, each Recipient
- hereby assumes sole responsibility to secure any other intellectual
- property rights needed, if any. For example, if a third party patent
- license is required to allow Recipient to distribute the Program, it is
- Recipient's responsibility to acquire that license before distributing
- the Program.</FONT></P>
- <P><FONT face="Courier New, Courier, mono">d) Each Contributor
- represents that to its knowledge it has sufficient copyright rights in
- its Contribution, if any, to grant the copyright license set forth in
- this Agreement.</FONT></P></BLOCKQUOTE>
- <P><FONT face="Courier New, Courier, mono"><STRONG>3.
- REQUIREMENTS</STRONG> </FONT></P>
- <P><FONT face="Courier New, Courier, mono">A Contributor may choose to
- distribute the Program in object code form under its own license
- agreement, provided that: </FONT></P>
- <BLOCKQUOTE>
- <P><FONT face="Courier New, Courier, mono">a) it complies with the terms
- and conditions of this Agreement; and</FONT></P>
- <P><FONT face="Courier New, Courier, mono">b) its license
- agreement:</FONT></P>
- <P><FONT face="Courier New, Courier, mono">i) effectively disclaims on
- behalf of all Contributors all warranties and conditions, express and
- implied, including warranties or conditions of title and
- non-infringement, and implied warranties or conditions of
- merchantability and fitness for a particular purpose; </FONT></P>
- <P><FONT face="Courier New, Courier, mono">ii) effectively excludes on
- behalf of all Contributors all liability for damages, including direct,
- indirect, special, incidental and consequential damages, such as lost
- profits; </FONT></P>
- <P><FONT face="Courier New, Courier, mono">iii) states that any
- provisions which differ from this Agreement are offered by that
- Contributor alone and not by any other party; and </FONT></P>
- <P><FONT face="Courier New, Courier, mono">iv) states that source code
- for the Program is available from such Contributor, and informs
- licensees how to obtain it in a reasonable manner on or through a medium
- customarily used for software exchange. </FONT></P></BLOCKQUOTE>
- <P><FONT face="Courier New, Courier, mono">When the Program is made
- available in source code form:</FONT></P>
- <BLOCKQUOTE>
- <P><FONT face="Courier New, Courier, mono">a) it must be made available
- under this Agreement; and</FONT></P>
- <P><FONT face="Courier New, Courier, mono">b) a copy of this Agreement
- must be included with each copy of the Program. </FONT></P></BLOCKQUOTE>
- <P><FONT face="Courier New, Courier, mono">Contributors may not remove or
- alter any copyright notices contained within the Program.</FONT></P>
- <P><FONT face="Courier New, Courier, mono">Each Contributor must identify
- itself as the originator of its Contribution, if any, in a manner that
- reasonably allows subsequent Recipients to identify the originator of the
- Contribution. </FONT></P>
- <P><FONT face="Courier New, Courier, mono"><STRONG>4. COMMERCIAL
- DISTRIBUTION</STRONG> </FONT></P>
- <P><FONT face="Courier New, Courier, mono">Commercial distributors of
- software may accept certain responsibilities with respect to end users,
- business partners and the like. While this license is intended to
- facilitate the commercial use of the Program, the Contributor who includes
- the Program in a commercial product offering should do so in a manner
- which does not create potential liability for other Contributors.
- Therefore, if a Contributor includes the Program in a commercial product
- offering, such Contributor ("Commercial Contributor") hereby agrees to
- defend and indemnify every other Contributor ("Indemnified Contributor")
- against any losses, damages and costs (collectively "Losses") arising from
- claims, lawsuits and other legal actions brought by a third party against
- the Indemnified Contributor to the extent caused by the acts or omissions
- of such Commercial Contributor in connection with its distribution of the
- Program in a commercial product offering. The obligations in this section
- do not apply to any claims or Losses relating to any actual or alleged
- intellectual property infringement. In order to qualify, an Indemnified
- Contributor must: a) promptly notify the Commercial Contributor in writing
- of such claim, and b) allow the Commercial Contributor to control, and
- cooperate with the Commercial Contributor in, the defense and any related
- settlement negotiations. The Indemnified Contributor may participate in
- any such claim at its own expense. </FONT></P>
- <P><FONT face="Courier New, Courier, mono">For example, a Contributor
- might include the Program in a commercial product offering, Product X.
- That Contributor is then a Commercial Contributor. If that Commercial
- Contributor then makes performance claims, or offers warranties related to
- Product X, those performance claims and warranties are such Commercial
- Contributor's responsibility alone. Under this section, the Commercial
- Contributor would have to defend claims against the other Contributors
- related to those performance claims and warranties, and if a court
- requires any other Contributor to pay any damages as a result, the
- Commercial Contributor must pay those damages. </FONT></P>
- <P><FONT face="Courier New, Courier, mono"><STRONG>5. NO
- WARRANTY</STRONG></FONT></P>
- <P><FONT face="Courier New, Courier, mono">EXCEPT AS EXPRESSLY SET FORTH
- IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
- WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
- NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- Each Recipient is solely responsible for determining the appropriateness
- of using and distributing the Program and assumes all risks associated
- with its exercise of rights under this Agreement, including but not
- limited to the risks and costs of program errors, compliance with
- applicable laws, damage to or loss of data, programs or equipment, and
- unavailability or interruption of operations. </FONT></P>
- <P><FONT face="Courier New, Courier, mono"><STRONG>6. DISCLAIMER OF
- LIABILITY </STRONG></FONT></P>
- <P><FONT face="Courier New, Courier, mono">EXCEPT AS EXPRESSLY SET FORTH
- IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
- LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY
- RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- DAMAGES. </FONT></P>
- <P><FONT face="Courier New, Courier, mono"><STRONG>7.
- GENERAL</STRONG></FONT></P>
- <P><FONT face="Courier New, Courier, mono">If any provision of this
- Agreement is invalid or unenforceable under applicable law, it shall not
- affect the validity or enforceability of the remainder of the terms of
- this Agreement, and without further action by the parties hereto, such
- provision shall be reformed to the minimum extent necessary to make such
- provision valid and enforceable. </FONT></P>
- <P><FONT face="Courier New, Courier, mono">If Recipient institutes patent
- litigation against a Contributor with respect to a patent applicable to
- software (including a cross-claim or counterclaim in a lawsuit), then any
- patent licenses granted by that Contributor to such Recipient under this
- Agreement shall terminate as of the date such litigation is filed. In
- addition, If Recipient institutes patent litigation against any entity
- (including a cross-claim or counterclaim in a lawsuit) alleging that the
- Program itself (excluding combinations of the Program with other software
- or hardware) infringes such Recipient's patent(s), then such Recipient's
- rights granted under Section 2(b) shall terminate as of the date such
- litigation is filed.</FONT></P>
- <P><FONT face="Courier New, Courier, mono">All Recipient's rights under
- this Agreement shall terminate if it fails to comply with any of the
- material terms or conditions of this Agreement and does not cure such
- failure in a reasonable period of time after becoming aware of such
- noncompliance. If all Recipient's rights under this Agreement terminate,
- Recipient agrees to cease use and distribution of the Program as soon as
- reasonably practicable. However, Recipient's obligations under this
- Agreement and any licenses granted by Recipient relating to the Program
- shall continue and survive. </FONT></P>
- <P><FONT face="Courier New, Courier, mono">Everyone is permitted to copy
- and distribute copies of this Agreement, but in order to avoid
- inconsistency the Agreement is copyrighted and may only be modified in the
- following manner. The Agreement Steward reserves the right to publish new
- versions (including revisions) of this Agreement from time to time. No one
- other than the Agreement Steward has the right to modify this Agreement.
- IBM is the initial Agreement Steward. IBM may assign the responsibility to
- serve as the Agreement Steward to a suitable separate entity. Each new
- version of the Agreement will be given a distinguishing version number.
- The Program (including Contributions) may always be distributed subject to
- the version of the Agreement under which it was received. In addition,
- after a new version of the Agreement is published, Contributor may elect
- to distribute the Program (including its Contributions) under the new
- version. Except as expressly stated in Sections 2(a) and 2(b) above,
- Recipient receives no rights or licenses to the intellectual property of
- any Contributor under this Agreement, whether expressly, by implication,
- estoppel or otherwise. All rights in the Program not expressly granted
- under this Agreement are reserved. </FONT></P>
- <P><FONT face="Courier New, Courier, mono">This Agreement is governed by
- the laws of the State of New York and the intellectual property laws of
- the United States of America. No party to this Agreement will bring a
- legal action under this Agreement more than one year after the cause of
- action arose. Each party waives its rights to a jury trial in any
- resulting litigation.</FONT></P></TT></FONT></TD></TR></TBODY></TABLE>
-<P></P></DIV></BODY></HTML>
diff --git a/platform/org.eclipse.sdk/eclipse.gif b/platform/org.eclipse.sdk/eclipse.gif
deleted file mode 100644
index 6ca37e0..0000000
--- a/platform/org.eclipse.sdk/eclipse.gif
+++ /dev/null
Binary files differ
diff --git a/platform/org.eclipse.sdk/eclipse32.gif b/platform/org.eclipse.sdk/eclipse32.gif
deleted file mode 100644
index fa12d1f..0000000
--- a/platform/org.eclipse.sdk/eclipse32.gif
+++ /dev/null
Binary files differ
diff --git a/platform/org.eclipse.sdk/eclipse_lg.gif b/platform/org.eclipse.sdk/eclipse_lg.gif
deleted file mode 100644
index 262c524..0000000
--- a/platform/org.eclipse.sdk/eclipse_lg.gif
+++ /dev/null
Binary files differ
diff --git a/platform/org.eclipse.sdk/install.ini b/platform/org.eclipse.sdk/install.ini
deleted file mode 100644
index ead9348..0000000
--- a/platform/org.eclipse.sdk/install.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-feature.default.id=org.eclipse.sdk
-feature.default.application=org.eclipse.ui.workbench
diff --git a/platform/org.eclipse.sdk/notice.html b/platform/org.eclipse.sdk/notice.html
deleted file mode 100644
index b9c5417..0000000
--- a/platform/org.eclipse.sdk/notice.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<title>Eclipse.org Software User Agreement</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-
-<body lang=EN-US link=blue vlink=purple>
-<table border=0 cellspacing=5 cellpadding=2 width="100%" >
- <tr>
- <td align=LEFT valign=TOP colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Eclipse.org Software User Agreement</font></b></td>
- </tr>
- <tr>
- <td>
-
-<p>1st November, 2001</p>
-<p>ECLIPSE.ORG
-MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR
-OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS
-OR NOTICES INDICATED OR REFERENCED BELOW.
-BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE
-LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND
-CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN
-YOU MAY NOT USE THE CONTENT.</p>
-
-<p>Unless otherwise indicated, all Content made available by
-Eclipse.org is provided to you under the terms and conditions of the <a
-href="cpl-v05.html">Common Public License Version 0.5</a>. For purposes of the Common Public License,
-"Program" will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object
-code, documentation and other files maintained in the Eclipse.org CVS
-repository ("Repository") and subsequently released as project builds
-("Builds").</p>
-
-<p>Content as files may contain portions distributed under different license agreements and/or notices.
-Details about these license agreements and notices are contained in "about.html" files ("Abouts").
-Abouts are located in the Repository in the root directory for each CVS module.
-Abouts in Builds may be in the program root directory and plug-in directories.
-Such Abouts govern your use of the associated software in that directory, not the
-Common Public License.</p>
-
-<p>You must agree to the terms and conditions of the <a
-href="cpl-v05.html">Common Public License Version 0.5</a> and
-all Abouts contained in any Content and any other terms and
-conditions that are provided with the Content, if any.</p>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on
-the import, possession, and use, and/or re-export to another country, of
-encryption software. BEFORE using any encryption software, please
-check the country's laws, regulations and policies concerning the import,
-possession, or use, and re-export of encryption software, to see if this
-is permitted.</p>
-</td></tr></table>
-</body>
-
-</html>
diff --git a/platform/org.eclipse.sdk/platform.ini b/platform/org.eclipse.sdk/platform.ini
deleted file mode 100644
index 97d7b6f..0000000
--- a/platform/org.eclipse.sdk/platform.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file is just temporary until the about.ini files are working
-# 4/25/02
-
-name = Eclipse Platform
-detailedName = %detailedName
-version = 2.0 (pre-release)
-buildID = @build@
-platformURL = http://www.eclipse.org
-copyright = %copyright
-
diff --git a/platform/org.eclipse.sdk/platform.properties b/platform/org.eclipse.sdk/platform.properties
deleted file mode 100644
index 5c5ebe3..0000000
--- a/platform/org.eclipse.sdk/platform.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-copyright = (c) Copyright IBM Corp. 2000, 2002. All rights reserved.\n\
-\n\
- This offering is based on technology from the Eclipse Project.\n\
- http://www.eclipse.org\n\
-\n\
- Third party code may be provided with, included in, or accompany this product.\n\
- See the license and plugin info for details.\n\
-
-detailedName = Eclipse Platform
\ No newline at end of file
diff --git a/platform/org.eclipse.sdk/plugin.properties b/platform/org.eclipse.sdk/plugin.properties
deleted file mode 100644
index da2f269..0000000
--- a/platform/org.eclipse.sdk/plugin.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-pluginName=Eclipse Platform
-providerName=Object Technology International, Inc.
\ No newline at end of file
diff --git a/platform/org.eclipse.sdk/plugin.xml b/platform/org.eclipse.sdk/plugin.xml
deleted file mode 100644
index f81e563..0000000
--- a/platform/org.eclipse.sdk/plugin.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin
- name="%pluginName"
- id="org.eclipse.sdk"
- version="2.0.0"
- provider-name="%providerName">
-</plugin>
diff --git a/platform/org.eclipse.sdk/plugin_customization.ini b/platform/org.eclipse.sdk/plugin_customization.ini
deleted file mode 100644
index ae459f9..0000000
--- a/platform/org.eclipse.sdk/plugin_customization.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-# plugin_customization.ini
-# sets default values for plug-in-specific preferences
-# keys are qualified by plug-in id
-# e.g., org.eclipse.ui/RECENT_FILES=10
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in plugin_customization.properties
-# This file does not need to be translated.
-
-
-
diff --git a/platform/org.eclipse.sdk/plugin_customization.properties b/platform/org.eclipse.sdk/plugin_customization.properties
deleted file mode 100644
index 64cee2c..0000000
--- a/platform/org.eclipse.sdk/plugin_customization.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-# plugin_customization.properties
-# contains externalized strings for plugin_customization.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
diff --git a/platform/org.eclipse.sdk/prod.gif b/platform/org.eclipse.sdk/prod.gif
deleted file mode 100644
index 6ca37e0..0000000
--- a/platform/org.eclipse.sdk/prod.gif
+++ /dev/null
Binary files differ
diff --git a/platform/org.eclipse.sdk/product.ini b/platform/org.eclipse.sdk/product.ini
deleted file mode 100644
index dffd08c..0000000
--- a/platform/org.eclipse.sdk/product.ini
+++ /dev/null
@@ -1,20 +0,0 @@
-# This file is just temporary until the about.ini files are working
-# 4/25/02
-
-name = Eclipse Project SDK
-detailedName = %detailedName
-image = prod.gif
-version = 2.0 (pre-release)
-application = org.eclipse.ui.workbench
-appName = Eclipse
-productURL = http://www.eclipse.org
-aboutImage = about_prod.gif
-welcomePage = welcome.xml
-baseInfosets = /org.eclipse.platform.doc.user/toc.xml,\
- /org.eclipse.jdt.doc.user/toc.xml,\
- /org.eclipse.platform.doc.isv/toc.xml,\
- /org.eclipse.jdt.doc.isv/toc.xml,\
- /org.eclipse.pde.doc.user/toc.xml
-defaultPerspectiveId = org.eclipse.ui.resourcePerspective
-copyright = %copyright
-buildID = @build@
\ No newline at end of file
diff --git a/platform/org.eclipse.sdk/product.properties b/platform/org.eclipse.sdk/product.properties
deleted file mode 100644
index 6baa25a..0000000
--- a/platform/org.eclipse.sdk/product.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-# This file is just temporary until the about.ini files are working
-# 4/25/02
-
-copyright = (c) Copyright IBM Corp. 2000, 2002. All rights reserved.\n\
-\n\
- Visit the website at http://www.eclipse.org\n\
-
-detailedName = Eclipse Project SDK
-
diff --git a/platform/org.eclipse.sdk/splash.bmp b/platform/org.eclipse.sdk/splash.bmp
deleted file mode 100644
index a8c5ece..0000000
--- a/platform/org.eclipse.sdk/splash.bmp
+++ /dev/null
Binary files differ
diff --git a/platform/org.eclipse.sdk/splash/readme.txt b/platform/org.eclipse.sdk/splash/readme.txt
deleted file mode 100644
index f9f3917..0000000
--- a/platform/org.eclipse.sdk/splash/readme.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-FIXME - Temporary splash screens until new support for reading splash.png
-is added to eclipse.exe (May 3, 2002)
-
diff --git a/platform/org.eclipse.sdk/splash/splash_basic.bmp b/platform/org.eclipse.sdk/splash/splash_basic.bmp
deleted file mode 100644
index bad3e79..0000000
--- a/platform/org.eclipse.sdk/splash/splash_basic.bmp
+++ /dev/null
Binary files differ
diff --git a/platform/org.eclipse.sdk/splash/splash_basic.xpm b/platform/org.eclipse.sdk/splash/splash_basic.xpm
deleted file mode 100644
index d45961f..0000000
--- a/platform/org.eclipse.sdk/splash/splash_basic.xpm
+++ /dev/null
@@ -1,359 +0,0 @@
-/* XPM */
-static char *splash[]={
-"500 330 26 1",
-"a c #000000",
-"b c #3f3f5f",
-"d c #3f5f3f",
-"v c #3f5f5f",
-"c c #5f3f3f",
-"e c #5f3f5f",
-"# c #5f5f5f",
-". c #5f5f7f",
-"w c #5f7f7f",
-"f c #7f5f7f",
-"u c #7f7f7f",
-"g c #7f7f9f",
-"x c #7f9f9f",
-"r c #808080",
-"h c #9f7f9f",
-"s c #9f9f9f",
-"i c #9f9fbf",
-"q c #a0a0a4",
-"j c #bf9fbf",
-"p c #bfbfbf",
-"k c #c0c0c0",
-"n c #c0dcc0",
-"l c #dfbfbf",
-"t c #dfdfbf",
-"m c #fffbf0",
-"o c #ffffff",
-"....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................",
-"#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaabaabaabaabaabaabaabaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbabbabbbabbbababbabbbbbbbbbbbbbbbbbbbbbbbbbabbbabbabbabbabbabbabbabbabbababbbbbabbbabbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbabbbbbbabbbbbabbababababababababbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbabbbbabbbabbabbbabbbbabbabbababbbabbababbababababbababababbababbabbababbabbbabbabbabbbababbabbababbabababababababababababababababababababababababaababaacaaacaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abaabaabaaabaaabbabaabaaaaaaaaaaaaaaaabaaaabaabababbabbabbabbabbabbabbabbabbbbababbbabbbabbbabbbababababbabbabbabbabbbabbbabbbabbabbbabbbbbbabbbbbbabbbbbbbabbbbbbabbbabbbabbabbabababbbabababbbababababababbabbbbbbbbbbbbbbbbabbabababaabaabaaaabaaaaaaaaaaaaaaaabaabaabaaaabaaababaaabaaaabaabaababaaabaababaababababaababababaababaabaababaabaaabaabaabaaababaabaababaababaababaabababaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaabaaabaaabababacabacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abababbabbababbaababbabbbbbbbbbbbbbbbbabbbbabbbbabbabbabbabbabbabbabbabbabbababbbbabbbabbbabbbbabbbbbbbbbbbbbbbbbbbbabbbbabbbabbbbbabbbbabbbbbbabbbbbbabbabbbababbbbabbbabbbbbbbbbbbbbabbbbbbbabbbbbbbbbbbbbbbbabababababaababbabbbbababbabbabbbbabbbbbbbbbbbabbbbabbabababbbaabbababbaabbababababababababaabaabaaabaababaaabaaabaaaabaabaabaabaabaaabaabaabaaaabaaabaaabaaaabaaaabaaaaaababaababababababababababaabaabaaaaababaaaaaaaaaaaaaaaaaaaaaaaaabacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aababaababababababaabaaaaaaaaaaabaaababaababababbabbabbabbabbabbabbabbabbbbbbbbabbbabbbabbbbbabbbbabbbabbabbabbbabbbbbbabbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbaababbbabababbababbababababababbbabbbababbababbaababbbabbabbababbaabaaaaaaabbaaabaababaabaabababaabaabbaabababababaababaabaabaabbaabaabababababababaabaabaabaabaabbaabaabaabbabababababababaabbababababaabaababaaabaaaaaaaaaaaaabaaaaabaabaaaaabababacabaaacaaaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbababbababababababbabbbbbbbbbbbabbbababbabbbabaababbabbabbabbabbabbabbababababbbabbbabbabbabbbbabbbabbbbbbbbabbbbbbbbbbbbabbbbbabbbbbbbbabbbbbbbababbbbbbabbbbbbabbbabbbbbbbbbbbbbbbbabbbbbbbbbbbabbbbbbbbabbbbabbababbbabbbbabbbbbababbabbababaabbabbbbbbbaabbbabbababbabbabababbabbaababababaabababaabbabababaaabaabaabaababaaababababababababbaaabaabaabaabaaabaaabaaababaaabaaaaababaaabaaaabaaababababababaaababaabaabaabaaaaaaaaaaabaaabababaadaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aababaaababababababaabaaaaaaaaaababababbabbaabbbbbbbabbabbabbababbbabbbbbbbbbbbbabbbabbbbbabbbabbbbbbbbabbabbbbbbbbababbbbbbbbbbbbbabbabbbbbbbbbbbbbbababbbbbbabbbbbbbbabbabbbbabbbbbbbbabbabababbbbbabababbbababbbbabbbabbababababababbabbabababbbaabaaaaababbaaabaabababaababaabaabaababababaabababaabaaababababbaabaabaabaaababaaabaaabaaababaaabbaabaabaabaabbababababaaababaababbaaababaabacaaabaaacaaaaaaaaabaaaaaaaaaaaaacaacaaadaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abababbabaabababababbabbbbbbbbbbababbbabababbababababbabbabbabbbbabbbababababababbbabbbabbbbbabbbbabbbbbbbbbbbbbabbbbbbbbbbbbabbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbabbbbbbabbbbbbababbbbbbbabbbbbababbabbbabbbbbabbbbbabbaabbabbababbbabbbbabaabbbabbabaababababbabbabbababababbabaababababababaababbabbabaabababababaabaabbaaaababaabbabaabaabaaaaabaaabaabaabaababaaabaacaabaaababaabaaababababaaababaababacaaaaaaabaaadaabaaaaaaabaaaababaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abaabaababbababababababaaabaababababababbababbabbabbabbabbabbababbabbbbbbbbbbbbbbabbbbbbbabbbbbbabbbabbbabbbbbabbbbbbbbbbabbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbabbabbbbbbbbbbabbbbabbabbbbababbbbabababbbababbbbbabbababababababaabbabbbabbabbabaabbaaababbaaabaaabababababaabaabaababaababaababaababababaaabaabaabaababaabaaababababbaaabbabababaaababaabaabbabaabababaabaabaaaabababaabaabaaabaaaabaaacaaaaaabaaaabaaaaaaababaaaaaaaaaaadacabaaaaaaaaaaaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bababababaabababababababbbabababbabababbabbbabbabbabbabbabbabbbbabbababababbabbabbbbababbbbabbabbbbbbabbbbbabbbbbbbbbbbbbbbbbbbbbabbbbbbabbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbabbbabbbbbbbbbbbbbabbbbbabbbbbbbbabbbbababbbabbbbbbbbbbbbabbabbaabababababbbaabbbabaabbbabbbabababababbabbabbababbabaabababbabababaabbabbaababaababababbaaaaabaababaabaaabaabaababbaabaabababaabaababaababaabaaabaabaaabaaabbaaabaabababaaabaaaaabaabaaaaabacabaadaaaaaaacaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aabababababbababababababaabababbabababbabbaabbabbabbabbabbabababbbbbbbbbbbbababbbbabbbbbabbbbbbbbabbbbbbbbbbbbbbbbabbbabbbbabbbbbbbbbabbbbbbbbbbbabbbabbbabbbbbbabbbbbbbbbbbbbbbbbbabbabbbbbbbabbbbababbabbbbabbbbbabbbababababababbabbabbabbbabbabaabbbaababbabaabababababababaabaabaababaababababaabababaabaabaaababababaababaababbbaababaabaabbaabaababaaabaabaaabaabaababaababaabacabaabaacbaaacaaaababaaaaaaabaaabaabaabaaaacaaaaaaabaaaaaaaaaabaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abababababaabababababababbababaabbbbabababbbbabbabbabbabbabbbbbbababababababbbbabbbbbabbbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbababbbbbabbbbbbabbabbbababbbbabbbbbbbbabbbabbabbbabbaababbabbababbabaababbabababababababbabbabbababbababababaabababababaabbababaababababaabaaabaababababaabababaaaabababaabaabaabaaaabaaaabaaaabaabaabaaabaaababaaaabababaaabaaabaaaaababaaabaaaaaabababaaaaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abababababbababababababaabbababbaaabbabbbababbabbabbabbabbabababbbbbbbbbbbbbbabbbabbbbbbbbbbbbbbbbbabbbabbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbabbbbbbbbabbbbababbbbbbabbbbbababbababababbabbbabbabababbbbbabbabababababbababababababababaabaabaababaabababaababaabaabaababaaaabaabababaababaabababaababababaabababbabaaabababababaabbaaababaababaabaabaabababaaaaababaaaaaabaaaabaaabaaaaaaabaaabacaaaaaaaaabaaaaaaaaaaaabaaabaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bababababaabababababababbaababbabbbbabbaabababbabbabbabbabbbbbbabababbabbababbbbbbbabbababbabbbbabbbbbbbbbabbbbbbbbbabbbabbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbabbbbabbbbbbbbabbbbabbbbbbbbbabababbabbabbbbabbbbbbbbbbbbabbabbabbbbabaabbabbbbabbabbabababababababababbabbabbababbabababbababbabbabbababbabababaababaabababaabaabaaaaaababaaabaabababaaabababaabaababababaababaabaabaaaaaaababaaaabababaababaabaaababaabaaaaaaaaaacaaadaaaaaaaadaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababaabababbabababababababbabbababaabbabbbbbbbabbabbabbbbabababbbbbbbabbabbbbabbabbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbabbbbbbbbbbbbbbabbbbbbabbbbbbbbbbabbbbbababbababababababbabbabbabababbbabbabababababbababababababababaabaabaababaabababababaabaabaaaabaabababaababaabaaabaabaabababbababababaabaaabaabbaaaaaabaababaaaaaabaaaabaabaababababaaaabaaaaaaaaaaaaaaabaaaaabaaaacabaabaaacaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aababbababaabababababbabababababbabbabbababababbabbabbababbbbbbababbabbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbbbabbbbbababbbbbbbbbbbbbbbbabbbabbabbbabababaabababababaabababababababababbabbabbababbabababababbabababbbabbabaababaabababbaabbabbabaababaaababaababababaaababbababaabaabbabaababaabaaabaaabaaaabcaaabababababababaaabaabaababaaaabaaaaaaaaaaaaaabaaacaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babaabababbababababbababbababababbabbabbababababbabbabbbbbababbbbbabbbbabbabbbabbbbbababbabbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbabbbabbbbbbbbabbbbbabbabbbbbabababababababbabababbababbbabbbbbbabbabbabbabababababababababaabaababaabababababaaabababaaabaababaababaababaabaaabaababaababbaaaabaababaaabababaabaaabaabaaababaababaabcaababababaaabaaaaaaaaaaaaaaaabaabaaaaaaaaabaaadaababaacaaaaaaaaaaaadaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbababaababababababababbbabbbabababbabbbbbbbabbabbbababbbbbbabbbbbabbbbbbabbbabbbbbbbbbbbbbbabbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbababbbbbabbbbbbbbbbabbbbbbbbbbbbbbabbbbbbabbbbababbabababbabababababababababababababbabbababbabababababbbababababaabababbababbabaababababaababaabaaabbabababaabbabaaaabaabbaabababaaaabaaabaaaabaaaaabaabaaabababababaababaaaaaaabacaabaaaaaabaaaaaaaacaaaabaaabaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabaabababbabababababababbaabbaabbbabbabababababbabbabbbbbababababbabbbbbabbbbbbbbabbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbabbbbbabbabbabbbbbabbabababbabbabababbabababbabababbabbbabbababbabababababababababaababaabababababaababaabababbaabaaabaaabaababababaababaabaabbaaaababaabaaaababbaabaaabaaabaababababaababaaababaabaaabaaaaaaaaaabaaaaabababaaaaaaacaabaaaaaaabaaaacaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbababaabababbbabbbbbababbabbababbabbbabbbabbabbabbabbabbbbbbbbabbbabbbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbabbbbbbbbbabbbbbbbbbbababbbabbbbbbabbabbbbbbabbbbbbabbbbababaabababababababababababababababababbababababababaabbababaababababababababaabaababaabababaababbaaabababababaabababababaabaabaaababaabaabaaaaabaabaabababababaaabaabaaaaaabaabaaaabaaaaacaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abaabababbabbabaabbaababbababbabbababbabbbababbbbbbbabbabbbbabababbbbbbbabbbbabbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbabbabbabbbbbabbbababbbbbbabababbabababbababbbbabbababababababababababababababababababababababaabaaababababaabababababaabbaabaabababaababaabaabababababaaabaabaabaababaabaababaaabaabaababababaabaaaaaaaaaabaaabaaaacaaaabaabaaaaacabaaadaabaaaaadaaaaaaacaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbababababababbaabbabaabbbbabbabbbabbababbbbabababbabbababbbbbbbbababbbbbbbbbbbbbbbbbbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbabbbbbbbbbbbabbabbbbbabababbbbbbabbbbbbabbabbababbabbbabbbabbabbababababababababababababababababbabbbabababababaababaaabbaabbababaabaabaababaabababaaabaabababaababaaaaabaabaaababaabaababaaaaabaabababababaaabaaaabaababaaaaaaabaaaaaaaaaaaaaabaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aababababababbbababbababbabaabbabababbabbbbababbbbbbbbbbbbbbbabbbbbbbbbabbabbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbabbabbabbbbbbababbbbbbbabababbabababbabbababbabababbaababababbbabbabbabababbababababababababaabaababaaababaabaababbaaabaaaabaababababaabababaaababababaabaabaabababbaababababaabaabaaabababaabaaacaaaaaabaaababaaaaaaaaacaacaaabaadabaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababbabbaaabbbabbbbabbabbabbabbbabbababbbbbabababbababbabbbababbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbbbbbbbbbbbbbbbabbbbbbbabababbbbbbbabbbabbabbabbbabbbbabaabbababbabaabaabaabababaabababababababababbababaabbababababbabaabbbababbababaabababaabababbaabaaababaabaabaabaababaaaabaaabaaabaabaaaaaaabaabaaababaaaabaaaaababababaaabaaabaaaaaaaaaabaaabaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abababbaababbbbaabbaaabbabbabbabbaabbabbabababbbbbbbabbbbabbabbbbbbababbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbabbabbabbabbbabbbabbbbbbabbababbabbbbababbabababababbbabbababbabbabbabbabbabbabbababababababababaababaaabaababaaababaaaababaabababaabababaabaaaabaabbaababaabaabaabaaaabbababaaabbaabaabababaaabaabaaacaabaaaababaaaaaaaaabaaaaaaabaaaabaaaaacaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bababaabbbabababbbabbbbabbababbabbbabbabbbbbbbabababbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbabbbabbbabbababbbbbabbbbbabbbababbababaabaabbabbabaabaabaabababababababababbababbabababababaababababaababaaabbaaababbaabbababaaababababababaabbabaabaaababaabaabaaacaaabaabaaabaabaababaaaaabaacaabaaaabacaaaaabaabaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabababbaabababababbababbabbbbabbabbbabbbabababbbbbbabbbbababbabababbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbabbbabbbbbbbabbbabbbabbbabbbabababbaabababababbabbbabbabbbaabababbabbabbababbababababababababaabababaabababababaabababaabbaaabbabaaabaababaabbabaaabababaabaabaababababaabaabababababaabaaabaaaaaaaaaaabaaaabaabaaacaaaaaacaaaaaaaabaaabaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababbbbabbbbababbabababaabbabbababbabbbbbbbababbbbabbbbbbbbbbbbbbabbbabbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbabbabbbbbabbbabbabbbbbabbbabbabbbabbbbbbbabbbbbbabbbaabaabababaababababbababbaababaababababababababababaabababababaababbaabaabbaabbaaababababaababaaabaabbaaaaabababaabaaaaaaaabaabaaaaaaabaabaabaaabababababaaabaaaaaaaabaaabaabaabaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abbabbbaaabbaababbbabbabbbabbabbabbbbabbabababbbbbbabbbabbbbabbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbababbbabbbbbbabbababababbabababababbabbabbabbabbababababbabbbabbbabababababababababaabaababababababaaabaabaaabaaabbaababaaabaababbaabaaababbaabaaabaababbbabaabaabababaaabaabaabaaaaaaaaaaaabaaababaabaaabaaaaaaaaaaaaaaaabaaabaaaaadaabaacaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".baabbaabbbbabbbabaabbabbabbabbabbababbabbbbbbabababbabbbbbabbbababbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbabbbababbbabbbabbbbbbabbabababbabbabbbbbabbababbbbbabbbabbababbbabbbababaabaaabaaabbabbabababababababbabbaabaabaabababbabbabbababbaabbaaabbabababaaababababaaabaabbaababaaabaabaabaaabaabaabaabaababababababaaabaaaabaaaaaaaabaabaadabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbabbabaababababbbabbabbabbabbabbbbabbabababbbbbbbbbbbabbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbabbbbbbbbbbbbbabbbabbbabbbbbbbbbbbbbbbbbbbbababbabbbabababbabababbabaabababababbabbbabbbbaababababababaababaabaabaabaabababaabaabaababaaabaaabbaabababaabbbaababaabbaabaaabaaaaabaabaabababaabaabaabaabacaaaaaaaaaabaaaabaaababaacaaaaaaaaaaababaaaadaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abaabaabbbbabbabbbababababbabbabbbababbabbbbbbababbabbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbababbabbababababababbbbabbabbabbbababbbbabbabbabababbababaabbaaabbbababababababbababbabbabbabbabababbabababababababbababaabaaabaaaabaabaabaabaabababababaabaabaaabaabaabaabaabaaaababababaaaabaaaabaaaaabaabacaabaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abbabbbababbabbabababbbbbabbabbababbbabbbababbbbbbbbabbbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbabbbbabbbbbbbbabbbbbbbbbbbbababbabbabbababbbaabababbabbbabbabbababbabbbbaabababbabababaababaabaabaabaabaabaaabababababababaabaabababbaabbababaabaabaabaabaaabababaabaabaaabaabaacaacaacabaaaaaaaababaaabaaaacaaaaaaaaaaaaaabaaaaaaaaaabaaabaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbabababaabbababbbabababbabbabbbbabbbabbbbbabababbbbbabbbbbbbbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbababbbbabbbbbbbbabbbbabbababababbbbabbabbbabbbababbbbabbabababbabaababbababaabbababaababababbababababababababbabbbabaabaabababababababaaababaababaabaababababaabbaaaaabaabaabbaabaabaabaabaaaababababaaaaabaababaaababaabaadaabaaadabaaabaaaaaaaaaaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abaababbabbbbabbbababababbabbabbababbbabbababbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbababbbbabbabbbbbbbbbbabbbabababababbbabaabbabbababababbbbbabbababbaabbabbabababaababababababababaabaaababababaaabababaabaabababaababaabaabaabaabaabaaabbabaabaabaaabaabaabaabaaabaaaaaaaaababaaaaaaaabaaaaaaaaaaaaaaaaaaaabaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbabbabaababababbbbbbbbabbabbabbbbabbbabbbbabbabbbbabbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbbbbbbbbbbbbbbbabbbbbbabababababbabbbbbbbbabbaabbbbabababbbbbababaaababbabbabbababababababbabababababababababababababababbaaababaababaababaabababababaabaabababaaabaabaabaabaacaaabaabaabaaababababaaaaabababaaaabaacababaadaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"eababbaabbbbabbbababaabaabbabbabbababbabbbbabbbbbbbbbbbbbbbbbbbbabbbabbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbabbbbababbbbbbbbbbabbabbababbbabbbabababbabaababbbabbbbababbababababababababaabababababababaabaababababababaabbaababaababaababaabababababaabaabababababaabaabaabaabababaabaabaaaaaaaaababaaaaaaababaaaaaaaaaaaaacaaaacaaaacabaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbbabbbababbababbbabbabbabbabbabbbbabbababbabbabbababbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbababbbbabbbbbbababababbabbbabbbababbabbabbbababbbbabaabababbabaabababababababababbabababaabaababbabbababaabaabaabababababbaababababbaaabaaababababaaaaabaaabababaabaabaaaaabaaabaababababaaaababaabaaaaaaabaacaacabaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaababababbababababbabbabbabbabbababbbbbbbbbabbbbbbbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbbbbbbbbabbabbbbbbbbabbbabbbabbbbabbabababbbbabababbabbababbbbabbbababbabbabbabaababababbababaabaabaabababababababababaaababaaabaaabbaabbaabaabaabbababababaaaabaabaaababababaabaaaaaaaaabaaaaabaabaacabaaaaaaaaaabaabaaaabaaaaabaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbbababbababbbbbabbabbabbabbabbabbbbababababbbbabbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbabbbbababbabbbabbabababbbbabbababababbabbbbabbaabbabababbabbabababbaabbabaabaabaababbabababaababababababbabababababababaaababababbaababaabaaabaabaabaaabaaabaaababaabaababaaaaaaaabaababababaaabaabaaaaabaaaabaabaaaaaaaaaabaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".ababababbababaabbabbabbabbabbabbababbbbbbbbbbabbbbabbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbabbbbbbbbbababbabbbbbbbbabbababbabbbabbbbbbabbabbabababbbabbabbabbababaababababbabababababaaababababababaaabbababaabaababaabaabbaabaabaabbaabbaababaabababaababacababaabaaaaaaaabaaabaaabaaaaabaaaaaababaadabaaaaaaabacaaaadaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabbbbbbabbbabbabbabbabbabbabbabbbbbabababbabbbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbabababbbbabbababababbabbababbababbababababababbbabababaabbabababbabbababababababaabababbabaababababaabbaabaababaababaababbaaababababaabaaababaabaabaaabaaaaaabaaabaababababaaabaabaaababaaaacaabaaaabaaaaaaaaacaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbaabaabababbabbabbabbabbabbabbababbbbbbbabbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbababbbabbabbbbbbbbabbbabbbabbbbabbabbbbababbabababbbbbabbaabbbabbabbabbababaabaabababababababbababaabababababaabbaabaababaababaababaababbaababaabababaaaabaabababaabababaaacaacaaaaaaaaabaaaaabaaaaaabaaaaaacaaaaaaacaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbbabbbbabbabbabbabbabbabbabbbbbbbabbabbbbbabbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbababababbabbbabbbababbabbaabbbbabbabbbabaabbabbbaabbaababababababbabbababababababaabababbabababababbaabbabbabababaababaabaabaabaaaabaababaabbaabaaaabaabababaabaabaaababababaaabaabaaababaaababaaaabaabaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abaabbababbabbabbabbabbabbabbbabababbbbbbabbbbbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbabbbabbbbbbbbbbabbabbbabbbababbabbbababbabbabababbabbaabbbabbbababababababaabababababaabababaabaabababababaabaabaaababababaababaabaabaabbbaabaababaaabaababaabaaaaaabaabaabaaaaaaaaabaaabaaabaaaaabaaaaabaaaaaaabaacaaabaaabaaaabaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbbabababbabbabbabbaabbabbbabababbbbbbabbbbbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabababbabbabbbabbbabbbbbabbabbabbababbabbbbabbabbbababababbabababababbabababababbabababbabbabababaabababbababababababbababbabababaaabababaaababaabababaabababaabaabaaababababaaabaaabaabaabaaaacaaaabaacaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababbbbabbabbabbabbabbbabbbbbbabababbbbabbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbbbbbbbabbbbbbbabbbababababbabbabbabbbbababaabbabbababbababbababababbabaababababababababaabaababaababababaababababaaabaaaabaababaabababaababababaabaaacaabababaabaabaaabaaaaaaaabaaabaaaaaabaaabaaacaaaaaaaaabaaabaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbbabbbabaabbabbabbabbabababbababbbbbbbbbabbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbababbbabbbabababbbabbbbbbabbabbababbababbabbbbabababababbabababbababaababbababababababababbabaababbababababaababaaabbaabbababaababaababaabaaabaaabababaabaaaaaabaaacaabbaabababaaaabaaababaaaaacaaaaaabaadabaaaaabaaabaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aabbabababbabbabbabbabbbbbbbabbbbabbababbbbbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbabbbbbbbbbbabbbabababbabbabbbbabbababbababbabbbabbbabbbabbabbababbabababababababababaaabababaaababababababaabbaaabaaabababaababaaaabaabbaababaaababaabbabaaabababaaabaaaaaababaaabaaaababaaaababaaaaaaaaacabaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbaababbbabbbababbabbaabababbbabbbabbbbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbababbabbbabbbbbbabbabbbabababbbbabbababbababbababaabaabaabbabababababababababababbbabababbbababababababbababbabbabaababbaababbbabbaaababaabaabaabaababbaabaaaabaacababaaaaabaaabaaaaababaaaabaacabaaaaaaaaacaaaaaacaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbbbababababbbbabbabbbbbbbabbbabbabbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbabbbababbabbbbbabbbabbbababbbabbababbbbbababbabbbbababbabababbabbabbbabababbababababababababaabababaaababababababaababaabaabaababaaababaaabaaabbabaabaabaabaabaaaaabaababaababaaaaababaabaaaabaaaaaabaaaaaaaaaabaaaabaaaaaaaaaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbababbbbbabababbbabbabababbbbabbbbbbabbabbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbbbbbbbababbbabbbabbbbbabbabbabbababbbbabbababbbbabbabbbabbabbababababaababababababababababababababaabababababbaabababaabbabababaaababaabaaaaabababaabaabaababaaacaaaabaaaababaaaaaaaababaabaaabaabaabaaaacaabaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".bababbabaabbbbabababbabbbbbbabbbbabbbabbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbabbbbabbbbbbbabbabbbababbbabbabbabbbababbbabbabababbabbabababbabbababababbabababababababababababababababaabababaabaabababaaabaababababaabababbbaabaaabaabaabaaaababababaababaaaababababaaaaaaaabaaaaaaaaabaaaaaaadaabaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbabbabbababbbbbbabbbababbbababbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbabbbbbbbabbbbbabbabbabbbabbbbbabbbabbbbbababababbbababababababaababababababababababababababababbababaababbabaababbaababababababaabaaaabaabbaabaabaabacabaaaaabaaaababaaaaaaaaaabababaaaabaabacaaaabaaaaaaaaaaaaabaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbaabbabbababbabababbabbbbbabbbbabbbbbbbababbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbabbababababbbbbabbbabbabababbabbabaabbbabbbbaabababababababbabababababababababababababababaababaababaabaababaaababaaabaaabaabababbaabaaabaabaababaaaaababaaabaaaaabababababaaaaaaacaaaaaaaaadaaabacaaaaacaaaaaadaaaadaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbaabbabbbabbabbbbabbbababbabbbbbabbabbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbababbbbbabbabbababbabbbbbbbbababbbabbbabbbbbabbabbabbababababbbbbbbabbbbabababababababababababababababababababababababaabbabababababbaabbaabaababaabaabababaabaaaaababaabaabaabababaaaaaaaaaaababaaaabacaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".ababbbabbabababbababbbabbbbbabbababbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbababababbbabbbabbbababbbabbabbabbabbbababaababbaaabbabababababababababababababababababababababababaabaabababaaaabaaabaabaaaabaabaabaaabaababbaababaabaabaaaaaaabababaabaaaaababaaaaaaaabaabaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbabbbabbbbbabbbbbabbababbbbbbbbbbabbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbabbbbabbabbabbabbbbbbbbbbabbbabbbabbbbaabbabbabbabbababababbbababbbbababababababababababababababababababaababababababaabababababbabababbababbaababaababaababaaabaaaacaabaabababaaaaaabaaababaaaaabaabacaabaaaabaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbaabbaabababababbbbbbbabbabbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbabbbabbabababababbbabababbbabbbbabbabbabbababbbbbababababaababababababababababababababababaababababababaabababbaabaaabaabababaababaaababaababaabaaaaabaababaabaabaaaaaaababaaabaaaaaaabaaaaaaaaaaaabaaaaaaaaaaaaaaabaacaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babababbbabbbbbbbbabbabbababbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbabbbbabbbbbbbbbbbbbbabbbbbbbabbababbabbabbabbababaabbabbbbabbbababbababbabababababababababababbababababababbababaabaabbababaaabaabaaabababaabaaabaababbaabaabaabaabaabababaaaaaabaabaababaacabaabaacaaaaaacabaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"eabbbbbababababababbabbabbbbbbbbbbbbbbbbbbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbababababababbabababbbabbbbabbabbabbabbbbabbabbaababaababbabbababababababababababaababaababababababaababababbaaabababbaabaabbaabaaabababaabaabaabaabaabaabaabaaaaaabababaaaaabaaaaaaaaaaaaaaaadaabaaaaadaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babaabbabbbbbabbbabbabbabbabbbabbababbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbababbabbbbbbbbbbbbabbbbbbbabbababbabbabababbababbabbabbabbbbabbabaabababababababababababbaabababababababaababababaabababaaabababbaaabaabbaaaabababaabaabaabaabaabaabababaaaaaaababaaacaabaabaabaabaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbbababababbbabbabbbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbbbabababbababbbbabababbbbabbabbababbbbababbabbabbabbababbaababbababababababababababaababababababaabababababaabababaabbababaaabbaabaaabbbabaaaabaabaabaabaabaabaaaaaabababaaaaabaaabaaaaacaaaaabaacaabacaaaaaaaaadaabaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbbababbbbbabbabbbbbbabbbbabbbbabbbbbbbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbabbbbabbbbbbbbababbabbabbbabaabbbabbabbabbababababbabaabababababababababababbababababababbabababababbabababaaabaaababaabbababaaaaababaaabaabaacaabaacaabababaaaaaababaaabaaababaaabaaaaaaaaaaaaabaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aabbababaabbabbabababbababbbabbbbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbbbbabbbbabbabbabbbbabbbabababbbbbabbabbabbbabbabababbabbabbabbbababbabbabababababababababababababaabababaabababaabaaabaaababbaabbaababaaaabaababbaababababaabaabaabaabaabaaaababaaaaaabaaabaaaaaaaaabaabaabaaaaaaaaacaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbbbbbbabbabbbbbbbabbbbabbbabbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbbbbbbbbbabbbabbbbbbbababbabbabbaabbabbabbbabbabababbababbababababababababababababababababbababababababababbababbabaaabaaababababbaababaaabaaabaaabaabaabaabaabaababaaaabababaaabaaaacaabacaaaaaaaaaabaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbabababbabbababababbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbb.bbbbbbbbbbb.bbbbbbbbbb.bbb.b.e.e.e..e....e..b.bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbabbabbbbbbbabababbbbabbabbabbbabbabababbabbbabbababbababababababababababababababababaababababababababaababaabaabbaabbabaaabaaababaabbaabbababaabaabaabaaaabaaaaaabaaaaaaabaaaabaaaaaaaaadaabacaaaaaaaaaaaaaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbababbbabbbabbbbbbbbabbabbabbababbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbb.bbbbbbb..bb.bbbbb......f..f........b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbabbbbbbbbbabbbbbbabbabbbbbbbababbabbabbabbabbbbbababababababbaabbabababababababababababaababababbababababababababaababaabababbaaaabbaababaaabaaabaaaaabaabaabaabaababaabababaabababaaabaaaababaabaaaaaaaaaacabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbbbababababbababababbabbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.f.f.g.f.f.fbbbbbb.bb.b.bbb..bbbbbbbbbb....f.fgf.f.......b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbabbbabbbbbbabbbbbbbbabababbbbabbabbabbabbabaabbbbbbabbbababbbabbabbababababbabababababbabababaabababababababababaabababaabaabbbaaababaabbaabbaababaaabaabaabaabaaaabaaaaaaaaaaaaaabaaabaaaaaaaaababaaaabaaaaaacaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abababbabbbbbabbbbbbbbabbbabbabbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..gg.g.g.g.f.f.fff.fbbbbbbbbbbbbbf........f.gggg..f......bbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbabbbabbbbbbbababbabbabbabbabbabbbabaabbbabbabbabababaababababaabababababaababaabababababababababababbababaabaabaaabababaabaaabaababaabbaabaabaabaababaabababababababaaabaaaacaabacaaaaaabaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbbabbabbbababbabababababbbbbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....ggf.g.gfg.ggg.g...f.fff.f.f.fffff..ff.fffggg.ff.f.......b....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbabbbbbabbbabababbabbbbbabbabbabbabbbababbbaabbabbababababbababababbbabababababbababababababababababababaababaabbabababababaabaabbaabaaaabaaabaabaabaabaaaabaaaaaaaaaaaaaabaaaabaabaaaaabaacaaaabaaabaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbabbaabbbbabbbbbbbbbbababbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...gggg..gfggg.gg..fgfgg.f...f..f.g.....ff.gggggffff........bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbabbbabbbbbbabbbbbbbbbbbabbbaababbabbabbabbababbbabbbabbabbabbbababbabbababaabababababaabababababababababababababaababaaabababaaababababaabaababaababaabaabaabaababaabababababaabaaababaaaaacaaaaaaaaaaaaadaaaabaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".bababbabbbababbbababbaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...gg.f.gggggggggggggg.g..g.gf.g.g.f.fgfgfgghgggf..g........bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabababbbbabbabbabbabbbbbbbbbabbbbbbabbbbbbbbbbbbbbbbbbbbbbbabbababbababbbbabbabbabbabbababababababbabbaabbababbabababbabababababbababababaababababababaababbaababbaabaaabbaaabaababaabaababaababaabaabaabaabaaaaaaaaaaaabaaabaaaaabaaaaabaabaabadaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbbabbabbbbababbbabbbbbbbbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.ggg.gggggggggggggggggggfggfg.gf.f.g.g.gggghgggf.gg.f......bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbbbabbbbbbbbbbbbbbbabbbbbbbabbbbbbbbabbbbbbbbabbabbbabbbabbbbabbbbababbabbabbbabbabbbbbbabbbbabababbbababaabababaabababababaabababababbababababababbababababaaabaabbaaabbabaabaabaabaaabaaaabaabaacaabaababababababaaabaabaabaaababaacaaaaaaaabaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbababbabbababbbbabbbbbbababbbbbbbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.g..gfgggggghghghghgggggggfg.g.ggggg.fgggghggg.ggg.f......bb..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbbabbbbbbbbbbbbbbabbabbabbbabbbbbbbbbbbbbbbbbbbbabbabbbbbbbbbbbbbbbbbabbbababbbbabbabababbabbabababbbaabbbabbaabababbabababbabbababababababababaabababababaabaabaababaabbbabaaabbaaababaabaabaabbaababaabaabaababaabaaaaaaaaaabaaaaaaaaabaaaaaaaaaabaaaaaaabaaaaaaaaaacaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbabbabbbbabbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.gg.ggggggghghghgigghghghggggggggg.gg.hggighgggggg..f.....b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbababababbabbbbbbbbbabbbbababbbbbbbbbabbbbbbbbbbbbbbbbbbabbabbabbbabbbbbababbabbbbbbabbabababababbabababbbabbbababbabaabaabababababababababbabababababababababaabbaaabababaabababababababaaabaabaabaabaabaaaabaababababaaaababababaaabaabaabacaabacaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbabbabbababbabbabbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgg.gggggggghghiiiihiigighgghghgghggggghgiihggggg.f.f......b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbabbbabbbbbbbbbbbbbabbabbbbbabbbbbbabbbbbbbbbbabbbbbbbbbbbabbbbbbbabbabbbabababbbabbbabaabbabbbbbbbbababbabbbaabbaabbabababbabbababababababababaaababababababababababaaabababababaabaaababaabaabababaabaabaabaaabaaabaaaacaaababaaaaaaaaacaaaaaaaaaaaaaaaaabaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbabbabbbbbbbbbbbbbbabbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.g.gggggghigiihihiihiihigihggghggghgghiihgghggggg.......b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbbbbabbbabbbbabbababbabbbababbabbbabbbabbabbbbbbbbbbbbbbbbbbbbbbabbbbbbbabbbbbbbabbababbbbabbabaabaabbbbbabababbbabbaabbabababaabababababababababbbababababababababaababbabaaabaabababababaabaababaaabaabaabaababaabaababaaabaaaaaabaababaaaabaacabaabaaaabaaaaaaaaaaaaaadaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabbabbabbababababbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg.gfggggghighiihiiiiiiihiiihiiihgghgghiiigghhggg.f.f....b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbabbabbbbbbbbbabbbabbbbbbbbabbbbbbbbabbabbbbbbbbbbbbbbbbbbbbbbbbabbbbbabababababababbabbbababbbababbbbbabababbbabbaabababbababababbabababababababaabaababababababababaababaabaabbaabababaabaaabaabaaababaabaabaabaaaababaacaaabaabababaabaaaaaabaaaaaaaaaaabaaaaacaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbabbabbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.b.g.ggggghghiiiiiiiijijjiiihihihihigiiihighiggggfgg.....b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbabbbabbbbbabbabbabbbabbbabababbbbababababbbbbababbbabbbbbbabbbbbbbbbbbbababbbbbbbbbabbbbabbabbbbababbbbababbabbababbabbbababbababababaabbababababababababaababababababababbababaabbaabbaaababaabababababaabaabaabaabaabacaaaabaabaaabaaaaaaaaabababaababaabaadaaaaaaaaaaacaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbabbabbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..g.gggghiiihiijjjjjjjijjjiiiihiiiihijiiiiggggggg......b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbabbbbabbbbbabbbbbabbbabbbabbbbbbababbbbbbbbbababbbbabbbbbabbbbbbbbbbbbbbabbbbbababababbababbabbababbbbababbababbabbababbaabbababababbababbaababababababababababababababababaaabababaaabaaabbaabababaababaabababaabaabaacaaaababaabaabaaaabaababaaaaaaaaaaaaaaaaaaaacaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbabbbabbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.g.gggghihiiijjijijjjjjijijjijiihijjiiihighiggg.g.....b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbabbbbbabbbbbbbabbbbababbbbbababababbbbbbabbbabbbbbbbbbbbbabbbabbbbabbbbbbbbbabbbbabbabbbbababbbbabbbbabbabbabbabbaabbbababaabbababbababababababababababababababababbbabaababbababababaabaabbaaabaabaaaabaabaabaababaaabaabaababaabaaaaaabababaacaabaabaabaabaaadaaaaaaaaabaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbababbababbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...gfggighiiijijjjjkkkkkjkjijjijjjjjiiiiigiggggfg.....b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbabbbabbbbbabbbbbababbbababbbbbababbbbbbbbabababbabbbabbbbbbbbbbbbabbbbbbbbababababbbababbabababbabbababbababbabbabbabbabbbababbabbbabbababababababababababababababababaabaaabababaaababaabaabaabaaabbaabaababaabaabaabaaababaabaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbbbbbbbbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..gggggghiiiiijjkkkkkkkkkkjkjijijiijiiiihighggg.g....bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbbbbbbbbbabbbababbbbbabbbbbababbbbbababababbbbbbabbabbbabbbbbbbbbbbbbbababbbbbbbbbababbbbabbbbbbabbabbbabbababbabbababababababababaabaabababababababababababababababababbababababababababaabbabababaaabaabaabaabaabaabaabaaaaabaababababaaaaaaaaabaabababacaacaaaaaacaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbabbababbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf.gfggghiiiijjkkjkklklklklkkkkjkkjjiijihighgggfg.....b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbbbbabbbbbababbbbababbbbbbbbbabababbbbbbabbbbbbbabbbbbbabbbbbababababbbbababbbabababbbbabababbbbabbabbabbbabababbabbabbabbababababababababababababababababaabababababababaababaababaababaabaabaabaabaabaabaabababaabaaaaaaabaabababaabaaaaaaaaaaaababaaaaaacaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbabbbbabbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..g.ggghihiijjjkkklkkmklklklklkkkjkjjiiiiigiggg.....b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbabbabbbbababbbbbbabbbbbababababbbbbbabababbbbababbbbbbbabbbbbabbbbbbbbababbbbbabbbbbbababbbbbbbababbababbababbbbababaababababababababababababababababababaababababababababaabababaabaababababababaabaabaabaabaabaaabaaabababaabaaaaaaaaaabaacaaababaaaabaaabaaaaaaaaadaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbabbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...ggggghiiijikjlkkmlkmkmkmklkklkkjijjiihigggg.g.....b..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbabbbbbbbabbbbbbbabbbbbbbababbbababbbbbabbabababbbbbababbbbbbbbbabbbbbabbbbabababbbbbbabababababbbbabababababbabbbbababbababbabbbababababababbababababababababababababbabababababaabaababaababaabaaabaaababaabaabaabaabaabababaaabaaaaaaaaaaabaacabaaaaaabaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfgfgghgiiiijkkkkkmlkmlmlmkkmklkjkijjiiiighgg.g.....b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbabbbabbabbbbbabbbbbababbbabbbabbababbbbbabbabbbbbbbabbbbbabbbbbbbabababbbbbbbbbbababbbabbbbbabbaababbbababbaababababababbabbaababababababababababababaababababababbabbababaababababaabbaaaabaabaabaabaacaaaaaaabaaabababababaaabaaaababaaaadaaabacaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.g.ggghihijjjklkmkkmkmkmkmmkkklkkjjiiiighgggg.....b.bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbabbabbbbbbbabbbabbbbbbababbbababbbbabbbababbababababbbabbbabbbabbbababbbabababbbbbbabababaababbbabbbababababbbabababababbbababbbabbbabbabbbababababababababababababababababaabaabaabaabbaababababaaababaabaabaabaabaabababaaabaaaaaaaaaaabaaaabaaaaaabaaaabaaaaaaaadaaaaabaaaaacaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg.ggghgiiijikkkkkmlmlmllmkkllkkljkjjiiiiggg.g.....bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbababbbbbabbbbababbbabbbbbabbbbbbbaabbbabbbabbbbbbbbbabbbbbbabababbabbbbbbbbbabbbabbababbbababbbabbbabbababbababaaabaabaaababbabbabababababababababababababbababababbaaababaaababababaababaabaabaabaaaaaababaabababababaababaaabaacaaabaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf.gfggghhiiijjjkmlkmkmkmmkmmnllkkkijiihiggggg.....b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbabbbbabbbabbabbabbbbbbbabbbbabbbbbbababababababababbababbabbbabbabbabbbbababbbbbbbbbbbababababababbabbbababbbababababbababbabbabbbbbbbabbbabbabababbabababababababababababaababababaaabbabaabbabababaabaaaabaabaababababaabaabaaaaaaaaaaaaaaaacaaaaacaaaaaaababaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg.gghgiiiijjkkljkmkmkmlkmlklkklkkjjiiiiggg......b..b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbabbabbababbababbabababbbbabbbbababbbabbbbabbbabbbbbbabbabbbbbbabababababbbbbbbbbbbbbabbabbabbabbabbbababbababababababaabbababaabbabbaabbabbabababababababababbababababbababababaaabaaabababbaabaabaaaaaacabaaabaabababaababaababaabaaaaabacabaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abababbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfbfg.gghgihijikkkkmkmlmlmmkkmkmkkkjjiiiiggggg......bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbabbbbbbbbbbbbbbbbbbbbbbbbababbababbbbababababbababbbababbbbbabababbbbbbbbbbababababababababbabbabbabbababbbabbbbabbbabababbabbabbbbabbabbbabababababababababababaababababaabaabaababbaabbaabaaaabaabaabababaaaabaaabaaaaaabaaaabaaaaaaababaaaaaaaaaaaacaacaaaaaaaadaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfg.ggggihiijjkklkklmkmkkmmkmkjlkjkjjiihggg.g.......bb.bbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbabbbbabbbabbbabbabbababbababababababbbbbabbbababbabbbbbabbabbabbbbbbabbbbbbbabababababbbbbbbbbbbbbbbbabbabbbabbabbbbababababababbbabbabbabbababaababababababababababababababbababababbabbabbabaaabaaabaabababaabaaabaababaaabaabababaaaabaaaabaabaaaaacaabaaabadaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bababbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgghgghiiiiijkkkmkkmkmmkmlklkkkkijiigigggg.....b.b.b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbababbbababbabbabaabbabbabbabbbbbbabababbbbbbbbbbababababababababbabbababbabbababbbababbbabababbabbabbabbabbbababbabbbabbabbabbababababaababababaabaabaabaabbaabbaababaaaabababaabaacaabaacaaaaaaabaaababaabaaabaaaaaaadaaaaaabaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfgf.gghgihijjjklklklmlmjmkkmkklkjjjiiiggg..........b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbabbbbabbbbbabbabbabbababbbbbbabbababababbabbabbbbabbabbabbabababbabbababbbbbbbbabababababbbbbbbbbbbbbabbabbabbbbabbabbababbbbababbbabbababbabbaabababbbabbaabababaabababababababababababbabbabababaabaaababaabbabaaabaabaabaabaabaabababaaabaaaaaaaabaaabaabaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".bababbbbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfbg.gggghhiiijikjkkmmkkmkkllkklkjkiiihggg.g.g....b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbabbbbbbbbbbbbbbbbabbabbabbbbbbbbabbabbababbabbabbabbabbbabbabbbbbabbabbbbbbbbbbbbbababababababbabbbabbabababbabbbbababbbbabababbbbabbabbbbbabaabbabbabbababbababababababababababaabaabababababbbaababaaababaaabaabaabaabaaaaaaaaabaaaaabaabaaaacaaaaaabaacabaaacaaaacaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbababbbbbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg.ggggihiijjkklkkkmkkmkkklkkkjjiiiigggg........b.b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbabbbabbabbabbbbbbbabababbabbabbbbabbabbabbabbababbabbababbabbbababababababbbbbbbbabbbabbbabbabbabbbabbababbabbabababbbbababbababababbbababababababbabababababababababababbabbababababaaaabaaababaaabbaabaabaabaaababababaaababaabaacabaaaaacaaaaaaaabaaaaaaaabaaacaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbbabbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfbfgfghggiiiiijjkkllkmkjmklkkjkijiigggg.g......b..b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbabbbbbbabbbbbbbbbababbabbbbbbbbbabbababbabbabbabbababbabbabbbbbbbbabbbbbbbbbbbbababababbbabbbabbbbbabbbabbabbbbabababbbbbabababbabbbbabbabababbbabababbabababbbabababababababaabaababababaababbababaababaaabaabaabaabaabaaaaaabaaaaaaaaaaaaaababaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbababbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfg.gggggihijjjklkmkkkklkkkkjkjjiihiggg.g........b.bbb.bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbababbabbbbbbabbababababbbabbbabbabbabbabbbbaababbababababbbbabababababbbbbbbbbabbbabbbababbbabbabbbababbbbbbababbabbbbabababbabbabbbaabbabbbaababbabaababababababababbabbababababbabaababaababaabaaabaabaabaabaabababaababababababaaaaaabaaaabacaabaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".bababbabbabbbabbbabbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf..ggfghhgihiijkkkkklklkklkjkjiiiigggg.g.......b.bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabababbbbbbbbbabbabbbbbbbbbbbabbbabababbabbabbaababbababbabbbbbbabbbbbbbbbbbababababbbabbbabbbbbabbabbbabbbbbabababbbbabbababbbbababbabbaabbbabbaabbbabababbbababababababababaababaababaababaababaababaabababaaababaaaaaaaaaaaaaaaaaaaaaaabaaaaaacaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbabbabbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbff.ggggghiiijilklklklklkjkjijiiiggggfg........bb.b.b.b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbbbbbbbbbabbbababbabbabbababababbbabbabbbabbabababbababbabbababababbbabababababbbbbbbbbabbbabbbababbabbbabbbababbbbbbbaabbabbabbabababbabbabbbabababababbababbaabababababababababbababbabaabaababababaabaababaaababaaaababababababababaabaabaaababaaabaaaabaaaacaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbabbbabbbbbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbg.fghgghiijkkkkjkkjkjkkijjiiiiggggg.......b...b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbbabbbbbbabbbbbbbbabbbbbbbbbbbabbbbbbbababbabbbabbabbbabbababbabbabbbabbbbbabbbbbbbbbbbababababbbabbbabbbbabbbabbbababbbabababbbabbabbababbbbabbabababbbabbbbababbababbbabbababbababababaababaababbabababaababaabaaababaaaababaaaaaaaaaaaaaaaabaaaaacaaaaaaaaabaaaadaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbbabbbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfff.gggghiiijjkjjkkjkjkijjjiiihgggg..g.......b.b.bb.bb.bbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbababbbbbbabbabbababbbabababbbbbabbabbabbababbabbbaabaabaabbabababbabababababbbbbbbbbabbbabbbababbabbbabbbbbabbbbbbababbabbabbbbababbabbbabaabbababbababbabaababababaabababababbababbabaababababaababababaabaababaaababababababababaaacaaaaacaabaaaaaabaaaaabaadaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbabbbabbbbbbabbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf..gfggghgijjkjjkjjjjijjjiiigigggg.g........b.b.bb.bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbabbabbbbbabbbbbabbbbbbababbbabbabbabbababbaabbbabbabbabbbbbbbbbbbbbbbbbababababbbabbbabbbbbbbbabbbababbbabababbbbabbabbababbababbababbbbabbabababbababbbababbabbababababaababaababbabaabaababaaabaaabaabaaaabaaaaaaaaaaaaaaaaaabaababaaaaaacabaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbbabbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf..gggghgijjjijjijijjijiiiiggggfg............bb.bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbbabbbbbabbbbbabbbbababbbbbabbbabbabbabbbbabbababbabbabaababababababababbbbbbbbbabbbabbababababbbabbbbbabbbbbbababbabbabbabbabbbabbabbababbabbbabbababbababbaabbabababababbababbababababaababaabbaabbabaababaabababababababababaaaaaaaabaabaaaaacaaacabaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabbbabbbabbabbbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf.f.hggijiijjijjijijiiiihgggg.g..g.......b.b..b.bbb.bbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbbbbbbabbabbbbabbabbbbabbbbbabbbbbababbbabbabbabbababbabbababbababbabbbbbbbbbbbbbbbababababbbabbabbbbbbbbbabbbababbabababbbbabbabbabbabababbabbababbabababbababbababbabbbababbabababababaababaababababaabaaabaabaabaaabaabaaaaaaaaaaaaaaaaabababaaaaaabaaaaabaaaaaacaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbbabbbbbbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.f.g.ggghiijjjijjijjiiiiigigggg.g.........b.b.bbbb.bbbbbbbb.bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbhkjjjjjjkhbbabbbbbbbabbbabbbababbbababbbbbabbbabbabbababababababaababbabababababababababbbbbbbbabbbabbababababbbabbbbbabbbbbbababbabbabbabbbbbbabbabbbbabbbabbabbbabbabababaababaababababababbababbababababababaabaabaaabaabaaabababababaabababaaaaaabacaaaabaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbabababababbbbbbabbbabbbbbbbbbbbbbbbbbbbbbbbbb..b..bbbbbbbbbbbbbbbbbbbbbbbbbbbf.fggghgjjjiiijiiiiiiihggggg............b..b.bb.bbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjooooooookbbbbbababbbbabbbabbbbbabbbbababababababbabbabbbababbbabbababbabbbbbbbbbbbbbbbbabababbbabbbbbbbbbbbbabbbababbbabababbbbabbabbabbabababbabbababbabababbabababbabababbabbbbabababababaababaabababaabaababaabaabababaabaaaaaaaaaaabaaaaaaabaacaaaaabaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbbbbbbbbbbbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bb...bbbbbbbbbbbbbbbbbbbbbbbbbf..gggijiiijiiiiiiiigigggg.g.g..........b.bb.bb.bbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbkmommommokabbabbbbbabbbbabbbbbabbababbbbbbbbbbbbabbabbababbbbaabbabbbaabbaabababababababbbbbbbabbababababababbbabbbbbabbbbbbababbabbabbabbbbbbabbabbbbabbabbbababbabbabbbbbabbaabababababababbababbababaabaabababbaababaaabaaabababababaaabababaabaaaabaaacaaaaaaaaaacaabaaaaaaaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabababbabababbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..b.b....bbbbbbbbbbbbbbbbbbbbb.ffggijjiiiiiiiiiihiggggg.g..........b.b.b.b.b.bb.bbbbb.bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbkomoomooojbbbbbbabbbbbabbbbababbbbbbbbabammmmmmmomojbabbabaaabbbabbaabbbabbbbbbbbbbbbbbbbabababbbbbbbbbbbbbbbbabbababbbbababbbbbbbbbbbbbbabababbabbababbabababbbbabbabbaaabababbbabbabbabababababaaabababababaabaaabaaababababaabaaaaaaabaaaaaaaaaaabaaabaaadaacaabaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbbbbbbabbbbbbbbbbbbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbb.b..b.b..bbbbbbbbbbbbbbbbbb.f.gggiiiiiiiiiiiiigggggg............b..b.bb.bbbb.bbbbbbbbbbb.bbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjoommmmmmkbbababbbabbabbabbbbbbababababbbmmmmmmmmmmjbbabbabbbababaabbababaababababababababbbbbbababbababbabbabbbabbbbababbbbabababababababbbbbbabbabbbbabbbbbaababbababbbbababaababababababababababbabababababaabababbaabaaaaaabaabababaaababababaabaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"ebbabababbbbababbababbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.b.....b.b..bbbbbbbbbbbbbb.f.gghjiiiiiiiigigghggg...g........b..bb.b.bbbbbbbbbb.bbbbbbbbbbbbbbebbbbbbbbbbbbbbbbbbbbabbbbbbbbbkmommmmmmkbabbbbabbbbbbbbabababbbbbbbbbabmmmmmmmmmokabbabbababababbabababbbabbbbbbbbbbbbbbbababbbbbbbbbabbbbbbbbbbabbbbbababbbbbbbbbbbbbbabababbabbababbabaabbbababbabaababbabbbabababababababababaababababaabababaaaabaabababaabaaaaaabaaaaaaaaabaaabacaabaabaabaaabaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbbababbbbabbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbb.bb.......b....bbbbbbbbbbf.fggiiiiiiigiiighggggg..........b..b.b.bbbb.bb.bbbbbbbbb.bbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbkmmmmmmmojbbababbbababbabbbbbbbababababbammmmmmmmmokbababababbbabbabababababbabababababababbbbbbbabababbbbababababbbababbbbabababababababbbbbbabbabbabbabbbbaabbabaababbabbabaababbababababababababbabaabaabbabaaababaabaabaaabaabababaabaabababaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabbbabbbbbbabbbabbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.b.bb..........bbbbbbbbb..f.ggjiiiigiiigigiggg..........b..b.bb.bb..bbbbbbb.bbb.bbbbb.bbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjmmmmmmmojbabbbbabbbbbabbbbababbbbbbbbbbbmmmmmmmmmokababababbaabbabababbbabbabbbbbbbbbbbbbbabbababbbbbbbabbbbbbbbbbabbbbbabbbbbbbbbbbbbbbabababbabbabbabbababbbababbbbababababbababababababababababababbaabaabaabbaababaabababaaaabaaaaaaabaaaaaabacabaaaaabaacaaacaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbbabbabbbbbbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..b...g........bbbbb.f.ggiiiigiiiigighgggg.........b..bb.b.bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbabbbbbakommmmmmmkabababbbabbbbbababbbbabababababmmmmmmmmmmjbabababaabbaababbabaabaabbababababbabbbbbbbbbbbbbbbabbbababbabbbbababbbabababababababbbbabbabbabbababbabababababaababababababbababababababababababaabbabaabaaabaababaaaaaaababaabababaaaabaabaaaaaabaacaaaaaabaabaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbbabbabbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.b.bb.b................f.gghjiiiiigigghgggg........b.b.bb..b.bbbbbb.bb.bbbbb.bbbb.bbb.bb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbkommmmmmmkbbbababbbababbbbbbabbbbbbbbbbbaommmmmmmmokababbbabbabbbababbabbabbabbbbbbbbabbababababbbababbbbabbbbabbbabbbbbabbbbbbbbbbbbbbbababbabbabbabbbbabbbbababbabbbabbabababaababbabababababababababaabaababbbaabaaaababababaaaaaaaaaababaabaaaabaaaaaaaaabaaaaaaaacaabaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbabbbbbbbbababbababbbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbb.b.b.b....g........f.f.giiigiiiigigggggf......b.b.bb.bbbbb..b.bbbbbbb.bbbbbb.bbb.bbbbbbbbbbbbebbbbbbbbbbbbbbbbbbbbbbabbbkmmmmmmmojabababbabbbbabbabbbbabababababbmmmmmmmmmojbabaaabababaababaabaabbabaabbababbbbbbbbbbbbabbbbbabbbbbbbbbabbbababbbabababababababbbbabbabbabbabaabaaababbababaabaababababbabaababababababababababbabbabaaaabababbababaaabababababaaaabaaaabaaacaabaabaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbababbbbababbabbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.b.b.....fggg...f.gggjiiiigigggihg.g.g....b.b.b..b..b.bbbbbbbbbbbbbb.bbbbbbbbbb.bb.bb.bbebbbbbbbbbbbbbbbbbbbbbbbbbbbbjommmmmmokbbabbbabbbabbbbbbababbbbbbbbbbammmmmmmmoojbababbabababbbbabbabbbababbbabbbbababababbbbbbbbbbbbabbababbbbabbbbbabbbbbbbbbbbbbbbababbabbabbababbabbbabbabababbabbabbababaabababbabababababababababaabaababbaabaabaaaabaabaaaaaaaaabaaaaabaabaaacaaaaaadaaabaabaaaacaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbbbababbbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.b.b..b......fggg.f.giiiigiiggigggggg....bb.b.b.bbbbb.bb.bbbbbbbbbbbbbbb.bbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbakommmmmmmjbabaabbababbbababbbbbabababababjjkjjpjjjphababaabbabbaaabbabbaaababababbabbbbbbbbbbababbababbbbbabbbbabbbbabbabbabababababababbbbabbabbababbbabbabbaababababbabbaabababbababaabababababababababababababaabaabaababaabaaababababaaababaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".bababbbbbbabbbbabbbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.b.b.b......gghgggiiigigggigggg.f.....b.b.b.bbb.bbbbbbbbb.bbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbkommmmmmopbabbbabbbbbabbbbbababbbbbbbbabbbbabababababababaabbabbbbabaabbbbabbabbbbbabbabbbbbbbbbbbbbbbabbbbbbabbbabbbbbbbbbbbbbbbbbbbabababbabbabbbbabababababbababababaabbbabababababbababababababababababababaabaabaabaababaababaaaaaaabaaaaababaababaaaacabaabaaacaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbabababbbabbbbabbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb....b.....fghiiiiiigiiggggggg...bb.b.bbbbbbbbbbbbbbbbbbbbbbbbbb.bbbb.bbbbbb.bb.bbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbjmmmmmmmokabbababababbbbbabbbbbbabababbabaababababababababbaababaababbaababaabaababbabbbbababbbbbabbbbbbabbabbbbbbbbbabbabbabababababbbbabbabbabbababababbbabbabbabbababbaaabababababaababababababababababababababababababaaabaabaabababaaababaaaacaaaaabaaaaaaaacaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbbabbbababbabababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bb.b.......f.hiiiiiggiggggg.....b.bbbbbb.bbb.bbbbbbbbbbbbbbbbbbbb.bbbb.bbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbkommmmmmojbbabababbbbbababbabababbbbbbbbabbabababababaabababbababbabbabbababbabbbbbbbbbbabbbbababbbababbbbbbbbbabababbbbbbabbbbbbbbbbababbabbabbabbabbbbabababababbababababbbabababababababababababababababababababababaaababaabaabaaaaaaabaaaaabaaaacaaaabaaacaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbabbbbbbbbbbbbabbabbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbb..b.b....f.giiiggigggggg......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbabbbbabjommmmmmmkbababbbbababbbbbabbbbbbabababababbabababababbabababbababbaabababbabbaabababbabbbbbbbbbbbbbbbbabbabbabbbbbbbabababbabababababbbbabbabbabaabbababbabbababaababbababaabababababababababababababababababababaaaaabbaabaabaabaabababaaababaaabaaaabaaaabaaabaaabaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbabbabababbabbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bb.b..b..ffgiiiiggiggggggg...b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.ebbb.bb.bbbbbbbbbebbbbbbbbbbbbbbbbbbbbabbbbkommmmmmmjbabbaababbbbabbbbbababbbbbbbabbbabababaababaabababababbabbbabababaabbabbbbabbbbbabbbbbabbbbbbbbbbbbbbbabbabbbbbbbbbbbbbbbbbababbabbabbbbbababbabbababbabbababababbababababababababababaabababababababaababbbaaabaabaabaabaaaaaabaaaaaabaaabaaaacaaaaaaaabaaacaacaaaaaabaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbbabbbbbabbabbabbabbabbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bb.b......hiiggiigggggg....b.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbebbbbbbbbbbbbbbbbbbbbbbbbbbbabkmmmmmmmokabbabbabababbbababbbbbabababbababababababababababababaabaaababababababaabbbbababbbababbbbababbabbabbabbbbbbbbabababababababbabbabbabbababbabbabbababaabbababababaabababababababababababababaababaabaabbabaaaababababaabaabababaabababaaabaaabaaabaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbbabbababbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbb.b......giiiiiggggggg.f....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbebbbbb.bbbbbb.bbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbjmmmmmmmojbbabbabbbbbbbabbbbbababbbbbbabbbabababababababababababbabbbbbabababababbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbbbbbbbbbabbabbabbababbabbabbabbbabbbabababababbababababababababababababaabaababaabaabababbababaaaabaabaaabaabaaaaaabaaabaaabaaabaaaaaabaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bababbbbbbbbababbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.iijjjjjjiige.b.b..fgjigggggggg.gg...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..gqiqqiqgg.bbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbabjommmmmmmkbababababababbbababbbbbabababbabbabababababababababbbabbaabaabababababaabbbabbbbabbbbbababbb.giiijiggbbbbbabbbabababababababbabbabbabbbabbabbaabababaababba.bfghgghg.bbababababababababababbabbababbabaababaabaaababaaabaabaab#rglklkkprs#aacaaaaaaaacaaaaaabaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abbbababababbbbabbbbbbabbbabbbbbabbbbbbbbbbbbbbbbbbbbbbb.ilmmmmoooooommmmljg.e..giihigiggggg......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.gkmmomoooomommmmkh.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbpommmmmmmjabababbbbbbbbabbbbababbbbbbbabba.eeeeeeeebababababaabaabbbabbababababbe.bb..bbbbbbababbb.hlommoooooooomjgbbabbbbbbbbbbbabbbabbabbabbabababbabbbbabbbbab.gkoooooomoomooooji.babababababababaabaababaababaababaababababababafimmomooooooomooomg#abacaaaabaaacaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbabbbbbababbbbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbgkmmmmmmmmommommmmmmmmliffiiigggggggggg...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbhkmoommmommmommomooooomi.bbbbbbbbbbbbbbbbbbbbbbbbbbabbjmmmmmmookbabbbababababbbbabbbbbabababbab.oooooooomebababbabbabbabaabbababababagommommmmmbbbbbbb.kmoommmmmomommmoommibbabababababbbabbbabbabbababbbaabababbaaabiloooommmomomomommooomomi.abababababababababaabababbaababababaaaaabqmmomomommmomomoomomoomraaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbabbbabbbbbbababbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgmmommmmmmmmmmmmmmmmmmmmmmljigggghgggg.f......bbbbbbbbbbbbbbbbbbbbbbbbbbgmoooommommmmomommmmmmmmmmomhbbbbbbbbbbbbbbbbbbbabbbbbbbpommmmmmmlababababbbbbbababbbababbbbbbabbemmommommoeaabababbabbabbabbabababababhmmmmmmmmmbbabb.kmooommmmmmmmmmmmmmmmmmbbbbbbbbbbbbabababbabbabbbababbababbab.koooommmmmommmmmmmmmmmommmmooibabababababababaabababaaabababaaaababjmmomommmmoomomommmomommmom.aaaaaaaaaabacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbabbbabbabbbbbbbbbbbbbabbabbbbbbbbbbbbbbbbbbb.lmmmmmmmmmmmmmmmmmmmmmmmmmmmmliggggggggggg...bbbbbbbbbbbbbbbbbbbbbbbbbb.lommommmmmmmmmmmmmmmmmmooomommojebbbbbbbbbbbbbabbbbbabbabjommmmmmmjbbbabbbababbbbbbbabbbbbabababba.oommmmmmmbbbababaabaababababababababagommmmmmmmabbbjoommmmmmmmmmmmmmmmmmmmmmmgabababababbbbbbabbabbababbbabbababbgmomommmmmmmmmmmmmmmmmmmmmmmmmmmokbaababababababbabababababaaabbaba.mmomommmmmmmmmmmmmmmmmmoomommkbaaaaabaaaaaaadaacaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbabbabbbabbbabbabbbabbbbbbbbbbabbbbbbbbbbbbbbbgmommmmmmmmmmmmmmmmmmmmmmmmmmmmmmiggggggg.....b.bbbbbbbbbbbbbbbbbbbbbbbbhoommmmmmmmmmmmmmmmmmmmmmmmmmmmmomobbbbbbbbbbbbbbbbbbbbbbbbpommmmmmokaabbaabbbbababbabbababbbbbbbabbemmmmmmmmoeababbabbabbababababababababgmmmmmmmmobbgoommmmmmmmmmmmmmmmmmmmmmmmmoibbabbbbbabababbabbabbababababbbbbkoommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmoebaabababaabaaabaaababababbaaabajoommommmmmmmmmmmmmmmmmmmmmmmommkbabaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbabbbabbbabbbbbbabbbbabbbbbbbbbbbbbbbbbbbbbbjmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmligggg..gf....bbbbbbbbbbbbbbbbbbbbbbbbjomommmmmmmmmmmmmmmmmmmmmmmmmmmmomombbbbbbbbbbbbbbbbabbbbbabjmmmmmmmokbbbabbababbbbabbabbbbbabababbabemmmmmmmmoebabaabbabbababababababababagmmmmmmmmmbkommmmmmmmmmmmmmmmmmmmmmmmmmmomiabbaababbbbbabbabbabbbbabbbababmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmomeabbabaaabbabababbbabaaabaaabablmommmmmmmmmmmmmmmmmmmmmmmmmmmmmommcaaaaadabaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabbabbbabbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbjmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmolg.g.ggg....bbbbbbbbbbbbbbbbbbbbbbbbkoommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmbabbabbbbbabbbbbbbbababbpommmmmomjbaabbabbbbabbbbbbbbababbbbbbabbbommmmmmom.ababbbaabababbbababbabababagommmmmmmmmoommmmmmmmmmmmmmmmmmmmmmmmmmmmmo.babbbbabababbabbabbababababbbmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmombbaabaabbaabababaaabaabbaabbabkmommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmompbaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbabbbabbbababbabbabbbbbabbabbbbabbbbbbbbbioommmmmmmmmmmhgebbbbbe.hlommmmmmmmmmolggfg..f..b.bbbbbbbbbbbbbbbbbbbbbbkoommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmbbbbbbababbbbabbbbbbbbbakommmmmmmkbababababbbbababababbbbabababba.ommmmmmmmbbabaaabbababaabababababababrmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmbbababbbbabbabbabbabbbbbababjommmmmmmmmmmmmjiggggijlmmmmmmmmmmmmmmeabaabbaababaababababababaaabloommmmmmmmmmli.baaaaabeglommmmmmmmmmoqacaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babbabbabbbbabbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbiomommmmmmmml.bbbbbbbbbbbbb.jommmmmmmmmmif.gf....bbbbbbbbbbbbbbbbbbbbbbbkommommmmmmmmmmi.bbbbbbbbgjmmmmmmmmmmmmbababbbbbbbbbbbababbbabbjommmmmmmjbbababbbababbbbbbbbbabbbbbabbabemmmmmmmmmeababbbabbabbbbababababababahmmmmmmmmmmmmmmmmmmmmligggggilommmmmmmmmmmmmibabbababbabbabbabbabababbbgommmmmmmmmmmibabaabaaababbglommmmmmmmobaabaaababaababaabaaabaaabbajomommmmmmmmj.aaaaaaaaaaaaabjommmmmmmmom.aaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbabbababbbabbabbabbbbbbbbbbbbabbbbbbbbbbgmmmmmmmmmmmgbbbbbbbbabbbbbbbb.mmmmmmmmmmlg...f.....bbbbbbbbbbbbbbbbbbbbhomommmmmmmmol.bbbbabababbbbb.immmmmmmmmbbbbbbbbbbabbbbbbbbabbbbkmmmmmmmokaabbbababbbbbababababbababbabbbbommmmmmmoebabaaabaabbaaababababababaagmmmmmmmmmmmmmmmmoj.bbbbbabababimmmmmmmmmmmmobbababbabbabbabbabbababbaboommmmmmmmofbaabaababababaababglmmmmmmoeabababababbabaabaabbaabbaagoommmmmmmot.aaaabaababaabaaaablmmmmmmmmmmdaaaaaaaaaaadaabaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbababbbbbbbbabbbbbbbbbabbbbbabbbbbbbbbbbbbbblmmmmmmmmmjbbbbbabbabbbbbbbbbbb.mmmmmmmmmoj......bbbbbbbbbbbbbbbbbbbbbb.oommmmmmmmmmfbbbababbbbbbbababbbgmmmmmmoababababbbbbbbbbbbbbbbabkmmmmmmmojbbbaababbbababbbbbbbbabbbabbabaeommmmmmmoeaababbabbbabbbabababababaabgmmmmmmmmmmmmmmmibabbabaabbbabbabkmmmmmmmmmmmmababbabbabbabbabbabbbbabimmmmmmmmmmbbaabaabaaabaaaababaaa.jmmmmmbbaaaabaabaabaabbabaaabaaaeommmmmmmmojbaaabaaaaaaaaaaabaaabmmmmmmmoomfabaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".iiiiggggggggiiggggggggiiggggiigggggggggggggkoommmmmmmlgg....g..gf.f.f.fffffggmmmmmmmmmmgggggggigiigiggigigigigiggggmmmmmmmmmmmmg....ffff.....ffff...f.immmmmf.ffgfgg.gggg.ggggggggggjommmmmmmk.eeff.f..gggggg.g.ggggg.ggggggggommmmmmmmg..e.e..f......g.g.g.g.g..g.jommmmmmmmmmmmi.ee.bbeb..ebbebbebbjmmmmmmmmmmmgb.bb...............b...mmmmmmmmmm.bbbebeebeeebeeebbbbbbebb.jomofbbebebbebb.bb.bbbbb.bbbb.koommmmmmmjaaaabaaabaabaabaaaaaaabmmmmmmmmomaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgmmmmmmmmmlbbbbbbbbbbbbbbbbbbbbbbebhmmmmmmmmmh........bb.b.b.bb.b.b.b...gmmmmmmmmmmmebbbbbbbbbbbbbbbbbbbbbbbbbjommbbbbbbbbbbbbbbbbbbbbbbbbkommmmmmojbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.mmmmmmmmmebbbbbbbbbbbbbbbbbbbbbbbbbbbgmmmmmmmmmmmk.bbbbbbbbbbbbbbbbbbbbbjommmmmmmmmibbbbbbbbbbbbbbbbbbbbbb.mmmmmmmmmjbabbbabbabababababababababafmmbabababbabbabbabbbbbabbbb.ommmmmmmmkbaabaaaaaaaaaaaaaaaabaaagmmmmmmmmo.aaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjmmmmmmmmobbbbbbbbbbbbbbbbbbbbbbbbb.kmmmmmmmmlbeebbbbbbbbbbbbbbbbbbbbbbbmmmmmmmmmmmbbbbbbbbbbbabbabbabbbabbbabbfmmabbabbbbbbbbbbbbbbbbbbbbjmmmmmmookabababababbbbbbbbbbbbbbbbbbbbabemmmmmmmmmeaaaaaaaabababababaabaaaaaaagmmmmmmmmmmgbababababababaababaabaabmmmmmmmmmmmbabababbabbabbababababgmmmmmmmmo.abaaabaabababababaaababaaabaajeaaaabaabaabaabaaaaabaaaalommmmmmmmbabaaaaabaabaabaaabaaaaaaalmmmmmmmmkaaaaaaaaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababababababbabbbbbbbbbbbbbbbbbbbbbbbbmmmmmmmmmgbbabababbabbbbbbbbbbbbbbbfimmmmmmmmmfbbbbbbbbbbbbbbbbbbbbbbbbgmmmmmmmmmmgabaabaabababbabbabababbaabbabbgbbabbabababbbbbbbbbbbbabkommmmmmojbabababababababababababaabaababbmmmmmmmmobbbabbabbbabababababaabbbabagmmmmmmmmmbbabababababababbaababbaba.mmmmmmmmmoebababbabbabbabbbbbabbhmmmmmmmmmebababaababaaaaaaababaaababababaababaabaabaababababaabafommmmmmmogaaacaabaaaaaaaaabaaaaaaaaa.mmmmmmmomcaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"#babbabbbbabbbabbabbababababababbabbbbabbbgommmmmmmmbabbabbbabbbabababbbbbbbbeffmmmmmmmmmgbebbbbbbbbbbbbbbbbbbbbbbjommmmmmmmjbbabbabbababbababbbbabbabbabababaabaabbbbbbababababababbjommmmmmmkababababbbabbbabbbabababbabbabaeommmmmmmmbaabaabaaababababababaaaabaahommmmmmmmaabababababbbabaabbabaababammmmmmmmmmjababaababababbababbaakommmmmmmmbaaababaababbabbabaaababaaaaaaabaabaababababababaabababpoommmmmmkaabaaabaaabaabaaaaaaabaabaaaommmmmmmmbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"bababbababbababbababbbbbbbbbbbbbbbbabbbbbbmmmmmmmmmgbbabbabbbabbbbbbbbabbbbbbbfejmmmmmmmmjbbbbbbbbbbbbbabbbbbabbbbommmmmmmmoeabbabbabbbbabbbbaabababbabbababbbbabbaababbbbbbbbbbbbbabjommmmmmmjbabababaabbabbbababbbbbabbabbabeommmmmmmoebaabaabbabababaabababbababagommmmmmmmbbabbabbabaababbbababbababagmmmmmmmmomababbbbbabbbabbababbbjommmmmmmoebbaababaaaaabaabababababababababaabaababababaaabaabaabmmommmmmmfbaaabaaabaaaaaacaaabaaaaaaaapmmmmmmmmhaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbabbabbbbabbbbabababbabbbabbbbabbbb.mmmmmmmmmbabbabbbabbbabababbbbabbbbeffimmmmmmmojebbbbbbbbbbbbbbabbbbbbbhmmmmmmmmmkbbabbbabbababbababbabbbbabbabbbabaabbabbbbbababababababbbkmmmmmmookababababbbabbabbbbabababbabbabbbmmmmmmmmoeabbaabaabababababaabaababaagmmmmmmmmmbabaabbababbabaaababababababmmmmmmmmmobabaaaabbababbabbbabakmmmmmmmoohaaabaababbabaabaaabaaaaababaaaaabaabaabaaabaababababafommmmmmmmaaabaaabaaaabaaaaabaaaaaaabaafmmmmmmmmkaaaaaaabaadaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbabbabbababbbabbbbbbbbbbbbbbabbbbbbbgmmmmmmmojabbabbbabbabbbbbbbbbbbbbbbef.gmmmmmmmmobbbbbbbbbbbbbbbbbbbbbbbkmmmmmmmmofbabababbababbababbabbbaabbababababbbababababbbbbbbbbbbbabjmmmmmmmojbabababababbabbababbbabbabbabbabommmmmmmmbbaaabaabbabababababaabaaaabgmmmmmmmmoababbbababbababbbabababababajmmmmmmmmofababbbbababbababababimmmmmmmmolbabbababaaababaabbaabbabaaabababaabaabaabbaababababaapmmmmmmmmiaacaabaaaabaaaabaaaabaabaaaaabmmmmmmmooaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"eabbbabbabbabbbbabbbabbabbbbbbbbbbbbbbbbbkommmmmmmgbbabbabbbbbbbbbbbbbbbbbbbeefffmmmmmmmmmebebbbbbbbbbbbbbbbbbbbbmommmmmmmmbbbbbabbabbbbabbbbabbabbbbabbbabbbababbbbbbbbbabbabbabbabbjommmmmmmkbabababbabbabbabbbbabbbabbababa.ommmmmmmmeabababbaababababababababbaahmmmmmmmmmbabababababbabababbbababababiommmmmmmmgbabaababbbbabbbabbbahommmmmmmmoiabaabaababababbaabaaabaabaabaaabaabababaababaabaaabbtommmmmmm.abaabaabaaaabaaaabaaaaaaaaaaabmmmmmmmmmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"..g.ggggggggg.g.gg.gg.ggg.g..g.g.g.g.g..gmmmmmmmmmgb..b..bbbbbeb......f.fffgfgg..mmmmmmmmmg..e.e................gmmmmmmmmmkebebe.ee.ebee.eee.....ee.e.ebeeebeeeeebebe....g..........bkommmmmmmjbebebebe.b......bb..bb.........gmmmmmmmmmfbbebebbe.b.b.b.b.b.b.b.bbebhommmmmmmmbbbbbbbbbbbbbbbbbbbbbbbbbbbbfommmmmmmmjbbbbbbbbbbbbbbbbbbbb.ommmmmmmmoojbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbeommmmmmmmbaaaaaaaabaaaababaaabaabacaabaaommmmmmmobaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".gggggggggggggggggggggggggggggggggggggggimmmmmmmmm.f..f.f.ffgfgggggggggggggggfggfmmmmmmmmmhf.f...gggggggggggggggimmmmmmmmoj.............f.gg.gfg.gg.g.f...........f.g..g.gggggggg.g.glmmmmmmmole..e.e....g.g.g.gg.ggg.g..g....gmmmmmmmmo.ebbbbb.b..................bimmmmmmmmmbbbebbbebbbbbbbb.bbbb.bbbbbbfmmmmmmmmojbbbbbb.bbb........b.bmmmmmmmmmmommhbbbbbbbbbbbbbbbebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgommmmmmmoaaabababaababaaaaabaabaaaaaaaaammmmmmmomeaaaaaaaaacaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgmmmmmmmmmjjjjjjjjjjjjjjjjjjjjjjjjjjjlljjmmmmmmmmmfbbbbbbbbbbbbbbbbbbbbbimmmmmmmmofbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjommmmmmojbababbabbbbbbbbbbbbbbbbbbbbbbbbbmmmmmmmmm.ababababababbabababababaabagmmmmmmmmoabbbbbbbbbbbbbbbbbbbbbbbbbbbammmmmmmmmobabababbbbbbbbbbbbbbbimmmmmmmmmmmmmmjebbababababababababaaaaaaaaaaaaaaabaabaabaabaafmmmmmmmmoklljkjkjkkjkpklklkpkkpklkklklkkmmmmmmmmmeaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbimmmmmmmmmoooooooooooomomoooooooooooomooommmmmmmmm.bbbbbbbbbbbbbbbbbbbbbjommmmmmmmeababababababbbbbbbbbbbbbbbabbababababababbabbbbabbabbabbabjoommmmmmpababaabababababababaababababaabbmmmmmmmmmbabaabaababababababaaaaabaaahommmmmmmmbabaabaababababbabbabababaaabmmmmmmmmmmababababababababaabaabmmmmmmmmmmmmmmoomljgebabababababababbbabbabbbbbbaabaabaabaaabpommmmmmmmoooooooomooomoooooooomoooooooooommmmmmmmbaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"babababababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbimmmmmmmmmmomomomomommmmmmmomomomomommmmmmmmmmmmmmfbbbbabbbbabbbabbabbabjommmmmmmmbbababababababababababababbbabbbbbbabbbbbabbababbabbabbabbakommmmmmmkbabababbababbabbababbababababbaeommmmmmmmeaabaabaababaaabaaababbaababummmmmmmmmabababbabbabbbabbabbbbbbabbbajommmmmmmmabababababbabbbabbabbagommmmmmmmmmmmmmoomoommihebababababaaabaabaaaaaababbabababbaakommmmmmmmommmommoommomommmommmommmomomommmmmmmmmmbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbbbbbbbbbababababbbbbbbbbbbbbbbbbbbbbbjmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.bbbbbababbbabbabbbbbbmmmmmmmmmoababbabbabbbbbbbbbbbbbbbbbabbabababbbababbabbbbabbabbabbabbjmmmmmmmojabababaababbabbabbbabbabbbabbabemmmmmmmmoeabaabaababaabbaabaabaabaaaagmmmmmmmmmbababaabbabbabbabbabababbababpmmmmmmmmobabababababbababbabababjmmmmmmmmmmmmmmmoommmmooooli.babababbaababbabababaabababaaabjmmmmmmmmmmmommmmommmmmmmmmmmmmmmoomommmmmmmmmmmoocaabaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbbbbabbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbkommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmfbbbabbbbbbbbbbbbbababmmmmmmmmmmbabbabbabbabbabbbabbbabbabbbbbbbbbbbabbbbabbbabbbbbbbbbabbakommmmmmokabababababbabbabababbabbaabbaabbmmmmmmmmmbbaabaabaababaaabbabaaaababaummmmmmmmmbabbabbbabbabbbbbbbbbbbbabbbajmmmmmmmmmbbababababbababbabbbababkmmmmmmmmmmmmmmmmmmmmmommooooj.ababaababaabababaababaaababamommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmeaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"#babbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmfbbbbbababbabbbbbbbbbbmmmmmmmmmmababbabbabbbabbbbbbabbbabbababbabababbabbbbabbbababababbbabkommmmmmojbabababbbabbabbbbabbabbabbababaeommmmmmmmeabaababababababaaaababaaaaahommmmmmmmababbababbabbabbababababbbabbkommmmmmmmeababababbabbbabbababababjommmmmmmmmmmmmmmmmmmmmmommomomebabbababababababababbaabaaoommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmbaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbkommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm.bbbbbbbbbbbbbabbbbbbammmmmmmmmmbbbabbabbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbabbbabbbbbbbbbbabbbjommmmmmokabababaabbabbababbabbabbabbabbbeoommmmmmoeaabaabababababababaababababfoommmmmmmabaababbabbbbbabbbbbbbbabbabakommmmmmmmeabababbabbabbbabbabbbabab.mmmmmmmmmmmmmmmmmmmmmmmmmmmmmoibabaababababababaaaabaabaommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmbaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bgggggggggggggggggggggggggggggggggggggggmmmmmmmmmmjiiiijiiiiiijiijiiiiiijiijiiiijiiiijiiijgf.e.e....gg.gggg.g.ggmmmmmmmmmmee..e.fe..ggggggg.ggg.ggggggg.gg.gggg.ggg.ggg.g.g.g.g.gg...kmmmmmmmol.e.e.e....g..g.g..g..g..g..g...gmmmmmmmmmg.ebeebee..................bimmmmmmmmobb.bbbbb.bbbb...b.bbb.b.bb.b.kmmmmmmmmm.bbbbbbbbbb.bb..bb.bbbbbbbbbgmmmmmmmmmmmmmmmmmmmmmmmmmmmmot.bebbbbbbbbbbbbbbbbbbbbbmmmmmmmmmmggfgfggfgufgggfgfggfgffgffgfufgffgffgfufcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bggggggggggggggggggggggggggggggggggggg.gjmmmmmmmmm...........................fgff.fff..f...........gg.ggg.g.g.g.mmmmmmmmmm..e.e.e........g.gg.g.g.........g........g..g..............kommmmmmojbbbbbbb.b.....................b.mmmmmmmmmfbbbbbbbbbbbbb.b.b.b.bbbbbbbhmmmmmmmmmbbbbbbbbb.b....b.b....b.b.bbbjmmmmmmmmmbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbfimmmmmmmmmmmmmmmmmmmmmmmmmmomebbbbbbbbbbbbbbbbbbbbbbmmmmmmmmmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"ebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjommmmmmmmbbbbbbbbbbbbbbbbbbbbbbbbbbbeff......ebbbbbbbbbbbbbbbbbbbbbbbbblommmmmmmmbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjommmmmmmkbbbbabbbbbbbbbbbbbbbbbbbbbbbabbeommmmmmmmbabababababababaabaabaabaaaagommmmmmmmabbabbbbbbbbbbbbbbbbbbbbbbbbbkommmmmmmmababababbbbbbbbbbbbbbbabaababababbgjommmmmmmmmmmmmmmmmmmmmmmlbaabababababaabaaaaaaalommmmmmmmabababaababaabaabaaabaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"babbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbiommmmmmmmbbbbabbbbbbbbbbbbbbbbbbbbbb.feeeeebeebebbbbbbbabbbbbbbbbbbbbbbjommmmmmmmbaabaababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbabbbabbabbabakommmmmmmjaaaabaaaaabababaababaaabaabababbommmmmmmmeaaaaaaaababababaabaabaababahmmmmmmmmmbabbaabababbbbbbbbbbbbbbbababmmmmmmmmmoababababababababbabaabbabbabababababae.ijommmmmmmmmmmmmmmmmoogbaabababaaabaabbbababjommmmmmmoaaaaaabaaaabaaaaaabaaaababaabaaaaaaaaaaaaaaaaaaabaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabaababababababababbabbbbbbbbbbbbbbbbimmmmmmmmmbbabbabababababababbabbbbbbef....e.b.bbbbbbbabbabababababbababkmmmmmmmmmbbbabbabababababababababababababababababbabbabbbabbabbababbjmmmmmmmokbabbabbbbbabababbababbbabbababaemmmmmmmmoeababababaaabaaabaabaabaaaaafmmmmmmmmmbababbababbabababababababbbbbmmmmmmmmojbabababababbbabbabbbbbabaabababababaababaab.ilmmmmmmmmmmmmmmombababaaabbababaaababapmmmmmmmmmebaabaaaabaacaabaaaaaaaaaaaaaaaabaaabaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbababbababbabbabbbbbbabbababbabababbabagmmmmmmmmmgbabababababbbbbbbbbbbabbbbbfeeeb.eebebebbbbbbabbbbbbbbbbabbbbimmmmmmmmm.babbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbabbabbabbbbakommmmmmolaababaaabababbbbabbbababbabababemmmmmmmmmbbaaabaaababaaabaabaabaaabaarommmmmmmmaababababbabbbbbbbbbbbbbabaabmmmmmmmmmkaababababbababbabababababbabababaababababababab.jmmmmmmmmmmmmofbabaabbaababababaaaahommmmmmmo.aaaaaaabaaaaabaabaababaaaabaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbabbbbabbbabbabababbabbbbabbbbbbabbb.ommmmmmmmjabbbbbbbbbbabababababbbbbbef..e.eb.bebbbbbbabbbabbabbabbbbabahommmmmmmmhabaababababbabbababababababababababababababbabbbabbabbababjoommmmmmkbbababbbabbbababbababbabababbabbommmmmmmmeaabaaabaabaabaabaaabaabaaabuommmmmmmmbbabababbabbababbababababbbbgmmmmmmmmmgbbababababbabbabbbababbbabababababababababababaabbhommmmmmmmmmkaaabababaabababababahommmmmmmmhabababaaaabaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".baabbababbababbabbbbbbbbbabbbbbbbabbbabbmmmmmmmmmmbaabababababbbbbbbbbbbbbbbbffe.e.eeebebbbbbbbbbbbbbbbbbabbbbbbmmmmmmmmmlbabbabbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbakommmmmmmjababaaabababbababbababbabbbabbaeoommmmmmmbbaabababaababababaaaaaabaaarommmmmmmmabababbabbbbbbbbbbbbbbbbbabajommmmmmmmeaabababbabababbabbbbbabababababababababababaabbaaab.mmmmmmmmmmobababaabbaabaaabababbmmmmmmmmomaaaaaaabaaabaabaabaaaaabaaaaaaaaabaaaacaaaaacaaacaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbabbabbbabbbababababbabbababbbbbbabmmmmmmmmmmbbbabbabbbbbababababbabbbbbfffe.e..e.ebebbbbbabbabbabbbbbbbabbmmmmmmmmoobbbabbababbbbabbabbbabbabbabbabbabbabababababbbabababababbjmmmmmmmokbababbbababbabbbbabbbabbababaabbmmmmmmmmoeaabaaaaabaabaaaaabababaaaaafmmmmmmmmoabbabaababababbabbabbababbbbmmmmmmmmmmbbbababababbbbabbbababbabbbabababababababababbaabbbaafmmmmmmmmmmcbaaaabababaabbaaaaaaommmmmmmmmbbababaabaaabaaaaaaabaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjmmmmmmmmmjbbbbbbbbbbbbbbbbbbbbbbbbbeff.ff.e.e.eebebbbbbbbbbbbbbbbbbbbbblmmmmmmmmofbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbkommmmmmojbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbeommmmmmmoebbabbbbbbbbabbbbbababbabbbbgommmmmmmmbbbbbbbbbbbbbbbbbbbbbbbbbbb.mmmmmmmmolababbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbabbbbbabbabbbaabbbmmmmmmmmmoebabbbabababbbabbbbbblmmmmmmmmosaaaaaaaaabaaaaabacaaaaaabaaaabaaaabaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".iggggggggggggggggggiggiggggggiggigggggggiommmmmmmmog....f..f.f.gffgffffffffggfgfggggggfggggggggggggiiiiigigiggggjommmmmmmmm..f..fgggiggiggigggiggiggiggiggiggigigiggigiggigggiggggg.lommmmmmmk.eeeef.f.ggggggggggggggggggg.g.gommmmmmmmgee.eeee....g.....g.g..g..e.immmmmmmmmbbbbbbbb...................immmmmmmmmibbbbbbbbbb.b..........b....bebbbbbbbebbbbbebbebbbeebbbjmmmmmmmmmhbbbbbebe.bbbbbbbbbbbimmmmmmmmmobaabaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbmmmmmmmmmmibbbbbbbbbbbbbbbbbbbbbbbbbf.f.........bbbbbbbbbbbbbbbbbbbbbbb.mmmmmmmmmmebbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbjommmmmmojbabbbabbbbbbbbbbbbbbbabbbbbbbbbeommmmmmmmbaaabaabaababababaaaaaaaaaaagommmmmmmmbbabbbbbbbbbbbbbbbbbbbbbbbbmmmmmmmmmmbbbbbababbbbbbbbbbbbbbbbbbbbbbbbbababababababababababaagommmmmmmogaaaaabababababaaaaaabmmmmmmmmmmhaaaaaaababaababaabaaaabaabaaaacaaaaabaaaacaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"eabababababababbabbabbabbabbbbbbbbbbbbbbbajmmmmmmmmmm.ababababbbbbbbbbbbbbbbbbfgf.f......e.ebbbbbbbbbbbbbbbbbbbabbmmmmmmmmmmjbaabababbbbbbbbbbbbbbbbbbbbbbbbabbbababbbabababbababababkmmmmmmmokabaaabaaaaababaabaababbaabaaaaabmmmmmmmmoeabaabaabaaaaaaaabababababaafmmmmmmmmmaabaaabababbbbbbbbbbbbbbabimmmmmmmmojbabaabbabababababbababbabbababababbbabbababababababababgmmmmmmmmm.ababaababababaabbabaalmmmmmmmoooebaabaaaaabaaaabaaabaaaaaaaabaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abababbababbbbabbabbabbabbbababababababab.ommmmmmmmmmbababbbbbabbabbbbbbbbbbb.h.g......i.bbbbbbbbbbababababababbagmmmmmmmmoohabbabbbbababababababababababaekababbbababbbbbbabbbbbabbjmmmmmmmokababbbabbbbababbabbbababbabbbbbemmmmmmmmmbbaabaabaaabababaaaaaaaaaaaarommmmmmmoabbabbababbabababababababbmmmmmmmmmofababbaabababbbbbbabbbbj.bababbbabbbabbababababababababahmmmmmmmmocbabaababaaabaabaabaab.mmmmmmmmmmmaabaababaaaabaaabaaaaabaabaaaabaabucaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"ebababaabbabaaababbabbabbababbbbbbbbbbbababkmmmmmmmmmmjbbbabababbbbbbbbbbbbbbeegg.....gjmg.ebbbbbbabbbbbbbbbbbbbabbmmmmmmmmmoobbabababbbbbbbbbbbbbbbbbbbbbhoobbbbabbbbbabababbababbaakommmmmmmjbabaaabababbabbababababababaaaa.ommmmmmmmeaabaaaaabaaaaaaabaabaaaaaaahommmmmmmmbaabaabbbabbbbbbbbbbbbbbbmmmmmmmmmmlbbababbbabbbababbabbabaoojbbbbabbbabbbabbbabcbababababablommmmmmmmbaaababaabbaabbabaabaablommmmmmmomkbaaaaaaababaabaaababaaabaaaaaaaekmbaaadaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"bababbbbabbabbbbbabbabbabbabbabababababbbbagmmmmmmmmmmojbabbbbbbbbbbbbbbbbbbbb.hgggggjmmmgebebbbbbbbbabbabbababbbabhommmmmmmmombbabababababababababababaelommbabababababbbbbabbbbabbbjoommmmmopababbabababababbbbabbbabababbbaeommmmmmmmbaaaababaabababaaabaaabaabaagmmmmmmmmmababbaababbababababababbjommmmmmmmm.abbabaabbababbbbbbbbbbbmmol.abbababababababababbabacababommmmmmmmjabaaababaaabaaababaabaarommmmmmmmoopabababaaaaaaabaaaaaaaaaababacqomoeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabbababbabbababbabbabbabbbabbbbbbbbbbababajmmmmmmmmmomm.ababbbbbbbbbbbbbbbbbeggggimmmmmg..bbbbbbbbbbabbabbbbbabbabmmmmmmmmmmmmebabbbbbbbbbbbbbbbbbbbbpoomooabbbbbabbbbababbababbbabkmmmmmmmojbabaababababbbbababbaabbbabbaabbmmmmmmmmmebacaaaabaabaaaabaaaaaabaaaafmmmmmmmmmbbbaababbabbbbbbbbbbbbbkommmmmmmmolbbaabbbbababbbbbabbbbbabmmooom.bbbbbbbbbbbbbbbbabbbbababjmmmmmmmmohaabbaaaaabbababababaabaajmmmmmmmmmmomeaaaaabababaaababababaaaaaqmomom#acaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbababbabbababbabbabbabbbabbbababbabbbbbbbbmmmmmmmmmmmmmibbbabbbbbbbbbbbbbbbegjjmmmmmmmg.e.bbbbbbbbbbbbbbbbabbbabbgmmmmmmmmmmmmgbbababababababababbhmoomommbbababbbababbbbabbbababbjmmmmmmmopbababababbbbabababbabbbaabbabbaeommmmmmmoeaaaaabaabaaababaaaabaaaaaaarommmmmmmmmgbbbabbabbababbabbab.mommmmmmmmmmbbabbabaababbbabbbbbbbbbbmmmmmmmlfabababbababababbababbbimommmmmmmmbabaaababbaabababaaaabaaabommmmmmmmoommsbbababaaaaabaaaaaaaaa.koomomomeaaaaabaaabaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbabbabbabbbbabbabbbbbabbbabbbbbbbbababaab.mmmmmmmmmmmmmmg.bbbbbbbbbbbbbbbfiloommmmmmmg.ebbbbbbbbbabbabbabbbabbabalommmmmmmmmmmlfbbbbbbbbbbbbbbfjooommmommbabbbababbbbababbabbbbabjoommmmmmjababababaababbbbbabbababbabaaabeommmmmmmmbababaaabaabaaaaabaaaaaaaabagommmmmmmmmomkgbabbbabbbbabbbgkommmmmmmmmmmgbababbabbabbabbbbbbbbbbbammmmmmmoomiebbbabbbbbbbbbbabbelmommmmmmmmiababababaabaabababbabaabaaummmmmmmmmmmmomhbaaaababaaabababeqmomomomomobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".ababbabbabbababbabbbababbabbbabbabbabbbbbbbabgommmmmmmmmmmmomkigbbbbbbbb.gjmmmommmmmmmmmg...ebbbbbbbbbbbbbbbabbbbbabbmmmmmmmmmmmooomifbbbabbb.gjooommmmmmmmmbbabbbbbababbbbbbbababbakommmmmmokbababababbabbababbabbababbabbbaeommmmmmmmeaaaabaaaaaababaaabaababaaaaroommmmmmmmmmooomigg.bbb.ggjmmommmmmmmmmmmkbabababbabbabbbbbbbbbbbbbbmmmmmmmmmmomlhf.bbabbababbehloommmmmmmmmmbaababaaababbabaabaababaabaaimmmmmmmmmmmmommoprebaababc#rktoommomommmmmbaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabbabbabbabbbabbbabbbbabbbabbbbbbbbbbbabbababimmmmmmmmmmmmmoommmmmmlmmmmmmmmmmmmmmmmmmmgeebbbbbbbbbbbbbbabbbbababbbabmmmmmmmmmmmmmmooommmmmomoomommmmmmmmmmbabbababbbbbabababbbbabbkmmmmmmmojbabababbabbbabbbabbabbabbabbaabbmmmmmmmmocbacaabababaaaabaaaaaaaaaaaafmmmmmmmmmmmmmmmmommmmmmmoommmmmmmmmmmmmmmbababbabababbbbbbbbbbbbbbbbmmmmmmmmmmmoooommlljljljlmooommmmmmmmmmmeabbaaabababaababbaabaaabaabaahmmmmmmmmmmmmooomommoomomommoomomomommmmmm#aaabaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbabbabababbbabababbbbabbbabbabbabbbbabbabaimmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmg..bebbbbbbbbbbabbbbbbbbbababb.mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmabababbabababbbbbbababbajommmmmmmjbababababababbbabbabbabbabbabbaeommmmmmmmeaaaaaaaaaaaabaaaaaabaaaaaaarommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmolbbababababababababbbbbbbbbbbmmmmmmmmmmmmmommmoooooooommmommmmmmmmmofabaaababaabaababaaabababaabaabaimmmmmmmmmmmmmmmomoomommmoomommmmmmmmmmmmbacaaaaaaaacaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"#babbabbabbbbbbbabbbbbbbababbbabbbbbbbbababbababagmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmgebbbbbbbbbbbabbbbbababbbbbababblommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmbababbabbbbbbabababbbbabkommmmmmojababababbbabbabbabbabababaabaabemommmmmmmbababaaabababaaaabaaaaaabaaahommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmlbbabababababbbabbbbbbbbbbbbabmmmmmmmmmmmmmmmmmmmmmmommmmmmmmmmmmmmm.ababbabaabaabbababbabaabaabaabaaagommmmmmmmmmmmmmmmmmmommmmmmmmmmmmmmmmmmbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"bababbabbababababbabababbbbbabbbbabbabbbbbbbbbabbablommmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmfb.ebebbbbbbbbbbbabbbbbababbababbkmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmlbbababbabababbbbbbababbakommmmmmmkbababababababbabbabbababbbbabaa.ommmmmmmmeaaaabaaaaaaaabaaaabaabaaaaarmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmjbaabababababaabbbbbbbbbbbbbbbblmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmebabaacaabaabaaababaababaabaabaaabaaelmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmtbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabaababbababbbbabbbbbababbbbbabbbbbbbbbbbababbabbbgmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmolh.eeebbbbbbbbbbbbabbbbbbbbbbabbabbabfmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmk.bababababbbbbabababbbbabbkmmmmmmmokabababababbbbabbabbabbbbaaababbbmmmmmmmmocbabaababaabaaabaaaaaaaaaaaafmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmgbabbabababababbabababbbbbbbbbbbbglmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmjabababbabbabababbabaabababababaabaabaaagmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmk.aaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbbbbabbbbababbababbbbbababbbbbabbabababbbbaabaaabgmmmmmmmmmmmmmmmmmmmmmmmmmmmmmif...e.bebbbbbbbbbbbbbbbbabababbbabbabbabgmmmmmmmmmmmmmmmmmmmmmmmmmmibababababababababbbbbbbabbabjmmmmmmmojbababababbababbabbababaabbbbabaemmmmmmmmmbaaaaaaaaabaaaaaaabaaaaaaaaarommmmmmmmbglmmmmmmmmmmmmmmmmmmmmmojbaabaabababababbabbbbbbbbbbbbbbbabbbbimmmmmmmmmmmmmmmmmmmmmmmmmmmokeababacaabaababaabaababbaababaaaabaaaaaabaaglmmmmmmmmmmmmmmmmmmmmmmmmmmokgbaaaaaaaaaaaaaaaabaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"ebabbababbababbabbabbbbabbabbbbababbbbbbbbbbababbbbbbaba.immmmmmmmmmmmmmmmmmmmmmkig.e.ee.eb.bbebbbbbbbbabbbabbbbbbbabbaabaababa.kommmmmmmmmmmmmmmmmmmi.babbababababbbabbbbabababbbabbjommmmmmmkabababababbabbababbababbaaaabaaeoommmmmmmbabaabaaabaaabaaaaaaaaaabaaagoommmmmmmaab.immmmmmmmmmmmmmmmmmibabbbabbabababababbbababbbbbbbbabbbbababa.ilommmmmmmmmmmmmmmmmmmmliebbbabababaabaababbabbabaabaabababaaabababaabab.immmmmmmmmmmmmmmmmmmmmmjgbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"babababbabbababbabbababbabbbabbbbbbbabbbbbbbbbbabaabababbabbgjlommmmmmmmmmmmjh.bbbfffe..e.ebebbbbbbbbbbbbbbbbbbabbbbabbbabbababbbafhjommmmmmmmmmmjh.bababababbababaabbababbbbbbabbbabababaababababababababbabbbbabbbababbbbababaaaaaaaaaaaabaaabaaaaaaabaaaaabaaaaaarommmmmmmobbabab.ijommmmmmmmmli.babaaabaabababababbaabbbbbabbabbbbbbabbabbbabbb.ijommmmmmmmmmmmljg.babaabbababababbaabaabaabababbaababababaaaaaaaaaaaaaegjlommmmmmmmmmmlkgbaaaaaaaaaaabaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabbbaabbabbbabbbbbbbabbbbbbbabababbbabababbabbabbababbabbabbabbbbe.ebe.bbbbbbbebefff.e.e..bebebbbbbbbbbbabbabbababbbabbabbabbaabbababbebebbebbababababababaabababbbabbbbabababbabbabababbababababababbbabbbaababaabababaababababababababaaaaaaaababaaaabaaaaaaaaaagmmmmmmmmoaabababababbbebbbbbbabababbbabababababababbbababbbbbbbbbbbbabbababaababbabeeeeeeeeebbbbbababeabacababacabababbabbababaaabaaabaaababaababaaabaaaaaabbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbaabbbabababbaabababbbabababbbbbbbbbbbbbbabbabbabbbbabbabbabbabbbabbbbbbbbbbbbbeff.e.ee.eeebbbbbbbbbbbbbbbbbbbbbbbabbabbabbabbbabababababbababababababababbababbaabbababbbbbbabbabbababaababababababaabbaabbbbabbabbababbabaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaahmmmmmmmmmbbababababababababaaabababaabababababababbabbbbbbabbbbabbabbbababbbbabbabbabbabbabbabababacbababbabababaababaabaababaabbababababaaaabaaaabaaaaabaaaaaaaaaaaaabaaabaaaaaabaaaaaaacaabaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".baabbababbbabbabbbbbbbabbbbbbbababababbbbbbbbbbbabaababaababbabbbabbbababbabbbbbbbfff.e..eb.bebbbbbbbbbabbbabbabbababbabaabaabaababbabababaababababababababaababaabbbabbbbabababbabababababababababababbabbbabaababbaababaabaabababababaaabaaaabaaaaabaaaaaaaaaaaaahommmmmmmmababbabababababababbbabababbabababababbbabbabbabbbbabbbbabbbabbbacabbabababbabbabbababacbbababcaabacababababababbababbaababaaabaabacaabaaaaabaaaabaaaaaaaaaaaaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abbabbababababbabababbbabababbbbbbbbbbababbbababbbbbabbbbababbababbabbbbbbbbbbbbbbeffefe.e.b.eebebbbbbbbbabbabbbbbbbbbbbbbabbabbababbababbbabbabababababababbababbababbababbbbbabbbbababababababababababbaabbabbababbababbaababaaaaaaaaabaaabaaaababaaaaaabaaaaaaabgommmmmmmmbababababbababababaabababaabababababbaabbabbabbbabbbbbbbbbbbbacabababbabcbabbabbabcbcbbacabaeabbbabababababababaababaabaababbaabaaaaaaaababaaabaaaabababacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbabbabbbabbbbabbbabbabbbbbbabababbabbbbbbabbbbbbababaaabbabbabbbabbabbabbbbbbbbebefffe.e.e.e..bbbbbbbbbbbbbbbbababababababbabbababaababbaabbababababbabbabaababbababbabbbbababbbababbbababababacababbababbbabbababaababaababaababababaaaaaaaaaaaaaaaaabaaaaaaaaaabgmmmmmmmmoababababaabababababbabababbababababaabbabbabbbabbabbbabbbbabbbbbbbbababbabacabcabababababbcbabacabababababababababaabababaaaabaababababaaaaaaaababaaaaaaaaababaaaaaaaabaaaaacaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbabababbababababbabbbababbbbbbbabbabbbbbbbbbbabbbbbbbbabbabbabbbbbbbbbbbbbbbbeeffffe.e.e.e.ebebbbbbbbbbabbabbbbbbbbbbbbbaabababbabbabaabbababbbababababbabbababbbbabbababbbababbabababababababababababbabababbababbabababaabaaaaaaaabaabaaaabaaaaaaaaaaaaaaaaaabgmmmmmmmmmbabababbabbababababaababababababababbbabbabbabbbbbbabbbabbbbabbacaaeabbababbbbabcbabacbcbababababacbacababababababababaabababaabaaabaaaaabaabaaaaaabaabaaaaaaaaaaabaaaaabaaaaacaaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abababbabbababbbabbabbabbbbbabbabbbbbbbababbababbbabababababbbabbabbbbbbbbbbbbbfe.beff..e.......bbbbbbbbabbbbbbabbabbabababbbababaabbababbaababaaababababaabaababababbbabbbbabbbbbabababababababababababbabababaababaabababaabaabaabaaaaaaaaabaaaabaaaaaaaaaaaaaabbfommmmmmmmabababaabaabababababbabababababababababbabbabbababbbbbbbbabbbbabbbbbbabbabbaacbabaebbababacbcbababaababababababababababaabababaababaababaaabaabaabaaaaaabaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abbababbababbabababbabbababbbabbabbabbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbfebbbbbeffe.f.......bbbbbbbbbbabbbbabbbbbbbbbabbbabbbbaabababbabbabbbababababbabbbbabababbbababbabababbbabababacabababababababbababbabababaababaabaabaaabaaabaaaaaabaaaabaaaaaaaaaababgmmmmmmmmobabababbabbabababababababababababbabbbabbbbbbbbbbbabbabbbbbabbbbabaabcabbabbbabbabacabababaaabcababbababababababababaabbaabaaabaababaaaabaaaaaaaaaababaaaabababaaaaaacaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bababbaabbbbabbbbbabbabbbbbabbabbabbababbbabbbbabbabbabababbabababbbbbbbbbeebbbbbbeb.ffff.......eebbbbbbbbbbbbabbbbbabababbbabbbaaabbababaabaabaaababababaabbaaabbbbbbabbbbabbbbbbababbbabababababababbbabaabbabababababbaaabaabaaabaaacaaaabaaaaaaaaaaaaaaaaaaabbagmmmmmmmmmabbabababaabababababababababababbabababbabababababbbbbbbabbbbbabbbbbbabaacababbacbbabcbcbcbbbbabcbcababbbabbabababababaaabaabbabaaaababaaababababaaaaacaaaaaaaaaaaaaaaaaaaabaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbabbbababbaababbabbababbbbbbbbbbbbbbabbbabbbbbbbbbbbbbbbbbbbbbbbabbbeebbbbbbbbbbbfg.g.g.......bbbbbbbbabbabbbababbbbbbbabababbbbabababbabbbabbababababbbabbbbabababbababbabababbbababababababababbaababbbabababababaaabbaabaaabaaaaaabaaaaaaaaaaaaaaaaaaaaaababgmmmmmmmmoabababababbababababababababababbabbbbbbabbbbbbbbbbabababbbbbabbbabababbbbbbbababbaabbaaabaacababaaabbbbaabbabababababaabbaabaaabababaaaaabaaaaaaaabaaaaaabaaaaaaaabaaaaaacaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababababbabbbbbabbbbbbababababbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeebbbbbbbbbbbbbegg.g.g......bebbbbbbbbabbabbbbbbabbabbbbbbbabababbababaabbabbabbbabababbababbbabbabbbbabbbabbabbabbbabbababbabaabbabaaababababaababaaaabaabaaababaaaabaaabaaaaaaaaaaaaaaabbbagommmmmmmmbabababababbabbabababbababbbabbababababbbababababbbbbbbbbabbbbbbbbbbbababaabbcababbacbbbabbabcbabbbabaabbaababababababaaabbababaaabaababaaabababaaaababaaaaababaaaaaabaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abbabbbabbabababaabbabababbbbbbbbabbabbbbabbbbabbbbbbbbbbbbbbbbbbbbe.bbbbbbbbbbbbbbbeefigfgfgg.....bbbbbbbbbbbbbbabbabbbabbabababbbbbbabbabbbbabababaabbbabbabbbbabbbabbababbabbbabbabbaabbabbababbabbabbabbabababaabaabababaabaabaaaaaaaaaaaaaaaabaaaaaaaaaaabbabbgommmmmmmmababababababbabbabbbabbabaabbabbababbbabababbbbbababbababbbabababababbbbaebababbbabbababbabbabaeabbbabbabbabababaabaabbabaaaababbaabaababaaaaaaababaaaabaabaaaaabaabaaabaaabaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababaaababbabbbbbbabbabbbababababbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbe..ebbbbbbbbbbbbbbbbbb.ggg.gg.g....bbbbbbbbbabbabbabbbabbabbbbbbabababbabbabababbabbbbbabbabbababbbabbabbbbabbababbabbabbbabaababaabbabababababababbabbaaababaabaaaabaababaabaaaaaaaaaaaaaaaaababbagmmmmmmmmmbababababbbabababbabababbbbabbabbbbababbbbbbababbbbabbbbbbbbbbbbbbbbababbabbbbbabbabbbbacbbabbbbbaabbababababababbabbaabababbaaaabaabaaaaabababaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbabbbbabbabbabababbabbbabbbbbbbbbabbbbabbabbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbefiggg..g.....bbbbbabbbbabbbbbbabbbbbbababbbbbbbabbabbbabbababababbabbabbbababbabbababbababbabbababababbbbabbbabababababababaabaaabbaaaabaababaaaaaaaaaabaaaaaaaaaaaaaabbbbabgmmmmmmmmoabababbabaababbbababbabbababbabbababbbbabababbbababbbbababababbabbabbbbbbbbababbabbababbbbabbbababbbababababababaabaaabaaabaaababaabaaababaaaaaabababaaaaaabababaabaabaaabaacaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aabababbabbabbababbabbabbabababbabbbabbbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbb.ggg.gg......bbbbbbbbbbbbabababbabababbbbabababbbabbabbbabbbbbabbabbabbabbbbabbbabbbabbbbabbbabbbabbbabaabaababababababaababaababaaababaaaaaaabaaaaaaaaaaaaaaaaaaaaaabbababbgommmmmmmmbabbababbbbbbbabbbbbabbabbbbabbabbbababbabbbababbbababbbbbbbbbabbabbabababbbbbbabbaebbababbbabbabbabbabbabbabababababababaabababaabaabaabaabababaaaaaababaaaaaaaabaaaaacaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".bababbababababbbbabbabbabbbbbbabbbabbbbbbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbb.giggg.gg.....bbbbbbababbbbbbbbbbbbbbababbbbbbabbbabbababbababbabbabbabbababbabababbbababbababababaababbbbbababbababababaababaabaabaaaaabababaaabaabaaaaaaaaaaaaaaaaababbbabgmmmmmmmmmabababababababbababbbabbababbabbababbbabbababbbabbbbbababababbbbbbabbbbbbabababbbbbbabbbbabababbabbabbabbaababababababababaabaaabaabaabaabaaaabaababaaaaababaabaaaabaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababbabbbababbabbabbabababbbabbbbbbbbbbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbegig.g.g.....ebbbbbbbbbababbababababbbbabababbbabbabbbbbabbbabbabbabbbabbbabbbbbbababbbabbabbbabbbbababaaababaabababababbaababaabaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbabbagmmmmmmmmmbabababababbbabbbbbabbabbbbabbabbbbabababbabbabbabababbbabbbabababbabababbbbbbabababbababbbbbbabbabababaabbababababaaabaababababaababaabaababaaabaaaababaaaabaaabaaaabaabaaacaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbababbabbaababbabbabbababbbbbbbbbbbabbbbbbbbbbbbb.....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.iggg.g......bbbbbbbbbbbbbabbbbbbbbbabbbbbbbbabbbbabababbbabbabbabbbabbbabbabababbbababbabababbababababbbababbababababaaababaabaabaaaaabaabaabaaaaaaabaaaaaaaaaaaabbabbbabgmmmmmmmmoababababbbbabbbbababbbbbababbabbabababbbbabbabbababbbababbbabbbbbbbbbbbbbbababbbbbbbabbbbabababbabababbabbababababaabbaababaaabaabaaaabaabaabaabaababaaaaabaaabaaabaaaaaaaaaaaaaaaadaaadaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababababbabbabbabbabbbbabababbbbbbbbbbbbbbbbb....bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb..ig.g.g.....bbbbbbbabababbbababababbbababababbababbbbbbabbbabbabbabbbabbbabbbabbabbabbabbbabababbabbabaababaababababababaaabaabaaababaaabaaaaaabaaaaaaaaaaaaaaaabbabbabbbgmmmmmmmmmbabababababbbababbbbababbabbabbabbbbbababbabbabbbbababbbbabbbabababababababbbbabababbbababbbabbabbbababababababababababaabababaabaababaabaabaabaabaaaababaaaaaaaabaacaabaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".ababbababbbabbabbabbabbababbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.gggg.g......bbbbbbbbbbbabbbbbbbbbabbbbbabbbabbbbabababbababbabbababababababababbabbabbababbbababbabbabbababababaabaaababaaabaabaaaaabaaaabaaaaaaabaaaaaaaaaaaabbbbbbbababgggggggggababababababbbbbababbbbabbbbbabbababbbababbabbababbabababbababbbabbbbbabbbababbbbbbabbbababababbaabbabababababaaababaababaaababaabaabaaaabaabaabaababaaaababababaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbabababaaabbababbabbabbbbbbabbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.iggg.gg.....bbbbbbbbbbbbababababbbababbbabbababbabbbabbbbabbbabbbabbbabbbabbbbababbabbabbaababaabaabababababababaabbaaabbaabaaababaabaaaaaabaaaaaaaaaaaaaaaaababababbbbabababababababababbbbbababbbbababbabaabbabbabbaabbbabbabbababbbbbbabbabbabbbababbbabbbbabababbbabbbbabbbbabbbababababababbbabaababaabbaaabaabaaabbaabaabaabaaaababaaaaaaaaaaaabaaadaaaaaaabaaaacaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aababababbbbabbbbabbabbabbabbbbbbbbbbbbbbbb..bbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbbbbbbbbbbbebe.ig.g.......bbbbbbbabababbbbbbbbbababbbabbbbabbabbbabababbababbbabababababbababbbbabbabbabbbbabbabbabababababaababaababaaabaaabaaaaaaabaabaaaaaaaaaaaaaaaaaabbbbbbbbababababababababababbaababbbbababbbbabbbbbabbabbabbababbabbabbbbabababbabbabababbbababbababbbbbababbabababaabbaababababababaaabaababaabaababaabababaabaaabaabaababaaaabababaababaaaaaaaacaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abababbabababaababbabbbbbbbbbbbbbbbbbbbbb.bbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbb.gggg.g......bbbbbbbbbbbbababababbbbbabbbababbabbabbbbabbabbbbaabbbabbbabbababababbabbababaabbaabaababababababaababaaaaabaaabaaaabaaaaaaaaaaaaaaaaaaaaaaaaabbababababbbbbababababababababbbbbbababbbbababbababbbabbabbabbbabbabbababbababbabbabbbbbababbbabbabbababbbababbbbbabbaabbababababababbaababaabababababaaaabaabaabaaabaabaaaababaaaaaabaaaababaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babababbabababbababbabababbbbbbbbbbbbb.b.bbbbbbbbbbbbbbbbbbbbbabbabbbabbbabbbbbabbbbbbbbbbbbb.ig.g.g......bbbbbbbbbabbbbbbababababababbbabbabbababbabbababbbabbbabababbbbbbababababababbabbabbababababaababaaaabababaabaababaaabaaabaaaaaaaaaaaaaaaaaabbabbbbbbbbababababababbababababababbbbbabbbbbabbababababbabbaabbabbabbababbbbabbabbabaabbababbbabbabbabababbbaababbabbbabababababaabaababaabaabaaaaaaababaabaabaabababaababaaaaabaabaaaacaaaaabaaaabacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbaababbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbb.ggg.g......bbbbbbbabbbbababbbbabbbbbbbbabbabbbabbbabbabbabbabbbabbabbbbabaabbabbbabababbabaabaababababaabaababbaabaaabaabaaaaabaaabaaaaaabaaaaaaaaaaaaabbbababababbbbababababababababbabbbbababbbababbabbbbbbbbbabbabbabbabbabbabbababbabbabbbbabbbbababbabbabbbabababbbabababababababababbaabababababaabbabbaababaabaabaaaaaabaaaaababaabaaaabaaaaaaaaabaaaaabaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbabbabababababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbbbbabbabbbabbbbbbbbbbbbbbbbbbbbbbbggg.g.g.....bbbbbbbbababbbbababbababababbabababbbabbabbabbabbaabbabbabababbbabbababbabbaababbababababaabaababaaabaabaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaabbbabbbbbbbbbababbbababababababbabbababbbababbbabbababaabaabbabbabbabbabbabbababbabbabbababbabababbabbabababbbabbaabababababababababaaababaaababaabaabaaabaaaabaabaabababaaababaaaaaaaabaaaaacabaaaaaaaaaaaaaadaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababbbbabbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbabbbbbbbabbbabbbbbababbbbbbbbbbbb.ggg..g......bbbbbbbbbbbababbbbabbbabbbbabbbbbababbabbabbabbabbabbabbabbbababaabababbaabbabaabababababbabaaaaabaaabaabababaaabaabaaaaabaaaaaaaaaaaaaababbbababababbbabaabababababababbbabbbbabbbbbabbbabbabbbabbbabbabababababbababbabbabbabbabbababbbabababbbababababbbabababababababababbabaabbaabaababaababaababaabaabaaabaabaabaababababaaababaaaaaacaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".ababababababbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbababbabbbbbabbabbbbbbbbabbbbbbbbbbbbbbbbbb.gggg........bbbbbbbbabbbbbabbbabbbababbabababbbabbabbabbabbabbabbabbaabbabbbbabbaabbabababababaababaaabababaabaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabbbbabbbbbbbbbabbbabbabababababbbababbabbbababababbbabbabbbabababbbbabbbababbababbabbabbabbabbabaabbabbbaabbbabbabaabbabbababbabababababaabaaabaabaababaababaababaaababababaabaaaaaaaaaaaabaaaaaaacaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babababbabbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbbbbbbbbbbabbbbbbbbbbbabbabbbbbbbbabbbbbbbbbbbb.gg.gg.......bbbbbabbbbababbabbababbbabbabbbababbabbabbabbabbabaabbabbabbaababbabbaababababababbabaabaabababaabababababaababaaaaaaaaaaaaaaaaaaaaabbabbbababababbbabbabbababababababbbabbbabbbabbbbbabbabbaababbabbabababababbabbbaabbababababbabbbbbabababbababaabbbababbababaabababaabaabbabababbaabaababaaabaaaababaaaaaaabaaabababababaaaaaaabaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbabbabababbabbbbababbabbabbbbbbabbabbbbbabbbbbbbbbbb.ggg.g....b.bbbbbbbbbabbbbabbabbbabababbabababbabbabbabbabbababbbabbabbabbbabaababbabababababaabaabaabaaaaaabaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabbabbbabbbbbbbbbabbabbabbbababbbabbabbbbabbbabbabaabbabbabbabbabbababbbbabbbabababbbababbbabbabbabababbabbabababbbaabbabababbabbabababaabaabababaaabaabaaababaababaaaabababaababaaaaaaaaaabababaaaaaaaabaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbaabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbbbabbbbbbabbabbbbbbbbbbbbbabbbbbbbbabbbbbbbbbbbbbbebggg.g.g.....ebbbbbbabbababbabbabbabbbabbbbbbabbabbabbabababbbabababababaababbbabajljkkkkkjkjsbabaablhabababakqababaabahkkkkkpplsaaaaaaaaaaaaabbajkiikjiiibababbbabbimmmjibbababbabigabbbabbbabbbgijjkgbbabb.jkikkgbabababababgjommkifbabbabagjkkkjkkjhbababbbababbaabakkkjjifababababfkkkkkheabababaabbaabhtommhbabaabaaabaaepklkgababarpkpkpkklqaaaaaaaca#jooolgbaaaaaatkkkkkklkkksaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".ababbbabbbbbabbbbbbbbbbbbbbbbbbbbbbbababbbbbbbabbbbababbbbbbbabababbabbabbbabbbbbbbbbbbbbbbbbbbbbbbbggg.g.......bbbbbbbbbbbbabbabbabbabbbabaabababbabbabbababaabbabababababbabaababbpkkkkomkkkkhaaabaaokaaaaaaaokaaaaaaaauolkkkjkphaaaaaaaaaaaabbabookkkkkkkbbbbabbbiomiggkomgbbbabbbmkbabbbabbbabagkookgabbabgolkkloogbbababbbjokighlooebababbgolkkkkkkgbabbaababababbabookkkmombabababrolkkloosabaababaabfmoprfpmouabaababababpkloraaaaarolpkpkkpqabaaaaaaimmquunooraaaaakkkkkooppppgaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbabbbabbbbbbbbbbbbbbbbbbbbbbabbabbbbbabababbababbbbbabababbbbbbbbbbbbbbbbbbababbababbabbbbbbbbbebbgggg.g......bbbbbbabbabbabbbabbabbabbabbbbabbababababbbbbbbabbbabbbabbababbabaabababokabababababaolabababaolabaabaaauoeaaaaaaaaaaaaaaaaaababbaoibbbbbbbbbabbabgokbababbk.babbabaoibbababababbbabkmbbbbabago.bbbbmo.abbbaajohbabab.kbbababaro.babbbbabababbabbabababaojbabaiotbababago.ababmoeaabababaeom.abaabmo.abaabaaaaaaabohababaro#aaaaaaaaaaaabaqotaaaaablraaaaaaaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabbabbbbbbbbbbbbbbbbbbbbbbabbbabbbababbbbbbabbbbbababbbbbbabbabbabbabbabbabbbbbbbbbbbbbbbbbbbbbbbb.ggg......b..bbbbbbbbbbbbbbabbabbabbabbababbabbbbbabbabaababbaabbaabbabababababababampbabaaabaaaaopbaaaaaaokaaaaaaaauo#aaaaaaaaaaaaaaaaabbbbabokabababababbbbbmmbabbbabb.abbabbbojbabbbbbbbbbabbjmbababbbgobbaaafoibbaabbombababbabbabbbabho.abbaaababbababbababababopbababtobbaabagmebabahorbabaaaaakmuabaabaumjbaabaabababa.oraaaaaroeaabaabaaacaaaeotbaaaaaaabaaaaaaaaaaokaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbabbabbbbbbbbbbbbbbbbbabbabbbbabbbabbbbbabababbababbbbbabababbabbbbbabbbbbbbbbbbabbbbbabbbbbbbbbbbb..ggggg.......bbbbbbbababababbabbababbbababbababaabbababbbababababbbaababababababababmkabaabbaababopaabababmkabaababarobaaaaaaaaaaaaaaabbbababbmkbbbbbabbbbabaio.bbbabbababbabbabmkbbbabababaabbakoabababago.abbb.okaabbabmobbabaababbaabbago.baabbbabaababaababababaokababakoeabaabro#ababrogabaabbaeomaaaabaabtobabaabaaaaabcorababahobabaaaaabaaaaaqouaaaaaaaaaaadaaaaaaaopaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abbabbbbbbbbbbbbbabbabbbabbababbabababababbbbbbbbbbababbbbbbbbbbbababbbabbabbababbbabbbbbbbbbbbbbbbb.g...gg.g.......bbbbbbbbbbbbabbabbbbaabbbbabbbbabbabbabababbbabbbaabbababababababaabaokaabaaabaabaoleebecebmkaaaaaaaarou######baaaaaaaabbabbbbaokbbbbb.bbabbbbkobabbbabbbbbbbbbbaojabbbbbababbabbjobabbbabgm.babagoibbababimk.babbababbbabbgmf...ebebbbabbabababbababmkbababmobabbabuoeaabakobaabaaabfmqbabaabaaimfaabaababaaa.mgaaaaarorec####caaaaaammbaaaabaaaaaaaaaaaaaaopaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbbbbbbbbbbbbabbbbbbabbabbbbabbabbbabbbabababababbbbbabababababbbbbbbbabbbbbbbbbbbbabbabbbbbbbbbb.g..b..gg.........bbbbbbbababbbabbababbbababaababbabbabbbabbaabbaabbababababababababaaolabaabaabaaaoooomoommolaabaaaaafmomoooookaaaaaabbabbababbooommommmbbababombbbabbabababababbokbabababbbabbabkoabababago.aba.mmbbababablommmigbabaaabaagoooooooojbabababbabaababaokababimiabaabago.babiopabababaarogaaabaabaroubaabaabaababmhababarmooomomokaabadaooaaaaaaaaaaaaaaaaaaaaokaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbbbbbbbabbababbabababbabbababbabbbabababbbabbbbbbbababbbbbbbbbbbabbabbbbbbabbbbbabbbbbbbbbbbbbbb.g.bbbbb.gg.g.....b.bbbbbbbbbababbababbbabbabbbabbabbabbaabbaabbaabbabababababababaababojbaabaabaabaolvcbebebokaaaabaaarofbebebcbaaaaabbbbbbbbbbamk.b..b.bbbbabbmoababbabbbbbbbbbbaoibbbbabbbabbabbjmbbbbabbgolkjmoo.bababababfimmoooiabbbabbhmge.e...babbabababbabababookjkompbababaagmmmommhababaababgofbabaabaagmhaabaabaabaa#oraaaaarorbbebebbaaaaaaooaadaaaaadaaaaaaaaaaaokaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbabbbababbabbbbabbbabbabbababbabbabbbbabbabbbabababbbbbabababababbbabbabbabbbababbbbbbbbbbbbbbbb...bbbbbeb.gg........bbbbbbbbbbbbbabbbabababbababbababababbababbabbababababababaabababaaokabaabaaabaaokaaaaaaaokaaaaaaaarobaaaaaaaaaaabbabababababmkbababbababbbammbbbabbbabababababmkbababbabbbababioababbabfokkkjgbababbabbabababbhmogababaago.babababababababaabababaomkkkhebabababbroigrlobaabaabaaarosaababaabhorabaabaabaca#ogcabaahoeaaaaaaaadaaaaomaaaaaaaaaaaaaaaaaaaaokaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abbabbbbbbbbababbabababbabbbbabbabbababbabbababbbabababbbbbbbbbbbabbbbbbabbabbbbbbbababbbbbbbbbb...bbbbbbbbb.gg.........bbbbbabbabbbababbabbababbabbababababbababababababababababaabababaokaabaababaabmkababaaaokabaaaaaaroeaaaaaaaaabbbabbbbbbbbbaojbbababbabababio.abbabbbbbbbbbbbbmjbbbbbabaabbbabpobabababgo.bbababababbabbabababagokbababbgmeabababababababababababaokbabaaababaaaahmeabbtoeaabaabbaeolbaaaabaatobaabaabaababeouaaabaroeadaadaaaaaabaioraaaacaaaaaadaaaaaaaopaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babbababababbbbabbabbababbaabbaabbabababbabbabbabbbbbbbabababababbabababbbbbababbabbbbbbbbbbbbbbg.bbbbbbbbbbbbgg......b..bbbbbbbbbabbbbbabbabbbabababbbabbbababbabababababababababbaaabaaokbaabaaaabaaokaaaabaaokaaaaaaaaum#aaaaaaaabbabbbababababbojabbbbabbbbabb.ojbabbbaababaababaoibababbbbbababakoabababago.aababababaababbababab.okababbaro.babababababababababababokababbabaabbabgo#baabolbbabaaabamobbabaab.otbabababababa#mgabaaarm#aaaaaabaaaaaauokaaaaaaaabaaaaaaaaaaokaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbabbbbbabaabbabbabbababbbabbbabbbbbbabbabbabababababbbbbbbbbbbbbbbbbababbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbb.gg.......b.bbbbbbabbbababbabbaababbabaabbaababbabababababababababaaabbaabokaabababaaaaojbaaaaaaokaaabaaaauoeaaaaaaabbabbbabbbbbbbbaopbbababbabababamogbbbabbggabbbbbbokabbbbbabababbbkmbbabbabgobbbbabbababbablbbababajmgbbababgo.abababababababababababamjbabaabaabaabarm.aababokbaababaafotabaabalouabaaaaacacaagmwcacabro#aaadaaaaabaaaamoqbaaaaaruaaaaaaaaaaopaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbbabbaabaababbaabaababababaababababaababbabbabbbabbbbbbababababababababbbbbabababbabbbbbbbbbb..bbbbbbbbbbbbbbbb.gg.......b.bbbbbbbabbbbabbabbbbbabbabbababbababababababababaaabababaaabaokbaaaaaaababmkaabaaaaokaaaaaaaarmxurrrrhgbabbabbbababababmm..gggg.bbbbbabbmoj.b.gkmgbbababaomggg...gbbbbabglog.babbago.aabbaabbababaookg..fkokbaababagmihggghgfbabababababababaokababaabbabaabroebaabarohababaabaiooh#.hooqabaabbabajw#hombaaabauohghruuhraaaaaaabmmju##smouaaaaabaaaaokaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-"eaabbabbabbbababbbabbababbabbbababbbabbababbabbabababababbbbbbbbbbbbbbbbababbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbb.gg......b.bbbbbbbababbabbabaabbabbabbababbababababababababbaababababaaojabababaaaaaokaaaabaaokaaaaaaaauomooooookbbabbabbbbbabbbaomooommoobababbabbgoommolgbabbbabbmmommooojababbgoomojbbabbfo.bbabbbabababb.joomooogabbbababromomomoopababababababababmkbababaaababaahobabaabasoiaaabaabautoomotuababaacabaoooombacbaaagmomooomopaaaacaaaaqmmomokuaaaaaaaaaaaopaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbaababbaaababaababababababababbababbabbbbabbabbbbbabbbababababababababbbbabababbabbbbbbbbbb..bbbbbbbbbbbbbbbbbbbbb.gg......b.bbbbbbbbbabbabbabbbabababababaabababababababaaabababaaabaababaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaabbbababbabbabababbabbabababababbabbabbabab.bbbbabbabbababababbabbabababababaabababababaaabababaababbe.babbaaababababababababababababababababaababababababbaababababaabababababaabeebabaaaaabaacabeebcabaabacaaaaaaaaaaaabaaaaaaaabbeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbababbbababbabbabbababababbababbabbababbababababababbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbb...bbbbbbbbbbbabbbbbbbbbbb..g.......b.bbbbbabbbbbbabbababbabbabbabbabababababaababbabaaababaabaaaaababaaaaabaababaaaaaaaaaaaaaaaaaabababbbbabbabbbbbbabbababbabbabbabbabbababbbabaabbabbababbbbbbabbabbbababababbabababababbbbbabbabbabababababbbabbabababababababababababababababaabababaabaaababaaabaababababaaaabaabaaabababaabacabacabcacababababaabaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababaababababaabaababababababbababababbabbbabbbbbabbababababababababbbababbabbbbbbbbbb..bbbbbbbbababbbbabbbbbbbbbb.gg......b.bbbbbbbababbabbababbabababababababababababaababbaaaabaaababaaaaabaaaaaaaaaaaabaaaaaaaaaaabbbbbbbbababbabbabababbabbbabbabbabababbabbbababbbbabbabbbbbabababbabbabbbbabbbabbababababaabaabaabaabababababaababababababababababababababababababaabababaabababababaabaaaaaaababbabaababaaababcababacabaababaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".ababababbababababbabbbabababababababbabababbababababababbbbbbabbbbbbbbbabbbbbabbbbbbbbbbb..bbbbbbbabbbbbbbbbbbbbbbbbbbbb.g.......b.bbbbbbbbabbabbbbababbababababababababababaaaaababaababaaababaaaabaabaaaaaaaaaaaaaaaaabbababababbbbabbabbabbbabbabababbabbabababababbabababbabbaababbabbbabbabbaababaabaabbababbabbabbabbbabbabababababbabababababababababababababababababababaababababaaabaabababbabbaabaaaabaabababaaaabacabbcabcacacabaacabaadaacaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babababaababababaabaaabababababababbabbbbabababbbbabbbbabababbbababababbababbbbbbbbbbbbb..bbbbbbbbbbbbbababbbabbbbbbbbbbb.gg......b.bbbbbbbbbbbbabababababbabababababaabaabababbaabaabaaaabaaaaabaaaaaaaaaabaaaaaaaaaaabbabbbbbbbababbabbabbababbabbbbbaabaabbbbabbbababbbabbabbabbabbabbabbabbabbbabbbbabbababbaabaabaabaaabbabababababaabababababababababababababababababaababababababaabbaabababaabaaabababbaabaaabaababaabacaabcabaabaabaaaaaaaaaaacaaaabaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababaababababababbabbbabbabbbabbababababababbbbababbababbbabbbabbbabbbbabbbbabbbabbbbbb..bbbbbbbbabbbabbbbbabbbabbbbbbbbbbb.fg......b.bbbbbbbabababbbbbababababababababaabaaabaaabaabaaabaaaabaaaaabaaaabaaaaaaaaaababbbabbabababbabbabbabbababbabbabaabbbbbbaaabbaababbaabbabbabbabbabbabbabbababababaabababababbabbabbabbbbababababababbababababababababababababababababaababaababaabaabaababaaaaabaabbaaabaaabaaabaababaabcababcaacabacaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aababbababababababababababaaabaabababababbbababbabbabbbababbabbababbababbabbbbbbbbbbbb..bbbbbbbabbbabbbbbbbbbbbbbbbbbbbbbbbbb.gg......b.bbbbbbbbbbbaababababababababababbabbaabababaababaababaababaaababaabaabababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.b.bbbbb.bb.bb.bb.bbbbb......b....b.................................g....g....g..g.......gg.g..g...g...g...gg..g....g........g......g.g..g..g..g.g.g.g.g..g.g..g.g.gg.g.g.g.g.g.aaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".babaabababababababababababbbbbbbababbbabababababbabbababbbabbabbbbabbbbbbbabbbbbbbbbb..bbbbbbabbbbbbbbababbbabbbababbbbbbbbbbbb.gg.....b.bbbbbbbbabbbabbbabbabababababaaabaabaabaaabaaaabaaaabaaaabaaaaaaaabaaabbababbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.bbbbbbbb.bbb.bb.bb.bb.b...b.b.b...b................................................................................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbaabababababababababababaaaababaaabababbbbbabbabbabbabbabbababbbabababbbabbbbbbb.bbbbbbbbbbbbabbabbbbbabbbabbbbbabbbbbbbbbbbb..g....b.bbbbbbbbbbbbababbababababababababababaabaababaababaaabaaaaaaaaaaaaabbabbbbabababababababababababababababababababaababababababbabbabbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbabbabbabbababbabababababababbababbabbabababababababababababababababababababababababababaabaabaababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabaabbaabababababababababababbbbbabbbbbabbaababbabbabbabbabbabbbababbbbbbbbbbbbbbb..bbbbbbabbababbabbbababbbbbbbbbbbbabbbbbbbbbebb..g....b.bbbbbbbbbbbabbabababababababaaabaaaabaabaaaaaaaaaaaaaaaabaabaabbbbabababbbbabbabbbbabbbbbabbbabbbabbabbabbabababbabababababaababbababaabaabababababababababaabaaaababaaaaaaaaaaabaabaabababaabababababababaababaabaababababababababababaaababaaababaaabababaaabaaabaaaabaabaabaaaaabaaaaaaaaaabababaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbaabbababababababababababaaaababaabababababaababbabbabbabbababbbbababbbbbbbbbb..bbbbbbabbabbbbabbabbbbbababbababbbbbbbbbbbbbbbebb......bb.bbbbbbbbbbbbbabbabababaababbaababaabaaabababaababaaabaaababbababbbbbbbababbabbababbaababbabababababaabaababbabababababababbabaabbabbbabbabababababbbabababbabbbbababbbbbbbbbbbabbabbabababbabababababababaababaabaabaabaabaaabaaabaaabbaaaababaaababaaaaababaabaaababaabaabaababaaabababaabaaaaaaaaaaaaaaaabaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aabaabaabababababababababababbbbababbababbabbabbbbbababababbabbabababbbbbabbbbbbb.bbbbbbbbbbbbbabbbbbbabbabbbbbbbbbbabbbabbbbbbbbbbbbbbbe..g..bbbbbbbbbbbbbbbbbabababaabaabaababaabaaaaaaaaaaaabababbbbbabbababababbbbbabbabbababbbabababbabababbbbabbabababababababababababbabbaabbabababbabbababbabbababaaababaaaaaaaaaaabaaabaabababaababababaaabababaabababababaabaabbaabbaabbaaababaabababaaabababaaabaabaaaaabaaaaaaaaaabaaaaaaabaaaaaaaaabaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbabbabbabababababababababbabaababbaababaabbabbabaabbbabbbabbabbbbbbbababbbbbbbbb.bbbbbbabbababbabababbabbbbababbabbbbabbbbbbbbbbbbbbbbbbbbb......bbbbbbbbbbbbbbbbbbbbabababaaaabaaabababababbabbabbababbabbbbbbbbbababbabbabbbbbabbbbabbabbabbbaabbabbababababababababababbabaabababababbabbabbababbabababbbababbbbbbbbbbababbabbababaabaabaababbabaababbabababababababababaaabaababaababaaaaababababababaabaababaaaababababaaabababaaaabababaaaabaaabaaabaabaaabaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaabaabaabababababababababaababbababbababbababababbababababbabababababbbbbbbbbb..bbbbbbbbbabbbbabbbbbbabbbabbbbbabbbabbbbbabbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbabbbbbbbabbbbaabbababbbbbbabbabbabbbbabbbabababababbabbabababababaabbabbabbaabbababaabbabbababababababababbabbbababbababbaababbababbbbbababbabaaaaaaaaabaababaabaababbabaabaabaabababaababaabaababaabaabaabbaababaababaabbabababaaaaabaabaabaaaababaaaaaaaaabaaaaaaacaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbababababababababababababbabaabababbababbabbabbabbabbbabbabbbbabbbbbbbbbbbbbbbbbbbbababbbbababbabababbabbbababbbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbb..bbbbbbbbbbbbbbbbababbbababbbabbbbabababbabbabbababbabbbbbbbbbbbabbabbbabbbabbbbaababababbabbababbaabaababababababababaabababbabababaabbababbababaabbabaababbbbbbbbabababababababaababbabbabbabababaababababaaabaabaabaaabaabababaabaaabaaabababbaabaabaaababaaaababababaaabaabaaaabaaaaaaacaaaaaaabaadaadaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aabababababaabababababababababbbabababbababbabbabbabbaabbabbababbababbabbbbbbb.bbbbbbbbbababbbbbbbbbbbbbbabbbbbbabbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbababbbbbbabbbbbbbbbbbbbabababababbbabbabbbababaababbbabbababaababbabbbabbababababababababbabababbababbbbabbababbababbabbabbabaaaaaaabababaababababababaabaabaaababababaababababbabbaababbababaabababaabbaabbaaabaaabaabaababaaababaaaaaaaabaaabaabaaaaacadaaaaaabaadaaaaaaaaadaaadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababababbababababababababaaabababaababaababababbabbbabbabababbbbabbbbbbb.bbbbbbbbabbbbbabababababababbabababbababbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbababbbbbbababbbbabbababababbbbbbabbbababbabbabbabbbbabbabbaabbabbabababaaababababababababababababbababbbabaabaabbabababbabaabbababbbbbbbabababbabababababababababbbababababbabababaabaabbababababababaababababaaabbabababaabaaaaabaaaababababaaabaaaaaabadaaaaadabaaaaaaaaabaabaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abaababababaabababababababababbbabababbababbabbabababababbabbbbbbbabbbbbbbbbbbbbbbbabbbababbabbbbbbbbbbbbbbbbbbbabbbbbbbabbbbbbbbbbbbbbbbbabbabbbbbbbbbbbbbbbbbbbbbbbbbbababbbabbbbbabababbbbababbabbbbbbbbababababababbabbabbabbababbaababbbabbababababbbababababbabababababababababbaababbabbbabbabbbababbbababbaaaaaaababababababababababababaaabababaabababaaabababaaabaababaabaaabababaababbaaaababaababababaababaaaaaaaabaaabacaaaaaaabaaaaaaacaaaadaaaaaaabaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababababbababababababababaabababababababababababababaabaabababbbbbbbbbbbbbbbbabbbabbabbabbabababababababababbbabbabbbbbbbbbbbbbbbabbabbbbbbabbabbbbbbbbbbbbbbabbabbbbbbbabbbabbabbbbbbababbbbabbababababbbabbbbbbbbabbababababababbbabababaabbabbabaababababababababababababababaabbababbababababaabbabababbababbbbbbababababababababababababbaabababbabababbbabababbbabaababababbababababaaabbabaaabaaaabaaaabaaaababababaabaaaaabaabaaaacaaabaaaabaaaaadaadaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aabababababaabababababababababbababababababababababbbababbabbbbbbbabbbbbbbbbbbbbbbabbbabbabbbabbbabbbabbbbbabbbabbbabbbabbabbbbbbbbbbbbbbbbabbbbbbbbabbabbababbabbbbbbabbbbbbbabbabbbababbbbbbabbbbbbbbbbbbabbbababababbabbbbabbbabbbaabbabababbabaababbabababababaababababababababbbababbbabababababbbabbababababbabaaabababaabababababababababaabababaaabababaaabababaaababaabababaabaaabababbaaabababababaababaaabaaaaaaaaaaaaaabaaaaaaacaaaabaaaaaaaaaadaaaaaadaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbabababaababababababababababababababababababababbaababbabbabaababbbbbbbbbbbbbbbabbbabbabbababbabbbabbbababbbabbbabbbabbbbbbbbbbbbbbbbabbabbbabababbbabbbbbbbbbbbbbabbbbabababbbbbabbbbbabababbbababababababbabbabbbabbabbababababbabbababababaababbabaababababababbabababababababaabababaabababababaaabababbababaababbbabababbabababababababababbabababbababaabababaaababababbabababbabbbababaababaaabaaababaaaababaababababaababaabaacabaaabaaaaaabaaaaaaaaaabaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaabaabababababababababababababababababababababbabbabbabbabbbbbbbbbbbbbbbbbbbbabbbabbabbabbbbabababbbabbbbbabbbabbbabbbbabbbbbbbbbbabbbabbbabbbbbbabbbbababbbabbabbbababbbbbbababbbababbbbbbababbbabbbabbbbabbabbbabbabbababbbabbabaabbbabababbababababbabababababaababababababababbabbabbabababbbabbbbabababababbbabaaababababababababababababaabababaababaabababaabababaabaabaaabaabaaaaabaababababababaaaababaaaabaaaaaaaabaaaaaaaaaaaaaaaaaacaaaabaadaaadaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbaabbababababababababababababababababababababaabababababbababbbbbbbbbbbbbbbabbbabbabbbabbababbbbbababbababbbabbbabbbabbbbbbabbbbabbbabbbabbbabababbababbbbabbbabbabbbbbabbabbbbbabbbbbabababbbbabbbabbababbabbababbabababbaababababbaaababbabababababaababababababbabababababababaabaabababbabaaabaababababababaabbabbbababababababababababababbababababaabbabababbabababbabbabbbabababbbaababaababaaaaababaaaaababaabababaaaabaacaabaacabaacaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aabbaabaababababababababababababababababababababbabababababbbbbabbbbbbbbbbbabbabbbabbabababbabbababbababbbbabababbbabbbbabbbbbbbbbbbbbbabbbabbbbbbbbbbbbbabbbabbbbbbababbbabbababbbababbbbbbbababbabbbabbbbabbabbababbbbababbbababababbbbabababababababbbabababababaababababababababbabbababababbbbabababababababbaabaabababababababababababababaabababababaaabababaabababaabaabaaabababaaababaabaaaababababababaaaaaaaaaaaababaaaaaaaacaaaaaaaabaabaaaaaaabaabaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abaabbabbabaaababababababababababababababababbababababbbabbababbbbbbbbbbbbbbabbbabbabbabbbabbbabbbabbbbbababbbbbbabbababbbbbbbbabbbababbbabbbababababababbbabbabababbbbbabbabbbbbabbbbbabababbbbabbababbababbabbabbbabaabbbabababbabbabaabababababababaaababababababbabababababababaabaababababaababababababababaabbabbababababababababababaababababababababbbabababbabaabababababbabababababaabaababaabaaaaaaaababababababaaaaaabababaaaaaaadaaaaaacaadabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".baabaabaaababbababababaababababababababababababababbabaabbabbbbbbbbbbbbbbabbbbbabbabbabbbabababababababababbabababbbbbbbbabbbbbbbabbbbbbabababbbbbabbbbbababbabbbbbbbabababbababababababbbabbababbababbababbabbababababbbaabababbabbababbabababababababbbabababababaaabaabababaabababbabbababababbababababababababbaabababbabababababababababababababaabababaabababaaababababababaababaababaababababaabaababababaaaaaaaaaaaabaacaaaaaaaaababaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabaabbaabaabababababbabababababababababababababaabbabbabbabbbbbbbbbbbbbbabaabbababbababbbabbbbbbbbbabbbbabbabbbababbabbbbbbbbbbbabababbbbbbababbbababbbbbabbabababbbbbbbbbbbabbbbbbbababbabbbabbbbbabbbbabbabbbababababbababababababababababababababaababababababbabababababbababaabaababababaababababababababaabbababaababababababababababababababbabababababababbababababababbaaabaababaabaabaabaabaabaaaaaabababababaaaabaaacaacabaaaaababaaaaaaaaaaaaaaadadaaaadaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aaababaaabababaabaababaababababababababababababababbabbabbbbbbbbbbbbbbababbbbbbababbabbababbbabababababababbabbababbbabbbbbbabbabbbbbbbbbababbbbbabbbbbababbbbabbbabbabababababbababababbbabbabababababbabababbaabbbbabbababbbabababababababababababababababaabababaababaabaabaababababbababababbbababababababababaabababbabbababababababababababababaabababababababaababababababaabbababaaabaabaabaabaabaabababaaaaaaaaaaabaaaabaaaaaaaacaaaaaaaabaabaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bbabababbabaabababbababbabababababababababababababaababbababbbbbbbbbbbbbbbabababbbbabbabbbababbbabbbabbbbbabbabbbbbabbabbabbbbbbbbababababbbabababbababbbbababbbabbbababbbabbbabbbbbabbababbabbbbbabbbbababbbbabbabaabbababbaababababababababababababababababbabababbababbabbaababababaababababaaabababababababababbababaabaabababababababababababababbabababababababbabababababaabaabababababababaababaabaaaabaabababababaaabaaaaaabaabaaadaaacaaaaaaababaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aabababaaababababaababaababaabababababababababababbbabbabbbbbbbbbbbbabbababababbaabababababbbababababbbabababbabababbbbbbbbbbbbbabbbbbbbbababbbabbababbababbbababbbabbbabababababababbababbabbbababbababbbbaaabbababbbabbababbababbabbabababababababababababaabaabaaabaaaabaaabababaababbababababbababababababababaaababababbababababababababababababaabababababababaabababababaabaababaaabababaaaabaaaabababaaabaaaaaaaaaacaaacababaaaaaaaaabaaaaacaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abaaababbaababababaababbababbababababababababababaabbabbbbbbbbbbbbbbbbabbbbbabaabbababbbabababbbbbabbabbabbbabbabbbbabbbabbbababbbababababbbababbabbbbabbbababbbbabbababbbbbbbbbabbbabbbbbabbaabbbabbabababbbbababbaabababababbabaabaababababababababababaaabbabaabbaabbababbabaababbaabababababaabababababababababbbabababaabababababababababababababbabababababababbabababaababababaabbaabaaabbabaababaaaaaabaaababaabaaaaaaaaaaaaaabaabaaaaaabaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aabbaabaababaababababaaababaabababababababababababbabbabababbbbbbbababbabaabbabbabbbbababbbabababababbabbabbbabbababbabbbbabbbbbabbabbbabababbbabbababbababbbababbabbabababababbbababababababbbabababbbbabaababbbabbbababababababbbabbababababababababaababbaababaaabaaabaaaababaabaabaaababababbabaabababababababaaababababababababababababababababaabababababababaabaabaaabaababababaaabaababaababaababababaabaaaaabaababababaaacaaaaaaacaaabaaaaaaaaaaaadaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abababaabababbaababababbaababababababababababababbababbbbbbbbbbbabbbbabbabbabbabbababbababababbbabbbabababbabbabbbbabbabbbbbbbbbbabbbabbbbbbbabbbabbbabbabbabbabbababbbbabbbabaabbabbbabbbbbababbbbababababbabaaabaabababbabababaababababababababababaababaaabaababbabbabababaababaababababababaababbababababababababababababababababababababababababbabababababababbabababbabbabaaabaababababaabaaaabaaaaaaabaaababaaaaaaaaaaaabaaacadabaaadaaaaaabaaaaabaaaaaaaadaaadaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abaaababababaaabaaababaabbabababaabababababababababbbbbabbbbbbbbbbababbababababbabbababbbabbbababbababbbababbabbababbbbbabbbabababbbabababababababababbabbabbabbabbbbababababbbbbabbbabbaabababbababbbababbababbbabbabbabababababbabababababababababaabaababbaababaabaabaababababaabababababababababababababababababababababababababababababababababaabababababababaabababaabaabaabbaabababaaaabababbaaabababaaabaaaababaabaacaaaabaaaaaaaaaaaaaabaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aabbabaabaaabbababbababaaababababbabababababababababababbbbbbbbababbbaabbabbababababbababbaabbabbabbbababbababbabbbbabbbbbabbbbbbbabbbbabbbabbbabbbabbabbabbabbabababbabbbabbababbababbabbbabbbababbaabbbbabbbabababbaabababbababababababababababababbabbaabababaabaabaabbababaababababababaaababababababababababababababababababababababababababababbabababababababaababababababaaababaaaababaaaabaaabaaaaaaabaaabaaaaaabaaaaabaaaaabaaababaadaaaaaaaaacaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".baaababaabbaaababaabaabbababababaababababababababbbbbbbbbbbbbabbbbababbabbabbababababbababbbabbabbaabbababbbbabbababbbabbbbbbabababababbababbabbabbbabbabbabbabbbbababbabbbabbababbababbababaabbbbabbbabaabaabbabbababbabababababababababababababaabaabaabaaabaabaabaabaaabaaabaababababaaabbaabababababababababababababababababababababababababababaababababababaabbaabababaaababbaabababaabababaabaaabababaaabaaabaacaaaabaaaaacabaaabaaaaaaaacaaadaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababbaabababaababbaababababaababababaabababbaabababbbbbabbbabababbabaabaabbabbabaababbababababbababbbababababbbbabbbabbabbbbbbbbababbabbababbababbabbabbabbababbbabbababbabbbabbbbabbabbbbabaabbaababbabbaabababababababababababababababababaababababababababababbababaababababaaababababababaaabaababaabaabaabaabaabaabaabababababababababababaababababaaabaabaaababaaaabbabaaabaabababaaababaaabaabaaaabaabaaabaaabaaaababaaaaaaaaacaaabaaaadaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababaabaaabababaababaaababaaabaabababaababbabababbbbbbbbbbbbbbabababbababbbabbabbababbababababbabbabbbababbabbbbbababbbbbbbbbababababbbbabbabbbbababbabbabbabbababbbabbababbabbababababbabbabababbbabbbababbabbabbabbababababababababababaababababbaabaaababaaabaabaaababaababababaabbabababababaabbaababaabaabaabaabaabaabaabababababaaababababaabababaaabaabbaabaabbabaabbbaabaabbaabaaabababaaababaabaababacaaabaaaabaaacaaaaabaadacaaaadaaabaaaacaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aababaabababaaabbabababababbabababababbabaababbbababbbbbbabababbabbaababaaabaabaabababbababababbabababbababbabababbbbababbababbabbabbababbabbabababbabbabbabbababbabababbbbababbabbabababababbabababaabbabaababababaabababababababababababaabaaabaabaabbaababbaabaababaaabbabaaababaaaaababaaabababababaabbabbabbabbababababbabababababbbabaaababaabababbaabbaabbababaababaaabaabaaabababaaaabaabaaaaabaaaaaaaaabaaababaabaaaacaaaaaaaaadaaaaaaaaaaaaaaaaabaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".baababababaabbaaabaababaabaabababababaabababbaabbbbbbbbbbbbbababbabbababbbbabbabbbabbabbbabbabababbbaabbbababababbabbbbbbbbbbabbabbababbabbabbabbbabbabbabababbbabbabbbababbbbabbabbbbabbabbabbbababbbababbbababababbabababababababababababaabbabbaabbaabaaaaabaabaababbaaabababababbabaaaabbaabababababaaabaabaabaababababaababababaaaaababbaabababaabaabaaabaabaababaababababaabbaabaaababaabaabababaababababaaabaaaaaaaabaaaabaabaabaaabaacaaabaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabababaabaababaabaabababbaababaababbababaabbbababbbbbababbabaabaababaaaabababaabaabaabababababbaabbaabbabbbbbabbbababbababbabbaababbababbaabbaabbabbabbbabbabbabbabababaabababbababababaabababbabaababaababbababaabababababababababaaababbaabaaabaaabababbabababbaaaababaaabaaabaababbabaaababaaaaabababaababaabaababababbaabaabaabbababababababaabaababababaabbaababaabaabaabaabaababababaabaaaaaabaaaaaaaaabaaaaabaabaaaabaaaaacaaaaaabaaadaaabaaaadaaabaaaadaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbaaaabaababababababbabababaaabaababaaaabababbbbabbbbbbbababbababbabbababbbbabababbabbabbababbbabbabbbabbbabbaababbbabbbbabbbbabbabbbbababbbabbbabbbabbabbaababababbabababbbbababbabababbabbbbababababbabbabbababababbababababababababaabbabaaabaabbaabbaaabaabababaaabababaabbaabbaababaabaabbaaababbbaaabaababaabaabaabaabaaabaabaabaababaaabababaabbabababaababaaabaababaabaabaabaababaaaaaabaabbabaaababababaaaababaaaaaabaaaaabaaaabacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababbabaababababaaaababaababbabbababbbababbababbbbbbbabbbbaababaabaababaaabababababababababaabbabababbaabababbabbabbbababbababbabbababbbababbabbababaabaabbbbabbbabbabbabaabbbbabbabababbabababbabababababaababababababbabababababababbaababababaaabaaabbaabaaaabaabbabaaabaaabaaabaabaababaaabbaabaaabababaababaababababbaabbabbabbababaabbaabaaababaabaababaababababaabababababaabaabaabababaabaaaacabaaaaaaaabaaaaaacaacaaabacaaaaabaaaaabaabaaaaacaaaaaaaaacaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aabaababaabaaababbbaababaabaabaababaababababbbabbbbabbababbababbabbababbbabababababababbababbababbababbabbababbabbabbbbbbbbababbabbabababababbabbababbabbababbaabbabbabbabbababbababbbaabbabababbababbababbbabababababaabababababababaababaabababbaabbaaabaabbbaabaaaaabababababababaabaabababaabaabababaaabaaababababaaaabaaabaabaabababaaabaabbabaabaabaababaababababaababaaababaabaabaabaaabaaabaaaaabababaaaababaaaabaaabaaaaaabaaaaaabaaaaaacaaaaabaabaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbbaabababababbabaaaabaaabbaabaabaabababababbabbbbbbbbabbabababaabaababaaabababababababaababbababababababababbabbabbabababaabbbbabaabbabbabbbabababbbabbbabbababbabababbabbababaababababbbabababababbaababaaababababababbabababababaabababababaabaaabaaabababaaaabaababbabaaababababaabaabaaabaabaababaaabababababaaaaaababababaabaabaaababababbaabaababababababbaaabaababaaaabbaabababaabaaabaaabaaababaaaaaababaaaababaaaaaaaaaabaaacaabaaaaacaaadaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aababaabababaabaababbabbaaabaabbabababababbababbbbababbaababababababababbbabababababababbabababababababababbabbabbabbbbbbbbbaaabbbbbabbabbaabbbabababbaabbababababababaababababbababbabaababbababababbbababbbabababababaababaababaabababaaabaabaabbaabbababababbaabaaaaaababaaaaaaaabaabaabbaabababaabababaaabaaaabbabbabaaabaabaabaabbabababaaabaabaaababaaabaaabbaabaabababaaababaaaabababacabaaababaaababaaaaaabaaaaaababacabaaabaaaaaaaadaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abababaabaababababaaabaabababaaababababababbbbbbabbabaabbabababababababaaabababababababaababababababababbabababbbabbababaababbbaaabababbabababababababababbabbbababababbababababbbbabbabbabaabbabababaababaaababababababbababbababababaabbaabababaabaaabaaabaaaabababbabaaaabababbababababaabaabaaaabaaabababaababaabaaaabababaabababaaaabaaabababababbaaabbaababaabaabaababaabaaaababaaaaaaaaaaabaaaaabaaaaababacaaabaabaaaaaaaaaaaabadaacaaaaabaaaaaadaacaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aabababaabaabaabaabbaababababbabababababbbabbbbababbabbababababababababbbabababababababbbabababababbabbabbabbbaabbabbababbabababbbabababbabbbabbbbababbbaabbaabbabbbababbabbbabaaabaababababbababababbababbbbabababababaababaabaabaababaaabaabababaabbaabbaababaabaaaabababaaabaaabaaabaaabaabaabbabababaaababaababaababaabaaabaababababaabbaabaaababaabbaaabaababaabaabaaaabaababaababababababacababaaabacaaaaaaaabaaaaaaacaabacabaaaaaaaaaadaaaabaaaaaaaaaabaaaaaaadaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".babaababbabbaababbaababaabaaaababababababababbbbbbaabbababababababababaaabababababababaaabababababaabaabaabababbabbbabbbbababababababbababaabababababababababababbababbabbabababbbabbabbababababababaababaaaabababababababababaababbaaabbababaaabaabaaabaaabababaababaabaaababaabaababaababababaaabaabaababaaabaaaabaabaabaabababaaaaabaabaaabaabbaaaabaaabababaaabababaabbaababaabaaaaaaaacaaaaaaaaaacaaaaabaababaaabacabaaaaaaaaaacaaabaabaaacaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abaababaabaaababaaababaabaababababababbbabbbbbabababbababaabaabaababababbabababababababbbabababababbabbbabbbabbababababaabbbababababbabababbababababbababbababbabababbaababababbaabababaabababababababbababbbabababababababaababaabaabbaababaabbaabaabbaabbaaaaaabaaaabaaababaabaababaabaaabaaababaabaabaaababaababaabaabababaabaababbaabababaabaaababababbaabaabbaaabaabaaababaababababbabaabababababaaababaabaaaacaaaaaaaaabaaabaaaacaaaaaaaaaaaaaaaabaabaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aabaababaabbbabababababbabbabababababababbbbababbabaabaabababaabbabababaabababababababaabababbababababaabababbabbbbbbbabbaabbbabbabababbababbababbababbabababaabababababababbababbabababbababababababaababaaabababababaabaabaababaababaabaaabaaabababaabaaaabbabaababaaabaaaaabaabaaabaababaabaabaabaabababaaabaaaabaabaabaaabaaababaababaababaabababaaabaabaabaaababaabababaaaabaaaaabaaaaabaaaaaaacaabaaaaabaabaaaababaababaabaaabaaaadabaacaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".baabaababaaaabaababaabaabaabaabaabababbbbabbbabababbaabbabababaaabaababababababababababababaababbabababbabababbabaaabababbababababababababbababbabbababbabbbabbababababbabaababaabababababababababababbababbabaababaaabbababbabaabaababaabbaabbaabababaababaaaaabaaaababababababaabababaababaabaabaabaaaabababababaabaabaababababaaabaaaabaababaabaaabbaabaabaababababaaaabababaaababaacabaaabababaaabaababaaaaaabaaaaaaaaaaaaaaacaaabaaaaaaaaabaaacaacaaaadaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababababababababbaabaabaababababbababbbaabababaabbaababababbababababababababababababababbabaabababaabbababababbbbbabbabababbababbababababbaabaababaabaaabbabbabbbabababbababbababababababababababaababaababbababbbaaabaabaababababaabaaabaaababaaabaabaababbababaabaaaaabaaabaaaaaaabaaaababaabaababaaaaaaaababaabaabaabaaabaabaababaabaaababaabaaabaabaababaaaaaababaaaaaababaaabaaaaabaaaacaabaabaaaabacabaabababaabaadaabaaaaaabaaaabaaaaaaaaaaaaacaaaaaabaaabaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbababaaababababababaabababaabbababababbbbbabbbabababaaababaababaababaababababababaabababababaababbabababbaabbbabbbabaabbaababababbababbababababbabbababbabbbbabababaabbababababababababababababababababbabababaababaaaabababaababaabaaabaabbaabbaaaabbaabaababaaaaaaabaaababaaabaabbababaababaaaabaababaababababaaaabaabaabaaabaabaababaabababaaaabababaabaabaaaababababaababacabaabaabababaababaabaaaaaabaaaaaaaaaaaaaacaaaaaaaaabacaaaadaaaabaadaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaababbaabaaabaabaabaabababbaababbbbababababaabababababaaabaababbaababaabaababababbabababababbabaabababaabbaabbabababbaabbabababaababaabababababababbababaaaababababbaababababababababababababababababaabababababababbabaabababaabaabbababaabaaabbabaaababaaaaabababaaabaabaabaabaaaaaaabaaaababaaabaaaabaaabaaababaabaabaababaabaabaaabaaaaababbaaaaaaabaabaababaaabaaabaaaabaaaabaabaaaaacaaaaabaabababaacabababacabaaaababacaaaaaaaacaaacaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abaabaabaabbaabaabaabaababaababbaababbbbababbababaabababbabbaabaabaababaabaabababaabababababababbabababbababbababbababbbababababbababbabbabbabababaabababbbbabababaabbabbabababababababababababababababaababababaaabaababaabababaabaaabababaabbaaabaabaaaababaaaaaaabababaabaabaabababbaababaabababababaabaaabaaababaabaabaababaabaabaaabababaaaabababababaabaabababaabaababaababaabaaababaababaaabaaaaaaaaaaaaaaaaaaaabaaaaaaaabaadaaaaabaaadaaaabaadaaaaabaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababaababbabababagbbabbagbababaabggbbabababaababaabababaabaagbaababagbabbabbabaaabiabgggbabaiabaaiababaabaigababbababaaababababaababaabaabaababababbababaaababbababbaabaabababababababababababababababababagabagbibabaababagbaabababgbaaabaabaaabaaabaabbaabababbabaaaaaabaabaabaaaabaaabaaabaaiaaaaaaaabaabaabiaaaabaabaabaaaaabaabaabaabaaababaabaabagaabaabaaaaiaaiabaaaaaiaaabaabacaaabaaaaabaababababababaibaabacaaaaacaabaabaaibabaaaaaaaacaaaaaaaaiaaaaabaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbabaababaaaabaabaiaabaaaiabababbgbbgbbbababababaabaaabaabaabbaabababiabaabagababbagbagbagabaigbaiiabababbiabiabbabababbbababababbababbbgigbbaiggbabgggbabiigbbaabababbgiiabaigiabaigiababgababaabababababaigbaaiagabaababaabaabababaiabababiaabbaabbaabaaabaaaaaaaaaababaaabaabaababaaabaaabaaaiababababaabaabagbabaaabaababababaabaabaabaaababaabaabaaiabaabababaiabiaaababaiabaaabaaaaabaaababaacaaaaaaaaaaaaiaabaaaaiabaaaaaaaaaaiaaaaaidaabaaaaaaabaaiaaaaaaaaaacaaaaaabaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaabbabaabbababaibabggbbaiababagbabbgaabgigbaigiiabibaibaiiagbaiggiagigiaaiiiabaabgabgabgbabgiabggbababagababgbabgigbaagiaigigbaababaagbabgaibabgbgabagbgabagabbababagabaiaibabgaiabaiabggbababbababaabaabgbgabgbgbabaabggbgabaigggaiigiabgggbagiiaabaaiiaaiiibabiiibaigiabaiiaiaaiaabigiabaiiiiaaaaaabaabaabaaiaigiabaiaaiaaiggabaabaaigibaaigiiaabgiiiaabagigaabgaagabaaaabgaaiiiaabibaiaiihaaabaabaiiabiiiabgaigiaaiiiaaiiiaabiiigaaaciggaigaiiiaaahiiiaaiiiaaiiiaiiaaiigaaiiaiaaiaaiiiaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abaaababaaabababgabgabgabgbababgbbabbbbgabagbgabaiagabgabgabgaiabaibgabaibaiababaaiaaigggabagiaaigabababgbabababgbabgbbgbbgabagbbababbaabaibgabagaibabgaibabgbababaabbabaibgabaibgbabgbaaiababaabababaabagaaibaiaiaaabaaiaaibaiabaibgabaiaaiaaiaabaaabaiabgaaagagaaaaiaaaiaaiaaiabgaagaaaiaiaaaiababaaabaabaabaiaaaaiaaiabgabaabgabaabaabagbaiaaaiagaaaibaabaaaiaaiabiaababaaibaaaaiaagaaiaaabiaaaabacgabgaaaiaiaaaaiaaiaaiaaaiagaaaiabaaaiaaiaaaaaiaiaaaiaiaaaiaiaaiaaiaaaaiaiaaiaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bababaaababaaabagbagbaabaiababbiabbagaagbabiagbabiabiagbagbagbgbabgagbabgabgbaababgbbgbabiabgbigbgbababaiababgbbgabaiaagaagbabgbaabababiggbagbabgbgabagbgabaiabababbaaiggbagbabgaiabaiabbgbaaababaababbabiiigaagbgbbababgbbgabgbabgaiaabgabiabaiiaabaaaiaaiiiigbaiibaiiiigbaiabaiagbaiiiiiaiabagbaaaabaabaabaaaiabiiiabaiaiaaaigiaabaabagiiaaiabaiaiabagabaaaiigbaiaagbaaaabaiaabiiiabaiaiabiggbaiiaaaiaagiiiiagbaiigbaiaaiiiiiaiaaaiaaaaaiaagbaaiiiaiaaaiagiiiiaiaaiaaiaaigiaiaaigiaaagiaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababaabbabaabbaaiaaiabiabgbabbabgbagbabiabagbiabagbaggbaaiaaiagabagbiabagbaiaababaiaaiabagbagagiaiaabababiabgbaagbabgbbgbbiabagaabbabagbababiabaiagbabiagbabgbaababaaibabaaiabagbiabagbaaiaabbabaababaabagbaiabiaiaababaiaagbaiaaagbiabagbagbaabagbaabagbaiaaaaaaaagaiaaaaaaiaaaiiaaaiaaaaagbaaiaababaabaabagbaiagaaiaaagiaabiaaiabaabaiaagabgbaagbgbaagbaabiaaiaagbaiaaabiaagbaiaagbaaigbagaaiabaaabaiaaiaaaaaiaiaaiaaiaaiaaaaaiabaiaaabaiaaiaaiaaiaiaaaiaiaaaaaiaaiaaiaiaaiagaagaiaaaaaiaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaabaaababaaabaibabggabaiabaabbagibababggiaagiggbabgbabbgbbgbaigigagbaaiabaibababgbaiggiaabgbgbaibabababaigbabbbgggaaaiaagggibbbgababggggiabgggbabgggabagigaabiababbggigibaigiaaaigibabaibbaaiabbaaabaaiaabaiagbgbaabaaibaiabaiiiiagbaaiaabgaigiaabaabgabaiiiiaiiiabaiiiiabgabaiababaiiiibagiiiabgaaabaabaaaigabaiigabaiabaaaiigaaabaaaiiiaaiaabiaagiiiaabaaiiiabgabgabaaaiiaaaaiiiaabgaaabgigaaabaaaiabaiiiiaiaaiigaaaiaaiiiiaaigiiabaaaaiaiaaaiigaaiiigaaiigiaiaaiaaiaaiigaiaaiaaiaiigaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abbaabbaaaabbaabagbababaiabbbbabbbababaababbaiabaabaiaaaabaaabababgbaababaabaabaaaaabababbaabaaabaabaababbababaabababbbabbgbabaaabababababababbabaababbababbbaaiabaaababaabbababbbabaaabaaaababaaabbaababbaababaaaabaabaaababababaiaaabababaabaaabaabaaaaabaaaabaaabaaaaaaaabaaaaaaaaaaaaaabaaaaaaabaaabaaabaabaabaabaabaaababaababaaabaaabaaabaaabaaaaabaabaaaabaaaabaababaababaaaabaababaaaababaababaaaaaaaaaabaaaabaaabaaaaabaaaaaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".baaabaababbaababaiabababgbaababaaabababbabaabiababaiabbabababaigigaababababaabababbbababaabbaababababbabaabababbababaaabaagbababbababababababaababbabaababaaabbbababbababbaababaaabaabbabbababababaaababaababababbabababababaagggiabababaaaababababaaababaaababaabaababababaabababababababaaabababaaabaaabaabaabaabaabaaabaaaabaaaaabaaabaaabaaabaaababaabaababaababaabaaaaabaaababaabaaaababaaaabaaaaababaababaaaabaaabaaaabaaaaabaaaacaaaabaaaaaabaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aabbaababaaababababababababbabbabbababaabaabaababababaaabaabaabababbababaababaaabaaaaabaabaaababababaaababbababaabababababbababaabababaabababababaaabababababaaababaababaaababaabbaabaabaababaaabaabbabaababaaabaabababababaababaababaaaababaaaaaaaaabaaaaabaaaabaabaaaaaaaabaaaaaaaaaaaaaaabaaaaaaabaaabaabaabaaaaabaaabaababaaababababaaabababababaaaabaabaaabaaaaababababaaababaacaababaaaaabaaababaaaaabaaaaaabaabaaaabaaababaaaabaaaacaaaaabaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abaabaabababaaabababababababbaabaabababaababababaaabababababababaaaabaaabaababbaababbaabababababaababababaabababbababababaaaabababaababbabababababbbabababababbaababbaababbaaabbaabbabaabaababababaaababaababababaabaaabaaabaababaaaababaaaabababababaababaababaaabaababababaabababababababaaabababaaabaaabaabaababaaabaaabaaaabaaaaaaaababaaaaaaaaababaaabaabaaababaaaaaaaababaaaabaabaaaababaaabaaaaababaaabababaaaaacaaaaaaaaaacaaaabaaaaabaaaaaaaabaaaaaabaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aabaabaabababbaababababababaababababaaababaabaaabbaababaabaabaaabbbaabbabbaabaababaaabaabababaaabaababababababaaababaabaababaabababbabaabaaababaaaaababaaababaababaaabaabaabbaaabaaababaabaaabaababbaababaababaaabaabbaabababaaaabbabaaabbaaaaabaaaaabaaaabaaaabaaaaaaaaaaaaaaaaaaabaaaaaaabaaaaaaabaaabaaabaabaaaabaaabaaababaababababaaaabababababaaababaaaabaaaaababababaacababaabaaabaaaaabaaacabaaaaacaaaaaaaaacaaaabababaacaaabaaaabaaaaaaaacabaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababababaaabaaababababababbbabaiabaabibabaabaabbababaababaabaabbaaaabaabaaabababaabbabababaaabbabababaiababababbbabaababbaaabbaiabaabaababbabaabbbabaaabbabaabbababababababagbabababababababbaababaabaababiaaabbababaaababaaaabgbaabaabaaabbabaaababaaabaiababaababababababababaibaaabaiiiaaabababaaabaaabaaaiaabaiaaiaaabaaaabaaaaaaaababaaaaaabaaaabaaaababaaababaaaaaaaabaaaaaaaiaabaababacaabaaaaabaiaaabaabaabaabaaiaaaaaaaaaaaaadaaiacaidadaaaagiiaacaaaaaaaaaaaaabaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"bbaaabaaababaabbaaababababbaababgbaabagabaabbabaaaaababaababbabaababbaabababbaabaabaabaiabaabbaabaababagbabababaaaabababaaaabaaaiababaababaabaabaaaababbaabaabaabaaababababaabaabaabaiaaababaaabaaaabaababagabbaaiabaabbabaaabbaiaabaabababaaaaaabaaababaaiaaaabaaaaaaaaaaaaaaaaiaaaabagbaaiabaaaaaaabaaabaabaigbagiaabaabaaabaaababababaaaabababaababaaibaaaaaababaababababaabababaiabaaaacaaaabaaababaaababaabaaaaaagaaiaaacaabaabacaaaaiaaaiaaaaaaiaaaiaaaaaaaaacaaaaaaaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".ababaabaababaaaiiiabaigggabaigggabbabgbaiigaabgiiibaigibaagggbababggibaagiaaiigbababaigiaiiagiiabaaigiiabgggbaiiibggabggibagibaibaiabigiabababaiiibabggabababgiabiigaabgggibgabggiaigibagigabigbbiigbabggigbaabggiaiiagggabbgggiabggiaaaiggaiibaigiaaaigaiabgaaiiiabababaiiiabgiiabaaaiaabaaaiaibaiigiabaabaaigaaiiabgabaiiaaiiaaigiaaaiiiaaiaaiabgigaiigabiiibahgiaiiaaaihiaaaaaabgaihiiaaaiiaaabaaaaaciaaihigababaiiiaiiiiaabgiiaaaaacaiaaaiaaaaabgaaaaaaaabaaaaaaaiiiaaiiiaiiiiaaaiiiaaaiiaaaaaaaaaaaaaaaaaaaaa#",
-".aababababaaabbababgabgbabgaiabaiaaabaiaiabaibgabagaiabagbiabaabaaabaagbbgbaiabagbaaabaiabgbababgabgbabgbgabagbgaagbaiabaagagaabgaiabgababababaiabagaaibaababaiabgabaiagabagaibgababaiabgbabgaiaagabagbgabaiabaabgbaiababaiagaabgagabaibaiabgaagaaaaiaaiabgagabgaaaaaaaaaiaaaiaaiaaabaaaiggabaiaiabgaaaiabaabaiiaaigaaiaaiaaiaiabgaaaibgaaabaiabgagaabaaiaagaaagaiaaiaaibhaaabababaaiaiaabiaiabiaaacabaaaiaaiaaaiaaaaaiaaiaaaiagaaaiaadaaaiabaiabacaaaiiiaaabaaaadaaaiaaaiaagaagaaaiaiaaaiaagaaaaaaaaaaaaaaaaaaaaaa.",
-".baabaaabababaabaiggbaiabagbgbabgbabaagbiaabgagbabgbgbabiabgiabaabbaigiaagabgigiiaabbabgbagabagggbaiaaaiagigiiagbbiabgbaiiiaiabaiigbabgiaabaaabgbabiabgaababaagbagigigbgbabgbgabggbabgbaggiggbiabiiggiagbaaiaabaaiaaiaaagiiaiabaiaiggigaaiaagbagbaiigbaiaaiiiaaaiiabababaiabagbaiabaaababaaiaaiaiaaiabaiaabaaaiaiiagbagbaiabaaiaaiabagaaiiaabaiagbaiiabagbaiiiiiagbagbaiaaiiaaaaaabaiagbaaiaiaaaabaaaaabagbaiabagbaabagbaiaaaiaiiiigcaaaaaiaaaiaaaaaaaaaaiaaaaaaaaaaaiaaaiaaiaaiaaaiaigigiaaiaaaaaaaaaaaaaaaaaaaaaa.",
-".aabaabbaaabaabagbaiabgbabiaiabaiabaabiagabagbiaaaiagaaa.baabgbabaaiabiabgbaiabababaabagabgbaiabiaaiabbgbgbababiaagbaiagbagaiabaiagaaabagbaabbaiaaagbagbbabaabiaaiababaiabaiagbaabgaaiaagbaabagbagababaiaabiabaabiabiabiaagbiaaaiaiaaaabagbaiaaiaiaaiaaiaaiaiaabaaiaaaaaaiaaaiaaiaaabaiaaabgbaiaiaaiaaaiaaaabaiagiaiaaiaaiaaiaiaaiaaaiabaagbaaiiaaaaaiaaiaaiaaaaaiaaiaaiaabaiababaaaiaiaaaiagbaibaaababaaiaaiaaaiaaaaaiaaiabaiaiaaaaaaaabaiaaaiaaaaaiaaaaiaaaaaaaaaaaiaaaiaaiaaiaaagagaaaaaaiaaaaaaaaaaaaaaaaaaaaaa.",
-".abaabaabababababggibagabagbaiggiaabaagbaigiaaaiiigbaiiibaiggaabababgggbagabaigggbabaabaiaiabaiggbbaigggabgggiagbaiabgbagiiaibabgbaibggibabaaabaiiibabgaabaabagbbaigigabggigbgaiigabbaibaggigaiabaigigbaiiggababaaiagaaaiiiaaiiiiabgiiiaaiaaiabgabgiiabgabgaaiaigiaabababaiiiaabgabaaaaiiigaaabgiabgabaiababaaiaiaaiabgabaiiabgabaiiiaaigiaaabgabaiiiaabaiaaiiiibgabgabgaigiabaiaabaiaiabaiabgiaaaiaaaaabgabgabaiababaaiaiaaaiaaiiiiaabaaaaiiiaaabiaaiiiiaaaiaaiaaaaaaiiiaaaaiaiaaaiaaiigiaagaaaaaaaaaaaaaaaaaaaaaa#",
-".aabaabaabaaabababaaabbaabaababaabaabababababbababgababaabababaabababaababaababaaababaababaaababaaabababaabababaababaaabababaaaababaabaaababbaababaaaabababababaabababaababgabababaaabaababababaabaabaabaababaaababababaaabaaaaabaaaaaabaabaabaaaaaaaaaaaaabaabaaabaaaaaaaaaabaaaaababaaaaabaaaaaaabaaaaaaaaaaaababaaaaaaaaaaaabaaaaabaaababaaiaabaaabaaababaaaaabaabaabaaaabaaiaaababaaabaaaaabaababacaaaaaaaaaaaaaaaaaaaabaaaaaaaabaaaabaaaaabaaaaaaaaaaaaaaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abaabaababababababbbaaabaabaaababababaabaabaaggigababaababababbabaaabaaabababaabbaabababaabbaaababababababababababaababaabaaabaabaababababaababaababbabaaababaababaaabigggbabaabababaababababaabaabaabaabaaababaaaaabababaababaabababaabaabaaababababababaabaaabaabababababaaababaaaaababaaabababaababababababaaaababababababaaababaaabaaaaaiabaaabaaabaaaaababaabaabaababaaaababaaaaabaaababaaacaaaaaabababababacaabababaaabababaaaaacaaaaaaaaaaaabaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"vbaabaabaaaabaababaaaabbaabaabbabaaaaaabaabaababaababaabaaaaabaabaabababbaabaaabaaabaaabaabaaabbababaaabababaaababaababaabaaaababaababaabaaababaababaabaabbabaababaabbaaabaabaabaaabaabbaabaaaabaabaabaabababaaabababaaaaaabaabaaabaaaabaabaaabaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaababaaaaabaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaabaabababaaaabaaabaaababaaaaaaabaababaababaaabababaaabaaaaabaacababaaaaaaaaaaaabaaaaaaaaaaaaaaaabaaaababadaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aababaababaabbababbabaabababaaaabbbabaabababababaabaabaabbabaabababaabaabaabbababaababaabababaaaababbbabababbaabababaabababaaaababababaabbaabababaabaabaaaaababaabaaabbabababababbabaaabaabababababaabaaaaaaabaabaaaabababaabaabaaababaabaabaaababababababababaabababaabababaaababaaaaababaaabababababababaababaaabaabaabababaaaababaaabaaaaaababaabaaabaaaaabababaaabaaaabaaaabaaaacaabaaababaaabaaaaaabaacabaabaaaaabaababaaaacabaaabaaaaaaaacaaaaacaabaaaaaabaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".abaaabaababaaabaaaababaabaaababaaaababaabaaaaababaabababaababaaaababaabaabaaaaabababaababaabababaabaaabaabaaabaaaababaababababaababaaabaaabaabababaababbabbaababaabbaaababaaababaaaabbaabaabaaabaaabaababbabaabaababaaabaabaabaabaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaabaaaaaabaaaaababaaaaabaaaaaaaaaaaaaaabaaaaabaaaaabaaaaaababaaaabaaabababaaaabaababababaaaaaaabaaababaababaacabaabaabaaaaabaaaababaaabaaaacaaabaadaaaaaaabaaaaaacaaadaaaabaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".bababaabababababbababaababababababaababaababbiaababaaabaabaaababbaaaabaabababbiaabaababaaabaaaiabaababaabababababbaababaaababaababaabbabababaabaabababaabaaabaababaabababaabbaaababbaaababaabbaaabaabaabaababaabaabaabaabaabaabaababababaabaaabababababababababababaaabaabaaababaaaaaababaaabababababababaabaabaaababaaabaabaaaaaabaaabaaaaaababaabaaaaaaaababababaabaaaabaaaaabaaabaaacaababaababaaaaabaaaabaaabaabaaadaacaaabaacaaaaaaaaacaaaaadabaaaaaaaaabaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaaaabaaaaababaabaaaabaaababaaabaababagbaaaaaababaabbaabaabbabaaabbbaabaaabaagabaababaabbaiabgbaababaababaabaabaaababaabbabaababaabaababaababaabababaabaabbaababaabaabaaabaaabbabaaaabaaaabaababaabaabaabaaaabaabaabaaaaabaaaaabaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaabaaaaaabaaaaaabaabaaaaabaaaaaaaaaaaaaaaaabaabaaaaabaaabaaaababaaabaaababaaaaabaaabababaabaaaaaabaabacaaababaaabaaabaabaaaacaaaabacaacabaaabaaaaacaaaaaaacaaaaaaaabacacaaaaadaaaaaaabaaaaaaaaadaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".abbabababbabaaabggabbggibaaiaibaigigaagigbiibgbaiggbaaiigabaaaababagggbabiiaabgigibaagiiaaigiaiggiabababaabaaabaabaabaabaaaababaabababaaabaababaabaaabababaababaabababababababaaaababbababaabaababaabaaabaababaabaabaabbabaababaaababababababaabababababababababaabaaabababaaababaaabaababaaababababababababaaaaaababaaabaaababaaaabaaabaabaababaaabaaaaaaabaabababaabaaaabaaaaabaaabaaabaacabaabacaaaadaaaabaaabacaaabababaaaabababaaaaaaabaacaaaaacaaaabaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aaaaaaaaaaaaaaagaaiagaaagaagagaagaaaiaaiaagaagagaaagaiaaaaaaaaaaaaiaaagaagaaaaiaaagaiaaaiaagaagaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaaaaaaaaaaaaaiaaaaiaaaiaaiagaaiaaaiaaiaaiaagaiiiiiaagiaaaaaaaaaaiaaagaagaaaaiaaaiaiaaagaaiaaiaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaaaaaaaaaaaaagaaiaiaaagaaiaiaagaaaiaagaagaaiagaaaaaaaagaaaaaaaaagaaaiaaiaaaagaaagaiaaaiaaiaagaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaaaaaaaaaaaaaaiiaaagiiaaaagiaaiaaagaaaiaiaaiaagiggaigiaaaaiaaaaaaiigaaaiaaaaiiigaaagiiaaaagaiaaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-"#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.",
-".aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#",
-".#...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................#.."};
diff --git a/platform/org.eclipse.sdk/splash/splash_full.bmp b/platform/org.eclipse.sdk/splash/splash_full.bmp
deleted file mode 100644
index a8c5ece..0000000
--- a/platform/org.eclipse.sdk/splash/splash_full.bmp
+++ /dev/null
Binary files differ
diff --git a/platform/org.eclipse.sdk/splash/splash_full.xpm b/platform/org.eclipse.sdk/splash/splash_full.xpm
deleted file mode 100644
index 530fd13..0000000
--- a/platform/org.eclipse.sdk/splash/splash_full.xpm
+++ /dev/null
@@ -1,590 +0,0 @@
-/* XPM */
-static char * splash_xpm[] = {
-"500 330 257 2",
-" c None",
-". c #140414",
-"+ c #1C0C1C",
-"@ c #241C24",
-"# c #F4EAF4",
-"$ c #FCF4FC",
-"% c #E9E4E9",
-"& c #340C3C",
-"* c #2C232E",
-"= c #34143C",
-"- c #837C85",
-"; c #240C2C",
-"> c #2C1434",
-", c #C2BCC4",
-"' c #785189",
-") c #514A54",
-"! c #1C0C24",
-"~ c #340C4C",
-"{ c #24172C",
-"] c #634A72",
-"^ c #260C37",
-"/ c #2C143C",
-"( c #2C0C44",
-"_ c #633D7F",
-": c #2C044C",
-"< c #E1D8E8",
-"[ c #1C1423",
-"} c #3B3441",
-"| c #340C5A",
-"1 c #2D1444",
-"2 c #472368",
-"3 c #341C4A",
-"4 c #2C0454",
-"5 c #240444",
-"6 c #2C0C4C",
-"7 c #0C0414",
-"8 c #1C0C2C",
-"9 c #3D1E5F",
-"0 c #2C1C3C",
-"a c #CDC0DB",
-"b c #9F99A5",
-"c c #C6C3C9",
-"d c #552889",
-"e c #D5CDDE",
-"f c #ECE5F4",
-"g c #24044C",
-"h c #340C66",
-"i c #2C0C54",
-"j c #351858",
-"k c #5A2C94",
-"l c #653E98",
-"m c #6D489B",
-"n c #9F86BF",
-"o c #70647F",
-"p c #5D5567",
-"q c #C2B7D0",
-"r c #A8A0B2",
-"s c #1C043C",
-"t c #240C44",
-"u c #471C84",
-"v c #451E79",
-"w c #2C144C",
-"x c #7B50B7",
-"y c #7048A6",
-"z c #482F6B",
-"A c #564A67",
-"B c #9E92AF",
-"C c #B9B6BD",
-"D c #240454",
-"E c #14042C",
-"F c #2C0C5C",
-"G c #371769",
-"H c #1C0C34",
-"I c #24143C",
-"J c #2C1C44",
-"K c #34264A",
-"L c #B3A0D0",
-"M c #1C0444",
-"N c #240C4C",
-"O c #2C1454",
-"P c #563889",
-"Q c #7E63AC",
-"R c #7A6F8D",
-"S c #8D82A0",
-"T c #88848F",
-"U c #4A288C",
-"V c #472784",
-"W c #593994",
-"X c #493078",
-"Y c #856AB6",
-"Z c #8E76BA",
-"` c #A794C9",
-" . c #1C044C",
-".. c #140434",
-"+. c #240C54",
-"@. c #371978",
-"#. c #2C145C",
-"$. c #241444",
-"%. c #2C1C4C",
-"&. c #1C142C",
-"*. c #7259A5",
-"=. c #463D58",
-"-. c #121114",
-";. c #958EA3",
-">. c #96949A",
-",. c #78777A",
-"'. c #1C0454",
-"). c #270C67",
-"!. c #240C5C",
-"~. c #2C1464",
-"{. c #1E1434",
-"]. c #1C045C",
-"^. c #24144C",
-"/. c #2C1C54",
-"(. c #241C39",
-"_. c #5D5475",
-":. c #0C0424",
-"<. c #1C0C4C",
-"[. c #170C39",
-"}. c #1C0F44",
-"|. c #241454",
-"1. c #140C2C",
-"2. c #2C1C5C",
-"3. c #372768",
-"4. c #65529D",
-"5. c #2C2444",
-"6. c #5E4F8B",
-"7. c #1C0C54",
-"8. c #24145C",
-"9. c #2C1C65",
-"0. c #3C2784",
-"a. c #493788",
-"b. c #594794",
-"c. c #554881",
-"d. c #9585CA",
-"e. c #9289B2",
-"f. c #827A9D",
-"g. c #140454",
-"h. c #0F043C",
-"i. c #1C0C5C",
-"j. c #1C143C",
-"k. c #241C44",
-"l. c #352C58",
-"m. c #14121C",
-"n. c #9E96BC",
-"o. c #14045C",
-"p. c #110447",
-"q. c #0C0431",
-"r. c #291874",
-"s. c #25166C",
-"t. c #372779",
-"u. c #2E245C",
-"v. c #4C3C94",
-"w. c #2C244E",
-"x. c #6757B2",
-"y. c #927CFA",
-"z. c #28243B",
-"A. c #766CA2",
-"B. c #8379AF",
-"C. c #1A0C65",
-"D. c #2C1C7C",
-"E. c #241C4C",
-"F. c #7363CB",
-"G. c #52468C",
-"H. c #5C509D",
-"I. c #140C44",
-"J. c #1C144C",
-"K. c #241C54",
-"L. c #8372E7",
-"M. c #4B427F",
-"N. c #8C84BC",
-"O. c #0C044C",
-"P. c #140C5A",
-"Q. c #140C4C",
-"R. c #241C5C",
-"S. c #141224",
-"T. c #6D6799",
-"U. c #0C0454",
-"V. c #1C1474",
-"W. c #3D3877",
-"X. c #1A1468",
-"Y. c #211C64",
-"Z. c #292467",
-"`. c #3A3766",
-" + c #65628F",
-".+ c #2A2777",
-"++ c #37355B",
-"@+ c #444367",
-"#+ c #5B5A87",
-"$+ c #040447",
-"%+ c #040432",
-"&+ c #040424",
-"*+ c #0C0C5C",
-"=+ c #0C0C54",
-"-+ c #0C0C4C",
-";+ c #0C0C42",
-">+ c #0C0C34",
-",+ c #17185C",
-"'+ c #14144C",
-")+ c #0C0C2C",
-"!+ c #171754",
-"~+ c #141444",
-"{+ c #0C0C24",
-"]+ c #04040C",
-"^+ c #1C1C4C",
-"/+ c #141434",
-"(+ c #24245C",
-"_+ c #242454",
-":+ c #0C0C1C",
-"<+ c #14142C",
-"[+ c #1C1C3C",
-"}+ c #24244C",
-"|+ c #2C2C5C",
-"1+ c #2C2C54",
-"2+ c #242444",
-"3+ c #1C1C34",
-"4+ c #2C2C4C",
-"5+ c #4A4A74",
-"6+ c #54547E",
-"7+ c #1C1C24",
-"8+ c #5C5C74",
-"9+ c #545469",
-"0+ c #9394B0",
-"a+ c #2A2D68",
-"b+ c #04083C",
-"c+ c #040C54",
-"d+ c #040C46",
-"e+ c #0C1555",
-"f+ c #0C1449",
-"g+ c #0E143C",
-"h+ c #242C5C",
-"i+ c #5E6485",
-"j+ c #040C33",
-"k+ c #18245B",
-"l+ c #141D4C",
-"m+ c #242C54",
-"n+ c #1A2867",
-"o+ c #4C5478",
-"p+ c #545C7F",
-"q+ c #273976",
-"r+ c #0E1D41",
-"s+ c #20376B",
-"t+ c #2D4478",
-"u+ c #041435",
-"v+ c #04142C",
-"w+ c #040C0C",
-"x+ c #0C1414",
-"y+ c #040C04",
-"z+ c #0C140C",
-"A+ c #0C0C04",
-"B+ c #14140C",
-"C+ c #0C0404",
-"D+ c #140C0C",
-"E+ c #F4F4F4",
-"F+ c #1C1C1C",
-"G+ c #0C0C0C",
-"H+ c #040404",
-"8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.8+8+_.",
-"_.j+j+b+j+j+b+j+j+b+j+b+j+b+j+b+j+b+%+b+b+%+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+$+b+$+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+O.$+O.$+O.$+O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.c+O.O.O.O.O.U.O.U.O.U.O.=+O.U.=+O.U.=+g.U.=+g.U.=+g.U.=+g.U.=+g.U.=+g.U.=+g.U.=+g.g.=+g.g.=+g.g.=+g.g.=+g.g.g.g.g.g.g.g.g.g.g.g.g.g.U.g.g.g.g.g.g.O.g.O.g.g.O.g.O.g.O.O.O.g.O.O.g.O.O.g.O.O.p.g.p.O.p.O.p.O.p.p.p.O.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.h.$+p.h.p.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.q.h.q.h.q.q.h.q.q.h.q.q.h.q.h.q.q.q.h.q.q.q.q.q.q...q...q...q...q...q.q.q.q.....>+..1...1...1...1.1.E 1.1.E 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.8 S.1.S.<+1.[ <+! &.S.&.S.S.S.S.&.S.[ S.&.[ S.[ S.[ S.[ [ [ [ [ S.[ S.S.S.[ [ S.[ S.[ [ [ m.[ [ m.[ m.[ m.m.[ m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.G+-.z+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+w+A+]+A+]+A+]+y+]+H+H+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+j+j+j+b+j+j+b+j+b+j+b+j+b+j+b+j+b+j+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+$+d+$+b+$+b+$+$+$+b+$+$+$+$+$+d+$+$+$+$+$+$+$+$+$+$+$+O.$+O.O.$+O.$+O.c+O.O.-+O.c+-+O.=+O.=+O.c+O.c+O.c+U.O.O.U.c+U.c+O.=+=+U.=+=+U.=+g.=+g.=+g.=+g.g.=+g.g.=+g.g.=+g.g.=+g.g.=+g.g.=+P.g.=+=+g.=+=+g.P.=+g.P.=+g.=+g.P.g.=+P.g.=+P.g.=+g.=+P.g.g.=+g.g.=+g.g.g.g.U.Q.g.Q.g.Q.O.g.O.O.O.Q.g.Q.g.Q.g.g.O.p.g.g.g.p.g.p.g.O.g.p.g.p.g.p.O.p.O.p.p.p.O.p.p.p.p.p.p.p.p.O.h.p.p.$+p.p.p.p.p.p.p.h.$+p.h.$+h.$+h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.%+h.h.q.q.h.q.h.h.q.h.q.h.h.h.q.h.h...h.h.h.q.h...h...>+..>+..>+..>+..>+....>+..1...1...1.....1...1...1...1.1.H 1.1.1.1.1.1.1.8 1.1.1.8 1.&.1.&.<+1.&.1.&.S.8 &.<+&.<+! &.&.&.&.S.&.&.&.S.[ &.[ &.S.[ &.S.[ [ [ [ S.[ [ [ S.[ [ S.[ [ m.7+[ m.7+m.[ m.F+[ F+m.[ m.F+m.F+m.F+m.F+m.m.m.m.m.m.m.m.m.-.m.-.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.z+-.-.-.-.G+-.-.G+-.z+-.G+-.G+G+G+G+G+G+G+G+G+G+G+]+G+A+G+G+]+A+w+A+C+A+]+A+]+C+]+A+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.j+j+b+b+j+j+b+j+j+b+j+b+j+b+b+%+b+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+d+b+b+$+b+$+$+b+$+$+$+$+$+$+d+$+$+$+$+$+$+$+$+$+$+O.$+O.$+O.O.d+O.c+O.c+O.O.O.c+O.O.O.O.O.c+O.O.O.U.O.U.O.O.c+U.=+O.=+O.U.=+U.O.=+U.g.=+=+g.=+g.=+g.=+=+g.=+=+g.=+=+g.=+=+g.=+=+g.P.=+g.g.=+P.g.P.P.g.P.P.g.P.g.P.g.P.g.=+g.P.g.g.P.g.g.P.g.P.g.g.P.g.g.P.g.g.P.g.P.g.g.g.U.g.U.g.O.=+g.Q.g.O.g.O.g.O.O.g.g.O.p.p.g.p.g.p.O.p.p.O.p.O.p.p.O.p.p.p.O.p.p.p.p.p.p.p.p.p.p.p.$+p.h.p.h.p.h.$+h.h.p.h.h.p.h.h.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.q.h.%+h.h.%+q.h.h.q.h.q.q.h.q.h.q.q.q.h.q.h...q.q.h.q.h.q.>+h.....>+..>+....1...1...[...1...>+1...1.1.1.[.1.1.1.1.1.1.1.1.8 1.1.1.<+1.<+1.<+1.<+1.8 <+1.8 <+1.S.8 <+<+! <+! <+&.S.S.S.S.&.S.S.[ &.S.&.S.[ S.[ [ S.[ &.[ S.7+S.S.[ 7+S.7+S.[ [ [ [ 7+[ [ m.[ [ m.m.F+m.[ m.[ m.m.m.m.m.m.F+m.F+m.m.-.m.-.m.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.G+-.G+-.G+G+G+G+G+G+x+G+G+G+G+G+G+G+G+w+G+A+]+G+]+G+A+w+C+w+]+C+H+y+]+y+H+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+b+j+j+b+j+b+j+b+j+b+j+b+j+b+b+j+b+j+b+b+b+b+b+b+%+b+b+b+b+b+b+b+b+$+b+$+b+b+b+d+$+b+$+$+b+$+$+b+$+$+$+$+$+d+$+$+$+$+$+$+$+$+$+$+$+O.$+$+O.$+-+$+O.$+O.O.O.O.c+O.O.O.c+O.c+O.O.O.c+U.-+c+O.=+U.O.=+O.=+U.=+=+U.=+=+g.=+=+g.=+g.=+=+g.=+g.P.=+g.P.g.P.g.P.g.P.=+P.g.P.=+g.P.P.P.g.P.g.P.P.g.P.P.P.P.g.P.g.P.g.P.g.P.g.g.P.g.P.g.g.g.P.g.g.P.g.g.g.g.g.g.g.=+g.g.=+Q.g.Q.g.O.O.g.O.Q.g.O.Q.g.Q.O.g.g.g.p.g.p.g.Q.g.O.g.p.g.p.g.p.g.p.O.p.p.O.p.O.p.p.p.p.p.p.p.p.p.p.p.$+p.p.h.p.p.h.p.p.h.h.$+h.p.h.h.h.h.h.h.h.h.h.h.h.h.q.h.h.h.h.%+h.h.%+h.q.h.q.h.h...h.q.h.h.q...h.q.h.h.q...h.....q.>+....>+..q.>+..>+..>+..1.[...1...1...[.1.1.1.H 1.[.1.H 1.1.1.H 1.1.8 1.8 1.1.8 1.1.<+8 &.<+&.S.&.<+&.[ <+&.&.S.&.&.&.&.&.[ &.&.&.[ &.[ [ &.[ &.[ 7+[ [ [ [ S.[ [ S.[ S.[ [ S.7+[ m.[ m.[ 7+m.F+m.[ m.[ m.F+m.m.F+m.F+m.m.m.m.m.m.m.m.m.m.-.-.m.-.m.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.B+-.-.-.z+-.G+-.z+-.G+-.G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+A+G+G+G+A+G+A+]+G+w+C+y+]+y+C+H+C+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.j+j+b+j+j+b+j+b+j+b+b+j+b+b+j+b+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+d+b+b+$+b+$+$+b+$+$+d+$+$+d+$+$+$+$+$+$+$+$+$+$+$+$+$+$+-+$+-+$+O.c+O.c+O.-+c+O.O.c+O.O.O.O.O.=+c+O.O.O.U.U.U.O.=+U.U.=+U.=+U.=+g.g.=+g.=+g.=+g.P.g.P.=+P.=+g.P.=+P.=+P.=+P.=+g.P.g.P.g.P.P.g.P.g.P.P.P.g.P.P.g.P.g.P.P.P.P.P.g.P.g.g.P.g.P.g.P.P.P.g.P.g.P.g.P.g.P.=+g.P.g.g.g.g.g.g.U.g.-+g.g.-+g.O.Q.g.O.g.O.Q.O.Q.g.g.p.g.p.g.p.p.g.O.p.g.p.p.p.g.p.p.p.p.p.p.p.p.p.p.p.p.p.p.$+h.p.p.h.p.p.h.$+p.h.h.p.h.p.h.h.$+h.h.$+h.h.h.h.h.h.h.h.h.h.h.q.h.h.%+h.h.%+h.q.h.q.h.h.q.h.q.h.h.q.h.....h.h.q.>+h.>+h...>+....>+....>+......>+..1.>+..1...1.1.....1...1.1.1.1.H 1.1.1.1.1.1.1.1.1.1.1.<+8 1.&.1.&.1.8 <+1.&.8 S.&.<+&.S.8 S.S.&.S.S.[ &.[ S.&.S.[ S.[ &.S.[ [ S.7+S.7+S.[ 7+S.[ m.[ [ 7+S.7+[ m.[ [ m.[ m.[ m.F+m.[ m.m.m.m.F+m.m.m.m.m.m.m.-.m.m.m.-.m.-.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.-.-.-.-.G+-.G+-.G+G+G+G+G+-.G+G+G+G+G+G+G+G+G+G+]+A+]+G+]+G+A+]+A+]+A+C+]+y+]+y+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+b+j+b+b+j+b+j+b+b+j+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+$+b+b+d+b+$+$+b+$+b+d+$+b+$+$+b+$+$+$+$+$+d+$+$+$+$+$+$+$+O.$+O.$+O.$+c+O.$+O.O.c+O.O.c+O.O.c+O.c+O.c+O.O.=+U.c+U.-+=+=+O.=+=+U.=+g.=+g.=+=+=+g.=+P.=+P.=+P.g.P.g.P.=+g.P.g.P.g.P.g.P.P.P.P.P.P.g.P.P.P.P.P.g.P.P.P.o.P.P.P.P.g.P.g.P.P.P.P.P.g.P.g.P.g.g.g.P.g.P.g.P.g.P.g.g.g.=+g.P.g.P.g.Q.g.g.g.Q.O.g.=+g.O.O.g.Q.g.g.O.g.O.Q.g.O.g.p.g.g.p.p.g.p.O.g.p.p.g.p.g.p.O.p.p.p.O.p.O.p.p.p.p.p.p.p.p.$+p.p.p.h.p.$+h.p.h.p.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.%+h.h.%+h.q.h.q.h.h.h.h.q...h.q.h.h.q...h...h.....h...>+....>+>+....>+1.[...[...>+[.1.....1.1...1.1.[.1.1.1.1.8 /+8 1.&.1.&.1.<+1.8 <+1.8 <+8 <+&.S.&.S.&.&.&.S.8 &.S.&.&.S.&.&.S.&.[ &.[ &.[ &.S.[ [ &.7+[ [ [ [ S.[ S.[ S.7+[ m.[ [ [ [ [ m.m.7+m.7+m.[ m.[ m.F+m.F+m.m.F+m.F+m.F+-.m.m.m.-.m.m.-.m.m.-.m.-.m.-.-.-.m.-.-.-.-.-.-.-.B+-.-.-.-.-.G+-.G+-.G+-.G+-.z+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+A+G+G+G+A+]+G+w+A+]+C+w+H+C+y+C+w+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.b+j+b+j+j+j+b+j+b+j+j+b+b+b+j+b+b+j+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+$+b+b+$+b+$+b+$+$+$+$+$+$+$+$+$+$+d+$+$+$+$+$+$+d+O.$+c+$+-+$+c+O.O.O.O.c+O.O.O.c+O.O.-+O.c+O.U.O.O.c+U.O.=+O.=+U.U.U.=+g.=+g.=+=+=+g.=+g.=+P.g.P.P.P.=+P.P.=+P.g.P.U.P.U.P.g.*+o.P.U.P.g.P.P.P.P.g.P.o.P.o.P.o.P.P.o.P.o.P.P.P.P.g.P.g.P.P.P.P.g.P.P.P.P.g.P.g.P.g.P.g.P.P.P.g.g.g.g.g.g.g.g.=+U.g.Q.O.g.g.Q.g.O.g.O.g.Q.p.g.g.Q.g.O.g.p.g.g.g.p.g.p.p.g.p.p.p.p.p.p.O.p.p.p.p.p.p.p.p.p.p.$+h.p.p.$+h.p.p.h.p.h.$+h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.q.h.h.q.h.h.h.h.h.h.q...q.h.h.h...h.q...h...h...h.>+..>+h...........>+......[.1...1...1...1.1...1.1.[.1.1.H 1.[.1.8 1./+1.1.1.1.8 1.<+1.1.&.8 <+8 1.&.1.&.<+8 S.&.&.S.<+&.&.S.&.S.&.[ &.S.&.[ <+[ [ &.[ [ [ [ S.[ S.7+S.7+S.[ S.S.7+[ F+S.F+[ [ [ m.F+m.m.F+m.m.F+m.m.m.m.F+m.m.m.m.m.m.m.m.-.m.m.-.m.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.-.G+-.-.G+-.G+-.G+G+G+G+G+G+-.G+G+G+G+G+G+G+w+G+]+A+]+G+G+]+A+]+A+w+H+C+y+]+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+b+j+b+b+b+j+b+j+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+d+b+b+b+d+b+$+$+b+$+d+$+d+b+$+d+$+d+$+d+$+$+$+$+$+$+$+$+$+O.$+O.$+O.$+O.O.O.c+$+c+O.O.c+O.O.O.c+U.O.O.U.-+=+U.U.-+=+U.=+U.=+=+=+=+=+g.=+=+g.=+=+g.P.P.g.*+P.U.P.P.o.=+P.o.P.*+P.P.P.P.P.P.P.P.P.P.P.P.o.P.P.P.P.P.P.P.P.P.P.o.P.P.P.P.o.P.o.P.o.P.o.P.o.P.P.o.P.g.P.P.o.P.P.o.P.g.P.g.g.P.P.P.g.=+g.P.g.g.g.g.g.g.g.Q.U.g.g.Q.g.-+g.g.O.Q.g.p.g.p.g.p.p.O.g.p.g.O.p.g.p.g.p.g.p. .p.p.O.p.p.O.p.p.p.p.p.p.p.h.p.p.p.h.p.p.h.p.h.h.$+h.$+h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.q.h.q.h.h.h...h.q.h...h.h...>+h.q.>+..h.....>+..>+>+>+..>+..>+1...1...1.[.1...[.1.1.[.1.1.[.1.1.1.1.H 1.8 1.H 1.1.1.1.8 1.&.1.&.1.&.<+8 S.&.8 S.&.1.&.&.&.S.<+&.S.&.S.&.S.&.[ &.[ [ <+[ [ &.[ S.7+[ [ S.[ [ [ [ [ 7+m.[ S.[ [ m.[ F+[ S.[ F+S.[ F+m.m.F+[ m.m.m.F+m.m.m.m.F+-.m.m.-.m.-.-.m.-.m.-.m.-.-.-.-.m.-.-.-.-.-.-.-.-.z+-.-.-.z+-.G+-.G+-.G+-.G+G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+A+G+G+G+A+G+C+w+G+A+]+C+]+y+]+C+y+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.j+j+b+j+j+b+b+j+b+j+b+j+b+b+j+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+d+b+$+b+d+$+b+$+$+$+$+$+$+$+$+$+$+d+$+$+d+$+d+$+O.d+$+O.$+O.c+O.c+$+O.O.O.O.c+O.O.c+O.U.O.c+U.=+O.U.-+=+O.U.=+U.=+=+g.=+g.=+=+=+g.=+P.g.P.=+P.=+P.P.P.P.U.P.*+P.o.P.P.o.P.o.P.P.o.P.P.o.P.o.P.o.P.P.o.P.o.P.o.P.o.P.P.P.P.o.i.o.i.P.i.P.i.o.P.].P.].P.P.P.P.].P.P.o.P.g.P.P.].P.P.'.g.P.g.g.g.g.P.g.P.g.g.g.Q.g.Q.g.Q.g.Q.g.p.Q.g.p.g.Q.g.Q.g.Q.g.Q.g.Q.p.g.p.O.g.p.p.p.g.O.p.p.p.O.p.p.p.p.O.p.p.p.p.O.h.p.$+p.p.h.p.p.h.p.p.h.p.h.h.$+h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.h.q.h.h.h.h.h.h...h.h...h.h.h...h.h...h...h...>+h...h.........>+..>+..[...[.......[.1.1...1.1.H 1.1.H H 1.1.1.H 1.<+1./+8 <+1.<+8 1.&.1.&.8 <+&.1.&.<+&.<+&.S.8 S.&.[ &.&.S.&.S.&.[ &.S.&.S.[ [ S.7+[ [ [ [ S.[ S.7+S.S.S.S.7+[ [ [ 7+[ m.[ m.7+m.[ m.m.S.[ m.m.m.F+m.m.m.F+m.m.-.m.m.-.m.m.-.m.-.m.m.-.m.-.m.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.D+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+w+G+]+G+]+G+G+C+]+G+C+w+C+H+y+]+C+y+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+b+j+b+j+b+j+b+b+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+d+b+b+d+b+$+b+$+b+$+$+$+b+d+$+d+$+d+$+d+$+$+$+$+$+$+$+$+$+$+-+$+c+$+O.$+O.O.c+O.c+O.O.c+O.O.O.c+O.U.-+U.=+=+U.U.=+U.=+=+=+U.=+g.=+=+g.=+*+g.=+P.*+P.g.P.=+P.U.P.P.P.o.P.P.P.P.P.P.P.P.o.P.P.o.P.P.P.P.P.P.P.P.P.P.P.P.P.P.o.P.o.P.i.P.P.P.].P.o.P.i.P.P.i.P.o.i.].o.P.o.P.P.].P.].P.g.P.o.P.g.P.7.P.P.g.g.g.g.P.g.g.g.g.g.Q.g.g.g.Q.g.g.g.Q.g.p.Q.g.p.g.p.g.p.g.g.g. .g.p.p.g.p.p.g.p.g.p. .p.p.p.p.p.p.p.p.p.p.O.h.p.p.h.O.h.p.p.h.h.p.h.p.h.h.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.q.h.h.h...h.h.h...h...h...h...h...h.....>+..h.>+[.>+....[...1.>+..1.[.1.1...[...1.[.1...1.1.[.1.H 1.H 1.H 8 1.1.1.1.8 <+1.8 <+8 <+8 <+&.1.&.&.8 S.&.&.&.1.&.S.&.&.S.&.S.&.[ &.[ &.[ &.[ [ &.[ <+[ [ S.7+[ S.[ [ [ S.7+m.[ m.[ [ [ [ m.[ m.[ F+m.m.[ F+m.m.F+m.m.m.F+m.m.m.m.m.-.m.m.-.m.-.-.m.m.-.-.-.m.-.-.-.-.-.-.-.-.-.-.-.z+-.-.G+-.G+-.G+-.G+-.G+G+-.-.G+-.G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+A+]+G+w+C+w+H+]+A+]+C+y+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+j+b+j+b+j+b+b+j+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+$+b+b+d+b+b+d+$+b+$+$+b+d+$+$+$+$+d+$+$+$+$+$+$+$+d+$+O.$+-+O.O.$+O.O.O.c+O.c+O.O.O.O.c+O.O.=+=+-+U.=+=+U.c+O.=+=+=+=+=+g.=+g.=+=+=+g.P.=+P.P.*+P.g.*+P.*+o.P.P.P.*+o.P.P.o.P.o.P.o.P.o.P.P.o.P.P.P.o.P.o.P.o.P.o.P.o.P.o.i.P.i.P.C.P.o.i.o.i.P.i.P.i.o.i.o.i.i.P.P.P.P.i.P.].P.P.P.o.P.].P.o.P.].g.P.g.g.g.P.g.g.P.g.P.g.g.g.g.Q.g.g.Q.g.Q.g.Q.g.g.p.g.Q.g.Q. .g.p.p.g.p.p.g.p.p.g.p. .p.p.p.p.g.p.p.p.p.p.p.p.p.p.p.p.h.p.p.p.h.p.p.h.p.h.p.h.p.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h...h.h...h.h...h.h.h...h.[...h.>+h.[...[.........>+..>+[...H >+..1...[.1.1...1.[.1.[.1.H 1.1.H 1.8 1.1.H 1./+8 <+H 1.&.<+8 <+8 &.1.&.&.S.&.<+&.8 S.&.S.&.&.S.&.[ &.S.&.[ &.[ &.S.[ &.[ [ [ [ &.[ [ S.7+S.7+S.[ [ [ [ [ m.7+m.F+[ F+[ m.m.[ F+m.m.m.F+m.m.F+m.m.m.m.m.-.m.m.-.m.-.m.-.m.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.G+-.-.G+-.G+-.G+G+G+G+G+x+G+G+G+G+G+G+G+G+A+]+G+]+G+]+A+w+C+y+]+A+y+]+H+y+]+A+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.b+b+j+b+j+b+j+b+b+b+b+b+j+b+j+b+b+b+b+b+b+b+b+b+b+b+d+b+b+b+b+$+b+$+b+$+$+b+$+$+b+$+$+$+$+d+$+$+$+$+$+d+$+d+$+$+O.$+-+$+c+$+c+O.-+$+O.O.O.c+O.c+O.O.O.=+O.O.U.=+c+O.U.=+=+U.=+U.=+g.=+U.=+=+P.U.P.=+P.g.*+g.*+P.P.o.P.*+*+o.*+P.P.*+o.P.*+P.P.P.P.P.P.P.P.P.o.P.P.P.P.P.P.P.i.P.P.C.P.P.o.C.o.P.].C.P.P.P.].P.].P.i.P.i.P.o.i.].i.].P.].P.].].P.i.P.P.o.P.g.P.P.'.P.g.P.g.g.g.g.g.g.g.P.g.g.g.g.Q.g.g.Q.g.g.Q.p.g.Q.g.p.g.Q.p.g. .p.g.g. .p.g.p.p.p.g.p.g.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.$+h.O.h.p.p.h.p.h.p.h.h.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.h.h.h.h.h.h.h.h...h.h...h...h.h...h...h...h...h...>+..>+..>+....1.>+..[...1.1...[.1...1.H 1.1.H 1.H 1.H 1./+8 <+1.1.1.1.1.<+8 1.&.8 <+&.&.<+8 &.8 S.&.S.&.8 &.&.S.&.S.&.&.[ &.S.&.[ [ &.7+[ [ S.7+[ [ [ S.7+S.[ [ [ 7+[ S.[ 7+[ [ S.[ m.m.m.[ F+m.[ m.F+[ m.m.m.m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.-.-.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.-.G+-.G+G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+G+C+w+G+C+]+C+y+]+C+H+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+j+b+j+b+b+b+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+d+$+b+b+d+b+$+b+$+$+b+d+$+d+$+d+$+$+d+$+$+d+$+$+$+$+$+c+$+O.c+$+O.O.O.c+O.c+O.c+O.O.c+O.=+=+O.c+U.=+c+O.U.=+=+U.=+=+g.=+=+=+=+=+P.U.=+P.*+g.*+P.P.*+P.o.*+*+P.o.P.P.P.P.P.P.P.P.P.o.P.o.P.P.o.P.P.C.P.P.C.P.C.P.C.P.o.P.i.P.C.i.P.i.i.C.P.i.C.o.i.P.C.P.].P.o.i.i.P.i.P.P.i.i.i.P.i.P.].P.].i.P.].P.].P.o.P.'.P.g.P.P.g.P.g.g.g.P.g.P.g.'.g.g.g.Q.g.g.g.Q.g.Q.g.p.g.g.Q.g. .p.p.g. .p.g. .p.p.g.p. .p. .p.g.p.p.p.p.p.p.p.p.p.p.p.p.p.p.h.p.p.h.p.h.p.h.p.h.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.h.h...h...h.h...h.h...h.[.h.[.h.[.[.h.[...>+..[.>+..>+..[.>+[...1...1.[...1...1.[.1.1.[.1.[.1.H 1./+8 8 1.H 1.8 1.&.8 1.&.1.&.<+8 <+8 &.<+&.<+&.<+&.<+S.&.S.&.&.S.&.S.&.[ &.[ &.[ [ &.S.&.[ [ [ S.7+[ [ [ 7+S.S.[ 7+[ [ m.[ F+[ F+[ [ m.[ m.[ m.m.m.m.F+[ m.m.F+m.F+-.m.m.m.-.m.-.m.m.-.m.m.m.-.-.-.m.-.-.m.-.-.-.-.-.-.-.B+-.-.G+-.-.z+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+]+A+w+C+]+y+A+]+C+y+]+A+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+j+b+j+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+d+b+b+b+d+d+b+$+d+$+b+d+$+$+$+$+$+$+d+$+$+$+$+$+$+$+$+-+O.$+O.$+O.c+O.c+O.$+O.O.c+O.c+O.O.c+O.O.=+O.=+O.U.=+=+=+g.=+g.=+=+g.=+g.P.g.*+P.P.U.P.*+P.*+o.P.*+*+o.P.P.P.*+P.P.*+C.P.P.P.P.P.P.P.P.C.P.C.o.P.P.C.P.P.P.P.P.C.P.C.o.i.P.C.P.C.P.i.P.C.P.i.C.i.o.P.C.P.C.P.o.C.o.C.].P.].P.].P.i.P.i.P.].i.P.].P.].P.o.P.o.P.g.g.P.g.P.P.g.g.g.g.g.g.g.7.g.'.Q.g.Q.g.Q.g.Q.g.g.p.g.Q.g. .g.p.g.p. .p.g.p. .p.g.p.g.p.p. .p.p.p.p.p.p.p.p.p.h.p.h.p.p.p.h.p.p.h.p.h.p.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h...h.h.h.h...h.h...h.....h.h.>+h...[...>+..[.....>+[.....1.[.1...1.H [.1.1.1.[.1.H 1.H /+H <+1./+1.8 /+1.8 <+8 1.&.1.&.<+&.8 &.1.&.1.&.&.&.&.S.&.S.&.S.&.S.&.[ &.&.&.[ [ 7+S.&.[ [ [ [ 7+S.S.[ [ S.[ S.[ [ S.[ m.[ m.F+[ m.[ m.F+[ F+m.m.m.F+m.m.m.m.m.m.-.m.m.-.m.m.-.m.-.-.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.z+-.-.-.G+-.G+-.G+-.G+-.G+G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+A+G+A+G+A+]+G+w+G+C+]+y+]+C+y+H+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.j+b+b+b+j+b+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+d+b+d+b+d+b+d+b+b+d+b+d+b+d+$+b+d+$+d+d+$+$+d+$+$+$+d+$+c+O.$+$+O.$+c+O.$+O.$+O.c+O.c+O.O.O.O.c+O.O.c+O.=+U.=+=+U.=+U.=+=+=+=+=+*+P.=+*+=+*+g.*+P.*+P.U.P.*+*+o.P.P.*+P.P.P.C.P.C.P.C.P.C.C.P.C.P.C.P.P.P.i.P.C.P.C.P.C.o.C.P.P.P.C.P.C.P.C.P.C.P.C.P.P.C.P.P.i.C.P.i.i.o.C.P.i.P.P.C.P.i.C.P.].P.].P.i.P.i.P.].P.P.P.o.P.'.P.P.g.g.g.g.g.P.P.g.P.g.P.g.g.g.g.g.g.Q.g.g.p.g.Q.g.Q.g.p.Q.p.g.p.g.p.g.p.g.O.g.p. .p.p.g.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.h.p.p.h.p.h.p.h.p.h.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h...h.h.[.h.[.h.[.h.[.[.h.[.h.[...h...[.....>+..>+[.1...1.[.1.[.1.[.1...[.1.1.[.H 1.H 1.H 1.8 1.1.H 8 1./+8 8 /+8 <+&.1.&.<+&.1.&.<+&.S.&.<+&.S.&.&.&.&.S.&.&.[ &.[ &.[ S.[ &.&.[ 7+[ [ <+[ S.[ 7+[ S.7+[ 7+[ 7+[ 7+[ 7+m.[ m.m.F+[ m.[ m.m.m.F+m.m.m.F+m.m.m.m.m.-.m.m.-.m.-.m.m.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.-.-.-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+]+G+]+G+G+A+]+A+]+A+]+A+H+]+A+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+j+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+d+b+b+b+b+b+b+d+b+d+d+$+d+b+$+$+d+$+$+d+$+$+$+$+$+$+d+$+$+O.$+$+c+$+c+O.O.$+=+$+=+c+O.O.O.c+O.c+=+O.=+c+U.=+=+=+=+U.=+=+P.=+U.P.U.P.U.*+g.P.P.P.*+P.o.*+P.*+o.P.P.P.*+P.P.C.C.P.C.P.P.C.P.C.P.P.C.P.C.P.C.C.i.C.P.C.P.i.P.C.P.C.P.C.P.P.C.P.P.C.P.C.P.C.P.C.P.C.C.P.P.C.o.C.P.i.P.C.i.C.o.i.o.P.i.P.C.P.i.o.i.].P.i.P.].P.P.P.o.P.g.o.P.P.g.P.g.g.g.g.g.g.g.P.g.7.g.g.g.g.Q.g.g.g.Q.g.p.g.g.g. .g. .g.Q.g.p. .p.g.p.g.p.p.p.g. .p.p.p.p.p.p.p.p.p.h.p.h.p.p.h.p.h.p.h.p.h.p.h.p.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h...h.h.[.h.h...h...h...[.h.>+..[...>+......[.........[.1...1.1.H ..1.H 1.H 1./+H /+H 1.1.1.H 1.1./+8 <+8 1.&.8 &.1.&.&.8 <+&.<+1.&.&.&.S.&.S.&.[ &.S.&.[ &.[ &.[ [ [ S.[ <+[ [ [ 7+S.[ S.7+[ [ S.[ m.[ m.[ m.[ m.[ F+S.m.[ m.m.F+[ m.m.m.F+m.m.m.m.m.-.m.m.-.m.-.m.-.-.-.m.-.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.G+-.G+-.G+G+-.G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+]+G+A+G+A+G+H+]+A+]+A+]+C+H+]+A+]+C+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+j+b+b+j+b+j+b+j+b+b+b+b+b+b+b+b+b+b+d+b+b+b+d+b+d+d+d+b+d+b+d+b+d+b+d+d+$+d+$+d+$+$+$+d+$+d+$+$+$+-+$+O.$+$+O.$+c+O.c+O.O.O.O.c+O.c+O.c+O.O.c+O.=+=+O.=+U.=+=+g.=+U.=+P.=+*+*+P.=+*+U.*+g.*+*+P.o.*+P.*+P.*+P.P.C.P.P.P.C.P.C.P.P.C.P.C.P.C.P.P.C.P.P.P.C.P.i.C.P.C.P.i.P.C.P.C.C.P.C.C.P.C.C.C.C.C.C.C.P.P.C.P.i.P.P.C.P.C.P.o.i.P.C.P.C.o.C.o.i.P.i.P.i.].P.i.P.].P.o.P.o.P.g.P.g.o.g.P.g.P.P.P.g.7.g.g.g.P.'.g.7.g.7.g.Q.g.g.g.Q.g.Q.g.Q.g.p.g.p.g.g.p.g.p. .g. .p.p.p. .p.p.p.p.p.p.p.p.p.p.p.p.h.p.p.p.h.p.h.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.s h...[.h.[.h.h.[.h.[.h.[.[.h...[.h...>+[...>+[.1.>+../+[.1...[.1.[...1.[.1.H 1.H H 1.H 1./+8 /+8 1.&.1.8 <+8 &.&.1.&.<+&.<+&.<+8 <+&.&.1.&.S.&.&.&.&.<+[ &.[ &.[ &.[ &.[ &.[ [ [ [ 7+S.[ [ [ [ S.[ [ S.[ [ S.7+[ [ m.7+m.[ m.[ m.[ F+m.m.F+m.m.m.m.F+m.m.m.m.-.m.m.-.m.-.m.m.-.m.m.-.-.m.-.-.-.m.-.-.-.-.-.-.B+-.-.-.-.-.G+-.-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+]+G+w+A+C+]+y+H+w+C+H+y+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+d+b+d+b+d+b+b+d+b+d+d+b+$+d+$+d+b+d+$+d+$+d+d+$+d+$+$+d+-+$+$+-+$+c+O.-+O.$+c+O.O.c+O.c+O.-+O.=+O.c+=+U.=+=+U.=+=+=+U.=+=+=+=+P.U.*+g.P.U.*+P.P.P.*+o.P.*+*+P.*+P.P.P.P.C.P.C.P.C.P.P.C.P.C.P.C.P.C.P.C.C.P.C.C.C.P.C.P.C.P.C.C.C.C.C.C.C.C.C.P.C.C.C.C.C.P.C.C.P.C.C.C.C.C.C.C.P.C.P.C.C.P.C.P.C.C.P.C.i.C.C.].C.P.C.i.].i.P.i.].P.P.P.o.P.o.P.P.g.P.g.g.g.P.g.P.g.g.g.P.g.g.g.g.g.g.g.Q.g.g.Q.g.Q.g.Q.g.p.g.g.p.g.p.g.p.p.p.g.p. .O. .p. .p.p.p.p.p.p.p.p.p.p.h.p.h.p.p.h.p.p.h.h.p.h.p.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.[.h.[.h.h.[.h.h.[.h.>+..[.....[.....[...1.....1.[.1.[.1.[.H 1.[.1.H /+1.H 1.H 1.H 8 /+H 1./+1./+&.1.&.<+8 &.8 &.1.&.&.&.1.&.<+&.&.&.&.&.S.&.<+&.S.&.&.[ &.[ &.[ <+[ &.[ [ &.7+[ S.7+[ 7+S.7+[ 7+[ m.[ 7+[ m.[ m.7+m.[ m.[ m.m.m.m.F+m.m.m.m.m.m.m.m.-.m.m.-.m.-.-.m.-.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.G+-.z+-.-.G+-.z+-.G+G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+A+G+A+G+A+G+A+]+G+A+]+A+H+w+C+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+j+b+j+b+b+b+j+b+b+b+b+b+d+b+b+d+d+b+d+b+d+b+d+b+d+b+d+d+b+d+d+d+d+$+d+d+d+;+d+d+-+d+-+$+-+-+$+$+-+$+$+O.$+$+O.c+O.O.c+c+O.O.c+O.c+O.=+U.O.=+=+U.=+=+U.=+=+=+P.U.P.U.*+P.*+*+P.*+o.*+P.*+P.*+P.P.P.P.C.*+C.C.P.C.P.C.P.i.X.P.C.P.i.C.P.C.P.C.P.C.P.C.P.C.C.C.C.C.C.C.C.P.C.C.P.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.P.C.o.C.C.i.C.C.P.C.C.i.C.P.i.i.i.o.i.P.i.].i.].P.i.i.].i.P.i.].P.'.P.'.o.P.o.P.o.P.g.P.g.g.P.g.g.g.7.g.g.7.g.g.g.g.Q.g.g.g.p.g.g. .g.p.g. .g.g.p.g.g.p. .O. .p.p.p.p.p.p.p.p.p.p.h.p.p.p.p.p.p.h.p.p.h.h.p.h.h.h.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.[.h.s [.h.[.h.h.h.[.h.h.[...h.[.[...h.>+[.>+>+..>+[.../+..[.....H 1.[.1.H 1.H 1.H /+8 /+H H 1.H 1.&.1.8 8 1.{.<+8 &.8 &.<+&.&.&.1.&.<+&.&.&.S.&.S.&.&.[ &.[ &.[ &.[ &.[ &.[ 7+S.[ [ [ S.[ [ S.[ S.[ [ [ [ S.[ F+[ [ S.F+[ m.[ m.F+m.m.m.F+m.m.m.F+m.m.m.-.m.-.m.m.-.m.-.m.-.m.-.m.-.m.-.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.D+x+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+]+G+]+G+A+]+y+]+y+C+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.b+b+b+b+b+j+b+b+b+b+b+b+b+b+b+d+b+b+d+b+d+b+d+b+d+d+d+b+d+d+d+d+b+d+d+;+d+;+$+d+O.d+$+d+-+d+$+-+-+c+$+=+$+c+O.c+O.c+O.O.O.c+O.O.c+U.c+O.c+=+U.=+=+=+=+=+=+P.U.*+P.*+*+P.U.P.*+o.P.*+P.*+P.P.P.*+P.C.P.P.C.P.P.C.P.C.P.X.C.P.X.C.C.C.P.C.C.C.C.C.C.C.C.C.C.C.P.C.C.P.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.i.C.C.C.C.C.C.C.C.i.C.C.i.C.i.C.C.C.i.C.i.C.o.C.P.i.i.].P.i.P.].P.P.].P.o.P.P.'.P.'.g.'.g.'.g.7.g.7.g.g.g.g.7.g.7.g.7.g.g.Q.g.Q.g.g.Q.g.Q.g. .O.g.p.g.p.p.g.p.g.p.g.p. .p. .p.p.p.p.p.p.p.p.p.h.p.h.p.h.h.p.h.p.h.p.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.[.h.s [.h.h...[.[.h.[.h...[...[.....[...[...1...[.1.[.1.[.>+H 1.[.1.[.1.H 1.H H 1./+8 /+8 /+1./+&./+8 &.1.&.<+&.8 <+8 <+&.<+8 <+&.S.&.&.&.<+[ &.<+&.[ &.[ &.[ &.[ [ &.[ 7+<+[ 7+[ S.[ 7+[ 7+[ S.7+[ [ [ m.[ F+S.[ m.[ m.[ m.F+[ m.m.[ m.m.m.F+m.m.m.m.-.m.m.-.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.z+-.G+-.x+D+x+-.G+-.G+G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+A+G+A+G+A+C+w+C+]+A+C+C+]+y+C+]+H+w+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+j+b+b+j+b+b+b+b+b+b+b+b+d+b+d+u+d+b+d+b+d+d+d+d+b+d+;+d+;+d+;+d+d+;+d+d+d+d+d+d+d+-+d+-+d+-+c+$+$+O.O.$+c+O.c+O.O.O.c+c+O.O.c+U.O.=+U.c+U.=+=+U.=+U.=+U.P.U.*+=+U.P.U.*+P.*+P.*+P.P.P.o.P.*+C.P.P.C.P.C.P.C.P.P.C.P.C.C.C.C.C.,+C.C.C.C.i.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.i.C.C.i.C.i.C.i.C.i.o.C.i.C.o.i.i.].i.P.].P.].P.o.P.P.P.P.P.g.P.g.].g.P.7.g.g.g.g.g.g.g.<.g.g.Q.g. .g.Q.g.p.g.Q. .g. .g. .g.p.g.p. .p.g.p.p.p. .p.p.p.p.p.p.p.p.p.p.p.p.p.p.h.p.h.p.h.h.h.p.h.p.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.s h.h.[.h.s h.h.h.[.h.h.h.[...h.[.h.h.[.>+[.>+..>+..>+[.1...>+H ..1.H [.[.1.[.H [.H 1./+1.H H 1.H 1.H 1.8 1.&.<+&.1.&.8 &.<+&.<+8 &.<+&.1.&.&.&.<+&.[ &.S.&.[ &.&.[ &.[ [ &.[ [ &.S.[ [ &.S.7+S.[ [ S.7+[ [ m.[ 7+[ m.[ [ m.F+m.[ m.[ m.m.F+m.m.m.F+m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.-.m.-.-.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.G+-.G+-.-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+G+]+A+A+]+y+]+A+]+y+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.b+j+b+b+b+b+b+b+b+b+d+b+u+d+b+d+b+d+d+u+d+b+d+b+d+d+d+;+d+d+d+d+d+d+d+;+d+d+-+d+-+d+d+d+-+$+d+-+-+d+c+O.O.c+$+O.c+c+O.O.c+O.=+O.c+=+=+U.=+U.=+=+=+=+=+*+=+=+*+P.*+*+P.*+P.P.*+P.P.*+P.P.P.C.P.P.C.P.C.P.C.P.C.C.C.C.C.C.,+X.C.C.C.X.C.C.X.C.C.X.C.C.X.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.X.C.X.).C.X.).C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.).C.!.C.C.C.i.C.C.i.C.C.i.o.i.i.].P.i.P.i.P.].P.P.].P.'.o.'.P.].g.P.g.P.g.g.7.P.g.g.g.7.g.g.<.g.g.Q.g.Q.g. .g.Q.g.Q.g.Q.g.Q.g. .p.p.g. .p. .p.g.p. .p.p.p.p.p.p.p.p.p.p.h.p.h.p.h.p.h.p.p.h.h.h.h.h.h.p.h.h.h.h.h.p.h.h.s h.h.h.h.h.h.h.h.h.[.h.[.h.[.h.[.h.[.[.h.[.[...h.[...[...[.......[...1.[.[...1.1.H 1.H 1.1.H H H 1.H H /+8 /+8 /+<+H 8 /+8 /+&.<+&.8 &.&.<+8 &.<+&.&.&.[ &.<+&.&.S.&.&.S.&.[ &.&.[ &.S.[ [ [ [ 7+[ [ 7+S.7+[ [ S.7+[ S.[ [ [ 7+m.[ m.[ m.F+[ m.[ m.m.F+m.m.m.m.m.m.m.-.m.m.m.-.m.-.m.-.m.m.-.m.m.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.-.G+G+-.G+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+C+G+A+G+A+]+A+G+]+A+]+C+y+H+C+H+]+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+b+b+b+b+b+b+b+b+b+u+d+b+d+b+d+d+u+d+d+;+d+;+d+;+d+;+d+d+;+;+d+;+d+;+d+d+-+d+-+d+d+-+-+d+-+-+c+O.c+O.c+$+O.c+O.c+O.O.c+-+U.c+=+O.=+U.=+=+=+=+=+g.*+U.*+g.*+P.U.P.*+P.P.P.*+P.P.P.P.C.P.C.P.P.C.P.C.P.C.P.i.C.C.,+C.C.X.C.C.X.C.X.C.X.C.C.C.C.C.C.X.C.C.C.X.C.X.C.X.C.X.C.X.C.X.C.X.).X.).C.).C.X.).C.X.C.).C.C.C.C.C.C.C.C.C.C.C.C.).C.C.).C.!.C.).C.i.C.C.i.i.C.P.C.i.i.i.].i.].i.i.].i.].i.P.P.].P.P.o.P.g.'.P.g.'.g.P.g.g.g.7.g.'.g.'.Q.g.g.Q.g. .g.Q.g. .Q.g. .p. .g.p.p.g.p.g.p. .p.p. .p.p.p.p.p.p.p.p.p.p.p.h.p.p.h.p.h.h.p.h.p.h.h.h.h.p.h.h.p.h.h.p.h.h.h.h.h.h.h.s h.[.h.s h.[.h.[.h.h.[.h.[.....h.[...[.>+[...>+[.>+1.1.[...1.1.H [.[.1.[.H [.H /+8 /+H <+H 1.8 /+8 1.8 /+8 1.&.8 &.8 <+&.<+8 &.<+&.&.<+&.<+&.[ <+[ &.S.&.[ &.[ &.[ [ &.7+&.[ &.[ S.[ S.[ [ S.[ S.[ [ m.7+[ 7+m.[ S.F+[ m.[ m.[ m.F+m.[ m.m.F+m.m.m.m.m.m.m.-.-.m.m.-.m.-.m.-.-.-.-.m.-.m.-.-.-.-.-.-.-.-.-.G+-.-.-.G+G+-.-.G+-.G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+G+A+]+A+w+C+y+]+C+y+]+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+b+j+b+b+b+b+d+u+d+b+d+b+d+u+d+d+d+;+d+d+d+d+d+d+d+d+d+;+d+d+d+d+d+d+-+d+d+-+d+-+-+d+d+-+-+-+-+-+-+-+O.c+O.O.c+O.c+O.O.U.c+O.=+=+=+=+=+U.=+U.*+=+*+P.=+*+P.*+P.*+P.*+P.P.P.P.C.P.C.P.C.P.P.C.P.C.P.C.C.C.X.P.C.C.C.X.C.X.X.C.X.C.C.C.X.C.X.C.X.C.C.C.X.C.C.C.C.C.C.).C.).C.).C.s.C.C.C.X.C.X.C.).X.C.).X.C.C.).C.).C.).C.).C.).C.).C.).X.).X.).C.C.C.).i.C.C.C.i.i.].P.C.].i.i.i.i.i.i.].i.P.].].P.'.P.'.P.].P.].P.o.P.'.g.P.g.g.g.7.g.g.'.g.Q.g.g.Q.g. .g.Q.g.p.g.g. .p. .g.p. .p.p.g.p. .p.p.p.p.p.p.p.p.p.p.p.p.p.p.h.p.h.p.p.h.h.h.h.p.h.h.h.h.p.h.h.h.h.h.p.h.h.s h.I.h.[.h.s I.h.[.h.h.[.[.h.[...[.h.[.h.[...[...[.....1.[...[.1.[.[...1.H [.1.H 1.1.H H H 1.H 1./+H 8 /+/+8 &./+&./+&.&.&.&.8 &.<+&.8 <+&.&.&.&.S.&.&.&.&.&.[ &.[ &.[ &.&.[ [ [ S.7+[ &.7+[ [ S.7+[ 7+S.[ [ [ m.[ [ F+[ m.m.[ F+m.[ F+m.[ m.m.m.m.m.m.m.m.m.-.m.m.m.m.-.m.-.m.-.m.m.-.m.-.-.-.-.-.-.-.-.-.-.z+-.-.-.G+-.-.-.G+-.-.G+G+-.-.G+G+G+-.G+G+G+G+G+G+G+G+G+]+A+G+A+]+G+]+A+]+A+]+C+w+C+y+C+]+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.b+b+b+b+b+b+u+b+d+b+d+u+d+d+d+u+d+d+u+d+g+d+g+d+;+d+;+d+;+d+;+d+f+d+d+d+-+d+-+d+-+d+-+-+-+-+c+d+c+-+c+-+-+c+O.c+O.=+c+=+-+U.=+U.=+U.=+=+=+=+*+U.*+U.*+P.U.P.*+o.P.P.P.*+P.P.C.P.P.C.P.P.C.P.C.P.C.C.P.X.P.C.X.C.X.C.C.X.C.X.X.X.C.X.C.C.X.C.C.C.X.C.X.C.X.X.).X.X.X.X.X.X.X.X.).C.s.).V.).s.C.V.C.).X.C.).).X.C.s.C.X.C.).X.C.X.).C.C.).).C.).X.).).i.C.).i.!.C.C.C.i.C.].i.i.].i.].i.i.i.].i.i.7.].i.].i.'.P.'.P.'.'.g.7.g.'.g.7.g.'.7.g.7.'.g.7.'.g.Q.g.Q. .g.Q. .g.g. .p. .p.g.p.g.p.p.g.p. .p.p.p.p.p.p.p.p.p.p.p.h.p.p.p.h.p.p.h.p.h.h.p.h.p.h.h.s p.h.h.h.h.h.p.h.h.h.h.I.h.[.h.[.h.[.h.s h.[.h.[.[.[.[...[...>+..>+[.>+..>+[...>+..1.[.[.1.H [.H H [.1./+H /+H H 1.H /+8 H /+8 8 8 &.1.{.1.&.&.1.&.&.<+8 <+[ <+&.&.&.&.S.&.<+&.S.&.&.[ [ [ &.[ &.[ &.S.[ [ [ S.7+[ S.[ [ [ S.7+[ 7+[ m.[ [ [ m.[ m.[ m.[ m.F+m.m.F+m.m.F+-.m.m.m.-.m.-.m.-.m.-.-.-.m.-.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.G+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+G+A+G+]+A+G+]+y+]+C+]+H+]+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+b+b+u+b+b+d+b+d+u+d+d+d+u+d+d+g+d+d+;+d+d+d+d+d+d+;+d+d+f+d+d+d+-+d+-+d+-+d+-+d+-+-+-+d+-+-+-+-+-+-+c+O.c+-+O.c+O.-+U.c+=+U.=+=+=+=+U.P.U.=+P.=+*+U.P.*+P.*+P.*+P.P.P.C.P.P.C.P.C.P.C.P.C.P.C.,+C.C.C.X.C.C.C.C.X.C.X.X.X.).X.).X.s.X.C.X.X.X.C.X.C.X.C.C.X.).C.).C.).C.).C.X.V.C.s.C.X.).X.).C.V.).C.V.C.X.).C.X.).s.C.).).).C.s.).C.X.).C.).X.).C.).C.).C.!.).i.C.i.C.i.C.i.C.i.i.].i.i.i.].i.].P.7.P.].P.].P.'.P.'.o.'.P.7.g.7.g.g.'.g.7.'.7. .7.'. .'.Q. .g.p.g.p.g. .g. .p. .p.g. .p.g.p.p. .p.p.p.p.p.p.p.p.p.p.h.p.h.p.p.h.p.h.p.h.h.h.h.h.p.h.s h.p.h.p.h.h.p.s h.I...I.h.s h.s h.[.h.[.h.[.h.[...h.[.h.[.[.[.[...[.[.1.[.1.[.1.[.1.[.1.[.1./+H 1.H 8 H 8 /+1.H &.H 1.&.1.&./+8 /+&.&.&.<+&.&.&.8 &.<+&.&.&.&.S.&.&.&.[ &.[ &.&.[ &.&.[ &.[ [ &.7+[ 7+S.7+[ S.7+[ 7+S.7+[ S.[ S.[ [ m.m.m.[ m.[ m.[ m.[ m.F+m.m.F+m.m.m.m.-.m.m.m.m.-.m.-.m.m.-.m.-.m.m.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.-.G+-.G+-.G+G+D+G+G+-.G+G+G+G+G+G+G+G+G+A+G+A+]+G+]+G+A+]+y+A+]+C+y+H+A+H+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+b+b+d+b+d+b+d+u+d+d+d+u+d+d+;+d+d+;+d+d+;+d+d+g+d+f+d+;+d+d+d+;+d+d+d+-+d+f+-+-+-+d+c+-+-+-+-+c+-+=+-+-+=+-+c+-+U.c+=+=+U.=+=+U.=+U.=+*+=+*+U.*+*+P.*+P.*+P.P.P.C.P.P.P.P.C.P.C.P.C.i.C.C.X.C.C.P.C.C.C.C.C.X.X.C.X.X.X.).X.X.X.X.X.C.s.X.X.).X.V.).X.).V.C.V.X.V.X.V.s.V.X.s.).s.).V.).V.).V.X.V.C.V.).C.).).V.).).C.).X.).X.).).C.s.).s.).s.C.).C.).C.C.).C.C.C.!.C.].C.].i.o.i.].i.i.i.].i.i.i.].i.].7.].g.].P.P.o.'.P.o.'.P.'.g.7.g.7.7.g.7.g.'.Q.'.Q.g.'.Q.g.Q.g. .g. .p.g.p.g.p.p.p.p.p. .p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.h.p.h.p.h.h.p.h.p.h.s h.h.p.h.h.h.h.h.s h.h.s h.h.[.I.h.I.[.h.[.h.[.[.h.[.[.[.[...[...[...>+....[...[...[.1.[.1.[.1.[.H [.H /+H /+1.H H /+1.H 8 /+H /+8 8 <+8 {.8 &.8 &.1.&.<+8 &.&.<+&.&.&.[ &.&.<+&.<+[ &.&.[ &.7+S.&.[ [ [ &.[ [ S.7+[ [ S.[ [ m.[ [ [ [ m.[ [ [ m.F+m.[ F+[ m.[ m.m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.G+-.-.-.-.G+-.G+-.G+G+G+-.G+-.G+G+-.G+G+G+G+G+G+G+]+G+G+G+A+G+A+]+G+C+A+]+y+]+C+]+y+]+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+b+b+u+d+u+d+u+d+d+u+d+d+d+g+d+d+g+d+d+;+d+d+;+d+d+d+d+f+d+;+d+d+-+d+-+d+-+d+-+d+-+-+-+-+c+-+c+-+-+-+c+=+-+c+-+U.=+=+U.=+=+=+=+=+*+=+*+U.*+P.*+P.*+P.*+P.P.P.P.P.*+C.P.C.C.P.C.P.C.C.P.C.P.C.P.X.C.X.C.X.C.X.X.C.X.X.X.s.X.s.X.s.X.).X.X.C.V.X.).X.X.).V.C.s.).).).).).C.).).V.C.V.X.V.).V.).X.).).s.).V.).V.).X.).V.).X.).X.).).X.).).s.).).).).X.).C.).C.).C.).C.).C.!.i.C.i.i.i.i.i.].i.i.i.].i.i.i.i.].i.i.'.].'.i.P.'.].P.'.g.i.'.7.'.g.7.g.7.7.g.7.'. .g. .g. .g.Q.g.p.g. . .p. .g. .g. .O.p. .p.p.p.p.p.p.p.p.p.p.h.p.h.p.p.h.p.h.p.h.p.h.h.p.h.M h.s p.h.p.h.I.h.h.p.h.s h.h.[.h.s I.s I.s I.[.s [.h.[.[.h.[...[.[.[.>+..[.1.[.1.[.1.[.H H [.1.H 1.H 1.H H /+1.H H /+H 8 /+8 /+&./+&.8 &.{.<+&.&.&.&.&.<+&.&.&.<+&.&.&.S.&.[ &.&.[ &.[ &.[ &.7+&.[ &.[ S.[ 7+[ S.[ [ 7+S.[ 7+[ [ 7+[ m.[ m.[ m.[ m.[ m.F+m.m.F+m.m.m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.G+-.-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+]+A+]+G+]+A+]+A+]+y+C+y+]+y+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.u+d+b+d+b+d+d+d+u+d+d+d+u+d+d+g+d+d+;+d+d+;+d+d+f+;+d+d+d+d+d+-+f+d+-+d+-+-+-+d+-+f+-+-+-+-+=+-+-+c+=+-+-+c+-+=+=+c+=+=+U.=+U.=+U.=+*+=+P.U.*+P.*+P.*+P.P.*+C.*+C.P.P.C.P.P.C.P.X.P.X.C.C.X.C.C.C.C.X.C.X.X.C.X.X.).X.s.X.X.s.X.).V.s.s.V.).s.s.X.).s.X.).s.V.X.V.X.V.s.V.V.V.).s.).V.).s.).V.s.s.V.).V.).s.).V.).C.).V.).s.).V.).s.).s.).s.s.).s.).).).X.).).).C.!.C.).C.C.!.C.C.].C.i.i.i.C.i.i.i.].i.i.i.].i.i.i.].'.].P.'.].P.'.P.'.P.7.'.7.7.7.7.7.'.7.Q.7.g.<. . .g.Q.g. .g. .g.p.p. .p.p. .p.p. .p.p.p.p.p.p.p.p.p.p.p.p.h.p.p.h.M p.h.p.h.h.p.h.h.p.h.s h.h.h.s p.s h.I.h.I.h.I.h.[.h.[.[.[.h.[.I.[.[.[.[...[.h.[.....[.1.[...>+[.1.[.1.[.1.H [.H [.H /+1.H H /+1.H 8 /+8 /+8 /+8 &./+&.&.8 &.8 &.8 <+8 &.&.<+&.&.&.<+&.&.S.&.S.&.[ &.[ &.[ [ &.[ [ [ 7+[ [ S.7+[ 7+S.[ [ S.[ 7+m.[ m.7+m.[ m.[ F+[ m.[ m.[ m.m.F+m.F+m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.m.-.-.m.m.-.m.-.-.-.-.-.-.-.z+-.-.G+-.-.G+-.G+G+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+A+G+]+A+]+A+]+]+C+y+]+H+A+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+d+u+d+u+d+u+d+d+d+u+d+d+g+d+d+;+d+d+g+d+d+;+d+d+d+f+d+;+f+d+d+d+-+d+f+-+d+f+-+-+-+c+-+c+-+-+=+-+-+=+-+=+=+=+=+=+=+U.=+=+=+=+*+=+*+U.*+*+*+P.*+P.P.P.*+C.P.P.P.P.C.P.C.P.X.P.C.C.C.P.C.C.P.C.X.C.X.C.X.C.X.X.X.X.X.s.X.X.s.X.V.s.C.V.C.s.s.V.C.s.s.V.s.V.).s.V.).V.).V.s.).s.s.s.V.).s.V.s.s.).s.).s.).V.).V.).s.s.s.).V.).).).V.).s.).s.).).s.).).s.).).C.).C.).).!.C.!.).C.C.!.C.].C.i.i.].i.i.i.i.].i.].i.i.].7.i.7.7.'.i.'.7.'.7.'.'.P.7.P.'.7.'.7.7.'.'.g. .g.g.Q. . . .p.g.p. . .g.p. .g. .p. .p. .p.p.p.p.p.p.p.p.p.p.p.p.p.h.p.p.h.p.h.p.M h.p.p.s p.h.M h.p.h.h.h.s h.I.h.s h.s h.I.s I.s [.[.[.s [.[.h.[...[...[.[...[.>+[.....[...1.[.H /+1.H 1.H H /+H 1.H H /+H H /+8 /+&.H 1.&.H &.&.<+&.&.&.&.<+&.&.&.<+&.&.&.[ &.&.[ &.&.&.[ &.[ &.[ [ &.[ <+[ &.[ [ S.[ S.[ [ 7+[ m.[ [ [ [ [ [ m.[ m.[ m.[ m.F+m.F+m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.-.G+-.G+-.-.G+G+G+G+G+-.G+G+G+G+G+G+G+G+G+C+G+A+]+G+]+G+A+w+G+]+A+y+]+C+A+]+H+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+u+d+b+d+u+d+b+d+b+d+d+;+d+d+;+d+;+d+d+d+d+d+f+d+;+d+d+d+d+d+-+-+d+-+-+d+-+-+c+-+-+-+-+-+-+c+-+=+=+-+=+=+-+=+=+=+=+=+=+U.*+U.*+U.P.*+P.*+P.*+P.P.*+P.P.P.P.C.C.C.P.C.P.C.P.C.C.C.C.C.X.C.X.C.X.C.X.X.X.X.X.).X.s.s.X.V.s.V.s.s.X.V.s.s.s.V.).s.V.V.).V.X.V.V.).V.s.V.s.).V.s.V.).s.s.V.).s.).V.s.V.s.s.s.).s.).s.).).s.).).V.s.).).s.).s.s.s.).s.s.).).).).).).C.).C.).C.).C.!.).i.).C.].C.i.i.i.].i.i.i.i.i.].i.].].].].i.'.7.i.P.i.'.i.'.7.'.7.7.7.7.7.'.7.<.g.<.g. .g.Q.g. .g. .g.g. .p.g.p.p. .p. .p. .p.p.p.p.p.p.p.p.h.p.p.p.h.p.h.p.p.h.p.h.p.h.s p.h.M h.h.s h.M h.I.h.h.s I.h.I.I.s h.[.[.I.s I.[.s [.[.h.[.>+[.[...[.[...H >+H >+1.[.[.1...H /+H /+H H H H /+1.H 8 /+8 H &.8 /+&.8 <+&.8 {.1.&.8 &.8 <+&.&.&.<+&.&.&.&.&.<+[ <+[ &.&.[ &.[ &.[ &.[ 7+[ [ [ [ 7+[ 7+S.[ [ [ 7+[ S.F+[ m.[ m.F+m.[ F+m.[ m.m.[ m.F+m.m.m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.G+G+-.G+-.z+G+G+D+G+G+G+G+G+G+G+G+G+]+G+A+G+A+]+G+C+w+C+]+C+y+]+C+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+d+b+d+u+d+d+g+d+g+d+g+d+d+g+d+d+d+d+;+d+f+;+d+d+d+d+;+-+d+-+d+d+-+d+-+f+-+-+-+-+-+c+-+=+-+-+-+=+-+=+=+-+=+=+=+=+=+=+=+=+=+P.=+*+*+P.*+P.*+P.*+P.C.P.C.P.C.P.P.P.,+C.P.X.C.C.,+C.X.C.C.C.X.C.C.X.C.X.X.).X.X.V.X.V.s.s.s.s.V.).V.s.s.V.V.).V.V.).s.V.s.s.V.).V.s.s.).V.r.s.).s.r.V.s.s.s.r.V.r.).r.).r.).r.s.s.).r.V.).r.s.).).s.s.s.r.).r.).r.).).s.).s.).).s.).C.).).C.).C.).C.C.i.!.C.!.].C.!.i.i.!.].!.i.i.+.i.7.i.7.].i.i.'.7.'.i.7.P.7.i.i.'.7.'.7.g.7.'.7.g.'.g.g. .g.<. .Q. .p.g. . .p. .g.p.p. .p.p. .p.p.p.p.p.p.p.p.h.p.p.p.p.h.p.p.h.p.h.M p.h.p.h.M p.h.I.h.h.s h.I.I.h.s h.s I.[.M I.h.[.[.[.I.[.h.[.[...[...[...[...[...[...[.H 1.[.H /+H [.H 1./+H /+H H /+H H /+/+&./+8 &./+&.{.&.&.&.&.&.<+&.&.&.<+&.&.&.S.&.&.[ &.&.&.[ &.[ &.[ &.[ [ 7+&.[ [ [ 7+S.[ [ S.[ 7+S.[ [ [ [ [ m.[ m.[ m.[ m.[ m.[ m.[ m.m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.z+-.G+-.-.G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+w+A+G+G+]+G+]+A+]+w+C+w+H+y+]+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+d+u+d+g+d+u+d+d+d+d+d+d+g+d+d+;+d+;+d+d+;+d+d+f+d+f+d+d+d+d+d+f+-+d+-+-+-+d+f+-+-+-+-+=+-+=+-+=+-+=+-+=+=+=+=+=+=+=+=+=+*+=+*+*+=+P.*+P.*+P.P.P.P.P.P.C.P.P.X.P.C.P.X.C.P.C.X.C.C.*+X.X.C.X.X.X.X.X.X.X.V.s.X.s.s.s.X.s.V.s.V.V.s.V.s.s.V.s.s.s.V.s.s.V.).V.r.s.V.r.r.).V.r.V.).r.).r.).r.).r.).r.s.r.s.r.).V.s.r.).s.s.).s.s.r.).r.).r.s.).r.).r.).).).).s.).).).).).).).C.).i.).!.).C.!.C.!.C.].!.].i.i.].i.!.].i.].i.i.7.].i.].].i.'.i.'.i.7.7.i.7.7.7.'.'.7.'.<.'.Q.g.Q. .g.Q. .g. . .g.p.g.p. . .g.p. .p.p.p.p.p.p.p.p.p.p.p.p.h.p.h.p.h.p.h.p.p.h.p.s p.h.h.M p.s p.h.M I.h.s I.I.I.[.h.I.[.s [.s I.[.h.[.[.s [.[.h.[.[.[...[.>+[.1.[.1.[.[.1.H [.1.1.[.H H /+H H 1.H &.H 8 H H /+{.8 &.8 <+8 &.8 /+8 &.8 <+&.&.&.<+&.&.&.&.&.&.S.&.&.[ &.&.[ &.[ &.[ [ &.[ &.[ 7+[ 7+[ S.[ 7+m.[ 7+m.[ [ S.7+m.[ F+[ m.[ F+m.m.F+m.m.m.m.m.m.-.m.m.m.m.-.m.-.m.-.m.-.-.-.m.-.-.-.-.-.-.-.-.-.-.B+-.-.-.G+-.-.x+-.G+-.G+G+G+G+-.G+G+-.G+G+G+G+G+G+G+G+]+G+A+G+A+G+]+A+]+y+C+]+C+y+]+C+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+d+u+d+d+d+d+d+u+d+g+d+d+d+;+d+d+d+d+d+f+d+;+d+d+d+d+d+-+f+d+-+d+f+d+-+f+-+-+c+-+c+-+c+-+-+=+-+=+=+e+=+=+=+=+=+=+=+=+*+=+*+=+P.*+*+P.*+P.P.*+C.P.C.P.C.P.C.P.P.C.C.P.C.C.X.*+C.X.X.C.X.X.C.X.C.X.X.).X.X.V.s.s.s.V.s.s.V.s.s.V.s.s.V.s.s.s.V.s.V.).V.r.s.r.V.).r.).V.r.r.).r.V.r.r.r.r.s.r.s.r.r.).r.).V.r.).r.).r.r.).r.).r.).r.s.r.).r.r.r.r.s.s.r.s.).).).).).).).C.).).).).C.).C.).!.).!.).!.C.!.].!.i.i.].i.!.i.!.].!.7.i.7.i.'.i.i.i.!.'.i.'.7.].7.7.'.7.'.7.'. . .g.g. .g.Q. .g.p. . . . .g.p. .p. .p. .p. .p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.h.p.M p.h.p.M p.h.h.I.h.M h.h.I.I.s h.s h.I.s I.h.I.[.s [.[.s [.[.h.[.[...[...[...[...[.[.[.1.[.[.1.H [.H /+H /+H H /+H H H 1.{./+&.H 8 /+H /+&.{.&.&.&.&.&.<+&.&.<+&.&.&.&.&.&.[ &.&.S.&.[ &.[ &.[ &.[ &.7+&.[ [ [ [ [ S.7+[ [ S.[ [ [ 7+S.F+[ m.[ m.[ m.[ m.m.[ m.m.m.F+m.m.m.m.m.m.m.m.-.m.m.m.-.m.-.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.x+-.-.-.-.G+-.G+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+w+A+]+A+A+]+y+]+C+y+]+A+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+u+d+d+d+u+d+g+d+;+d+d+g+d+;+d+d+;+d+g+d+d+d+d+f+d+;+-+d+d+-+d+f+-+-+-+-+c+-+-+-+-+=+-+-+c+-+=+e+-+=+=+=+=+=+e+=+=+*+=+P.*+P.*+*+P.*+P.*+C.P.P.C.P.C.P.P.C.P.C.C.C.X.C.X.C.C.X.X.C.C.X.C.X.C.s.X.V.X.V.X.s.s.V.s.s.s.V.s.s.s.s.r.V.s.r.r.V.r.r.r.r.r.s.s.r.s.r.r.r.r.r.s.r.r.r.s.r.).r.r.).r.r.).r.r.r.r.).r.).r.r.).r.r.r.).r.r.).r.r.).r.h r.).r.).).).s.s.).s.).).).).C.).C.).!.).!.C.).C.!.C.!.C.!.C.].!.i.i.].!.i.i.].!.].i.D i.i.'.!.7.!.i.7.i.7.'.g.'.7.'.7.'.Q.'.<. .g. .g. .p. . .g.p.g.p. .p. .p. .p. .p.p.p.p.p.p.p.p.h.p.h.p.h.p.p.h.p.h.p.h.p.s p.h.p.M M M I.h.I.s h.I.h.I.I.[.s I.[.[.h.I.[.h.[.h.[.[.h.[.[...[.[.[.[.[.>+[.1.[.[.1.[.[.H 1.H /+H /+H H /+8 /+H /+8 H 1./+{.&.&.&.8 &.H &.1.&.8 &.&.&.<+&.&.S.&.&.&.&.[ &.[ &.[ &.[ &.[ &.[ &.[ S.&.7+&.7+[ [ S.7+[ S.7+[ [ [ [ m.[ m.[ m.F+m.[ F+[ m.m.F+m.m.m.m.m.m.m.m.-.m.m.-.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.x+-.-.z+-.z+-.-.G+-.-.G+-.G+G+-.G+G+G+D+G+G+G+G+G+G+G+G+C+G+G+A+G+A+]+w+G+]+y+C+y+H+]+y+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+d+d+u+d+d+d+d+d+g+d+;+d+d+d+d+;+d+f+d+d+f+d+;+d+d+-+d+f+-+d+-+-+d+-+-+f+-+-+c+-+=+-+-+=+-+=+-+=+e+=+=+=+=+e+=+P.*+P.P.*+P.*+P.P.P.P.P.C.P.C.P.P.P.,+C.C.,+C.C.,+C.*+C.C.X.X.C.X.X.X.X.X.X.X.V.X.).V.s.s.s.s.s.s.V.s.r.s.r.V.r.s.r.r.V.r.r.r.s.V.r.s.r.r.r.r.r.s.r.r.s.r.r.r.).r.r.r.r.r.r.r.r.r.r.).r.r.r.r.r.r.).r.).r.).r.r.).r.r.r.G r.r.r.r.).r.r.).r.h ).).).).s.).).).).).).).).).!.).!.).!.!.!.!.!.!.].!.i.].!.!.i.!.7.!.i.i.!.!.i.!.7.!.].7.].'.7.'.g.7.'.'.'.'. .Q. .Q. .Q. .g.Q. . . . .g. .p. .p. .p. .p.p.p.p.p.p.h.p.p.p.p.p.p.h.p.p.p.p.p.p.p.h.p.s p.h.I.h.M h.I.M h.s I.s h.I.s I.s I.s [.I.[.[.[.[.[.[.h.[.[...[...>+H ..[.1.[.[.H 1.[.[.H H 1.H /+H H /+H 8 H {./+{.8 &.H /+8 {.<+&.&.&.&.&.<+&.&.&.&.<+&.&.&.&.S.&.&.&.&.&.[ &.[ &.[ [ 7+&.[ [ [ [ S.[ [ 7+[ S.[ [ m.[ m.[ [ [ [ F+[ m.[ F+m.m.m.F+m.m.m.m.m.m.m.-.m.m.m.-.m.m.-.m.-.m.m.-.-.-.-.m.-.-.-.-.-.-.-.-.z+-.-.-.G+-.-.G+G+-.G+G+-.G+G+G+G+G+-.G+G+G+G+G+G+G+w+G+]+G+]+G+A+C+A+]+C+]+C+]+A+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+d+u+d+d+u+d+u+d+d+d+d+d+g+d+;+d+d+d+d+;+d+d+d+d+-+d+f+d+d+-+-+d+-+-+f+-+-+-+-+-+=+-+-+=+-+e+=+e+=+=+=+e+=+=+*+=+*+=+P.P.P.P.P.P.P.*+P.P.P.*+P.C.P.C.*+P.C.C.*+X.C.X.X.C.X.C.C.X.C.X.C.X.s.X.X.X.V.X.s.s.s.V.s.V.r.s.r.r.V.r.r.s.r.V.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.).r.r.).r.r.r.).r.r.r.).r.r.r.r.r.r.).r.r.r.h r.r.r.G r.h r.h r.).).r.).r.).).).~.).).).).!.).).!.).).).!.).C.).C.!.].!.!.!.!.].i.!.].!.].!.!.i.!.!.i.!.7.!.7.i.'.].7.'.'.7. .7.'.g. .'. . . .Q. . .g. .p. .p. .p. .g.p. .p. . .p.p.p.p.p.p.p.h.p.h.p.M p.s p.s p.h.M p.p.h.M I.M h.I.s h.I.I.h.I.I.s h.I.[.I.s I.[.h.[.s [.[.[...[.[.[.[...[.[.>+[.[.[.1.[.[.1.H 1./+H [.H 1./+H H /+H &.H &./+H /+&.&./+&.8 /+8 {.8 <+&.&.&.<+&.&.&.<+&.&.&.&.[ &.[ &.[ &.&.[ &.[ &.7+[ &.[ 7+[ 7+S.[ [ [ S.7+[ [ [ m.[ m.m.[ m.[ m.[ [ [ m.m.[ m.m.F+m.m.m.m.m.m.m.m.-.m.-.m.-.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.G+-.G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+C+G+A+G+A+]+G+w+]+A+y+C+w+H+H+]+A+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+d+u+;+d+d+d+d+g+d+g+d+d+d+d+d+f+;+d+d+f+d+f+d+d+-+d+-+d+f+d+-+f+-+-+-+c+-+c+-+c+-+=+-+=+=+=+=+e+=+=+P.e+=+e+P.e+P.P.e+P.P.P.P.P.P.P.C.P.C.,+P.C.P.C.X.*+C.X.C.*+C.C.X.C.X.X.X.X.X.X.V.C.V.s.X.s.s.V.s.V.s.r.s.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.@.r.@.r.@.r.@.r.r.r.@.r.r.).r.h r.r.r.h r.@.r.@.r.@.r.@.r.r.h r.r.).s.h ).s.).).~.).).).).).).).).!.).!.).!.).!.).!.).].!.i.!.!.].!.!.!.i.!.!.!.!.!.!.i.+.!.D 7.'.'.7.'.'.'. .'.<.'.<.g. .g. . .p. .g. . . .p. .p.p. .p.p. .p.M p.M p.p.p.p.p.p.p.p.p.h.p.h.p.M p.p.h.M p.h.p.M I.p.I.M h.I.M h.[.I.I.s I.s [.[.s I.[.[.h.s [.[.h.[...[.[.[...[.[.1.[.[.1.[.H [.H H /+H /+H H H /+8 H H &.H H 1.{.1.{.8 &.&.&.&.&./+8 &.&.&.&.<+&.&.[ &.&.&.&.&.S.&.&.[ &.[ &.[ &.[ &.[ [ S.&.[ [ [ S.7+[ [ S.7+[ [ [ [ [ [ m.[ m.[ m.m.m.[ m.m.F+m.m.m.m.m.m.-.m.-.m.m.-.m.-.m.m.m.-.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+w+G+G+]+G+w+G+C+G+C+y+]+]+H+C+y+C+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+u+d+d+d+g+d+g+d+d+d+d+;+d+d+g+d+d+f+d+d+d+d+d+-+d+-+d+-+d+-+f+-+-+-+-+-+-+-+=+-+-+-+=+f+=+=+e+=+=+=+e+=+P.P.P.P.P.P.P.P.P.*+C.P.P.X.P.P.C.P.P.X.P.X.P.C.X.C.C.X.X.C.X.X.C.X.X.X.X.V.X.X.s.C.s.V.s.V.s.s.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.@.r.@.r.@.r.@.r.@.r.r.r.r.r.r.h r.r.).@.r.@.r.r.h r.@.r.r.@.r.G r.G r.@.h r.r.).h r.).r.).h s.).).~.).).).).).).).).).).).!.).!.).!.!.).!.!.].!.!.!.!.!.!.!.!.!.!.!.!.!.i.7.!.'.7.'.'.'.7.'.7.'.'. . . .<. .g. . . . . . .g. . . . .p. .p. .p. .p.p.M p.p.p.p.p.p.p.p.M p.M p.p.M p.p.I.M M I.s I.M I.I.M h.I.I.s [.I.s I.I.[.I.[.s I.[.[.[.[.[.[.[.[.[...[.[...[.[.H [.[.1.[.1.[.H 1.[.H /+H H H /+/+H {.<+{./+&.H &./+8 /+&.8 &.<+&.<+&.&.&.&.<+&.&.&.&.&.&.&.&.[ &.[ &.[ &.[ &.7+[ &.[ [ 7+&.S.7+[ S.[ 7+[ S.7+m.[ m.[ [ m.7+m.[ F+[ F+m.F+m.m.m.m.m.-.m.m.-.m.m.-.m.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.z+x+-.-.-.G+-.G+-.G+G+-.G+G+-.G+G+-.G+G+G+G+G+G+G+C+G+G+A+G+A+]+A+]+G+]+A+C+y+w+C+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+d+d+u+d+d+d+d+d+g+d+d+d+d+;+d+f+d+d+d+;+d+-+d+d+f+d+-+f+-+d+-+-+-+-+c+-+c+-+-+=+=+e+=+=+e+=+=+=+e+=+e+P.e+P.e+P.e+P.P.P.P.P.P.,+C.P.P.X.*+C.C.*+C.C.C.X.*+X.X.C.X.X.X.C.X.X.V.X.V.C.s.s.V.V.s.s.V.s.s.r.r.s.r.r.r.r.r.r.r.r.r.r.D.r.D.D.D.@.D.@.D.@.r.@.r.@.r.@.r.@.@.@.r.r.@.r.@.r.@.r.r.r.@.@.@.@.r.@.r.@.r.@.r.@.).@.r.@.r.r.@.@.r.@.@.@.r.@.h r.G h r.r.h r.h s.).).h s.).).).~.).).).).!.).!.).).!.).!.).!.].).].!.!.!.i.!.!.!.!.!.!.!.!.!.7.!.D '.'.'.'.7.'.'. .'. .7. .'. .g. .<. .Q. .g.Q.p. .p. .p. . .p.M p. .p.M p.p.p.M p.p.p.p.p.s p.p.h.M h.p.s p.s p.I.M I.M I.M I.I.s I.s I.I.s [.s [.s [.[.h.[.[.s [.[.h.[.h.[...[.[...[.>+[.[.1.[.H H /+H /+H /+H H 1./+H 8 H {.H H 1.{.H &./+&.&.8 &./+&.8 &.&.&.<+&.&.&.&.&.&.&.[ &.S.&.&.&.&.[ &.&.[ [ &.[ [ 7+[ [ [ 7+S.[ [ [ [ [ [ [ S.[ [ S.F+[ m.[ F+m.[ m.[ m.m.F+m.m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.G+-.-.x+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+]+G+]+A+]+A+]+y+]+C+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+d+g+d+d+d+g+d+g+d+d+;+d+;+d+f+d+d+;+f+d+d+d+d+f+d+-+d+-+d+f+-+-+-+-+-+-+=+-+=+f+=+-+-+e+=+=+e+e+=+P.e+P.P.=+P.*+P.P.,+P.,+*+,+P.*+P.X.*+P.C.P.X.C.C.*+X.C.X.C.C.X.C.X.X.X.V.X.X.).X.s.V.C.s.s.V.s.s.r.r.r.r.r.r.r.r.r.r.r.r.r.D.r.r.D.r.@.r.D.r.D.@.r.@.r.@.r.@.r.@.r.r.@.r.@.r.r.@.r.@.r.@.@.r.r.@.r.@.r.@.r.@.r.@.r.@.r.@.r.@.@.r.@.@.r.@.@.@.r.@.r.@.r.h r.r.h r.h r.r.).).h s.).).).).~.).).).).!.).).).!.).).!.!.).!.!.!.!.!.!.!.~.!.!.!.!.!.!.!.7.!.'.+.'.'.7.'.7.'.'.'.7. .7. . . . . .Q. . . . . .p. .p. . .p. .p. .p.p.M p.p.p.p.p.p.p.p.M p.p.p.M p.p.M I.M I.p.M I.p.s M I.M I.I.h.I.I.I.[.p.[.I.[.I.[.h.[.[.[.[.[.[.[.[.[.[.[.[.[.1.[.[.H /+H [.H H /+H 1.[.H H /+H H /+&.{.H <+/+&.8 {./+&.8 &.&.&.&.&.&.&.&.&.&.<+&.&.&.&.&.&.[ &.[ &.[ &.[ &.7+[ &.[ &.[ [ [ [ [ 7+S.[ [ S.[ 7+[ m.7+[ m.[ F+m.[ [ m.[ m.[ m.m.m.m.m.m.m.m.m.-.m.-.m.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.-.G+G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+A+G+A+G+A+G+]+G+A+]+A+]+C+y+H+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+d+g+d+g+d+d+d+;+d+d+d+d+d+;+d+f+d+d+;+d+-+d+d+f+d+-+d+-+-+-+f+c+f+c+-+-+-+-+=+-+e+=+-+e+=+=+=+e+=+=+P.e+P.e+P.P.*+P.P.P.C.P.C.,+C.P.X.P.X.P.C.*+X.X.C.X.C.X.X.X.X.X.s.X.X.).V.s.V.).s.V.s.V.s.V.r.V.r.r.r.r.r.r.r.D.r.@.D.D.r.D.@.D.@.D.@.D.@.@.D.@.D.@.r.@.r.@.r.@.@.r.@.@.@.@.@.@.r.@.@.r.@.@.r.@.@.@.r.@.@.@.r.@.r.@.h @.r.h @.@.@.@.@.@.@.@.h @.r.h @.r.h r.h r.).h r.).s.h ~.).~.).).~.).).).).).!.).).!.!.).!.!.).!.).!.!.).!.!.~.#.!.!.!.!.!.!.'.!.'.+.'.'.'.'.'.7. .'.'. .<.'. . . . . . . . . . .p. . .p. . . .p.M p.p.M p.M p.M p.M p.p.p.M p.p.I.M I.M p.M M I.s I.I.I.I.I.M s I.[.s I.s [.I.s [.s I.[.[.s [.[...[...[.[...[.[.[.[.[.1.[.H [.H /+[.H H /+8 /+H H /+{.H H /+&.H H {.{.&.8 /+&./+&.H &.&.<+&.&.<+&.&.&.&.&.[ &.&.&.&.[ &.&.[ &.&.[ &.[ [ [ [ 7+<+[ S.[ 7+S.[ 7+[ m.[ [ m.[ [ [ m.[ [ m.[ m.m.m.[ m.F+m.m.m.m.-.m.m.m.m.-.m.-.m.-.m.-.m.-.-.-.m.-.-.-.-.-.-.-.G+x+-.-.-.G+-.-.G+G+-.-.G+-.G+G+G+-.G+G+G+G+G+G+G+w+G+G+]+G+]+G+A+]+A+y+]+C+y+]+C+y+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.u+d+d+d+d+d+d+g+d+d+d+;+d+f+d+f+d+d+f+d+d+f+-+d+-+-+d+f+-+f+-+-+-+-+-+c+-+e+-+=+-+=+-+=+=+=+e+=+=+P.P.e+P.P.P.P.*+,+P.,+P.,+*+,+C.*+P.*+,+C.*+X.C.X.*+X.C.X.C.X.C.X.V.C.X.X.V.s.X.s.V.V.s.V.s.r.r.s.r.r.r.r.r.D.r.@.r.r.D.r.@.r.@.D.@.D.@.D.@.@.D.@.D.@.D.@.D.@.@.@.@.r.@.@.r.@.r.@.@.@.@.@.@.@.@.@.@.r.@.@.@.@.r.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.h @.r.h @.r.h r.h r.h r.).h r.).h ).h ).).~.).).).).).!.).).).).!.!.).!.).).F 8.).!.!.F !.!.!.!.D !.+.+.'.7.D 7.'.7.'.'.7.'.<.'. .<.'.<. . .Q. .p. . . . .p. . .p.p. . .p. .p.p.p.p.p.p.p.p.M M M p.M M M p.M I.M I.I.M I.p.s p.s I.I.I.h.I.I.[.I.s [.I.[.[.h.I.[.[.[.[.[.[.[.[.[.[.[.[.>+H [.[.[.1.[.1.H H /+H /+H H /+H H H {.8 H /+&./+&.H &.{.8 &.8 &.<+&.&.<+&.&.&.&.<+&.&.&.<+&.&.[ &.[ &.[ &.[ &.[ &.[ <+[ [ [ [ 7+[ [ [ 7+S.[ [ [ [ [ m.[ m.[ F+m.[ F+m.[ F+m.m.m.m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.z+-.G+-.-.G+-.-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+C+G+G+A+G+A+]+A+]+]+A+y+]+C+y+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+d+u+d+g+d+g+d+d+;+d+d+;+d+d+d+d+;+d+d+-+d+d+-+d+f+-+-+-+-+c+f+-+c+-+-+=+-+c+f+=+e+e+=+=+=+=+=+e+P.e+P.P.e+,+,+P.C.,+C.,+C.,+P.*+X.,+C.C.*+X.C.*+X.X.X.X.X.X.X.X.X.C.V.s.V.s.V.V.V.s.s.V.s.r.V.r.r.r.r.r.r.D.r.D.r.@.D.r.@.D.D.@.r.D.@.@.D.@.D.@.@.@.@.@.@.@.@.D.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.r.@.@.h @.).h @.h r.h r.h h ).h h s.h ).).h ).~.).F ).).).).F ).!.).).F !.F ~.).F !.#.!.~.!.!.!.+.!.+.].+.].+.'.+.'.D '.7. .'.'.'.<.'. . . . . . . . . . . . . .p. . .M p. .p.M p.M p.p.M p.M p.p.p.M I.p.p.M I.M I.M M I.M I.I.s I.M I.s I.s I.s I.[.I.s [.I.[.[.[.s [.[.[.[.[...[.[.[.[.[.[.[.[.1.[.H /+H /+H [.H /+H H /+H &.H H {.&.H &.H &.&./+&.{.&.&.&.&.{.&.&.<+&.&.&.&.&.&.&.[ &.&.&.&.[ &.[ &.[ &.[ 7+[ [ &.7+[ [ S.[ [ [ [ [ [ S.[ [ [ [ [ m.[ [ m.m.[ m.m.[ m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.x+-.-.-.-.-.G+-.D+G+G+-.G+D+-.G+G+D+G+G+G+G+G+G+G+w+G+]+A+]+G+]+A+]+A+A+]+C+y+]+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+b+d+d+d+d+d+d+d+d+d+;+d+f+d+f+d+d+d+-+d+f+d+f+-+-+d+f+d+-+f+-+-+-+-+=+f+-+e+-+=+-+=+=+=+e+=+P.=+P.=+P.e+P.P.P.,+,+P.P.,+C.,+C.,+,+*+C.,+C.X.P.X.X.C.X.C.X.X.X.X.s.V.X.s.C.s.V.s.s.V.V.s.r.r.s.r.r.r.r.r.r.r.@.r.@.D.D.@.D.D.@.r.D.@.@.D.t.@.t.@.0.D.@.0.D.@.D.@.@.D.@.@.D.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.G @.@.@.@.r.h @.h r.h r.h r.).r.h ).h ~.).h ).h ~.~.).F ).).F ).F ).).).~.F ).~.F ).!.!.F !.!.!.+.!.+.+.D i.D '.7.'.'.'.7. .7.'.g <. .'.<. .g. . . . . . .p. . .p. .p.M M .p.M p.M p.p.p.p.M p.M p.M M M I.M p.M I.p.M M M I.I.s I.I.I.s I.[.I.s I.[.[.I.s [.s [.[.h.[.[...[.[.[...[.[.../+H [.[.[.[.H [.H /+1.H H /+H H /+H {./+H /+H &.{./+8 &.H <+H &.&.&.&.&.<+&.&.&.<+&.&.&.&.&.&.[ &.&.&.[ &.7+&.[ &.[ &.7+[ [ 7+S.7+S.[ [ 7+S.7+[ [ m.[ m.[ [ m.[ F+[ m.[ m.m.m.m.m.m.m.-.m.m.-.m.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.G+-.G+-.-.-.G+-.-.G+G+-.G+G+G+-.G+G+G+G+G+G+G+G+G+A+G+G+G+A+G+G+A+]+]+A+]+C+y+]+C+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+g+d+g+d+;+d+g+d+;+d+d+d+;+d+d+f+d+d+d+d+-+d+f+d+-+-+-+-+-+-+-+c+-+c+-+=+-+e+-+e+=+e+=+=+=+=+=+P.e+P.P.*+,+,+P.P.,+,+X.*+,+P.X.C.,+X.C.,+C.C.X.C.X.X.X.X.s.C.V.X.).V.s.V.X.V.s.V.s.r.V.r.V.r.r.s.r.r.r.r.D.r.D.r.@.D.D.@.D.@.D.@.D.D.@.@.D.@.0.@.@.0.@.@.0.@.D.@.@.@.@.@.D.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.@.v @.v @.v @.@.@.@.h @.h @.h @.r.h @.G h r.G h h r.h r.h h ~.~.).h ).h ).F ).).F ).F ~.F ).~.F ).F ~.#.).F !.F !.!.D !.!.+.+.7.D +.'.+.'.D '. .7.'.'.7. . . . . .Q. .Q. . . .p. . .p. . .p.M M p.p.p.M p.M p.M p.p.I.p.I.p.M M I.M M I.M I.M I.M I.I.s I.h.I.M [.I.s I.s [.I.[.I.[.I.[.s [.[.[.[.[.[.[.[.[.[.[.[.H 1.H /+H [.H [./+H H /+H H {.H H H &.{./+8 {.&./+&.{.&.H &.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.[ &.[ &.[ &.7+[ [ &.7+[ [ [ [ [ 7+[ [ [ [ m.[ [ [ [ m.F+m.[ m.[ m.[ m.F+m.F+m.m.m.m.m.m.m.-.m.m.m.m.-.m.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.G+-.G+G+-.G+G+-.G+G+G+G+G+G+G+G+]+A+]+G+]+A+]+]+G+A+]+y+]+C+y+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+d+d+d+d+;+d+d+d+d+d+f+d+f+d+;+d+d+d+-+f+d+-+d+-+f+-+f+c+f+c+-+-+=+f+=+f+=+-+=+=+=+=+=+=+=+e+P.e+P.P.e+P.P.P.P.X.P.C.P.X.P.X.,+,+X.C.,+C.X.X.X.X.C.X.X.X.X.X.).X.V.X.V.V.s.s.V.s.V.s.r.s.r.r.r.r.r.r.r.D.r.@.D.@.D.@.@.D.@.D.@.D.@.@.D.0.@.0.0.@.0.0.@.0.@.@.u @.0.@.@.@.@.@.@.@.@.@.@.@.@.u @.u @.u @.@.@.@.@.@.@.@.@.@.@.@.@.@.@.v @.@.v @.v @.@.@.@.@.@.@.@.@.@.h @.r.h @.G h h r.h h h h ~.h h h ~.h ).h ).h ~.).F ~.).~.F ).~.~.~.F ).F !.!.!.!.D !.!.+.D i.D D 7.D '.D 7.'.+.'.D <.D .<. .<. . . . . . . . . .M . .p. . .p.M p.M p.p.p.M p.M M M I.M I.M I.M }.I.M }.M M I.M I.s M I.M I.h.I.s [.[.I.[.s [.[.s [.[.[.[.[.[...[.[.[.[.>+[.[.H [.[.[.[.H H /+H 1.H /+H H &.H {.{.&.{./+H {.&.{.8 /+8 &.&.&.{.&./+&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.&.[ &.&.[ &.[ &.[ [ S.&.S.7+[ S.[ 7+S.[ [ 7+m.[ m.[ [ [ [ m.[ m.F+[ [ m.m.m.m.m.m.m.-.-.m.m.-.m.-.-.m.-.m.m.m.-.-.-.-.-.-.-.-.-.-.x+-.x+-.G+-.-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+A+]+G+G+G+G+G+C+G+A+A+]+y+H+C+y+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+;+g+d+g+d+d+d+;+d+;+d+;+d+d+d+f+d+-+f+d+-+-+d+-+-+-+-+-+-+-+-+=+-+-+=+-+=+=+e+-+e+=+e+=+=+P.=+*+P.*+P.P.,+*+,+,+P.,+,+X.,+X.,+C.X.P.X.X.X.C.X.X.C.X.X.V.X.V.s.V.V.s.V.s.s.V.V.s.r.r.s.r.r.r.r.r.r.r.r.D.@.D.D.t.D.t.D.D.@.D.@.D.@.@.D.@.@.0.@.@.0.0.@.0.u 0.0.@.0.@.u 0.u @.u u @.u u u @.u @.u @.@.@.u @.u @.@.u @.v @.@.v @.v v v @.v u @.v @.v v @.@.@.@.h @.h h @.h h @.h h r.G h G r.h s.h h ).~.h ).h ~.h ~.).h ~.).h ~.~.h ~.~.~.~.F ~.!.F !.!.!.!.D !.+.D +.7.D +.+.'.D D '. .7.D '.<.'. . . . . . . . . . . .p. .M .M p.M .M p.M M p.M p.p.p.I.M <.M Q.<.I.M I.M I.M I.M I.s I.I.s I.I.s I.I.I.s s I.[.I.[.[.[.s [.[.s [.[.[.[.[.[.[.[.[.[./+H /+H /+[.H /+[.H H /+H /+H /+H H /+8 {.&.H &.&.{.&./+8 &.&.&.&.&.&.&.&.&.&.&.&.&.[ &.&.[ &.[ &.[ &.[ &.[ &.7+[ &.7+[ 7+[ S.[ 7+[ S.[ S.[ [ m.7+m.[ m.F+[ m.m.[ m.m.m.m.m.m.m.m.-.m.m.m.-.m.-.m.m.-.m.-.-.-.-.-.m.-.-.-.-.-.-.-.-.z+-.-.-.-.G+-.G+-.G+-.G+-.G+G+G+-.G+G+G+G+G+G+G+G+A+]+A+]+A+w+]+]+]+A+]+C+w+H+C+]+H+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+d+d+d+d+g+d+d+d+d+f+d+d+f+d+d+d+d+d+-+d+d+f+-+f+d+f+c+-+-+c+-+-+c+f+=+f+=+-+e+=+=+=+=+=+=+=+P.P.e+P.*+P.P.,+P.X.,+C.,+P.X.,+X.,+X.X.,+C.X.X.X.X.X.X.X.C.s.C.s.X.V.s.s.V.s.s.r.r.s.r.r.r.r.r.r.r.r.r.D.r.D.t.D.@.D.@.t.@.t.@.t.@.D.@.0.@.0.@.0.0.u 0.u 0.@.u 0.u u u @.u @.u @.0.u @.@.u @.u @.u u u @.u @.u @.u @.@.@.u @.u @.@.u @.u v v 0.v v @.@.v @.@.@.@.@.@.@.G @.@.h @.h @.h @.h h G h r.h h h h h ).h ).h h ).h ~.~.h ~.~.h ~.h ~.).F F !.F !.!.!.!.D !.+.D !.D '.+.D 7.D +.D .7.'.D N '. .<. . . . . . . . . . .p. . .M .p. .p.p. .p.M p.M M .I.p.M M I.<.I.<.M M I.M M I.I.M I.M s I.I.s [.I.[.}.s I.[.I.[.I.[.h.[.[.[.s [.[.[.[.[.[.[.[.H [.[.H H /+H H H /+H H /+H {.H {.H {.H {./+{.H &.H &.&.{.&.&.&.&.&.&.&.&.&.<+&.&.&.&.&.&.&.[ &.[ &.[ &.7+&.[ [ [ [ [ [ [ [ [ S.[ [ [ 7+[ [ m.[ [ [ F+[ m.[ m.[ m.[ m.[ m.m.m.m.m.m.m.m.-.m.m.-.-.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.G+-.G+-.-.-.-.G+G+G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+A+G+A+w+C+y+]+C+y+]+A+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+g+d+;+d+d+;+d+;+d+;+d+;+d+d+f+d+-+d+f+d+f+-+d+-+-+-+f+-+-+-+-+=+-+e+-+=+=+e+=+=+e+=+=+P.e+P.e+*+P.*+,+*+,+P.P.,+*+X.,+X.,+,+X.X.,+X.X.X.X.X.X.X.X.s.X.V.X.s.V.V.s.V.V.s.V.s.r.V.r.r.r.r.r.r.r.r.r.r.D.@.r.D.@.D.t.D.D.t.@.D.@.@.@.0.@.0.@.0.u @.0.0.0.u 0.0.u 0.@.u 0.u u @.u u @.u u @.u u u @.@.u u @.u @.u v @.u u @.v @.u u @.u v @.u v v v v @.v @.@.@.G @.@.@.h @.h @.h @.h @.h r.h @.h h G h r.h ~.h ~.h h ~.h ~.h h ~.h ~.h ~.~.~.~.F ).F F !.!.D !.!.D !.!.+.+.+.D +.D '.D 7.D '.N '.'.<.g .<. .<. . . . . . . . .M p. .M M p.M M M p. .M Q.M I.M <.I.<.M M M }.I.M I.M I.M s I.s I.I.s I.I.I.s I.[.[.s [.s [.s [.[.[.[.[.[.[.[.[...[.[.[.[.[.[.H /+[.H [./+1.H /+H H {.H H {.H &./+{.8 /+{.&.&.H /+8 {.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.[ &.7+&.[ &.[ &.[ &.7+[ [ S.7+[ [ 7+[ S.[ [ 7+m.[ m.[ m.[ F+[ m.[ m.F+m.m.F+m.m.m.m.m.m.m.-.-.m.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.G+G+x+G+-.-.D+G+-.G+G+G+G+-.G+G+G+G+G+G+]+G+A+]+G+G+A+]+]+G+w+C+y+H+]+y+H+]+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+d+g+d+d+d+d+d+d+d+f+d+d+f+d+d+d+f+d+-+-+d+f+-+-+-+-+-+c+-+c+-+f+=+-+e+f+=+=+=+=+=+=+e+*+=+P.P.P.P.P.P.,+*+X.P.X.,+X.,+,+X.,+X.X.X.X.X.X.C.X.s.C.V.X.s.s.V.X.s.V.s.r.s.r.r.r.r.r.r.r.r.r.r.r.D.D.D.@.D.D.t.D.t.@.@.@.0.@.0.@.0.0.@.0.@.0.0.0.0.0.u u 0.V u 0.u u 0.u u 0.u u @.u u 0.u u @.0.u u u @.u u u u @.u u @.v u u v @.u v v u u v 0.u v v v @.v @.@.@.G @.@.@.@.@.@.h @.h @.G G h G h r.h h h h h h h ~.h ~.h h ~.G h G ~.h ~.h F F F F !.F !.!.F +.!.+.+.D D D 7.D +.D +.D D <.D .+.g '.g '. . . .<. . . . . .M . . .p. .M .p.Q. .M I. .p.<. .I. .M <.I.<.I.M M I.M M I.I.M I.I.s I.s I.s I.[.I.s I.I.[.I.[.I.s [.[.s [.[.[.[.[.[.[.[.[.[.H [.[.H /+H H [./+H H /+H {./+{.H {.H 8 {.{.&.H /+{.&.&.&.&.&.&./+&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.[ &.[ &.7+&.[ &.7+[ [ [ 7+[ S.7+S.[ [ m.[ m.[ [ [ m.[ m.[ m.[ m.[ m.[ m.m.m.m.m.m.-.m.m.-.m.m.-.m.-.m.-.m.-.-.-.-.m.-.-.-.-.-.-.x+-.-.G+-.-.-.G+-.-.G+G+-.G+G+G+G+-.G+G+G+G+G+G+G+G+C+G+G+A+]+G+]+A+]+A+]+C+]+A+]+C+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+d+d+d+;+d+g+d+f+d+d+d+f+d+d+d+f+d+-+d+f+-+-+f+-+c+f+c+f+=+-+f+=+=+-+=+=+=+e+=+=+=+P.=+P.P.*+P.e+P.P.,+*+,+,+,+,+X.,+X.X.X.X.X.X.X.X.X.X.X.X.X.V.s.X.V.V.X.s.V.s.r.s.r.s.r.r.r.r.r.r.r.r.D.D.r.@.D.D.t.@.D.t.@.0.0.0.@.0.@.0.@.@.0.@.u 0.u 0.u u 0.V V u 0.u 0.0.u u 0.u u u u u u u u v u u u u u u u v u @.u u v u u @.u @.u v u u u v V u v v v @.v @.@.v @.@.@.h @.h G @.h @.h @.h @.h @.h G h G h G h G h h h h G ~.G h G ~.G ~.h ~.F ~.F F F F D F !.!.D F !.D !.+.D +.D +.'.D 7.D '.N '.D N .<. . . . . . . . . .p. .M .M M .M .M p.<. .Q. .I.M .I.<.I.M }.M I.M I.M I.M M I.M M I.M I.[.I.I.s }.[.[.s I.[.[.[.[.[.h.[.[.[.[.[.[.[.[.[.[.[.[.[.H H H [./+H H /+H H /+H H &.{.H /+{./+H {.{.&.8 {.1.{.&.&.&.&.&.&.&.&.&.<+&.&.&.[ &.[ &.&.&.[ &.&.7+&.[ &.[ [ &.7+[ [ S.[ [ [ [ S.7+[ [ [ m.[ [ F+[ m.[ m.[ m.m.m.F+m.m.m.m.m.m.m.-.m.-.m.-.-.m.-.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.G+-.-.G+-.-.G+G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+]+A+G+G+y+G+]+A+]+A+]+y+C+H+w+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+;+d+d+;+d+d+d+d+;+f+d+f+d+d+f+d+-+d+f+-+d+f+d+-+f+-+-+-+=+-+=+=+f+=+e+-+e+=+=+=+=+=+=+P.e+P.e+P.P.P.*+P.P.P.C.C.,+P.,+X.,+X.X.X.X.X.X.X.s.X.V.X.s.V.s.s.s.V.r.s.V.s.V.r.r.r.r.r.r.r.r.D.D.r.D.@..+@.D.@.t.D.0.t.@.0.0.0.@.0.0.0.0.u 0.@.0.u 0.0.V 0.V V V V V u V u u u u u u u 0.u u u u u u u u u u u u u u u u v u v u u u u u v u V u v u u u v v v v @.v @.v @.@.@.@.@.h @.@.G h @.h @.h G h @.h h h h h h G h ~.h G h G G G h G ~.h ~.F ).F F F F !.4 !.F D !.+.D !.+.D +.D +.D D +.'.D <. .D '.g <. . . . . . . . . . . . . . .M . . .M M .p. . .<.M .M <.<.M Q.M M M I.M I.M I.I.s }.I.s I.M [.I.s I.[.I.[.s I.s [.[.[.[.[.s [.[.[.[.[.[.[.H [.H /+[./+H H /+H H /+H H {./+H H {.{.&.{.&.H &./+&.&.&.&.{.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.&.7+[ &.[ &.[ &.7+[ [ [ 7+[ S.7+[ [ [ S.[ m.[ [ m.[ m.[ m.m.[ m.[ F+m.m.m.m.m.m.m.-.m.m.-.m.m.-.m.-.m.m.-.-.-.-.-.m.-.-.-.-.-.-.-.x+-.-.-.-.G+-.-.G+G+-.-.G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+]+G+C+G+C+w+C+]+C+y+]+H+A+C+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+g+d+d+;+d+d+f+d+d+d+d+-+d+d+f+d+-+-+d+-+-+-+-+-+-+-+=+f+c+f+-+=+=+-+=+=+e+=+=+=+e+P.*+P.*+P.P.P.P.,+*+X.*+,+*+,+X.X.,+X.X.X.X.X.X.s.X.V.X.s.s.X.s.V.V.V.s.V.s.r.r.r.r.r.r.r.r.r.r.D.r.D.@.D.D.@.D.t.t.@.0.@.0.0.0.@.0.0.@.u 0.@.0.0.u 0.0.u u V u V U U u U U u 0.V u 0.u V u u u u V u u V u u V u u v u u u u u u u u v u v u u V u V u V v v u u v v v v v h v G v h @.v h @.@.G @.G @.h @.G h @.G G G G h G h G h G G G G G G h ~.~.h h F F F !.F F F !.+.F D F +.D +.+.D +.D 7.D D N '.D +.D <.D .g <. .<. . . . . .M .M . . .M <. .<. .<. .}. .I.<.I.<.M I.<.M M I.M M I.M I.M M I.s I.M I.I.I.s }.s I.s I.[.[.I.[.s [.s [.[.[.[.[.[.[.[.[.[.[.[.[.H H [.[.[.H /+H /+H H H {./+{.H {.H /+{.H {.H /+H &.&.{.&./+&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.[ &.[ &.&.[ &.[ [ [ &.[ S.7+[ S.7+[ S.[ [ [ F+[ [ m.[ [ F+[ m.[ m.[ m.[ m.m.m.m.m.m.-.m.m.-.m.-.m.m.-.-.m.m.m.m.-.-.-.-.-.-.-.-.-.z+-.-.G+-.-.G+-.G+-.G+G+G+-.G+G+-.G+G+G+G+G+G+G+G+w+G+A+G+w+G+w+]+G+y+]+C+A+]+H+]+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+;+d+d+g+d+d+;+d+d+f+d+f+d+d+d+-+d+f+d+-+f+-+f+c+f+c+-+c+-+-+=+=+e+f+=+e+=+=+=+=+=+P.=+P.e+P.P.P.*+,+*+P.,+P.,+X.,+X.P.X.X.X.X.X.X.s.X.V.s.s.s.V.s.V.s.s.s.r.s.r.r.r.r.r.r.r.r.r.D.D.@.D.t.D.D.t.D.t.0.D.0.0.0.0.0.0.0.0.u 0.0.0.u 0.u 0.0.u V 0.V U U U V U U u V U u u u u u u u u V u u V u u V u u V u u u u u u u u v u u u u V u u V V u V u u v v v v v @.v @.v @.@.v h @.@.h @.h @.h @.G h @.h h @.h h G h G G G G G G G G ~.G h h ~.F F ).F F !.F F 4 F !.F +.i +.!.D +.D D D D +.D D +. .g D .N '. .g . .<. . . . . . . . .M <. . . .<.M <.M <. .M <.M I.<.M M I.M M }.M I.M M I.}.M I.M [.I.s I.[.I.s [.s [.I.[.[.[.[.[.[.[.[.[.s [.[.[.[.[.H [.H /+H /+H H /+H H H &.H {./+H H {./+&.{.&.{.&.&.&.&.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.&.[ &.&.7+&.[ &.[ &.7+&.[ 7+&.[ S.[ [ [ [ [ [ [ [ S.F+[ F+m.[ m.[ m.F+m.m.m.m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.m.-.-.-.-.-.-.-.-.-.-.-.-.-.G+x+-.-.G+-.G+-.G+G+-.-.G+G+-.G+G+G+G+G+G+G+G+G+A+G+G+]+G+C+G+C+A+]+A+]+H+C+w+C+y+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+d+d+d+d+f+d+f+d+d+;+d+d+-+-+d+f+d+-+f+d+-+-+-+-+-+=+f+-+=+f+-+=+=+e+=+=+e+=+*+P.e+P.e+P.*+P.*+,+*+,+X.*+,+*+,+P.X.X.X.,+X.X.Y.V.X.s.s.s.s.V.s.s.s.V.s.s.V.r.r.r.r.r.r.r.r.D.D.D.@..+D.D.t.t.@.0.@.0.0.0.0.0.0.0.0.0.V 0.0.u 0.0.u 0.u u 0.V U U V U V U U V U U u U U u U u U u V u u U u u u u u u u u u u u u u u u u u u u V u V V u d v u v u v u v u @.v v v @.v h v @.v h v h @.h @.h @.G G G G h G G h G G G G G G G G G G G h ~.h F h F F F F F F F !.4 !.4 !.4 +.+.D +.+.+.D D D 7.g D 7.g +.g g <. .g . . . . . . . .M . . .<. .<. .<. .<.M <.<.I. .<.M I.M M .I.M M M }.I.M M I.}.I.M I.I.I.s }.[.I.[.I.[.s [.h.[.[.[.[.[.[.[.[.[.[.[.[.[.H /+[.H [.H /+H H /+H /+H H {.H {.{.H {.H {.H &.H {.H {.&.&.&.&.&.&./+&.&.&.&.&.&.&.[ &.&.[ &.[ [ &.[ &.7+[ [ &.[ 7+[ [ [ 7+[ S.[ S.[ m.[ m.[ m.[ m.[ m.[ m.[ m.[ m.[ m.m.m.m.m.m.-.m.m.m.m.-.m.-.m.-.-.m.-.-.-.m.-.-.-.-.-.-.-.-.-.-.G+-.G+-.-.G+-.G+G+G+-.G+G+G+G+G+G+G+G+G+G+]+G+]+A+G+A+w+G+]+A+]+C+y+]+y+C+]+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.;+d+;+d+d+d+d+d+;+d+f+d+d+d+d+-+f+-+d+-+-+f+-+-+-+-+-+c+f+=+=+e+-+e+=+=+=+=+=+e+=+P.*+P.P.P.,+*+P.P.*+,+C.,+C.*+X.,+,+X.X.X.X.X.s.Y.V.Y.V.s.s.V.s.s.r.V.r.r.s.r.r.r.r.r.D.r.D.@..+@.D.t.@.t.0.0.0.0.0.0.0.0.0.0.0.V V 0.U 0.V V 0.U V 0.U U u U U U U U U U U U U U u U u u u u U u U u u u d u U u d u d u d u V u d u u d u V u d u d V u d V u v u v v v v v @.v @.v v h @.@.v G v G v G @.h @.h @.h @.h @.G h G G G G G G G G G h G h ~.h F h F F F F F F F F i F +.F 4 !.i D D D +.+.D D +.g g D .+.g g <. . .g . .g . .<. .N .<. .N .<. .<. .<.M .M I.M M .I.M M M }.M I.M M I.}.M I.s I.s I.}.s s }.s I.s [.I.[.[.I.s [.[.[.[.[.[.[.[.[.H [.[.[.H [.H H [.H H H H {.H {./+H {.H {.&./+&.{./+&./+&.&.{.&.&.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.[ &.[ &.&.[ 7+[ &.[ 7+S.[ 7+[ [ 7+S.[ [ [ [ [ m.[ m.[ m.[ m.[ m.F+m.m.F+m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.x+-.-.x+-.G+-.G+G+-.G+-.G+G+G+-.G+G+G+G+G+G+G+G+A+G+]+G+G+C+]+G+]+A+]+C+y+]+y+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+d+d+f+d+;+f+d+f+d+d+d+f+d+f+d+-+d+-+-+-+c+f+c+-+c+=+-+=+f+-+-+e+=+=+=+=+=+P.*+P.*+P.P.*+P.*+,+*+,+C.P.,+*+,+X.*+C.X.X.X.X.Y.V.Y.V.s.s.r.s.r.r.r.r.s.r.r.r.r.r.r.r.r.r.D.D..+D.t.D.t.t.0.D.0.t.0.0.0.0.0.V 0.V U U 0.U U U 0.U U V U U V U U U U U d U d U d U d U d U d U d u d u d u d u d u d u d u u d u u d u u d u u d u d u d u d d V u d u v u u v u v v v v @.v v v v h v h v h @.h @.G @.h G G G h G @.G @.G @.G G G G G G ~.h h F h F F h F F F F 4 F F D F i +.i D i i +.D D +.g D +.'.N D g +. .g N .<.g . .g .g . . . .N .N .<.M <.M .I.<.M <.M I.M <.M I.M }.M I.M I.M }.M I.I.I.s I.I.I.s }.[.I.[.[.s [.[.[.s [.[.s [.[.[.[.[.[.[.[.H [./+H /+H H /+H /+H /+{.H /+H {./+{.H {.H {.H &.8 {.&.&.{.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.7+&.7+&.[ &.[ &.[ [ [ [ [ [ S.7+[ [ [ S.[ m.[ S.F+[ [ F+[ m.[ m.[ m.[ m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.m.m.-.m.-.m.-.-.-.-.-.-.x+-.-.G+-.G+-.G+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+]+G+G+A+w+G+]+G+C+y+]+y+]+C+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+g+d+d+d+f+d+d+d+f+d+-+d+-+d+f+d+-+f+-+f+-+-+-+e+-+-+e+-+=+e+=+e+=+e+*+=+=+=+=+P.e+P.*+,+P.P.*+P.X.*+,+*+,+X.P.X.X.,+X.X.X.X.Y.V.s.s.r.s.r.r.r.s.r.r.r.r.r.r.r.r.r..+D.D.t.@.t.D.t.0.0.0.0.0.0.0.0.V 0.U 0.a.U 0.a.U U U U U U U U U U U U U U U U d U k d U d U U d U d u U d U d U d u d d d u d d u d d u d d u d u u d u d u d V d d V d d V u v u v v v v v @.v v v @.v h v @.v @.@.G v h v G G @.h @.G G G G G G G G G G G G h G h #.h F F h F F F F F F F 4 F i D F 4 +.i D +.4 +.g D +.D g D .N g g '.g .g .g <.g .N .N .N .N .N <. .<.M <.<.M M M M M M M I.M M M }.M I.M I.M }.M I.M I.I.}.s I.[.M [.s [.I.s [.I.[.[.[.[.[.[.[.[.[.[.[.H [.[.[.H [.H [.H /+H H {.H {.H {.{.{.H {.&.{.&./+{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.&.[ &.&.[ &.&.&.&.[ &.[ &.7+&.7+&.[ 7+&.S.7+[ S.[ m.[ [ S.F+[ [ m.[ m.[ m.F+m.[ m.m.F+m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.-.-.m.-.-.-.-.-.-.-.-.-.-.z+-.-.-.-.-.G+-.G+-.G+G+-.G+G+-.G+G+G+G+G+G+G+A+G+G+A+]+G+G+A+G+A+]+]+C+A+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+d+d+;+d+d+f+d+f+d+d+d+-+d+-+-+-+d+-+-+-+-+-+-+-+-+e+-+=+f+=+=+=+=+=+=+=+e+P.P.e+P.P.P.*+P.,+P.X.*+,+X.,+C.,+X.X.,+X.X.X.X.X.V.Y.s.s.n+r.s..+s..+r.r.r.r..+r.D.D.D.D.@.t.D.t.D.0.0.t.0.0.0.0.0.V 0.a.U a.U a.U a.U a.U a.U a.U U U U U U U U d U k U k U k k U k d U d d d d U d u d d d d u d d d u d u d d u d u d d d u d u d d d d V d V d v d u v u v v v v v v @.h v G v @.G v h v G G v h @.h G G G G v G v G v G v G G G G h h h h | h h F | F F F F F F F F 4 F i F 4 +.i 4 +.D +.D g D +.g +.g D +.g <.g <. .N g <.N .N .N g N <. .<.5 <. . .M M p.M <.M <.M I.M M I.M M M I.M }.I.M I.I.I.s I.s I.s }.[.M I.[.[.[.[.s [.[.[.[.[.[.[.[.[.[.[.[.[.{.[.H [.H /+H H /+H /+H /+{.H H &.{./+H {.H {.8 /+&.{.&.&.{.&.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.[ [ &.[ &.[ &.[ [ [ 7+[ [ [ [ [ [ S.7+[ [ [ S.m.[ [ m.F+m.[ m.[ m.[ [ m.m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.m.-.-.+ -.-.-.-.-.-.-.-.-.G+-.G+x+G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+A+]+G+]+A+]+A+H+]+y+C+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.d+;+d+d+f+d+d+;+d+d+f+d+f+d+f+d+f+-+f+-+-+f+c+-+c+-+-+e+-+=+e+f+=+e+=+=+P.=+e+P.*+P.*+P.P.*+*+,+P.,+P.*+,+*+X.*+X.X.X.X.X.s.X.s.s.s.V.r.V.r.r.r.r.r..+r.r.r.D..+D..+D..+D.t.t.0.0.0.0.0.0.0.V a.a.U a.U a.a.U v.v.v.U v.U W U v.U W U k U k U k U k P k W d k k d k d U d d d d d d d d d d d d d d d d d u d d d d u d u d d d u d d V d d d V d v d v v u v v v v v v v v @.v v G v G @.v h @.G G v G G @.h G G G G G G G v G G G G h G | h | F | h F | F F F F F F F i 4 i !.4 +.+.i D i D +.g D g D N .g D g g g N .N g N N g +.N N g N g .<.g <.M <.M .M M M M I.M M M M <.M }.M I.M M }.M }.I.I.I.I.I.[.M [.[.s I.[.s I.[.[.s [.[.[.[.[.[.[.[.[.[.H [.H [.H /+H H H H /+H {.H /+{.{.H {.{.{.&./+{.{.8 {.&.H &.&.{.&.&.&.&.&.&.&.&.&.&.[ &.&.&.[ &.&.&.[ &.7+[ &.7+&.[ [ [ [ S.7+S.[ [ S.[ [ [ [ [ F+m.[ m.[ m.[ m.m.[ m.m.m.m.m.-.m.-.m.m.-.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.G+-.-.-.-.-.-.-.-.G+G+-.G+z+G+-.G+G+G+G+G+G+G+G+]+G+G+A+G+]+A+]+A+]+y+C+]+A+H+]+A+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+d+d+d+d+f+d+f+d+d+d+f+d+-+d+-+-+-+-+f+c+-+-+=+f+-+=+-+e+-+=+=+=+=+=+e+=+P.P.*+P.P.P.*+,+P.,+*+,+*+X.,+C.,+X.X.*+X.X.X.X.X.s.X.V.r.Y.r.s..+r.r..+r.r..+D..+D.D.t.@.t.@.0.t.0.0.0.0.0.0.a.U a.0.U a.a.a.U v.v.W U W v.W W v.W k P k v.P k P k k P k k U k k P W k d k k k d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d V d v u v v v v v v v @.v G v G G v G v G G v G v G h G G G v G v G v G v 2 G G G G h G h h h h h h | F h | F F F 4 F F F F i i F i 4 +.i D +.4 +.D +.g D g +.g +.N g N N N +.g +.N g +. .N <.N N .t .M M <.M M .I.M M M <.M I.M }.M I.M }.I.M }.s I.M s I.s I.I.}.s I.[.s [.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[./+H [.H /+H /+[.{.H H {.{.H {./+{.H /+H {.8 /+{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.&.[ &.[ &.7+[ [ [ [ &.S.7+[ [ 7+[ m.7+S.[ m.[ [ m.[ m.[ m.[ m.[ m.m.[ m.m.m.m.m.m.m.-.m.m.-.m.m.-.m.-.-.m.-.-.m.-.-.-.-.-.-.-.-.x+-.-.G+-.G+-.G+G+-.G+D+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+A+G+G+w+C+A+]+y+]+C+y+H+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+;+d+;+d+f+d+d+d+d+f+d+-+d+-+f+d+f+d+-+-+-+f+c+-+=+f+c+f+=+=+e+=+e+*+=+=+P.e+*+e+P.*+,+P.*+,+*+C.P.X.*+,+*+X.C.,+X.X.X.X.X.V.Y.V.s.Y.s.r.r.r.r..+r..+D.D..+D.D.t.D.t.D.0.t.0.0.0.0.0.0.a.0.a.a.a.a.v.U v.v.v.P W W v.W W W W k v.k v.k k v.k k P k k k W k W k k k k k d d d k d k d d k d k k d k d k d k d d d d d d d d d d d d d d d d d X d X V v V v v v v v v G v G v v G v G v G G v G G G G G v G G G G G G G 2 G G G G G G G h h #.h | h | F h F F F F | F F 4 F i 4 F i 4 i 4 D i 4 +.g D g D g +.g D g g N +.g +.N N N +.N N N N g <.g M N .M <.M M .}.M .I.M M M <.M M I.}.M I.M }.M }.M I.I.}.I.}.[.s }.[.s I.s [.I.[.s [.[.[.[.[.H [.[.[.j.[.{.H [.H [.H /+H H /+H {./+H &.H {.H {.&.{.&.{.{.8 {.&.{.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.7+&.7+&.[ &.[ &.7+&.[ 7+[ [ [ [ S.[ [ S.[ [ [ [ m.[ [ [ m.[ m.[ m.F++ F+m.m.m.m.m.m.m.m.m.-.m.-.-.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.G+-.-.-.-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+w+G+A+]+G+]+C+G+]+A+H+C+y+]+A+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+d+f+d+d+;+d+f+d+d+f+d+f+d+-+-+-+-+e+-+-+c+-+-+f+=+e+=+=+f+=+=+=+=+e+P.=+*+P.P.*+P.*+P.,+*+X.,+*+,+P.X.X.X.*+X.X.X.X.X.X.X.s.s.s.V.r.Z.r.r.r.r.D.r.D.t.D.t.t.D.t.0.0.t.0.0.0.0.a.V a.a.a.a.U v.v.v.v.W W W W v.W W W W W W W W W W W W k W W k k W k W k W W k W k k k k k d k d k k d k d k d k k d k d k k k d d d d d d d d d d d X d X d V v V v v v v v v G G v G v G G v G G G G v G G G v G G G G G v G v G v G G 2 G 2 G G h G | h h h | ~.h | F | h F F | F F F 4 F i 4 i i i i 4 +.4 +.4 +.g +.g N g +.+.+.N +.N +.+.+.N +.N g N <.g N N .M <.M .M M M M }.M M }.M M I.<.M M <.M <.}.I.}.}.M I.s I.s I.I.s I.[.[.[.}.[.[.[.I.[.[.[.[.[.[.[.H [.H [.[.{.[./+H H H /+H H {.H H /+{.{.&.{.H {.H /+&.{.&.{.&.&.{.&.{.&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.&.[ &.&.[ &.[ &.[ [ &.[ [ <+[ 7+[ S.[ [ [ m.[ [ F+m.[ m.[ m.F+m.[ m.m.m.m.m.m.m.m.-.m.m.m.-.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.x+G+-.-.-.G+-.G+-.G+-.-.G+G+-.G+G+-.G+G+G+G+G+G+G+C+G+G+G+G+A+G+w+]+A+]+]+y+]+C+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.d+d+;+f+d+d+d+d+-+d+-+d+-+f+d+-+f+-+-+f+-+-+=+-+e+-+-+e+=+e+=+=+=+=+=+=+P.*+P.P.P.,+*+*+P.,+*+C.,+P.X.*+X.,+X.X.X.X.X.X.s.X.V.s.s.s.r.r.Z.r..+r..+D..+D.t.D.0.t.0.t.0.0.0.0.a.0.a.a.U a.v.v.v.P v.W W v.b.W b.l b.l b.l W b.W l W W W W W k W W W k W W W k W W k W k k k k k k k k k k k k k k k k k k k k k k k k d k P d P d d X d d X d X X V X v 2 v v G 2 v 2 G 2 G 2 G G 2 G 2 G G G 2 G G G G G v G G G G 2 G v G G G G G G G h G | h | h | | h | F | F F F F | 4 F i F i F 4 i D i 4 +.4 N 4 D D D +.g 6 +.i +.+.+.6 N N N N +.N g g <.g M N 5 M 5 <.M .<.M M <.M M <.M M }.I.M I.<.M I.M M I.}.M I.I.I.s }.s [.M I.[.s [.s [.[.s [.[.[.[.[.[.[.[.j.H [.[.H [.[.{.[.H {./+H {.{.H /+H {.{./+&.{.H {.8 &.{.H &.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.[ &.&.7+[ &.7+&.7+[ [ 7+&.[ 7+[ S.[ [ S.[ [ [ m.[ m.[ F+m.[ m.[ m.[ m.[ m.m.m.m.m.-.m.m.-.m.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.G+-.-.-.-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+A+]+G+]+A+A+]+A+H+C+y+]+A+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+f+d+d+f+d+f+d+d+f+d+f+d+-+f+d+-+f+-+c+-+e+-+f+-+e+e+-+e+=+=+e+=+=+P.e+*+e+P.*+*+P.P.,+*+C.,+*+X.*+,+X.*+X.X.X.X.X.X.X.X.s.X.s.s.s.s.r.r.r.r.r.D.t.D.t.t.0.t.0.0.0.0.0.a.0.a.a.U a.v.a.v.P v.W W b.b.l b.H.l H.l H.l l H.l l l l l l l W l W k W W W k W l k l l k W W k k k k k k k k k k k k l k l k _ k _ k _ l l _ l l l _ W P P a.d X V V X v X v 2 t.v @.3.@.G @.G G G G G G G G G 9 G G 9 G 9 G 9 G 2 G v G G 2 G 2 G G G G | G h G h h h | h F | h F | F | | F F | F i 4 i i i i +.i 4 +.4 i g i g i +.+.6 +.6 i 6 +.i i +.N N g N <.g N g . .N M M <.M M <.M M <.M M I.<.M M <.}.M M }.I.M }.M I.I.s }.I.s I.[.}.s [.[.[.I.[.[.[.[.[.[.[.[.[.[.[.[.[.H [.H /+H [.H /+H H {./+H {.{.{./+H {.H {.&.{./+&.{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.&.[ &.&.[ &.[ &.[ &.[ [ [ [ [ [ 7+[ [ 7+[ [ [ [ [ m.[ m.[ m.[ m.m.F+m.m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.m.-.-.+ -.-.-.-.-.-.-.x+-.-.-.G+-.-.G+-.G+x+D+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+A+G+G+A+]+G+]+C+y+w+]+C+y+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+;+d+d+f+d+d+d+d+f+-+d+f+-+d+-+-+-+-+-+f+-+-+c+f+=+=+-+e+=+e+=+=+=+P.e+*+*+P.*+P.P.*+P.*+C.,+*+,+*+,+X.P.X.X.X.X.X.X.X.s.s.V.s.V.Y.r.s.r.r.r.r.D..+D.t.D.0.t.0.0.0.a.0.a.a.a.a.a.v.a.v.v.W v.W b.b.b.b.H.l H.m 4.m 4.y 4.l y H.l H.l l l l l l l l l l l l k l l k l l l k l l k k k k l k l l l k l k l m m m m m m m l l _ W P P P P V X V v X t.v t.t.t.t.G 3.t.G 3.G 3.3.G 3.G 3.G 9 G G G 9 G 9 G 9 G 9 G 9 9 G 2 G 2 G G G 9 h G G | | G | #.| h | h | | | | F F | | F | 4 F i F i 4 i 4 i 4 i g i D 4 +.4 6 +.i +.i i +.i N N N D N N g .t .t .5 M g M M <.M M <.M M }.M M M }.I.M <.I.<.M }.s I.}.M I.I.M [.}.M [.[.s }.[.s [.[.}.[.[.}.[.[.H [.[.j.H j.H /+[.[.H /+H H H /+{.H {.H {.H {.{.&./+H {.H {.&.&.{.&.&.{.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.7+&.[ &.[ &.[ 7+&.[ 7+&.[ S.7+[ S.S.[ m.S.[ m.[ m.[ [ [ m.[ m.[ m.[ m.[ m.m.m.-.m.m.m.m.-.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.G+-.-.G+-.-.-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+C+G+]+G+]+A+]+A+]+A+w+]+H+C+y+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+f+d+d+d+f+d+f+d+d+-+d+-+f+-+f+-+c+f+c+=+f+-+e+-+e+e+-+e+=+=+e+=+e+=+P.=+P.e+*+,+P.,+P.,+*+X.P.,+X.*+X.X.X.X.X.X.X.s.X.V.Y.s.s.r.s.r.r..+r..+r.D.t.D.0.0.0.0.0.a.0.a.a.a.a.v.a.v.v.W W b.b.b.b.H.m 4.m 4.y 4.y 4.y 4.y y 4.m y y m l m l l l l l k l l l l l l l l l l l l k l l l l l l k l l m y Q *.y *.m m l b.P P P P a.a.V X V X t.X t.t.t.t.3.t.3.@.3.t.9.3.Z.3.9.9.9.9.9.G 9.9.9.3.9.G 9.G j G j G 9 9 9 9 9 G G G G G G G h | G h | G | h | h | F h F F | F | 4 F F F 4 i 4 i i i i 4 +.4 i g i 6 i +.i i i i i i 6 |.i +.N N g g N M g 5 g M N M t M <.M M <.M M <.M <.<.I.<.M }.M M }.M }.I.}.s I.I.s I.I.s I.[.M [.[.[.}.[.[.s [.[.[.[.[.j.[.[.[.[.[.[.H [.H /+H /+H {.{.H /+{./+{.{./+H {.{.{.&.&.{.{.H &.&.{.&.&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.&.7+&.[ &.7+&.[ 7+[ [ [ 7+[ S.[ [ [ [ [ [ m.[ [ m.m.[ m.F+[ m.F+m.m.m.m.m.m.m.m.-.m.m.m.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.G+-.G+G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+A+G+G+G+G+A+]+C+A+]+y+]+C+y+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.d+d+f+;+d+d+d+d+-+f+d+-+d+-+d+-+f+-+-+f+c+f+e+f+e+-+e+e+e+e+e+=+e+P.e+*+*+e+P.*+P.*+,+*+X.P.,+*+X.*+X.X.*+X.X.X.X.X.s.X.s.s.V.s.s.s.s.r.s.r.r..+D.t.t.t.0.0.a.0.a.a.a.a.v.a.v.W W b.b.b.b.l H.m 4.4.4.4.y *.4.*.*.y *.4.y y 4.y m y m y y l l l l l l l l l l l l l l l l l l l l l l l m y Q Q Q *.m m m l l b.P P P P a.V a.X V X t.0.t.t.t.t.3.t.t.3..+Z.Z.3.Z.r.Z.9.Z.9.Z.9.Z.Z.9.9.9.9.9.2.9.2.9.9.j 9.9 9.9 G 9 9 9 9 9 9 G j G G | G j | G | #.| h | | | | | | F | | 4 | F i i 4 i 4 i i 4 i 4 i i i i i i i i O i i i 6 N i N g N N g N .5 N 5 .5 .5 M <.M M <.M M M M M <.M I.<.}.M <.}.M M }.M }.s I.}.s I.[.I.}.s }.[.s [.[.[.[.}.[.[.[.[.[.[.H j.H [.[.{.[.H [.H /+H /+H H {.H /+H {.{.H {.H /+H &.&.{.{.&.&.&.{.&.&.&.&.&.&.&.&.&.&.&.&.[ &.[ &.&.[ &.[ &.[ &.[ &.[ [ [ [ 7+[ S.[ S.[ [ [ m.[ [ [ m.[ m.[ m.[ m.[ m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.x+G+-.-.G+-.-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+]+G+G+]+A+]+A+]+G+C+w+]+A+C+H+]+C+H+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+f+d+d+f+d+f+d+f+d+d+f+-+-+-+f+c+-+f+-+=+f+e+-+e+f+e+-+e+=+e+e+e+e+e+P.e+e+P.*+,+*+X.*+,+*+,+*+X.,+X.*+X.X.X.X.X.s.X.V.s.s.s.s.s.r.r.s.r.r..+r.D.D.D.t.t.0.0.0.a.a.a.v.v.v.W v.v.b.b.b.l H.4.4.4.4.y *.*.*.*.*.*.*.*.*.*.*.*.*.*.y 4.y y m y y y l y l y l y l y y y y y y y y l m y x Q Y Q *.*.m m m m l b.W P P P a.V a.V X 0.W.t.t.W.t.3.t.3.t..+3.Z.3.3..+Z.Z.3.Z.9.Z.9.Z.9.9.u.9.Z.9.2.9.u.9.2.2.2.9.2.2.9.2.u.j 9.j j j j j G j j h j h h | j h | | #.h F h | F | F F | 4 | F i F i i i i i i i i i i i i i O i i O 6 +.i i N N N g g .5 N g .N 5 <.5 <.M 5 <.M M <.M <.}.<.M <.M I. .}.M M }.I.M }.I.}.s I.I.I.M [.s [.[.}.[.s }.[.[.[.[.[.[.[.[.[.[.[.H j.H [.[.H /+H H {.H /+{.H {.{.{.{./+{.{.{.{.&.{.{.&.&.&.{.&.&.{.&.&.&.&.&.&.&.&.&.[ &.&.&.&.&.[ &.[ &.7+&.[ [ [ &.[ [ [ S.[ 7+S.[ [ [ [ 7+m.[ m.[ m.m.[ m.[ m.m.[ m.m.m.-.m.m.m.m.m.-.m.-.m.-.m.-.m.-.-.+ -.-.-.-.-.-.-.-.-.-.G+-.-.-.G+-.-.G+G+-.G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+]+w+]+A+H+]+A+y+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+d+f+d+d+d+d+d+-+-+d+-+d+f+-+f+f+-+c+f+e+-+e+f+e+e+!+e+e+e+!+e+e+,+e+e+,+e+,+*+,+*+,+*+,+,+*+X.*+X.,+X.X.X.X.X.X.X.s.Y.V.s.s.r.s.s.r.r.r.r.D.D.t.t.t.0.0.a.a.a.a.v.v.v.v.b.b.b.b.b.H.4.4.4.4.*.*.*.*.*.*.Q *.Q Q Q Q Q Q *.*.*.*.*.*.y y y y l y y y l y y y y y y y y y m y Q Y Z Q Q *.y y m m m l W W P P P a.a.a.a.X 0.W.t.t.t.t.t.3.t.3..+3.3.Z.3.Z.Z.Z.3.Z.Z.Z.Z.u.Z.u.(+u.R.2.(+2.(+2.R.2.2.9.2.2.2.2.2.j 2.2.2.j 2.j j j j j | j j ~.j #.h | #.| #.| | | F | | | | F | F 4 i 4 | i i 4 i i i i i i i i O i i O i i i N N g N g g g t .g g t .5 5 g M 5 <. .M <.M M <.M M <.M <.M }.M }.<.}.M }.I.M M I.}.s M [.I.}.[.M [.[.[.[.[.}.[.[.[.}.[.[.j.H j.[.[.[.H [.{.H [.{./+H {.H {.{.H /+H {.H {.H /+H {.&.&.{.{.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.7+&.7+&.[ &.[ &.[ 7+&.[ 7+[ <+[ 7+[ S.[ [ [ m.[ m.[ m.F+[ m.[ m.[ m.m.[ m.m.m.m.m.m.m.-.m.-.m.m.m.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.x+-.-.-.G+-.-.G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+A+]+A+]+A+]+G+C+A+C+]+y+H+]+A+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.d+;+d+d+f+d+-+f+d+d+f+d+f+-+-+-+-+e+f+e+f+e+e+e+e+e+e+e+!+e+e+,+e+,+e+,+,+,+,+*+,+,+*+X.*+,+*+X.*+X.X.X.X.X.X.X.s.s.s.V.s.s.s.s.r.r.r.r.r..+r.t.D.t.0.0.0.0.a.a.v.v.v.b.b.b.b.H.H.4.4.m 4.*.*.*.*.Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q *.x *.*.*.y y y y y y y y y y y y y y y Q Y Z Z Q *.*.y y *.m m l b.W P P P a.a.a.V W.t.W.t.t.t.t.3.3.3..+a+a+3.Z.a+3.Z.3.Z.3.u.Z.u.u.Z.u.(+u.Z.(+(+(+(+(+2.(+2.R.R.R.2.2.2.2.2.2.2.2.2.2.j 2.#.j O j #.j | j | G j #.h | | #.| #.| | F | F | 4 i | i | i i | i | i i i i i O F i O O i i i 6 6 N N g g t g g g 5 5 g 5 N M t g <.M M <.M M <.M <.}.M <.M }.M <.}.M M }.M }.}.I.s I.}.I.I.s [.M [.[.}.s [.[.[.[.[.}.[.[.[.[.[.[.H [.{.[.[.H [.{.[.H {.H /+H {./+{.{.&.{.{.&.{.{.&.{.H &.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.[ &.&.[ &.[ &.[ 7+[ [ [ 7+S.[ [ [ [ S.7+[ [ m.[ S.m.[ m.[ F+m.[ m.m.m.m.m.m.m.m.m.m.m.-.m.-.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.G+-.G+-.-.G+-.-.-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+y+]+]+w+C+H+G+H+H+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+d+d+f+d+d+d+f+d+-+f+-+-+-+f+f+e+f+-+f+-+e+f+e+e+e+e+e+e+e+,+e+,+,+e+,+e+,+*+,+,+,+,+,+,+,+X.,+,+X.*+X.X.X.X.X.X.s.X.s.s.s.r.s.V.s.r.r.r.r.D.D.D.t.D.t.0.a.a.a.v.v.P b.b.b.H.m 4.m 4.4.*.*.*.*.Q Q Q Q Q Y Y Y Y Y Y Y Q Q Q Q Q Q Q x *.x *.*.y *.y y y y y y y *.x Y Z Z Y Q Q x *.*.*.m m l b.W W P v.a.a.a.X W.0.W.t.t.W.3.W.3..+a+3.3.3.a+a+3.Z.a+Z.u.Z.|+Z.u.Z.u.(+u.(+(+(+u.(+u.(+(+(+(+(+(+(+K.(+K.R.K.R.2.2.2./.2.2./.2.O #.O j O j O j | j | #.#.| #.| F | F | | i | | F 4 | 4 i | i i i | i | | #.| O | i | O i i i 6 : N : g g 5 t 5 N M N 5 .g 5 M 5 <.M M <.M M <.M <.}.M }. .}.M }.<.}.M }.M M }.}.s [.s }.s I.[.I.[.[.[.}.[.s }.[.[.[.[.[.[.j.[.j.H [.[.{.[.H [.{.H H /+H {.H {.H {.H /+H {.H /+{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.[ &.&.7+&.7+&.7+[ &.[ &.[ [ [ [ 7+S.[ S.[ m.[ m.7+m.[ m.[ F+m.[ m.[ m.[ m.m.m.m.m.-.m.-.m.m.-.m.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.G+-.-.G+G+-.-.G+G+G+G+G+-.G+G+G+G+G+G+G+G+C+G+]+A+]+A+G+C+G+y+]+y+]+H+A+]+A+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+f+d+d+d+f+d+d+f+d+d+d+f+f+-+-+f+e+f+e+f+-+e+f+e+e+e+!+e+k+e+k+e+e+,+,+,+e+,+,+,+,+,+X.,+,+*+X.*+,+X.X.X.X.X.X.s.V.s.s.s.s.s.r.Z.r.r.r..+r.r.t.D.t.t.0.0.0.0.a.a.v.v.b.b.H.H.4.4.4.*.*.*.*.Q Q Q Q Y Y Y B.Z B.Z Z Y Z Y Y Y Y Q Q Q Q Q Q x Q x *.x Q x Q x Q Q Z Z n Y Y Q Q *.*.*.y m l l b.W P v.P a.a.a.V W.t.W.t.W.`.t..+3.a+3.3.a+a+a+3.Z.a+|+3.|+Z.|+u.(+u.|+(+|+(+(+u.(+(+(+(+u.(+u.(+2._+/._+K.(+_+K.K.K.K.K.K./.K./.O /./.O O O O j O O O j j #.#.| #.F #.| F F F | F | F i | i i | | | i | O O | O | O O i i i i 6 6 N g N g t g g g 5 g g t g t .N .g .<.M <.<.M M <.M <.M }.M <.M }.M }.M }.I.I.M I.M }.[.I.}.s I.[.}.[.[.[.[.[.[.[.[.[.[.[.[.[.[.H j.[.[.{.H H H /+{.{./+H {.{.{.{./+{.{.{.{.8 {.{.&.{.&.{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.[ &.[ &.[ &.[ [ [ &.S.7+[ S.[ S.[ [ [ [ [ [ [ F+[ m.[ m.[ m.m.[ m.F+m.m.m.m.m.m.m.-.m.m.-.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.x+-.G+-.-.G+-.-.-.G+G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+w+C+A+]+C+y+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+d+d+f+d+d+-+d+f+-+f+-+-+c+f+e+f+e+f+e+e+e+e+!+e+k+e+,+e+k+,+,+k+k+,+,+,+,+,+,+,+,+,+,+,+,+,+X.X.X.,+X.X.X.X.s.X.Y.s.s.s.r.V.r.s.r.r.r..+D.@.D.t.0.0.0.a.a.a.v.W b.b.H.4.4.4.*.*.*.*.A.Q Q Q Y Z B.Z Z Z Z Z Z Z Z Z Z Z Z Y Y Y Y Q Q Q Q Q Q Q Q x Q x Q Z n Z Z Y Y Q Q x *.*.m m m b.b.W P v.a.a.a.X W.W.t.W.t.W.3.t.a+`.a+3.a+a+3.a+3.a+|+u.|+Z.|+|+u.h+u.|+(+|+(+u.|+(+_+u._+_+(+_+_+_+_+_+(+_+_+_+_+K.(+K.K.K.K.K.K.K.K.K./.O O /.O O O j O ~ j | #.#.#.#.| F | i | F i | i | F i | i i F j | j | O j | O | i i i 6 6 N : g g 5 g 5 5 5 N g t .g 5 g 5 .M <.M . .M M <.M <.M }.M t <.}.M }.I.}.M }.M [.}.}.I.s }.s }.[.I.s [.s [.}.[.[.}.[.j.[.j.[.j.[.[.H [.H [.[.{.[.{.[.{.H {.{.H /+H {.H {.H {./+{.{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.&.[ &.[ &.7+&.&.&.[ &.7+&.[ 7+&.[ [ 7+[ S.7+[ [ [ S.[ S.F+[ m.[ m.[ m.[ [ m.[ m.m.+ m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.G+G+G+-.-.G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+A+]+A+]+A+]+A+]+]+C+y+]+y+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+f+d+d+d+f+d+-+-+d+f+-+f+f+f+f+e+e+e+e+e+l+e+k+k+e+k+k+,+,+e+k+,+,+k+,+k+,+,+n+,+n+,+X.,+X.,+X.,+X.X.X.X.X.Y.s.s.s.s.s.r.s.r.r.r.r.r.r.@..+t.t.t.0.0.a.0.a.a.v.G.b.b.4.4.4.*.*.*.Q Q Q Y B.Z Z Z Z Z e.n n n n n n Z n Z Z Z Z Y Y Y Y Q Y Q Q x Q Q Y Z n n Z Y Y Y Q Q *.*.y m m b.b.W W a.a.a.a.W.W.W.t.W.W.3.`.a+a+a+3.a+3.a+3.a+a+|+|+|+|+a+|+|+|+u.h+|+u.(+|+u._+|+_+|+1+_+1+u._+1+(+_+_+_+_+/._+/._+/._+K._+K.K.K.K.K.K./.|.K./.|.O w O w O O w w j | j | #.#.F F F i | F | F i | i | #.j | #.| j | #.| O i O i 6 6 i : g N : g 5 g g N 5 5 g 5 N .N .<.g M <.<.M <.<.}.M }.<.M <.I.M <.}.M M }.M }.M }.M [.M }.s I.[.I.[.[.}.[.[.[.[.}.[.[.s [.[.H [.H j.[.H j.H {.[.{./+H H {.H H {.{.{./+{.&./+{.8 {.&.{.&.{.&.&.{.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.[ 7+&.[ &.[ [ &.[ [ 7+&.[ [ [ [ S.[ [ [ F+S.[ m.[ [ m.m.[ m.m.[ m.[ m.m.m.m.m.m.m.-.m.m.m.-.m.-.m.-.m.-.-.+ -.m.-.-.-.-.-.-.-.-.-.G+-.G+-.-.-.-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+w+A+G+y+y+]+C+H+C+y+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+d+d+f+d+-+d+f+d+f+-+f+-+f+e+e+-+e+e+e+l+e+k+e+e+k+k+,+k+k+k+n+k+n+,+n+,+,+k+,+,+n+,+k+,+n+,+X.,+X.X.X.X.Y.s.X.s.V.s.s.s.s.r.s.r.r.r..+r.D.@.D.t.t.0.0.V a.a.a.W W b.H.4.4.*.*.*.Q A.B.Y B.Z Z e.Z n n n n n n n n n n n n Z Z Z Z Z Z Y Y Y Y Y Y Y Z n n Z Z Y Z Y Q Q Q *.4.4.H.b.W b.G.a.a.M.W.W.0.W.t.W.3.t.q+3.W.3.a+3.a+a+a+3.|+3.|+3.|+|+|+u.|+u.h+u.|+|+|+u.1+|+_+u._+u._+_+_+_+_+_+w.u._+_+_+_+_+_+_+E._+K._+K.K.K.K.E.K.K.E.K.K.K.O |.O w O O w w w O #.| #.#.| #.F i | i F | F #.| | | j | j #.O | O | i i i 6 6 g 6 : g N 5 t 5 g 5 N 5 N g 5 g 5 g M <.g M N M M M M <.t <.M }.M }.M <.}.M I.}.M }.M }.M I.[.}.s I.s I.[.[.I.[.[.[.[.j.[.j.[.[.j.[.[.[.j.[.[.[.[.H [.H {.H /+{.{.H {.H {.H {.H {.{.{.{.H &.{.{.&.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.[ &.&.[ &.[ &.&.[ &.[ [ [ [ 7+S.[ 7+[ [ [ S.[ [ [ m.F+[ m.[ [ m.[ m.m.m.m.m.F+m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.-.G+G+G+-.G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+C+w+A+]+G+]+G+]+C+A+H+w+C+]+H+]+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.f+d+d+d+d+-+d+f+-+f+-+f+c+f+f+e+f+e+e+e+k+k+k+k+e+k+e+k+,+,+k+n+k+n+n+k+n+n+n+k+n+,+n+,+n+,+n+X.X.,+X.X.X.X.V.Y.s.s.r.s.s.r.r.s.r.r.r.@.D.t.@.0.t.0.0.V a.a.v.v.b.b.4.4.4.*.Q A.Q Y B.Z Z e.Z n n n n n n ` ` ` n ` n n n n n n Z n Z Z Z Z Z Z n n ` n Z Z Z Z Y Y Q *.*.y 4.m l b.G.a.a.a.a.X W.W.W.W.W.3.W.`.`.a+3.a+`.a+++3.++a+|+|+|+|+|+|+|+|+|+|+|+|+|+u.1+|+_+u.1+_+1+_+|+_+1+_+u._+_+_+_+_+w._+_+/._+w.K.w.E.w._+E.E.K.E.K.K.E.E.^.E.K.E.O w O w O w ~ w O | #.#.i #.F O F | F | #.| j #.| j j | j | O i i i i i 6 : 6 g ( : g g g t g 5 g g t g <.g <.g M .t .<.<.<.N M M t }.<.<.M }.<.M }.}.M }.M }.I.s }.M s }.[.}.[.}.[.s }.[.}.s [.[.[.}.[.[.[.j.H [.H [.{.H {.H {.[.{.H {.H {.{.&.{./+{.{./+H {.&.{.{.&.&.{.&.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.&.[ &.&.7+&.7+&.[ &.[ &.[ S.7+[ S.[ m.[ [ [ m.F+[ [ m.[ m.F+[ m.[ [ m.[ m.m.m.m.m.-.m.m.m.-.m.-.m.m.-.-.m.-.-.m.-.-.-.-.-.-.-.x+-.-.G+-.-.-.-.G+-.G+D+G+G+G+G+G+G+G+G+G+G+G+C+G+G+G+G+A+G+A+]+A+]+]+y+C+]+y+C+y+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+d+f+d+f+d+-+-+d+-+f+e+f+f+e+e+e+e+k+e+k+e+k+k+n+k+n+k+k+n+n+n+n+n+n+k+n+,+k+n+k+n+,+n+n+X.,+X.n+n+X.Y.X.Y.s.s.s.s.s.s.r.s.r.r.r.r.r..+t.D.t.t.0.V 0.a.a.a.P W b.b.H.4.*.*.A.Q Y B.B.Z Z n n n n n.` ` ` L ` ` L ` ` ` ` n n n n n n n n Z n n ` n n d.Z Z Z Y Y Q Q *.y 4.H.b.G.v.a.a.a.W.W.W.t.W.t.W.3.W.`.a+3.`.a+`.|+3.a+|+a+++|+++a+|+|+|+u.|+|+|+|+|+|+1+u.m+u.1+(+1+(+1+_+1+_+_+_+_+_+w._+w._+_+w._+w.K.w.}+_+_+E.E.}+_+E.E.E.E.K.E.K.^.%.^.E.^.w w w O w w O O O #.#.| #.| i #.j #.j j ~.j #.| #.j | O | i 6 i 6 g 6 g : g g 5 : t 5 g N 5 t g M g 5 g M N <.g <.g M M M <.t <.M }.M <.}.M }.M }.M }.M }.M }.M [.}.[.M [.s I.[.}.[.[.[.[.j.s j.[.[.H j.H [.j.[.j.[.H [./+[.{.H {.H {.{.H {.H {.H &.H {.&.{.{.{.&.{.&.&.{.&.&.&.&.&.&.&.&.&.&.&.&.&.&.7+&.&.[ &.[ &.[ &.[ 7+[ 7+[ [ S.[ [ [ S.[ m.[ S.[ m.[ m.m.[ m.[ m.m.F+m.m.m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.x+-.-.G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+]+w+C+y+y+C+]+C+y+]+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+f+d+d+-+f+d+f+-+f+c+f+e+e+f+e+l+e+e+k+e+k+k+k+k+k+k+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+n+,+n+n+n+n+X.X.X.X.Y.V.s.Y.V.s.r.r.r.r.r.r.r..+@.D.@.t.t.0.0.0.a.V a.a.W G.b.l 4.4.*.*.Q Q B.Z Z e.n n n ` ` L L L L L L L L L L L ` ` ` n n n n n n n ` ` n d.d.Z Z Z Y Y Q Q x.*.4.H.b.b.v.a.a.M.W.W.W.t.W.`.`.a+`.`.a+`.`.a+3.a+`.a+++3.++|+3.|+l.|+|+|+|+|+|+|+|+|+|+|+_+|+_+1+1+|+_+_+_+1+_+w._+w._+_+w._+_+w._+w._+w.}+K.}+E.}+_+E.E.E._+E.E.E.E.E.E.E.K.^.O ^.O w w w w 6 w O #.i #.O #.#.#.| #.#.| j h j j | | O | i i i 6 : 6 : : 6 : 5 g t g g g 5 g g g N .N .N .5 <.M <.<.<.t <.t }.t .}.M t <.M <.}.M I.}.M }.s I.}.s }.I.[.}.[.I.[.}.s j.[.[.H }.H j.[.[.[.[.H [.H H [.{.H {.[.{.H /+{.H {./+{./+{.{./+{.{.{.&.{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.&.7+&.&.[ &.[ &.7+&.[ 7+&.[ [ [ [ 7+[ S.[ [ S.7+[ [ m.[ m.[ F+[ m.[ m.[ m.m.m.F+m.m.m.m.-.m.m.-.-.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.G+-.G+-.-.G+-.G+G+G+-.G+G+-.G+G+G+G+G+G+G+G+G+]+G+A+G+A+G+A+]+G+]+A+]+y+y+]+C+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.d+d+f+-+d+f+-+d+f+f+f+-+f+e+e+e+k+k+e+k+k+k+n+k+k+n+k+k+n+n+n+n+n+n+n+n+k+n+n+n+n+,+n+n+n+X.n+Y.n+n+n+X.V.Y.V.s.s.s.s.r.s.r.r.r.r.r.@..+@.@.0.0.0.V V a.a.v.W b.b.H.4.*.*.Q Q B.Y Z e.n n n.` r L L L L C L q L q L L L L L L ` ` ` n n L L ` ` d.n d.d.Z Z Y Y Q *.*.4.4.b.b.G.M.a.W.W.W.W.W.`.W.a+W.`.3.`.3.a+`.`.`.++3.++`.|+|+++|+|+|+|+|+|+|+l.|+|+|+|+1+u.|+u.1+(+1+_+1+1+_+w.u._+1+_+w._+_+w._+w.w._+w.}+_+w.}+}+E.}+_+}+E.E.}+E.E.E.E.E.E.E.E.E.^.E.^.w w w w w 6 O O #.#.#.j #.j #.j ~.j #.| #.j | i i i 6 i : : g 6 g : N : 5 : t g t g t g 5 .5 g g M N .t .5 M .<.M <.M }.t <.}.M }.}.M }.}.M }.M }.}.s I.M [.M }.s [.[.s [.}.[.j.s j.H [.H j.H j.[.j.[.j.[.{.[.[.{.H /+{.H {.{.{.H {.H {.H {.H {.{.{.H &.&.&.{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.[ &.[ &.[ [ &.[ &.S.[ [ [ S.[ [ [ m.[ F+[ m.m.[ m.[ m.[ m.[ m.m.m.m.m.m.-.m.m.-.m.m.-.m.-.m.-.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+]+A+C+w+C+y+C+]+y+]+H+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+f+-+f+f+f+-+f+f+f+-+e+f+e+e+e+e+e+e+k+e+k+k+k+k+k+k+k+n+k+n+n+s+n+n+n+n+n+n+n+n+n+n+n+n+n+n+Y.n+n+X.Y.X.Y.V.Y.s.s.r.s.s.r.r.r.r.r.@.D.@.t.t.t.t.V 0.a.a.a.P G.W b.m 4.*.*.A.Q Y e.Z n n ` ` L L L C L q q q q q q q q q L L L L L ` L L L ` ` ` n d.n Z Z Y Y Q *.*.4.4.b.G.G.a.a.M.W.W.W.W.W.`.W.`.3.`.`.a+`.`.a+++3.`.`.`.|+++3.|+3.|+++|+l.|+l.|+|+|+1+|+u.|+1+1+|+1+u.1+_+1+u.1+_+1+_+u._+w._+w._+w._+w.}+w.w.}+}+w._+}+E.}+}+}+E.E.}+E.E.E.E.E.E.E.E.^.E.^.^.^.w w w w O O j #.#.#.#.#.#.j ~.j #.| O | O i i i i 6 i : g 6 : : g : 5 g g g 5 g g N g N .N g g N g <.N M <.M t <.t <.M t M <.M M }.M M }.M }.M s }.s }.}.[.}.[.I.}.[.}.[.[.s j.s [.j.[.[.j.[.[.[.[.H j.H [.{.[.j.H [.{./+H {.{.{.{./+{.{./+{.{.&.{.{.{.{.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.[ &.7+&.7+&.[ 7+&.[ [ 7+[ 7+[ S.[ [ [ [ m.[ [ m.[ [ m.[ m.F+[ m.m.m.[ m.m.m.m.m.m.m.-.m.m.-.m.-.m.m.-.m.m.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.-.G+G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+A+G+A+G+C+G+w+C+y+]+C+]+y+C+H+A+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+f+-+f+f+f+f+=+f+e+f+e+e+f+e+k+e+k+k+k+k+k+k+n+k+n+n+n+n+n+s+n+s+n+s+s+n+s+n+n+n+n+n+n+n+n+n+n+X.n+n+V.n+s.n+s.s.s.r.r.s.r.r.r.t.r.D.t.@.t.0.V 0.V a.U P v.W b.m 4.4.*.*.Q Y B.Z e.n n.` ` L L L q q q q a q a a q q L q q L L L L q L L ` ` ` d.d.Z Z Z Y Q Q *.*.4.b.b.G.M.M.M.W.W.W.W.W.`.`.`.`.`.`.a+`.`.3.`.`.++a+++|+++3.|+++|+++|+|+++|+|+|+|+|+|+|+|+1+u.1+|+1+_+u.1+_+1+_+1+w.u.w.1+_+w._+w._+w.w.w._+}+w.w.}+w.E.w.}+E.E.E.}+E.E.E.E.E.E.E.E.^.E.E.^.w ^.^.w w w w w O 2.#.j 9.j G #.#.j #.j #.i i i i i 6 : g : 6 g : 5 6 5 N : N 5 N g <.g M g 5 g M N <.5 <.M N M <.<.M t M }.<.}.t <.}.M <.}.}.M }.M }.I.s I.s s I.s }.s [.}.[.}.}.[.[.I [.[.H [.H [.j.H [.[.[.{.[.{.H {.{./+H {.{.{.H {.H &.H {.H &.{.{.&.{.&.{.&.{.{.&.&.&.&.&.&.&.&.&.&.&.&.7+&.[ &.[ &.[ &.&.[ 7+&.[ [ S.[ [ S.[ [ [ [ S.F+[ [ m.[ m.[ [ m.[ m.[ m.m.m.m.m.m.m.-.m.m.-.m.-.m.m.-.m.-.-.-.m.-.-.-.-.-.-.-.-.G+-.-.-.-.-.-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+w+G+G+]+G+]+A+]+y+C+]+y+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.f+f+f+f+-+e+f+f+e+e+e+f+e+e+k+e+k+e+k+k+k+k+n+k+n+n+n+s+n+s+n+n+n+s+n+s+n+s+s+n+n+n+n+n+n+n+Y.n+n+Y.s.n+s.V.s.r.s.r.s.r.r.r.Z.r.r.@.t.@.t.0.v 0.V a.a.a.v.W b.b.b.4.m *.A.Q B.Z Z n n ` ` L C q q q a a a a a a a a a a q q q q q q L L L ` ` d.n d.N.Z Y B.Q *.*.H.H.6.G.G.M.M.W.W.W.W.`.`.`.W.a+`.`.a+`.3.`.`.a+`.`.++3.++a+++++|+`.|+3.++|+l.|+|+l.l.|+l.|+u.1+|+1+u.1+1+u.1+w.u._+1+_+_+1+w._+w._+w._+w.w.w.w.}+_+}+}+w.}+E.}+}+}+E.E.}+E.E.E.E.E.E.E.E.E.^.E.^.^.^.^.w w w w O 2.2.j 9.#.j j ~.| O | i i i i : : 4 6 N : : N : : g 5 g 5 g g g 5 g N .N N N g 5 <.g <.<.5 <.M N <.t M M <.M }.M }.}.M }.}.M }.}.s }.s }.}.[.}.[.I.}.[.}.[.[.[.}.H }.H j.[.j.[.[.[.j.H j.[.{.[.j./+H {.{./+H /+{.{.{./+{./+{.{.{.{.{.&.{.&.&.&.&.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.7+&.[ &.7+[ &.[ [ [ 7+[ 7+S.[ [ S.[ m.[ S.[ m.[ m.[ m.m.[ m.m.m.m.+ m.m.m.m.-.m.m.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.G+-.G+-.G+-.G+D+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+]+A+]+A+]+A+]+C+y+]+y+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+-+f+f+e+f+'+e+'+l+'+e+l+e+l+e+k+e+k+k+k+k+n+k+n+k+n+s+n+s+s+s+s+s+s+s+s+s+n+n+s+s+n+n+n+n+n+n+n+.+n+n+V.Y.Z.V.Z.r.s.r.r.r.r.r.@.D.@.@.t.@.t.0.V V V a.a.P W b.l 4.m *.*.Q Q Y B.e.n n ` L L L q q a a a a e a e a a a a a a q a a L L L L L ` ` d.n Z Z Y Q A.*.4.4.6.G.G.M.M.W.W.W.W.`.W.`.`.`.`.`.`.`.`.`.`.`.++`.|+`.|+`.++a+++|+3.++|+|+l.|+++|+|+|+|+|+1+|+|+1+|+1+1+1+u.1+u.1+1+_+1+_+w.u.1+_+w._+w._+w.w.}+w.w.w.}+}+w.}+%.}+}+}+E.k.}+k.E.k.E.k.E.k.E.k.E.^.E.^.^.^.w w w w j 2.2.j 2.#.#.#.#.i O i i i i i 6 : 4 : N : : 6 g 6 g 6 g t g N g 5 g 5 .5 g <.g t .5 <.M t <.M t <.}.t M }.M <.M }.M M }.}.M }.M [.}.s I.s }.s [.}.[.}.s j.s j.[.I [.[.j.H j.[.[.[.[.H [.j.H H j.H j.H {.{.H {.H {.H {.H /+{./+{.{.{.&.{.{.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.&.&.&.[ &.7+&.[ 7+&.[ &.[ [ S.7+S.[ [ [ [ [ [ F+m.[ m.[ [ F+m.[ [ m.[ m.m.m.m.m.m.m.m.m.-.m.-.m.m.-.-.m.m.m.-.m.-.-.-.-.-.-.-.-.x+-.-.-.G+-.G+-.G+G+-.G+x+G+G+G+G+G+G+G+G+G+G+G+]+G+G+G+]+A+G+]+C+y+]+C+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.f+f+f+f+e+f+'+e+e+e+l+!+k+e+k+k+k+k+e+k+k+k+n+n+n+s+n+s+s+n+s+s+s+s+s+s+s+s+s+n+s+s+s+s+.+s+.+n+n+V.n+s.n+V.Z.V.s.r.r.Z.r.r.r.@.r.D.t.@.t.0.0.0.V a.U v.P W b.b.m 4.*.*.Q Q B.Z Z n ` r L L q q a a a e e e < e < e e a a a a a a q q L L ` ` d.n N.Z B.B.A.*.T.H.#+G.G.M.M.M.M.W.@+W.W.`.W.`.`.`.`.3.`.`.`.++`.`.3.++`.++3.l.++3.++++l.++a+++l.|+l.l.|+l.|+|+l.|+1+u.1+u.1+1+_+1+_+1+u.w.1+_+_+w.1+_+w._+w._+w.w.w.}+}+w.w.}+w.}+}+%.}+}+}+E.}+k.}+k.E.k.E.k.E.k.E.$.^.k.^.^.^.w w w O 2.2.2.#.#.#.O O i i i i 6 4 i : N : : N 6 5 : g g 5 g g g 5 N g N <.g N g t g N N .t N .t <. .t 5 <.}.g }.t <.M }.}.M M }.M }.}.s }.s }.[.}.[.I.[.[.}.[.j.s j.s j.j.s j.[.j.[.j.j.j.H j.{.j.[.{.{.j.{.j.{.{./+{.{./+{.{./+{.&./+{.{.{.{.{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.[ &.7+&.[ &.&.&.[ [ [ &.S.[ [ [ [ S.[ [ m.[ S.[ F+[ m.[ m.[ m.m.m.m.m.m.m.m.m.m.-.m.-.m.m.-.m.-.m.m.-.-.-.-.-.-.-.-.-.-.-.x+-.-.G+-.G+-.G+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+]+G+G+A+]+A+G+A+]+C+A+]+C+y+H+A+H+C+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+f+-+'+f+'+l+e+l+l+!+l+k+e+k+k+k+k+k+n+k+n+n+n+k+s+n+s+s+s+s+s+s+s+s+s+s+s+s+s+s+s+s+.+n+s+n+n+n+.+n+s.n+V.Z.V.r.Z.r.s.r.r.r.r..+@.t.@.t.0.v 0.V a.a.a.P W W b.m 4.4.*.A.Q Q Z Z n n n.L L q q a a a e < e < < < < < e e e a a a q L L L L ` ` n n Z Z B.Q *.T.4.H.#+G.6+M.5+W.W.@+W.W.`.`.`.`.`.`.`.`.`.`.`.`.`.a+++`.|+`.++++3.++a+++|+`.l.++|+++l.|+|+|+|+l.1+|+|+1+1+1+u.1+u.1+u.1+w.1+w.1+1+w._+w.w.w.w._+w._+w.w.w.}+w.}+w.E.w.}+E.}+J }+k.}+k.E.2+E.k.k.k.E.k.E.k.^.^.k.w E.w %.w O #.2.#.#.#.O F i i i i 4 i : N 4 : N : : g : t : N g N 5 N g g t g t g M g g t g M N .t .t t <.}.M }.M }.M }.M }.M }.}.M }.}.M M }.[.}.s I.s }.[.}.[.}.[.}.[.j.j.s j.[.j.[.j.[.H j.j.H j.H {.[.{.H j.H {.[.{.{.H {.{.{.{.{./+{./+{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.&.7+&.&.&.[ &.[ &.[ [ [ &.7+[ 7+S.[ S.[ [ [ S.[ F+[ [ m.m.[ m.[ m.m.[ [ m.F+m.m.m.m.m.m.-.m.m.-.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.G+-.-.-.-.-.G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+G+G+G+]+G+w+C+]+H+]+G+H+]+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+-+f+f+e+e+e+l+e+!+e+k+e+k+k+k+k+n+k+n+k+n+n+n+s+s+s+s+s+s+s+s+s+s+s+s+s+s+q+s+q+a+q+s+s+.+s+.+.+n+n+r.n+r.V.Z.r.V.r..+r.r.r.@.@.r.t.@.t.t.0.V V V a.P P W b.l b.m *.*.*.Q B.Z e.n n ` L L q q a a e e < < < < < < e < < e a a a a q q L L ` ` d.N.N.B.Q A.T.4. +#+G.G.o+M.M.5+5+W.@+`.W.`.`.`.`.a+`.`.a+`.++`.`.++`.a+++3.++a+++|+++|+`.l.++|+++|+|+l.l.l.l.|+|+l.1+u.|+1+1+u.1+1+1+w.u._+1+w.w._+1+w.1+_+w.w._+w.}+w.w.}+w.w.}+w.}+}+w.}+}+E.}+k.}+k.E.k.E.k.E.k.k.$.k.k.$.^.E.w ^.w w w w #.#.O |.O +.i +.+.i N +.4 4 g 6 : g N : N g g g g g g g g t g <.g N g N N g <.N <.t .t <.M t M t <.t M }.M }.M }.M M }.M I.}.}.s s }.}.s }.[.}.s }.[.t j.[.}.s j.[.}.H }.j.j.j.j.H j.j.j.j.j.j.j.{.j.{.{./+{.{.{.{./+{.{.{.{.{.{.{.{.{.{.{.{.{.&.{.&.&.&.&.&.&.&.&.&.&.[ &.7+&.7+&.&.7+[ [ [ [ [ 7+[ [ S.[ F+S.[ m.[ [ [ m.[ m.[ m.[ m.m.+ m.m.m.m.-.m.m.m.-.m.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.G+-.-.-.G+-.G+G+-.-.G+G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+A+G+C+w+A+]+A+]+y+A+H+H+]+A+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.f+-+e+'+l+e+!+!+l+k+e+k+k+k+k+k+n+n+n+n+n+s+n+s+n+s+s+s+s+s+s+s+s+s+q+s+q+s+q+q+s+q+s+.+s+n+n+n+.+n+s.n+s..+s.Z.r.s.r.r.r.Z.r.t.@.D.t.@.0.v 0.V a.U a.P W W b.m 4.m *.Q Q Q Z Z n n ` L L q q a a e < e < < < < < < < e e a a a q L L L L ` ` n N.Z B.A.A.T.H.#+#+6+G.M.5+5+W.@+W.W.@+`.`.W.`.`.`.`.`.`.`.`.`.++`.++`.++++`.++3.++3.++|+|+`.l.3.++|+l.|+l.|+l.|+1+l.1+1+u.1+1+u.1+u.1+1+w.1+1+1+w._+1+w.w.w.w.w.w.w.w.w.w.}+w.}+w.w.%.}+J }+5.E.}+k.}+k.}+k.k.k.E.k.^+k.E.k.$.^.k.^.E.w w w w O 8.#.+.O +.+.+.+.4 N i 6 D : N : : g g : N : N g t g g g N 5 g M N 5 N t g 5 N N M <.t N t <.t M }.<.M t <.M }.}.}.}.}.M }.s }.I.s }.}.s }.[.}.}.j.}.}.j.[.}.}.j.j.}.H }.j.j.j.j.j.H j.j.H j.H j.H j.j.{.j.{.j.{.{.{.{.{.{.{.&.{.{.&.{.&.{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.&.&.[ &.7+[ &.[ &.[ [ [ S.[ [ [ S.[ [ [ [ m.[ m.[ m.[ m.F+m.m.[ m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.G+-.-.G+-.-.G+G+-.G+G+-.G+G+x+G+G+G+G+G+G+G+G+G+]+G+w+C+G+w+C+A+]+H+G+y+C+]+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+-+f+f+f+e+l+e+e+k+!+k+k+k+k+n+k+n+k+n+n+s+s+s+s+s+s+s+s+s+s+s+s+q+s+s+q+s+q+s+q+q+s+q+s+s+.+.+n+n+.+n+s.V.Y.r.V..+r.r..+r.D.t.r.t.@.t.t.t.0.V V V a.v.P W b.l 4.m *.*.Q Q Y Z Z n n r L L L q a e e e < < < < < < < < < e e a a a a q L ` ` n n N.B.Q A.T. + +H.#+G.o+M.5+5+5+W.@+@+`.W.`.`.`.`.`.`.`.`.`.`.`.a+`.`.++`.`.|+++++`.|+++3.++|+++l.++l.++|+l.|+|+l.|+|+l.|+1+1+u.1+1+1+w.1+u.w.u.w.1+_+w._+1+_+w.w._+w._+w.}+w.w.w.}+}+w.}+}+%.}+}+J }+k.}+k.}+k.k.k.k.k.k.$.E.k.k.k.$.$.$.^.$.w w |.|.|.+.+.i +.i +.D 6 D 6 D : N g 6 g : g g : g g 5 N 5 g N N g g N g g <.N 5 <.N N M <.M t M }.M t }.M }.}.M M M M M }.M }.}.s }.}.[.}.}.}.[.}.s }.[.}.}.j.j.s j.}.j.j.j.}.j.j.j.j.j.j.j.j.j.j.j.j.{.j.{.{.{.j.{.{./+{.{.{.{.{.{.{.{.{.&.{.&.{.&.{.&.&.&.&.&.&.&.&.&.&.7+&.[ &.&.[ &.[ [ &.[ [ S.7+[ [ [ [ m.[ [ m.[ m.[ [ m.[ m.[ m.m.m.m.m.m.-.m.m.-.m.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+C+G+w+G+]+G+]+A+]+C+]+H+y+]+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+-+f+-+e+'+e+e+k+l+e+k+!+k+k+k+n+k+s+s+n+s+s+s+s+s+s+s+s+s+s+s+t+q+s+q+s+q+s+q+s+q+s+q+n+.+n+n+n+r.n+X..+Y..+s..+s.r..+r.r.t.r.t.@.t.t.0.0.V 0.a.a.a.P P b.l b.m 4.*.*.Q Q f.Z e.n n ` L L q a a a e < < < < f < < < < e e a a a a L L L L ` n N.B.B.A.T.T.H.#+#+6+6+M.o+5+5+W.5+@+W.`.@+`.`.`.`.`.`.`.`.`.`.++`.`.++3.`.|+`.++`.|+++`.|+++3.|+++|+++|+l.|+|+l.l.|+l.u.1+|+u.1+1+u.w.|+w.1+1+w.1+1+w._+w.w.w.w._+w.w.w.w.w.w.w.}+w.w.}+}+w.}+}+J }+}+}+k.k.k.k.E.k.k.k.k.k.k.k.$.k.$.k.^.$.w $.$.w O |.|.|.+.+.+.+.6 D N 4 : N : : g : g N : N g N g N g N g 5 g t N t N t g N g t .t <.t t <.t t <.M t <.t <.}.}.}.}.M }.}.s }.}.s }.}.[.}.}.}.j.}.t }.j.}.}.I }.I }.j.}.j.j.j.}.j.j.I j.j.j.j.j.{.j.j.j.j.{.j.{.j.{.{.{./+{.{.{.{.3+{.3+{.{.3+{.&.&.{.&.&.&.&.&.&.&.7+&.&.&.&.7+&.[ 7+&.[ [ [ [ [ S.[ [ [ [ S.F+[ [ m.[ m.m.m.[ m.m.[ m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.+ -.-.-.-.-.-.-.-.-.G+x+G+-.-.G+-.G+-.-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+]+G+w+G+]+G+C+G+A+y+]+C+w+H+A+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.-+f+-+'+e+e+'+e+!+k+k+k+k+k+n+n+n+n+n+s+s+s+s+s+s+s+s+t+s+t+s+q+s+t+s+q+q+s+q+q+s+q+s+.+s+.+n+.+n+s.n+V.V.s..+s..+r..+r..+t..+t.t.t.t.t.0.0.a.V a.P P W W b.m 4.m *.*.Q Q Y Z Z n n ` L L q q a a e < < < < < < < < e < a e a a L q L L ` n.e.N.B.A.A.T.T.#+#+#+6+o+o+5+5+5+5+@+W.@+@+W.`.@+`.`.`.`.`.`.`.`.`.`.`.`.++++`.++`.|+++3.++|+++|+++l.l.++|+++l.l.l.|+l.|+1+l.1+|+1+u.1+u.1+1+u.w.1+w.u.w.1+w._+w._+w.w._+w._+w.}+w.w.}+w.}+%.w.%.}+}+k.}+k.5.}+k.}+k.k.E.k.k.k.k.$.k.k.$.$.$.$.$.$.^.( ^.|.+.+.+.+.+.N +.6 6 +.6 D : N : N : g g : g 5 g t g t g N .g N g N g N t N <.t <.5 <.M t M <.M }.<.M }.M }.M }.M }.}.M }.}.M }.}.}.t }.}.}.}.}.j.}.t j.I }.j.}.j.I }.j.j.}.j.j.j.j.j.j.j.j.j.j.j.j.j.{.j.{.j.{.{.j.{.{.3+{.{.{.{.{.{.{.{.&.{.&.3+&.&.3+&.&.&.&.&.&.&.7+&.[ &.[ &.[ [ 7+&.[ S.7+[ [ m.[ [ F+m.[ m.[ F+[ [ m.m.m.m.m.m.m.m.m.-.m.m.-.m.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.G+-.-.-.G+G+G+D+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+]+A+]+A+]+y+C+]+H+y+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+d+-+-+f+f+e+!+e+l+e+k+,+k+k+k+n+n+s+s+n+s+s+s+s+q+q+t+s+t+s+t+t+s+q+t+s+q+q+s+q+s+s+.+n+n+n+.+n+V.n+r.n+r.n+r.r..+Z.r..+@..+@..+t.0.0.t.0.V V a.U a.v.P b.l b.m 4.*.*.Q Q Y Z Z n n ` L L q q a a e e < < < < < < < e < a a a a q L L L ` n N.B.B.A.T.T. + +#+p+6+6+M.o+5+5+@+5+@+W.@+`.@+`.`.`.`.`.`.`.`.`.`.`.++`.`.`.++`.++`.++++3.++l.++l.`.|+++l.|+++|+l.l.|+l.|+|+l.u.1+1+1+1+u.w.1+u.1+1+w.1+w.1+w.w.w.1+w.w.w.w.w.w.w.w.w.5.w.}+}+5.%.}+5.E.}+k.}+k.k.2+k.k.k.k.k.k.k.k.k.k.k.$.$.$.$.$.$.( w |.|.|.N +.+.+.+.g 6 g 6 D : g : N : N g 6 g g g N g t g t g t N 5 N 5 N 5 N 5 t <.t <.t <.t }.5 }.t <.t }.}.M }.}.}.}.}.}.}.t }.}.}.}.}.}.j.}.}.j.}.}.}.j.}.I }.j.j.}.j.j.j.j.j.j.j.I j.I j.I j.j.j.j.j.j.[+{.j.{.j.{.j.{.3+{.3+{.3+{.3+{.{.{.{.3+&.&.3+&.&.&.&.&.&.&.&.&.&.7+&.&.[ [ [ 7+[ [ S.[ [ [ [ S.[ [ m.m.m.m.[ [ m.[ m.[ m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.G+-.-.G+-.G+-.G+G+G+G+G+G+G+G+G+]+G+w+G+]+G+]+G+G+]+A+C+]+y+C+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+-+f+=+'+f+e+!+e+e+!+e+k+k+k+n+n+n+n+s+s+s+s+q+q+s+q+t+q+q+t+s+t+t+s+q+q+q+q+s+q+.+s+q+n+.+n+.+n+V.n+r.s.r.r.Z.r.r..+r..+t.t.t.t.t.t.0.0.0.V a.a.a.P W W b.l 4.m m *.Q Q Y S Z n n ` ` L L q a a e e < < < < < < < e e e a a q q q L ` n.e.e.B.A.A.T. + +#+#+6+6+o+5+5+5+5+5+@+@+@+`.@+`.`.`.@+`.@+`.`.`.`.`.`.`.`.++`.++3.++++3.++++++++3.++l.++|+++l.l.|+l.|+l.|+l.1+|+1+u.1+u.1+1+|+w.1+w.u._+w.w.w.1+_+w.w._+w._+w.}+w.w.}+w.w.}+w.%.}+5.}+}+5.J }+5.k.}+k.k.2+k.k.k.k.k.k.k.$.k.k.$.$.$.$.$.$.$.N |.+.|.N +.6 +.i D i g 6 : N : g g g : g N 5 N 5 N g N g N g N N N N t N N <.<.5 <.5 <.5 <.t <.t M t <.}.M }.t }.t }.M }.}.}.t }.}.}.t }.}.}.}.$.}.$.}.$.j.}.}.}.j.$.j.$.$.j.$.I j.$.j.j.I j.j.j.j.{.[+I j.(.[+{.3+j.3+{.{.3+{.{.{.{.{.{.{.{.&.{.3+{.&.3+&.&.&.&.&.&.&.&.[ &.[ [ &.[ &.[ [ S.[ S.[ m.[ [ [ m.[ [ [ [ m.m.[ m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.G+-.-.x+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+C+G+G+A+]+A+A+]+A+]+]+y+C+]+y+H+]+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+d+-+-+f+-+e+f+e+!+e+k+,+k+k+k+n+n+n+s+n+s+q+q+s+t+t+q+t+t+q+t+t+s+t+q+t+q+q+q+q+s+q+n+.+n+n+n+s.n+s.V.n+s..+r..+r..+r..+@..+t.t.t.0.t.0.V a.U a.P P W b.l l m m *.*.Q Q Q Z Z n n n L L L q a a e e e < < < < e e e e a a a q L L L n.n.e.B.f.A.T.T. +#+#+#+p+6+o+o+5+5+5+@+@+W.@+W.@+`.@+@+`.@+`.`.`.`.`.`.`.`.`.`.++`.++++3.++`.|+`.|+++++3.++l.++l.|+l.|+l.l.|+l.|+l.|+l.1+1+1+u.w.1+1+u.1+w.u.w.1+_+w.w._+w.w.w.w.w.w.w.w.}+w.5.w.}+w.}+%.5.E.}+5.}+E.2+k.}+k.k.k.k.k.k.k.[+k.k.j.$.$.$.$.$.$.t 1 ^.|.|.+.+.+.i N 6 N 6 : N : g 6 g 6 g 6 5 g g N g t g t g t g t g t g <.5 N 5 <.N t <.t t N }.t <.}.<.t }.}.<.t }.}.}.t }.}.}.}.}.t }.}.$.}.$.}.}.}.}.}.}.$.j.$.j.$.j.$.j.$.j.j.$.j.j.j.j.I [+I j.[+I j.{.I j.(.j.{.{.{.{.{.3+{.3+{.3+{ 3+{.3+{.{.&.&.&.3+&.&.&.&.&.&.7+&.[ &.&.[ &.7+S.[ 7+S.[ [ [ [ m.[ m.[ m.m.F+m.[ m.[ m.F+m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.G+x+-.-.G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+G+G+]+]+A+]+A+C+]+y+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+-+d+-+c+-+-+e+e+e+l+e+!+k+k+n+k+n+n+s+s+s+q+q+t+t+q+t+t+t+t+t+q+t+t+t+q+q+q+q+s+.+s+.+s+n+.+V.n+s.V.Z.r..+s.r.r..+r.t.@.t.t.t.t.0.t.0.V V a.a.P v.W W b.b.m 4.m *.*.Q Q Y Y Z n n n ` L L q q a a e < < e < e e e e a a a q L q L ` n.e.N.B.f.A.T. + +i+#+p+6+o+o+5+5+5+@+5+@+@+@+@+`.@+`.`.`.`.@+`.`.@+`.`.`.`.`.`.`.++`.++`.++l.++++++++l.++l.l.|+l.l.l.l.|+|+l.|+l.|+1+u.1+1+u.1+1+u.w.w.1+w.1+w.w.u.w._+w.w.w.w.w._+w.w.w.w.w.}+w.5.}+%.}+}+5.}+k.5.2+J }+k.k.2+k.k.k.k.k.k.k.$.k.k.k.j.$.$.$.$.$.t ^.+.^.+.N 6 +.g 6 D N 4 g 6 g : g g g : N N 5 N g N g N N N N N g N t N N <.t g <.t .t <.M t <.t t <.}.N }.t <.t }.}.}.t }.t }.}.$.}.}.}.}.$.$.$.$.$.$.j.$.j.}.j.$.j.$.j.$.$.j.j.k.j.k.j.j.j.[+I j.(.j.[+{.j.{.[+{.[+{.3+{.3+{.{.{.{.{.{.{.{ 3+{.3+&.&.3+&.&.&.&.&.&.&.&.&.7+&.[ &.[ &.S.[ 7+S.[ [ [ [ [ m.[ [ m.[ m.[ m.m.+ m.m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.-.G+D+G+-.G+G+-.G+G+G+G+G+G+G+G+G+C+G+A+]+A+G+A+]+A+]+y+C+H+A+]+H+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.d+$+-+d+-+-+-+-+f+e+e+e+e+e+k+k+k+n+n+n+n+s+s+q+q+q+t+q+t+t+t+t+t+t+t+t+t+q+q+q+q+q+s+.+.+n+n+Z.V.n+r.V..+s..+r.r.Z.@.r..+@.t.t.t.t.0.t.0.V a.a.a.P v.W W b.l 4.m *.*.*.Q Q S Z Z n n ` L L q q a a e e e e e e e a a a a a L q L ` n.n.e.B.f.A.T. + +i+i+p+p+p+6+o+o+5+5+5+@+W.@+@+@+@+`.@+@+`.@+`.@+`.`.=.`.`.`.++`.`.`.++`.++++`.++3.++3.++l.`.l.++l.|+++|+l.l.|+l.|+l.l.1+l.1+1+1+1+1+u.1+u.w.1+w.1+w.w.w.w.w.w.w.w.w.w.}+w.w.}+w.w.}+w.}+5.%.}+%.}+k.}+2+k.2+k.k.2+k.k.k.k.k.k.k.k.j.$.k.$.$.$.$.$.$.t ^.|.^.i +.6 +.6 6 : N : g N g 6 g 6 g g 6 g t g N t g N g t N t N g t .N N t N t t <.t t <.t <.<.t t <.t }.t }.N }.N }.$.}.$.$.}.$.J.$.$.}.}.}.$.~+$.$.$.$.k.}.j.$.[+$.[+j.k.j.j.I j.[+I j.I [+j.[+(.j.(.j.(.j.[+{.[+{.[+{.(.3+3+{.3+3+{.{.{.{.&.3+&.&.3+&.3+&.&.&.&.&.S.&.7+&.S.[ [ [ S.[ [ S.[ [ m.[ m.[ m.[ m.[ m.[ m.m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.-.m.-.-.-.m.-.-.-.-.-.-.-.x+-.-.G+-.-.G+-.G+-.G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+w+G+G+]+]+A+A+]+A+]+y+]+H+y+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+d+d+$+d+c+-+-+=+-+=+e+l+!+e+k+k+k+n+n+n+n+s+q+q+q+q+t+t+t+t+t+t+t+t+t+t+t+q+q+q+q+.+s+n+.+.+n+.+s.Z..+Z.s.r.Z.r.r..+.+@.t.t.t.t.0.t.V V a.a.a.P v.P b.l b.l m m m *.*.Q Q Q Z Z n n n ` L L L a a e e e e e a e a a a q q q L L n.n.e.B.f.f.T.T. + +i+i+#+p+6+o+5+5+5+5+@+5+@+@+@+`.@+@+`.`.@+`.`.`.`.`.`.@+`.`.`.++`.++`.++++`.|+++++++++++++l.|+|+++l.|+l.l.|+l.|+l.|+l.|+u.1+u.w.u.1+w.1+w.1+w.u.w.1+w.u.w.w.w._+w.}+w.w.w.w.w.w.5.w.}+w.}+}+}+5.}+5.k.5.}+J 2+k.k.k.2+k.k.k.k.k.k.k.k.j.k.j.$.I t $.$.( N |.^.+.+.6 g N 6 : N : : g g : g N : g N g t g g N g t g N g t N N t g t .N <.t <.t N }.t t }.N t t <.N <.N }.}.$.}.^.}.$.}.^.$.}.J.$.$.$.k.}.$.}.$.$.}.j.$.k.j.$.j.$.$.I [+$.[+I j.j.[+j.j.I I j.(.j.j.{.[+{.(.{.(.{.3+{.{.{.{.{.{.3+{.3+3+{.{.{.3+&.3+&.&.&.&.&.&.&.&.&.7+&.<+7+&.[ S.[ 7+S.[ [ m.[ [ m.[ m.[ m.[ m.m.[ m.m.m.m.m.m.m.-.m.-.m.-.m.m.-.+ m.-.-.-.-.-.-.-.G+-.-.G+-.-.G+-.-.G+-.G+-.-.G+G+G+-.G+G+G+G+G+G+]+G+G+C+G+A+G+A+]+w+A+H+H+C+H+A+]+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+$+-+$+-+-+$+$+c+-+-+-+e+e+e+e+e+k+k+k+n+n+s+n+s+s+q+q+t+q+t+t+t+t+t+t+t+t+q+t+q+q+.+q+.+.+.+.+n+r.n+.+s.s.r.r.r.r.@.r.@.t.t.t.t.0.t.V 0.V a.d a.v.P G.W b.l b.m 4.m *.*.Q Q Y Y Z n n n L L L a a a e a a a a a a a a q q L L L n.n.e.e.B.f.T.T. + +i+i+#+p+p+o+o+5+5+5+@+5+@+@+@+@+@+@+@+`.@+@+`.@+`.@+`.@+`.`.=.`.`.++`.++++`.++++`.++++++l.++l.++l.l.|+l.l.l.l.l.1+l.|+l.1+1+1+l.1+1+w.u.1+w.1+/.1+w.w.1+w.w.w.w.w.w.w.w.w.}+w.w.w.w.}+5.w.}+%.5.E.5.E.5.E.k.2+k.k.k.2+k.k.k.k.k.k.[+k.j.k.j.$.$.$.I $./ t w ^.O N 6 N i 6 N g i : N g 6 g N : g N N g N g N g t N N t N N N g N N N N <.N N t <.N N t N N }.N t <.t ^.}.N }.^.<.$.}.^.$.$.J.$.}.$.J.$.}.k.}.k.$.$.k.$.$.j.$.$.$.$.j.[+$.j.[+j.I [+$.j.(.j.[+I (.j.(.j.I 3+j.(.{.3+{.{.3+(.3+(.3+{.3+{ {.&.{.3+&.{.&.&.&.3+&.&.&.7+<+&.[ &.[ &.S.[ [ 7+S.[ S.[ [ m.[ m.[ m.[ m.m.m.F+m.m.m.m.-.m.m.-.m.m.-.m.-.m.-.m.-.-.-.m.-.-.-.-.-.-.-.-.-.G+-.-.-.-.-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+C+w+G+]+G+]+G+C+A+]+G+H+w+]+H+A+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+d+d+$+d+O.-+-+-+c+-+=+=+e+e+!+,+,+k+n+n+n+n+s+s+q+q+q+t+q+t+t+t+t+t+W.t+t+W.q+q+q+q+q+q+.+n+.+.+r.r.s..+s.r.Z.r..+3.D.t.@.t.t.0.0.0.W.a.a.a.a.P v.P W W b.l m m *.m *.Q Q Q Z Z Z n n ` L L q a a a a a a a a a a q L L L L n.n.e.e.B.f.A.T.R i+i+i+i+p+p+6+o+o+5+5+5+5+@+@+@+@+@+@+`.@+@+`.`.@+`.@+`.`.`.@+`.`.`.++`.`.++`.l.`.++l.++3.++++3.++l.|+++l.l.|+l.|+l.|+l.1+l.|+l.u.1+1+w.1+1+w.1+u.1+w.1+w.w.w.w.u.w.w.w.w.}+w.w.w.}+w.w.w.w.}+%.5.}+5.}+5.}+5.2+J 2+2+k.k.k.k.k.k.(.k.k.k.k.$.k.$.j.$.$.$.t I / 6 |.6 +.6 N N : i g N : g g : : g N : g N g N 5 N N g N g N 5 N t N N g t N N <.t N t <.t N }.N J.t ^.^.N ^.}.J.^.$.^.$.}.J.$.$.J.$.J.$.J.$.}.k.$.$.$.j.}.[+$.j.k.j.[+$.$.j.[+$.k.j.j.j.[+j.I [+I j.[+j.{.[+{.[+{.[+{.[+3+{.{.{.{.{.{ {.3+{.3+3+&.3+&.3+&.3+&.&.&.&.&.&.&.&.&.[ &.[ &.[ S.[ [ [ S.[ m.[ m.[ m.[ m.[ m.m.m.m.m.m.m.m.-.m.-.-.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.G+-.-.-.G+-.G+G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+C+G+G+A+G+A+]+A+w+]+]+H+y+C+C+w+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+d+-+c+d+$+c+$+c+-+c+-+-+-+e+e+e+e+,+k+k+n+n+n+n+s+s+q+q+q+q+t+W.t+t+t+W.t+t+W.q+t.q+.+.+.+.+.+.+.+.+r.s.r.r.r.@.r.t..+@.t.t.t.t.X 0.V 0.a.a.a.a.P W G.W l b.l m m *.m *.Q Q Q Z Z n n ` L L a a a a a a a a a q L q q L L ` n.n.e.B.f.A.R T.T.i+ +i+i+p+6+6+o+5+o+5+5+@+5+@+5+@+@+@+@+`.@+@+@+`.`.@+@+@+`.=.`.=.`.`.++`.`.++`.++`.++++++++++++l.++l.l.|+++l.|+l.l.l.l.|+1+l.1+l.u.1+u.1+u.1+w.w.1+w.w.u.1+w.1+w._+w.w.w.w._+w.w.w.w.}+w.%.5.}+5.w.J 5.%.2+J 2+2+J 2+k.2+k.k.k.k.k.k.(.k.[+k.[+k.I j.I I $.t I ( w ^.N N i N N 6 6 g 6 N : N g : g 6 g 6 g N g 6 N 6 N 6 N 6 g N g N N N <.N N N }.N N J.N N N N ^.N J.^.N J.$.<.^.<.$.^.$.J.$.J.$.$.J.$.$.$.~+$.k.$.k.$.$.k.j.$.$.$.[+$.$.j.[+I [+I I j.[+I [+[+I I [+j.(.j.3+j.{.(.{.3+(.3+(.3+{.3+{.3+{.{.{.3+{ {.&.3+&.3+&.3+&.&.&.7+&.&.<+[ &.S.&.[ S.7+S.[ S.[ m.[ m.[ m.[ m.m.m.m.m.m.m.m.m.m.-.m.m.-.m.m.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.-.-.G+G+-.-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+G+]+A+A+]+A+]+H+]+C+y+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+$+d+$+d+-+$+-+-+$+c+-+c+=+-+e+e+e+e+,+,+k+n+n+n+s+a+s+q+q+q+q+q+t+0.t+t+t+0.t+q+W.q+q+.+q+.+.+.+.+.+.+.+.+r..+r..+r.@.t.t.t.0.0.0.a.0.a.a.a.a.P v.P W b.l b.l m m m *.*.Q Q Y Y Z n n n L q a q a L a a L a L q q L L L ` n.0+e.B.f.A.f.T.T.i+ +i+i+p+p+6+6+o+o+5+5+5+5+5+@+@+@+@+@+@+@+`.@+`.@+@+`.`.=.`.@+`.`.=.`.`.++++`.++++++++`.++++l.l.++|+l.++l.l.|+l.l.l.l.|+l.l.1+l.1+1+l.1+1+w.1+u.1+w.1+1+w.w.w.w.w.w._+w.w.w.w.w.}+w.w.w.5.w.w.w.w.5.}+5.}+J }+5.k.k.5.k.k.2+k.z.k.(.k.k.k.k.k.I [+k.$.I $.I I ( I 1 ^.O N N i N N g 6 g : g : g 6 g 6 g N g 6 N g N g ( N g N N t N N N N N N N N N N N t ^.}.^.N $.^.N ^.J.^.J.^.}.^.J.}.^.$.J.$.J.J.$.$.~+$.$.}.$.$.$.$.[+}.$.$.[+$.j.$.[+$.I k.j.$.[+I j.j.I I [+(.I {.[+j.(.3+[+{.[+{.{.{.{.{.(.{.3+{.3+3+{ {.3+{.3+&.&.&.&.&.&.&.&.&.7+&.7+<+7+&.[ 7+[ S.[ S.[ m.[ m.[ m.[ m.m.[ m.[ m.m.m.m.-.m.m.m.-.m.-.-.-.m.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.G+-.G+-.-.-.G+G+-.G+G+G+-.G+G+G+G+G+G+]+G+G+G+A+G+A+]+A+w+]+y+]+H+A+y+]+C+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+$+-+d+-+O.$+-+c+$+c+O.c+-+-+=+=+=+e+e+e+e+k+k+k+n+n+n+s+s+q+q+q+q+q+t+q+t+W.t+W.t+0.q+t.q+.+.+.+.+.+.+.+.+3..+@.t.t.t..+@.t.t.0.0.X 0.a.a.a.a.a.P v.P W W W l l m m m y y Q Q Q Y Z n n ` L L a L L a q L a L q L L L L n.n.e.e.B.f.A.f.T.T.i+i+i+i+#+p+8+o+o+o+5+5+5+@+@+@+@+5+@+@+@+@+@+@+@+`.@+`.@+@+`.@+=.`.@+`.++`.=.`.++++++`.++l.++l.`.++++l.++l.l.|+++l.l.1+l.1+l.|+1+l.1+l.1+u.w.1+u.1+w.u.1+w.w.1+w.1+w.w.w.w.w.w.w.w.w.w.w.w.}+w.}+%.5.}+J }+J }+5.k.J 2+2+k.2+k.k.k.k.k.k.[+k.(.k.[+k.I [+I I I I I ( / ( |.^.+.N 6 N N N : N : N 6 g : g : N : N g N 6 N N g 6 N g N N N N N N N N N N N <.^.N ^.N J.^.N ^.^.^.}.^.}.^.J.$.^.$.J.$.$.J.$.$.J.$.$.k.$.k.$.$.$.$.k.$.[+$.$.$.[+$.$.k.[+I [+j.$.[+I [+[+I j.(.[+I (.j.(.{.(.{.{.(.3+(.3+3+{.{.3+{.{.3+{.3+&.{.&.3+3+3+&.3+&.&.&.&.[ &.&.&.[ <+[ &.[ S.7+S.S.[ [ m.[ m.m.[ m.+ m.m.m.m.m.m.m.m.-.m.-.m.-.m.m.-.+ -.-.-.-.-.-.-.-.-.G+x+G+-.-.G+-.-.G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+A+]+G+]+G+]+G+C+y+C+C+A+H+]+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.d+d+O.d+c+$+c+$+=+$+-+c+-+c+-+c+=+=+e+e+,+,+,+,+n+n+n+n+n+n+a+q+.+q+q+q+0.q+q+0.t+W.W.q+0.t.q+t.t.t.t.t.t.t.t.t..+t.t.t.t.t.t.0.X 0.a.a.a.a.a.a.v.P W P W W b.l l m m *.*.*.Q Q Z Z Z n L q a L L a L L L L L L L L ` n.n.e.e.B.f.f.A.T.i+i+R i+i+i+i+p+p+6+o+5+5+5+@+5+5+@+@+@+@+@+@+@+`.@+`.@+@+@+`.@+`.@+`.@+++`.=.`.`.`.++`.++++++++++`.l.l.l.++l.|+++l.1+l.1+l.l.l.|+l.l.1+l.1+u.1+l.w.1+w.u.w.w.1+u.w.w.w.w.w.w.w.w.w.w.w.}+w.w.w.w.5.w.5.w.5.5.w.5.J 5.}+5.k.k.5.k.k.2+k.k.z.k.k.k.k.[+k.(.[+k.I I $.I I I t / w N 6 N 6 N g 6 N : N : g g 6 N 6 N g 6 N : N : N N N N N N N N N N N N N N N ^.^.N ^.N ^.^.^.^.J.N ^.J.^.J.}.^.J.$.J.$.J.^.$.J.J.$.J.k.}.$.}.k.$.k.$.$.$.$.$.[+$.$.j.k.j.$.$.I $.[+I I I I [+I I j.(.j.(.j.{.{.[+(.3+{.{.{.{.(.3+{.3+{ {.3+{ 3+3+{ &.&.&.&.&.7+3+&.&.&.<+7+<+7+&.&.S.7+[ S.[ S.[ m.[ m.[ m.m.[ m.m.F+m.m.-.m.-.m.m.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+]+A+G+A+G+A+]+w+]+A+]+H+]+A+H+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+d+c+$+$+-+$+-+c+-+c+$+c+-+c+-+=+=+=+=+e+e+e+,+,+,+n+n+n+n+n+n+s+.+q+q+q+q+q+q+0.q+0.W.t+0.W.q+0.q+t.t.0.t.t.t.t.t.t.t.t.t.0.t.0.X 0.a.a.a.a.a.a.a.P v.W W W l l m m m y *.Q Q Y Z n n L L L L L L L L L L L L ` ` ` n.e.N.B.f.A.A.R T.T.i+i+i+i+p+p+p+o+o+o+5+5+5+5+@+@+5+@+5+@+@+@+@+@+@+@+`.@+`.=.@+`.@+`.`.=.`.`.=.`.++++++`.++++`.++++++++++l.++l.|+l.l.l.l.l.1+l.l.1+l.l.1+l.1+l.w.1+u.1+w.1+1+w.w.1+w.w.u.w.w.w.w.w.w.w.w.w.}+w.w.w.5.w.}+%.5.k.}+w.k.5.}+5.k.k.5.k.k.z.k.k.k.(.(.k.(.k.I k.[+k.I I I I I / t ( ^.|.6 +.N 6 N N : N 6 6 g : 6 g 6 6 g 6 N 6 N g N : N 6 N N N N N N ^.N ^.N <.^.^.^.^.N ^.N ^.^.^.^.^.}.^.J.}.^.^.$.^.$.J.$.$.J.$.}.k.$.k.$.$.$.$.k.$.$.k.$.$.[+$.$.j.k.k.I [+$.k.I k.[+I [+I [+I I (.I (.[+(.{.{.(.{.(.3+{.{.{.3+{.3+{.{.{.{.&.3+3+{ 3+&.3+&.&.&.&.7+&.&.[ &.7+<+[ [ &.[ S.[ S.[ m.m.m.[ m.m.[ m.m.m.m.m.m.m.-.m.m.-.m.-.m.m.-.-.m.-.-.-.-.-.-.-.-.-.G+-.-.-.G+-.-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+C+A+]+]+y+A+H+]+A+H+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.-+d+$+-+-+$+c+-+$+c+O.c+-+c+-+=+c+=+c+=+*+e+e+e+e+,+,+,+Y.n+n+n+n+n+.+s+.+.+.+q+.+q+.+q+0.q+a.0.W.0.W.0.W.0.0.W.0.0.0.0.W.0.0.X 0.0.a.a.V a.a.a.a.v.P P P W l W l l m m y *.x Q Y Z Z L L L L L L L L L L L L ` ` n.n N.B.B.B.f.T.T.T.i+i+i+i+i+i+p+p+_.6+5+o+5+5+5+@+5+5+@+@+@+@+@+@+@+`.@+@+@+@+@+@+`.@+`.=.@+`.@+@+++`.=.`.++++`.++++++|+++++l.++|+++l.l.1+l.l.|+l.l.l.l.1+u.l.1+l.1+1+l.w.u.1+w.w.1+1+w.1+w.w.w.w.w.w.w.w.w.w.}+w.5.w.%.w.%.5.w.}+5.5.J }+J 2+J 2+5.k.2+k.k.k.k.z.k.k.(.k.k.[+I I j.I [+I I I I I / ( ^.N ^.6 N g 6 N 6 g : N 6 : 6 N : 6 g N : N 6 N N N N N N N N N N N N ^.N ^.N ^.N ^.^.|.^.<.^.^.^.J.^.^.^.^.J.^.$.J.J.$.J.J.$.J.$.J.$.J.$.J.$.$.$.k.$.$.k.$.$.$.k.$.$.$.k.$.[+I k.I I k.I k.I (.[+I [+I I (.I [+{.(.{.{.(.3+(.{.3+{.3+{ 3+3+{.{ 3+&.3+&.&.&.&.&.&.&.&.&.<+&.<+[ &.[ S.7+S.[ S.S.[ m.[ m.m.[ m.m.[ m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.x+G+-.-.G+-.-.G+-.G+D+G+G+G+G+G+G+G+G+G+G+G+C+G+G+A+G+A+]+w+G+A+y+C+]+C+y+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+$+-+d+$+c+-+$+c+-+c+-+O.c+-+c+-+=+=+=+=+=+*+*+,+e+,+,+,+,+Y.Y.n+n+n+n+.+n+.+.+.+.+.+.+t.q+0.W.a.W.a.0.0.W.0.a.0.W.a.W.0.a.a.0.a.a.a.0.a.a.a.U P U P P W W W W l l m m *.y Q Q Y Z ` L L L L L L L L L L ` ` ` n n N.B.B.f.A.T.T. + +i+ +i+i+i+p+8+6+o+o+o+5+5+5+@+5+5+@+@+@+@+@+@+@+@+@+@+@+@+@+@+`.@+=.@+`.@+++@+++`.=.++`.++`.++++++++++++++++l.l.l.l.1+l.++1+l.l.|+l.1+l.l.1+l.1+u.l.1+1+l.w.u.1+w.u.w.w.1+w.w.w.w.w.w.w.w.w.w.w.w.w.5.w.5.}+5.%.5.%.}+5.2+%.2+2+k.2+J k.2+k.z.k.k.k.k.[+(.k.(.k.(.k.I I I I t / I ( w ^.+.N +.N N 6 g 6 N 6 : 6 N : 6 N 6 6 N 6 N N 6 N 6 N N N N N ^.N ^.^.^.^.^.N J.^.^.<.^.^.^.^.^.^.^.J.$.J.$.J.^.$.^.$.J.$.$.J.$.k.$.$.$.$.k.$.k.$.$.k.$.$.$.k.$.$.k.k.I k.$.k.I I k.I k.I I [+I (.I [+I (.j.(.(.j.(.(.3+{.{.(.{.3+{.3+{.{ {.3+&.3+{ &.3+&.3+&.3+&.<+&.7+&.7+<+&.S.&.[ S.[ S.[ m.[ S.m.[ m.m.[ m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.G+-.-.-.-.G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+]+G+G+]+G+]+G+w+C+y+]+]+]+C+y+]+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+-+$+c+$+-+$+-+-+c+$+c+c+-+c+c+=+c+=+c+=+=+*+e+*+*+*+,+*+,+,+,+X.Y.Y.n+n+n+Z.n+.+.+.+.+.+t.t.q+0.a.a.a.a.a.W.0.a.a.0.a.a.0.a.a.a.0.a.a.a.a.U a.a.P P k P W W l l l l m y *.Q Y Y n L L L ` L ` L ` ` ` d.` d.n N.N.B.B.f.A.T.T. +i+i+i+i+i+#+p+p+6+o+o+o+5+5+5+@+5+@+@+5+@+5+@+@+@+@+@+@+@+@+`.@+@+@+@+`.@+=.@+`.@+++@+`.`.=.++++++++++++++++l.++|+++l.1+++|+l.l.l.1+l.r a c a c a c a c B l.w.w.w.w.1+w.1+w.w.w.w.w.w.w.w.w.w.w.}+w.w.J w.J }+%.w.5.}+5.5.%.5.2+5.k.5.k.2+5.k.z.k.k.(.(.k.(.k.(.k.[+I [+I [+I I I I ^ / $.N ^.6 N 6 +.g 6 g : N : N : 6 N : N : 6 : N 6 N N N N 6 N ^.N N |.N ^.N ^.N ^.|.^.^.^.^.^.^.^.^.J.^.^.J.^.J.$.J.^.J.^.$.J.J.$.^.^.$.E.$.E.$.^.$.$.k.$.$.k.k.$.k.$.$.$.$.$.k.I k.k.I k.I k.I k.I I I (.I I (.I j.(.{.{.(.(.{.{.(.{.(.{.{.3+3+{ {.{.&.3+&.&.&.&.7+&.&.&.&.S.&.[ &.7+S.&.S.[ S.[ S.S.[ m.m.[ m.m.m.[ m.m.-.m.m.m.-.m.-.m.-.m.-.m.-.-.-.-.m.-.-.-.-.-.-.-.G+G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+]+G+]+A+A+H+w+C+y+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+d+d+-+$+c+-+c+$+=+-+O.c+-+U.-+c+=+=+=+=+=+=+*+*+*+*+*+,+*+*+,+,+X.X.X.X.X.n+V.n+Z..+.+.+.+t.0.t.t.W.a.a.a.v.a.a.a.a.a.a.a.0.a.a.a.a.V a.a.a.d a.U P P k P W W l l m m y *.x Q Y ` L L ` ` ` ` d.` d.` ` d.n N.N.B.B.A.A.T.T.i+ +i+i+i+i+p+p+8+6+6+o+o+5+5+5+5+5+5+5+@+@+@+@+@+@+@+@+@+@+@+@+@+@+`.@+=.@+@+`.@+=.`.=.++=.`.++`.++`.++++++++++++l.++l.++l.l.l.1+l.l.l.1+a E+$ $ $ E+$ $ $ c w.w.1+w.1+w.w.w.1+w.w.w.w.w.w.w.w.w.}+w.%.w.w.w.w.5.w.%.5.%.}+J 2+%.5.k.5.k.5.k.k.J k.(.k.k.k.(.k.(.k.(.k.(.I I I [+I I I / I / w N ^.N N 6 N N 6 N 6 6 : 6 6 6 6 6 N N 6 N N 6 N 6 N ^.N N |.N ^.|.^.|.^.|.N ^.|.^.|.^.J.^.^.^.^.J.^.}.^.^.J.$.^.$.^.^.$.^.J.$.^.$.^.$.$.$.$.E.$.^.k.^.$.k.$.k.$.k.k.k.$.I k.I k.I k.I I [+I k.[+I I [+I I (.(.I (.(.{.(.{.(.{.{.3+{ 3+{.{.3+{ 3+3+&.3+&.{ &.&.&.&.&.<+&.7+<+[ <+&.7+[ S.[ S.[ S.[ m.m.m.[ m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.G+-.-.-.-.-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+C+G+C+G+]+]+A+H+]+C+y+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.d+-+$+-+$+-+$+-+c+$+c+-+$+c+c+c+=+=+c+U.c+*+U.*+=+*+*+*+*+*+*+*+*+,+,+,+X.X.X.Y.s.V.s.r..+.+.+.+t.t.0.0.W.a.a.G.G.a.a.a.a.a.a.a.a.a.a.a.a.d a.a.d P U P W P k W W l l m m x Q Y Z L L d.` ` ` ` ` ` ` d.d.n N.Z B.B.A.T.T. + + +i+i+i+p+#+p+p+6+o+o+o+5+5+5+5+@+5+@+@+@+5+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+`.@+@+@+`.++`.++=.++`.++++++++++|+++l.l.|+l.1+++l.l.l.l.c $ $ # $ $ $ # $ a w.w.w.w.w.w.w.w.w.w.1+w.w.w.w.w.w.w.w.w.}+5.w.J w.%.5.}+w.5.5.}+J 5.}+5.k.5.k.5.2+k.2+k.z.k.(.k.k.[+k.(.I [+k.[+(.I I I I I I ^ ( ^.N ^.6 +.6 N g 6 g 6 6 g 6 g 6 N : 6 N 6 N N +.N i 6 |.N ^.^.+.^.+.^.N ^.|.^.^.^.^.^.^.^.^.^.^.^.^.J.$.J.^.^.J.^.J.^.^.^.$.J.^.^.^.^.^.E.^.$.E.$.1 k.$.$.k.$.k.$.$.$.k.k.$.k.$.k.I k.I k.I I I (.k.I (.(.I (.I (.j.(.{.(.{.(.(.{.{.(.3+{ {.3+&.3+{ &.3+&.&.3+&.&.&.7+&.&.&.&.[ <+[ <+[ 7+S.[ S.S.[ m.[ m.[ m.[ m.m.m.m.m.m.-.m.-.m.-.m.-.+ -.m.-.-.-.-.-.-.-.-.-.-.G+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+]+A+w+]+A+A+]+C+y+]+C+w+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+-+$+-+$+$+c+-+c+-+c+-+c+-+c+O.-+O.c+U.=+=+U.*+=+*+*+*+*+*+,+*+,+*+X.*+X.,+X.X.X.X.n+s.Y..+r..+.+t.t.t.t.0.0.a.a.a.G.G.G.P a.a.a.a.a.a.a.P a.P d P P P k P k l W W l l y y *.Q Y ` L ` ` ` ` d.d.d.d.d.d.N.N.Z B.B.A.T.T. + +i+#+i+#+#+p+p+_.6+o+o+o+5+5+5+@+5+5+@+@+5+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+=.@+@+=.@+=.@+++`.=.`.=.++++`.++++++++++l.++++|+l.++1+++l.l.1+l.1+a $ E+$ $ # $ $ $ c w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.%.w.w.5.w.w.%.w.w.5.w.5.%.5.E.$ $ $ $ $ $ $ $ E+$ c k.(.k.k.(.k.(.(.k.(.k.(.(.I (.I [+I I I ^ / I w |.^.+.6 N 6 N 6 6 N : 6 6 6 N 6 6 N 6 +.6 +.6 +.N O N ^.|.i ^.|.w O ^.|.^.^.|.^.|.^.^.^.^.^.J.^.^.^.^.^.J.^.^.^.^.^.^.^.E.^.E.$.E.$.E.$.^.k.^.$.k.$.$.k.$.$.k.$.k.k.k.I k.I I k.I k.$.(.I (.k.I I I (.I I j.(.I (.j.(.{.(.{.{.{.(.{.{ (.{.{ 3+&.{.3+&.3+&.&.&.7+&.<+&.&.S.7+&.7+<+[ [ [ S.[ S.S.m.S.m.m.[ m.m.m.m.m.-.m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.G+-.-.-.-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+]+A+]+G+]+G+G+]+A+y+]+C+y+]+H+y+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.d+-+$+c+d+-+$+-+c+O.c+$+c+-+c+c+c+=+=+c+U.=+=+*+U.*+*+P.*+*+P.*+*+P.*+,+X.X.X.X.X.s.s.s.s.r.r..+t..+t.t.t.W.0.W.a.a.P b.b.b.G.P P P P P P P a.P P P d P W P W W l l l m y Q x n L ` d.d.d.d.d.` d.d.d.N.Z Z B.Q A.T.T. + +#+#+#+p+p+p+6+6+o+o+o+5+5+5+5+5+5+@+@+5+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+`.@+@+@+++`.++`.++++++++++++l.++l.l.++l.1+++l.l.1+l.l.1+c $ $ $ # $ $ # $ q w.w.%.w.w.w.w.w.w.w.w.w.w.w.w.w.w.5.w.w.}+5.w.5.%.w.J w.5.}+5.$ # $ # $ E+$ # $ $ q z.k.(.(.k.(.k.k.(.(.I [+I [+I [+I I I I I I ^ ( ^.6 N ^.6 N g 6 g 6 6 N : 6 : 6 +.6 i 6 N 6 +.6 |.i ^.i |.^.|.+.^.|.|.^.^.|.^.^.^.^.^.^.^.^.^.^.^.<.^.^.^.^.J.^.^.^.^.^.^.^.$.^.^.^.$.^.$.^.$.k.w $.E.$.k.k.$.k.$.$.I k.$.k.k.I k.I (.I k.I I [+(.[+I (.(.(.I (.j.(.I (.{.(.(.(.{.(.{.{.3+{.{.{ 3+{ &.&.&.3+&.&.&.&.7+&.7+<+[ &.[ &.S.&.[ S.[ S.S.[ m.S.m.m.[ m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.G+-.-.-.G+-.G+-.G+G+-.G+G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+A+G+A+]+A+G+]+C+w+H+A+]+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+d+d+O.$+c+-+$+c+-+c+-+c+O.c+-+c+U.=+U.=+c+U.*+*+*+*+P.P.P.P.P.C.*+P.*+P.X.C.X.X.X.Y.s.s.Y.r.s.r.@..+t.t.0.t.V V a.a.a.P b.m H.b.G.P v.P P W W P W W k P W k W l l m y y Q Y ` ` d.` d.` d.d.d.d.d.Z Z Z B.Q A.T.T.H.#+#+#+#+p+p+6+6+6+o+o+o+5+5+5+5+5+@+5+5+@+@+@+@+5+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+=.@+@+=.`.=.@+=.`.=.`.++`.++++++++++++l.|+++++1+l.1+++1+l.l.a E+$ $ $ $ $ $ $ c J J J %.w.%.w.w.w.w.w.w.w.w.w.w.w.w.w.%.w.w.w.5.w.5.w.J w.J 5.$ $ $ $ $ $ $ $ # $ c I (.k.(.k.(.(.(.k.(.k.(.k.(.(.I [+I I I I ^ I ^ w ^.N N 6 N 6 N 6 : N 6 N 6 i N 6 N N 6 +.6 |.+.6 |.O ^.+.O |.|.|.w |.|.^.|.^.|.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.w ^.k.^.^.E.$.k.^.$.k.$.$.k.$.$.$.$.k.k.I I k.I I k.I [+$.[+I [+I I I (.I I I (.I (.{.(.{.(.{.{.(.{.(.{.(.{ (.{ 3+{.3+{ 3+{ &.{ &.&.&.&.&.<+&.7+<+7+&.7+[ 7+S.[ S.S.m.S.m.m.[ m.m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.m.-.-.-.m.-.-.-.-.-.-.G+-.-.G+-.-.-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+]+G+]+A+]+y+C+]+C+y+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+-+$+c+d+-+$+=+$+c+O.c+-+c+O.c+=+U.c+=+U.=+*+U.*+=+*+*+P.*+P.*+*+P.C.*+C.P.C.X.X.X.X.X.s.s.s.r.Z.r.D.@.t.t.0.t.0.X V V a.a.P b.m 4.4.b.W W P W P W P W W W W l l l m y *.x Z L ` d.d.d.d.d.d.d.d.N.Z Z B.Q A.*.T.H. +#+#+6+p+6+6+6+o+o+o+o+5+5+5+5+5+@+5+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+++`.++`.=.++++++++++++l.++|+++|+l.++l.l.1+l.l.1+c $ # $ # E+$ # $ c J k.J J J w.w.w.w.w.w.w.w.w.w.w.5.w.w.5.w.5.w.%.5.%.5.5.5.w.k.$ # E+$ # $ # $ $ $ c k.(.(.(.(.k.(.k.(.k.(.I [+I (.I (.j.I I I I / ^ 1 ^.w ^.6 +.6 g N 6 : N : 6 g i N i 6 +.6 +.6 w +.^.+.|.w |.^.O ^.|.^.|.^.|.|.^.|.^.^.|.^.^.^.^.^.^.J.^.^.^.^.^.^.^.^.^.%.^.E.^.^.k.^.$.^.$.k.$.$.k.$.$.$.k.$.k.j.I k.I j.k.I [+I I [+I (.I (.[+I (.[+(.[+I (.j.(.j.(.{.(.(.{.(.{.(.{.(.{.{.(.{ {.{.{ &.3+&.&.3+&.&.7+&.S.&.&.S.&.S.&.S.7+S.[ [ S.S.[ S.m.[ m.[ m.m.m.m.m.-.m.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+G+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+A+G+A+G+A+w+C+A+w+C+]+y+]+C+H+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+$+-+$+-+$+c+-+c+-+c+O.c+-+c+U.c+=+=+U.=+*+=+*+U.*+P.*+P.P.*+P.P.,+P.C.*+X.C.C.X.).X.s.X.s.s.s.r.r.9..+@.@.t.t.t.0.0.X V a.a.a.P b.m *.4.4.W W W W W W W W l l l m m y x Y ` ` d.d.d.d.d.d.d.N.Z Z Z Y Q A.*.T.H.#+#+#+6+6+6+6+o+o+o+5+5+5+5+5+@+5+@+5+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+=.@+=.`.=.@+=.`.++++`.++++++l.++++l.++l.++l.l.1+l.l.1+K a $ $ $ $ $ $ $ $ q J 0 k.J J J w.%.w.w.w.w.w.w.w.w.w.w.5.w.w.w.w.5.w.5.w.}+%.5.J $ $ $ $ $ $ $ $ # $ c I (.I [+(.(.(.(.(.(.(.k.(.[+(.[+I I (.I I I I I ^ w N w N 6 N 6 N 6 6 N 6 N i N 6 6 +.6 N |.i O ^.O |.w +.|.|.^.|.O |.O |.|.^.^.|.^.|.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.E.^.^.$.^.$.^.$.$.^.k.$.$.k.$.$.$.k.j.$.j.k.$.k.j.k.I [+I I (.[+I [+I [+I (.{.I (.I 3+j.{.(.{.(.{.(.{.(.{.(.{.(.{.{ (.{.{.3+{ 3+3+&.3+&.&.7+&.&.&.7+&.S.7+&.7+S.[ S.7+S.S.[ m.S.m.S.m.[ m.m.m.m.m.m.m.m.-.m.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.G+-.-.G+-.-.-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+]+G+]+y+]+y+]+C+y+w+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+-+d+c+$+c+-+$+-+c+$+-+c+c+O.c+=+U.=+c+U.=+*+U.*+*+*+P.*+P.P.*+C.*+P.C.P.C.P.X.C.X.C.X.s.s.s.s.s.s.r.G @.t.@.t.v t.V 0.V V a.d a.P P W m 4.*.4.l W W l l l l l l m y *.Q Z L ` d.d.d.d.d.d.Z Z Z Y Y Q A.*.4.H.#+#+G.6+6+6+o+o+5+5+5+5+5+5+5+@+5+@+5+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+9+@+@+@+@+@+@+@+@+@+@+@+@+`.++`.=.++`.++++++++++++l.++l.++l.l.1+l.l.1+l.1+c $ # $ E+$ # $ $ c I / I 0 k.J %.%.w.w.w.w.w.w.w.w.w.w.w.w.%.5.%.5.%.w.J 5.5.k.J $ E+$ # $ E+$ E+$ $ q {.(.I (.I (.I (.[+k.(.[+(.I (.I (.[+I {.I I ^ I / / ^.^.N 6 +.6 N 6 4 N 6 i 6 6 +.i i +.O i |.O i |.O |.|.^.|.|.O ^.|.|.^.^.|.|.^.^.^.^.^.^.^.^.^.^.^.^.^.|.^.|.^.^.^.^.^.^.^.^.$.^.$.^.k.$.$.$.$.$.k.j.$.$.[+k.I j.j.I [+I j.k.[+I I [+I [+I (.j.[+j.{.[+I (.(.{.(.{.(.{.(.{.(.{.(.{.(.{.{.{ 3+{ {.{.{ {.{ {.&.3+&.7+&.&.&.&.&.S.[ &.7+&.[ [ [ S.S.S.S.m.[ m.[ m.m.m.m.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.x+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+A+G+A+]+A+G+C+A+C+H+A+]+H+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+d+$+-+-+$+c+-+c+O.c+O.O.c+=+c+=+=+U.=+*+U.*+*+=+*+P.*+P.P.*+P.*+C.*+P.X.C.C.C.C.X.C.).X.).s.s.s.s.r.r.r.G @.@.t.t.t.V X V V a.V a.P P P W m *.A.*.m b.W l l l m y y y Q ` ` d.d.d.d.d.d.Z d.Z Z Y Q Q *.4. +#+G.6+6+M.o+5+o+5+5+5+5+5+5+5+@+5+@+5+@+@+@+@+@+@+@+@+@+`.@+@+@+@+@+9+@+@+@+9+@+@+@+@+@+@+@+@+@+@+=.@+=.`.=.@+++`.++++=.++++++l.++++l.|+l.l.1+l.l.l.1+K 1+a E+$ $ # $ $ $ # c / (./ I J J 2+5.%.5.w.w.w.w.w.w.w.w.%.5.w.w.5.w.5.5.w.%.J 5.k.$ $ $ $ $ # $ $ # $ c {.{.{.(.I (.[+(.I [+(.I [+k.[+(.I I (.I I {.I I ^ ^ w ^.w N 6 N 6 N 6 i N N i 6 i i ^.i +.O i O |.O ^.|.+.O ^.|.|.O ^.|.O |.^.^.|.^.|.^.|.^.|.^.^.|.^.|.^.^.^.^.^.^.^.^.^.$.k.^.k.$.k.$.$.k.$.$.k.$.$.k.j.$.I k.k.I [+j.k.[+I j.(.[+I [+I (.j.{.[+{.(.{.{.3+{.{.(.{.(.{.3+{.(.{.(.{.{ (.{ (.{.(.{.(.3+{.3+{ &.&.{ &.3+&.&.7+&.7+&.&.[ S.[ S.[ S.[ S.[ S.S.m.m.m.[ m.m.m.m.m.m.-.m.-.m.-.m.m.-.-.-.-.-.-.-.-.-.x+G+-.G+-.-.G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+]+G+G+G+]+]+G+]+y+]+H+y+]+y+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.d+-+-+$+$+-+c+O.$+c+-+c+c+-+c+O.c+U.c+U.=+=+U.*+o.*+*+P.*+P.P.P.P.P.C.*+P.C.P.C.C.C.X.C.s.X.s.).s.s.~.r.G r.r.@.@.@.@.t.0.t.V V a.V U a.P P P P l *.A.Q *.4.l l m y *.x Z L d.d.d.d.d.Z d.F.Y Y Y Y Q *.T.H.H.G.6+G.M.o+5+5+5+5+5+5+5+5+@+@+5+@+@+@+@+@+@+@+@+@+`.@+@+@+@+@+@+@+@+@+@+@+@+@+@+9+@+@+A @+@+@+@+@+@+`.@+@+++@+=.`.=.`.++`.++++++++++++++l.++l.l.l.1+l.1+K c $ E+$ $ $ E+$ $ q I / (.I I k.J 5.%.w.w.w.w.w.w.w.w.5.w.w.w.%.5.%.w.%.5.5.2+J J # $ # E+$ $ # $ $ $ , ; { {.{.{.{.I (.(.(.k.(.(.(.I [+(.j.I {.(.I I I I ^ 1 O N ^.+.6 N 6 N 6 i 6 i +.6 +.i |.i O O |.i O |.O ^.|.|.|.w |.|.|.^.|.^.|.^.^.^.^.^.|.^.|.^.^.^.^.w ^.^.^.^.^.^.^.E.^.$.^.$.J.$.$.$.$.k.$.j.k.j.$.$.[+$.j.j.[+$.j.I j.[+I j.I (.j.(.j.[+(.{.[+j.(.[+{.(.3+{.3+{.(.{.{.3+{.{.(.{.{.{.3+{ {.{ {.{ {.{ {.3+&.3+&.&.&.7+&.&.&.<+7+&.7+S.&.[ 7+S.[ S.[ m.S.S.m.m.m.m.m.m.-.m.m.m.m.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.G+-.-.-.-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+]+A+G+A+A+]+C+A+]+C+A+]+C+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+$+d+$+-+c+$+-+c+-+$+c+-+c+O.c+=+=+=+=+U.=+*+*+=+*+o.*+P.P.*+P.*+P.P.P.C.C.C.X.C.X.C.s.C.s.).s.).r.s.r.r.r.@.9.@.@.t.@.v v v V V X d a.d P P P W P l m Q Y Q *.y y y Q ` ` d.d.d.d.N.L.Z Z Z Y Y Q *.4.H.6.G.6+G.M.o+5+5+5+5+5+5+5+@+@+@+5+@+@+@+@+@+@+@+`.@+`.@+@+@+@+@+@+@+@+@+@+@+A @+@+@+@+@+@+@+@+@+@+@+@+@+=.@+=.@+=.`.++`.++++++++++++++l.++l.|+l.1+l.1+l.1+l.w.q $ $ $ $ # $ $ $ c / 0 I / I 0 J J J w.w.w.w.w.w.w.w.w.w.5.E.5.w.w.5.5.w.%.J J k.$ $ $ $ $ $ $ $ $ $ , {.{.; { (.{.(.j.I [+(.[+k.(.[+I (.I (.I I I I > ^ I ^ w ^.O N 6 i N i +.6 N i 6 i i |.i O |.O i O |.O ^.|.|.|.w |.|.|.w |.|.O |.|.|.|.^.|.w |.^.^.|.^.^.^.|.^.^.^.^.^.^.$.$.$.J.$.$.$.$.$.k.$.$.k.$.$.$.[+$.$.[+k.k.j.I [+[+I [+I [+(.j.(.j.[+{.j.(.{.3+{.[+{.{.3+{.(.{.{.(.{.(.3+{ 3+(.{ (.{.(.3+(.{ 3+{.3+{ {.{ &.&.&.&.&.7+[ 7+&.S.[ &.7+S.[ S.S.m.S.S.S.m.m.m.[ m.m.m.m.m.-.m.-.-.-.m.m.-.-.-.-.-.-.-.-.-.-.x+-.-.G+-.G+-.G+G+-.G+-.G+G+-.G+G+G+G+G+G+C+G+]+A+]+G+G+w+]+w+C+w+]+C+y+]+C+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.$+-+$+c+d+O.-+c+O.c+-+O.c+-+c+=+c+U.=+U.=+*+U.*+*+U.P.P.P.*+P.P.P.P.P.P.X.P.C.P.C.8.C.X.).).X.s.s.).s.~.r.G r.@.@.@.@.@.t.t.v 0.v V V V a.d P d P W W W l 4.Q N.Z Y Q Z ` d.d.d.d.Z L.B.Z F.Y Y Q x.*.4.H.G.G.c.M.5+5+M.5+5+@+@+@+@+@+5+@+@+@+W.@+@+W.@+@+@+@+@+`.@+@+@+@+@+@+@+@+@+@+@+@+9+@+@+@+@+@+@+@+@+@+=.@+@+@+`.=.`.=.`.=.++`.++++++++l.++|+l.++l.l.l.l.1+l.K w.a $ # $ E+$ $ # $ q 0 I I I I I J k.5.5.w.w.w.w.w.w.w.w.%.w.w.}+J 5.%.w.J 5.k.5.k.c q c q , , , , q , ;.{.; &.{.{.{.(.(.(.(.(.I (.[+(.(.I j.(.{.I {.I I I ^ / $.^.N w +.6 6 N 6 +.i i +.O i O |.O i O |.O O |.O |.w |.|.|.w |.|.|.^.|.O ^.|.|.^.w |.^.^.^.^.^.|.^.^.^.^.^.^.^.$.J.^.$.k.$.^+$.k.$.$.$.j.$.j.k.j.$.$.[+$.j.I j.[+I I j.[+I [+I [+(.j.(.{.[+{.[+(.{.{.(.3+I 3+{.{.(.3+{ {.{.{.{.{.{.{.{ {.{.{ {.{.{ { {.&.3+&.{ &.&.&.&.&.&.[ &.7+S.[ [ [ S.[ S.S.[ m.S.[ m.m.m.m.m.m.m.m.-.m.m.m.-.-.-.m.-.-.-.-.-.-.-.-.G+-.G+-.-.-.G+-.-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+C+]+A+G+C+w+C+y+]+C+y+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+d+-+$+c+d+c+$+-+c+c+O.c+c+O.c+U.=+c+U.c+=+*+U.*+*+P.*+P.P.P.*+P.C.P.P.P.X.C.C.X.C.X.).X.s.).).s.s.r.s.~.r.G r.G @.@.@.@.v t.v v V V V V V U P P P P W W l l y Q Z n ` ` d.d.d.d.Z N.F.Z Y Y Q *.*.4.H.6.G.M.M.5+M.W.@+W.@+W.@+W.@+W.@+@+W.@+@+`.@+@+`.`.@+`.@+@+`.@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+=.@+=.@+++@+++++++++++++++++++l.++|+l.l.1+l.l.l.4+l.K c $ $ $ $ # $ $ E+c / I 0 I 0 I 0 J %.%.5.w.w.w.w.5.w.5.w.J 5.w.w.5.w.5.}+J J k.0 0 (.I { {.{.{.{.{.{ ; {.&.{.; ; {.{.{.(.j.(.[+(.(.j.(.[+(.I I (.I (.I I I ^ / w |.w N |.6 i N i 6 i i i |.i O |.O +.O |.|.O |.|.|.^.|.|.|.O ^.O |.^.|.O |.|.O |.^.O ^.^.^.^.^.^.^.^.^.^.$.^.J.$.$.J.$.$.}.k.$.$.k.$.$.k.$.$.k.j.$.j.k.[+$.j.j.[+[+I j.[+I [+I j.3+j.(.{.3+{.{.[+{.{.{.3+{.(.3+{.{.3+3+{ 3+3+{ (.3+{.(.{ 3+{ 3+{.3+{ 3+{ &.3+&.&.&.&.7+&.7+&.S.&.S.&.S.[ S.[ S.S.S.m.m.S.m.[ m.m.m.m.m.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.G+G+-.-.G+-.G+G+G+G+G+G+G+G+G+G+G+]+A+w+G+G+]+A+w+C+w+C+y+]+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+$+-+$+-+$+-+O.-+c+O.$+c+O.O.c+=+c+=+U.=+=+U.=+*+U.P.*+o.P.*+P.P.*+P.*+C.P.C.P.C.C.C.C.X.).C.s.s.s.).).r.G r.r.G r.@.G @.@.@.v t.v v v V V V d U d d k P W l l m y Q Z L d.d.d.Z N.L.Z Z F.Y Q Q *.4.4.G.G.M.M.M.W.5+W.5+@+W.@+@+@+W.@+@+`.@+`.@+@+@+`.@+@+`.@+`.@+@+`.@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+=.@+@+=.@+=.`.=.`.=.`.++++++++l.++|+l.l.++l.l.1+l.l.1+K w.q E+$ # $ $ E+$ $ c I 0 I I I I k.J J 5.w.w.w.w.w.w.%.w.5.w.w.%.5.%.5.J 5.%.5.J k.I (.> {.{.{.{ {.{.{.{.; {.&.&.{.{.{.(.j.(.(.(.[+(.[+I (.j.(.{.I {.I {.I ^ I ^ w ^.^.^.6 |.6 |.i +.O +.O i |.O i O O O O O |.O ^.O |.O ^.|.|.|.|.|.|.O ^.|.|.^.|.|.^.^.|.^.^.^.^.J.^.J.^.$.J.$.$.J.$.$.J.k.}.$.$.j.k.j.$.[+$.j.$.k.$.[+I j.k.j.I j.j.(.I j.(.[+I (.[+{.[+j.(.3+{.(.3+(.{.3+{.{ 3+3+{.{.(.{.{.3+{.{ 3+{.3+{.3+{.{ 3+{ {.{ {.{ { 3+&.&.&.&.&.7+&.[ [ 7+[ S.[ S.m.[ S.[ S.m.m.m.[ m.m.m.-.m.m.m.-.m.m.-.-.-.-.-.-.-.-.G+-.-.G+-.-.G+-.-.G+G+G+-.G+G+G+-.G+G+G+G+G+G+G+G+G+G+C+G+A+G+]+G+y+]+H+]+C+y+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+$+c+d+$+c+O.c+$+c+-+c+O.c+c+c+-+c+U.=+=+U.=+*+=+*+U.*+P.P.*+P.P.P.P.P.P.C.P.X.C.C.C.X.).X.X.).s.).s.s.s.s.r.G r.@.G @.@.@.@.@.v @.v V v V V V V V d P k P W l m y y Z ` d.d.d.d.F.Z Z F.Y Y Q x.*.4.b.G.G.M.M.5+W.@+W.@+W.@+@+W.`.@+@+`.`.@+`.@+`.`.`.@+`.`.@+@+`.@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+++@+++@+`.=.`.++++=.++++++++++++l.++l.1+++l.l.1+1+K w.c $ $ $ $ # $ $ $ q I / I / (.I 0 k.J 5.w.w.w.w.5.w.w.w.%.}+J w.5.w.5.}+w.5.k.J k.0 I {.{.^ { ^ {.; { ; {.{ ; {.&.{.{.{.(.(.[+(.(.(.(.[+I (.{.I (.I {.I I I ^ ^ 1 ^.^.i |.6 +.i N O +.i O O O i O |.O |.O |.O |.|.|.|.^.|.O |.O |.^.O |.|.O ^.O |.^.^.^.^.^.^.^.J.^.J.^.$.^.$.J.$.J.$.$.k.}.$.k.$.$.k.}.k.j.$.$.[+$.j.$.j.k.j.j.k.[+I [+j.(.j.I [+j.{.{.(.3+{.(.{.[+{.{.3+{.{.3+{.{.{ 3+{.{ 3+{.{ {.3+&.{ {.{ { 3+{.3+&.3+&.{.&.&.{ &.&.7+&.[ &.7+<+[ [ S.[ S.[ S.m.S.m.m.S.m.m.m.m.m.m.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.G+-.-.G+-.-.G+G+-.-.G+G+-.G+G+G+G+G+G+G+G+G+]+G+w+G+]+G+]+]+A+]+C+w+C+y+]+y+C+H+A+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+d+$+-+$+-+d+c+O.c+O.c+O.-+O.c+=+c+U.c+=+U.=+*+U.P.P.*+P.o.P.P.P.C.*+C.P.C.C.C.C.C.C.X.).).s.).s.).s.h r.h r.G G @.@.G @.@.@.@.v v v v u V V d V d d d W W l m y Q n ` d.d.Z d.N.F.Z Y Y Q x.*.4.H.b.G.M.W.W.W.W.@+W.@+`.`.`.`.@+`.`.@+`.`.@+`.@+@+@+`.@+@+`.`.@+=.@+`.@+=.@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+=.@+@+@+=.`.=.++++=.++++++++++++l.l.++|+l.l.1+l.1+l.K w.w.c $ # $ $ $ $ # $ c / (./ (.I / 0 J J w.5.w.w.w.w.w.5.w.w.5.w.5.%.5.%.5.J J k.k.0 (.I (.{.{ {.{.; {.{.{.&.; {.; {.{.{.(.I (.(.I (.[+I (.(.j.(.(.j.(.I I {.> I > I w ^.^.^.i O ^.i i O i O i O O |.O O O O O |.|.w |.O |.|.|.O |.|.|.|.|.O |.|.|.^.^.^.^.|.^.^.J.^.^.^.J.$.J.$.$.J.$.k.J.}.k.$.$.$.k.j.k.$.$.k.j.$.$.[+k.j.k.j.[+j.I j.[+I [+I [+(.{.[+[+{.{.[+{.[+{.3+(.{.(.{.(.{.3+{.3+{.3+{.{ 3+3+{ 3+3+&.3+{.{ { { {.{ &.{ 3+&.{ &.&.&.[ &.[ <+[ S.[ S.[ S.S.S.[ S.m.S.m.m.m.m.m.m.m.m.m.-.m.-.-.m.-.-.m.-.-.-.-.-.-.-.x+-.-.-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+C+G+A+G+A+A+]+A+]+C+y+]+C+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+-+d+c+$+c+O.-+c+d+-+c+c+c+c+O.c+U.=+U.*+=+U.*+*+*+P.o.*+P.*+P.P.*+P.P.C.P.C.C.C.X.C.).X.s.X.s.s.s.s.r.s.G r.r.r.G @.@.@.@.v @.v @.v v v u v V d V d d P k l m y Y ` d.d.d.F.Z Z Z F.Y Q x.*.*.4.b.G.a.M.W.W.W.W.`.`.`.W.@+`.`.`.`.`.`.@+`.`.`.`.`.`.@+`.`.@+@+`.@+@+=.@+@+@+@+@+) @+@+@+@+@+@+@+@+@+@+@+=.@+@+=.@+=.@+=.`.@+++`.++++++++++++++l.l.l.l.l.l.l.1+l.1+K K a $ $ E+$ E+$ $ # q 0 I / I > I 0 k.J 5.%.w.w.5.w.w.w.5.w.w.%.5.w.}+%.}+5.%.J J k.k.(.I { H {.{ {.; {.; {.&.; &.; {.{.(.{.(.[+(.(.(.[+I [+(.j.(.{.I {.I I {.^ ^ ^ w ^.O w |.O i |.i |.O O O +.O i O O |.O |.O |.|.O |.|.O |.|.O ^.|.O ^.|.|.w |.|.^.|.^.^.^.J.^.J.^.J.^.^.$.J.$.$.J.$.k.$.}.k.$.$.$.$.j.k.j.$.k.j.$.I [+I j.I j.[+j.I [+I [+I j.(.j.{.j.[+{.{.[+{.(.{.{.3+{.3+{.3+{.3+{.{.3+{.3+{.&.{.&.{ 3+{ { 3+{.&.{ 3+&.{.&.&.3+&.&.&.&.7+&.7+&.[ <+[ S.[ S.[ S.S.S.[ m.S.m.m.m.m.m.m.m.m.-.m.m.-.-.-.-.-.-.-.-.-.-.G+-.G+-.-.G+-.G+G+-.-.G+G+-.G+G+G+G+G+G+G+G+G+G+w+G+]+G+]+G+A+]+y+H+C+y+]+A+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+$+$+-+$+d+O.d+c+O.O.c+$+O.c+O.=+c+U.c+=+U.c+*+U.=+U.P.*+P.P.P.P.P.P.P.P.P.C.,+i.C.C.C.X.C.).s.).).).).s.h r.r.G G r.@.G @.G @.@.@.@.v v v v u v u V d d d k l m y Z ` d.Z N.d.d.F.F.Y F.Q Q *.4.l G.M.a.W.W.W.W.`.W.`.`.`.`.`.`.`.@+`.`.`.`.@+`.@+`.`.`.`.@+=.`.@+`.`.@+@+@+@+=.@+@+@+@+@+@+@+@+@+@+@+@+@+@+=.@+@+=.`.=.`.=.++++=.++++++++++++l.++|+l.l.l.l.l.1+l.K w.w.c # $ $ # $ $ $ $ c / (./ (.I (.I J J 5.w.5.w.w.w.5.w.w.%.5.w.5.%.5.%.5.%.2+J k.0 I (.I {.> {.; {.&.{.{ {.; {.; {.{ {.{.(.I (.I [+I (.(.I (.(.{.(.{.(.{.{.I > {.^ 1 O ^.O |.^.O +.O O i O O O |.O |.O O O |.O |.O |.|.O |.O O |.|.|.|.|.|.|.|.^.^.^.^.^.^.^.^.J.^.J.$.^.$.J.$.J.J.}.$.J.j.^+$.$.$.j.k.$.j.k.$.j.$.k.j.$.[+k.[+j.I [+j.I [+I [+(.j.(.[+(.{.[+[+{.(.{.3+(.{.{.(.{.3+{ {.3+{ 3+{.{ 3+3+{ {.3+&.&.3+&.{ 3+&.{ &.{ 3+{ &.{ &.&.&.&.[ &.&.[ 7+S.[ S.[ S.m.S.m.S.m.m.S.m.m.m.m.m.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.G+-.-.G+-.-.G+-.-.G+G+-.G+G+-.G+G+G+G+G+G+]+G+G+C+G+A+]+A+]+]+A+C+w+]+C+y+]+C+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+$+c+$+c+$+-+c+$+-+c+O.-+c+-+c+c+U.c+=+U.=+=+U.*+*+P.*+o.P.P.*+C.*+P.*+P.C.C.C.C.C.C.X.).).X.).s.s.s.r.~.r.r.h @.r.@.G @.@.@.@.v @.v v v v u v u V u d d d l l m *.` d.d.d.d.Z F.Z Y Y Q *.x.y H.b.G.a.W.W.W.W.`.W.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.@+`.@+`.`.@+`.=.@+=.@+=.@+@+@+@+@+@+@+@+@+@+@+@+@+@+=.@+@+@+=.`.=.@+=.`.`.=.++++++++++++l.++1+++l.l.l.1+l.l.1+l.w.K c $ $ $ $ $ $ # $ c I / (.I / I 0 J 5.J w.w.w.5.w.w.5.w.5.}+J w.5.w.5.}+5.5.k.0 k.k.(.I {.{.; {.{.{.; {.; &.; {.{.{.(.(.(.(.(.(.(.(.[+(.(.I (.{.(.I I {.I > {.{.^ / E.^.|.w i O O |.i O O O O #.i #.O |.O O |.O |.|.O |.O |.O |.O O ^.|.O |.^.^.|.^.^.^.J.^.J.^.J.^.J.^.J.^.$.J.$.$.k.$.$.$.$.$.$.k.$.j.k.$.j.$.k.j.$.[+k.I j.$.[+[+I [+[+j.(.j.(.j.(.j.{.(.{.3+{.3+{.{.(.3+{.3+{.3+{.3+{.{.{ 3+{.&.&.3+&.{ 3+&.{ 3+&.&.&.3+{ &.&.{ &.&.&.&.&.&.7+&.[ <+[ S.S.[ S.[ S.S.m.m.[ m.m.[ m.m.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.G+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+C+w+G+]+G+]+G+G+A+]+H+A+]+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.d+$+d+O.d+c+$+=+c+$+c+c+O.c+O.-+c+U.=+=+U.*+c+*+U.P.P.*+P.*+P.*+P.C.P.C.P.P.C.C.C.X.C.X.X.).s.).).s.).r.~.h r.G @.G @.X 4.n n a a a a a a ` n Q _ d V d d k l m Q L d.d.Z F.Z F.Z F.Y x.Q *.4.b.W a.a.W.W.W.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.=.`.@+`.@+`.@+`.@+5+o R b r b b r b - R 9+@+=.@+=.@+@+=.@+`.=.@+++`.=.=.++++++++++++++++l.++l.l.++1+l.l.4+l.K w.w.q $ # $ E+$ # $ $ q / I / (./ (./ J J w.5.w.w.w.w.w.w.5.w.w.5.w.J 5.%.5.J J 5.k.J (.(.(.> {.{.{.; { {.&.; {.&.{.{ {.(.{.(.I (.(.I (.I (.(.[+(.I {.{.{.I {.{.> {.^ ^ w ^.O |.O |.O i O 8.O #.|.O |.O |.|.O M.R S q q q a q r e.#+z |.|.|.^.^.^.|.^.^.^.^.^.J.^.J.J.$.^.$.^.$.J.$.J.J.$.J.^+$.J.$.k.}.k.$.$.$.k.$.j.$.[+$.j.[+I [+I j.j.I I @+9+o S S T S S T 9+A ++{.(.3+{.{.(.{ {.3+{.{.3+{ 3+{.&.3+3+{ &.3+&.{ 3+&.&.{ 3+&.&.&.3+&.{ &.{ &.&.7+&.[ &.[ [ [ S.S.S.S.m.S.m.[ m.} p T T , , , , , , T T p * -.-.-.-.-.-.-.-.G+-.-.-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+A+]+A+]+H+A+]+H+y+]+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+d+-+$+O.-+-+$+-+c+O.c+O.c+c+O.c+U.c+=+=+U.=+*+=+*+g.P.*+o.P.P.P.P.P.*+C.C.C.C.i.C.C.).X.).X.s.s.).s.s.r.r.G r.*.L < $ E+E+E+$ $ # $ $ $ $ $ $ $ f L Q d _ l m Z ` d.Z d.Z N.F.Y Y F.Q x.4.m b.G.a.W.W.W.`.W.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.`.=.`.=._.f., < $ $ E+$ $ $ $ $ $ E+E+# f c ;.i+=.@+++=.@+=.`.=.=.`.++=.++++++++++++++l.++l.l.1+l.l.l.l.1+K w.K c $ $ $ # $ $ $ E+c I 0 I / (./ 0 J J 5.w.5.w.w.5.w.5.w.5.%.5.w.5.5.w.J }+J 2+J k.K _.A A A A A A A A 0 { {.{.> I (.{.(.I (.(.(.[+(.[+(.I (.{.(.I {.(.{.I {.{.} A A _._._._.c.] c.O O O O O O O O |.' r f $ $ $ $ $ $ E+$ $ $ $ E+e f.z ^.^.^.^.^.J.^.^.J.^.J.J.^.J.^.J.$.J.$.J.$.J.$.$.j.k.$.$.$.k.}.[+$.j.$.[+$.$.j.k.I $.j.j.k.8+B e $ $ $ $ $ $ $ $ $ $ $ $ $ $ , b o } {.3+{.3+{ 3+{.3+{.3+{ {.&.3+{ &.3+&.&.{ &.&.&.{ &.{ &.{ &.&.&.{ &.&.&.[ &.[ <+[ [ S.[ S.[ S.o b f E+$ E+$ $ $ $ $ $ $ E+$ E+$ < b p -.-.-.-.G+-.G+-.-.-.G+G+-.G+G+-.G+G+-.G+G+G+G+G+G+]+G+G+]+G+]+G+w+]+A+]+A+H+G+H+y+]+A+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+$+d+c+$+d+O.c+O.c+O.$+c+O.-+c+=+c+U.U.c+=+U.=+U.P.*+*+P.P.P.P.*+P.P.C.P.P.,+C.C.i.X.C.).X.).).).s.s.).~.V e.f E+E+$ $ $ $ $ # $ $ # $ E+$ E+$ # $ $ $ # ` m y n d.N.Z F.Z F.Z F.Q Q *.*.4.l b.a.a.W.W.W.W.a+`.`.`.`.`.`.`.`.`.`.`.`.`.++`.`.`.++@+`.@+`.`.S a E+$ $ $ E+$ $ # $ E+$ E+$ $ $ $ $ $ E+$ < r i+++=.++=.`.++=.`.++++++++++++++l.++l.++l.++l.1+l.K l.1+K w.q $ E+$ $ $ E+$ $ c / I / (./ I 0 5.J %.K w.w.w.w.5.w.w.5.w.5.%.5.%.5.}+5.5.J 2+J p $ $ $ $ $ $ $ E+$ A {.{.{ {.(.{.I (.(.(.I (.(.(.I (.(.(.I (.{.(.{.{.{.{.^ S $ $ # $ $ $ $ $ $ |.O O |.O |.F R < $ $ $ # $ # $ E+$ $ $ $ # $ $ $ # $ r /.^.^.^.^.^.^.^.J.J.^.J.$.J.^.^.$.J.$.J.j.$.J.$.~+$.$.$.$.k.j.$.k.$.$.j.k.$.[+[+I @+r f $ $ E+$ E+$ E+$ E+$ E+$ E+$ $ # $ $ $ $ $ < r 8+{.{.{.{.{.{ {.3+3+{ &.3+&.{ &.&.&.3+&.{ &.&.&.&.&.&.{ &.&.&.&.&.&.[ &.[ S.[ S.m.} r % E+$ $ $ $ $ E+$ # $ E+$ # $ $ $ $ $ $ E+< - 7+-.-.-.x+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+C+A+G+G+y+]+]+H+]+C+y+H+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+$+c+-+$+$+-+c+-+$+c+O.c+-+c+c+O.c+U.U.=+=+U.=+*+*+U.P.P.*+P.*+P.P.*+C.P.P.C.C.C.C.X.C.).X.).s.).s.s.~.@.e.$ $ $ $ $ $ # $ # $ $ $ $ $ $ $ $ $ $ $ $ E+$ $ $ # L ` N.Z Z Z Z Y F.Y Y x.*.y m b.G.a.a.W.W.W.3.`.`.a+`.`.`.`.++`.`.`.`.++`.`.`.`.`.@+++`.`.f.% $ E+$ $ E+$ $ E+$ $ $ $ $ $ $ # $ E+$ # $ E+$ $ $ % ;.@+=.++=.++++++++++++l.++l.l.++l.l.1+l.1+l.l.l.1+K w.K c $ # $ $ # $ $ # c I / (./ / / 0 J J K w.w.w.5.w.w.w.5.%.w.J }+5.}+5.5.J 5.k.5.k._.$ E+$ # $ $ # $ $ A > { I {.> (.(.(.(.I (.(.(.(.(.(.(.I (.{.(.{.{.> {.{.{.S # $ $ $ # $ # $ E+O i |.O i R < $ $ E+$ E+$ $ $ $ $ $ $ # $ $ $ $ E+$ $ $ # #+J.<.^.J.^.J.J.^.J.^.J.$.^.$.J.$.J.$.$.^+$.k.$.$.k.$.k.$.$.k.j.$.j.k.$.j.$.A c $ $ $ $ $ # $ $ # $ $ $ # $ $ $ $ E+$ $ # $ E+$ $ E+$ # r =.3+{ {.3+{ &.&.{.3+{ 3+&.3+&.&.&.&.&.{ &.&.&.&.&.&.{ &.7+&.&.7+&.[ &.S.* r $ E+$ $ $ $ # $ # $ $ $ $ $ $ $ $ E+$ # $ E+$ $ $ % p G+-.G+7 -.G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+G+]+A+]+A+H+A+y+]+C+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+$+d+$+-+-+c+$+-+c+O.c+-+c+O.-+c+=+c+=+=+U.*+U.=+*+P.*+g.P.P.P.P.P.P.P.P.C.P.C.i.C.C.C.C.C.).X.).s.).4.# $ $ # $ # $ E+$ $ $ $ E+$ # $ # $ # $ # $ $ $ $ # $ $ # < n Y Y F.Y F.Y Q x.Q *.*.H.l v.a.W.W.W.3.`.`.3.`.`.`.a+`.`.`.++`.++`.`.`.`.`.++`.`.o e $ E+$ $ $ # $ $ # $ $ # $ # $ # $ $ $ $ $ $ $ $ $ E+$ # $ $ C 9+++++++++++++++++++l.++l.l.1+l.l.l.K l.1+K w.K w.c $ $ $ E+$ $ # $ q / 0 > / (./ 0 J 5.K 5.w.w.w.w.5.5.w.5.5.5.w.J 5.J }+5.J 5.k.k.p $ $ $ $ $ E+$ $ # A {.{.(.(.I (.I (.(.(.(.(.(.(.(.I (.(.{.(.{.{.{.{.{.{.{.T $ $ $ E+$ $ $ $ $ ^.^.O c.e $ $ # $ $ $ $ $ # $ # $ # $ $ E+$ # $ $ $ # $ E+$ B t $.$.J.J.$.J.J.J.^.^.J.^.$.J.$.J.$.$.$.J.$.k.}.$.$.$.j.$.$.[+$.j.$.4+B $ $ # $ E+$ # $ $ # $ $ # $ $ $ # $ # $ $ E+$ $ $ # $ $ $ E+$ $ , } {.&.{.3+{ 3+&.&.&.{ &.&.3+&.&.&.&.3+7+&.&.&.&.&.&.&.&.7+&.[ &.S.p f E+$ $ $ # $ E+$ $ $ $ # $ # $ # $ # $ $ $ E+$ $ # $ $ E+C F+-.-.G+-.G+-.G+-.G+G+G+G+G+-.G+G+G+G+G+G+]+G+G+A+G+A+]+G+]+A+H+]+H+]+A+H+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.d+$+$+$+$+d+-+$+O.c+$+O.c+c+c+O.c+U.c+U.=+=+=+U.=+*+o.*+P.*+P.P.P.P.P.P.C.C.C.C.i.C.X.).X.).).s.).n.$ $ # $ $ $ $ $ $ # $ E+$ $ $ $ $ $ $ $ $ $ E+# $ $ $ # $ $ $ f d.Y Y Y Y F.Q Q x.*.m l G.a.a.W.W.`.a+W.a+`.`.`.`.++`.`.`.`.`.`.`.++`.`.`.`.`.b $ $ $ $ # $ $ $ $ $ $ $ $ $ $ $ $ $ E+$ # $ # $ E+$ # $ $ $ E+$ # $ ++++++++++++l.l.++l.l.++l.l.l.l.l.1+l.4+1+K w.w.c $ # $ $ # $ $ $ c / I 0 / / (./ J 5.3 K K K w.K w.w.5.w.w.5.5.w.5.}+J 5.}+J 5.k._.# $ # $ E+$ $ $ $ p (.{.> {.(.I (.(.I (.(.(.(.(.(.(.{.(.(.{.(.{.{.{.{.{ {.S $ E+$ $ $ # $ E+$ N j B $ $ # $ $ E+# $ # $ $ $ $ $ $ E+$ $ $ $ # $ $ $ $ $ # $ r }.$.}.J.J.$.J.$.J.$.^.J.$.J.$.J.J.$.$.$.J.$.k.$.k.$.$.[+$.$.k.$.@+e E+$ $ $ $ $ E+$ $ $ $ $ $ $ E+$ $ $ $ $ $ # $ $ # $ $ $ # $ $ # $ $ A &.&.&.&.&.{ 3+{ 3+&.3+&.&.7+3+&.7+&.&.&.7+&.7+&.&.&.&.&.[ &.* r $ $ $ E+$ $ $ $ $ # $ E+$ $ $ $ $ $ $ $ E+$ # $ $ $ $ E+$ # # e * G+-.G+G+G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+]+G+]+G+A+]+A+]+A+C+w+C+H+w+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+$+-+$+c+-+$+c+-+c+O.-+c+-+O.O.c+=+c+U.U.=+U.*+=+*+g.*+P.*+P.P.P.*+P.C.P.P.P.P.C.C.C.C.X.).C.s.9.a $ E+$ $ $ $ E+$ # $ $ $ $ # $ # $ # $ E+$ # $ $ $ $ # $ $ $ $ # $ # d.Q F.Q Q x.*.*.y 4.b.W a.W.W.t.W.3.`.`.`.`.++3.`.`.++`.++`.++`.`.`.++`.@+q $ $ $ E+$ $ $ E+$ # $ E+$ # $ E+$ # $ $ $ $ $ $ # $ $ $ E+$ # $ $ $ $ l.l.l.++l.l.++l.l.++++l.1+++4+l.K l.1+l.1+K w.K q $ $ # $ $ $ $ $ c (.> / (./ / 0 J 5.K w.w.K w.5.w.5.w.5.5.w.J }+J 5.5.J 5.2+J k.p $ $ $ $ $ # $ E+$ A {.(.{.I (.(.I (.(.(.(.k.(.I (.(.(.{.(.{.{.(.{.{ {.{.; T $ $ $ # $ $ $ $ $ @+e $ E+$ $ # $ $ $ $ $ E+$ E+$ # $ $ # $ # $ $ # E+$ # $ $ $ $ r }.$.}.}.}.J.J.^.J.^.$.J.$.J.$.J.$.^+j.$.$.$.$.$.k.$.$.[+$.I @+f # $ # $ E+$ # $ $ # $ E+$ # $ $ # $ # $ E+$ $ E+$ $ $ E+$ $ # $ $ $ E+A &.&.{.&.&.&.&.&.3+&.&.&.&.&.&.3+&.&.&.&.&.&.&.&.&.7+&.&.&.* e E+$ E+$ $ $ # $ # $ $ $ $ # E+$ # $ E+$ # $ $ $ # $ # $ $ $ $ $ E+f * D+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+w+]+A+]+C+]+C+y+]+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+$+d+$+d+$+c+O.-+$+O.c+O.$+c+c+c+$+=+U.c+=+=+U.*+U.*+P.*+P.P.*+P.P.P.P.P.P.C.C.C.C.8.C.).C.8.r.e $ # $ $ E+$ # $ $ $ $ $ # $ $ $ $ $ $ $ $ $ $ $ # $ E+$ $ # $ E+$ $ $ # Y *.Q x.Q *.*.4.m W G.a.W.W.W.a+`.3.`.3.`.a+`.`.++`.3.`.`.`.`.`.++`.@+e $ E+$ # $ $ E+$ # $ $ $ # $ $ $ # $ $ $ $ # $ E+$ $ $ $ # $ $ $ $ $ E+$ K K } l.4+l.l.l.l.l.4+l.l.l.l.l.l.1+K 1+K w.K %.c $ $ $ $ $ # $ E+q / (.I / > 0 0 J J 3 K K w.5.w.5.w.5.J }+J 5.5.}+5.}+5.2+J 2+k._.$ # E+$ # $ $ $ $ A > {.{ (.{.I (.(.(.(.(.(.(.(.(.(.{.(.(.{.(.{.{ {.{.; {.T $ $ # $ $ E+$ # $ f $ $ $ E+$ $ $ # $ $ # $ $ # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # $ $ o }.}.$.J.$.J.$.^.$.J.$.J.$.J.$.k.$.$.$.k.$.$.k.$.$.k.$.$.@+f $ $ $ $ $ # $ $ $ E+$ $ # $ $ $ E+$ $ $ $ $ $ # $ $ # $ $ $ E+$ $ # $ $ ) &.&.&.&.&.3+&.&.{ &.&.3+&.&.&.7+&.&.7+&.7+&.&.&.&.&.&.&.* e E+$ $ $ # $ # $ $ $ $ $ # $ $ $ $ $ $ # $ $ $ # $ $ $ $ $ $ E+$ E+$ $ c 7+G+G+G+D+G+G+G+G+-.G+G+G+G+G+G+G+C+G+]+G+]+G+]+w+A+]+A+w+H+y+]+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.d+$+c+$+-+$+-+c+O.c+O.c+-+c+-+O.c+U.c+U.=+U.=+U.*+P.U.P.*+P.P.P.P.P.P.C.P.P.C.i.C.C.C.C.8.).e $ $ $ E+$ # $ $ $ # $ E+f r f._ 9 i | i | _ ' B < $ $ $ $ E+$ $ $ # $ E+$ e *.*.*.*.*.y m b.b.a.a.W.t.`.W.3.`.a+`.`.`.++`.3.`.++`.++`.++`.++@+e $ $ $ # $ $ # $ $ $ $ E+$ $ $ E+$ $ $ E+$ # $ $ $ # $ E+$ $ $ # $ # $ $ $ K K l.K l.l.4+++4+++l.l.l.4+l.4+K 1+l.K l.K w.5.c $ # $ E+$ $ $ $ c / I / (./ I 0 J 5.K 5.w.5.w.K 5.w.5.w.5.5.}+J 5.J 5.k.5.J k.J p $ $ $ $ $ $ # $ # A { {.{ {.(.(.(.I (.I (.(.I (.I {.(.{.{.(.{ {.{.{.{ {.&.T $ $ $ $ $ $ # $ $ # $ # $ $ $ E+$ $ $ E+$ $ # $ $ E+# $ E+$ # $ E+# $ # $ E+$ $ $ $ f l.}.}.}.}.$.J.$.J.$.$.$.^+$.J.$.J.$.J.$.$.k.$.$.k.$.j.w.e $ E+$ E+$ # $ $ E+$ $ $ E+$ , C T S T T r , < # $ $ # $ $ # $ $ $ E+$ $ E+A &.&.&.&.&.{ &.3+&.&.3+&.&.&.&.&.&.&.&.&.&.&.7+&.7+&.7+z.e E+$ # $ $ $ $ $ $ E+# $ % b ,.=.7+. -.7 -.) p >.< E+$ E+$ # $ $ $ $ $ E+$ C G+D+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+A+]+G+]+C+y+]+C+w+C+H+A+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+d+$+-+$+c+$+-+c+$+-+c+O.c+c+c+O.c+U.=+U.=+*+=+U.*+*+P.P.*+o.P.P.P.P.P.P.C.P.C.C.C.8.C.C.` $ E+$ # $ $ $ $ # $ $ < R 4 | i i i | O | j j | j | ' q $ $ $ # $ $ $ $ $ # $ L *.y *.y 4.m W P a.W.W.W.t.`.a+`.`.a+++3.`.++`.++`.`.3.`.++`.`.a $ $ E+$ $ $ $ $ E+$ # $ # f r o =.3 5.3 K K K _.T C f $ $ # $ $ $ $ $ # $ E+K K K K K l.l.l.l.4+l.l.l.l.4+l.1+K l.1+K w.K w.q $ $ $ $ # $ # $ q (.> I > (./ 0 J J 5.K 5.w.5.w.5.5.w.J w.J 5.}+5.}+J 5.2+5.2+k._.E+$ # $ E+$ $ E+$ A &.; {.{ {.> I (.(.(.(.(.(.(.(.(.{.(.{.{.{.{.{ {.&.&.; S # $ E+$ # $ $ $ $ $ $ $ # $ # $ $ # $ $ < C S S S S S r < $ $ $ $ $ $ $ $ # $ E+# $ $ q j.}.}.}.$.}.^.$.J.^.J.$.$.$.J.k.$.$.$.J.$.k.$.$.k.$.B E+$ $ $ $ $ $ $ $ $ # f r p 8 8 8 8 8 8 8 ! 8 ! (.p ;.< E+$ $ $ # $ $ $ # $ ) ! ! &.&.&.&.&.&.&.&.&.&.&.3+&.&.7+&.7+&.7+&.&.&.&.&.[ C # $ $ $ E+$ # $ E+$ $ , p -.. -.-.. -.. -.. -.-.G+. ) C $ $ $ # $ # $ # $ $ # 8+G+G+G+G+D+G+G+-.G+G+G+G+G+G+G+G+G+G+]+G+]+G+]+G+A+]+y+C+H+]+C+w+H+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+$+$+d+O.d+c+$+O.c+O.$+c+O.O.U.c+=+U.c+=+U.=+U.*+*+g.*+*+P.P.*+P.P.P.C.P.P.P.C.i.C.C.C.B.E+$ $ $ $ # $ E+$ $ f f.i i i i i | i | ~ | | | | | 9 | 9 ' f $ $ $ E+$ # $ $ $ # Q m m m m l b.P a.a.t.W.`.3.`.a+`.3.`.++`.a+`.3.`.++`.++`.++B $ E+$ $ # $ E+$ # $ $ $ < R K 3 K 3 3 K 5.3 5.3 K 3 3 K o r $ E+$ # E+$ $ $ $ J J 5.K K 4+K 4+l.l.4+l.4+l.l.K 1+l.1+K w.K w.3 c $ $ E+$ $ $ $ $ c I I (.I > I 0 0 J 5.5.w.K 5.w.5.w.5.5.5.}+5.5.J 5.}+J 5.J k.0 9+$ $ $ $ $ # $ $ $ A {.{ ; {.{.I { I (.(.(.I (.(.{.(.{.(.{ {.(.{.{.{ {.&.8 T $ $ $ $ $ $ E+$ # $ E+$ $ $ $ $ $ q o l.t t t t ^ t s t H z r # $ # $ E+$ $ $ $ $ E+$ $ _.j.j.}.}.$.}.J.$.$.$.J.$.J.$.$.J.k.$.k.$.$.k.$.I ++$ $ $ # $ # $ E+$ # $ T 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ! ! K >.< $ $ $ # $ $ $ ) S.! ! [ &.&.&.&.{ &.3+&.&.&.7+&.&.&.&.&.&.&.7+&.7+&.T $ $ $ # $ $ $ $ $ $ % p :+. :+-.:+. -.:+-.. -.7 -.7 G+7 -.) % $ $ $ $ $ $ $ E+$ # F+G+D+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+A+G+A+G+A+]+A+w+C+]+A+H+y+C+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+$+$+-+$+c+d+O.c+O.c+O.c+c+O.c+c+c+U.c+U.U.=+U.=+*+g.*+*+g.*+P.P.P.P.P.P.C.P.C.C.C.C.8.t.f $ $ $ # $ $ $ $ # e 2 6 i i 6 i i i ~ i j | | j | 9 | 9 9 2 ' f E+$ # $ $ $ $ # $ q l 6.l 6.b.P a.X W.W.`.t.a+`.3.`.a+++`.3.`.++`.++`.`.`.++ +E+$ $ # $ $ $ # $ $ $ # T J 5.3 5.3 5.5.5.3 K 5.K K 3 K 5.3 K l.;.f $ $ $ $ # $ 0 J J 5.K K 4+l.K l.l.4+l.l.K 1+l.K 1+K 1+K w.5.c $ # $ $ E+$ # $ c I > I > (.> 0 J J 5.w.5.5.w.5.%.w.5.w.5.%.5.J }+2+J 5.2+J 2+J 9+$ # $ # $ $ $ $ E+A ; &.; { {.{ {.(.(.I (.(.I (.(.{.(.{.(.{.{ {.{ {.&.&.8 T $ # $ # $ # $ $ $ $ $ $ $ # $ r l.t t 5 t t t ^ t t }.^ t j.H l.e $ $ # $ E+$ # $ $ E+$ < [.t }.$.}.J.$.$.^.J.$.k.^.k.^.$.$.$.$.$.k.$.$.k.r # $ E+$ $ $ $ # $ f A 8 8 8 8 8 8 8 8 8 8 8 8 S.8 ! &.! &.! ! ! o , $ $ $ # $ ) ! ! S.! &.&.&.&.&.&.&.&.&.&.&.&.&.&.&.7+&.7+&.&.[ =.$ # $ E+$ $ # $ E+$ c { . -.. -.. . -.-.. 7 -.-.. -.7 -.D+. -.} % E+$ # E+$ # $ $ $ - G+7 G+-.G+G+G+G+G+G+G+G+G+G+G+G+A+]+G+]+G+]+G+C+]+y+w+H+]+C+]+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.< $ $ # $ $ $ E+$ # < x x x x x x x x x x x x x x x x x x x x x x Y # $ $ $ E+# $ $ E+$ x F.F.L.L.L.L.y.L.y.y.y.y.y.L.y.y.y.L.y.L.y.L.y.L.L.L.L.f $ $ # $ $ E+$ $ $ E+# Y y y y y y y y y y y y y y y y y y y y y y y L # $ E+$ $ y y y y x.x F.F.F.F.L.F.L.F.L.L.F.L.F.L.F.F.F.x e $ $ $ # $ $ $ E+e l l l l l l l x.x.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.x.F.x.Z $ $ $ $ $ E+$ # $ Q P P P P W l 4.y x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.4.H.4.L $ $ $ $ $ $ $ # $ # $ # $ L m d d P d P d d P d d X d X d X d X V L $ $ $ $ # $ $ # $ $ $ A.X P v.W b.b.H.H.H.H.H.H.H.H.H.H.H.H.H.b.H.b.b.# $ $ $ $ # $ E+$ $ R 2 z z 2 z z 2 z 2 z 2 z 2 2 2 3.2 2 3.2 3.2 9 9 o a E+$ $ ' 9 9 9 3.z z W.z M.W.M.M.W.M.5+W.5+W.W.W.W.@+W.`.W.a E+$ $ $ $ # $ $ $ a @ m.m.. :+-.:+-.:+. -.-.. 7 -.7 D+7 7 G+7 D+} $ $ $ $ $ $ $ E+$ % F+D+G+G+7 G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+A+]+A+]+y+C+C+]+A+y+H+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_..+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+0..+0..+0..+0..+0..+0.0.0.0.4.$ $ E+$ E+$ # $ $ < X G G G G G G G G G G G G 2 G 2 G v 2 v v v d d n $ E+$ $ $ E+$ $ $ n _ l _ l l G.v.v.a.a.M.M.M.M.M.W.M.M.M.M.M.M.M.M.M.M.e.$ $ $ $ $ $ $ # $ $ f ] 9 9 9 9 9 9 9 9 9 l.9 l.9 l.9 l.9 l.9 l.9 l.9 l.A a $ # $ K j l.j l.l.z z `.z `.@+z @+`.z @+W.@+z W.z `.3.a $ E+$ $ $ # $ $ q 3 3 3 %.3 %.l.j l.l.l.`.`.`.`.`.`.`.++`.++`.l.`.l.++l.++l.l.l.#+$ E+$ # $ $ $ $ $ p 1 J 1 0 J J w.w.w.K l.l.l.l.w.l.w.w.K w.w.w.5.w.%.%.J S $ E+# $ E+# $ $ $ $ $ e ] w w w w w w w w w w w w w w w w w w w 1 w q $ # $ $ $ $ $ $ # $ C ( ^.%././.2.2.2.2.2.2.2.2.2.2.2.2./.u.2.u.u.#+$ E+$ # $ $ $ $ # q I I I I I I I I I I {.{.{.{.{.(.{.{.{.{ {.{ {.(.{.{.{.o f E+A {.{ { { {.(.(.(.(.(.(.z.z.(.(.z.(.(.z.z.(.(.(.z.,.$ $ $ # $ $ $ $ # e @ + . m.:+. -.. -.. :+. :+-.-.. -.. -.G+-.. G+G+- E+$ # $ E+$ $ # $ p G+D+G+G+G+G+G+G+G+G+G+G+G+]+G+G+]+G+]+G+w+w+A+]+]+y+C+]+H+G+H+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+d+$+d+d+$+d+$+$+$+$+$+$+$+d+$+-+$+c+O.c+U.=+U.=+U.*+P.=+=+*+=+P.*+P.*+P.P.P.P.P.P.,+q $ # $ $ $ $ $ $ $ z t N ( N N N 6 6 ~ 6 ~ i ~ i ~ | ~ ~ | ~ 9 9 2 2 _ e $ $ # $ $ $ # $ < X _ X X X z W.3.`.a+a+|+|+|+|+l.|+|+l.|+l.|+|+l.l.l.# $ # $ E+$ # $ $ E+f A J 0 5.0 5.0 5.0 5.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T f $ 0 0 0 0 0 J z.5.K 4+K 4+1+K 4+1+w.K w.4+5.5.5.J c # $ $ E+$ $ $ $ c {.I {.> {.> > 0 0 J J J J J J J J J J J J k.J k.k.J k.J 0 k.I p # $ $ $ # $ # $ # A &.; &.8 ; &.{.{.{.(.{.{.{.{.{.{.{.{.{.{.{ &.&.&.&.&.! T E+$ $ $ $ $ $ E+$ E+S s I t ^ t ^ t s t t t t I s j.s ^ [.[.H [.H [.0 f $ $ $ # $ E+$ $ $ $ k.H H H }.j.$.}.$.$.$.$.$.$.$.$.$.$.$.$.$.I S # $ $ $ # $ E+$ $ o 8 8 8 8 8 8 8 8 8 ! 8 8 8 8 8 ! ! ! ! 8 ! 8 ! ! ! ! ! ! { C =.! S.! S.! [ [ &.&.&.&.&.&.&.&.&.&.&.[ [ &.[ [ [ < $ E+$ $ # $ E+$ f } + m.m.+ . m.. :+-.:+-.-.. -.. -.7 -.G+. 7 -.7 . G+< $ $ $ $ # $ $ $ C G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+A+]+A+w+A+]+H+y+]+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+d+d+$+$+d+$+d+$+d+$+d+$+d+$+$+d+$+$+d+O.$+O.O.=+O.=+O.=+g.=+g.=+g.U.Q.g.P.=+P.P.P.M.$ $ $ $ # $ # $ # S t N t N N N 6 N 6 N 6 6 6 6 6 i ~ | ~ j ~ 9 9 2 2 ' B $ # $ $ $ E+$ $ # ' 2 2 z z 3.3.3.3.|+l.|+|+|+l.|+|+l.|+l.|+l.l.l.1+f.$ E+$ $ # $ $ $ E+$ f.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 / ) S (./ (.(./ 0 J 5.5.5.K w.K w.w.w.K w.K K w.5.J k.c $ $ $ # $ $ # $ q > {.> {.{.{.{.(.(.k.0 5.2+5.z.2+2+5.k.2+k.2+k.z.k.z.k.z.k.(.(.A $ $ # $ $ $ $ $ $ A ; 8 [ ; &.8 { {.{ {.{.(.{ {.3+{ {.{ &.&.&.&.&.&.! S.! T $ $ $ # E+$ # $ $ =.H I s ^ }.^ t s I ^ t H ^ s j.s H [.H s H s [.H H o E+$ E+$ $ # $ $ # $ o H [.H j.}.I }.$.J.$.J.$.k.$.k.$.$.$.I k.I r $ $ # $ $ $ $ $ E+A 8 8 8 8 8 8 ! 8 ! 8 8 ! 8 ! ! 8 8 ! 1.! 1.! ! ! ! ! ! S.! ! + ! ! ! ! S.! [ &.[ &.&.&.&.&.&.7+&.7+&.&.[ &.S.o $ # $ $ E+$ $ $ $ T + + :++ . m.:+. -.. -.. 7 -.. -.. -.7 -.7 D+7 D+G+D+p E+# $ E+$ $ E+$ # [ C+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+]+C+]+G+w+C+]+H+A+H+C+w+C+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+$+$+b+$+b+$+b+$+$+;+$+d+$+d+$+d+O.d+-+$+-+-+-+O.-+-+-+-+-+O.Q.=+Q.Q.=+=+Q.Q.7.Q.7.r $ $ E+$ $ $ $ $ f w M }.5 t t t t t t ( 6 6 6 6 6 6 6 ~ O ~ j | 9 2 2 ' ' # $ $ # $ $ $ # $ S 2 2 2 2 3.3.u.|+|+u.|+|+l.1+1+l.1+1+1+1+1+l.1+1+e E+$ $ # $ $ E+$ $ q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (.0 / 0 (.(.(./ (.0 0 5.5.5.5.4+5.4+5.4+5.5.5.w.5.5.J k.c $ # $ $ $ E+$ $ , {.{.{.{.{ ^ (.(.(.0 k.k.5.k.k.J z.k.z.J z.k.z.k.(.k.z.(.(.(.(.A $ $ $ $ E+$ # $ E+) 8 &.8 &.! &.&.&.{.{ {.{ {.{.{ {.&.&.&.&.&.&.&.&.&.! ! T $ # $ $ $ $ $ $ # s ^ s I H ^ }.s I s }.^ }.s H s H j.s H j.H H H H [.s < $ # $ $ $ $ E+$ $ C ..H H j.^ j.I j.$.j.$.$.$.$.$.$.k.$.k.I I c $ $ $ $ E+$ # $ $ A 8 8 8 8 8 8 8 8 8 8 8 8 ! 8 8 ! ! 1.! ! ! S.! S.! ! S.! ! S.! ! S.! m.! ! &.&.&.&.&.&.&.7+&.&.&.S.[ <+7+[ [ , $ $ $ # $ $ # $ e + m.m.+ :++ :+. m.. :+-.. -.:+-.. -.7 -.. G+-.7 -.7 7 F+$ $ $ $ $ # $ $ $ ) D+G+C+G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+G+G+H+G+y+C+w+H+]+y+C+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"9+b+d+$+b+d+$+$+;+$+$+;+$+$+d+O.$+$+$+d+O.O.-+-+-+O.=+O.=+g.=+=+g.g.P.g.P.P.P.P.P.R.$ # $ $ # $ E+# $ S t t 5 <.t N t N 6 N 6 N 6 6 6 6 6 ~ 6 ~ j | 9 9 2 2 ' _ q # $ $ E+# $ $ $ L z 2 2 9 3.l.3.|+u.|+u.1+u.1+l.1+l.|+l.1+|+1+l._.$ $ # $ $ $ $ # $ $ p / 0 0 / 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (.0 / (.(.0 (./ 0 (.> (.0 J 5.5.5.w.w.K w.5.K w.4+5.5.5.J 0 q $ $ E+$ # $ $ E+q { ^ { {.{.{ {.I (.0 z.J k.5.z.k.J 5.k.k.k.z.k.z.k.0 k.0 k.(.(.A $ E+# $ $ $ $ E+$ A ! &.; ! 8 8 { &.{.{.3+{.3+{.{.&.{.&.&.&.&.&.&.[ S.[ S.T $ $ E+$ # $ E+$ $ j.^ H s t [.^ t ^ t s ^ s I [.I s H H s H [.[.H H H H R $ $ $ # $ $ $ # $ f H H H H }.j.$.}.$.$.$.$.$.$.$.$.$.j.$.I $.q $ E+$ # $ $ $ E+$ ) 8 8 8 8 8 8 8 8 ! 8 ! 8 8 ! ! 8 ! ! ! 1.! 8 ! ! ! ! ! ! ! ! ! ! ! ! ! S.! &.[ &.&.7+&.&.&.7+<+7+&.7+&.&.S.} $ E+$ $ $ $ $ $ $ o + + + :++ :++ :+-.:+. :+-.. -.. -.-.. -.7 7 G+-.7 D+G+. C # $ # $ $ $ # $ >.C+7 G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+A+]+w+G+C+]+]+C+y+C+]+y+C+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"A b+$+;+d+$+;+$+$+$+$+$+$+O.$+$+$+-+-+-+-+-+-+O.=+=+=+Q.=+Q.P.g.=+=+=+P.Q.P.7.P.7.T.$ $ $ $ $ $ $ $ $ /.M <.N t N N N 6 N 6 6 6 6 6 6 i ~ i j | ~ 9 ~ 2 2 _ ' ' B $ E+$ $ $ $ # $ e z 2 9 9 9 3.u.|+u.|+|+|+l.|+|+|+|+l.1+|+l.l.1+;.# $ $ # $ E+$ $ # e J 0 0 J 0 J 0 J 0 J 0 J 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (.0 0 / 0 > 0 0 / (.0 0 5.%.5.w.K w.4+K w.4+K w.w.w.5.5.J c $ $ $ $ $ # $ $ c {.{.{.> {.^ (.0 (.k.J 2+5.k.5.5.2+2+J z.2+k.J k.z.2+0 z.0 (.(.A $ $ $ E+$ # $ $ $ A &.; &.8 &.&.&.{.{ {.(.{ {.{ &.{.&.&.&.&.&.&.&.&.&.! ! T $ # $ $ $ $ $ E+$ }.H t j.^ t t s }.^ s }.I s s [.j.s [.j.s H s [.s H [.K $ E+$ $ $ # $ $ # $ =.H H H H t j.$.$.}.$.k.$.k.$.$.$.$.$.$.I c # $ $ $ $ # $ $ $ ;.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1.8 ! ! ! ! 1.! 1.! ! ! ! S.! ! S.! S.! [ [ &.&.&.&.&.&.<+&.&.&.&.<+[ &.[ R $ $ # $ E+$ # $ % @ m.+ :++ m.. -.+ . -.-.-.7 -.. -.-.7 -.7 -.-.7 . D+7 G+G+,.$ $ $ $ E+$ $ # , G+G+C+]+G+G+7 G+G+G+G+G+C+G+G+A+G+G+A+w+C+w+A+y+]+H+]+A+]+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"A d+;+$+$+d+$+-+$+-+-+O.-+$+-+-+-+-+=+c+O.=+=+=+=+=+P.=+P.P.P.P.P.P.7.P.P.P.P.P.i.n.# $ # $ # $ E+$ q t N N t N N N 6 N 6 6 6 6 i O O | j | j | 9 9 2 2 2 _ ' ' Q $ $ $ # $ E+$ $ $ z 2 2 9 3.u.3.u.3.|+u.|+|+l.|+l.l.|+l.l.l.|+l.e $ E+$ $ $ $ $ E+$ R 0 0 J 0 J 0 J 0 J 0 0 0 0 0 J 0 J J J J J J 0 0 0 0 0 0 0 0 0 0 0 (.0 / (.0 0 J 5.5.K w.w.4+K K w.K w.w.w.5.w.J 5.q $ # $ E+$ $ $ $ q {.> > > {.{ (.I 0 J 2+5.5.5.5.2+J z.5.2+J 2+z.2+J k.5.k.k.0 (.9+$ $ # $ $ $ $ # $ ) &.; &.; &.8 ; { 3+{.{ {.{.3+{.{ {.&.&.&.&.&.&.[ ! S.! T # $ $ $ E+$ # $ $ H ^ }.^ s I s t ^ t }.^ s j.t H s [.I s H }.H s H H s H a $ $ # E+$ $ $ $ $ o H H H j.I }.$.j.J.$.^.$.$.$.k.$.k.$.k.I r $ $ # $ E+$ $ # $ < 8 8 8 &.8 8 8 8 8 8 8 8 8 8 8 &.8 &.8 1.8 ! ! ! ! ! S.! S.! ! ! ! ! S.! [ &.&.[ &.&.&.&.&.7+&.7+&.7+&.[ S.C E+$ $ $ # $ $ $ b + . + + :++ m.+ :+. m.. :+. -.:+-.. -.-.-.-.7 -.G+-.G+7 D+=.# E+$ # $ $ E+$ f C+7 G+G+G+G+G+G+G+G+G+G+G+G+C+G+w+C+G+]+G+A+]+C+y+C+y+]+y+C+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"A b+d+d+-+-+-+-+-+-+-+-+=+-+=+=+=+=+=+=+=+=+=+=+P.P.P.P.P.P.P.P.,+i.i.,+i.,+i.,+i.< $ $ $ $ $ $ $ # S N N N N N 6 6 6 i 6 i O i j | j G G G G 2 G 2 2 2 2 _ ' ' ' $ # $ $ $ $ $ # $ _ 2 2 9 9 u.u.|+|+|+l.l.|+|+l.|+|+l.|+l.l.l.l.$ $ $ # $ # $ # $ $ =.0 J J J 0 J 0 J 0 J J J J J J 5.K 5.K 5.5.5.5.J J J 0 0 0 0 0 / 0 / 0 (.0 0 J 5.5.w.w.K 4+K w.1+K w.K w.K w.5.5.J c $ $ $ $ # $ # $ c > {.{.{.> I I (.0 k.J 2+J 5.k.5.5.k.5.k.5.k.J J 2+J k.z.k.(.(.A $ E+$ $ # $ E+$ $ A ; 8 &.8 &.; &.{.{.{ (.3+{ {.{ 3+&.&.&.&.&.&.&.[ &.! S.T $ $ # $ # $ $ $ # I t ^ }.t t t ^ }.s t }.s t [.}.j.t }.}.t s [.H }.H j.[.B $ # $ $ $ # $ E+$ S H H H ^ j.I }.$.$.$.$.E.$.E.$.$.$.$.$.I S $ $ $ $ $ # $ $ $ E+r 8 ; 8 8 &.8 8 8 8 &.{.{.{.&.{.{.&.&.&.&.8 &.8 ! ! ! ! ! ! S.! ! ! ! &.&.&.&.&.&.&.&.7+&.&.&.&.&.&.7+&.&.% $ $ E+$ $ $ E+$ o m.m.m.+ + :++ :++ :+. :+-.m.:+-.m.-.:+. -.. -.7 -.7 . G+G+* $ $ $ $ $ # $ $ E+G+G+C+C+G+G+G+G+G+G+G+G+G+]+G+w+G+G+G+A+]+]+A+]+]+y+]+C+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"9+x.F.F.F.F.F.F.F.F.F.F.F.F.F.x.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.x.F.$ $ E+$ E+# $ $ $ Q W W W W W W W W W W W l l y x.y x.y x.x x.x x x x x x Q y y $ $ $ # $ # $ $ $ Y l l W l l x.x.x.x.x.F.x.F.x.x.x.F.x.x.x.x.N.# $ $ $ $ $ $ $ $ e P P P P P P P P P P P P P P b.b.l b.b.b.b.l b.b.b.W G.P P P X P X P X P X P P G.b.b.H.H.H.4.x.4.x.H.x.H.H.H.H.H.b.b.a $ E+$ $ $ $ $ # a X X X X z X X P G.G.b.b.H.b.H.b.H.b.b.H.b.b.b.b.b.b.b.b.G.G.P A.$ $ # $ $ $ $ # $ ' z 2 2 z 2 z z X M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.W.W.z z B # $ $ $ $ $ # $ $ 3.2 2 2 2 3.2 2 2 2 3.2 2 3.X 2 t.X t.z t.z v 3.2 3.9 9 f.$ $ $ E+$ $ $ $ # a 9 9 9 9 3.2 W.X W.W.a.X a.X a.W.X X X W. +$ # $ # $ $ $ E+$ $ $ q ++9 j j j l.j l.9 l.9 3.3.l.9 l.3.l.l.l.l.l./.K 3 w.3 %.3 3 w.w.K w.l.l.l.l.l.++l.++l.++l.l.l.l.1+l._.$ E+$ $ # $ $ # E+} + + :++ :++ . + :++ :+-.. m.+ :+m.m.-.m.-.-.-.-.-.-.G+. G+G+$ E+$ # $ $ $ E+$ } C+G+7 C+G+G+G+G+G+G+G+G+G+G+A+]+A+]+G+A+G+]+A+C+]+y+H+A+H+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.d.$ $ $ $ $ $ # $ $ y y y y y y y y y y y y x x F.F.F.F.L.F.F.F.F.F.F.F.x x x x y $ E+$ $ $ $ $ E+$ Z y y y y y x.x F.F.F.F.L.F.L.F.L.F.F.L.F.F.L $ # $ E+$ # $ E+$ L l l l l l l l l l l l l y y y x.x.x.x.x x.x.x x.x.x.y y H.m l l l l l l l l H.y y x.x.x.F.x.F.x.F.x.F.x.F.F.x.x.x.y e $ $ # $ # $ $ $ e P P _ P P P W b.4.H.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.4.H.b.B.# $ $ E+$ # $ $ $ T.X X X z X X P P G.b.b.H.H.H.b.H.b.H.b.b.b.G.b.b.G.G.a.n.$ $ E+$ E+$ $ $ $ X X X X X v X V X v X V a.a.a.a.P a.P a.P a.a.a.X X X v ' $ # $ $ # $ # $ $ a 2 z 2 2 X X a.a.a.v.v.G.v.G.G.v.G.G.a.a.X f $ $ $ $ $ # $ $ # $ # # B z 9 9 9 3.z z X z W.z X z W.z z z z z 3.z 3.3.9 l.9 l.l.9 l.3.2 ++z `.`.z `.`.`.`.`.`.`.`.`.`.l.f.$ $ # $ $ E+$ $ $ + :+m.+ :++ + m.m.. m.. m.m.m.m.-.m.m.m.-.m.:+-.:+-.. -.-.7 D+# $ $ $ $ E+$ $ E+=.G+G+C+G+G+]+G+G+G+G+G+G+G+]+G+G+G+G+G+]+G+C+y+]+y+C+]+]+A+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+f+e+f+e+f+e+=+e+=+e+e+=+e+e+e+e+e+e+e+P.e+*+,+e+,+P.,+,+,+,+,+,+,+X.,+X.,+X.8.e.$ # $ # E+$ $ $ # a q q q q q q q q q q a a a a a a a a a a a a a a a e < < e e $ $ # $ E+$ # $ $ ' 2 9 j O /.2.u.u.u.u.|+1+1+1+|+1+|+l.1+1+|+n.$ $ $ # $ $ $ $ $ R 0 / 0 / 0 0 / 0 / 0 0 J 5.w.4+K K K l.1+1+K 4+K K K 5.5.5.J 5.J 0 (.0 (.0 J J 5.}+5.K w.K w.K w.4+w.5.w.w.5.w.w.J k.q $ E+$ $ $ $ # $ , > ; ^ ; > ; { 0 I k.0 z.2+k.2+k.2+k.2+2+k.z.k.z.(.2+(.(.(.k.(.A $ $ $ $ $ $ $ $ E+A ; ; [ ; ! [ &.&.{.{ {.{.{.&.{.&.&.&.&.&.&.&.&.[ S.! + T $ # $ $ # $ $ # $ H t s t s t t s s t t }.t t t <.N <.<.^.}.N t }.t }.[.H [.$ $ $ $ $ $ $ $ E+$ H [.[.H H H j.I $.$.$.$.$.$.$.$.$.$.I I I r E+$ # $ E+$ $ # $ $ $ $ $ $ C o } ; {.{.{.I {.(.{.(.{.{.{.{.{.{.&.&.&.{ &.&.&.&.8 &.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.T # $ $ $ # $ $ # $ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , $ $ # $ # $ $ $ # ) C+C+G+G+]+G+G+G+G+G+G+G+G+G+G+A+w+C+]+A+A+]+]+y+C+]+H+A+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.e+'+'+'+'+'+'+'+!+'+!+!+!+!+!+!+!+!+,+!+,+!+,+,+,+,+R.R.,+Y.R.Y.8.Y.R.Y.R.R.R.n.$ $ $ $ $ $ E+$ $ E+$ $ $ $ $ $ $ $ $ $ $ # $ # $ # $ # $ $ $ $ $ $ $ $ # $ $ $ # $ $ $ $ # $ $ # ' 9 9 3 /.%./.w._+w.1+u.1+u.1+1+1+1+1+1+1+w.c $ $ $ $ $ E+# $ # p I 0 I (.0 0 (.0 (.0 J 5.K w.K w.1+K 4+K K 4+w.w.K w.5.w.5.5.5.J 5.J 0 J 5.k.5.5.5.5.5.5.5.5.5.5.5.w.5.w.5.5.5.5.J 0 c $ $ $ # $ $ $ $ , {.{.{ {.{.{.I (.(.0 k.k.J z.k.z.k.z.z.k.(.k.z.k.z.(.k.z.k.(.(.A $ E+$ # $ E+# $ $ ) ! &.! &.! &.[ { &.&.&.{ &.&.&.&.&.&.&.S.[ S.S.S.! S.m.T $ $ $ # $ $ E+$ $ [.H I H I ^ [.I t }.}.t }.}.J.N J.^.J.^.<.^.J.}.}.}.}.[.H $ E+$ # $ E+$ # $ $ H H H H H j.^ }.I }.$.$.$.k.$.$.k.I I I I K $ $ $ $ $ $ E+$ $ E+$ # $ E+$ $ $ f C S A 5.{.{.{.{.{.(.{.{.{.&.{.{.&.&.&.{ 8 &.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.&.7+&.[ S.[ C $ $ E+$ $ $ # $ $ E+$ $ $ $ $ $ $ # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ E+$ # $ E+$ E+$ $ $ $ # $ $ } G+G+]+C+G+G+G+G+G+G+G+G+]+G+]+G+G+G+G+]+G+C+w+C+]+y+A+]+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"9+!+!+e+!+!+'+'+!+'+!+!+!+!+!+!+!+,+!+!+,+K.,+R.R.R.R.,+R.R.R.R.R.R.R.Z.2.Z.R.R.q $ E+$ # $ # $ $ # $ $ $ $ $ $ $ $ $ $ # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # $ $ $ # $ $ $ $ E+$ ' 9 j 3 w %.%.%.K._+w.w.1+w.w.w.w.w.1+w.w.w.a E+$ # $ $ $ $ $ $ K (.I 0 I (.I 0 I 0 0 5.5.K 4+K w.4+w.K 4+w.K 4+w.5.5.w.5.5.5.5.5.J 5.2+z.J 5.J 5.5.5.5.5.w.5.w.5.5.5.5.5.w.5.5.J k.(.c $ # $ $ E+$ # $ c ; {.{ {.{ { {.(.(.(.(.z.k.z.0 k.z.k.(.z.z.(.(.(.k.(.(.(.(.(.(.A $ $ $ $ $ $ $ # $ A ! ! ! ! ! ! &.&.&.&.&.&.&.&.&.&.[ &.S.[ ! [ ! S.S.+ m.T # $ $ $ $ $ $ # $ H [.s t [.t s s j.t }.^.<.^.J.J.J.<.N J.^.}.^.}.}.}.I j.H q $ $ $ $ # $ $ $ # H H H H H H j.I j.$.$.$.$.$.$.$.$.$.I I I ^ S E+$ # $ # $ $ # $ $ $ $ $ # $ $ $ # $ $ $ < C S A 5.{.{.{.{.{.{.&.{.{.&.&.&.&.&.{ &.&.&.&.&.&.{ &.&.&.&.&.7+&.&.[ &.7+S., $ # $ $ E+$ $ $ $ $ # $ # $ # $ $ $ $ # $ # $ # $ # $ # $ # $ # $ E+$ $ $ $ $ $ # $ $ # $ $ $ E+$ ) C+G+G+G+C+]+G+G+G+G+G+G+G+G+A+]+A+]+A+G+]+y+C+]+A+]+H+A+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+!+!+!+l+!+!+!+!+!+!+!+!+!+!+K.k+!+k+R.k+R.R.k+R.(+R.(+(+Y.(+Z.Z.(+Z.Z.Z.u.Z.u.q $ $ $ $ $ $ E+$ $ E+$ # $ # $ # $ # $ $ $ E+$ # $ # $ $ # $ # $ # $ # $ # $ $ $ E+$ $ # $ E+$ $ $ o 9 9 j %.w E.E.%.w._+w.w.w.1+w._+w.w.w.w.w.% $ $ $ E+$ # $ # $ (./ (.I (./ (./ (.0 J 5.5.w.K 4+K 4+K 4+4+4+w.K 4+w.4+5.w.5.%.5.5.5.J 5.J 5.J 5.J 5.%.5.5.5.5.5.5.w.J w.5.5.5.2+5.J 0 q $ $ $ # $ $ $ $ q {.{.; {.; {.{ {.(.(.0 (.z.k.k.z.(.k.0 k.z.k.z.k.z.(.k.(.(.(.(.A # $ # E+$ # $ $ $ ) ! &.! [ ! [ ! &.&.&.&.&.&.&.&.[ &.S.[ &.S.S.S.+ S.m.+ T $ # $ E+$ # $ $ $ H H I [.^ [.^ }.t }.}.}.J.J.N J.^.J.J.^.^.^.J.J.$.}.}.}.[., $ # E+$ $ $ E+$ $ K H H H H H ^ j.j.j.$.$.$.$.$.$.$.I I I I {.; a $ $ $ $ E+$ $ $ E+$ # $ $ $ # $ $ E+$ E+$ $ $ $ $ < r o 5.{.{.{.{.&.&.{.&.&.&.&.{ &.&.&.&.&.&.&.&.&.&.&.&.7+&.<+[ S.[ , $ $ # $ $ $ E+$ # $ $ $ $ $ $ # $ E+$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # $ # $ E+$ $ E+$ $ $ # $ $ $ } G+C+7 C+G+G+C+G+]+G+G+G+G+]+G+G+G+A+G+H+G+A+w+C+H+y+C+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+!+k+!+!+,+^+!+,+K.,+R.k+R.(+k+R.(+R.k+(+(+(+Y.(+Y.(+Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.Z.3.Z.a $ $ # E+$ # $ $ # $ $ $ $ $ $ $ $ $ $ $ # $ $ $ $ $ $ # $ $ $ $ $ $ $ $ $ $ # $ $ $ E+$ $ $ $ E+$ ' 9 j 3 %.^.%.E.w._+/.1+1+_+w.1+1+1+w.1+w.w.$ $ $ # $ $ $ $ $ $ / (./ (./ 0 (.I 0 J 5.K w.K 1+K 1+K 1+1+K w.K 4+4+K w.K w.w.w.5.w.5.5.5.5.5.5.5.5.5.5.5.w.5.w.5.w.5.5.5.%.5.w.5.J k.0 c $ $ E+$ $ $ E+$ , { { {.{ {.; {.> (.(.k.J k.k.z.k.k.z.k.z.k.(.k.z.(.k.(.(.(.(.3+A $ $ $ $ $ $ $ # $ ) 8 ! ! ! ! ! &.&.&.{ &.&.&.[ &.&.&.[ &.S.! S.! S.S.+ {+- $ $ $ # $ $ $ $ E+}.H }.^ [.t s }.t }.N ^.^.^.J.J.|.J.N ^.^.^.J.N J.}.$.}.H q $ $ $ $ $ # $ $ $ A H H H H H [.I }.$.$.$.$.$.$.$.$.$.$.I ^ {.H 0 e E+$ # $ $ $ # $ $ $ E+$ E+$ $ $ $ $ $ $ # $ E+$ E+$ $ $ C 8+{.{.{.{.&.{.{ &.{.&.{.&.{ &.{ 3+&.&.&.&.7+&.&.&.&.[ &.[ $ E+$ $ $ $ # $ $ $ $ E+$ # $ E+$ $ # $ $ # $ E+$ # $ E+$ # $ E+$ # $ $ $ $ $ $ $ # $ $ # E+$ $ # E+) D+G+C+G+G+C+7 G+G+G+G+]+G+G+A+]+A+]+G+]+A+]+C+y+]+C+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+!+!+!+k+K.k+R.k+,+R.k+R.Y.Y.Y.(+Y.(+Y.Z.n+Z.Z.Z.Z.Z.Z.Z.Z.a+Z.Z.3.3.3.3.3.Z.3.a E+$ $ $ $ $ $ # $ $ # $ E+$ # $ E+$ # $ $ $ # $ E+$ $ $ $ E+$ # $ E+$ # $ $ $ $ # $ $ $ # $ # $ $ ' 2 9 j %.%.E./.w./.1+w.u.1+1+1+1+1+1+w.w.w.$ # $ $ $ # $ E+$ # 0 0 I 0 0 I 0 0 J J w.w.K 1+K 1+l.K 1+K 1+1+1+w.K 1+w.4+K 4+K w.w.w.w.w.w.w.w.w.K w.K w.w.w.5.w.5.w.w.w.5.w.5.%.5.5.k.c $ # $ $ # $ $ $ , ^ ^ { > {.> (.(.I 0 k.z.k.z.J z.J J z.k.z.J z.k.k.z.k.k.(.(.(.A $ E+$ # $ E+$ $ $ A ! &.! [ ! [ &.[ &.&.&.{ &.&.&.[ &.! S.[ [ ! [ + ! :++ T $ E+$ $ $ E+# $ $ H t [.}.t H }.t }.N J.<.^.7.|.+.J.+.|.|.J.|.^.J.^.^.}.}.}.c $ # $ # $ $ $ # $ A H H H H ^ j.I t I $.$.k.$.$.k.$.k.I I I I H ; 0 q $ $ $ # $ $ $ # $ $ # $ $ # $ # $ # $ $ $ $ # $ $ E+$ # $ < 8+{ {.{.{ {.{.{ {.{ &.3+{.3+&.{ &.&.&.&.&.7+&.7+&.S.[ $ $ # $ # $ $ $ # $ E+$ $ $ $ $ $ # $ $ E+$ $ $ # $ $ $ # $ $ $ # $ $ E+$ # $ # $ $ $ # $ $ $ # $ $ } G+C+G+G+C+G+G+G+G+]+G+G+G+]+G+G+]+G+A+G+C+w+]+C+y+]+y+C+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"9+!+!+k+,+k+,+,+R.k+Y.R.Y.k+(+Y.n+Y.n+Z.Y.Z.n+Z.Z.Z.Z.Z.a+Z.Z.3..+a+.+a+.+3..+3.< $ # $ E+$ # $ $ $ $ $ $ # $ $ $ # $ $ E+# $ $ $ $ # $ E+$ # $ $ $ # $ $ E+$ E+$ $ $ # $ $ $ $ $ E+' 2 9 j /.w %.K._+/.u.1+1+u.1+u.1+u.l.1+1+w.$ $ E+# $ $ $ $ $ $ k.0 J 0 0 J / J J w.K 1+1+l.l.1+K 1+l.l.K l.4+1+1+K l.w.1+K 1+w.K w.K w.K w.K K w.K w.5.w.w.w.w.w.w.K w.w.5.w.5.5.5.J c $ $ E+$ $ # $ $ c { {.^ {.{ ^ > (.(.k.0 2+5.k.5.2+5.2+J 5.2+k.z.k.z.k.z.0 k.(.(.p $ $ $ $ $ # $ E+$ ) 8 ! 8 ! ! ! &.&.&.{ &.&.&.&.&.&.[ &.! S.[ S.S.S.m.S.m.- $ $ # $ $ $ $ # $ [.j.^ s t s t }.t ^.^.|.|.^.7.|.|.J.|.|.|.|.J.^.N J.$.}.}.q $ $ $ $ E+$ $ $ # A H H H H H ^ j.$.$.$.$.^.k.w $.$.$.$.$.I I ^ H H ; R f $ $ E+$ $ $ E+$ $ $ $ $ $ $ $ $ E+$ # $ $ $ $ $ $ $ $ E+$ C z.{.{.3+&.{.{ 3+&.3+&.{ &.3+&.{ &.&.&.&.&.&.[ &.S.$ $ $ $ $ E+$ $ $ $ $ # $ E+$ # $ $ $ $ $ # $ $ $ $ # $ $ $ # $ $ $ $ # $ $ $ $ E+$ $ $ $ E+$ $ $ $ ) C+G+7 C+G+C+G+C+G+G+G+G+C+G+G+A+G+]+]+G+w+A+H+]+C+y+]+H+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.F.< $ $ # $ $ $ $ $ # L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L Q y y l y l y x.x F.F.F.F.F.F.L.F.F.F.F.F.F.# $ $ $ E+$ # $ # $ l l l l l l l m y x.x.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.x.F.F.x.F.F.x.F.x.F.x.F.x.F.x.x.x.y e # $ $ # $ $ # $ a P P P P P P P l 4.H.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.4.H.b.B.# $ # E+$ $ $ $ # A.X X X X X X P P G.b.b.b.b.H.b.b.b.b.b.b.b.b.b.G.G.M.P n.# $ $ E+$ # $ $ $ X X X X X X X P v.v.v.b.v.H.v.H.v.H.v.b.v.H.v.b.v.v.v.a.a.a $ E+$ # $ $ E+$ $ 6.2 2 z 2 2 X X a.a.G.v.G.v.G.v.G.G.M.a.a.X z 2 2 2 2 z B f $ $ # $ $ # $ # $ # $ E+$ # $ $ $ $ $ E+$ # $ # $ $ # $ % 6.`.z `.z W.z W.z `.W.z W.`.`.`.`.`.`.`.`.`.++l.$ # E+$ # $ $ E+$ # T T - T - T T - T - - T T - - T - T - - T - - - - - - - - - - - - - - - - - - - @ G+G+C+G+]+G+G+G+]+G+G+G+G+G+G+]+A+G+A+]+A+]+G+y+]+C+H+G+H+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"@+F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.x.x.e # $ $ $ # $ E+$ $ W W W W l W W l k l W l W W l W l k l k l k l l l l l y x y y y y y y y l y l l l l W W W W W l H.x.x.x.x.F.x.x.x.x.x.x.x.H.$ $ # $ $ $ $ $ $ E+P P P P P P P P b.H.4.x.4.x.x.x.x.x.x.x.x.x.x.x.4.x.x.4.x.H.x.4.x.H.4.H.4.H.H.H.H.x.4.H.x.H.H.x.H.4.H.H.H.H.H.H.H.b.G.a $ $ $ $ $ E+$ $ a X z z z z z X M.a.b.G.b.b.H.b.b.b.b.b.G.b.G.b.G.G.G.G.G.G.G.P T.$ $ $ $ $ # $ E+$ ' 2 2 2 2 2 2 z z X X M.M.M.M.M.M.M.M.M.M.W.M.W.X W.z z B $ $ # $ $ $ $ # $ 2 3.2 2 G 2 2 t.X a.a.v.v.v.v.v.v.v.v.v.v.v.a.v.a.a.a.X z a $ # $ $ $ $ # $ $ 9 9 3.9 9 9 3.3.z X X X X a.X a.X X X X z z 3.9 l.j l.9 j 9 R C $ $ $ $ $ $ $ $ $ # $ $ $ # $ # $ # $ $ $ $ E+$ $ $ $ # _.l.l.`.l.++l.++`.++++l.++++++l.++l.l.l.l.l.K $ $ $ $ $ $ $ # $ $ m.. m.+ m.+ . m.. m.+ + -.. m.. -.. -.-.. -.7 -.. -.7 -.7 D+7 D+G+G+G+G+G+G+G+G+G+G+C+G+G+C+G+C+G+G+G+G+G+G+A+]+G+G+]+G+G+]+A+H+]+C+y+w+H+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"A f+f+f+e+e+e+e+e+e+e+e+e+!+e+!+e+,+,+,+,+,+,+,+,+,+Y.,+Y.Y.Y.Y.Y.Y.Y.Y.Y.8.Y.8.a $ $ E+$ $ $ # $ $ w O O O i w O O j O j O ~ j O j j j j j j j j 9 9 2 2 _ ' ' _ _ _ _ _ P _ X z 2 2 9 9 j w w E./.K./._+_+u._+1+|+1+|+1+w.w.J f $ $ $ # $ E+# $ $ I / I I > I I J J %.w.w.w.4+w.4+w.4+4+4+K 4+4+4+w.4+w.w.w.4+w.w.w.w.w.w.w.w.K w.w.5.w.w.5.5.w.5.w.w.w.w.w.w.5.%.5.J 0 q $ $ # $ $ $ $ # c ; > ^ > ; {.> (.0 (.0 k.z.k.2+z.2+z.2+z.k.z.k.z.k.z.k.(.(.(.(.A $ E+$ # $ $ $ $ $ ) [ [ + [ m.[ [ &.&.7+&.&.&.! S.! S.S.+ S.+ m.+ m.m.. :+- $ $ $ $ # $ E+$ $ [.s }.[.}.[.}.t }.<.<.<.J.7.7.7.7.|.<.J.|.<.|.J.^.J.}.}.}.e E+$ $ E+$ # $ $ E+H H H H H H H I }.$.$.$.E.$.k.$.$.$.$.$.I I I {.; H ; ; H ; ^ ^ H A ;., $ # $ E+$ $ $ E+$ $ $ $ $ $ $ E+$ # $ # $ # $ # < 0 { &.{ {.{.{.{ &.{.{ {.&.&.&.&.&.&.&.[ S.[ < E+# $ E+$ # $ $ E+. m.. m.. m.m.. m.. :+. m.:+. -.:+-.. -.-.7 -.7 G+7 -.7 D+7 G+D+7 G+7 G+7 C+7 C+G+C+G+]+C+G+]+G+G+G+C+G+]+G+G+G+A+]+A+]+A+C+]+w+C+y+]+C+y+]+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"A ;+f+f+f+'+f+'+f+'+'+'+'+'+'+!+'+e+'+e+e+!+e+!+,+,+!+,+!+,+!+,+,+8.,+8.,+8.|.!+q $ $ $ # $ $ $ $ # ] N ^.w ^.w w w w 6 w w w ~ w ~ w ~ w j ~ j j j 9 9 2 _ ' _ _ _ _ _ X _ z z z 2 2 9 j 3 w w E.E.%.}+w.w.w.w.w.w.1+w.w.w.w.J c $ # $ $ $ $ $ # $ K I (./ (./ (.J 5.5.K w.K w.w.K w.K w.K 4+w.w.K w.w.5.w.w.K w.w.5.4+K w.5.K 5.w.5.5.5.5.w.5.5.w.5.5.5.5.5.5.5.5.J k.(.c $ $ $ E+# $ $ $ c {.{ {.&.{.; {.I (.(.0 0 J z.k.(.(.(.(.z.(.z.(.z.(.(.z.(.(.(.(.A $ $ $ $ E+$ # $ # ) ! ! [ + ! ! ! [ [ 8 [ [ [ &.[ S.[ S.S.S.S.m.m.m.m.m.. T # $ E+$ $ $ $ $ # j.^ [.^ [.s }.}.t J.J.|.J.^.^.J.^.|.|.^.^.J.J.^.J.^.}.}.}.$ $ # $ $ $ $ $ $ $ H H H H H H ^ I I }.$.$.$.$.$.k.w k.$.$.I I I ^ H ^ H {.; H ; H ; ; ; H ; A R r , $ # $ $ # $ E+# $ $ # $ $ $ $ $ $ $ $ $ ;.&.&.&.{ &.&.&.{ &.&.&.&.&.&.&.7+&.[ [ [ S., $ $ $ # $ $ $ $ $ { m.m.. m.. m.+ :++ m.+ . m.:+. -.. -.. -.. 7 -.7 -.7 G+7 G+7 D+G+7 G+G+G+G+G+7 G+7 G+G+G+]+G+G+G+G+G+G+G+G+]+G+G+G+G+G+]+A+A+]+y+C+H+]+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+;+f+;+f+;+;+f+;+-+f+-+-+-+f+-+f+'+-+f+'+-+Q.Q.Q.Q.Q.'+Q.!+7.!+!+!+7.!+!+!+J.7.r $ # $ $ # $ E+$ $ 5+t t }.t t t t t ( t ( ( 6 6 ( 6 w 6 w w ~ ~ j ~ 9 9 ] ' ] _ _ _ X _ z _ z z 2 9 9 j 3 %.$.E.E.E.E.w.}+_+w._+w.w.w.w.}+5.2+q $ $ $ E+$ E+$ $ $ A I I (.I (./ k.J 5.5.5.w.4+w.w.w.w.4+w.w.5.w.5.w.5.w.5.5.w.5.5.5.5.5.5.5.w.5.5.5.5.%.5.5.5.5.5.J 2+J 5.J 5.5.k.(.0 (.q $ # $ $ $ $ E+$ q &.; { ; { {.{ {.(.(.(.z.(.0 z.k.z.k.z.k.(.k.(.(.(.(.(.(.(.3+{ A # $ # $ $ $ $ $ $ ) ! ! ! S.+ ! S.! [ [ [ &.[ S.[ S.! S.! m.+ S.+ :++ :+. - $ $ $ # E+$ # $ $ [.[.t [.[.H H }.}.<.<.J.<.|.<.|.J.J.<.J.^.J.^.J.^.}.J.$.%.E+$ $ $ # $ # $ E+q H H H H H H H H j.I $.$.$.$.$.$.$.$.$.$.$.I I I {.H ; ; ^ H H ; H ; {.; 8 ; ; ; 8 ; =.o r < $ $ $ E+$ $ $ # $ E+$ # $ E+$ $ } 8 &.&.&.&.&.&.{ &.&.&.&.7+&.&.&.<+&.[ ! , $ E+$ $ # $ E+$ # ) + . m.m.m.. m.. m.. :++ . -.-.:+-.:+. -.7 -.G+. G+7 7 -.. G+7 G+G+C+7 G+7 C+G+C+D+]+C+G+C+G+C+G+G+G+G+G+G+G+A+]+A+]+A+]+A+]+A+]+]+A+y+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+d+;+d+;+;+;+;+;+;+;+;+;+;+-+;+-+-+-+f+-+-+f+-+-+-+=+Q.P.Q.Q.!+Q.!+7.!+7.7.<.Q.S $ $ $ E+$ $ # $ $ S t }.M t }.t t t t t t N t t ( 6 ( 6 6 6 w ~ ~ j 9 2 2 ' _ _ _ X _ _ X z z z 2 2 9 j 3 w w E.E.E.E._+}+w.}+w.w.}+w.}+5.}+%.r $ E+$ # $ $ $ E+$ o (.> I > I (.0 J 5.5.w.w.w.w.w.5.w.5.w.5.w.5.w.w.5.w.5.w.5.w.5.w.w.5.w.5.5.5.w.5.w.5.5.5.%.5.J 2+5.5.5.2+J 2+J k.k.0 c E+$ $ E+$ # $ $ c ; { {.; {.; { (.(.(.k.0 k.k.(.0 k.z.(.(.z.(.(.(.(.z.(.(.(.(.3+A $ $ $ $ $ # $ # $ ) ! m.! + ! m.! ! S.! &.! S.[ ! [ m.S.m.m.m.m.:+m.:+. m.- $ # $ $ $ $ $ $ $ H H [.H s [.}.}.}.J.J.<.J.^.J.J.J.+.J.^.^.J.J.^.J.$.$.}.A $ $ # $ $ $ $ $ # C H H H H H H H I t I }.$.$.$.$.$.$.$.1 I $.I I j.^ ^ H H ; {.; H ; H ; ; {.; {.8 ; ; ; ; ; ! K o , $ $ # $ $ $ # $ $ $ $ # $ T ! &.&.&.&.&.&.&.&.&.&.&.&.&.&.[ &.[ [ S.>.$ $ $ $ $ $ # $ $ 8+. m.:+m.. :+. m.+ :++ + :+m.. -.. . -.-.7 -.7 7 -.7 -.7 G+7 D+7 D+7 G+G+G+G+G+7 G+C+G+G+G+G+7 G+G+]+G+G+G+G+]+G+G+G+]+G+]+A+]+H+A+H+]+C+y+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+;+d+d+d+d+;+d+d+;+d+-+-+;+-+-+-+-+-+-+-+-+-+-+Q.-+-+Q.=+=+Q.P.Q.P.Q.Q.Q.Q.Q. +$ # $ $ $ # $ $ # C M }.t }.5 }.t t N t N ( N ( N 6 N 6 6 6 6 ~ j j 9 9 _ ' ] _ _ _ _ z _ X _ 2 2 2 9 3 j %.%.E.%.w._+w.w.w.1+w.w.1+w.w.w.%.k.;.$ $ # $ $ # $ $ # b / (.I (.I 0 k.J 5.w.w.w.w.K 4+K w.w.w.K w.w.w.5.w.w.w.w.w.5.w.5.5.w.5.w.w.5.5.%.5.5.%.5.w.5.}+5.%.5.J 5.5.5.J 5.0 (.q $ $ # $ $ $ $ # c ; {.; {.{ {.{.> (.0 0 k.z.z.J z.z.0 k.z.k.z.k.z.z.k.(.(.(.(.{.p E+$ E+$ # $ $ $ $ ) ! ! ! ! S.! ! [ [ [ S.[ [ S.S.S.! S.+ S.m.:++ m.. :+. - $ $ $ E+$ # $ E+$ [.}.s j.j.s }.}.}.<.J.<.^.|.<.|.|.J.^.|.J.J.^.J.^.J.J.}.f.# $ $ $ E+$ # $ $ S H H H H H H H I j.$.$.$.$.k.w J $.J $.$.$.$.$.I I I {.^ {.^ ; ^ ^ {.; {.; ; ; ; {.; {.; 8 ; ; ; 8 K r $ $ E+$ $ $ E+# $ $ $ a [ ! &.&.&.&.&.{ &.&.&.&.&.7+&.&.[ <+[ S.T $ # $ # $ $ $ $ E+b m.m.. + m.m.:+. m.. m.. -.. :+. m.-.. . -.. G+-.7 G+7 D+7 G+7 D+G+G+G+7 C+7 C+G+C+G+]+C+G+C+G+G+G+G+G+G+]+G+A+G+]+A+]+A+G+]+y+C+]+y+C+w+H+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+d+d+d+d+;+$+$+$+$+$+$+$+d+$+-+d+-+-+-+-+-+-+-+-+=+Q.=+=+Q.Q.=+=+P.Q.P.P.7.Q.Q.z $ $ E+$ $ $ $ $ $ f M M M M }.5 <.t t t t N N N 6 ( 6 6 6 6 w ~ ~ j 9 9 2 ' ' _ _ _ _ _ _ X z _ 2 2 2 9 j /././.K./.w._+w.u.w.u.w.w.1+w.w.w.%._.# $ $ $ $ $ # $ $ e I / (./ I 0 J J w.w.w.w.w.w.K w.1+K w.w.K w.K w.K w.K w.K w.K w.w.K w.5.w.w.w.5.w.w.5.w.5.%.5.5.5.w.5.5.%.5.5.J k.0 c $ $ $ $ # $ $ $ , > {.{ {.; { {.(.(.0 (.0 J J 2+0 k.2+0 J z.0 z.k.(.(.z.(.(.(.{ A $ $ # $ $ E+$ # $ ) ! ! + ! + S.! [ ! &.[ &.[ [ S.! m.S.m.+ m.+ :+m.m.. :+- $ E+$ $ $ $ $ # $ [.j.[.s s j.s }.}.N J.J.|.J.|.7.|.+.J.|.^.|.J.^.J.^.$.}.C $ $ # $ $ $ $ $ # _.H H H ^ H ^ H t I $.$.$.$.w $.$.w J w J $.1 $./ I I ^ ^ ; H ^ {.; ^ ^ ^ {.^ {.; ; H ; { ; {.; ; ; ; ; o $ $ # $ $ $ $ $ # $ $ > [ ! &.&.&.&.&.{ &.&.&.&.&.&.&.&.[ [ S.) $ $ $ $ E+$ # $ $ < -.:+m.:+. . m.m.. m.. m.. m.-.. :+. -.-.7 -.7 G+. -.7 G+G+. G+G+7 G+G+G+G+G+G+7 G+C+G+G+G+G+G+G+G+G+G+G+G+G+]+A+G+G+A+]+y+A+]+y+C+]+y+C+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+$+d+$+d+$+d+d+$+d+$+$+O.$+-+$+-+O.d+-+-+-+-+=+-+=+=+-+=+=+=+g.=+g.P.g.P.g.g.Q.Q.E+$ $ # $ E+$ # $ $ _.}.M <.5 <.t g N N 6 N ( N 6 N 6 6 6 i i ~ j ~ 9 2 z ' ' ' _ _ _ P _ _ _ z z 2 2 9 9 j 2./.u._+/.u.w.1+u.1+1+1+/.1+w.w.%.=.$ $ E+$ E+$ $ $ E+$ ++/ I I / 0 J J w.w.1+K l.1+1+1+K 1+K 1+w.1+w.w.w.w.w.w.w.w.w.K w.w.w.K w.w.K w.w.5.w.w.5.w.w.w.w.5.w.5.5.w.5.5.J 0 q $ # E+$ $ $ # $ c {.{.> {.> {.> (.(.0 5.5.z.5.J 2+5.z.5.2+J z.k.z.J z.k.0 (.(.(.A E+$ $ # $ $ $ $ $ ) ! ! ! ! ! + [ ! [ [ ! [ S.! [ S.S.m.m.{+m.:++ :+. -.. - $ $ $ # $ E+$ $ $ [.t }.j.}.[.}.}.<.J.<.|.7.|.|.J.|.|.|.|.J.J.|.J.^.^.J.N f E+$ $ $ # $ E+$ $ J H ^ H H H H H I I $.$.$.w k.w %.k.w k.w w J $.$.$.I I I I ^ {.^ ^ {.; ; ^ ; ^ ^ {.; ^ ; ^ ; ; {.; &.; ; R $ $ $ # $ E+$ $ E+$ ) ! ! ! &.&.{ &.3+&.{ &.&.&.7+&.[ <+[ [ { $ E+$ # $ $ $ E+$ $ } + :++ m.m.:+. :+. m.. m.. :+-.. -.. -.. 7 -.. G+7 G+. 7 G+7 G+D+7 G+7 C+7 C+G+C+G+7 C+G+G+G+G+G+G+G+G+G+G+G+w+A+]+G+A+G+]+y+C+]+y+C+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+D..+.+t..+.+t..+t..+t.t.D.9.a $ E+$ $ $ $ $ $ # q ~.G j ~.9 ~.G G 9 G 9 G G G G 9 G G 2 G 2 2 v 2 2 _ ' ' l m m l _ W _ P _ _ X _ X X X X X W.X W.W.W.W.W.W.X W.W.W.W.W.`.3.< $ $ $ # $ $ # $ $ S K 9 l.9 l.3.z `.z X W.X W.W.X W.W.X W.W.W.z W.W.W.z W.W.W.z W.z W.z W.z `.W.`.z W.`.z `.z `.`.z `.`.`.z `.3.`.3.l.a $ $ $ # $ E+$ $ q 3 3 3 3 3 3 3 l.l.l.l.++++`.++`.++3.++++++++++++++l.++l.l.l.K _.$ $ $ $ $ # $ E+$ ] / / > (.> I 0 0 5.J 5.5.5.5.2+J 0 J k.(.0 (.(.(.(.(.{.S $ # $ $ $ $ $ E+$ w w w w w w O #.2.9.9.9.Z.Z.Z.Z.9.Z.9.Z.9.3.9.9.9.9.2. +$ $ # $ E+$ $ # $ e 1 w w 1 w 1 w w w /.j u.9 u.9 u.u.9 u.9 u.u.u.9 u./.j /.3 1 3 1 1 = 1 1 1 / 1 1 / / 1 / 1 / / / / / / / / > f # $ $ $ $ $ E+$ $ _.> {.> (.0 (.z.0 (.z.2+z.z.k.z.(.(.(.3+{.e $ $ $ $ $ # $ $ $ b m.-.:+. m.. m.m.. m.. m.. -.. :+-.. -.7 -.G+7 -.7 -.7 -.G+. G+7 G+G+G+G+G+G+7 G+G+G+G+G+G+G+G+G+G+G+G+A+]+G+C+G+G+A+]+]+C+A+]+y+C+]+y+H+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.L.L.F.L $ $ $ # $ # $ E+$ $ Y x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x F.F.L.L.L.L.L.L.y.y.y.y.y.y.y.L.y.L.L.F.F.a $ # $ $ $ E+$ $ # f y y y y y x F.F.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.F.L.L.L.F.L.L.F.L.F.L.F.L.F.F.F.x e $ $ $ $ $ $ $ $ e l l l l l l m y x.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.F.x.x.x.Z $ # $ E+$ $ $ $ # Q P P P P P P b.b.4.x.x.x.x.x.x.x.x.x.4.x.x.H.x.H.H.b.b.` E+$ $ E+$ # $ $ # P d a.d a.d P W H.H.x.x.x.x.x.x.x.x.x.x.x.x.x.x.H.x.H.q $ $ $ $ $ $ # $ $ n.X X X X X X X P P W b.b.H.H.H.H.H.H.H.H.H.H.b.b.b.b.b.G.P P a.X X X z z z z z z z z 2 z z 2 z 2 z 2 2 z 2 z q $ $ E+$ # $ $ $ E+B 9 9 9 z z z W.X M.W.W.M.W.W.@+W.z `.z l.r # $ # $ E+$ $ # $ $ * + :+m.. :+-.. m.. m.. :+m.. -.. -.. -.. 7 -.7 G+7 G+7 G+G+G+D+G+7 G+7 G+7 G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+w+G+]+]+G+A+]+]+y+C+]+y+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"A b+d+b+d+d+d+d+$+d+$+d+$+d+$+c+$+-+$+c+$+c+$+c+O.c+-+=+=+U.=+=+=+=+=+P.O.g.Q. . .u.$ # $ $ $ $ $ $ # $ L M M M M M M M g g g g i +.i i i i i F | | G 9 2 2 ' *.' m 6.l 6.W _ P P P X X 2 2 9 2.2.2.u.u._+}+w._+w._+1+w.w.w.%.3 %.o # $ $ E+$ $ # $ $ $ ] I I / $.J J %.J 5.K 4+K 4+K 4+K 4+K K w.K w.5.5.5.5.5.5.5.5.5.5.5.5.5.5.J 5.5.K 5.k.5.w.J 5.5.%.5.5.5.J 5.J 0 k.c # $ E+$ # $ # $ q { {.{.&.{.{.{.(.0 (.0 0 5.z.J z.z.z.0 z.z.(.(.(.(.(.(.(.z.(.> A $ $ $ $ # $ # $ $ ) + + + + + + ! ! S.+ m.! m.m.m.m.:+m.m.:+m.:+-.:+. :+. - $ $ # $ $ $ # $ $ [.}.[.[.s [.I.}.<.<.<.Q.7.7.7.7.7.7.7.<.<.<.<.J.<.<.3.$ # $ E+$ # $ $ $ # l.^ I ^ ^ ^ ^ ^ H I $.^.^.w w w O w w w w w w w w ^.$.1 $.1 / / / / / ^ ^ ^ ^ ^ ^ ^ ^ > ^ ; > ; ^ ; { ; ; ; 8 T $ $ # $ $ $ # $ $ T ! [ [ ! S.&.&.&.&.{ &.&.7+&.&.&.&.[ S.[ } $ $ $ $ $ # $ $ E+$ b m.. m.:+. m.:++ :++ m.+ :+m.m.m.. -.-.-.-.. -.-.-.-.-.. -.7 G+G+D+G+D+G+G+G+D+G+G+G+G+G+G+G+G+G+G+]+G+G+G+C+G+A+]+A+]+A+y+]+H+A+]+y+C+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"A b+b+d+b+$+b+d+$+$+d+$+$+$+$+$+$+$+O.$+$+$+$+$+$+$+$+O.O.O.O.O.O.O.g.-+g.Q.g.p.p.p.q $ E+$ # $ E+$ $ E+$ _.M M M t M 5 N N +.+.+.i +.i i i i i | | 9 G 2 2 ' f.' m ' 6.m 6.b.6.P _ _ X X 2 3.3.u.u./._+w._+w.w.w.w.w.w.w.w.w.k.J I f E+$ $ # $ $ $ $ # e I I I I 0 J J w.w.w.w.w.w.w.w.5.w.w.w.5.w.w.w.w.w.w.w.w.w.5.w.5.w.5.w.5.5.5.w.5.5.5.%.5.5.%.5.5.E.5.J 5.5.5.0 0 c $ # $ $ $ $ $ $ c {.; { ; { { {.(.(.(.(.z.k.z.z.z.J z.z.k.0 z.0 z.0 z.(.(.(.(.{ A E+$ E+$ $ $ $ E+$ ) ! + ! m.+ m.+ m.! S.! S.! S.+ m.m.+ :+m.:+. :+. :+. 7 - E+$ $ $ E+$ $ $ $ j.s [.[.}.[.s }.}.<.<.^.J.^.^.J.J.^.^.^.J.|.J.^.^.^.C $ $ # $ $ $ $ E+$ e ^ j.I I j.^ j.H I t $.$.w ^.w ^.w w w w w w w $.w J $.w $.J $.1 $.I / / / / > ^ > ; ^ ; ; ^ ^ ; {.; ^ ; {.; ; S # $ $ $ E+$ $ # $ p ! ! ! ! ! [ &.&.&.&.&.&.&.&.&.&.[ [ S.! m.< E+$ # $ $ E+$ $ $ $ ) m.. m.:+. -.:+m.m.m.+ m.+ :++ m.m.. :+-.-.7 -.7 7 -.7 -.G+-.G+7 G+7 G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+w+G+]+G+G+]+A+]+]+C+y+]+C+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"A b+b+b+b+b+$+b+b+$+b+$+$+d+$+d+$+d+$+$+$+d+O.d+O.$+O.$+-+O.-+-+-+=+-+O.Q.O.Q.p.I.h.i+$ $ $ $ $ $ $ # $ $ f l.s }.M M <.N N N +.+.+.i i F i F F #.j h 2 2 v _ S *.T.4.4.4.6.6.6.n +X X z 3.3.u.u.(+/._+/._+w.w._+w._+w.w.}+}+J k.k.b $ # $ $ $ $ E+$ $ E+S > {.I I k.k.5.J w.5.w.w.5.w.5.w.5.5.%.w.5.5.5.5.5.5.5.5.5._.c J 5.J J }+J 2+5.J %.5.2+J 5.5.k.5.J 5.2+J (.k.(.q $ $ $ # E+$ # $ , ; {.{ {.{.; {.> (.(.0 z.k.0 z.J z.(.k.z.(.(.z.(.(.(.(.(.(.3+{ A $ # $ $ E+$ # $ $ ) + + m.+ + + m.! m.! m.S.m.m.m.m.+ :+m.-.. :+. -.. -.7 - $ $ E+$ # $ $ # $ [.j.[.[.[.[.[.}.}.J.J.<.|.<.|.<.|.<.|.J.J.J.^.J.^.5+$ # $ $ $ # $ # $ $ o I I I ^ I {.^ H t I $.$.^.w w %.w E.w k.w %.q o k.w 1 $.J 1 1 $./ 1 1 / I / ^ I > ^ > ^ > ; > ; ^ ; { ; ; ; { ;.$ $ E+$ # $ $ $ $ ) ! ! ! ! [ 8 [ &.&.&.&.&.&.&.&.[ S.[ [ S.m.o # $ $ $ # $ $ # $ E+< [ m.m.. :+m.+ m.+ m.m.:+m.m.m.m.-.-.-.:+-.-.:+-.-.-.-.-.-.. -.G+D+F+,.* 7 G+G+G+G+G+G+G+G+G+G+G+G+G+]+A+G+A+G+A+]+A+]+A+y+]+A+]+y+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+b+b+b+d+b+b+b+$+b+b+$+b+$+b+$+;+$+$+;+d+$+$+d+$+$+d+O.O.O.O.O.O.O.O.Q.-+Q.p.p.I.p.h.< # $ E+$ # $ $ $ # $ a w s s }.5 <.N +.+.i +.F +.F F F #.#.| G 9 2 2 _ S A.T.4. +4.4.Q < $ A._ X z z 3.3.u./._+w._+w.}+_+}+}+w.}+w.}+J k.J (.l.$ $ $ E+$ # $ $ E+$ $ =.I > (.(.0 k.5.5.5.5.5.5.5.w.%.5.w.5.5.%.5.%.5.%.5.J l.B $ $ J 2+5.2+5.5.J k.5.2+J J 2+J k.5.J 2+5.J z.0 (.(.c $ E+$ $ $ $ $ $ , {.{ ; { ; { {.(.(.(.(.z.(.z.k.z.(.z.(.(.z.(.(.(.(.(.(.(.{ { {.A $ $ $ # $ $ $ $ # ) ! :++ :++ :++ m.m.m.! m.m.m.m.:+:+m.. :+-.. -.7 . 7 7 - $ # $ $ $ $ E+$ $ [.s [.[.s [.I.}.}.}.<.J.J.J.J.J.^.J.J.J.^.^.J.J.l.# $ $ $ E+$ $ $ $ $ < I I I I I I I H I I t $.$.w E.%.w %.w w %.^.w $ $ C K ^.1 $.J $.J 1 $.1 1 1 / 1 / / I / > I ^ > ^ { ^ ; ; > ; ; e $ E+$ $ $ $ E+$ # 0 ! ! ! ! ! &.&.&.&.{ &.&.7+&.7+&.&.[ S.! m.{ % $ E+$ $ $ # $ $ $ E+a @ . :+-.m.:+m.m.S.+ m.m.+ m.m.m.:+m.-.-.:+-.-.:+-.:+-.7 -.G+-.} c $ ) G+D+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+]+G+]+y+C+]+C+H+y+C+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"A b+d+b+b+d+$+b+$+$+$+b+$+$+$+$+$+$+;+$+$+$+$+O.$+O.$+$+-+O.-+O.-+O.=+O.U.Q.Q.O.p.I.h.o $ $ # $ $ $ # $ $ $ E+e w }.M <.g +.+.+.F F F #.F #.F | ~.G G G v X _ S Q A.*.*.T.q E+$ $ f.P X X X 3.3.u.u.2._+/._+w.w.w.w.w.w.w.w.}+J k.k./ r $ $ # $ $ E+$ $ $ $ f =.I I 0 k.J k.w.%.w.w.w.%.5.w.5.%.5.w.5.}+5.w.5.w._.< $ E+$ J J J J k.5.J 5.k.5.5.J 5.5.J J 5.J J 5.k.J 0 I c $ $ # $ $ # $ $ , { {.{ {.{ {.{ (.(.(.0 k.z.z.z.0 z.z.z.z.k.z.(.z.(.(.(.(.3+(.{ ) $ E+$ $ $ # $ $ $ ) + + + + . + m.! m.! m.+ S.+ m.+ m.:+-.. :+. :+. 7 G+7 - $ $ $ # $ $ $ # $ [.[.[.[.[.[.[.}.}.<.J.<.|.<.|.<.J.+.J.^.J.J.^./.e $ # $ $ $ # $ E+$ # o I I I I I I I I I }.$.$.w %.O /./.O /.%.w %.w E+$ $ f R $.w 1 w 1 J 1 J 1 J 1 J 1 / / / / / / I > ^ > > ^ ; ; } $ $ $ # $ E+$ # $ e ! ! ! ! ! ! ! &.[ &.&.&.&.&.&.&.[ &.[ [ S.m.+ ,.$ $ # $ $ $ $ # $ $ $ c @ m.. m.+ m.m.m.S.m.m.m.m.m.m.m.-.m.-.-.-.:+-.-.-.-.-.-.* b $ $ $ ) G+G+-.G+G+G+G+G+G+G+G+]+G+G+C+G+A+]+A+G+A+A+]+w+C+y+]+]+y+H+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+$+b+d+$+b+d+b+d+b+d+$+$+;+d+$+d+O.$+O.$+O.d+O.d+$+-+O.$+O.O.-+O.O.Q.=+O.=+g.Q.p.p.p.h.q $ $ $ E+$ $ $ E+$ $ $ f A 5 <.+.+.+.F !.F F ~.F ~.~.~.h G G v 2 V P A.e.Q B.L # $ $ # $ Y c._ X X z 3.3.u.u.u._+_+w._+w._+w.w.w.w.%.}+k.J (.l.E+$ $ # $ $ $ # $ E+$ # A I (.k.k.J 5.5.w.5.5.w.w.5.w.w.w.%.5.w.%.w.=.C $ E+$ $ $ J }+5.}+5.5.2+%.5.J 2+5.J 5.5.5.J 5.5.5.J J k.0 c # $ $ E+$ $ E+$ q ; { ; { ; { { (.(.(.z.z.k.5.0 2+0 k.0 z.(.z.(.z.(.z.(.(.{ 3+{ A $ $ $ E+$ $ E+$ # ) + {++ m.+ :++ m.+ m.S.m.m.:+m.:+m.. :+. -.:+-.7 -.7 G+- $ E+$ $ $ # $ $ $ J s }.[.s [.[.}.}.<.<.+.J.|.<.|.|.^.+.J.^.N @+< $ E+$ $ # $ $ $ $ $ < I I I I I / I I I I $.$.w O O /./.j /.j /./.%.w $ # $ $ $ < R w J 1 w J w J 1 1 1 1 J 1 J 1 1 / 1 / / I > I > ^ q $ # $ $ $ $ $ $ $ T 8 ! 8 ! ! ! ! 8 &.&.{ &.&.&.&.&.&.&.[ S.! S.+ m.a $ $ E+$ E+$ $ $ E+$ $ < ) m.:+m.m.! m.+ S.S.+ m.m.m.m.m.m.m.m.m.-.:+-.:+-.* b $ $ $ $ # ) G+D+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+G+G+]+w+C+w+C+y+]+C+y+C+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+$+d+b+d+d+$+d+$+$+$+d+$+$+$+O.d+-+$+-+d+O.$+O.O.O.$+O.=+-+U.=+=+U.=+g.=+g.Q.Q.I.p.h.`.f E+$ # $ $ # $ # $ # $ $ r 3.<.+.F !.F F ~.~.~.h ~.h G G G 2 v X d *.q a $ $ $ $ # $ $ B.c.P P X t.3.3.Z.u.u.u._+/._+w.w.w.w.w.w.w.w.J J k.> S $ $ $ $ $ # $ $ $ $ E+$ S K k.J 5.w.w.5.w.w.w.w.w.w.5.w.5.w.%.@+r $ $ $ $ $ E+$ k.5.J J J J %.5.5.%.5.%.5.w.5.J 5.5.J 5.J 2+0 (.q $ $ # $ $ # $ $ c {.> {.{.{ {.I (.(.z.0 5.z.5.z.5.z.5.z.0 z.z.0 z.(.(.(.(.(.(.{ A E+$ # $ $ # $ $ $ ) S.+ . + :++ :++ S.m.m.+ m.+ m.m.. -.m.-.. -.7 -.7 7 7 - $ $ # $ E+$ $ # $ $ r `.[.}.[.I.}.<.<.J.J.|.|.7.|.J.7.J.^.|.S f $ # $ $ E+$ $ $ # $ # A I I / $./ $.I I ^ $.$.w w O /.j j 2.j j j /.j w $ $ $ # $ E+$ < R w 1 w 1 1 3 w 3 3 1 3 3 1 J 1 J 1 1 1 / > 3 r $ E+$ $ E+$ # $ # $ } ; 8 ! ! ! ! [ &.&.&.&.&.{ &.&.7+&.[ [ [ [ S.+ m.} $ # $ $ $ $ $ # $ $ $ E+$ b * m.m.m.m.S.m.m.m.S.m.m.m.m.-.:+-.-.m.-.-.p C $ $ E+$ E+$ E+) G+-.G+G+G+G+G+G+G+G+G+G+G+G+w+A+G+C+y+G+C+w+C+w+]+C+w+C+]+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.d+d+$+d+$+d+d+$+d+$+d+$+O.d+O.$+$+$+O.$+O.c+O.c+c+c+O.c+O.U.=+=+O.=+g.=+g.Q.g.Q.g.p.I.h.o $ $ $ $ E+$ $ $ $ $ $ # $ $ r 6.+.F F ~.).h ~.~.h G h G @.v v m L % E+$ $ E+$ E+$ $ # B.l _ X X z 2 3.u.u.u.u._+u.u.w.u.1+_+w.w.w.%.}+J k.I I e E+$ # $ $ $ # $ # $ $ E+< R K J J w.5.w.w.w.w.w.K w.w.++R C $ $ $ # $ E+$ # $ J J k.5.k.5.5.J %.5.5.5.w.J 5.w.5.%.5.5.J J k.0 c $ $ $ $ # $ $ # c { {.> { {.{ (.> (.0 5.2+5.5.z.5.2+z.z.2+z.0 z.(.z.(.z.(.{ { { A $ E+$ $ # $ $ # $ ) + + m.+ + m.+ m.+ m.+ {+m.:+m.. m.:+. :+-.. 7 7 G+. G+- $ E+$ $ $ $ E+$ $ E+$ $ < ;.`.[.}.<.J.<.|.7.J.|.J.|.^.u.f.< $ $ $ $ $ # $ $ # $ $ $ ;.I I I I I I I I I I $.w w /./.j 2.9 2.9 2.j j /.%.$ E+$ $ $ $ # $ $ f r A w 3 w J 3 w 3 3 3 3 3 3 3 = J 3 = ] < $ $ $ $ # $ $ $ $ $ r ; ; ! &.! &.! ! &.{ &.{ &.&.&.&.&.&.&.&.[ S.[ m.! m.,.$ $ # $ # $ $ $ # $ $ # $ $ b } S.m.m.S.[ m.m.[ m.m.m.m.m.m.m.) >.< E+# $ $ $ $ $ # $ =.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+G+]+G+G+]+A+]+y+C+y+H+H+]+y+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+b+d+$+d+$+d+$+$+d+$+$+$+O.d+c+O.-+c+O.c+O.c+$+O.O.c+U.c+O.=+U.=+U.=+g.=+P.=+g.Q.p.p.I.p.B $ $ # $ $ # $ E+$ $ $ $ $ $ $ f q e._ M.~.h h ~.v 6.*.e.q # $ $ $ $ # $ $ $ $ # $ $ B.b.P _ X X t.3.3.u.u.u.u.w.u.1+w.u.1+u.w.w.w.w.%.J k.I =.f $ $ E+$ $ $ $ $ E+$ $ E+$ $ C f._.=.w.w.w.w._.o ;.c $ $ $ $ # $ $ $ $ $ $ $ k.J J J J J J 5.5.w.%.K 5.w.5.5.w.5.w.5.5.J J k.q $ E+$ $ $ $ $ $ , ^ { {.> {.> {.(.0 z.0 5.5.5.5.z.5.z.5.z.z.z.z.z.z.(.(.(.(.(.{ ) $ $ # $ $ $ $ $ # ) + :++ :++ :++ {+m.m.m.+ m.m.:+m.. m.. -.7 -.-.7 7 G+7 - $ $ # $ # $ $ # $ $ # $ $ $ $ f q S S c.c.c.c.c.f.B e $ # $ $ E+$ # $ $ $ $ $ E+$ e J j.H I I I I I I I I $.w w /.j 9 2.9 9 9 9 u.j j /.$ $ $ # $ $ $ E+$ $ $ $ f r R A w 3 3 3 3 3 3 3 3 3 ] B < $ E+$ E+$ $ $ $ # $ E+f 0 ; 8 ; ! ; ! &.! &.&.{ &.{ 3+{ &.&.7+&.7+&.[ S.! m.+ + b $ $ $ $ E+$ $ $ # $ $ $ $ $ $ f C ,.) } [ m.m.m.@ ) p T , % E+$ # $ $ E+$ # $ $ $ E+) G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+]+A+G+G+A+]+y+]+A+]+A+C+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"p d+d+d+$+d+d+d+d+d+$+$+-+$+d+O.$+c+$+O.O.$+c+O.O.c+O.c+O.U.=+U.=+g.=+U.P.=+g.g.Q.g.Q.p.h.I.M n.$ $ E+$ $ $ # $ E+$ # $ # $ $ # # $ $ $ $ $ $ $ $ $ $ # $ E+$ # $ $ $ $ # $ $ $ $ Y _ _ X X X 2 3.3.Z.u.u.(+u.u._+u.w.1+w.u.w.w.w.%.J J I / =.E+$ # $ E+$ # $ $ # $ $ # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ E+$ $ $ E+$ # $ E+$ 0 k.0 J k.J J J J 5.5.%.w.5.%.5.5.%.5.%.5.5.J 0 c $ $ # $ E+$ # $ c { > { {.> { (.0 (.5.z.5.5.z.5.5.z.5.z.z.0 z.(.z.(.z.(.(.* 3+{ A $ $ $ $ $ # E+$ $ ) m.+ + + . + :+m.+ m.m.m.m.. + :+-.-.:+7 -.7 7 -.G+7 G+- # $ $ $ $ # $ $ # $ $ $ # $ # $ $ $ $ E+$ E+$ # $ $ # $ $ $ # $ $ $ $ $ E+$ # $ f J [.H t j.I I I I ^ I 1 $.w /.j j 2.9 3.9 9.9 9 j j w $ # $ $ $ # $ $ E+$ # $ $ $ $ $ $ e c q a q c q < $ $ $ E+$ $ $ $ # $ E+$ $ $ $ A ; ; { ; 8 ! ! ! [ ; &.&.{ &.{ 3+&.&.&.&.&.[ [ [ ! S.+ :++ b E+$ $ # $ E+$ $ $ E+$ E+$ $ $ # $ $ $ $ $ $ $ $ $ E+E+$ $ $ $ $ $ $ $ $ $ $ E+$ # ) G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+A+G+]+A+]+]+A+]+C+]+y+H+]+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+$+b+d+b+$+d+$+d+$+$+d+$+$+$+c+$+O.$+c+$+c+O.O.c+O.c+O.O.c+U.U.=+=+U.U.=+g.P.=+g.Q.p.Q.p.s p.s r # $ $ # $ $ $ # $ $ $ $ $ $ $ $ $ $ # $ # $ E+$ # $ $ $ $ $ $ $ $ # E+$ $ $ # $ f.P P X X z 2 3.3.u.u.u.u.u._+1+1+u.w.u.w.1+w.w.%.k.J I I / R f $ $ # $ $ $ $ $ $ $ $ $ E+$ # $ $ # $ E+$ # $ # $ # $ $ $ # $ $ $ $ # $ I I 0 k.0 J J J 5.5.5.5.K J w.5.w.5.5.5.5.2+J 0 q $ E+$ $ # $ $ $ , > {.{.> { {.> (.0 z.5.5.z.5.5.z.z.z.z.z.2+z.z.z.(.z.(.(.3+(.{ A E+$ E+$ E+$ $ $ # ) + + m.:++ :+m.+ :++ :++ :+-.:+-.. 7 -.. -.7 7 G+7 G+7 - $ $ # E+$ $ $ $ $ $ $ E+$ $ $ $ $ # $ $ # $ $ $ $ # $ $ E+$ $ $ # $ # $ # $ $ f =.[.H ^ j.^ H ^ j.^ I I $.$.w O /.2.9 G 9 9 9 9 9 j j %.$ $ $ $ E+$ $ # $ $ $ $ # $ $ $ # $ $ $ $ $ $ $ $ $ E+$ $ $ # $ E+$ $ $ # $ E+o ; ; &.; ; [ ; &.! 8 &.&.&.&.{.&.{ &.&.&.&.&.S.&.[ S.+ :++ m.+ r # $ $ $ # $ $ # $ $ $ $ # $ $ $ # $ $ # $ E+$ # $ $ $ $ # $ E+$ # $ E+$ # $ $ $ } G+D+G+G+G+G+G+G+G+G+G+G+G+]+G+G+G+]+A+G+A+G+C+w+C+y+]+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+b+b+d+$+d+d+$+d+$+d+$+$+-+$+$+O.d+O.O.O.O.c+c+O.c+O.c+c+U.O.=+=+U.=+g.=+g.=+g.g.Q.g.Q.p.I.I.h.p.R $ # $ $ E+$ $ $ E+# $ E+$ E+$ $ # $ $ $ $ $ # $ $ # $ # $ E+$ # $ $ $ # $ $ $ Q _ X z z 2 2 3.3.9.u.u.u._+u./.1+w.u.w.1+w.w.w.w.%.k.0 I I I =.f $ $ $ E+# $ E+$ # $ # $ $ $ $ E+$ $ $ # $ $ $ $ $ $ # $ $ $ E+$ $ $ $ I (.I / 0 k.0 J J J %.5.J 5.5.%.5.J w.J 5.J J z.c $ $ $ E+$ $ E+$ q {.> { {.> { (.(.z.z.z.5.5.z.5.z.5.5.z.5.z.(.z.(.(.(.(.(.{ { { ) $ $ # $ $ $ # $ $ ) . m.. + m.. . m.m.m.:++ :+. -.. :+-.7 -.7 7 G+7 G+7 C+- $ $ $ $ $ E+# $ E+$ # $ $ # $ E+$ $ $ $ $ $ E+$ E+$ $ E+$ $ E+$ $ $ $ $ $ $ < =.s H t [.H j.^ j.^ j.^ t $.$.w /.j j 9 u.9 9 3.j j j /.3 $ # $ # $ $ # $ $ E+$ E+$ $ # $ $ $ $ # $ E+$ $ # $ $ # $ E+$ $ $ # $ E+$ $ o ; ; ; ; ; ! ; ! ! ; &.&.{ { {.&.{ 3+&.&.&.7+&.[ [ S.[ S.+ m.+ :++ T $ E+$ $ $ E+$ $ # $ # $ $ E+$ $ $ E+$ $ $ # $ $ # $ E+$ $ $ # $ $ $ # $ $ # $ ) A+G+G+G+G+G+G+G+G+G+G+G+G+G+G+C+G+A+G+]+G+]+y+]+y+]+C+y+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"9+b+d+b+d+$+d+d+d+$+d+d+$+$+c+$+$+c+$+c+$+c+O.$+O.c+O.O.O.c+U.c+U.=+U.=+U.g.=+P.g.g.Q.Q.p.M h.M I.M `.< $ $ $ # $ $ $ $ $ # $ $ # $ $ E+$ # $ $ $ $ $ $ $ $ $ $ $ $ $ E+$ $ E+$ E+' X _ 2 z z 2 3.3.u.9.u.u.u.1+u.u.w.u.w.u.w.u.w.w.%.J k.I I / I =.a $ E+$ $ $ # $ $ $ $ E+$ # $ $ # $ $ $ $ E+$ # $ $ $ E+$ $ # $ # $ < > I > I > 0 k.0 5.J 5.w.5.%.5.5.w.5.5.5.%.5.0 0 q $ # $ $ # $ $ # c { {.> {.{ > (.(.0 0 z.2+5.5.z.5.z.z.z.z.z.z.(.z.z.(.* 3+(.3+{ 9+$ $ $ $ # $ $ $ # ) + + :+. + :+m.. m.:++ :+m.-.:+-.. :+. G+-.7 G+7 G+7 ]+- E+$ $ # $ $ $ $ # $ $ E+$ $ $ $ # $ E+$ # $ $ $ $ # $ $ # $ $ $ # $ E+# $ , $.H H [.H H H [.^ [.^ H I I $.^.w %./.j u.9 9.9 9 9 u.9 j 3 f $ $ $ E+$ $ $ $ $ $ $ # $ $ E+$ # $ $ $ $ # $ $ # $ $ $ $ # $ $ $ $ $ f ] > ; > ; { ; ; 8 8 ! ! &.&.&.{ {.&.&.{ &.&.&.&.7+&.&.[ [ [ m.+ :++ :+-.) < # $ $ $ # $ $ $ $ $ $ $ # $ $ $ # $ $ $ $ $ $ $ $ # $ $ $ $ # $ $ $ $ $ % } C+G+C+G+G+G+G+G+G+G+G+G+C+G+G+w+G+]+A+G+C+G+C+w+C+H+]+C+y+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"A b+b+$+b+d+d+$+d+d+$+$+d+$+$+d+O.$+$+O.O.$+c+O.c+O.c+c+c+O.U.O.U.U.=+g.=+=+g.=+g.=+g. .Q.p.M I.s p.M M f.f $ $ $ # $ E+$ $ # $ $ E+$ $ $ $ $ # $ E+$ # $ E+$ # $ # $ $ # $ < B l _ X _ z 2 2 2 2 3.3.u.u.u.u.u.w._+u.w.w.1+w.w.w.w.w.J J k.I I I I I - f $ E+$ $ $ E+$ # $ $ $ # $ $ $ E+$ # $ $ $ E+$ # $ E+$ $ $ e o > {.> {.> I I 0 J J J J J 5.5.5.5.J 5.%.5.5.5.k.0 c $ $ # $ $ # $ $ c > > {.> {.{ { 0 (.z.5.z.5.z.5.z.5.z.z.z.(.z.z.(.(.(.(.(.{ 3+{ ) # $ E+$ $ $ E+$ $ ) m.:++ m.. :+. m.. :+-.-.-.. -.7 -.7 -.7 7 G+7 7 G+C+]+- $ # $ $ # $ E+$ $ f $ $ $ # $ E+$ $ $ $ $ # $ # $ $ # $ $ $ # $ $ $ $ $ S [.H s H H H [.H H H ^ [.^ I t $.$.w O /.j j j 9 9 u.9 9 3 j 3 K f.< $ $ $ E+$ # $ # $ $ E+$ $ $ $ E+$ # $ $ E+$ $ $ $ # $ $ $ E+$ # C = > ; > ; ; ; ; &.; &.; &.; ; { &.{ 3+{ &.3+&.7+&.&.[ &.S.[ S.! m.+ + + . :+@ T f # $ $ $ E+$ E+$ # $ $ $ # $ $ # $ E+$ E+$ # $ $ # $ E+$ $ $ E+$ c p F+G+G+G+7 G+C+G+G+G+G+G+G+G+w+G+C+G+A+G+]+A+w+A+]+A+]+A+y+]+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"A b+b+b+b+$+$+d+d+$+$+$+d+$+$+$+$+c+O.$+c+O.O.$+O.c+O.O.O.O.c+O.=+U.=+U.=+g.=+g.=+g.g.Q.Q.p.I.h.s p.s I.M ^.f.f $ $ $ # $ $ $ $ $ $ # $ # $ E+$ $ # $ $ $ # $ $ $ $ $ % L Q _ _ _ _ _ X X 2 2 2 3.9 3.u.u.u.u.u._+u.w.w.u.w.w.w.w.%.}+%.k.k.I I I I I I K S f $ $ # $ $ $ $ # $ $ $ $ # $ $ $ $ $ # $ $ $ $ $ f r =.{.> {.I > I > (./ (.0 J J 5.5.5.%.5.%.5.5.5.5.5.J 0 0 c # $ $ $ $ $ $ $ , {.{.{ { > { (.(.z.z.z.5.z.5.z.z.z.z.z.z.z.z.(.(.z.3+* 3+3+{ { A $ $ # $ $ # $ $ # ) . + m.. -.. m.. m.m.. :+. :+7 -.7 -.7 G+7 G+7 G+]+7 ]+- E+$ $ $ $ $ # $ $ k.f.< E+$ $ $ $ $ # $ E+$ $ $ $ $ $ $ # $ $ $ $ E+q K H H [.H j.H s H ^ [.^ H H ^ I $.$.w w %./.j u.j 9 j 9 j j j 3 3 ~ 1 / A r f $ $ $ $ $ $ # $ $ # $ # $ $ $ $ # $ $ # $ E+$ $ $ # $ c A ^ > > > ; ; { ; &.; ; ; ! ; &.{ {.{ {.{ &.3+{ &.{ &.&.7+&.[ [ [ S.m.+ m.:+m.m.+ :+* T % $ # $ $ # $ $ $ $ E+$ $ E+$ $ $ $ # $ $ $ E+$ $ $ $ $ e >.} G+D+G+C+7 C+G+C+G+G+G+G+G+G+G+G+G+G+w+G+]+G+A+]+A+]+]+C+y+H+]+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+b+b+$+d+d+d+$+d+d+d+d+$+d+$+-+$+$+$+c+O.$+c+c+O.c+O.c+c+c+O.c+U.O.=+g.=+g.U.P.g.=+Q.g.Q.Q.M p.I.M I.s p.M M M +C # $ $ E+$ # $ E+$ $ $ $ $ $ E+$ $ E+$ $ $ E+e r S ' _ _ _ _ P _ X _ z 2 z 2 2 3.3.9.u.u.u._+u.w.u.1+w.u.w.w.w.w.w.J J k.I I I (.I I I > 5.o e $ $ # $ E+$ $ E+$ # $ $ E+$ # $ $ $ # $ C o 5.> > I > > I {.> {.^ (./ 0 k.5.J J %.5.5.5.5.%.5.5.J 5.0 k.c $ $ E+$ # $ $ # c > { > {.{ {.(.(.(.0 5.z.5.z.z.z.z.z.0 z.(.(.z.(.* (.3+3+{ { &.) $ $ $ $ E+$ $ # $ ) + :+. . :+. m.. m.. -.-.:+-.-.7 . G+G+7 G+7 G+7 C+]+C+- $ $ # $ E+$ $ $ E+I.[.[.o L E+# $ E+$ $ $ $ # $ E+$ E+$ $ $ E+$ r =.s [.s j.s H s H H H [.H H H ^ j.t $.1 ^.%.w /.j /.j u.j l.j K j 3 3 1 1 / & ^ / ] r < E+$ E+$ $ # $ $ $ $ E+$ $ $ $ # $ $ $ # $ % r ] ^ & > > ; > ; > ; ; ; ; ! 8 &.&.{ &.{ {.{ &.{.{ &.&.&.&.7+&.[ <+[ S.[ ! m.+ + . m.. m.m.-.{ 8+C # $ $ $ E+# $ $ # $ $ # $ # $ $ $ E+$ $ # $ c - } G+G+G+7 G+G+7 A+G+C+G+G+C+G+G+G+G+G+G+G+C+G+G+A+G+G+]+G+w+A+]+C+]+A+H+]+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"9+b+b+b+d+b+$+d+$+d+$+d+d+$+$+$+-+$+O.$+O.O.O.O.$+O.O.O.O.O.U.O.c+U.=+U.=+=+g.=+g.P.g.=+g.Q.p.M I.h.M p.s I.M I.s M M 5+S q < $ $ $ # $ E+# $ # $ $ # f q B R X 2 2 ' ' ' _ l _ _ _ P X _ 2 2 z 2 2 3.3.9.u.u.u.w.u.w./.1+w.u.w.w.w.w.E.J J k.(.I I (.I I I / I I 5.o b q $ $ # $ $ $ E+$ $ $ $ E+q b 8+3 ^ > > {.I { I {.> > {.> {.> I 0 J J 5.5.5.5.%.5.5.5.J 5.5.J z.0 I > {.{.{ {.{.{ {.{.{ {.{ > {.{ > (.z.z.z.z.z.5.z.z.z.z.(.z.z.(.* 3+(.* 3+* 3+{ 7+&.[ + m.+ + :++ m.+ . m.. m.. -.. -.:+. :+. :+. 7 -.7 -.7 7 G+7 G+7 ]+G+]+C+- $ $ $ $ $ # $ $ $ [.M I.[.[.%.o r a $ # $ $ $ $ # $ $ $ < r o $.[.s H j.H s H H H s H H H H H s I t I $.$.w w %.%./.3 j K j 9 j j 3 j 3 3 1 / / / / / > / =.R r c $ $ $ E+$ # $ # $ E+$ $ $ < q S ] & > > > > > ^ > ^ > ; ; { ; { ; ; ; &.{.{ {.{ 3+{ &.&.{ &.&.&.&.&.7+[ &.[ [ S.+ m.m.m.. m.. :+. -.-.. -.p - , < $ E+$ $ $ $ $ $ $ $ # $ % , >.) 7+. G+G+7 G+G+C+G+C+G+7 G+G+C+G+G+]+G+G+G+G+G+G+G+w+G+]+A+G+A+]+A+]+y+y+C+]+A+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+b+d+d+$+d+b+$+d+d+d+$+d+d+-+$+$+c+$+c+$+c+$+c+O.c+c+c+O.c+O.c+O.O.U.=+g.=+g.=+g.=+g.g.Q.g.Q.p.M I.s I.M h.M M p.M M 5 M M M M z A c.] c.] c.] c.] i ~ j | 9 9 2 2 _ ' ' ' _ _ _ P _ _ X X z 2 2 3.9 3.u.u.u.u.u./.1+w.u.w.w.w.w.w.w.w.}+k.J $.(.I / I > I I > I / I I > I K A A A A A A A A 5.I > I > { I {.I > {.> I > {.> {.> {.(.0 k.0 k.J J %.5.5.J 5.J 5.J 5.J 0 0 (.(.{.> { > { > { > {.> {.{ { { { (.0 z.z.5.z.z.z.z.z.z.z.(.(.z.(.(.3+(.3+3+{ 3+{ &.[ S.! m.m.+ m.+ :+. m.. -.. . -.. . -.-.-.:+-.-.7 G+7 7 G+7 G+]+G+C+]+]+C+T $ # $ # $ $ $ # $ [.}.s }.[.I.s }.[.[.z @+A A 5+A A A $.[.[.s [.s j.[.s [.H H s [.{.s H [.H ^ H I }.$.$.w w %.w /.3 j 3 j j K 9 K j 3 3 = 1 / ^ / ^ & ^ / & & / & / ^ ] ] ] ] ] ] ] ] ] =.& > = & > & > & & > & > > > ^ ; ^ ; ; ; ; &.&.; {.{ {.{ {.{.3+{ 3+&.&.&.7+[ &.&.[ S.[ S.S.+ + . m.:+m.m.-.m.. m.. . -.:+. -.} =.) =.) =.) =.) ) . 7 7 7 -.7 G+7 G+D+7 G+7 G+7 G+G+C+]+G+C+G+G+G+G+G+G+G+G+G+G+A+G+]+G+]+G+C+A+]+C+]+y+H+]+C+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.$+b+$+b+$+d+d+$+$+d+$+$+$+$+$+d+$+$+$+$+O.$+O.c+O.O.O.c+O.U.O.O.U.=+U.=+U.g.=+U.P.g.P.g.Q.Q. .I.p.s I.M I.M I.M M I.M M t M N t g 5 5 5 g g N 6 6 i O ~ j j 9 9 2 _ ' ' _ _ _ _ _ _ d z _ z z z 2 3.3.3.u.u.(+u._+u.w._+w.w._+w.w.w.}+%.%.J k.I I I (.I I > I I I I > I I > I I > I > I > I > > {.{.> I {.I > {.I {.> {.> {.> {.> I (.0 J J J 5.5.5.5.5.5.5.5.5.5.5.0 (.(.(.> { {.{.; {.{.{.; { { { {.> (.(.z.0 z.z.z.z.z.z.z.(.z.(.z.3+(.3+* 3+* { 3+{ 7+[ [ + + m.+ m.. m.. m.. . :+. -.. . -.:+. 7 -.. 7 -.G+7 G+G+7 G+]+7 ]+]+C+C+S E+$ $ $ $ $ E+$ $ I.s [.s }.s [.[.s }.[.j.s s s [.s s [.[.[.H s j.H s H H s j.H H s H H [.^ H j.I t $.$.w %.w %.3 /.3 /.j K j K j 3 3 3 3 3 = / / / / / / ^ / & / & / & > & > > & > & > & & / & > & > & > > ^ > ^ > ; ; > ; { ; ; &.; { {.{ {.{ {.{ &.{ &.&.&.&.7+&.&.<+[ &.[ S.[ ! S.m.m.m.. :+. m.. -.. :+-.:+. -.:+. -.-.. -.D+G+D+G+7 G+-.G+D+7 . G+. G+7 G+G+G+G+C+G+C+7 G+C+G+G+G+G+G+G+]+G+G+]+G+]+G+A+]+A+G+A+]+y+]+y+C+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+d+b+d+d+b+d+$+d+$+d+$+d+d+d+$+$+O.-+O.c+$+c+$+O.c+O.O.O.c+O.c+O.U.O.U.=+=+g.g.=+P.g.g.g.g.Q. .I.M p.s I.s M s I.M M M M t M t N N N N N 6 6 6 i O O j j j 9 2 2 2 ' ' ' l _ _ P _ X _ X X z z z 2 3.9.u.u.2.u.w.w.u.w.w.w.w.w._+w.%.w.}+k.J k.0 I I > I I I > I > I {.> {.I > {.> I > {.> {.I I > {.I > > {.> I > {.> {.> {.{.I (./ 0 k.0 5.5.5.J 5.J 5.J 5.J 5.J k.0 (.> {.> {.> { > { > { {.{ {.{ { (.> z.(.z.z.z.z.z.(.z.(.(.(.* (.* 3+3+* 3+{ { 7+&.[ [ S.+ m.+ :++ . m.. m.. -.. 7 -.-.. -.:+-.7 7 -.7 7 G+7 G+]+]+7 C+]+C+H++ S $ $ # $ E+$ $ # $ [.I.[.I.s [.}.s [.[.s [.[.[.[.[.[.[.[.s H }.H H [.H H [.H H s H H H H H H }.t t $.$.w $.w %.w %.3 /.3 3 j K j 3 3 3 3 3 = 1 = / & > / ^ / ^ / ^ / & > & > & & > & / & & > & > & > & > & > & > > ; > > ; ; ; ; { ; {.{.{ > {.{ {.{ 3+{.{ &.{ &.&.&.7+&.7+[ [ [ S.[ + m.+ :+m.m.:+. m.:+-.. m.. m.. + -.:+. -.. :+. -.. -.7 7 G+7 -.G+7 G+G+D+7 G+7 C+7 G+7 G+C+G+G+G+G+G+G+G+G+G+G+G+G+A+G+G+G+]+C+w+A+C+H+C+]+y+]+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+$+b+d+b+$+d+$+d+$+d+d+$+$+$+$+d+$+$+$+$+O.c+$+O.c+O.c+O.c+O.c+O.=+c+U.=+g.=+=+g.g.=+=+7.Q.g.Q.Q. .I.M I.M p.M I.M M }.M }.M N 5 <.t N 6 N w i w O ~ j j j 9 9 9 2 2 _ ' ' _ ' _ _ _ _ X _ _ X X X 2 3.3.3.u.u.2.(+/.1+w.w.u.w.w.w.w.w.%.w.%.k.J k.(.I {.I {.I I {.I > I I I > {.I I > {.I I > {.> {.> {.{.I {.I {.> {.> {.> {.> {.0 (.0 J J 5.J 5.5.J 5.5.5.5.5.J z.0 0 (.(.> {.{ { {.{ {.{ ; > { ; > { (.(.(.z.(.z.(.z.(.z.(.z.* (.3+3+(.* 3+3+{ 3+{ &.7+&.[ m.+ m.+ + :++ :+. -.. . -.. 7 . :+7 -.7 -.7 G+G+7 G+G+7 G+C+]+]+C+]+C+{.S $ $ $ $ # $ $ $ $ s s I.s }.s [.[.}.s [.}.s j.s [.s [.[.j.s H }.s [.s j.s H H H H H H H H t j.I }.$.$.w ^.%.w %.w %.3 /.3 3 j K j K j 3 3 3 = = / > / / / & / ^ & > & / & / / & / & > & / & / & / & > & > & > > ^ > ^ > ; > ; ; ; {.{ {.{.{ {.(.{ {.{ &.3+&.&.&.7+&.&.[ &.&.S.&.[ S.[ S.m.+ :+. m.-.. m.. :+. :+-.:+-.. -.. :+-.-.. -.7 . G+-.7 G+7 D+G+. G+G+7 G+G+G+G+C+G+C+G+]+D+G+G+G+G+G+G+G+G+C+G+w+A+]+A+G+]+A+]+y+]+y+C+]+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+d+$+d+$+b+d+b+$+d+$+d+$+d+$+d+$+d+$+c+$+O.c+$+O.$+O.O.O.c+O.U.O.O.U.O.=+g.g.=+=+g.g.g.P.7.g.g.Q. .p.M I.s I.s M M M M M <.t N N N N 6 w w O O j j j j j 9 9 2 2 2 _ ' ' ' _ _ _ _ X _ P P _ X X X 2 3.3.9.u.u./.1+/./._+w._+w.w.}+w.w.}+w.}+J k.0 I I > I {.I > I {.> {.> I I > > I I > I {.> {.I {.I > {.> > > {.> {.> {.{.> (.I J 0 k.5.J 5.J 5.5.J 5.J 5.J 5.J k.0 0 I (.{ > ; {.{ > {.{ {.{ { {.{ > (.(.(.z.z.z.(.z.(.z.(.(.(.(.* 3+3+* { 3+{ 3+7+&.[ S.! m.+ :++ . -.. :+. 7 -.. 7 -.-.7 -.7 -.G+D+7 7 G+7 ]+G+]+]+C+]+]+H+. J.S $ # E+$ $ # $ # $ I.}.s [.[.[.s [.s j.s H [.[.[.H j.s H s [.[.H [.H H H H H [.[.^ [.H ^ [.I }.t $.$.^.$.w w %.w 3 /.%.3 j 3 3 9 3 3 K 3 3 3 3 1 = / & ^ > / ^ / / & / ^ > & > & > & / & > & > & > & > & ^ > & > & ; > ^ > ; ; {.> {.> {.> (.{ { {.{ 3+&.{ { &.&.&.7+&.7+&.7+[ [ S.[ S.+ S.m.m.m.:+. m.. -.-.-.. m.. + :+. m.-.. -.. -.. x+. G+7 -.7 7 G+7 G+. G+G+G+7 G+7 G+7 C+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+]+G+G+]+A+C+y+C+]+y+C+]+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+b+d+b+b+d+$+d+d+$+d+$+$+d+$+d+$+$+$+$+O.$+O.$+c+O.c+O.c+O.O.c+O.c+O.=+U.U.=+=+g.g.=+P.=+g.g.Q.g.Q. .Q.M I.M M M }.M }.t t N N N 6 w w O O j j j j j j 9 9 9 9 _ ] ' ' ' ' _ _ _ P _ P _ P _ X X z t.3.3.u.u.(+u./._+w.w.w.w.w.w.w.w.w.w.J w.k.J k.J I I I > > {.> I {.I I {.> {.I {.{.> {.> I I > I > {.I > {.{.> > {.> {.> I I 0 0 k.0 J 5.5.5.5.J 5.J 5.J 5.5.0 5.(.0 (.(.> {.{.{ { ; { { ; { {.{ (.(.(.z.(.z.(.z.z.(.z.(.(.* 3+* 3+{ 3+{ 3+{ { 7+7+&.[ [ S.+ m.+ :+. m.. -.. -.. 7 -.7 7 -.7 7 -.7 7 7 G+G+]+G+]+7 ]+]+C+H+C+{.^+S E+$ $ $ $ $ $ $ $ [.s [.s }.s I.s [.[.[.[.}.[.s [.[.[.[.[.H s [.[.s j.s [.H s H H H }.H }.}.t $.$.^.$.w E.w %.w %.%.3 /.3 K 3 3 K 9 3 9 3 3 3 = 1 = > / & ^ / & ^ / ^ / & / & / & / & > & / & / & > & > & > ^ > ^ > ; > ; ; > > > {.> {.(.{.{.(.{.3+{.{ &.&.3+&.&.&.&.&.[ &.&.[ [ [ [ S.S.m.m.m.m.m.m.-.. :+. :+. -.:+. :+-.. :+. -.:+G+. 7 -.. G+7 D+7 G+7 G+G+G+7 G+C+G+C+G+G+G+G+G+G+G+G+G+G+G+]+G+A+]+G+]+G+A+]+A+]+y+]+]+y+C+]+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+d+b+$+d+$+b+d+$+d+$+d+d+$+$+$+$+-+$+$+-+$+c+O.O.c+O.O.O.O.c+O.O.U.c+U.O.=+g.g.=+g.P.g.g.P.Q.P.7.g.7. .Q. .I.M }.M M N }.N N N w w O O j j j j j j 9 9 9 2 z ' ] _ 2 _ ' ' _ l _ _ b.6.b.G.b.P X X z 3.3.9.u.2./._+u.w.w._+w.w.w.w.w.w.w.}+w.w.J k.J J 0 I I I > I {.> I > I > I > {.> I > {.I {.{.{.> {.> {.> > {.{.> {.> I (.0 0 k.0 5.5.J 5.J 5.5.J 5.5.5.5.J 5.0 J (.0 (.> {.{ > {.{ { ^ { { { (.{ (.(.(.z.z.(.z.(.z.(.(.* 3+(.3+3+* 3+{ 3+7+3+&.&.[ [ S.[ m.+ . -.. :+. . -.7 7 -.7 -.7 -.7 D+7 G+G+G+7 ]+G+]+C+]+C+]+]+H+. ^.'+S $ $ # $ E+$ # $ E+M I.[.I.s [.[.[.[.s s [.[.s [.[.s [.[.s j.[.H s H H H H H H [.s }.H t j.t $.$.^.$.w $.^.%.w %.w %.%.3 3 j 3 j 3 3 K 3 3 3 3 3 = 1 / / / / ^ / / ^ / & ^ / > & > & > & / & > & > & > & > & > > > > > ^ > > I {.I > {.(.{ (.{ { { { {.{ 3+{ 7+&.7+&.7+&.7+[ [ 7+S.[ [ S.[ m.S.m.m.. m.. m.. m.-.m.. m.-.. -.. m.. -.. . -.G+7 G+7 -.7 G+G+G+7 G+7 C+G+7 G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+A+G+G+]+G+]+y+C+C+y+C+]+y+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+b+b+d+b+d+b+$+$+b+d+b+$+$+d+$+d+$+$+d+$+$+O.$+$+O.$+c+O.c+O.O.=+O.O.U.=+U.=+=+g.=+g.=+g.g.P.g.P.7.7.7.<.<.<.<.<.<.<.t N N ^.w w O O O j j j j j 9 j 9 2 A ' A 2 2 9 2 2 _ ' ' _ 6.m 6.l 6.l b.6.P X X 2 3.3.2.u.u./._+/._+w._+w.w.w.w.w.w.w.%.5.%.%.k.k.J 0 (.I I > I > {.I {.> {.I {.> {.I > {.> > {.> I > {.{.> {.> {.> I 0 (.0 k.0 J J 5.J 5.5.J 5.5.J J 5.J 5.J k.z.0 (.(.(.> {.{ > { { { {.> { (.(.* (.(.(.(.z.(.(.* (.3+3+* 3+* 3+{ 3+{ 7+{ 7+7+&.[ [ [ m.m.m.m.m.. -.. -.7 -.. 7 -.7 G+7 -.7 G+7 7 G+G+]+]+]+]+C+]+C+H+H+&.^+~+S E+$ $ $ # $ $ $ $ [.s s [.}.s [.s [.}.[.[.[.[.[.H [.[.s H s H [.H H s H [.H [.H I s j.}.}.$.$.$.$.^.^.w $.w %.w %.w %./.3 3 K K j 3 3 3 K 3 3 3 3 = = / / ^ & ^ / & > / / & / ^ / & / & & > & > & > ^ & > > & > ^ ; > > ^ > > > {.> I {.> {.(.{.{.{.{ &.&.&.&.&.&.&.[ &.&.S.&.[ &.[ S.[ S.S.m.S.m.m.m.:+-.:+. . :+-.. :++ -.m.. -.. -.7 7 -.7 -.7 G+7 . 7 G+D+7 G+G+G+G+7 G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+G+]+A+G+C+G+A+]+y+]+]+y+C+]+y+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.d+b+d+b+$+d+b+d+d+$+d+$+d+$+$+$+d+d+$+-+$+$+c+$+c+O.O.O.O.c+O.O.c+O.c+O.O.U.U.=+g.=+g.=+P.g.P.7.g.P.7.7.7.7.+.+.N +.^.^.^.w w O w j j j j j j 9 9 z ] ] z 9 9 9 9 9 2 2 _ R ' m ' m 4.4.4.4.b.b._ X X X 3.3.u.2.u.u./._+/.w.w._+w.w.w.w.w.w.w.w.5.w.5.J k.J J 0 (.I > I I > I {.> {.> {.> {.{.{.{.{.> {.> {.> > {.^ (.I (.(.(.0 k.0 2+J J J 5.5.J 5.J 5.5.J 5.5.J 5.0 0 k.0 (.0 (.> (.{.> {.> { (.(.(.(.(.(.(.z.(.z.(.z.(.3+* (.3+* 3+{ 3+{ 3+&.3+&.&.[ 7+S.[ S.+ m.+ :+m.-.:+. -.7 -.7 -.7 -.. G+G+7 G+G+]+]+7 C+]+C+]+]+H+H+. E.J.'+S $ $ E+$ $ E+$ E+$ s I.I.[.s [.I.[.s [.[.s [.[.[.[.[.[.j.[.j.[.[.j.s j.H H }.[.}.}.$.}.$.t $.$.^.^.^.$.^.E.w ^.%.w %.w %./.%.j 3 3 K 3 9 3 3 3 3 3 3 1 1 / = / / > ^ & ^ / ^ & / & > & > ^ / & > & > & > ^ > ^ > > & > > > I > I / (.> (.(.(.{ (.3+{ {.3+{ &.&.7+&.7+&.[ 7+&.7+S.7+S.[ [ m.[ S.m.S.m.+ m.m.m.m.m.. :+. -.:+. . -.. -.7 -.-.7 -.7 G+. G+G+G+7 G+G+G+7 G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+A+G+]+G+]+A+]+A+]+C+y+C+]+A+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+b+d+b+d+b+$+d+$+b+$+d+$+d+$+d+$+$+$+$+$+O.O.$+O.$+c+O.=+O.O.c+O.O.O.U.=+U.=+g.=+g.g.=+g.P.7.P.7.7.7.8.i.8.8.|.8.|.#.O #.j /.j j j j j K 9 z z ] ] 2 9 j 9 j j 9 9 2 2 2 ' f.T.*.4.*.4.4.4.4.H.b.P X X 2 3.9 u.u./._+/.w._+/.w.w.w.w.w.w.w.%.w.%.}+%.5.J J k.J k.0 (.I (.I {.> {.I I {.> {.> {.> > {.I {.> I {.I (.I (.I 0 0 k.0 5.J k.5.5.5.J 5.J 5.J J 5.5.k.5.0 2+J z.0 0 0 (.(.(.> (.> (.(.{ (.{ (.* (.(.(.(.(.* (.3+z.3+3+* 3+{ 3+{ 7+{ 7+7+&.7+7+[ [ S.S.+ m.m.+ -.. . -.. -.7 -.7 -.G+7 G+7 7 G+]+7 G+]+]+C+]+C+]+C+H+{.!+J.~+S $ # $ $ # $ $ # $ I.[.s s s [.[.s [.j.s [.[.[.[.s [.s H s [.s H s H H s }.H }.t }.}.}.$.}.^.$.^.$.$.^.^.w $.J ^.%.w %.w %.3 3 3 3 j K 3 3 3 3 3 3 3 1 1 1 1 / / / / / / ^ > / ^ > ^ > ^ & & > ^ > & ^ > & > & > / > / / / / (./ (.> (.{.I { > {.{ {.&.{ { &.&.&.&.&.<+7+&.[ &.[ &.[ 7+S.[ S.m.S.m.m.m.m.. m.m.:+m.m.+ :+. -.m.. -.. -.. 7 G+7 G+. G+7 -.7 G+D+7 D+G+D+7 G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+A+G+G+G+A+G+]+A+]+C+w+C+]+y+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+d+b+d+b+$+b+d+b+d+d+$+d+$+d+$+$+d+-+$+c+$+c+$+c+O.O.O.O.c+O.O.O.=+c+U.O.U.O.=+g.=+P.P.7.P.P.7.i.i.8.8.8.8.8.9.2.9.u.9.3.u.9 3.9 l.9 z z ] ] A 2 9 j 9 9 j 9 9 9 9 2 2 2 _ B.Q *.T.*.*.4.4.H.H.b.P X X z 3.3.u.2.u./._+w._+w.}+w.w.w.w.w.w.w.w.w.w.5.%.5.J J k.J J J 0 I (./ (.I > (./ I I > I I {.I > (.I (./ (.(.0 (.0 J k.0 J J J 5.J 5.J 2+J 5.J 5.5.k.5.0 J 2+0 z.0 z.0 (.0 0 (.(.(.(.(.{ (.(.(.(.(.(.z.* (.(.(.3+* 3+{ * 3+{ 3+{ 3+7+3+&.&.7+[ [ S.[ S.+ m.m.m.:+:+-.:+-.7 -.7 -.7 G+7 G+7 G+G+G+7 ]+C+]+C+]+]+]+H+H+. K.^+J.~+S E+$ $ # $ $ # $ $ [.s I.[.}.[.s [.[.s }.}.}.}.}.j.}.j.}.[.[.}.[.}.}.}.}.}.}.t }.$.$.$.$.^.$.^.$.^.^.$.^.k.^.w ^.w %.w %.%.w %.%.3 3 3 3 3 3 3 3 3 1 3 3 = 1 1 1 = / = / = / & / / & / = / > & / & / > = / / = / / / / / 0 / / (.I I (.> (.{ (.{ 3+{.{ 3+&.&.&.&.7+&.7+&.[ <+[ [ [ S.[ S.S.[ S.[ S.m.S.m.m.m.m.+ m.+ :+m.m.m.. m.. -.7 -.G+-.-.-.7 -.G+G+-.G+7 G+G+G+7 G+G+D+G+D+G+D+G+G+G+G+G+G+G+]+A+G+]+A+]+G+]+A+]+A+]+C+y+H+C+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.b+b+d+b+d+d+$+b+d+$+b+d+$+$+d+$+$+$+d+$+$+$+$+O.$+$+c+$+O.O.=+c+O.O.O.c+O.=+U.=+g.=+Q.P.P.7.P.,+8.,+Y.Y.Y.9.9.9.3.3.3.3.3.3.3.3.3.z M.] ] X 2 9 9 3.9 9 9 2.9 G G 9 2 v X d ' e.Q *.A.*.*.x.4.4.H.b.P X z 3.3.9 u.(+/././.w.K.w.}+w.w.w.}+w.w.w.5.%.w.%.w.}+J 5.J J k.J J 0 k.0 0 0 I (.(.I (.(.I 0 (.0 / (.0 0 0 I J k.J 0 5.J 5.J J 2+5.J 5.J 5.k.5.k.5.z.J 5.k.0 5.J z.J 0 0 (.0 (.0 (.(.(.0 (.(.(.(.(.(.(.(.(.* 3+(.3+(.3+{ 3+{ { 7+{ &.7+7+7+&.[ [ S.S.m.S.m.m.m.+ :+-.. :+-.7 -.7 -.7 -.G+G+7 G+]+C+G+]+]+]+C+]+C+H+H+I ^+^+'+~+S $ E+$ $ $ $ $ $ # I.s [.s [.s [.s }.[.}.}.}.}.s }.s }.}.}.}.j.}.}.j.t j.}.}.}.$.}.}.$.}.$.^.$.J.$.^.$.$.^.$.k.^.J ^.%.w %.%.%.%.%.3 /.3 3 3 3 3 3 3 1 3 1 J 1 1 1 1 1 1 1 1 / / / / / / = / / = / / = / / = / / = / / / / 0 I / (.(.> {.(.{.{.{.{ &.&.{ &.&.7+&.&.&.[ &.7+[ 7+<+[ &.[ [ S.S.S.m.S.[ m.S.m.m.m.m.m.m.+ m.. m.m.-.m.-.:+. -.7 . -.-.7 -.7 -.-.-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+]+A+G+]+A+H+]+y+]+A+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+d+b+d+b+b+b+d+$+d+$+$+d+$+$+d+d+$+$+$+d+$+$+$+c+O.$+O.c+O.O.O.O.=+O.O.=+O.=+=+=+P.P.P.P.,+8.C.8.Y.9.9.Z.Z.3.3.t.3.t.z t.z X M.c.o c.X z 3.3.3.3.9 9.9 9.G G j G G G 2 2 X _ e.B.Q x.A.x.*.4.4.H.H.P X X 2 3.3.u.u./._+_+K.w.E.w.E.w.%.w.%.w.%.}+5.w.5.%.5.5.%.k.5.J k.J J k.k.J k.0 J 0 0 0 k.0 k.J 0 k.J 0 k.k.J k.0 5.k.J J J 2+5.J 5.5.J k.5.J z.5.J J z.5.z.J z.5.J z.k.z.0 0 0 (.(.(.(.(.(.(.(.* (.* (.(.(.3+(.* 3+{ { 3+{ 7+3+3+7+7+&.&.[ [ [ S.[ m.[ m.m.+ :+-.m.m.-.. -.-.7 -.7 G+7 G+7 G+7 G+]+]+C+]+C+]+H+H+H+m.R.^+'+J.'+f.$ $ $ $ # $ E+$ $ [.s I.[.s I.[.[.}.}.}.}.}.}.}.}.}.t }.}.}.}.}.}.}.}.}.}.$.}.}.$.^.$.J.^.$.J.$.^.$.^.^.$.^.^.$.^.$.w $.w w w w %.%.3 %.3 %.%.3 %.3 J J 3 J 3 1 3 1 J 1 1 = 1 1 1 1 1 1 1 1 1 = 1 = 1 1 / J = 1 J 0 0 / 0 / 0 (.> I (.(.{ (.{ {.{.3+{ &.3+&.&.&.&.7+<+[ &.S.&.[ [ [ S.7+S.[ S.[ S.m.S.m.S.m.S.m.S.m.m.m.m.:++ m.-.m.-.-.-.-.-.7 -.-.:+-.G+7 -.G+-.G+-.G+G+G+-.G+G+-.G+G+G+G+G+G+G+]+G+]+A+]+G+]+A+]+w+C+y+]+y+C+y+H+H+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+b+b+d+b+d+d+b+d+b+$+b+$+d+$+d+$+$+d+d+$+$+c+O.$+$+O.c+O.O.c+O.=+O.O.=+=+=+=+g.=+P.7.,+8.,+8.Y.Y.s.9..+3.t.t.t.W.t.W.W.M.c.6.6.c.X z 3.3.2 3.3.3.G 3.G 9.G #.~.G G G @.v X d *.0+Y A.A.x.T.x.4.H.b.b.P X X 3.3.9.2.u././.w.E.w.w.}+w.}+w.}+w.}+5.w.%.}+5.w.w.w.5.}+J 5.5.J k.J J J J k.J k.J k.J k.0 k.J 0 k.0 J 0 J 5.k.J J 2+5.J J 2+J J J 5.J z.J J 0 2+J J J 5.J 0 5.0 0 0 z.(.z.(.0 (.0 (.z.(.(.(.(.(.(.3+* (.{ 3+3+* 3+{ { 3+7+{ 7+&.&.[ 7+[ S.[ S.S.S.m.m.m.m.m.. -.:+-.-.7 -.7 -.G+7 G+]+G+]+]+G+C+]+C+]+H+H+H+C+$.^+l+J.'+~+S $ $ # E+$ $ # $ $ I.M [.s [.s [.s }.}.<.}.}.<.<.J.<.}.}.}.}.}.}.}.t }.^.}.J.}.^.J.^.}.^.$.J.$.^.$.$.$.$.^.$.$.w $.w k.w %.k.%.J %.w %.%.%.%.3 %.J w 3 %.1 3 J 3 J J 3 1 3 1 3 3 = 1 1 1 = 1 = 3 1 1 J = 0 1 1 0 0 1 / J 0 (./ I (.(.> {.(.{ (.{ 3+{ &.{ &.&.&.&.7+&.[ &.7+&.[ S.7+S.[ S.[ S.m.S.m.S.[ S.m.m.m.m.! m.S.m.m.+ m.m.+ m.m.m.-.:+m.-.-.-.-.-.-.-.-.-.G+-.G+-.-.-.G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+G+G+A+G+]+A+w+]+H+C+y+]+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.d+b+d+b+d+b+$+b+$+d+d+d+$+$+d+$+d+$+$+$+d+$+$+$+-+$+c+$+O.-+O.c+O.=+=+=+-+g.=+P.P.!+,+8.,+Y.Y.9.Z.Z.t.3.t.W.W.W.W.X M.6.6.6.c.X z t.3.t.3.3.3.G G 9.9.~.j ~.~.G ~.~.G G 2 v X P e.B.Q x.A.x.*.4.H.H.H.G.X z z 3.3.u./.u.K./._+%.E.w.E.w.%.w.J w.%.}+5.w.%.}+J 5.%.J %.}+J k.5.J k.J J J 5.J k.J k.J J J k.J 5.k.J k.J J J J 2+J J 5.k.0 J 2+5.z.J 5.J z.J 5.z.k.z.J z.5.0 z.5.0 z.0 0 0 (.(.(.(.(.(.* (.(.(.{ (.3+3+3+* { 3+{ @ 3+7+{ &.7+&.7+7+S.S.[ S.m.m.m.m.m.m.m.-.:+-.-.. -.7 -.7 G+7 G+G+7 ]+G+C+]+]+]+]+H+]+H+H+8 R.^+J.'+'+~+S E+$ $ $ $ E+$ $ E+s [.s I.s [.[.}.}.}.}.<.^.J.^.J.}.J.^.J.J.^.J.J.}.J.J.N J.^.^.$.^.^.J.}.$.^.}.$.^.J.$.$.^.$.$.E.$.w $.w w $.w w J %.w J %.J w 3 J J 1 %.J 3 1 J 3 1 3 1 3 J 1 J J 3 1 3 1 3 = J 3 = J 3 = J J 1 0 0 / 0 / (.(.I (.{.(.{ (.{.{.{ {.{ 3+&.&.7+&.&.7+&.&.[ [ 7+&.[ [ 7+S.[ S.[ S.[ [ m.m.S.[ S.S.m.[ m.m.S.m.m.m.m.m.:+-.-.-.-.:+-.:+-.-.-.-.-.7 -.-.G+G+G+G+G+G+-.G+G+G+G+G+G+G+G+G+]+G+G+]+A+]+A+G+C+]+A+C+]+]+A+]+H+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+b+b+d+b+b+d+b+d+b+$+b+$+b+$+$+$+d+$+d+$+d+$+$+$+$+O.$+O.$+O.=+-+=+=+-+=+=+P.!+!+,+,+,+Y.Y.9.Z.Z..+t.W.t.W.t.W.a.c.6. +G.M.X t.W.t.3.t.3.3.G G 9.9.G ~.~.~.~.~.~.h ~.G G @.v X d *.n.B.Q A.x.T.x.4.H.b.b.P X 2 2 3.9 2././._+%._+%.w._+w.}+w.}+5.w.%.}+5.}+5.w.%.5.5.5.%.5.%.J }+J 2+5.k.J k.J k.J 2+J 2+J k.J 5.k.J J k.5.J J 5.k.5.J 2+J J J J z.J J J z.J J 5.J 5.0 0 5.0 z.0 k.z.(.z.(.z.0 (.z.(.(.(.* (.(.* 3+* { 3+{ { 3+{ 7+&.7+&.7+[ [ [ S.[ S.m.[ m.m.m.m.m.m.m.-.:+-.:+-.7 G+-.7 G+7 G+G+]+]+]+C+]+C+]+C+H+H+. E.l+^+!+J.J.I.S $ # $ E+$ $ # $ $ s I.s [.I.s [.M }.<.J.<.J.<.J.N J.N J.<.J.}.N ^.J.^.J.}.^.}.J.^.}.^.}.^.J.$.^.$.}.$.$.J.$.^.$.$.^.k.w k.^.J k.w $.w J w %.%.J w %.3 J 3 1 %.3 1 J 3 J 3 1 3 J 3 1 3 J 3 J J 3 1 J J 1 J J 0 0 J 1 0 0 / 0 I (.> (.(.{ (.{.{ {.{.&.&.{ &.&.&.&.7+&.7+&.&.[ <+[ S.[ [ S.[ S.S.m.S.m.S.m.m.m.m.[ S.m.[ m.m.+ m.m.m.m.-.m.m.-.-.-.-.-.:+-.-.-.-.x+G+-.-.-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+C+G+G+G+]+G+w+A+H+w+C+y+H+A+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.b+d+b+d+b+d+b+$+d+b+$+d+$+b+d+$+$+d+$+$+$+d+$+c+$+$+O.c+O.c+O.=+Q.=+P.P.!+P.,+i.,+Y.Y.Y.Z.Z..+t.3.W.t.W.W.M.G. +#+G.M.X W.t.W.3.t.3.3.3.G 9.9.9.~.#.~.~.~.h ~.F ~.~.h G G G v X P B.N.B.x.A.*.x.4.4.H.b.G.X X z 3.3.u.u./.K./.E./.}+%.}+%.5.%.}+J w.5.%.w.%.5.5.w.%.}+5.5.}+%.k.5.%.5.5.k.J 5.J 5.J 5.J 5.5.J k.5.J 5.J k.J 2+J 5.J 0 J J 5.z.5.J J z.5.J z.z.J z.J z.k.0 0 k.z.0 0 z.(.0 (.z.(.(.(.(.3+(.3+{ 3+3+{ 3+{ 3+7+{ 7+&.7+&.7+&.7+S.[ [ S.m.[ m.m.m.m.m.:+-.:+-.-.. -.7 -.7 G+G+G+G+]+G+]+G+C+]+C+]+H+H+H+H+(.,+^+J.'+'+'+'+f.$ $ $ $ # $ $ # $ [.s [.s [.[.[.}.}.}.J.<.J.^.J.J.J.J.^.J.^.J.J.J.N J.}.^.J.J.^.$.^.}.^.}.$.}.$.J.$.J.$.$.$.$.^.$.$.$.$.$.$.^.$.J k.J $.1 J 1 J J 1 J w J J 1 J 3 J w 3 J 3 3 1 3 J 1 3 1 3 1 J J 1 J 3 J 1 J 1 0 0 1 0 (./ (.I (.{.> {.{.{ {.3+{ { 3+&.&.&.7+&.&.[ &.[ 7+&.[ 7+&.[ S.7+S.m.S.[ S.S.[ S.S.S.S.m.S.[ S.S.m.S.m.m.m.m.m.-.:+m.m.-.m.-.-.:+-.-.-.-.-.-.G+G+x+D+G+-.G+G+-.G+G+G+G+G+G+w+A+]+G+w+A+]+A+]+A+]+H+C+]+C+]+H+y+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+b+d+b+b+b+d+b+b+$+d+b+$+d+$+$+d+$+$+$+d+$+$+$+$+$+-+-+-+-+=+=+=+P.P.!+,+,+,+Y.Y.Y.Z.Z..+3.t.W.W.W.W.G.6.#+6.a.W.W.t.t.t.t.3.3.3.G 9.~.9.9.~.~.~.~.~.~.F F F ~.F h ~.h G G v v X 6.n.B.Q A.x.T.4.4.H.b.b.P X z 3.3.u.2.u./._+/.}+%.}+%.5.%.}+%.}+5.%.}+5.5.%.w.J }+5.J w.J J 5.w.5.k.J %.5.J }+J 5.k.5.k.J k.5.k.J k.J 5.J 5.J 0 k.J 2+J z.J J J z.J J z.J J 0 5.0 0 0 z.z.0 (.(.(.(.(.(.(.(.(.(.3+* (.{ 3+* 3+{ { { { { { 7+&.7+&.&.[ [ S.[ S.S.m.m.m.m.m.m.m.m.-.:+-.-.7 -.7 G+7 G+G+7 G+7 G+]+]+C+]+]+]+H+H+H+H+[ R.^+^+!+'+J.Q.I.S $ $ # $ $ $ $ $ $ s I.s [.s [.s }.}.<.<.<.^.7.J.N J.N J.<.J.<.J.N J.J.^.J.^.}.^.}.J.J.}.$.$.J.$.}.$.}.$.$.$.^.$.$.^.$.^.$.^.$.k.$.w $.w k.w J J w J w J J w J %.J 1 J J 1 J 1 J 1 J 3 J J J J J 3 J J 0 1 0 J 0 0 / 0 (./ (.I (.> (.{.(.{ 3+{ &.{ &.&.&.7+&.&.&.7+&.7+&.<+[ [ [ S.[ [ S.S.[ [ S.m.S.m.S.m.[ m.S.[ m.S.m.m.[ m.m.m.m.m.m.m.-.-.-.m.-.-.-.-.-.-.7 -.G+-.G+-.G+G+G+G+-.G+G+G+G+G+G+G+A+G+G+G+A+]+G+G+]+A+]+A+w+C+y+y+]+C+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+b+b+d+b+d+b+d+d+b+b+d+d+b+$+d+$+$+d+$+$+$+$+O.$+c+-+O.=+=+Q.e+!+!+,+,+,+Y.Y.Y.Z.Z.a+.+3.W.W.W.W.G.6.#+G.W.W.W.t.t.3.3.3.3.3.9.9.9.9.~.~.#.#.#.!.F F F F ).F F ).).~.~.G G G v X d *.0+Q x.A.x.x.4.4.H.b.b.X X 2 3.9 u.2././.E./.}+w.E.w.}+%.5.%.}+w.5.%.%.5.}+5.J %.}+J }+5.%.5.k.J }+J 5.E.J 5.k.5.J J 5.J k.J J 5.J k.5.J k.5.0 5.0 5.J 5.z.J J 5.z.0 J z.5.k.z.J z.0 0 (.z.0 z.0 (.(.(.(.(.(.{ (.{ (.{ 3+{ 3+{ 3+7+3+&.&.7+&.7+[ 7+S.[ S.S.[ m.[ m.m.m.m.-.:+-.-.-.. -.7 -.7 G+G+7 w+7 ]+]+C+G+]+]+C+H+C+H+H+. K.^+'+'+J.J.'+'+I.S E+$ $ $ E+$ # $ $ [.s [.I.[.s [.}.}.<.J.J.J.J.^.J.J.J.J.^.J.^.J.J.^.}.J.}.J.^.$.J.$.}.$.J.$.}.$.J.$.J.$.J.$.$.$.$.$.$.k.$.k.$.$.$.J k.J $.J $.%.J J J J w J J 1 J %.1 %.J 3 J J 3 J 1 J 1 J 1 J 1 J 1 J 0 1 0 / 0 0 I 0 I (.I (.{.(.{ { {.{ {.3+{ 3+{ &.&.&.&.7+<+7+&.[ 7+&.7+&.[ 7+S.[ S.[ S.m.[ S.S.m.S.m.S.m.S.[ m.S.S.m.m.[ m.m.m.-.m.-.:+m.-.-.m.-.-.-.-.G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+]+G+A+]+G+A+]+A+]+A+]+H+y+]+C+y+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.b+b+b+b+d+b+d+b+d+$+d+b+$+$+d+$+$+d+$+d+$+d+$+-+-+-+-+=+-+e+=+P.,+,+8.Y.Y.Z.Z.Z.a+.+t.W.t.W.M.G.#+G.M.W.W.t.t.t.3.3.t.Z.Z.9.9.9.~.~.8.#.!.!.!.!.!.!.!.F !.F !.).F F ).h ~.G G G v X P e.B.A.*.T.*.4.4.H.b.b.b.X z 2 3.9 u.2./._+K.%.E.%.%.w.E.w.J w.J }+5.5.w.J }+5.k.5.%.J 5.5.k.%.J J 2+J 5.J 2+J J 2+J k.J J 2+J k.5.J J 2+0 J J k.J z.k.0 k.z.0 k.0 0 5.0 z.0 0 z.0 k.0 z.(.(.(.(.(.(.(.(.(.(.{ (.3+{ 3+{ { { 3+{ &.7+7+&.7+&.[ [ [ S.S.[ m.m.m.m.m.m.m.:+m.m.. :+-.:+-.7 G+-.7 G+G+7 G+G+]+]+C+]+H+H+]+H+H+H+(.,+^+^+!+!+'+'+Q.I.5+f.f.f.f.f.S f.S f.s I.s [.s [.I.M }.<.<.<.^.<.J.<.^.<.J.<.J.<.^.<.J.^.J.^.}.^.}.J.}.^.}.$.J.}.$.}.$.}.$.$.$.$.$.$.$.$.$.$.$.$.^.$.$.$.$.J $.J $.J $.1 J J 1 J $.J J J 1 J 1 J 1 J J J J J J J 1 0 J 0 1 0 0 J / k.0 0 I (.I (.> (.{.(.{.(.{.{ &.&.&.&.&.7+&.&.&.[ &.S.&.[ [ [ S.[ S.[ S.[ S.S.S.m.[ m.S.[ S.[ S.m.S.[ m.m.[ m.m.m.m.m.m.m.m.-.m.-.:+-.-.-.-.-.-.x+-.G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+A+G+G+G+G+]+A+G+C+w+C+]+C+y+]+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+d+b+d+b+b+b+d+b+b+b+$+d+b+$+b+$+$+d+$+d+-+c+-+-+-+=+e+=+!+,+,+,+Y.Y.Z.Z.Z.a+.+a+W.a+W.M.G.G.G.W.W.W.t.t.t.3.3..+Z.9.9.9.9.~.8.8.8.!.!.8.!.!.!.!.F !.!.!.!.F F ).F F F ).~.G G v v X b.n.Y A.x.T.x.4.4.H.b.b.P X z 3.3.u.u././.w./.}+%.}+%.w.J }+5.}+J }+%.5.%.5.%.}+%.2+w.2+%.J 2+J 2+J 2+J 2+J 5.k.J 5.k.5.k.J 2+J 5.5.k.0 5.J z.0 k.J z.0 z.0 2+0 5.0 0 k.0 z.k.0 0 z.(.(.0 (.0 (.(.(.(.(.{ (.3+{ { 3+{ 3+{ 3+{ 7+{ &.&.&.[ [ &.[ [ [ S.m.m.m.m.m.m.m.m.-.:+-.-.-.. G+7 x+7 G+G+7 ]+G+]+]+A+]+]+C+]+H+H+H+H+{ Y.^+'+'+J.'+J.'+I.<.I.I.h.[.[.[.[.s [.s [.s s [.[.[.[.}.}.}.J.<.J.|.J.J.J.^.J.^.J.^.J.J.N J.}.J.}.J.^.}.^.}.J.$.}.$.}.$.J.$.J.$.$.$.$.$.$.$.$.$.$.k.$.J $.J $.$.J $.J $.1 J $.J $.k.1 J $.1 J 1 J J J J 1 J 1 J 1 J J J / J 0 1 0 I 0 / 0 I (.I (.(.(.{.(.{ {.{ 3+&.3+{ { 3+&.&.&.7+&.&.7+&.7+<+7+&.7+[ [ S.7+S.[ m.[ S.S.S.m.S.m.S.[ [ m.S.m.S.m.m.m.m.m.m.-.m.x+-.m.-.-.-.-.-.:+G+-.G+-.G+-.G+-.G+G+G+-.G+G+G+G+G+G+G+G+G+]+A+]+A+G+G+]+w+C+w+y+]+C+y+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+b+b+b+b+b+d+b+d+b+d+d+b+$+$+$+d+d+$+d+-+d+-+f+=+e+e+!+,+,+,+Y.Y.Y.Z.Z.a+.+a+t.W.W.M.G.6+M.W.W.t.t..+3.a+Z.Z.Z.9.9.~.Y.8.8.8.8.!.!.!.!.!.!.!.!.!.!.!.!.F !.!.!.F !.F ).F h ~.G G 2 V X *.0+Q A.x.T.4.4.H.b.b.b.X z 2 3.9 j u././.E.w.E.%.}+J }+%.}+J }+5.2+5.2+J }+k.5.J 5.J J k.5.k.5.k.5.J 5.J 2+J 2+J k.J k.J J k.0 k.0 k.J z.J k.0 k.0 k.J J 0 0 0 k.z.0 z.0 0 0 (.(.0 (.(.(.(.(.(.(.(.{ (.3+{ (.3+{ { { { &.7+&.&.&.7+[ 7+S.[ S.S.S.m.m.S.m.m.m.m.-.:+-.-.:+-.7 x+7 -.7 G+G+7 G+G+G+]+C+]+C+]+H+H+C+H+H+-.R.l+^+'+!+'+!+'+Q.Q.I.I.I.[.[.h...h.[.s I.[.s I.s [.s I.M }.<.J.N J.J.<.^.<.J.<.J.<.J.<.$.J.}.J.$.J.$.}.J.}.$.$.}.^.}.J.}.$.}.$.$.J.$.$.$.$.$.$.$.k.$.$.$.$.$.$.J $.J $.J $.J $.J $.J $.J $.J J $.J $.J 1 J J J / J / J / J 0 I 0 I / 0 I (.I (.(.> {.{ {.{ {.{ 3+{.{ &.&.&.&.7+&.7+&.&.7+<+[ &.[ [ S.[ S.S.[ S.S.[ S.S.m.[ m.S.S.[ S.S.[ S.[ m.[ m.m.m.m.m.m.m.-.m.m.:+-.m.-.-.-.-.-.G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+w+C+G+G+G+G+]+y+]+A+]+y+C+A+H+]+y+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.b+d+b+d+b+d+b+b+d+b+d+b+$+d+b+d+$+-+-+-+-+=+=+e+'+e+!+,+,+Y.Y.(+Z.Z.a+.+a+W.W.W.M.G.M.W.W..+a+.+a+a+Z.Z.Z.9.Y.Y.8.Y.8.8.!.!.i.!.i.!.i.+.+.!.+.!.D !.!.!.!.!.!.!.!.!.!.F F ~.).G G @.v X P B.B.A.*.*.x.4.4.H.b.b.b.X z 2 3.3.2.u././.K.%.}+%.E.w.k.5.}+J J 5.k.%.2+J 5.E.J }+J }+5.J }+J 5.k.5.k.J J k.J k.J k.J k.J k.0 k.J 5.z.J 0 k.0 0 J z.z.0 2+0 2+0 0 k.0 k.z.(.0 (.(.(.(.(.(.(.{ (.{ 3+{ { { { { { 3+&.{ &.{ &.7+[ [ &.S.[ S.[ m.[ m.S.m.m.m.m.m.. m.-.-.-.. -.7 -.G+G+G+7 G+]+]+]+C+]+]+H+]+H+H+H+H+7 %.!+^+'+'+'+J.Q.J.Q.'+Q.I.I.[.h.[.[.s [.h.[.s s [.[.s [.[.}.}.}.<.<.J.<.J.J.J.J.J.J.^.}.J.J.J.^.}.J.}.}.^.}.$.J.}.$.}.}.$.$.$.$.$.$.$.$.}.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.k.$.J $.k.$.J $.J $.J $.$.J $.J J $./ 1 / J / J 0 k./ I J I 0 (.0 I (.> (.{.(.{.(.{.(.{.3+{.{ &.3+{ &.&.&.&.&.7+&.S.&.7+S.&.7+&.[ 7+[ S.[ S.[ m.S.[ m.S.m.S.S.[ m.S.m.S.m.m.m.[ m.m.m.m.-.m.:+-.-.-.-.-.-.-.-.-.-.-.-.G+G+G+D+G+G+G+G+G+G+G+G+G+G+G+G+G+w+A+]+A+G+C+G+C+w+C+]+H+]+A+]+H+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+b+b+b+b+b+b+d+b+b+d+b+d+b+d+$+d+-+d+-+-+f+e+'+e+!+,+,+,+Y.Y.Y.Z.Z..+a+W.W.W.G.M.M.W.q+.+a+.+3.Z.Z.Z.9.Y.Y.Y.8.8.i.i.i.i.i.i.+.i.7.7.+.i.+.7.!.!.!.D !.D !.D !.F !.F !.!.).F F ~.G G G v X b.0+B.*.T.T.x.4.H.H.G.b.G.X 2 3.9 u.2./././.E.%.}+%.k.w.k.J }+k.%.5.2+J }+J 5.J J J J 2+J 5.k.5.J k.5.k.J k.J 2+J 5.k.J k.0 k.z.J 0 k.0 k.0 k.z.k.J J k.0 0 0 z.0 z.(.0 (.0 (.(.(.(.(.(.(.(.{ (.(.{ (.{ 3+{ 3+{ { &.&.7+&.[ &.&.[ [ S.[ S.m.S.m.+ m.m.m.m.-.:+m.-.:+. -.-.7 x+7 G+7 G+G+]+G+G+]+G+]+C+]+H+H+H+H+C+0 K.l+J.'+J.'+!+Q.Q.<.Q.I.I.I.h.[.h.[.h.s [.s I.s [.s [.s I.}.<.<.J.<.J.J.<.^.<.^.<.J.J.J.}.^.}.J.$.^.J.$.}.J.}.$.}.J.}.$.}.}.J.}.$.}.$.$.$.}.k.$.$.$.$.$.$.k.$.$.$.k.$.$.J $.$.J $.J $.k.$.J $.J J 1 0 $./ J k.J $.0 k./ / I 0 0 I 0 I 0 (./ (.I (.{.(.{ {.{ {.{ {.{ &.3+&.&.&.7+&.7+&.&.7+&.[ &.7+[ [ [ S.[ S.7+S.S.[ S.m.S.S.S.S.[ m.S.[ [ S.S.[ m.m.m.m.m.m.m.m.-.-.m.m.-.:+-.-.-.-.G+x+G+x+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+C+G+G+G+G+]+G+]+G+C+w+C+w+C+H+A+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+b+b+b+d+b+b+d+b+b+d+d+d+d+-+d+-+-+f+e+'+e+!+,+,+k+Y.Y.n+Z.a+a+a+W.W.M.M.M.W.W..+a+3.a+Z.Z.Z.Z.Y.Y.Y.Y.8.8.i.,+i.i.7.7.7.7.7.7.+.i.7.i.+.].+.'.+.!.+.!.+.!.!.D !.!.!.F !.F F ).~.G G G v X 4.N.A.x.4.T.4.4.H.b.b.G.a.z 2 3.9 u.u././.K.%.E.}+%.E.}+J }+5.k.2+%.k.5.k.J 2+J 2+5.k.5.k.5.k.2+J J 5.k.5.k.J k.k.J k.0 k.J J z.k.0 k.0 k.0 J 0 z.0 z.0 z.k.0 0 0 (.(.0 (.(.(.(.(.(.{ (.{ (.3+{ { { 3+{ { &.&.&.7+{ &.7+&.[ [ [ S.S.S.[ S.m.m.m.m.m.. m.m.-.-.-.-.-.7 :+G+G+G+7 G+G+7 G+C+]+C+]+H+]+C+H+H+H+H+{ Y.'+J.'+J.'+'+Q.!+'+Q.Q.<.I.I.I.h.h...[.[.h.[.[.[.h.[.s [.M }.}.}.<.<.^.<.J.J.J.<.J.^.}.^.J.J.^.<.J.}.}.J.}.$.}.}.$.}.$.}.}.$.$.$.$.$.$.}.$.}.$.$.$.$.$.$.$.$.$.k.$.$.k.$.$.$.k.$.J $.$./ k.$.0 $.I k./ k.J I / I 0 I / k.0 k.I I 0 I I (.I (.I (.{.(.{.(.{.(.{ 3+&.3+{ &.{ &.&.&.&.&.7+&.&.7+<+[ &.<+[ 7+&.[ S.[ S.[ S.[ S.m.[ S.m.S.S.[ S.m.[ m.m.[ m.m.m.m.m.m.-.m.m.-.-.-.-.-.-.-.-.G+-.-.G+G+-.G+-.G+G+G+-.G+G+G+G+G+G+G+G+w+G+C+w+C+w+C+w+C+w+H+y+C+]+y+]+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+b+b+d+b+b+b+d+b+d+d+d+;+d+;+-+f+f+e+'+!+!+,+k+(+Y.(+Z.Z.Z.a+t.W.M.M.W.W.a+.+a+Z.a+Z.Z.Z.Y.Y.Y.,+8.!+P.i.P.P.7.7.P.7.P.i.7.7.i.'.7.'.+.'.+.7.+.i.D !.D !.!.D !.!.!.!.!.!.!.).F ~.~.G G v v X A.e.A.*.T.x.4.4.H.b.b.G.a.z 2 3.9 u././.w.E.%.%.E.k.%.%.2+J }+J 5.2+J J 2+J J 2+J k.5.k.2+J 5.J 2+k.J k.J k.J 0 k.0 k.J J z.k.0 k.0 k.0 0 z.0 k.0 k.0 k.0 z.(.0 (.(.(.(.(.(.(.(.{ (.{ (.3+{ { 3+{.&.{ &.{ &.{ &.&.[ &.[ [ [ [ S.[ S.m.m.+ m.m.m.m.m.:+-.-.:+. -.7 -.G+7 x+7 G+G+7 G+]+]+G+]+C+]+H+H+H+H+H+&.Y.l+J.'+'+Q.!+Q.!+Q.<.Q.Q.Q.I.p.I.[.[.[.h.[.s [.s s I.s [.}.}.}.<.<.J.<.J.J.J.N J.}.J.<.J.J.}.J.}.$.J.$.J.$.}.J.}.J.}.}.}.}.}.$.}.}.$.}.}.$.$.$.$.$.$.$.$.$.$.$.$.$.I k.I $.I k./ k.I k.I J $.0 $.J k./ k.I I / k.k.0 $.0 I I I I 0 (.I (.I (.(.(.> (.{ {.{ 3+{ {.{.{ &.{.&.&.3+7+&.&.7+&.<+7+&.[ <+7+[ 7+[ S.S.7+S.[ S.S.S.S.S.m.S.[ S.[ m.S.[ m.m.S.m.m.m.m.m.m.m.m.m.x+-.m.-.:+-.-.-.-.-.-.G+-.-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+C+G+w+G+G+A+]+A+]+A+]+C+]+H+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.b+d+b+b+b+d+d+b+d+d+;+;+f+f+f+f+e+!+!+!+,+k+R.Y.(+n+Z.n+a+W.W.M.W.W.q+a+.+a+Z.Z.Z.Z.Y.Y.Y.,+,+i.,+P.P.7.!+7.7.P.P.7.g.7.g.'.'.7.7.'.7.7.7.i.D i.+.7.+.+.D +.!.!.D !.D !.!.F !.F ).h ~.G G v v P A.N.A.*.4.T.H.4.H.b.G.G.X z 9 3.9 2././.K.E.%.E.%.}+k.%.k.k.5.E.J k.5.J 2+k.5.k.5.k.k.J k.k.k.J k.z.k.k.k.k.J k.J 5.k.z.k.0 k.0 k.0 k.0 k.0 0 z.0 z.0 (.0 (.(.0 (.(.(.(.(.(.{ (.(.3+{ { {.(.{ { { &.{ &.&.7+&.[ [ [ [ S.S.S.[ m.m.+ m.m.m.m.m.. m.-.-.:+-.-.7 -.G+7 x+7 G+G+]+G+]+G+C+]+C+]+H+C+H+H+H+[ Z.^+'+'+J.'+J.Q.Q.Q.Q.Q.<.Q.<.I.I.M h.h.[.s [.h.[.[.[.s [.M }.I.}.<.<.<.J.J.<.J.J.J.J.<.J.}.J.J.^.J.}.$.}.}.}.}.}.}.}.$.$.}.$.}.$.}.$.}.$.$.j.}.$.$.}.$.j.$.j.$.$.$.k.$.$.$.k.J I $.$.k.I k.I I $.k.I I k./ k.0 k.I I I 0 I I 0 (.0 I I (.(.I (.{.{.(.{.(.{.(.{.{.3+{ 3+&.{ &.&.&.&.&.7+&.&.7+&.S.&.7+&.[ &.[ [ 7+S.[ S.[ S.m.S.[ S.S.S.[ S.[ [ S.m.[ m.m.[ m.m.m.m.m.-.m.-.m.-.-.-.-.-.-.G+-.G+-.G+G+-.G+G+-.G+G+-.G+G+G+G+G+G+G+C+w+G+A+G+]+G+G+]+G+]+y+H+y+A+]+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+b+b+b+d+b+d+b+d+;+f+f+f+f+f+e+!+!+!+,+k+k+Y.k+n+Z.Z.a+W.W.W.W.q+a+Z.Z.Z.Z.Z.Z.Y.Y.Y.Y.,+!+i.!+P.7.P.Q.P.g.=+Q.g.Q.g.g.g.7.g.P.'.7.7.'.7.'.+.7.'.!.D i.+.i.D +.!.!.!.!.!.!.!.!.!.F ).~.G G 3.v X P B.B.*.*.*.4.4.H.b.b.G.G.X 2 3.9 u.u././.%.E.w.E.%.}+J }+J k.5.k.J k.2+J J 2+J k.2+J 2+k.J k.z.J k.J z.k.z.k.0 k.(.k.0 k.0 k.z.0 0 z.0 0 k.(.0 k.(.(.0 (.(.0 (.(.(.(.(.{ (.(.{ { (.{ 3+{ { &.&.{ &.&.{ &.[ [ &.[ [ S.[ [ S.m.! m.m.m.m.m.m.:+m.-.:+-.. -.7 x+7 -.G+7 G+7 G+]+G+]+]+w+H+]+H+H+]+H+H+m.3.'+'+J.'+Q.J.Q.Q.Q.7.Q.Q.Q.<.Q.Q.I.I.I.I.h.[.s [...s [.[.I.}.M }.<.}.<.<.<.J.J.<.J.<.J.}.J.^.}.}.J.$.J.}.^.}.$.J.}.$.}.}.}.}.}.$.}.$.}.$.}.$.$.$.~+$.j.$.$.$.$.j.k.j.$.I k.I $.$.k.I $.I $.I k.I 0 I 0 $.I k.I I I 0 k.I (.I (.I I (.(./ (.I (.> (.{.{.(.{ {.{ 3+{ {.&.{ &.3+&.&.&.&.&.&.&.7+&.7+&.[ &.S.7+[ <+S.[ S.[ S.S.S.[ m.S.m.[ S.m.[ S.[ S.[ m.S.m.m.m.m.m.m.m.-.m.-.m.m.:+-.m.-.-.-.-.-.-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+]+A+G+]+y+G+C+]+C+]+]+H+y+]+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+b+d+b+d+;+d+f+;+f+f+f+f+!+'+!+!+,+k+R.(+(+Z.a+a+q+W.W.W.q+a+Z.Z.Z.Z.Z.Y.Y.Y.,+,+!+7.!+P.!+P.=+Q.P.=+Q.=+g.g.Q.g.g.7.Q.g.7.g.7.'.'.7.'.7.'.7.7.+.7.+.'.+.+.D +.D +.D !.D !.!.!.!.F F ~.G G G v X b.e.A.*.T.T.4.4.H.b.b.G.G.z 2 3.9 j /./.K.%.E.%.E.k.E.J }+J k.5.k.5.k.5.k.k.2+k.J k.k.0 2+0 k.J z.k.k.k.k.0 k.0 5.(.k.0 (.0 J (.k.0 k.0 (.0 (.0 0 (.(.0 (.(.(.(.(.(.(.(.{ (.3+{.{ { { {.{ &.{ &.&.{ [ &.&.[ [ [ S.[ S.m.m.m.m.m.m.+ m.m.m.-.:+-.-.-.:+-.7 -.G+G+7 G+]+G+]+G+]+A+]+C+]+H+C+H+H+H+-.u.l+J.'+'+J.'+Q.'+Q.J.Q.Q.7.Q.Q.Q.<.p.I.M I.M h.[.[.I.[.s I.s }.}.<.<.<.<.J.<.^.<.J.<.J.}.J.}.J.J.$.J.}.J.$.}.J.}.}.}.}.$.}.$.}.}.}.$.~+$.}.$.j.}.j.$.$.$.}.j.j.j.$.$.I k.$.I k.I $.I $.k.I k.$.I $.$.I k.I 0 I I 0 k.I I 0 I k.I (.I (.I (.I (.{.(.{.(.(.{.{.3+{.{.3+{ &.3+&.&.&.3+&.&.7+&.7+&.&.S.7+<+7+[ &.7+[ 7+S.S.[ S.[ m.S.[ S.S.S.[ [ S.[ S.[ S.m.[ m.m.m.m.m.m.m.m.m.:+-.-.-.-.-.-.-.-.G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+C+G+G+G+G+A+]+C+w+A+w+C+A+]+C+y+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+d+b+d+;+d+;+f+f+f+f+!+l+!+!+k+k+k+(+(+n+a+a+a+W.W.a+a+n+Z.Y.Z.Y.n+Y.,+,+,+!+,+!+P.!+P.P.=+Q.Q.=+Q.-+g.g.O.Q.=+g.Q.g.g.g.g.<.g.g.7.'.7.'.7.'.7.'.7.'.+.+.7.+.i.+.!.!.D !.!.D !.F !.F ).~.G @.3.v X H.e.A.*.x.T.4.4.H.b.G.G.a.z 3.9 9 u.u./.K.%.E.%.E.J E.J J }+k.J k.J k.k.5.k.J 2+k.5.k.k.J k.k.k.0 k.0 (.k.z.k.(.k.0 z.k.0 (.k.0 0 (.(.0 (.k.(.(.0 (.(.(.(.(.(.(.{ (.{ (.{.{ { { {.&.{ &.{ &.&.&.7+&.[ [ [ [ S.[ S.m.m.! m.m.m.m.m.m.:+-.:+-.-.. 7 -.7 -.G+7 7 G+G+G+]+G+C+]+C+]+]+H+H+H+H+H+. w.J.J.'+'+J.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.I.Q. .I.I.I.I.I.M [.M I.M }.}.<.}.<.<.J.<.J.<.J.<.J.}.J.<.J.J.}.}.^.}.$.}.^.}.$.}.}.$.}.}.}.}.}.$.}.}.}.j.$.j.$.$.}.j.$.j.$.$.$.$.j.$.$.I $.$.I k.I k.I I I I k.I 0 (.I k.I (.k.I I I (.(.I (.(.I (.I (.{.(.{.(.{.(.{ {.{ (.{ {.{ {.&.3+&.&.&.&.7+&.7+&.&.&.&.7+[ &.&.[ <+[ [ [ [ S.[ S.7+S.[ S.S.S.[ [ S.S.[ [ m.S.m.[ m.m.[ m.m.m.m.-.m.-.m.-.m.-.m.-.-.7 -.-.G+x+-.G+G+-.G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+A+]+A+]+A+w+A+]+C+]+H+C+w+H+A+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.d+b+g+f+d+r+f+f+f+l+!+l+k+k+k+k+(+(+n+a+a+q+W.W.a+h+Z.n+Y.(+Y.k+,+,+,+,+!+!+P.P.P.Q.Q.=+Q.Q.=+U.-+O.g.O.-+g.U.g.Q.g.Q.g.Q.7.g.7.g.7.g.7.'.7.'.7.7.D 7.'.!.'.!.D +.D +.!.+.!.!.!.D !.F F ~.~.G G v X X 4.e.A.T.*.4.T.H.H.b.G.G.P z 9 3.9 j /./.%.E.E.%.E.k.J k.J k.k.J 2+k.J k.J 2+k.J k.k.z.J z.0 k.k.0 k.k.0 k.0 0 0 k.0 (.k.0 0 k.(.0 k.0 (.0 (.0 (.(.(.(.(.(.(.{.(.{ c c , c c , c c , c , >.&.7+&.[ [ &., >.S.S.S.+ S.m.m., >.:+m.-.m.. -.-.. ,.C , C , C , C , T G+G+]+]+G+]+y+C+H+]+H+H+G+w.!+'+q c q q c q c q q W.Q.Q.Q.Q.Q.<.Q.Q.c.C f $ $ e ;.`.I.}.I.<.<.<.<.<.c 0+<.<.J.<.J.}.J.<.}.J.}.^.R q c q c 0+}.$.J.}.}.R c c c c c f.@+j.$.}.}.j.}.j.$.j.w.f.c $ $ $ e r o I k.I I $.I I R c c c c c c c c ;.k.I (.(.(.I I (.I (.I (.I (.I (., c c , c r ,.5.{.&.3+&.{ &.{ ,.c c , c , >.p 7+<+[ <+7+[ <+7+[ &.7+S.} >.< $ $ % b } S.[ S.[ S.[ S.[ S.[ m.=., , , , ,.m.m.m.m.-.,., , , , , , C , >.G+G+-.G+G+-.G+-.G+) r E+$ $ e T } A+G+]+G+G+G+C C C C C C C , C C , T y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+g+d+d+g+f+f+f+l+!+l+!+k+!+k+k+(+h+a+a+`.q+a+Z.h+Y.Y.k+Y.k+,+,+,+!+!+!+e+=+=+Q.-+-+=+=+Q.U.=+Q.O.g.-+O.O.g.-+O.g.O.g.Q.g.g.Q.g.Q.g.Q.'.g.7.'.7.'.7.7.7.+.'.+.7.!.7.+.D +.!.D +.!.!.!.!.F ~.~.G 3.@.X X a.*.B.A.T.*.4.4.H.H.b.G.G.a.z 9 l.9 u././.%.%.E.E.E.E.k.J 5.k.k.J 2+k.2+k.k.5.k.k.0 k.k.k.0 k.(.k.(.k.z.0 k.(.0 (.J 0 (.k.0 (.k.(.0 (.k.(.(.(.(.(.(.(.> (.{ (.{ (., c c , c $ E+, c , c >.&.[ [ &.[ [ $ , [ m.m.m.m.m.m.$ , -.:+m.:+-.:+-.7 ,.$ e , C , C , C >.]+G+]+A+]+C+]+H+H+H+H+G+K !+J.'+$ E+c q q c q q c W.Q.Q.Q.Q.Q.Q.|.C $ E+r f.f.e $ $ f.}.<.}.<.<.<.<.$ c <.<.J.<.<.J.}.J.J.J.}.J.R c E+$ c ;.J.}.}.}.$.f.$ e c q e $ $ 0+j.$.j.$.j.}.$.w.e $ e b S b e $ $ _.I $.I I $.I S $ e c q c q c c ;.(.I I I (.(.I (.I (.I (.{.(.{.(.$ E+, c , E+$ % =.3+{ &.3+&.3+T $ e , c e $ $ >.7+&.[ &.7+[ &.7+[ S.,.$ $ C - - C $ $ ,.S.[ S.[ [ S.[ m.[ m.} , , e $ - -.m.-.m.-.- $ e C , C , , C >.G+-.G+-.G+G+G+F+r $ E+b ,.,.e $ $ ,.G+A+]+A+G+C , C , C $ E+C C C C T A+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+d+g+f+f+f+l+l+!+l+!+k+k+k+(+h+a+a+a+a+a+Z.(+k+k+k+k+k+,+,+,+!+!+!+e+=+Q.-+-+=+=+-+-+O.-+O.O.O.-+O.O.U.-+O.O.=+O.Q.O.Q.O.Q.g.g.g.'.g.g.Q.g.g.'.7.'.'.'.7.7.7.D 7.D 7.+.7.D +.!.D !.!.!.F F ~.~.G 3.t.X X M.*.B.A.*.T.T.4.H.b.b.G.G.a.z 9 9 9 j /./.E.%.%.E.J E.k.k.J k.k.k.k.J k.k.k.J z.k.k.0 (.k.k.0 k.k.0 0 k.0 0 k.0 (.k.(.0 k.0 (.0 (.(.0 (.(.(.(.(.(.(.(.{.(.(.{.{.{ &.{.&.3+$ , &.&.&.[ &.[ &.[ [ [ 7+$ , S.m.S.m.+ m.m.$ , m.m.. -.-.. -.x+- $ ) G+G+G+G+w+G+]+C+]+G+]+H+]+H+H+H+H+-.w.!+'+'+'+$ q Q.'+Q.-+Q.Q.Q.Q. .Q. .Q.<.Q.n.$ e |.Q.}.I.}.@+e f.<.<.<.<.<.<.J.$ q J.<.<.J.}.<.J.J.}.$.J.}.}.J.c $ J.}.$.}.}.}.~+T $ _.}.j.j.@+E+$ R }.}.$.}.j.j.C $ b [+j.j.j.j.8+c _.I [+$.[+I k.T $ _.I [+I I I I (.I (.(.(.I I (.I (.{.(.{.(.(.{.(.$ c {.{.{.3+r $ % { &.3+&.&.&.T $ 9+&.<+7+) E+$ =.<+7+<+&.&.[ [ S.p $ E+9+S.7+S.m.9+E+$ 9+S.[ [ S.[ S.S.[ m.F+m.F+) $ - m.m.m.m.x+- $ ) -.-.-.z+-.z+G+x+-.G+G+G+-.z+b $ e F+G+z+z+A+} e ,.G+G+G+w+G+A+A+A+y+A+$ C y+A+y+A+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+;+f+f+f+'+l+!+!+k+k+k+(+h+a+a+a+a+a+(+(+k+k+k+R.,+,+!+!+!+'+-+=+=+-+-+-+=+-+-+O.-+O.O.O.O.O.-+O.O.O.Q.O.O.Q.O.g.O.g.O.g.Q.g.Q.g.Q.g.<.g.'. .7.'.'.7.7.'.+.'.7.D 7.+.D !.+.!.D !.+.!.F !.#.~.9.G G v X X X G.A.B.A.4.4.4.4.H.b.G.G.G.a.z 9 l.9 /././.%.%.E.E.%.k.E.k.k.k.J k.k.k.z.k.z.k.J z.k.k.k.0 z.k.0 0 k.k.0 k.(.0 k.0 0 0 (.0 (.0 (.(.(.(./ (.(.(.{.(.{ (.{ { { { { {.{ { { $ c &.&.[ &.[ [ [ [ [ S.S.$ , m.+ m.+ :+m.m.$ , -.. :+-.7 -.7 -.,.$ ) w+7 ]+G+G+]+G+w+]+]+C+]+C+H+H+H+m.l.^+'+'+J.'+$ c Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.6+$ % K.Q.Q.<.Q.<.<.<.@+<.<.<.<.<.<.J.$ c <.<.J.J.<.J.}.J.}.J.}.J.}.J.c $ $.}.}.~+$.}.$.f.$ _.j.}.}.}.R $ C }.j.}.j.j.$.$ $ $.j.$.j.$.$.I I w.j.$.I I I j.S $ _.j.I I [+I (.I I (.I I (.(.I (.{.(.{.I (.{.(.(.$ c { (.{ 3+&.% $ =.3+&.&.3+&.T $ p &.7+&.<+>.$ T 7+[ &.7+S.7+[ 7+c $ ,.m.7+S.S.[ m.,.$ , [ [ S.[ [ m.[ m.[ S.m.m.9+$ - m.m.m.-.m.- $ ) -.-.-.-.-.-.-.-.G+-.G+-.G+) $ % F+G+G+G+G+G+z+A+} G+w+C+G+A+G+]+w+A+w+$ , C+y+]+y+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.f+f+l+l+!+l+k+l+k+(+(+a+a+a+h+h+k+k+k+k+,+!+,+!+e+!+e+'+e+-+=+f+-+-+-+$+O.$+$+O.$+O.O.-+O.-+O.O.-+O.U.O.=+O.O.-+O.-+O.Q.O.g.O.Q.g.g.g.g.Q.g.g.g.7.'.'.'.'.7.D 7.7.D +.'.+.+.+.+.!.F !.#.#.~.~.G 3.t.t.X P 4.A.A.B.A.T.4. +H.H.b.G.G.a.M.z 9 9 u.j /.%.%.E.E.k.J k.k.J k.k.k.k.k.J k.J k.z.k.0 k.0 k.k.0 k.0 0 0 (.0 0 k.(.0 k.(.0 (.(.(.(.(.0 (.(.(.I (.(.{ (.{ (.{.3+{.{ { 3+&.&.$ c [ &.[ [ [ &.[ S.[ S.[ $ , m.m.m.m.m.. m.$ , -.-.-.. -.7 -.7 ,.$ ) G+G+G+]+G+]+C+]+C+y+H+H+H+H+H+[ 3.^+'+'+'+'+Q.$ c Q.Q.p.Q.p.p.p. .p.Q. .Q. .n.$ R Q.Q.<.I.<.I.<.I.<.<.<.<.<.<.<.N $ c 7.J.<.<.J.}.J.}.J.}.}.}.J.}.c $ J.}.}.$.}.}.}.T $ _.}.j.}.j._.$ c }.j.j.}.$.j.$ $ ++j.j.I j.j.j.$.I I j.I I j.I T $ 8+I (.I I j.I (.(.I (.I j.(.{.{.(.I (.{.{.(.{.{ $ c 3+{.{.{.3+, $ p &.{ &.&.&.T $ p 7+&.&.7+T $ T S.&.[ <+[ &.[ } $ % S.S.[ S.[ S.[ S.% $ } S.[ [ S.[ S.[ m.m.[ m.) $ - m.m.-.m.-.- $ ) m.-.-.-.z+-.G+-.G+G+G+G+G+b $ ,.A+G+G+G+G+G+G+A+A+A+G+G+]+G+]+A+G+]+C+$ , y+H+C+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+f+l+l+l+k+!+k+(+h+a+h+h+h+(+k+k+k+K.!+k+!+!+!+e+'+-+-+-+-+-+-+-+d+$+$+d+$+O.$+$+O.$+O.O.O.O.O.O.O.-+O.O.O.Q.O.Q.g.O.O.O.Q.O.g.g.Q.Q.Q.g.'.7. .g. .7.<.'.'.7.'.7.+.7.7.+.'.!.D +.!.!.#.F ~.~.9.9.3.3.t.X +T.*.G.4.B.A.4.4.4.4.6.b.G.G.v.a.z 9 9 u.j /.%.%.%.E.k.%.k.k.J k.J k.0 k.z.k.z.k.k.k.(.k.0 0 k.0 k.(.J k.0 k.(.0 (.(.0 k.(.(.(.0 (.(.(.(.{.(.{ (.{.{.{ 3+{ { {.{ &.{ &.{ $ c &.[ &.[ [ [ [ S.[ S.m.$ e ) ) ) ) ) ) ) $ , -.:+7 -.7 x+7 G+- $ ,.) ) ) ) ) ) } y+]+C+]+C+H+H+@ t.^+'+J.'+<.Q.'+$ e 5+c.c.5+c.c.c.|.Q.p.Q.Q.Q.% $ W.<.Q.<.<.Q.<.<.<.<.<.<.J.<.7.J.|.$ q J.<.J.<.<.J.}.<.}.J.}.J.}.}.c $ }.}.}.}.}.}.}.f.$ _.}.j.}.j.f.$ r }.j.}.j.j.$.C $ e o w.j.$.j.I j.j.I [+I k.I j.S $ T _._.p _.8+p @+(.I {.(.(.I (.{.(.{.(.(.{.{ (.{.$ c {.3+{ {.z.E+$ } 3+&.3+&.3+T $ 9+&.7+&.&., $ =.7+&.<+7+[ 7+S.,.$ b 7+[ S.7+S.[ S.[ b $ ,.[ [ S.[ S.[ m.[ m.m.m.p $ - m.m.-.m.m.- $ - ) ) ) ) ) ) } -.-.G+-.G+z+% $ } z+G+G+G+G+G+G+G+G+w+A+G+A+]+A+]+A+A+w+$ C y+]+y+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+f+l+!+l+k+k+(+h+(+h+(+k+k+k+k+!+!+l+!+l+e+f+f+f+f+f+-+-+d+-+d+-+$+d+$+$+$+$+$+$+$+O.$+$+O.O.O.O.O.O.-+O.O.U.O.O.O.Q.g.O.O.Q.O.Q.g.g.g.Q.Q.g.g.7.g.g.'.7.'.'.7.'.'.D 7.D +.+.+.!.i !.#.#.#.9.G 3.@.3.X 6.T. +P X M.4.B.A.4. +4.H.b.b.G.G.M.a.X 9 j l.j /.%.E.%.%.k.%.k.k.J k.k.k.k.k.0 k.k.(.k.z.(.k.0 k.(.0 k.(.(.(.0 (.k.0 (.(.(.0 (.(.(.(.I (.(.{ (.{.{ (.{ {.{ {.{ { { &.&.&.{ $ , [ [ [ &.[ [ S.! S.m.[ $ $ $ $ $ $ $ $ $ $ , -.7 -.G+-.7 G+G+,.$ $ $ $ $ $ $ $ C ]+C+H+H+H+H+{ .+l+'+J.'+'+Q.Q.Q.$ $ $ $ $ $ $ $ $ c. .Q.p. .Q.$ $ <.Q.<.Q.Q.<.Q.<.Q.Q.<.<.<.J.<.<.J.$ c <.<.J.J.<.}.J.}.}.J.}.}.}.J.c $ ~+}.}.}.}.j.}.T $ _.j.}.j._.E+$ ++j.}.j.j.}.j.4+e $ $ $ < C T ++I $.j.I I j.j.I T $ $ $ $ $ $ $ $ c I (.I j.(.{.(.(.{.(.{.{.(.{.{.(.$ c { {.3+z.r $ r 3+&.&.&.&.&.T $ p &.&.} r $ C 7+&.7+&.[ &.[ S.T $ T S.[ S.S.[ S.[ S.T $ - [ [ [ S.[ F+[ m.[ [ F+) $ - m.m.m.m.x+- $ $ $ $ $ $ $ $ , -.G+-.G+-.z+$ $ G+G+G+G+G+G+G+G+G+G+G+G+]+G+G+]+A+w+]+A+$ , ]+A+]+H+y+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+f+l+l+(+(+(+h+(+k+!+k+!+l+!+'+l+l+l+f+f+f+f+f+-+-+-+d+d+$+d+$+$+$+$+$+$+$+$+$+$+O.$+$+O.$+$+O.O.-+O.O.O.-+O.O.O.g.O.O.-+g.O.Q.g.Q.p.Q.g.g.g.g.Q.g.<.g. .'.7.'.'.7.7.D 7.!.+.+.!.!.#.#.~.9.9.3.3.3.z 6.T.4.X t.X X X +B.A.4.4.4.4.6.b.G.a.G.M.W.9 9 j /./.%.%.k.%.k.k.J k.k.0 k.k.0 k.0 k.(.k.0 k.(.k.(.(.k.(.0 0 (.k.0 (.(.(.(.(.(.(.(.I (.(.{.(.{.(.{.{ {.{.{ {.{ { &.&.&.{ &.&.$ , &.[ ! [ ! S.S.m.+ S.m.$ e 9+) ) ) ) ) ) $ , -.7 -.7 7 G+G+7 - $ ,.) ) ) ) ) ) } y+H+H+H+A+z.(+'+'+J.'+Q.Q.Q.Q.Q.$ e o+c.6+c.6+c.6+|.Q.p.p.Q.Q.$ $ Q.<.Q.Q.<.I.<.Q.Q.<.<.<.<.<.<.<.7.$ q <.J.<.<.}.J.<.}.J.}.}.}.J.}.c $ }.$.~+$.j.}.}.f.$ e q c % $ E+R j.}.j.j.}.j.j.j.[+R C % $ $ $ $ ;.I j.I j.I I [+T $ T p 8+8+8+8+8+=.(.j.(.{.(.{.(.{.(.{.{.{.(.{.{ 3+$ E+c , c $ $ c z.&.{ &.3+&.7+T $ $ $ $ $ $ >.<+[ <+[ &.7+<+7+[ T $ - S.[ S.7+S.[ S.[ T $ T [ S.[ [ [ S.[ F+[ F+m.p $ - m.m.m.-.m.- $ - ) ) ) ) ) ) } G+-.G+G+G+-.$ $ z+G+G+G+G+G+G+G+G+G+A+]+A+G+C+G+A+]+A+w+$ C y+H+C+w+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.l+f+l+k+h+k+!+l+l+!+l+l+!+l+l+'+'+f+f+-+f+-+d+d+d+d+d+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+O.O.$+O.$+O.-+O.O.O.-+O.-+O.g.O.O.Q.O.g.O.g.Q.g.Q.Q. .g. .g.7.g.7. .'.7.'.'.7.+.+.+.!.!.8.#.~.9.9.3.G 3.t.6.T.6.X 3.2 t.v X v b.f.A.4.6.H.H.6.b.G.G.a.a.X 3.l.j j /.%.%.E.%.^.k.k.J k.k.k.k.(.k.k.k.(.k.(.0 k.0 k.0 k.(.k.(.0 (.(.0 (.0 (.(.I (.(.(.{.(.{ {.{ 3+{ {.{ 3+{ &.&.{ &.&.&.[ &.$ c [ [ [ S.S.S.[ m.m.m.m.$ , -.-.m.m.m.-.-.$ , G+7 G+7 G+7 7 G+,.$ ) y+y+y+y+H+y+H+H+H+H+-.l.R.'+J.'+'+Q.<.'+Q.Q.Q.$ c p.p.p.p.p.p.p.p.p.Q. .p.Q.E+$ K.Q. .I.Q.<.Q.I.<.I.<.<.J.<.<.<.J.$ c J.<.<.J.<.<.}.J.}.J.}.}.}.}.c $ J.}.}.}.~+$.}.T $ e c c C f.}+j.}.j.j.}.j.j.}.j.j.j.j.j.j.8+b E+$ T j.j.I j.j.I f.$ 8+I j.(.{.I (.(.{.I {.j.(.{.(.{.{.(.{.(.{ {.(.{.$ E+, c , >.p 3+&.3+&.&.&.7+3+T $ r T T e E+=.7+&.7+[ S.&.[ [ S.- $ >.7+S.7+S.[ [ [ S.>.$ T S.[ [ [ S.7+[ [ [ [ 7+) $ T F+m.m.m.-.- $ ) -.-.x+B+x+B+x+-.z+D+-.G+D+E+$ F+D+G+G+G+G+G+G+G+]+G+G+G+w+G+]+]+A+]+A+$ , y+]+y+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+r+l+l+^+l+l+l+l+!+l+l+l+f+f+f+f+f+f+;+f+d+;+d+;+$+d+$+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+O.O.$+O.O.O.O.O.O.O.-+O.Q.O.g.p.Q.Q.O.g.Q.g.g.Q.g.Q. .g. .g.7. .7.<.D 7.+.7.+.8.|.#.#.9.9.9 3.3.t.6.T.6.X 3.3.G 3.G 3.t.2 P A.f.4. +4.H.6.b.G.G.M.a.X z 9 j 3 /./.w %.k.w k.$.k.J k.k.k.(.(.k.(.k.k.(.(.k.(.k.(.(.(.0 (.k.(.(.(.(.(.(.(.(.I (.(.{ (.(.{ {.{.3+&.&.&.{ &.&.&.&.&.&.[ $ , [ S.[ [ [ m.+ ! m.m.m.$ , -.m.:+-.:+-.-.$ , G+-.7 G+7 G+G+]+,.$ ) ]+G+]+H+]+H+C+H+H+[ u.K.'+'+'+<.Q.Q.Q.Q.Q.Q.p.$ q Q.p.p.p.p.p.p.p.p.p.I.Q.p.C $ R Q.Q. .I.Q.<.Q.Q.<.Q.Q.Q.<.J.<.<.$ q J.<.<.<.J.}.<.}.}.}.J.}.}.J.c $ j.}.j.}.j.~+}.f.$ _.~+}.[.j.j.}.j.}.j.j.}.j.j.}.j.j.j.j.j.j.j.R $ c j.I j.I j.[+T $ _.[+I {.(.{.I {.(.{.[+{.{.(.{.(.{.3+{.{.3+{.{.3+$ c {.3+3+3+&.&.&.&.3+&.&.&.&.T $ p 7+7+z.% E+=.S.&.7+&.7+[ 7+&.=.$ e S.[ S.[ S.[ S.&.e $ =.[ [ S.7+[ [ 7+7+[ 7+7+p $ - F+F+m.m.m.- $ ) F+-.-.-.-.-.z+-.-.G+G+-.G+r $ ,.G+G+G+G+G+G+G+G+G+]+A+G+C+w+A+w+G+C+w+$ C A+H+]+y+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.f+f+l+f+l+'+l+l+l+f+f+f+f+f+f+f+d+;+d+d+;+b+d+$+d+b+$+b+$+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+O.$+O.$+O.O.O.O.O.O.O.O.O.-+g.O.Q.g.Q.p.Q.Q.g. .g.g.Q.7. .g.'.'.7.'.+.7.!.+.!.8.#.9.9.9.3.3.3.c.T.6.W.3.G 9.G 9.G G 2 t.t.X T.B.4.6.6.H.6.6.G.G.M.a.a.z l.j j /.%.%.%.k.%.k.k.$.k.0 k.k.k.k.k.(.k.0 k.(.0 (.k.0 (.k.(.(.(.(.(.(.(.(.(.{.(.{ {.(.{ {.{.{ { { {.{ &.&.{ &.&.[ &.[ 7+$ , [ S.! m.S.! m.m.+ m.m.$ , :+. -.. -.7 -.$ , 7 7 G+G+7 G+7 G+,.$ ) C+]+C+]+C+H+H+A+0 a+'+'+'+J.'+Q.J.Q.Q.Q.Q.Q.Q.$ q p.p.p.p.p.p.p.p.p.p.p.p.p.T.$ q .I.Q.<.Q.I.<.I.K.Q.I.<.<.<.<.J.$ c <.<.J.<.<.J.}.}.J.}.}.}.}.}.c $ }.}.}.j.}.j.~+T $ _.j.j.}.j.}.j.j.j.}.j.j.j.}.5.}.j.}.j.j.I j.8+$ c j.j.I j.j.I T $ p {.I (.j.I 3+I {.(.{.{.(.{.(.3+{.(.{.(.{.{.{ 3+$ , 3+&.&.&.3+&.3+&.&.3+&.&.&.T $ 9+&.<+7+} E+e * &.&.[ S.&.[ 7+7+% $ 9+[ [ [ [ S.[ p $ % [ [ 7+[ [ [ 7+[ 7+@ @ @ p $ - [ [ F+m.-.- $ ) -.-.-.-.-.-.-.G+-.G+-.G+z+,.$ C G+G+G+G+G+G+G+G+F+G+G+]+G+G+G+C+G+]+A+$ C ]+A+H+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+g+f+f+f+f+f+f+f+f+f+f+f+;+;+d+b+;+d+b+d+b+d+b+b+b+b+$+b+$+b+$+$+$+b+$+$+$+$+$+$+$+$+$+$+$+$+O.$+$+$+$+O.O.O.O.O.-+O.Q.O.Q.O.O.Q.g.O.O.g.Q.g.Q.Q. .Q. .Q.g.7. .7.'.7.7.+.+.8.#.#.9.9.3.3.3.3.c.T.6.z 3.9.9.9.9.~.9.G G G G v X 6.f.*.4.6.6.b.b.G.G.M.M.a.X 2 l.3 j %.%.%.w J $.k.J k.k.0 k.(.(.k.(.(.k.(.k.I (.(.k.(.(.(.I (.(.I (.(.{.(.(.{.(.{ {.{ 3+{ {.&.&.&.&.&.&.&.[ &.[ [ &.$ , S.[ S.m.! m.m.+ :+m.m.$ , -.-.:+7 -.7 -.$ , G+G+G+7 G+]+]+G+,.$ ) y+]+]+H+H+H+m.w.R.'+'+'+'+Q.Q.Q.Q.Q.Q.Q.p.p.Q.$ c p.p.p.p.p.p.p.p.p.p.p.M p.I.% $ r Q.Q.Q.I.<.Q.f.f.I.<.<.<.<.<.J.$ q <.<.<.<.J.<.}.J.}.}.}.}.~+}.c $ }.~+j.}.}.}.j.f.$ _.}.}.j.j.j.}.j.}.j.j.}.j.j.< _.j.j.j.I j.j.C $ f.j.I j.I j.j.T $ _.I [+{.I 3+I {.(.{.{.(.{.(.{.{.(.{.{.{ {.3+{.3+$ c &.&.3+&.&.&.&.&.&.&.7+3+7+T $ p &.7+&.7+9+$ e z.S.7+&.[ 7+S.S.,.$ e * S.[ [ <+* e $ ,.[ S.[ [ [ 7+@ @ @ { @ @ T $ ,.F+[ F+m.F+- $ ) -.-.-.z+-.-.G+-.D+-.G+-.G+A+% $ b G+G+G+G+G+G+,.,.A+]+G+A+]+A+]+G+y+G+$ C A+H+]+]+H+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+;+f+g+f+f+f+g+;+f+;+b+d+b+d+b+d+b+b+d+b+b+b+d+b+d+b+d+b+$+b+d+b+$+$+$+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+O.$+O.O.O.O.O.O.O.O.O.O.O.O.O.Q.g.Q.p.Q.p.g.Q.g. .g. .g. .7.7.7.7.+.!.8.#.9.2.3.3.G 3.G. +6.z Z.9.9.~.#.#.#.#.~.~.G G 3.2 v G.f.A.4.H.6.6.b.b.G.a.M.a.W.3.9 3 /.3 %.%.E.%.J $.k.J $.k.k.I k.(.k.(.(.I 0 k.I (.(.(.(.(.(.(.(.{.(.(.{ {.{ (.{.{ {.{ &.{ &.&.{ &.&.[ &.[ [ [ ! [ $ c [ m.m.+ m.m.+ :+m.. m.$ , -.:+. -.7 G+7 $ , G+7 7 G+]+G+G+]+,.$ >.,.,.,.,.,.T f.!+~+'+'+J.Q.Q.Q.Q.Q.Q.p.p.Q.p.p.$ % f.f.f.f.f.f.f.u.p.p.p.I.p.p.`.E+$ c T.5+c.;.< $ f.<.I.I.<.J.<.<.$ % f.f.S f.f.f.R <.}.J.}.}._.f.< $ S R }.~+j.~+}.f.$ _.j.j.j.}.j.j.}.j.j.~+j.j.j.$ $ e T _._.R c $ e [+j.j.j.j.{.[+T $ r T T T T T T R {.j.3+{.(.{.{.{.{.{ 3+{.3+{.{.3+$ c 3+&.{.3+&.&.3+&.3+&.&.&.&.T $ p 7+<+7+<+7+,.$ b 7+&.[ 7+&.[ 7+S.r $ E+>.9+9+>.E+$ b 7+[ 7+[ 7+7+[ { @ r ,.p T E+E+} @ 7+F+[ m.- $ b - - ,.- ,.- ,.G+G+G+-.G+D+x+} E+$ , ,.) ) T < $ ,.G+A+G+G+G+G+]+A+]+A+$ , y+]+A+y+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.b+g+d+g+;+g+d+g+d+g+d+g+d+b+d+b+d+b+b+b+d+b+b+b+$+b+b+$+b+$+b+$+b+$+$+$+$+$+$+$+d+$+$+$+$+$+$+$+$+$+$+$+$+O.$+O.O.O.O.O.Q.O.Q.O.g.p.Q.g.O.Q. .Q. .Q.Q. .Q. .7. .7.+.7.!.8.8.2.9.9.3.9.3.6. +6.z 9.9.G 2.#.~.F !.F F #.~.~.G G 3.v X T.f.T.4.6.6.6.G.c.M.a.a.X W.2 j 3 %.%.w J ^.J $.k.k.$.0 k.I k.(.k.(.k.(.(.(.(.I (.(.(.I {.(.(.{.{.(.{.{ {.{ {.{ {.&.&.&.&.&.&.&.&.[ &.! &.S.[ $ , m.S.S.m.+ :+m.m.:+m.-.$ , -.. -.7 -.7 G+$ , G+G+7 G+]+7 ]+C+,.$ $ $ $ $ $ $ $ c '+'+'+I.Q.Q.Q.Q.Q.Q.Q.p.Q.p.p.Q.$ $ $ $ $ $ $ $ $ c.p.p.p.p.I.p.p.K.n.E+$ $ $ $ e R K.I.Q.}.<.I.<.<.$ $ $ $ $ $ $ $ c J.}.}.}.}.f.$ $ $ $ c }.}.}.j.j.f.$ _.j.}.[.j.}.j.j.~+j.j.j.}.j.R C $ $ $ $ $ E+T j.j.j.I j.I j.j.T $ $ $ $ $ $ $ $ c 3+{.I {.{.3+{.3+{.3+{.{.{.3+{ {.$ c &.3+&.&.3+&.&.&.7+&.&.&.&.T $ 9+&.7+&.[ <+&.>.$ r 7+<+[ [ S.[ 7+7+,.< $ $ $ $ % ,.7+[ [ S.[ [ @ 7+{ @ $ $ $ $ % ) @ @ @ @ F+m.- $ $ $ $ $ $ $ $ C -.-.G+G+-.G+G+z+F+b % $ $ $ $ e ,.B+G+G+]+A+]+A+]+A+w+]+$ C y+C+]+C+]+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+u+d+;+u+d+;+d+g+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+d+b+b+b+$+b+b+$+b+$+b+$+b+$+$+$+$+$+$+$+$+$+$+$+$+O.$+$+O.O.O.O.Q.O.O.O.O.O.O.O.O.Q.p.Q.O.g.p.g.Q.g.Q.g. .7.7.7.+.8.8.2.9.9.3.3.3.c. +6.3.9.3.9.#.#.#.!.F 8.!.!.F F #.~.G G 3.@.X b.f.T.4.H.b.6.b.G.c.M.a.X W.3.9 j 3 %.%.J ^.J $.J k.$.0 k.k.I k.I (.I k.I (.(.I (.I (.(.{.{.(.{ (.{ {.{.{.3+&.&.&.{ &.&.&.&.[ &.[ [ [ S.[ S.[ S.S.+ + m.m.+ m.. -.. :+-.-.7 -.7 G+7 G+7 G+G+7 ]+]+G+]+C+]+G+]+G+y+H+-.z.Z.l+'+f+'+'+Q.Q.Q.Q.Q.Q.p.Q.p.p.p. .p.p.p.I.p.I.p.I.p.I.p.h.p.p.p.p.p.p.I.p.I.I.`.6+6+K.Q.I.I.Q.}.Q.I.<.I.<.J.J.J.J.J.^.J.J.<.<.}.J.}.}.}.J.j.~+}.~+~+j.I.j.}.j.j.j.}.j.}.j.j.I.j.j.}.[.j.j.j.j.j.j.@+_.8+@+j.j.j.j.j.j.{.j.{.I j.[+(.[+(.[+3+(.[+{.I 3+{.3+{.{.{.(.{.{.3+{.{.{.&.3+3+&.&.&.3+&.&.3+&.&.3+7+3+&.7+&.&.7+&.<+7+<+&.7+&.7+S.[ [ 7+&.7+&.[ [ S.7+} p 9+} S.[ S.[ S.[ [ 7+[ { @ @ * p p ) * @ * * @ [ F+F+F+m.F+-.-.-.-.-.x+-.G+-.-.G+G+z+G+G+z+z+z+} ) ) F+A+y+G+G+A+G+G+A+G+G+]+A+A+y+A+]+H+y+]+y+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+b+u+d+b+u+b+b+b+d+u+b+b+b+b+b+b+d+b+b+d+b+b+b+b+$+b+d+b+$+b+b+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+O.O.$+O.O.O.O.Q.O.O.O.Q.O.Q.O.Q.g. .Q.Q.g.Q. .g.<.7.7.7.+.8.8.2.9.9.3.3.3.G. +6.3.3.9.2.#.#.#.F !.+.!.+.!.!.!.F F #.~.G 2 G 2 P T.B.T.6.b.6.6.G.G.M.M.a.X W.3.j 3 3 %.J w J J $.k.k.k.I I k.(.(.k.(.(.(.I (.I {.(.{.(.{.(.{.{.{.{ 3+&.&.{ {.&.&.&.&.&.[ &.[ S.! S.[ S.! S.m.+ m.:++ m.:+. m.m.:+-.-.7 -.7 7 -.7 G+7 G+7 ]+G+G+]+G+]+G+]+H+H+A+&.u.!+'+'+'+'+'+I.Q.I.Q.Q.Q.Q.Q.Q.p.Q.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.M h.p.p.I.p.I.p.p.Q.M I.I.I.I.<.I.I.<.Q.}.Q.}.<.<.<.<.<.<.<.J.}.<.}.}.}.}.}.j.}.}.j.}.j.I.j.}.[.I.j.I.j.j.[.}.j.j.}.j.j.j.}.[.j.j.j.j.j.j.j.j.j.j.j.j.{.I j.j.I [+j.(.{.{.{.{.{.{.{.{.3+{.{.{.{.{.3+{.{.3+{ {.3+&.3+&.&.{.&.3+&.3+&.&.&.&.&.&.&.7+&.&.7+&.&.7+<+[ 7+<+7+<+&.7+&.&.S.[ [ S.&.[ &.[ [ [ [ [ [ [ [ [ [ 7+[ 7+@ @ * * * * * * * * @ @ @ [ F+F+-.-.-.-.-.B+-.-.B+-.-.G+G+-.G+-.G+G+G+G+G+z+z+G+G+G+G+G+]+G+]+G+w+C+w+A+]+A+]+H+A+]+A+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+d+b+b+d+b+d+b+b+b+b+b+d+$+b+$+b+$+b+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+O.;+O.O.O.O.p.Q.p.O.p.O.Q.p.O.Q.p.g.p.Q.g.Q.<.7.7.|.8.8.2.9.9.3.9.3.c. +6.3.3.9.2.#.#.8.!.|.+.+.+.+.!.+.+.!.!.F #.h ~.G 3.2 X 6.f.A.4.6.b.6.G.G.M.M.W.W.W.z 3.j 3 w %.w J J $.$.0 k.k.I k.I (.I (.I (.I {.(.{.{.{.(.{.{ {.{.{.&.{ &.&.&.&.&.&.[ &.&.S.! S.[ [ S.S.m.m.+ S.m.+ :+:+. m.. -.. -.7 7 7 -.7 G+7 G+7 G+]+G+]+]+C+]+C+]+H+C+[ k.R.'+'+'+'+'+I.Q.Q.Q.Q.Q.I.p.Q.p.p.p.p.p.p.p.p.p.p.p.p.p.h.p.p.h.p.h.p.p.p.p.p.p.p.I.I.p.I.I.Q.I.I.I.I.Q.I.I.}.I.<.Q.}.<.<.J.<.^.<.<.J.}.<.}.}.}.~+}.I.}.}.j.}.I.j.I.j.}.j.j.I.j.j.j.I.j.[.j.j.j.j.j.j.[.j.j.j.j.j.j.j.{.j.j.j.{.j.{.j.{.{.{.j.j.{.(.{.(.{.{.{.3+{.3+{.{.{.{ {.{.3+&.{.&.3+&.&.3+&.&.&.3+&.3+&.&.&.&.&.&.&.&.&.7+&.[ &.<+[ &.[ 7+&.S.7+[ &.7+[ 7+&.[ [ &.S.<+[ [ <+[ S.[ [ 7+@ { @ * * * * * * * * @ * @ F+F+m.-.-.-.-.-.-.-.z+-.D+G+z+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+]+A+G+A+G+C+w+A+]+A+]+C+w+H+C+]+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+j+b+j+b+j+b+b+b+b+b+b+b+b+b+b+b+d+b+b+b+b+b+b+b+b+d+b+$+b+d+b+b+b+$+b+$+$+b+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+O.$+$+O.O.O.O.O.O.O.O.Q.O.p.g.p.O.Q.Q.Q.g. .Q.7.<.7.7.|.8.R.9.9.3.3.3.c.6.6.3.9.9.2.#.#.8.+.+.!.+.+.+.+.D !.+.!.F !.F #.#.G G G G v X +f.T.6.b.6.b.G.G.P a.X W.W.3.9 3 3 %.w J J J $.1 k.0 I k.I I (.I (.I (.{.I {.{.{.{.{.{.{ &.&.{.&.&.&.&.&.&.[ &.[ [ S.! S.! S.+ S.+ m.:++ :++ m.:+-.:+-.:+. -.7 G+7 G+7 G+7 G+7 ]+7 ]+G+]+]+C+C+[ k.R.!+'+'+'+'+Q.I.Q.-+I.Q.I.O.Q.p.p.p.p.Q.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.h.p.h.p.h.p.p.p.p.I.p.I.I.Q.I.Q.I.I.I.<.I.I.}.}.<.~+<.}.<.<.J.}.N J.}.J.}.}.}.}.j.I.j.I.j.j.I.j.j.[.j.}.[.j.I.j.j.j.j.j.[.j.j.}.j.j.j.j.j.j.j.{.j.j.{.j.j.j.{.j.(.j.j.{.3+{.j.{.{.{.3+{.{.{.{.{.3+{.3+{.3+&.{.3+{.{.&.3+&.&.3+{ &.&.&.&.3+7+&.7+3+7+&.7+&.<+&.7+<+7+&.7+<+[ <+[ &.7+[ &.[ &.[ &.[ 7+S.[ S.[ [ [ S.[ [ [ 7+@ @ @ * * * * * * * @ @ @ @ F+m.F+-.-.-.-.z+-.-.D+-.-.G+D+G+G+G+-.G+G+G+G+G+G+G+G+G+G+A+G+]+G+]+G+]+A+w+]+y+H+C+]+y+C+w+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.b+j+b+j+b+j+b+j+b+j+b+b+b+b+b+b+b+b+b+b+b+b+d+b+b+b+b+b+b+b+b+d+b+b+$+b+$+$+$+$+$+b+$+b+$+$+$+$+$+$+$+$+$+$+O.$+$+$+$+p.O.O.O.p.O.Q.O.p.Q.p.p.g.p.Q.Q.'.Q.7.7.7.8.8.9.2.3.Z.3.c.6.6.3.3.u.9.#.8.8.+.!.+.+.+.+.D +.+.D +.D +.+.!.F F F ~.G 3.G 2 X P T.f.4.6.6.6.G.G.c.M.a.X W.W.3.9 3 %.%.w 1 J k./ $.J I (.k.I (.I {.I {.(.{.(.{ {.{.{.&.{.&.&.&.&.&.[ &.[ &.[ S.! ! S.S.S.! m.! m.m.+ m.m.m.. m.. -.. -.7 7 -.7 7 G+7 7 ]+7 ]+G+C+]+]+C+C+m.k.K.!+'+'+'+'+'+Q.Q.Q.-+Q.Q.-+Q.p.p.p.Q.p.p.p.p.p.p.p.p.p.p.p.p.h.p.h.h.p.h.p.h.p.h.p.p.h.h.p.I.p.I.p.I.M I.I.I.<.I.I.<.}.Q.}.I.<.}.<.<.<.}.J.<.}.<.}.}.}.}.~+}.}.I.j.I.[.}.j.I.}.[.j.j.[.j.[.j.}.[.j.j.[.j.j.[.j.j.j.j.j.j.j.j.j.j.j.{.(.j.{.{.{.{.{.j.{.{.{.3+{.{.{.3+{.3+{.{.{.{.{.{.3+{.&.3+&.3+&.3+&.&.3+&.3+&.&.&.&.&.&.&.7+&.&.&.7+&.<+7+&.7+&.&.[ 7+&.[ &.7+&.[ [ &.[ &.[ &.[ [ S.[ S.[ [ [ 7+[ @ { @ @ * * * * * @ * @ F+[ F+F+-.-.-.-.-.-.-.-.-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+w+G+A+G+A+G+y+G+C+y+C+y+]+A+]+H+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+b+j+b+j+b+b+b+b+b+b+b+b+b+u+b+b+b+b+b+b+d+b+b+b+b+d+b+d+b+$+b+b+d+b+$+b+$+b+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+O.p.O.O.p.O.O.O.O.p.O.O.p.g.p.Q.Q.g.<.7.7.|.8.R.2.u.Z.3.3.c.6.6.`.9.9.9.#.#.8.+.+.+.+.7.+.'.+.'.D +.D +.+.D +.+.F F #.#.~.G G G G X G.R A.4.G.6.6.G.G.M.M.X W.t.W.3.9 3 3 w J 1 J k./ $.I I I I I (.{.(.{.{.{.{.{.{.&.{.&.&.&.&.&.8 &.S.&.! S.! S.S.S.! S.+ m.m.:++ m.:+:+. m.-.:+:+:+7 7 -.7 7 G+7 7 G+G+]+G+]+H+C+D+[ k.R.!+'+'+'+'+'+Q.Q.Q.Q.-+I.Q.p.p.p.p.Q.p.p.p.p.p.p.p.p.p.p.p.p.h.p.p.p.p.p.h.p.h.h.p.h.p.h.p.p.p.I.p.I.I.I.I.I.I.I.I.I.I.I.I.I.I.<.}.}.}.J.}.<.N }.J.}.<.}.}.}.}.j.I.j.I.j.j.~+[.j.[.j.}.[.j.~+j.j.[.j.j.j.j.j.j.j.j.[.j.[.j.{.j.{.j.{.j.{.j.{.{.{.j.{.j.{.{.{.3+{.{.{.3+{.{.{.{.{.{.3+&.3+{.&.3+&.&.{.&.&.&.3+&.&.&.&.3+7+3+&.&.&.&.&.&.7+<+&.7+&.S.&.S.&.7+&.&.7+[ &.[ &.&.[ &.[ S.[ S.S.[ S.[ 7+m.[ [ 7+7+@ { @ * @ @ * @ * @ @ @ F+F+-.m.-.-.-.-.D+x+D+-.-.G+-.G+-.G+G+G+-.G+G+G+G+G+G+G+G+w+G+G+]+G+w+C+]+A+]+A+]+]+A+]+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+b+j+b+u+b+j+j+b+j+b+b+b+b+b+b+b+b+b+b+d+b+b+b+d+b+d+b+b+b+b+b+b+d+b+b+b+$+b+$+b+$+$+b+$+$+b+$+$+b+$+$+$+$+$+$+$+$+$+$+O.$+O.O.p.O.O.p.O.Q.p.Q.O.Q. .Q.7.7.!+8.R.2.9.Z.3.3.M.#+6.3.9.9.2.2.8.|.+.+.+.+.'.D '.+.'.+.7.D +.D +.+.!.+.!.+.F F F #.G G 2 G 2 X 6.f.A.4.6.6.G.G.c.M.M.X W.t.3.3.u.j 3 J 1 1 $.0 $.0 I (.I I I {.{.I {.{.{ {.{.{.&.{.&.&.&.&.&.&.8 &.&.&.[ &.[ ! S.S.! S.! S.! + ! m.m.! m.+ m.m.m.:+m.m.m.:+m.:+:+. -.. &.(./.Y.(+k+K.,+R.,+K.,+R.,+,+,+8.,+8.,+8.,+8.8.8.8.8.8.8.8.8.8.8.8.8.8.~.8.8.~.8.~.~.8.9.~.9.9.9.9.9.9.9.9.9.Z.G .+3..+3..+t.t.t.t.t.t.t.t.t.W.t.t.W.t.W.0.X W.a.W.W.W.a.W.W.W.a.W.a.W.a.a.a.a.W.a.a.a.a.a.a.a.a.v.a.v.a.G.v.G.v.G.G.v.G.G.b.G.b.b.b.b.b.b.b.b.b.H.b.H.b.H.H.H.b.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.4.4.4.4.4.4.4.4.4.4.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.b.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.j+u+b+j+b+b+b+j+b+j+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+$+b+d+b+$+b+$+b+$+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+$+O.$+O.$+p.O.p.O.O.O.O.O.Q.Q.g.Q.7.7.|.8.R.2.Z.u.3.3.M.6.c.3.Z.u.2.#.8.|.+.+.7.+.<.7.<.'. .D .D 7.D 7.D '.+.D +.+.+.!.F #.#.~.G G 3.2 t.X 6.A.f.4.6.6.G.c.M.M.X W.W.t.3.3.3.j %.J 1 1 / $.I I I (.I I {.{.> {.{.{.{ &.{.8 &.&.&.&.&.[ &.S.&.! [ ! S.S.! S.S.! S.! m.S.m.S.m.m.{+m.+ :++ m.:++ :++ :+. -.! {.J R.Y.k+R.,+R.,+K.,+K.,+8.,+8.8.8.,+8.i.8.,+8.i.,+8.8.8.8.X.8.8.Y.8.8.8.Y.8.Y.8.Y.~.8.Y.~.Y.9.8.Y.~.9.9.9.9.Z.9.Z.Z.3.Z.3..+3.3.3..+3.3.t.3.W.t.t.W.t.X W.0.W.0.W.0.0.a.0.W.0.a.W.0.W.W.a.W.W.a.a.a.M.a.a.a.M.a.M.a.M.v.M.v.a.G.a.G.v.G.G.v.G.v.G.v.G.v.b.b.b.b.b.b.b.b.b.H.b.b.H.H.b.H.b.H.b.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.4.H.H.H.H.4.4.4.4.H.H.H.4.H.H.H.H.H.H.H.H.H.H.b.H.H.b.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.b.H.b.H.b.H.b.H.b.H.H.H.H.b.y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+b+b+u+b+j+j+j+b+b+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+d+b+d+b+b+b+d+b+b+b+b+b+b+$+b+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+$+O.$+;+O.O.p.p.O.O.p.Q.Q.<.!+7.!+8.R.9.3.Z.3.M.6.c.3.u.9.2.#.8.|.7.+.7.+. .D .D .7.'.N '.N '.D 7.7.'.'.].D +.+.+.!.F #.#.~.G G 3.2 z X 6.T.f.T.6.G.G.c.M.M.X W.W.3..+3.3.9 /.J 1 0 / / I I I {.I {.{.{.{.{.{.{.&.&.8 &.8 &.! &.! ! S.S.! S.! ! m.+ m.m.+ :+m.:+:+. . . . . 7 7 7 7 7 ]+]+C+G+! {.^+K.!+l+'+'+'+'+'+Q.f+Q.Q.Q.Q.Q.;+-+p.p.p.I.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.h.p.h.h.h.h.h.p.h.h.h.h.h.h.p.p.I.p.I.p.M I.I.I.I.}.I.I.~+I.I.~+}.I.}.I.}.}.}.}.}.}.}.}.}.}.j.I.}.j.}.I.[.I.[./+[.g+[.g+/+g+g+j.g+j.[./+j./+{./+j./+/+[./+j./+j./+{./+{./+/+/+/+/+/+/+/+/+/+{./+&./+{./+{.&./+&.&.&.<+&.<+&.<+&.<+&.<+&.<+&.<+&.<+&.<+<+<+<+&.<+S.<+7+S.<+S.S.S.S.[ S.[ S.[ [ &.[ &.[ &.[ &.[ [ S.S.m.S.m.m.m.m.m.m.[ m.7+7+7+7+7+7+7+7+7+F+F+F+m.-.-.-.B+-.z+z+D+z+x+z+G+z+G+G+G+G+G+G+G+G+G+G+G+G+w+A+w+y+w+y+w+w+y+w+y+y+w+y+]+y+H+H+H+y+y+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+j+j+b+u+b+b+j+j+b+j+b+b+b+b+u+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+$+b+b+$+b+$+b+$+b+$+b+$+$+b+$+b+$+$+$+$+$+$+$+$+p.$+O.O.O.;+O.O.O.Q.Q.g.Q.7.!+|.8.R.9.Z.Z.3.M.6.c.3.Z.9.2.8.|.|.+.+.<.<. .<.'.<. .<.'. .'. .'. .7.'.D '.'.+.'.!.D !.+.!.!.F #.2.G 9 t.3.X X X G. +A.T.6.c.P M.M.M.X W.W.3..+a+3.3.2.%.J / / I > I > {.> {.{.{ {.; &.; &.8 &.! &.! S.[ S.! S.! + m.m.+ :++ :+. m.. . :+-.:+7 -.7 G+7 C+G+. ! I $.!+!+'+'+'+'+'+'+Q.Q.Q.I.Q.-+I.-+Q.p.p.p.p.-+p.O.p.p.p.p.p.p.p.p.p.h.p.p.h.p.p.h.p.h.h.h.h.h.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.I.I.I.I.I.I.I.I.I.I.}.I.}.}.I.I.I.}.}.I.}.}.}.}.}.}.}.}.[.j.I.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[.[./+j.H [./+[./+[.{./+H /+/+/+/+{./+{./+{.{.&./+/+{.&.{.&.&.&./+&.&.&.&.&.&.&./+&.&.&.&.<+&.&.&.&.&.<+&.&.&.<+[ &.[ [ [ [ 7+[ 7+[ [ <+7+[ 7+S.[ S.&.S.&.[ <+[ [ S.[ [ S.[ S.S.S.m.m.m.m.m.m.m.m.m.m.m.m.m.m.[ F+m.F+m.F+m.m.-.-.-.-.-.-.-.-.-.-.-.D+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+A+]+A+]+A+H+C+H+H+y+H+H+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.j+b+b+j+b+j+j+b+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+u+b+b+b+b+b+b+b+b+b+b+b+$+b+b+$+b+$+b+$+b+$+$+$+$+b+$+$+$+$+$+$+$+h.$+$+$+O.$+$+$+p.O.O.p.O.Q.g.Q.7.!+8.8.R.Z.Z.3.3.M.6.c.3.Z.9.2.8.|.|.7.7.<.7. .7. . . .'.g .7. .+. .7. .'.<.'.7.'.7.'.D 7.D +.!.!.#.#.~.G 3.2 t.z X X X M.6.T.T. +c.M.X M.X X W.z 3.3.a+Z.3.9.2./.J / I I ^ {.{.^ {.H &.{.8 &.8 &.! &.! 8 ! ! S.! m.S.+ {+m.+ :++ m.. :+m.. . 7 G+7 . . S.{.j.J.K.'+'+'+'+'+'+'+Q.Q.Q.Q.'+Q.-+Q.I.Q.p.p.-+p.p.p.p.p.p.p.p.p.h.p.h.p.h.p.h.p.h.p.h.h.p.h.h.p.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.I.h.I.h.[.I.h.I.I.[.I.[.I.[.[.I.}.}.}.}.I.}.}.}.}.}.}.}.[.}.}.[.[.[.j.[.[.j.[./+[./+[./+[./+/+/+[./+[./+/+H /+H /+/+/+/+/+H /+H /+/+&./+&./+/+&.&./+&./+&./+&.&.&./+&.&.<+&.&.&.&.<+<+&.&.&.<+&.<+[ &.S.<+7+&.<+[ <+7+<+S.<+S.<+S.S.[ S.S.S.[ S.[ S.[ [ S.[ S.[ [ S.[ [ S.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.-.-.-.-.-.-.-.-.G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+z+G+z+G+z+G+G+G+w+G+w+G+]+w+G+]+A+]+H+]+y+]+C+]+y+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+b+u+b+j+b+b+j+j+b+j+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+d+b+d+b+b+$+b+b+b+b+b+b+b+b+b+$+b+$+b+b+$+$+$+$+$+b+$+b+$+$+$+$+$+$+$+p.$+p.$+p.O.-+O.Q.Q.Q.!+7.R.R.9.u.Z.3.M.c.c.3.Z.2.2.8.|.|.7.N <.<. . . .<. .<. .7. . .'. .'.'.7.'.'. .7.'.D 7.'.7.+.+.+.!.F #.#.9.G 3.2 t.z X z v z z X 6. +T.6.c.M.X W.X W.W.3.3.Z.3.Z.Z.9.2.2.%.J / / { ; ; ; &.; 8 8 ! 8 ! ! S.! S.! S.+ {++ + :+. . :+. :+. . 7 m.! 8 {.j.E.J.!+'+'+'+'+'+'+'+'+Q.Q.'+Q.Q.Q.Q.-+I.Q.p.p.-+p.p.p.p.p.p.p.p.p.h.p.p.p.p.p.h.p.h.h.p.p.p.h.h.p.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.[.h.I.h.I.I.[.I.I.I.I.[.I.I.[.[.I.[.[.I.[.}.}.I.}.j.}.}.[.}.~+j.I.[.[.[.[.[.[.[.[./+[./+[.[./+[./+/+H /+/+/+/+H /+H /+8 /+8 {.8 {./+8 /+8 &./+<+&./+&.&.&./+<+&.&./+&.&.&.<+&.&.&.<+&.<+&.&.<+&.<+7+&.&.<+S.[ <+7+S.[ <+[ [ S.7+S.S.7+S.[ S.S.[ S.[ S.[ [ [ S.[ [ S.[ m.S.m.S.m.S.m.m.m.m.m.m.m.m.m.m.m.m.m.-.F+-.-.F+-.-.-.-.-.-.z+-.-.-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+-.G+x+G+G+z+G+G+G+G+G+G+y+]+A+]+A+]+y+C+H+H+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+b+u+b+j+u+b+b+j+b+j+b+j+b+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+$+b+$+b+b+$+b+$+b+$+b+$+b+$+$+$+$+$+$+$+$+$+$+$+$+$+$+O.$+O.O.Q.Q.P.7.!+8.R.R.Z.Z.3.M.c.c.3.u.9.2.8.8.|.7.<.7.<.'.<. .<. . . . . .<. .<. .<. . . .<.'.'.<.'.'.7.'.7.'.+.+.!.#.#.2.9.3.3.2 3.t.3.3.3.3.3.G 2 X c.6. +6.c.M.X W.X W.3.3.3.Z.Z.Z.Z.Y.9.2.R.K.%.%.$.I {.{.{.; &.8 ! ! ! + + + + + ! + ! ! ! ! S.8 {.I j.J.J.!+!+!+'+'+'+'+'+'+'+'+Q.Q.Q.'+Q.Q.Q.Q.-+Q.p.Q.O.Q.p.p.p.-+p.p.p.p.p.p.p.p.$+h.$+h.p.p.h.p.p.h.h.h.p.p.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.I.h.h.I.h.I.I.[.I.[.I.I.[.I.}.I.[.I.I.I.}.[.}.}.}.}.}.}.}.}.[.}.[.}.[.j.[.[.[.[.[.[.[.[./+[.[./+H [./+H H /+H /+/+/+/+/+/+/+/+/+/+H /+&./+/+&.{.&.&./+&./+&.&./+&.&.&.&.&.&.<+&.<+&.&.&.<+&.&.&.&.<+&.S.&.&.<+&.&.&.<+[ [ <+&.[ &.[ <+[ <+[ &.&.[ &.[ &.S.&.[ S.[ [ S.S.S.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.-.m.-.-.-.-.-.-.-.-.-.G+-.G+-.G+-.-.-.G+G+-.G+-.G+-.G+z+x+z+x+G+x+x+G+z+z+w+G+w+G+G+A+]+A+]+C+H+]+y+]+y+H+y+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.j+j+b+u+b+b+u+j+u+b+j+b+b+j+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+$+b+b+$+b+$+b+$+$+$+b+$+$+b+$+b+$+h.$+$+$+p.$+p.$+-+p.-+Q.Q.Q.!+8.Y.R.Z.Z.3.M.c.M.3.Z.9.R.8.|.7.7.7.<.<.<. .<. . . . .Q. .<. . . . . .'. .7.'.'.<.'. .7. .'.'.'.+.+.+.8.#.#.9.G 3.3.3.2 3.2 3.G G 3.3.9.G 3.z X c.6.#+c.M.W.X W.3.3.3.9.Z.9.(+Y.Y.R.Y.R.R.R.K.K.K.^.^.$.}.j.j.j.[.[.[.j.j.}.$.J.E.!+!+'+!+!+!+!+'+'+'+'+'+Q.!+'+Q.Q.Q.Q.Q.Q.Q.-+Q.Q.-+Q.I.-+p.-+p.p.p.p.p.p.p.p.p.p.p.p.h.p.h.p.p.p.h.p.h.p.h.p.p.p.h.h.h.h.h.h.p.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.I.h.[.I.h.I.I.I.I.I.I.j.I.[.I.I.[.[.I.}.}.}.[.}.}.}.}.}.}.}.[.}.[.I.j.[.g+[./+[.[./+[.[./+[./+/+H [./+H /+/+H /+H /+H /+H {.&./+/+/+/+&.{.&./+{.&./+&.&.{.&.{.&.{.&.&.{.&.&.&.&.<+&.&.&.&.<+&.&.&.&.7+<+&.7+<+&.7+&.<+7+[ <+7+<+&.[ &.7+&.S.&.7+S.[ &.[ [ [ [ S.[ m.S.m.S.m.m.m.m.m.m.m.m.m.m.m.m.m.m.m.-.m.-.m.-.-.-.-.-.-.-.-.-.z+-.-.-.x+D+G+G+-.G+G+G+G+G+z+x+G+x+G+x+z+x+x+G+x+G+G+G+G+y+]+A+]+A+y+]+A+H+C+]+A+]+H+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+b+j+b+u+j+b+b+b+j+b+j+b+b+j+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+$+b+$+b+$+$+$+b+$+$+$+$+$+$+$+$+$+$+O.;+O.-+Q.-+P.!+,+R.R.Z.Z.3.M.M.M.3.Z.9.R.8.|.7.7.<.<. .'. .Q. . .Q. .<. . .Q. .Q.'.Q.'.Q. . . .<.'. .7. .'.7.7.+.7.+.8.!.#.~.9.9 9.3.G 3.G 9.G 9.9 ~.#.G 2.~.G 9.9.3.2 X X c.c.M.X M.W.z 3.3.9.Z.2.R.R.R.,+,+,+,+!+!+,+!+!+!+,+e+!+!+!+!+!+!+e+!+'+'+'+'+'+'+Q.'+'+'+Q.!+Q.'+Q.Q.Q.'+Q.Q.Q.Q.Q.Q.Q.Q.p.Q.O.p.Q.p.p.-+p.p.O.p.p.p.p.h.$+p.$+p.$+h.h.h.p.h.p.h.h.h.h.h.p.h.p.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.I.h.h.I.h.I.I.[.I.[.I.I.I.[.I.}.[.I.}.j.I.}.I.}.}.I.}.}.j.}.}.}.j.I.j.I.j.[.[.[.g+[.[.[./+[./+[./+[./+{./+/+H /+/+/+/+/+{./+/+/+H {.{./+{./+/+{.&.{.&./+{./+&.&.{.&./+&./+&.<+&.<+&.&.<+&.&.&.&.&.&.<+&.&.7+<+&.7+&.S.&.&.&.[ &.[ &.&.&.&.S.&.&.&.&.7+[ &.[ &.S.[ S.S.[ m.S.m.S.m.S.m.m.m.m.m.m.m.m.m.m.-.m.-.-.-.-.-.-.-.-.-.B+-.-.-.D+-.G+-.G+-.G+G+G+-.G+-.z+D+-.z+z+x+z+-.z+-.x+G+z+G+G+w+G+G+G+G+]+]+A+H+]+y+C+]+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+j+j+u+j+b+j+u+j+b+j+b+u+j+b+j+b+b+j+b+b+b+j+b+b+b+b+b+b+b+b+b+d+b+b+b+b+b+b+$+b+$+b+b+$+b+b+$+b+$+b+$+b+$+$+b+$+$+$+b+$+h.$+p.$+O.-+O.Q.Q.!+7.8.R.Z.2.3.W.M.M.3.Z.2.R.8.|.!+7.<.Q. .Q.Q. . .Q. . .Q. .<.Q. . .Q. .Q. .Q. .Q. .g.<. .'.<.'. .'.7.+.+.+.8.8.2.9.9.3.9.3.9.9.9.#.#.#.#.#.#.#.#.#.j ~.#.9.2.9.9 9.3.W.z 3.W.z W.W.z 3.3.Z.R.2.8.8.|.,+!+!+7.!+!+!+!+!+e+'+e+'+'+'+'+!+Q.!+Q.!+Q.'+Q.Q.!+Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.-+p.Q.O.p.Q.O.p.O.p.p.p.p.p.p.p.p.p.p.p.h.p.h.p.p.p.h.p.h.p.h.p.p.h.h.p.h.h.h.h.h.p.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.s I.h.I.[.;+I.I.I.[.I.[.I.I.[.~+[.I.I.j.[.}.I.j.}.}.}.}.}.}.I.}.j.}.j.[.}.[.j.[.j.[.j.[.j.[.[.j./+j./+[./+/+[.{.[.{./+H {.{./+/+/+{./+{.{.&.{./+{.{.&.{.{./+{.&.3+&.3+&.&.3+&.3+&.3+&.&.&.3+&.&.&.&.&.&.&.&.&.&.7+&.7+&.&.&.&.&.7+&.7+&.&.&.7+&.[ &.&.7+&.[ [ S.[ S.S.S.S.m.m.S.m.S.m.S.m.[ m.m.m.m.m.m.-.m.m.m.-.m.-.-.-.-.-.-.-.z+-.-.-.-.-.G+-.-.z+G+-.z+G+x+z+x+-.x+x+x+x+x+z+x+z+x+G+z+G+G+]+A+G+C+]+A+H+]+y+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.j+b+j+b+j+b+b+b+u+b+j+b+b+j+b+j+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+$+b+$+$+b+$+$+$+b+$+$+$+$+$+$+-+-+-+Q.=+!+!+,+R.R.9.a+W.c.M.3.Z.R.R.8.|.7.<.7.Q. .Q. . .Q.p. .Q. . . .Q. .g.Q. .g. .Q. .g. .Q. . .Q. . . .7.7.7.+.7.|.8.#.2.2.u.9.9.9.9.2.#.#.8.F 8.F F F #.F #.#.#.#.#.#.#.#.#.#.8.9.#.9.3.9.Z.9.R.8.8.8.!+8.!+|.!+7.!+7.7.P.7.Q.!+Q.P.Q.P.Q.P.Q.!+Q.Q.Q.'+7.'+Q.7.'+Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.O.Q.p.O.Q.p.O.p.p.p.p.p.O.p.p.p.p.$+p.$+p.$+p.p.p.h.p.$+h.p.h.$+h.h.p.h.h.h.p.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.I.[.I.I.I.}.I.I.}.I.[.I.[.I.I.I.[.}.I.}.[.}.}.[.}.j.}.}.[.}.}.[.j.I.[.[.[./+[.j./+[./+[.[.{./+[.{./+/+/+{./+{./+{./+{.{./+{./+{./+{.{./+{./+&.{.&.3+{.{.{.&.3+&.&.&.&.&.&.&.3+&.&.3+&.3+&.3+<+&.&.7+&.&.&.&.&.7+&.7+&.&.&.&.7+&.&.&.&.&.&.[ &.S.[ S.7+S.m.S.m.[ m.[ m.m.m.m.[ m.m.m.m.m.m.-.m.m.-.-.m.-.-.-.-.-.-.-.B+-.-.-.B+-.-.G+-.-.G+-.z+G+-.z+-.x+-.x+z+x+x+z+x+x+z+x+z+G+G+w+G+G+G+]+y+]+H+]+A+]+H+y+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+b+j+j+b+j+j+u+b+u+j+b+j+j+b+b+j+b+j+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+$+b+b+$+b+$+b+$+b+$+b+$+$+b+$+$+$+d+p.-+Q.Q.!+|.,+R.Y.Z.Z.W.M.M.3.(+R.R.8.!+!+7.Q.Q.Q. .Q.p.Q.p. . .p. .p.g.p. .Q. .p.Q.Q.g.Q. .Q.g. .Q. . .g.<.'. .7.7.+.|.8.#.2.9.9.9 9.2.2.#.#.8.8.+.+.+.+.+.+.+.+.F !.#.#.#.8.#.#.#.8.#.8.#.8.8.8.8.8.8.|.8.8.|.7.7.7.7.7.P.!+Q.7.P.Q.P.'+Q.'+Q.'+Q.Q.Q.!+'+Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.p.Q.O.O.Q.p.O.p.O.p.p.p.O.p.O.p.p.p.p.p.p.h.p.p.h.p.h.$+h.p.h.h.p.h.p.h.h.$+h.h.h.p.h.h.h.h.p.h.h.h.h.h.h.h.h.h.h.h.q.h.h.h.h.h.h.h.h.h.I.h.I.h.I.h.I.[.I.[.I.[.I.I.}.I.j.I.[.}.I.j.I.}.I.[.}.}.}.}.j.}.}.[.}.[.j.[.~+j.[.j.[.[.[.j.[.{./+/+j./+/+H /+{./+{./+{./+{./+{./+{./+{.{.{.{./+{.{./+3+{.&.3+&./+&.&.3+/+&.3+&.3+&.&.&.&.&.&.&.7+&.&.&.3+<+&.&.7+3+&.&.{ &.&.&.&.&.&.&.7+&.7+[ 7+[ [ 7+S.[ S.[ S.S.m.S.m.m.m.S.m.m.m.m.m.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.B+-.-.-.G+-.G+-.G+G+G+z+-.G+z+-.z+x+x+B+x+x+-.z+x+x+G+z+G+G+A+w+C+w+C+A+]+A+H+C+w+C+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+j+b+j+j+b+j+b+j+b+b+j+b+b+j+j+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+$+b+$+b+$+$+b+$+$+h.O.;+-+-+Q.!+!+,+R.R.R.Z.W.M.W.3.Y.R.R.|.!+7.<.Q.Q. .Q.p.p. . .p.Q.p. .Q. .Q. .g.p.Q.g. . .p. .Q. . .Q. .Q. .<.g.<.7.<.7.|.8.8.R.2.9.2.9.2.2.#.#.|.+.+.+.7.7.'.+.7.+.+.+.+.+.+.+.!.!.!.8.+.8.|.8.|.!.|.8.|.|.8.7.7.7.7.7.7.7.7.7.Q.7.Q.Q.7.Q.Q.7.Q.Q.Q.P.Q.Q.Q.Q.Q.g.Q.Q.Q.Q.g.Q.Q.p.O.Q.O.Q.O.p.Q.p.O.p.Q.p.p.O.p.p.p.p.p.p.p.p.$+h.O.h.$+p.p.h.p.h.p.h.p.h.$+h.h.h.h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.h.h.q.h.h.h.h.h.h.[.h.h.h.I.h.I.[.I.I.[.I.[.I.[.I.[.I.[.~+[.I.[.I.[.}.I.}.[.}.}.}.[.[.}.j.}.[.j.[.[.j.[./+j.[./+j./+[.{./+[.{./+{./+{./+{./+/+{./+{.{./+{.{./+/+{.{./+/+&.{.&.{.&.{.&.3+&.{.&.&.&.&.&.3+&.3+&.3+&.&.&.3+&.&.&.&.3+&.&.&.&.3+&.{ &.3+7+&.&.&.&.&.&.&.[ <+[ S.[ S.[ S.m.[ m.m.m.S.[ m.m.m.m.m.m.m.m.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.G+-.G+-.G+z+-.G+x+-.z+x+x+x+x+B+x+z+G+z+G+w+G+G+G+w+A+]+]+y+C+]+y+C+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.j+j+u+b+j+j+b+j+b+j+j+b+u+b+u+b+b+j+b+j+b+b+j+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+b+$+b+$+b+$+b+$+$+b+$+$+O.-+-+Q.e+!+,+8.R.Y.Z.W.M.W.3.R.R.8.!+7.7.Q.Q.Q.p.g.p. .p.p.p. .p.Q.p. .p.Q.p.Q.p.p.Q.p.g.Q.p. .Q. .Q. .g.Q. . . .7.<.+.7.|.8.2.2.9.2.9.2.2.#.8.+.+.7.+.'.+. .'.'.'.7.7.7.7.+.+.+.+.+.+.+.+.+.+.+.+.+.+.7.7.7.7.7.7.7.7.7.7.Q.7.7.Q.7.Q.Q.7.Q.Q.Q.7.Q.Q.Q.g.Q.Q.Q.Q.Q.g.Q.Q.Q.p.Q.O.Q.p.O.p.Q.p.O.p.p.p.p.O.p.p.p.p.p.p.p.p.$+p.p.$+p.p.h.p.h.p.h.p.h.$+h.p.h.$+h.h.p.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.h.q.h.h.h.q.h.q.h.h.h.h.h.[.h.[.h.I.h.[.I.I.[.I.~+[.I.I.[.I.I.j.I.j.I.[.I.j.I.}.j.[.}.}.}.[.}.[.}.[.}.j.[.j.[.[.j.[.[.j./+[.{./+[./+[.{./+[.{./+H /+{./+{.{./+{.{.{./+{.{.{./+&.3+{.3+&./+&.3+&./+&.3+&.&.&.3+&.&.&.&.3+&.&.&.3+&.&.&.&.3+&.&.&.3+&.&.&.&.&.&.7+&.7+[ 7+[ [ S.7+S.[ S.m.S.S.m.S.m.m.m.m.m.m.m.m.m.m.-.m.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.G+G+-.D+G+G+G+-.G+z+-.z+x+-.x+B+x+x+x+z+-.z+x+G+z+w+G+A+G+]+A+]+C+w+C+]+y+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+b+j+j+b+j+b+j+j+j+b+j+b+j+b+u+j+b+j+b+b+j+b+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+$+b+b+$+b+$+$+$+$+;+-+Q.!+!+!+,+Y.(+Z.W.W.W.Z.R.R.K.,+7.Q.Q.Q.g.Q.p.p.Q.p.p.p.Q.p. .p.Q.p. .p.Q.p.g.p.g.p.Q.p.g.Q.p.g.p. .Q. .Q.Q.<.<.7.7.|.|.R.8.2.2.2.2.2.8.8.|.|.7.+.7.<. .'.<.g 7. .'.g '.'.7.'.7.7.7.7.+.7.7.7.7.7.7.7.+.7.+.7.7.7.7.7.Q.7.Q.Q.Q.Q.<.g.Q.g.Q.g.Q.Q.g.Q.Q.Q.g. .Q.p.Q.p.p.Q.O.p.Q.p.g.Q.p.p.p.p.p.O.p.p.p.p.p.p.p.p.p.$+p.p.h.p.h.$+h.p.p.h.p.$+h.p.h.$+h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.h.h.q.h.h.q.h.h...h.h.h.h.[.h.h.[.I.[.;+[.I.I.[.I.[.~+I.[.[.I.[.[.j.I.[.[.j.[.[.}.j.[.}.[.}.j.[.}.[.j.j.[.j.j.[.j.j.H j./+[./+j.{./+/+{.{./+{./+{./+{./+{.{./+{./+{.{./+&.3+{.{.&.{./+&.{.&.3+&./+&.&.3+&.&.&.&.3+&.&.&.3+&.&.3+{ 3+{ &.3+{ 7+&.3+&.&.&.7+&.&.7+&.[ &.[ <+[ S.[ S.7+S.[ m.[ m.m.S.m.[ m.m.m.m.m.m.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.B+-.-.D+-.G+-.-.G+-.G+-.G+G+-.G+z+-.-.z+x+x+-.z+x+x+z+G+z+G+G+G+G+]+A+G+C+y+]+H+H+y+C+w+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+j+j+j+j+j+j+b+j+b+j+j+b+j+b+j+b+b+j+b+j+b+b+j+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+$+b+b+$+b+$+b+$+b+$+b+$+;+-+-+-+=+!+!+R.R.R.(+W.W.W.Z.R.R.,+P.!+Q.Q.Q.Q.p.p.p.p.p.p.p.p.p.p.p.p.p.p.Q.p.p.Q.p.Q.p.Q.p.g.p. .p.Q.Q.Q.Q.p.g. .Q.7.7.|.7.|.#.R.2.2.R.2.8.8.|.+.7.7.<.<. .'.<. . . .'. .<.'.<.'. . .'. .'. .'.7.'.7.7.7.7.'.7.7. .7.<.g.<.g.Q. .Q. .Q.g.Q.Q.Q.Q.Q.Q.g.Q.g.p. .Q.p.Q.g.Q.g.Q.p.p.Q.p.O.p.p.O.p.O.p.O.p.p.O.p.p.O.p.p.p.$+p.h.$+p.$+p.h.p.p.h.p.h.h.h.$+h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.h.h.q.q.h.h...h.h...h.h...h.h.h.h.[.I.[.h.I.[.I.[.I.[.I.[.I.[.~+I.[.I.I.[.j.I.[.}.~+[.[.}.[.}.[.}.[.j.j.}.[.j.[.j.[.{.j.[.j.{.j.{.[./+[./+H /+/+{./+{./+{./+{.&.{./+{.{.{.&./+{.{.&.3+&.{.&./+&.&.3+&.&.3+&.3+&.3+&.&.3+&.3+&.&.&.&.{ &.&.&.{ &.{ &.7+&.&.7+&.&.[ &.S.[ 7+[ S.7+S.[ S.m.[ m.S.m.m.[ m.m.m.m.m.m.m.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.-.G+-.-.G+-.G+-.G+G+-.z+G+-.G+z+-.z+x+z+x+z+x+G+x+G+G+w+G+w+A+G+]+w+]+C+A+w+C+]+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.j+u+b+j+j+b+j+u+b+j+b+j+b+j+b+j+b+j+b+j+b+j+b+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+$+$+$+-+-+'+!+!+,+R.k+(+W.W.W.|+R.R.!+!+7.Q.Q.Q.O.p.p.p.p.p.p.p.p.p. .p.p.p.p.p.O.p.O.p.Q.p.p.p.g.p.Q.p.g.p. .p.g. .Q.<.7.7.7.7.|.8.R.R.2.R.R.8.8.|.|.7.7.<.<. .<. . . .<. .<. . . . . .<.'.<.'.<. .<. .<. . . . .<. .Q. .Q.g. .Q. .g.Q.g.Q.g.p.Q. .g.p.g.p.Q.p.Q.Q.Q.p.g.Q.p.p.p.p.p.g.p.p.p.p.p.p.p.p.p.p.p.p.p.p.$+p.p.$+h.p.h.O.h.p.h.p.h.$+h.p.h.$+h.p.h.h.h.h.h.$+h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.h.%+h.h.h...h.h.q.q.h.h...h.h...h.[.h.h.h.[.[.h.I.[.I.[.I.[.[.I.[.[.j.[.[.[.I.[.j.[.[.[.I.[.[.j.[.[.j.}.}.[.j.}.j.[.j.j.[.j.{.[./+j.{.j.{./+/+{.{./+{./+{./+{.{./+{.{.&./+{./+{.&.3+{.&./+{.3+{.3+&.&.3+&.&.&.&.&.3+&.3+&.&.3+&.3+{ 3+3+&.3+{ 3+&.3+&.&.&.7+&.&.7+[ 7+&.7+S.S.[ S.S.[ S.[ S.m.m.m.S.m.m.m.m.m.m.m.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.G+-.G+G+-.G+G+-.G+z+-.x+G+z+G+x+G+z+G+G+G+z+G+G+A+G+]+A+C+y+]+H+C+]+y+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+j+j+j+u+j+j+b+j+j+b+j+b+j+b+j+b+j+u+b+j+b+b+j+b+b+j+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+b+b+$+b+$+b+;+-+-+'+!+!+R.k+R.Y.W.W.W.Z.R.,+!+!+7.Q.Q.-+O.p.O.p.p.O.p.p.p.p.p.p.p.p.O.p.p.p.O.p.p.p.p.p.p.Q.p.p.Q.p.Q.p.g.Q.p.g.Q. .7.7.|.|.8.R.#.R.2.2.8.|.|.7.7.<.7. . . .Q. .Q. .Q. .<.Q. .Q. .Q. .Q. .g.Q. .g.Q. .Q.'.Q. .g. .g. .Q.Q. .Q. .Q. .p.Q. .Q.p.Q. .Q.g. .g.p. .O. .p.Q.p.Q.p.p.p.O.O.p.O.p.O.p.p.p.O.p.O.p.p.p.p.p.p.p.$+p.$+p.$+h.p.h.p.h.p.h.h.h.$+h.$+h.h.$+h.h.h.$+h.h.b+h.h.h.h.h.h.h.h.h.h.q.h.h.h.h.h.q.q.q.h.q.h.h.h.q.h.h...h.h.h.h.[.h.[.h.I.[.h.;+[.[.g+I.[.[.I.[.I.[.~+[.[.[.I.[.I.[.j.[.I.[.}.[.[.[.j.j.[.j.[.j.[.j.j.[.j.j.[.j./+[.j.H j./+H {./+{./+{./+{.{./+{.{.{./+{.{./+&.3+{.&.&.{.&.{.3+{.&.3+{.3+&.3+&.{.&.3+&.{ &.&.3+{ &.{ &.{ &.&.&.&.&.&.&.7+&.&.7+S.[ &.[ S.7+S.[ S.7+m.S.S.S.m.m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.z+-.B+-.z+-.-.G+-.G+-.G+G+z+G+G+-.G+G+x+G+x+G+G+-.G+z+G+G+w+A+w+G+]+A+]+A+]+A+]+y+C+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.j+j+j+j+b+j+j+b+j+j+u+j+j+j+b+j+b+b+j+b+j+j+b+j+j+b+b+j+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+d+-+-+-+=+'+!+,+,+R.Y.`.W.W.(+K.,+K.7.!+Q.-+Q.p.-+p.p.p.$+p.$+p.p.p.p.p.O.p.p.p.O.p.p.p.O.p.O.p.p.p.p.p.p.Q.p.Q.p. .Q. .<.Q.<.7.!+|.8.R.R.2.R.8.8.|.7.|.7.<.<.<.g.Q. .Q. .Q. . .g. .Q. .g. .Q. .Q. . . .Q. .g.Q. .g.Q. .Q.Q.p. .g.p.Q.p.p. .Q. .p.g. .p.g.p.Q.p.Q.Q.p.p.p.g.p.p.p.p.p.O.p.p.p.p.p.p.p.O.p.p.p.p.p.p.$+h.p.$+h.p.h.p.h.p.$+h.$+h.$+h.h.$+h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.q.h.q.q.h.q.h.h.h...q...q...q.h...h...h...h.[.h.h.[.h.[.[.[.I.[.I.[.~+[.~+[.[.[.[.I.j.[.[.[.I.[.[.[.[.[.j.[.j.[.[.j.j.[.}.j.[.j.j.j.j.j.j.H j./+j.H /+j.{.j./+{.{.{./+{./+{./+{.{./+{.{.{.{.{.{.3+{.{.{.&.{.{.{.&.{.{.&.3+&.{.&.3+&.3+{.{ 3+&.{.&.3+{ 3+&.&.&.7+&.&.7+S.[ &.7+[ S.7+S.S.[ m.S.[ m.m.m.S.m.S.m.m.m.m.m.m.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.x+D+-.G+-.G+G+-.G+-.G+G+G+G+G+G+G+z+G+G+G+G+G+G+G+G+G+A+G+]+A+w+C+H+A+H+w+C+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+j+b+j+j+u+j+j+j+b+j+b+b+b+j+j+b+j+u+b+j+b+j+j+b+b+j+b+j+b+j+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+d+;+;+-+'+'+!+,+,+R.n+`.W.W.(+R.,+!+!+e+Q.Q.-+O.p.p.$+p.$+p.p.p.p.O.p.$+p.p.p.O.p.O.p.O.p.p.O.p.p.O.p.p.g.p.p.p.p.p.p.g.Q.Q.7.7.7.|.|.R.8.R.8.R.8.|.|.|.7.<.<. .g.p. .p. .g.p. .Q.Q. .p. .Q. .p. .p. .p.Q. .p. .p. .Q. .p.Q. .g.p.Q.p.Q. .p.g.p.p.p.Q.p.g.p.p.p.g.p.p.p.p.p.p.p.O.p.O.O.p.p.p.p.O.p.p.O.p.p.$+p.$+h.$+p.p.$+p.$+p.$+h.p.h.h.p.h.p.h.h.$+h.h.$+h.h.h.b+h.h.b+h.h.h.h.h.h.h.h.q.h.h.q.h.q.h.q.h.h.h.h.q.h.h.q.q.h.q.h.h.q.h...h.q.h...h.h...h.[.h.[.h.[.h.[.;+[.[.[.[.[.[.~+[.~+[.[.g+[.g+[.[.g+[.[.g+[.[.[.j.j.[.[.j.j.[.j.j.H j.H j.[.j.j.H j./+j.{.[.{.{.{.{./+{.{.{.{./+{.&.{.{.{.3+{.3+{.{.&.{.3+{.3+&.3+{.3+&.3+&.{.{ 3+&.&.{.&.&.&.{ &.{ &.&.&.7+&.7+&.7+S.&.7+&.7+S.[ S.[ S.[ S.S.[ S.m.S.m.[ m.m.m.m.m.m.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.B+-.B+-.G+-.-.-.G+-.G+-.z+G+-.G+G+G+G+G+G+x+G+z+G+G+G+z+G+w+G+w+G+]+A+]+w+A+]+A+]+]+H+]+C+H+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+j+u+j+j+b+j+b+j+j+j+j+j+j+j+b+j+b+b+j+b+j+b+b+j+j+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+;+d+;+-+'+'+!+!+k+R.(+a+W.W.(+,+!+!+!+Q.Q.-+-+p.;+$+p.p.$+h.p.$+p.$+p.$+p.p.$+p.p.p.O.p.p.O.p.p.p.O.p.O.p.p.p.p.p.g.p.g.p.Q. .<.7.J.|.8.8.R.8.R.8.|.|.!+7.<.<.g.Q. .Q. .Q.p. . .Q.p. .p.g.Q. .p.g.Q. .Q.g. .Q. .Q. .g.p. .Q. .p.p. .p. .p.g.p.p. .p. .p.p.p.p.g.p.p.p.p.g.p.p.p.p.p.p.p.p.p.p.O.p.p.p.p.p.p.p.p.p.p.p.p.h.$+h.p.h.h.p.h.$+h.p.h.$+h.$+h.h.h.h.h.h.$+h.h.h.h.h.h.h.h.h.h.%+h.h.h.h.q.h.h.h.%+h.h.%+h.q.h.q.q.h.q.h.q.h.q...q.h.q...h.q...h.h.h...h.[.[.h.[.I.[.[.I.[.I.[.[.[.[.[.[.g+[.[.[.[.g+[.[.[.[.[.[.[.[.[.[.j.[.[.j.j.[.j.j.j.j.j.{.j.j.{.j.H j.{./+j.{.{.{.{.{./+/+{.{.{./+{.{.{.{.{.{.{.{.{.{.{.{.{.{.&.{.{.{.{.{ 3+{.&.3+&.3+{ 3+&.&.&.&.7+&.&.&.&.7+&.7+[ <+[ [ [ <+[ S.7+S.[ S.m.m.S.m.[ m.m.m.m.m.m.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.G+-.G+-.-.G+G+-.G+-.G+G+G+G+G+G+x+G+G+G+G+G+G+A+G+G+G+A+G+]+A+]+A+y+C+w+H+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.j+j+j+j+j+j+j+u+j+b+j+b+j+b+j+j+b+j+j+b+j+b+u+b+b+b+j+b+j+b+j+b+j+b+j+b+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+d+;+d+-+f+e+!+!+k+R.k+`.W.W.(+,+!+!+!+Q.Q.-+p.O.$+p.$+$+h.p.$+p.h.$+p.$+p.$+p.p.$+$+p.O.p.O.p.O.p.O.p.O.p.p.O.p.O.p.p.p.p.Q. .Q.Q.7.7.!+8.|.8.|.8.8.|.7.7.<.7.<.<. .Q. .p. .Q.p. . .Q. .Q. .p. .Q. .p. .p. .p.p.g.p.p. .Q.p.p.g.p.p.g.p.g.p.p. .p.p.g.p.g.p.p.p.p.p.p.p.p.p.p.O.p.p.p.O.p.p.p.p.p.p.O.p.$+p.$+p.$+p.$+h.$+p.p.$+h.p.$+h.p.h.$+h.p.h.h.h.h.$+h.h.$+h.h.h.b+h.b+h.h.h.h.%+h.h.%+h.%+h.h.%+h.q.h.h.q.h.q.h.q.h.q.h.q.q.h.q.q.h.q...h.q.q.h.q...>+..h.[.h.[.h.[.h.h.[.[.[.[.I.[.[.[.g+[.[.g+[.g+[.[.[./+[./+[.g+[.[.[.j.[.j.j.[.j.j.[.j.H j.j.[.j.H j.j.j.{.j.{./+j.{.j.{.j.{.{.{.{.{.{.{.{.3+{.3+{.{.3+{.{.{.{.{.{.{.{ 3+{ {.{.&.3+{.&.{ &.&.&.3+&.&.&.&.7+&.7+<+[ <+[ 7+[ 7+<+7+[ S.7+S.[ S.7+S.m.m.m.m.m.m.m.m.m.m.m.-.m.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.G+-.D+x+G+-.z+G+G+z+G+G+G+G+-.G+G+z+G+G+G+G+G+G+G+w+G+]+A+]+G+]+A+]+A+C+]+C+]+H+w+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+u+j+u+b+j+j+j+j+j+j+j+j+j+j+j+b+j+j+b+j+b+j+b+j+j+j+b+j+b+j+b+j+b+b+b+j+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+d+;+;+f+f+'+!+!+,+R.(+a+W.q+(+!+,+!+!+Q.Q.-+-+O.;+$+h.$+p.$+$+p.$+$+p.$+p.$+p.$+$+p.p.$+p.$+p.O.p.p.p.O.p.p.O.p.p.p.O.p.g.p.p.Q.Q.7.J.7.|.|.8.R.8.8.|.!+|.7.Q.<.g.Q.p.p. .p.p.p.Q.Q.p.Q.p. .p. .Q.p. .p.Q.p.g.p. .p. .p.p.p.g.p.p. .p.p.p.p. .p.p.p.p.p.p.p.p.g.p.p.p.p.p.p.p.p.p.p.p.O.p.p.p.p.O.p.p.$+p.p.p.p.$+p.h.p.p.p.$+h.p.$+h.p.h.$+h.p.h.h.$+h.$+h.h.h.h.h.b+h.h.h.h.h.h.h.h.h.h.%+h.h.h.h.h.%+h.%+h.h.q.h.q.h.q.h.q.h.q...h.q.h.q.q.h.q.q.h.....h.q.h...>+h...h.>+[.[.[.[.;+[.g+[.[.g+[.[.g+[.[.g+[.[.[.g+[.[.[.[.[.[./+[.[.[.[.[.[.[.H j.j.j.H j.j.{.j.j.H j.{.j.{.j./+{.{.j.{.{.{./+{.{.{.{.{.{.{.{.3+{.{.{.3+{.3+{.3+{.{.{.{.{ 3+{.{ &.3+{.&.3+&.&.&.&.7+&.<+7+[ &.7+&.7+&.[ S.[ S.7+[ S.[ S.S.m.S.S.m.[ S.m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.z+-.-.G+-.G+-.-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+G+A+w+A+w+A+]+y+H+w+C+y+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.j+j+j+u+j+j+j+j+j+j+b+j+b+j+b+j+j+b+j+b+j+j+b+j+b+b+b+j+b+b+j+b+j+b+j+b+b+b+%+b+b+b+%+b+b+b+b+b+b+$+b+b+;+;+-+f+'+!+!+K.k+(+a+W.`.(+K.,+!+!+Q.-+-+O.;+$+b+p.$+$+$+h.$+h.$+p.$+h.$+h.$+$+p.$+$+O.p.p.$+p.$+O.p.O.p.O.p.p.O.O.p.p.p.p.g.Q.Q.Q.7.|.!+8.R.|.8.|.!+7.7.7.<.Q.Q. .p. .p.p. .p. .p. .p. .p.Q.p.p. .p. .p. .p.p. .p.p.p.p. .p. .p.p.p.p.p.p.p.p.p.p.g.p.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.p.p.p.O.p.p.$+p.p.$+h.$+h.p.h.p.$+h.$+h.p.h.h.p.h.p.h.$+h.h.$+h.h.h.h.h.h.$+h.h.h.b+h.h.h.h.h.%+h.h.h.q.h.%+h.%+%+h.q.h.%+h.q.h.q.q.h.q.q.q.h.q.q.q.q.h.q.q.h.q.q.h.q...q...h...[.>+[.h.>+h.>+[.[.h.[.[.[.[.;+[.[.[.[.[.>+/+[.>+[.>+/+>+[./+[./+[.{.[./+j.j.j.H j.j.H j.H j.[.j.{.j./+j.{.{.j.{.{.{.j.{.{.{./+{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{.{ 3+{.3+&.&.&.3+{ &.&.&.&.&.7+&.&.&.7+&.<+7+&.7+S.7+S.7+S.7+S.S.[ S.S.F+S.m.F+m.m.m.m.m.m.m.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.G+-.-.G+-.G+-.D+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+w+G+]+G+]+G+]+G+C+w+C+]+C+H+]+y+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+u+j+j+j+u+j+b+j+j+j+j+j+j+j+j+b+j+j+j+b+b+j+b+j+j+j+b+j+b+j+b+b+j+b+j+b+j+b+b+b+b+b+b+%+b+b+b+b+b+b+;+d+f+f+'+'+!+k+k+(+a+W.a+Z.,+!+!+'+-+-+-+;+$+$+;+$+$+b+h.$+$+p.$+h.$+$+$+$+p.$+p.$+p.$+p.$+$+p.p.p.p.$+p.$+p.p.O.p.p.p.p.O.Q.p.Q. .7.!+7.|.!+|.,+|.!+|.7.<.Q.Q. .p.p.g.p.p. .p.p.p.p.p.p. .p.p. .p.p.Q.p.p. .p. .p.p. .p.g.p.p.p.p.p.p.p. .p.p.g.p.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.O.p.p.p.O.p.p.$+p.p.h.$+p.p.$+p.$+$+h.p.h.p.h.$+h.$+h.$+h.$+h.h.$+h.h.h.h.$+h.$+h.h.b+h.h.h.h.h.%+h.h.h.%+h.h.%+h.%+h.h.q.h.q.q.q.h.q.h.q.q.q.h.q.q.q.h.q.q.q...h.q...q.q...h.q.h.q.q.h.....>+[.[.[.h.>+[.[.[.[.[.[.[.g+[.>+[.[.[.[./+[./+[.[./+[./+[./+[.[./+[.H /+j.{./+j.{./+j.{.{.[.{.{.{.j.{.{.{.j.{.{.{.{.{.{.{.{.{.3+{.3+{.{.{.3+{.{.{.&.{.{ 3+&.&.{.&.3+&.&.&.&.&.&.7+&.&.<+7+<+7+<+7+&.S.[ &.[ &.S.[ S.[ [ S.7+m.S.m.m.S.m.m.m.m.m.m.m.-.m.-.m.-.-.-.-.m.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.-.G+-.-.-.G+x+G+-.G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+w+A+G+A+G+A+G+A+G+]+y+C+y+]+y+C+]+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+j+j+j+j+j+j+j+u+j+j+j+j+b+j+b+j+j+j+b+j+j+j+b+j+b+b+j+b+j+b+b+j+b+j+b+j+b+b+j+b+b+%+b+b+b+b+%+b+b+d+;+;+;+f+'+'+l+!+K.k+a+W.`.(+!+!+!+'+Q.-+-+$+$+;+$+h.$+h.$+$+h.$+$+$+$+h.$+$+$+$+$+$+$+$+p.$+p.$+$+$+$+p.p.$+p.$+p.p.O.p.O.p.p.p.Q.Q.Q.Q.7.!+8.8.|.|.8.7.!+7.Q.Q.Q.p.g.p.p.p.p.p. .p. .p. .p.p.p.p.p. .p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.p.p.p.p.p.p.$+p.$+p.$+p.$+p.h.$+p.h.p.h.$+p.$+h.$+h.p.h.h.h.h.h.$+h.h.h.$+h.h.h.h.h.b+h.h.h.h.h.h.h.h.%+h.h.h.%+h.%+q.h.%+q.h.%+h.h.q.q.h.q.h.q.h.q.q.h.q.q.h.q.q.q.q.q.q...q.q...q...q...>+q.h...h...[.[.[.>+[.[.>+>+[.>+[.[.[.g+[.>+[.>+[.[.>+/+[./+[./+[./+H /+H /+[./+[.{.[.{.[.{.[.{./+j./+j.{.j.{.{.{.j.{.{./+{.{.{.{.{.{.{.{.{.{.{.{.3+&.3+{.&.3+&.{.3+&.&.&.3+&.&.&.3+&.&.7+<+7+<+7+&.7+[ &.7+[ 7+S.7+[ 7+S.7+S.S.m.[ m.S.m.[ m.m.m.m.m.m.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.z+-.-.D+-.G+z+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+]+G+]+G+]+A+]+y+G+C+]+y+C+]+y+C+H+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+j+j+u+j+j+j+j+j+b+j+j+j+j+j+j+b+j+j+j+b+j+j+b+j+j+b+j+b+j+j+b+j+b+j+b+j+j+b+%+b+b+b+%+b+b+b+b+b+;+;+;+f+'+l+!+!+k+(+a+`.a+(+k+!+!+'+f+-+;+;+;+$+b+$+b+$+$+b+$+$+h.$+h.$+$+h.$+h.$+h.$+h.$+$+$+$+p.p.$+p.$+h.p.p.p.p.$+p.O.p.O.p.Q.p.Q.Q.<.!+7.!+!+8.!+!+!+7.Q.Q.Q.g.p.p.p.p.p.g.p.O.p.O.p.p.g.p.p. .p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.p.p.p.O.p.p.$+p.p.$+p.h.p.h.p.h.O.h.p.$+h.$+h.h.h.p.h.$+h.h.$+h.$+h.h.h.$+h.h.h.b+h.b+h.h.h.b+h.%+h.h.%+h.h.%+h.%+h.%+h.b+q.q.h.q.h.q.q.h.q.q.q.q.q.q.q.q.q.q.q.q.q...q.h...q.q.q...q.q.q...q.q...>+..>+>+..>+h.[.h.>+[.h.[.[.>+[.>+[.>+[./+[.>+/+[.[.1.[./+[.1./+/+[./+{./+H /+/+/+{./+{./+j.H /+{.{./+{.{.{.{.{./+{.{.{.{.{.{.{.{.{.{.{.{.{.&.{.{.&.3+&.{.&.&.&.&.3+&.&.&.&.&.7+&.7+<+&.7+&.[ <+&.S.7+&.&.S.&.[ S.[ S.S.[ m.7+S.m.m.[ m.m.m.m.m.m.m.m.-.m.m.-.m.-.-.-.m.-.-.-.-.-.-.-.B+-.-.-.-.-.z+-.-.-.-.-.G+G+z+G+G+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+A+G+A+G+G+A+w+C+y+]+C+]+A+]+y+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+b+j+j+j+j+b+j+b+j+b+j+b+j+j+b+b+j+b+b+b+j+b+%+b+b+b+b+b+b+b+;+;+f+f+'+!+^+k+_+a+W.a+(+k+!+!+'+-+-+;+d+$+$+h.$+$+b+$+b+$+$+b+$+b+$+$+$+$+$+$+$+$+$+$+$+$+p.$+$+h.$+h.$+p.$+h.$+$+p.p.$+p.p.p.O.Q.Q.Q.!+7.|.!+|.!+7.7.7.Q.Q. .Q.p.p.p.p.O.p.p.p.p.p. .p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.p.p.$+p.p.$+p.p.$+p.h.$+p.$+p.$+p.$+$+h.p.$+h.p.h.$+p.$+h.$+h.h.$+h.h.h.h.$+h.h.h.b+b+h.b+h.h.h.b+h.h.h.h.%+h.h.h.q.h.%+h.%+h.q.q.h.%+q.q.%+h.q.q.h.q.h.q.h.q.q.q.h.q.q.q.q.q.q.q...q...q...q.....q...>+..>+......[...>+[.>+[.>+[.>+[.>+[.>+[.>+[./+[./+>+[./+[./+1.[./+[./+/+H /+/+/+[.{.H /+H /+H /+{.{./+{.{./+/+/+/+{.{./+/+{./+{.{.{.{.{.&.{.3+{.3+&.{.&.&.3+&.3+&.&.&.&.&.&.7+&.&.&.<+&.7+S.&.<+7+&.7+&.S.7+7+7+S.7+S.7+m.[ S.m.m.F+S.m.m.F+m.m.m.m.-.-.m.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.-.-.D+z+D+-.-.-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+w+C+w+C+G+]+A+H+y+]+y+C+H+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.j+j+j+u+j+u+j+j+j+j+j+j+b+j+j+b+j+j+b+j+j+b+j+j+j+b+j+b+j+j+b+j+b+j+b+j+b+j+b+j+b+b+%+b+b+b+b+b+;+;+f+f+'+l+l+k+_+a+`.a+(+!+!+'+'+f+-+;+d+$+b+b+$+b+b+$+b+$+b+$+b+$+$+b+$+b+h.$+$+h.$+h.$+h.$+$+$+$+$+$+p.$+p.$+p.p.h.$+p.p.p.O.p.Q.Q.Q.Q.7.!+!+|.i.|.!+7.J.Q.Q.Q.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.O.p.p.O.p.p.p.p.p.p.O.p.p.$+p.p.p.$+p.p.p.$+p.h.$+p.$+p.p.h.h.$+p.h.p.h.p.$+h.p.$+h.h.h.h.$+h.h.$+h.h.$+h.h.h.h.$+h.h.h.h.h.h.b+h.h.h.h.h.%+h.h.%+%+h.%+h.%+h.q.h.%+h.q.h.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.h.q...q...q.q...q.q.q...q...q...q...>+q.>+>+..[.>+..>+[.>+[.[.[.>+[.>+[./+[.1.[.1./+[.1./+[./+[.1./+H /+H /+H /+/+/+/+/+{./+{./+/+{./+/+{./+{.{.{./+{.{.{.{.{.{./+&.{.{.&.&.&.&.&.3+&.3+&.&.&.&.&.&.&.3+&.<+&.7+<+7+<+<+&.7+&.<+7+[ 7+[ &.S.[ S.7+[ S.[ S.F+m.S.m.m.m.m.m.m.m.m.-.m.m.-.-.F+-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.B+-.G+x+-.-.G+G+-.-.G+z+G+G+-.G+-.G+G+-.G+G+G+G+G+G+G+w+G+A+G+A+]+G+A+w+C+C+]+y+C+H+C+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+j+j+j+j+j+j+j+u+j+j+j+j+u+j+j+j+j+b+j+j+j+j+b+j+j+j+j+j+b+j+j+b+j+b+j+b+j+b+j+b+j+b+b+j+b+b+b+g+d+f+f+'+l+!+^+k+a+`.a+h+!+l+!+'+-+-+;+d+$+b+$+b+b+$+b+b+$+b+$+b+$+b+$+b+$+$+b+$+b+$+$+$+$+$+h.$+h.$+h.$+$+$+$+h.$+$+p.p.$+$+p.;+p.-+Q.Q.Q.!+7.!+!+!+7.!+7.Q.Q.Q.p.p.p.p.p.p.p.p.p.p.p.p.O.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.p.p.p.p.p.p.O.p.p.O.p.p.O.p.p.$+p.p.$+p.$+p.$+p.h.p.$+p.$+h.p.$+$+p.$+h.p.$+h.$+h.h.$+h.h.$+$+h.$+h.h.$+h.h.h.h.$+b+h.b+h.b+h.b+h.b+h.h.%+h.h.%+h.h.%+h.h.%+h.q.h.%+q.h.%+q.q.q.%+q.q.q.q.q.q.q.q.q.q.q.h.q.q.q.q.q.q...q.q.q.q.q.....q.....q...q...>+..q...>+>+..>+[...>+[.>+>+[.>+1.[.1.[.>+/+>+[.1.[.>+/+1./+/+/+[./+/+/+/+/+H {./+H /+H /+H /+{./+H /+/+{./+&./+{./+{./+&./+&.{.{.&./+3+{.&.3+&.<+&.&.&.&.&.&.3+7+&.7+&.&.7+<+&.&.7+&.7+<+7+[ &.7+<+[ S.7+S.7+S.[ S.m.m.S.F+m.[ m.F+m.m.m.m.-.m.-.m.m.-.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.G+-.-.-.G+G+G+-.D+-.G+G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+]+G+G+A+]+G+]+G+w+A+]+H+w+y+C+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+b+j+j+j+b+j+b+j+b+j+b+j+j+b+j+b+j+b+j+b+j+b+j+b+b+b+d+;+g+f+'+l+l+!+_+a+`.a+(+l+!+'+f+-+;+;+;+b+$+b+b+$+b+b+$+b+$+b+$+b+b+$+b+$+b+$+b+$+$+$+h.$+h.$+$+$+$+$+$+h.$+h.$+$+$+h.$+$+p.h.O.p.-+p.Q.Q.Q.!+7.!+7.|.!+7.Q.Q.Q.p.Q.p.O.p.p.O.p.O.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.p.p.p.p.p.p.p.p.h.p.$+p.p.$+p.h.p.$+p.$+p.h.p.$+$+p.h.h.p.$+h.h.$+h.p.$+h.h.$+h.h.h.h.$+h.h.h.$+h.b+h.h.b+h.b+h.b+h.h.h.b+h.h.h.%+h.h.h.h.q.%+h.q.b+q.q.h.%+h.q.h.q.q.q.h.q.%+q.q.q.q.q.q.q.q.q.q...q.q.q.q.h.q.q...q.q.q...q.q...q...q...>+..q.....>+..>+1...>+1.[.>+[.>+>+[.>+1.[.>+/+[.1.[./+>+[.[.1./+H 1.H /+H /+H /+{./+/+{./+/+/+/+/+&.{./+{.{.&.{.&./+&.{.{.&.&.&.{.&.&.&./+&.&.3+&.&.&.3+<+&.&.<+&.<+&.&.&.7+&.7+<+[ <+7+&.7+<+[ [ [ 7+S.7+S.[ m.7+S.[ m.S.F+m.m.m.m.m.m.m.m.-.m.-.-.m.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.z+-.-.-.G+-.-.z+-.G+z+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+]+A+G+A+]+G+A+w+A+y+]+C+A+]+C+]+y+C+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+j+j+u+j+j+j+u+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+b+j+j+j+j+j+b+j+j+b+j+j+j+%+j+b+j+b+b+b+b+b+g+g+r+f+f+l+l+^+k+a+`.a+(+!+l+'+f+f+;+;+d+b+$+b+b+b+b+b+$+b+b+b+$+b+b+$+b+$+b+b+$+b+$+b+$+b+$+b+$+$+h.$+h.$+$+$+$+$+$+p.$+$+h.$+$+p.p.p.Q.-+Q.'+7.!+7.!+!+7.'+Q.Q.Q.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.O.p.O.p.p.p.O.p.p.$+p.$+p.p.p.p.p.$+p.p.$+$+p.$+p.h.$+p.$+p.$+h.$+p.h.$+$+p.h.h.$+h.$+h.h.$+p.h.$+h.h.$+h.h.$+h.$+h.h.$+h.h.b+h.h.b+h.b+h.h.h.b+h.%+h.h.h.%+h.h.%+%+%+h.q.h.%+h.q.h.%+q.q.q.%+q.q.q.%+q.q.q.q.q.q.q.q.q.q.q.q.q.q.q...q.q...q.q.q.....q.....q...>+..q.......q.>+..>+....>+>+..>+..>+1.[.>+1.[.>+1.[.1./+>+1.[./+1./+H /+/+/+H /+&./+/+H /+H /+1./+H &.{./+/+&./+&./+/+/+/+&./+&.&./+{.<+&./+3+&.&.<+&.<+&.&.&.7+<+&.7+&.&.&.7+&.<+&.<+7+<+[ &.7+<+[ 7+<+7+S.[ S.[ S.S.m.m.m.[ m.m.m.m.m.m.m.F+-.m.-.m.-.m.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.-.-.-.-.z+-.-.-.G+G+G+-.G+-.G+G+G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+]+G+G+A+]+A+]+A+]+H+y+]+y+C+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+u+j+j+j+u+j+j+j+j+j+j+j+j+j+j+j+b+j+j+b+j+j+j+j+b+j+b+j+j+%+b+j+b+j+b+b+b+j+%+b+j+b+u+;+g+d+f+~+l+l+!+k+|+a+|+k+l+l+'+f+f+;+;+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+$+b+b+b+$+b+$+b+b+$+b+$+b+$+b+$+b+$+$+h.$+h.$+h.$+b+$+p.$+$+p.$+p.-+-+Q.Q.P.J.!+!+7.!+'+Q.Q.Q.p.p.p.$+p.h.$+p.$+p.$+p.p.p.p.p.p.p.p.h.p.p.h.$+p.$+p.$+p.$+p.$+p.h.O.p.p.p.h.p.$+h.p.p.$+h.p.h.$+p.$+p.p.h.p.h.$+p.h.$+p.h.p.h.$+p.h.$+h.$+p.h.h.$+h.$+h.b+h.$+h.h.h.h.b+h.b+b+h.b+b+h.b+h.h.b+h.h.%+h.h.%+h.h.%+h.h.h.q.%+h.%+q.q.h.%+q.h.%+q.q.h.%+q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q...q.q.q.q...q.q.E q...1.>+..1.....1...>+[.1.>+..1.>+..>+H [.>+1.[.1./+[.1./+>+1./+[./+1.[./+/+H /+H /+/+&./+/+/+{./+/+/+&./+/+&./+&./+&.&./+&.&.{.&.&./+&.&.<+&.&.&.&.&.3+<+&.3+&.&.<+&.7+<+&.<+7+<+7+&.7+&.7+S.[ <+[ [ S.[ 7+S.[ m.7+m.7+m.m.F+m.m.F+m.m.m.-.m.m.m.-.m.-.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.B+-.G+-.-.G+-.G+-.G+G+G+G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+C+w+A+G+C+w+A+]+G+C+]+A+]+C+C+]+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.u+j+u+j+j+j+j+j+j+j+u+j+j+j+j+j+j+j+j+j+j+b+j+b+j+j+j+j+b+j+j+j+b+j+j+j+j+j+b+b+j+b+b+g+d+g+r+f+l+l+l+k+|+a+|+k+l+'+'+f+;+;+;+d+b+$+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+$+b+b+b+b+$+b+$+b+$+$+b+$+b+$+b+$+$+$+$+h.$+p.$+h.$+h.$+p.p.;+p.Q.-+'+Q.!+7.!+!+<.Q.Q.Q.O.p.;+p.p.$+p.p.h.p.h.p.h.$+h.p.$+h.$+p.$+p.$+p.p.$+p.p.p.h.p.p.h.p.p.h.$+p.p.p.p.p.$+p.h.p.$+p.$+p.h.$+h.$+$+$+p.h.$+p.h.$+$+h.$+h.$+h.$+h.h.$+$+h.h.h.h.$+h.h.h.b+h.$+h.b+h.h.b+h.h.h.b+h.b+h.b+%+h.h.%+h.h.%+h.h.%+%+q.h.%+q.h.%+h.%+h.q.q.q.h.%+q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q...q...q.q...q.>+E >+..E >+..>+E >+1.......1.>+[...1.>+1.1.[.1.>+[.1.>+[.1.[./+1./+H /+H /+H /+/+{.H /+/+8 /+1./+8 /+&./+&./+&./+/+&./+&.&./+&./+&./+&.<+&.&.<+3+&.<+&.&.&.&.<+7+&.&.7+<+&.7+&.<+7+&.<+7+S.&.7+[ 7+S.7+[ S.S.m.S.7+m.m.m.7+m.m.F+m.m.m.F+-.m.-.-.m.-.m.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.G+-.-.G+-.G+-.-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+w+C+G+y+]+y+C+]+y+H+w+C+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+u+j+u+j+u+j+j+j+j+j+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+b+j+j+j+b+%+j+j+%+b+j+b+j+u+b+u+d+g+g+f+~+l+l+l+^+|+a+|+_+l+l+'+~+f+;+;+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+b+b+b+b+b+b+$+b+$+$+b+$+h.b+$+$+b+$+$+$+h.$+$+;+$+p.-+-+Q.Q.Q.'+'+7.Q.'+Q.Q.p.p.O.p.$+h.p.h.p.$+p.$+p.$+p.O.h.p.$+p.h.p.$+p.p.$+p.h.$+p.$+h.p.$+p.$+p.p.$+h.p.$+h.$+h.$+p.h.$+h.p.$+p.$+h.p.h.$+h.$+h.$+h.h.$+h.$+h.$+h.h.$+h.h.$+h.$+h.b+h.b+$+h.b+h.b+h.b+b+h.b+h.b+h.h.h.%+h.h.h.b+h.h.%+h.%+%+q.h.h.%+h.%+q.q.q.q.%+q.%+q.%+q.%+q.q.q.q.q.q.%+q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.q...q.q...q...E q.E ..1.....E >+1.>+..E >+1...1...>+1.[.1.1.>+1./+/+1.[.[./+1.[./+1./+H 1./+/+8 /+/+{./+&./+/+/+&./+&./+&./+&./+/+&./+&.&.<+&.<+&.3+<+&.&.&.3+<+&.<+&.&.&.<+&.<+7+&.<+7+&.<+7+[ <+7+S.[ S.[ [ S.7+[ m.7+m.m.m.7+m.m.m.m.m.m.m.m.-.m.-.m.m.-.m.-.-.m.m.-.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.-.-.G+-.z+-.G+-.G+D+z+G+-.G+-.G+-.G+G+G+G+G+G+G+G+A+]+A+G+C+G+G+w+C+G+y+]+y+C+]+C+y+H+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.v+j+u+j+j+j+j+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+b+j+b+j+%+j+b+b+u+;+g+g+f+f+l+l+l+k+h+a+|+k+l+'+'+f+f+;+;+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+$+b+$+b+$+b+$+b+b+$+b+$+$+b+h.$+$+h.$+$+$+h.$+p.-+;+Q.Q.Q.'+!+Q.!+'+Q.Q.-+p.;+h.$+h.$+p.$+$+h.p.h.$+p.h.$+p.$+p.$+p.$+p.h.$+p.h.$+p.h.p.p.$+p.h.p.h.p.h.p.$+h.p.h.p.$+h.$+p.$+h.$+h.p.p.h.$+h.$+h.h.p.h.$+h.$+h.h.$+h.$+h.$+h.b+h.b+h.h.$+h.h.h.b+h.b+h.b+h.b+h.b+h.h.%+b+h.h.b+%+h.%+%+h.h.q.h.h.q.%+h.%+h.%+h.%+q.q.q.q.q.q.q.q.q.%+q.q.q.q.q.q.%+q.q.q.q.q.q.q.q.q.q.q.q.q.q.q.E q...q.q...q.q.E q.1.q.1...>+E q.1.>+..1...1.>+1...1...>+1...1.>+>+1.[.1.[.1./+1.1.[./+1.H /+1./+/+8 /+/+8 /+1./+{.1.&./+&./+&./+&./+<+&./+&.&./+&.<+&.<+&.&.&.&.<+&.&.<+&.7+&.<+&.7+&.<+&.7+&.S.7+&.<+[ S.&.7+S.7+S.[ S.S.S.[ m.[ [ m.m.m.F+m.F+m.F+-.m.F+m.-.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.-.-.z+-.z+-.D+-.G+-.G+-.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+w+G+w+C+G+]+C+y+C+]+C+y+]+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+u+j+u+j+u+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+b+j+j+b+j+b+j+j+b+j+j+b+b+j+b+g+g+d+f+r+l+l+l+^+h+a+|+k+l+l+f+f+g+;+b+b+b+b+b+b+%+b+b+%+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+$+b+b+b+b+b+b+b+b+b+$+b+$+b+b+b+$+$+b+b+$+b+h.$+p.p.;+p.-+Q.-+Q.Q.Q.'+Q.Q.Q.-+I.p.p.O.h.$+p.h.$+p.$+p.$+p.$+$+p.$+h.p.p.$+h.p.$+p.h.O.p.h.$+$+h.p.h.$+p.$+$+p.$+h.$+$+h.$+h.$+p.h.p.$+h.p.$+h.$+h.$+h.$+$+h.$+h.$+h.h.$+h.h.b+h.h.b+h.$+h.$+h.b+h.b+b+h.b+h.b+h.b+h.h.b+h.%+h.h.%+h.%+h.%+h.h.%+%+h.%+%+h.q.%+q.q.h.%+q.q.%+q.%+q.%+q.q.q.q.q.q.%+q.q.q.q.q.q.%+q.q.q.%+q.:.q.q.q.q.E q.q.q.q.q.E q.q.E ..1...E ..q.E ..1...E 1...1.1.E 1.>+1.1.1.>+1.>+1.1.>+1.1.1.>+1./+[.1.1./+/+1.H /+8 /+/+8 /+&./+8 /+<+/+&./+8 /+<+<+&.&./+&.<+/+&.<+&./+&.<+&.&.<+&.&.<+&.<+&.<+&.<+&.<+7+<+[ <+7+&.S.7+[ &.7+S.7+S.S.7+[ F+m.F+m.F+m.F+m.F+m.m.m.m.m.m.m.-.-.m.-.m.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.D+x+-.z+-.G+z+G+-.G+G+G+-.G+G+G+-.G+G+G+G+G+G+G+]+G+w+A+G+C+G+]+w+A+y+]+]+y+y+]+C+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+j+j+u+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+b+j+j+%+j+j+b+u+;+u+f+g+r+'+l+l+l+h+|+h+^+l+l+~+f+g+;+;+b+b+b+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+$+b+b+b+b+b+$+b+$+b+$+$+h.$+$+$+h.$+$+p.-+p.-+Q.f+Q.Q.Q.Q.-+Q.-+p.$+h.$+$+p.$+p.h.$+h.$+h.$+h.p.h.p.$+h.h.$+p.$+h.$+$+h.$+p.h.p.$+h.$+h.p.h.$+h.h.$+h.h.$+p.$+h.$+$+h.h.$+h.$+h.$+h.$+h.h.h.$+h.$+h.$+h.h.$+h.$+b+h.$+h.h.b+h.b+h.b+h.b+h.b+h.h.b+h.b+h.%+h.h.%+h.b+%+h.%+h.%+h.q.h.%+h.q.%+h.q.%+h.q.q.%+q.q.q.q.q.q.q.q.q.q.q.q.q.q.%+q.q.%+q.q.:.q.q.:.q.%+q.:.q.q.q.q.q.q.E q.q.E q.q.E q.1.q.1...1.q.1.1...1.1.q.1.>+E 1.>+..1.1.1...>+1.1.>+1.[.1.1.1.1./+1.1.H /+1./+/+1.&./+/+H /+<+8 /+&./+1./+&.<+/+/+&.<+&.<+&.&./+&.&.<+&.&.<+&.<+&.&.&.7+<+&.7+&.<+7+<+[ <+[ &.S.7+&.7+S.S.S.S.[ m.S.m.[ m.S.m.m.[ m.m.m.m.m.F+m.-.m.m.m.-.m.-.m.-.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.-.z+-.D+-.-.G+-.D+-.G+z+-.G+G+-.G+G+G+G+G+G+G+G+G+G+A+G+A+]+G+w+C+G+C+w+C+A+H+C+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.u+u+j+u+j+u+u+j+u+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+b+b+u+b+g+b+g+g+r+~+l+l+l+h+|+h+k+l+~+f+f+g+g+d+g+b+b+b+b+b+b+%+b+%+b+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+b+b+b+b+b+b+$+b+b+b+$+h.p.;+;+-+I.-+Q.'+-+'+-+Q.;+p.;+$+p.$+h.h.h.$+$+p.$+p.$+h.$+$+$+h.$+$+$+h.$+p.$+h.p.h.$+h.$+h.h.p.p.$+h.$+h.p.$+h.p.$+h.h.$+h.h.h.$+p.h.$+h.$+h.$+h.h.$+$+h.$+h.b+h.$+b+h.b+h.$+h.h.b+b+h.b+h.b+h.b+h.b+h.b+b+h.h.%+h.h.%+b+h.%+h.h.%+h.%+h.q.%+h.q.%+h.q.%+h.q.%+%+%+q.q.%+q.q.%+q.%+q.q.%+q.%+q.q.q.%+q.q.:.q.q.%+q.%+q.:.q.q.q.q.q.q.E q.q.E q.q.E q...E q...E q.E E q.E 1.q.1.1.1.E 1.E 1.1.1.q.1.1.1.>+1.1.1.1.1.[.1./+1./+1.1.1./+1.1./+/+8 <+/+8 /+<+/+1.<+&.<+<+&.<+&.<+/+&./+&.<+&.&.<+&.<+&.<+&.&.<+&.&.<+&.&.<+<+[ <+&.7+&.S.7+&.[ S.S.7+[ [ 7+S.[ [ F+m.7+m.F+m.m.F+m.m.F+m.m.m.F+-.F+-.m.-.m.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.B+-.-.z+-.-.G+-.z+G+z+G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+G+A+G+A+]+G+]+w+]+y+]+A+H+C+y+]+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+j+u+j+u+j+j+u+j+j+j+j+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+b+j+b+j+j+b+g+u+g+g+f+f+l+l+l+(+h+h+^+l+~+f+f+g+;+b+b+b+b+b+b+%+b+%+b+%+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+b+b+$+b+$+b+$+b+b+$+$+$+;+$+;+O.I.-+f+Q.-+Q.Q.I.-+;+p.$+h.$+h.$+$+$+h.$+h.$+h.p.$+h.$+h.p.$+p.h.$+h.$+h.$+h.$+h.$+h.p.$+h.$+h.$+h.$+h.$+h.$+h.h.$+h.$+h.$+h.h.$+h.h.h.$+h.h.$+$+h.b+h.$+h.b+h.h.$+h.b+h.h.b+b+h.b+b+h.b+b+h.b+b+h.b+h.%+h.b+h.%+b+h.%+h.q.%+h.%+h.q.%+h.q.%+h.%+%+q.q.%+%+q.q.q.%+q.q.q.q.q.q.q.q.q.q.q.q.%+q.q.q.%+q.q.&+q.:.q.:.%+q.:.q.:.q.:.q.q.q.q.q.E q.q.E q.1.E 1.q.1...1.1...E 1...E 1.)+1.1.1.E 1.1.)+1.E 1.1.1.1.1.1.1.1.1.1.1.1./+1.1./+1.1.<+/+1.<+/+&.1.&./+1./+&.<+/+<+<+<+<+&.<+&.<+<+&.<+&.&.&.&.<+&.7+<+&.<+7+&.7+&.S.7+&.S.[ 7+S.[ S.7+[ S.S.m.7+m.m.m.F+m.[ m.m.F+m.m.F+m.m.F+m.m.m.m.-.m.-.m.-.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.D+-.z+-.D+-.G+-.G+-.z+G+G+-.G+-.G+G+G+G+G+G+G+G+G+A+G+A+]+G+]+G+y+]+A+C+]+A+H+]+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+v+j+u+j+u+v+j+j+u+j+u+j+j+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+b+u+;+u+;+g+f+r+~+l+l+_+h+(+^+l+f+r+~+g+b+;+j+b+b+j+b+%+b+b+%+b+b+%+b+b+%+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+b+b+b+b+b+$+b+h.b+$+h.-+;+-+-+I.-+f+Q.-+-+;+p.$+h.$+h.$+h.$+h.$+h.$+h.$+$+h.$+h.$+h.$+h.$+h.p.h.$+h.$+h.p.h.$+$+h.$+h.$+h.$+h.$+h.$+h.$+$+h.$+h.$+h.$+h.$+h.$+$+h.$+$+h.h.b+h.$+h.b+h.$+h.b+h.b+b+b+h.b+b+h.b+b+h.b+b+h.b+%+h.%+h.b+h.%+h.h.%+h.%+h.h.%+h.%+h.q.%+%+h.%+q.h.%+%+q.q.q.%+q.q.q.%+q.%+q.q.%+q.%+q.q.%+q.q.:.%+:.q.&+q.%+q.&+q.q.:.%+q.q.q.q.q.q.E q.E q.q.E 1.q.E q.E E E E q.E 1.)+1.1.)+E 1.E 1.)+1.1.)+E 1.)+1.)+1.1.1.1.1.1.1.1./+1.1.1./+1.1./+1.&.<+<+1.<+/+<+&.<+8 <+/+8 <+&.<+&.<+&.<+&.<+&.&.<+<+&.<+&.<+<+[ S.7+<+S.&.S.7+&.S.7+[ S.7+S.[ S.m.S.F+S.m.F+[ F+S.m.F+m.m.m.m.m.m.m.F+-.m.-.m.-.m.-.m.F+-.m.-.-.m.-.-.-.-.-.-.-.x+-.-.-.-.-.-.-.-.B+-.-.-.-.-.G+-.-.D+-.z+G+G+G+-.G+G+D+z+G+G+G+G+G+G+G+G+G+G+G+w+G+]+G+G+A+G+y+]+A+]+y+C+]+y+C+]+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.v+j+j+u+j+j+j+u+j+u+j+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+%+j+j+b+j+u+b+g+g+g+r+~+f+l+l+_+h+_+l+l+r+~+f+g+d+u+b+b+b+b+b+%+b+%+%+b+%+b+b+%+b+b+b+b+b+%+b+%+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+b+b+$+$+h.$+;+p.;+-+I.-+I.-+I.;+;+p.$+;+$+h.$+b+$+h.$+h.$+h.$+h.h.$+h.$+h.$+h.h.$+h.$+h.$+h.$+h.$+h.h.$+h.h.$+h.$+h.h.h.$+h.h.h.$+h.h.$+h.$+h.$+h.$+h.b+h.b+h.b+b+$+h.b+h.$+h.b+b+h.b+h.b+b+b+h.b+b+h.b+b+h.%+b+h.h.%+h.b+%+h.%+%+h.q.h.%+%+q.h.%+q.%+h.q.%+q.q.%+%+q.%+%+q.%+q.q.%+q.q.q.q.q.q.q.q.q.q.%+q.:.q.%+q.q.&+q.&+:.%+q.&+q.q.:.q.:.q.:.q.q.q.:.q.E )+q.E q.1.E >+E 1.)+E 1.q.E 1.E 1.1.1.1.E 1.E 1.E 1.1.E )+1.1.)+1.1.1.1.1.1.1.1.1.1.1.<+1.<+1.<+1.&.<+1.&.1.<+&.<+1.<+<+<+<+<+&.<+&.<+&.&.<+<+&.S.<+S.7+S.&.<+&.[ [ [ S.7+[ [ [ <+7+[ S.[ S.7+[ m.7+F+m.m.m.m.F+m.m.F+m.F+m.F+m.-.m.m.m.F+-.m.m.m.-.-.m.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.-.-.z+-.x+D+-.-.G+-.G+z+G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+A+G+]+G+]+G+]+A+G+C+]+y+C+]+y+C+]+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+v+u+j+j+u+u+j+u+j+u+j+j+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+u+b+u+g+u+g+f+r+f+r+l+_+h+(+l+~+l+r+g+g+b+;+b+b+j+b+%+%+b+%+%+b+%+b+%+%+b+%+b+%+%+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+b+b+$+;+$+;+-+I.f+-+f+I.-+-+p.;+h.$+h.$+h.$+h.$+b+$+h.$+h.$+$+h.$+h.$+h.h.$+h.$+h.$+h.$+h.$+h.$+h.$+h.$+h.$+h.$+$+h.$+h.$+$+h.$+$+h.$+h.b+h.b+b+h.b+$+b+h.$+h.h.b+h.b+h.b+b+h.b+b+b+h.b+h.b+h.b+h.b+h.b+h.h.b+%+h.%+h.h.%+h.h.%+h.%+h.q.h.%+q.h.q.%+h.%+q.%+q.q.%+q.q.q.q.q.q.q.q.%+q.q.%+q.%+q.q.%+q.q.%+q.q.:.%+q.%+q.%+:.%+q.:.%+q.:.q.q.q.q.:.q.q.q.q.q.E )+E ..E E q.E q.1.q.1.1.E 1.E 1.E )+1.)+1.1.1.{+1.)+1.1.)+1.1.1.1.1.1.1.1.<+1.1.1.1.1.1.1.1.<+1.1.&.<+<+<+1.<+<+<+1.<+8 <+<+<+<+&.<+<+&.<+S.&.&.<+&.<+[ 7+S.&.S.<+7+&.S.7+S.[ [ S.S.7+m.S.m.[ m.m.[ [ F+[ m.m.m.m.m.m.m.m.m.F+-.F+m.-.m.F+-.-.m.m.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.z+-.G+-.D+-.-.G+z+D+z+G+G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+]+A+G+A+G+A+w+G+]+y+w+C+]+A+]+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.u+j+j+j+v+j+j+u+j+u+j+u+j+u+j+j+u+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+b+u+g+g+g+f+r+r+~+l+_+h+_+l+f+l+g+f+g+b+g+u+b+j+b+%+%+b+%+%+b+%+%+b+%+b+%+b+%+b+b+b+b+b+%+b+%+b+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+h.$+;+;+;+;+-+I.;+-+;+p.;+;+$+h.$+b+b+b+b+b+h.b+$+b+b+$+b+h.h.$+$+h.$+$+h.$+h.h.$+h.h.h.h.$+h.b+$+h.$+h.h.$+h.h.$+h.b+h.h.b+h.b+b+h.$+b+$+b+b+$+h.h.b+h.b+b+h.b+b+b+b+h.b+b+h.b+b+h.b+h.%+b+%+h.b+%+%+b+q.b+h.%+h.%+%+h.%+h.%+h.%+h.q.%+h.%+%+h.%+%+h.%+q.%+q.q.%+q.%+q.%+q.%+q.q.q.q.q.q.q.%+q.q.:.q.&+q.&+q.&+:.&+q.&+q.:.%+:.:.q.:.q.:.:.q.q.:.q.:.q.E q.q.1.q.1.E )+1.E 1.E q.1.1.)+E )+1.1.E 1.:.)+E 1.:.1.:.1.1.{+1.1.1.1.1.<+1.1.1.<+1.<+1.&.<+1.1.<+<+1.<+1.&.<+&.1.&.<+S.<+<+&.<+S.&.[ <+S.&.S.S.&.[ [ <+[ <+7+[ [ [ S.7+S.S.7+S.m.[ m.S.F+F+m.[ 7+m.m.m.m.m.F+m.F+m.F+m.m.F+m.m.m.-.m.m.-.-.m.m.-.m.-.F+-.-.-.-.-.-.-.-.-.x+-.-.-.-.-.-.-.-.-.B+-.-.-.-.-.-.-.z+-.G+-.G+-.G+-.G+G+z+G+G+G+G+G+G+G+G+G+w+G+G+G+G+G+]+G+]+w+C+y+G+C+H+y+]+H+A+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+u+u+v+j+j+u+j+v+j+u+j+u+j+j+u+j+j+j+j+u+j+j+j+j+j+j+j+j+j+j+j+u+u+;+g+r+g+~+f+'+_+m+k+l+~+r+g+f+g+g+b+j+b+j+%+%+j+b+%+b+%+%+b+b+%+b+%+b+%+b+%+b+%+%+b+%+b+b+%+b+b+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+$+b+;+$+;+-+;+I.-+-+;+;+;+$+;+$+b+b+b+$+h.$+$+b+$+h.$+b+h.$+b+$+b+h.$+b+h.b+h.$+b+$+b+$+$+b+b+$+b+h.$+h.b+$+h.b+$+h.b+$+h.$+h.$+b+h.$+b+h.b+h.b+h.b+b+b+b+b+b+b+b+h.b+h.b+b+b+b+b+h.b+b+%+h.h.b+%+h.b+h.%+h.%+%+h.%+h.h.%+q.%+h.%+q.%+%+h.%+%+q.%+%+q.%+%+%+q.%+q.q.%+q.q.q.q.q.q.%+q.%+q.%+q.:.q.&+q.%+q.&+q.&+q.%+q.&+q.&+q.:.%+q.:.%+:.q.%+:.q.q.E q.:.q.E :.E E q.)+E q.1.E )+1.E )+E 1.1.:.1.{+1.1.1.{+1.{+1.1.{+1.1.1.S.1.S.1.! 1.S.1.S.1.S.1.S.1.&.S.&.1.S.&.S.<+S.1.S.<+S.<+S.&.S.S.<+S.&.<+[ S.&.[ S.[ &.[ S.[ [ S.S.7+S.[ S.F+S.[ m.[ F+m.[ m.7+m.m.m.F+F+m.F+m.m.m.m.m.m.F+m.m.F+m.m.F+-.m.m.-.F+-.m.-.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.z+-.-.z+D+x+D+G+-.G+G+G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+]+A+]+A+G+A+]+G+]+C+]+w+C+y+C+]+H+A+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+j+v+j+j+u+j+j+j+j+u+j+u+j+u+j+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+u+b+u+g+u+f+g+r+f+l+^+m+_+l+~+f+g+g+g+;+b+u+b+j+b+b+%+%+b+j+%+b+%+%+%+%+b+%+b+%+b+%+b+b+%+b+b+%+b+b+%+b+%+b+b+%+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+h.$+h.;+$+;+-+;+;+;+-+;+;+;+h.$+h.$+b+b+b+b+h.b+b+b+b+$+b+h.b+b+$+b+b+b+$+b+b+b+$+h.b+b+b+$+h.h.$+h.b+b+h.b+b+h.b+h.h.h.b+b+b+h.b+b+h.b+$+b+b+b+b+h.b+h.b+b+h.b+b+b+b+b+b+b+h.b+b+%+b+h.b+%+b+%+h.%+b+%+h.%+h.%+h.%+%+q.h.h.%+q.h.%+h.%+q.q.%+q.q.%+%+q.q.q.q.q.%+q.q.q.%+q.%+q.q.q.%+q.q.q.%+q.q.q.&+q.&+q.%+q.&+:.&+q.&+q.%+:.:.%+:.q.q.&+q.q.:.:.q.:.q.:.q.q.)+E )+E )+E )+E E )+1.E )+:.1.)+E 1.:.1.:.1.:.1.{+1.1.{+S.1.1.S.1.1.1.S.1.S.1.1.S.1.1.S.1.1.S.S.&.1.<+! <+[ <+! <+&.S.S.&.S.&.&.S.[ <+[ S.&.S.7+S.7+[ S.7+[ S.S.[ S.[ S.m.7+m.m.S.F+m.[ m.F+[ m.m.m.F+m.m.F+m.m.F+m.m.m.m.-.F+-.m.m.-.F+-.-.m.-.m.-.-.-.-.-.-.-.-.-.x+-.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.G+-.x+G+-.-.G+G+-.G+G+G+G+-.G+G+G+G+G+G+G+G+G+A+G+G+G+G+]+G+A+]+A+w+A+H+]+]+y+C+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+j+j+u+j+v+u+v+j+j+j+j+j+u+j+u+j+u+j+u+j+j+j+j+j+j+u+j+j+j+u+g+u+g+g+g+f+r+l+^+_+k+l+g+r+r+g+;+u+u+j+b+j+b+%+j+b+j+%+b+%+%+%+b+%+b+%+b+%+b+%+b+%+%+b+%+%+b+%+%+b+b+b+%+b+%+b+b+b+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+b+$+b+;+$+;+;+;+;+;+-+;+;+$+h.$+$+b+b+b+b+b+$+b+b+b+b+$+b+b+b+b+h.b+b+h.$+b+h.b+$+h.b+$+h.$+h.h.$+b+b+b+h.$+b+h.$+h.$+b+$+b+$+h.b+b+b+b+b+h.b+h.b+h.b+b+b+b+h.b+b+b+b+h.b+b+h.b+%+b+b+h.%+b+%+b+h.b+%+h.%+h.%+h.%+h.%+h.h.%+%+%+h.%+%+q.%+q.%+%+%+%+%+%+q.%+q.%+q.%+q.%+q.%+q.q.q.%+q.%+q.%+q.&+q.q.&+q.%+:.%+q.&+:.%+&+q.&+q.&+:.q.%+:.q.&+:.q.:.:.q.q.:.q.:.q.E E q.:.q.)+E )+E )+1.:.1.{+E 1.:.1.{+1.1.{+1.1.1.:.1.:.{+1.1.{+1.1.S.1.S.1.S.1.S.1.S.1.S.8 S.S.8 <+S.S.&.S.&.S.&.S.S.S.S.&.S.&.S.S.&.S.[ &.S.[ S.[ [ S.[ S.S.S.[ [ m.[ m.m.[ m.m.7+m.m.7+m.F+m.m.[ F+m.m.F+m.m.F+m.m.m.F+-.F+m.m.m.-.F+m.-.m.m.-.m.m.-.m.-.m.-.-.m.-.-.-.-.-.-.-.-.-.-.-.B+-.z+-.-.-.-.D+-.-.-.z+-.G+G+D+z+G+-.G+-.G+G+G+-.G+G+G+G+G+G+G+G+]+A+]+G+A+]+A+w+A+]+C+]+C+y+C+]+y+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.v+j+v+j+u+j+j+j+j+u+j+v+u+j+u+j+u+j+j+j+j+u+j+u+j+j+j+j+u+b+u+u+g+g+g+f+r+~+l+m+k+l+~+r+f+g+g+g+u+b+b+j+j+%+%+%+j+%+j+%+b+%+b+%+%+b+%+%+%+%+b+%+%+b+b+%+b+%+b+b+b+%+%+b+b+b+b+%+%+b+b+b+%+b+b+b+b+b+b+b+b+b+b+b+b+b+h.$+b+;+;+-+;+-+;+;+;+;+;+b+h.b+b+b+b+b+b+b+b+$+b+b+b+b+$+b+$+b+$+b+b+b+b+$+h.b+b+h.b+b+b+b+b+b+h.$+b+b+h.b+b+b+h.b+h.b+h.b+$+b+b+h.b+b+b+b+b+b+b+b+b+b+b+b+b+h.b+b+%+b+%+b+b+h.%+b+b+%+h.b+%+%+b+h.%+h.%+h.%+h.%+q.%+%+h.q.%+h.q.%+%+q.%+q.%+q.%+q.%+q.%+q.%+q.q.q.q.q.q.q.%+q.%+q.%+:.%+q.q.&+q.%+:.%+q.&+:.%+:.%+&+:.%+&+q.&+:.q.&+:.q.q.:.q.q.:.q.:.q.q.)+:.)+E )+E E :.E )+E )+1.:.1.{+)+1.1.E {+E 1.:.{+1.1.1.1.1.! ! 1.! 1.S.1.S.1.S.1.S.1.S.1.S.S.8 S.&.S.8 S.S.&.S.S.S.&.S.&.S.S.S.S.[ [ [ S.S.[ S.[ S.[ S.S.S.S.7+S.m.S.7+m.S.F+m.7+m.m.[ m.m.[ m.F+F+m.m.F+m.m.F+m.m.F+m.m.m.m.-.F+m.m.-.-.m.-.-.F+-.-.-.-.-.-.-.-.-.-.-.-.x+-.-.-.-.-.B+-.-.-.-.-.z+-.-.x+-.-.G+D+z+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+w+G+G+A+G+G+A+]+A+]+A+]+A+y+C+w+C+]+y+C+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+j+j+j+v+j+u+v+u+j+j+j+j+j+u+j+u+j+u+j+u+j+j+j+j+j+u+u+u+u+g+g+g+f+r+f+r+l+^+^+l+g+r+g+g+g+b+u+b+j+j+j+%+j+j+%+%+j+%+%+j+%+j+%+b+%+%+b+%+b+%+%+b+%+%+b+%+b+%+%+%+b+b+%+%+b+%+b+b+%+b+%+b+b+b+%+b+b+b+b+b+b+b+b+b+b+$+b+h.;+;+;+;+;+;+;+;+h.$+b+b+b+b+b+b+b+b+b+b+b+h.b+$+h.b+b+b+h.b+b+h.$+h.b+b+$+h.b+$+h.b+h.b+b+b+b+h.b+b+b+h.$+b+b+b+b+b+b+h.b+b+b+b+b+b+h.b+b+b+h.b+b+b+h.%+b+b+%+h.b+%+b+%+b+b+%+h.b+%+%+h.h.%+%+h.%+h.%+h.%+h.%+h.q.%+%+q.%+%+q.%+%+%+%+%+q.%+q.q.%+q.%+q.q.%+q.%+q.%+q.q.%+q.:.q.%+:.q.&+q.%+:.%+:.&+q.%+&+%+:.&+%+:.&+q.&+q.&+q.q.&+:.%+:.:.q.:.q.:.:.q.:.q.:.:.)+:.)+E :.:.:.)+E )+:.1.:.{+{+1.{+{+1.1.:.1.:.S.! {+1.S.1.S.1.S.1.S.1.S.1.S.1.S.! 1.S.S.S.S.S.S.&.S.S.&.S.S.S.S.S.[ S.[ S.S.[ S.[ S.S.S.[ S.S.[ [ [ m.[ [ m.m.m.7+m.[ m.[ F+m.F+[ m.F+m.m.m.F+m.m.F+m.m.m.m.m.F+m.F+m.m.-.F+-.m.-.m.m.-.m.-.F+-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.B+D+-.z+-.G+-.D+x+G+G+G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+]+G+]+G+G+G+]+G+C+]+]+y+C+]+y+C+y+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.v+u+v+j+j+j+j+j+j+v+u+j+v+j+j+j+v+j+u+j+j+u+j+u+j+u+j+u+u+g+u+r+r+g+f+r+l+_+k+r+r+g+g+g+g+u+u+b+j+j+j+b+j+%+b+j+%+b+%+j+%+%+b+j+%+j+%+j+%+%+b+%+%+b+%+%+b+%+b+b+%+%+b+b+%+b+b+%+b+b+%+b+%+b+%+b+b+%+b+%+b+b+b+b+b+b+h.;+b+$+;+;+;+;+;+$+;+b+b+$+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+h.b+b+b+$+b+b+b+b+b+b+b+b+b+b+b+b+h.b+h.b+b+b+h.b+b+b+b+b+b+b+b+b+b+b+h.b+b+b+b+b+b+h.b+%+b+h.%+b+b+%+b+b+%+b+b+h.b+%+h.%+%+h.h.%+%+%+h.%+h.%+q.%+%+q.%+q.%+%+q.%+%+q.%+%+q.%+q.q.%+q.%+%+q.q.q.q.%+q.q.q.q.q.%+q.%+q.%+q.&+q.%+:.%+&+q.&+q.%+&+&+:.%+:.%+:.&+%+&+:.%+:.&+:.q.q.&+q.q.:.q.:.q.q.:.:.q.)+q.E E )+E )+)+E )+:.)+:.)+{+1.E {+E 1.E {+1.1.S.! E {+1.! 1.S.1.S.1.S.1.S.1.S.1.S.S.S.S.1.S.1.S.S.S.S.S.S.S.[ S.S.[ S.S.S.S.[ S.S.[ S.[ S.[ S.S.F+S.m.S.[ m.S.7+m.[ m.7+m.m.m.m.[ m.F+m.[ m.F+m.m.F+m.m.m.F+m.F+-.m.-.m.m.F+-.m.m.m.m.-.m.-.m.-.-.-.-.m.-.x+-.-.x+-.-.-.-.-.-.-.-.B+-.-.-.-.-.B+-.-.z+D+-.D+G+-.G+-.-.G+G+G+G+G+-.G+G+G+G+G+G+G+G+G+C+G+A+G+]+A+G+y+]+w+A+H+]+y+C+]+y+]+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+v+j+j+v+j+v+j+u+j+j+u+j+j+u+j+j+N.u+j+u+j+j+j+N.u+u+u+u+g+u+g+g+N.N.l+k+^+r+r+f+r+;+u+g+u+b+j+j+j+%+j+j+%+j+%+j+j+%+%+N.j+%+%+%+b+%+%+N.j+%+b+%+%+%+b+%+%+%+%+b+%+N.%+b+B.N.N.%+%+b+%+N.b+b+b+%+N.b+b+b+%+b+b+b+b+N.N.;+b+;+;+;+;+;+b+$+h.b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+h.b+b+h.b+b+b+h.b+b+h.b+h.b+b+b+b+b+h.$+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+h.b+b+%+b+b+b+b+b+%+b+b+%+b+b+b+%+%+%+b+%+h.b+%+%+h.%+h.%+N.%+h.%+N.q.N.h.%+q.q.%+q.%+%+%+N.%+%+%+%+q.%+q.%+N.%+q.%+q.q.q.%+q.%+q.%+q.&+q.%+q.q.&+%+q.%+:.%+:.&+:.%+%+:.&+&+&+%+:.&+q.&+:.%+:.:.&+q.&+:.q.:.q.:.:.:.q.:.:.:.:.)+:.N.E :.:.:.)+:.)+:.1.:.{+1.{+{+{+N.! {+:.1.{+1.1.{+S.E S.1.S.1.S.S.S.1.S.! S.1.S.S.S.S.S.S.S.S.S.[ S.S.S.S.S.[ S.N.S.S.S.[ S.S.S.[ S.m.N.S.m.N.7+m.m.F+m.m.m.N.m.[ F+S.F+m.[ m.F+m.F+m.m.F+m.m.F+m.m.m.m.m.F+m.F+m.-.m.-.F+-.-.m.e.m.-.-.m.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.N.-.B+-.z+-.-.-.-.-.G+z+-.-.z+G+G+G+G+-.G+N.G+G+G+z+G+G+G+G+G+G+G+G+G+]+G+A+G+]+G+C+A+]+y+N.C+w+H+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.v+j+j+v+j+v+j+j+v+j+v+j+j+v+j+j+v+N.j+j+j+u+j+u+N.u+u+u+g+u+r+r+N.r+l+N.l+r+f+g+g+g+u+u+j+b+j+j+%+j+%+j+%+j+%+j+%+%+j+j+%+%+j+%+j+%+j+%+N.%+%+%+%+b+%+N.%+b+%+b+%+%+N.%+%+N.%+%+N.%+b+%+N.N.%+%+N.N.%+%+b+%+b+b+b+N.b+b+N.;+;+b+;+$+b+h.b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+N.Z N.b+b+b+N.N.N.h.b+b+N.N.N.b+b+b+N.N.N.$+%+b+b+b+b+b+b+b+b+N.N.Z b+b+%+N.N.N.%+b+b+N.N.N.%+b+b+%+Z b+b+%+h.%+b+h.%+b+%+%+h.%+h.%+%+N.N.q.%+q.N.%+N.%+%+%+%+%+%+%+q.%+q.%+q.q.q.q.%+q.q.N.q.q.q.q.%+q.N.%+q.%+q.:.%+q.&+q.&+%+q.&+:.&+q.&+q.%+&+:.&+%+:.%+:.&+%+&+:.%+:.%+:.q.:.:.q.&+:.:.%+:.q.:.:.q.)+)+:.:.N.:.:.)+)+:.)+:.)+:.{+1.{+:.1.:.N.:.1.1.:.S.E S.{+E S.{+S.1.S.! {+1.S.S.S.S.S.S.S.S.S.S.S.[ S.[ S.S.S.S.S.S.S.S.N.[ [ [ S.S.S.[ S.S.m.N.m.[ N.m.m.[ S.m.7+m.N.m.F+m.m.m.m.F+m.[ m.[ m.F+m.m.F+m.m.F+m.F+m.m.m.m.-.F+m.m.m.-.F+-.N.-.-.m.-.B+m.-.N.-.-.-.-.-.x+-.-.-.-.B+-.N.-.-.-.-.-.N.z+-.z+-.-.z+G+-.G+-.G+-.z+G+N.-.G+G+G+G+G+G+G+G+G+G+A+]+G+A+G+]+G+A+w+G+]+C+N.]+H+C+y+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+j+v+j+j+u+j+u+v+j+j+j+u+u+j+u+j+N.j+v+j+N.N.u+u+j+N.u+g+u+r+f+N.r+l+l+l+N.r+g+g+N.N.N.u+b+N.N.N.N.%+j+N.j+%+N.j+%+N.N.%+N.j+%+N.N.N.N.%+N.N.N.N.%+%+N.N.N.%+%+%+b+%+N.%+b+N.%+b+N.%+b+%+N.N.%+b+N.B.b+b+%+b+b+b+B.b+b+b+b+N.b+;+;+N.N.N.b+b+b+Z N.%+N.N.N.N.b+b+b+b+b+b+b+b+Z b+b+b+Z b+Z %+b+%+N.b+Z %+b+%+N.b+Z %+b+%+N.b+b+b+b+b+b+b+b+Z %+%+b+N.%+N.b+%+b+N.%+N.%+%+%+N.%+b+N.N.%+%+b+%+b+%+%+b+q.h.%+%+h.%+%+h.N.%+N.q.%+N.%+N.%+q.%+%+q.%+N.N.%+N.%+%+%+N.N.N.N.%+N.N.N.N.%+q.N.N.B.q.:.N.N.N.&+q.%+&+q.N.N.%+%+N.N.N.&+&+%+N.N.N.&+&+N.N.N.&+:.:.N.N.&+N.&+:.N.q.&+:.N.N.N.:.)+:.N.N.N.N.:.)+:.:.)+:.1.:.)+1.:.{+1.:.{+N.{+N.N.N.{+{+1.N.S.S.N.S.S.N.N.N.S.{+! 1.S.S.S.N.N.N.S.! S.N.N.N.N.S.S.[ N.N.N.N.m.S.S.S.N.N.N.m.[ S.N.m.m.N.m.m.m.F+m.m.[ N.m.m.N.N.N.F+m.7+N.m.F+N.m.N.N.N.m.F+m.m.m.m.F+-.N.N.-.m.e.N.N.-.m.N.-.N.N.N.-.-.N.N.N.-.-.N.N.N.-.-.-.N.N.N.N.B+-.-.-.N.N.N.G+N.N.G+N.N.N.G+z+G+N.N.N.N.G+G+N.N.N.G+G+N.N.N.w+N.N.A+]+N.N.N.H+G+N.N.y+N.H+A+N.]+A+N.N.N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.v+j+v+j+v+j+v+j+j+v+j+j+v+j+u+v+N.j+j+N.v+j+N.u+u+N.u+r+u+r+u+N.l+l+l+r+r+g+r+N.u+u+j+N.j+N.j+j+j+N.j+N.%+j+N.%+j+N.%+%+N.%+N.%+%+%+N.%+N.%+%+%+N.%+%+N.%+j+b+%+%+%+N.%+%+N.N.B.N.%+%+b+B.N.%+%+N.N.%+b+b+%+%+b+N.b+b+h.b+;+;+;+N.b+b+b+N.b+b+N.%+b+N.%+%+b+B.b+b+b+b+b+b+b+b+%+b+b+N.%+N.b+b+b+N.%+N.b+b+b+N.b+N.b+b+b+N.%+b+b+%+b+b+%+b+b+b+b+%+N.%+N.%+b+%+N.b+N.%+b+b+N.%+%+%+N.%+b+%+b+%+h.%+%+h.%+h.%+%+h.%+N.%+%+N.%+q.N.%+N.%+%+q.%+%+q.N.%+%+N.%+q.N.%+%+q.N.%+B.%+%+q.N.%+&+N.q.%+N.&+%+q.%+&+q.%+:.N.&+:.N.&+&+&+N.:.N.&+&+&+q.N.&+&+&+N.q.&+N.&+:.N.:.q.N.&+:.N.&+:.:.N.:.N.:.:.:.N.:.:.)+:.:.)+:.)+:.{+{+:.{+{+E N.! :.{+{+N.! {+N.:.{+N.:.{+{+{+{+N.S.{+S.{+! {+m.S.S.N.S.S.N.m.S.m.N.S.N.m.m.m.N.S.S.m.S.m.m.m.N.m.m.N.m.[ N.m.7+m.S.[ m.m.N.F+[ m.m.m.N.m.m.N.m.m.N.m.m.m.m.N.m.m.m.m.F+-.F+N.-.F+N.-.-.m.N.-.N.-.-.-.-.N.-.-.N.-.-.N.B+-.B+N.-.N.z+-.-.N.z+-.-.z+-.N.G+-.N.z+D+G+D+z+N.D+N.G+G+G+N.G+N.G+G+G+N.G+N.A+G+N.y+G+N.A+w+A+y+N.H+N.H+C+N.H+N.H+y+N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+v+u+v+j+v+j+j+v+j+j+v+j+j+v+j+N.j+v+N.j+u+u+u+u+N.u+u+r+r+r+N.l+l+r+r+N.g+u+N.u+u+j+N.j+N.j+%+j+N.%+j+N.j+N.j+%+N.j+%+N.%+N.%+j+%+N.%+N.%+j+%+N.%+%+N.%+%+%+%+%+%+N.%+%+N.%+b+%+N.%+%+N.%+N.N.%+N.b+%+%+b+b+b+N.b+b+;+b+N.;+b+N.b+b+b+N.b+%+N.b+%+N.b+b+b+N.b+%+b+b+%+b+b+b+N.N.N.b+b+N.b+b+%+N.b+N.b+b+%+N.%+N.b+b+%+N.b+b+%+b+%+b+b+b+%+N.N.N.b+%+N.b+b+%+N.%+N.b+%+%+N.b+b+%+N.b+q.%+h.%+%+h.%+%+%+%+h.%+%+q.N.N.N.N.%+%+N.%+N.%+%+%+q.%+%+N.q.%+N.%+%+N.q.q.%+N.q.N.q.%+q.B.q.q.N.%+:.%+N.N.%+:.%+&+:.&+N.%+&+N.N.N.N.N.&+&+N.N.&+&+N.N.N.N.N.&+:.N.q.:.&+N.&+N.:.:.N.N.N.N.N.:.N.:.)+:.N.)+)+:.:.)+:.)+:.{+1.:.1.{+:.:+N.{+{+N.N.N.{+{+{+N.{+N.S.! S.N.N.N.S.{+S.S.S.S.S.N.N.N.S.m.N.S.S.S.N.m.N.S.S.m.N.[ S.S.S.S.N.N.N.7+m.N.m.m.N.[ m.[ m.m.7+m.N.m.m.F+N.N.N.[ F+m.N.m.N.m.F+N.N.N.m.m.e.N.m.m.-.N.m.-.N.N.N.N.N.-.N.m.-.N.N.N.-.-.N.-.x+N.N.N.N.N.-.N.-.-.B+N.-.-.-.-.z+N.-.z+N.-.-.z+N.N.N.G+N.G+z+G+N.G+N.N.N.N.N.G+N.G+A+N.G+H+N.G+C+N.N.N.y+N.]+y+N.N.N.C+H+H+N.N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.v+u+v+j+v+j+j+v+j+j+v+j+j+v+j+j+N.v+j+N.j+u+N.u+u+N.u+r+r+r+r+l+N.r+r+N.g+u+u+N.b+u+j+N.j+N.j+j+j+N.j+%+N.N.j+%+j+N.%+%+N.j+N.j+%+%+N.%+N.%+%+%+N.%+%+N.j+%+%+b+%+%+N.%+%+N.%+%+%+N.%+%+N.%+N.N.%+N.%+%+b+b+%+b+%+N.b+b+N.g+b+b+N.b+b+b+N.b+%+N.b+%+N.b+%+%+N.%+b+b+b+b+b+%+N.b+%+b+%+b+B.b+b+b+N.b+B.b+b+b+N.b+N.%+b+%+N.b+%+b+b+b+b+%+%+N.b+%+%+%+%+N.%+b+%+N.%+N.%+b+%+N.%+%+%+N.%+%+%+%+h.%+%+%+h.%+q.%+%+q.%+N.%+%+N.%+%+N.%+N.%+q.%+%+%+%+N.%+q.N.q.%+N.%+%+q.B.%+N.q.:.%+N.q.%+N.:.%+&+%+:.B.%+:.q.%+&+N.:.&+N.&+&+&+&+%+&+&+&+N.&+N.&+&+:.&+:.:.N.&+:.&+N.N.&+:.&+N.:.&+:.:.:.N.)+:.:.N.:.:.:.)+:.1.:.:.1.:.{+{+N.1.{+N.{+N.:.:+N.{+{+{+N.N.{+{+{+N.{+m.N.{+S.S.{+S.{+N.m.:+N.S.S.N.S.S.m.N.m.N.m.S.S.N.S.m.S.m.N.m.m.N.S.m.N.m.m.N.m.m.m.F+N.m.m.N.m.F+N.m.m.N.F+m.m.N.N.m.m.N.m.m.e.m.m.m.m.m.F+m.N.-.m.N.-.-.-.-.-.N.-.N.-.-.N.-.-.N.-.-.N.-.-.x+-.B+N.-.-.-.N.B+-.B+-.-.N.-.D+N.-.G+N.z+G+N.G+N.x+D+G+N.G+N.G+G+A+G+A+N.G+w+N.G+A+N.w+N.w+C+N.C+N.C+y+N.H+N.y+]+y+H+H+N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+v+j+v+j+v+j+v+j+v+j+j+j+v+j+j+v+N.j+v+j+N.N.u+u+g+N.u+r+u+r+l+l+r+N.N.u+u+u+g+u+N.N.N.j+j+N.N.N.N.j+j+j+N.%+j+j+%+N.j+j+N.%+%+N.N.N.N.%+N.%+j+%+N.%+j+%+N.%+j+%+%+%+N.%+%+N.N.N.N.%+%+%+N.%+N.%+%+N.%+%+b+%+b+b+b+b+N.N.b+;+b+;+b+N.N.N.%+%+b+N.%+b+N.B.N.N.%+b+b+B.b+%+b+b+N.B.N.N.N.%+b+N.N.B.b+%+b+N.B.N.%+%+%+N.N.N.%+%+b+N.%+%+%+b+b+N.N.N.N.N.b+%+N.N.N.%+%+%+N.N.N.%+%+h.%+N.%+h.%+%+N.%+h.%+%+%+q.%+q.%+N.%+%+%+%+N.%+N.%+N.%+%+%+q.%+q.N.%+%+N.%+q.%+N.N.N.N.q.B.%+q.%+N.&+:.%+N.&+N.N.N.%+:.%+&+:.%+N.&+%+&+N.N.N.N.&+N.N.N.&+:.&+N.N.N.N.&+q.N.:.&+q.N.&+:.q.:.:.N.N.N.N.:.:.N.N.N.N.:.:.N.:.)+:.{+)+{+:.{+:.{+N.N.:.{+{+N.N.N.{+! {+N.:+{+! {+{+N.N.N.:+! {+S.S.S.m.N.N.N.m.S.N.m.S.[ N.m.S.N.N.N.N.m.S.[ S.m.N.N.N.m.m.N.m.7+N.m.7+m.S.m.N.N.m.m.[ m.N.N.N.m.m.F+N.m.F+m.F+N.N.N.m.m.F+m.-.m.-.N.m.F+-.N.N.N.N.-.N.-.-.N.N.N.x+-.-.N.-.-.N.N.N.N.-.-.N.N.N.N.z+-.-.-.B+z+N.x+N.G+-.G+N.N.N.G+G+N.N.N.N.G+G+N.N.N.N.G+N.A+G+N.y+G+N.C+G+N.N.N.y+N.y+C+N.H+H+N.C+N.N.N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.v+v+j+v+j+v+j+v+j+v+j+v+j+v+j+j+v+N.j+u+u+u+u+u+N.u+r+r+r+l+r+r+u+r+u+g+u+u+u+j+u+j+j+j+j+N.j+j+j+j+j+%+N.j+%+j+j+%+j+%+j+j+j+%+j+%+N.j+%+%+%+j+%+%+%+%+%+%+%+%+j+%+%+%+%+%+%+%+%+%+b+%+%+%+%+%+%+%+%+b+%+%+b+b+b+b+%+b+h.b+;+b+b+%+b+%+b+%+b+%+b+%+N.b+%+b+b+%+b+%+b+b+%+b+%+b+%+%+b+b+%+%+b+b+b+b+%+%+b+%+b+b+b+%+%+b+b+b+%+N.%+b+b+%+%+%+%+%+%+%+%+b+%+%+%+b+%+b+%+%+%+%+%+%+%+%+%+%+h.%+%+%+%+q.%+%+%+%+%+%+%+q.%+%+%+%+%+%+%+%+q.%+%+%+%+%+%+q.%+%+%+%+%+q.%+&+N.%+q.q.%+:.%+q.%+&+%+q.&+&+&+q.&+q.&+%+:.&+&+:.%+&+&+&+&+:.&+&+:.%+:.&+:.&+:.&+:.&+&+:.:.&+:.:.:.:.:.:.&+:.:.:.)+:.:.:.:.:.)+:.{+:.{+:.:.:.{+1.:.1.:.{+:.S.:.! {+:.{+{+{+{+{+S.{+S.S.{+m.{+m.{+S.{+{+m.S.{+m.m.S.S.m.S.S.m.S.S.S.m.m.m.m.m.S.m.S.m.S.m.m.m.S.[ m.m.m.m.[ m.[ F+m.m.m.[ F+m.m.m.m.m.F+m.m.m.F+m.m.m.m.-.m.m.m.-.F+m.F+m.-.F+-.m.-.-.-.-.m.-.m.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.B+-.z+-.-.-.-.-.-.-.D+G+-.z+-.z+G+G+z+D+G+G+G+G+G+z+G+G+G+G+G+G+G+G+G+G+G+]+A+w+A+C+y+y+]+A+]+]+y+C+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.v+j+v+j+v+j+v+j+v+j+v+j+j+j+v+j+j+N.u+u+u+u+u+u+N.r+u+r+r+r+r+u+r+u+u+u+u+u+u+u+j+j+j+j+j+N.j+j+j+j+j+N.j+j+j+j+j+j+j+j+j+%+N.N.N.N.%+%+j+j+j+%+j+%+j+%+j+%+j+%+%+j+%+j+%+j+%+%+%+%+%+%+%+%+%+%+b+%+%+%+b+%+b+%+b+h.b+;+b+>+b+h.b+b+%+b+%+b+%+b+%+%+N.b+%+b+%+b+%+b+%+%+b+%+b+%+b+b+%+b+b+b+b+%+%+%+b+b+b+%+b+%+%+b+b+%+%+%+b+%+b+%+%+b+b+%+b+%+b+b+%+%+%+b+%+%+%+%+%+%+%+b+%+h.%+h.%+%+%+q.%+q.%+q.%+q.%+q.%+q.%+%+q.%+%+%+%+%+q.%+%+%+%+%+q.%+q.%+q.%+q.q.B.N.N.N.:.%+q.%+&+%+q.&+%+&+q.&+q.%+q.&+q.&+q.&+%+&+%+&+&+:.%+:.%+&+:.%+&+:.&+q.&+:.%+:.&+:.:.&+q.&+&+q.&+q.:.:.q.:.:.:.:.)+:.:.)+:.:.)+:.:.:.{+)+:.{+:.{+:.{+! {+:.{+:.{+{+{+:.{+{+{+! {+:.S.{+{+! {+S.{+m.S.{+S.S.S.S.{+S.S.m.S.S.S.m.[ S.S.S.S.S.S.S.S.S.m.S.m.S.m.m.m.m.S.m.F+m.m.m.[ m.7+m.[ m.7+m.F+m.m.F+m.F+m.F+m.F+m.F+m.m.F+m.m.m.-.F+m.-.m.m.-.m.m.m.-.-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.B+-.z+-.-.B+-.-.-.-.G+-.D+-.G+-.G+-.z+G+z+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+G+]+G+C+A+]+C+]+C+]+C+y+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+j+v+v+v+j+v+v+j+v+j+v+j+v+j+v+j+v+j+j+u+u+u+u+g+u+u+r+r+r+r+r+u+r+u+u+u+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+%+j+%+j+j+%+%+%+j+j+j+%+%+j+%+j+%+j+%+%+%+j+%+%+%+%+%+%+%+%+%+%+%+%+%+b+%+%+%+%+%+%+%+b+%+b+b+b+b+>+b+b+b+b+b+%+b+b+%+%+%+b+%+b+%+%+b+%+b+%+b+%+b+b+%+b+%+b+b+%+b+%+b+%+%+b+b+%+b+%+%+b+%+b+%+b+%+%+b+b+%+%+b+%+b+%+%+%+b+%+%+%+b+%+b+%+%+%+b+%+%+h.%+%+%+%+%+%+%+%+q.%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+q.%+q.%+%+%+q.%+%+q.%+q.q.&+q.%+&+%+:.%+q.&+%+&+q.&+%+&+:.&+&+%+&+&+&+&+&+:.&+q.&+&+&+:.&+&+:.&+:.&+&+:.&+&+:.&+:.%+:.&+:.&+:.:.:.:.:.:.:.:.)+:.:.:.)+:.:.)+:.:.)+{+)+:.:.{+1.{+{+1.:.{+:.S.:.S.:.{+{+{++ {+{+{+S.m.{+S.{+m.{+S.S.{+S.m.S.m.{+m.S.m.S.S.S.m.[ S.S.[ m.S.m.[ m.S.m.S.m.F+S.m.S.m.S.F+[ m.S.m.[ m.[ m.m.m.F+m.[ m.m.F+m.F+m.m.m.F+m.F+m.m.F+m.m.m.F+m.m.-.m.F+-.m.m.-.-.m.m.-.-.m.-.F+-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.z+-.-.z+-.z+-.z+-.z+-.G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+A+]+G+A+G+A+]+A+w+]+C+w+C+y+y+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+v+j+j+j+v+j+v+j+j+v+j+v+j+v+j+j+j+u+v+u+u+g+u+r+u+r+r+r+r+u+u+u+u+u+u+u+u+j+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+%+j+j+j+j+j+%+j+j+j+%+j+%+j+%+%+j+%+%+j+%+%+j+%+j+%+j+%+j+%+%+%+%+%+b+%+%+b+%+%+%+b+b+%+b+>+b+>+b+>+b+b+b+%+%+b+%+%+%+b+%+%+%+%+b+%+b+%+b+%+%+b+%+b+%+%+b+%+b+%+b+%+b+%+b+%+b+%+%+b+%+b+%+b+%+%+%+b+%+%+%+%+%+b+%+%+b+%+%+%+%+%+%+%+b+%+%+%+%+%+%+q.%+%+%+%+q.%+%+q.%+q.%+%+q.%+%+%+%+%+%+%+%+%+q.%+%+%+q.%+%+q.%+%+q.%+%+%+q.%+:.%+%+q.%+%+q.&+%+&+%+&+q.&+%+q.&+q.&+%+:.&+q.&+q.&+%+&+%+&+&+q.&+%+&+:.&+:.&+&+:.&+:.:.&+&+:.&+:.:.&+:.&+:.:.:.:.:.q.:.:.:.)+:.:.:.)+:.:.{+:.:.:.{+{+{+:.{+:.{+{+:.S.:.{+:.{+S.:.{+{+{+:+S.:.{+{+m.{+S.S.{+:+S.{+! {+S.S.S.S.S.S.m.S.[ S.m.S.m.S.S.S.S.S.m.S.[ m.S.m.m.m.m.m.m.m.[ F+m.[ m.m.7+m.7+m.m.m.F+m.[ m.m.m.F+m.m.m.m.F+m.-.m.F+m.m.m.F+-.F+-.m.-.-.F+-.F+-.-.m.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.B+-.-.-.-.-.D+-.-.D+-.G+-.G+-.G+G+-.G+G+G+G+-.G+G+G+G+G+G+G+G+G+]+G+A+G+]+G+]+A+]+A+]+y+H+]+H+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.v+v+v+v+j+v+j+v+j+v+j+j+v+j+v+j+u+j+u+u+u+u+u+u+r+r+r+r+u+u+g+u+u+u+u+u+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+%+j+j+j+j+j+j+j+%+j+%+j+j+%+%+j+j+j+%+j+%+j+%+j+%+%+j+%+%+j+%+%+%+%+%+%+j+%+j+%+%+%+%+%+%+b+%+%+b+>+b+>+b+b+b+b+%+%+b+%+b+%+%+b+%+%+b+H+b+%+%+b+%+b+%+b+b+%+b+%+%+%+%+%+%+%+%+b+%+%+%+%+%+b+%+%+%+%+%+%+b+%+%+%+b+%+b+%+%+%+b+%+%+%+%+%+b+%+%+%+%+%+%+%+%+%+%+%+q.%+q.%+%+q.%+%+%+%+q.%+%+%+%+%+%+%+%+%+q.%+%+%+q.%+%+%+%+%+%+q.%+:.q.%+q.%+q.q.&+%+&+%+&+q.%+:.%+:.%+:.&+%+&+&+q.&+%+&+&+%+&+&+:.&+:.&+:.&+:.&+:.%+&+&+:.&+&+:.&+&+:.:.&+:.&+&+:.&+:.:.q.:.:.:.&+:.:.:.:.:.)+:.:.:.:.:.:.)+:.:.:.{+! :.{+:.{+! :.{+{+{+:.{+:+S.:.m.{+{+m.S.{+S.m.{+m.S.{+m.S.m.S.:+S.m.S.:+S.! m.S.m.S.S.S.m.S.m.S.S.m.m.m.S.m.S.m.S.m.[ m.m.m.S.F+m.[ m.m.F+m.7+m.m.m.F+m.F+m.m.m.F+m.F+m.m.m.F+m.m.F+-.m.-.m.-.m.-.F+-.-.m.-.-.m.-.-.-.-.m.-.-.-.-.-.-.x+-.-.-.-.-.-.B+-.-.-.-.B+-.B+-.z+-.x+D+-.G+B+G+-.G+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+A+G+]+A+G+A+G+]+A+w+A+H+A+H+w+C+]+H+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+v+j+v+j+v+j+v+v+v+j+v+v+j+v+j+u+v+u+u+u+u+g+u+r+r+r+r+u+g+u+u+N.u+u+j+j+j+N.j+j+j+v+j+j+v+j+j+j+j+j+j+j+j+j+j+j+j+%+j+%+j+%+j+j+j+j+%+j+j+j+%+j+%+j+%+j+%+j+%+j+%+%+j+%+%+j+%+j+%+j+%+%+%+%+%+%+%+%+%+%+%+%+N.b+b+b+b+>+b+>+b+b+b+%+%+%+%+b+%+b+%+%+H+%+b+%+%+N.%+%+%+%+%+%+b+%+b+%+b+%+b+%+%+b+%+b+%+b+%+%+b+%+b+%+b+%+%+b+%+%+%+%+b+%+%+%+%+%+b+%+%+%+N.%+%+%+%+%+%+%+%+%+%+%+%+%+q.%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+N.%+%+%+%+%+%+%+%+q.%+q.%+%+%+q.%+&+q.&+%+N.%+%+:.%+%+&+%+:.%+&+%+%+:.&+q.&+&+&+q.&+&+&+&+%+&+N.%+&+%+&+&+&+:.&+:.&+&+:.&+&+&+:.&+&+&+:.:.&+N.:.&+:.:.:.:.N.N.N.:.)+&+:.)+:.)+:.{+:.:.{+{+{+:.{+:.! {+N.:.{+! :+N.{+:+N.{+{+{+S.:.S.{+:+{+{+S.{+{+m.{+S.{+m.S.S.S.m.S.S.m.S.S.S.S.m.S.S.m.S.S.m.S.S.m.m.m.m.m.m.m.m.[ m.[ m.m.m.m.F+[ m.m.m.m.F+m.N.m.m.F+m.F+m.m.m.m.F+m.m.F+-.m.m.F+m.F+m.N.-.m.-.m.-.-.m.-.-.m.-.-.-.-.-.N.-.-.-.-.-.-.-.-.-.-.-.-.B+-.z+-.N.-.-.D+N.z+-.z+-.-.z+G+N.N.N.G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+A+]+N.C+]+]+y+C+w+H+A+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.v+v+j+v+v+v+v+j+j+v+v+j+v+j+v+j+u+j+u+u+u+u+r+r+r+u+u+u+u+u+u+N.u+j+j+j+v+N.j+v+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+%+j+%+j+%+j+%+j+j+j+%+j+%+j+j+j+%+j+%+j+%+j+%+N.%+%+%+j+%+j+%+j+%+j+%+b+%+b+j+N.j+>+>+b+>+b+b+%+b+%+%+b+%+%+%+%+%+%+%+H+%+%+%+%+N.%+b+%+b+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+b+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+N.%+q.%+%+%+%+%+q.%+%+%+%+%+%+%+%+%+%+%+%+%+N.%+q.%+%+%+N.%+q.&+%+%+%+:.%+%+:.%+%+%+&+N.&+&+%+%+:.%+:.%+&+%+&+:.&+%+&+%+:.%+&+&+%+:.%+:.&+N.:.&+:.&+q.&+&+:.&+&+:.&+&+&+:.&+&+:.:.:.&+N.:.&+:.:.:.&+N.:.:.&+N.:.:.{+:.:.:.:.:.:.{+{+:.:.{+:.{+{+:.N.N.{+:.N.N.:.{+{+:+{+:+:.m.{+m.{+S.m.{+S.m.S.{+S.m.S.{+m.m.S.S.m.S.S.m.S.m.S.m.S.m.N.S.m.S.m.m.m.S.[ m.S.F+S.m.[ m.F+m.F+[ m.m.F+[ m.F+m.m.N.m.F+m.m.m.m.F+m.F+m.m.m.m.m.m.F+-.m.-.-.-.F+-.m.m.-.m.-.m.-.-.-.-.N.-.-.N.x+-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.N.-.z+x+N.G+D+-.G+D+G+N.z+G+G+N.z+G+G+G+G+G+G+G+G+G+G+G+]+A+]+A+]+A+N.]+y+N.]+y+y+C+]+H+A+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+v+v+v+j+v+j+v+v+v+j+j+v+j+v+j+N.N.N.u+u+g+N.N.B.N.u+u+u+N.N.N.N.j+j+u+j+j+N.v+j+N.N.N.v+j+j+N.N.N.N.j+j+N.N.N.j+j+j+N.N.N.j+%+j+%+j+N.N.N.j+%+%+N.N.%+j+N.N.N.%+j+%+%+j+%+N.N.N.%+N.N.%+N.N.N.%+%+%+%+N.N.N.N.>+b+N.N.N.b+>+N.N.N.%+N.N.%+%+N.N.N.%+H+N.N.%+%+N.%+%+N.%+%+N.N.N.%+b+%+b+%+b+%+N.N.N.%+%+%+N.N.%+%+b+%+%+%+N.N.%+%+N.N.N.%+%+%+N.N.N.N.%+N.%+%+N.N.N.%+N.N.N.%+%+N.N.N.%+%+N.N.%+%+N.N.N.%+%+%+N.N.N.B.%+%+%+%+N.B.N.%+N.N.&+N.N.N.&+%+%+N.N.N.N.%+q.N.B.N.&+&+&+N.N.N.&+N.N.&+&+N.N.N.&+:.&+N.N.&+N.&+&+N.&+&+N.N.N.&+:.&+&+:.&+&+N.N.N.&+&+N.N.N.:.:.:.&+:.N.&+:.:.:.:.&+N.:.N.{+:.N.N.N.N.:.{+{+:.{+:.{+N.N.:+{+N.N.:+{+N.{++ {+N.N.{+{+N.N.:+S.N.N.N.:+S.{+N.N.N.S.m.N.m.S.N.m.m.N.N.N.m.N.N.N.m.m.N.N.N.m.m.N.N.N.m.N.N.m.m.[ N.N.N.m.m.m.F+m.m.F+N.F+N.N.N.N.m.m.F+N.N.m.F+m.F+m.-.m.F+-.F+N.-.m.N.e.N.N.-.-.m.-.m.N.N.N.-.N.N.N.N.-.-.-.N.N.N.B+-.B+-.-.B+-.N.z+-.D+N.z+-.G+-.z+-.N.G+D+G+G+G+D+G+G+G+G+G+G+G+G+G+G+N.N.N.G+G+N.N.N.A+N.N.N.N.H+y+C+N.N.N.H+H+H+N.N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.v+j+v+v+j+v+j+j+v+v+j+v+j+j+u+v+u+u+N.u+u+N.g+u+u+N.u+N.u+v+j+N.v+j+j+v+j+N.j+N.v+j+j+N.j+N.v+j+j+B.j+N.j+j+j+N.j+N.j+j+j+j+j+j+j+%+j+%+j+N.j+j+N.%+j+N.%+%+%+N.%+j+%+%+%+%+N.%+j+N.%+%+%+%+%+N.%+%+N.%+j+j+N.b+N.j+>+b+N.j+N.%+%+N.%+%+N.%+%+%+%+N.H+B.%+%+%+N.%+N.%+%+N.%+%+%+%+%+%+%+%+%+N.%+%+%+N.%+%+N.%+%+%+%+%+%+%+N.%+%+N.%+%+%+N.%+N.%+%+%+N.%+N.%+N.%+%+%+%+%+N.%+%+N.%+%+%+N.%+N.%+%+N.%+%+%+N.%+N.%+%+%+N.%+%+%+q.%+N.%+&+N.%+q.&+%+&+N.&+N.&+&+%+N.&+N.&+q.&+N.%+:.N.&+&+N.&+&+N.&+&+&+&+N.&+&+N.&+&+N.&+N.&+:.N.&+&+&+&+&+&+&+&+:.N.&+:.&+N.:.&+N.&+:.&+:.:.:.&+N.N.N.&+{+:.N.:.N.:.{+N.:.:.{+N.:.{+{+:.{+:.e.N.:.:+N.N.:+:+N.:+:.N.:+:+N.m.N.:+S.N.:+:+S.N.m.N.:+m.m.S.m.N.m.m.N.S.N.m.m.m.S.m.N.m.S.N.m.m.m.N.m.N.m.m.N.m.m.N.m.N.m.m.m.[ m.m.m.F+m.m.N.m.N.m.m.F+N.m.N.-.F+N.-.m.-.F+m.-.m.m.-.N.-.-.N.-.-.-.N.-.-.-.-.x+N.-.-.N.z+-.B+N.-.N.z+-.-.N.-.-.B+-.-.z+N.D+-.x+N.D+-.z+D+G+G+G+N.N.N.G+-.G+x+G+G+G+G+G+G+G+w+N.C+w+A+N.y+A+N.H+w+N.H+H+C+N.]+N.H+H+H+N.H+H+N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.v+v+j+v+v+v+v+v+v+j+v+j+v+u+v+u+N.N.N.g+g+N.g+u+u+N.u+N.j+j+v+N.j+v+j+j+v+B.j+N.j+v+j+N.v+N.j+j+v+N.j+B.j+j+j+N.j+j+N.N.j+j+j+%+j+j+j+N.B.N.j+%+N.j+%+N.N.N.N.N.j+%+j+%+j+%+N.%+%+N.%+%+%+N.N.N.%+%+N.j+j+%+N.>+N.N.N.N.N.j+N.%+%+N.%+%+N.%+%+N.N.N.H+N.%+%+%+N.N.N.%+%+%+N.N.%+%+%+%+%+%+%+N.%+%+%+N.%+%+N.%+%+%+%+%+%+%+N.%+%+N.N.N.N.N.%+N.%+%+%+N.%+N.%+%+N.N.%+%+%+N.%+%+N.N.N.N.N.%+N.%+%+N.N.N.B.N.%+B.%+%+%+N.%+:.%+%+&+N.q.%+N.&+%+%+N.N.N.&+N.%+%+&+N.&+N.N.N.N.N.&+&+N.%+&+N.%+&+N.&+&+N.N.N.%+&+N.&+&+N.N.N.&+&+&+N.N.:.&+:.&+:.&+&+N.:.&+&+N.&+:.N.&+:.:.:.&+&+:.:.&+&+N.:.:.N.:.N.:.:.N.{+{+:.N.{+:.! {+{+:.N.:+N.N.:+N.{+:.N.{+:+N.{+{+:+:+N.{+:+N.S.S.:+N.{+m.N.N.S.m.S.m.N.m.N.m.m.N.N.S.m.m.N.m.m.N.N.N.N.N.m.N.m.m.N.F+m.N.F+m.N.N.m.F+m.F+m.m.F+m.N.m.N.m.F+m.N.m.N.F+-.m.m.F+m.m.-.F+-.m.-.N.m.-.N.-.m.-.N.m.-.m.-.B+N.-.-.N.-.-.x+N.-.N.N.N.N.N.B+-.-.z+-.-.N.-.-.G+N.z+-.D+x+-.-.z+G+G+G+N.G+G+G+G+-.G+G+G+G+G+A+N.G+A+]+N.G+C+N.w+C+N.A+]+y+N.H+N.N.N.N.N.H+H+N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"8+v+v+v+v+v+v+j+v+j+v+v+v+u+v+u+N.u+v+N.u+u+e.u+u+u+N.v+N.j+j+j+N.v+j+j+v+j+N.v+N.j+j+j+B.j+N.j+v+j+N.j+N.v+j+v+B.j+j+j+j+N.j+j+j+j+%+N.j+j+N.%+j+N.%+%+N.%+j+%+j+%+j+%+%+%+%+N.%+%+N.%+j+N.%+%+N.%+%+N.%+b+j+N.j+N.j+j+>+j+%+N.%+%+N.%+%+N.%+N.%+%+B.H+N.%+%+%+N.%+B.%+%+%+%+%+N.%+%+%+%+%+%+N.%+%+%+N.%+%+N.%+%+%+%+%+%+%+N.%+%+N.%+%+%+%+%+N.%+%+%+N.%+N.%+%+%+%+N.%+%+N.%+%+N.%+%+%+%+%+N.%+%+N.%+%+%+%+%+N.%+%+&+N.%+%+%+:.%+N.%+&+N.%+&+N.&+&+N.%+N.&+&+&+N.&+N.&+&+&+&+%+&+N.&+&+N.&+&+N.&+N.&+&+N.&+&+N.&+&+N.&+N.&+&+&+&+&+N.&+&+:.&+&+&+N.&+:.&+N.:.&+N.:.:.&+:.&+N.&+&+:.:.N.:.:.N.:.N.:.{+N.:.:.:.N.:.{+:.{+:.:+N.:.N.N.:+N.:.:+N.:+:+N.{+:+N.:+N.:+m.N.:+{+:+N.m.{+m.:+N.m.S.m.N.N.m.m.S.m.m.N.S.m.N.m.m.N.m.m.m.m.m.N.m.m.N.m.m.N.m.m.F+m.N.m.m.m.F+m.m.m.N.m.N.F+m.m.N.-.N.m.m.N.F+m.-.F+m.m.-.F+-.N.m.-.N.m.-.-.N.-.m.B+m.-.N.-.-.N.-.-.-.N.B+N.-.z+-.z+-.-.-.-.-.z+N.-.z+-.N.G+-.G+-.G+N.G+D+z+G+N.G+-.G+G+G+G+G+G+G+G+G+N.]+G+G+N.A+w+N.C+y+N.]+A+H+N.y+N.H+y+H+H+H+H+N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.v+v+v+j+v+v+v+v+v+j+v+j+v+u+u+u+N.N.N.u+u+N.u+v+j+N.j+v+N.N.N.N.j+j+v+j+j+N.j+j+N.N.N.v+j+j+N.N.N.N.j+j+N.N.N.j+j+N.B.N.j+j+j+j+j+j+j+B.N.N.j+j+B.j+j+j+N.N.N.N.%+%+%+j+%+j+%+N.%+N.%+%+%+N.N.B.j+%+j+N.N.N.N.j+>+N.N.N.N.j+N.%+%+N.%+%+N.%+%+N.N.N.%+N.%+%+%+N.%+%+N.%+N.N.N.%+%+%+%+%+%+%+%+N.N.N.%+%+%+N.%+%+%+%+%+%+%+N.%+%+%+N.N.N.N.%+%+N.N.N.N.%+N.%+N.N.N.%+%+%+%+N.%+%+N.B.N.N.%+B.%+%+%+N.N.N.N.%+&+N.N.N.N.&+%+%+%+%+&+N.%+N.&+%+&+N.N.N.&+&+N.N.N.N.&+%+N.N.N.N.&+:.N.&+&+N.&+&+N.&+%+N.N.N.&+:.N.&+&+N.&+&+N.&+N.N.N.&+&+&+&+&+:.&+&+N.N.N.&+&+:.B.&+:.&+:.&+:.N.N.N.N.&+:.&+{+N.N.:+:.N.{+:.{+N.:+:.{+{+:+:.N.:+N.:+:.N.:+{+N.:+{+:+N.N.:+S.N.:+S.:+N.N.N.:+m.N.N.N.m.m.S.m.N.m.m.S.N.N.N.m.m.m.m.N.m.m.N.N.N.N.m.N.m.[ N.m.m.N.m.N.N.N.m.m.F+N.m.m.F+m.N.F+N.m.m.F+N.m.F+N.N.-.-.m.N.-.m.F+m.-.m.N.-.m.N.-.F+-.N.-.-.m.-.-.-.N.-.N.-.-.-.N.-.-.N.N.N.N.-.B+-.-.B+-.-.N.N.N.z+-.z+-.N.G+z+N.N.N.N.G+z+G+N.G+G+N.G+G+G+G+G+G+N.N.N.y+G+G+C+N.w+N.C+H+]+N.H+H+N.N.N.N.H+H+N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+v+v+v+v+v+j+v+v+v+v+j+v+j+v+u+u+v+u+/+u+u+u+v+u+v+j+j+j+&+v+j+&+j+&+j+j+v+j+v+j+&+v+j+j+j+v+j+j+v+B.v+j+j+j+j+j+v+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+j+%+j+%+j+%+j+j+%+%+%+%+j+&+%+%+&+%+%+&+%+%+%+%+%+j+j+j+>+b+j+>+j+j+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+H+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+N.%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+&+%+&+%+&+%+%+%+&+%+%+%+&+%+:.%+&+%+&+%+&+%+%+&+&+%+%+&+&+&+&+%+&+&+&+&+&+&+%+&+&+%+&+&+%+&+&+&+:.&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+:.&+:.&+&+&+:.&+&+&+:.&+:.:.&+&+:.&+:.&+:.&+&+:.:.{+:.:.:+:.:.:.:.:.{+:.:.{+{+:.:+{+:+:.:+:.:+{+:+:.:+{+{+:+:+:+:+{+:+:+S.:+S.:+m.:+S.{+m.:+m.S.m.S.m.N.m.S.m.m.m.m.m.S.m.m.m.S.m.m.m.m.m.m.m.m.m.m.F+m.m.F+m.m.m.F+m.m.N.m.m.m.F+m.m.m.F+m.m.-.F+m.-.m.F+m.-.F+m.-.-.F+-.-.-.m.-.-.-.-.m.-.m.-.-.-.-.-.-.-.B+-.-.-.-.-.-.B+-.B+-.-.-.-.-.-.-.B+z+D+-.D+-.D+G+-.z+D+G+G+G+G+D+G+G+G+G+G+N.G+G+G+G+G+G+A+y+C+G+]+G+w+y+C+y+]+w+C+y+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+j+v+v+v+v+v+v+v+j+v+v+v+u+u+u+u+/+u+u+u+u+u+j+v+j+j+v+v+j+j+j+v+j+j+v+j+j+&+j+j+j+j+j+v+j+N.B.N.N.j+j+j+v+j+v+j+j+j+j+v+j+j+j+j+j+&+j+j+j+&+%+j+j+%+j+&+j+j+&+j+%+%+j+%+j+%+%+j+%+j+%+j+%+j+%+%+%+j+%+%+j+b+j+>+>+b+>+b+j+j+%+%+%+%+%+%+%+%+%+%+%+%+%+H+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+N.N.N.N.%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+&+%+&+%+&+%+&+%+&+%+&+%+&+&+%+%+&+&+%+%+&+%+&+%+&+%+:.%+&+&+%+&+&+%+&+:.&+q.&+&+&+&+:.&+&+&+:.&+&+&+:.&+&+:.&+:.&+&+&+&+&+&+&+&+&+7 &+&+:.&+&+&+&+&+:.&+:.&+:.:.:.&+:.:.:.:.:.:.{+:.{+:.{+:.:+:.:+{+:.{+{+:.:+:.:+{+:+{+:+{+:+{+{+:+:+S.:+{+m.{+m.{+m.{+m.S.:+S.m.S.m.N.m.S.m.S.m.S.S.m.m.m.S.m.m.S.m.m.m.m.[ m.[ m.[ m.m.[ m.m.F+m.m.m.m.F+m.F+m.m.m.m.F+m.m.F+m.m.F+m.F+m.m.F+m.-.F+m.-.F+m.F+m.-.F+m.m.-.-.m.-.-.-.-.F+x+-.-.-.-.-.-.-.-.-.-.-.-.B+-.B+-.B+-.-.-.-.z+-.z+x+-.G+G+-.z+-.G+x+G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+w+G+G+y+G+C+w+G+C+A+H+]+A+]+H+C+y+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+v+v+v+j+v+v+v+v+v+v+j+u+v+u+u+/+u+u+u+v+u+v+u+v+j+v+j+j+j+v+&+j+j+&+j+&+j+j+j+&+j+v+j+j+&+j+v+j+v+j+j+j+j+&+j+j+j+&+j+j+j+v+j+j+j+j+j+&+j+j+j+j+%+j+j+j+j+%+j+j+&+j+%+j+&+%+j+%+%+%+%+%+%+%+%+j+%+%+%+j+j+j+>+j+b+j+j+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+H+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+&+%+&+%+%+%+&+%+%+&+%+&+%+&+%+%+&+%+%+&+%+&+%+%+&+%+&+%+&+&+&+%+&+&+%+&+&+&+%+&+&+&+&+&+&+&+&+&+&+%+&+&+&+:.&+&+&+&+&+&+&+&+:.&+&+&+:.&+&+&+&+:.&+&+7 &+&+&+:.&+&+:.&+&+&+&+&+:.&+:.:.&+:.&+:.:.:.:.:.{+:.{+:.:+:.:.:+{+:.{+{+:+:.:+:+{+:+{+:+:.:+:+{+:+{+:+:+:+S.:+{+m.{+m.{+m.{+:+S.:+m.m.m.S.m.m.S.m.S.m.S.m.m.S.m.S.m.m.S.m.m.S.m.[ m.m.m.m.m.[ m.F+m.[ m.m.m.F+m.m.F+m.F+m.F+m.F+m.m.m.F+m.m.F+m.-.m.m.-.F+-.m.-.m.-.-.-.m.-.-.-.-.F+-.-.-.m.-.-.-.F+x+-.-.-.-.-.-.-.-.B+-.-.-.-.-.-.-.-.z+-.-.z+-.D+z+-.-.G+-.G+G+D+G+G+G+G+G+G+G+G+G+G+G+G+G+G+]+G+G+C+G+A+]+G+C+y+]+]+A+]+H+A+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.v+v+v+v+v+v+j+v+v+v+v+v+u+u+u+u+u+u+u+v+u+j+v+j+v+j+v+&+v+j+j+j+v+j+j+j+j+&+v+j+j+j+&+j+j+j+j+j+j+&+v+j+v+j+j+&+j+v+j+%+&+j+%+j+j+j+j+j+j+j+j+&+j+j+%+j+%+j+j+%+j+%+&+%+%+j+&+%+%+&+j+%+&+%+%+&+%+%+j+%+j+b+j+b+>+j+%+%+j+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+H+H+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+&+%+%+%+%+%+%+&+%+%+%+&+%+%+%+&+%+%+&+%+&+%+%+&+%+&+&+%+&+%+&+%+&+%+&+&+%+&+&+%+&+&+&+%+&+%+&+%+&+%+:.&+:.&+&+%+&+&+&+&+:.&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+7 &+&+&+:.&+:.&+&+:.:.:.&+{+:.{+:.:.:.:.:.:.{+{+:.:.:+:.{+:.:+:.:.:+:.:+:.:+:+:.:+:+:+{+:+{+:+{+:+:+m.{+m.{+m.S.m.{+m.S.S.m.m.S.m.S.m.S.m.m.S.m.m.m.m.S.m.m.S.m.m.m.m.[ m.[ m.m.m.S.m.m.F+m.F+m.m.F+m.m.m.m.m.F+m.m.F+m.m.m.F+-.F+m.F+-.F+-.m.-.F+-.F+m.m.-.F+-.F+-.x+-.m.-.-.-.x+-.-.-.-.-.x+-.-.-.B+-.-.-.B+-.-.-.z+-.-.-.B+G+-.D+-.-.G+G+-.G+D+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+C+G+A+]+G+w+C+w+A+w+]+A+C+H+y+C+]+H+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+v+v+v+v+v+v+v+v+j+v+u+v+u+v+/+u+v+v+u+v+v+v+j+v+j+v+j+j+j+v+j+v+j+v+&+v+j+j+j+&+j+j+v+j+&+v+j+&+j+j+j+&+j+j+v+j+j+j+j+v+j+j+&+j+&+j+j+j+&+j+j+j+%+&+j+&+j+&+%+j+&+j+j+j+&+%+j+j+%+%+%+j+%+%+%+%+%+%+%+j+%+j+>+%+j+b+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+&+%+%+&+%+%+%+&+%+%+&+%+%+%+&+%+%+&+%+&+%+&+%+&+%+&+&+%+&+%+%+&+&+%+&+&+%+&+&+%+&+&+%+&+&+%+&+&+&+&+&+&+&+&+&+&+&+&+:.&+&+&+&+&+&+&+&+&+&+&+&+&+&+:.&+&+&+&+&+7 &+&+&+&+7 &+&+7 &+:.&+&+&+&+:.&+:.&+:.&+&+:.:.:.&+:.{+:.{+:.{+:.:+:.:+:.{+:+:.:+{+:+{+:+:+:+:+{+:+:+{+:+{+:+:+:+m.:+S.:+{+m.:+m.{+:+m.m.{+m.m.S.:+m.m.m.S.m.S.m.m.S.m.S.m.m.S.m.m.m.S.m.m.m.m.m.F+m.[ F+m.m.m.m.m.m.m.m.m.F+m.F+m.m.F+m.m.F+m.m.m.m.m.-.m.m.m.m.F+-.m.-.-.F+-.-.m.-.-.F+-.m.B+m.-.-.F+-.x+-.-.-.-.-.-.-.-.-.-.B+-.-.B+-.-.-.B+-.-.-.-.G+-.G+-.G+G+-.G+G+G+G+G+G+-.G+G+G+G+G+G+G+G+G+G+G+G+A+G+G+G+]+]+A+]+H+w+C+]+y+C+]+H+]+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"_.v+v+v+v+v+j+v+v+v+v+u+v+u+u+v+u+v+u+v+u+j+v+v+j+v+j+v+j+v+j+j+&+j+j+j+j+v+&+j+j+&+j+%+j+j+N.j+j+j+j+j+j+&+j+%+j+&+j+&+j+j+j+j+j+j+j+&+j+j+j+&+j+j+j+%+j+%+j+N.%+j+%+%+%+j+%+%+&+j+&+%+&+%+&+N.%+%+&+%+%+%+j+%+j+j+%+j+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+&+%+%+%+%+%+%+%+%+%+%+&+%+%+&+%+&+%+&+%+%+&+%+%+%+&+%+&+%+%+&+%+&+&+%+&+%+&+%+&+%+&+&+%+&+&+%+&+&+&+%+&+%+&+%+&+%+:.%+:.&+%+&+&+&+&+&+&+&+&+&+&+&+&+:.&+&+&+&+&+&+&+&+&+7 &+&+&+&+&+&+7 &+&+:.&+7 &+:.&+:.&+:.:.:.&+:.:+:.:.:.:.:+:.:.:.{+:.:+:.{+:+:.:+:.:+:.:+:.:+:.:+{+:+:+:+{+:+{+:+{+:+m.:+m.{+m.:+S.{+m.m.S.m.m.S.m.S.m.m.m.m.S.m.m.m.m.S.m.m.S.m.m.m.m.m.m.[ m.S.m.m.m.[ m.F+m.F+m.F+m.F+m.m.m.m.F+m.m.F+m.F+m.F+m.F+m.F+-.F+m.-.F+-.F+m.-.m.m.-.m.-.x+F+-.m.-.m.-.-.-.F+-.-.-.-.-.-.-.-.B+-.-.-.-.-.-.-.-.-.-.-.z+-.z+-.z+-.G+-.G+z+G+-.G+-.G+G+G+-.G+G+G+G+G+G+G+A+]+G+]+A+]+A+G+A+G+A+y+C+]+y+C+w+C+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+v+v+v+&+v+v+v+j+v+v+v+v+u+v+u+v+v+v+j+v+v+v+j+v+v+j+v+j+v+j+v+j+v+j+v+&+j+j+j+N.v+j+&+j+v+&+%+v+&+j+&+j+j+j+j+&+j+j+j+j+j+&+j+&+j+&+j+j+j+&+j+j+&+j+&+j+j+&+N.j+&+%+&+j+&+%+&+%+%+%+%+N.%+%+N.%+&+%+%+%+j+%+j+%+%+%+%+%+%+%+&+%+&+%+%+&+%+%+&+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+&+%+%+&+%+%+%+%+&+%+&+%+&+%+&+%+&+%+&+%+%+&+%+%+&+%+&+%+%+&+&+%+%+&+%+&+&+%+&+%+&+&+&+%+&+&+&+&+%+&+&+&+&+&+&+%+&+&+&+&+&+:.&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+&+7 &+&+&+&+&+&+&+7 &+&+&+&+7 &+:.&+&+&+&+7 &+:.&+&+:.:+:.:.{+:.:+:.:.:+:.:.:+{+:.:+:.:+:.:+:.:+:.:+{+:+:+:+{+:+{+:+:+:+{+m.:+{+m.{+m.:+S.:+m.m.{+m.m.S.m.m.m.m.S.m.S.m.m.S.m.S.m.m.S.m.m.[ m.m.m.[ m.m.m.F+m.F+m.F+m.m.m.m.m.m.m.m.F+m.F+m.m.F+m.m.m.-.m.F+-.F+-.m.m.-.F+m.-.m.-.F+-.F+-.m.-.m.-.-.-.-.x+F+x+-.-.-.-.-.x+-.-.-.-.-.-.-.-.B+-.-.B+-.B+-.z+-.-.D+z+-.G+-.G+-.G+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+A+G+G+G+G+]+A+]+]+C+]+y+C+]+C+]+H+C+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+v+v+v+v+v+v+v+v+v+v+j+v+u+v+u+v+N.N.v+v+j+N.N.N.v+v+j+N.j+N.j+v+N.B.N.N.v+j+B.N.N.j+N.N.j+N.v+j+N.N.N.j+j+&+N.N.N.&+j+&+j+j+j+j+j+j+j+B.N.N.j+%+j+N.N.j+&+j+N.B.N.N.j+%+j+N.N.N.j+&+N.N.N.&+N.N.N.N.%+%+%+j+%+%+j+%+%+%+%+&+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+&+%+%+&+%+%+&+%+&+&+%+%+&+%+:.%+q.%+&+%+&+%+%+&+&+%+%+&+%+&+&+q.&+q.&+q.&+:.%+:.%+:.%+&+:.%+:.&+:.&+q.&+:.&+&+&+:.&+:.&+:.&+&+:.&+&+&+&+&+&+&+&+7 &+&+&+&+:.&+:.&+&+&+:.:.:.:.&+:.:.:.:+&+:.:.{+:.{+:.{+:.:.{+{+:.:+{+{+{+{+:+{+:+{+:+:+{+:+:.{+:+{+m.{+m.{+m.{+{+m.{+m.{+m.{+m.S.m.m.S.m.S.m.S.S.S.m.S.m.S.m.m.S.m.S.m.m.m.[ m.m.S.7+m.F+S.F+S.m.[ m.m.[ F+[ F+m.m.F+F+m.m.m.F+m.F+m.F+m.F+F+m.m.F+m.F+m.F+-.m.F+-.F+-.m.-.m.F+-.F+-.m.F+-.F+x+F+-.F+x+F+-.F+-.-.-.-.B+-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.z+D+-.G+-.G+-.-.z+-.G+G+G+G+G+G+G+G+G+G+G+G+G+G+C+w+A+G+G+A+w+A+]+w+y+]+y+]+y+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+N.H+H+N.H+B.H+H+H+N.H+H+B.H+N.H+H+N.H+H+H+B.H+H+N.H+H+N.H+H+N.H+B.H+H+H+B.H+N.H+H+H+H+H+H+H+H+H+H+H+H+N.H+H+H+N.H+H+N.H+H+H+H+N.H+H+H+N.H+B.H+H+H+N.H+H+B.H+H+N.H+H+H+N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+N.H+H+H+H+N.H+H+H+N.H+H+N.H+B.H+H+N.H+H+H+N.H+H+N.H+H+N.H+H+B.H+N.N.N.N.N.H+H+B.N.H+H+H+H+H+H+H+H+H+H+N.H+H+H+B.H+H+B.H+H+H+H+N.H+H+H+N.H+N.H+H+H+B.H+H+N.H+H+N.H+H+H+N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+B.H+H+N.H+N.H+H+H+B.H+H+N.H+N.H+H+B.H+H+H+N.H+H+B.H+H+B.H+H+N.H+N.H+H+H+H+H+H+H+H+B.H+H+H+H+H+H+H+H+H+B.H+H+H+N.H+H+N.H+H+H+H+B.H+H+H+B.H+N.H+H+H+N.H+H+N.H+H+B.H+H+H+B.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+N.N.H+H+H+B.N.N.H+H+H+H+B.N.H+H+N.H+H+H+B.H+H+H+N.H+N.H+H+N.H+H+B.N.N.B.H+N.B.N.H+H+H+H+N.H+H+H+H+H+H+N.N.B.H+H+H+N.H+H+H+H+N.N.N.B.H+H+H+B.N.N.H+H+H+H+B.H+N.H+H+H+N.H+H+N.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+B.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"9+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"8+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"9+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+8+",
-"_.H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+_.",
-"8+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+H+9+",
-"_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+_.9+8+8+"};
diff --git a/platform/org.eclipse.sdk/welcome.xml b/platform/org.eclipse.sdk/welcome.xml
deleted file mode 100644
index 47fca4d..0000000
--- a/platform/org.eclipse.sdk/welcome.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<welcomePage
- title="Welcome to the Workbench">
- <intro>This page will help familiarize you with the Eclipse Workbench.
-To get started, read the sections below and click on the related links. </intro>
-
- <item><b>Create Java components </b>
-To begin Java development, create a <action pluginId="org.eclipse.jdt.ui" class="org.eclipse.jdt.internal.ui.wizards.OpenProjectWizardAction">Java project</action>. Select the newly created project
-and choose File > New > Other... . In the left column of the wizard, select Java and double
-click on Java Package in the right column. Fill in the name of your package and click Finish.
-
-To create a Java class, select the package in the navigator view and click on the
-"Open the New Wizard" toolbar button (on the far left of the toolbar). This toolbar button
-provides us with a quick alternative to File > New > Other... . Choose Java Class in the right
-column of the category Java, and click Next. In the class wizard fill in the name of your class
-and click Finish to create the class and start editing it.</item>
-
- <item><b>Perspectives, views and editors </b>
-A window contains one or more perspectives. A perspective consists of views (e.g. Navigator)
-and editors for working with your resources.
-
-The shortcut bar at the far left of the window allows you to open new perspectives and move
-between perspectives that are already open. The perspective you are currently working with
-is shown in the title of the window and in the shortcut bar as a pushed-in icon.
-
-To open the Java perspective choose Window > Open Perspective > Java. </item>
-
-
-<item><b>Configuring your perspectives</b>
-You can move views and editors around the workbench by dragging their titlebars. You can
-also add more views to your current perspective by using Window > Show View.
-To reset the perspective to its original state, choose <action pluginId="org.eclipse.ui" class="org.eclipse.ui.internal.ResetPerspectiveAction">Window > Reset Perspective</action>.
-
-Once you have arranged your perspective, you can save it using Window > Save Perspective As....
-You can customize the views, perspectives and New menu operations that show up for
-your perspective. To do this choose <action pluginId="org.eclipse.ui" class="org.eclipse.ui.internal.EditActionSetsAction">Window > Customize Perspective...</action> . A view can
-additionally be converted into a Fast View by dragging it to the shortcut bar (at the
-far left of the window). </item>
-
-<item><b>Join a CVS team</b>
-To join a CVS development team, open the <action pluginId="org.eclipse.team.cvs.ui" class="org.eclipse.team.internal.ccvs.ui.actions.ShowCVSPerspectiveAction">CVS Repository Exploring perspective</action>. Next, specify
-the location of your CVS repository. To do this, choose <action pluginId="org.eclipse.team.cvs.ui" class="org.eclipse.team.internal.ccvs.ui.actions.NewCVSRepositoryAction">New > Repository Location...</action> from the
-CVS Repositories view popup menu. When the location wizard opens, fill in the details of your
-CVS repository and click Finish.
-
-A repository location will appear in the CVS Repositories view. Expand the location, then expand
-the HEAD branch. You will see a list of the modules in that repository, which you can check out as
-an Eclipse project.
-
-For an anonymous connection to the Eclipse CVS repository, choose
-<action pluginId="org.eclipse.team.cvs.ui" class="org.eclipse.team.internal.ccvs.ui.actions.NewCVSAnonEclipseConnection">New > Anonymous Repository Location to dev.eclipse.org...</action>. Select the newly created location
-and expand HEAD. You will see the list of all the Eclipse modules, most of which are platform plugins.
-Select a plugin and choose <b>Checkout as Project</b> from the context menu. This will checkout
-the module from the CVS repository and create a plugin project by that name in your workspace.</item>
-
-
-<item><b>Create Eclipse plug-ins </b> To create a new Eclipse plug-in, create a <action pluginId="org.eclipse.pde.ui" class="org.eclipse.pde.internal.ui.wizards.project.OpenProjectWizardAction">plug-in project</action>. You will be
-able to choose between creating an empty plug-in project or starting with some useful content.
-To have the content generated, select one of the available templates in the wizard. After the
-project is created, the plug-in manifest editor will open into the <b>Welcome</b> page that
-will tell you what you can do next. </item>
-
-<item><b>Learn more </b>
-To learn more you can browse the <topic id="/org.eclipse.platform.doc.user/toc.xml">Workbench User Guide</topic> or the <topic id="/org.eclipse.jdt.doc.user/toc.xml">Java Development User Guide</topic>.</item>
-
-
-</welcomePage>
\ No newline at end of file
diff --git a/update/org.eclipse.update.core.linux/.classpath b/update/org.eclipse.update.core.linux/.classpath
deleted file mode 100644
index 5921923..0000000
--- a/update/org.eclipse.update.core.linux/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="/org.eclipse.update.core"/>
- <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
- <classpathentry kind="src" path="/org.eclipse.help"/>
- <classpathentry kind="src" path="/org.apache.xerces"/>
- <classpathentry kind="src" path="/org.eclipse.core.boot"/>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/update/org.eclipse.update.core.linux/.cvsignore b/update/org.eclipse.update.core.linux/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/update/org.eclipse.update.core.linux/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/update/org.eclipse.update.core.linux/.project b/update/org.eclipse.update.core.linux/.project
deleted file mode 100644
index 13f79b6..0000000
--- a/update/org.eclipse.update.core.linux/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.update.core.linux</name>
- <comment></comment>
- <projects>
- <project>org.apache.xerces</project>
- <project>org.eclipse.core.boot</project>
- <project>org.eclipse.core.runtime</project>
- <project>org.eclipse.help</project>
- <project>org.eclipse.update.core</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.team.cvs.core.cvsnature</nature>
- </natures>
-</projectDescription>
diff --git a/update/org.eclipse.update.core.linux/about.html b/update/org.eclipse.update.core.linux/about.html
deleted file mode 100644
index 441774f..0000000
--- a/update/org.eclipse.update.core.linux/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>11th December, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/update/org.eclipse.update.core.linux/build.properties b/update/org.eclipse.update.core.linux/build.properties
deleted file mode 100644
index 40d668e..0000000
--- a/update/org.eclipse.update.core.linux/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-bin.includes = fragment.xml,\
- os/,\
- fragment.properties,\
- about.html
-source.updatecorelinux.zip = src/
diff --git a/update/org.eclipse.update.core.linux/fragment.properties b/update/org.eclipse.update.core.linux/fragment.properties
deleted file mode 100644
index adc5b42..0000000
--- a/update/org.eclipse.update.core.linux/fragment.properties
+++ /dev/null
@@ -1 +0,0 @@
-fragmentName = Install/Update Manager Linux Fragment
\ No newline at end of file
diff --git a/update/org.eclipse.update.core.linux/fragment.xml b/update/org.eclipse.update.core.linux/fragment.xml
deleted file mode 100644
index 966a6eb..0000000
--- a/update/org.eclipse.update.core.linux/fragment.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<fragment
- id="org.eclipse.update.core.linux"
- name="%fragmentName"
- version="2.0.0"
- provider-name="International Busness Machine Corp."
- plugin-id="org.eclipse.update.core"
- plugin-version="2.0.0"
- match="compatible">
-
- <runtime>
- </runtime>
-
-
-</fragment>
diff --git a/update/org.eclipse.update.core.linux/os/linux/libupdate.so b/update/org.eclipse.update.core.linux/os/linux/libupdate.so
deleted file mode 100644
index 5533317..0000000
--- a/update/org.eclipse.update.core.linux/os/linux/libupdate.so
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.core.linux/src/build.xml b/update/org.eclipse.update.core.linux/src/build.xml
deleted file mode 100644
index 2fa29aa..0000000
--- a/update/org.eclipse.update.core.linux/src/build.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<project name="buildlibrary" default="run" basedir=".">
-
- <!-- The properties ${eclipse-home} ${jdk-path} should be passed into this script -->
- <!-- Set a meaningful default value for when it is not. -->
- <property name="eclipse-home" value="${basedir}/../.."/>
- <property name="jdk-path" value="${java.home}"/>
- <property name="destination" value="${eclipse-home}/org.eclipse.update.core.linux/os/linux/"/>
- <property name="obj-path" value="${eclipse-home}/org.eclipse.update.core/src/"/>
- <property name="src-path" value="${eclipse-home}/org.eclipse.update.core/src/"/>
-
- <!-- sets the properties -->
- <property name="library-name" value="libupdate"/>
- <property name="library-platform" value="so"/>
- <property name="library-file" value="${library-name}.${library-platform}"/>
-
- <!-- This target holds all initialization code that needs to be done for -->
- <!-- all tests that are to be run. Initialization for individual tests -->
- <!-- should be done within the body of the suite target. -->
- <target name="init">
- <tstamp/>
- <delete>
- <fileset dir="${obj-path}" includes="${library-file}"/>
- <fileset dir="${obj-path}" includes="${library-name}.o"/>
- </delete>
- </target>
-
- <!-- This target holds code to cleanup the testing environment after -->
- <!-- after all of the tests have been run. You can use this target to -->
- <!-- delete temporary files that have been created. -->
- <target name="cleanup">
- <delete>
- <fileset dir="${obj-path}" includes="${library-file}"/>
- <fileset dir="${obj-path}" includes="${library-name}.o"/>
- </delete>
- </target>
-
-
- <!-- This target runs the build. -->
- <target name="run" depends="init,build,cleanup">
- </target>
-
- <!-- This target build the library -->
- <target name="build">
- <echo message="Building ${library-file}"/>
-
- <property name="header-path" value="${jdk-path}/include"/>
- <property name="header-linux-path" value="${header-path}/linux" />
-
- <echo message="gcc -o ${library-file} -shared -I${src-path} -I${header-windows-path} ${library-file} -static -lc"/>
-
- <apply executable="gcc" dest="${eclipse-home}/" parallel="false">
- <arg value="-o"/>
- <arg value="${library-file}"/>
- <arg value="-shared"/>
- <arg value="-I${src-path}"/>
- <arg value="-I${header-path}"/>
- <arg value="-I${header-linux-path}"/>
- <srcfile/>
- <arg value="-static"/>
- <arg value="-lc"/>
- <fileset dir="${src-path}" includes="*.cpp"/>
- <mapper type="glob" from="*.cpp" to="*.o"/>
- </apply>
-
- <move file="${library-file}" todir="${destination}"/>
- </target>
-
-
-</project>
\ No newline at end of file
diff --git a/update/org.eclipse.update.core.linux/src/update.cpp b/update/org.eclipse.update.core.linux/src/update.cpp
deleted file mode 100644
index fffaff9..0000000
--- a/update/org.eclipse.update.core.linux/src/update.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-# include <sys/types.h>
-# include <sys/statfs.h>
-# include <update.h>
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetFreeSpace
- * Signature: (Ljava/io/File;)J
- */
-JNIEXPORT jlong JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetFreeSpace(
- JNIEnv * jnienv,
- jclass javaClass,
- jobject file) {
-
- // to retrive the String
- jclass cls;
- jmethodID id;
- jobject obj;
-
- // java.io.File.getAbsolutePath()
- const char * lpDirectoryName;
-
- // Linux Parameters
- struct statfs buffer;
-
- // the result
- jlong result = org_eclipse_update_configuration_LocalSystemInfo_SIZE_UNKNOWN;
-
- // first, obtain the Path from the java.io.File parameter
- cls = jnienv -> GetObjectClass(file);
- id = jnienv -> GetMethodID(cls, "getAbsolutePath", "()Ljava/lang/String;");
- obj = jnienv -> CallObjectMethod(file, id);
- lpDirectoryName = jnienv -> GetStringUTFChars((jstring) obj, 0);
-
- // cast one argument as jlong to have a jlong result
- int err = statfs(lpDirectoryName,&buffer);
- if (err==0){
- long size = buffer.f_bsize;
- jlong free = buffer.f_bfree;
- result = size*free;
- }
-
- return result;
-}
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetLabel
- * Signature: (Ljava/io/File;)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetLabel(
- JNIEnv * jnienv,
- jclass javaClass,
- jobject file) {
-
- // to retrive the String
- jclass cls;
- jmethodID id;
- jobject obj;
-
- // java.io.File.getAbsolutePath()
- const char * lpDirectoryName;
-
- // obtain the String from the parameter
- cls = jnienv -> GetObjectClass(file);
- id = jnienv -> GetMethodID(cls, "getAbsolutePath", "()Ljava/lang/String;");
- obj = jnienv -> CallObjectMethod(file, id);
- lpDirectoryName = jnienv -> GetStringUTFChars((jstring) obj, 0);
-
- jstring result = NULL;
-
- // Linux implementation following
-
- return result;
-}
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetType
- * Signature: (Ljava/io/File;)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetType(
- JNIEnv * jnienv,
- jclass javaClass,
- jobject file) {
-
- // to retrive the String
- jclass cls;
- jmethodID id;
- jobject obj;
-
- // java.io.File.getAbsolutePath()
- const char * lpDirectoryName;
-
- // obtain the String from the parameter
- cls = jnienv -> GetObjectClass(file);
- id = jnienv -> GetMethodID(cls, "getAbsolutePath", "()Ljava/lang/String;");
- obj = jnienv -> CallObjectMethod(file, id);
- lpDirectoryName = jnienv -> GetStringUTFChars((jstring) obj, 0);
-
- int result;
-
- // Linux implemantation
-
- result = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_INVALID_PATH;
- return result;
-}
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeListMountPoints
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeListMountPoints(
- JNIEnv * jnienv,
- jclass javaClass) {
-
- //
- int drive;
- char driveName[100];
- jobjectArray returnArray;
- int nDrive = 0;
-
- //
- jclass stringClass;
- jobject empty;
- int index = 0;
- jobject str;
-
- // Linux implementation
- // find mount points
-
- drive = 0;
- stringClass = jnienv -> FindClass("java/lang/String");
- empty = jnienv -> NewStringUTF("");
- //returnArray = jnienv -> NewObjectArray(nDrive, stringClass, empty);
- // for now return null as method is not implemented
- returnArray = NULL;
-
- for (int i = 0; i < drive; i++) {
- // Linux implementation, create String for each mount point
-
- str = jnienv -> NewStringUTF(driveName);
- jnienv -> SetObjectArrayElement(returnArray, index, str);
- index++;
- }
-
- return returnArray;
-}
diff --git a/update/org.eclipse.update.core.linux/src/update.h b/update/org.eclipse.update.core.linux/src/update.h
deleted file mode 100644
index f88aa29..0000000
--- a/update/org.eclipse.update.core.linux/src/update.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-#include <jni.h>
-/* Header for class org_eclipse_update_configuration_LocalSystemInfo */
-
-#ifndef _Included_org_eclipse_update_configuration_LocalSystemInfo
-#define _Included_org_eclipse_update_configuration_LocalSystemInfo
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef org_eclipse_update_configuration_LocalSystemInfo_SIZE_UNKNOWN
-#define org_eclipse_update_configuration_LocalSystemInfo_SIZE_UNKNOWN -1L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_UNKNOWN
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_UNKNOWN -1L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_INVALID_PATH
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_INVALID_PATH -2L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOVABLE
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOVABLE 1L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FIXED
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FIXED 2L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOTE
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOTE 3L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_CDROM
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_CDROM 4L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_RAMDISK
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_RAMDISK 5L
-/* Inaccessible static: listeners */
-/* Inaccessible static: hasNatives */
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetFreeSpace
- * Signature: (Ljava/io/File;)J
- */
-JNIEXPORT jlong JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetFreeSpace
- (JNIEnv *, jclass, jobject);
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetLabel
- * Signature: (Ljava/io/File;)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetLabel
- (JNIEnv *, jclass, jobject);
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetType
- * Signature: (Ljava/io/File;)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetType
- (JNIEnv *, jclass, jobject);
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeListMountPoints
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeListMountPoints
- (JNIEnv *, jclass);
-
-#ifdef __cplusplus
-}
-
-#endif
-#endif
diff --git a/update/org.eclipse.update.core.win32/.classpath b/update/org.eclipse.update.core.win32/.classpath
deleted file mode 100644
index 5921923..0000000
--- a/update/org.eclipse.update.core.win32/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="/org.eclipse.update.core"/>
- <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
- <classpathentry kind="src" path="/org.eclipse.help"/>
- <classpathentry kind="src" path="/org.apache.xerces"/>
- <classpathentry kind="src" path="/org.eclipse.core.boot"/>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/update/org.eclipse.update.core.win32/.cvsignore b/update/org.eclipse.update.core.win32/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/update/org.eclipse.update.core.win32/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/update/org.eclipse.update.core.win32/.project b/update/org.eclipse.update.core.win32/.project
deleted file mode 100644
index 161280e..0000000
--- a/update/org.eclipse.update.core.win32/.project
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.update.win32</name>
- <comment></comment>
- <projects>
- <project>org.eclipse.core.boot</project>
- <project>org.eclipse.core.runtime</project>
- <project>org.eclipse.update.core</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.team.cvs.core.cvsnature</nature>
- </natures>
-</projectDescription>
diff --git a/update/org.eclipse.update.core.win32/about.html b/update/org.eclipse.update.core.win32/about.html
deleted file mode 100644
index 441774f..0000000
--- a/update/org.eclipse.update.core.win32/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>11th December, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/update/org.eclipse.update.core.win32/build.properties b/update/org.eclipse.update.core.win32/build.properties
deleted file mode 100644
index e5de40b..0000000
--- a/update/org.eclipse.update.core.win32/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-source.updatecorewin32.zip = src/
-bin.includes = fragment.xml,\
- os/,\
- fragment.properties,\
- about.html
diff --git a/update/org.eclipse.update.core.win32/fragment.properties b/update/org.eclipse.update.core.win32/fragment.properties
deleted file mode 100644
index 918f059..0000000
--- a/update/org.eclipse.update.core.win32/fragment.properties
+++ /dev/null
@@ -1 +0,0 @@
-fragmentName = Install/Update Manager Win32 Fragment
\ No newline at end of file
diff --git a/update/org.eclipse.update.core.win32/fragment.xml b/update/org.eclipse.update.core.win32/fragment.xml
deleted file mode 100644
index d12ed5a..0000000
--- a/update/org.eclipse.update.core.win32/fragment.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<fragment
- id="org.eclipse.update.core.win32"
- name="%fragmentName"
- version="2.0.0"
- provider-name="International Business Machine Corp."
- plugin-id="org.eclipse.update.core"
- plugin-version="2.0.0"
- match="compatible">
-
- <runtime>
- </runtime>
-
-
-</fragment>
diff --git a/update/org.eclipse.update.core.win32/os/win32/update.dll b/update/org.eclipse.update.core.win32/os/win32/update.dll
deleted file mode 100644
index a26638a..0000000
--- a/update/org.eclipse.update.core.win32/os/win32/update.dll
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.core.win32/src/build.xml b/update/org.eclipse.update.core.win32/src/build.xml
deleted file mode 100644
index e5b3884..0000000
--- a/update/org.eclipse.update.core.win32/src/build.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<project name="buildlibrary" default="run" basedir=".">
-
- <!-- The properties ${eclipse-home} ${jdk-path} should be passed into this script -->
- <!-- Set a meaningful default value for when it is not. -->
- <property name="eclipse-home" value="${basedir}/../.."/>
- <property name="jdk-path" value="${java.home}"/>
- <property name="destination" value="${eclipse-home}/org.eclipse.update.core.win32/os/win32/"/>
- <property name="obj-path" value="${eclipse-home}/org.eclipse.update.core.win32/src"/>
- <property name="src-path" value="${eclipse-home}/org.eclipse.update.core.win32/src/"/>
-
- <!-- sets the properties -->
- <property name="library-name" value="update"/>
- <property name="library-platform" value="dll"/>
- <property name="library-file" value="${library-name}.${library-platform}"/>
-
- <!-- This target holds all initialization code that needs to be done for -->
- <!-- all tests that are to be run. Initialization for individual tests -->
- <!-- should be done within the body of the suite target. -->
- <target name="init">
- <tstamp/>
- <delete>
- <fileset dir="${obj-path}" includes="${library-file}"/>
- <fileset dir="${obj-path}" includes="${library-name}.obj"/>
- <fileset dir="${obj-path}" includes="${library-name}.tds"/>
- </delete>
- </target>
-
- <!-- This target holds code to cleanup the testing environment after -->
- <!-- after all of the tests have been run. You can use this target to -->
- <!-- delete temporary files that have been created. -->
- <target name="cleanup">
- <delete>
- <fileset dir="${obj-path}" includes="${library-file}"/>
- <fileset dir="${obj-path}" includes="${library-name}.obj"/>
- <fileset dir="${obj-path}" includes="${library-name}.tds"/>
- </delete>
- </target>
-
-
- <!-- This target runs the test suite. Any actions that need to happen -->
- <!-- after all the tests have been run should go here. -->
- <target name="run" depends="init,build,cleanup">
- </target>
-
- <!-- This target build the dll -->
- <target name="build">
- <echo message="Building ${library-file}"/>
-
- <property name="header-path" value="${jdk-path}/include"/>
- <property name="header-windows-path" value="${header-path}/win32" />
-
- <echo message="bcc32 -I${src-path} -I${header-windows-path} -WD"/>
-
- <apply executable="bcc32" dest="${eclipse-home}/" parallel="false">
- <arg value="-I${src-path}"/>
- <arg value="-I${header-path}"/>
- <arg value="-I${header-windows-path}"/>
- <arg value="-w-8057"/>
- <arg value="-WD"/>
- <srcfile/>
- <fileset dir="${src-path}" includes="*.cpp"/>
- <mapper type="glob" from="*.cpp" to="*.obj"/>
- </apply>
-
- <move file="${library-file}" todir="${destination}"/>
- </target>
-
-
-</project>
\ No newline at end of file
diff --git a/update/org.eclipse.update.core.win32/src/update.cpp b/update/org.eclipse.update.core.win32/src/update.cpp
deleted file mode 100644
index 392dfa3..0000000
--- a/update/org.eclipse.update.core.win32/src/update.cpp
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-
-# include <update.h>
-# include <windows.h>
-# include <winioctl.h> // IOCTL codes: MediaType
-
-// Windows Version
-int WIN98 = 0;
-int WINNT = 1;
-int WINME = 2;
-int WIN2000 = 3;
-int WINXP = 4;
-
-// set to 1 for DEBUG
-int DEBUG = 0;
-
-// set to 0 to run on Windows 95 *Unsupported*
-int NOWIN95 = 1;
-
-
-// GLOBAL METHODS
-// ---------------
-
-/*
- * calls GetVolumeInformation to retrive the label of the volume
- * Returns NULL if an error occurs
- * @param driveLetter path to the drive "c:\\"
- * @prama jnienv JNIEnvironment
- */
-jstring getLabel(TCHAR driveLetter[],JNIEnv * jnienv){
-
- jstring result = NULL;
- TCHAR buf[128];
-
- int err = GetVolumeInformation(
- driveLetter,
- buf,
- sizeof(buf) - 1,
- NULL,
- NULL,
- NULL,
- NULL,
- 0);
- if (err){
- result = jnienv -> NewStringUTF(buf);
- } else {
- if (DEBUG)
- printf("Error GetVolumeInformation %i",err);
- }
- return result;
-}
-
-/*
- * returns the Version of Windows
- * int 0 WIN98;
- * int 1 WINNT;
- * int 2 WINME;
- * int 3 WIN2000;
- * int 4 WINXP;
- * returns -1 otherwise
- */
-int getWindowsVersion(){
- OSVERSIONINFOEX osvi;
- int UNKNOWN = -1;
-
- ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
-
- if(!(GetVersionEx((OSVERSIONINFO *)&osvi))){
- if (DEBUG)
- printf("UNKNOWN VERSION: Cannot execute GetVersionEx\n");
- return UNKNOWN;
- }
-
- switch(osvi.dwPlatformId){
- case VER_PLATFORM_WIN32_NT:
- if (DEBUG)
- printf("VERSION NT: Maj %i Min %i\n",osvi.dwMajorVersion,osvi.dwMinorVersion);
- if(osvi.dwMajorVersion<=4)
- return WINNT;
- if(osvi.dwMajorVersion==5){
- if (osvi.dwMinorVersion==0)
- return WIN2000;
- if (osvi.dwMinorVersion==1)
- return WINXP;
- } else {
- return UNKNOWN;
- };
- break;
- case VER_PLATFORM_WIN32_WINDOWS:
- if (DEBUG)
- printf("VERSION Non NT: Maj %i Min %i\n",osvi.dwMajorVersion,osvi.dwMinorVersion);
- if(osvi.dwMajorVersion==4){
- if (osvi.dwMinorVersion==10)
- return WIN98;
- if (osvi.dwMinorVersion==90)
- return WINME;
- } else {
- return UNKNOWN;
- }
- break;
- default:
- if (DEBUG)
- printf("VERSION UNKNOWN: Maj %i Min %i\n",osvi.dwMajorVersion,osvi.dwMinorVersion);
- return UNKNOWN;
- }
- return UNKNOWN;
-}
-
-/*
- * Returns the type of Removable Drive
- * Returns
- * org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FLOPPY_3
- * org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FLOPPY_5
- * org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOVABLE
- */
-jlong getFloppy(TCHAR driveLetter[]){
-
- TCHAR floppyPath[8];
- HANDLE handle;
- DISK_GEOMETRY geometry[20];
- DWORD dw;
- jlong UNKNOWN = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOVABLE;
-
- sprintf(floppyPath, "\\\\.\\%c:", driveLetter[0]);
- if (DEBUG)
- printf("Path %s\n",floppyPath);
- handle=CreateFile(floppyPath,
- 0,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
- if (handle==INVALID_HANDLE_VALUE){
- if (DEBUG)
- printf("Invalid Handle %s\n",floppyPath);
- return UNKNOWN;
- } else {
- if(DeviceIoControl(handle,
- IOCTL_DISK_GET_MEDIA_TYPES,0,0,
- geometry,sizeof(geometry),&dw,0)
- && dw>0) {
- switch(geometry[0].MediaType){
- case F5_160_512:
- case F5_180_512:
- case F5_320_512:
- case F5_320_1024:
- case F5_360_512:
- case F5_1Pt2_512:
- if (DEBUG)
- printf("Found 5 1/4 Drive\n");
- return org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FLOPPY_5;
- case F3_720_512:
- case F3_1Pt44_512:
- case F3_2Pt88_512:
- case F3_20Pt8_512:
- if (DEBUG)
- printf("Found 3 1/2 Drive\n");
- return org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FLOPPY_3;
- default:
- return UNKNOWN;
- }
- }
- }
- return UNKNOWN;
-}
-
-/*
- * Returns the UNC name of a remote drive
- * (\\Machine\path\path1\path2$)
- * returns NULL if an error occurs
- */
- jstring getRemoteNetworkName(TCHAR driveLetter[],JNIEnv * jnienv){
-
- unsigned long size =256;
- TCHAR buf[256];
- TCHAR drivePath[2];
- DWORD err;
- jstring result = NULL;
-
- sprintf(drivePath, "%c:", driveLetter[0]);
- err = WNetGetConnection(drivePath,buf,&size);
-
- if (err==WN_SUCCESS){
- result = jnienv -> NewStringUTF(buf);
- } else {
- if (DEBUG)
- printf("Error WNEtGetConnection %i",err);
- }
- return result;
- }
-
-
-// JNI METHODS
-// ---------------
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetFreeSpace
- * Signature: (Ljava/io/File;)J
- */
-JNIEXPORT jlong JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetFreeSpace(
- JNIEnv * jnienv,
- jclass javaClass,
- jobject file) {
-
- // to retrive the String
- jclass cls;
- jmethodID id;
- jobject obj;
-
- // java.io.File.getAbsolutePath()
- const TCHAR * lpDirectoryName;
-
- // Windows Parameters
- __int64 i64FreeBytesAvailableToCaller;
- __int64 i64TotalNumberOfBytes;
- __int64 i64TotalNumberOfFreeBytes;
-
- // the result
- jlong result = org_eclipse_update_configuration_LocalSystemInfo_SIZE_UNKNOWN;
-
- // first, obtain the Path from the java.io.File parameter
- cls = jnienv -> GetObjectClass(file);
- id = jnienv -> GetMethodID(cls, "getAbsolutePath", "()Ljava/lang/String;");
- obj = jnienv -> CallObjectMethod(file, id);
- lpDirectoryName = jnienv -> GetStringUTFChars((jstring) obj, 0);
- if (DEBUG)
- printf("Directory: [%s]\n",lpDirectoryName);
-
- if (int win = (int)getWindowsVersion()<0 && NOWIN95){
- // windows 95 or other
- if (DEBUG)
- printf("Unsupported Windows: %i\n",win);
- return result;
- }
-
- int err = GetDiskFreeSpaceEx(
- lpDirectoryName,
- (PULARGE_INTEGER) & i64FreeBytesAvailableToCaller,
- (PULARGE_INTEGER) & i64TotalNumberOfBytes,
- (PULARGE_INTEGER) & i64TotalNumberOfFreeBytes);
-
- if (err) {
- result = (jlong) i64FreeBytesAvailableToCaller;
- }
-
- return result;
-}
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetLabel
- * Signature: (Ljava/io/File;)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetLabel(
- JNIEnv * jnienv,
- jclass javaClass,
- jobject file) {
-
- // to retrive the String
- jclass cls;
- jmethodID id;
- jobject obj;
-
- // java.io.File.getAbsolutePath()
- const TCHAR * lpDirectoryName;
-
- // obtain the String from the parameter
- cls = jnienv -> GetObjectClass(file);
- id = jnienv -> GetMethodID(cls, "getAbsolutePath", "()Ljava/lang/String;");
- obj = jnienv -> CallObjectMethod(file, id);
- lpDirectoryName = jnienv -> GetStringUTFChars((jstring) obj, 0);
- if (DEBUG)
- printf("Directory: [%s]\n",lpDirectoryName);
-
- //
- jstring result = NULL;
- int floppy;
-
- if (int win = (int)getWindowsVersion()<0 && NOWIN95){
- // windows 95 or other
- if (DEBUG)
- printf("Unsupported Windows: %i\n",win);
- return result;
- }
-
- // Make sure we have a String of the Form: <letter>:
- if (':' == lpDirectoryName[1]) {
- TCHAR driveLetter[4]; // i.e. -> C:\\
- memcpy(driveLetter, lpDirectoryName, 2);
- strcpy(driveLetter + 2, "\\");
- switch (GetDriveType(driveLetter)) {
- case DRIVE_REMOTE :
- // check name of machine and path of remote
- if (DEBUG)
- printf("Remote Drive");
- result = getRemoteNetworkName(driveLetter,jnienv);
- break;
- default :
- if (DEBUG)
- printf("Another Drive at %s", driveLetter);
- result = getLabel(driveLetter,jnienv);
- break;
- }
- }
-
- return result;
-}
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetType
- * Signature: (Ljava/io/File;)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetType(
- JNIEnv * jnienv,
- jclass javaClass,
- jobject file) {
-
- // to retrive the String
- jclass cls;
- jmethodID id;
- jobject obj;
-
- // java.io.File.getAbsolutePath()
- const TCHAR * lpDirectoryName;
-
- // obtain the String from the parameter
- cls = jnienv -> GetObjectClass(file);
- id = jnienv -> GetMethodID(cls, "getAbsolutePath", "()Ljava/lang/String;");
- obj = jnienv -> CallObjectMethod(file, id);
- lpDirectoryName = jnienv -> GetStringUTFChars((jstring) obj, 0);
- if (DEBUG)
- printf("Directory: [%s]\n",lpDirectoryName);
-
- int result = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_UNKNOWN;
- if (int win = (int)getWindowsVersion()<0 && NOWIN95){
- // windows 95 or other
- if (DEBUG)
- printf("Unsupported Windows: %i\n",win);
- return result;
- }
-
- // Make sure we have a String of the Form: <letter>:
- if (':' == lpDirectoryName[1]) {
- TCHAR driveLetter[4]; //C:\\
- memcpy(driveLetter, lpDirectoryName, 2);
- strcpy(driveLetter + 2, "\\");
-
- switch (GetDriveType(driveLetter)) {
- case DRIVE_REMOVABLE :
- // check if floppy 3.5, floppy 5.25
- // or other removable device (USB,PCMCIA ...)
- if (DEBUG)
- printf("Removable Device");
- result = getFloppy(driveLetter);
- break;
- case DRIVE_CDROM :
- result = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_CDROM;
- break;
- case DRIVE_FIXED :
- result = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FIXED;
- break;
- case DRIVE_REMOTE :
- result = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOTE;
- break;
- case DRIVE_NO_ROOT_DIR :
- result = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_INVALID_PATH;
- break;
- case DRIVE_RAMDISK :
- result = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_RAMDISK;
- break;
- case DRIVE_UNKNOWN :
- default :
- result = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_UNKNOWN;
- break;
- }
- } else {
- result = org_eclipse_update_configuration_LocalSystemInfo_VOLUME_INVALID_PATH;
- }
-
- return result;
-}
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeListMountPoints
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeListMountPoints(
- JNIEnv * jnienv,
- jclass javaClass) {
-
- //
- DWORD logDrives;
- UINT drive;
- TCHAR driveName[100];
- jobjectArray returnArray;
- int nDrive = 0;
-
- //
- jclass stringClass;
- jobject empty;
- int index = 0;
- jobject str;
-
-
- logDrives = GetLogicalDrives();
- for (drive = 0; drive < 32; drive++) {
- if (logDrives & (1 << drive)) {
- nDrive++;
- }
- }
-
- stringClass = jnienv -> FindClass("java/lang/String");
- empty = jnienv -> NewStringUTF("");
- returnArray = jnienv -> NewObjectArray(nDrive, stringClass, empty);
-
- if (int win = (int)getWindowsVersion()<0 && NOWIN95){
- // windows 95 or other
- if (DEBUG)
- printf("Unsupported Windows: %i\n",win);
- return returnArray;
- }
-
- for (drive = 0; drive < 32; drive++) {
- if (logDrives & (1 << drive)) {
- sprintf(driveName, "%c:\\", drive + 'A');
- str = jnienv -> NewStringUTF(driveName);
- jnienv -> SetObjectArrayElement(returnArray, index, str);
- index++;
- }
- }
-
- return returnArray;
-}
-
diff --git a/update/org.eclipse.update.core.win32/src/update.h b/update/org.eclipse.update.core.win32/src/update.h
deleted file mode 100644
index 0bedfe0..0000000
--- a/update/org.eclipse.update.core.win32/src/update.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-#include <jni.h>
-/* Header for class org_eclipse_update_configuration_LocalSystemInfo */
-
-#ifndef _Included_org_eclipse_update_configuration_LocalSystemInfo
-#define _Included_org_eclipse_update_configuration_LocalSystemInfo
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef org_eclipse_update_configuration_LocalSystemInfo_SIZE_UNKNOWN
-#define org_eclipse_update_configuration_LocalSystemInfo_SIZE_UNKNOWN -1L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_UNKNOWN
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_UNKNOWN -1L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_INVALID_PATH
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_INVALID_PATH -2L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOVABLE
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOVABLE 1L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FIXED
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FIXED 2L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOTE
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_REMOTE 3L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_CDROM
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_CDROM 4L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_RAMDISK
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_RAMDISK 5L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FLOPPY_5
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FLOPPY_5 6L
-#undef org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FLOPPY_3
-#define org_eclipse_update_configuration_LocalSystemInfo_VOLUME_FLOPPY_3 7L
-/* Inaccessible static: listeners */
-/* Inaccessible static: hasNatives */
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetFreeSpace
- * Signature: (Ljava/io/File;)J
- */
-JNIEXPORT jlong JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetFreeSpace
- (JNIEnv *, jclass, jobject);
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetLabel
- * Signature: (Ljava/io/File;)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetLabel
- (JNIEnv *, jclass, jobject);
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeGetType
- * Signature: (Ljava/io/File;)I
- */
-JNIEXPORT jint JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeGetType
- (JNIEnv *, jclass, jobject);
-
-/*
- * Class: org_eclipse_update_configuration_LocalSystemInfo
- * Method: nativeListMountPoints
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_org_eclipse_update_configuration_LocalSystemInfo_nativeListMountPoints
- (JNIEnv *, jclass);
-
-#ifdef __cplusplus
-}
-
-#endif
-#endif
diff --git a/update/org.eclipse.update.core/doc/deltaHandler.html b/update/org.eclipse.update.core/doc/deltaHandler.html
index d166e1e..a45259f 100644
--- a/update/org.eclipse.update.core/doc/deltaHandler.html
+++ b/update/org.eclipse.update.core/doc/deltaHandler.html
@@ -8,7 +8,7 @@
<H2>Identifier</H2>
org.eclipse.update.core.deltaHandler<H2>Description</H2>
[Enter description of this extension point]<H2>Markup</H2>
-<p><samp> <!ELEMENT extension (display)></samp>
+<p><samp> <!ELEMENT extension (EMPTY)></samp>
<br><samp> <!ATTLIST extension</samp>
<br><samp> point CDATA #REQUIRED</samp>
<br><samp> id CDATA #IMPLIED</samp>
diff --git a/update/org.eclipse.update.core/doc/installHandlers.html b/update/org.eclipse.update.core/doc/installHandlers.html
index ee90591..4f8c7ca 100644
--- a/update/org.eclipse.update.core/doc/installHandlers.html
+++ b/update/org.eclipse.update.core/doc/installHandlers.html
@@ -8,7 +8,7 @@
<H2>Identifier</H2>
org.eclipse.update.core.installHandlers<H2>Description</H2>
Extension point for registering global install handlers.<H2>Markup</H2>
-<p><samp> <!ELEMENT extension (install-handler+)></samp>
+<p><samp> <!ELEMENT extension (EMPTY)></samp>
<br><samp> <!ATTLIST extension</samp>
<br><samp> point CDATA #REQUIRED</samp>
<br><samp> id CDATA #IMPLIED</samp>
diff --git a/update/org.eclipse.update.examples/.classpath b/update/org.eclipse.update.examples/.classpath
deleted file mode 100644
index b48fe2a..0000000
--- a/update/org.eclipse.update.examples/.classpath
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/"/>
- <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
- <classpathentry kind="src" path="/org.apache.xerces"/>
- <classpathentry kind="src" path="/org.eclipse.core.boot"/>
- <classpathentry kind="src" path="/org.eclipse.update.core"/>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/update/org.eclipse.update.examples/.cvsignore b/update/org.eclipse.update.examples/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/update/org.eclipse.update.examples/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/update/org.eclipse.update.examples/.project b/update/org.eclipse.update.examples/.project
deleted file mode 100644
index 39cb54a..0000000
--- a/update/org.eclipse.update.examples/.project
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.update.examples</name>
- <comment></comment>
- <projects>
- <project>org.apache.xerces</project>
- <project>org.eclipse.core.boot</project>
- <project>org.eclipse.core.runtime</project>
- <project>org.eclipse.update.core</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ui.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ui.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.ui.PluginNature</nature>
- <nature>org.eclipse.team.cvs.core.cvsnature</nature>
- </natures>
-</projectDescription>
diff --git a/update/org.eclipse.update.examples/Scrapbook2.jpage b/update/org.eclipse.update.examples/Scrapbook2.jpage
deleted file mode 100644
index b5da99a..0000000
--- a/update/org.eclipse.update.examples/Scrapbook2.jpage
+++ /dev/null
@@ -1,111 +0,0 @@
-SiteManager.getSite(URL)throws CoreException
- String type = getTypeForprotocol(URL.getprotocol);
- try {
- if (type != null){
- attemptCreationSite(type,URL);
- } else {
- attemptCreationSite("http",URL);
- }
- } catch (CoreException e){
- throw new CoreException("Cannot create site",e.getMessage());
- }
-
-SiteManager.attemptCreationSite(type,URL)throws CoreException
- try {
- createSite(type,URL);
- } catch (InvalidTypeException e){
- try {
- createSite(e.getRealType(),URL);
- } catch (InvalidSiteExeption e){
- throw new CoreException("Wrong site type");
- }
- }
-
-SiteManager.createSite(type,URL) throws CoreExeption, InvalidSiteTypeException
-
-
-try {
-
- factory.createSite(url, forceCreation);
-
-} catch (IOException e) {
- // if the URL is pointing to either a file
-// or a directory, without reference
-if (url.getRef() != null) {
- // 4 nothing we can do
- throw newCoreException("Error accessing url:"+url.toExternalForm()+"\r\n"+e.getMessage(),e);
-} else if (url.getFile().endsWith("/")) {
- // 1 try to add site.xml
- try {
- url = new URL(url,Site.SITE_XML);
- } catch (MalformedURLException e1){
- throw newCoreException("Cannot create URL:"+url.toExternalForm()+"+"+Site.SITE_XML,e1);
- }
- try {
- site = factory.createSite(url, forceCreation);
- } catch (ParsingException e1){
- throw newCoreException("Error parsing URL:"+url.toExternalForm()+"\r\n"+e1.getMessage(),e1);
- } catch (IOException e1){
- throw newCoreException("Error accessing url:"+url.toExternalForm()+"\r\n"+e1.getMessage(),e1);
- }
-} else if (url.getFile().endsWith(Site.SITE_XML)) {
- // 3 nothing we can do
- throw newCoreException("Error accessing url:"+url.toExternalForm()+"\r\n"+e.getMessage(),e);
-} else {
- // 2 try to add /site.xml
- try {
- url = new URL(url.getProtocol(),url.getHost(), url.getPort(), url.getFile()+"/"+Site.SITE_XML);
- } catch (MalformedURLException e1){
- throw newCoreException("Cannot create URL:"+url.toExternalForm()+"+"+Site.SITE_XML,e1);
- }
-
- try {
- site = factory.createSite(url, forceCreation);
- } catch (ParsingException e1){
- throw newCoreException("Error parsing URL:"+url.toExternalForm()+"\r\n"+e1.getMessage()+"\r\nPrevious Input/Output Error:"+e.getMessage(),e1);
- } catch (IOException e1){
- throw newCoreException("Error accessing url:"+url.toExternalForm()+"\r\n"+e1.getMessage()+"\r\nPrevious Input/Output Error:"+e.getMessage(),e1);
- }
- }
-
- } catch (ParsingException e) {
-
- // if the URL is pointing to either a file
-// or a directory, without reference
-if (url.getRef() != null) {
- // 4 nothing we can do
- throw newCoreException("Error parsing URL:"+url.toExternalForm()+"\r\n"+e.getMessage(),e);
-} else if (url.getFile().endsWith("/")) {
- // 1 try to add site.xml
- try {
- url = new URL(url,Site.SITE_XML);
- } catch (MalformedURLException e1){
- throw newCoreException("Cannot create URL:"+url.toExternalForm()+"+"+Site.SITE_XML,e1);
- }
- try {
- site = factory.createSite(url, forceCreation);
- } catch (ParsingException e1){
- throw newCoreException("Error parsing URL:"+url.toExternalForm()+"\r\n"+e1.getMessage(),e1);
- } catch (IOException e1){
- throw newCoreException("Error accessing url:"+url.toExternalForm()+"\r\n"+e1.getMessage(),e1);
- }
-
- } else if (url.getFile().endsWith(Site.SITE_XML)) {
- // 3 nothing we can do
- throw newCoreException("Error parsing URL:"+url.toExternalForm()+"\r\n"+e.getMessage(),e);
-} else {
- // 2 try to add /site.xml
-
- try {
- url = new URL(url.getProtocol(),url.getHost(), url.getPort(), url.getFile()+"/"+Site.SITE_XML);
- } catch (MalformedURLException e1){
- throw newCoreException("Cannot create URL:"+url.toExternalForm()+"+"+Site.SITE_XML,e1);
- }
- try {
- site = factory.createSite(url, forceCreation);
- } catch (ParsingException e1){
- throw newCoreException("Error parsing URL:"+url.toExternalForm()+"\r\n"+e1.getMessage()+"\r\nPrevious Parsing error:"+e.getMessage(),e1);
- } catch (IOException e1){
- throw newCoreException("Error accessing url:"+url.toExternalForm()+"\r\n"+e1.getMessage()+"\r\nPrevious Parsing error:"+e.getMessage(),e1);
-
-
diff --git a/update/org.eclipse.update.examples/about.html b/update/org.eclipse.update.examples/about.html
deleted file mode 100644
index 768324e..0000000
--- a/update/org.eclipse.update.examples/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>11th December, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/update/org.eclipse.update.examples/bin/org/eclipse/update/examples/buildzip/java.page.jpage b/update/org.eclipse.update.examples/bin/org/eclipse/update/examples/buildzip/java.page.jpage
deleted file mode 100644
index 8b3ca30..0000000
--- a/update/org.eclipse.update.examples/bin/org/eclipse/update/examples/buildzip/java.page.jpage
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.examples/build.properties b/update/org.eclipse.update.examples/build.properties
deleted file mode 100644
index 4205e15..0000000
--- a/update/org.eclipse.update.examples/build.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-source.updateexamplescore.jar = src/
-bin.includes=plugin.xml,plugin.properties,*.jar,about.html
diff --git a/update/org.eclipse.update.examples/plugin.properties b/update/org.eclipse.update.examples/plugin.properties
deleted file mode 100644
index c6c5caa..0000000
--- a/update/org.eclipse.update.examples/plugin.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-
-name = Install/Update BuildZip Example
-provider-name = International Business Machines Corp.
\ No newline at end of file
diff --git a/update/org.eclipse.update.examples/plugin.xml b/update/org.eclipse.update.examples/plugin.xml
deleted file mode 100644
index e8b4092..0000000
--- a/update/org.eclipse.update.examples/plugin.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin
- id="org.eclipse.update.examples"
- name="%name"
- version="2.0.0"
- provider-name="%provider-name">
-
- <runtime>
- <library name="updateexamples.jar">
- <export name="*"/>
- </library>
- </runtime>
- <requires>
- <import plugin="org.eclipse.core.runtime"/>
- <import plugin="org.apache.xerces"/>
- <import plugin="org.eclipse.core.boot"/>
- <import plugin="org.eclipse.update.core"/>
- </requires>
-
-
- <extension
- id="zip"
- point="org.eclipse.update.core.featureTypes">
- <feature-factory
- class="org.eclipse.update.examples.buildzip.BuildZipFeatureFactory">
- </feature-factory>
- </extension>
- <extension
- id="site.zip"
- point="org.eclipse.update.core.siteTypes">
- <site-factory
- class="org.eclipse.update.examples.buildzip.BuildZipSiteFactory">
- </site-factory>
- </extension>
- <extension
- id="site.freeform"
- point="org.eclipse.update.core.siteTypes">
- <site-factory
- class="org.eclipse.update.examples.freeform.FreeFormSiteFactory">
- </site-factory>
- </extension>
-
-</plugin>
diff --git a/update/org.eclipse.update.examples/site/features/com.reddot.reddot_1.0.0.jar b/update/org.eclipse.update.examples/site/features/com.reddot.reddot_1.0.0.jar
deleted file mode 100644
index 06507a7..0000000
--- a/update/org.eclipse.update.examples/site/features/com.reddot.reddot_1.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.examples/site/features/com.reddot.reddot_2.0.0.jar b/update/org.eclipse.update.examples/site/features/com.reddot.reddot_2.0.0.jar
deleted file mode 100644
index 7236815..0000000
--- a/update/org.eclipse.update.examples/site/features/com.reddot.reddot_2.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.examples/site/info/images/redDot.jpg b/update/org.eclipse.update.examples/site/info/images/redDot.jpg
deleted file mode 100644
index f0fb5c3..0000000
--- a/update/org.eclipse.update.examples/site/info/images/redDot.jpg
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.examples/site/info/siteInfo.html b/update/org.eclipse.update.examples/site/info/siteInfo.html
deleted file mode 100644
index ceca97d..0000000
--- a/update/org.eclipse.update.examples/site/info/siteInfo.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!-- saved from url=(0040)http://dejan/testSite/info/siteInfo.html -->
-<HTML><HEAD>
-<META http-equiv=Content-Type content="text/html; charset=windows-1252">
-<META content="MSHTML 5.50.4807.2300" name=GENERATOR></HEAD>
-<BODY>
-<H1 align=left><IMG height=55 src="images/redDot.jpg" width=56
-align=center border=0> <FONT color=#c0c0c0>Follow the Red Dot </FONT></H1>
-<P>Welcome to the <B><FONT color=#800000>Red Dot</FONT> </B>update site. Use
-your Eclipse <B>Update Sites</B> view to locate the feature version you want to
-install or update to.</P>
-<H2>About Red Dot Feature</H2>
-<P>Our revolutionary Red Dot Eclipse feature changed all preconceptions about
-what Eclipse features can and cannot do. Using our strikingly simple concept of
-adding buttons to the Eclipse tool bar, we allow you to open dialogs that show
-you the version of the Red Dot feature. The beauty of the concept stems from its
-simplicity, ease of use, high performance and small footprint. Never before was
-it so easy to press a button on the tool bar to get some text shown in the
-dialog.</P>
-<H2>News</H2>
-<UL>
- <LI><B>November 2001</B> - version 2.0.0 of the Red Dot feature is available
- for download. This version brings improvements across the board, further
- strengthening an already established Eclipse feature classic. Improvements
- will be visible the moment you update your feature - our famous red dot tool
- bar button is now <B>25% more red</B>, making it even easier to spot among
- other buttons.
- <LI><B>October 2001</B> - version 1.0.0 of the Red Dot feature is available
- for download. Select it in the 'Sites' view of the Update Manager and press
- 'Install' button. </LI></UL>
-<HR>
-<I>Copyright 2001 Red Dot Corporation Ltd. All rights reserved.</I>
-</BODY></HTML>
diff --git a/update/org.eclipse.update.examples/site/plugins/com.reddot.reddot_1.0.0.jar b/update/org.eclipse.update.examples/site/plugins/com.reddot.reddot_1.0.0.jar
deleted file mode 100644
index c88b793..0000000
--- a/update/org.eclipse.update.examples/site/plugins/com.reddot.reddot_1.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.examples/site/plugins/com.reddot.reddot_2.0.0.jar b/update/org.eclipse.update.examples/site/plugins/com.reddot.reddot_2.0.0.jar
deleted file mode 100644
index da31ad3..0000000
--- a/update/org.eclipse.update.examples/site/plugins/com.reddot.reddot_2.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.examples/site/site.xml b/update/org.eclipse.update.examples/site/site.xml
deleted file mode 100644
index b091324..0000000
--- a/update/org.eclipse.update.examples/site/site.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<site>
- <description url="info/siteInfo.html"/>
-
- <feature url="features/com.reddot.reddot_1.0.0.jar">
- <category name="reddot"/>
- </feature>
-
- <feature url="features/com.reddot.reddot_2.0.0.jar">
- <category name="reddot"/>
- </feature>
-
- <category-def label="Red Dot Versions" name="reddot">
- <description url="info/RedDotVersions.html">
- This category contains all of the currently available versions of Red Dot feature.
- </description>
- </category-def>
-
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipConverter.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipConverter.java
deleted file mode 100644
index 3b0108f..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipConverter.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package org.eclipse.update.examples.buildzip;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringBufferInputStream;
-import java.net.URL;
-import java.util.Properties;
-import java.util.jar.JarEntry;
-import java.util.jar.JarOutputStream;
-
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.ContentReference;
-import org.eclipse.update.core.IFeature;
-import org.eclipse.update.core.IFeatureContentProvider;
-import org.eclipse.update.core.IPluginEntry;
-import org.eclipse.update.core.JarContentReference;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-
-/**
- * Converts eclipse build .zip files into packaged feature
- */
-public class BuildZipConverter {
-
- public static void main(String[] args) {
- if (args.length <=0) {
- System.out.println("Usage: BuildZipConverter <path to the zip file>.\r\nExample: BuildZipConverter d:/download/integration-eclipse-SDK-20020109-win32.zip");
- return;
- }
- try {
- URL buildzip = new URL(("file:"+args[0]).replace(File.separatorChar, '/'));
- BuildZipFeatureFactory factory = new BuildZipFeatureFactory();
- IFeature feature = factory.createFeature(buildzip, null);
- IFeatureContentProvider provider = feature.getFeatureContentProvider();
-
- ContentReference[] refs = provider.getFeatureEntryContentReferences(null);
-
- File site = new File((args[0]+".packaged/").replace('/',File.separatorChar));
- site.mkdirs();
- File featuresDir = new File(site,"features");
- featuresDir.mkdirs();
- File pluginsDir = new File(site, "plugins");
- pluginsDir.mkdirs();
-
- File jarFile = new File(featuresDir,feature.getVersionedIdentifier()+".jar");
- System.out.println("writing feature archive: "+feature.getVersionedIdentifier()+".jar");
- writeJar(jarFile, refs, feature, null, null);
- JarContentReference jar = new JarContentReference("build.zip",buildzip);
- Properties manifest = getBuildManifest(jar);
-
- IPluginEntry[] plugins = feature.getPluginEntries();
- for (int i=0; i<plugins.length; i++) {
- refs = provider.getPluginEntryContentReferences(plugins[i], null);
- jarFile = new File(pluginsDir,plugins[i].getVersionedIdentifier()+".jar");
- System.out.println("writing plugin archive: "+plugins[i].getVersionedIdentifier()+".jar");
- writeJar(jarFile, refs, feature, plugins[i].getVersionedIdentifier().getIdentifier(), manifest);
- }
-
- writeSiteManifest(site, feature);
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
-
- public static void writeJar(File jarFile,ContentReference[] refs, IFeature feature, String pluginId, Properties manifest) {
-
- JarOutputStream jos = null;
- FileOutputStream os = null;
- InputStream is = null;
-
- try {
- os = new FileOutputStream(jarFile);
- jos = new JarOutputStream(os);
- JarEntry entry = null;
- String buf = null;
- StringBufferInputStream sbis = null;
-
- // write jar manifest (first entry in output stream)
- buf = "Manifest-Version: 1.0\nCreated-By: 2.0.0 (www.eclipse.org Feature Packager)\n";
- sbis = new StringBufferInputStream(buf);
- entry = new JarEntry("META-INF/MANIFEST.MF");
- jos.putNextEntry(entry);
- Utilities.copy(sbis,jos,null);
- sbis.close();
-
- // jar up the references
- for (int i=0; i<refs.length; i++) {
- String id = refs[i].getIdentifier();
- entry = new JarEntry(id);
- jos.putNextEntry(entry);
- is = refs[i].getInputStream();
- Utilities.copy(is,jos,null);
- is.close(); is = null;
- }
-
- // for plugin jars, write build manifest
- if (pluginId != null && manifest != null) {
- String key = "plugin@"+pluginId;
- String value = manifest.getProperty(key);
- if (value != null) {
- if (value.equals("HEAD")) {
- value += "-" + feature.getVersionedIdentifier().getVersion().getMajorComponent();
- }
- buf = key + "=" + value;
- sbis = new StringBufferInputStream(buf);
- entry = new JarEntry("buildmanifest.properties");
- jos.putNextEntry(entry);
- Utilities.copy(sbis,jos,null);
- sbis.close();
- }
- }
-
- // close jar
- jos.close(); jos = null; os = null;
- } catch(Exception e) {
- e.printStackTrace();
- } finally {
- if (is != null)
- try {is.close();} catch(IOException e) {}
-
- if (jos != null)
- try {jos.close();} catch(IOException e) {}
- else if (os != null)
- try {os.close();} catch(IOException e) {}
- }
- }
-
- public static void writeSiteManifest(File site, IFeature feature) throws IOException {
- File manifest = new File(site, "site.xml");
- FileOutputStream os = new FileOutputStream(manifest);
- String siteXML = "<site>\n <feature url=\"features/"+feature.getVersionedIdentifier().toString()+".jar\"/>\n</site>";
- StringBufferInputStream sbis = new StringBufferInputStream(siteXML);
- Utilities.copy(sbis,os,null);
- os.close();
- sbis.close();
- }
-
- public static Properties getBuildManifest(JarContentReference jar) throws IOException {
- ContentReference manifestEntry = jar.peek("eclipse/buildmanifest.properties",null/*ContentSelector*/, null/*ProgressMonitor*/);
- InputStream is = null;
- Properties props = null;
- try {
- props = new Properties();
- is = manifestEntry.getInputStream();
- props.load(is);
- } finally {
- if (is != null) try{ is.close(); } catch(IOException e) {}
- }
- return props;
- }
-}
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureContentProvider.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureContentProvider.java
deleted file mode 100644
index faa301b..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureContentProvider.java
+++ /dev/null
@@ -1,257 +0,0 @@
-package org.eclipse.update.examples.buildzip;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.jar.JarEntry;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.ContentReference;
-import org.eclipse.update.core.FeatureContentProvider;
-import org.eclipse.update.core.IFeatureContentProvider;
-import org.eclipse.update.core.INonPluginEntry;
-import org.eclipse.update.core.IPluginEntry;
-import org.eclipse.update.core.IVerifier;
-import org.eclipse.update.core.InstallMonitor;
-import org.eclipse.update.core.JarContentReference;
-import org.eclipse.update.core.JarContentReference.ContentSelector;
-import org.eclipse.update.core.model.FeatureModel;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-
-/**
- * An example feature content provider. It handles features packaged as
- * build zip's using the format used for integration and stable builds
- * posted on the downloads pages at www.eclipse.org
- * </p>
- * @since 2.0
- */
-
-public class BuildZipFeatureContentProvider extends FeatureContentProvider implements IFeatureContentProvider {
-
- private JarContentReference baseReference;
- private ContentReference generatedFeatureManifest;
- private ContentReference[] featureEntryContentReferences;
- private IPluginEntry currentPluginEntry;
- private INonPluginEntry currentNonPluginEntry;
-
- public BuildZipFeatureContentProvider(URL base) {
- super(base);
- this.baseReference = new JarContentReference("build.zip",base);
- }
-
- /*
- * @see IFeatureContentProvider#getFeatureManifest()
- */
- public ContentReference getFeatureManifestReference(InstallMonitor monitor) throws CoreException {
- if (generatedFeatureManifest == null) {
- throw newCoreException("Feature manifest is not available",null);
- }
- else
- return generatedFeatureManifest;
- }
-
- /*
- * @see IFeatureContentProvider#getArchiveReferences()
- */
- public ContentReference[] getArchiveReferences(InstallMonitor monitor) {
- // the feature and all its plugins files are packaged in a single archive
- return new ContentReference[] { baseReference };
- }
-
- /*
- * @see IFeatureContentProvider#getFeatureEntryArchiveReferences()
- */
- public ContentReference[] getFeatureEntryArchiveReferences(InstallMonitor monitor) {
- // the feature and all its plugins files are packaged in a single archive
- return new ContentReference[] { baseReference };
- }
-
- /*
- * @see IFeatureContentProvider#getPluginEntryArchiveReferences(IPluginEntry)
- */
- public ContentReference[] getPluginEntryArchiveReferences(IPluginEntry pluginEntry, InstallMonitor monitor) {
- // the feature and all its plugins files are packaged in a single archive
- return new ContentReference[] { baseReference };
- }
-
- /*
- * @see IFeatureContentProvider#getNonPluginEntryArchiveReferences(INonPluginEntry)
- */
- public ContentReference[] getNonPluginEntryArchiveReferences(INonPluginEntry nonPluginEntry, InstallMonitor monitor)
- throws CoreException {
- try {
- return peekNonPluginEntryContent(nonPluginEntry,monitor);
- } catch(IOException e) {
- throw newCoreException("Unable to return content for non plugin entry "+nonPluginEntry.getIdentifier(),e);
- }
- }
-
- /*
- * @see IFeatureContentProvider#getFeatureEntryContentReferences()
- */
- public ContentReference[] getFeatureEntryContentReferences(InstallMonitor monitor) {
- if (featureEntryContentReferences == null)
- return new ContentReference[0];
- else
- return featureEntryContentReferences;
- }
-
- /*
- * @see IFeatureContentProvider#getPluginEntryContentReferences(IPluginEntry)
- */
- public ContentReference[] getPluginEntryContentReferences(IPluginEntry pluginEntry, InstallMonitor monitor)
- throws CoreException {
- try {
- return peekPluginEntryContent(pluginEntry, monitor);
- } catch(IOException e) {
- throw newCoreException("Unable to return content for plugin entry "+pluginEntry.getVersionedIdentifier(),e);
- }
- }
-
- public URL getFeatureBaseURL() throws IOException {
- return getWorkingDirectory().toURL();
-
- }
-
- ContentReference getFeatureBuildManifest() throws Exception {
- return baseReference.peek("eclipse/buildmanifest.properties",null/*ContentSelector*/, null/*ProgressMonitor*/);
- }
-
- ContentReference getPluginManifest(String pluginId, boolean isFragment) throws Exception {
- String manifestName = "eclipse/plugins/" + pluginId + "/" + (isFragment ? "fragment.xml" : "plugin.xml");
- return baseReference.peek(manifestName, null/*ContentSelector*/, null/*ProgressMonitor*/);
- }
-
- void unpackFeatureEntryContent(FeatureModel feature, InstallMonitor monitor) throws IOException {
-
- // define selector for feature entry files
- ContentSelector selector = new ContentSelector() {
- public boolean include(JarEntry jarEntry) {
- if (jarEntry.isDirectory())
- return false;
- String entry = jarEntry.getName();
- if (entry.startsWith("eclipse/readme/"))
- return true;
- else if (entry.startsWith("eclipse/splash/"))
- return true;
- else if (entry.startsWith("eclipse/") && entry.indexOf("/",8)==-1 && entry.endsWith(".html"))
- return true;
- else
- return false;
- }
- public String defineIdentifier(JarEntry jarEntry) {
- String entry = jarEntry.getName();
- if (entry.startsWith("eclipse/"))
- return entry.substring(8);
- else
- return entry;
- }
- };
-
- // unpack feature entry files
- File tmpDir = getWorkingDirectory();
- ContentReference[] refs = baseReference.unpack(tmpDir, selector, monitor);
-
- // write out feature manifest (feature.xml);
- File manifest = Utilities.createLocalFile(tmpDir, null/*key*/,"feature.xml");
- ContentReference manifestReference = new ContentReference("feature.xml", manifest);
- DefaultModelWriter w = new DefaultModelWriter(feature);
- FileOutputStream os = null;
- try {
- os = new FileOutputStream(manifest);
- w.writeFeatureManifest(os);
- } finally {
- if (os != null) try { os.close(); } catch(IOException e) {}
- }
- this.generatedFeatureManifest = manifestReference;
-
- // save references (newly-written feature.xml plus rest of selected feature files)
- ContentReference[] allRefs = new ContentReference[refs.length+1];
- allRefs[0] = manifestReference;
- System.arraycopy(refs,0,allRefs,1,refs.length);
- featureEntryContentReferences = allRefs;
- }
-
- ContentReference[] peekPluginEntryContent(IPluginEntry plugin, InstallMonitor monitor) throws IOException {
-
- // define selector for plugin entry files
- ContentSelector selector = new ContentSelector() {
- public boolean include(JarEntry jarEntry) {
- if (jarEntry.isDirectory())
- return false;
- String entry = jarEntry.getName();
- String id = currentPluginEntry.getVersionedIdentifier().getIdentifier();
- if (id==null)
- return false;
- else if (entry.startsWith("eclipse/plugins/"+id+"/"))
- return true;
- else
- return false;
- }
- public String defineIdentifier(JarEntry jarEntry) {
- String entry = jarEntry.getName();
- int ix = entry.indexOf("/",16);
- if (ix != -1) {
- return entry.substring(ix+1);
- } else {
- return entry;
- }
- }
- };
-
- // unpack plugin entry files
- currentPluginEntry = plugin;
- return baseReference.peek(selector, monitor);
- }
-
- ContentReference[] peekNonPluginEntryContent(INonPluginEntry data, InstallMonitor monitor) throws IOException {
-
- // define selector for non plugin entry files
- ContentSelector selector = new ContentSelector() {
- public boolean include(JarEntry jarEntry) {
- if (jarEntry.isDirectory())
- return false;
- String entry = jarEntry.getName();
- String id = currentNonPluginEntry.getIdentifier();
- if (!id.equals("root"))
- return false;
- else if (!entry.startsWith("eclipse/plugins/"))
- return true;
- else
- return false;
- }
- public String defineIdentifier(JarEntry jarEntry) {
- String entry = jarEntry.getName();
- if (entry.startsWith("eclipse/"))
- return entry.substring(8);
- else
- return entry;
- }
- };
-
- // unpack non plugin entry files
- currentNonPluginEntry = data;
- return baseReference.peek(selector, monitor);
- }
-
- private CoreException newCoreException(String s, Throwable e) throws CoreException {
- return new CoreException(new Status(IStatus.ERROR,"org.eclipse.update.examples",0,s,e));
- }
- /*
- * @see IFeatureContentProvider#getVerifier()
- */
- public IVerifier getVerifier() throws CoreException {
- return null;
- }
-
-}
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureFactory.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureFactory.java
deleted file mode 100644
index df11a78..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureFactory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.eclipse.update.examples.buildzip;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.update.core.BaseFeatureFactory;
-import org.eclipse.update.core.Feature;
-import org.eclipse.update.core.IFeature;
-import org.eclipse.update.core.IFeatureFactory;
-import org.eclipse.update.core.ISite;
-import org.eclipse.update.core.model.FeatureModel;
-
-/**
- * An example feature factory based on the packaging
- * format used for integration and stable builds
- * posted on the downloads pages at www.eclipse.org
- * </p>
- * @since 2.0
- */
-
-public class BuildZipFeatureFactory
- extends BaseFeatureFactory
- implements IFeatureFactory {
-
- /*
- * @see IFeatureFactory#createFeature(URL, ISite)
- */
- public IFeature createFeature(URL url, ISite site) throws CoreException {
- try {
- // create content provider for feature
- BuildZipFeatureContentProvider cp = new BuildZipFeatureContentProvider(url);
- Feature feature = null;
-
- // parse the feature
- feature = (Feature) parseFeature(cp);
-
- // initialize feature
- feature.setFeatureContentProvider(cp);
- feature.setSite(site);
- feature.resolve(cp.getFeatureBaseURL(), null);
- feature.markReadOnly();
- return feature;
- } catch (Exception e) {
- throw new CoreException(new Status(IStatus.ERROR,"org.eclipse.update.examples.buildzip",0,"Unable to create feature",e));
- }
- }
-
- /*
- * parse the build zip to reconstruct a feature model
- */
- public FeatureModel parseFeature(BuildZipFeatureContentProvider cp) throws Exception {
- return (new BuildZipFeatureParser(this)).parse(cp);
- }
-
-}
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureParser.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureParser.java
deleted file mode 100644
index f81e490..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipFeatureParser.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package org.eclipse.update.examples.buildzip;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URLDecoder;
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.PluginVersionIdentifier;
-import org.eclipse.update.core.ContentReference;
-import org.eclipse.update.core.model.FeatureModel;
-import org.eclipse.update.core.model.NonPluginEntryModel;
-import org.eclipse.update.core.model.PluginEntryModel;
-import org.eclipse.update.core.model.URLEntryModel;
-
-/**
- * An example feature parser. It handles features packaged as
- * build zip's using the format used for integration and stable builds
- * posted on the downloads pages at www.eclipse.org
- * </p>
- * @since 2.0
- */
-
-public class BuildZipFeatureParser {
-
- private BuildZipFeatureFactory factory;
- private BuildZipPluginParser pluginParser;
-
- public BuildZipFeatureParser(BuildZipFeatureFactory factory) {
- this.factory = factory;
- }
-
- public FeatureModel parse(BuildZipFeatureContentProvider cp) throws Exception {
- return parseFeature(cp);
- }
-
- private FeatureModel parseFeature(BuildZipFeatureContentProvider cp) throws Exception {
-
- // get reference to the build manifest
- ContentReference manifestRef = cp.getFeatureBuildManifest();
- InputStream is = manifestRef.getInputStream();
-
- // load buildmanifest.properties
- Properties manifest = new Properties();
- try {
- manifest.load(is);
- } finally {
- if (is!=null) try { is.close(); } catch(IOException e) {}
- }
-
- // populate feature model
- FeatureModel feature = factory.createFeatureModel();
- parseFeatureEntry(cp, feature, manifest);
-
- // parse plugin entries
- parsePluginEntries(cp, feature, manifest);
-
- // parse non-plugin entries
- parseNonPluginEntries(cp, feature, manifest);
-
- // unpack feature entry content
- cp.unpackFeatureEntryContent(feature, null/*IProgressMonitor*/);
-
- return feature;
- }
-
- private void parseFeatureEntry(BuildZipFeatureContentProvider cp, FeatureModel feature, Properties manifest) throws Exception {
-
- // parse out build zip file name. It is assumed to be in the
- // form <package identifier>-<build date>-<target platform>.zip,
- // where
- // <package identifier> is hyphen (-) separaterd token list
- // <build date> is single all-numeric token
- // <target platform> is hyphen (-) separaterd token list
-
- String pkgId = "";
- String target = "";
- String build = "";
- String state = "ID";
- boolean firstToken = true;
- String zipName = URLDecoder.decode(cp.getURL().getFile());
- int ix = zipName.lastIndexOf("/");
- if (ix != -1)
- zipName = zipName.substring(ix+1);
- if (zipName.endsWith(".zip")) {
- zipName = zipName.substring(0,zipName.length()-4);
- }
- StringTokenizer tokenizer = new StringTokenizer(zipName,"-",false);
- String token;
- while(tokenizer.hasMoreTokens()) {
- token = tokenizer.nextToken();
- try {
- Long.parseLong(token);
- state = "TARGET";
- target = "";
- firstToken = true;
- build = token+".0.0";
- } catch (NumberFormatException e) {
- if (state.equals("ID")) {
- pkgId += (firstToken ? "" : " ") + token;
- } else {
- target += (firstToken ? "" : " ") + token;
- }
- firstToken = false;
- }
- }
-
- // generate base feature attributes
- feature.setFeatureIdentifier(pkgId.replace(' ','.'));
- feature.setFeatureVersion(build);
- feature.setLabel(pkgId.substring(0,1).toUpperCase() + pkgId.substring(1) + " for " + target);
- feature.setProvider("www.eclipse.org");
- feature.setImageURLString("splash/splash_full.bmp");
- feature.setOS(target.replace(' ','-'));
-
- // add description
- URLEntryModel description = factory.createURLEntryModel();
- description.setURLString("readme/readme.html");
- description.setAnnotation("x");
- feature.setDescriptionModel(description);
-
- // add license
- URLEntryModel license = factory.createURLEntryModel();
- license.setURLString("about.html");
- license.setAnnotation("You must view the full license by following the \"License\" link in the feature preview.\nSelecting \"Accept\" indicates that you have viewed and accepted the feature license.");
- feature.setLicenseModel(license);
-
- // add copyright
- URLEntryModel copyright = factory.createURLEntryModel();
- copyright.setURLString("notice.html");
- copyright.setAnnotation("x");
- feature.setCopyrightModel(copyright);
- }
-
- private void parsePluginEntries(BuildZipFeatureContentProvider cp, FeatureModel feature, Properties manifest) throws Exception {
-
- Enumeration entries = manifest.keys();
- String plugin;
- String pluginId;
- String pluginVersion;
- String pluginBuildVersion;
- PluginEntryModel pluginEntry;
- while(entries.hasMoreElements()) {
- plugin = (String) entries.nextElement();
- if (plugin.startsWith("plugin@")) {
- pluginId = plugin.substring(7);
- pluginBuildVersion = manifest.getProperty(plugin);
- if (pluginBuildVersion.equals("HEAD")) {
- String featureVersion = feature.getFeatureVersion();
- int ix = featureVersion.indexOf(".");
- String featureMajor = ix==-1 ? featureVersion : featureVersion.substring(0,ix);
- pluginBuildVersion += "-" + featureMajor;
- }
- pluginEntry = factory.createPluginEntryModel();
- pluginVersion = parsePluginVersionInManifest(cp, pluginId, pluginEntry);
- if (pluginVersion != null) {
- pluginEntry.setPluginIdentifier(pluginId);
- pluginEntry.setPluginVersion((new PluginVersionIdentifier(pluginVersion)).toString()+"."+pluginBuildVersion);
- feature.addPluginEntryModel(pluginEntry);
- }
- }
- }
- }
-
- private void parseNonPluginEntries(BuildZipFeatureContentProvider cp, FeatureModel feature, Properties manifest) throws Exception {
- // NonPluginEntryModel nonPluginEntry = factory.createNonPluginEntryModel();
- // nonPluginEntry.setIdentifier("root");
- // feature.addNonPluginEntryModel(nonPluginEntry);
- }
-
- private String parsePluginVersionInManifest(BuildZipFeatureContentProvider cp, String pluginId, PluginEntryModel pluginEntry) {
-
- if (pluginParser == null)
- pluginParser = new BuildZipPluginParser();
-
- InputStream is = null;
- ContentReference pluginManifest;
- try {
- // try plugin.xml
- pluginManifest = cp.getPluginManifest(pluginId, false);
- is = pluginManifest.getInputStream();
- return pluginParser.parse(is);
- } catch (Exception e) {
- try {
- // retry with feature.xml
- pluginManifest = cp.getPluginManifest(pluginId, true);
- is = pluginManifest.getInputStream();
- String result = pluginParser.parse(is);
- pluginEntry.isFragment(true);
- return result;
- } catch (Exception e2) {
- return null;
- }
- } finally {
- if (is != null) try { is.close(); } catch (IOException e) {}
- }
- }
-}
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipPluginParser.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipPluginParser.java
deleted file mode 100644
index 90e1d1f..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipPluginParser.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.eclipse.update.examples.buildzip;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.xerces.parsers.SAXParser;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * Parse default feature.xml
- */
-
-public class BuildZipPluginParser extends DefaultHandler {
-
- private SAXParser parser;
- private String version;
-
- private static final String PLUGIN = "plugin";
- private static final String FRAGMENT = "fragment";
- private static final String ID = "id";
- private static final String VERSION = "version";
-
- private class ParseCompleteException extends SAXException {
- public ParseCompleteException(String arg0) {
- super(arg0);
- }
- }
-
- /**
- * Constructor for DefaultFeatureParser
- */
- public BuildZipPluginParser() {
- super();
- this.parser = new SAXParser();
- this.parser.setContentHandler(this);
- }
-
- /**
- * @since 2.0
- */
- public synchronized String parse(InputStream in) throws SAXException, IOException {
- try {
- version = null;
- parser.parse(new InputSource(in));
- } catch(ParseCompleteException e) {
- }
- return version;
- }
-
- /**
- * @see DefaultHandler#startElement(String, String, String, Attributes)
- */
- public void startElement(String uri, String localName,String qName, Attributes attributes) throws SAXException {
-
- String tag = localName.trim();
-
- if (tag.equalsIgnoreCase(PLUGIN)) {
- processPlugin(attributes);
- return;
- }
-
- if (tag.equalsIgnoreCase(FRAGMENT)) {
- processPlugin(attributes);
- return;
- }
- }
-
- /**
- * process plugin entry info
- */
- private void processPlugin(Attributes attributes) throws ParseCompleteException {
- version = attributes.getValue("version");
- throw new ParseCompleteException("");
- }
-}
-
-
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipSiteContentProvider.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipSiteContentProvider.java
deleted file mode 100644
index 05ec032..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipSiteContentProvider.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.eclipse.update.examples.buildzip;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.SiteContentProvider;
-
-public class BuildZipSiteContentProvider extends SiteContentProvider {
-
- /**
- * Constructor for SiteContentProvider.
- */
- public BuildZipSiteContentProvider(URL url) {
- super(url);
- }
-
- /*
- * @see ISiteContentProvider#getArchiveReference(String)
- */
- public URL getArchiveReference(String id) throws CoreException {
- // build zip features do not have associated archives
- // the zip file also contains the archives files
- return null;
- }
-
-}
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipSiteFactory.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipSiteFactory.java
deleted file mode 100644
index c59ad05..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/BuildZipSiteFactory.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.eclipse.update.examples.buildzip;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.BaseSiteFactory;
-import org.eclipse.update.core.ISite;
-import org.eclipse.update.core.Site;
-import org.eclipse.update.core.model.FeatureReferenceModel;
-import org.eclipse.update.core.model.InvalidSiteTypeException;
-import org.eclipse.update.core.model.CategoryModel;
-
-public class BuildZipSiteFactory extends BaseSiteFactory {
-
- /*
- * @see ISiteFactory#createSite(URL)
- */
- public ISite createSite(URL url) throws CoreException,InvalidSiteTypeException {
-
- Site site = null;
-
- // create site and add category
- site = (Site) createSiteMapModel();
- CategoryModel category = createSiteCategoryModel();
- category.setName("eclipse-builds");
- category.setLabel("Eclipse Builds");
- site.addCategoryModel(category);
-
- // set content provider
- BuildZipSiteContentProvider contentProvider = new BuildZipSiteContentProvider(url);
- site.setSiteContentProvider(contentProvider);
-
- // get all matching zip files on the site
- FileFilter filter = new FileFilter() {
- public boolean accept(File file) {
- if (file.getName().endsWith(".zip")) {
- try {
- ZipFile zip = new ZipFile(file);
- ZipEntry entry = zip.getEntry("eclipse/buildmanifest.properties");
- if (entry == null)
- return false;
- else
- return true;
- } catch (IOException e) {
- return false;
- }
- } else
- return false;
- }
- };
- File file = new File(URLDecoder.decode(url.getFile()));
- File[] zips = file.listFiles(filter);
-
- // create a reference for each matching zip
- FeatureReferenceModel ref = null;
- for (int i = 0; zips != null && i < zips.length; i++) {
- ref = createFeatureReferenceModel();
- ref.setType("org.eclipse.update.examples.zip");
- ref.setSiteModel(site);
- ref.setURLString("file:" + zips[i].getAbsolutePath());
- ref.setCategoryNames(new String[] { "eclipse-builds" });
- site.addFeatureReferenceModel(ref);
- }
- try {
- site.resolve(url, null); // resolve any URLs relative to the site
- } catch (MalformedURLException e){
- throw Utilities.newCoreException("",e);
- }
-
- return site;
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/DefaultModelWriter.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/DefaultModelWriter.java
deleted file mode 100644
index 60b1eef..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/DefaultModelWriter.java
+++ /dev/null
@@ -1,228 +0,0 @@
-package org.eclipse.update.examples.buildzip;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.io.OutputStream;
-import java.io.PrintWriter;
-
-import org.eclipse.update.core.model.*;
-
-/**
- * Write standard feature manifest (feature.xml) from model.
- * </p>
- * @since 2.0
- */
-
-public class DefaultModelWriter {
-
- private FeatureModel feature;
-
- /**
- * @since 2.0
- */
- public DefaultModelWriter(FeatureModel feature) {
- this.feature = feature;
- }
-
- /**
- * @since 2.0
- */
- public void writeFeatureManifest(OutputStream os) {
- PrintWriter w = new PrintWriter(os);
- writeFeature(w,0,feature);
- w.flush();
- }
-
- private void writeFeature(PrintWriter w, int level, FeatureModel feature) {
- if (feature == null) return;
-
- String in = getIndent(level);
- w.println(in+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
-
- w.println(in+"<feature");
- if (feature.getFeatureIdentifier()!=null)
- w.println(in+" "+"id=\""+feature.getFeatureIdentifier()+"\"");
- if (feature.getFeatureVersion()!=null)
- w.println(in+" "+"version=\""+feature.getFeatureVersion()+"\"");
- if (feature.getLabelNonLocalized()!=null)
- w.println(in+" "+"label=\""+feature.getLabelNonLocalized()+"\"");
- if (feature.getProviderNonLocalized()!=null)
- w.println(in+" "+"provider-name=\""+feature.getProviderNonLocalized()+"\"");
- if (feature.getImageURLString()!=null)
- w.println(in+" "+"image=\""+feature.getImageURLString()+"\"");
- if (feature.getOS()!=null)
- w.println(in+" "+"os=\""+feature.getOS()+"\"");
- if (feature.getWS()!=null)
- w.println(in+" "+"ws=\""+feature.getWS()+"\"");
- if (feature.getNL()!=null)
- w.println(in+" "+"nl=\""+feature.getNL()+"\"");
- if (feature.getApplication()!=null)
- w.println(in+" "+"application=\""+feature.getApplication()+"\"");
- w.println(in+" "+">");
-
- writeDescription(w, level+1, feature.getDescriptionModel());
- writeCopyright(w, level+1, feature.getCopyrightModel());
- writeLicense(w, level+1, feature.getLicenseModel());
- writeURLs(w, level+1, feature);
- writePrereqs(w, level+1, feature);
- writePluginEntries(w, level+1, feature);
- writeNonPluginEntries(w, level+1, feature);
-
- w.println("");
- w.println(in+"</feature>");
- }
-
- private void writeDescription(PrintWriter w, int level, URLEntryModel ue) {
- writeDescriptionEntry(w,level, ue, "description");
- }
-
- private void writeCopyright(PrintWriter w, int level, URLEntryModel ue) {
- writeDescriptionEntry(w,level, ue, "copyright");
- }
-
- private void writeLicense(PrintWriter w, int level, URLEntryModel ue) {
- writeDescriptionEntry(w,level, ue, "license");
- }
-
- private void writeDescriptionEntry(PrintWriter w, int level, URLEntryModel ue, String tag) {
- if (ue == null) return;
- String url = ue.getURLString();
- String txt = ue.getAnnotationNonLocalized();
- if (url==null && txt==null) return;
-
- String in = getIndent(level);
- w.println("");
- if (url==null)
- w.println(in+"<"+tag+">");
- else {
- w.print(in+"<"+tag+" url=\""+ue.getURLString()+"\"");
- if (txt==null)
- w.println("/>");
- else
- w.println(">");
- }
- if (txt!=null) {
- w.println(in + txt);
- w.println(in+"</"+tag+">");
- }
- }
-
- private void writeURLs(PrintWriter w, int level, FeatureModel feature) {
- URLEntryModel update = feature.getUpdateSiteEntryModel();
- URLEntryModel[] discovery = feature.getDiscoverySiteEntryModels();
- if (update == null && (discovery == null || discovery.length==0)) return;
-
- String in = getIndent(level);
- String in2 = getIndent(level+1);
- w.println("");
- w.println(in+"<url>");
-
- if (update != null) {
- w.println(in2+"<update");
- if (update.getURLString()!=null)
- w.println(in2+" "+"url=\""+update.getURLString()+"\"");
- if (update.getAnnotationNonLocalized()!=null)
- w.println(in2+" "+"label=\""+update.getAnnotationNonLocalized()+"\"");
- w.println(in2+" "+"/>");
- }
-
- for (int i=0; discovery!=null && i<discovery.length; i++) {
- w.println(in2+"<discovery");
- if (discovery[i].getURLString()!=null)
- w.println(in2+" "+"url=\""+discovery[i].getURLString()+"\"");
- if (discovery[i].getAnnotationNonLocalized()!=null)
- w.println(in2+" "+"label=\""+discovery[i].getAnnotationNonLocalized()+"\"");
- w.println(in2+" "+"/>");
- }
-
- w.println(in+"</url>");
- }
-
- private void writePrereqs(PrintWriter w, int level, FeatureModel feature) {
- ImportModel[] imp = feature.getImportModels();
- if (imp == null || imp.length == 0) return;
-
- String in = getIndent(level);
- String in2 = getIndent(level+1);
- w.println("");
- w.println(in+"<requires>");
-
- for (int i=0; imp!=null && i<imp.length; i++) {
- w.println(in2+"<import");
- if (imp[i].getPluginIdentifier()!=null)
- w.println(in2+" "+"plugin=\""+imp[i].getPluginIdentifier()+"\"");
- if (imp[i].getPluginVersion()!=null)
- w.println(in2+" "+"version=\""+imp[i].getPluginVersion()+"\"");
- if (imp[i].getMatchingRuleName()!=null)
- w.println(in2+" "+"match=\""+imp[i].getMatchingRuleName()+"\"");
- w.println(in2+" "+"/>");
- }
-
- w.println(in+"</requires>");
- }
-
- private void writePluginEntries(PrintWriter w, int level, FeatureModel feature) {
- PluginEntryModel[] plugin = feature.getPluginEntryModels();
- if (plugin == null || plugin.length == 0) return;
-
- String in = getIndent(level);
- w.println("");
-
- for (int i=0; i<plugin.length; i++) {
- w.println(in+"<plugin");
- if (plugin[i].getPluginIdentifier()!=null)
- w.println(in+" "+"id=\""+plugin[i].getPluginIdentifier()+"\"");
- if (plugin[i].getPluginVersion()!=null)
- w.println(in+" "+"version=\""+plugin[i].getPluginVersion()+"\"");
- if (plugin[i].isFragment())
- w.println(in+" "+"fragment=\""+plugin[i].isFragment()+"\"");
- if (plugin[i].getOS()!=null)
- w.println(in+" "+"os=\""+plugin[i].getOS()+"\"");
- if (plugin[i].getWS()!=null)
- w.println(in+" "+"ws=\""+plugin[i].getWS()+"\"");
- if (plugin[i].getNL()!=null)
- w.println(in+" "+"nl=\""+plugin[i].getNL()+"\"");
- if (plugin[i].getDownloadSize()!=ContentEntryModel.UNKNOWN_SIZE)
- w.println(in+" "+"download-size=\""+plugin[i].getDownloadSize()+"\"");
- if (plugin[i].getInstallSize()!=ContentEntryModel.UNKNOWN_SIZE)
- w.println(in+" "+"install-size=\""+plugin[i].getInstallSize()+"\"");
- w.println(in+" "+"/>");
- }
- }
-
- private void writeNonPluginEntries(PrintWriter w, int level, FeatureModel feature) {
- NonPluginEntryModel[] data = feature.getNonPluginEntryModels();
- if (data == null || data.length == 0) return;
-
- String in = getIndent(level);
- w.println("");
-
- for (int i=0; i<data.length; i++) {
- w.println(in+"<data");
- if (data[i].getIdentifier()!=null)
- w.println(in+" "+"id=\""+data[i].getIdentifier()+"\"");
- if (data[i].getOS()!=null)
- w.println(in+" "+"os=\""+data[i].getOS()+"\"");
- if (data[i].getWS()!=null)
- w.println(in+" "+"ws=\""+data[i].getWS()+"\"");
- if (data[i].getNL()!=null)
- w.println(in+" "+"nl=\""+data[i].getNL()+"\"");
- if (data[i].getDownloadSize()!=ContentEntryModel.UNKNOWN_SIZE)
- w.println(in+" "+"download-size=\""+data[i].getDownloadSize()+"\"");
- if (data[i].getInstallSize()!=ContentEntryModel.UNKNOWN_SIZE)
- w.println(in+" "+"install-size=\""+data[i].getInstallSize()+"\"");
- w.println(in+" "+"/>");
- }
- }
-
-
- private String getIndent(int level) {
- String indent = "";
- for (int i=0; i<level; i++)
- indent += " ";
- return indent;
- }
-}
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/Test.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/Test.java
deleted file mode 100644
index 1e189df..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/Test.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.eclipse.update.examples.buildzip;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.net.URL;
-
-import org.eclipse.update.core.*;
-
-/**
- * unit test harness
- */
-
-public class Test {
-
- public static void main(String[] args) {
-
- try {
- URL url = new URL("file:d:/downloads/eclipse 2.0/integration-eclipse-SDK-20020109-win32.zip");
- BuildZipFeatureFactory factory = new BuildZipFeatureFactory();
- Feature feature = (Feature) factory.createFeature(url,null/*ISite*/);
- DefaultModelWriter w = new DefaultModelWriter(feature);
- w.writeFeatureManifest(System.out);
-
- System.out.println("");
- System.out.println("Feature entry references");
- ContentReference[] refs = feature.getFeatureContentProvider().getFeatureEntryContentReferences(null);
- for (int i=0; i< refs.length; i++) {
- System.out.println(" "+refs[i].getIdentifier());
- }
-
- System.out.println("");
- System.out.println("Plug-in entry references");
- IPluginEntry[] entry = feature.getPluginEntries();
- refs = feature.getFeatureContentProvider().getPluginEntryContentReferences(entry[0], null);
- for (int i=0; i< refs.length; i++) {
- System.out.println(" "+refs[i].getIdentifier());
- }
-
- System.out.println("");
- System.out.println("Non-plug-in entry references");
- INonPluginEntry[] data = feature.getNonPluginEntries();
- refs = feature.getFeatureContentProvider().getNonPluginEntryArchiveReferences(data[0], null);
- for (int i=0; i< refs.length; i++) {
- System.out.println(" "+refs[i].getIdentifier());
- }
-
- System.out.println("Done ...");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-}
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/java.page.jpage b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/java.page.jpage
deleted file mode 100644
index 8b3ca30..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/buildzip/java.page.jpage
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/freeform/FreeFormSiteContentProvider.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/freeform/FreeFormSiteContentProvider.java
deleted file mode 100644
index 2cbeab4..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/freeform/FreeFormSiteContentProvider.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.eclipse.update.examples.freeform;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.update.core.SiteContentProvider;
-
-public class FreeFormSiteContentProvider extends SiteContentProvider {
-
- /**
- * Constructor for SiteContentProvider.
- */
- public FreeFormSiteContentProvider(URL url) {
- super(url);
- }
-
- /*
- * @see ISiteContentProvider#getArchiveReference(String)
- */
- public URL getArchiveReference(String id) throws CoreException {
- try {
- return new URL(getURL(),id);
- } catch(MalformedURLException e) {
- throw newCoreException("Unable to return archive URL",e);
- }
- }
-
- private CoreException newCoreException(String s, Throwable e) throws CoreException {
- return new CoreException(new Status(IStatus.ERROR,"org.eclipse.update.examples",0,s,e));
- }
-
-}
diff --git a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/freeform/FreeFormSiteFactory.java b/update/org.eclipse.update.examples/src/org/eclipse/update/examples/freeform/FreeFormSiteFactory.java
deleted file mode 100644
index cb3c7fc..0000000
--- a/update/org.eclipse.update.examples/src/org/eclipse/update/examples/freeform/FreeFormSiteFactory.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.eclipse.update.examples.freeform;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.BaseSiteFactory;
-import org.eclipse.update.core.ISite;
-import org.eclipse.update.core.Site;
-import org.eclipse.update.core.model.InvalidSiteTypeException;
-import org.eclipse.update.core.model.URLEntryModel;
-
-public class FreeFormSiteFactory extends BaseSiteFactory {
-
- /*
- * @see ISiteFactory#createSite(URL)
- */
- public ISite createSite(URL url)
- throws CoreException, InvalidSiteTypeException {
-
- // Create site
- Site site = null;
- InputStream is = null;
- try {
- is = url.openStream();
- site = (Site) parseSite(is);
-
- URLEntryModel realSiteRef = site.getDescriptionModel();
- if (realSiteRef == null)
- throw Utilities.newCoreException(
- "Unable to obtain update site reference",
- null);
- String siteURLString = realSiteRef.getURLString();
- if (siteURLString == null)
- throw Utilities.newCoreException(
- "Unable to obtain update site reference",
- null);
- URL siteURL = new URL(siteURLString);
- FreeFormSiteContentProvider contentProvider =
- new FreeFormSiteContentProvider(siteURL);
- site.setSiteContentProvider(contentProvider);
- site.resolve(siteURL, null); // resolve any URLs relative to the site
-
- } catch (MalformedURLException e){
- throw Utilities.newCoreException("Unable to create URL",e);
- } catch (IOException e){
- throw Utilities.newCoreException("Unable to access URL",e);
- } finally {
- if (is != null)
- try {
- is.close();
- } catch (IOException e) {
- }
- }
-
- return site;
- }
-
- /*
- * @see SiteModelFactory#canParseSiteType(String)
- */
- public boolean canParseSiteType(String type) {
- return type != null
- && type.equals("org.eclipse.update.examples.site.freeform");
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/.classpath b/update/org.eclipse.update.tests.core/.classpath
deleted file mode 100644
index 98c6705..0000000
--- a/update/org.eclipse.update.tests.core/.classpath
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/"/>
- <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
- <classpathentry kind="src" path="/org.junit"/>
- <classpathentry kind="src" path="/org.apache.xerces"/>
- <classpathentry kind="src" path="/org.eclipse.core.resources"/>
- <classpathentry kind="src" path="/org.eclipse.update.core"/>
- <classpathentry kind="src" path="/org.eclipse.help"/>
- <classpathentry kind="src" path="/org.eclipse.core.boot"/>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/update/org.eclipse.update.tests.core/.cvsignore b/update/org.eclipse.update.tests.core/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/update/org.eclipse.update.tests.core/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/.project b/update/org.eclipse.update.tests.core/.project
deleted file mode 100644
index cf6e950..0000000
--- a/update/org.eclipse.update.tests.core/.project
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.update.tests.core</name>
- <comment></comment>
- <projects>
- <project>org.apache.xerces</project>
- <project>org.eclipse.core.boot</project>
- <project>org.eclipse.core.resources</project>
- <project>org.eclipse.core.runtime</project>
- <project>org.eclipse.help</project>
- <project>org.eclipse.update.core</project>
- <project>org.junit</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ui.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ui.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.ui.PluginNature</nature>
- <nature>org.eclipse.team.cvs.core.cvsnature</nature>
- </natures>
-</projectDescription>
diff --git a/update/org.eclipse.update.tests.core/about.html b/update/org.eclipse.update.tests.core/about.html
deleted file mode 100644
index 768324e..0000000
--- a/update/org.eclipse.update.tests.core/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>11th December, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/build.properties b/update/org.eclipse.update.tests.core/build.properties
deleted file mode 100644
index a403b4b..0000000
--- a/update/org.eclipse.update.tests.core/build.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-source.updatetests.jar=src/
-bin.includes=*.jar,about.html,test.xml,plugin.xml,data/,webserver/
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/features/feature3/feature.xml b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/features/feature3/feature.xml
deleted file mode 100644
index 4122e82..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/features/feature3/feature.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.update.core.tests.feature3" image="feature1.gif" label="Third Feature" provider-name="Smart Company" version="1.0.0" >
- <description>Description</description>
- <copyright>copyright</copyright>
- <license>license</license>
- <url>
- <update label="URL to update the feature" url="http://www.eclipse.org/path/feature1/"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
- <plugin download-size="1500" id="org.eclipse.update.core.tests.feature1.plugin1" install-size="1000" fragment="false" nl="us" os="OS_WIN32" version="3.5.6" ws="WS_WIN32"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/Pde_core.jar b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/Pde_core.jar
deleted file mode 100644
index f107217..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/Pde_core.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/help.jar b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/help.jar
deleted file mode 100644
index 7584f66..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/help.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/junit_3.7.jar b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/junit_3.7.jar
deleted file mode 100644
index 67587b2..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/junit_3.7.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
deleted file mode 100644
index 7f05d82..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin name="JUnit Test Framework" id="org.eclipse.update.core.tests.feature1.plugin1" version="3.5.6" vendor-name="junit.org">
- <runtime>
- <library name="junit.jar">
- <export name="*"/>
- </library>
- </runtime>
-</plugin>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/org.eclipse.update.plugin1_1.1.1/src.jar b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
deleted file mode 100644
index 2d4d609..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/feature3/feature.xml b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/feature3/feature.xml
deleted file mode 100644
index c7d9226..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/feature3/feature.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.update.core.tests.feature3" image="feature1.gif" label="Third Feature" provider-name="Smart Company" version="1.0.0" >
- <description>Description</description>
- <copyright>copyright</copyright>
- <license>license</license>
- <url>
- <update label="URL to update the feature" url="http://www.eclipse.org/path/feature1/"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
- <plugin download-size="1500" id="org.eclipse.update.plugin1" install-size="1000" fragment="false" nl="us" os="OS_WIN32" version="1.1.1" ws="WS_WIN32"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/helpFeature.jar b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/helpFeature.jar
deleted file mode 100644
index 9809713..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/helpFeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/org.eclipse.pde.feature_1.0.0.jar b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/org.eclipse.pde.feature_1.0.0.jar
deleted file mode 100644
index 844a4d7..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/features/org.eclipse.pde.feature_1.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/img/top_titlsm.gif b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/img/top_titlsm.gif
deleted file mode 100644
index 3917bb6..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/img/top_titlsm.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/img/wel_ml.jpg b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/img/wel_ml.jpg
deleted file mode 100644
index 01e33df..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/img/wel_ml.jpg
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/siteInfo.html b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/siteInfo.html
deleted file mode 100644
index b065aa3..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/info/siteInfo.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-</head>
- <body>
-<img src="img/top_titlsm.gif" alt="" width="460" height="50">
-<br>
-<br>
- It started with Smalltalk<br>
- OTI has been building tools for platform-independent OO development since
- 1988. Our ENVY® technology first brought collaborative software development,
- version management and shared repositories to Smalltalk. IBM is one of
-many companies to license ENVY, which continues to be the foundation of
-VisualAge® Smalltalk.<br>
-<br>
-<br>
-<br>
- Next came Java™<br>
- Because of our expertise in OO technology, IBM turned to OTI for a next-generation
- development environment for Java. The result is VisualAge for Java, which
- continues to win awards for its innovative IDE and team support. InfoWorld
- has chosen VisualAge for Java as development tool of the year - year after
- year after year!<br>
-<br>
-<br>
-<br>
- Then pervasive computing<br>
- OTI continues its development of IBM's VisualAge Micro Edition, a state-of-the-art
- platform for collaborative development of embedded applications and systems
- that are very lean. As the steady stream of press releases attests, VisualAge
- Micro Edition is already licensed to the leading microchip manufacturers,
- microkernel developers, and producers of handheld and consumer devices.<br>
-<br>
-<br>
-<br>
- Now it's Eclipse<br>
- OTI has built the next generation IBM application development tools platform.
- Eclipse is a kind of universal tool platform - an open extensible IDE for
- anything and nothing in particular. The real value comes from tool plug-ins
- that "teach" Eclipse how to work with things - java files, web content,
-graphics, video - almost anything you can imagine. Eclipse allows you to
-independently develop tools that integrate with other people's tools so
-seamlessly you won't know where one tool ends and another starts. The IBM
-supported version of this technology, WebSphere Studio Workbench, will be
-the core of the next generation of IBM and IBM Business Partner e-business
-tools optimized for the WebSphere software platform.<br>
-<br>
-<br>
-<br>
- So what's next?<br>
- OTI continues to deliver object-oriented technology that scales across
- platforms, across teams and across project size. From a mainframe to a
-watch - we're closing in on that vision.<br>
-<br>
-<img src="img/wel_ml.jpg" width="460" height="460" alt="">
-<br>
-<br>
-<br>
-<br>
-<br>
-<br>
-</body>
-</html>
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/Pde_core.jar b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/Pde_core.jar
deleted file mode 100644
index f107217..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/Pde_core.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/help.jar b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/help.jar
deleted file mode 100644
index 7584f66..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/help.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/junit_3.7.jar b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/junit_3.7.jar
deleted file mode 100644
index 67587b2..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/junit_3.7.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
deleted file mode 100644
index 7f05d82..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin name="JUnit Test Framework" id="org.eclipse.update.core.tests.feature1.plugin1" version="3.5.6" vendor-name="junit.org">
- <runtime>
- <library name="junit.jar">
- <export name="*"/>
- </library>
- </runtime>
-</plugin>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/org.eclipse.update.plugin1_1.1.1/src.jar b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
deleted file mode 100644
index 2d4d609..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/site.xml b/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/site.xml
deleted file mode 100644
index c2df671..0000000
--- a/update/org.eclipse.update.tests.core/data/ExecutableFeaturePackagedSite/data2/site.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.core.file">
-<description url="info/siteInfo.html"/>
- <feature url="features/helpFeature.jar" type="org.eclipse.update.core.packaged">
- <category name="eclipse/UML"/>
- </feature>
- <feature url="features/org.eclipse.pde.feature_1.0.0.jar" type="org.eclipse.update.core.packaged">
- <category name="eclipse/J2EE"/>
- </feature>
- <feature url="features/feature3/">
- <category name="eclipse"/>
- </feature>
- <archive path="plugins/org.eclipse.help_1.0.0.jar" url="plugins/help.jar"/>
- <archive path="plugins/org.eclipse.pde.core_1.0.0.jar" url="plugins/Pde_core.jar"/>
- <archive path="plugins/org.junit_3.5.0.jar" url="plugins/junit_3.7.jar"/>
- <archive path="plugins/org.eclipse.update.plugin1_1.1.1.jar" url="plugins/org.eclipse.update.plugin1_1.1.1"/>
- <category-def label="IBM WSAD Tools" name="eclipse"/>
- <category-def label="J2EE tools" name="eclipse/J2EE"/>
- <category-def label="EJB Tools" name="eclipse/J2EE/EJB"/>
- <category-def label="UML tools" name="eclipse/UML"/>
- <category-def label="Messaging Tools" name="B2B"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/FTPLikeSite/site.xml b/update/org.eclipse.update.tests.core/data/FTPLikeSite/site.xml
deleted file mode 100644
index da62e2e..0000000
--- a/update/org.eclipse.update.tests.core/data/FTPLikeSite/site.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.tests.core.ftp">
- <feature url="features/feature3/features2.jarfile"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site1/features/feature3/feature.xml b/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site1/features/feature3/feature.xml
deleted file mode 100644
index 7832ef8..0000000
--- a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site1/features/feature3/feature.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.update.core.tests.feature3" image="feature1.gif" label="Third Feature" provider-name="Smart Company" version="1.0.0">
- <description>Description</description>
- <copyright>copyright</copyright>
- <license>license</license>
- <url>
- <update label="URL to update the feature" url="http://www.eclipse.org/path/feature1/"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
- <plugin download-size="1500" id="org.eclipse.update.plugin1" install-size="1000" fragment="false" nl="us" os="OS_WIN32" version="1.1.1" ws="WS_WIN32"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site1/site.xml b/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site1/site.xml
deleted file mode 100644
index 486d119..0000000
--- a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site1/site.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.core.file">
- <feature url="features/feature3" type="org.eclipse.update.tests.core.feature1"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site2/features/feature3/features2.jarfile b/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site2/features/feature3/features2.jarfile
deleted file mode 100644
index e8d004d..0000000
--- a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site2/features/feature3/features2.jarfile
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site2/site.xml b/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site2/site.xml
deleted file mode 100644
index fb5fe0e..0000000
--- a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site2/site.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.core.file">
- <feature url="features/feature3/features2.jarfile" type="org.eclipse.update.core.packaged"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site3/features/feature3/features2.jarfile b/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site3/features/feature3/features2.jarfile
deleted file mode 100644
index e8d004d..0000000
--- a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site3/features/feature3/features2.jarfile
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site3/site.xml b/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site3/site.xml
deleted file mode 100644
index daf372d..0000000
--- a/update/org.eclipse.update.tests.core/data/FeatureTypeExamples/site3/site.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.core.file">
- <feature url="features/feature3/features2.jarfile" type="org.eclipse.update.core.unknowntype.jar"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/features space/helpFeature.jar b/update/org.eclipse.update.tests.core/data/Site with space/features space/helpFeature.jar
deleted file mode 100644
index 9809713..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/features space/helpFeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/features space/space feature.jar b/update/org.eclipse.update.tests.core/data/Site with space/features space/space feature.jar
deleted file mode 100644
index e5cb2d5..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/features space/space feature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/info/img/top_titlsm.gif b/update/org.eclipse.update.tests.core/data/Site with space/info/img/top_titlsm.gif
deleted file mode 100644
index 3917bb6..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/info/img/top_titlsm.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/info/img/wel_ml.jpg b/update/org.eclipse.update.tests.core/data/Site with space/info/img/wel_ml.jpg
deleted file mode 100644
index 01e33df..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/info/img/wel_ml.jpg
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/info/siteInfo.html b/update/org.eclipse.update.tests.core/data/Site with space/info/siteInfo.html
deleted file mode 100644
index b065aa3..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/info/siteInfo.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-</head>
- <body>
-<img src="img/top_titlsm.gif" alt="" width="460" height="50">
-<br>
-<br>
- It started with Smalltalk<br>
- OTI has been building tools for platform-independent OO development since
- 1988. Our ENVY® technology first brought collaborative software development,
- version management and shared repositories to Smalltalk. IBM is one of
-many companies to license ENVY, which continues to be the foundation of
-VisualAge® Smalltalk.<br>
-<br>
-<br>
-<br>
- Next came Java™<br>
- Because of our expertise in OO technology, IBM turned to OTI for a next-generation
- development environment for Java. The result is VisualAge for Java, which
- continues to win awards for its innovative IDE and team support. InfoWorld
- has chosen VisualAge for Java as development tool of the year - year after
- year after year!<br>
-<br>
-<br>
-<br>
- Then pervasive computing<br>
- OTI continues its development of IBM's VisualAge Micro Edition, a state-of-the-art
- platform for collaborative development of embedded applications and systems
- that are very lean. As the steady stream of press releases attests, VisualAge
- Micro Edition is already licensed to the leading microchip manufacturers,
- microkernel developers, and producers of handheld and consumer devices.<br>
-<br>
-<br>
-<br>
- Now it's Eclipse<br>
- OTI has built the next generation IBM application development tools platform.
- Eclipse is a kind of universal tool platform - an open extensible IDE for
- anything and nothing in particular. The real value comes from tool plug-ins
- that "teach" Eclipse how to work with things - java files, web content,
-graphics, video - almost anything you can imagine. Eclipse allows you to
-independently develop tools that integrate with other people's tools so
-seamlessly you won't know where one tool ends and another starts. The IBM
-supported version of this technology, WebSphere Studio Workbench, will be
-the core of the next generation of IBM and IBM Business Partner e-business
-tools optimized for the WebSphere software platform.<br>
-<br>
-<br>
-<br>
- So what's next?<br>
- OTI continues to deliver object-oriented technology that scales across
- platforms, across teams and across project size. From a mainframe to a
-watch - we're closing in on that vision.<br>
-<br>
-<img src="img/wel_ml.jpg" width="460" height="460" alt="">
-<br>
-<br>
-<br>
-<br>
-<br>
-<br>
-</body>
-</html>
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/install/features space/feature3/feature.xml b/update/org.eclipse.update.tests.core/data/Site with space/install/features space/feature3/feature.xml
deleted file mode 100644
index c7d9226..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/install/features space/feature3/feature.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.update.core.tests.feature3" image="feature1.gif" label="Third Feature" provider-name="Smart Company" version="1.0.0" >
- <description>Description</description>
- <copyright>copyright</copyright>
- <license>license</license>
- <url>
- <update label="URL to update the feature" url="http://www.eclipse.org/path/feature1/"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
- <plugin download-size="1500" id="org.eclipse.update.plugin1" install-size="1000" fragment="false" nl="us" os="OS_WIN32" version="1.1.1" ws="WS_WIN32"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/plugins space/Pde_core.jar b/update/org.eclipse.update.tests.core/data/Site with space/plugins space/Pde_core.jar
deleted file mode 100644
index f107217..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/plugins space/Pde_core.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/plugins space/help.jar b/update/org.eclipse.update.tests.core/data/Site with space/plugins space/help.jar
deleted file mode 100644
index 7584f66..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/plugins space/help.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/plugins space/junit_3.7.jar b/update/org.eclipse.update.tests.core/data/Site with space/plugins space/junit_3.7.jar
deleted file mode 100644
index 67587b2..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/plugins space/junit_3.7.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/plugins space/org.eclipse.update.plugin1_1.1.1/plugin.xml b/update/org.eclipse.update.tests.core/data/Site with space/plugins space/org.eclipse.update.plugin1_1.1.1/plugin.xml
deleted file mode 100644
index e01846c..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/plugins space/org.eclipse.update.plugin1_1.1.1/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin name="JUnit Test Framework" id="org.eclipse.update.core.tests.feature1.plugin1" version="3.5.6" vendor-name="junit.org">
- <runtime>
- <library name="junit.jar">
- <export name="*"/>
- </library>
- </runtime>
-</plugin>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/plugins space/org.eclipse.update.plugin1_1.1.1/src.jar b/update/org.eclipse.update.tests.core/data/Site with space/plugins space/org.eclipse.update.plugin1_1.1.1/src.jar
deleted file mode 100644
index 2d4d609..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/plugins space/org.eclipse.update.plugin1_1.1.1/src.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/Site with space/site.xml b/update/org.eclipse.update.tests.core/data/Site with space/site.xml
deleted file mode 100644
index 54928fb..0000000
--- a/update/org.eclipse.update.tests.core/data/Site with space/site.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.core.file">
-<description url="info/siteInfo.html"/>
- <feature url="features space/helpFeature.jar" type="org.eclipse.update.core.packaged">
- <category name="eclipse/UML"/>
- </feature>
- <feature url="features space/space feature.jar" type="org.eclipse.update.core.packaged">
- <category name="eclipse/J2EE"/>
- </feature>
- <feature url="install/features space/feature3/">
- <category name="eclipse"/>
- </feature>
- <archive path="plugins/org.eclipse.help_1.0.0.jar" url="plugins space/help.jar"/>
- <archive path="plugins/org.eclipse.pde.core_1.0.0.jar" url="plugins space/Pde_core.jar"/>
- <archive path="plugins/org.junit_3.5.0.jar" url="plugins space/junit_3.7.jar"/>
- <archive path="plugins/org.eclipse.update.plugin1_1.1.1.jar" url="plugins space/org.eclipse.update.plugin1_1.1.1"/>
- <category-def label="IBM WSAD Tools" name="eclipse"/>
- <category-def label="J2EE tools" name="eclipse/J2EE"/>
- <category-def label="EJB Tools" name="eclipse/J2EE/EJB"/>
- <category-def label="UML tools" name="eclipse/UML"/>
- <category-def label="Messaging Tools" name="B2B"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/SiteTypeExamples/site1/features/feature3/features2.jarfile b/update/org.eclipse.update.tests.core/data/SiteTypeExamples/site1/features/feature3/features2.jarfile
deleted file mode 100644
index e8d004d..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteTypeExamples/site1/features/feature3/features2.jarfile
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/SiteTypeExamples/site1/site.xml b/update/org.eclipse.update.tests.core/data/SiteTypeExamples/site1/site.xml
deleted file mode 100644
index 6f7165a..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteTypeExamples/site1/site.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.core.http">
- <feature url="features/feature3/features2.jarfile"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/features/helpFeature.jar b/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/features/helpFeature.jar
deleted file mode 100644
index 9809713..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/features/helpFeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/features/org.eclipse.pde.feature_1.0.0.jar b/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/features/org.eclipse.pde.feature_1.0.0.jar
deleted file mode 100644
index f592c1d..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/features/org.eclipse.pde.feature_1.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/Pde_core.jar b/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/Pde_core.jar
deleted file mode 100644
index f107217..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/Pde_core.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/help.jar b/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/help.jar
deleted file mode 100644
index 7584f66..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/help.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/junit_3.7.jar b/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/junit_3.7.jar
deleted file mode 100644
index 67587b2..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/artifacts/plugins/junit_3.7.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/img/top_titlsm.gif b/update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/img/top_titlsm.gif
deleted file mode 100644
index 3917bb6..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/img/top_titlsm.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/img/wel_ml.jpg b/update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/img/wel_ml.jpg
deleted file mode 100644
index 01e33df..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/img/wel_ml.jpg
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/siteInfo.html b/update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/siteInfo.html
deleted file mode 100644
index b065aa3..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/info/siteInfo.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-</head>
- <body>
-<img src="img/top_titlsm.gif" alt="" width="460" height="50">
-<br>
-<br>
- It started with Smalltalk<br>
- OTI has been building tools for platform-independent OO development since
- 1988. Our ENVY® technology first brought collaborative software development,
- version management and shared repositories to Smalltalk. IBM is one of
-many companies to license ENVY, which continues to be the foundation of
-VisualAge® Smalltalk.<br>
-<br>
-<br>
-<br>
- Next came Java™<br>
- Because of our expertise in OO technology, IBM turned to OTI for a next-generation
- development environment for Java. The result is VisualAge for Java, which
- continues to win awards for its innovative IDE and team support. InfoWorld
- has chosen VisualAge for Java as development tool of the year - year after
- year after year!<br>
-<br>
-<br>
-<br>
- Then pervasive computing<br>
- OTI continues its development of IBM's VisualAge Micro Edition, a state-of-the-art
- platform for collaborative development of embedded applications and systems
- that are very lean. As the steady stream of press releases attests, VisualAge
- Micro Edition is already licensed to the leading microchip manufacturers,
- microkernel developers, and producers of handheld and consumer devices.<br>
-<br>
-<br>
-<br>
- Now it's Eclipse<br>
- OTI has built the next generation IBM application development tools platform.
- Eclipse is a kind of universal tool platform - an open extensible IDE for
- anything and nothing in particular. The real value comes from tool plug-ins
- that "teach" Eclipse how to work with things - java files, web content,
-graphics, video - almost anything you can imagine. Eclipse allows you to
-independently develop tools that integrate with other people's tools so
-seamlessly you won't know where one tool ends and another starts. The IBM
-supported version of this technology, WebSphere Studio Workbench, will be
-the core of the next generation of IBM and IBM Business Partner e-business
-tools optimized for the WebSphere software platform.<br>
-<br>
-<br>
-<br>
- So what's next?<br>
- OTI continues to deliver object-oriented technology that scales across
- platforms, across teams and across project size. From a mainframe to a
-watch - we're closing in on that vision.<br>
-<br>
-<img src="img/wel_ml.jpg" width="460" height="460" alt="">
-<br>
-<br>
-<br>
-<br>
-<br>
-<br>
-</body>
-</html>
diff --git a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/site.xml b/update/org.eclipse.update.tests.core/data/SiteURLTest/data/site.xml
deleted file mode 100644
index e3ea684..0000000
--- a/update/org.eclipse.update.tests.core/data/SiteURLTest/data/site.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site url = "artifacts/">
-<description url="info/siteInfo.html"/>
- <feature url="features/helpFeature.jar" type="org.eclipse.update.core.packaged">
- <category name="eclipse/UML"/>
- </feature>
- <feature url="features/org.eclipse.pde.feature_1.0.0.jar" type="org.eclipse.update.core.packaged">
- <category name="eclipse/J2EE"/>
- </feature>
- <archive path="plugins/org.eclipse.help_1.0.0.jar" url="plugins/help.jar"/>
- <archive path="plugins/org.eclipse.pde.core_1.0.0.jar" url="plugins/Pde_core.jar"/>
- <archive path="plugins/org.junit_3.5.0.jar" url="plugins/junit_3.7.jar"/>
- <category-def label="IBM WSAD Tools" name="eclipse"/>
- <category-def label="J2EE tools" name="eclipse/J2EE"/>
- <category-def label="EJB Tools" name="eclipse/J2EE/EJB"/>
- <category-def label="UML tools" name="eclipse/UML"/>
- <category-def label="Messaging Tools" name="B2B"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/file1.zip b/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/file1.zip
deleted file mode 100644
index 1a70b7e..0000000
--- a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/file1.zip
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/install/features/feature3/feature.xml b/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/install/features/feature3/feature.xml
deleted file mode 100644
index 6b454ec..0000000
--- a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/install/features/feature3/feature.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.update.core.tests.feature3" image="feature1.gif" label="Third Feature" provider-name="Smart Company" version="1.0.0">
- <install-handler handler="org.eclipse.update.core.DefaultInstallHandler"/>
- <data download-size="1500" id="file.zip" install-size="1000"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/site.xml b/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/site.xml
deleted file mode 100644
index c41f21d..0000000
--- a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site1/site.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.core.file">
-<description url="info/siteInfo.html"/>
- <feature url="install/features/feature3">
- </feature>
- <archive path="features/org.eclipse.update.core.tests.feature3_1.0.0/file.zip" url="file1.zip"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/features/features3.jar b/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/features/features3.jar
deleted file mode 100644
index 74c6eca..0000000
--- a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/features/features3.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/non data/another file.zip b/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/non data/another file.zip
deleted file mode 100644
index 1a70b7e..0000000
--- a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/non data/another file.zip
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/site.xml b/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/site.xml
deleted file mode 100644
index 040943c..0000000
--- a/update/org.eclipse.update.tests.core/data/dataEntrySiteTest/site2/site.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.core.file">
-<description url="info/siteInfo.html"/>
- <feature url="features/features3.jar" type="org.eclipse.update.core.packaged">
- </feature>
- <archive path="features/org.eclipse.update.core.tests.feature3_1.0.0/file.zip" url="non data/another file.zip"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/features/features2.jar b/update/org.eclipse.update.tests.core/data/features/features2.jar
deleted file mode 100644
index e8d004d..0000000
--- a/update/org.eclipse.update.tests.core/data/features/features2.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/features/org.eclipse.test.feature_1.0.0.jar b/update/org.eclipse.update.tests.core/data/features/org.eclipse.test.feature_1.0.0.jar
deleted file mode 100644
index 870a70d..0000000
--- a/update/org.eclipse.update.tests.core/data/features/org.eclipse.test.feature_1.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/features/org.eclipse.update.core.tests.feature1_1.0.4.jar b/update/org.eclipse.update.tests.core/data/features/org.eclipse.update.core.tests.feature1_1.0.4.jar
deleted file mode 100644
index 9dc9463..0000000
--- a/update/org.eclipse.update.tests.core/data/features/org.eclipse.update.core.tests.feature1_1.0.4.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/features/org.eclipse_test_feature.jar b/update/org.eclipse.update.tests.core/data/features/org.eclipse_test_feature.jar
deleted file mode 100644
index 938ddc4..0000000
--- a/update/org.eclipse.update.tests.core/data/features/org.eclipse_test_feature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/features/org.eclipse.update.core.tests.childrenfeature_2.0.0.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/features/org.eclipse.update.core.tests.childrenfeature_2.0.0.jar
deleted file mode 100644
index 12ee4ba..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/features/org.eclipse.update.core.tests.childrenfeature_2.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/features/rootfeature.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/features/rootfeature.jar
deleted file mode 100644
index 899bdda..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/features/rootfeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
deleted file mode 100644
index 5d9f5bc..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
deleted file mode 100644
index 8b4b04a..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
deleted file mode 100644
index 52208fe..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/site.xml b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/site.xml
deleted file mode 100644
index 623cb1a..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest/site.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature url="features/rootfeature.jar"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/features/childrenfeature.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/features/childrenfeature.jar
deleted file mode 100644
index 12ee4ba..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/features/childrenfeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/features/rootfeature.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/features/rootfeature.jar
deleted file mode 100644
index 899bdda..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/features/rootfeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
deleted file mode 100644
index 5d9f5bc..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
deleted file mode 100644
index 8b4b04a..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
deleted file mode 100644
index 52208fe..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/site.xml b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/site.xml
deleted file mode 100644
index 3c4359b..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest2/site.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature url="features/rootfeature.jar"/>
- <feature url="features/childrenfeature.jar"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/features/childrenfeature.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/features/childrenfeature.jar
deleted file mode 100644
index 12ee4ba..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/features/childrenfeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/features/rootfeature.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/features/rootfeature.jar
deleted file mode 100644
index 899bdda..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/features/rootfeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
deleted file mode 100644
index 5d9f5bc..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
deleted file mode 100644
index 8b4b04a..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
deleted file mode 100644
index 52208fe..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/site.xml b/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/site.xml
deleted file mode 100644
index 04a9dd5..0000000
--- a/update/org.eclipse.update.tests.core/data/nestedFeatureSiteTest3/site.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature url="features/rootfeature.jar"/>
-
- <archive path="features/org.eclipse.update.core.tests.childrenfeature_2.0.0.jar" url="features/childrenfeature.jar"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/parsertests/feature1.xml b/update/org.eclipse.update.tests.core/data/parsertests/feature1.xml
deleted file mode 100644
index 73d8b31..0000000
--- a/update/org.eclipse.update.tests.core/data/parsertests/feature1.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.platform"
- version="2.0.0"
- label="Eclipse Platform"
- provider-name="www.eclipse.org"
- image="splash/splash_full.bmp"
- >
-
- <description>
- Eclipse platform feature.
- </description>
-
- <copyright url="notice.html">
- x
-
- <license url="about.html">
- x
- </license>
-
- <url>
- <update url="file:/D:/" label="Eclipse Update Site"/>
- </url>
-
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/parsertests/reddot.xml b/update/org.eclipse.update.tests.core/data/parsertests/reddot.xml
deleted file mode 100644
index b2e943f..0000000
--- a/update/org.eclipse.update.tests.core/data/parsertests/reddot.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<site url="info/siteInfo.html">
-<feature url="features/reddot_1.0.0.jar">
-<category name="reddot"/>
-</feature>
-<feature url="features/reddot_2.0.0.jar">
-<category name="reddot"/>
-</feature>
-<archive path="com.reddot.redot_1.0.0" url="plugins/com.reddot.reddot_1.0.0.jar"/>
-<archive path="com.reddot.redot_2.0.0" url="plugins/com.reddot.reddot_2.0.0.jar"/>
-<category-def label="Red Dot Versions" name="reddot">
-<description url="RedDotVersions.html">
-This category contains all of the <currently> available versions of Red Dot feature.
-<![CDATA[<greeting>Hello, world!</greeting>]]>
-</description>
-</category-def>
-</site>
-
-
diff --git a/update/org.eclipse.update.tests.core/data/parsertests/reddot1.xml b/update/org.eclipse.update.tests.core/data/parsertests/reddot1.xml
deleted file mode 100644
index 63fc6d9..0000000
--- a/update/org.eclipse.update.tests.core/data/parsertests/reddot1.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<site url="info/siteInfo.html">
-<feature url="features/reddot_1.0.0.jar">
-<category name="reddot"/>
-</feature>
-<feature url="features/reddot_2.0.0.jar">
-<category name="reddot"/>
-</feature>
-<archive path="com.reddot.redot_1.0.0" url="plugins/com.reddot.reddot_1.0.0.jar"/>
-<archive path="com.reddot.redot_2.0.0" url="plugins/com.reddot.reddot_2.0.0.jar"/>
-<category-def label="Red Dot Versions" name="reddot">
-<description url="RedDotVersions.html">
-This category contains all of the <currently> available versions of Red Dot feature.
-</description>
-</category-def>
-</site>
-
-
diff --git a/update/org.eclipse.update.tests.core/data/parsertests/site.properties b/update/org.eclipse.update.tests.core/data/parsertests/site.properties
deleted file mode 100644
index 211986b..0000000
--- a/update/org.eclipse.update.tests.core/data/parsertests/site.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-drivers=Required Drivers
-security=Security Fixes
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/parsertests/site.xml b/update/org.eclipse.update.tests.core/data/parsertests/site.xml
deleted file mode 100644
index b40d831..0000000
--- a/update/org.eclipse.update.tests.core/data/parsertests/site.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site id="org.eclipse.update.core.tests" name="Tests" version="0.0.1" type="org.eclipse.update.core.file">
- <handler>
- <boo class ="unknown"/>
- </handler>
-
- <feature url="features/org.eclipse.test.feature_1.0.0.jar">
- <category name="category1"/>
- </feature>
-
- <feature url="features/features2.jar">
- <category name="category1/subcat1"/>
- <category name="category2"/>
- </feature>
-
- <feature url="features/org.eclipse.update.core.tests.feature1_1.0.4.jar">
- <category name="category1"/>
- <category name="category2"/>
- <blah/>
- </feature>
-
- <feature url="features/org.eclipse_test_feature.jar"/>
-
- <feature url="org.eclipse.update.core.feature2_1.0.0/org.eclipse.update.core.feature2_2.2.2.jar">
- <category name="category1"/>
- </feature>
-
- <feature url="org.eclipse.update.core.feature2_1.0.0/org.eclipse.update.core.feature2_2.2.2.jar">
- </feature>
-
- <archive path="plugins/hello" >
- <default/>
- </archive>
-
- <category-def name="category2" label="%security"/>
- <category-def name="category1/subcat1" label="Special Fix"/>
- <category-def name="category1" label="%drivers"/>
-
-
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/parsertests/site2.xml b/update/org.eclipse.update.tests.core/data/parsertests/site2.xml
deleted file mode 100644
index 83c23f2..0000000
--- a/update/org.eclipse.update.tests.core/data/parsertests/site2.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature id="com.ibm.jdt" url="http://www.eclipse.org/feature3" version="1.0.0">
- </feature>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/parsertests/site3.xml b/update/org.eclipse.update.tests.core/data/parsertests/site3.xml
deleted file mode 100644
index dbbb682..0000000
--- a/update/org.eclipse.update.tests.core/data/parsertests/site3.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature id="com.ibm.jdt" url="feature3/feature.jar" version="1.0.0">
- <category name="unknown"/>
- </feature>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/parsertests/site4.xml b/update/org.eclipse.update.tests.core/data/parsertests/site4.xml
deleted file mode 100644
index 14d785f..0000000
--- a/update/org.eclipse.update.tests.core/data/parsertests/site4.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<site>
- <description url="info/siteInfo.html"/>
-
- <feature url="features/com.reddot.reddot_1.0.0.jar">
- <category name="reddot"/>
- </feature>
-
- <feature url="features/com.reddot.reddot_2.0.0.jar">
- <category name="reddot"/>
- </feature>
-
- <category-def label="Red Dot Versions" name="reddot">
- <description url="RedDotVersions.html">
- This category contains all of the currently available versions of Red Dot feature.
- </description>
- </category-def>
-
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/parsertests/siteftp.xml b/update/org.eclipse.update.tests.core/data/parsertests/siteftp.xml
deleted file mode 100644
index f883ec0..0000000
--- a/update/org.eclipse.update.tests.core/data/parsertests/siteftp.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.tests.core.ftp">
- <feature url="features/feature3/features2.jarfile"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.feature1.plugin1_1.1.1.jar b/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.feature1.plugin1_1.1.1.jar
deleted file mode 100644
index 0c995d5..0000000
--- a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.feature1.plugin1_1.1.1.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.feature2.plugin2_2.2.2.jar b/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.feature2.plugin2_2.2.2.jar
deleted file mode 100644
index 0c995d5..0000000
--- a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.feature2.plugin2_2.2.2.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.dummy_7.9.8.jar b/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.dummy_7.9.8.jar
deleted file mode 100644
index 78f193d..0000000
--- a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.dummy_7.9.8.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar b/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
deleted file mode 100644
index 2275ade..0000000
--- a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar b/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
deleted file mode 100644
index ea958c7..0000000
--- a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml b/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
deleted file mode 100644
index 7f05d82..0000000
--- a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin name="JUnit Test Framework" id="org.eclipse.update.core.tests.feature1.plugin1" version="3.5.6" vendor-name="junit.org">
- <runtime>
- <library name="junit.jar">
- <export name="*"/>
- </library>
- </runtime>
-</plugin>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.plugin1_1.1.1/src.jar b/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
deleted file mode 100644
index 2d4d609..0000000
--- a/update/org.eclipse.update.tests.core/data/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/reconciliationSites/site1/install/features/feature3/feature.xml b/update/org.eclipse.update.tests.core/data/reconciliationSites/site1/install/features/feature3/feature.xml
deleted file mode 100644
index 3141af8..0000000
--- a/update/org.eclipse.update.tests.core/data/reconciliationSites/site1/install/features/feature3/feature.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.update.core.tests.feature3" image="feature1.gif" label="Third Feature" provider-name="Smart Company" version="1.0.0" >
- <description>Description</description>
- <copyright>copyright</copyright>
- <license>license</license>
- <url>
- <update label="URL to update the feature" url="http://www.eclipse.org/"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
- <plugin download-size="1500" id="org.eclipse.update.plugin1" install-size="1000" fragment="false" nl="us" os="OS_WIN32" version="1.1.1" ws="WS_WIN32"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/reconciliationSites/site1/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml b/update/org.eclipse.update.tests.core/data/reconciliationSites/site1/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
deleted file mode 100644
index e01846c..0000000
--- a/update/org.eclipse.update.tests.core/data/reconciliationSites/site1/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin name="JUnit Test Framework" id="org.eclipse.update.core.tests.feature1.plugin1" version="3.5.6" vendor-name="junit.org">
- <runtime>
- <library name="junit.jar">
- <export name="*"/>
- </library>
- </runtime>
-</plugin>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/reconciliationSites/site1/plugins/org.eclipse.update.plugin1_1.1.1/src.jar b/update/org.eclipse.update.tests.core/data/reconciliationSites/site1/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
deleted file mode 100644
index 2d4d609..0000000
--- a/update/org.eclipse.update.tests.core/data/reconciliationSites/site1/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/reconciliationSites/site2/install/features/feature3/feature.xml b/update/org.eclipse.update.tests.core/data/reconciliationSites/site2/install/features/feature3/feature.xml
deleted file mode 100644
index 9c707ff..0000000
--- a/update/org.eclipse.update.tests.core/data/reconciliationSites/site2/install/features/feature3/feature.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.update.core.tests.feature3" image="feature1.gif" label="Third Feature" provider-name="Smart Company" version="1.0.0" >
- <description>Description</description>
- <copyright>copyright</copyright>
- <license>license</license>
- <url>
- <update label="URL to update the feature" url="http://www.eclipse.org/"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
- <plugin download-size="1500" id="org.eclipse.update.core" install-size="1000" fragment="false" nl="us" os="OS_WIN32" version="2.0.0" ws="WS_WIN32"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/reconciliationSites/site2/plugins/org.eclipse.update.core_2.0.0/plugin.xml b/update/org.eclipse.update.tests.core/data/reconciliationSites/site2/plugins/org.eclipse.update.core_2.0.0/plugin.xml
deleted file mode 100644
index e01846c..0000000
--- a/update/org.eclipse.update.tests.core/data/reconciliationSites/site2/plugins/org.eclipse.update.core_2.0.0/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin name="JUnit Test Framework" id="org.eclipse.update.core.tests.feature1.plugin1" version="3.5.6" vendor-name="junit.org">
- <runtime>
- <library name="junit.jar">
- <export name="*"/>
- </library>
- </runtime>
-</plugin>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/reconciliationSites/site2/plugins/org.eclipse.update.core_2.0.0/src.jar b/update/org.eclipse.update.tests.core/data/reconciliationSites/site2/plugins/org.eclipse.update.core_2.0.0/src.jar
deleted file mode 100644
index 2d4d609..0000000
--- a/update/org.eclipse.update.tests.core/data/reconciliationSites/site2/plugins/org.eclipse.update.core_2.0.0/src.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/resources.properties b/update/org.eclipse.update.tests.core/data/resources.properties
deleted file mode 100644
index 63efcee..0000000
--- a/update/org.eclipse.update.tests.core/data/resources.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-HTTP_PATH_1=/org.eclipse.update.tests.core.updatetests/UpdateManager2/
-HTTP_PATH_2=/org.eclipse.update.tests.core.updatetests/UpdateManager/
-HTTP_PATH_3=/org.eclipse.update.tests.core.updatetests/Site with space/
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/site.xml b/update/org.eclipse.update.tests.core/data/site.xml
deleted file mode 100644
index 3fc60c7..0000000
--- a/update/org.eclipse.update.tests.core/data/site.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.core.file">
-<description url="info/siteInfo.html"/>
- <feature url="testAPI/features/feature3">
- <category name="eclipse/UML"/>
- </feature>
- <feature url="http://www.eclipse.org/feature2">
- <category name="eclipse/J2EE"/>
- </feature>
- <feature url="http://www.eclipse.org/feature1">
- <category name="eclipse/J2EE"/>
- </feature>
- <archive path="plugins/org.eclipse.update.plugin1_1.1.1.jar" url="plugins/org.eclipse.update.plugin1_1.1.1"/>
- <category-def label="J2EE tools" name="eclipse/J2EE"/>
- <category-def label="EJB Tools" name="eclipse/J2EE/EJB"/>
- <category-def label="UML tools" name="eclipse/UML"/>
- <category-def label="Messaging Tools" name="B2B"/>
- <category-def label="Eclipse Tools" name="eclipse"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/site2/site.xml b/update/org.eclipse.update.tests.core/data/site2/site.xml
deleted file mode 100644
index 39d1c11..0000000
--- a/update/org.eclipse.update.tests.core/data/site2/site.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site url="Info.html" type="org.eclipse.update.core.file">
- <feature url="features/feature1"/>
- <archive path="org.eclipse.update.plugin1" url="plugins/plugin1"/>
- <archive path="org.eclipse.update.archive2" url="plugins/plugin2"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.0/plugin.xml b/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.0/plugin.xml
deleted file mode 100644
index 7f81c46..0000000
--- a/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.0/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin name="JUnit Test Framework" id="org.eclipse.update.core.tests.feature1.plugin2" version="5.0.0" vendor-name="junit.org">
- <runtime>
- <library name="junit.jar">
- <export name="*"/>
- </library>
- </runtime>
-</plugin>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.0/src.jar b/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.0/src.jar
deleted file mode 100644
index 2d4d609..0000000
--- a/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.0/src.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.1/plugin.xml b/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.1/plugin.xml
deleted file mode 100644
index efb3c26..0000000
--- a/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.1/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin name="JUnit Test Framework" id="org.eclipse.update.core.tests.feature1.plugin2" version="5.0.1" vendor-name="junit.org">
- <runtime>
- <library name="junit.jar">
- <export name="*"/>
- </library>
- </runtime>
-</plugin>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.1/src.jar b/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.1/src.jar
deleted file mode 100644
index 2d4d609..0000000
--- a/update/org.eclipse.update.tests.core/data/siteTestLocalSite/plugins/feature1_plugin2_5.0.1/src.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/testAPI/features/feature3/feature.xml b/update/org.eclipse.update.tests.core/data/testAPI/features/feature3/feature.xml
deleted file mode 100644
index 3141af8..0000000
--- a/update/org.eclipse.update.tests.core/data/testAPI/features/feature3/feature.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.update.core.tests.feature3" image="feature1.gif" label="Third Feature" provider-name="Smart Company" version="1.0.0" >
- <description>Description</description>
- <copyright>copyright</copyright>
- <license>license</license>
- <url>
- <update label="URL to update the feature" url="http://www.eclipse.org/"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
- <plugin download-size="1500" id="org.eclipse.update.plugin1" install-size="1000" fragment="false" nl="us" os="OS_WIN32" version="1.1.1" ws="WS_WIN32"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/testAPI/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml b/update/org.eclipse.update.tests.core/data/testAPI/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
deleted file mode 100644
index e01846c..0000000
--- a/update/org.eclipse.update.tests.core/data/testAPI/plugins/org.eclipse.update.plugin1_1.1.1/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin name="JUnit Test Framework" id="org.eclipse.update.core.tests.feature1.plugin1" version="3.5.6" vendor-name="junit.org">
- <runtime>
- <library name="junit.jar">
- <export name="*"/>
- </library>
- </runtime>
-</plugin>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/testAPI/plugins/org.eclipse.update.plugin1_1.1.1/src.jar b/update/org.eclipse.update.tests.core/data/testAPI/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
deleted file mode 100644
index 2d4d609..0000000
--- a/update/org.eclipse.update.tests.core/data/testAPI/plugins/org.eclipse.update.plugin1_1.1.1/src.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/testAPI/site.xml b/update/org.eclipse.update.tests.core/data/testAPI/site.xml
deleted file mode 100644
index 4c15d43..0000000
--- a/update/org.eclipse.update.tests.core/data/testAPI/site.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site type="org.eclipse.update.core.file">
-<description url="info/siteInfo.html"/>
- <feature url="features/feature3">
- <category name="eclipse/UML"/>
- </feature>
- <feature url="http://www.eclipse.org/feature2">
- <category name="eclipse/J2EE"/>
- </feature>
- <feature url="http://www.eclipse.org/feature1">
- <category name="eclipse/J2EE"/>
- </feature>
- <archive path="plugins/org.eclipse.update.plugin1_1.1.1.jar" url="plugins/org.eclipse.update.plugin1_1.1.1"/>
- <category-def label="J2EE tools" name="eclipse/J2EE"/>
- <category-def label="EJB Tools" name="eclipse/J2EE/EJB"/>
- <category-def label="UML tools" name="eclipse/UML"/>
- <category-def label="Messaging Tools" name="B2B"/>
- <category-def label="Eclipse Tools" name="eclipse"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/xmls/apitests/org.eclipse.test.feature_1.0.0/feature.xml b/update/org.eclipse.update.tests.core/data/xmls/apitests/org.eclipse.test.feature_1.0.0/feature.xml
deleted file mode 100644
index 1511800..0000000
--- a/update/org.eclipse.update.tests.core/data/xmls/apitests/org.eclipse.test.feature_1.0.0/feature.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.test1.ident1" label="Feature One" nl="en_us,fr,de" os="OS_WIN32,OS_LINUX" provider-name="Object Technology International" version="1.0.0" ws="WS_WIN32,WS_MOTIF,WS_GTK">
- <description>Test feature for testIdentifier test</description>
- <copyright>Copyright (c) the company</copyright>
- <license>Do you accept the license ?</license>
- <url>
- <update label="URL to update teh feature" url="http://www.eclipse.org"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
- <plugin download-size="1500" id="org.eclipse.update.core.tests.feature1.plugin1" install-size="1000" fragment="false" nl="us" os="OS_WIN32" version="3.5.6" ws="WS_WIN32"/>
- <plugin download-size="1200" id="org.eclipse.update.core.tests.feature1.plugin2" install-size="978" fragment="false" version="5.0.0"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/xmls/apitests/org.eclipse_test_feature/feature.xml b/update/org.eclipse.update.tests.core/data/xmls/apitests/org.eclipse_test_feature/feature.xml
deleted file mode 100644
index 9f05cda..0000000
--- a/update/org.eclipse.update.tests.core/data/xmls/apitests/org.eclipse_test_feature/feature.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.test1.ident2" label="Feature One" nl="en_us,fr,de" os="OS_WIN32,OS_LINUX" provider-name="Object Technology International" version="1.0.0" ws="WS_WIN32,WS_MOTIF,WS_GTK">
- <description>Test feature for testIdentifier test</description>
- <copyright>Copyright (c) the company</copyright>
- <license>Do you accept the license ?</license>
- <url>
- <update label="URL to update teh feature" url="http://www.eclipse.org"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
- <plugin download-size="1500" url="org.eclipse.update.core.tests.feature1.plugin1" id="org.eclipse.update.core.tests.feature1.plugin1" install-size="1000" fragment="false" nl="us" os="OS_WIN32" version="3.5.6" ws="WS_WIN32"/>
- <plugin download-size="1200" id="org.eclipse.update.core.tests.feature1.plugin2" install-size="978" fragment="false" version="5.0.0"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/xmls/feature_1.0.0/feature.xml b/update/org.eclipse.update.tests.core/data/xmls/feature_1.0.0/feature.xml
deleted file mode 100644
index c4ee139..0000000
--- a/update/org.eclipse.update.tests.core/data/xmls/feature_1.0.0/feature.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.update.core.tests.feature1" image="feature1.gif" label="Feature One" nl="en,fr,de" os="OS_WIN32,OS_LINUX" provider-name="Object Technology International" version="1.0.4" ws="WS_WIN32,WS_MOTIF,WS_GTK">
- <description>I believe this is the description of feature 1, well, feature 1 is an exceptional feature that you should install right NOW on your machine... try it.</description>
- <copyright>Ok, now, this is a very very complex Copyright not prepared by a lawyer Copyright (c) the company</copyright>
- <license>#1 Do you accept it #2 you do nto accept it ...Do you accpt it ?</license>
- <url>
- <update label="URL to update the feature" url="http://www.eclipse.org/path/feature1/"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
- <plugin download-size="1500" id="org.eclipse.update.core.tests.feature1.plugin1" install-size="1000" fragment="false" nl="us" os="OS_WIN32" version="3.5.6" ws="WS_WIN32"/>
- <plugin download-size="1200" id="org.eclipse.update.core.tests.feature1.plugin2" install-size="978" fragment="false" version="5.0.0"/>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/data/xmls/feature_1.0.0/feature1.gif b/update/org.eclipse.update.tests.core/data/xmls/feature_1.0.0/feature1.gif
deleted file mode 100644
index 03e30a2..0000000
--- a/update/org.eclipse.update.tests.core/data/xmls/feature_1.0.0/feature1.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/data/xmls/site1/site.xml b/update/org.eclipse.update.tests.core/data/xmls/site1/site.xml
deleted file mode 100644
index 62c8a65..0000000
--- a/update/org.eclipse.update.tests.core/data/xmls/site1/site.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site url="info/siteInfo.html" type="org.eclipse.update.core.file">
- <feature id="org.isv.feature3" url="www.eclipse.org/feature3" version="3.4.5">
- <category name="eclipse/UML"/>
- </feature>
- <feature id="org.eclipse.update.core.tests.feature2" url="www.eclipse.org/feature2" version="3.4.6">
- <category name="eclipse/J2EE"/>
- </feature>
- <feature id="org.eclipse.update.core.tests.fature1" url="www.eclipse.org/feature1" version="2.3.5">
- <category name="eclipse/J2EE"/>
- </feature>
- <archive path="org.eclipse.update.plugin1" url="www.eclipse.org/pluign1"/>
- <archive path="org.eclipse.update.archive2" url="www.eclipse.org/plugin2"/>
- <archive path="org.eclipse.update.plugin3" url="www.eclipse.org/plugin3"/>
- <archive path="org.eclipse.unknown.plugin" url="www.eclipse.org/plugins/plugin4"/>
- <archive path="org.eclipse.update.core.tests.feature1.foo1" url="www.eclipse.org/plugin1"/>
- <category-def label="J2EE tools" name="eclipse/J2EE"/>
- <category-def label="EJB Tools" name="eclipse/J2EE/EJB"/>
- <category-def label="UML tools" name="eclipse/UML"/>
- <category-def label="Messaging Tools" name="B2B"/>
- <category-def label="Eclipse tools" name="eclipse"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/plugin.properties b/update/org.eclipse.update.tests.core/plugin.properties
deleted file mode 100644
index 5f37ffc..0000000
--- a/update/org.eclipse.update.tests.core/plugin.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-
-name = Install/Update Core Tests
-provider-name = International Business Machines Corp.
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/plugin.xml b/update/org.eclipse.update.tests.core/plugin.xml
deleted file mode 100644
index 196db76..0000000
--- a/update/org.eclipse.update.tests.core/plugin.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin
- id="org.eclipse.update.tests.core"
- name="%name"
- version="2.0.0"
- provider-name="%provider-name"
- class="org.eclipse.update.tests.UpdateTestsPlugin">
-
- <runtime>
- <library name="updatetests.jar">
- <export name="*"/>
- </library>
- </runtime>
- <requires>
- <import plugin="org.eclipse.core.runtime"/>
- <import plugin="org.junit"/>
- <import plugin="org.apache.xerces"/>
- <import plugin="org.eclipse.core.resources"/>
- <import plugin="org.eclipse.update.core"/>
- <import plugin="org.eclipse.help"/>
- </requires>
-
-
- <extension
- id="feature1"
- point="org.eclipse.update.core.featureTypes">
- <feature-factory
- class="org.eclipse.update.internal.core.FeatureExecutableFactory">
- </feature-factory>
- </extension>
- <extension
- id="ftp"
- point="org.eclipse.update.core.siteTypes">
- <site-factory
- class="org.eclipse.update.tests.implementation.SiteFTPFactory">
- </site-factory>
- </extension>
-
-</plugin>
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/AllTests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/AllTests.java
deleted file mode 100644
index 3b25e8f..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/AllTests.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.eclipse.update.tests;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.update.tests.api.AllAPITests;
-import org.eclipse.update.tests.configurations.AllConfigurationsTests;
-import org.eclipse.update.tests.core.boot.AllPlatformConfigurationTests;
-import org.eclipse.update.tests.model.AllModelTests;
-import org.eclipse.update.tests.nestedfeatures.AllNestedTests;
-import org.eclipse.update.tests.parser.AllParserTests;
-import org.eclipse.update.tests.reconciliation.AllReconciliationTests;
-import org.eclipse.update.tests.regularInstall.AllRegularInstallTests;
-import org.eclipse.update.tests.regularRemove.AllRegularRemoveTests;
-import org.eclipse.update.tests.types.AllTypesTests;
-import org.eclipse.update.tests.uivalues.AllCoreUITests;
-
-public class AllTests extends TestSuite {
- public AllTests(String name) {
- super(name);
- }
- public static Test suite() throws Exception {
- TestSuite suite = new TestSuite();
- suite.setName("All Update Manager Tests");
- suite.addTest(AllPlatformConfigurationTests.suite());
- suite.addTest(AllRegularInstallTests.suite());
- suite.addTest(AllAPITests.suite());
- suite.addTest(AllModelTests.suite());
- suite.addTest(AllParserTests.suite());
- suite.addTest(AllCoreUITests.suite());
- suite.addTest(AllConfigurationsTests.suite());
- suite.addTest(AllTypesTests.suite());
- suite.addTest(AllRegularRemoveTests.suite());
- suite.addTest(AllNestedTests.suite());
- suite.addTest(AllReconciliationTests.suite());
- return suite;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/UpdateManagerTestCase.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/UpdateManagerTestCase.java
deleted file mode 100644
index adc40b3..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/UpdateManagerTestCase.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package org.eclipse.update.tests;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.File;
-import java.io.IOException;
-import java.net.*;
-import java.util.*;
-
-import junit.framework.TestCase;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.internal.core.UpdateManagerPlugin;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-/**
- * All Help System Test cases must subclass this base Testcase.
- * See SampleTestCase.java for a template.
- */
-
-public abstract class UpdateManagerTestCase extends TestCase {
-
- protected static ResourceBundle bundle;
- protected static String dataPath;
-
- protected static URL SOURCE_FILE_SITE;
- protected static URL SOURCE_FILE_SITE_INSTALLED;
- protected static URL SOURCE_HTTP_SITE;
- protected static URL TARGET_FILE_SITE;
-
- private static final String DATA_PATH = "data/";
-
- /**
- * Default Constructor
- */
- public UpdateManagerTestCase(String name) {
- super(name);
- try {
- init();
- } catch (Exception e) {
- fail(e.toString());
- e.printStackTrace();
- }
- }
-
- protected static void init() throws MissingResourceException, IOException, MalformedURLException {
-
- IPluginDescriptor dataDesc = Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.update.tests.core");
- URL resolvedURL = Platform.resolve(dataDesc.getInstallURL());
- URL dataURL = new URL(resolvedURL,DATA_PATH);
- dataPath = dataURL.getFile();
- String homePath = (System.getProperty("user.home")).replace(File.separatorChar,'/');
-
- if (bundle == null) {
- ClassLoader l = new URLClassLoader(new URL[] { dataURL }, null);
- bundle = ResourceBundle.getBundle("resources", Locale.getDefault(), l);
- }
-
- try {
- SOURCE_FILE_SITE = new File(dataPath).toURL();
- SOURCE_FILE_SITE_INSTALLED = new File(dataPath+"testAPI/").toURL();
- SOURCE_HTTP_SITE = new URL("http", getHttpHost(),getHttpPort(), bundle.getString("HTTP_PATH_1"));
- TARGET_FILE_SITE = new URL("file",null, homePath +"/target/");
- } catch (Exception e) {
- fail(e.toString());
- e.printStackTrace();
- }
-
- //cleanup target
- File target = new File(homePath + "/target/");
- UpdateManagerUtils.removeFromFileSystem(target);
-
- // setup cache site to false
- InternalSiteManager.cache = false;
-
- }
-
- /**
- * Simple implementation of setUp. Subclasses are prevented
- * from overriding this method to maintain logging consistency.
- * umSetUp() should be overriden instead.
- */
- protected final void setUp() throws Exception {
- System.out.println("----- " + this.getName());
- System.out.println(this.getName() + ": setUp...");
- umSetUp();
- }
-
- /**
- * Sets up the fixture, for example, open a network connection.
- * This method is called before a test is executed.
- */
- protected void umSetUp() throws Exception {
- // do nothing.
- }
-
- /**
- * Simple implementation of tearDown. Subclasses are prevented
- * from overriding this method to maintain logging consistency.
- * umTearDown() should be overriden instead.
- */
- protected final void tearDown() throws Exception {
- System.out.println(this.getName() + ": tearDown...\n");
- umTearDown();
- }
-
- /**
- * Tears down the fixture, for example, close a network connection.
- * This method is called after a test is executed.
- */
- protected void umTearDown() throws Exception {
- // do nothing.
- }
-
- protected static String getHttpHost(){
- return UpdateTestsPlugin.getWebAppServerHost();
- }
-
- protected static int getHttpPort(){
- return UpdateTestsPlugin.getWebAppServerPort();
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/UpdateTestsPlugin.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/UpdateTestsPlugin.java
deleted file mode 100644
index 08dea26..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/UpdateTestsPlugin.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.update.tests;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.core.runtime.*;
-import org.eclipse.help.AppServer;
-import org.eclipse.help.IAppServer;
-import org.eclipse.update.internal.core.UpdateManagerPlugin;
-
-/**
- * manages the startuo and shutown of the
- * web server
- */
-public class UpdateTestsPlugin extends Plugin {
-
- private static String appServerHost = null;
- private static int appServerPort = 0;
- private static UpdateTestsPlugin plugin;
-
- public UpdateTestsPlugin(IPluginDescriptor descriptor) {
- super(descriptor);
- plugin = this;
- }
-
- public static UpdateTestsPlugin getPlugin(){
- return plugin;
- }
-
- /**
- * Called by Platform after loading the plugin
- */
- public void startup() throws CoreException {
- boolean result = AppServer.add("org.eclipse.update.tests.core.updatetests", "org.eclipse.update.tests.core", "webserver");
- appServerHost = AppServer.getHost();
- appServerPort = AppServer.getPort();
-
- String text = "The webServer ";
- text += (result)?"did":"didn't";
- text+= " start ip:"+getWebAppServerHost()+":"+getWebAppServerPort();
-
- System.out.println(text);
- if (!result) {
- IStatus status = new Status(IStatus.ERROR,"org.eclipse.update.tests.core",IStatus.OK,"WebServer not started. Update Tests results are invalid",null);
- throw new CoreException(status);
- }
- }
-
- /**
- * Shuts down this plug-in and discards all plug-in state.
- * @exception CoreException if this method fails to shut down
- * this plug-in
- */
- public void shutdown() throws CoreException {
- AppServer.remove("updatetests", "org.eclipse.update.tests.core");
- super.shutdown();
- }
-
- /**
- * Returns the host identifier for the web app server
- */
- public static String getWebAppServerHost() {
- return appServerHost;
- }
-
- /**
- * Returns the port identifier for the web app server
- */
- public static int getWebAppServerPort() {
- return appServerPort;
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/AllAPITests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/AllAPITests.java
deleted file mode 100644
index fe663f0..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/AllAPITests.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.update.core.SiteManager;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-import java.io.File;
-import junit.framework.*;
-
-/**
- * Manages the API tests
- */
-public class AllAPITests extends UpdateManagerTestCase {
- /**
- * Constructor
- */
- public AllAPITests(String name) {
- super(name);
- }
-
- /**
- * List of API tests
- */
- public static Test suite() throws Exception {
- TestSuite suite = new TestSuite();
- suite.setName("API Tests");
-
- suite.addTest(new TestSuite(TestSiteAPI.class));
- suite.addTest(new TestSuite(TestLocalSiteAPI.class));
- suite.addTest(new TestSuite(TestUpdateManagerUtilsAPI.class));
- suite.addTest(new TestSuite(TestDefaultExecutableFeatureAPI.class));
- suite.addTest(new TestSuite(TestDefaultPackageFeatureAPI.class));
- suite.addTest(new TestSuite(TestPluginContainerAPI.class));
- suite.addTest(new TestSuite(TestSiteManagerAPI.class));
- suite.addTest(new TestSuite(TestNestedFeatureAPI.class));
- return suite;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/DefaultFeature.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/DefaultFeature.java
deleted file mode 100644
index 51c26d5..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/DefaultFeature.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.model.*;
-import org.eclipse.update.internal.core.FeatureExecutableContentProvider;
-/**
- * Abstract Class that implements most of the behavior of a feature
- * A feature ALWAYS belongs to an ISite
- */
-public class DefaultFeature extends Feature {
-
-
- /**
- * Copy constructor
- */
- public DefaultFeature(IFeature sourceFeature, ISite targetSite) throws CoreException {
- this(targetSite);
- this.setFeatureContentProvider(sourceFeature.getFeatureContentProvider());
- this.setIdentifier(sourceFeature.getVersionedIdentifier());
- this.setLabel(sourceFeature.getLabel());
- this.setUpdateSiteEntry(sourceFeature.getUpdateSiteEntry());
- this.setDiscoverySiteEntries(sourceFeature.getDiscoverySiteEntries());
- this.setProvider(sourceFeature.getProvider());
- this.setDescription(sourceFeature.getDescription());
- this.setCopyright(sourceFeature.getCopyright());
- this.setLicense(sourceFeature.getLicense());
- this.setPluginEntries(sourceFeature.getPluginEntries());
- this.setImage(sourceFeature.getImage());
- }
-
- /**
- * Constructor
- */
- public DefaultFeature(ISite targetSite) throws CoreException {
- super();
- this.setSite(targetSite);
- }
-
-
- /**
- * Sets the identifier
- * @param identifier The identifier to set
- */
- public void setIdentifier(VersionedIdentifier identifier) {
- setFeatureIdentifier(identifier.getIdentifier());
- setFeatureVersion(identifier.getVersion().toString());
- }
-
- /**
- * Sets the discoverySiteEntries
- * @param discoveryInfos The discoveryInfos to set
- */
- public void setDiscoverySiteEntries(IURLEntry[] discoveryInfos) {
- setDiscoverySiteEntryModels((URLEntryModel[]) discoveryInfos);
- }
-
- /**
- * Sets the updateSiteEntry
- * @param updateInfo The updateInfo to set
- */
- public void setUpdateSiteEntry(IURLEntry updateInfo) {
- setUpdateSiteEntryModel((URLEntryModel) updateInfo);
- }
-
- /**
- * Adds a discoveryInfo
- * @param discoveryInfo The discoveryInfo to add
- */
- public void addDiscoverySiteEntry(IURLEntry discoveryInfo) {
- addDiscoverySiteEntryModel((URLEntryModel) discoveryInfo);
- }
-
- /**
- * Sets the description
- * @param description The description to set
- */
- public void setDescription(IURLEntry description) {
- setDescriptionModel((URLEntryModel) description);
- }
-
- /**
- * Sets the copyright
- * @param copyright The copyright to set
- */
- public void setCopyright(IURLEntry copyright) {
- setCopyrightModel((URLEntryModel) copyright);
- }
-
- /**
- * Sets the license
- * @param license The license to set
- */
- public void setLicense(IURLEntry license) {
- setLicenseModel((URLEntryModel) license);
- }
-
- /**
- * Sets the image
- * @param image The image to set
- */
- public void setImage(URL image) {
- setImageURLString(image.toExternalForm());
- }
-
- /**
- * Adds an import
- * @param anImport The import to add
- */
- public void addImport(IImport anImport) {
- if (anImport != null) {
- addImportModel((ImportModel) anImport);
- }
- }
-
-
- /**
- * Sets the pluginEntries
- * @param pluginEntries The pluginEntries to set
- */
- public void setPluginEntries(IPluginEntry[] pluginEntries) {
- if (pluginEntries != null) {
- for (int i = 0; i < pluginEntries.length; i++) {
- addPluginEntry(pluginEntries[i]);
- }
- }
- }
-
-
- /**
- * sets teh URL isf not already present
- */
- public void setURL(URL url) throws CoreException{
- //if (getFeatureContentProvider()==null){
- FeatureContentProvider contentProvider = new FeatureExecutableContentProvider(url);
- this.setFeatureContentProvider(contentProvider);
- contentProvider.setFeature(this);
- //}
- }
-
-
- /*
- * @see IPluginContainer#addPluginEntry(IPluginEntry)
- */
- public void addPluginEntry(IPluginEntry pluginEntry) {
- if (pluginEntry != null) {
- addPluginEntryModel((PluginEntryModel) pluginEntry);
- }
- }
-
- /*
- * @see IFeature#addNonPluginEntry(INonPluginEntry)
- */
- public void addNonPluginEntry(INonPluginEntry dataEntry) {
- if (dataEntry != null) {
- addNonPluginEntryModel((NonPluginEntryModel) dataEntry);
- }
- }
-
- }
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/MyURLEntry.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/MyURLEntry.java
deleted file mode 100644
index 3b6de73..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/MyURLEntry.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.update.core.URLEntry;
-
-/**
- * Wrapper around URLEntry
- */
-public class MyURLEntry extends URLEntry {
-
- public MyURLEntry(String annotation, URL url) throws MalformedURLException {
- super();
- setAnnotation(annotation);
- if (url!=null) {
- setURLString(url.toExternalForm());
- resolve(null,null);
- }
- }
-
-}
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestDefaultExecutableFeatureAPI.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestDefaultExecutableFeatureAPI.java
deleted file mode 100644
index b6249fb..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestDefaultExecutableFeatureAPI.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.FeatureReference;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-
-
-public class TestDefaultExecutableFeatureAPI extends UpdateManagerTestCase {
-
- private DefaultFeature remoteFeature=null;
-
- /**
- * Test the testFeatures()
- */
- public TestDefaultExecutableFeatureAPI(String arg0) {
- super(arg0);
- }
-
- /**
- * the feature to test
- */
- private DefaultFeature getFeature() throws MalformedURLException, CoreException {
- if (remoteFeature == null){
-
- ISite site = SiteManager.getSite(SOURCE_FILE_SITE);
- URL url = UpdateManagerUtils.getURL(site.getURL(),"testAPI/"+Site.DEFAULT_INSTALLED_FEATURE_PATH+"feature3/",null);
- FeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.setURL(url);
- IFeature feature = ref.getFeature();
- remoteFeature = new DefaultFeature(feature,site);
-
- }
- return remoteFeature;
- }
-
- /**
- * @see IFeature#testIdentifier()
- */
- public void testIdentifier() throws CoreException, MalformedURLException {
- String id1 = "xmls/apitests/org.eclipse.test.feature_1.0.0/";
- String id2 = "xmls/apitests/org.eclipse_test_feature";
- VersionedIdentifier ident1 = new VersionedIdentifier("org.test1.ident1","1.0.0");
- VersionedIdentifier ident2 = new VersionedIdentifier("org.test1.ident2","1.0.0");
-
-
- ISite site = SiteManager.getSite(SOURCE_FILE_SITE);
-
- URL url1 = UpdateManagerUtils.getURL(site.getURL(),id1,null);
- remoteFeature = new DefaultFeature(site);
- remoteFeature.setURL(url1);
- remoteFeature.setIdentifier(ident1);
- assertEquals(ident1.toString(),remoteFeature.getVersionedIdentifier().toString());
-
- URL url2 = UpdateManagerUtils.getURL(site.getURL(),id2,null);
- remoteFeature = new DefaultFeature(site);
- remoteFeature.setURL(url2);
- remoteFeature.setIdentifier(ident2);
- assertEquals(ident2.toString(),remoteFeature.getVersionedIdentifier().toString());
-
-
- }
-
-
- /**
- * @see IFeature#testSite()
- */
- public void testSite() throws MalformedURLException, CoreException{
- String ident1 = Site.DEFAULT_INSTALLED_FEATURE_PATH+"feature3/";
-
- ISite site = SiteManager.getSite(SOURCE_FILE_SITE);
-
- URL id = UpdateManagerUtils.getURL(site.getURL(),ident1,null);
- remoteFeature = new DefaultFeature(site);
- remoteFeature.setURL(id);
- assertEquals(site,remoteFeature.getSite());
-
- }
-
-
- /**
- * @see IFeature#testLabel()
- */
- public void testLabel() throws CoreException,MalformedURLException {
- String label = "dummy label";
- Feature feature = getFeature();
- feature.setLabel(label);
- assertEquals(label,feature.getLabel());
- }
-
-
- /**
- * @see IFeature#testUpdateURL()
- */
- public void testUpdateURL() throws CoreException,MalformedURLException {
- URL url = null;
- String label = "OTI Site";
- try {
- url = new URL("http://www.oti.com/");
-
- } catch (java.net.MalformedURLException e){} // impossible eh !
- DefaultFeature feature = getFeature();
- feature.setUpdateSiteEntry(new MyURLEntry(label, url));
- assertEquals(url,feature.getUpdateSiteEntry().getURL());
- assertEquals(label,feature.getUpdateSiteEntry().getAnnotation());
-
- }
-
-
-
- /**
- * @see IFeature#testDiscoveryURLs()
- */
- public void testDiscoveryURLs() throws CoreException,MalformedURLException {
- IURLEntry[] urlInfo = new MyURLEntry[2];
- URL[] url = new URL[2];
- String[] label = new String[2];
- try {
- url[0] = new URL("http://www.oti.com/");
- url[1] = new URL("http://eclipse.org/");
- label[0] = "OTI Site";
- label[1] = "Eclipse Site";
- } catch (java.net.MalformedURLException e){} // impossible eh !
- DefaultFeature feature = getFeature();
- for (int i=0;i<2;i++){
- urlInfo[i] = new MyURLEntry(label[i],url[i]);
- }
- feature.setDiscoverySiteEntries(urlInfo);
- for (int i=0; i<feature.getDiscoverySiteEntries().length;i++){
- assertEquals(urlInfo[i],feature.getDiscoverySiteEntries()[i]);
- }
-
- }
-
-
- /**
- * @see IFeature#testProvider()
- */
- public void testProvider() throws CoreException,MalformedURLException {
- String provider = "not so dummy provider";
- IFeature feature = getFeature();
- ((Feature)feature).setProvider(provider);
- assertEquals(provider,feature.getProvider());
- }
-
-
- /**
- * @see IFeature#testDescription()
- */
- public void testDescription() throws CoreException,MalformedURLException {
- String desc = "pretty long description as a string with \r\n and \t and \n";
- IURLEntry info = new MyURLEntry(desc,null);
- DefaultFeature feature = getFeature();
- feature.setDescription(info);
- assertEquals(desc,feature.getDescription().getAnnotation());
- }
-
- /**
- * @see IFeature#testDescription()
- */
- public void testDescription1() throws CoreException, MalformedURLException {
- URL url = null;
- try {
- url = new URL("http://www.oti.com");
- } catch (MalformedURLException e){/*pretty impossible*/}
- IURLEntry info = new MyURLEntry(null,url);
- DefaultFeature feature = getFeature();
- feature.setDescription(info);
- assertEquals(url,feature.getDescription().getURL());
- }
-
- /**
- * @see IFeature#testDescription()
- */
- public void testDescription2() throws CoreException, MalformedURLException {
-
- URL url = null;
- try {
- url = new URL("http://www.oti.com");
- } catch (MalformedURLException e){/*pretty impossible*/}
- String desc = "pretty long description as a string with \r\n and \t and \n";
- IURLEntry info = new MyURLEntry(desc,url);
- DefaultFeature feature = getFeature();
- feature.setDescription(info);
- String result = feature.getDescription().getAnnotation();
- assertEquals(desc,result);
- assertEquals(url,feature.getDescription().getURL());
- }
-
-
-
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestDefaultPackageFeatureAPI.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestDefaultPackageFeatureAPI.java
deleted file mode 100644
index 214f28d..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestDefaultPackageFeatureAPI.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-
-
-public class TestDefaultPackageFeatureAPI extends UpdateManagerTestCase {
-
- private DefaultFeature remoteFeature=null;
-
- /**
- * Test the testFeatures()
- */
- public TestDefaultPackageFeatureAPI(String arg0) {
- super(arg0);
- }
-
- /**
- * the feature to test
- */
- private DefaultFeature getFeature() throws MalformedURLException, CoreException {
- if (remoteFeature == null){
- ISite site = SiteManager.getSite(SOURCE_FILE_SITE);
- URL id = UpdateManagerUtils.getURL(site.getURL(),"org.eclipse.update.core.feature1_1.0.0.jar",null);
- remoteFeature = new DefaultFeature(site);
- remoteFeature.setURL(id);
- }
- return remoteFeature;
- }
-
- /**
- * @see IFeature#testIdentifier()
- */
- public void testIdentifier() throws CoreException, MalformedURLException {
-
- String id1 = "features/org.eclipse.test.feature_1.0.0.jar";
- String id2 = "features/org.eclipse_test_feature.jar";
- VersionedIdentifier ident1 = new VersionedIdentifier("org.test1.ident1","1.0.0");
- VersionedIdentifier ident2 = new VersionedIdentifier("org.test1.ident2","1.0.0");
-
-
- ISite site = SiteManager.getSite(SOURCE_FILE_SITE);
-
- URL url1 = UpdateManagerUtils.getURL(site.getURL(),id1,null);
- remoteFeature = new DefaultFeature(site);
- remoteFeature.setURL(url1);
- remoteFeature.setIdentifier(ident1);
- assertEquals(ident1.toString(),remoteFeature.getVersionedIdentifier().toString());
-
- URL url2 = UpdateManagerUtils.getURL(site.getURL(),id2,null);
- remoteFeature = new DefaultFeature(site);
- remoteFeature.setURL(url2);
- remoteFeature.setIdentifier(ident2);
- assertEquals(ident2.toString(),remoteFeature.getVersionedIdentifier().toString());
- }
-
-
- /**
- * @see IFeature#testSite()
- */
- public void testSite() throws MalformedURLException, CoreException {
- String ident1 = "org.eclipse.test.feature_1.0.0.jar";
-
- ISite site = SiteManager.getSite(SOURCE_FILE_SITE);
-
- URL id = UpdateManagerUtils.getURL(site.getURL(),ident1,null);
- remoteFeature = new DefaultFeature(site);
- remoteFeature.setURL(id);
- assertEquals(site,remoteFeature.getSite());
-
- }
-
-
- /**
- * @see IFeature#testLabel()
- */
- public void testLabel() throws CoreException, MalformedURLException {
- String label = "dummy label";
- Feature feature = getFeature();
- feature.setLabel(label);
- assertEquals(label,feature.getLabel());
- }
-
-
- /**
- * @see IFeature#testUpdateURL()
- */
- public void testUpdateURL() throws CoreException, MalformedURLException {
- URL url = null;
- String label = "OTI Site";
- try {
- url = new URL("http://www.oti.com/");
-
- } catch (java.net.MalformedURLException e){} // impossible eh !
- DefaultFeature feature = getFeature();
- feature.setUpdateSiteEntry(new MyURLEntry(label, url));
- assertEquals(url,feature.getUpdateSiteEntry().getURL());
- assertEquals(label,feature.getUpdateSiteEntry().getAnnotation());
-
- }
-
-
-
- /**
- * @see IFeature#testDiscoveryURLs()
- */
- public void testDiscoveryURLs() throws CoreException, MalformedURLException {
- IURLEntry[] urlInfo = new URLEntry[2];
- URL[] url = new URL[2];
- String[] label = new String[2];
- try {
- url[0] = new URL("http://www.oti.com/");
- url[1] = new URL("http://eclipse.org/");
- label[0] = "OTI Site";
- label[1] = "Eclipse Site";
- } catch (java.net.MalformedURLException e){} // impossible eh !
- DefaultFeature feature = getFeature();
- for (int i=0;i<2;i++){
- urlInfo[i] = new MyURLEntry(label[i],url[i]);
- }
- feature.setDiscoverySiteEntries(urlInfo);
- for (int i=0; i<feature.getDiscoverySiteEntries().length;i++){
- assertEquals(urlInfo[i],feature.getDiscoverySiteEntries()[i]);
- }
-
-
- }
-
-
- /**
- * @see IFeature#testProvider()
- */
- public void testProvider() throws CoreException, MalformedURLException {
- String provider = "not so dummy provider";
- Feature feature = getFeature();
- feature.setProvider(provider);
- assertEquals(provider,feature.getProvider());
- }
-
-
- /**
- * @see IFeature#testDescription()
- */
- public void testDescription() throws CoreException, MalformedURLException {
- String desc = "pretty long description as a string with \r\n and \t and \n";
- IURLEntry info = new MyURLEntry(desc,null);
- DefaultFeature feature = getFeature();
- feature.setDescription(info);
- assertEquals(desc,feature.getDescription().getAnnotation());
- }
-
- /**
- * @see IFeature#testDescription()
- */
- public void testDescription1() throws CoreException, MalformedURLException {
- URL url = null;
- try {
- url = new URL("http://www.oti.com");
- } catch (MalformedURLException e){/*pretty impossible*/}
- IURLEntry info = new MyURLEntry(null,url);
- DefaultFeature feature = getFeature();
- feature.setDescription(info);
- assertEquals(url,feature.getDescription().getURL());
- }
-
- /**
- * @see IFeature#testDescription()
- */
- public void testDescription2() throws CoreException, MalformedURLException {
-
- URL url = null;
- try {
- url = new URL("http://www.oti.com");
- } catch (MalformedURLException e){/*pretty impossible*/}
- String desc = "pretty long description as a string with \r\n and \t and \n";
- IURLEntry info = new MyURLEntry(desc,url);
- DefaultFeature feature = getFeature();
- feature.setDescription(info);
- assertEquals(desc,feature.getDescription().getAnnotation());
- assertEquals(url,feature.getDescription().getURL());
- }
-
-
-
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestLocalSiteAPI.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestLocalSiteAPI.java
deleted file mode 100644
index 3cf093b..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestLocalSiteAPI.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.net.URL;
-
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.ICategory;
-import org.eclipse.update.core.Category;
-import org.eclipse.update.core.model.CategoryModel;
-import org.eclipse.update.core.model.SiteModel;
-import org.eclipse.update.core.model.*;
-import org.eclipse.update.core.FeatureReference;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestLocalSiteAPI extends UpdateManagerTestCase {
-
- /**
- * Test the getFeatures()
- */
- public TestLocalSiteAPI(String arg0) {
- super(arg0);
- }
-
- public void testFileParsing() throws Exception {
-
- ISite site = SiteManager.getSite(new URL(SOURCE_FILE_SITE,"siteTestLocalSite/"));
- IArchiveReference[] info = site.getArchives();
-
- if (info.length<=0){
- fail("no plugins in site: "+site.getURL().toExternalForm());
- }
-
- boolean found1 = false;
- boolean found2 = false;
- String name1= "plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar";
- String name2 = "plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar";
-
- for (int i =0; i<info.length; i++){
- if (info[i].getPath().equals(name1)) found1 = true;
- if (info[i].getPath().equals(name2)) found2 = true;
- }
-
- if (!found1 || !found2){
- fail("Cannot find plugin : org.eclipse.update.core.tests.feature1.plugin2 version 5.0.0 and 5.0.1 on the site, by parsing file system");
- }
-
-
- }
-
-
- public void testCategories() throws Exception {
-
- ISite site = SiteManager.getSite(SOURCE_FILE_SITE);
-
- ICategory category = new Category("category","Label of category");
-
- ((SiteModel)site).addCategoryModel((CategoryModel)category);
-
- ICategory[] categories = site.getCategories();
- boolean found = false;
- for (int index = 0; index < categories.length; index++) {
- ICategory element = categories[index];
- if (element.getName().equals("category")) found = true;
- }
- if (!found) fail("cannot find category 'category' in site");
-
- IFeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.addCategory(category);
- categories = ref.getCategories();
- found = false;
- for (int index = 0; index < categories.length; index++) {
- ICategory element = categories[index];
- if (element.getName().equals("category")) found = true;
- }
- if (!found) fail("cannot find category 'category' in feature");
-
- }
-
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestNestedFeatureAPI.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestNestedFeatureAPI.java
deleted file mode 100644
index affffd4..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestNestedFeatureAPI.java
+++ /dev/null
@@ -1,192 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.FeatureReference;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestNestedFeatureAPI extends UpdateManagerTestCase {
-
- /**
- * Test the testFeatures()
- */
- public TestNestedFeatureAPI(String arg0) {
- super(arg0);
- }
-
- /**
- * the feature to test
- */
- private IFeature getRootFeature() throws MalformedURLException, CoreException {
- ISite site = SiteManager.getSite(new URL(SOURCE_FILE_SITE,"nestedFeatureSiteTest/"));
- URL url =
- UpdateManagerUtils.getURL(
- site.getURL(),
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + "rootfeature.jar",
- null);
- FeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.setURL(url);
- ref.setType(ISite.DEFAULT_PACKAGED_FEATURE_TYPE);
- IFeature feature = ref.getFeature();
- return feature;
- }
-
- /**
- * the feature to test
- */
- private IFeature getChildFeature()
- throws MalformedURLException, CoreException {
-
- ISite site = SiteManager.getSite(new URL(SOURCE_FILE_SITE,"nestedFeatureSiteTest/"));
- URL url =
- UpdateManagerUtils.getURL(
- site.getURL(),
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + "org.eclipse.update.core.tests.childrenfeature_2.0.0.jar",
- null);
- FeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.setURL(url);
- ref.setType(ISite.DEFAULT_PACKAGED_FEATURE_TYPE);
- IFeature feature = ref.getFeature();
- return feature;
- }
-
- /*
- *
- */
- public void testNested() throws Exception {
-
- IFeature rootFeature = getRootFeature();
- IFeatureReference[] ref = rootFeature.getIncludedFeatureReferences();
- IFeature childFeature = getChildFeature();
- assertEquals(
- "Children feature are not equal",
- childFeature,
- ref[0].getFeature());
- }
-
-
-
- /**
- * the feature to test
- */
- private IFeature getRootFeature2() throws MalformedURLException, CoreException {
- ISite site = SiteManager.getSite(new URL(SOURCE_FILE_SITE,"nestedFeatureSiteTest2/"));
- URL url =
- UpdateManagerUtils.getURL(
- site.getURL(),
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + "rootfeature.jar",
- null);
- FeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.setURL(url);
- ref.setType(ISite.DEFAULT_PACKAGED_FEATURE_TYPE);
- IFeature feature = ref.getFeature();
- return feature;
- }
-
- /**
- * the feature to test
- */
- private IFeature getChildFeature2()
- throws MalformedURLException, CoreException {
-
- ISite site = SiteManager.getSite(new URL(SOURCE_FILE_SITE,"nestedFeatureSiteTest2/"));
- URL url =
- UpdateManagerUtils.getURL(
- site.getURL(),
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + "childrenfeature.jar",
- null);
- FeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.setURL(url);
- ref.setType(ISite.DEFAULT_PACKAGED_FEATURE_TYPE);
- IFeature feature = ref.getFeature();
- return feature;
- }
-
-
- /*
- *
- */
- public void testNested2() throws Exception {
-
- IFeature rootFeature = getRootFeature2();
- IFeatureReference[] ref = rootFeature.getIncludedFeatureReferences();
- IFeature childFeature = getChildFeature2();
- assertEquals(
- "Children feature are not equal",
- childFeature,
- ref[0].getFeature());
- }
-
-
- /**
- * the feature to test
- */
- private IFeature getRootFeature3() throws MalformedURLException, CoreException {
- ISite site = SiteManager.getSite(new URL(SOURCE_FILE_SITE,"nestedFeatureSiteTest3/"));
- URL url =
- UpdateManagerUtils.getURL(
- site.getURL(),
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + "rootfeature.jar",
- null);
- FeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.setURL(url);
- ref.setType(ISite.DEFAULT_PACKAGED_FEATURE_TYPE);
- IFeature feature = ref.getFeature();
- return feature;
- }
-
- /**
- * the feature to test
- */
- private IFeature getChildFeature3()
- throws MalformedURLException, CoreException {
-
- ISite site = SiteManager.getSite(new URL(SOURCE_FILE_SITE,"nestedFeatureSiteTest3/"));
- URL url =
- UpdateManagerUtils.getURL(
- site.getURL(),
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + "childrenfeature.jar",
- null);
- FeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.setURL(url);
- ref.setType(ISite.DEFAULT_PACKAGED_FEATURE_TYPE);
- IFeature feature = ref.getFeature();
- return feature;
- }
-
-
- /*
- *
- */
- public void testNested3() throws Exception {
-
- IFeature rootFeature = getRootFeature3();
- IFeatureReference[] ref = rootFeature.getIncludedFeatureReferences();
- IFeature childFeature = getChildFeature3();
- assertEquals(
- "Children feature are not equal",
- childFeature,
- ref[0].getFeature());
- }
-
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestPluginContainerAPI.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestPluginContainerAPI.java
deleted file mode 100644
index 97a697c..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestPluginContainerAPI.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestPluginContainerAPI extends UpdateManagerTestCase {
-
- private Site site;
- private DefaultFeature feature;
-
- /**
- * the Site to test
- */
- private Site getSite() throws CoreException, MalformedURLException {
- if (site == null) {
-
- site = (Site)SiteManager.getSite(new URL(SOURCE_FILE_SITE,"testAPI/"));
-
- }
- return site;
- }
-
- /**
- * the feature to test
- */
- private DefaultFeature getFeature() throws MalformedURLException, CoreException {
- if (feature == null) {
- ISite site = getSite();
- URL id = UpdateManagerUtils.getURL(site.getURL(),"org.eclipse.update.core.feature1_1.0.0.jar",null);
- feature = new DefaultFeature(site);
- feature.setURL(id);
- }
- return feature;
- }
-
- /**
- * Test the getFeatures()
- */
- public TestPluginContainerAPI(String arg0) throws CoreException {
- super(arg0);
- }
-
- public void testAbstractFeature() throws CoreException, MalformedURLException {
- PluginEntry pluginEntry = new PluginEntry();
- pluginEntry.setVersionedIdentifier(new VersionedIdentifier("id", "6"));
- Feature _feature = getFeature();
- ((DefaultFeature)_feature).addPluginEntry(pluginEntry);
- assertEquals(_feature.getPluginEntryCount(), 1);
- assertEquals(_feature.getPluginEntries()[0], pluginEntry);
-
- }
-
- public void testAbstactSite() throws CoreException, MalformedURLException {
- PluginEntry pluginEntry = new PluginEntry();
- pluginEntry.setVersionedIdentifier(new VersionedIdentifier("id", "6"));
- Site _site = getSite();
- _site.addPluginEntry(pluginEntry);
- assertEquals(_site.getPluginEntryCount(), 1);
- assertEquals(_site.getPluginEntries()[0], pluginEntry);
-
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestSiteAPI.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestSiteAPI.java
deleted file mode 100644
index b37a9be..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestSiteAPI.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.update.core.ISite;
-import org.eclipse.update.core.SiteManager;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestSiteAPI extends UpdateManagerTestCase {
-
- /**
- * Test the getFeatures()
- */
- public TestSiteAPI(String arg0) {
- super(arg0);
- }
-
- public void testURL() throws Exception {
-
- ISite site = SiteManager.getSite(SOURCE_FILE_SITE);
- assertEquals(new File(site.getURL().getFile()),new File(SOURCE_FILE_SITE.getFile()));
-
- ISite site2 = SiteManager.getSite(SOURCE_HTTP_SITE);
- assertEquals(site2.getURL(),new URL("http", getHttpHost(),getHttpPort(), bundle.getString("HTTP_PATH_1")+"site.xml"));
-
- }
-
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestSiteManagerAPI.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestSiteManagerAPI.java
deleted file mode 100644
index 1288530..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestSiteManagerAPI.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestSiteManagerAPI extends UpdateManagerTestCase {
-
- /**
- * Test the getFeatures()
- */
- public TestSiteManagerAPI(String arg0) {
- super(arg0);
- }
-
- public void testFile() throws Exception {
- ISite fileSite = SiteManager.getSite(TARGET_FILE_SITE);
- String site = fileSite.getURL().toExternalForm();
- assertEquals(TARGET_FILE_SITE.toExternalForm(), site);
- }
-
- public void testUnknown() throws Exception {
- URL url = new URL("ftp://255.255.255.255/");
- try {
- SiteManager.getSite(url);
- // FIXME apparently works !!!!!
- //fail("Connected to ftp://255.255.255.255/, should not happen");
- } catch (CoreException e){
- // expected
- }
- }
-
- public void testLocalSite() throws Exception {
-
- ILocalSite site = SiteManager.getLocalSite();
- IConfiguredSite[] instSites = site.getCurrentConfiguration().getConfiguredSites();
- assertTrue(instSites.length>0);
- System.out.println("Local Site:"+instSites[0].getSite().getURL().toExternalForm());
-
- ISite remoteSite = SiteManager.getSite(SOURCE_FILE_SITE_INSTALLED);
- IFeature remoteFeature = remoteSite.getFeatureReferences()[0].getFeature();
- instSites[0].getSite().install(remoteFeature,null,null);
-
- IFeatureReference[] features = site.getCurrentConfiguration().getConfiguredSites()[0].getSite().getFeatureReferences();
- assertTrue(features.length>0);
-
- //cleanup
- assertNotNull(remoteFeature);
- File file = new File(instSites[0].getSite().getURL().getFile()+File.separator+Site.DEFAULT_INSTALLED_FEATURE_PATH+remoteFeature.getVersionedIdentifier());
- UpdateManagerUtils.removeFromFileSystem(file);
- file = new File(instSites[0].getSite().getURL().getFile()+File.separator+Site.DEFAULT_PLUGIN_PATH+"org.eclipse.update.plugin1_1.1.1");
- UpdateManagerUtils.removeFromFileSystem(file);
- File localFile = new File(new URL(((SiteLocal)SiteManager.getLocalSite()).getLocationURL(),SiteLocal.SITE_LOCAL_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(new File(((InstallConfiguration)site.getCurrentConfiguration()).getURL().getFile()));
-
-
- }
-
-
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestUpdateManagerUtilsAPI.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestUpdateManagerUtilsAPI.java
deleted file mode 100644
index ade0fcd..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/api/TestUpdateManagerUtilsAPI.java
+++ /dev/null
@@ -1,227 +0,0 @@
-package org.eclipse.update.tests.api;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.ISite;
-import org.eclipse.update.core.SiteManager;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestUpdateManagerUtilsAPI extends UpdateManagerTestCase {
-
- /**
- * Test the getFeatures()
- */
- public TestUpdateManagerUtilsAPI(String arg0) {
- super(arg0);
- }
-
- public void testgetURL() throws Exception {
- URL url1 = new URL("http://www.eclipse.org");
- URL url2 = new URL("file://c:/hello");
- URL url3 = new URL("file:/home/eclipse/");
- URL url4 = new URL("ftp:/host:8080/path/");
- URL url5 = new URL("jar:file:/tmp/100100!/");
-
- String default1 = "default1/default";
- String default2 = "/default2/";
-
- String str1 = "http://dev.eclipse.org";
- String str2 = "relative1/path/";
- String str3 = "/relative2/path";
-
- String result1=null;
- String result2=null;
-
- //****************************************************************************************
- // 1.0
- result1 = UpdateManagerUtils.getURL(url1,str1,default1).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("1.0",result2,result1);
-
- // 1.1
- result1 = UpdateManagerUtils.getURL(null,str1,null).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("1.1",result2,result1);
-
- // 1.2
- result1 = UpdateManagerUtils.getURL(url1,str1,null).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("1.2",result2,result1);
-
- // 1.3
- result1 = UpdateManagerUtils.getURL(url1,str2,default1).toExternalForm();
- result2 = "http://www.eclipse.org/relative1/path/";
- assertEquals("1.3",result2,result1);
-
- // 1.4
- result1 = UpdateManagerUtils.getURL(url1,str3,default1).toExternalForm();
- result2 = "http://www.eclipse.org/relative2/path";
- assertEquals("1.4",result2,result1);
-
- // 1.5
- result1 = UpdateManagerUtils.getURL(url1,null,default1).toExternalForm();
- result2 = "http://www.eclipse.org/default1/default";
- assertEquals("1.5",result2,result1);
-
- // 1.6
- result1 = UpdateManagerUtils.getURL(url1,null,default2).toExternalForm();
- result2 = "http://www.eclipse.org/default2/";
- assertEquals("1.6",result2,result1);
-
- //****************************************************************************************
- // 2.0
- result1 = UpdateManagerUtils.getURL(url2,str1,default1).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("2.0",result2,result1);
-
- // 2.1
- result1 = UpdateManagerUtils.getURL(null,str1,null).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("2.1",result2,result1);
-
- // 2.2
- result1 = UpdateManagerUtils.getURL(url2,str1,null).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("2.2",result2,result1);
-
- // 2.3
- result1 = UpdateManagerUtils.getURL(url2,str2,default1).toExternalForm();
- result2 = "file://c:/relative1/path/";
- assertEquals("2.3",result2,result1);
-
- // 2.4
- result1 = UpdateManagerUtils.getURL(url2,str3,default1).toExternalForm();
- result2 = "file://c:/relative2/path";
- assertEquals("2.4",result2,result1);
-
- // 2.5
- result1 = UpdateManagerUtils.getURL(url2,null,default1).toExternalForm();
- result2 = "file://c:/default1/default";
- assertEquals("2.5",result2,result1);
-
- // 2.6
- result1 = UpdateManagerUtils.getURL(url2,null,default2).toExternalForm();
- result2 = "file://c:/default2/";
- assertEquals("2.6",result2,result1);
-
-
- //****************************************************************************************
- // 3.0
- result1 = UpdateManagerUtils.getURL(url3,str1,default1).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("3.0",result2,result1);
-
- // 3.1
- result1 = UpdateManagerUtils.getURL(null,str1,null).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("3.1",result2,result1);
-
- // 3.2
- result1 = UpdateManagerUtils.getURL(url3,str1,null).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("3.2",result2,result1);
-
- // 3.3
- result1 = UpdateManagerUtils.getURL(url3,str2,default1).toExternalForm();
- result2 = "file:/home/eclipse/relative1/path/";
- assertEquals("3.3",result2,result1);
-
- // 3.4
- result1 = UpdateManagerUtils.getURL(url3,str3,default1).toExternalForm();
- result2 = "file:/home/eclipse/relative2/path";
- assertEquals("3.4",result2,result1);
-
- // 3.5
- result1 = UpdateManagerUtils.getURL(url3,null,default1).toExternalForm();
- result2 = "file:/home/eclipse/default1/default";
- assertEquals("3.5",result2,result1);
-
- // 3.6
- result1 = UpdateManagerUtils.getURL(url3,null,default2).toExternalForm();
- result2 = "file:/home/eclipse/default2/";
- assertEquals("3.6",result2,result1);
-
- //****************************************************************************************
- // 4.0
- result1 = UpdateManagerUtils.getURL(url4,str1,default1).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("4.0",result2,result1);
-
- // 4.1
- result1 = UpdateManagerUtils.getURL(null,str1,null).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("4.1",result2,result1);
-
- // 4.2
- result1 = UpdateManagerUtils.getURL(url4,str1,null).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("4.2",result2,result1);
-
- // 4.3
- result1 = UpdateManagerUtils.getURL(url4,str2,default1).toExternalForm();
- result2 = "ftp:/host:8080/path/relative1/path/";
- assertEquals("4.3",result2,result1);
-
- // 4.4
- result1 = UpdateManagerUtils.getURL(url4,str3,default1).toExternalForm();
- result2 = "ftp:/host:8080/path/relative2/path";
- assertEquals("4.4",result2,result1);
-
- // 4.5
- result1 = UpdateManagerUtils.getURL(url4,null,default1).toExternalForm();
- result2 = "ftp:/host:8080/path/default1/default";
- assertEquals("4.5",result2,result1);
-
- // 4.6
- result1 = UpdateManagerUtils.getURL(url4,null,default2).toExternalForm();
- result2 = "ftp:/host:8080/path/default2/";
- assertEquals("4.6",result2,result1);
-
- //****************************************************************************************
- // 5.0
- result1 = UpdateManagerUtils.getURL(url5,str1,default1).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("5.0",result2,result1);
-
- // 5.1
- result1 = UpdateManagerUtils.getURL(null,str1,null).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("5.1",result2,result1);
-
- // 5.2
- result1 = UpdateManagerUtils.getURL(url5,str1,null).toExternalForm();
- result2 = "http://dev.eclipse.org";
- assertEquals("5.2",result2,result1);
-
- // 5.3
- result1 = UpdateManagerUtils.getURL(url5,str2,default1).toExternalForm();
- result2 = "jar:file:/tmp/100100!/relative1/path/";
- assertEquals("5.3",result2,result1);
-
- // 5.4
- result1 = UpdateManagerUtils.getURL(url5,str3,default1).toExternalForm();
- result2 = "jar:file:/tmp/100100!/relative2/path";
- assertEquals("5.4",result2,result1);
-
- // 5.5
- result1 = UpdateManagerUtils.getURL(url5,null,default1).toExternalForm();
- result2 = "jar:file:/tmp/100100!/default1/default";
- assertEquals("5.5",result2,result1);
-
- // 5.6
- result1 = UpdateManagerUtils.getURL(url5,null,default2).toExternalForm();
- result2 = "jar:file:/tmp/100100!/default2/";
- assertEquals("5.6",result2,result1);
-
- }
-
-
-
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/AllConfigurationsTests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/AllConfigurationsTests.java
deleted file mode 100644
index e24d856..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/AllConfigurationsTests.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/TestBackward.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/TestBackward.java
deleted file mode 100644
index ff1e277..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/TestBackward.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.update.tests.configurations;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.core.boot.IPlatformConfiguration;
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.model.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.internal.core.ConfigurationPolicy;
-import org.eclipse.update.internal.core.InternalSiteManager;
-import org.eclipse.update.internal.core.SiteLocal;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.internal.model.*;
-import org.eclipse.update.internal.model.ConfiguredSiteModel;
-import org.eclipse.update.internal.model.InstallConfigurationModel;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-import org.eclipse.update.tests.regularInstall.*;
-
-public class TestBackward extends UpdateManagerTestCase {
-
- /**
- * Test the getFeatures()
- */
- public TestBackward(String arg0) {
- super(arg0);
- }
-
- public void testSimpleBackward() throws Exception {
-
- // cleanup
- SiteLocal siteLocal = ((SiteLocal)SiteManager.getLocalSite());
- File localFile = new File(new URL(siteLocal.getLocationURL(),SiteLocal.SITE_LOCAL_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(new File(((InstallConfiguration)siteLocal.getCurrentConfiguration()).getURL().getFile()));
- InternalSiteManager.localSite=null;
-
- ILocalSite site = SiteManager.getLocalSite();
- ISite remoteSite = SiteManager.getSite(SOURCE_HTTP_SITE);
- IFeatureReference featureRef = remoteSite.getFeatureReferences()[0];
-
- IInstallConfiguration oldInstallConfig = site.getCurrentConfiguration();
- IConfiguredSite oldConfigSite = oldInstallConfig.getConfiguredSites()[0];
- oldConfigSite.install(featureRef.getFeature(),null,null);
- site.save();
-
-
- // Activity -> InstallConfig
- IInstallConfiguration current = site.getCurrentConfiguration();
- IActivity activity = current.getActivities()[0];
- assertTrue(activity.getInstallConfiguration().equals(current));
-
- // ConfigSite->InstallConfig
- IConfiguredSite newConfigSite = current.getConfiguredSites()[0];
- assertTrue(newConfigSite.getInstallConfiguration().equals(current));
-
- // cleanup
- localFile = new File(new URL(((SiteLocal)SiteManager.getLocalSite()).getLocationURL(),SiteLocal.SITE_LOCAL_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- localFile = new File(new URL(((SiteLocal)SiteManager.getLocalSite()).getLocationURL(),SiteLocal.DEFAULT_CONFIG_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
-
- }
-
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/TestRevert.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/TestRevert.java
deleted file mode 100644
index d5ac5d3..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/configurations/TestRevert.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package org.eclipse.update.tests.configurations;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.core.boot.IPlatformConfiguration;
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.model.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.internal.core.ConfigurationPolicy;
-import org.eclipse.update.internal.core.InternalSiteManager;
-import org.eclipse.update.internal.core.SiteLocal;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.internal.model.*;
-import org.eclipse.update.internal.model.ConfiguredSiteModel;
-import org.eclipse.update.internal.model.InstallConfigurationModel;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-import org.eclipse.update.tests.regularInstall.*;
-
-public class TestRevert extends UpdateManagerTestCase {
-
- /**
- * Test the getFeatures()
- */
- public TestRevert(String arg0) {
- super(arg0);
- }
-
- public void testSimpleRevertInstall() throws Exception {
-
- // cleanup
- SiteLocal siteLocal = ((SiteLocal)SiteManager.getLocalSite());
- File localFile = new File(new URL(siteLocal.getLocationURL(),SiteLocal.SITE_LOCAL_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(new File(((InstallConfiguration)siteLocal.getCurrentConfiguration()).getURL().getFile()));
- InternalSiteManager.localSite=null;
-
- ILocalSite site = SiteManager.getLocalSite();
- ISite remoteSite = SiteManager.getSite(SOURCE_HTTP_SITE);
- IFeatureReference featureRef = remoteSite.getFeatureReferences()[0];
- IFeatureReference featureRef2 = remoteSite.getFeatureReferences()[1];
- IFeature feature = featureRef.getFeature();
-
- // old config, no features installed
- IInstallConfiguration old = site.getCurrentConfiguration();
- ConfigurationPolicy excludepolicy = new ConfigurationPolicy();
- excludepolicy.setPolicy(IPlatformConfiguration.ISitePolicy.USER_EXCLUDE);
- IConfiguredSite oldConfigSite = old.getConfiguredSites()[0];
- excludepolicy.setConfiguredSite(oldConfigSite);
- ((ConfiguredSiteModel)oldConfigSite).setConfigurationPolicyModel((ConfigurationPolicyModel)excludepolicy);
-
- // install one feature
- IInstallConfiguration newConfig = site.cloneCurrentConfiguration();
- IConfiguredSite configSite = newConfig.getConfiguredSites()[0];
- if (!configSite.getSite().equals(oldConfigSite.getSite())) fail("Config sites are not equals");
- site.addConfiguration(newConfig);
- IFeatureReference installedFeature = configSite.install(feature,null,null);
- site.save();
-
- // unconfigure it
- configSite.unconfigure(installedFeature.getFeature());
-
- // install another feature
- IFeature feature2 = featureRef2.getFeature();
- IInstallConfiguration newConfig2 = site.cloneCurrentConfiguration();
- IConfiguredSite anotherConfigSite = newConfig2.getConfiguredSites()[0];
- if (!anotherConfigSite.getSite().equals(oldConfigSite.getSite())) fail("Config sites are not equals");
- site.addConfiguration(newConfig2);
- anotherConfigSite.install(feature2,null,null);
- site.save();
-
- // revert to old state where no feature where configured
- site.revertTo(old,null,null);
- site.save();
-
- // check
- String time = ""+site.getCurrentConfiguration().getCreationDate().getTime();
- File file = new File(new URL(((SiteLocal)SiteManager.getLocalSite()).getLocationURL(),"Config"+time+".xml").getFile());
- assertTrue("new configuration does not exist", file.exists());
-
-
- //find configured site
- IConfiguredSite newConfigSite = null;
- IConfiguredSite[] sites = site.getCurrentConfiguration().getConfiguredSites();
- for (int i = 0; i < sites.length; i++) {
- if (sites[i].getSite().equals(oldConfigSite.getSite())){
- newConfigSite = sites[i];
- break;
- }
- }
- if (newConfigSite==null) fail("Cannot find configuration site");
-
- int oldNumber = oldConfigSite.getConfiguredFeatures().length;
- int newNumber = newConfigSite.getConfiguredFeatures().length;
-
- //
- IFeatureReference[] configFeatures = newConfigSite.getConfiguredFeatures();
- for (int i = 0; i < configFeatures.length; i++) {
- System.out.println(configFeatures[i]);
- }
- assertTrue("Wrong number of configured features old:"+oldNumber+" new:"+newNumber,oldNumber==newNumber);
-
- // test only 2 install config in local site
- assertTrue("wrong number of unconfigured features",((ConfiguredSite)newConfigSite).getConfigurationPolicy().getUnconfiguredFeatures().length==2);
-
- // cleanup
- localFile = new File(new URL(((SiteLocal)SiteManager.getLocalSite()).getLocationURL(),SiteLocal.SITE_LOCAL_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- localFile = new File(new URL(((SiteLocal)SiteManager.getLocalSite()).getLocationURL(),SiteLocal.DEFAULT_CONFIG_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(file);
- time = ""+newConfig.getCreationDate().getTime();
- file = new File(new URL(((SiteLocal)SiteManager.getLocalSite()).getLocationURL(),"DefaultConfig"+time+".xml").getFile());
- UpdateManagerUtils.removeFromFileSystem(file);
- time = ""+newConfig2.getCreationDate().getTime();
- file = new File(new URL(((SiteLocal)SiteManager.getLocalSite()).getLocationURL(),"DefaultConfig"+time+".xml").getFile());
- UpdateManagerUtils.removeFromFileSystem(file);
- }
-
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/AllPlatformConfigurationTests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/AllPlatformConfigurationTests.java
deleted file mode 100644
index a0168e4..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/AllPlatformConfigurationTests.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.eclipse.update.tests.core.boot;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllPlatformConfigurationTests
- extends PlatformConfigurationTestCase {
- /**
- * Constructor
- */
- public AllPlatformConfigurationTests(String name) {
- super(name);
- }
-
- /**
- * List of API tests
- */
- public static Test suite() throws Exception {
- TestSuite suite = new TestSuite();
- suite.setName("PlatformConfiguration Tests");
-
- suite.addTest(new TestSuite(TestPlatCfgAPI.class));
-
- return suite;
- }
-
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/PlatformConfigurationTestCase.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/PlatformConfigurationTestCase.java
deleted file mode 100644
index 3f05e32..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/PlatformConfigurationTestCase.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.eclipse.update.tests.core.boot;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.File;
-import java.util.Date;
-
-import junit.framework.TestCase;
-
-public class PlatformConfigurationTestCase extends TestCase {
-
- protected String tempDir;
-
- public PlatformConfigurationTestCase(String name) {
- super(name);
- try {
- init();
- } catch (Exception e) {
- fail(e.toString());
- e.printStackTrace();
- }
- }
-
- protected void init() {
- }
-
- protected void setUp() {
- // get new temp directory for testcase
- String root = getTempDirectoryName();
- setupDirectory(root);
- tempDir = root;
- }
-
- protected void tearDown() {
- // cleanup testcase temp directory
- if (tempDir != null)
- cleanupDirectory(tempDir);
- }
-
- protected String getTempDirectoryName() {
- String tmp = System.getProperty("java.io.tmpdir");
- if (!tmp.endsWith(File.separator))
- tmp += File.separator;
- return tmp+"eclipse"+File.separator+(new Date().getTime()+File.separator);
- }
-
- protected void setupDirectory(String name) {
- File dir = new File(name);
- dir.mkdirs();
- }
-
- protected void cleanupDirectory(String name) {
- File dir = new File(name);
- deleteDirectory(dir);
- }
-
- private void deleteDirectory(File dir) {
- File[] list = dir.listFiles();
- if (list == null)
- return;
-
- for (int i=0; i<list.length; i++) {
- if (list[i].isDirectory())
- deleteDirectory(list[i]);
- if (!list[i].delete())
- System.out.println("Unable to delete "+list[i].toString());
- }
- }
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/TestPlatCfgAPI.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/TestPlatCfgAPI.java
deleted file mode 100644
index b33f3bd..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/TestPlatCfgAPI.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package org.eclipse.update.tests.core.boot;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Date;
-
-import junit.framework.Assert;
-import org.eclipse.core.boot.BootLoader;
-import org.eclipse.core.boot.IPlatformConfiguration;
-import org.eclipse.core.boot.IPlatformConfiguration.ISiteEntry;
-import org.eclipse.core.boot.IPlatformConfiguration.ISitePolicy;
-
-public class TestPlatCfgAPI extends PlatformConfigurationTestCase {
-
- public TestPlatCfgAPI(String arg0) {
- super(arg0);
- }
-
- public void testBasic() throws Exception {
-
- // get new config object
- IPlatformConfiguration cfig = null;
- try {
- cfig = BootLoader.getPlatformConfiguration(null);
- } catch (IOException e) {
- Assert.fail("0.0.0 "+e.toString());
- }
- ISiteEntry[] dflt = cfig.getConfiguredSites();
- Assert.assertEquals("0.0.1",dflt.length,0);
-
- // policy tests
- ISitePolicy p1 = cfig.createSitePolicy(ISitePolicy.USER_INCLUDE, null);
- Assert.assertEquals("1.0.0",p1.getType(),ISitePolicy.USER_INCLUDE);
- Assert.assertEquals("1.0.1",p1.getList().length,0);
- p1.setList(new String[] {"first"});
- Assert.assertEquals("1.0.2",p1.getList().length,1);
- Assert.assertEquals("1.0.3",p1.getList()[0],"first");
-
- ISitePolicy p2 = cfig.createSitePolicy(ISitePolicy.USER_EXCLUDE, new String[0]);
- Assert.assertEquals("1.1.0",p2.getType(),ISitePolicy.USER_EXCLUDE);
- Assert.assertEquals("1.1.1",p2.getList().length,0);
- p2.setList(new String[] {"first", "second"});
- Assert.assertEquals("1.1.2",p2.getList().length,2);
- Assert.assertEquals("1.1.3",p2.getList()[1],"second");
-
- // create some urls
- URL u1 = null;
- URL u2 = null;
-
- URL u4 = null;
- try {
- u1 = new URL("file:d:/temp/");
- u2 = new URL("file://localhost/temp/");
- new URL("http://some.server/temp/");
- u4 = new URL("http://bad.url");
- } catch (MalformedURLException e) {
- Assert.fail("2.0.0 unable to create URL "+e);
- }
-
- // site creation tests
- ISiteEntry s1 = cfig.createSiteEntry(u1,p2);
- Assert.assertEquals("3.0.0",s1.getURL(),u1);
- Assert.assertEquals("3.0.1",s1.getSitePolicy(),p2);
- s1.setSitePolicy(p1);
- Assert.assertEquals("3.0.2",s1.getSitePolicy(),p1);
-
- ISiteEntry s2 = cfig.createSiteEntry(u2,p1);
- Assert.assertEquals("3.1.0",s2.getURL(),u2);
- Assert.assertEquals("3.1.1",s2.getSitePolicy(),p1);
- s2.setSitePolicy(p2);
- Assert.assertEquals("3.1.2",s2.getSitePolicy(),p2);
-
- // configure site tests
- Assert.assertEquals("3.3.0",cfig.getConfiguredSites().length,0);
- cfig.configureSite(s1);
- Assert.assertEquals("3.3.1",cfig.getConfiguredSites().length,1);
- cfig.configureSite(s2);
- Assert.assertEquals("3.3.2",cfig.getConfiguredSites().length,2);
-
- // lookup site tests
- Assert.assertEquals("3.4.0",cfig.findConfiguredSite(u1),s1);
- Assert.assertEquals("3.4.1",cfig.findConfiguredSite(u2),s2);
- Assert.assertNull("3.4.3",cfig.findConfiguredSite(u4));
-
- // unconfigure site tests
- cfig.unconfigureSite(s1);
- Assert.assertEquals("3.5.0",cfig.getConfiguredSites().length,1);
- Assert.assertNull("3.5.1",cfig.findConfiguredSite(u1));
- cfig.unconfigureSite(s2);
- Assert.assertEquals("3.5.2",cfig.getConfiguredSites().length,0);
- Assert.assertNull("3.5.3",cfig.findConfiguredSite(u2));
- }
-
- public void testSaveRestore() throws Exception {
-
- Assert.assertNotNull("0.0 Unable to obtain temp directory",tempDir);
-
- // get new config object
- IPlatformConfiguration cfig = null;
- try {
- cfig = BootLoader.getPlatformConfiguration(null);
- } catch (IOException e) {
- Assert.fail("0.0.0 "+e.toString());
- }
- ISiteEntry[] sites = cfig.getConfiguredSites();
- Assert.assertEquals("0.0.1",sites.length,0);
-
- // create policies
- ISitePolicy p1 = cfig.createSitePolicy(ISitePolicy.USER_INCLUDE, null);
- ISitePolicy p2 = cfig.createSitePolicy(ISitePolicy.USER_EXCLUDE, new String[0]);
- ISitePolicy p3 = cfig.createSitePolicy(ISitePolicy.USER_INCLUDE, new String[] {"first"});
- ISitePolicy p4 = cfig.createSitePolicy(ISitePolicy.USER_EXCLUDE, new String[] {"first", "second"});
-
- // create some urls
- URL u1 = null;
- URL u2 = null;
- URL u3 = null;
- URL u4 = null;
-
- try {
- u1 = new URL("file:d:/temp/");
- u2 = new URL("file://localhost/temp/");
- u3 = new URL("http://some.server/temp/");
- u4 = new URL("http://another.server/temp/");
- new URL("http://one.more.server/temp/");
- } catch (MalformedURLException e) {
- Assert.fail("1.0 unable to create URL "+e);
- }
-
- // create and configure sites
- ISiteEntry s1 = cfig.createSiteEntry(u1,p1);
- cfig.configureSite(s1);
- ISiteEntry s2 = cfig.createSiteEntry(u2,p2);
- cfig.configureSite(s2);
- ISiteEntry s3 = cfig.createSiteEntry(u3,p3);
- cfig.configureSite(s3);
- ISiteEntry s4 = cfig.createSiteEntry(u4,p4);
- cfig.configureSite(s4);
- sites = cfig.getConfiguredSites();
- Assert.assertEquals("1.1",sites.length,4);
-
- // do save
- try {
- cfig.save();
- Assert.fail("2.0 was expecting IOException");
- } catch (IOException e) {
- }
-
- URL cfigURL = null;
- try {
- cfigURL = new URL("file:"+tempDir+(new Date()).getTime()+"_platform.cfg");
- } catch(MalformedURLException e) {
- Assert.fail("2.1 unable to create URL "+e);
- }
-
- try {
- cfig.save(cfigURL);
- } catch (IOException e) {
- Assert.fail("2.2 "+e);
- }
-
- // reload configuration
- try {
- BootLoader.getPlatformConfiguration(cfigURL);
- } catch (IOException e) {
- Assert.fail("2.3 "+e.toString());
- }
- ISiteEntry[] newSites = cfig.getConfiguredSites();
- Assert.assertEquals("2.4",newSites.length,4);
-
- // check what we've got
- Assert.assertEquals("3.0.1",sites[0].getURL(),newSites[0].getURL());
- Assert.assertEquals("3.0.2",sites[0].getSitePolicy().getType(),newSites[0].getSitePolicy().getType());
- Assert.assertEquals("3.0.3",sites[0].getSitePolicy().getList(),newSites[0].getSitePolicy().getList());
-
- Assert.assertEquals("3.1.1",sites[1].getURL(),newSites[1].getURL());
- Assert.assertEquals("3.1.2",sites[1].getSitePolicy().getType(),newSites[1].getSitePolicy().getType());
- Assert.assertEquals("3.1.3",sites[1].getSitePolicy().getList(),newSites[1].getSitePolicy().getList());
-
- Assert.assertEquals("3.2.1",sites[2].getURL(),newSites[2].getURL());
- Assert.assertEquals("3.2.2",sites[2].getSitePolicy().getType(),newSites[2].getSitePolicy().getType());
- Assert.assertEquals("3.2.3",sites[2].getSitePolicy().getList(),newSites[2].getSitePolicy().getList());
-
- Assert.assertEquals("3.3.1",sites[3].getURL(),newSites[3].getURL());
- Assert.assertEquals("3.3.2",sites[3].getSitePolicy().getType(),newSites[3].getSitePolicy().getType());
- Assert.assertEquals("3.3.3",sites[3].getSitePolicy().getList(),newSites[3].getSitePolicy().getList());
-
- }
-
- public void testCurrentConfiguration() throws Exception {
-
- Assert.assertNotNull("0.0 Unable to obtain temp directory",tempDir);
-
- // get new config object
- IPlatformConfiguration cfig = null;
- cfig = BootLoader.getCurrentPlatformConfiguration();
- cfig.getPluginPath();
- cfig.save();
- }
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/TestPlatCfgDefault.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/TestPlatCfgDefault.java
deleted file mode 100644
index b9b846d..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/core/boot/TestPlatCfgDefault.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.eclipse.update.tests.core.boot;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.IOException;
-
-import org.eclipse.core.boot.BootLoader;
-import org.eclipse.core.boot.IPlatformConfiguration;
-import org.eclipse.core.boot.IPlatformConfiguration.ISiteEntry;
-import org.eclipse.core.boot.IPlatformConfiguration.ISitePolicy;
-
-public class TestPlatCfgDefault
- extends PlatformConfigurationTestCase {
-
- public TestPlatCfgDefault(String arg0) {
- super(arg0);
- }
-
- public void testInitial() throws Exception {
- IPlatformConfiguration cfig = null;
- cfig = BootLoader.getCurrentPlatformConfiguration();
- ISiteEntry se = cfig.getConfiguredSites()[0];
- ISitePolicy sp = cfig.createSitePolicy(ISitePolicy.USER_EXCLUDE, new String[] {"1", "2","3","4","5","6","7","8","9","10","11","12"});
- se.setSitePolicy(sp);
- cfig.save();
- System.out.println("done ...");
- }
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/implementation/SiteFTP.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/implementation/SiteFTP.java
deleted file mode 100644
index 7bae9bd..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/implementation/SiteFTP.java
+++ /dev/null
@@ -1,228 +0,0 @@
-package org.eclipse.update.tests.implementation;
-
-import java.io.InputStream;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.IFeature;
-import org.eclipse.update.core.IFeatureReference;
-import org.eclipse.update.core.IPluginEntry;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.IURLEntry;
-import org.eclipse.update.internal.core.*;
-
-public class SiteFTP implements ISite {
-
- private URL url;
- public SiteFTP(URL url){
- this.url = url;
- }
-
- /*
- * @see ISite#getFeatureReferences()
- */
- public IFeatureReference[] getFeatureReferences() {
- return null;
- }
-
- /*
- * @see ISite#install(IFeature, FeatureVerification verifier,IProgressMonitor)
- */
- public IFeatureReference install(IFeature feature,IVerificationListener verificationListener, IProgressMonitor monitor) throws CoreException {
- return null;
- }
-
- /*
- * @see ISite#remove(IFeature, IProgressMonitor)
- */
- public void remove(IFeature feature, IProgressMonitor monitor) throws CoreException {
- }
-
- /*
- * @see ISite#addSiteChangedListener(IConfiguredSiteChangedListener)
- */
- public void addSiteChangedListener(IConfiguredSiteChangedListener listener) {
- }
-
- /*
- * @see ISite#removeSiteChangedListener(IConfiguredSiteChangedListener)
- */
- public void removeSiteChangedListener(IConfiguredSiteChangedListener listener) {
- }
-
- /*
- * @see ISite#getURL()
- */
- public URL getURL() {
- return url;
- }
-
- /*
- * @see ISite#getType()
- */
- public String getType() {
- return "org.eclipse.update.tests.ftp";
- }
-
- /*
- * @see ISite#getCategories()
- */
- public ICategory[] getCategories() {
- return null;
- }
-
- /*
- * @see ISite#getArchives()
- */
- public IArchiveReference[] getArchives() {
- return null;
- }
-
- /*
- * @see ISite#addCategory(ICategory)
- */
- public void addCategory(ICategory category) {
- }
-
- /*
- * @see ISite#save()
- */
- public void save() throws CoreException {
- }
-
- /*
- * @see IPluginContainer#getPluginEntries()
- */
- public IPluginEntry[] getPluginEntries() {
- return null;
- }
-
- /*
- * @see IPluginContainer#getPluginEntryCount()
- */
- public int getPluginEntryCount() {
- return 0;
- }
-
- /*
- * @see ISite#getDownloadSizeFor(IFeature)
- */
- public long getDownloadSizeFor(IFeature feature) {
- return 0;
- }
-
- /*
- * @see ISite#getInstallSizeFor(IFeature)
- */
- public long getInstallSizeFor(IFeature feature) {
- return 0;
- }
-
-
- /*
- * @see IPluginContainer#store(IPluginEntry, String, InputStream)
- */
- public void store(IPluginEntry entry, String name, InputStream inStream) throws CoreException {
- }
-
- /*
- * @see IAdaptable#getAdapter(Class)
- */
- public Object getAdapter(Class adapter) {
- return null;
- }
-
- /*
- * @see IPluginContainer#remove(IPluginEntry)
- */
- public void remove(IPluginEntry entry) throws CoreException {
- }
-
- /*
- * @see ISite#setSiteContentConsumer(ISiteContentConsumer)
- */
- public void setSiteContentConsumer(ISiteContentConsumer contentConsumer) {
- }
-
- /*
- * @see ISite#setSiteContentProvider(ISiteContentProvider)
- */
- public void setSiteContentProvider(ISiteContentProvider siteContentProvider) {
- }
-
- /*
- * @see ISite#getSiteContentProvider()
- */
- public ISiteContentProvider getSiteContentProvider() {
- return null;
- }
-
- /*
- * @see ISite#getDefaultPackagedFeatureType()
- */
- public String getDefaultPackagedFeatureType() {
- return null;
- }
-
- /*
- * @see ISite#store(IFeature, String, InputStream, IProgressMonitor)
- */
- public void store(IFeature feature, String name, InputStream inStream, IProgressMonitor monitor) throws CoreException {
- }
-
-
- /*
- * @see IPluginContainer#remove(IPluginEntry, IProgressMonitor)
- */
- public void remove(IPluginEntry entry, IProgressMonitor monitor) throws CoreException {
- }
-
- /*
- * @see ISite#getCategory(String)
- */
- public ICategory getCategory(String key) {
- return null;
- }
-
- /*
- * @see ISite#createSiteContentConsumer(IFeature)
- */
- public ISiteContentConsumer createSiteContentConsumer(IFeature feature) throws CoreException {
- return null;
- }
-
- /*
- * @see ISite#getFeatureReference(IFeature)
- */
- public IFeatureReference getFeatureReference(IFeature feature) {
- return null;
- }
-
- /*
- * @see ISite#getDescription()
- */
- public IURLEntry getDescription() {
- return null;
- }
-
- /*
- * @see ISite#getPluginEntriesOnlyReferencedBy(IFeature)
- */
- public IPluginEntry[] getPluginEntriesOnlyReferencedBy(IFeature feature) throws CoreException {
- return null;
- }
-
- /**
- * @see ISite#addPluginEntry(IPluginEntry)
- */
- public void addPluginEntry(IPluginEntry pluginEntry) {
- }
-
-}
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/implementation/SiteFTPFactory.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/implementation/SiteFTPFactory.java
deleted file mode 100644
index 5c4c10f..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/implementation/SiteFTPFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.update.tests.implementation;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.model.*;
-import org.eclipse.update.internal.core.SiteURLContentProvider;
-import org.eclipse.update.internal.core.URLEncoder;
-
-public class SiteFTPFactory extends SiteModelFactory implements ISiteFactory {
-
- public static final String FILE = "a/b/c/";
-
- /*
- * @see ISiteFactory#createSite(URL, boolean)
- */
- public ISite createSite(URL url)
- throws CoreException, InvalidSiteTypeException {
- ISite site = null;
- InputStream siteStream = null;
-
- try {
- URL resolvedURL = URLEncoder.encode(url);
- siteStream = resolvedURL.openStream();
-
- SiteModelFactory factory = (SiteModelFactory) this;
- factory.parseSite(siteStream);
-
- site = new SiteFTP(new URL("http://eclipse.org/" + FILE));
-
- } catch (MalformedURLException e) {
- throw Utilities.newCoreException("Unable to create URL", e);
- } catch (IOException e) {
- throw Utilities.newCoreException("Unable to access URL", e);
- } finally {
- try {
- siteStream.close();
- } catch (Exception e) {
- }
- }
- return site;
- }
-
- /*
- * @see SiteModelFactory#canParseSiteType(String)
- */
- public boolean canParseSiteType(String type) {
- return "org.eclipse.update.tests.core.ftp".equalsIgnoreCase(type);
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/AllModelTests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/AllModelTests.java
deleted file mode 100644
index 72e111c..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/AllModelTests.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.eclipse.update.tests.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.update.core.SiteManager;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-import java.io.File;
-import junit.framework.*;
-
-/**
- * Manages the API tests
- */
-public class AllModelTests extends UpdateManagerTestCase {
- /**
- * Constructor
- */
- public AllModelTests(String name) {
- super(name);
- }
-
- /**
- * List of API tests
- */
- public static Test suite() throws Exception {
- TestSuite suite = new TestSuite();
- suite.setName("Model Tests");
-
- suite.addTest(new TestSuite(FeatureMain.class));
- suite.addTest(new TestSuite(SiteMain.class));
-
- return suite;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/FeatureMain.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/FeatureMain.java
deleted file mode 100644
index ea3bdfc..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/FeatureMain.java
+++ /dev/null
@@ -1,184 +0,0 @@
-package org.eclipse.update.tests.model;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintWriter;
-import java.net.URL;
-import java.util.ResourceBundle;
-
-import org.eclipse.update.core.model.DefaultFeatureParser;
-import org.eclipse.update.core.model.FeatureModel;
-import org.eclipse.update.core.model.FeatureModelFactory;
-import org.eclipse.update.core.model.ImportModel;
-import org.eclipse.update.core.model.NonPluginEntryModel;
-import org.eclipse.update.core.model.PluginEntryModel;
-import org.eclipse.update.core.model.URLEntryModel;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class FeatureMain extends UpdateManagerTestCase {
-
- public FeatureMain(String testcase){
- super(testcase);
- }
-
- public void testMain() throws Exception {
-
- FeatureModelFactory factory = new FeatureModelFactory();
- InputStream is = null;
- FeatureModel feature = null;
- PrintWriter w = new PrintWriter(System.out);
-
- w.println("Parsing feature ...");
- try {
- is = FeatureMain.class.getResourceAsStream("feature.xml");
- feature = factory.parseFeature(is);
- } finally {
- if (is != null) {
- try { is.close();} catch(IOException e) {}
- }
- }
-
- String base = "http://another.server/feature.xml";
- w.println("Resolving feature using "+base+" ...");
- ResourceBundle bundle = null;
- bundle = ResourceBundle.getBundle("org/eclipse/update/tests/model/test");
- feature.resolve(new URL(base), bundle);
-
- w.close();
- }
-
- private static void writeFeature(PrintWriter w, int level, FeatureModel feature) {
- if (feature == null) return;
-
- String in = getIndent(level);
- w.println(in+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
-
- w.println(in+"<feature");
- w.println(in+" "+"id=\""+feature.getFeatureIdentifier()+"\"");
- w.println(in+" "+"version=\""+feature.getFeatureVersion()+"\"");
- w.println(in+" "+"label=\""+feature.getLabel()+"\"");
- w.println(in+" "+"provider-name=\""+feature.getProvider()+"\"");
- w.println(in+" "+"image=\""+feature.getImageURLString()+"\" -> "+feature.getImageURL());
- w.println(in+" "+"os=\""+feature.getOS()+"\"");
- w.println(in+" "+"ws=\""+feature.getWS()+"\"");
- w.println(in+" "+"nl=\""+feature.getNL()+"\"");
- w.println(in+" "+"application=\""+feature.getApplication()+"\"");
- w.println(in+" "+">");
-
- writeDescription(w, level+1, feature.getDescriptionModel());
- writeCopyright(w, level+1, feature.getCopyrightModel());
- writeLicense(w, level+1, feature.getLicenseModel());
- writeURLs(w, level+1, feature);
- writePrereqs(w, level+1, feature);
- writePluginEntries(w, level+1, feature);
- writeNonPluginEntries(w, level+1, feature);
-
- w.println(in+"</feature>");
- }
-
- private static void writeDescription(PrintWriter w, int level, URLEntryModel ue) {
- String in = getIndent(level);
- w.println("");
- w.println(in+"<description url=\""+ue.getURLString()+"\" -> "+ue.getURL()+">");
- w.println(in+ue.getAnnotation());
- w.println(in+"</description>");
- }
-
- private static void writeCopyright(PrintWriter w, int level, URLEntryModel ue) {
- String in = getIndent(level);
- w.println("");
- w.println(in+"<copyright url=\""+ue.getURLString()+"\" -> "+ue.getURL()+">");
- w.println(in+ue.getAnnotation());
- w.println(in+"</copyright>");
- }
-
- private static void writeLicense(PrintWriter w, int level, URLEntryModel ue) {
- String in = getIndent(level);
- w.println("");
- w.println(in+"<license url=\""+ue.getURLString()+"\" -> "+ue.getURL()+">");
- w.println(in+ue.getAnnotation());
- w.println(in+"</license>");
- }
-
- private static void writeURLs(PrintWriter w, int level, FeatureModel feature) {
- String in = getIndent(level);
- String in2 = getIndent(level+1);
- w.println("");
- w.println(in+"<url>");
-
- URLEntryModel update = feature.getUpdateSiteEntryModel();
- w.println(in2+"<update");
- w.println(in2+" "+"url=\""+update.getURLString()+"\" -> "+update.getURL());
- w.println(in2+" "+"label=\""+update.getAnnotation()+"\"");
- w.println(in2+" "+"/>");
-
- URLEntryModel[] discovery = feature.getDiscoverySiteEntryModels();
- for (int i=0; i<discovery.length; i++) {
- w.println(in2+"<discovery");
- w.println(in2+" "+"url=\""+discovery[i].getURLString()+"\" -> "+discovery[i].getURL());
- w.println(in2+" "+"label=\""+discovery[i].getAnnotation()+"\"");
- w.println(in2+" "+"/>");
- }
-
- w.println(in+"</url>");
- }
-
- private static void writePrereqs(PrintWriter w, int level, FeatureModel feature) {
- String in = getIndent(level);
- String in2 = getIndent(level+1);
- w.println("");
- w.println(in+"<requires>");
-
- ImportModel[] imp = feature.getImportModels();
- for (int i=0; i<imp.length; i++) {
- w.println(in2+"<import");
- w.println(in2+" "+"plugin=\""+imp[i].getPluginIdentifier()+"\"");
- w.println(in2+" "+"version=\""+imp[i].getPluginVersion()+"\"");
- w.println(in2+" "+"match=\""+imp[i].getMatchingRuleName()+"\"");
- w.println(in2+" "+"/>");
- }
-
- w.println(in+"</requires>");
- }
-
- private static void writePluginEntries(PrintWriter w, int level, FeatureModel feature) {
- String in = getIndent(level);
- w.println("");
-
- PluginEntryModel[] plugin = feature.getPluginEntryModels();
- for (int i=0; i<plugin.length; i++) {
- w.println(in+"<plugin");
- w.println(in+" "+"id=\""+plugin[i].getPluginIdentifier()+"\"");
- w.println(in+" "+"version=\""+plugin[i].getPluginVersion()+"\"");
- w.println(in+" "+"fragment=\""+plugin[i].isFragment()+"\"");
- w.println(in+" "+"os=\""+plugin[i].getOS()+"\"");
- w.println(in+" "+"ws=\""+plugin[i].getWS()+"\"");
- w.println(in+" "+"nl=\""+plugin[i].getNL()+"\"");
- w.println(in+" "+"download-size=\""+plugin[i].getDownloadSize()+"\"");
- w.println(in+" "+"install-size=\""+plugin[i].getInstallSize()+"\"");
- w.println(in+" "+"/>");
- }
- }
-
- private static void writeNonPluginEntries(PrintWriter w, int level, FeatureModel feature) {
- String in = getIndent(level);
- w.println("");
-
- NonPluginEntryModel[] data = feature.getNonPluginEntryModels();
- for (int i=0; i<data.length; i++) {
- w.println(in+"<data");
- w.println(in+" "+"id=\""+data[i].getIdentifier()+"\"");
- w.println(in+" "+"download-size=\""+data[i].getDownloadSize()+"\"");
- w.println(in+" "+"install-size=\""+data[i].getInstallSize()+"\"");
- w.println(in+" "+"/>");
- }
- }
-
-
- private static String getIndent(int level) {
- String indent = "";
- for (int i=0; i<level; i++)
- indent += " ";
- return indent;
- }
-}
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/SiteMain.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/SiteMain.java
deleted file mode 100644
index 043c336..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/SiteMain.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package org.eclipse.update.tests.model;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintWriter;
-import java.net.URL;
-
-import org.eclipse.update.core.model.*;
-import org.eclipse.update.core.model.ArchiveReferenceModel;
-import org.eclipse.update.core.model.DefaultSiteParser;
-import org.eclipse.update.core.model.FeatureReferenceModel;
-import org.eclipse.update.core.model.CategoryModel;
-import org.eclipse.update.core.model.SiteModel;
-import org.eclipse.update.core.model.SiteModelFactory;
-import org.eclipse.update.core.model.URLEntryModel;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class SiteMain extends UpdateManagerTestCase {
-
- public SiteMain(String name){
- super(name);
- }
-
- public void testMain() throws Exception {
-
- PrintWriter w = new PrintWriter(System.out);
- process("site_old_format.xml",w);
- process("site.xml",w);
- try {
- process("site_with_type.xml",w);
- fail("InvalidSiteTypeException not thrown");
- } catch (InvalidSiteTypeException e) {
- assertEquals(e.getNewType(),"some.other.site.type");
- } finally {
- w.close();
- }
- }
-
- private static void process(String xml, PrintWriter w) throws Exception {
-
- SiteModelFactory factory = new SiteModelFactory();
- InputStream is = null;
- SiteModel site = null;
-
- w.println("");
- w.println("Parsing site map ...");
- try {
- is = SiteMain.class.getResourceAsStream(xml);
- site = factory.parseSite(is);
- } finally {
- if (is != null) {
- try { is.close();} catch(IOException e) {}
- }
- }
-
- if (site == null) return;
-
- String base = "http://another.server/site.xml";
- w.println("Resolving site using "+base+" ...");
- site.resolve(new URL(base), null);
-
- w.println("Writing site ...");
- writeSite(w,0,site);
- }
-
- private static void writeSite(PrintWriter w, int level, SiteModel site) {
- if (site == null) return;
-
- String in = getIndent(level);
- w.println(in+"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
-
- w.println(in+"<site");
- w.println(in+" "+"type=\""+site.getType()+"\"");
- w.println(in+" "+">");
-
- writeDescription(w, level+1, site.getDescriptionModel());
- writeFeatures(w, level+1, site);
- writeArchives(w, level+1, site);
- writeCategoryDefs(w, level+1, site);
-
- w.println(in+"</feature>");
- }
-
- private static void writeDescription(PrintWriter w, int level, URLEntryModel ue) {
- if (ue == null) return;
- String in = getIndent(level);
- w.println("");
- w.println(in+"<description url=\""+ue.getURLString()+"\" -> "+ue.getURL()+">");
- w.println(in+ue.getAnnotation());
- w.println(in+"</description>");
- }
-
- private static void writeFeatures(PrintWriter w, int level, SiteModel site) {
- String in = getIndent(level);
- getIndent(level+1);
- w.println("");
-
- FeatureReferenceModel[] features = site.getFeatureReferenceModels();
- for (int i=0; i<features.length; i++) {
- w.println(in+"<feature");
- w.println(in+" "+"type=\""+features[i].getType()+"\"");
- w.println(in+" "+"url=\""+features[i].getURLString()+"\" -> "+features[i].getURL());
- w.println(in+" "+">");
- writeCategories(w, level+1, features[i]);
- w.println(in+"</feature>");
- }
- }
-
- private static void writeArchives(PrintWriter w, int level, SiteModel site) {
- String in = getIndent(level);
- w.println("");
-
- ArchiveReferenceModel[] archive = site.getArchiveReferenceModels();
- for (int i=0; i<archive.length; i++) {
- w.println(in+"<archive");
- w.println(in+" "+"path=\""+archive[i].getPath()+"\"");
- w.println(in+" "+"url=\""+archive[i].getURLString()+"\" -> "+archive[i].getURL());
- w.println(in+" "+"/>");
- }
- }
-
- private static void writeCategoryDefs(PrintWriter w, int level, SiteModel site) {
- String in = getIndent(level);
- getIndent(level+1);
- w.println("");
-
- CategoryModel[] cat = site.getCategoryModels();
- for (int i=0; i<cat.length; i++) {
- w.println(in+"<category-def");
- w.println(in+" "+"name=\""+cat[i].getName()+"\"");
- w.println(in+" "+"label=\""+cat[i].getLabel()+"\"");
- w.println(in+" "+">");
- writeDescription(w, level+1, cat[i].getDescriptionModel());
- w.println(in+"</category-def>");
- }
- }
-
- private static void writeCategories(PrintWriter w, int level, FeatureReferenceModel feature) {
- String in = getIndent(level);
- String[] cat = feature.getCategoryNames();
- for (int i=0; i<cat.length; i++) {
- w.println(in+"<category name=\""+cat[i]+"\"");
- }
- }
-
- private static String getIndent(int level) {
- String indent = "";
- for (int i=0; i<level; i++)
- indent += " ";
- return indent;
- }
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/feature.xml b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/feature.xml
deleted file mode 100644
index 1db9650..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/feature.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<feature id="my.feature" version="3.7.1" label="%s1" provider-name="VK Inc."
- image="images/feature.gif" os="Win32" ws="Win32" nl="en_CA,en_US"
- application="org.eclipse.ui.workbench">
-
- <install-handler url="install/handler.html" library="custom.jar" class="InstallHandler"/>
-
- <description url="http://www.tools.com/features/my.feature">
- Description of my.feature
- </description>
-
- <copyright url="copyright/my.feature">
- Copyright for my.feature
- </copyright>
-
- <license url="%url1">
- License for my.feature
- </license>
-
- <url>
- <update url="http://www.tools.com/update" label="Update site"/>
- <discovery url="http://www.tools.com/discovery1" label="%s2"/>
- <discovery url="%url2" label="%s3 Discovery site 2"/>
- <discovery url="%url3 http://www.tools.com/discovery3" label="Discovery site 3"/>
- </url>
-
- <requires>
- <import plugin="plugin.1" version="1.0.0" match="perfect"/>
- <import plugin="plugin.2" version="3.2.0"/>
- <import plugin="plugin.3"/>
- </requires>
-
- <plugin id="my.plugin.1" version="1.0.0" fragment="true"
- os="Win32" ws="Win32" nl="en_US" download-size="23456" install-size="1234567"/>
- <plugin id="my.plugin.2" version="1.0.1"/>
- <plugin id="my.plugin.3" version="1.0.2"/>
-
- <data id="examples.zip" download-size="23456" install-size="1234567"/>
- <data id="custom/rt.jar"/>
-
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site.xml b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site.xml
deleted file mode 100644
index 7516f26..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<site>
-
- <description url="http://www.tools.com/updateSite">
- Site description
- </description>
-
- <feature type="my.feature.type" url="feature1.jar">
- <category name="tools"/>
- <category name="utilities"/>
- <category name="windows.tools"/>
- </feature>
-
- <feature type="" url="file:/feature2.jar">
- <category name="utilities"/>
- </feature>
-
-
- <archive path="first/archive" url="archive1.jar"/>
- <archive path="second/archive" url="archive2.jar"/>
-
- <category-def name="tools" label="Development Tools">
- <description url="http://www.tools.com/tools">
- This is description for tools
- </description>
- </category-def>
-
- <category-def name="utilities" label="Utilities">
- <description url="tools.html"/>/
- </category-def>
-
- <category-def name="windows.tools" label="Windows Development Tools"/>
-
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site_old_format.xml b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site_old_format.xml
deleted file mode 100644
index dd10ef7..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site_old_format.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<site url="www.tools.com/updateSite">
-
- <feature type="my.feature.type" url="feature1.jar">
- <category name="tools"/>
- <category name="utilities"/>
- <category name="windows.tools"/>
- </feature>
-
- <feature type="" url="feature2.jar">
- <category name="utilities"/>
- </feature>
-
- <archive path="first/archive" url="archive1.jar"/>
- <archive path="second/archive" url="archive2.jar"/>
-
- <category-def name="tools" label="Development Tools">
- <description url="http://www.tools.com/tools">
- This is description for tools
- </description>
- </category-def>
-
- <category-def name="utilities" label="Utilities">
- <description url="utilities.html"/>
- </category-def>
-
- <category-def name="windows.tools" label="Windows Development Tools"/>
-
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site_with_type.xml b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site_with_type.xml
deleted file mode 100644
index 2ee3a3f..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/site_with_type.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<site url="http://www.tools.com/updateSite" type="some.other.site.type">
-
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/test.properties b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/test.properties
deleted file mode 100644
index d4d3b20..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/model/test.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-s1 = String 1
-s2 = String 2
-url1 = relative/index.html
-url2 = http://some.server/tools.html
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nativeTests/TestLocalSystemInfo.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nativeTests/TestLocalSystemInfo.java
deleted file mode 100644
index e714e68..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nativeTests/TestLocalSystemInfo.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.eclipse.update.tests.nativeTests;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import java.io.File;
-
-import org.eclipse.update.configuration.IVolume;
-import org.eclipse.update.configuration.LocalSystemInfo;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestLocalSystemInfo extends UpdateManagerTestCase {
-
- /**
- * Test the natives
- */
- public TestLocalSystemInfo(String arg0) {
- super(arg0);
- }
-
- public void testNative() throws Exception {
- // space
- LocalSystemInfo system = new LocalSystemInfo();
-
- // mount point
- IVolume[] a = system.getVolumes();
- if (a==null) throw new Exception("cannot find native library");
- System.out.println("Found "+a.length+" mount points.");
- for (int i =0; i<a.length;i++){
- System.out.print("#"+i+" - "+a[i]);
-
- File root = a[i].getFile();
- String label = a[i].getLabel();
- if (label==null) label="NO LABEL";
- int type = a[i].getType();
- long size = system.getFreeSpace(root);
- System.out.println(" ->:"+label+":"+getType(type)+":"+getSize(size));
- }
- }
-
- private String getType(int type){
- switch (type) {
- case LocalSystemInfo.VOLUME_FIXED :
- return "VOLUME FIXED";
- case LocalSystemInfo.VOLUME_REMOTE :
- return "VOLUME REMOTE";
- case LocalSystemInfo.VOLUME_REMOVABLE :
- return "VOLUME REMOVABLE";
- case LocalSystemInfo.VOLUME_CDROM :
- return "VOLUME CDROM";
- case LocalSystemInfo.VOLUME_UNKNOWN :
- return "VOLUME UNKNOWN";
- default :
- return "WRONG VOLUME INFO";
- }
- }
-
- private String getSize(long size){
- if (size==LocalSystemInfo.SIZE_UNKNOWN) return "UNKNOWN SIZE";
-
- long kb = size/(1024*1024);
- return new String(size+" ("+kb+"MB)");
- }
-}
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nestedfeatures/AllNestedTests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nestedfeatures/AllNestedTests.java
deleted file mode 100644
index 78586dc..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nestedfeatures/AllNestedTests.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.eclipse.update.tests.nestedfeatures;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.update.tests.UpdateManagerTestCase;
-import junit.framework.*;
-
-public class AllNestedTests extends UpdateManagerTestCase {
-public AllNestedTests(String name) {
- super(name);
-}
-public static Test suite() {
- TestSuite suite = new TestSuite();
- suite.setName("Nested Install Tests");
-
- // the following will take all teh test methods in teh class that start with 'test'
-
- suite.addTest(new TestSuite(TestInstall.class));
-
- // or you can specify the method
- //suite.addTest(new TestGetFeature("methodThatDoesNotStartWithtest"));
-
- return suite;
-}
-}
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nestedfeatures/TestInstall.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nestedfeatures/TestInstall.java
deleted file mode 100644
index 2dc9a4e..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/nestedfeatures/TestInstall.java
+++ /dev/null
@@ -1,290 +0,0 @@
-package org.eclipse.update.tests.nestedfeatures;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestInstall extends UpdateManagerTestCase {
-
- /**
- * Constructor for Test1
- */
- public TestInstall(String arg0) {
- super(arg0);
- }
-
- public void testFileSite() throws Exception {
-
- ISite remoteSite =
- SiteManager.getSite(new URL(SOURCE_FILE_SITE, "nestedFeatureSiteTest/"));
- IFeature remoteFeature = remoteSite.getFeatureReferences()[0].getFeature();
- ISite localSite = SiteManager.getSite(TARGET_FILE_SITE);
- localSite.install(remoteFeature, null, null);
-
- // verify root Feature
- String site = localSite.getURL().getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue(
- "plugin files not installed locally:" + pluginFile,
- pluginFile.exists());
- File pluginXMLFile =
- new File(
- site,
- Site.DEFAULT_PLUGIN_PATH + pluginName + File.separator + "plugin.xml");
- assertTrue("plugin.xml file not installed locally", pluginXMLFile.exists());
-
- File featureFile =
- new File(
- site,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier().toString());
- assertTrue(
- "feature info not installed locally:" + featureFile,
- featureFile.exists());
-
- // clean plugins & feature
- for (int i = 0; i < entries.length; i++) {
- pluginName = entries[0].getVersionedIdentifier().toString();
- pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- }
- UpdateManagerUtils.removeFromFileSystem(featureFile);
-
- // verify child Feature
- IFeature childFeature =
- remoteFeature.getIncludedFeatureReferences()[0].getFeature();
- entries = childFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
- pluginName = entries[0].getVersionedIdentifier().toString();
- pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue(
- "plugin files not installed locally:" + pluginFile,
- pluginFile.exists());
- pluginXMLFile =
- new File(
- site,
- Site.DEFAULT_PLUGIN_PATH + pluginName + File.separator + "plugin.xml");
- assertTrue("plugin.xml file not installed locally", pluginXMLFile.exists());
-
- featureFile =
- new File(
- site,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + childFeature.getVersionedIdentifier().toString());
- assertTrue(
- "feature info not installed locally:" + featureFile,
- featureFile.exists());
-
- // clean plugins
- for (int i = 0; i < entries.length; i++) {
- pluginName = entries[0].getVersionedIdentifier().toString();
- pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- }
-
- // clean features
- UpdateManagerUtils.removeFromFileSystem(featureFile);
- UpdateManagerUtils.removeFromFileSystem(new File(localSite.getURL().getFile()));
- }
-
- /**
- *
- */
- public void testHTTPSite() throws Exception {
-
- ISite remoteSite =
- SiteManager.getSite(new URL(SOURCE_HTTP_SITE, "nestedFeatureSiteTest/"));
- IFeatureReference[] features = remoteSite.getFeatureReferences();
- IFeature remoteFeature = null;
-
- if (features == null || features.length == 0)
- fail("No features on the site");
-
- for (int i = 0; i < features.length; i++) {
- if (features[i].getURL().toExternalForm().endsWith("rootfeature.jar")) {
- remoteFeature = features[i].getFeature();
- break;
- }
- }
-
- assertNotNull("Cannot find rootfeature.jar on site", remoteFeature);
- ISite localSite = SiteManager.getSite(TARGET_FILE_SITE);
- localSite.install(remoteFeature, null, null);
-
- // rootfeature.jar should not be in the local site
- IFeatureReference[] localFeatures = localSite.getFeatureReferences();
- if (localFeatures == null || localFeatures.length == 0)
- fail("No features on the target site");
-
- boolean found = false;
- for (int i = 0; i < localFeatures.length; i++) {
- if (localFeatures[i].getURL().toExternalForm().endsWith("rootfeature.jar")) {
- found = true;
- break;
- }
- }
-
- assertTrue(
- "Found rootfeature.jar on target site. Target site feature ref shouldnot contain JAR file",
- !found);
-
- // check root
- String site = localSite.getURL().getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
-
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue(
- "plugin files not installed locally:" + pluginFile,
- pluginFile.exists());
- File pluginXMLFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName+ File.separator + "plugin.xml");
- assertTrue(
- "plugin info not installed locally:" + pluginXMLFile,
- pluginXMLFile.exists());
-
- File featureFile =
- new File(
- site,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier().toString());
- assertTrue("feature info not installed locally", featureFile.exists());
-
- // clean plugins & feature
- for (int i = 0; i < entries.length; i++) {
- pluginName = entries[0].getVersionedIdentifier().toString();
- pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- }
- UpdateManagerUtils.removeFromFileSystem(featureFile);
-
- // verify child Feature
- IFeature childFeature =
- remoteFeature.getIncludedFeatureReferences()[0].getFeature();
- entries = childFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
- pluginName = entries[0].getVersionedIdentifier().toString();
- pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue(
- "plugin files not installed locally:" + pluginFile,
- pluginFile.exists());
- pluginXMLFile =
- new File(
- site,
- Site.DEFAULT_PLUGIN_PATH + pluginName + File.separator + "plugin.xml");
- assertTrue("plugin.xml file not installed locally", pluginXMLFile.exists());
-
- featureFile =
- new File(
- site,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + childFeature.getVersionedIdentifier().toString());
- assertTrue(
- "feature info not installed locally:" + featureFile,
- featureFile.exists());
-
- // clean plugins
- for (int i = 0; i < entries.length; i++) {
- pluginName = entries[0].getVersionedIdentifier().toString();
- pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- }
-
- // clean features
- UpdateManagerUtils.removeFromFileSystem(featureFile);
- UpdateManagerUtils.removeFromFileSystem(new File(localSite.getURL().getFile()));
- }
-
- public void testInstall() throws Exception {
-
- // cleanup local files...
- URL localURL = ((SiteLocal) SiteManager.getLocalSite()).getLocationURL();
- File localFile =
- new File(new URL(localURL, SiteLocal.SITE_LOCAL_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
-
- URL INSTALL_SITE = null;
- try {
- INSTALL_SITE = new URL(SOURCE_FILE_SITE, "nestedFeatureSiteTest/");
- } catch (Exception e) {
- fail(e.toString());
- e.printStackTrace();
- }
-
- ISite remoteSite = SiteManager.getSite(INSTALL_SITE);
- IFeatureReference[] features = remoteSite.getFeatureReferences();
- IFeature remoteFeature = null;
-
- if (features == null || features.length == 0)
- fail("No features on the site");
-
- for (int i = 0; i < features.length; i++) {
- if (features[i].getURL().toExternalForm().endsWith("rootfeature.jar")) {
- remoteFeature = features[i].getFeature();
- break;
- }
- }
-
- assertNotNull("Cannot find rootfeature.jar on site", remoteFeature);
- ILocalSite localSite = SiteManager.getLocalSite();
- IConfiguredSite site =
- localSite.getCurrentConfiguration().getConfiguredSites()[0];
-
- site.install(remoteFeature, null, null);
-
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
-
- String sitePath = site.getSite().getURL().getFile();
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(sitePath, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin info not installed locally", pluginFile.exists());
-
- File featureFile =
- new File(
- sitePath,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier().toString());
- assertTrue("feature info not installed locally", featureFile.exists());
-
- //cleanup
- File file =
- new File(
- site.getSite().getURL().getFile()
- + File.separator
- + Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier());
- // clean plugins
- for (int i = 0; i < entries.length; i++) {
- pluginName = entries[0].getVersionedIdentifier().toString();
- pluginFile =
- new File(
- site.getSite().getURL().getFile(),
- Site.DEFAULT_PLUGIN_PATH + pluginName);
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- }
-
- UpdateManagerUtils.removeFromFileSystem(file);
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(
- new File(
- ((InstallConfiguration) localSite.getCurrentConfiguration())
- .getURL()
- .getFile()));
-
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/AllParserTests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/AllParserTests.java
deleted file mode 100644
index e1dfbe8..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/AllParserTests.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestCategories.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestCategories.java
deleted file mode 100644
index 55123cd..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestCategories.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.eclipse.update.tests.parser;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.net.URL;
-
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.FeatureReference;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestCategories extends UpdateManagerTestCase {
- /**
- * Constructor for Test1
- */
- public TestCategories(String arg0) {
- super(arg0);
- }
-
- public void testCategories() throws Exception {
-
- URL remoteUrl = new URL(SOURCE_FILE_SITE + "xmls/site1/");
- ISite remoteSite = SiteManager.getSite(remoteUrl);
-
- IFeatureReference[] feature = remoteSite.getFeatureReferences();
- //ICategory[] categories = remoteSite.getCategories();
-
- ICategory featureCategory = feature[0].getCategories()[0];
-
- assertEquals("UML tools", featureCategory.getLabel());
-
- }
-
- public void testOrderedCategories() throws Exception {
-
- URL remoteUrl = new URL(SOURCE_FILE_SITE + "xmls/site1/");
- ISite remoteSite = SiteManager.getSite(remoteUrl);
-
- ICategory[] categories = remoteSite.getCategories();
- for (int i = 0; i < categories.length; i++) {
- System.out.println("Cat ordered->" + categories[i].getName());
- }
-
- assertEquals("Eclipse tools", categories[1].getLabel());
-
- }
-
- public void testTranslatedCategories() throws Exception {
-
- ISite remoteSite = SiteManager.getSite(SOURCE_HTTP_SITE);
-
- ICategory[] categories = remoteSite.getCategories();
-
- assertEquals("Required Drivers", categories[0].getLabel());
-
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestFeatureParse.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestFeatureParse.java
deleted file mode 100644
index f28b875..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestFeatureParse.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestSiteParse.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestSiteParse.java
deleted file mode 100644
index ef225f5..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestSiteParse.java
+++ /dev/null
@@ -1,203 +0,0 @@
-package org.eclipse.update.tests.parser;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.model.*;
-import org.eclipse.update.core.model.DefaultSiteParser;
-import org.eclipse.update.core.model.SiteModel;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.internal.core.SiteFileFactory;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestSiteParse extends UpdateManagerTestCase {
-
- /**
- * Constructor for Test1
- */
- public TestSiteParse(String arg0) {
- super(arg0);
- }
-
- public void testParse() throws Exception {
-
- URL remoteUrl = new URL(SOURCE_FILE_SITE + "xmls/site1/");
- ISite remoteSite = SiteManager.getSite(remoteUrl);
-
- //IFeatureReference[] feature = remoteSite.getFeatureReferences();
- //ICategory[] categories = remoteSite.getCategories();
-
- String path = remoteUrl.getFile();
- String path2 = remoteSite.getDescription().getURL().getFile();
- assertEquals(new File(path + "index.html"), new File(path2));
-
- }
-
- public void testNumberOfFeatures() throws Exception {
-
- URL remoteURL = new URL("http", getHttpHost(), getHttpPort(), bundle.getString("HTTP_PATH_2"));
- ISite remoteSite = SiteManager.getSite(remoteURL);
-
- IFeatureReference[] feature = remoteSite.getFeatureReferences();
- assertEquals(feature.length, 2);
-
- }
-
- public void testParseValid1() throws Exception {
-
- URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site.xml");
- DefaultSiteParser parser = new DefaultSiteParser(new SiteFileFactory());
- URL resolvedURL = URLEncoder.encode(remoteURL);
- SiteModel remoteSite = parser.parse(resolvedURL.openStream());
- remoteSite.resolve(remoteURL, null);
-
- FeatureReferenceModel[] feature = remoteSite.getFeatureReferenceModels();
- CategoryModel[] categories = remoteSite.getCategoryModels();
- ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
-
- assertTrue("Wrong number of features", feature.length == 6);
- assertTrue("Wrong number of categories", categories.length == 3);
- assertTrue("Wrong number of archives", archives.length == 0);
-
- String path = new URL(SOURCE_FILE_SITE + "parsertests/").getFile();
- String path2 = remoteSite.getDescriptionModel().getURL().getFile();
- assertEquals(path + "index.html", path2);
-
- }
-
- public void testParseValid2() throws Exception {
-
- URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/reddot.xml");
- DefaultSiteParser parser = new DefaultSiteParser(new SiteFileFactory());
- URL resolvedURL = URLEncoder.encode(remoteURL);
- SiteModel remoteSite = parser.parse(resolvedURL.openStream());
- remoteSite.resolve(remoteURL, null);
-
- FeatureReferenceModel[] feature = remoteSite.getFeatureReferenceModels();
- CategoryModel[] categories = remoteSite.getCategoryModels();
- ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
-
- assertTrue("Wrong number of features", feature.length == 2);
- assertTrue("Wrong number of categories", categories.length == 1);
- assertTrue("Wrong number of archives", archives.length == 2);
-
- String valideString = "This category contains all of the<currently>available versions of Red Dot feature.<greeting>Hello, world!</greeting>";
- assertEquals(valideString,remoteSite.getCategoryModels()[0].getDescriptionModel().getAnnotation());
-
- String path = new URL(SOURCE_FILE_SITE + "parsertests/").getFile();
- String path2 = remoteSite.getDescriptionModel().getURL().getFile();
- assertEquals(path + "index.html", path2);
-
- }
-
- public void testParseValid3() throws Exception {
-
- URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/reddot1.xml");
- DefaultSiteParser parser = new DefaultSiteParser(new SiteFileFactory());
- URL resolvedURL = URLEncoder.encode(remoteURL);
- SiteModel remoteSite = parser.parse(resolvedURL.openStream());
- remoteSite.resolve(remoteURL, null);
-
- FeatureReferenceModel[] feature = remoteSite.getFeatureReferenceModels();
- CategoryModel[] categories = remoteSite.getCategoryModels();
- ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
-
- assertTrue("Wrong number of features", feature.length == 2);
- assertTrue("Wrong number of categories", categories.length == 1);
- assertTrue("Wrong number of archives", archives.length == 2);
-
- String valideString = "This category contains all of the<currently>available versions of Red Dot feature.";
- assertEquals(valideString,remoteSite.getCategoryModels()[0].getDescriptionModel().getAnnotation());
-
- String path = new URL(SOURCE_FILE_SITE + "parsertests/").getFile();
- String path2 = remoteSite.getDescriptionModel().getURL().getFile();
- assertEquals(path + "index.html", path2);
-
- }
-
- public void testParseValid4() throws Exception {
-
- URL remoteURL = new URL(SOURCE_FILE_SITE + "SiteURLTest/data/site.xml");
- DefaultSiteParser parser = new DefaultSiteParser(new SiteFileFactory());
- URL resolvedURL = URLEncoder.encode(remoteURL);
- SiteModel remoteSite = parser.parse(resolvedURL.openStream());
- remoteSite.resolve(remoteURL, null);
-
- FeatureReferenceModel[] feature = remoteSite.getFeatureReferenceModels();
- //CategoryModel[] categories = remoteSite.getCategoryModels();
- ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
-
- assertTrue("Wrong number of features", feature.length == 2);
- assertTrue("Wrong number of archives", archives.length == 3);
-
- URL path1 = new URL(SOURCE_FILE_SITE+"SiteURLTest/data/artifacts/features/helpFeature.jar");
- assertEquals(path1,feature[0].getURL());
- URL path2 = new URL(SOURCE_FILE_SITE+"SiteURLTest/data/artifacts/plugins/help.jar");
- assertEquals(path2,archives[0].getURL());
-
-
- String path = new URL(SOURCE_FILE_SITE + "SiteURLTest/data/info/").getFile();
- String path3 = remoteSite.getDescriptionModel().getURL().getFile();
- assertEquals(path + "siteInfo.html", path3);
-
- }
-
- public void testParseValid5() throws Exception {
-
- URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site2.xml");
- DefaultSiteParser parser = new DefaultSiteParser(new SiteFileFactory());
- URL resolvedURL = URLEncoder.encode(remoteURL);
- SiteModel remoteSite = parser.parse(resolvedURL.openStream());
- remoteSite.resolve(remoteURL, null);
-
- FeatureReferenceModel[] featureRef = remoteSite.getFeatureReferenceModels();
- //CategoryModel[] categories = remoteSite.getCategoryModels();
- ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
-
- assertTrue("Wrong number of features", featureRef.length == 1);
- assertTrue("Wrong number of archives", archives.length == 0);
-
-
- ((FeatureReference)featureRef[0]).getFeature();
-
- }
-
- public void testParseValid6() throws Exception {
-
- URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site4.xml");
- DefaultSiteParser parser = new DefaultSiteParser(new SiteFileFactory());
- URL resolvedURL = URLEncoder.encode(remoteURL);
- SiteModel remoteSite = parser.parse(resolvedURL.openStream());
- remoteSite.resolve(remoteURL, null);
-
- FeatureReferenceModel[] featureRef = remoteSite.getFeatureReferenceModels();
- //CategoryModel[] categories = remoteSite.getCategoryModels();
- ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
-
- assertTrue("Wrong number of features", featureRef.length == 2);
- assertTrue("Wrong number of archives", archives.length == 0);
-
-
- ((FeatureReference)featureRef[0]).getFeature();
-
- }
-
- public void testParseUnknownCategory() throws Exception {
-
- URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site3.xml");
- DefaultSiteParser parser = new DefaultSiteParser(new SiteFileFactory());
- URL resolvedURL = URLEncoder.encode(remoteURL);
- SiteModel remoteSite = parser.parse(resolvedURL.openStream());
- remoteSite.resolve(remoteURL, null);
-
- FeatureReferenceModel[] featureRef = remoteSite.getFeatureReferenceModels();
- ICategory[] categories = ((FeatureReference)featureRef[0]).getCategories();
- assertTrue(categories.length==0);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/reconciliation/AllReconciliationTests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/reconciliation/AllReconciliationTests.java
deleted file mode 100644
index c620592..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/reconciliation/AllReconciliationTests.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.eclipse.update.tests.reconciliation;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.update.core.SiteManager;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-import java.io.File;
-import junit.framework.*;
-
-/**
- * Manages the API tests
- */
-public class AllReconciliationTests extends UpdateManagerTestCase {
- /**
- * Constructor
- */
- public AllReconciliationTests(String name) {
- super(name);
- }
-
- /**
- * List of API tests
- */
- public static Test suite() throws Exception {
- TestSuite suite = new TestSuite();
- suite.setName("API Tests");
-
-
- suite.addTest(new TestSuite(TestSiteReconciliation.class));
-
- return suite;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/reconciliation/TestSiteReconciliation.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/reconciliation/TestSiteReconciliation.java
deleted file mode 100644
index 875368e..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/reconciliation/TestSiteReconciliation.java
+++ /dev/null
@@ -1,196 +0,0 @@
-package org.eclipse.update.tests.reconciliation;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.core.boot.BootLoader;
-import org.eclipse.core.boot.IPlatformConfiguration;
-import org.eclipse.core.boot.IPlatformConfiguration.ISiteEntry;
-import org.eclipse.core.boot.IPlatformConfiguration.ISitePolicy;
-import org.eclipse.core.internal.boot.PlatformConfiguration;
-import org.eclipse.update.core.*;
-import org.eclipse.update.core.SiteManager;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.configuration.ILocalSite;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.internal.core.InternalSiteManager;
-import org.eclipse.update.internal.core.SiteLocal;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestSiteReconciliation extends UpdateManagerTestCase {
-
-
-
-
- /**
- * Test the getFeatures()
- */
- public TestSiteReconciliation(String arg0) {
- super(arg0);
- }
-
- private void addConfigSite(int policy, URL url,String[] listOfPlugins) throws Exception {
- String xmlFile = ((SiteLocal)SiteManager.getLocalSite()).getLocationURL().getFile();
- UpdateManagerUtils.removeFromFileSystem(new File(xmlFile));
- InternalSiteManager.localSite=null;
- // get new config object
- PlatformConfiguration cfig = (PlatformConfiguration)BootLoader.getCurrentPlatformConfiguration();
- ISitePolicy p1 = cfig.createSitePolicy(policy, listOfPlugins);
- ISiteEntry s1 = cfig.createSiteEntry(url,p1);
- cfig.configureSite(s1);
-
- }
-
- private void removeConfigSite(URL url) throws Exception {
- // get new config object
- PlatformConfiguration cfig = (PlatformConfiguration)BootLoader.getCurrentPlatformConfiguration();
- ISiteEntry s1 = cfig.findConfiguredSite(url);
- cfig.unconfigureSite(s1);
- }
- /**
- * Site 1 contains a feature which needs a plugin taht is not on the path when we start
- * it will never be configured
- */
- public void testNewSiteInclude1() throws Exception {
-
- int policy = ISitePolicy.USER_INCLUDE;
- URL url = new URL("file",null,dataPath+"reconciliationSites/site1/");
- String[] plugins = new String[]{};
- addConfigSite(policy,url, plugins);
-
- ILocalSite local = SiteManager.getLocalSite();
- ((SiteLocal)local).setStamp(0);
- IConfiguredSite[] newSites = local.getCurrentConfiguration().getConfiguredSites();
- IConfiguredSite newSite = null;
- for (int i = 0; i < newSites.length; i++) {
- if (sameURL(newSites[i].getSite().getURL(),url)){
- newSite = newSites[i];
- }
- }
-
- if (newSite==null) fail("Site not found in configuration");
-
- IFeatureReference[] ref = newSite.getConfiguredFeatures();
- assertEquals("Wrong number of configured features",0,ref.length);
- ref = ((ConfiguredSite)newSite).getConfigurationPolicy().getUnconfiguredFeatures();
- assertEquals("Wrong number of unconfigured features",0,ref.length);
-
- removeConfigSite(url);
- }
-
- public void testNewSiteExclude1() throws Exception {
-
- int policy = ISitePolicy.USER_EXCLUDE;
- URL url = new URL("file",null,dataPath+"reconciliationSites/site1/");
- String[] plugins = new String[]{};
- addConfigSite(policy,url, plugins);
-
- ILocalSite local = SiteManager.getLocalSite();
- ((SiteLocal)local).setStamp(0);
- IConfiguredSite[] newSites = local.getCurrentConfiguration().getConfiguredSites();
- IConfiguredSite newSite = null;
- for (int i = 0; i < newSites.length; i++) {
- if (sameURL(newSites[i].getSite().getURL(),url)){
- newSite = newSites[i];
- }
- }
-
- if (newSite==null) fail("Site not found in configuration");
-
- IFeatureReference[] ref = newSite.getConfiguredFeatures();
- assertEquals("Wrong number of configured features",0,ref.length);
- ref = ((ConfiguredSite)newSite).getConfigurationPolicy().getUnconfiguredFeatures();
- assertEquals("Wrong number of unconfigured features",0,ref.length);
- removeConfigSite(url);
- }
-
- /**
- * Site 2 contains a feature which needs a plugin taht is on the path when we start
- * it will be configured
- */
- public void testNewSiteInclude2() throws Exception {
-
- int policy = ISitePolicy.USER_INCLUDE;
- URL url = new URL("file",null,dataPath+"reconciliationSites/site2/");
- String[] plugins = new String[]{};
- addConfigSite(policy,url, plugins);
- ILocalSite local = SiteManager.getLocalSite();
- ((SiteLocal)local).setStamp(0);
- IConfiguredSite[] newSites = local.getCurrentConfiguration().getConfiguredSites();
- IConfiguredSite newSite = null;
- for (int i = 0; i < newSites.length; i++) {
- if (sameURL(newSites[i].getSite().getURL(),url)){
- newSite = newSites[i];
- }
- }
-
- if (newSite==null) fail("Site not found in configuration");
-
- IFeatureReference[] ref = newSite.getConfiguredFeatures();
- assertEquals("Wrong number of configured features",0,ref.length);
- ref = ((ConfiguredSite)newSite).getConfigurationPolicy().getUnconfiguredFeatures();
- assertEquals("Wrong number of unconfigured features",0,ref.length);
-
- removeConfigSite(url);
- }
-
-
-
- public void testNewSiteExclude2() throws Exception {
-
- int policy = ISitePolicy.USER_EXCLUDE;
- URL url = new URL("file",null,dataPath+"reconciliationSites/site2/");
- String[] plugins = new String[]{};
- addConfigSite(policy,url, plugins);
- ILocalSite local = SiteManager.getLocalSite();
- ((SiteLocal)local).setStamp(0);
- IConfiguredSite[] newSites = local.getCurrentConfiguration().getConfiguredSites();
- IConfiguredSite newSite = null;
- for (int i = 0; i < newSites.length; i++) {
- if (sameURL(newSites[i].getSite().getURL(),url)){
- newSite = newSites[i];
- }
- }
-
- if (newSite==null) fail("Site not found in configuration");
-
- IFeatureReference[] ref = newSite.getConfiguredFeatures();
- assertEquals("Wrong number of configured features",0,ref.length);
- ref = ((ConfiguredSite)newSite).getConfigurationPolicy().getUnconfiguredFeatures();
- assertEquals("Wrong number of unconfigured features",0,ref.length);
-
- removeConfigSite(url);
- }
-
- /*
- * Compares two URL for equality
- * Return false if one of them is null
- */
- private boolean sameURL(URL url1, URL url2) {
- if (url1 == null)
- return false;
- if (url1.equals(url2))
- return true;
-
- // check if URL are file: URL as we may
- // have 2 URL pointing to the same featureReference
- // but with different representation
- // (i.e. file:/C;/ and file:C:/)
- if (!"file".equalsIgnoreCase(url1.getProtocol()))
- return false;
- if (!"file".equalsIgnoreCase(url2.getProtocol()))
- return false;
-
- File file1 = new File(url1.getFile());
- File file2 = new File(url2.getFile());
-
- if (file1 == null)
- return false;
-
- return (file1.equals(file2));
- }
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/AllRegularInstallTests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/AllRegularInstallTests.java
deleted file mode 100644
index d56dd55..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/AllRegularInstallTests.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/MultipleTestLocalSite.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/MultipleTestLocalSite.java
deleted file mode 100644
index 23f9a6e..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/MultipleTestLocalSite.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestDataEntryInstall.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestDataEntryInstall.java
deleted file mode 100644
index 3260c3b..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestDataEntryInstall.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.eclipse.update.tests.regularInstall;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestDataEntryInstall extends UpdateManagerTestCase {
- /**
- * Constructor for Test1
- */
- public TestDataEntryInstall(String arg0) {
- super(arg0);
- }
-
- /**
- * With site.xml
- */
- public void testDataEntrySite() throws Exception {
-
- //cleanup target
- File target = new File(TARGET_FILE_SITE.getFile());
- UpdateManagerUtils.removeFromFileSystem(target);
-
- URL newURL =new File(dataPath + "dataEntrySiteTest/site1/site.xml").toURL();
- ISite remoteSite = SiteManager.getSite(newURL);
- IFeatureReference[] featuresRef = remoteSite.getFeatureReferences();
- ISite localSite = SiteManager.getSite(TARGET_FILE_SITE);
- IFeature remoteFeature = null;
-
- for (int i = 0; i < featuresRef.length; i++) {
- remoteFeature = featuresRef[i].getFeature();
- localSite.install(remoteFeature, null,null);
-
- // verify
- String site = localSite.getURL().getFile();
- INonPluginEntry[] entries = remoteFeature.getNonPluginEntries();
- assertTrue("no data entry", (entries != null && entries.length != 0));
- String pluginName = entries[0].getIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString()+File.separator+ pluginName);
- assertTrue("data files not installed locally:"+pluginFile, pluginFile.exists());
- }
-
- //cleanup target
- UpdateManagerUtils.removeFromFileSystem(target);
-
-
- }
-
-
- /**
- * With site.xml
- */
- public void testDataEntrySitePackaged() throws Exception {
-
- //cleanup target
- File target = new File(TARGET_FILE_SITE.getFile());
- UpdateManagerUtils.removeFromFileSystem(target);
-
- URL newURL =new File(dataPath + "dataEntrySiteTest/site2/site.xml").toURL();
- ISite remoteSite = SiteManager.getSite(newURL);
- IFeatureReference[] featuresRef = remoteSite.getFeatureReferences();
- ISite localSite = SiteManager.getSite(TARGET_FILE_SITE);
- IFeature remoteFeature = null;
-
- for (int i = 0; i < featuresRef.length; i++) {
- remoteFeature = featuresRef[i].getFeature();
- localSite.install(remoteFeature, null,null);
-
- // verify
- String site = localSite.getURL().getFile();
- INonPluginEntry[] entries = remoteFeature.getNonPluginEntries();
- assertTrue("no data entry", (entries != null && entries.length != 0));
- entries[0].getIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString()+File.separator+ "nondata"+File.separator+"file1.zip");
- assertTrue("Data file inside the jar not installed locally:"+pluginFile, pluginFile.exists());
- pluginFile = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString()+File.separator+ "file.zip");
- assertTrue("Data file outside the jar not installed locally:"+pluginFile, pluginFile.exists());
-
- }
-
-
- //cleanup target
- UpdateManagerUtils.removeFromFileSystem(target);
-
-
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestExecutableInstall.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestExecutableInstall.java
deleted file mode 100644
index e1209e6..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestExecutableInstall.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestExecutablePackagedInstall.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestExecutablePackagedInstall.java
deleted file mode 100644
index 6c8a7bb..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestExecutablePackagedInstall.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package org.eclipse.update.tests.regularInstall;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestExecutablePackagedInstall extends UpdateManagerTestCase {
- /**
- * Constructor for Test1
- */
- public TestExecutablePackagedInstall(String arg0) {
- super(arg0);
- }
-
- /**
- * With site.xml
- */
- public void testFilePackageExecutableFeatureSite() throws Exception {
-
- //cleanup target
- File target = new File(TARGET_FILE_SITE.getFile());
- UpdateManagerUtils.removeFromFileSystem(target);
-
- URL newURL = new File(dataPath + "ExecutableFeaturePackagedSite/data2/site.xml").toURL();
- ISite remoteSite = SiteManager.getSite(newURL);
- IFeatureReference[] featuresRef = remoteSite.getFeatureReferences();
- ISite localSite = SiteManager.getSite(TARGET_FILE_SITE);
- IFeature remoteFeature = null;
-
- // at least one executable feature and on packaged
- boolean execFeature = false;
- boolean packFeature = false;
-
- if (featuresRef.length==0) fail ("no feature found");
-
- for (int i = 0; i < featuresRef.length; i++) {
- remoteFeature = featuresRef[i].getFeature();
- localSite.install(remoteFeature, null,null);
-
- if (remoteFeature.getFeatureContentProvider() instanceof FeaturePackagedContentProvider) packFeature = true;
- if (remoteFeature.getFeatureContentProvider() instanceof FeatureExecutableContentProvider) execFeature = true;
-
- // verify
- String site = localSite.getURL().getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin files not installed locally:"+pluginFile, pluginFile.exists());
-
- File featureFile = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString());
- assertTrue("feature info not installed locally:"+featureFile, featureFile.exists());
-
- File featureFileXML = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString() + File.separator + "feature.xml");
- assertTrue("feature info not installed locally: no feature.xml", featureFileXML.exists());
- }
-
- if (!execFeature && !packFeature){
- fail("cannot find one executable and one package feature on teh site");
- }
-
- //cleanup target
- UpdateManagerUtils.removeFromFileSystem(target);
-
-
- }
-
-
- /**
- * Without site.xml
- */
- public void testFileNoSiteXMLSite() throws Exception {
-
- //cleanup target
- File target = new File(TARGET_FILE_SITE.getFile());
- UpdateManagerUtils.removeFromFileSystem(target);
-
- URL newURL = new File(dataPath + "ExecutableFeaturePackagedSite/data/").toURL();
- ISite remoteSite = SiteManager.getSite(newURL);
- IFeatureReference[] featuresRef = remoteSite.getFeatureReferences();
- ISite localSite = SiteManager.getSite(TARGET_FILE_SITE);
- IFeature remoteFeature = null;
-
- // at least one executable feature and on packaged
- boolean execFeature = false;
- boolean packFeature = false;
-
- if (featuresRef.length==0) fail ("no feature found");
-
- for (int i = 0; i < featuresRef.length; i++) {
- remoteFeature = featuresRef[i].getFeature();
- if (remoteFeature!=null){
- localSite.install(remoteFeature,null, null);
-
- if (remoteFeature.getFeatureContentProvider() instanceof FeaturePackagedContentProvider) packFeature = true;
- if (remoteFeature.getFeatureContentProvider() instanceof FeatureExecutableContentProvider) execFeature = true;
-
- // verify
- String site = localSite.getURL().getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin files not installed locally:"+pluginFile, pluginFile.exists());
-
- File featureFile = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString());
- assertTrue("feature info not installed locally:"+featureFile, featureFile.exists());
-
- File featureFileXML = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString() + File.separator + "feature.xml");
- assertTrue("feature info not installed locally: no feature.xml", featureFileXML.exists());
- }
- }
-
- if (!execFeature && !packFeature){
- fail("cannot find one executable and one package feature on teh site");
- }
-
- //cleanup target
- UpdateManagerUtils.removeFromFileSystem(target);
-
-
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestGetFeature.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestGetFeature.java
deleted file mode 100644
index 121e1b5..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestGetFeature.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestInstall.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestInstall.java
deleted file mode 100644
index 6825813..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestInstall.java
+++ /dev/null
@@ -1,311 +0,0 @@
-package org.eclipse.update.tests.regularInstall;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestInstall extends UpdateManagerTestCase {
-
- /**
- *
- */
- public static final String PACKAGED_FEATURE_TYPE = "packaged"; //$NON-NLS-1$
-
- public class Listener implements IConfiguredSiteChangedListener {
-
- public boolean notified = false;
-
- public void featureInstalled(IFeature feature) {
- notified = true;
- System.out.println("Notified DefaultFeature Installed");
- }
-
- public void featureRemoved(IFeature feature) {
- }
-
- public void featureConfigured(IFeature feature) {
- };
- public void featureUnconfigured(IFeature feature) {
- };
-
- public boolean isNotified() {
- return notified;
- }
- }
-
- /**
- * Constructor for Test1
- */
- public TestInstall(String arg0) {
- super(arg0);
- }
-
- private IFeature getFeature1(ISite site)
- throws MalformedURLException, CoreException {
- FeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.setURLString("features/org.eclipse.update.core.tests.feature1_1.0.4.jar");
- ref.setType(getDefaultInstallableFeatureType());
- ref.resolve(site.getURL(), null);
- return ref.getFeature();
- }
-
- public void testFileSite() throws Exception {
-
- ISite remoteSite = SiteManager.getSite(SOURCE_FILE_SITE);
- IFeature remoteFeature = getFeature1(remoteSite);
- ISite localSite = SiteManager.getSite(TARGET_FILE_SITE);
- localSite.install(remoteFeature, null, null);
-
- // verify
- String site = localSite.getURL().getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin files not installed locally:"+pluginFile, pluginFile.exists());
- File pluginXMLFile =
- new File(
- site,
- Site.DEFAULT_PLUGIN_PATH + pluginName + File.separator + "plugin.xml");
- assertTrue("plugin.xml file not installed locally", pluginXMLFile.exists());
-
- File featureFile =
- new File(
- site,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier().toString());
- assertTrue(
- "feature info not installed locally:" + featureFile,
- featureFile.exists());
- //cleanup
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- UpdateManagerUtils.removeFromFileSystem(new File(localSite.getURL().getFile()));
-
- }
-
- /**
- *
- */
- public void testHTTPSite() throws Exception {
-
- ISite remoteSite = SiteManager.getSite(SOURCE_HTTP_SITE);
- IFeatureReference[] features = remoteSite.getFeatureReferences();
- IFeature remoteFeature = null;
-
- if (features == null || features.length == 0)
- fail("No features on the site");
-
- for (int i = 0; i < features.length; i++) {
- if (features[i].getURL().toExternalForm().endsWith("features2.jar")) {
- remoteFeature = features[i].getFeature();
- break;
- }
- }
-
- assertNotNull("Cannot find feature2.jar on site", remoteFeature);
- ISite localSite = SiteManager.getSite(TARGET_FILE_SITE);
- localSite.install(remoteFeature, null, null);
-
- // feature2.jar should not be in the local site
- IFeatureReference[] localFeatures = localSite.getFeatureReferences();
- if (localFeatures == null || localFeatures.length == 0)
- fail("No features on the target site");
-
- boolean found = false;
- for (int i = 0; i < localFeatures.length; i++) {
- if (localFeatures[i].getURL().toExternalForm().endsWith("features2.jar")) {
- found = true;
- break;
- }
- }
-
- assertTrue(
- "Found feature2.jar on target site. Target site feature ref shouldnot contain JAR file",
- !found);
-
- // check
- String site = localSite.getURL().getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
-
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin info not installed locally:"+pluginFile, pluginFile.exists());
-
- File featureFile =
- new File(
- site,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier().toString());
- assertTrue("feature info not installed locally", featureFile.exists());
-
- //localSite.save();
-
- //cleanup
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- UpdateManagerUtils.removeFromFileSystem(new File(localSite.getURL().getFile()));
- }
-
- public void testInstall() throws Exception {
-
- // cleanup local files...
- URL localURL = ((SiteLocal) SiteManager.getLocalSite()).getLocationURL();
- File localFile =
- new File(new URL(localURL, SiteLocal.SITE_LOCAL_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
-
- URL INSTALL_SITE = null;
- try {
- INSTALL_SITE =
- new URL("http", getHttpHost(), getHttpPort(), bundle.getString("HTTP_PATH_2"));
- } catch (Exception e) {
- fail(e.toString());
- e.printStackTrace();
- }
-
- ISite remoteSite = SiteManager.getSite(INSTALL_SITE);
- IFeatureReference[] features = remoteSite.getFeatureReferences();
- IFeature remoteFeature = null;
-
- if (features == null || features.length == 0)
- fail("No features on the site");
-
- for (int i = 0; i < features.length; i++) {
- if (features[i].getURL().toExternalForm().endsWith("helpFeature.jar")) {
- remoteFeature = features[i].getFeature();
- break;
- }
- }
-
- assertNotNull("Cannot find help.jar on site", remoteFeature);
- ILocalSite localSite = SiteManager.getLocalSite();
- IConfiguredSite site =
- localSite.getCurrentConfiguration().getConfiguredSites()[0];
- Listener listener = new Listener();
- site.addConfiguredSiteChangedListener(listener);
-
- site.install(remoteFeature, null, null);
-
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
-
- String sitePath = site.getSite().getURL().getFile();
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(sitePath, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin info not installed locally", pluginFile.exists());
-
- File featureFile =
- new File(
- sitePath,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier().toString());
- assertTrue("feature info not installed locally", featureFile.exists());
-
- //cleanup
- File file =
- new File(
- site.getSite().getURL().getFile()
- + File.separator
- + Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier());
- UpdateManagerUtils.removeFromFileSystem(file);
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(
- new File(
- ((InstallConfiguration) localSite.getCurrentConfiguration())
- .getURL()
- .getFile()));
-
- site.removeConfiguredSiteChangedListener(listener);
- assertTrue("Listener hasn't received notification", listener.isNotified());
- }
-
- public void testFileSiteWithoutSiteXML() throws Exception {
-
- ISite remoteSite = SiteManager.getSite(SOURCE_FILE_SITE);
- IFeature remoteFeature = getFeature1(remoteSite);
- IConfiguredSite localSite =
- SiteManager.getLocalSite().getCurrentConfiguration().getConfiguredSites()[0];
- localSite.getSite().install(remoteFeature, null, null);
-
- IFeatureReference[] features = localSite.getSite().getFeatureReferences();
- if (features.length == 0)
- fail("The local site does not contain feature, should not contain an XML file but features should be found anyway by parsing");
- if (localSite.getSite().getArchives().length == 0)
- fail("The local site does not contain archives, should not contain an XML file but archives should be found anyway by parsing");
-
- //cleanup
- File file =
- new File(
- localSite.getSite().getURL().getFile()
- + File.separator
- + Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier());
- UpdateManagerUtils.removeFromFileSystem(file);
- file =
- new File(
- localSite.getSite().getURL().getFile()
- + File.separator
- + Site.DEFAULT_PLUGIN_PATH
- + "org.eclipse.update.core.tests.feature1.plugin1_3.5.6");
- UpdateManagerUtils.removeFromFileSystem(file);
- file =
- new File(
- localSite.getSite().getURL().getFile()
- + File.separator
- + Site.DEFAULT_PLUGIN_PATH
- + "org.eclipse.update.core.tests.feature1.plugin2_5.0.0");
- UpdateManagerUtils.removeFromFileSystem(file);
- File localFile =
- new File(
- new URL(
- ((SiteLocal) SiteManager.getLocalSite()).getLocationURL(),
- SiteLocal.SITE_LOCAL_FILE)
- .getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
-
- try {
- SiteManager.getSite(new URL("http://www.eclipse.org/"));
- // FIXME apparently works !!!
- // fail("The site contains site.xml... it should be an HTTP site without an XML file");
- } catch (CoreException e) {
- // expected
- }
-
- }
-
- /**
- *
- */
- private Feature createPackagedFeature(URL url, ISite site)
- throws CoreException {
- String packagedFeatureType = site.DEFAULT_PACKAGED_FEATURE_TYPE;
- Feature result = null;
- if (packagedFeatureType != null) {
- IFeatureFactory factory =
- FeatureTypeFactory.getInstance().getFactory(packagedFeatureType);
- result = (Feature) factory.createFeature(url, site);
- }
- return result;
- }
- /*
- * @see ISite#getDefaultInstallableFeatureType()
- */
- public String getDefaultInstallableFeatureType() {
- String pluginID =
- UpdateManagerPlugin.getPlugin().getDescriptor().getUniqueIdentifier() + ".";
- return pluginID + PACKAGED_FEATURE_TYPE;
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestInstallURLSIteXML.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestInstallURLSIteXML.java
deleted file mode 100644
index 6c109a8..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestInstallURLSIteXML.java
+++ /dev/null
@@ -1,310 +0,0 @@
-package org.eclipse.update.tests.regularInstall;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestInstallURLSIteXML extends UpdateManagerTestCase {
-
- /**
- *
- */
- public static final String PACKAGED_FEATURE_TYPE = "packaged"; //$NON-NLS-1$
-
- public class Listener implements IConfiguredSiteChangedListener {
-
- public boolean notified = false;
-
- public void featureInstalled(IFeature feature) {
- notified = true;
- System.out.println("Notified DefaultFeature Installed");
- }
-
- public void featureRemoved(IFeature feature) {
- }
-
- public void featureConfigured(IFeature feature) {
- };
- public void featureUnconfigured(IFeature feature) {
- };
-
- public boolean isNotified() {
- return notified;
- }
- }
-
- /**
- * Constructor for Test1
- */
- public TestInstallURLSIteXML(String arg0) {
- super(arg0);
- }
-
- private IFeature getFeature1(ISite site)
- throws MalformedURLException, CoreException {
- FeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.setURLString("features/org.eclipse.update.core.tests.feature1_1.0.4.jar");
- ref.setType(ISite.DEFAULT_PACKAGED_FEATURE_TYPE);
- ref.resolve(site.getURL(), null);
- return ref.getFeature();
- }
-
- public void testFileSite() throws Exception {
-
- ISite remoteSite =
- SiteManager.getSite(new URL(SOURCE_FILE_SITE, Site.SITE_XML));
- IFeature remoteFeature = getFeature1(remoteSite);
- ISite localSite = SiteManager.getSite(new URL(TARGET_FILE_SITE, Site.SITE_XML));
- localSite.install(remoteFeature, null, null);
-
- // verify
- String site = TARGET_FILE_SITE.getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin files not installed locally", pluginFile.exists());
- File pluginXMLFile =
- new File(
- site,
- Site.DEFAULT_PLUGIN_PATH + pluginName + File.separator + "plugin.xml");
- assertTrue("plugin.xml file not installed locally", pluginXMLFile.exists());
-
- File featureFile =
- new File(
- site,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier().toString());
- assertTrue(
- "feature info not installed locally:" + featureFile,
- featureFile.exists());
- //cleanup
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- UpdateManagerUtils.removeFromFileSystem(new File(localSite.getURL().getFile()));
-
- }
-
- /**
- *
- */
- public void testHTTPSite() throws Exception {
-
- ISite remoteSite =
- SiteManager.getSite(new URL(SOURCE_HTTP_SITE, Site.SITE_XML));
- IFeatureReference[] features = remoteSite.getFeatureReferences();
- IFeature remoteFeature = null;
-
- if (features == null || features.length == 0)
- fail("No features on the site");
-
- for (int i = 0; i < features.length; i++) {
- if (features[i].getURL().toExternalForm().endsWith("features2.jar")) {
- remoteFeature = features[i].getFeature();
- break;
- }
- }
-
- assertNotNull("Cannot find feature2.jar on site", remoteFeature);
- ISite localSite = SiteManager.getSite(new URL(TARGET_FILE_SITE, Site.SITE_XML));
- localSite.install(remoteFeature, null, null);
-
- // feature2.jar should not be in the local site
- IFeatureReference[] localFeatures = localSite.getFeatureReferences();
- if (localFeatures == null || localFeatures.length == 0)
- fail("No features on the target site");
-
- boolean found = false;
- for (int i = 0; i < localFeatures.length; i++) {
- if (localFeatures[i].getURL().toExternalForm().endsWith("features2.jar")) {
- found = true;
- break;
- }
- }
-
- assertTrue(
- "Found feature2.jar on target site. Target site feature ref shouldnot contain JAR file",
- !found);
-
- // check
- String site = TARGET_FILE_SITE.getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
-
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin info not installed locally", pluginFile.exists());
-
- File featureFile =
- new File(
- site,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier().toString());
- assertTrue("feature info not installed locally", featureFile.exists());
-
- //localSite.save();
-
- //cleanup
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- UpdateManagerUtils.removeFromFileSystem(new File(localSite.getURL().getFile()));
- }
-
- public void testInstall() throws Exception {
-
- // cleanup local files...
- File localFile =
- new File(
- new URL(
- ((SiteLocal) SiteManager.getLocalSite()).getLocationURL(),
- SiteLocal.SITE_LOCAL_FILE)
- .getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- InternalSiteManager.localSite = null;
-
- URL INSTALL_SITE = null;
- try {
- INSTALL_SITE =
- new URL("http", getHttpHost(), getHttpPort(), bundle.getString("HTTP_PATH_2"));
- } catch (Exception e) {
- fail(e.toString());
- e.printStackTrace();
- }
-
- ISite remoteSite = SiteManager.getSite(INSTALL_SITE);
- IFeatureReference[] features = remoteSite.getFeatureReferences();
- IFeature remoteFeature = null;
-
- if (features == null || features.length == 0)
- fail("No features on the site");
-
- for (int i = 0; i < features.length; i++) {
- if (features[i].getURL().toExternalForm().endsWith("helpFeature.jar")) {
- remoteFeature = features[i].getFeature();
- break;
- }
- }
-
- assertNotNull("Cannot find help.jar on site", remoteFeature);
- ILocalSite localSite = SiteManager.getLocalSite();
- IConfiguredSite site =
- localSite.getCurrentConfiguration().getConfiguredSites()[0];
- Listener listener = new Listener();
- site.addConfiguredSiteChangedListener(listener);
-
- site.install(remoteFeature, null, null);
-
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
-
- String sitePath = site.getSite().getURL().getFile();
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(sitePath, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin info not installed locally", pluginFile.exists());
-
- File featureFile =
- new File(
- sitePath,
- Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier().toString());
- assertTrue("feature info not installed locally", featureFile.exists());
-
- //cleanup
- File file =
- new File(
- site.getSite().getURL().getFile()
- + File.separator
- + Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier());
- UpdateManagerUtils.removeFromFileSystem(file);
- UpdateManagerUtils.removeFromFileSystem(pluginFile);
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(
- new File(
- ((InstallConfiguration) localSite.getCurrentConfiguration())
- .getURL()
- .getFile()));
-
- site.removeConfiguredSiteChangedListener(listener);
- assertTrue("Listener hasn't received notification", listener.isNotified());
- }
-
- public void testFileSiteWithoutSiteXML() throws Exception {
-
- ISite remoteSite =
- SiteManager.getSite(new URL(SOURCE_FILE_SITE, Site.SITE_XML));
- IFeature remoteFeature = getFeature1(remoteSite);
- IConfiguredSite localSite =
- SiteManager.getLocalSite().getCurrentConfiguration().getConfiguredSites()[0];
- localSite.getSite().install(remoteFeature, null, null);
-
- IFeatureReference[] features = localSite.getSite().getFeatureReferences();
- if (features.length == 0)
- fail("The local site does not contain feature, should not contain an XML file but features should be found anyway by parsing");
- if (localSite.getSite().getArchives().length == 0)
- fail("The local site does not contain archives, should not contain an XML file but archives should be found anyway by parsing");
-
- //cleanup
- File file =
- new File(
- localSite.getSite().getURL().getFile()
- + File.separator
- + Site.DEFAULT_INSTALLED_FEATURE_PATH
- + remoteFeature.getVersionedIdentifier());
- UpdateManagerUtils.removeFromFileSystem(file);
- file =
- new File(
- localSite.getSite().getURL().getFile()
- + File.separator
- + Site.DEFAULT_PLUGIN_PATH
- + "org.eclipse.update.core.tests.feature1.plugin1_3.5.6");
- UpdateManagerUtils.removeFromFileSystem(file);
- file =
- new File(
- localSite.getSite().getURL().getFile()
- + File.separator
- + Site.DEFAULT_PLUGIN_PATH
- + "org.eclipse.update.core.tests.feature1.plugin2_5.0.0");
- UpdateManagerUtils.removeFromFileSystem(file);
- File localFile =
- new File(
- new URL(
- ((SiteLocal) SiteManager.getLocalSite()).getLocationURL(),
- SiteLocal.SITE_LOCAL_FILE)
- .getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
-
- }
-
- /**
- *
- */
- private Feature createPackagedFeature(URL url, ISite site)
- throws CoreException {
- String packagedFeatureType = ISite.DEFAULT_PACKAGED_FEATURE_TYPE;
- Feature result = null;
- if (packagedFeatureType != null) {
- IFeatureFactory factory =
- FeatureTypeFactory.getInstance().getFactory(packagedFeatureType);
- result = (Feature) factory.createFeature(url, site);
- }
- return result;
- }
- /*
- * @see ISite#getDefaultInstallableFeatureType()
- */
- public String getDefaultInstallableFeatureType() {
- String pluginID =
- UpdateManagerPlugin.getPlugin().getDescriptor().getUniqueIdentifier() + ".";
- return pluginID + PACKAGED_FEATURE_TYPE;
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestLocalSite.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestLocalSite.java
deleted file mode 100644
index 5ef9ec4..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestLocalSite.java
+++ /dev/null
@@ -1,326 +0,0 @@
-package org.eclipse.update.tests.regularInstall;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.core.boot.IPlatformConfiguration;
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.internal.model.*;
-import org.eclipse.update.internal.model.ConfigurationPolicyModel;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-
-public class TestLocalSite extends UpdateManagerTestCase {
-
- /**
- * Test the getFeatures()
- */
- public TestLocalSite(String arg0) {
- super(arg0);
- }
-
- public void testCreationConfigFile() throws Exception {
-
- //clean up
- SiteLocal siteLocal = (SiteLocal)SiteManager.getLocalSite();
- URL newURL = new URL(siteLocal.getLocationURL(),SiteLocal.SITE_LOCAL_FILE);
- File localFile = new File(newURL.getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(new File(((InstallConfiguration)siteLocal.getCurrentConfiguration()).getURL().getFile()));
- InternalSiteManager.localSite=null;
-
-
- ILocalSite site = SiteManager.getLocalSite();
- site.save();
- URL location = ((SiteLocal)site).getLocationURL();
- String fileName = UpdateManagerUtils.getLocalRandomIdentifier(SiteLocal.DEFAULT_CONFIG_FILE, site.getCurrentConfiguration().getCreationDate());
- String filePath = new URL(location,fileName).getFile();
- File file = new File(filePath);
- assertTrue("config file hasn't been saved in :"+filePath, file.exists());
- assertTrue("Local site hasn't been saved in :"+localFile.getAbsolutePath(),localFile.exists());
-
- // cleanup
- UpdateManagerUtils.removeFromFileSystem(file);
- UpdateManagerUtils.removeFromFileSystem(localFile);
-
-
- }
-
- public void testDefaultConfigFile() throws Exception {
-
- //clean up
- SiteLocal siteLocal = (SiteLocal)SiteManager.getLocalSite();
- URL newURL = new URL(siteLocal.getLocationURL(),SiteLocal.SITE_LOCAL_FILE);
- File localFile = new File(newURL.getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(new File(((InstallConfiguration)siteLocal.getCurrentConfiguration()).getURL().getFile()));
- InternalSiteManager.localSite=null;
-
- ILocalSite site = SiteManager.getLocalSite();
- assertTrue("The local site does not contain an history of install configuration",site.getConfigurationHistory().length!=0);
- assertTrue("The local site does not contain an current install configuration",site.getCurrentConfiguration()!=null);
- assertTrue("The local site does not contain a default configuration site for the current install config",site.getCurrentConfiguration().getConfiguredSites().length!=0);
-
- System.out.println("Default Config Site is :"+site.getCurrentConfiguration().getConfiguredSites()[0].getSite().getURL().toExternalForm());
-
- // cleanup
- URL location = ((SiteLocal)site).getLocationURL();
- String filePath = new URL(location,SiteLocal.DEFAULT_CONFIG_FILE).getFile();
- File file = new File(filePath);
- UpdateManagerUtils.removeFromFileSystem(file);
- UpdateManagerUtils.removeFromFileSystem(localFile);
-
-
- }
-
- public void testInstallFeatureSaveConfig() throws Exception {
-
- //clean up
- SiteLocal siteLocal = (SiteLocal)SiteManager.getLocalSite();
- URL newURL = new URL(siteLocal.getLocationURL(),SiteLocal.SITE_LOCAL_FILE);
- File localFile = new File(newURL.getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(new File(((InstallConfiguration)siteLocal.getCurrentConfiguration()).getURL().getFile()));
- InternalSiteManager.localSite=null;
-
- ILocalSite site = SiteManager.getLocalSite();
- ISite remoteSite = SiteManager.getSite(SOURCE_FILE_SITE_INSTALLED);
- IFeature feature = remoteSite.getFeatureReferences()[0].getFeature();
- int oldNumber = site.getCurrentConfiguration().getConfiguredSites().length;
-
- // we are not checking if this is read only
- IInstallConfiguration newConfig = site.cloneCurrentConfiguration();
- newConfig.setLabel("new Label");
- //IInstallConfiguration newConfig = site.getCurrentConfiguration();
- IConfiguredSite configSite = newConfig.getConfiguredSites()[0];
- ConfigurationPolicyModel configPolicy = new BaseSiteLocalFactory().createConfigurationPolicyModel();
- configPolicy.setPolicy(IPlatformConfiguration.ISitePolicy.USER_INCLUDE);
- ((ConfiguredSite)configSite).setConfigurationPolicy((ConfigurationPolicy)configPolicy);
- site.addConfiguration(newConfig);
- assertNotNull(feature);
- configSite.install(feature,null,null);
-
-
- // teh current one points to a real fature
- // does not throw error.
- IConfiguredSite configSite2 = site.getCurrentConfiguration().getConfiguredSites()[0];
- assertTrue("No Configured features found",configSite2.getConfiguredFeatures().length>0);
- IFeatureReference ref = configSite2.getConfiguredFeatures()[0];
- IFeature feature2 = ref.getFeature();
- //String configuredFeature = feature2.getLabel();
-
- assertEquals(feature2.getVersionedIdentifier().toString(),"org.eclipse.update.core.tests.feature3_1.0.0");
- assertTrue("Wrong id version of feature",feature2.getVersionedIdentifier().toString().equalsIgnoreCase("org.eclipse.update.core.tests.feature3_1.0.0"));
-
- // only one feature configured
- assertTrue("too many features configured",configSite2.getConfiguredFeatures().length==1);
-
- // no feature unconfigured
- assertTrue("too many unconfigured features",((ConfiguredSite)configSite2).getConfigurationPolicy().getUnconfiguredFeatures().length==0);
-
- // test only 2 install config in local site
- assertTrue("wrong number of history in Local site",site.getConfigurationHistory().length==2);
-
- // test same # of sites in current config
- assertTrue("Wrong number of config sites in current config",site.getCurrentConfiguration().getConfiguredSites().length==oldNumber);
-
- //test only one feature for the site
- assertTrue("wrong number of configured features for config site",site.getCurrentConfiguration().getConfiguredSites()[0].getConfiguredFeatures().length==1);
-
- // test only 2 activities
- assertTrue("Wrong number of activities for install config",site.getCurrentConfiguration().getActivities().length==2);
-
- site.save();
-
- // check
- // there are 2 configuration
- String time = ""+site.getCurrentConfiguration().getCreationDate().getTime();
- URL location = ((SiteLocal)site).getLocationURL();
- File file = new File(new URL(location,"Config"+time+".xml").getFile());
- assertTrue("new configuration does not exist", file.exists());
-
- // cleanup
- localFile = new File(new URL(location,SiteLocal.SITE_LOCAL_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- localFile = new File(new URL(location,SiteLocal.DEFAULT_CONFIG_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- localFile = new File(new URL(location,Site.DEFAULT_FEATURE_PATH+File.separator+feature.getVersionedIdentifier().toString()).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- localFile = new File(new URL(location,Site.DEFAULT_FEATURE_PATH+File.separator+feature2.getVersionedIdentifier().toString()).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(file);
- localFile = new File(feature2.getURL().getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- }
-
- public void testRetriveConfig() throws Exception {
-
- //clean up
- SiteLocal siteLocal = (SiteLocal)SiteManager.getLocalSite();
- URL newURL = new URL(siteLocal.getLocationURL(),SiteLocal.SITE_LOCAL_FILE);
- File localFile = new File(newURL.getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(new File(((InstallConfiguration)siteLocal.getCurrentConfiguration()).getURL().getFile()));
- InternalSiteManager.localSite=null;
-
- ILocalSite site = SiteManager.getLocalSite();
- ISite remoteSite = SiteManager.getSite(SOURCE_FILE_SITE_INSTALLED);
- IFeature feature = remoteSite.getFeatureReferences()[0].getFeature();
- int oldNumber = site.getCurrentConfiguration().getConfiguredSites().length;
-
- // we are not checking if this is read only
- IInstallConfiguration newConfig = site.cloneCurrentConfiguration();
- newConfig.setLabel("new Label");
- IConfiguredSite configSite = newConfig.getConfiguredSites()[0];
- ConfigurationPolicyModel configPolicy = new BaseSiteLocalFactory().createConfigurationPolicyModel();
- configPolicy.setPolicy(IPlatformConfiguration.ISitePolicy.USER_INCLUDE);
- ((ConfiguredSite)configSite).setConfigurationPolicy((ConfigurationPolicy)configPolicy);
- site.addConfiguration(newConfig);
- assertNotNull(feature);
- configSite.install(feature,null,null);
- site.save();
-
- // we created the second xml file
-
- //do not cleanup, we want to reuse previously created local site
- // but force re-read of xml File
- InternalSiteManager.localSite=null;
- site = SiteManager.getLocalSite();
-
- // check
- // there are 2 configuration
- String time = ""+site.getCurrentConfiguration().getCreationDate().getTime();
- URL location = ((SiteLocal)site).getLocationURL();
- File file = new File(new URL(location,"Config"+time+".xml").getFile());
- assertTrue("new configuration does not exist", file.exists());
-
- // teh current one points to a real fature
- // does not throw error.
- IConfiguredSite configSite2 = site.getCurrentConfiguration().getConfiguredSites()[0];
- IFeatureReference[] refs = configSite2.getConfiguredFeatures();
- boolean found = false;
- IFeature feature2 = null;
- for (int i = 0; i < refs.length; i++) {
- IFeature feature3 = refs[i].getFeature();
- if ("org.eclipse.update.core.tests.feature3_1.0.0".equals(feature3.getVersionedIdentifier().toString())){
- feature2 = feature3;
- found = true;
- }
- }
- assertNotNull("Feature 2 is Null",feature2);
- assertTrue("Wrong id version of feature",feature2.getVersionedIdentifier().toString().equalsIgnoreCase("org.eclipse.update.core.tests.feature3_1.0.0"));
-
- // test only 2 install config in local site
- assertTrue("wrong number of history in Local site: found "+site.getConfigurationHistory().length,site.getConfigurationHistory().length==2);
-
- // test # of sites in current config
- assertTrue("Wrong number of config sites in current config",site.getCurrentConfiguration().getConfiguredSites().length==oldNumber);
-
- //test only one feature for the site
- assertTrue("wrong number of configured features for config site",site.getCurrentConfiguration().getConfiguredSites()[0].getConfiguredFeatures().length==1);
-
- // test only 2 activities
- assertTrue("Wrong number of activities for install config",site.getCurrentConfiguration().getActivities().length==2);
-
-
- // cleanup
- localFile = new File(new URL(location,SiteLocal.SITE_LOCAL_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- localFile = new File(new URL(location,SiteLocal.DEFAULT_CONFIG_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- localFile = new File(new URL(location,Site.DEFAULT_FEATURE_PATH+File.separator+feature.getVersionedIdentifier().toString()).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(new File(((InstallConfiguration)site.getCurrentConfiguration()).getURL().getFile()));
- UpdateManagerUtils.removeFromFileSystem(file);
- }
-
- public void testRetriveConfigHTTPInstall() throws Exception {
-
- //clean up
- SiteLocal siteLocal = (SiteLocal)SiteManager.getLocalSite();
- URL newURL = new URL(siteLocal.getLocationURL(),SiteLocal.SITE_LOCAL_FILE);
- File localFile = new File(newURL.getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(new File(((InstallConfiguration)siteLocal.getCurrentConfiguration()).getURL().getFile()));
- InternalSiteManager.localSite=null;
-
- ILocalSite site = SiteManager.getLocalSite();
- ISite remoteSite = SiteManager.getSite(SOURCE_HTTP_SITE);
- IFeature feature = remoteSite.getFeatureReferences()[0].getFeature();
-
- // we are not checking if this is read only
- IInstallConfiguration newConfig = site.cloneCurrentConfiguration();
- newConfig.setLabel("new Label");
- IConfiguredSite configSite = newConfig.getConfiguredSites()[0];
- ConfigurationPolicyModel configPolicy = new BaseSiteLocalFactory().createConfigurationPolicyModel();
- configPolicy.setPolicy(IPlatformConfiguration.ISitePolicy.USER_INCLUDE);
- ((ConfiguredSite)configSite).setConfigurationPolicy((ConfigurationPolicy)configPolicy);
- site.addConfiguration(newConfig);
- configSite.install(feature,null,null);
- site.save();
-
- //do not cleanup, we want to reuse previously created local site
- // but force re-read of xml File
- InternalSiteManager.localSite=null;
- site = SiteManager.getLocalSite();
- feature = remoteSite.getFeatureReferences()[0].getFeature();
- int oldNumber = site.getCurrentConfiguration().getConfiguredSites().length;
-
- // check
- // there are 2 configuration
- String time = ""+site.getCurrentConfiguration().getCreationDate().getTime();
- URL location = ((SiteLocal)site).getLocationURL();
- File file = new File(new URL(location,"Config"+time+".xml").getFile());
- assertTrue("new configuration does not exist", file.exists());
-
- // teh current one points to a real fature
- // does not throw error.
- IConfiguredSite configSite2 = site.getCurrentConfiguration().getConfiguredSites()[0];
-
- IFeatureReference[] refs = configSite2.getConfiguredFeatures();
- boolean found = false;
- IFeature feature2 = null;
- for (int i = 0; i < refs.length; i++) {
- IFeature feature3 = refs[i].getFeature();
- if ("org.test1.ident1_1.0.0".equals(feature3.getVersionedIdentifier().toString())){
- feature2 = feature3;
- found = true;
- }
- }
-
- //String configuredFeature = feature2.getLabel();
- assertTrue("cannot find feature org.test1.ident1_1.0.0 in configured SIte",found);
- assertTrue("Wrong id version of feature",feature2.getVersionedIdentifier().toString().equalsIgnoreCase("org.test1.ident1_1.0.0"));
-
- // test only 2 install config in local site
- assertTrue("wrong number of history in Local site",site.getConfigurationHistory().length==2);
-
- // test same number of sites in current config
- assertTrue("Wrong number of config sites in current config",site.getCurrentConfiguration().getConfiguredSites().length==oldNumber);
-
- //test only one feature for the site
- assertTrue("wrong number of configured features for config site",site.getCurrentConfiguration().getConfiguredSites()[0].getConfiguredFeatures().length==1);
-
- // test only 2 activities
- assertTrue("Wrong number of activities for install config",site.getCurrentConfiguration().getActivities().length==2);
-
-
- // cleanup
- localFile = new File(new URL(location,SiteLocal.SITE_LOCAL_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- localFile = new File(new URL(location,SiteLocal.DEFAULT_CONFIG_FILE).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- localFile = new File(new URL(location,Site.DEFAULT_FEATURE_PATH+File.separator+feature.getVersionedIdentifier().toString()).getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- UpdateManagerUtils.removeFromFileSystem(new File(((InstallConfiguration)site.getCurrentConfiguration()).getURL().getFile()));
- UpdateManagerUtils.removeFromFileSystem(file);
- localFile = new File(feature2.getURL().getFile());
- UpdateManagerUtils.removeFromFileSystem(localFile);
- }
-
-}
-
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestSpaceInInstall.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestSpaceInInstall.java
deleted file mode 100644
index b1cfed7..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularInstall/TestSpaceInInstall.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package org.eclipse.update.tests.regularInstall;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-import org.eclipse.update.tests.UpdateTestsPlugin;
-
-public class TestSpaceInInstall extends UpdateManagerTestCase {
- /**
- * Constructor for Test1
- */
- public TestSpaceInInstall(String arg0) {
- super(arg0);
- }
-
- /**
- *
- */
- public void testSpaceInURL() throws Exception {
-
- //cleanup target
- URL testURL = new URL(TARGET_FILE_SITE,"test site space/");
- String testPath = testURL.getFile();
- File target = new File(testPath);
- UpdateManagerUtils.removeFromFileSystem(target);
-
- URL newURL = new File(dataPath + "Site with space/site.xml").toURL();
- ISite remoteSite = SiteManager.getSite(newURL);
- IFeatureReference[] featuresRef = remoteSite.getFeatureReferences();
- ISite localSite = SiteManager.getSite(testURL);
- IFeature remoteFeature = null;
-
- // at least one executable feature and on packaged
- boolean execFeature = false;
- boolean packFeature = false;
-
- if (featuresRef.length==0) fail ("no feature found");
-
- for (int i = 0; i < featuresRef.length; i++) {
- remoteFeature = featuresRef[i].getFeature();
- localSite.install(remoteFeature, null,null);
-
- if (remoteFeature.getFeatureContentProvider() instanceof FeaturePackagedContentProvider) packFeature = true;
- if (remoteFeature.getFeatureContentProvider() instanceof FeatureExecutableContentProvider) execFeature = true;
-
- // verify
- String site = testURL.getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin files not installed locally", pluginFile.exists());
-
- File featureFile = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString());
- assertTrue("feature info not installed locally:"+featureFile, featureFile.exists());
-
- File featureFileXML = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString() + File.separator + "feature.xml");
- assertTrue("feature info not installed locally: no feature.xml", featureFileXML.exists());
- }
-
- if (!execFeature && !packFeature){
- fail("cannot find one executable and one package feature on teh site");
- }
-
- //cleanup target
- UpdateManagerUtils.removeFromFileSystem(target);
-
-
- }
-
-
- /**
- *
- */
- public void testSpaceInHTTPURL() throws Exception {
-
- //cleanup target
- File target = new File(TARGET_FILE_SITE.getFile());
- UpdateManagerUtils.removeFromFileSystem(target);
-
- String path = bundle.getString("HTTP_PATH_3");
- ISite remoteSite = SiteManager.getSite(new URL("http",getHttpHost(),getHttpPort(),path));
- IFeatureReference[] featuresRef = remoteSite.getFeatureReferences();
- ISite localSite = SiteManager.getSite(TARGET_FILE_SITE);
- IFeature remoteFeature = null;
-
- // at least one executable feature and on packaged
- boolean execFeature = false;
- boolean packFeature = false;
-
- if (featuresRef.length==0) fail ("no feature found");
-
- for (int i = 0; i < featuresRef.length; i++) {
- remoteFeature = featuresRef[i].getFeature();
- localSite.install(remoteFeature, null,null);
-
- if (remoteFeature.getFeatureContentProvider() instanceof FeaturePackagedContentProvider) packFeature = true;
- if (remoteFeature.getFeatureContentProvider() instanceof FeatureExecutableContentProvider) execFeature = true;
-
- // verify
- String site = TARGET_FILE_SITE.getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
- String pluginName = entries[0].getVersionedIdentifier().toString();
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin files not installed locally", pluginFile.exists());
-
- File featureFile = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString());
- assertTrue("feature info not installed locally:"+featureFile, featureFile.exists());
-
- File featureFileXML = new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + remoteFeature.getVersionedIdentifier().toString() + File.separator + "feature.xml");
- assertTrue("feature info not installed locally: no feature.xml", featureFileXML.exists());
- }
-
- if (!execFeature && !packFeature){
- fail("cannot find one executable and one package feature on teh site");
- }
-
- //cleanup target
- UpdateManagerUtils.removeFromFileSystem(target);
-
-
- }
-
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularRemove/AllRegularRemoveTests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularRemove/AllRegularRemoveTests.java
deleted file mode 100644
index 04bc913..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularRemove/AllRegularRemoveTests.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.eclipse.update.tests.regularRemove;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.tests.UpdateManagerTestCase;
-import junit.framework.*;
-
-
-public class AllRegularRemoveTests extends UpdateManagerTestCase {
-public AllRegularRemoveTests(String name) {
- super(name);
-}
-public static Test suite() {
- TestSuite suite = new TestSuite();
- suite.setName("Regular Remove Tests");
-
- suite.addTest(new TestSuite(TestRemove.class));
-
- return suite;
-}
-}
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularRemove/TestRemove.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularRemove/TestRemove.java
deleted file mode 100644
index 39b34eb..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/regularRemove/TestRemove.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.eclipse.update.tests.regularRemove;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-import org.eclipse.update.tests.api.DefaultFeature;
-
-public class TestRemove extends UpdateManagerTestCase {
-
- public class Listener implements IConfiguredSiteChangedListener {
-
- public boolean notified = false;
-
- public void featureInstalled(IFeature feature) {
- notified = true;
- System.out.println("Notified DefaultFeature Installed");
- }
-
- public void featureRemoved(IFeature feature) {
- }
- public void featureConfigured(IFeature feature) {
- };
- public void featureUnconfigured(IFeature feature) {
- };
-
- public boolean isNotified() {
- return notified;
- }
- }
-
- /**
- * Constructor for Test1
- */
- public TestRemove(String arg0) {
- super(arg0);
- }
-
- private IFeature getFeature1(ISite site)
- throws MalformedURLException, CoreException {
- //URL url = UpdateManagerUtils.getURL(site.getURL(), "features/org.eclipse.update.core.tests.feature1_1.0.4.jar", null);
- FeatureReference ref = new FeatureReference();
- ref.setSite(site);
- ref.setURLString("features/org.eclipse.update.core.tests.feature1_1.0.4.jar");
- ref.setType(ISite.DEFAULT_PACKAGED_FEATURE_TYPE);
- ref.resolve(site.getURL(), null);
- return ref.getFeature();
- }
-
- public void testRemoveFeature() throws Exception {
-
- // install feature
- ISite remoteSite = SiteManager.getSite(SOURCE_FILE_SITE);
- IFeature remoteFeature = getFeature1(remoteSite);
- ISite localSite = SiteManager.getSite(TARGET_FILE_SITE);
- IFeatureReference ref = localSite.install(remoteFeature, null, null);
-
- // then remove it
- assertNotNull("Feature is null",ref.getFeature());
- String featureRef = ref.getFeature().getVersionedIdentifier().toString();
- localSite.remove(ref.getFeature(), null);
-
- // verify
- String site = TARGET_FILE_SITE.getFile();
- IPluginEntry[] entries = remoteFeature.getPluginEntries();
- assertTrue("no plugins entry", (entries != null && entries.length != 0));
- String pluginName = entries[0].getVersionedIdentifier().toString();
-
- File pluginFile = new File(site, Site.DEFAULT_PLUGIN_PATH + pluginName);
- assertTrue("plugin files installed locally", !pluginFile.exists());
-
- File featureFile =
- new File(site, Site.DEFAULT_INSTALLED_FEATURE_PATH + featureRef);
- assertTrue(
- "feature info installed locally:" + featureFile,
- !featureFile.exists());
-
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/AllTypesTests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/AllTypesTests.java
deleted file mode 100644
index acdad72..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/AllTypesTests.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/TestFeatureType.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/TestFeatureType.java
deleted file mode 100644
index 8463645..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/TestFeatureType.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/TestSiteType.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/TestSiteType.java
deleted file mode 100644
index 3592050..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/types/TestSiteType.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.eclipse.update.tests.types;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.core.*;
-import org.eclipse.update.internal.core.FeaturePackagedContentProvider;
-import org.eclipse.update.internal.core.SiteURLContentProvider;
-import org.eclipse.update.tests.UpdateManagerTestCase;
-import org.eclipse.update.tests.implementation.SiteFTPFactory;
-
-public class TestSiteType extends UpdateManagerTestCase {
-
- /**
- * Test the getFeatures()
- */
- public TestSiteType(String arg0) {
- super(arg0);
- }
-
- /**
- * @throws Exception
- */
- public void testSiteType() throws Exception {
-
- String featurePath = dataPath + "SiteTypeExamples/site1/site.xml";
- ISite site = SiteManager.getSite(new File(featurePath).toURL());
- IFeatureReference ref = site.getFeatureReferences()[0];
- IFeature feature = ref.getFeature();
-
- assertTrue(site.getSiteContentProvider() instanceof SiteURLContentProvider);
- assertTrue(((Site) site).getType().equals("org.eclipse.update.core.http"));
- assertTrue(feature.getFeatureContentProvider() instanceof FeaturePackagedContentProvider);
-
- }
-
- /**
- * @throws Exception
- */
- public void testFTPSiteType() throws Exception {
-
- ISite site = SiteManager.getSite(new URL(SOURCE_FILE_SITE + "FTPLikeSite/"));
-
- // should not find the mapping
- // but then should attempt to read the XML file
- // found a new type
- // call the new type
- assertTrue(
- "Wrong site type",
- site.getType().equals("org.eclipse.update.tests.ftp"));
- assertTrue(
- "Wrong file",
- site.getURL().getFile().equals("/" + SiteFTPFactory.FILE));
-
- }
-
- public void testParseValid1() throws Exception {
- try {
- URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/siteftp.xml");
- ISite site = SiteManager.getSite(remoteURL);
- site.getArchives();
- } catch (CoreException e) {
- if (e.getMessage().indexOf("</feature>") == -1) {
- throw e;
- }
- }
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/uivalues/AllCoreUITests.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/uivalues/AllCoreUITests.java
deleted file mode 100644
index 60669b4..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/uivalues/AllCoreUITests.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/uivalues/TestUILabel.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/uivalues/TestUILabel.java
deleted file mode 100644
index 74db585..0000000
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/uivalues/TestUILabel.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/test.xml b/update/org.eclipse.update.tests.core/test.xml
deleted file mode 100644
index f188855..0000000
--- a/update/org.eclipse.update.tests.core/test.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<project name="testsuite" default="run" basedir=".">
-
- <!-- The property ${eclipse-home} should be passed into this script -->
- <!-- Set a meaningful default value for when it is not. -->
- <property name="eclipse-home" value="${basedir}/../.."/>
-
- <!-- sets the properties eclipse-home, and library-file -->
- <property name="plugin-name" value="org.eclipse.update.tests.core"/>
- <property name="library-file" value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/>
- <property name="class-name" value="org.eclipse.update.tests.AllTests" />
-
- <!-- This target holds all initialization code that needs to be done for -->
- <!-- all tests that are to be run. Initialization for individual tests -->
- <!-- should be done within the body of the suite target. -->
- <target name="init">
- <tstamp/>
- <delete>
- <fileset dir="${eclipse-home}" includes="org*.xml"/>
- </delete>
- </target>
-
- <!-- This target defines the tests that need to be run. -->
- <target name="suite">
- <property name="sniff-folder" value="${eclipse-home}/update_core_sniff_folder"/>
- <delete dir="${sniff-folder}" quiet="true"/>
-
- <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
- <property name="data-dir" value="${sniff-folder}"/>
- <property name="plugin-name" value="${plugin-name}"/>
- <property name="classname" value="${class-name}"/>
- </ant>
- </target>
-
- <!-- This target holds code to cleanup the testing environment after -->
- <!-- after all of the tests have been run. You can use this target to -->
- <!-- delete temporary files that have been created. -->
- <target name="cleanup">
- </target>
-
- <!-- This target runs the test suite. Any actions that need to happen -->
- <!-- after all the tests have been run should go here. -->
- <target name="run" depends="init,suite,cleanup">
- <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
- <property name="includes" value="org*.xml"/>
- <property name="output-file" value="${plugin-name}.xml"/>
- </ant>
- </target>
-</project>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/test_with_mail.xml b/update/org.eclipse.update.tests.core/test_with_mail.xml
deleted file mode 100644
index 9f1d408..0000000
--- a/update/org.eclipse.update.tests.core/test_with_mail.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0"?>
-<project name="testsuite" default="run" basedir=".">
-
- <!-- The property ${eclipse-home} should be passed into this script -->
- <!-- Set a meaningful default value for when it is not. -->
- <property name="eclipse-home" value="${basedir}/../.."/>
-
- <!-- sets the properties eclipse-home, and library-file -->
- <property name="plugin-name" value="org.eclipse.update.tests.core"/>
- <property name="library-file" value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/>
- <property name="class-name" value="org.eclipse.update.tests.AllTests" />
-
- <!-- This target holds all initialization code that needs to be done for -->
- <!-- all tests that are to be run. Initialization for individual tests -->
- <!-- should be done within the body of the suite target. -->
- <target name="init">
- <tstamp/>
- <delete>
- <fileset dir="${eclipse-home}" includes="org*.xml"/>
- </delete>
- </target>
-
- <!-- This target defines the tests that need to be run. -->
- <target name="suite">
- <property name="sniff-folder" value="${eclipse-home}/update_core_sniff_folder"/>
- <delete dir="${sniff-folder}" quiet="true"/>
-
- <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
- <property name="data-dir" value="${sniff-folder}"/>
- <property name="plugin-name" value="${plugin-name}"/>
- <property name="classname" value="${class-name}"/>
- </ant>
- </target>
-
- <!-- This target holds code to cleanup the testing environment after -->
- <!-- after all of the tests have been run. You can use this target to -->
- <!-- delete temporary files that have been created. -->
- <target name="cleanup">
- </target>
-
- <!-- This target runs the test suite. Any actions that need to happen -->
- <!-- after all the tests have been run should go here. -->
- <target name="run" depends="init,suite,cleanup">
-
- <property name="email-from" value="Eclipse_Automated_Test@oti.com"/>
- <property name="email-subject" value="Install/Update: Nightly Build Report"/>
- <property name="email-subject-log" value="Install/Update: Nightly .log"/>
- <property name="email-server" value="d25ml04.torolab.ibm.com"/>
- <property name="infile" value="${eclipse-home}/${plugin-name}.xml"/>
- <property name="infile-log" value="${eclipse-home}/workspace/.metadata/.log"/>
-
- <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
- <property name="includes" value="org*.xml"/>
- <property name="output-file" value="${plugin-name}.xml"/>
- </ant>
-
- <touch file="${infile-log}"/>
-
- <mail from="${email-from}" tolist="celek@ca.ibm.com"
- subject="${email-subject}" files="${infile}"
- mailhost="${email-server}"/>
-
- <mail from="${email-from}" tolist="celek@ca.ibm.com"
- subject="${email-subject-log}" files="${infile-log}"
- mailhost="${email-server}"/>
-
- <mail from="${email-from}" tolist="celek@rogers.com"
- subject="${email-subject-log}" files="${infile-log}"
- mailhost="${email-server}"/>
-
- <mail from="${email-from}" tolist="celek@rogers.com"
- subject="${email-subject}" files="${infile}"
- mailhost="${email-server}"/>
-
- </target>
-</project>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/webserver/Site with space/features space/helpFeature.jar b/update/org.eclipse.update.tests.core/webserver/Site with space/features space/helpFeature.jar
deleted file mode 100644
index 9809713..0000000
--- a/update/org.eclipse.update.tests.core/webserver/Site with space/features space/helpFeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/Site with space/features space/space feature.jar b/update/org.eclipse.update.tests.core/webserver/Site with space/features space/space feature.jar
deleted file mode 100644
index 5039d7b..0000000
--- a/update/org.eclipse.update.tests.core/webserver/Site with space/features space/space feature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/Site with space/info/img/top_titlsm.gif b/update/org.eclipse.update.tests.core/webserver/Site with space/info/img/top_titlsm.gif
deleted file mode 100644
index 3917bb6..0000000
--- a/update/org.eclipse.update.tests.core/webserver/Site with space/info/img/top_titlsm.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/Site with space/info/img/wel_ml.jpg b/update/org.eclipse.update.tests.core/webserver/Site with space/info/img/wel_ml.jpg
deleted file mode 100644
index 01e33df..0000000
--- a/update/org.eclipse.update.tests.core/webserver/Site with space/info/img/wel_ml.jpg
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/Site with space/info/siteInfo.html b/update/org.eclipse.update.tests.core/webserver/Site with space/info/siteInfo.html
deleted file mode 100644
index b065aa3..0000000
--- a/update/org.eclipse.update.tests.core/webserver/Site with space/info/siteInfo.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-</head>
- <body>
-<img src="img/top_titlsm.gif" alt="" width="460" height="50">
-<br>
-<br>
- It started with Smalltalk<br>
- OTI has been building tools for platform-independent OO development since
- 1988. Our ENVY® technology first brought collaborative software development,
- version management and shared repositories to Smalltalk. IBM is one of
-many companies to license ENVY, which continues to be the foundation of
-VisualAge® Smalltalk.<br>
-<br>
-<br>
-<br>
- Next came Java™<br>
- Because of our expertise in OO technology, IBM turned to OTI for a next-generation
- development environment for Java. The result is VisualAge for Java, which
- continues to win awards for its innovative IDE and team support. InfoWorld
- has chosen VisualAge for Java as development tool of the year - year after
- year after year!<br>
-<br>
-<br>
-<br>
- Then pervasive computing<br>
- OTI continues its development of IBM's VisualAge Micro Edition, a state-of-the-art
- platform for collaborative development of embedded applications and systems
- that are very lean. As the steady stream of press releases attests, VisualAge
- Micro Edition is already licensed to the leading microchip manufacturers,
- microkernel developers, and producers of handheld and consumer devices.<br>
-<br>
-<br>
-<br>
- Now it's Eclipse<br>
- OTI has built the next generation IBM application development tools platform.
- Eclipse is a kind of universal tool platform - an open extensible IDE for
- anything and nothing in particular. The real value comes from tool plug-ins
- that "teach" Eclipse how to work with things - java files, web content,
-graphics, video - almost anything you can imagine. Eclipse allows you to
-independently develop tools that integrate with other people's tools so
-seamlessly you won't know where one tool ends and another starts. The IBM
-supported version of this technology, WebSphere Studio Workbench, will be
-the core of the next generation of IBM and IBM Business Partner e-business
-tools optimized for the WebSphere software platform.<br>
-<br>
-<br>
-<br>
- So what's next?<br>
- OTI continues to deliver object-oriented technology that scales across
- platforms, across teams and across project size. From a mainframe to a
-watch - we're closing in on that vision.<br>
-<br>
-<img src="img/wel_ml.jpg" width="460" height="460" alt="">
-<br>
-<br>
-<br>
-<br>
-<br>
-<br>
-</body>
-</html>
diff --git a/update/org.eclipse.update.tests.core/webserver/Site with space/install/features space/feature3/feature.xml b/update/org.eclipse.update.tests.core/webserver/Site with space/install/features space/feature3/feature.xml
deleted file mode 100644
index 67741d9..0000000
--- a/update/org.eclipse.update.tests.core/webserver/Site with space/install/features space/feature3/feature.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.update.core.tests.feature3" image="feature1.gif" label="Third Feature" provider-name="Smart Company" version="1.0.0" >
- <description>Description</description>
- <copyright>copyright</copyright>
- <license>license</license>
- <url>
- <update label="URL to update the feature" url="http://www.eclipse.org/path/feature1/"/>
- <discovery label="Discovery 1" url="http://www.eclipse.org"/>
- <discovery label="Discovery 2" url="http://www.eclipse.org"/>
- </url>
-</feature>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/Pde_core.jar b/update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/Pde_core.jar
deleted file mode 100644
index f107217..0000000
--- a/update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/Pde_core.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/help.jar b/update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/help.jar
deleted file mode 100644
index 7584f66..0000000
--- a/update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/help.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/junit_3.7.jar b/update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/junit_3.7.jar
deleted file mode 100644
index 67587b2..0000000
--- a/update/org.eclipse.update.tests.core/webserver/Site with space/plugins space/junit_3.7.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/Site with space/site.xml b/update/org.eclipse.update.tests.core/webserver/Site with space/site.xml
deleted file mode 100644
index b5d4bbf..0000000
--- a/update/org.eclipse.update.tests.core/webserver/Site with space/site.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
-<description url="info/siteInfo.html"/>
- <feature url="features space/helpFeature.jar">
- <category name="eclipse/UML"/>
- </feature>
- <feature url="features space/space feature.jar">
- <category name="eclipse/J2EE"/>
- </feature>
-
- <archive path="plugins/org.eclipse.help_1.0.0.jar" url="plugins space/help.jar"/>
- <archive path="plugins/org.eclipse.pde.core_1.0.0.jar" url="plugins space/Pde_core.jar"/>
- <archive path="plugins/org.junit_3.5.0.jar" url="plugins space/junit_3.7.jar"/>
- <archive path="plugins/org.eclipse.update.plugin1_1.1.1" url="plugins space/org.eclipse.update.plugin1_1.1.1"/>
- <category-def label="IBM WSAD Tools" name="eclipse"/>
- <category-def label="J2EE tools" name="eclipse/J2EE"/>
- <category-def label="EJB Tools" name="eclipse/J2EE/EJB"/>
- <category-def label="UML tools" name="eclipse/UML"/>
- <category-def label="Messaging Tools" name="B2B"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager/features/helpFeature.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager/features/helpFeature.jar
deleted file mode 100644
index 9809713..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager/features/helpFeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager/features/org.eclipse.pde.feature_1.0.0.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager/features/org.eclipse.pde.feature_1.0.0.jar
deleted file mode 100644
index b5f241a..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager/features/org.eclipse.pde.feature_1.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager/info/img/top_titlsm.gif b/update/org.eclipse.update.tests.core/webserver/UpdateManager/info/img/top_titlsm.gif
deleted file mode 100644
index 3917bb6..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager/info/img/top_titlsm.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager/info/img/wel_ml.jpg b/update/org.eclipse.update.tests.core/webserver/UpdateManager/info/img/wel_ml.jpg
deleted file mode 100644
index 01e33df..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager/info/img/wel_ml.jpg
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager/info/siteInfo.html b/update/org.eclipse.update.tests.core/webserver/UpdateManager/info/siteInfo.html
deleted file mode 100644
index b065aa3..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager/info/siteInfo.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-</head>
- <body>
-<img src="img/top_titlsm.gif" alt="" width="460" height="50">
-<br>
-<br>
- It started with Smalltalk<br>
- OTI has been building tools for platform-independent OO development since
- 1988. Our ENVY® technology first brought collaborative software development,
- version management and shared repositories to Smalltalk. IBM is one of
-many companies to license ENVY, which continues to be the foundation of
-VisualAge® Smalltalk.<br>
-<br>
-<br>
-<br>
- Next came Java™<br>
- Because of our expertise in OO technology, IBM turned to OTI for a next-generation
- development environment for Java. The result is VisualAge for Java, which
- continues to win awards for its innovative IDE and team support. InfoWorld
- has chosen VisualAge for Java as development tool of the year - year after
- year after year!<br>
-<br>
-<br>
-<br>
- Then pervasive computing<br>
- OTI continues its development of IBM's VisualAge Micro Edition, a state-of-the-art
- platform for collaborative development of embedded applications and systems
- that are very lean. As the steady stream of press releases attests, VisualAge
- Micro Edition is already licensed to the leading microchip manufacturers,
- microkernel developers, and producers of handheld and consumer devices.<br>
-<br>
-<br>
-<br>
- Now it's Eclipse<br>
- OTI has built the next generation IBM application development tools platform.
- Eclipse is a kind of universal tool platform - an open extensible IDE for
- anything and nothing in particular. The real value comes from tool plug-ins
- that "teach" Eclipse how to work with things - java files, web content,
-graphics, video - almost anything you can imagine. Eclipse allows you to
-independently develop tools that integrate with other people's tools so
-seamlessly you won't know where one tool ends and another starts. The IBM
-supported version of this technology, WebSphere Studio Workbench, will be
-the core of the next generation of IBM and IBM Business Partner e-business
-tools optimized for the WebSphere software platform.<br>
-<br>
-<br>
-<br>
- So what's next?<br>
- OTI continues to deliver object-oriented technology that scales across
- platforms, across teams and across project size. From a mainframe to a
-watch - we're closing in on that vision.<br>
-<br>
-<img src="img/wel_ml.jpg" width="460" height="460" alt="">
-<br>
-<br>
-<br>
-<br>
-<br>
-<br>
-</body>
-</html>
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/Pde_core.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/Pde_core.jar
deleted file mode 100644
index f107217..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/Pde_core.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/help.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/help.jar
deleted file mode 100644
index 7584f66..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/help.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/junit_3.7.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/junit_3.7.jar
deleted file mode 100644
index 67587b2..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager/plugins/junit_3.7.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager/site.xml b/update/org.eclipse.update.tests.core/webserver/UpdateManager/site.xml
deleted file mode 100644
index 5e5fda7..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager/site.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site >
-<description url="info/siteInfo.html"/>
- <feature url="features/helpFeature.jar">
- <category name="eclipse/UML"/>
- </feature>
- <feature url="features/org.eclipse.pde.feature_1.0.0.jar">
- <category name="eclipse/J2EE"/>
- </feature>
- <archive path="plugins/org.eclipse.help_1.0.0.jar" url="plugins/help.jar"/>
- <archive path="plugins/org.eclipse.pde.core_1.0.0.jar" url="plugins/Pde_core.jar"/>
- <archive path="plugins/org.junit_3.5.0.jar" url="plugins/junit_3.7.jar"/>
- <category-def label="IBM WSAD Tools" name="eclipse"/>
- <category-def label="J2EE tools" name="eclipse/J2EE"/>
- <category-def label="EJB Tools" name="eclipse/J2EE/EJB"/>
- <category-def label="UML tools" name="eclipse/UML"/>
- <category-def label="Messaging Tools" name="B2B"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/features2.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/features2.jar
deleted file mode 100644
index 0420da6..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/features2.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse.test.feature_1.0.0.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse.test.feature_1.0.0.jar
deleted file mode 100644
index 870a70d..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse.test.feature_1.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse.update.core.tests.feature1_1.0.4.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse.update.core.tests.feature1_1.0.4.jar
deleted file mode 100644
index 6afaca7..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse.update.core.tests.feature1_1.0.4.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse_test_feature.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse_test_feature.jar
deleted file mode 100644
index 72bb15e..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/features/org.eclipse_test_feature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/features/org.eclipse.update.core.tests.childrenfeature_2.0.0.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/features/org.eclipse.update.core.tests.childrenfeature_2.0.0.jar
deleted file mode 100644
index 12ee4ba..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/features/org.eclipse.update.core.tests.childrenfeature_2.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/features/rootfeature.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/features/rootfeature.jar
deleted file mode 100644
index 899bdda..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/features/rootfeature.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
deleted file mode 100644
index 5d9f5bc..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
deleted file mode 100644
index 8b4b04a..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
deleted file mode 100644
index 52208fe..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.1.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/site.xml b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/site.xml
deleted file mode 100644
index 623cb1a..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/nestedFeatureSiteTest/site.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <feature url="features/rootfeature.jar"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/org.eclipse.update.core.feature2_1.0.0/org.eclipse.update.core.feature2_2.2.2.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/org.eclipse.update.core.feature2_1.0.0/org.eclipse.update.core.feature2_2.2.2.jar
deleted file mode 100644
index 639ac8c..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/org.eclipse.update.core.feature2_1.0.0/org.eclipse.update.core.feature2_2.2.2.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.feature1.plugin1_1.1.1.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.feature1.plugin1_1.1.1.jar
deleted file mode 100644
index 0c995d5..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.feature1.plugin1_1.1.1.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.feature2.plugin2_2.2.2.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.feature2.plugin2_2.2.2.jar
deleted file mode 100644
index 0c995d5..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.feature2.plugin2_2.2.2.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.dummy_7.9.8.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.dummy_7.9.8.jar
deleted file mode 100644
index d6737f6..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.dummy_7.9.8.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
deleted file mode 100644
index eb8690f..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.feature1.plugin1_3.5.6.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
deleted file mode 100644
index 90a612f..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/plugins/org.eclipse.update.core.tests.feature1.plugin2_5.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/site.properties b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/site.properties
deleted file mode 100644
index 211986b..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/site.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-drivers=Required Drivers
-security=Security Fixes
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/site.xml b/update/org.eclipse.update.tests.core/webserver/UpdateManager2/site.xml
deleted file mode 100644
index 657d9b2..0000000
--- a/update/org.eclipse.update.tests.core/webserver/UpdateManager2/site.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site id="org.eclipse.update.core.tests" name="Tests" version="0.0.1">
- <feature url="features/org.eclipse.test.feature_1.0.0.jar">
- <category name="category1"/>
- </feature>
- <feature url="features/features2.jar">
- <category name="category1/subcat1"/>
- <category name="category2"/>
- </feature>
- <feature url="features/org.eclipse.update.core.tests.feature1_1.0.4.jar">
- <category name="category1"/>
- <category name="category2"/>
- </feature>
- <feature url="features/org.eclipse_test_feature.jar"/>
- <feature url="org.eclipse.update.core.feature2_1.0.0/org.eclipse.update.core.feature2_2.2.2.jar">
- <category name="category1"/>
- </feature>
- <feature url="org.eclipse.update.core.feature2_1.0.0/org.eclipse.update.core.feature2_2.2.2.jar">
- </feature>
-
- <category-def name="category1/subcat1" label="Special Fix"/>
- <category-def name="category1" label="%drivers"/>
- <category-def name="category2" label="%security"/>
-</site>
\ No newline at end of file
diff --git a/update/org.eclipse.update.tests.core/webserver/WEB-INF/web.xml b/update/org.eclipse.update.tests.core/webserver/WEB-INF/web.xml
deleted file mode 100644
index 1a6d904..0000000
--- a/update/org.eclipse.update.tests.core/webserver/WEB-INF/web.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-
-<!DOCTYPE web-app
- PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
- "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
-
-<web-app>
-
-</web-app>
diff --git a/update/org.eclipse.update.ui.forms/.classpath b/update/org.eclipse.update.ui.forms/.classpath
deleted file mode 100644
index ba738a7..0000000
--- a/update/org.eclipse.update.ui.forms/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/"/>
- <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
- <classpathentry kind="src" path="/org.eclipse.ui"/>
- <classpathentry kind="src" path="/org.apache.xerces"/>
- <classpathentry kind="src" path="/org.eclipse.core.boot"/>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="src" path="/org.eclipse.swt"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/update/org.eclipse.update.ui.forms/.cvsignore b/update/org.eclipse.update.ui.forms/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/update/org.eclipse.update.ui.forms/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/.project b/update/org.eclipse.update.ui.forms/.project
deleted file mode 100644
index 9e3a979..0000000
--- a/update/org.eclipse.update.ui.forms/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.update.ui.forms</name>
- <comment></comment>
- <projects>
- <project>org.apache.xerces</project>
- <project>org.eclipse.core.boot</project>
- <project>org.eclipse.core.runtime</project>
- <project>org.eclipse.swt</project>
- <project>org.eclipse.ui</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.team.cvs.core.cvsnature</nature>
- </natures>
-</projectDescription>
diff --git a/update/org.eclipse.update.ui.forms/about.html b/update/org.eclipse.update.ui.forms/about.html
deleted file mode 100644
index 768324e..0000000
--- a/update/org.eclipse.update.ui.forms/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>11th December, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/build.properties b/update/org.eclipse.update.ui.forms/build.properties
deleted file mode 100644
index 842d677..0000000
--- a/update/org.eclipse.update.ui.forms/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-source.forms.jar = src/
-bin.includes = plugin.properties,\
- *.jar,\
- plugin.xml,\
- about.html
diff --git a/update/org.eclipse.update.ui.forms/plugin.properties b/update/org.eclipse.update.ui.forms/plugin.properties
deleted file mode 100644
index f73bcad..0000000
--- a/update/org.eclipse.update.ui.forms/plugin.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# plugin.xml properties
-#
-
-name = Install/Update Forms
-
diff --git a/update/org.eclipse.update.ui.forms/plugin.xml b/update/org.eclipse.update.ui.forms/plugin.xml
deleted file mode 100644
index b35c62e..0000000
--- a/update/org.eclipse.update.ui.forms/plugin.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin
- id="org.eclipse.update.ui.forms"
- name="%name"
- version="2.0.0"
- provider-name="International Business Machines Corp."
- class="">
-
- <runtime>
- <library name="forms.jar">
- <export name="*"/>
- </library>
- </runtime>
- <requires>
- <import plugin="org.eclipse.core.runtime"/>
- <import plugin="org.eclipse.ui"/>
- <import plugin="org.apache.xerces"/>
- </requires>
-
-
-</plugin>
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/AbstractForm.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/AbstractForm.java
deleted file mode 100644
index 4e248da..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/AbstractForm.java
+++ /dev/null
@@ -1,226 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.jface.resource.*;
-import org.eclipse.jface.util.*;
-import org.eclipse.ui.*;
-
-/**
- * This class implements IForm interface and
- * provides some common services to its subclasses.
- * It handles some common properties like heading
- * text, image and colors, as well as
- * font change processing.
- */
-
-public abstract class AbstractForm implements IForm, IPropertyChangeListener {
- protected FormWidgetFactory factory;
- protected Color headingBackground;
- protected Color headingForeground;
- protected boolean headingVisible=true;
- protected Image headingImage;
- protected String headingText;
- protected Font titleFont;
-
- public AbstractForm() {
- factory = new FormWidgetFactory();
- titleFont = JFaceResources.getHeaderFont();
- JFaceResources.getFontRegistry().addListener(this);
- }
-
- /**
- * @see IForm#commitChanges(boolean)
- */
- public void commitChanges(boolean onSave) {
- }
-
-
- /**
- * @see IForm#createControl(Composite)
- */
- public abstract Control createControl(Composite parent);
-
- /**
- * @see IForm#dispose()
- */
- public void dispose() {
- factory.dispose();
- JFaceResources.getFontRegistry().removeListener(this);
- }
-
-
- /**
- * @see IForm#doGlobalAction(String)
- */
- public boolean doGlobalAction(String actionId) {
- return false;
- }
-
-
- /**
- * @see IForm#expandTo(Object)
- */
- public void expandTo(Object object) {
- }
-
-
- /**
- * @see IForm#getControl()
- */
- public abstract Control getControl();
-
- /**
- * @see IForm#getFactory()
- */
- public FormWidgetFactory getFactory() {
- return factory;
- }
-
-
- /**
- * @see IForm#getHeadingBackground()
- */
- public Color getHeadingBackground() {
- return headingBackground;
- }
-
-
- /**
- * @see IForm#getHeadingForeground()
- */
- public Color getHeadingForeground() {
- return headingForeground;
- }
-
-
- /**
- * @see IForm#getHeadingImage()
- */
- public Image getHeadingImage() {
- return headingImage;
- }
-
-
- /**
- * @see IForm#getHeading()
- */
- public String getHeadingText() {
- if (headingText==null) return "";
- return headingText;
- }
-
-
- /**
- * @see IForm#initialize(Object)
- */
- public void initialize(Object model) {
- }
-
-
- /**
- * @see IForm#isHeadingVisible()
- */
- public boolean isHeadingVisible() {
- return headingVisible;
- }
-
-
- /**
- * @see IForm#registerSection(FormSection)
- */
- public void registerSection(FormSection section) {
- }
-
-
- /**
- * @see IForm#setFocus()
- */
- public void setFocus() {
- }
-
-
- /**
- * @see IForm#setHeadingBackground(Color)
- */
- public void setHeadingBackground(Color newHeadingBackground) {
- this.headingBackground = newHeadingBackground;
- }
-
-
- /**
- * @see IForm#setHeadingForeground(Color)
- */
- public void setHeadingForeground(Color newHeadingForeground) {
- this.headingForeground = newHeadingForeground;
- }
-
-
- /**
- * @see IForm#setHeadingImage(Image)
- */
- public void setHeadingImage(Image headingImage) {
- this.headingImage = headingImage;
- }
-
-
- /**
- * @see IForm#setHeadingVisible(boolean)
- */
- public void setHeadingVisible(boolean newHeadingVisible) {
- this.headingVisible = newHeadingVisible;
- }
-
-
- /**
- * @see IForm#setHeading(String)
- */
- public void setHeadingText(String headingText) {
- this.headingText = headingText;
- }
-
-
- /**
- * @see IForm#update()
- */
- public void update() {
- }
-
-protected boolean canPerformDirectly(String id, Control control) {
- if (control instanceof Text) {
- Text text = (Text)control;
- if (id.equals(IWorkbenchActionConstants.CUT)) {
- text.cut();
- return true;
- }
- if (id.equals(IWorkbenchActionConstants.COPY)) {
- text.copy();
- return true;
- }
- if (id.equals(IWorkbenchActionConstants.PASTE)) {
- text.paste();
- return true;
- }
- if (id.equals(IWorkbenchActionConstants.SELECT_ALL)) {
- text.selectAll();
- return true;
- }
- if (id.equals(IWorkbenchActionConstants.DELETE)) {
- int count = text.getSelectionCount();
- if (count==0) {
- int caretPos = text.getCaretPosition();
- text.setSelection(caretPos, caretPos+1);
- }
- text.insert("");
- return true;
- }
- }
- return false;
-}
-
-
-}
-
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/AbstractSectionForm.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/AbstractSectionForm.java
deleted file mode 100644
index b276c70..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/AbstractSectionForm.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.util.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.graphics.*;
-
-/**
- * This form class understands form sections.
- * It assumes that they are part of the form
- * and it offers life cycle handling of sections
- * once they are registered.
- */
-
-public abstract class AbstractSectionForm extends AbstractForm {
- public static final int H_SCROLL_INCREMENT = 5;
- public static final int V_SCROLL_INCREMENT = 64;
- protected Vector sections = null;
-
- public void registerSection(FormSection section) {
- if (sections == null)
- sections = new Vector();
- if (!sections.contains(section))
- sections.add(section);
- }
-
- public void unregisterSection(FormSection section) {
- if (sections != null && sections.contains(section))
- sections.remove(section);
- }
-
- public void initialize(Object model) {
- if (sections != null) {
- for (Iterator iter = sections.iterator(); iter.hasNext();) {
- FormSection section = (FormSection) iter.next();
- section.initialize(model);
- }
- }
- }
-
- public void setFocus() {
- if (sections != null && sections.size() > 0) {
- FormSection firstSection = (FormSection) sections.firstElement();
- firstSection.setFocus();
- }
- }
-
- public void update() {
- if (sections != null) {
- for (Iterator iter = sections.iterator(); iter.hasNext();) {
- FormSection section = (FormSection) iter.next();
- section.update();
- }
- }
- }
-
- public void commitChanges(boolean onSave) {
- if (sections != null) {
- for (Iterator iter = sections.iterator(); iter.hasNext();) {
- FormSection section = (FormSection) iter.next();
- if (section.isDirty())
- section.commitChanges(onSave);
- }
- }
- }
-
- public boolean doGlobalAction(String actionId) {
- Control focusControl = getFocusControl();
- if (focusControl == null)
- return false;
-
- if (canPerformDirectly(actionId, focusControl))
- return true;
- Composite parent = focusControl.getParent();
- FormSection targetSection = null;
- while (parent != null) {
- Object data = parent.getData();
- if (data != null && data instanceof FormSection) {
- targetSection = (FormSection) data;
- break;
- }
- parent = parent.getParent();
- }
- if (targetSection != null) {
- return targetSection.doGlobalAction(actionId);
- }
- return false;
- }
-
- protected Control getFocusControl() {
- Control control = getControl();
- if (control == null || control.isDisposed())
- return null;
- Display display = control.getDisplay();
- Control focusControl = display.getFocusControl();
- if (focusControl == null || focusControl.isDisposed())
- return null;
- return focusControl;
- }
-
- public boolean canPaste(Clipboard clipboard) {
- Control focusControl = getFocusControl();
- if (focusControl == null)
- return false;
- Composite parent = focusControl.getParent();
- FormSection targetSection = null;
- while (parent != null) {
- Object data = parent.getData();
- if (data != null && data instanceof FormSection) {
- targetSection = (FormSection) data;
- break;
- }
- parent = parent.getParent();
- }
- if (targetSection != null) {
- return targetSection.canPaste(clipboard);
- }
- return false;
- }
-
- public void dispose() {
- if (sections != null) {
- for (Iterator iter = sections.iterator(); iter.hasNext();) {
- FormSection section = (FormSection) iter.next();
- section.dispose();
- }
- }
- super.dispose();
- }
-
- public static void ensureVisible(ScrolledComposite scomp, Control control) {
- Point controlSize = control.getSize();
- Rectangle area = scomp.getClientArea();
- Point areaOrigin = scomp.toDisplay(new Point(area.x, area.y));
-
- Point scompOrigin = scomp.toDisplay(scomp.getOrigin());
- Point controlOrigin = control.toDisplay(control.getLocation());
-
- int x = scompOrigin.x;
- int y = scompOrigin.y;
-
- if (controlOrigin.x < scompOrigin.x) {
- x = Math.max(areaOrigin.x, controlOrigin.x);
- }
- if (controlOrigin.y < scompOrigin.y) {
- y = Math.max(areaOrigin.y, controlOrigin.y);
- }
- if (controlOrigin.x + controlSize.x > scompOrigin.x + area.width) {
- x = Math.max(areaOrigin.x, controlOrigin.x + controlSize.x - area.width);
- }
- if (controlOrigin.y + controlSize.y > scompOrigin.y + area.height) {
- y = Math.max(areaOrigin.y, controlOrigin.y + controlSize.y - area.height);
- }
- scomp.setOrigin(scomp.toControl(new Point(x, y)));
- }
-
- public static void scrollVertical(ScrolledComposite scomp, boolean up) {
- scroll(scomp, 0, up ? -V_SCROLL_INCREMENT : V_SCROLL_INCREMENT);
- }
- public static void scrollHorizontal(ScrolledComposite scomp, boolean left) {
- scroll(scomp, left ? -H_SCROLL_INCREMENT : H_SCROLL_INCREMENT, 0);
- }
- public static void scrollPage(ScrolledComposite scomp, boolean up) {
- Point origin = scomp.getOrigin();
- Rectangle clientArea = scomp.getClientArea();
- int increment = up ? -clientArea.height : clientArea.height;
- scroll(scomp, 0, increment);
- }
- private static void scroll(ScrolledComposite scomp, int xoffset, int yoffset) {
- Point origin = scomp.getOrigin();
- Point contentSize = scomp.getContent().getSize();
- int xorigin = origin.x + xoffset;
- int yorigin = origin.y + yoffset;
- xorigin = Math.max(xorigin, 0);
- xorigin = Math.min(xorigin, contentSize.x - 1);
- yorigin = Math.max(yorigin, 0);
- yorigin = Math.min(yorigin, contentSize.y - 1);
- scomp.setOrigin(xorigin, yorigin);
- }
-
- public static void updatePageIncrement(ScrolledComposite scomp) {
- ScrollBar vbar = scomp.getVerticalBar();
- if (vbar != null) {
- Rectangle clientArea = scomp.getClientArea();
- int increment = clientArea.height - 5;
- vbar.setPageIncrement(increment);
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/CustomWorkbook.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/CustomWorkbook.java
deleted file mode 100644
index 34aa1a9..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/CustomWorkbook.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.graphics.*;
-import java.util.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.*;
-import org.eclipse.ui.part.*;
-import org.eclipse.jface.resource.*;
-import org.eclipse.swt.custom.*;
-
-
-public class CustomWorkbook implements IFormWorkbook {
- private Hashtable pages;
- private IFormPage sourcePage;
- private IFormPage lastFormPage;
- private boolean firstPageSelected=true;
- private CTabFolder tabFolder;
- private Vector listeners=new Vector();
- private IFormPage currentPage;
-
-public CustomWorkbook() {
- pages = new Hashtable();
-}
-public void addFormSelectionListener(IFormSelectionListener listener) {
- listeners.addElement(listener);
-}
-public void addPage(IFormPage page) {
- CTabItem item = new CTabItem(tabFolder, SWT.NULL);
- item.setText(page.getLabel());
- item.setToolTipText(page.getTitle());
- item.setData(page);
- pages.put(page, item);
- if (page.isSource()) sourcePage = page;
-
- if (firstPageSelected && currentPage == null)
- selectPage(page);
-}
-public void createControl(Composite parent) {
- tabFolder = new CTabFolder(parent, SWT.BOTTOM);
- tabFolder.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- CTabItem item = (CTabItem) e.item;
- IFormPage page = (IFormPage) item.getData();
- if (page != null)
- selectPage(page);
- }
- });
- // listener to resize visible components
- tabFolder.addListener(SWT.Resize, new Listener() {
- public void handleEvent(Event e) {
- if (currentPage != null)
- setControlSize(currentPage.getControl());
- }
- });
-}
-private void fireSelectionChanged(IFormPage page) {
- for (Iterator iter = listeners.iterator(); iter.hasNext();) {
- IFormSelectionListener listener = (IFormSelectionListener) iter.next();
- listener.formSelected(page);
- }
-}
-public Control getControl() {
- return tabFolder;
-}
-public IFormPage getCurrentPage() {
- return currentPage;
-}
-public boolean isFirstPageSelected() {
- return firstPageSelected;
-}
-public void removeFormSelectionListener(IFormSelectionListener listener) {
- listeners.removeElement(listener);
-}
-public void removePage(IFormPage page) {
- CTabItem item = (CTabItem) pages.get(page);
- if (item != null)
- item.dispose();
-}
-private void reselectPage(final IFormPage page) {
- tabFolder.getDisplay().asyncExec(new Runnable() {
- public void run() {
- selectPage(page);
- }
- });
-}
-public void selectPage(final IFormPage page) {
- final IFormPage oldPage = currentPage;
- currentPage = page;
-
- // It may take a while
- BusyIndicator.showWhile(tabFolder.getDisplay(), new Runnable() {
- public void run() {
- switchPages(oldPage, page);
- }
- });
-}
-private void setControlSize(Control control) {
- Rectangle bounds = tabFolder.getBounds();
- Rectangle offset = tabFolder.getClientArea();
- bounds.x += offset.x;
- bounds.y += offset.y;
- bounds.width = offset.width;
- bounds.height = offset.height;
- control.setBounds(bounds);
- control.moveAbove(tabFolder);
-}
-private void setControlVisible(Control control) {
- if (control == null)
- return;
- setControlSize(control);
- control.setVisible(true);
-}
-public void setFirstPageSelected(boolean newFirstPageSelected) {
- firstPageSelected = newFirstPageSelected;
-}
-private void switchPages(IFormPage oldPage, IFormPage newPage) {
- if (oldPage != null && oldPage!=newPage) {
- boolean okToSwitch = oldPage.becomesInvisible(newPage);
- if (!okToSwitch) {
- // We must try to go back to the source page
- reselectPage(oldPage);
- return;
- }
- }
- if (newPage.getControl() == null)
- newPage.createControl(tabFolder);
- tabFolder.setSelection((CTabItem) pages.get(newPage));
- if (oldPage != null && oldPage != newPage) {
- Control oldControl = oldPage.getControl();
- if (oldControl!=null) oldControl.setVisible(false);
- }
- Control newControl = newPage.getControl();
- newPage.becomesVisible(oldPage);
- setControlVisible(newControl);
- fireSelectionChanged(newPage);
-}
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ExpandableGroup.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ExpandableGroup.java
deleted file mode 100644
index fd2e880..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ExpandableGroup.java
+++ /dev/null
@@ -1,204 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-
-public abstract class ExpandableGroup {
- private String text;
- private boolean expanded;
- private Composite expansion;
- protected SelectableFormLabel textLabel;
- private Composite control;
- private int style;
- private boolean expandable=true;
-
-class ExpandableLayout extends Layout {
- protected void layout(Composite parent, boolean changed) {
- Rectangle clientArea = parent.getClientArea();
- Point size = textLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT, changed);
- int x = 0;
- int y = 1;
-
- if (expandable) {
- x = 8 + 8;
- }
- textLabel.setBounds(x, y, size.x, size.y);
-
- if (expandable)
- y = Math.max(size.y, 8) + 2 + 2;
- else
- y = size.y + 2;
- if (expanded) {
- int areaWidth = clientArea.width - x;
- size = expansion.computeSize(areaWidth, SWT.DEFAULT, changed);
- expansion.setBounds(x, y, size.x, size.y);
- }
- }
-
- protected Point computeSize(Composite parent, int wHint, int hHint, boolean changed) {
- int width = 0, height = 0;
- Point size = textLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT, changed);
- width = size.x;
- height = size.y + 2 + 2;
- if (expanded) {
- size = expansion.computeSize(wHint, SWT.DEFAULT, changed);
- width = Math.max(width, size.x);
- height += size.y;
- }
- if (expandable) {
- height = Math.max(height, 8);
- width += 8 + 8;
- }
- return new Point(width, height);
- }
-}
-
- public ExpandableGroup() {
- }
-
- public ExpandableGroup(int style) {
- this.style = style;
- }
-
- public Control getControl() {
- return control;
- }
-
- public void createControl(Composite parent, FormWidgetFactory factory) {
- final Canvas container = new Canvas(parent, SWT.NULL);
- container.setBackground(factory.getBackgroundColor());
- container.setLayout(new ExpandableLayout());
- container.addPaintListener(new PaintListener() {
- public void paintControl(PaintEvent e) {
- if (expandable) repaint(e);
- }
- });
- container.addMouseListener(new MouseAdapter() {
- public void mouseUp(MouseEvent e) {
- Rectangle box = getBoxBounds(null);
- if (box.contains(e.x, e.y)) {
- setExpanded(!isExpanded());
- }
- }
- });
- textLabel = createTextLabel(container, factory);
- getHyperlinkHandler(factory).registerHyperlink(textLabel, new HyperlinkAdapter () {
- public void linkActivated(Control link) {
- ExpandableGroup.this.linkActivated();
- if (expandable) setExpanded(!isExpanded());
- }
- });
- textLabel.addFocusListener(factory.visibilityHandler);
- textLabel.addKeyListener(factory.keyboardHandler);
- if (text!=null) textLabel.setText(text);
- expansion = factory.createComposite(container);
- fillExpansion(expansion, factory);
- this.control = container;
- }
-
- protected SelectableFormLabel createTextLabel(Composite parent, FormWidgetFactory factory) {
- SelectableFormLabel text = new SelectableFormLabel(parent, SWT.WRAP);
- text.setBackground(factory.getBackgroundColor());
- return text;
- }
-
- protected HyperlinkHandler getHyperlinkHandler(FormWidgetFactory factory) {
- return factory.getHyperlinkHandler();
- }
-
- public abstract void fillExpansion(Composite expansion, FormWidgetFactory factory);
-
- public void setText(String text) {
- this.text = text;
- if (textLabel!=null)
- textLabel.setText(text);
- }
-
- public String getText() {
- return text;
- }
-
- public boolean isExpanded() {
- return expanded;
- }
-
- public void setExpandable(boolean expandable) {
- this.expandable = expandable;
- }
-
- public boolean isExpandable() {
- return expandable;
- }
-
- public void setExpanded(boolean expanded) {
- if (this.expanded != expanded) {
- if (expanded) {
- aboutToExpand();
- }
- else {
- aboutToCollapse();
- }
- this.expanded = expanded;
- expansion.setVisible(expanded);
- control.layout();
- if (expanded) {
- this.expanded();
- }
- else {
- collapsed();
- }
- }
- }
-
- private void repaint(PaintEvent e) {
- GC gc = e.gc;
- Rectangle box = getBoxBounds(gc);
- gc.setForeground(control.getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW));
- gc.drawRectangle(box);
- gc.setForeground(control.getDisplay().getSystemColor(SWT.COLOR_LIST_FOREGROUND));
- gc.drawLine(box.x+2, box.y+4, box.x+6, box.y+4);
- if (!isExpanded()) {
- gc.drawLine(box.x+4, box.y+2, box.x+4, box.y+6);
- }
- }
-
- private Rectangle getBoxBounds(GC gc) {
- int x = 0;
- int y = 0;
- boolean noGC = false;
-
- if (gc==null) {
- gc = new GC(control);
- noGC = true;
- }
- gc.setFont(textLabel.getFont());
- int height = gc.getFontMetrics().getHeight();
- y = height/2 - 4 +1;
- y = Math.max(y, 0);
- if (noGC) gc.dispose();
- return new Rectangle(x, y, 8, 8);
- }
-
- protected void updateLayout() {
- control.layout();
- }
-
- protected void aboutToExpand() {
- }
-
- protected void aboutToCollapse() {
- }
-
- protected void expanded() {
- }
- protected void collapsed() {
- }
- protected void linkActivated() {
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormButton.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormButton.java
deleted file mode 100644
index 5d7f87f..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormButton.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.graphics.*;
-
-public class FormButton {
- private Button button;
- private Image image;
- private FormWidgetFactory factory;
- private Image hoverImage;
- private boolean inside;
- private Image disabledImage;
-
-public FormButton(Button button, FormWidgetFactory factory) {
- this.button = button;
- this.factory = factory;
- button.addMouseTrackListener(new MouseTrackAdapter() {
- public void mouseEnter(MouseEvent e) {
- inside=true;
- updateImage();
- }
- public void mouseExit(MouseEvent e) {
- inside=false;
- updateImage();
- }
- });
-}
-public Button getButton() {
- return button;
-}
-public Image getDisabledImage() {
- return disabledImage;
-}
-public Image getHoverImage() {
- return hoverImage;
-}
-public Image getImage() {
- return image;
-}
-public void setDisabledImage(Image newDisabledImage) {
- disabledImage = newDisabledImage;
-}
-public void setEnabled(boolean enabled) {
- button.setEnabled(enabled);
- updateImage();
-}
-public void setHoverImage(Image newHoverImage) {
- hoverImage = newHoverImage;
-}
-public void setImage(Image newImage) {
- image = newImage;
- if (hoverImage==null) hoverImage = image;
- if (disabledImage==null) disabledImage = image;
- updateImage();
-}
-public void updateImage() {
- boolean enabled = button.isEnabled();
- if (enabled == false) {
- button.setImage(disabledImage);
- } else {
- if (inside) {
- button.setCursor(factory.getHyperlinkCursor());
- button.setImage(hoverImage);
- } else {
- button.setCursor(null);
- button.setImage(image);
- }
- }
-}
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormEntry.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormEntry.java
deleted file mode 100644
index a7b12e1..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormEntry.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.widgets.*;
-import java.util.*;
-
-public class FormEntry {
- private Text text;
- private String value;
- private boolean dirty;
- private Vector listeners=new Vector();
- boolean ignoreModify=false;
-
-public FormEntry(Text text) {
- this.text = text;
- this.value = text.getText();
- addListeners();
-}
-public void addFormTextListener(IFormTextListener listener) {
- listeners.addElement(listener);
-}
-private void addListeners() {
- text.addKeyListener(new KeyAdapter() {
- public void keyReleased(KeyEvent e) {
- keyReleaseOccured(e);
- }
- });
- text.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- editOccured(e);
- }
- });
- text.addFocusListener (new FocusAdapter() {
- public void focusLost(FocusEvent e) {
- if (dirty) commit();
- }
- });
-}
-public void commit() {
- if (dirty) {
- value = text.getText();
- //notify
- for (Iterator iter = listeners.iterator(); iter.hasNext();) {
- ((IFormTextListener) iter.next()).textValueChanged(this);
- }
- }
- dirty = false;
-}
-protected void editOccured(ModifyEvent e) {
- if (ignoreModify) return;
- dirty = true;
- for (Iterator iter = listeners.iterator(); iter.hasNext();) {
- ((IFormTextListener) iter.next()).textDirty(this);
- }
-}
-
-public Text getControl() {
- return text;
-}
-public java.lang.String getValue() {
- return value;
-}
-public boolean isDirty() {
- return dirty;
-}
-protected void keyReleaseOccured(KeyEvent e) {
- if (e.character == '\r') {
- // commit value
- if (dirty) commit();
- }
- else if (e.character == '\u001b') { // Escape character
- text.setText(value!=null?value:""); // restore old
- dirty= false;
- }
-}
-public void removeFormTextListener(IFormTextListener listener) {
- listeners.removeElement(listener);
-}
-public void setDirty(boolean newDirty) {
- dirty = newDirty;
-}
-public void setValue(String value) {
- if (text!=null) text.setText(value!=null?value:"");
- this.value = value;
-}
-
-public void setValue(String value, boolean blockNotification) {
- ignoreModify = blockNotification;
- setValue(value);
- ignoreModify = false;
-}
-
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormLabel.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormLabel.java
deleted file mode 100644
index 8c16b5f..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormLabel.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import java.text.*;
-
-/**
- * FormText is a windowless control that
- * draws text in the provided context.
- */
-public class FormLabel extends Canvas {
- private String text="";
- int textMarginWidth=5;
- int textMarginHeight=5;
- private boolean underlined;
-
- public FormLabel(Composite parent, int style) {
- super(parent, style);
- addPaintListener(new PaintListener() {
- public void paintControl(PaintEvent e) {
- paint(e);
- }
- });
- }
- public String getText() {
- return text;
- }
- public void setText(String text) {
- if (text!=null)
- this.text = text;
- else
- text = "";
- }
-
- public void setUnderlined(boolean underlined) {
- this.underlined = underlined;
- }
-
- public boolean isUnderlined() {
- return underlined;
- }
-
- public Point computeSize(int wHint, int hHint, boolean changed) {
- int innerWidth = wHint;
- if (innerWidth!=SWT.DEFAULT)
- innerWidth -= textMarginWidth*2;
- Point textSize = computeTextSize(innerWidth, hHint);
- int textWidth = textSize.x + 2*textMarginWidth;
- int textHeight = textSize.y + 2*textMarginHeight;
- return new Point(textWidth, textHeight);
- }
-
- public static int computeWrapHeight(GC gc, String text, int width) {
- BreakIterator wb = BreakIterator.getWordInstance();
- wb.setText(text);
- FontMetrics fm = gc.getFontMetrics();
- int lineHeight = fm.getHeight();
-
- int saved = 0;
- int last = 0;
- int height = lineHeight;
-
- for (int loc = wb.first();
- loc != BreakIterator.DONE;
- loc = wb.next()) {
- String word = text.substring(saved, loc);
- Point extent = gc.textExtent(word);
- if (extent.x > width) {
- // overflow
- saved = last;
- height += extent.y;
- }
- last = loc;
- }
- return height;
- }
-
- private Point computeTextSize(int wHint, int hHint) {
- Point extent;
- GC gc = new GC(this);
-
- gc.setFont(getFont());
- if ((getStyle() & SWT.WRAP)!=0 && wHint != SWT.DEFAULT) {
- int height = computeWrapHeight(gc, text, wHint);
- extent = new Point(wHint, height);
- }
- else {
- extent = gc.textExtent(getText());
- }
- gc.dispose();
- return extent;
- }
-
- public static void paintWrapText(GC gc, Point size, String text, int marginWidth, int marginHeight) {
- paintWrapText(gc, size, text, marginWidth, marginHeight, false);
- }
-
- public static void paintWrapText(GC gc, Point size, String text, int marginWidth, int marginHeight, boolean underline) {
- BreakIterator wb = BreakIterator.getWordInstance();
- wb.setText(text);
- FontMetrics fm = gc.getFontMetrics();
- int lineHeight = fm.getHeight();
- int descent = fm.getDescent();
-
- int saved = 0;
- int last = 0;
- int y = marginHeight;
- int width = size.x - marginWidth*2;
-
- for (int loc = wb.first();
- loc != BreakIterator.DONE;
- loc = wb.next()) {
- String line = text.substring(saved, loc);
- Point extent = gc.textExtent(line);
- if (extent.x > width) {
- // overflow
- String prevLine = text.substring(saved, last);
- gc.drawString(prevLine, marginWidth, y, true);
- if (underline) {
- Point prevExtent = gc.textExtent(prevLine);
- int lineY = y + lineHeight - descent + 1;
- gc.drawLine(marginWidth, lineY, prevExtent.x, lineY);
- }
-
- saved = last;
- y += lineHeight;
- }
- last = loc;
- }
- // paint the last line
- String lastLine = text.substring(saved, last);
- gc.drawString(lastLine, marginWidth, y, true);
- if (underline) {
- int lineY = y + lineHeight - descent + 1;
- Point lastExtent = gc.textExtent(lastLine);
- gc.drawLine(marginWidth, lineY, marginWidth + lastExtent.x, lineY);
- }
- }
-
- protected void paint(PaintEvent e) {
- GC gc = e.gc;
- Point size = getSize();
- gc.setFont(getFont());
- gc.setForeground(getForeground());
- if ((getStyle() & SWT.WRAP)!=0) {
- paintWrapText(gc, size, text, textMarginWidth, textMarginHeight, underlined);
- }
- else {
- gc.drawText(getText(), textMarginWidth, textMarginHeight, true);
- if (underlined) {
- FontMetrics fm = gc.getFontMetrics();
- int descent = fm.getDescent();
- int lineY = size.y - textMarginHeight - descent + 1;
- gc.drawLine(textMarginWidth, lineY, size.x-textMarginWidth, lineY);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormSection.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormSection.java
deleted file mode 100644
index 5c68529..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormSection.java
+++ /dev/null
@@ -1,419 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.*;
-import org.eclipse.jface.util.*;
-import org.eclipse.jface.resource.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.dnd.Clipboard;
-
-public abstract class FormSection implements IPropertyChangeListener {
- public static final int SELECTION = 1;
- private String headerColorKey = FormWidgetFactory.DEFAULT_HEADER_COLOR;
- private String headerText;
- private Control client;
- protected Label header;
- protected Control separator;
- private SectionChangeManager sectionManager;
- private String description;
- private boolean dirty;
- protected Label descriptionLabel;
- private ToggleControl toggle;
- private boolean readOnly;
- private boolean addSeparator = true;
- private boolean descriptionPainted = true;
- private boolean headerPainted = true;
- private boolean collapsable = false;
- private boolean collapsed = false;
- private int widthHint = SWT.DEFAULT;
- private int heightHint = SWT.DEFAULT;
- private Composite control;
-
- /*
- * This is a special layout for the section. Both the
- * header and the description labels will wrap and
- * they will use client's size to calculate needed
- * height. This kind of behaviour is not possible
- * with stock grid layout.
- */
- class SectionLayout extends Layout {
- int vspacing = 3;
- int sepHeight = 2;
-
- protected Point computeSize(
- Composite parent,
- int wHint,
- int hHint,
- boolean flush) {
- int width = 0;
- int height = 0;
- int cwidth = 0;
- int collapsedHeight = 0;
-
- if (wHint != SWT.DEFAULT)
- width = wHint;
- if (hHint != SWT.DEFAULT)
- height = hHint;
-
- cwidth = width;
-
- if (client != null) {
- Point csize = client.computeSize(SWT.DEFAULT, SWT.DEFAULT, flush);
- if (width == 0) {
- width = csize.x;
- cwidth = width;
- }
- if (height == 0)
- height = csize.y;
- }
-
- Point toggleSize = null;
-
- if (collapsable && toggle != null)
- toggleSize = toggle.computeSize(SWT.DEFAULT, SWT.DEFAULT, flush);
-
- if (hHint == SWT.DEFAULT && headerPainted && header != null) {
- int hwidth = cwidth;
- if (toggleSize != null)
- hwidth = cwidth - toggleSize.x - 5;
- Point hsize = header.computeSize(hwidth, SWT.DEFAULT, flush);
- height += hsize.y;
- collapsedHeight = hsize.y;
- height += vspacing;
- }
-
- if (hHint == SWT.DEFAULT && addSeparator) {
- height += sepHeight;
- height += vspacing;
- collapsedHeight += vspacing + sepHeight;
- }
- if (hHint == SWT.DEFAULT && descriptionPainted && descriptionLabel != null) {
- Point dsize = descriptionLabel.computeSize(cwidth, SWT.DEFAULT, flush);
- height += dsize.y;
- height += vspacing;
- }
- if (toggle != null && toggle.getSelection()) {
- // collapsed state
- height = collapsedHeight;
- }
- return new Point(width, height);
- }
- protected void layout(Composite parent, boolean flush) {
- int width = parent.getClientArea().width;
- int height = parent.getClientArea().height;
- int y = 0;
- Point toggleSize = null;
-
- if (collapsable) {
- toggleSize = toggle.computeSize(SWT.DEFAULT, SWT.DEFAULT, flush);
- }
- if (headerPainted && header != null) {
- Point hsize;
-
- int availableWidth = width;
- if (toggleSize != null)
- availableWidth = width - toggleSize.x - 5;
- hsize = header.computeSize(availableWidth, SWT.DEFAULT, flush);
- int hx = 0;
- if (toggle != null) {
- int ty = y + hsize.y - toggleSize.y;
- toggle.setBounds(0, ty, toggleSize.x, toggleSize.y);
- hx = toggleSize.x; // + 5;
- }
- header.setBounds(hx, y, availableWidth, hsize.y);
-
- y += hsize.y + vspacing;
- }
- if (addSeparator && separator != null) {
- separator.setBounds(0, y, width, 2);
- y += sepHeight + vspacing;
- }
- if (toggle != null && toggle.getSelection()) {
- return;
- }
- if (descriptionPainted && descriptionLabel != null) {
- Point dsize = descriptionLabel.computeSize(width, SWT.DEFAULT, flush);
- descriptionLabel.setBounds(0, y, width, dsize.y);
- y += dsize.y + vspacing;
- }
- if (client != null) {
- client.setBounds(0, y, width, height - y);
- }
- }
- }
-
- public FormSection() {
- // Description causes problems re word wrapping
- // and causes bad layout in schema and
- // feature editors when in Motif - turning off
- if (SWT.getPlatform().equals("motif")) {
- descriptionPainted = false;
- }
- JFaceResources.getFontRegistry().addListener(this);
- }
- public void commitChanges(boolean onSave) {
- }
- public abstract Composite createClient(
- Composite parent,
- FormWidgetFactory factory);
- public final Control createControl(
- Composite parent,
- final FormWidgetFactory factory) {
- Composite section = factory.createComposite(parent);
- SectionLayout slayout = new SectionLayout();
- section.setLayout(slayout);
- section.setData(this);
-
- if (headerPainted) {
- Color headerColor = factory.getColor(getHeaderColorKey());
- header =
- factory.createHeadingLabel(section, getHeaderText(), headerColor, SWT.WRAP);
- if (collapsable) {
- toggle = new ToggleControl(section, SWT.NULL);
- toggle.setSelection(collapsed);
- toggle.setBackground(factory.getBackgroundColor());
- toggle.setActiveDecorationColor(factory.getHyperlinkColor());
- toggle.setDecorationColor(factory.getColor(factory.COLOR_COMPOSITE_SEPARATOR));
- toggle.setActiveCursor(factory.getHyperlinkCursor());
- toggle.addFocusListener(factory.visibilityHandler);
- toggle.addKeyListener(factory.keyboardHandler);
- toggle.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- doToggle();
- }
- });
- header.addMouseListener(new MouseAdapter() {
- public void mouseDown(MouseEvent e) {
- toggle.setSelection(!toggle.getSelection());
- toggle.redraw();
- doToggle();
- }
- });
- header.addMouseTrackListener(new MouseTrackAdapter() {
- public void mouseEnter(MouseEvent e) {
- header.setCursor(factory.getHyperlinkCursor());
- }
- public void mouseExit(MouseEvent e) {
- header.setCursor(null);
- }
- });
- }
- }
-
- if (addSeparator) {
- //separator = factory.createSeparator(section, SWT.HORIZONTAL);
- separator = factory.createCompositeSeparator(section);
- }
-
- if (descriptionPainted && description != null) {
- descriptionLabel = factory.createLabel(section, description, SWT.WRAP);
- }
- client = createClient(section, factory);
- section.setData(this);
- control = section;
- return section;
- }
-
- private void doToggle() {
- boolean collapsed = toggle.getSelection();
- reflow();
- if (descriptionLabel != null)
- descriptionLabel.setVisible(!collapsed);
- if (client != null)
- client.setVisible(!collapsed);
- }
-
- protected void reflow() {
- control.layout(true);
- control.getParent().layout(true);
- }
-
- protected Text createText(
- Composite parent,
- String label,
- FormWidgetFactory factory) {
- return createText(parent, label, factory, 1);
- }
- protected Text createText(
- Composite parent,
- String label,
- FormWidgetFactory factory,
- int span) {
- factory.createLabel(parent, label);
- Text text = factory.createText(parent, "");
- int hfill = span==1 ? GridData.FILL_HORIZONTAL : GridData.HORIZONTAL_ALIGN_FILL;
- GridData gd =
- new GridData(hfill | GridData.VERTICAL_ALIGN_CENTER);
- //gd.grabExcessHorizontalSpace = true;
- gd.horizontalSpan = span;
- text.setLayoutData(gd);
- return text;
- }
- protected Text createText(
- Composite parent,
- FormWidgetFactory factory,
- int span) {
- Text text = factory.createText(parent, "");
- int hfill = span==1 ? GridData.FILL_HORIZONTAL : GridData.HORIZONTAL_ALIGN_FILL;
- GridData gd =
- new GridData(hfill | GridData.VERTICAL_ALIGN_CENTER);
- //gd.grabExcessHorizontalSpace = true;
- gd.horizontalSpan = span;
- text.setLayoutData(gd);
- return text;
- }
- public void dispose() {
- JFaceResources.getFontRegistry().removeListener(this);
- }
- public boolean doGlobalAction(String actionId) {
- return false;
- }
- public void expandTo(Object object) {
- }
- public final void fireChangeNotification(int changeType, Object changeObject) {
- if (sectionManager == null)
- return;
- sectionManager.dispatchNotification(this, changeType, changeObject);
- }
- public final void fireSelectionNotification(Object changeObject) {
- fireChangeNotification(SELECTION, changeObject);
- }
- public java.lang.String getDescription() {
- return description;
- }
- public java.lang.String getHeaderColorKey() {
- return headerColorKey;
- }
- public java.lang.String getHeaderText() {
- return headerText;
- }
- public int getHeightHint() {
- return heightHint;
- }
- public int getWidthHint() {
- return widthHint;
- }
- public void initialize(Object input) {
- }
- public boolean isAddSeparator() {
- return addSeparator;
- }
- public boolean isDescriptionPainted() {
- return descriptionPainted;
- }
- public boolean isDirty() {
- return dirty;
- }
- public boolean isHeaderPainted() {
- return headerPainted;
- }
- public boolean isReadOnly() {
- return readOnly;
- }
- public void sectionChanged(
- FormSection source,
- int changeType,
- Object changeObject) {
- }
- public void setAddSeparator(boolean newAddSeparator) {
- addSeparator = newAddSeparator;
- }
-
- private String trimNewLines(String text) {
- StringBuffer buff = new StringBuffer();
- for (int i = 0; i < text.length(); i++) {
- char c = text.charAt(i);
- if (c == '\n')
- buff.append(' ');
- else
- buff.append(c);
- }
- return buff.toString();
- }
-
- public void setDescription(java.lang.String newDescription) {
- // we will trim the new lines so that we can
- // use layout-based word wrapping instead
- // of hard-coded one
- description = trimNewLines(newDescription);
- //description = newDescription;
- if (descriptionLabel != null)
- descriptionLabel.setText(newDescription);
- }
- public void setDescriptionPainted(boolean newDescriptionPainted) {
- descriptionPainted = newDescriptionPainted;
- }
- public void setDirty(boolean newDirty) {
- dirty = newDirty;
- }
- public void setFocus() {
- if (toggle!=null)
- toggle.setFocus();
- }
- public void setHeaderColorKey(java.lang.String newHeaderColorKey) {
- headerColorKey = newHeaderColorKey;
- }
- public void setHeaderPainted(boolean newHeaderPainted) {
- headerPainted = newHeaderPainted;
- }
- public void setHeaderText(java.lang.String newHeaderText) {
- headerText = newHeaderText;
- if (header != null)
- header.setText(headerText);
- }
- public void setHeightHint(int newHeightHint) {
- heightHint = newHeightHint;
- }
- void setManager(SectionChangeManager manager) {
- this.sectionManager = manager;
- }
- public void setReadOnly(boolean newReadOnly) {
- readOnly = newReadOnly;
- }
-
- public void setWidthHint(int newWidthHint) {
- widthHint = newWidthHint;
- }
-
- public void update() {
- }
-
- public void propertyChange(PropertyChangeEvent arg0) {
- if (control != null && header != null) {
- header.setFont(JFaceResources.getBannerFont());
- control.layout(true);
- }
- }
-
- /**
- * Gets the collapsable.
- * @return Returns a boolean
- */
- public boolean getCollapsable() {
- return collapsable;
- }
-
- /**
- * Sets the collapsable.
- * @param collapsable The collapsable to set
- */
- public void setCollapsable(boolean collapsable) {
- this.collapsable = collapsable;
- }
-
- public void setCollapsed(boolean collapsed) {
- this.collapsed = collapsed;
- }
-
- public boolean canPaste(Clipboard clipboard) {
- return false;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormWidgetFactory.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormWidgetFactory.java
deleted file mode 100644
index 66777a5..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/FormWidgetFactory.java
+++ /dev/null
@@ -1,398 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.graphics.*;
-import java.util.*;
-import org.eclipse.swt.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.jface.resource.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.custom.*;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.update.ui.forms.internal.engine.FormEngine;
-
-public class FormWidgetFactory {
- public static final String DEFAULT_HEADER_COLOR = "__default__header__";
- public static final String COLOR_BACKGROUND = "__bg";
- public static final String COLOR_BORDER = "__border";
- public static final String COLOR_COMPOSITE_SEPARATOR = "__compSep";
- public static final String COLOR_HYPERLINK = "__hyperlink";
-
- private Hashtable colorRegistry = new Hashtable();
- private Color backgroundColor;
- private Color clientAreaColor;
- private KeyListener deleteListener;
- private Color foregroundColor;
- private Display display;
- public static final int BORDER_STYLE = SWT.NONE; //SWT.BORDER;
- private BorderPainter borderPainter;
- private Color borderColor;
- private HyperlinkHandler hyperlinkHandler;
- /* default */ VisibilityHandler visibilityHandler;
- /* default */ KeyboardHandler keyboardHandler;
-
- class BorderPainter implements PaintListener {
- public void paintControl(PaintEvent event) {
- Composite composite = (Composite) event.widget;
- Control[] children = composite.getChildren();
- for (int i = 0; i < children.length; i++) {
- Control c = children[i];
- if (c.isEnabled() == false && !(c instanceof CCombo))
- continue;
- if (c instanceof SelectableFormLabel)
- continue;
- if (c instanceof Text || c instanceof Canvas || c instanceof CCombo) {
- Rectangle b = c.getBounds();
- GC gc = event.gc;
- gc.setForeground(c.getBackground());
- gc.drawRectangle(b.x - 1, b.y - 1, b.width + 1, b.height + 1);
- gc.setForeground(foregroundColor);
- if (c instanceof CCombo)
- gc.drawRectangle(b.x - 1, b.y - 1, b.width + 1, b.height + 1);
- else
- gc.drawRectangle(b.x - 1, b.y - 2, b.width + 1, b.height + 3);
- } else if (c instanceof Table || c instanceof Tree || c instanceof TableTree) {
- Rectangle b = c.getBounds();
- GC gc = event.gc;
- gc.setForeground(borderColor);
- //gc.drawRectangle(b.x - 2, b.y - 2, b.width + 3, b.height + 3);
- gc.drawRectangle(b.x - 1, b.y - 1, b.width + 2, b.height + 2);
- }
- }
- }
- }
-
- class VisibilityHandler extends FocusAdapter {
- public void focusGained(FocusEvent e) {
- Widget w = e.widget;
- if (w instanceof Control) {
- ensureVisible((Control) w);
- }
- }
- }
-
- class KeyboardHandler extends KeyAdapter {
- public void keyPressed(KeyEvent e) {
- Widget w = e.widget;
- if (w instanceof Control) {
- processKey(e.keyCode, (Control) w);
- }
- }
- }
-
- public FormWidgetFactory() {
- this(Display.getCurrent());
- }
-
- public FormWidgetFactory(Display display) {
- this.display = display;
- initialize();
- }
-
- public static ScrolledComposite getScrolledComposite(Control c) {
- Composite parent = c.getParent();
-
- while (parent != null) {
- if (parent instanceof ScrolledComposite) {
- return (ScrolledComposite) parent;
- }
- parent = parent.getParent();
- }
- return null;
- }
-
- public static void ensureVisible(Control c) {
- ScrolledComposite scomp = getScrolledComposite(c);
- if (scomp != null) {
- AbstractSectionForm.ensureVisible(scomp, c);
- }
- }
-
- public static void processKey(int keyCode, Control c) {
- ScrolledComposite scomp = getScrolledComposite(c);
- if (scomp != null) {
- switch (keyCode) {
- case SWT.ARROW_DOWN :
- AbstractSectionForm.scrollVertical(scomp, false);
- break;
- case SWT.ARROW_UP :
- AbstractSectionForm.scrollVertical(scomp, true);
- break;
- case SWT.ARROW_LEFT :
- AbstractSectionForm.scrollHorizontal(scomp, true);
- break;
- case SWT.ARROW_RIGHT :
- AbstractSectionForm.scrollHorizontal(scomp, false);
- break;
- case SWT.PAGE_UP :
- AbstractSectionForm.scrollPage(scomp, true);
- break;
- case SWT.PAGE_DOWN :
- AbstractSectionForm.scrollPage(scomp, false);
- break;
- }
- }
- }
-
- public Button createButton(Composite parent, String text, int style) {
- int flatStyle = BORDER_STYLE == SWT.BORDER ? SWT.NULL : SWT.FLAT;
- //int flatStyle = SWT.NULL;
- Button button = new Button(parent, style | flatStyle);
- button.setBackground(backgroundColor);
- button.setForeground(foregroundColor);
- if (text != null)
- button.setText(text);
- button.addFocusListener(visibilityHandler);
- return button;
- }
- public Composite createComposite(Composite parent) {
- return createComposite(parent, SWT.NULL);
- }
- public Composite createComposite(Composite parent, int style) {
- Composite composite = new Composite(parent, style);
- composite.setBackground(backgroundColor);
- composite.addMouseListener(new MouseAdapter() {
- public void mousePressed(MouseEvent e) {
- ((Control) e.widget).setFocus();
- }
- });
- return composite;
- }
- public Composite createCompositeSeparator(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setBackground(getColor(COLOR_COMPOSITE_SEPARATOR));
- return composite;
- }
-
- public Label createHeadingLabel(Composite parent, String text) {
- return createHeadingLabel(parent, text, null, SWT.NONE);
- }
-
- public Label createHeadingLabel(Composite parent, String text, int style) {
- return createHeadingLabel(parent, text, null, style);
- }
-
- public Label createHeadingLabel(Composite parent, String text, Color bg) {
- return createHeadingLabel(parent, text, bg, SWT.NONE);
- }
-
- public Label createHeadingLabel(
- Composite parent,
- String text,
- Color bg,
- int style) {
- Label label = new Label(parent, style);
- if (text != null)
- label.setText(text);
- label.setBackground(backgroundColor);
- label.setForeground(foregroundColor);
- label.setFont(JFaceResources.getFontRegistry().get(JFaceResources.BANNER_FONT));
- return label;
- }
-
- public Label createHyperlinkLabel(
- Composite parent,
- String text,
- IHyperlinkListener listener) {
- return createHyperlinkLabel(parent, text, listener, SWT.NULL);
- }
- public Label createHyperlinkLabel(
- Composite parent,
- String text,
- IHyperlinkListener listener,
- int style) {
- Label label = createLabel(parent, text, style);
- turnIntoHyperlink(label, listener);
- return label;
- }
- public Label createLabel(Composite parent, String text) {
- return createLabel(parent, text, SWT.NONE);
- }
- public Label createLabel(Composite parent, String text, int style) {
- Label label = new Label(parent, style);
- if (text != null)
- label.setText(text);
- label.setBackground(backgroundColor);
- label.setForeground(foregroundColor);
- return label;
- }
-
- public SelectableFormLabel createSelectableLabel(
- Composite parent,
- String text) {
- return createSelectableLabel(parent, text, SWT.NONE);
- }
-
- public SelectableFormLabel createSelectableLabel(
- Composite parent,
- String text,
- int style) {
- SelectableFormLabel label = new SelectableFormLabel(parent, style);
- if (text != null)
- label.setText(text);
- label.setBackground(backgroundColor);
- label.setForeground(foregroundColor);
- label.addFocusListener(visibilityHandler);
- label.addKeyListener(keyboardHandler);
- return label;
- }
-
- public FormEngine createFormEngine(Composite parent) {
- FormEngine engine = new FormEngine(parent, SWT.WRAP);
- engine.setBackground(backgroundColor);
- engine.setForeground(foregroundColor);
- engine.marginWidth = 1;
- engine.marginHeight = 0;
- engine.setHyperlinkSettings(getHyperlinkHandler());
- engine.addKeyListener(keyboardHandler);
- return engine;
- }
-
- public Label createSeparator(Composite parent, int style) {
- Label label = new Label(parent, SWT.SEPARATOR | style);
- label.setBackground(backgroundColor);
- label.setForeground(borderColor);
- return label;
- }
- public Table createTable(Composite parent, int style) {
- Table table = new Table(parent, BORDER_STYLE | style);
- table.setBackground(backgroundColor);
- table.setForeground(foregroundColor);
- hookDeleteListener(table);
- return table;
- }
- public Text createText(Composite parent, String value) {
- return createText(parent, value, BORDER_STYLE | SWT.SINGLE);
- }
- public Text createText(Composite parent, String value, int style) {
- Text text = new Text(parent, style);
- if (value != null)
- text.setText(value);
- text.setBackground(clientAreaColor);
- text.setForeground(foregroundColor);
- text.addFocusListener(visibilityHandler);
- return text;
- }
- public Tree createTree(Composite parent, int style) {
- Tree tree = new Tree(parent, BORDER_STYLE | style);
- tree.setBackground(backgroundColor);
- tree.setForeground(foregroundColor);
- hookDeleteListener(tree);
- return tree;
- }
- private void deleteKeyPressed(Widget widget) {
- if (!(widget instanceof Control))
- return;
- Control control = (Control) widget;
- for (Control parent = control.getParent();
- parent != null;
- parent = parent.getParent()) {
- if (parent.getData() instanceof FormSection) {
- FormSection section = (FormSection) parent.getData();
- section.doGlobalAction(IWorkbenchActionConstants.DELETE);
- break;
- }
- }
- }
- public void dispose() {
- Enumeration colors = colorRegistry.elements();
- while (colors.hasMoreElements()) {
- Color c = (Color) colors.nextElement();
- c.dispose();
- }
- hyperlinkHandler.dispose();
- colorRegistry = null;
- }
- public Color getBackgroundColor() {
- return backgroundColor;
- }
- public Color getBorderColor() {
- return borderColor;
- }
- public Cursor getBusyCursor() {
- return hyperlinkHandler.getBusyCursor();
- }
- public Color getClientAreaColor() {
- return clientAreaColor;
- }
- public Color getColor(String key) {
- return (Color) colorRegistry.get(key);
- }
- public Color getForegroundColor() {
- return foregroundColor;
- }
- public HyperlinkHandler getHyperlinkHandler() {
- return hyperlinkHandler;
- }
- public Cursor getHyperlinkCursor() {
- return hyperlinkHandler.getHyperlinkCursor();
- }
- public Color getHyperlinkColor() {
- return hyperlinkHandler.getForeground();
- }
- public Color getHyperlinkHoverColor() {
- return hyperlinkHandler.getActiveForeground();
- }
- public int getHyperlinkUnderlineMode() {
- return hyperlinkHandler.getHyperlinkUnderlineMode();
- }
- public void hookDeleteListener(Control control) {
- if (deleteListener == null) {
- deleteListener = new KeyAdapter() {
- public void keyPressed(KeyEvent event) {
- if (event.character == SWT.DEL && event.stateMask == 0) {
- deleteKeyPressed(event.widget);
- }
- }
- };
- }
- control.addKeyListener(deleteListener);
- }
- private void initialize() {
- clientAreaColor = display.getSystemColor(SWT.COLOR_LIST_BACKGROUND);
- //registerColor(COLOR_BACKGROUND, 0xff, 0xfe, 0xf9);
- registerColor(COLOR_BORDER, 195, 191, 179);
- registerColor(COLOR_COMPOSITE_SEPARATOR, 152, 170, 203);
- registerColor(DEFAULT_HEADER_COLOR, 0x48, 0x70, 0x98);
- //backgroundColor = getColor(COLOR_BACKGROUND);
- backgroundColor = clientAreaColor;
- borderColor = getColor(COLOR_BORDER);
- foregroundColor = display.getSystemColor(SWT.COLOR_LIST_FOREGROUND);
- hyperlinkHandler = new HyperlinkHandler();
- Color hyperlinkColor = JFaceColors.getHyperlinkText(display);
- //hyperlinkHandler.setForeground(registerColor(COLOR_HYPERLINK, 0, 0, 153));
- hyperlinkHandler.setForeground(hyperlinkColor);
- hyperlinkHandler.setBackground(backgroundColor);
- visibilityHandler = new VisibilityHandler();
- keyboardHandler = new KeyboardHandler();
- }
-
- public void paintBordersFor(Composite parent) {
- if (BORDER_STYLE == SWT.BORDER)
- return;
- if (borderPainter == null)
- borderPainter = new BorderPainter();
- parent.addPaintListener(borderPainter);
- }
- public Color registerColor(String key, int r, int g, int b) {
- Color c = new Color(display, r, g, b);
- colorRegistry.put(key, c);
- return c;
- }
- public void setHyperlinkColor(Color color) {
- hyperlinkHandler.setForeground(color);
- }
- public void setHyperlinkHoverColor(org.eclipse.swt.graphics.Color hoverColor) {
- hyperlinkHandler.setActiveForeground(hoverColor);
- }
- public void setHyperlinkUnderlineMode(int newHyperlinkUnderlineMode) {
- hyperlinkHandler.setHyperlinkUnderlineMode(newHyperlinkUnderlineMode);
- }
- public void turnIntoHyperlink(Control control, IHyperlinkListener listener) {
- hyperlinkHandler.registerHyperlink(control, listener);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HTMLTableLayout.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HTMLTableLayout.java
deleted file mode 100644
index 3232633..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HTMLTableLayout.java
+++ /dev/null
@@ -1,645 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.*;
-import java.util.*;
-import org.eclipse.swt.SWT;
-
-/**
- * This implementation of the layout algorithm
- * attempts to position controls in the composite
- * using a two-pass autolayout HTML table altorithm
- * recommeded by HTML 4.01 W3C specification.
- * The main differences with GridLayout is that
- * it has two passes and that width and height
- * are not calculated in the same pass.
- * <p>
- * The advantage of the algorithm over GridLayout
- * is that it is capable of flowing text controls
- * capable of line wrap. These controls do not
- * have natural 'preferred size'. Instead,
- * they are capable of providing the required
- * height if the width is set. Consequently,
- * this algorithm first calculates the widths
- * that will be assigned to columns, and then
- * passes those widths to the controls to
- * calculate the height. When a composite
- * with this layout is a child of the scrolling
- * composite, they should interact in such
- * a way that reduction in the scrolling composite
- * width results in the reflow and increase of
- * the overall height.
- * <p>
- * If none of the columns contain expandable
- * and wrappable controls, the end-result
- * will be similar to the one provided
- * by GridLayout. The difference will
- * show up for layouts that contain
- * controls whose minimum and maximum
- * widths are not the same.
- */
-
-public class HTMLTableLayout extends Layout {
- public int numColumns = 1;
- public int leftMargin = 5;
- public int rightMargin = 5;
- public int topMargin = 5;
- public int bottomMargin = 5;
- public int horizontalSpacing = 5;
- public int verticalSpacing = 5;
- public boolean makeColumnsEqualWidth = false;
-
- private boolean initialLayout=true;
- private Vector grid = null;
- private int [] minColumnWidths, maxColumnWidths;
- private int widestColumnWidth;
- private int [] growingColumns;
-
- public int getMinimumWidth(Composite parent, boolean changed) {
- changed = true;
- initializeIfNeeded(parent, changed);
- if (initialLayout) {
- changed = true;
- initialLayout = false;
- }
- if (grid==null || changed) {
- changed = true;
- grid = new Vector();
- createGrid(parent);
- }
- if (minColumnWidths==null)
- minColumnWidths = new int [numColumns];
- for (int i=0; i<numColumns; i++) {
- minColumnWidths[i] = 0;
- }
- return internalGetMinimumWidth(parent, changed);
- }
-
- public int getMaximumWidth(Composite parent, boolean changed) {
- changed = true;
- initializeIfNeeded(parent, changed);
- if (initialLayout) {
- changed = true;
- initialLayout = false;
- }
- if (grid==null || changed) {
- changed = true;
- grid = new Vector();
- createGrid(parent);
- }
- if (maxColumnWidths==null)
- maxColumnWidths = new int[numColumns];
- for (int i=0; i<numColumns; i++) {
- maxColumnWidths[i] = 0;
- }
- return internalGetMaximumWidth(parent, changed);
- }
-
- /**
- * @see Layout#layout(Composite, boolean)
- */
- protected void layout(Composite parent, boolean changed) {
- Rectangle clientArea = parent.getClientArea();
- Control [] children = parent.getChildren();
- if (children.length ==0) return;
- int parentWidth = clientArea.width;
- changed = true;
- initializeIfNeeded(parent, changed);
- if (initialLayout) {
- changed = true;
- initialLayout = false;
- }
- if (grid==null || changed) {
- changed = true;
- grid = new Vector();
- createGrid(parent);
- }
- resetColumnWidths();
- int minWidth = internalGetMinimumWidth(parent, changed);
- int maxWidth = internalGetMaximumWidth(parent, changed);
-
- int tableWidth = parentWidth;
-
- int [] columnWidths;
-
- if (parentWidth < minWidth) {
- tableWidth = minWidth;
- if (makeColumnsEqualWidth) {
- columnWidths = new int[numColumns];
- for (int i=0; i<numColumns; i++) {
- columnWidths[i] = widestColumnWidth;
- }
- }
- else
- columnWidths = minColumnWidths;
- }
- else if (parentWidth > maxWidth) {
- if (growingColumns.length==0) {
- tableWidth = maxWidth;
- columnWidths = maxColumnWidths;
- }
- else {
- columnWidths = new int [numColumns];
- int colSpace = tableWidth - leftMargin - rightMargin;
- colSpace -= (numColumns-1)*horizontalSpacing;
- int extra = parentWidth - maxWidth;
- int colExtra = extra / growingColumns.length;
- for (int i=0; i<numColumns; i++) {
- columnWidths[i] = maxColumnWidths[i];
-
- if (isGrowingColumn(i)) {
- columnWidths[i] += colExtra;
- }
- }
- }
- }
- else {
- columnWidths = new int [numColumns];
- if (makeColumnsEqualWidth) {
- int colSpace = tableWidth - leftMargin - rightMargin;
- colSpace -= (numColumns-1)*horizontalSpacing;
- int col = colSpace/numColumns;
- for (int i=0; i<numColumns; i++) {
- columnWidths[i] = col;
- }
- }
- else {
- int [] extraSpace = calculateExtraSpace(tableWidth, maxWidth, minWidth);
- for (int i=0; i<numColumns; i++) {
- int minCWidth = minColumnWidths[i];
- columnWidths[i] = minCWidth + extraSpace[i];
- }
- }
- }
- int x = 0;
- int y = topMargin;
- // assign widths
- for (int i=0; i<grid.size(); i++) {
- TableData [] row = (TableData [])grid.elementAt(i);
- // assign widths, calculate heights
- int rowHeight = 0;
- x = leftMargin;
- for (int j=0; j<numColumns; j++) {
- TableData td = row[j];
- if (td.isItemData==false) {
- continue;
- }
- Control child = children[td.childIndex];
- int span = td.colspan;
- int cwidth = 0;
- for (int k=j; k<j+span; k++) {
- cwidth += columnWidths[k];
- if (k<j+span-1) cwidth += horizontalSpacing;
- }
- Point size = computeSize(child, cwidth, changed);
- td.compWidth = cwidth;
- if (td.heightHint!=SWT.DEFAULT) {
- size = new Point(size.x, td.heightHint);
- }
- td.compSize = size;
- rowHeight = Math.max(rowHeight, size.y);
- }
- for (int j=0; j<numColumns; j++) {
- TableData td = row[j];
- if (td.isItemData==false) {
- continue;
- }
- Control child = children[td.childIndex];
- placeControl(child, td, x, y, rowHeight);
- x += td.compWidth;
- if (j<numColumns-1) x+= horizontalSpacing;
- }
- y += rowHeight + verticalSpacing;
- }
- }
-
-boolean isGrowingColumn(int col) {
- if (growingColumns==null) return false;
- for (int i=0; i<growingColumns.length; i++) {
- if (col == growingColumns[i]) return true;
- }
- return false;
-}
-
-int [] calculateExtraSpace(int tableWidth, int maxWidth, int minWidth) {
- int fixedPart = leftMargin + rightMargin + (numColumns-1)*horizontalSpacing;
- int D = maxWidth - minWidth;
-
- int W = tableWidth -fixedPart - minWidth;
-
- int extraSpace [] = new int [numColumns];
-
- int rem = 0;
- for (int i=0; i<numColumns; i++) {
- int cmin = minColumnWidths[i];
- int cmax = maxColumnWidths[i];
- int d = cmax - cmin;
- int extra = D!=0 ? (d * W)/D : 0;
- if (i<numColumns-1) {
- extraSpace [i] = extra;
- rem += extra;
- }
- else {
- extraSpace[i] = W - rem;
- }
- }
- return extraSpace;
-}
-
-Point computeSize(Control child, int width, boolean changed) {
- int widthArg = width;
- if (!isWrap(child))
- widthArg = SWT.DEFAULT;
- Point size = child.computeSize(widthArg, SWT.DEFAULT, changed);
- return size;
-}
-
-void placeControl(Control control, TableData td, int x, int y, int rowHeight) {
- int xloc = x + td.indent;
- int yloc = y;
- int width = td.compSize.x;
- int height = td.compSize.y;
- int colWidth = td.compWidth;
-
- // align horizontally
- if (td.align==TableData.CENTER) {
- xloc = x + colWidth/2 - width/2;
- }
- else if (td.align==TableData.RIGHT) {
- xloc = x + colWidth - width;
- }
- else if (td.align==TableData.FILL) {
- width = colWidth;
- }
- // align vertically
- if (td.valign == TableData.MIDDLE) {
- yloc = y + rowHeight/2 - height/2;
- }
- else if (td.valign==TableData.BOTTOM) {
- yloc = y + rowHeight - height;
- }
- else if (td.valign==TableData.FILL) {
- height = rowHeight;
- }
- control.setBounds(xloc, yloc, width, height);
-}
-
-void createGrid(Composite composite) {
- int row, column, rowFill, columnFill;
- Control[] children;
- TableData spacerSpec;
- Vector growingCols = new Vector();
-
- //
- children = composite.getChildren();
- if (children.length==0) return;
-
- //
- grid.addElement(createEmptyRow());
- row = 0;
- column = 0;
-
- // Loop through the children and place their associated layout specs in the
- // grid. Placement occurs left to right, top to bottom (i.e., by row).
- for (int i = 0; i < children.length; i++) {
- // Find the first available spot in the grid.
- Control child = children[i];
- TableData spec = (TableData) child.getLayoutData();
- while (((TableData[]) grid.elementAt(row))[column] != null) {
- column = column + 1;
- if (column >= numColumns) {
- row = row + 1;
- column = 0;
- if (row >= grid.size()) {
- grid.addElement(createEmptyRow());
- }
- }
- }
- // See if the place will support the widget's horizontal span. If not, go to the
- // next row.
- if (column + spec.colspan - 1 >= numColumns) {
- grid.addElement(createEmptyRow());
- row = row + 1;
- column = 0;
- }
-
- // The vertical span for the item will be at least 1. If it is > 1,
- // add other rows to the grid.
- for (int j = 2; j <= spec.rowspan; j++) {
- if (row + j > grid.size()) {
- grid.addElement(createEmptyRow());
- }
- }
-
- // Store the layout spec. Also cache the childIndex. NOTE: That we assume the children of a
- // composite are maintained in the order in which they are created and added to the composite.
- ((TableData[]) grid.elementAt(row))[column] = spec;
- spec.childIndex = i;
-
- if (spec.grabHorizontal) {
- updateGrowingColumns(growingCols, spec, column);
- }
-
- // Put spacers in the grid to account for the item's vertical and horizontal
- // span.
- rowFill = spec.rowspan - 1;
- columnFill = spec.colspan - 1;
- for (int r = 1; r <= rowFill; r++) {
- for (int c = 0; c < spec.colspan; c++) {
- spacerSpec = new TableData();
- spacerSpec.isItemData = false;
- ((TableData[]) grid.elementAt(row + r))[column + c] = spacerSpec;
- }
- }
- for (int c = 1; c <= columnFill; c++) {
- for (int r = 0; r < spec.rowspan; r++) {
- spacerSpec = new TableData();
- spacerSpec.isItemData = false;
- ((TableData[]) grid.elementAt(row + r))[column + c] = spacerSpec;
- }
- }
- column = column + spec.colspan - 1;
- }
-
- // Fill out empty grid cells with spacers.
- for (int k = column + 1; k < numColumns; k++) {
- spacerSpec = new TableData();
- spacerSpec.isItemData = false;
- ((TableData[]) grid.elementAt(row))[k] = spacerSpec;
- }
- for (int k = row + 1; k < grid.size(); k++) {
- spacerSpec = new TableData();
- spacerSpec.isItemData = false;
- ((TableData[]) grid.elementAt(k))[column] = spacerSpec;
- }
- growingColumns = new int [growingCols.size()];
- for (int i=0; i<growingCols.size(); i++) {
- growingColumns[i] = ((Integer)growingCols.get(i)).intValue();
- }
-}
-
-private void updateGrowingColumns(Vector growingColumns, TableData spec, int column) {
- int affectedColumn = column + spec.colspan -1;
- for (int i=0; i<growingColumns.size(); i++) {
- Integer col = (Integer)growingColumns.get(i);
- if (col.intValue()==affectedColumn)
- return;
- }
- growingColumns.add(new Integer(affectedColumn));
-}
-
-private TableData [] createEmptyRow() {
- TableData [] row = new TableData[numColumns];
- for (int i=0; i<numColumns; i++)
- row[i] = null;
- return row;
-}
-
- /**
- * @see Layout#computeSize(Composite, int, int, boolean)
- */
- protected Point computeSize(Composite parent, int wHint, int hHint, boolean changed) {
- Control [] children = parent.getChildren();
- if (children.length == 0) {
- return new Point(0, 0);
- }
- int parentWidth = wHint;
- changed = true;
- initializeIfNeeded(parent, changed);
- if (initialLayout) {
- changed = true;
- initialLayout = false;
- }
- if (grid==null || changed) {
- changed = true;
- grid = new Vector();
- createGrid(parent);
- }
- resetColumnWidths();
- int minWidth = internalGetMinimumWidth(parent, changed);
- int maxWidth = internalGetMaximumWidth(parent, changed);
-
- int tableWidth = parentWidth;
-
- int [] columnWidths;
-
- if (parentWidth < minWidth) {
- tableWidth = minWidth;
- if (makeColumnsEqualWidth) {
- columnWidths = new int[numColumns];
- for (int i=0; i<numColumns; i++) {
- columnWidths[i] = widestColumnWidth;
- }
- }
- else
- columnWidths = minColumnWidths;
- }
- else if (parentWidth > maxWidth) {
- tableWidth = maxWidth;
- columnWidths = maxColumnWidths;
- }
- else {
- columnWidths = new int [numColumns];
- if (makeColumnsEqualWidth) {
- int colSpace = tableWidth - leftMargin - rightMargin;
- colSpace -= (numColumns-1)*horizontalSpacing;
- int col = colSpace/numColumns;
- for (int i=0; i<numColumns; i++) {
- columnWidths[i] = col;
- }
- }
- else {
- int [] extraSpace = calculateExtraSpace(tableWidth, maxWidth, minWidth);
- for (int i=0; i<numColumns; i++) {
- int minCWidth = minColumnWidths[i];
- columnWidths[i] = minCWidth + extraSpace[i];
- }
- }
- }
- int totalHeight=0;
- int y = topMargin;
- // compute widths
- for (int i=0; i<grid.size(); i++) {
- TableData [] row = (TableData [])grid.elementAt(i);
- // assign widths, calculate heights
- int rowHeight = 0;
- for (int j=0; j<numColumns; j++) {
- TableData td = row[j];
- if (td.isItemData==false) {
- continue;
- }
- Control child = children[td.childIndex];
- int span = td.colspan;
- int cwidth = 0;
- for (int k=j; k<j+span; k++) {
- if (k>j) cwidth += horizontalSpacing;
- cwidth += columnWidths[k];
- }
- int cy = td.heightHint;
- if (cy == SWT.DEFAULT) {
- Point size = computeSize(child, cwidth, changed);
- cy = size.y;
- }
- rowHeight = Math.max(rowHeight, cy);
- }
- y += rowHeight + verticalSpacing;
- }
- totalHeight = y + bottomMargin;
- return new Point(tableWidth, totalHeight);
- }
-
- int internalGetMinimumWidth(Composite parent, boolean changed) {
- if (changed)
- calculateMinimumColumnWidths(parent, true);
- int minimumWidth = 0;
-
- widestColumnWidth = 0;
-
- if (makeColumnsEqualWidth) {
- for (int i=0; i<numColumns; i++) {
- widestColumnWidth = Math.max(widestColumnWidth, minColumnWidths[i]);
- }
- }
- for (int i=0; i<numColumns; i++) {
- if (i>0) minimumWidth += horizontalSpacing;
- if (makeColumnsEqualWidth)
- minimumWidth += widestColumnWidth;
- else
- minimumWidth += minColumnWidths[i];
- }
- // add margins
- minimumWidth += leftMargin + rightMargin;
- return minimumWidth;
- }
-
- int internalGetMaximumWidth(Composite parent, boolean changed) {
- if (changed)
- calculateMaximumColumnWidths(parent, true);
- int maximumWidth = 0;
- for (int i=0; i<numColumns; i++) {
- if (i>0) maximumWidth += horizontalSpacing;
- maximumWidth += maxColumnWidths[i];
- }
- // add margins
- maximumWidth += leftMargin + rightMargin;
- return maximumWidth;
- }
-
- void resetColumnWidths() {
- if (minColumnWidths == null)
- minColumnWidths = new int [numColumns];
- if (maxColumnWidths == null)
- maxColumnWidths = new int [numColumns];
- for (int i=0; i<numColumns; i++) {
- minColumnWidths [i] = 0;
- }
- for (int i=0; i<numColumns; i++) {
- maxColumnWidths [i] = 0;
- }
- }
-
- void calculateMinimumColumnWidths(Composite parent, boolean changed) {
- Control [] children = parent.getChildren();
-
- for (int i=0; i<grid.size(); i++) {
- TableData [] row = (TableData [])grid.elementAt(i);
- for (int j=0; j<numColumns; j++) {
- TableData td = row[j];
- if (td.isItemData==false) continue;
- Control child = children[td.childIndex];
- int minWidth = -1;
- if (child instanceof Composite) {
- Composite cc = (Composite)child;
- Layout l = cc.getLayout();
- if (l instanceof HTMLTableLayout) {
- minWidth = ((HTMLTableLayout)l).getMinimumWidth(cc, changed);
- }
- }
- if (minWidth == -1) {
- if (isWrap(child)) {
- // Should be the width of the
- // longest word, we'll pick
- // some small number instead
- minWidth = 30;
- }
- else {
- Point size = child.computeSize(SWT.DEFAULT, SWT.DEFAULT, changed);
- minWidth = size.x;
- }
- }
- minWidth += td.indent;
- minColumnWidths[j] = Math.max(minColumnWidths[j], minWidth);
- }
- }
- }
-
- boolean isWrap(Control control) {
- if (control instanceof Composite &&
- ((Composite)control).getLayout() instanceof HTMLTableLayout)
- return true;
- return (control.getStyle() & SWT.WRAP)!=0;
- }
-
- void calculateMaximumColumnWidths(Composite parent, boolean changed) {
- Control [] children = parent.getChildren();
-
- for (int i=0; i<numColumns; i++) {
- maxColumnWidths [i] = 0;
- }
- for (int i=0; i<grid.size(); i++) {
- TableData [] row = (TableData [])grid.elementAt(i);
- for (int j=0; j<numColumns; j++) {
- TableData td = row[j];
- if (td.isItemData==false) continue;
- Control child = children[td.childIndex];
- int maxWidth = -1;
- if (child instanceof Composite) {
- Composite cc = (Composite)child;
- Layout l = cc.getLayout();
- if (l instanceof HTMLTableLayout) {
- maxWidth = ((HTMLTableLayout)l).getMaximumWidth(cc, changed);
- }
- }
- if (maxWidth == -1) {
- Point size = child.computeSize(SWT.DEFAULT, SWT.DEFAULT, changed);
- maxWidth = size.x;
- }
- maxWidth += td.indent;
- if (td.colspan==1)
- maxColumnWidths[j] = Math.max(maxColumnWidths[j], maxWidth);
- else {
- // grow the last column
- int last = j + td.colspan -1;
- int rem = 0;
- for (int k=j; k<j+td.colspan-1; k++) {
- rem += maxColumnWidths[k];
- }
- int reduced = maxWidth - rem;
- maxColumnWidths[last] = Math.max(maxColumnWidths[last], reduced);
- }
- }
- }
- }
-
-private void initializeIfNeeded(Composite parent, boolean changed) {
- if (changed)
- initialLayout = true;
- if (initialLayout) {
- initializeLayoutData(parent);
- initialLayout = false;
- }
-}
-
-void initializeLayoutData(Composite composite) {
- Control[] children = composite.getChildren();
- for (int i = 0; i < children.length; i++) {
- Control child = children[i];
- if (child.getLayoutData() == null) {
- child.setLayoutData(new TableData());
- }
- }
-}
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkAdapter.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkAdapter.java
deleted file mode 100644
index 56c92db..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkAdapter.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-public class HyperlinkAdapter implements IHyperlinkListener {
-
-public HyperlinkAdapter() {
- super();
-}
-public void linkActivated(org.eclipse.swt.widgets.Control linkLabel) {}
-public void linkEntered(org.eclipse.swt.widgets.Control linkLabel) {}
-public void linkExited(org.eclipse.swt.widgets.Control linkLabel) {}
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkHandler.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkHandler.java
deleted file mode 100644
index 93d9f80..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkHandler.java
+++ /dev/null
@@ -1,192 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseTrackListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-
-public class HyperlinkHandler
- extends HyperlinkSettings
- implements MouseListener, MouseTrackListener, SelectionListener, PaintListener {
- private Hashtable hyperlinkListeners;
- private Control lastActivated;
- private Control lastEntered;
-
- public HyperlinkHandler() {
- hyperlinkListeners = new Hashtable();
- }
-
- public Control getLastLink() {
- return lastActivated;
- }
-
- public void mouseDoubleClick(MouseEvent e) {
- }
-
- public void mouseDown(MouseEvent e) {
- if (e.button == 1)
- return;
- lastActivated = (Control) e.widget;
- }
- public void mouseEnter(MouseEvent e) {
- Control control = (Control) e.widget;
- linkEntered(control);
- }
- public void mouseExit(MouseEvent e) {
- Control control = (Control) e.widget;
- linkExited(control);
- }
- public void mouseHover(MouseEvent e) {
- }
-
- public void mouseUp(MouseEvent e) {
- if (e.button != 1)
- return;
- Control linkControl = (Control) e.widget;
- Point size = linkControl.getSize();
- // Filter out mouse up events outside
- // the link. This can happen when mouse is
- // clicked, dragged outside the link, then
- // released.
- if (e.x < 0) return;
- if (e.y < 0) return;
- if (e.x >= size.x) return;
- if (e.y >= size.y) return;
- linkActivated(linkControl);
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- Control link = (Control) e.widget;
- linkActivated(link);
- }
-
- public void widgetSelected(SelectionEvent e) {
- Control link = (Control) e.widget;
- SelectableFormLabel l = (SelectableFormLabel) link;
- if (l.getSelection())
- linkEntered(link);
- else
- linkExited(link);
- }
-
- private void linkActivated(Control link) {
- IHyperlinkListener action = (IHyperlinkListener) hyperlinkListeners.get(link);
- if (action != null) {
- link.setCursor(busyCursor);
- action.linkActivated(link);
- if (!link.isDisposed())
- link.setCursor(isHyperlinkCursorUsed() ? hyperlinkCursor : null);
- }
- }
-
- private void linkEntered(Control link) {
- if (lastEntered != null && lastEntered instanceof SelectableFormLabel) {
- SelectableFormLabel fl = (SelectableFormLabel) lastEntered;
- linkExited(fl);
- }
- if (isHyperlinkCursorUsed())
- link.setCursor(hyperlinkCursor);
- if (activeBackground != null)
- link.setBackground(activeBackground);
- if (activeForeground != null)
- link.setForeground(activeForeground);
- if (hyperlinkUnderlineMode == UNDERLINE_ROLLOVER)
- underline(link, true);
-
- IHyperlinkListener action = (IHyperlinkListener) hyperlinkListeners.get(link);
- if (action != null)
- action.linkEntered(link);
- lastEntered = link;
- }
-
- private void linkExited(Control link) {
- if (isHyperlinkCursorUsed())
- link.setCursor(null);
- if (hyperlinkUnderlineMode == UNDERLINE_ROLLOVER)
- underline(link, false);
- if (background != null)
- link.setBackground(background);
- if (foreground != null)
- link.setForeground(foreground);
- IHyperlinkListener action = (IHyperlinkListener) hyperlinkListeners.get(link);
- if (action != null)
- action.linkExited(link);
- if (lastEntered == link)
- lastEntered = null;
- }
-
- public void paintControl(PaintEvent e) {
- Control label = (Control) e.widget;
- if (hyperlinkUnderlineMode == UNDERLINE_ALWAYS)
- HyperlinkHandler.underline(label, true);
- }
-
- public void registerHyperlink(Control control, IHyperlinkListener listener) {
- if (background != null)
- control.setBackground(background);
- if (foreground != null)
- control.setForeground(foreground);
- control.addMouseListener(this);
- control.addMouseTrackListener(this);
-
- if (hyperlinkUnderlineMode == UNDERLINE_ALWAYS && control instanceof Label)
- control.addPaintListener(this);
- if (control instanceof SelectableFormLabel) {
- SelectableFormLabel sl = (SelectableFormLabel) control;
- sl.addSelectionListener(this);
- if (hyperlinkUnderlineMode == UNDERLINE_ALWAYS)
- sl.setUnderlined(true);
- }
- hyperlinkListeners.put(control, listener);
- removeDisposedLinks();
- }
- private void removeDisposedLinks() {
- for (Enumeration keys = hyperlinkListeners.keys(); keys.hasMoreElements();) {
- Control control = (Control) keys.nextElement();
- if (control.isDisposed()) {
- hyperlinkListeners.remove(control);
- }
- }
- }
-
- public void reset() {
- hyperlinkListeners.clear();
- }
-
- public static void underline(Control control, boolean inside) {
- if (control instanceof SelectableFormLabel) {
- SelectableFormLabel l = (SelectableFormLabel) control;
- l.setUnderlined(inside);
- l.redraw();
- return;
- }
- if (!(control instanceof Label))
- return;
- Composite parent = control.getParent();
- Rectangle bounds = control.getBounds();
- GC gc = new GC(parent);
- Color color = inside ? control.getForeground() : control.getBackground();
- gc.setForeground(color);
- int y = bounds.y + bounds.height;
- gc.drawLine(bounds.x, y, bounds.x + bounds.width, y);
- gc.dispose();
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkSettings.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkSettings.java
deleted file mode 100644
index 0aa0b31..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/HyperlinkSettings.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.*;
-import java.util.*;
-import org.eclipse.swt.*;
-
-public class HyperlinkSettings {
- public static final int UNDERLINE_NEVER = 1;
- public static final int UNDERLINE_ROLLOVER = 2;
- public static final int UNDERLINE_ALWAYS = 3;
-
- protected boolean hyperlinkCursorUsed=true;
- protected int hyperlinkUnderlineMode=UNDERLINE_ALWAYS;
- protected Color background;
- protected Color foreground;
- protected Color activeBackground;
- protected Color activeForeground;
- protected Cursor hyperlinkCursor;
- protected Cursor busyCursor;
- protected Cursor textCursor;
-
-public HyperlinkSettings() {
- hyperlinkCursor = new Cursor(Display.getCurrent(), SWT.CURSOR_HAND);
- busyCursor = new Cursor(Display.getCurrent(), SWT.CURSOR_WAIT);
- textCursor = new Cursor(Display.getCurrent(), SWT.CURSOR_IBEAM);
-}
-
-public void dispose() {
- hyperlinkCursor.dispose();
- busyCursor.dispose();
- textCursor.dispose();
-}
-
-public Color getActiveBackground() {
- return activeBackground;
-}
-public Color getActiveForeground() {
- return activeForeground;
-}
-public Color getBackground() {
- return background;
-}
-public Cursor getBusyCursor() {
- return busyCursor;
-}
-public Cursor getTextCursor() {
- return textCursor;
-}
-public Color getForeground() {
- return foreground;
-}
-public Cursor getHyperlinkCursor() {
- return hyperlinkCursor;
-}
-public int getHyperlinkUnderlineMode() {
- return hyperlinkUnderlineMode;
-}
-
-public boolean isHyperlinkCursorUsed() {
- return hyperlinkCursorUsed;
-}
-
-public void setActiveBackground(Color newActiveBackground) {
- activeBackground = newActiveBackground;
-}
-public void setActiveForeground(Color newActiveForeground) {
- activeForeground = newActiveForeground;
-}
-public void setBackground(Color newBackground) {
- background = newBackground;
-}
-public void setForeground(Color newForeground) {
- foreground = newForeground;
-}
-public void setHyperlinkCursorUsed(boolean newHyperlinkCursorUsed) {
- hyperlinkCursorUsed = newHyperlinkCursorUsed;
-}
-public void setHyperlinkUnderlineMode(int newHyperlinkUnderlineMode) {
- hyperlinkUnderlineMode = newHyperlinkUnderlineMode;
-}
-
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IForm.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IForm.java
deleted file mode 100644
index b0f5747..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IForm.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.graphics.*;
-
-public interface IForm {
-public void commitChanges(boolean onSave);
-public Control createControl(Composite parent);
-public void dispose();
-public boolean doGlobalAction(String actionId);
-public void expandTo(Object object);
-public Control getControl();
-public FormWidgetFactory getFactory();
-public Color getHeadingBackground();
-public Color getHeadingForeground();
-public Image getHeadingImage();
-public String getHeadingText();
-public void initialize(Object model);
-public boolean isHeadingVisible();
-public void registerSection(FormSection section);
-public void setFocus();
-public void setHeadingBackground(Color newHeadingBackground);
-public void setHeadingForeground(Color newHeadingForeground);
-public void setHeadingImage(Image headingImage);
-public void setHeadingVisible(boolean newHeadingVisible);
-public void setHeadingText(String heading);
-public void update();
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormPage.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormPage.java
deleted file mode 100644
index 2717583..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormPage.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.widgets.*;
-
-public interface IFormPage {
-
-boolean becomesInvisible(IFormPage newPage);
-void becomesVisible(IFormPage previousPage);
-void createControl(Composite parent);
-Control getControl();
-String getLabel();
-String getTitle();
-boolean isSource();
-boolean isVisible();
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormSelectionListener.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormSelectionListener.java
deleted file mode 100644
index a131d34..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormSelectionListener.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-public interface IFormSelectionListener {
- public void formSelected(IFormPage page);
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormTextListener.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormTextListener.java
deleted file mode 100644
index 8aedbf9..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormTextListener.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-public interface IFormTextListener {
- public void textValueChanged(FormEntry text);
- public void textDirty(FormEntry text);
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormWorkbook.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormWorkbook.java
deleted file mode 100644
index c729331..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IFormWorkbook.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.graphics.*;
-import java.util.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.*;
-import org.eclipse.ui.part.*;
-import org.eclipse.jface.resource.*;
-import org.eclipse.jface.window.*;
-
-public interface IFormWorkbook {
-
-void addFormSelectionListener(IFormSelectionListener listener);
-public void addPage(IFormPage page);
-public void createControl(Composite parent);
-Control getControl();
-public IFormPage getCurrentPage();
-boolean isFirstPageSelected();
-void removeFormSelectionListener(IFormSelectionListener listener);
-public void removePage(IFormPage page);
-public void selectPage(final IFormPage page);
-void setFirstPageSelected(boolean selected);
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IHyperlinkListener.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IHyperlinkListener.java
deleted file mode 100644
index e04f2dd..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/IHyperlinkListener.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.widgets.Label;
-
-public interface IHyperlinkListener {
-
-public void linkActivated(Control linkLabel);
-public void linkEntered(Control linkLabel);
-public void linkExited(Control linkLabel);
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/NoTabsWorkbook.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/NoTabsWorkbook.java
deleted file mode 100644
index 59aa53d..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/NoTabsWorkbook.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.graphics.*;
-import java.util.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.*;
-import org.eclipse.ui.part.*;
-import org.eclipse.jface.resource.*;
-import org.eclipse.swt.custom.*;
-
-public class NoTabsWorkbook implements IFormWorkbook {
- private Vector pages;
- private boolean firstPageSelected = true;
- private PageBook pageBook;
- private Vector listeners = new Vector();
- private IFormPage currentPage;
-
- public NoTabsWorkbook() {
- pages = new Vector();
- }
- public void addFormSelectionListener(IFormSelectionListener listener) {
- listeners.addElement(listener);
- }
- public void addPage(IFormPage page) {
- pages.add(page);
-
- if (firstPageSelected && currentPage == null)
- selectPage(page);
- }
-
- public void createControl(Composite parent) {
- pageBook = new PageBook(parent, SWT.NULL);
- }
-
- private void fireSelectionChanged(IFormPage page) {
- for (Iterator iter = listeners.iterator(); iter.hasNext();) {
- IFormSelectionListener listener = (IFormSelectionListener) iter.next();
- listener.formSelected(page);
- }
- }
-
- public Control getControl() {
- return pageBook;
- }
-
- public IFormPage getCurrentPage() {
- return currentPage;
- }
-
- public boolean isFirstPageSelected() {
- return firstPageSelected;
- }
- public void removeFormSelectionListener(IFormSelectionListener listener) {
- listeners.removeElement(listener);
- }
-
- public void removePage(IFormPage page) {
- if (pages.contains(page)) {
- Control c = page.getControl();
- if (c!=null && !c.isDisposed())
- c.dispose();
- pages.remove(page);
- }
- }
-
- public void selectPage(final IFormPage page) {
- final IFormPage oldPage = currentPage;
- currentPage = page;
-
- if (pageBook != null) {
-
- // It may take a while
- BusyIndicator.showWhile(pageBook.getDisplay(), new Runnable() {
- public void run() {
- switchPages(oldPage, page);
- }
- });
- }
- }
-
- public void setFirstPageSelected(boolean newFirstPageSelected) {
- firstPageSelected = newFirstPageSelected;
- }
-
- private void switchPages(IFormPage oldPage, IFormPage newPage) {
- if (oldPage != null && oldPage != newPage) {
- oldPage.becomesInvisible(newPage);
- }
- if (newPage.getControl() == null)
- newPage.createControl(pageBook);
- pageBook.showPage(newPage.getControl());
-
- newPage.becomesVisible(oldPage);
- fireSelectionChanged(newPage);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ScrollableSectionForm.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ScrollableSectionForm.java
deleted file mode 100644
index c7228b8..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ScrollableSectionForm.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.custom.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.*;
-
-/**
- * This version of the section form adds scrolling
- * capability. However, scrolling can be disabled
- * using 'setScrollable' method. For this reason,
- * this class can be used instead of the SectionForm.
- */
-
-public class ScrollableSectionForm extends SectionForm {
- private Composite container;
- private boolean verticalFit;
- private boolean scrollable=true;
-
-public ScrollableSectionForm() {
-}
-public Control createControl(Composite parent) {
- container = createParent(parent);
- Control formControl = super.createControl(container);
- if (container instanceof ScrolledComposite) {
- ScrolledComposite sc = (ScrolledComposite)container;
- sc.setContent(formControl);
- }
- GridData gd = new GridData(GridData.FILL_BOTH);
- formControl.setLayoutData(gd);
- container.setBackground(formControl.getBackground());
- return container;
-}
-protected Composite createParent(Composite parent) {
- Composite result = null;
- if (isScrollable()) {
- ScrolledComposite scomp =
- new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
- if (isVerticalFit()) {
- scomp.setExpandHorizontal(true);
- scomp.setExpandVertical(true);
- }
- initializeScrollBars(scomp);
- result = scomp;
- } else {
- result = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- result.setLayout(layout);
- }
- return result;
-}
-public boolean isScrollable() {
- return scrollable;
-}
-public boolean isVerticalFit() {
- return verticalFit;
-}
-public void setScrollable(boolean newScrollable) {
- scrollable = newScrollable;
-}
-
-public void setVerticalFit(boolean newVerticalFit) {
- verticalFit = newVerticalFit;
-}
-
-private void initializeScrollBars(ScrolledComposite scomp) {
- ScrollBar hbar = scomp.getHorizontalBar();
- if (hbar!=null) {
- hbar.setIncrement(H_SCROLL_INCREMENT);
- }
- ScrollBar vbar = scomp.getVerticalBar();
- if (vbar!=null) {
- vbar.setIncrement(V_SCROLL_INCREMENT);
- }
- updatePageIncrement(scomp);
-}
-
-public void update() {
- super.update();
- if (container instanceof ScrolledComposite) {
- updateScrolledComposite();
- } else {
- container.layout(true);
- }
-}
-public void updateScrollBars() {
- if (container instanceof ScrolledComposite) {
- updateScrolledComposite();
- }
-}
-public void updateScrolledComposite() {
- ScrolledComposite sc = (ScrolledComposite) container;
- Control formControl = getControl();
- Point newSize = formControl.computeSize(SWT.DEFAULT, SWT.DEFAULT);
- formControl.setSize(newSize);
- sc.setMinSize(newSize);
- updatePageIncrement(sc);
-}
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SectionChangeManager.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SectionChangeManager.java
deleted file mode 100644
index 1ff42f2..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SectionChangeManager.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.util.*;
-
-public class SectionChangeManager {
- Hashtable sources = new Hashtable();
-
-public SectionChangeManager() {
- super();
-}
-public void dispatchNotification(
- FormSection source,
- int type,
- Object changeObject) {
- Vector targets = (Vector) sources.get(source);
- if (targets != null) {
- for (Iterator iter = targets.iterator(); iter.hasNext();) {
- FormSection section = (FormSection) iter.next();
- section.sectionChanged(source, type, changeObject);
- }
- }
-}
-public void linkSections(FormSection source, FormSection target) {
- source.setManager(this);
- Vector targets = null;
-
- targets = (Vector) sources.get(source);
- if (targets == null) {
- targets = new Vector();
- sources.put(source, targets);
- }
- targets.addElement(target);
-}
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SectionForm.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SectionForm.java
deleted file mode 100644
index 341ad66..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SectionForm.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.*;
-import org.eclipse.swt.events.*;
-import java.util.*;
-import org.eclipse.ui.*;
-import org.eclipse.jface.resource.*;
-import org.eclipse.jface.util.*;
-import org.eclipse.jface.util.PropertyChangeEvent;
-
-/**
- * This form implementation assumes that it contains
- * form sections and that they fill up the screen.
- * Typically, the form client will use up the entire
- * parent area below the heading. Sections must
- * be able to return their preferred size in both
- * dimensions. If they contain wrappable text,
- * WebForm should be used instead.
- */
-
-public class SectionForm extends AbstractSectionForm implements PaintListener {
- private Composite control;
- private int TITLE_HMARGIN = 10;
- private int TITLE_VMARGIN = 5;
-
- class FormLayout extends Layout {
- protected Point computeSize(
- Composite composite,
- int wHint,
- int hHint,
- boolean flushCache) {
- if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT)
- return new Point(wHint, hHint);
- Control client = composite.getChildren()[0];
- Point csize = client.computeSize(widthHint, heightHint, flushCache);
- if (headingVisible)
- csize.y += getTitleHeight();
- return csize;
- }
- protected void layout(Composite composite, boolean flushCache) {
- Rectangle clientArea = composite.getClientArea();
- Control client = composite.getChildren()[0];
- int theight = headingVisible ? getTitleHeight() : 0;
- client.setBounds(
- clientArea.x,
- clientArea.y + theight,
- clientArea.width,
- clientArea.height - theight);
- }
- }
- private int widthHint = SWT.DEFAULT;
- private int heightHint = SWT.DEFAULT;
-
- public SectionForm() {
- }
-
- public Control createControl(Composite parent) {
- Composite canvas = new Composite(parent, SWT.NONE);
- canvas.setBackground(factory.getBackgroundColor());
- canvas.setForeground(factory.getForegroundColor());
- canvas.addPaintListener(this);
- canvas.setLayout(new FormLayout());
- Composite formParent = factory.createComposite(canvas);
- createFormClient(formParent);
- this.control = canvas;
- canvas.setFocus();
- return canvas;
- }
-
- protected void createFormClient(Composite parent) {
- factory.createComposite(parent);
- }
-
- public Control getControl() {
- return control;
- }
-
- private int getTitleHeight() {
- int imageHeight = 0;
- if (headingImage != null
- && SWT.getPlatform().equals("motif") == false) {
- imageHeight = headingImage.getBounds().height;
- }
- GC gc = new GC(control);
- gc.setFont(titleFont);
- FontMetrics fm = gc.getFontMetrics();
- int fontHeight = fm.getHeight();
- gc.dispose();
-
- int height = fontHeight + TITLE_VMARGIN + TITLE_VMARGIN;
- return Math.max(height, imageHeight);
- }
-
- private void paint(Control form, GC gc) {
- Rectangle bounds = form.getBounds();
- int height = getTitleHeight();
- if (headingImage != null) {
- Rectangle imageBounds = headingImage.getBounds();
- int x = bounds.width - imageBounds.width;
- int y = 0;
- //x = Math.max(x, 0);
- x = 0;
- if (headingBackground != null) {
- gc.setBackground(headingBackground);
- gc.fillRectangle(0, 0, bounds.width, height);
- }
- if (SWT.getPlatform().equals("motif") == false) {
- gc.drawImage(headingImage, x, y);
- }
- if (headingForeground != null)
- gc.setForeground(headingForeground);
- else
- gc.setForeground(factory.getForegroundColor());
- gc.setFont(titleFont);
- gc.drawText(getHeadingText(), TITLE_HMARGIN, TITLE_VMARGIN, true);
- } else {
- gc.setFont(titleFont);
- gc.setBackground(factory.getColor(factory.DEFAULT_HEADER_COLOR));
- //gc.fillRectangle(TITLE_HMARGIN, TITLE_VMARGIN, bounds.width-TITLE_HMARGIN*2, height-TITLE_VMARGIN*2);
- gc.setForeground(factory.getForegroundColor());
- gc.drawText(getHeadingText(), TITLE_HMARGIN, TITLE_VMARGIN, true);
- }
- }
-
- public final void paintControl(PaintEvent event) {
- if (!headingVisible)
- return;
- GC gc = event.gc;
- Control form = (Control) event.widget;
- paint(form, gc);
- }
-
- public void setHeadingVisible(boolean newHeadingVisible) {
- super.setHeadingVisible(newHeadingVisible);
- if (control != null)
- control.layout(true);
- }
- public void setHeadingText(String headingText) {
- super.setHeadingText(headingText);
- if (control != null) {
- control.layout(true);
- control.redraw();
- }
- }
-
- public void propertyChange(PropertyChangeEvent event) {
- titleFont = JFaceResources.getHeaderFont();
- if (control != null) {
- control.layout(true);
- control.redraw();
- }
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SelectableControl.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SelectableControl.java
deleted file mode 100644
index ea81992..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SelectableControl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import java.text.*;
-
-/**
- * FormText is a windowless control that
- * draws text in the provided context.
- */
-public abstract class SelectableControl extends Canvas {
- private boolean hasFocus;
-
- public SelectableControl(Composite parent, int style) {
- super(parent, style);
- addPaintListener(new PaintListener() {
- public void paintControl(PaintEvent e) {
- paint(e);
- }
- });
- addMouseListener(new MouseAdapter () {
- public void mouseUp(MouseEvent e) {
- notifyListeners(SWT.Selection);
- }
- });
- addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.character == '\r') {
- // Activation
- notifyListeners(SWT.Selection);
- }
- }
- });
- addListener(SWT.Traverse, new Listener () {
- public void handleEvent(Event e) {
- if (e.detail != SWT.TRAVERSE_RETURN)
- e.doit = true;
- }
- });
- addFocusListener(new FocusListener() {
- public void focusGained(FocusEvent e) {
- if (!hasFocus) {
- hasFocus=true;
- redraw();
- }
- }
- public void focusLost(FocusEvent e) {
- if (hasFocus) {
- hasFocus=false;
- redraw();
- }
- }
- });
- }
-
- protected void paint(PaintEvent e) {
- GC gc = e.gc;
- Point size = getSize();
- gc.setFont(getFont());
- paint(gc);
- if (hasFocus) {
- gc.setForeground(getForeground());
- gc.drawFocus(0, 0, size.x, size.y);
- }
- }
-
- protected abstract void paint(GC gc);
-
- private void notifyListeners(int eventType) {
- Event event = new Event();
- event.type = eventType;
- event.widget = this;
- notifyListeners(eventType, event);
- }
-
- public void addSelectionListener(SelectionListener listener) {
- checkWidget ();
- if (listener == null) return;
- TypedListener typedListener = new TypedListener (listener);
- addListener (SWT.Selection,typedListener);
- }
-
- public void removeSelectionListener(SelectionListener listener) {
- checkWidget ();
- if (listener == null) return;
- removeListener (SWT.Selection, listener);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SelectableFormLabel.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SelectableFormLabel.java
deleted file mode 100644
index adc38a8..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/SelectableFormLabel.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.SWT;
-
-public class SelectableFormLabel extends FormLabel {
- private boolean hasFocus;
-
- public boolean getSelection() {
- return hasFocus;
- }
-
- /**
- * Constructor for SelectableFormLabel
- */
- public SelectableFormLabel(Composite parent, int style) {
- super(parent, style);
- addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- if (e.character == '\r') {
- // Activation
- notifyListeners(SWT.DefaultSelection);
- }
- }
- });
- addListener(SWT.Traverse, new Listener () {
- public void handleEvent(Event e) {
- switch (e.detail) {
- case SWT.TRAVERSE_PAGE_NEXT:
- case SWT.TRAVERSE_PAGE_PREVIOUS:
- case SWT.TRAVERSE_ARROW_NEXT:
- case SWT.TRAVERSE_ARROW_PREVIOUS:
- case SWT.TRAVERSE_RETURN:
- e.doit = false;
- return;
- }
- e.doit = true;
- }
- });
- addFocusListener(new FocusListener() {
- public void focusGained(FocusEvent e) {
- if (!hasFocus) {
- hasFocus=true;
- notifyListeners(SWT.Selection);
- redraw();
- }
- }
- public void focusLost(FocusEvent e) {
- if (hasFocus) {
- hasFocus=false;
- notifyListeners(SWT.Selection);
- redraw();
- }
- }
- });
- textMarginWidth = 1;
- textMarginHeight = 1;
- }
-
- private void notifyListeners(int eventType) {
- Event event = new Event();
- event.type = eventType;
- event.widget = this;
- notifyListeners(eventType, event);
- }
-
- protected void paint(PaintEvent e) {
- super.paint(e);
- if (hasFocus) {
- GC gc = e.gc;
- Point size = getSize();
- gc.setForeground(getForeground());
- gc.drawFocus(0, 0, size.x, size.y);
- }
- }
-
- public void addSelectionListener(SelectionListener listener) {
- checkWidget ();
- if (listener == null) return;
- TypedListener typedListener = new TypedListener (listener);
- addListener (SWT.Selection,typedListener);
- addListener (SWT.DefaultSelection,typedListener);
- }
-
- public void removeSelectionListener(SelectionListener listener) {
- checkWidget ();
- if (listener == null) return;
- removeListener (SWT.Selection, listener);
- removeListener (SWT.DefaultSelection, listener);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/TableData.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/TableData.java
deleted file mode 100644
index e2243e2..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/TableData.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-
-public class TableData {
- public static final int LEFT = 1;
- public static final int CENTER = 2;
- public static final int RIGHT = 3;
- public static final int TOP = 4;
- public static final int MIDDLE = 5;
- public static final int BOTTOM = 6;
- public static final int FILL = 7;
- public int colspan=1;
- public int rowspan=1;
- public int align = LEFT;
- public int valign = TOP;
- public int indent = 0;
- public int maxWidth = SWT.DEFAULT;
- public int maxHeight = SWT.DEFAULT;
- public int heightHint = SWT.DEFAULT;
- public boolean grabHorizontal=false;
-
- //private
- int childIndex;
- boolean isItemData=true;
- int compWidth;
- Point compSize;
-
- public TableData() {
- }
-
- public TableData(int align, int valign) {
- this(align, valign, 1, 1);
- }
-
- public TableData(int align, int valign, int rowspan, int colspan) {
- this.align = align;
- this.valign = valign;
- this.rowspan = rowspan;
- this.colspan = colspan;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/TableLayoutTest.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/TableLayoutTest.java
deleted file mode 100644
index 0205ddd..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/TableLayoutTest.java
+++ /dev/null
@@ -1,229 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.custom.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.events.*;
-import java.io.InputStream;
-import org.eclipse.swt.program.Program;
-import org.eclipse.update.ui.forms.internal.engine.*;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.StatusLineManager;
-
-public class TableLayoutTest {
-
-public static void main (String [] args) {
- Display display = new Display ();
- Shell shell = new Shell (display);
- shell.setLayout(new FillLayout());
- final ScrolledComposite sc = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL);
- // sc.setAlwaysShowScrollBars(true);
- sc.setBackground(sc.getDisplay().getSystemColor(SWT.COLOR_WHITE));
- final Composite c = new Composite(sc, SWT.NONE);
- //c.setBackground(c.getDisplay().getSystemColor(SWT.COLOR_RED));
- sc.setContent(c);
- sc.addListener (SWT.Resize, new Listener () {
- public void handleEvent (Event e) {
- Rectangle ssize = sc.getClientArea();
- int swidth = ssize.width;
- HTMLTableLayout layout = (HTMLTableLayout)c.getLayout();
- Point size = layout.computeSize(c, swidth, SWT.DEFAULT, true);
- //if (size.x < swidth) size.x = swidth;
- Rectangle trim = c.computeTrim(0, 0, size.x, size.y);
- size = new Point(trim.width, trim.height);
- /*
- Point size = c.computeSize(swidth, SWT.DEFAULT, true);
- */
- //System.out.println("in: "+swidth+", out: "+size.x);
- c.setSize(size);
- }
- });
- c.setBackground(c.getDisplay().getSystemColor(SWT.COLOR_WHITE));
- HTMLTableLayout layout = new HTMLTableLayout();
- layout.numColumns = 2;
- //layout.horizontalSpacing = 0;
- layout.leftMargin = 0;
- layout.rightMargin = 0;
- layout.makeColumnsEqualWidth=false;
- //layout.marginWidth = layout.marginHeight = 0;
- //layout.horizontalSpacing = 0;
- c.setLayout(layout);
-
- Label label;
- CLabel clabel;
- Button b;
- TableData td;
-/*
- label = new Label(c, SWT.NULL);
- label.setText("Single line1");
-
- //label = new Label(c, SWT.WRAP);
- Text text = new Text(c, SWT.MULTI | SWT.WRAP);
- text.setEditable(false);
- text.setText("This is a much longer text that I want wrapped,"+
- " but depending on the window size it can be rendered completely.");
-
- b = new Button(c, SWT.PUSH);
- b.setText("Simple button");
-
- label = new Label(c, SWT.WRAP);
- label.setText("Another text that may or may not be wrapped");
-
- label = new Label(c, SWT.NULL);
- td = new TableData(TableData.RIGHT, TableData.BOTTOM);
- label.setLayoutData(td);
- label.setText("Fixed label");
-
- Composite nested = new Composite(c, SWT.NULL);
- layout = new HTMLTableLayout();
- layout.numColumns = 2;
- nested.setLayout(layout);
- b = new Button(nested, SWT.PUSH);
- b.setText("Button2");
- label = new Label(nested, SWT.WRAP);
- td = new TableData(TableData.LEFT, TableData.MIDDLE);
- label.setLayoutData(td);
- label.setText("Some text in the nested label that can be wrapped");
-*/
- label = new Label(c, SWT.NULL);
- label.setText("Text in the left column");
-
- b = new Button(c, SWT.CHECK);
- b.setText("Checkbox in the right column");
-
-
- label = new Label(c, SWT.WRAP);
- label.setText("This assignment step is then repeated for nested tables using the minimum and maximum widths derived for all such tables in the first pass. In this case, the width of the parent table cell plays the role of the current window size in the above description. This process is repeated recursively for all nested tables. The topmost table is then rendered using the assigned widths. Nested tables are subsequently rendered as part of the parent table's cell contents.");
- td = new TableData();
- td.colspan = 2;
- td.align = TableData.FILL;
- label.setLayoutData(td);
-
- ExpandableGroup exp = new ExpandableGroup (SWT.WRAP) {
- public void fillExpansion(Composite container, FormWidgetFactory factory) {
- HTMLTableLayout layout = new HTMLTableLayout();
- container.setLayout(layout);
- layout.leftMargin = layout.rightMargin = 0;
- Button button = factory.createButton(container, null, SWT.PUSH);
- button.setText("Button");
- }
- public void expanded() {
- c.layout(true);
- updateSize(sc, c);
- }
- public void collapsed() {
- c.layout(true);
- updateSize(sc, c);
- }
- };
- exp.setText("Expandable Section");
- //exp.setExpandable(false);
- FormWidgetFactory factory = new FormWidgetFactory();
- exp.createControl(c, factory);
- //exp.getControl().setBackground(label.getDisplay().getSystemColor(SWT.COLOR_GREEN));
- td = new TableData();
- td.colspan = 2;
- td.align = TableData.FILL;
- exp.getControl().setLayoutData(td);
-
- StatusLineManager manager = new StatusLineManager();
- addFormEngine(c, factory, manager);
- //addFormEngine(c, factory, manager);
- //addFormEngine(c, factory, manager);
-
- addRow(c);
-
- Control mcontrol = manager.createControl(c);
- td = new TableData();
- td.colspan = 2;
- td.align = TableData.FILL;
- mcontrol.setLayoutData(td);
-
- factory.setHyperlinkUnderlineMode(HyperlinkHandler.UNDERLINE_ROLLOVER);
-
- SelectableFormLabel ft = new SelectableFormLabel(c, SWT.WRAP);
- ft.setText("Some text in the form text that should also wrap");
- factory.turnIntoHyperlink(ft, new IHyperlinkListener() {
- public void linkEntered(Control link) {
- System.out.println("Link entered");
- }
- public void linkExited(Control link) {
- System.out.println("Link exited");
- }
- public void linkActivated(Control link) {
- System.out.println("Link activated");
- }
- });
-
- ft = new SelectableFormLabel(c, SWT.WRAP);
- ft.setText("Some more form text here");
- factory.turnIntoHyperlink(ft, new IHyperlinkListener() {
- public void linkEntered(Control link) {
- System.out.println("Link entered");
- }
- public void linkExited(Control link) {
- System.out.println("Link exited");
- }
- public void linkActivated(Control link) {
- System.out.println("Link activated");
- }
- });
-
- shell.open ();
- while (!shell.isDisposed ()) {
- if (!display.readAndDispatch ()) display.sleep ();
- }
- display.dispose ();
-}
-
-public static void addFormEngine(Composite c, FormWidgetFactory factory, IStatusLineManager manager) {
- new Label(c, SWT.NULL);
- FormEngine html = new FormEngine(c, SWT.WRAP);
- html.setHyperlinkSettings(factory.getHyperlinkHandler());
- HTTPAction action = new HTTPAction();
- action.setStatusLineManager(manager);
- html.registerTextObject("urlHandler", action);
- //html.setBackground(factory.getBackgroundColor());
- html.setForeground(factory.getForegroundColor());
- InputStream is = TableLayoutTest.class.getResourceAsStream("index.xml");
- //html.setParagraphsSeparated(false);
- html.load(is, true);
- TableData td = new TableData();
- td.colspan = 1;
- td.align = TableData.FILL;
- html.setLayoutData(td);
-}
-
-public static void addRow(Composite c) {
- Composite row = new Composite(c, SWT.WRAP);
- RowLayout layout = new RowLayout();
- layout.wrap = true;
- row.setLayout(layout);
-
- for (int i=0; i<10; i++) {
- Button button = new Button(row, SWT.PUSH);
- button.setText("Button that should be wrapped");
- }
- TableData td = new TableData();
- td.colspan = 2;
- td.align = TableData.FILL;
- td.grabHorizontal = true;
- row.setLayoutData(td);
-}
-
-private static void updateSize(ScrolledComposite sc, Composite c) {
- Rectangle ssize = sc.getClientArea();
- int swidth = ssize.width;
- HTMLTableLayout layout = (HTMLTableLayout)c.getLayout();
- Point size = layout.computeSize(c, swidth, SWT.DEFAULT, true);
- Rectangle trim = c.computeTrim(0, 0, size.x, size.y);
- size = new Point(trim.width, trim.height);
- c.setSize(size);
-}
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ToggleControl.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ToggleControl.java
deleted file mode 100644
index 89ec8f6..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/ToggleControl.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.SWT;
-
-public class ToggleControl extends SelectableControl {
- private boolean selection;
- private Color decorationColor;
- private Color activeColor;
- private Cursor activeCursor;
- private boolean hover=false;
- private static final int marginWidth = 2;
- private static final int marginHeight = 2;
- private static final int WIDTH = 9;
- private static final int HEIGHT = 9;
- private static final int [] offPoints = { 0,2, 8,2, 4,6 };
- private static final int [] onPoints = { 2, -1, 2,8, 6,4 };
-
- public ToggleControl(Composite parent, int style) {
- super(parent, style);
- addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- selection = !selection;
- redraw();
- }
- });
-
- addMouseTrackListener(new MouseTrackAdapter() {
- public void mouseEnter(MouseEvent e) {
- hover = true;
- if (activeCursor!=null)
- setCursor(activeCursor);
- redraw();
- }
- public void mouseExit(MouseEvent e) {
- hover = false;
- if (activeCursor!=null)
- setCursor(null);
- redraw();
- }
- });
- }
-
- public void setDecorationColor(Color decorationColor) {
- this.decorationColor = decorationColor;
- }
-
- public Color getDecorationColor() {
- return decorationColor;
- }
-
- public void setActiveDecorationColor(Color activeColor) {
- this.activeColor = activeColor;
- }
-
- public void setActiveCursor(Cursor activeCursor) {
- this.activeCursor = activeCursor;
- }
-
- public Color getActiveDecorationColor() {
- return activeColor;
- }
-
- public Point computeSize(int wHint, int hHint, boolean changed) {
- int width, height;
-
- if (wHint!=SWT.DEFAULT) width = wHint;
- else
- width = WIDTH + 2*marginWidth;
- if (hHint!=SWT.DEFAULT) height = hHint;
- else height = HEIGHT + 2*marginHeight;
- return new Point(width, height);
- }
-
- /*
- * @see SelectableControl#paint(GC)
- */
- protected void paint(GC gc) {
- if (hover && activeColor!=null)
- gc.setBackground(activeColor);
- else if (decorationColor!=null)
- gc.setBackground(decorationColor);
- else
- gc.setBackground(getForeground());
- int [] data;
- Point size = getSize();
- int x = (size.x - 9)/2;
- int y = (size.y - 9)/2;
- if (selection)
- data = translate(onPoints, x, y);
-
- else
- data = translate(offPoints, x, y);
- gc.fillPolygon(data);
- gc.setBackground(getBackground());
- }
-
- private int [] translate(int [] data, int x, int y) {
- int [] target = new int [data.length];
- for (int i=0; i<data.length; i+=2) {
- target[i] = data[i]+ x;
- }
- for (int i=1; i<data.length; i+=2) {
- target[i] = data[i]+y;
- }
- return target;
- }
-
- public boolean getSelection() {
- return selection;
- }
-
- public void setSelection(boolean selection) {
- this.selection = selection;
- }
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/WebForm.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/WebForm.java
deleted file mode 100644
index cdedfc4..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/WebForm.java
+++ /dev/null
@@ -1,219 +0,0 @@
-package org.eclipse.update.ui.forms.internal;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.*;
-import org.eclipse.swt.events.*;
-import java.util.*;
-import org.eclipse.ui.*;
-import org.eclipse.jface.resource.*;
-import org.eclipse.jface.util.*;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.custom.*;
-
-/**
- * This form implementation assumes that it contains
- * children that do not have independent dimensions.
- * In other words, these widgets are not capable
- * of answering their preferred size. Instead,
- * desired width must be supplied to get the
- * preferred height. These forms are layed out
- * top to bottom, left to right and use
- * a layout algorithm very similar to
- * HTML tables. Scrolling is not optional
- * for this type of presentation -
- * scroll bars will show up when needed.
- */
-
-public class WebForm extends AbstractSectionForm {
- protected ScrolledComposite scrollComposite;
- private Composite control;
- private Composite client;
- private final static int HMARGIN = 5;
- private final static int VMARGIN = 5;
- private Image headingUnderlineImage;
-
- class WebFormLayout extends Layout {
-
- protected void layout(Composite parent, boolean changed) {
- Rectangle bounds = parent.getClientArea();
- int x = 0;
- int y = 0;
- if (isHeadingVisible()) {
- y = getHeadingHeight(parent);
- }
- Point csize;
- Layout layout = client.getLayout();
- if (layout != null && layout instanceof HTMLTableLayout) {
- HTMLTableLayout hlayout = (HTMLTableLayout) layout;
- csize = hlayout.computeSize(client, bounds.width, SWT.DEFAULT, true);
- if (csize.x < bounds.width)
- csize.x = bounds.width;
- Rectangle trim = control.computeTrim(0, 0, csize.x, csize.y);
- csize = new Point(trim.width, trim.height);
- } else {
- csize = client.computeSize(bounds.width, SWT.DEFAULT, changed);
- }
- client.setBounds(x, y, csize.x, csize.y);
- }
-
- protected Point computeSize(
- Composite parent,
- int wHint,
- int hHint,
- boolean changed) {
- int width = wHint;
- int height = 0;
- if (isHeadingVisible()) {
- height = getHeadingHeight(parent);
- }
- Point csize;
- Layout layout = client.getLayout();
- if (layout != null && layout instanceof HTMLTableLayout) {
- HTMLTableLayout hlayout = (HTMLTableLayout) layout;
- csize = hlayout.computeSize(client, width, SWT.DEFAULT, true);
- if (csize.x < width)
- csize.x = width;
- Rectangle trim = control.computeTrim(0, 0, csize.x, csize.y);
- csize = new Point(trim.width, trim.height);
- } else {
- csize = client.computeSize(width, SWT.DEFAULT, changed);
- }
- width = csize.x;
- height += csize.y;
- return new Point(width, height);
- }
- }
-
- public WebForm() {
- }
-
- public Control createControl(Composite parent) {
- scrollComposite = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
- scrollComposite.setBackground(factory.getBackgroundColor());
- final Composite form = factory.createComposite(scrollComposite);
-
- scrollComposite.setContent(form);
- scrollComposite.addListener(SWT.Resize, new Listener() {
- public void handleEvent(Event e) {
- updateSize();
- }
- });
- WebFormLayout layout = new WebFormLayout();
- form.setLayout(layout);
- form.addPaintListener(new PaintListener() {
- public void paintControl(PaintEvent e) {
- paint(e);
- }
- });
- this.control = form;
- client = factory.createComposite(form);
- createContents(client);
- initializeScrollBars(scrollComposite);
- //form.setFocus();
- return scrollComposite;
- }
- private void initializeScrollBars(ScrolledComposite scomp) {
- ScrollBar hbar = scomp.getHorizontalBar();
- if (hbar != null) {
- hbar.setIncrement(H_SCROLL_INCREMENT);
- }
- ScrollBar vbar = scomp.getVerticalBar();
- if (vbar != null) {
- vbar.setIncrement(V_SCROLL_INCREMENT);
- }
- updatePageIncrement(scomp);
- }
-
- private int getHeadingHeight(Composite parent) {
- int width = parent.getSize().x;
- int height = 0;
- int imageHeight = 0;
- if (getHeadingImage() != null) {
- Rectangle ibounds = getHeadingImage().getBounds();
- imageHeight = ibounds.height;
- }
- GC gc = new GC(parent);
- gc.setFont(titleFont);
- int textWidth = width - 2 * HMARGIN;
- height = FormLabel.computeWrapHeight(gc, getHeadingText(), textWidth);
- height += 2 * VMARGIN;
- height = Math.max(height, imageHeight);
- if (headingUnderlineImage != null) {
- Rectangle ibounds = headingUnderlineImage.getBounds();
- height += ibounds.height;
- }
- return height;
- }
-
- protected void createContents(Composite parent) {
- }
-
- public Control getControl() {
- return control;
- }
-
- public void setHeadingVisible(boolean newHeadingVisible) {
- super.setHeadingVisible(newHeadingVisible);
- if (control != null)
- control.layout();
- }
-
- public Image getHeadingUnderlineImage() {
- return headingUnderlineImage;
- }
-
- public void setHeadingUnderlineImage(Image image) {
- this.headingUnderlineImage = image;
- }
-
- public void propertyChange(PropertyChangeEvent event) {
- titleFont = JFaceResources.getHeaderFont();
- if (control != null) {
- control.layout();
- }
- }
-
- public void updateSize() {
- Rectangle ssize = scrollComposite.getClientArea();
- int swidth = ssize.width;
- WebFormLayout layout = (WebFormLayout) control.getLayout();
- Point size = layout.computeSize(control, swidth, SWT.DEFAULT, true);
- if (size.x < swidth)
- size.x = swidth;
- Rectangle trim = control.computeTrim(0, 0, size.x, size.y);
- size = new Point(trim.width, trim.height);
- control.setSize(size);
- updatePageIncrement(scrollComposite);
- }
-
- private void paint(PaintEvent e) {
- if (isHeadingVisible() == false)
- return;
- GC gc = e.gc;
- if (headingImage != null) {
- gc.drawImage(headingImage, 0, 0);
- }
- Point size = control.getSize();
- if (getHeadingBackground() != null)
- gc.setBackground(getHeadingBackground());
- if (getHeadingForeground() != null)
- gc.setForeground(getHeadingForeground());
- gc.setFont(titleFont);
- FormLabel.paintWrapText(gc, size, getHeadingText(), HMARGIN, VMARGIN);
- if (headingUnderlineImage != null) {
- int y =
- getHeadingHeight((Composite) control)
- - headingUnderlineImage.getBounds().height;
- gc.drawImage(headingUnderlineImage, 0, y);
- }
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/BulletParagraph.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/BulletParagraph.java
deleted file mode 100644
index 2669443..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/BulletParagraph.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.eclipse.update.ui.forms.internal.engine;
-
-import org.eclipse.swt.graphics.GC;
-import java.util.Hashtable;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Color;
-
-public class BulletParagraph extends Paragraph implements IBulletParagraph {
- private int style = CIRCLE;
- private String text;
- private int CIRCLE_DIAM = 5;
- private int SPACING = 10;
- private int indent = -1;
- /**
- * Constructor for BulletParagraph.
- * @param addVerticalSpace
- */
- public BulletParagraph(boolean addVerticalSpace) {
- super(addVerticalSpace);
- }
-
- public int getIndent() {
- if (indent != -1)
- return indent;
- switch (style) {
- case CIRCLE :
- return CIRCLE_DIAM + SPACING;
- }
- return 20;
- }
-
- /*
- * @see IBulletParagraph#getBulletStyle()
- */
- public int getBulletStyle() {
- return style;
- }
-
- public void setBulletStyle(int style) {
- this.style = style;
- }
-
- public void setBulletText(String text) {
- this.text = text;
- }
-
- public void setIndent(int indent) {
- this.indent = indent;
- }
-
- /*
- * @see IBulletParagraph#getBulletText()
- */
- public String getBulletText() {
- return text;
- }
-
- public void paint(
- GC gc,
- int width,
- Locator loc,
- int lineHeight,
- Hashtable objectTable,
- IHyperlinkSegment selectedLink) {
- paintBullet(gc, loc, lineHeight, objectTable);
- super.paint(gc, width, loc, lineHeight, objectTable, selectedLink);
- }
-
- public void paintBullet(
- GC gc,
- Locator loc,
- int lineHeight,
- Hashtable objectTable) {
- int x = loc.x - getIndent();
- if (style == CIRCLE) {
- int y = loc.y + lineHeight / 2 - CIRCLE_DIAM / 2;
- Color bg = gc.getBackground();
- Color fg = gc.getForeground();
- gc.setBackground(fg);
- gc.fillRectangle(x, y + 1, 5, 3);
- gc.fillRectangle(x + 1, y, 3, 5);
- gc.setBackground(bg);
- } else if (style == TEXT && text != null) {
- gc.drawText(text, x, loc.y);
- } else if (style == IMAGE && text != null) {
- Image image = (Image) objectTable.get(text);
- if (image != null) {
- int y = loc.y + lineHeight / 2 - image.getBounds().height / 2;
- gc.drawImage(image, x, y);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/FormEngine.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/FormEngine.java
deleted file mode 100644
index 4b8ff3f..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/FormEngine.java
+++ /dev/null
@@ -1,384 +0,0 @@
-package org.eclipse.update.ui.forms.internal.engine;
-
-import java.io.InputStream;
-import java.util.Hashtable;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.MouseTrackListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.update.ui.forms.internal.HyperlinkSettings;
-
-public class FormEngine extends Canvas {
- public static final String URL_HANDLER_ID = "urlHandler";
- boolean hasFocus;
- boolean paragraphsSeparated = true;
- String text;
- TextModel model;
- Hashtable objectTable = new Hashtable();
- public int marginWidth = 0;
- public int marginHeight = 1;
- IHyperlinkSegment entered;
- boolean mouseDown = false;
- Point dragOrigin;
-
- public boolean getFocus() {
- return hasFocus;
- }
-
- public int getParagraphSpacing(int lineHeight) {
- return lineHeight/2;
- }
-
- public void setParagraphsSeparated(boolean value) {
- paragraphsSeparated = value;
- }
-
- /**
- * Constructor for SelectableFormLabel
- */
- public FormEngine(Composite parent, int style) {
- super(parent, style);
- setLayout(new FormEngineLayout());
- model = new TextModel();
-
- addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- model.dispose();
- }
- });
- addPaintListener(new PaintListener() {
- public void paintControl(PaintEvent e) {
- paint(e);
- }
- });
- addListener(SWT.KeyDown, new Listener() {
- public void handleEvent(Event e) {
- if (e.character=='\r') {
- activateSelectedLink();
- return;
- }
- }
- });
- addListener(SWT.Traverse, new Listener() {
- public void handleEvent(Event e) {
- switch (e.detail) {
- case SWT.TRAVERSE_PAGE_NEXT:
- case SWT.TRAVERSE_PAGE_PREVIOUS:
- case SWT.TRAVERSE_ARROW_NEXT:
- case SWT.TRAVERSE_ARROW_PREVIOUS:
- e.doit = false;
- return;
- }
- if (!model.hasFocusSegments()) {
- e.doit = true;
- return;
- }
- if (e.detail == SWT.TRAVERSE_TAB_NEXT)
- e.doit = advance(true);
- else if (e.detail == SWT.TRAVERSE_TAB_PREVIOUS)
- e.doit = advance(false);
- else if (e.detail != SWT.TRAVERSE_RETURN)
- e.doit = true;
- }
- });
- addFocusListener(new FocusListener() {
- public void focusGained(FocusEvent e) {
- if (!hasFocus) {
- hasFocus = true;
- handleFocusChange();
- }
- }
- public void focusLost(FocusEvent e) {
- if (hasFocus) {
- hasFocus = false;
- handleFocusChange();
- }
- }
- });
- addMouseListener(new MouseListener() {
- public void mouseDoubleClick(MouseEvent e) {
- }
- public void mouseDown(MouseEvent e) {
- // select a link
- handleMouseClick(e, true);
- }
- public void mouseUp(MouseEvent e) {
- // activate a link
- handleMouseClick(e, false);
- }
- });
- addMouseTrackListener(new MouseTrackListener() {
- public void mouseEnter(MouseEvent e) {
- handleMouseMove(e);
- }
- public void mouseExit(MouseEvent e) {
- if (entered != null) {
- exitLink(entered);
- entered = null;
- setCursor(null);
- }
- }
- public void mouseHover(MouseEvent e) {
- handleMouseHover(e);
- }
- });
- addMouseMoveListener(new MouseMoveListener() {
- public void mouseMove(MouseEvent e) {
- handleMouseMove(e);
- }
- });
- }
-
- private void handleMouseClick(MouseEvent e, boolean down) {
- if (down) {
- // select a hyperlink
- IHyperlinkSegment segmentUnder = model.findHyperlinkAt(e.x, e.y);
- if (segmentUnder != null) {
- IHyperlinkSegment oldLink = model.getSelectedLink();
- model.selectLink(segmentUnder);
- enterLink(segmentUnder);
- paintFocusTransfer(oldLink, segmentUnder);
- }
- mouseDown=true;
- dragOrigin = new Point(e.x, e.y);
- } else {
- IHyperlinkSegment segmentUnder = model.findHyperlinkAt(e.x, e.y);
- if (segmentUnder != null) {
- activateLink(segmentUnder);
- }
- mouseDown = false;
- }
- }
- private void handleMouseHover(MouseEvent e) {
- }
- private void handleMouseMove(MouseEvent e) {
- if (mouseDown) {
- handleDrag(e);
- return;
- }
- ITextSegment segmentUnder = model.findSegmentAt(e.x, e.y);
-
- if (segmentUnder == null) {
- if (entered != null) {
- exitLink(entered);
- entered = null;
- }
- setCursor(null);
- } else {
- if (segmentUnder instanceof IHyperlinkSegment) {
- IHyperlinkSegment linkUnder = (IHyperlinkSegment)segmentUnder;
- if (entered == null) {
- entered = linkUnder;
- enterLink(linkUnder);
- setCursor(model.getHyperlinkSettings().getHyperlinkCursor());
- }
- }
- else {
- setCursor(model.getHyperlinkSettings().getTextCursor());
- }
- }
- }
-
- private void handleDrag(MouseEvent e) {
- }
-
-
- public HyperlinkSettings getHyperlinkSettings() {
- return model.getHyperlinkSettings();
- }
-
- public void setHyperlinkSettings(HyperlinkSettings settings) {
- model.setHyperlinkSettings(settings);
- }
-
- private boolean advance(boolean next) {
- IHyperlinkSegment current = model.getSelectedLink();
- if (current!=null) exitLink(current);
-
- boolean valid = model.traverseLinks(next);
-
- if (valid)
- enterLink(model.getSelectedLink());
- paintFocusTransfer(current, model.getSelectedLink());
- return !valid;
- }
-
- public IHyperlinkSegment getSelectedLink() {
- return model.getSelectedLink();
- }
-
- private void handleFocusChange() {
- if (hasFocus) {
- model.traverseLinks(true);
- enterLink(model.getSelectedLink());
- paintFocusTransfer(null, model.getSelectedLink());
- } else {
- paintFocusTransfer(model.getSelectedLink(), null);
- model.selectLink(null);
- }
- }
-
- private void enterLink(IHyperlinkSegment link) {
- if (link == null)
- return;
- HyperlinkAction action = link.getAction(objectTable);
- if (action != null)
- action.linkEntered(link);
- }
-
- private void exitLink(IHyperlinkSegment link) {
- if (link == null)
- return;
- HyperlinkAction action = link.getAction(objectTable);
- if (action != null)
- action.linkExited(link);
- }
-
- private void activateSelectedLink() {
- IHyperlinkSegment link = model.getSelectedLink();
- if (link != null)
- activateLink(link);
- }
-
- private void activateLink(IHyperlinkSegment link) {
- setCursor(model.getHyperlinkSettings().getBusyCursor());
- HyperlinkAction action = link.getAction(objectTable);
- if (action != null)
- action.linkActivated(link);
- setCursor(model.getHyperlinkSettings().getHyperlinkCursor());
- }
-
- protected void paint(PaintEvent e) {
- int width = getClientArea().width;
- IParagraph[] paragraphs = model.getParagraphs();
-
- GC gc = e.gc;
- gc.setFont(getFont());
- gc.setForeground(getForeground());
- gc.setBackground(getBackground());
-
- Locator loc = new Locator();
- loc.marginWidth = marginWidth;
- loc.marginHeight = marginHeight;
- loc.x = marginWidth;
- loc.y = marginHeight;
-
- FontMetrics fm = gc.getFontMetrics();
- int lineHeight = fm.getHeight();
-
- IHyperlinkSegment selectedLink = model.getSelectedLink();
-
- for (int i = 0; i < paragraphs.length; i++) {
- IParagraph p = paragraphs[i];
-
- if (i > 0 && paragraphsSeparated && p.getAddVerticalSpace())
- loc.y += getParagraphSpacing(lineHeight);
-
- loc.indent = p.getIndent();
- loc.resetCaret();
- loc.rowHeight = 0;
- p.paint(gc, width, loc, lineHeight, objectTable, selectedLink);
- }
- }
-
- public void registerTextObject(String key, Object value) {
- objectTable.put(key, value);
- }
-
- public void load(String text, boolean parseTags, boolean expandURLs) {
- try {
- if (parseTags)
- model.parseTaggedText(text, expandURLs);
- else
- model.parseRegularText(text, expandURLs);
- } catch (CoreException e) {
- //FIXME at least log
- }
- }
- public void load(InputStream is, boolean expandURLs) {
- try {
- model.parseInputStream(is, expandURLs);
- } catch (CoreException e) {
- // FIXME at least log
- }
- }
-
- public boolean setFocus() {
- /*
- if (!model.hasFocusSegments())
- return false;
- */
- return super.setFocus();
- }
-
- private void paintFocusTransfer(IHyperlinkSegment oldLink, IHyperlinkSegment newLink) {
- GC gc = new GC(this);
- Color bg = getBackground();
- Color fg = getForeground();
-
- gc.setFont(getFont());
-
- if (oldLink!=null) {
- gc.setBackground(bg);
- gc.setForeground(fg);
- oldLink.paintFocus(gc, bg, fg, false);
- }
- if (newLink!=null) {
- gc.setBackground(bg);
- gc.setForeground(fg);
- newLink.paintFocus(gc, bg, fg, true);
- }
- gc.dispose();
- }
- /**
- * Gets the marginWidth.
- * @return Returns a int
- */
- public int getMarginWidth() {
- return marginWidth;
- }
-
- /**
- * Sets the marginWidth.
- * @param marginWidth The marginWidth to set
- */
- public void setMarginWidth(int marginWidth) {
- this.marginWidth = marginWidth;
- }
-
- /**
- * Gets the marginHeight.
- * @return Returns a int
- */
- public int getMarginHeight() {
- return marginHeight;
- }
-
- /**
- * Sets the marginHeight.
- * @param marginHeight The marginHeight to set
- */
- public void setMarginHeight(int marginHeight) {
- this.marginHeight = marginHeight;
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/FormEngineLayout.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/FormEngineLayout.java
deleted file mode 100644
index 1298e6a..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/FormEngineLayout.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.*;
-
-/**
- * @version 1.0
- * @author
- */
-public class FormEngineLayout extends Layout {
-
- /*
- * @see Layout#computeSize(Composite, int, int, boolean)
- */
-
- public Point computeSize(
- Composite composite,
- int wHint,
- int hHint,
- boolean changed) {
- FormEngine engine = (FormEngine) composite;
- int innerWidth = wHint;
- if (innerWidth != SWT.DEFAULT)
- innerWidth -= engine.marginWidth * 2;
- Point textSize = computeTextSize(engine, innerWidth);
- int textWidth = textSize.x + 2 * engine.marginWidth;
- int textHeight = textSize.y + 2 * engine.marginHeight;
- Point result = new Point(textWidth, textHeight);
- return result;
- }
-
- private Point computeTextSize(FormEngine engine, int wHint) {
- IParagraph[] paragraphs = engine.model.getParagraphs();
-
- GC gc = new GC(engine);
- gc.setFont(engine.getFont());
-
- Locator loc = new Locator();
-
- int width = wHint != SWT.DEFAULT ? wHint : 0;
-
- FontMetrics fm = gc.getFontMetrics();
- int lineHeight = fm.getHeight();
-
- for (int i = 0; i < paragraphs.length; i++) {
- IParagraph p = paragraphs[i];
-
- if (i > 0 && engine.paragraphsSeparated && p.getAddVerticalSpace())
- loc.y += engine.getParagraphSpacing(lineHeight);
-
- loc.rowHeight = 0;
- loc.indent = p.getIndent();
- loc.x = p.getIndent();
-
- IParagraphSegment[] segments = p.getSegments();
- if (segments.length > 0) {
- for (int j = 0; j < segments.length; j++) {
- IParagraphSegment segment = segments[j];
- segment.advanceLocator(gc, wHint, loc, engine.objectTable);
- width = Math.max(width, loc.width);
- }
- loc.y += loc.rowHeight;
- } else {
- // empty new line
- loc.y += lineHeight;
- }
- }
- gc.dispose();
- return new Point(width, loc.y);
- }
-
- /*
- * @see Layout#layout(Composite, boolean)
- */
- protected void layout(Composite composite, boolean flushCache) {
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HTTPAction.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HTTPAction.java
deleted file mode 100644
index b8a226f..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HTTPAction.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-import org.eclipse.swt.program.Program;
-
-/**
- * @version 1.0
- * @author
- */
-public class HTTPAction extends HyperlinkAction {
- public HTTPAction () {
- }
-
- public void linkActivated(IHyperlinkSegment link) {
- Program.launch(link.getText());
- }
-
- public void linkEntered(IHyperlinkSegment link) {
- setDescription(link.getText());
- super.linkEntered(link);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HyperlinkAction.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HyperlinkAction.java
deleted file mode 100644
index c509e72..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HyperlinkAction.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.update.ui.forms.internal.IHyperlinkListener;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * @version 1.0
- * @author
- */
-public class HyperlinkAction {
- IStatusLineManager manager;
- private String description;
-
- public HyperlinkAction() {
- }
-
- public void linkActivated(final IHyperlinkSegment link) {
- }
-
- public void linkEntered(IHyperlinkSegment link) {
- if (manager!=null && description!=null) {
- manager.setMessage(description);
- }
- }
-
- public void linkExited(IHyperlinkSegment link) {
- if (manager!=null && description!=null) {
- manager.setMessage(null);
- }
- }
-
- public void setStatusLineManager(IStatusLineManager manager) {
- this.manager = manager;
- }
-
- public String getDescription() {
- return description;
- }
- public void setDescription(String description) {
- this.description = description;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HyperlinkSegment.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HyperlinkSegment.java
deleted file mode 100644
index 0fb0385..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/HyperlinkSegment.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import java.util.Hashtable;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.swt.graphics.GC;
-
-/**
- * @version 1.0
- * @author
- */
-public class HyperlinkSegment
- extends TextSegment
- implements IHyperlinkSegment {
- private String actionId;
- private HyperlinkSettings settings;
-
-
- public HyperlinkSegment(String text, HyperlinkSettings settings, String fontId) {
- super(text, fontId);
- this.settings = settings;
- underline = true;
- }
-
- /*
- * @see IHyperlinkSegment#getListener(Hashtable)
- */
- public HyperlinkAction getAction(Hashtable objectTable) {
- if (actionId==null) return null;
- Object obj = objectTable.get(actionId);
- if (obj==null) return null;
- if (obj instanceof HyperlinkAction) return (HyperlinkAction)obj;
- return null;
- }
-
- /*
- public boolean isSelectable() {
- return true;
- }
- */
-
- /*
- * @see IObjectReference#getObjectId()
- */
- public String getObjectId() {
- return actionId;
- }
-
- void setActionId(String id) {
- this.actionId = id;
- }
- public void paint(GC gc, int width, Locator locator, Hashtable objectTable, boolean selected) {
- setColor(settings.getForeground());
- super.paint(gc, width, locator, objectTable, selected);
- }
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IBulletParagraph.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IBulletParagraph.java
deleted file mode 100644
index faa8dbb..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IBulletParagraph.java
+++ /dev/null
@@ -1,15 +0,0 @@
-
-package org.eclipse.update.ui.forms.internal.engine;
-
-import org.eclipse.swt.graphics.GC;
-import java.util.Hashtable;
-
-public interface IBulletParagraph extends IParagraph {
- int CIRCLE = 0;
- int TEXT = 1;
- int IMAGE = 2;
- public int getBulletStyle();
- public String getBulletText();
-
- public void paintBullet(GC gc, Locator loc, int lineHeight, Hashtable objectTable);
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IHyperlinkSegment.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IHyperlinkSegment.java
deleted file mode 100644
index d3cab0a..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IHyperlinkSegment.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import java.util.Hashtable;
-import org.eclipse.update.ui.forms.internal.IHyperlinkListener;
-
-/**
- * @version 1.0
- * @author
- */
-public interface IHyperlinkSegment extends ITextSegment, IObjectReference {
- HyperlinkAction getAction(Hashtable objectTable);
-
- boolean contains(int x, int y);
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IImageSegment.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IImageSegment.java
deleted file mode 100644
index a1eda98..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IImageSegment.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-import org.eclipse.swt.graphics.Image;
-import java.util.Hashtable;
-
-/**
- * @version 1.0
- * @author
- */
-public interface IImageSegment extends IParagraphSegment, IObjectReference {
- public static final int TOP = 1;
- public static final int MIDDLE = 2;
- public static final int BOTTOM = 3;
-
- public int getVerticalAlignment();
-
- Image getImage(Hashtable objectTable);
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IObjectReference.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IObjectReference.java
deleted file mode 100644
index 88d1c4e..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IObjectReference.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-/**
- * @version 1.0
- * @author
- */
-public interface IObjectReference {
- public String getObjectId();
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IParagraph.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IParagraph.java
deleted file mode 100644
index f748804..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IParagraph.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-
-import org.eclipse.swt.graphics.GC;
-import java.util.Hashtable;
-
-/**
- * @version 1.0
- * @author
- */
-public interface IParagraph {
- public int getIndent();
- public IParagraphSegment [] getSegments();
- public void addSegment(IParagraphSegment segment);
- public boolean getAddVerticalSpace();
- public ITextSegment findSegmentAt(int x, int y);
- public void paint(GC gc, int width, Locator loc, int lineHeight, Hashtable objectTable, IHyperlinkSegment selectedLink);
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IParagraphSegment.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IParagraphSegment.java
deleted file mode 100644
index 0587b72..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/IParagraphSegment.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import org.eclipse.swt.graphics.GC;
-import java.util.Hashtable;
-
-/**
- * @version 1.0
- * @author
- */
-public interface IParagraphSegment {
-
- public void advanceLocator(GC gc, int wHint, Locator loc, Hashtable objectTable);
-
- public void paint(GC gc, int width, Locator loc, Hashtable objectTable, boolean selected);
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ITextModel.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ITextModel.java
deleted file mode 100644
index 0a6d5ba..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ITextModel.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * @version 1.0
- * @author
- */
-public interface ITextModel {
- IParagraph [] getParagraphs();
- public void parseTaggedText(String taggedText, boolean expandURLs) throws CoreException;
- public void parseRegularText(String regularText, boolean expandURLs) throws CoreException;
- public void dispose();
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ITextSegment.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ITextSegment.java
deleted file mode 100644
index 7cdfac6..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ITextSegment.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import org.eclipse.swt.graphics.*;
-
-/**
- * @version 1.0
- * @author
- */
-public interface ITextSegment extends IParagraphSegment {
- String getText();
- Color getColor();
- Font getFont();
- boolean isWordWrapAllowed();
- boolean isSelectable();
- boolean contains(int x, int y);
- void paintFocus(GC gc, Color bg, Color fg, boolean selected);
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ImageSegment.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ImageSegment.java
deleted file mode 100644
index 4fa9c4d..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ImageSegment.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import org.eclipse.swt.graphics.*;
-import java.util.Hashtable;
-import org.eclipse.swt.SWT;
-
-/**
- * @version 1.0
- * @author
- */
-public class ImageSegment extends ParagraphSegment implements IImageSegment {
- private int alignment = BOTTOM;
- private String imageId;
-
- public int getVerticalAlignment() {
- return alignment;
- }
-
- void setVerticalAlignment(int alignment) {
- this.alignment = alignment;
- }
-
- public Image getImage(Hashtable objectTable) {
- if (imageId==null) return null;
- Object obj = objectTable.get(imageId);
- if (obj==null) return null;
- if (obj instanceof Image) return (Image)obj;
- return null;
- }
-
- public String getObjectId() {
- return imageId;
- }
-
- void setObjectId(String imageId) {
- this.imageId = imageId;
- }
-
- public void advanceLocator(GC gc, int wHint, Locator loc, Hashtable objectTable) {
- Image image = getImage(objectTable);
- int iwidth = 0;
- int iheight = 0;
- if (image!=null) {
- Rectangle rect = image.getBounds();
- iwidth = rect.width;
- iheight = rect.height;
- }
- if (wHint != SWT.DEFAULT && loc.x + iwidth > wHint) {
- // new line
- loc.x = loc.indent + iwidth;
- loc.width = loc.x;
- loc.y += loc.rowHeight;
- loc.rowHeight = iheight;
- }
- else {
- loc.x += iwidth;
- loc.rowHeight = Math.max(loc.rowHeight, iheight);
- }
- }
-
- public void paint(GC gc, int width, Locator loc, Hashtable objectTable, boolean selected) {
- Image image = getImage(objectTable);
- int iwidth = 0;
- int iheight = 0;
- if (image!=null) {
- Rectangle rect = image.getBounds();
- iwidth = rect.width;
- iheight = rect.height;
- }
- else return;
- loc.width = iwidth;
- loc.height = iheight;
-
- int ix = loc.x;
- int iy = loc.y;
-
- if (ix + iwidth > width) {
- // new row
- ix = loc.indent + loc.marginWidth;
- iy += loc.rowHeight;
- loc.rowHeight = 0;
- }
-
- gc.drawImage(image, ix, iy);
- loc.x = ix + iwidth;
- loc.y = iy;
- loc.rowHeight = Math.max(loc.rowHeight, iheight);
- }
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/Locator.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/Locator.java
deleted file mode 100644
index fb46567..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/Locator.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-/**
- * @version 1.0
- * @author
- */
-public class Locator {
- public int indent;
- public int x, y;
- public int width, height;
- public int rowHeight;
- public int marginWidth;
- public int marginHeight;
-
- public void newLine() {
- resetCaret();
- y += rowHeight;
- rowHeight = 0;
- }
-
- public void resetCaret() {
- x = marginWidth + indent;
- }
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/Paragraph.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/Paragraph.java
deleted file mode 100644
index f4de4c9..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/Paragraph.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import java.util.Vector;
-import java.util.StringTokenizer;
-import org.eclipse.update.ui.forms.internal.HyperlinkSettings;
-import java.util.Hashtable;
-import org.eclipse.swt.graphics.GC;
-
-/**
- * @version 1.0
- * @author
- */
-public class Paragraph implements IParagraph {
- public static final String HTTP = "http://";
- private Vector segments;
- private boolean addVerticalSpace = true;
-
- public Paragraph(boolean addVerticalSpace) {
- this.addVerticalSpace = addVerticalSpace;
- }
-
- public int getIndent() {
- return 0;
- }
-
- public boolean getAddVerticalSpace() {
- return addVerticalSpace;
- }
-
- /*
- * @see IParagraph#getSegments()
- */
- public IParagraphSegment[] getSegments() {
- if (segments == null)
- return new IParagraphSegment[0];
- return (IParagraphSegment[]) segments.toArray(
- new IParagraphSegment[segments.size()]);
- }
-
- public void addSegment(IParagraphSegment segment) {
- if (segments == null)
- segments = new Vector();
- segments.add(segment);
- }
-
- public void parseRegularText(
- String text,
- boolean expandURLs,
- HyperlinkSettings settings,
- String fontId) {
- if (text.length() == 0)
- return;
- if (expandURLs) {
- int loc = text.indexOf(HTTP);
-
- if (loc == -1)
- addSegment(new TextSegment(text, fontId));
- else {
- int textLoc = 0;
- while (loc != -1) {
- addSegment(new TextSegment(text.substring(textLoc, loc), fontId));
- boolean added = false;
- for (textLoc = loc; textLoc < text.length(); textLoc++) {
- char c = text.charAt(textLoc);
- if (Character.isSpaceChar(c)) {
- addHyperlinkSegment(text.substring(loc, textLoc), settings, fontId);
- added = true;
- break;
- }
- }
- if (!added) {
- // there was no space - just end of text
- addHyperlinkSegment(text.substring(loc), settings, fontId);
- break;
- }
- loc = text.indexOf(HTTP, textLoc);
- }
- if (textLoc < text.length()) {
- addSegment(new TextSegment(text.substring(textLoc), fontId));
- }
- }
- } else {
- addSegment(new TextSegment(text, fontId));
- }
- }
-
- private void addHyperlinkSegment(
- String text,
- HyperlinkSettings settings,
- String fontId) {
- HyperlinkSegment hs = new HyperlinkSegment(text, settings, fontId);
- hs.setWordWrapAllowed(false);
- hs.setActionId(FormEngine.URL_HANDLER_ID);
- addSegment(hs);
- }
-
- public void paint(
- GC gc,
- int width,
- Locator loc,
- int lineHeight,
- Hashtable objectTable,
- IHyperlinkSegment selectedLink) {
- IParagraphSegment [] segments = getSegments();
- if (segments.length > 0) {
- if (segments[0] instanceof ITextSegment
- && ((ITextSegment) segments[0]).isSelectable())
- loc.x += 1;
- for (int j = 0; j < segments.length; j++) {
- IParagraphSegment segment = segments[j];
- boolean doSelect = false;
- if (selectedLink != null && segment.equals(selectedLink))
- doSelect = true;
- segment.paint(gc, width, loc, objectTable, doSelect);
- }
- loc.y += loc.rowHeight;
- } else {
- loc.y += lineHeight;
- }
- }
- public ITextSegment findSegmentAt(int x, int y) {
- if (segments!=null) {
- for (int i=0; i<segments.size(); i++) {
- IParagraphSegment segment = (IParagraphSegment)segments.get(i);
- if (segment instanceof ITextSegment) {
- ITextSegment textSegment = (ITextSegment)segment;
- if (textSegment.contains(x, y))
- return textSegment;
- }
- }
- }
- return null;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ParagraphSegment.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ParagraphSegment.java
deleted file mode 100644
index 1458bc3..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/ParagraphSegment.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-/**
- * @version 1.0
- * @author
- */
-public abstract class ParagraphSegment implements IParagraphSegment {
-
-}
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/TextModel.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/TextModel.java
deleted file mode 100644
index ebc2047..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/TextModel.java
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import java.util.Vector;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.ui.forms.internal.*;
-import org.apache.xerces.parsers.DOMParser;
-import org.xml.sax.*;
-import java.io.*;
-import org.w3c.dom.*;
-import org.eclipse.jface.resource.JFaceResources;
-
-/**
- * @version 1.0
- * @author
- */
-public class TextModel implements ITextModel {
- Vector paragraphs;
- IHyperlinkListener urlListener;
- IHyperlinkSegment[] hyperlinks;
- int selectedLinkIndex = -1;
- HyperlinkSettings hyperlinkSettings;
-
- class LocalHyperlinkSettings extends HyperlinkSettings {
- }
-
- /*
- * @see ITextModel#getParagraphs()
- */
- public IParagraph[] getParagraphs() {
- if (paragraphs == null)
- return new IParagraph[0];
- return (IParagraph[]) paragraphs.toArray(new IParagraph[paragraphs.size()]);
- }
-
- /*
- * @see ITextModel#parse(String)
- */
- public void parseTaggedText(String taggedText, boolean expandURLs)
- throws CoreException {
- try {
- InputStream stream = new ByteArrayInputStream(taggedText.getBytes("UTF8"));
- parseInputStream(stream, expandURLs);
- } catch (UnsupportedEncodingException e) {
- }
- }
-
- public void parseInputStream(InputStream is, boolean expandURLs)
- throws CoreException {
- DOMParser parser = new DOMParser();
- reset();
- try {
- InputSource source = new InputSource(is);
- parser.parse(source);
- /*
- if (errorHandler.getErrorCount()>0 ||
- errorHandler.getFatalErrorCount()>0) {
- throwParseErrorsException();
- */
- processDocument(parser.getDocument(), expandURLs);
- } catch (SAXException e) {
- // FIXME log instead
- System.out.println(e);
- } catch (IOException e) {
- }
- }
-
- private void processDocument(Document doc, boolean expandURLs) {
- Node root = doc.getDocumentElement();
- NodeList children = root.getChildNodes();
- for (int i = 0; i < children.getLength(); i++) {
- Node child = children.item(i);
- if (child.getNodeType() == Node.TEXT_NODE) {
- // Make an implicit paragraph
- String text = child.getNodeValue();
- if (text != null && !isIgnorableWhiteSpace(text, true)) {
- Paragraph p = new Paragraph(true);
- p.parseRegularText(text, expandURLs, getHyperlinkSettings(), null);
- paragraphs.add(p);
- }
- } else if (child.getNodeType() == Node.ELEMENT_NODE) {
- String tag = child.getNodeName().toLowerCase();
- if (tag.equals("p")) {
- IParagraph p = processParagraph(child, expandURLs);
- if (p != null)
- paragraphs.add(p);
- }
- else if (tag.equals("li")) {
- IParagraph p = processListItem(child, expandURLs);
- if (p != null)
- paragraphs.add(p);
- }
- }
- }
- }
- private IParagraph processParagraph(Node paragraph, boolean expandURLs) {
- NodeList children = paragraph.getChildNodes();
- NamedNodeMap atts = paragraph.getAttributes();
- Node addSpaceAtt = atts.getNamedItem("addVerticalSpace");
- boolean addSpace = true;
-
- if (addSpaceAtt != null) {
- String value = addSpaceAtt.getNodeValue();
- addSpace = value.equalsIgnoreCase("true");
- }
- Paragraph p = new Paragraph(addSpace);
-
- processSegments(p, children, expandURLs);
- return p;
- }
- private IParagraph processListItem(Node listItem, boolean expandURLs) {
- NodeList children = listItem.getChildNodes();
- NamedNodeMap atts = listItem.getAttributes();
- Node addSpaceAtt = atts.getNamedItem("addVerticalSpace");
- Node styleAtt = atts.getNamedItem("style");
- Node valueAtt = atts.getNamedItem("value");
- Node indentAtt = atts.getNamedItem("indent");
- int style = IBulletParagraph.CIRCLE;
- int indent = -1;
- String text = null;
- boolean addSpace = true;
-
- if (addSpaceAtt != null) {
- String value = addSpaceAtt.getNodeValue();
- addSpace = value.equalsIgnoreCase("true");
- }
- if (styleAtt!=null) {
- String value = styleAtt.getNodeValue();
- if (value.equalsIgnoreCase("text")) {
- style = IBulletParagraph.TEXT;
- }
- else if (value.equalsIgnoreCase("image")) {
- style = IBulletParagraph.IMAGE;
- }
- }
- if (valueAtt!=null) {
- text = valueAtt.getNodeValue();
- }
- if (indentAtt!=null) {
- String value = valueAtt.getNodeValue();
- try {
- indent =Integer.parseInt(value);
- }
- catch (NumberFormatException e) {
- }
- }
-
- BulletParagraph p = new BulletParagraph(addSpace);
- p.setIndent(indent);
- p.setBulletStyle(style);
- p.setBulletText(text);
-
- processSegments(p, children, expandURLs);
- return p;
- }
-
- private void processSegments(
- Paragraph p,
- NodeList children,
- boolean expandURLs) {
- for (int i = 0; i < children.getLength(); i++) {
- Node child = children.item(i);
- IParagraphSegment segment = null;
-
- if (child.getNodeType() == Node.TEXT_NODE) {
- String value = child.getNodeValue();
-
- if (value != null && !isIgnorableWhiteSpace(value, false)) {
- p.parseRegularText(value, expandURLs, getHyperlinkSettings(), null);
- }
- } else if (child.getNodeType() == Node.ELEMENT_NODE) {
- String name = child.getNodeName();
- if (name.equalsIgnoreCase("img")) {
- segment = processImageSegment(child);
- } else if (name.equalsIgnoreCase("a")) {
- segment = processHyperlinkSegment(child, getHyperlinkSettings());
- }
- else if (name.equalsIgnoreCase("text")) {
- processTextSegment(p, expandURLs, child);
- }
- else if (name.equalsIgnoreCase("b")) {
- String text = getNodeText(child).trim();
- String fontId = JFaceResources.BANNER_FONT;
- p.parseRegularText(text, expandURLs, getHyperlinkSettings(), fontId);
- }
- }
- if (segment != null) {
- p.addSegment(segment);
- }
- }
- }
-
- private boolean isIgnorableWhiteSpace(String text, boolean ignoreSpaces) {
- for (int i=0; i<text.length(); i++) {
- char c = text.charAt(i);
- if (ignoreSpaces && c== ' ') continue;
- if (c=='\n' || c=='\r' || c=='\f') continue;
- return false;
- }
- return true;
- }
-
- private IParagraphSegment processImageSegment(Node image) {
- ImageSegment segment = new ImageSegment();
- NamedNodeMap atts = image.getAttributes();
- Node id = atts.getNamedItem("href");
- Node align = atts.getNamedItem("align");
- if (id != null) {
- String value = id.getNodeValue();
- segment.setObjectId(value);
- }
- if (align != null) {
- String value = align.getNodeValue().toLowerCase();
- if (value.equals("top"))
- segment.setVerticalAlignment(ImageSegment.TOP);
- else if (value.equals("middle"))
- segment.setVerticalAlignment(ImageSegment.MIDDLE);
- else if (value.equals("bottom"))
- segment.setVerticalAlignment(ImageSegment.BOTTOM);
- }
- return segment;
- }
-
- private String getNodeText(Node node) {
- NodeList children = node.getChildNodes();
- String text = "";
- for (int i = 0; i < children.getLength(); i++) {
- Node child = children.item(i);
- if (child.getNodeType() == Node.TEXT_NODE) {
- text += child.getNodeValue();
- }
- }
- return text;
- }
-
- private IParagraphSegment processHyperlinkSegment(
- Node link,
- HyperlinkSettings settings) {
- String text = getNodeText(link);
- HyperlinkSegment segment = new HyperlinkSegment(text, settings, null);
- NamedNodeMap atts = link.getAttributes();
- Node href = atts.getNamedItem("href");
- if (href != null) {
- String value = href.getNodeValue();
- segment.setActionId(value);
- }
- return segment;
- }
-
- private void processTextSegment(Paragraph p, boolean expandURLs, Node textNode) {
- String text = getNodeText(textNode).trim();
-
- NamedNodeMap atts = textNode.getAttributes();
- Node font = atts.getNamedItem("font");
- String fontId = null;
- if (font != null) {
- fontId = font.getNodeValue();
- }
- p.parseRegularText(text, expandURLs, getHyperlinkSettings(), fontId);
- }
-
- public void parseRegularText(String regularText, boolean convertURLs)
- throws CoreException {
- reset();
-
- Paragraph p = new Paragraph(true);
- paragraphs.add(p);
- int pstart = 0;
-
- for (int i = 0; i < regularText.length(); i++) {
- char c = regularText.charAt(i);
- if (p == null) {
- p = new Paragraph(true);
- paragraphs.add(p);
- }
- if (c == '\n') {
- String text = regularText.substring(pstart, i);
- pstart = i + 1;
- p.parseRegularText(text, convertURLs, getHyperlinkSettings(), null);
- p = null;
- }
- }
- if (p != null) {
- // no new line
- String text = regularText.substring(pstart);
- p.parseRegularText(text, convertURLs, getHyperlinkSettings(), null);
- }
- }
-
- public HyperlinkSettings getHyperlinkSettings() {
- if (hyperlinkSettings == null) {
- hyperlinkSettings = new LocalHyperlinkSettings();
- }
- return hyperlinkSettings;
- }
-
- public void setHyperlinkSettings(HyperlinkSettings settings) {
- this.hyperlinkSettings = settings;
- }
-
- public void setURLListener(IHyperlinkListener urlListener) {
- this.urlListener = urlListener;
- }
-
- private void reset() {
- if (paragraphs == null)
- paragraphs = new Vector();
- paragraphs.clear();
- selectedLinkIndex = -1;
- hyperlinks = null;
- }
-
- IHyperlinkSegment[] getHyperlinks() {
- if (hyperlinks != null || paragraphs == null)
- return hyperlinks;
- Vector result = new Vector();
- for (int i = 0; i < paragraphs.size(); i++) {
- IParagraph p = (IParagraph) paragraphs.get(i);
- IParagraphSegment[] segments = p.getSegments();
- for (int j = 0; j < segments.length; j++) {
- if (segments[j] instanceof IHyperlinkSegment)
- result.add(segments[j]);
- }
- }
- hyperlinks =
- (IHyperlinkSegment[]) result.toArray(new IHyperlinkSegment[result.size()]);
- return hyperlinks;
- }
-
- public IHyperlinkSegment findHyperlinkAt(int x, int y) {
- IHyperlinkSegment[] links = getHyperlinks();
- for (int i = 0; i < links.length; i++) {
- if (links[i].contains(x, y))
- return links[i];
- }
- return null;
- }
- public ITextSegment findSegmentAt(int x, int y) {
- for (int i=0; i<paragraphs.size(); i++) {
- IParagraph p = (IParagraph)paragraphs.get(i);
- ITextSegment segment = p.findSegmentAt(x, y);
- if (segment!=null) return segment;
- }
- return null;
- }
-
- public IHyperlinkSegment getSelectedLink() {
- if (selectedLinkIndex == -1)
- return null;
- return hyperlinks[selectedLinkIndex];
- }
-
- public boolean traverseLinks(boolean next) {
- IHyperlinkSegment[] links = getHyperlinks();
- if (links == null)
- return false;
- int size = links.length;
- if (next) {
- selectedLinkIndex++;
- } else
- selectedLinkIndex--;
-
- if (selectedLinkIndex < 0 || selectedLinkIndex > size - 1) {
- selectedLinkIndex = -1;
- }
- return selectedLinkIndex != -1;
- }
-
- public void selectLink(IHyperlinkSegment link) {
- if (link==null) selectedLinkIndex = -1;
- else {
- IHyperlinkSegment[] links = getHyperlinks();
- selectedLinkIndex = -1;
- if (links==null) return;
- for (int i=0; i<links.length; i++) {
- if (links[i].equals(link)) {
- selectedLinkIndex = i;
- break;
- }
- }
- }
- }
-
- public boolean hasFocusSegments() {
- IHyperlinkSegment [] links = getHyperlinks();
- if (links.length>0) return true;
- return false;
- }
-
- public void dispose() {
- if (hyperlinkSettings instanceof LocalHyperlinkSettings)
- hyperlinkSettings.dispose();
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/TextSegment.java b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/TextSegment.java
deleted file mode 100644
index 0d4ef31..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/engine/TextSegment.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.ui.forms.internal.engine;
-
-import org.eclipse.swt.graphics.*;
-import org.eclipse.jface.resource.JFaceResources;
-import java.util.Hashtable;
-import org.eclipse.swt.SWT;
-import java.text.BreakIterator;
-import java.util.Vector;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * @version 1.0
- * @author
- */
-public class TextSegment extends ParagraphSegment implements ITextSegment {
- private Color color;
- private String fontId;
- private String text;
- protected boolean underline;
- private boolean wrapAllowed = true;
- private Vector areaRectangles = new Vector();
-
- public TextSegment(String text, String fontId) {
- this.text = cleanup(text);
- this.fontId = fontId;
- }
-
- private String cleanup(String text) {
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < text.length(); i++) {
- char c = text.charAt(i);
- if (c == '\n' || c == '\r' || c=='\f') {
- if (i > 0)
- buf.append(' ');
- } else
- buf.append(c);
- }
- return buf.toString();
- }
-
- public void setWordWrapAllowed(boolean value) {
- wrapAllowed = value;
- }
-
- public boolean isWordWrapAllowed() {
- return wrapAllowed;
- }
-
- public boolean isSelectable() {
- return false;
- }
-
- public Color getColor() {
- return color;
- }
-
- public Font getFont() {
- if (fontId == null)
- return JFaceResources.getDefaultFont();
- else
- return JFaceResources.getFontRegistry().get(fontId);
- }
-
- public String getText() {
- return text;
- }
-
- void setText(String text) {
- this.text = cleanup(text);
- }
-
- void setColor(Color color) {
- this.color = color;
- }
-
- void setFontId(String fontId) {
- this.fontId = fontId;
- }
-
- public boolean contains(int x, int y) {
- for (int i = 0; i < areaRectangles.size(); i++) {
- Rectangle ar = (Rectangle) areaRectangles.get(i);
- if (ar.contains(x, y))
- return true;
- }
- return false;
- }
-
- public void advanceLocator(
- GC gc,
- int wHint,
- Locator locator,
- Hashtable objectTable) {
- Font oldFont = null;
- if (fontId != null) {
- oldFont = gc.getFont();
- gc.setFont(getFont());
- }
- FontMetrics fm = gc.getFontMetrics();
- int lineHeight = fm.getHeight();
-
- if (wHint == SWT.DEFAULT || !wrapAllowed) {
- Point extent = gc.textExtent(text);
-
- if (locator.x + extent.x > wHint) {
- // new line
- locator.x = isSelectable()?locator.indent+1:locator.indent;
- locator.y += locator.rowHeight;
- locator.rowHeight = 0;
- }
- int width = extent.x;
- if (isSelectable()) width+=2;
- locator.x += width;
- locator.width = width;
- locator.height = extent.y;
- locator.rowHeight = Math.max(locator.rowHeight, extent.y);
- return;
- }
-
- BreakIterator wb = BreakIterator.getLineInstance();
- wb.setText(text);
-
- int saved = 0;
- int last = 0;
-
- int width = 0;
-
- Point lastExtent = null;
-
- for (int loc = wb.first(); loc != BreakIterator.DONE; loc = wb.next()) {
- String word = text.substring(saved, loc);
- Point extent = gc.textExtent(word);
-
- if (locator.x + extent.x > wHint) {
- // overflow
- String savedWord = text.substring(saved, last);
- if (lastExtent==null)
- lastExtent = gc.textExtent(savedWord);
- int lineWidth = locator.x + lastExtent.x;
- if (isSelectable()) lineWidth+=2;
-
- saved = last;
- locator.rowHeight = Math.max(locator.rowHeight, lastExtent.y);
- locator.x = isSelectable()?locator.indent+1:locator.indent;
- locator.y += locator.rowHeight;
- locator.rowHeight = 0;
- width = Math.max(width, lineWidth);
- }
- last = loc;
- lastExtent = extent;
- }
- String lastString = text.substring(saved, last);
- Point extent = gc.textExtent(lastString);
- int lineWidth = extent.x;
- if (isSelectable()) lineWidth += 2;
- locator.x += lineWidth;
- locator.width = width;
- locator.height = lineHeight;
- locator.rowHeight = Math.max(locator.rowHeight, extent.y);
- if (oldFont != null) {
- gc.setFont(oldFont);
- }
- }
-
- public void paint(
- GC gc,
- int width,
- Locator locator,
- Hashtable objectTable,
- boolean selected) {
- Font oldFont = null;
- Color oldColor = null;
-
- areaRectangles.clear();
-
- if (fontId != null) {
- oldFont = gc.getFont();
- gc.setFont(getFont());
- }
- if (color != null) {
- oldColor = gc.getForeground();
- gc.setForeground(color);
- }
- FontMetrics fm = gc.getFontMetrics();
- int lineHeight = fm.getHeight();
- int descent = fm.getDescent();
-
- if (!wrapAllowed) {
- Point extent = gc.textExtent(text);
- int ewidth = extent.x;
- if (isSelectable()) ewidth += 2;
-
- if (locator.x + ewidth > width) {
- // new line
- locator.resetCaret();
- if (isSelectable()) locator.x += 1;
- locator.y += locator.rowHeight;
- locator.rowHeight = 0;
- }
- gc.drawString(text, locator.x, locator.y);
- if (underline) {
- int lineY = locator.y + lineHeight - descent + 1;
- gc.drawLine(locator.x, lineY, locator.x + extent.x, lineY);
- }
- Rectangle br =
- new Rectangle(locator.x - 1, locator.y, extent.x + 2, lineHeight - descent + 3);
- areaRectangles.add(br);
- if (selected) {
- if (color != null)
- gc.setForeground(oldColor);
- gc.drawFocus(br.x, br.y, br.width, br.height);
- }
-
- locator.x += ewidth;
- locator.width = ewidth;
- locator.height = lineHeight;
- locator.rowHeight = Math.max(locator.rowHeight, extent.y);
- if (oldFont != null) {
- gc.setFont(oldFont);
- }
- if (oldColor != null) {
- gc.setForeground(oldColor);
- }
- return;
- }
-
- BreakIterator wb = BreakIterator.getLineInstance();
- wb.setText(text);
-
- int saved = 0;
- int last = 0;
-
- for (int loc = wb.first(); loc != BreakIterator.DONE; loc = wb.next()) {
- if (loc == 0)
- continue;
- String word = text.substring(saved, loc);
- Point extent = gc.textExtent(word);
- int ewidth = extent.x;
- if (isSelectable()) ewidth += 2;
-
- if (locator.x + ewidth > width) {
- // overflow
- String prevLine = text.substring(saved, last);
- gc.drawString(prevLine, locator.x, locator.y, true);
- Point prevExtent = gc.textExtent(prevLine);
- int prevWidth = prevExtent.x;
- if (isSelectable()) prevWidth += 2;
-
- if (underline) {
- int lineY = locator.y + lineHeight - descent + 1;
- gc.drawLine(locator.x, lineY, locator.x + prevWidth, lineY);
- }
- Rectangle br =
- new Rectangle(
- locator.x - 1,
- locator.y,
- prevExtent.x + 2,
- lineHeight - descent + 3);
- if (selected) {
- if (color != null)
- gc.setForeground(oldColor);
- gc.drawFocus(br.x, br.y, br.width, br.height);
- if (color != null)
- gc.setForeground(color);
- }
- areaRectangles.add(br);
- locator.rowHeight = Math.max(locator.rowHeight, prevExtent.y);
- locator.resetCaret();
- if (isSelectable()) locator.x +=1;
- locator.y += locator.rowHeight;
- locator.rowHeight = 0;
- saved = last;
- }
- last = loc;
- }
- // paint the last line
- String lastLine = text.substring(saved, last);
- gc.drawString(lastLine, locator.x, locator.y, true);
- Point lastExtent = gc.textExtent(lastLine);
- int lastWidth = lastExtent.x;
- if (isSelectable()) lastWidth += 2;
- Rectangle br =
- new Rectangle(
- locator.x - 1,
- locator.y,
- lastExtent.x + 2,
- lineHeight - descent + 3);
- areaRectangles.add(br);
- if (underline) {
- int lineY = locator.y + lineHeight - descent + 1;
- gc.drawLine(locator.x, lineY, locator.x + lastExtent.x, lineY);
- }
- if (selected) {
- if (color != null)
- gc.setForeground(oldColor);
- gc.drawFocus(br.x, br.y, br.width, br.height);
- }
- locator.x += lastWidth;
- locator.rowHeight = Math.max(locator.rowHeight, lastExtent.y);
- if (oldFont != null) {
- gc.setFont(oldFont);
- }
- if (oldColor != null) {
- gc.setForeground(oldColor);
- }
- }
-
- public void paintFocus(GC gc, Color bg, Color fg, boolean selected) {
- if (areaRectangles==null) return;
- for (int i=0; i<areaRectangles.size(); i++) {
- Rectangle br = (Rectangle)areaRectangles.get(i);
- if (selected) {
- gc.setBackground(bg);
- gc.setForeground(fg);
- gc.drawFocus(br.x, br.y, br.width, br.height);
- }
- else {
- gc.setForeground(bg);
- gc.drawRectangle(br.x, br.y, br.width-1, br.height-1);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/index.xml b/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/index.xml
deleted file mode 100644
index 3d04923..0000000
--- a/update/org.eclipse.update.ui.forms/src/org/eclipse/update/ui/forms/internal/index.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<form>
-<p>
-To check for updates for features you have installed,
-go to the <a href="action1">My Eclipse</a> and select
-<b>Available Updates</b> folder. <b>Search page</b> will
-be shown allowing you to initiate and customize the search.
-</p>
-<li style="text" value="1.">To check for updates for features you have installed,
-go to the <a href="action1">My Eclipse</a> and select
-<b>Available Updates</b> folder. <b>Search page</b> will
-be shown allowing you to initiate and customize the search.</li>
-<li style="text" value="2.">This is the item number 2.</li>
-<li style="text" value="3.">This is the item number 3.</li>
-</form>
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.win32/.classpath b/update/org.eclipse.update.ui.win32/.classpath
deleted file mode 100644
index b7f3dc9..0000000
--- a/update/org.eclipse.update.ui.win32/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/"/>
- <classpathentry kind="src" path="/org.eclipse.core.resources"/>
- <classpathentry kind="src" path="/org.eclipse.ui"/>
- <classpathentry kind="src" path="/org.eclipse.update.ui"/>
- <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
- <classpathentry kind="src" path="/org.eclipse.core.boot"/>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/update/org.eclipse.update.ui.win32/.cvsignore b/update/org.eclipse.update.ui.win32/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/update/org.eclipse.update.ui.win32/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/update/org.eclipse.update.ui.win32/.project b/update/org.eclipse.update.ui.win32/.project
deleted file mode 100644
index 8374903..0000000
--- a/update/org.eclipse.update.ui.win32/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.update.ui.win32</name>
- <comment></comment>
- <projects>
- <project>org.eclipse.core.boot</project>
- <project>org.eclipse.core.resources</project>
- <project>org.eclipse.core.runtime</project>
- <project>org.eclipse.ui</project>
- <project>org.eclipse.update.ui</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.team.cvs.core.cvsnature</nature>
- </natures>
-</projectDescription>
diff --git a/update/org.eclipse.update.ui.win32/about.html b/update/org.eclipse.update.ui.win32/about.html
deleted file mode 100644
index 441774f..0000000
--- a/update/org.eclipse.update.ui.win32/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>11th December, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.win32/build.properties b/update/org.eclipse.update.ui.win32/build.properties
deleted file mode 100644
index 61d763a..0000000
--- a/update/org.eclipse.update.ui.win32/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-bin.includes = fragment.properties,\
- icons/,\
- *.jar,\
- fragment.xml,\
- about.html
-source.updateui32.jar = src/
diff --git a/update/org.eclipse.update.ui.win32/fragment.properties b/update/org.eclipse.update.ui.win32/fragment.properties
deleted file mode 100644
index 49285f7..0000000
--- a/update/org.eclipse.update.ui.win32/fragment.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-fragmentName = Install/Update UI Win32 Fragment
-views.webBrowser.label = External Preview
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.win32/fragment.xml b/update/org.eclipse.update.ui.win32/fragment.xml
deleted file mode 100644
index c2353c0..0000000
--- a/update/org.eclipse.update.ui.win32/fragment.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<fragment
- id="org.eclipse.update.ui.win32"
- name="%fragmentName"
- version="2.0.0"
- provider-name="International Business Machine Corp."
- plugin-id="org.eclipse.update.ui"
- plugin-version="2.0.0"
- match="compatible">
-
- <runtime>
- <library name="updateui32.jar">
- <export name="*"/>
- </library>
- </runtime>
-
- <requires>
- <import plugin="org.eclipse.core.resources"/>
- <import plugin="org.eclipse.ui"/>
- </requires>
-
-
- <extension
- point="org.eclipse.ui.views">
- <view
- name="%views.webBrowser.label"
- icon="icons/full/cview16/browser.gif"
- category="org.eclipse.update.ui"
- class="org.eclipse.update.internal.ui.win32.views.WebBrowserView"
- id="org.eclipse.update.ui.WebBrowser">
- </view>
- </extension>
-</fragment>
diff --git a/update/org.eclipse.update.ui.win32/icons/full/cview16/browser.gif b/update/org.eclipse.update.ui.win32/icons/full/cview16/browser.gif
deleted file mode 100644
index fd70277..0000000
--- a/update/org.eclipse.update.ui.win32/icons/full/cview16/browser.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui.win32/icons/full/eview16/browser.gif b/update/org.eclipse.update.ui.win32/icons/full/eview16/browser.gif
deleted file mode 100644
index 33935b1..0000000
--- a/update/org.eclipse.update.ui.win32/icons/full/eview16/browser.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/BrowserControlSite.java b/update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/BrowserControlSite.java
deleted file mode 100644
index 5552250..0000000
--- a/update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/BrowserControlSite.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package org.eclipse.update.internal.ui.win32.views;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.ole.win32.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.internal.win32.OS;
-import org.eclipse.update.internal.ui.*;
-
-import java.net.URL;
-import org.eclipse.core.runtime.Platform;
-import java.io.IOException;
-import java.util.*;
-import org.eclipse.ui.texteditor.*;
-import org.eclipse.jface.action.IStatusLineManager;
-
-/**
- * Needed for the OLE implementation
- */
-public class BrowserControlSite extends OleControlSite {
-
- protected boolean beenBuilt = false;
- protected boolean startedDownload = false;
- // Web Browser
- private WebBrowser browser;
- private String presentationURL;
- private IStatusLineManager statusLineManager;
- private int workSoFar = 0;
- private int prevMax = 0;
-
- public void setStatusLineManager(IStatusLineManager manager) {
- this.statusLineManager = manager;
- }
-
- void setBrowser(WebBrowser browser) {
- this.browser = browser;
- }
-
- public String getPresentationURL() {
- return presentationURL;
- }
-
- /**
- * BrowserControlSite constructor
- */
- public BrowserControlSite(Composite parent, int style, String progId) {
- super(parent, style, progId);
-
- addEventListener(WebBrowser.DownloadBegin, new OleListener() {
- public void handleEvent(OleEvent event) {
- startedDownload = true;
- //webProgress.setSelection(0);
- prevMax = -1;
- }
- });
-
- addEventListener(WebBrowser.DownloadComplete, new OleListener() {
- public void handleEvent(OleEvent event) {
- startedDownload = false;
- //webProgress.setSelection(0);
- if (statusLineManager != null)
- statusLineManager.getProgressMonitor().done();
- presentationURL = browser.getLocationURL();
- }
- });
-
- addEventListener(WebBrowser.BeforeNavigate2, new OleListener() {
- public void handleEvent(OleEvent event) {
- Variant urlVar = event.arguments[1];
- String strUrl = urlVar.getString();
- }
- });
-
- // Respond to ProgressChange events by updating the Progress bar
- addEventListener(WebBrowser.ProgressChange, new OleListener() {
- public void handleEvent(OleEvent event) {
- if (!startedDownload) {
- return;
- }
-
- Variant progress = event.arguments[0];
- Variant maxProgress = event.arguments[1];
-
- if (progress == null || maxProgress == null || progress.getInt() == -1) {
- return;
- }
- /*
- if (maxProgress.getInt()!=100)
- webProgress.setMaximum(maxProgress.getInt());
- */
- if (prevMax != maxProgress.getInt()) {
- statusLineManager.getProgressMonitor().beginTask("", maxProgress.getInt());
- prevMax = maxProgress.getInt();
- }
- //webProgress.setSelection(progress.getInt());
- int newValue = progress.getInt();
- int worked = newValue - workSoFar;
- workSoFar = newValue;
- if (statusLineManager != null)
- statusLineManager.getProgressMonitor().worked(worked);
- }
- });
-
- addEventListener(WebBrowser.StatusTextChange, new OleListener() {
- public void handleEvent(OleEvent event) {
- Variant newText = event.arguments[0];
- String msg = newText.getString();
-
- if (msg != null) {
- if (statusLineManager != null)
- statusLineManager.setMessage(msg);
- } else {
- if (statusLineManager != null)
- statusLineManager.setMessage("");
- }
- }
- });
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/WebBrowser.java b/update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/WebBrowser.java
deleted file mode 100644
index e4b0e2f..0000000
--- a/update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/WebBrowser.java
+++ /dev/null
@@ -1,453 +0,0 @@
-package org.eclipse.update.internal.ui.win32.views;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.ole.win32.*;
-import org.eclipse.swt.widgets.*;
-
-/**
- * ActiveX based web browser control.
- */
-public class WebBrowser implements OleListener {
- // Generated from typelib filename: shdocvw.dll
-
- // Constants for WebBrowser CommandStateChange
-
- public static final short CSC_UPDATECOMMANDS = -1;
- public static final short CSC_NAVIGATEFORWARD = 1;
- public static final short CSC_NAVIGATEBACK = 2;
-
- // Web Browser Control Events
- public static final int BeforeNavigate = 100;
- // Fired when a new hyperlink is being navigated to.
- public static final int NavigateComplete = 101;
- // Fired when the document being navigated to becomes visible and enters the navigation stack.
- public static final int StatusTextChange = 102;
- // Statusbar text changed.
- public static final int ProgressChange = 108;
- // Fired when download progress is updated.
- public static final int DownloadComplete = 104;
- // Download of page complete.
- public static final int CommandStateChange = 105;
- // The enabled state of a command changed
- public static final int DownloadBegin = 106;
- // Download of a page started.
- public static final int NewWindow = 107;
- // Fired when a new window should be created.
- public static final int TitleChange = 113;
- // Document title changed.
- public static final int FrameBeforeNavigate = 200;
- // Fired when a new hyperlink is being navigated to in a frame.
- public static final int FrameNavigateComplete = 201;
- // Fired when a new hyperlink is being navigated to in a frame.
- public static final int FrameNewWindow = 204;
- // Fired when a new window should be created.
- public static final int Quit = 103;
- // Fired when application is quiting.
- public static final int WindowMove = 109;
- // Fired when window has been moved.
- public static final int WindowResize = 110;
- // Fired when window has been sized.
- public static final int WindowActivate = 111;
- // Fired when window has been activated.
- public static final int PropertyChange = 112;
- // Fired when the PutProperty method has been called.
- public static final int BeforeNavigate2 = 250;
- // Fired when a new hyperlink is being navigated to.
- public static final int NewWindow2 = 251;
- // Fired when a new window should be created.
- public static final int DocumentComplete = 259;
- // Fired when the document being navigated to reaches ReadyState_Complete.
-
- // Web Browser properties
- public static final int DISPID_READYSTATE = -525;
-
- // Web Browser state
- public static final int READYSTATE_UNINITIALIZED = 0;
- public static final int READYSTATE_LOADING = 1;
- public static final int READYSTATE_LOADED = 2;
- public static final int READYSTATE_INTERACTIVE = 3;
- public static final int READYSTATE_COMPLETE = 4;
-
- // Keep track of the whether it is possible to navigate in the forward and backward directions
- private boolean backwardEnabled;
- private boolean forwardEnabled;
-
- // The automation object and Control associated with the main OLE control
- private OleAutomation oleObject;
- private BrowserControlSite controlSite;
-
- // The OLE frame (there should only be one)
- private OleFrame controlFrame;
-
- //private NestedPrintDelegate aPrintDelegate = null;
-
- /**
- */
- public WebBrowser(Composite parent) {
-
- // Create the OLE frame.
- controlFrame = createOleFrame(parent);
-
- // Creates the IE5 OLE Control
- // The constructor also registers all the necessary OLE listeners.
- // for now, only catch the execption if creating and activating the
- // control fails. No checking if the correct version of the OLE control
- // is installed.
- try {
- controlSite = new BrowserControlSite(controlFrame, SWT.NONE, "Shell.Explorer");
- controlSite.setBrowser(this);
- oleObject = new OleAutomation(controlSite);
-
- backwardEnabled = false;
- forwardEnabled = false;
-
- // Listen for changes to the Command States
- controlSite.addEventListener(CommandStateChange, this);
-
- // initialize control
- controlSite.doVerb(OLE.OLEIVERB_SHOW);
-
- // create print Delegate (has to be done early, here!).
- //aPrintDelegate = new NestedPrintDelegate(this, oleObject, controlSite);
-
- } catch (Exception e) {
- // Display and log error, then delegate to parent UI class.
- // The actual translated message goes all the way back to the calling
- // UI class, for display.
- //FIXME log instead
- System.out.println(e);
- //String msg = WorkbenchResources.getString("WE001");
- //Util.displayErrorDialog(msg, e);
- //throw new HelpWorkbenchException(msg);
- }
-
- }
- /**
- */
- public int back() {
-
- if (!backwardEnabled)
- return OLE.S_FALSE;
- forwardEnabled = true;
-
- // dispid=100, type=METHOD, name="GoBack"
-
- // You can hard code the DISPID if you know it before hand - this is of course the fastest way
- //int dispIdMember = 100;
-
- // Alternatively, you can look up the DISPID dynamically
- int[] rgdispid = oleObject.getIDsOfNames(new String[] { "GoBack" });
- int dispIdMember = rgdispid[0];
-
- Variant pVarResult = oleObject.invoke(dispIdMember);
-
- if (pVarResult == null)
- return 0;
- return pVarResult.getInt();
- }
- /**
- */
- public int copy() {
- int result = controlSite.queryStatus(OLE.OLECMDID_COPY);
- if ((result & OLE.OLECMDF_ENABLED) == OLE.OLECMDF_ENABLED) {
- result =
- controlSite.exec(OLE.OLECMDID_COPY, OLE.OLECMDEXECOPT_DODEFAULT, null, null);
- }
- return result;
- }
- protected OleFrame createOleFrame(Composite parent) {
- if (controlFrame == null) {
- controlFrame = new OleFrame(parent, SWT.NONE);
- controlFrame.setLayoutData(
- new GridData(
- GridData.GRAB_HORIZONTAL
- | GridData.GRAB_VERTICAL
- | GridData.HORIZONTAL_ALIGN_FILL
- | GridData.VERTICAL_ALIGN_FILL));
- }
- return controlFrame;
-
- }
- /**
- * clean up
- */
- public void dispose() {
- //** clean up
- if (oleObject != null)
- oleObject.dispose();
- oleObject = null;
-
- if (controlSite != null)
- controlSite.dispose();
- controlSite = null;
-
- if (controlFrame != null)
- controlFrame.dispose();
- controlFrame = null;
-
- }
- /**
- */
- public int forward() {
- if (!forwardEnabled)
- return OLE.S_FALSE;
- backwardEnabled = true;
- // dispid=101, type=METHOD, name="GoForward"
-
- // You can hard code the DISPID if you know it before hand - this is of course the fastest way
- //int dispIdMember = 101;
-
- // Alternatively, you can look up the DISPID dynamically
- int[] rgdispid = oleObject.getIDsOfNames(new String[] { "GoForward" });
- int dispIdMember = rgdispid[0];
-
- Variant pVarResult = oleObject.invoke(dispIdMember);
- if (pVarResult == null)
- return 0;
- return pVarResult.getInt();
- }
- public Control getControl() {
- return controlFrame;
- }
- /**
- */
- public String getLocationName() {
- // dispid=210, type=PROPGET, name="LocationName"
-
- // You can hard code the DISPID if you know it before hand - this is of course the fastest way
- //int dispIdMember = 210;
-
- // Alternatively, you can look up the DISPID dynamically
- int[] rgdispid = oleObject.getIDsOfNames(new String[] { "LocationName" });
- int dispIdMember = rgdispid[0];
- Variant pVarResult = oleObject.getProperty(dispIdMember);
- if (pVarResult == null)
- return null;
- return pVarResult.getString();
- }
- /**
- */
- public String getLocationURL() {
- // dispid=211, type=PROPGET, name="LocationURL"
- // You can hard code the DISPID if you know it before hand - this is of course the fastest way
- //int dispIdMember = 211;
-
- // Alternatively, you can look up the DISPID dynamically
- int[] rgdispid = oleObject.getIDsOfNames(new String[] { "LocationURL" });
- int dispIdMember = rgdispid[0];
-
- Variant pVarResult = oleObject.getProperty(dispIdMember);
- if (pVarResult == null)
- return null;
- return pVarResult.getString();
- }
- protected OleFrame getOleFrame() {
- return controlFrame;
-
- }
-
- public BrowserControlSite getControlSite() {
- return controlSite;
- }
- /**
- */
- public int getReadyState() {
- // dispid=4294966771, type=PROPGET, name="ReadyState"
- // READYSTATE_UNINITIALIZED = 0;
- // READYSTATE_LOADING = 1;
- // READYSTATE_LOADED = 2;
- // READYSTATE_INTERACTIVE = 3;
- // READYSTATE_COMPLETE = 4;
-
- // You can hard code the DISPID if you know it before hand - this is of course the fastest way
- //int dispIdMember = -525;
-
- // Alternatively, you can look up the DISPID dynamically
- int[] rgdispid = oleObject.getIDsOfNames(new String[] { "ReadyState" });
- int dispIdMember = rgdispid[0];
-
- Variant pVarResult = oleObject.getProperty(dispIdMember);
- if (pVarResult == null)
- return -1;
- return pVarResult.getInt();
- }
- /**
- */
- public void handleEvent(OleEvent event) {
- switch (event.type) {
- case (CommandStateChange) :
- int command = 0;
- boolean enabled = false;
-
- Variant varResult = event.arguments[0];
- if (varResult != null) {
- command = varResult.getInt();
- }
-
- varResult = event.arguments[1];
- if (varResult != null) {
- enabled = varResult.getBoolean();
- }
-
- if (command == CSC_NAVIGATEBACK)
- backwardEnabled = enabled;
- if (command == CSC_NAVIGATEFORWARD)
- forwardEnabled = enabled;
-
- return;
-
- case (DocumentComplete) :
- varResult = event.arguments[0];
- return;
- }
- //throw new OleError(OLE.ERROR_NOT_IMPLEMENTED);
- }
- /**
- */
- public int home() {
- // dispid=102, type=METHOD, name="GoHome"
-
- // You can hard code the DISPID if you know it before hand - this is of course the fastest way
- //int dispIdMember = 102;
-
- // Alternatively, you can look up the DISPID dynamically
- int[] rgdispid = oleObject.getIDsOfNames(new String[] { "GoHome" });
- int dispIdMember = rgdispid[0];
-
- Variant pVarResult = oleObject.invoke(dispIdMember);
- if (pVarResult == null)
- return 0;
- return pVarResult.getInt();
- }
- /**
- */
- public int navigate(String url) {
- return navigate(oleObject, url);
- }
- /**
- */
- protected int navigate(OleAutomation aOleAutomation, String url) {
- //if (Logger.DEBUG)
- //Logger.logDebugMessage("WebBrowser", "navigate to: " + url);
- // dispid=104, type=METHOD, name="Navigate"
-
- // You can hard code the DISPID if you know it before hand - this is of course the fastest way
- //int dispIdMember = 104;
-
- // Alternatively, you can look up the DISPID dynamically
- // Here we are looking up the id of the argument as well
- int[] rgdispid =
- aOleAutomation.getIDsOfNames(new String[] { "Navigate", "URL" });
- int dispIdMember = rgdispid[0];
-
- Variant[] rgvarg = new Variant[1];
- rgvarg[0] = new Variant(url);
- int[] rgdispidNamedArgs = new int[1];
- rgdispidNamedArgs[0] = rgdispid[1]; // identifier of argument
- Variant pVarResult =
- aOleAutomation.invoke(dispIdMember, rgvarg, rgdispidNamedArgs);
- if (pVarResult == null)
- return 0;
- return pVarResult.getInt();
-
- }
- /**
- */
- public int print() {
- return print(controlSite, true);
- }
- /**
- */
- protected int print(
- BrowserControlSite aControlSite,
- boolean promptuser) {
-
- int result = aControlSite.queryStatus(OLE.OLECMDID_PRINT);
-
- if ((result & OLE.OLECMDF_ENABLED) == OLE.OLECMDF_ENABLED) {
- if (promptuser)
- result =
- aControlSite.exec(OLE.OLECMDID_PRINT, OLE.OLECMDEXECOPT_PROMPTUSER, null, null);
- else
- result =
- aControlSite.exec(
- OLE.OLECMDID_PRINT,
- OLE.OLECMDEXECOPT_DONTPROMPTUSER,
- null,
- null);
- }
-
- //if (Logger.DEBUG)
- //Logger.logDebugMessage("WebBrowser", "exec returns: " + Integer.toString(result));
- return result;
- }
-
- /**
- * Refresh the currently viewed page.
- */
- public void refresh() {
-
- // dispid= 4294966746, type=METHOD, name="Refresh"
-
- // You can hard code the DISPID if you know it before hand - this is of course the fastest way
- //int dispIdMember = 4294966746;
-
- // Alternatively, you can look up the DISPID dynamically
- int[] rgdispid = oleObject.getIDsOfNames(new String[] { "Refresh" });
- int dispIdMember = rgdispid[0];
-
- oleObject.invokeNoReply(dispIdMember);
- }
- /**
- */
- public int search() {
- // dispid=103, type=METHOD, name="GoSearch"
-
- // You can hard code the DISPID if you know it before hand - this is of course the fastest way
- //int dispIdMember = 103;
-
- // Alternatively, you can look up the DISPID dynamically
- int[] rgdispid = oleObject.getIDsOfNames(new String[] { "GoSearch" });
- int dispIdMember = rgdispid[0];
-
- Variant pVarResult = oleObject.invoke(dispIdMember);
- if (pVarResult == null)
- return 0;
- return pVarResult.getInt();
- }
- /**
- */
- public void stop() {
- // dispid=106, type=METHOD, name="Stop"
-
- // You can hard code the DISPID if you know it before hand - this is of course the fastest way
- //int dispIdMember = 106;
-
- // Alternatively, you can look up the DISPID dynamically
- int[] rgdispid = oleObject.getIDsOfNames(new String[] { "Stop" });
- int dispIdMember = rgdispid[0];
-
- Variant pVarResult = oleObject.invoke(dispIdMember);
- }
- /**
- * Gets the forwardEnabled
- * @return Returns a boolean
- */
- public boolean isForwardEnabled() {
- return forwardEnabled;
- }
-
- /**
- * Gets the backwardEnabled
- * @return Returns a boolean
- */
- public boolean isBackwardEnabled() {
- return backwardEnabled;
- }
-}
-
-
diff --git a/update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/WebBrowserView.java b/update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/WebBrowserView.java
deleted file mode 100644
index 972b8fc..0000000
--- a/update/org.eclipse.update.ui.win32/src/org/eclipse/update/internal/ui/win32/views/WebBrowserView.java
+++ /dev/null
@@ -1,262 +0,0 @@
-package org.eclipse.update.internal.ui.win32.views;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.boot.BootLoader;
-import org.eclipse.jface.action.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.ole.win32.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.views.IEmbeddedWebBrowser;
-
-public class WebBrowserView extends ViewPart implements IEmbeddedWebBrowser {
- // NL
- private static final String KEY_NOT_AVAILABLE =
- "WebBrowserView.notAvailable";
- private static final String KEY_ADDRESS = "WebBrowserView.address";
- private static final String KEY_STOP = "WebBrowserView.stop";
- private static final String KEY_GO = "WebBrowserView.go";
- private static final String KEY_REFRESH = "WebBrowserView.refresh";
- private static final String KEY_BACKWARD = "WebBrowserView.backward";
- private static final String KEY_FORWARD = "WebBrowserView.forward";
-
- private int ADDRESS_SIZE = 10;
- private WebBrowser browser;
- private Control control;
- private Combo addressCombo;
- private Object input;
- private ToolBarManager toolBarManager;
- private Action refreshAction;
- private Action stopAction;
- private Action goAction;
- private Action backwardAction;
- private Action forwardAction;
-
- public WebBrowserView() {
- }
-
- /**
- * @see IFormPage#createControl(Composite)
- */
- public void createPartControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- control = container;
- GridLayout layout = new GridLayout();
- layout.marginWidth = 0;
- layout.marginHeight = 0;
- layout.verticalSpacing = 0;
- container.setLayout(layout);
- if (BootLoader.getWS().equals("win32") == false) {
- Text infoText =
- new Text(container, SWT.MULTI | SWT.V_SCROLL | SWT.WRAP);
- GridData gd = new GridData(GridData.FILL_BOTH);
- infoText.setLayoutData(gd);
- infoText.setEditable(false);
- infoText.setText(
- UpdateUIPlugin.getResourceString(KEY_NOT_AVAILABLE));
- return;
- }
- Composite navContainer = new Composite(container, SWT.NONE);
- layout = new GridLayout();
- layout.numColumns = 3;
- layout.marginHeight = 1;
- navContainer.setLayout(layout);
- createNavBar(navContainer);
- navContainer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- final WebBrowser winBrowser = new WebBrowser(container);
- browser = winBrowser;
-
- Control c = browser.getControl();
- c.setLayoutData(new GridData(GridData.FILL_BOTH));
- final BrowserControlSite site = winBrowser.getControlSite();
- IStatusLineManager smng =
- getViewSite().getActionBars().getStatusLineManager();
- site.setStatusLineManager(smng);
-
- site.addEventListener(WebBrowser.DownloadComplete, new OleListener() {
- public void handleEvent(OleEvent event) {
- String url = winBrowser.getLocationURL();
- if (url != null) {
- addressCombo.setText(url);
- downloadComplete(url);
- }
- }
- });
- site.addEventListener(WebBrowser.DownloadBegin, new OleListener() {
- public void handleEvent(OleEvent event) {
- stopAction.setEnabled(true);
- refreshAction.setEnabled(false);
- }
- });
- }
-
- public void openTo(final String url) {
- addressCombo.setText(url);
- control.getDisplay().asyncExec(new Runnable() {
- public void run() {
- navigate(url);
- }
- });
- }
-
- private void downloadComplete(String url) {
- backwardAction.setEnabled(browser.isBackwardEnabled());
- forwardAction.setEnabled(browser.isForwardEnabled());
- stopAction.setEnabled(false);
- refreshAction.setEnabled(true);
- }
-
- private void createNavBar(Composite parent) {
- Label addressLabel = new Label(parent, SWT.NONE);
- addressLabel.setText(UpdateUIPlugin.getResourceString(KEY_ADDRESS));
-
- addressCombo = new Combo(parent, SWT.DROP_DOWN | SWT.BORDER);
- addressCombo.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- String text = addressCombo.getText();
- goAction.setEnabled(text.length() > 0);
- }
- });
- addressCombo.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- String text =
- addressCombo.getItem(addressCombo.getSelectionIndex());
- if (text.length() > 0)
- navigate(text);
- }
- public void widgetDefaultSelected(SelectionEvent e) {
- navigate(addressCombo.getText());
- }
- });
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- addressCombo.setLayoutData(gd);
- ToolBar toolbar = new ToolBar(parent, SWT.FLAT | SWT.HORIZONTAL);
- toolBarManager = new ToolBarManager(toolbar);
- makeActions();
- IToolBarManager localBar =
- getViewSite().getActionBars().getToolBarManager();
- localBar.add(backwardAction);
- localBar.add(forwardAction);
- }
-
- private void navigate(String url) {
- browser.navigate(url);
- String[] items = addressCombo.getItems();
- int loc = -1;
- String normURL = getNormalizedURL(url);
- for (int i = 0; i < items.length; i++) {
- String normItem = getNormalizedURL(items[i]);
- if (normURL.equals(normItem)) {
- // match
- loc = i;
- break;
- }
- }
- if (loc != -1) {
- addressCombo.remove(loc);
- }
- addressCombo.add(url, 0);
- if (addressCombo.getItemCount() > ADDRESS_SIZE) {
- addressCombo.remove(addressCombo.getItemCount() - 1);
- }
- }
-
- private void makeActions() {
- goAction = new Action() {
- public void run() {
- navigate(addressCombo.getText());
- }
- };
- goAction.setEnabled(false);
- goAction.setToolTipText(UpdateUIPlugin.getResourceString(KEY_GO));
- goAction.setImageDescriptor(UpdateUIPluginImages.DESC_GO_NAV);
- goAction.setDisabledImageDescriptor(UpdateUIPluginImages.DESC_GO_NAV_D);
- goAction.setHoverImageDescriptor(UpdateUIPluginImages.DESC_GO_NAV_H);
-
- stopAction = new Action() {
- public void run() {
- browser.stop();
- }
- };
- stopAction.setToolTipText(UpdateUIPlugin.getResourceString(KEY_STOP));
- stopAction.setImageDescriptor(UpdateUIPluginImages.DESC_STOP_NAV);
- stopAction.setDisabledImageDescriptor(
- UpdateUIPluginImages.DESC_STOP_NAV_D);
- stopAction.setHoverImageDescriptor(
- UpdateUIPluginImages.DESC_STOP_NAV_H);
- stopAction.setEnabled(false);
-
- refreshAction = new Action() {
- public void run() {
- browser.refresh();
- }
- };
- refreshAction.setToolTipText(
- UpdateUIPlugin.getResourceString(KEY_REFRESH));
- refreshAction.setImageDescriptor(UpdateUIPluginImages.DESC_REFRESH_NAV);
- refreshAction.setDisabledImageDescriptor(
- UpdateUIPluginImages.DESC_REFRESH_NAV_D);
- refreshAction.setHoverImageDescriptor(
- UpdateUIPluginImages.DESC_REFRESH_NAV_H);
- refreshAction.setEnabled(false);
-
- backwardAction = new Action() {
- public void run() {
- browser.back();
- }
- };
- backwardAction.setEnabled(false);
- backwardAction.setToolTipText(
- UpdateUIPlugin.getResourceString(KEY_BACKWARD));
- backwardAction.setImageDescriptor(
- UpdateUIPluginImages.DESC_BACKWARD_NAV);
- backwardAction.setDisabledImageDescriptor(
- UpdateUIPluginImages.DESC_BACKWARD_NAV_D);
- backwardAction.setHoverImageDescriptor(
- UpdateUIPluginImages.DESC_BACKWARD_NAV_H);
-
- forwardAction = new Action() {
- public void run() {
- browser.forward();
- }
- };
- forwardAction.setToolTipText(
- UpdateUIPlugin.getResourceString(KEY_FORWARD));
- forwardAction.setImageDescriptor(UpdateUIPluginImages.DESC_FORWARD_NAV);
- forwardAction.setDisabledImageDescriptor(
- UpdateUIPluginImages.DESC_FORWARD_NAV_D);
- forwardAction.setHoverImageDescriptor(
- UpdateUIPluginImages.DESC_FORWARD_NAV_H);
- forwardAction.setEnabled(false);
- toolBarManager.add(goAction);
- toolBarManager.add(new Separator());
- toolBarManager.add(stopAction);
- toolBarManager.add(refreshAction);
- toolBarManager.update(true);
- }
-
- private String getNormalizedURL(String url) {
- url = url.toLowerCase();
- if (url.indexOf("://") == -1) {
- url = "http://" + url;
- }
- return url;
- }
-
- public void dispose() {
- if (browser != null)
- browser.dispose();
- super.dispose();
- }
-
- public void setFocus() {
- if (control != null)
- control.setFocus();
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/.classpath b/update/org.eclipse.update.ui/.classpath
deleted file mode 100644
index 5ccf129..0000000
--- a/update/org.eclipse.update.ui/.classpath
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/"/>
- <classpathentry kind="src" path="/org.eclipse.core.runtime"/>
- <classpathentry kind="src" path="/org.eclipse.ui"/>
- <classpathentry kind="src" path="/org.eclipse.update.core"/>
- <classpathentry kind="src" path="/org.eclipse.update.ui.forms"/>
- <classpathentry kind="src" path="/org.eclipse.core.resources"/>
- <classpathentry kind="src" path="/org.apache.xerces"/>
- <classpathentry kind="src" path="/org.eclipse.core.boot"/>
- <classpathentry kind="src" path="/org.eclipse.swt"/>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/update/org.eclipse.update.ui/.cvsignore b/update/org.eclipse.update.ui/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/update/org.eclipse.update.ui/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/.project b/update/org.eclipse.update.ui/.project
deleted file mode 100644
index 0f5fa33..0000000
--- a/update/org.eclipse.update.ui/.project
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.update.ui</name>
- <comment></comment>
- <projects>
- <project>org.apache.xerces</project>
- <project>org.eclipse.core.boot</project>
- <project>org.eclipse.core.resources</project>
- <project>org.eclipse.core.runtime</project>
- <project>org.eclipse.swt</project>
- <project>org.eclipse.ui</project>
- <project>org.eclipse.update.core</project>
- <project>org.eclipse.update.ui.forms</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.team.cvs.core.cvsnature</nature>
- </natures>
-</projectDescription>
diff --git a/update/org.eclipse.update.ui/Graphics_update.html b/update/org.eclipse.update.ui/Graphics_update.html
deleted file mode 100644
index fdae1a3..0000000
--- a/update/org.eclipse.update.ui/Graphics_update.html
+++ /dev/null
@@ -1,955 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!-- saved from url=(0110)http://design.torolab.ibm.com/aim/WSWB-eclipse/1020_PDE/implementation_icons/org.eclipse.pde/Graphics_pde.html -->
-<HTML><HEAD><TITLE>graphics</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="Greg Adams" name=Author>
-<META content="Microsoft FrontPage 4.0" name=GENERATOR></HEAD>
-<BODY bgColor=white>
-<H2>org.eclipse.update.ui - Graphics Summary</H2><FONT size=-1><STRONG>Competency
-lead: </STRONG>Vlad Klicnik / TOL <BR><STRONG>Technical lead: </STRONG>Dejan
-Glozic / TOL <BR><STRONG>UCD designer: </STRONG>Julian Jones / TOL
-<BR><STRONG>UI designer: </STRONG>Andrée Proulx / TOL <BR><STRONG>ID writer:
-</STRONG>-</FONT>
-<HR width="100%" SIZE=1>
-<B><FONT size=-1>History:</FONT></B>
-<p><font size="-1">April 19, 2002 : Template Submission</font></p>
-<HR width="100%" SIZE=1>
-<!--- Start Here --->
-<TABLE cellSpacing=0 cellPadding=3 width="100%" border=0 height="3147">
-
- <TR bgColor=#bfbf7f>
- <TD colSpan=7><B><FONT size=+2>View</FONT></B></TD></TR>
- <TR bgColor=#dfdf9f>
- <TD> </TD>
- <TD><B><FONT size=-1>Item</FONT></B></TD>
- <TD><B><FONT size=-1>File Name (.gif)</FONT></B></TD>
- <TD><B><FONT size=-1>Description/Hoover Help</FONT></B></TD>
- <TD>
- <CENTER><B><FONT size=-1>Old</FONT></B> </CENTER></TD>
- <TD>
- <CENTER><B><FONT size=-1>New Full</FONT></B> </CENTER></TD>
- <TD><B><FONT size=-1>Status</FONT></B></TD></TR>
- <TR bgColor=#ffffff>
- <TD>1</TD>
- <TD>Configurations</TD>
- <TD><FONT size=-1>configs</FONT></TD>
- <TD><FONT size=-1> shows the configurations of the Eclipse-based application</FONT></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/view16/configs.gif" width=16 border=0></TD>
- <TD><IMG height=16 alt=""
- src="icons/full/cview16/configs.gif" width=16 border=0> <IMG height=16
- alt="" src="icons/full/eview16/configs.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>2</TD>
- <TD>Updates</TD>
- <TD><FONT size=-1>updates</FONT></TD>
- <TD><FONT size=-1>shows sites an Eclipse app can be updated from</FONT></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/view16/updates.gif" width=16 border=0></TD>
- <TD><IMG height=16 alt=""
- src="icons/full/cview16/updates.gif" width=16 border=0> <IMG height=16
- alt="" src="icons/full/eview16/updates.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#ffffff>
- <TD>3</TD>
- <TD>Preview</TD>
- <TD><font size="-1">preview</font></TD>
- <TD><font size="-1">shows details of the selected object</font></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/view16/preview.gif" width=16 border=0></TD>
- <TD><IMG height=16 alt=""
- src="icons/full/cview16/preview.gif" width=16 border=0> <IMG height=16
- alt="" src="icons/full/eview16/preview.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>4</TD>
- <TD>Web Browser</TD>
- <TD><font size="-1">browser</font></TD>
- <TD><font size="-1">a fully-functioning Web browser (hosts IE5 - Windows only)</font></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/view16/browser.gif" width=16 border=0></TD>
- <TD><IMG height=16 alt=""
- src="icons/full/cview16/browser.gif" width=16 border=0> <IMG height=16
- alt="" src="icons/full/eview16/browser.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#ffffff>
- <TD>5</TD>
- <TD>Update Perspective</TD>
- <TD><font size="-1">update_pers</font></TD>
- <TD><font size="-1">Represents Install/Update
- perspective in the UI</font></TD>
- <TD></TD>
- <TD><IMG height=16 alt=""
- src="icons/full/cview16/update_pers.gif" width=16 border=0> <IMG height=16
- alt="" src="icons/full/eview16/update_pers.gif" width=16
-border=0> </TD>
- <TD><FONT size=-1> </FONT></TD>
- </TR>
-
- <TR bgColor=#bfbf7f>
- <TD colSpan=7><B><FONT size=+2>Toolbar Wizard</FONT></B></TD></TR>
- <TR bgColor=#ffffff>
- <TD>1</TD>
- <TD> </TD>
- <TD><FONT size=-1> </FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1"> description</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> tool tip </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/ctool16/config_wiz.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/etool16/config_wiz.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dtool16/config_wiz.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
-
- <TR bgColor=#dfdf9f>
- <TD>2</TD>
- <TD> </TD>
- <TD><FONT size=-1></FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1"> description</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> tool tip </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/ctool16/install_wiz.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/etool16/install_wiz.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dtool16/install_wiz.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
-
- <TR bgColor=#ffffff>
- <TD>3</TD>
- <TD> </TD>
- <TD><FONT size=-1> </FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1"> description</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> tool tip </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/ctool16/new_bookmark_wiz.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/etool16/new_bookmark_wiz.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dtool16/new_bookmark_wiz.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
-
- <TR bgColor=#dfdf9f>
- <TD>4</TD>
- <TD> </TD>
- <TD><FONT size=-1> </FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1"> description</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> tool tip </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/ctool16/new_folder_wiz.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/etool16/new_folder_wiz.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dtool16/new_folder_wiz.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#ffffff>
- <TD>5</TD>
- <TD> </TD>
- <TD><FONT size=-1> </FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1"> description</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> tool tip </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/ctool16/new_search_wiz.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/etool16/new_search_wiz.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dtool16/new_search_wiz.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
-
- <TR bgColor=#dfdf9f>
- <TD>6</TD>
- <TD> </TD>
- <TD><FONT size=-1> </FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1"> description</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> tool tip </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/ctool16/uninstall_wiz.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/etool16/uninstall_wiz.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dtool16/uninstall_wiz.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#ffffff>
- <TD>7</TD>
- <TD> </TD>
- <TD><FONT size=-1> </FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1"> description</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> tool tip </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/ctool16/update_wiz.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/etool16/update_wiz.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dtool16/update_wiz.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
-
-
- <TR bgColor=#bfbf7f>
- <TD colSpan=7><B><FONT size=+2>Local Toolbar</FONT></B></TD></TR>
- <TR bgColor=#ffffff>
- <TD>1</TD>
- <TD>Go Backward</TD>
- <TD><FONT size=-1> backward_nav</FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1">A standard browser 'backward' button</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> Go Backward </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/clcl16/backward_nav.gif" width=16 border=0> <IMG
- height=16 alt=""
- src="../old.icons/full/elcl16/backward_nav.gif"
- width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/dlcl16/backward_nav.gif"
- width=16 border=0></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/clcl16/backward_nav.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/elcl16/backward_nav.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dlcl16/backward_nav.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
-
- <TR bgColor=#dfdf9f>
- <TD>2</TD>
- <TD>Go Forward</TD>
- <TD><FONT size=-1> forward_nav</FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1">A standard browser 'forward' button</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> Go Forward </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/clcl16/forward_nav.gif" width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/elcl16/forward_nav.gif" width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/dlcl16/forward_nav.gif" width=16 border=0></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/clcl16/forward_nav.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/elcl16/forward_nav.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dlcl16/forward_nav.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#ffffff>
- <TD>3</TD>
- <TD>Go</TD>
- <TD><FONT size=-1> go_nav</FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1">A standard browser button for
- navigating to a URL.</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> Go </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/clcl16/go_nav.gif" width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/elcl16/go_nav.gif" width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/dlcl16/go_nav.gif" width=16 border=0></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/clcl16/go_nav.gif" width=16 border=0> <IMG height=16
- alt="" src="icons/full/elcl16/go_nav.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/dlcl16/go_nav.gif" width=16
- border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
-
- <TR bgColor=#dfdf9f>
- <TD>4</TD>
- <TD>Go Home</TD>
- <TD><FONT size=-1> home_nav</FONT></TD>
- <TD >
- <TABLE cellSpacing=2 cellPadding=0 border=0>
-
- <TR>
- <TD vAlign=top><font size="-1">A standard browser button
- for going to the home location</font></TD>
- <TD>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> Go Home </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/clcl16/home_nav.gif" width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/elcl16/home_nav.gif" width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/dlcl16/home_nav.gif" width=16 border=0></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/clcl16/home_nav.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/elcl16/home_nav.gif" width=16
- border=0> <IMG height=16 alt="" src="icons/full/dlcl16/home_nav.gif"
- width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#ffffff>
- <TD>5</TD>
- <TD>Refresh</TD>
- <TD><FONT size=-1> refresh_nav</FONT></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1">Refresh the contents of the view</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> Refresh </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/clcl16/refresh_nav.gif" width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/elcl16/refresh_nav.gif" width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/dlcl16/refresh_nav.gif" width=16 border=0></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/clcl16/refresh_nav.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/elcl16/refresh_nav.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dlcl16/refresh_nav.gif" width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#dfdf9f>
- <TD>6</TD>
- <TD>Stop</TD>
- <TD><font size="-1">stop_nav</font></TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1">A standard browser button for stopping
- the navigation in progress</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> Stop </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/clcl16/stop_nav.gif" width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/elcl16/stop_nav.gif" width=16 border=0> <IMG height=16 alt=""
- src="../old.icons/full/dlcl16/stop_nav.gif" width=16 border=0></TD>
- <TD bgColor=#cccccc><IMG height=16 alt=""
- src="icons/full/clcl16/stop_nav.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/elcl16/stop_nav.gif" width=16
- border=0> <IMG height=16 alt="" src="icons/full/dlcl16/stop_nav.gif"
- width=16 border=0> </TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR>
- <TD>7</TD>
- <TD>Show Unconfigured Features</TD>
- <TD>show_unconf</TD>
- <TD>
- <TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
-
- <TR>
- <TD vAlign=top><font size="-1">A toggle button that allows
- unconfigured features to show in the view</font></TD>
- <TD vAlign=center align=right>
- <TABLE>
-
- <TR>
- <TD
- style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid"
- align=middle bgColor=#ffffe1><FONT
- size=-2> Show Unconfigured Features </FONT></TD></TR></TABLE></TD></TR></TABLE></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/clcl16/show_unconf.gif" width=16 border=0> </TD>
- <TD BGCOLOR=#cccccc><IMG height=16 alt=""
- src="icons/full/clcl16/show_unconf.gif" width=16 border=0> <IMG
- height=16 alt="" src="icons/full/elcl16/show_unconf.gif" width=16
- border=0> <IMG height=16 alt=""
- src="icons/full/dlcl16/show_unconf.gif" width=16 border=0></TD>
- <TD></TD></TR>
-
- <TR bgColor=#bfbf7f>
- <TD colSpan=7><B><FONT size=+2>Model Object</FONT></B></TD></TR>
- <TR bgColor=#ffffff>
- <TD>1</TD>
- <TD> Application Configuration</TD>
- <TD><FONT size=-1> app_obj</FONT></TD>
- <TD><font size="-1">the current configuration used to load the current
- application</font></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/app_obj.gif" width=16
- align=left border=0></TD>
- <TD><IMG height=16 alt="" src="icons/full/obj16/app_obj.gif" width=16 border=0></TD>
- <TD><FONT size=-1> </FONT></TD></TR>
-
- <TR bgColor=#dfdfb>
- <TD>2</TD>
- <TD>My Computer</TD>
- <TD><FONT size=-1> computer_obj</FONT></TD>
- <TD><font size="-1">the file system root</font></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/computer_obj.gif" width=16
- align=left border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=16 alt=""
- src="icons/full/obj16/computer_obj.gif" width=16 border=0>
- <P></P></TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#ffffff>
- <TD>3</TD>
- <TD> Feature</TD>
- <TD><FONT size=-1> feature_obj</FONT></TD>
- <TD><font size="-1">feature object</font></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/feature_obj.gif" width=16
-align=left border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=16 alt=""
- src="icons/full/obj16/feature_obj.gif" width=16 border=0>
- <P></P></TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>4</TD>
- <TD>Unconfigured Feature</TD>
- <TD><FONT size=-1> unconf_feature_obj</FONT></TD>
- <TD><font size="-1">feature that is currently unconfigured (i.e. still
- present but disabled in the current configuration)</font></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/unconf_feature_obj.gif" width=16
- align=left border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=16 alt=""
- src="icons/full/obj16/unconf_feature_obj.gif" width=16 border=0>
- <P></P></TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#ffffff>
- <TD>5</TD>
- <TD>Places to Visit</TD>
- <TD>places_obj</TD>
- <TD>a folder that contains bookmarks to remote sites that
- contain cool features</TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/places_obj.gif" width=16
-align=left border=0></TD>
- <TD bgColor=#ffffff><IMG height=16 alt=""
- src="icons/full/obj16/places_obj.gif" width=16 border=0>
- </TD>
- <TD></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>6</TD>
- <TD>Site</TD>
- <TD><font size="-1">site_obj </font></TD>
- <TD><font size="-1">update site object that represent a provider
- site (site that is set up to act as a source of features)</font></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/site_obj.gif" width=16
-align=left border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=16 alt=""
- src="icons/full/obj16/site_obj.gif" width=16 border=0>
- <P></P></TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR>
- <TD>7</TD>
- <TD><font size="-1">Local Site</font></TD>
- <TD><font size="-1">lsite_obj</font></TD>
- <TD>update site object that represents a receiver site (site
- that is set up to act as a target of the feature installation)</TD>
- <TD><IMG height=16
- alt=""
-src="../old.icons/full/obj16/lsite_obj.gif" width=16 align=left border=0></TD>
- <TD bgColor=#ffffff><IMG height=16 alt=""
- src="icons/full/obj16/lsite_obj.gif" width=16 border=0>
- </TD>
- <TD></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>8</TD>
- <TD><font size="-1">Feature Category</font></TD>
- <TD><font size="-1">category_obj</font></TD>
- <TD>sites can classify features they host into hierarchical
- categories</TD>
- <TD>
- <P align=left><IMG height=16 src="../old.icons/full/obj16/category_obj.gif" width=16 border=0></P></TD>
- <TD bgColor=#ffffff><IMG height=16 alt=""
- src="icons/full/obj16/category_obj.gif" width=16 border=0>
- </TD>
- <TD></TD></TR>
- <TR>
- <TD>9</TD>
- <TD><font size="-1">Bookmark Folder</font></TD>
- <TD><font size="-1">bfolder_obj</font></TD>
- <TD>folder object in the view that provides for
- organizing site bookmarks and search objects</TD>
- <TD>
- <P align=left><IMG height=16 src="../old.icons/full/obj16/bfolder_obj.gif" width=16 border=0></P></TD>
- <TD bgColor=#ffffff ><IMG height=16 alt=""
- src="icons/full/obj16/bfolder_obj.gif" width=16 border=0>
- </TD>
- <TD></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>10</TD>
- <TD>Text Search</TD>
- <TD><font size="-1">tsearch_obj</font></TD>
- <TD><font size="-1">Text search object </font></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/tsearch_obj.gif" width=16 align=left border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=16 alt=""
- src="icons/full/obj16/tsearch_obj.gif" width=16 border=0>
- <P></P></TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR>
- <TD>11</TD>
- <TD>Update Search</TD>
- <TD>usearch_obj</TD>
- <TD>Available Updates search object</TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/usearch_obj.gif" width=16 align=left border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=16 alt=""
- src="icons/full/obj16/usearch_obj.gif" width=16 border=0>
- <P></P>
- </TD>
- <TD></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>12</TD>
- <TD>Plug-in Search</TD>
- <TD>psearch_obj</TD>
- <TD>Plug-in search object</TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/psearch_obj.gif" width=16 align=left border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=16 alt=""
- src="icons/full/obj16/psearch_obj.gif" width=16 border=0>
- <P></P>
- </TD>
- <TD></TD></TR>
- <TR>
- <TD>13</TD>
- <TD>Fixed Volume</TD>
- <TD>vfixed_obj</TD>
- <TD>Local file system volume that represents a fixed drive (Windows) or
- folder (Linux)</TD>
- <TD><IMG height=16
- alt="" src="../old.icons/full/obj16/vfixed_obj.gif" width=16 align=left border=0>
- </TD>
- <TD bgColor=#ffffff><IMG height=16 alt=""
- src="icons/full/obj16/vfixed_obj.gif" width=16 border=0>
-
- </TD>
- <TD></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>14</TD>
- <TD>Remote Volume</TD>
- <TD>vremote_obj</TD>
- <TD>Remote file system volume that represents a shared drive (Window) or
- mounted volume (Linux)</TD>
- <TD height =16
- alt="" <IMG src="../old.icons/full/obj16/vremote_obj.gif" width=16 align=left border="1"
- >
- </TD>
- <TD bgColor=#ffffff><IMG height=16 alt=""
- src="icons/full/obj16/vremote_obj.gif" width=16 border=0>
-
- </TD>
- <TD></TD></TR>
- <TR>
- <TD>15</TD>
- <TD>Removable Volume</TD>
- <TD>vremovable_obj</TD>
- <TD>Removable file system volume that is neither CD-ROM nor Floppy Disk.
- This image is used for all other removable volumes like DVD-ROM, various
- PCMCIA cards etc.</TD>
- <TD><IMG height=16
- alt="" src="../old.icons/full/obj16/vremovable_obj.gif" width=16 align=left border=0>
- </TD>
- <TD bgColor=#ffffff><IMG height=16 alt=""
- src="icons/full/obj16/vremovable_obj.gif" width=16 border=0>
-
- </TD>
- <TD></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>16</TD>
- <TD>CD-ROM</TD>
- <TD>cd_obj</TD>
- <TD>File system volume that represent a CD-ROM drive</TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/cd_obj.gif" width=16 align=left border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=16 alt=""
- src="icons/full/obj16/cd_obj.gif" width=16 border=0>
- <P></P>
- </TD>
- <TD></TD></TR>
- <TR>
- <TD>17</TD>
- <TD>Floppy Disk</TD>
- <TD><font size="-1">floppy_obj</font></TD>
- <TD><font size="-1">File system volume that represents a 3 1/2 inch floppy
- disk drive</font></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/obj16/floppy_obj.gif" width=16 align=left border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=16 alt=""
- src="icons/full/obj16/floppy_obj.gif" width=16 border=0>
- <P></P></TD>
- <TD><FONT size=-1> </FONT></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>18</TD>
- <TD>Saved Configurations</TD>
- <TD>saved_obj</TD>
- <TD><font size="2">Folder that holds past configurations that have been preserved and/or
- renamed</font></TD>
- <TD><IMG height=16
- alt="" src="../old.icons/full/obj16/saved_obj.gif" width=16 align=left border=0></TD>
- <TD bgColor=#ffffff ><IMG height=16 alt=""
- src="icons/full/obj16/saved_obj.gif" width=16 border=0></TD>
- <TD></TD></TR>
- <TR>
- <TD>19</TD>
- <TD>Configuration History</TD>
- <TD>history_obj</TD>
- <TD>Folder that holds past configurations</TD>
- <TD><IMG height=16
- alt="" src="../old.icons/full/obj16/history_obj.gif" width=16 align=left border=0></TD>
- <TD bgColor=#ffffff ><IMG height=16 alt=""
- src="icons/full/obj16/history_obj.gif" width=16 border=0></TD>
- <TD></TD></TR>
- <TR bgColor=#dfdfb>
- <TD>20</TD>
- <TD>Available Updates</TD>
- <TD>updates_obj</TD>
- <TD>Update Search object that is pre-configured to look for
- available updates of all the installed features. It cannot be removed from
- the view.</TD>
- <TD><IMG height=16
- alt="" src="../old.icons/full/obj16/updates_obj.gif" width=16 align=left border=0></TD>
- <TD bgColor=#ffffff ><IMG height=16 alt=""
- src="icons/full/obj16/updates_obj.gif" width=16 border=0></TD>
- <TD></TD></TR>
- <TR>
- <TD>21</TD>
- <TD>Configuration</TD>
- <TD>config_obj</TD>
- <TD>A configuration history entry that represents one
- configuration</TD>
- <TD><IMG height=16
- alt="" src="../old.icons/full/obj16/config_obj.gif" width=16 align=left border=0></TD>
- <TD bgColor=#ffffff ><IMG height=16 alt=""
- src="icons/full/obj16/config_obj.gif" width=16 border=0></TD>
- <TD></TD></TR>
-
-
-
- <TR bgColor=#cccccc>
- <TD colSpan=7><B><FONT size=+2>Object Overlay </FONT></B></TD></TR>
- <TR bgColor=#ffffff>
- <TD>1</TD>
- <TD> current</TD>
- <TD><font size="-1">current_co </font></TD>
- <TD><FONT size=-1> indicates that the configuration is current i.e. in
- effect</FONT></TD>
- <TD><IMG height=8 alt=""
- src="../old.icons/full/ovr16/current_co.gif" width=7 border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=8 alt=""
- src="icons/full/ovr16/current_co.gif" width=7 border=0>
- <P></P></TD>
- <TD> </TD></TR>
- <TR bgColor=#dfdfb>
- <TD>2</TD>
- <TD> error</TD>
- <TD><FONT size=-1>error_co </FONT></TD>
- <TD><FONT size=-1>will be overlayed over PDE editor objects that are
- somehow associated with XML syntax or validation errors </FONT></TD>
- <TD><IMG height=8 alt=""
- src="../old.icons/full/ovr16/error_co.gif" width=7 border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=8 alt=""
- src="icons/full/ovr16/error_co.gif" width=7 border=0>
- <P></P></TD>
- <TD> </TD></TR>
- <TR bgColor=#ffffff>
- <TD>3</TD>
- <TD> installable</TD>
- <TD><font size="-1">installable_co </font></TD>
- <TD><font size="-1">indicates that site can accept features during
- installation</font></TD>
- <TD><IMG height=8 alt=""
- src="../old.icons/full/ovr16/installable_co.gif" width=7 border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=8 alt=""
- src="icons/full/ovr16/installable_co.gif" width=7 border=0>
- <P></P></TD>
- <TD> </TD></TR>
- <TR bgColor=#dfdfb>
- <TD>4</TD>
- <TD> linked</TD>
- <TD><font size="-1">linked_co </font></TD>
- <TD><font size="-1">indicates that the site is only linked to the
- configuration</font></TD>
- <TD><IMG height=10 alt=""
- src="../old.icons/full/ovr16/linked_co.gif" width=11 border=0></TD>
- <TD bgColor=#ffffff>
- <IMG height=8 alt=""
- src="icons/full/ovr16/linked_co.gif" width=7 border=0>
- <P></P></TD>
- <TD> </TD></TR>
- <TR bgColor=#ffffff>
- <TD>5</TD>
- <TD>unconfigured</TD>
- <TD><font size="-1">unconfigured_co </font></TD>
- <TD><font size="-1">
- </font></TD>
- <TD></TD>
- <TD bgColor=#ffffff>
- <P></P><IMG height=8 alt="" src="icons/full/ovr16/unconfigured_co.gif"
- width=7 border=0></TD>
- <TD> </TD></TR>
-
-
-
- <tr bgColor=#cccccc>
- <TD colSpan=7><b><font size="+2">Forms Artwork</font></b></TD>
- </tr>
- <tr>
- <TD>1</TD>
- <TD> Topic</TD>
- <TD><font size="-1">topic </font></TD>
- <TD><FONT size=-1> an image to be used as a custom bullet for items in
- a 'Welcome' page</FONT></TD>
- <TD><IMG height=16 alt=""
- src="../old.icons/full/forms/topic.gif" width=16 border=0></TD>
- <TD bgColor=#ffffff><IMG height=16 alt=""
- src="icons/full/forms/topic.gif" width=16 border=0></TD>
- <TD> </TD>
- </tr>
- <tr bgColor=#dfdfb>
- <TD>2</TD>
- <TD>Default Provider</TD>
- <TD><font size="-1">def_provider </font></TD>
- <TD><font size="-1">an image to be used in a feature description page in
- cases where one was not supplied by feature provider (should be JPEG)<IMG
- height=48 alt="" src="../old.icons/full/forms/def_provider.gif" width=109
- border=0>
- </font></TD>
- <TD></TD>
- <TD bgColor=#ffffff><IMG height=150 alt=""
- src="icons/full/forms/def_provider.gif" width=190 border=0> </TD>
- <TD> </TD>
- </tr>
- <tr>
- <TD>3</TD>
- <TD> Form Banner</TD>
- <TD><font size="-1">form_banner </font></TD>
- <TD><font size="-1">a banner image used in all form pages behind the heading
- (shown here in 1:10 zoom out)</font></TD>
- <TD><IMG height=3 alt=""
- src="../old.icons/full/forms/form_banner.gif" width=60 border=0></TD>
- <TD bgColor=#ffffff>
- <P></P></TD>
- <TD> </TD>
- </tr>
- <tr bgColor=#dfdfb>
- <TD>4</TD>
- <TD> Form Banner Underline</TD>
- <TD><font size="-1">form_underline </font></TD>
- <TD><font size="-1">a second portion of the banner used under the heading
- text (shown here in 1:10 zoom out)</font></TD>
- <TD><IMG height=1 alt=""
- src="../old.icons/full/forms/form_underline.gif" width=60 border=0></TD>
- <TD bgColor=#ffffff>
- <P></P></TD>
- <TD> </TD>
- </tr>
-
-
-
-
- <TR bgColor=#cccccc>
- <TD colSpan=7><B><FONT size=+2>Wizard Graphic</FONT></B></TD></TR>
- <TR bgColor=#ffffff>
- <TD>1</TD>
- <TD>New Bookmark wizard</TD>
- <TD><FONT size=-1> new_bookmark_wiz</FONT></TD>
- <TD><font size="-1">creates a new update site bookmark</font></TD>
- <TD><IMG height=58 alt=""
- src="../old.icons/full/wizban/new_bookmark_wiz.gif"
- width=75 border=0></TD>
- <TD bgColor=#ffffff><IMG height=58 alt=""
- src="icons/full/wizban/new_bookmark_wiz.gif" width=75 border=0> </TD>
- <TD> </TD></TR>
- <TR bgColor=#dfdfb>
- <TD>2</TD>
- <TD>New Folder wizard</TD>
- <TD><FONT size=-1> new_folder_wiz</FONT></TD>
- <TD><font size="-1">creates a new bookmark folder</font></TD>
- <TD><IMG height=58 alt=""
- src="../old.icons/full/wizban/new_folder_wiz.gif"
- width=75 border=0></TD>
- <TD bgColor=#ffffff><IMG height=58 alt=""
- src="icons/full/wizban/new_folder_wiz.gif" width=75 border=0> </TD>
- <TD> </TD></TR>
- <TR bgColor=#ffffff>
- <TD>3</TD>
- <TD>New Search wizard</TD>
- <TD><FONT size=-1> new_search_wiz</FONT></TD>
- <TD><FONT size=-1>creates a new search object</FONT></TD>
- <TD><IMG height=58 alt=""
- src="../old.icons/full/wizban/new_search_wiz.gif"
- width=75 border=0></TD>
- <TD bgColor=#ffffff><IMG height=58 alt=""
- src="icons/full/wizban/new_search_wiz.gif" width=75 border=0> </TD>
- <TD> </TD></TR>
- <TR bgColor=#dfdfb>
- <TD>4</TD>
- <TD>Install Feature wizard</TD>
- <TD><FONT size=-1> install_wiz</FONT></TD>
- <TD><font size="-1">installs a new feature into the platform</font></TD>
- <TD><IMG height=58 alt=""
- src="../old.icons/full/wizban/install_wiz.gif"
- width=75 border=0></TD>
- <TD bgColor=#ffffff><IMG height=58 alt=""
- src="icons/full/wizban/install_wiz.gif" width=75 border=0> </TD>
- <TD> </TD></TR>
- <TR bgColor=#ffffff>
- <TD >5</TD>
- <TD>Update Feature wizard</TD>
- <TD><FONT size=-1> update_wiz</FONT></TD>
- <TD><font size="-1">installs a newer version of an already installed feature</font></TD>
- <TD><IMG height=58 alt=""
- src="../old.icons/full/wizban/update_wiz.gif"
- width=75 border=0></TD>
- <TD bgColor=#ffffff><IMG height=58 alt=""
- src="icons/full/wizban/update_wiz.gif" width=75 border=0> </TD>
- <TD> </TD></TR>
- <TR bgColor=#dfdfb>
- <TD >6</TD>
- <TD>Configure Feature wizard</TD>
- <TD><FONT size=-1> config_wiz</FONT></TD>
- <TD><font size="-1">configures or unconfigures an installed feature</font></TD>
- <TD><IMG height=58 alt=""
- src="../old.icons/full/wizban/config_wiz.gif"
- width=75 border=0></TD>
- <TD bgColor=#ffffff><IMG height=58 alt=""
- src="icons/full/wizban/config_wiz.gif" width=75 border=0> </TD>
- <TD> </TD></TR>
- <TR>
- <TD>7</TD>
- <TD>Uninstall Feature wizard</TD>
- <TD><FONT size=-1> uninstall_wiz</FONT></TD>
- <TD><font size="-1">permanently removes a feature from the platform</font></TD>
- <TD><IMG height=58 alt=""
- src="../old.icons/full/wizban/uninstall_wiz.gif"
- width=75 border=0></TD>
- <TD bgColor=#ffffff><IMG height=58 alt=""
- src="icons/full/wizban/uninstall_wiz.gif" width=75 border=0> </TD>
- <TD> </TD></TR>
- <TR bgColor=#dfdfb>
- <TD>8</TD>
- <TD>Default Install Wizard banner</TD>
- <TD><FONT size=-1> def_wizban</FONT></TD>
- <TD><font size="-1">a default image shown in install wizard pages when
- one is not supplied by feature providers<IMG height=258 alt=""
- src="../old.icons/full/wizban/def_wizban.jpg" width=118
-border=0>
- </font></TD>
- <TD></TD>
- <TD bgColor=#ffffff><IMG height=258 alt=""
- src="icons/full/wizban/def_wizban.jpg" width=118 border=0> </TD>
- <TD> </TD></TR></TABLE>
-<P></P></BODY></HTML>
diff --git a/update/org.eclipse.update.ui/about.html b/update/org.eclipse.update.ui/about.html
deleted file mode 100644
index 768324e..0000000
--- a/update/org.eclipse.update.ui/about.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body lang="EN-US" link="blue" vlink="purple">
-<table border="0" cellspacing="5" cellpadding="2" width="100%" >
- <tr>
- <td align="LEFT" valign="TOP" colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF">About This Content</font></b></td>
- </tr>
- <tr>
- <td>
-<p>11th December, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in "Content". Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a> "CPL". For purposes of the CPL, "Program" will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL "Other License", any modifications, enhancements and/or
-other code and/or documentation "Modifications" uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/build.properties b/update/org.eclipse.update.ui/build.properties
deleted file mode 100644
index dd53f55..0000000
--- a/update/org.eclipse.update.ui/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = plugin.properties,\
- icons/,\
- *.jar,\
- plugin.xml,\
- about.html,\
- schema/
-source.updateui.jar = src/
diff --git a/update/org.eclipse.update.ui/doc/searchCategory.html b/update/org.eclipse.update.ui/doc/searchCategory.html
deleted file mode 100644
index 6a4c2af..0000000
--- a/update/org.eclipse.update.ui/doc/searchCategory.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HEAD>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-<HTML>
-<BODY>
-<H1><CENTER>Search Category</CENTER></H1>
-<H2>Identifier</H2>
-org.eclipse.update.ui.searchCategory<H2>Description</H2>
-[Enter description of this extension point]<H2>Markup</H2>
-<p><samp> <!ELEMENT extension (search+)></samp>
-<br><samp> <!ATTLIST extension</samp>
-<br><samp> point CDATA #REQUIRED</samp>
-<br><samp> id CDATA #IMPLIED</samp>
-<br><samp> name CDATA #IMPLIED</samp>
-<br><samp> ></samp>
-<ul>
-<li><b>point</b> - </li><li><b>id</b> - </li><li><b>name</b> - </li></ul>
-<p><samp> <!ELEMENT search (description?)></samp>
-<br><samp> <!ATTLIST search</samp>
-<br><samp> id CDATA #REQUIRED</samp>
-<br><samp> name CDATA #REQUIRED</samp>
-<br><samp> class CDATA #IMPLIED</samp>
-<br><samp> icon CDATA #IMPLIED</samp>
-<br><samp> ></samp>
-<ul>
-<li><b>id</b> - unique identifier of this search category</li><li><b>name</b> - translatable name of this search category</li><li><b>class</b> - a fully qualified name of the class that implements
-<samp>org.eclipse.update.internal.ui.search.ISearchQuery</samp>.</li><li><b>icon</b> - a relative path to the image that will be used to represent
-instances of this search category in the UI.</li></ul>
-<p><samp> <!ELEMENT description (#CDATA)></samp>
-<H2>Example</H2>
-[Enter extension point usage example here.]<H2>API Information</H2>
-[Enter API information here.]<H2>Supplied Implementation</H2>
-[Enter information about supplied implementation of this extension point.]</BODY>
-</HTML>
diff --git a/update/org.eclipse.update.ui/icons/full/clcl16/backward_nav.gif b/update/org.eclipse.update.ui/icons/full/clcl16/backward_nav.gif
deleted file mode 100644
index 740419b..0000000
--- a/update/org.eclipse.update.ui/icons/full/clcl16/backward_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/clcl16/forward_nav.gif b/update/org.eclipse.update.ui/icons/full/clcl16/forward_nav.gif
deleted file mode 100644
index 7a1511d..0000000
--- a/update/org.eclipse.update.ui/icons/full/clcl16/forward_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/clcl16/go_nav.gif b/update/org.eclipse.update.ui/icons/full/clcl16/go_nav.gif
deleted file mode 100644
index bb20d88..0000000
--- a/update/org.eclipse.update.ui/icons/full/clcl16/go_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/clcl16/home_nav.gif b/update/org.eclipse.update.ui/icons/full/clcl16/home_nav.gif
deleted file mode 100644
index 949c2db..0000000
--- a/update/org.eclipse.update.ui/icons/full/clcl16/home_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/clcl16/refresh_nav.gif b/update/org.eclipse.update.ui/icons/full/clcl16/refresh_nav.gif
deleted file mode 100644
index a063c23..0000000
--- a/update/org.eclipse.update.ui/icons/full/clcl16/refresh_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/clcl16/show_unconf.gif b/update/org.eclipse.update.ui/icons/full/clcl16/show_unconf.gif
deleted file mode 100644
index 8aed86f..0000000
--- a/update/org.eclipse.update.ui/icons/full/clcl16/show_unconf.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/clcl16/stop_nav.gif b/update/org.eclipse.update.ui/icons/full/clcl16/stop_nav.gif
deleted file mode 100644
index 4eb53ec..0000000
--- a/update/org.eclipse.update.ui/icons/full/clcl16/stop_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ctool16/config_wiz.gif b/update/org.eclipse.update.ui/icons/full/ctool16/config_wiz.gif
deleted file mode 100644
index 1042460..0000000
--- a/update/org.eclipse.update.ui/icons/full/ctool16/config_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ctool16/install_wiz.gif b/update/org.eclipse.update.ui/icons/full/ctool16/install_wiz.gif
deleted file mode 100644
index 675effa..0000000
--- a/update/org.eclipse.update.ui/icons/full/ctool16/install_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ctool16/new_bookmark_wiz.gif b/update/org.eclipse.update.ui/icons/full/ctool16/new_bookmark_wiz.gif
deleted file mode 100644
index a707b8e..0000000
--- a/update/org.eclipse.update.ui/icons/full/ctool16/new_bookmark_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ctool16/new_folder_wiz.gif b/update/org.eclipse.update.ui/icons/full/ctool16/new_folder_wiz.gif
deleted file mode 100644
index 69611f9..0000000
--- a/update/org.eclipse.update.ui/icons/full/ctool16/new_folder_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ctool16/new_search_wiz.gif b/update/org.eclipse.update.ui/icons/full/ctool16/new_search_wiz.gif
deleted file mode 100644
index 8a3389e..0000000
--- a/update/org.eclipse.update.ui/icons/full/ctool16/new_search_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ctool16/uninstall_wiz.gif b/update/org.eclipse.update.ui/icons/full/ctool16/uninstall_wiz.gif
deleted file mode 100644
index 0306fcb..0000000
--- a/update/org.eclipse.update.ui/icons/full/ctool16/uninstall_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ctool16/update_wiz.gif b/update/org.eclipse.update.ui/icons/full/ctool16/update_wiz.gif
deleted file mode 100644
index 966a48a..0000000
--- a/update/org.eclipse.update.ui/icons/full/ctool16/update_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/cview16/browser.gif b/update/org.eclipse.update.ui/icons/full/cview16/browser.gif
deleted file mode 100644
index fd70277..0000000
--- a/update/org.eclipse.update.ui/icons/full/cview16/browser.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/cview16/configs.gif b/update/org.eclipse.update.ui/icons/full/cview16/configs.gif
deleted file mode 100644
index 4fc0ad8..0000000
--- a/update/org.eclipse.update.ui/icons/full/cview16/configs.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/cview16/preview.gif b/update/org.eclipse.update.ui/icons/full/cview16/preview.gif
deleted file mode 100644
index b54a463..0000000
--- a/update/org.eclipse.update.ui/icons/full/cview16/preview.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/cview16/update_pers.gif b/update/org.eclipse.update.ui/icons/full/cview16/update_pers.gif
deleted file mode 100644
index 9eb88fa..0000000
--- a/update/org.eclipse.update.ui/icons/full/cview16/update_pers.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/cview16/updates.gif b/update/org.eclipse.update.ui/icons/full/cview16/updates.gif
deleted file mode 100644
index 0615b8b..0000000
--- a/update/org.eclipse.update.ui/icons/full/cview16/updates.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dlcl16/backward_nav.gif b/update/org.eclipse.update.ui/icons/full/dlcl16/backward_nav.gif
deleted file mode 100644
index e2179ad..0000000
--- a/update/org.eclipse.update.ui/icons/full/dlcl16/backward_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dlcl16/forward_nav.gif b/update/org.eclipse.update.ui/icons/full/dlcl16/forward_nav.gif
deleted file mode 100644
index 0c5af08..0000000
--- a/update/org.eclipse.update.ui/icons/full/dlcl16/forward_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dlcl16/go_nav.gif b/update/org.eclipse.update.ui/icons/full/dlcl16/go_nav.gif
deleted file mode 100644
index 472f005..0000000
--- a/update/org.eclipse.update.ui/icons/full/dlcl16/go_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dlcl16/home_nav.gif b/update/org.eclipse.update.ui/icons/full/dlcl16/home_nav.gif
deleted file mode 100644
index 3c80080..0000000
--- a/update/org.eclipse.update.ui/icons/full/dlcl16/home_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dlcl16/refresh_nav.gif b/update/org.eclipse.update.ui/icons/full/dlcl16/refresh_nav.gif
deleted file mode 100644
index b2281b4..0000000
--- a/update/org.eclipse.update.ui/icons/full/dlcl16/refresh_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dlcl16/show_unconf.gif b/update/org.eclipse.update.ui/icons/full/dlcl16/show_unconf.gif
deleted file mode 100644
index 493f498..0000000
--- a/update/org.eclipse.update.ui/icons/full/dlcl16/show_unconf.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dlcl16/stop_nav.gif b/update/org.eclipse.update.ui/icons/full/dlcl16/stop_nav.gif
deleted file mode 100644
index 7f0f9b9..0000000
--- a/update/org.eclipse.update.ui/icons/full/dlcl16/stop_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dtool16/config_wiz.gif b/update/org.eclipse.update.ui/icons/full/dtool16/config_wiz.gif
deleted file mode 100644
index 9c6868c..0000000
--- a/update/org.eclipse.update.ui/icons/full/dtool16/config_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dtool16/install_wiz.gif b/update/org.eclipse.update.ui/icons/full/dtool16/install_wiz.gif
deleted file mode 100644
index e6ebfa8..0000000
--- a/update/org.eclipse.update.ui/icons/full/dtool16/install_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dtool16/new_bookmark_wiz.gif b/update/org.eclipse.update.ui/icons/full/dtool16/new_bookmark_wiz.gif
deleted file mode 100644
index aae317b..0000000
--- a/update/org.eclipse.update.ui/icons/full/dtool16/new_bookmark_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dtool16/new_folder_wiz.gif b/update/org.eclipse.update.ui/icons/full/dtool16/new_folder_wiz.gif
deleted file mode 100644
index 21832b9..0000000
--- a/update/org.eclipse.update.ui/icons/full/dtool16/new_folder_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dtool16/new_search_wiz.gif b/update/org.eclipse.update.ui/icons/full/dtool16/new_search_wiz.gif
deleted file mode 100644
index 913d568..0000000
--- a/update/org.eclipse.update.ui/icons/full/dtool16/new_search_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dtool16/uninstall_wiz.gif b/update/org.eclipse.update.ui/icons/full/dtool16/uninstall_wiz.gif
deleted file mode 100644
index 04a5302..0000000
--- a/update/org.eclipse.update.ui/icons/full/dtool16/uninstall_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/dtool16/update_wiz.gif b/update/org.eclipse.update.ui/icons/full/dtool16/update_wiz.gif
deleted file mode 100644
index e613e42..0000000
--- a/update/org.eclipse.update.ui/icons/full/dtool16/update_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/elcl16/backward_nav.gif b/update/org.eclipse.update.ui/icons/full/elcl16/backward_nav.gif
deleted file mode 100644
index 85188b7..0000000
--- a/update/org.eclipse.update.ui/icons/full/elcl16/backward_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/elcl16/forward_nav.gif b/update/org.eclipse.update.ui/icons/full/elcl16/forward_nav.gif
deleted file mode 100644
index dc28ee1..0000000
--- a/update/org.eclipse.update.ui/icons/full/elcl16/forward_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/elcl16/go_nav.gif b/update/org.eclipse.update.ui/icons/full/elcl16/go_nav.gif
deleted file mode 100644
index 7683327..0000000
--- a/update/org.eclipse.update.ui/icons/full/elcl16/go_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/elcl16/home_nav.gif b/update/org.eclipse.update.ui/icons/full/elcl16/home_nav.gif
deleted file mode 100644
index bf2ba86..0000000
--- a/update/org.eclipse.update.ui/icons/full/elcl16/home_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/elcl16/refresh_nav.gif b/update/org.eclipse.update.ui/icons/full/elcl16/refresh_nav.gif
deleted file mode 100644
index 919423d..0000000
--- a/update/org.eclipse.update.ui/icons/full/elcl16/refresh_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/elcl16/show_unconf.gif b/update/org.eclipse.update.ui/icons/full/elcl16/show_unconf.gif
deleted file mode 100644
index bdf381a..0000000
--- a/update/org.eclipse.update.ui/icons/full/elcl16/show_unconf.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/elcl16/stop_nav.gif b/update/org.eclipse.update.ui/icons/full/elcl16/stop_nav.gif
deleted file mode 100644
index a519f44..0000000
--- a/update/org.eclipse.update.ui/icons/full/elcl16/stop_nav.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/etool16/config_wiz.gif b/update/org.eclipse.update.ui/icons/full/etool16/config_wiz.gif
deleted file mode 100644
index 16ee5ae..0000000
--- a/update/org.eclipse.update.ui/icons/full/etool16/config_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/etool16/install_wiz.gif b/update/org.eclipse.update.ui/icons/full/etool16/install_wiz.gif
deleted file mode 100644
index e1a6c88..0000000
--- a/update/org.eclipse.update.ui/icons/full/etool16/install_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/etool16/new_bookmark_wiz.gif b/update/org.eclipse.update.ui/icons/full/etool16/new_bookmark_wiz.gif
deleted file mode 100644
index b3c5bf3..0000000
--- a/update/org.eclipse.update.ui/icons/full/etool16/new_bookmark_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/etool16/new_folder_wiz.gif b/update/org.eclipse.update.ui/icons/full/etool16/new_folder_wiz.gif
deleted file mode 100644
index 05368bd..0000000
--- a/update/org.eclipse.update.ui/icons/full/etool16/new_folder_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/etool16/new_search_wiz.gif b/update/org.eclipse.update.ui/icons/full/etool16/new_search_wiz.gif
deleted file mode 100644
index ba1c90e..0000000
--- a/update/org.eclipse.update.ui/icons/full/etool16/new_search_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/etool16/uninstall_wiz.gif b/update/org.eclipse.update.ui/icons/full/etool16/uninstall_wiz.gif
deleted file mode 100644
index f51d550..0000000
--- a/update/org.eclipse.update.ui/icons/full/etool16/uninstall_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/etool16/update_wiz.gif b/update/org.eclipse.update.ui/icons/full/etool16/update_wiz.gif
deleted file mode 100644
index 8e2d78e..0000000
--- a/update/org.eclipse.update.ui/icons/full/etool16/update_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/eview16/browser.gif b/update/org.eclipse.update.ui/icons/full/eview16/browser.gif
deleted file mode 100644
index 33935b1..0000000
--- a/update/org.eclipse.update.ui/icons/full/eview16/browser.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/eview16/configs.gif b/update/org.eclipse.update.ui/icons/full/eview16/configs.gif
deleted file mode 100644
index ecb090d..0000000
--- a/update/org.eclipse.update.ui/icons/full/eview16/configs.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/eview16/preview.gif b/update/org.eclipse.update.ui/icons/full/eview16/preview.gif
deleted file mode 100644
index 791ed7b..0000000
--- a/update/org.eclipse.update.ui/icons/full/eview16/preview.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/eview16/update_pers.gif b/update/org.eclipse.update.ui/icons/full/eview16/update_pers.gif
deleted file mode 100644
index d281673..0000000
--- a/update/org.eclipse.update.ui/icons/full/eview16/update_pers.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/eview16/updates.gif b/update/org.eclipse.update.ui/icons/full/eview16/updates.gif
deleted file mode 100644
index c01cb40..0000000
--- a/update/org.eclipse.update.ui/icons/full/eview16/updates.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/forms/def_provider.gif b/update/org.eclipse.update.ui/icons/full/forms/def_provider.gif
deleted file mode 100644
index 7577220..0000000
--- a/update/org.eclipse.update.ui/icons/full/forms/def_provider.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/forms/form_banner.gif b/update/org.eclipse.update.ui/icons/full/forms/form_banner.gif
deleted file mode 100644
index b6a1b37..0000000
--- a/update/org.eclipse.update.ui/icons/full/forms/form_banner.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/forms/form_underline.gif b/update/org.eclipse.update.ui/icons/full/forms/form_underline.gif
deleted file mode 100644
index 3dd6cc8..0000000
--- a/update/org.eclipse.update.ui/icons/full/forms/form_underline.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/forms/topic.gif b/update/org.eclipse.update.ui/icons/full/forms/topic.gif
deleted file mode 100644
index 10137e9..0000000
--- a/update/org.eclipse.update.ui/icons/full/forms/topic.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/app_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/app_obj.gif
deleted file mode 100644
index 723a3c8..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/app_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/bfolder_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/bfolder_obj.gif
deleted file mode 100644
index 88acd7e..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/bfolder_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/category_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/category_obj.gif
deleted file mode 100644
index 31c45be..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/category_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/cd_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/cd_obj.gif
deleted file mode 100644
index b7b2370..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/cd_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/computer_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/computer_obj.gif
deleted file mode 100644
index 6950fc9..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/computer_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/config_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/config_obj.gif
deleted file mode 100644
index 45d6148..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/config_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/feature_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/feature_obj.gif
deleted file mode 100644
index c238870..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/feature_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/floppy_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/floppy_obj.gif
deleted file mode 100644
index 501a04b..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/floppy_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/history_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/history_obj.gif
deleted file mode 100644
index 1f62f65..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/history_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/lsite_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/lsite_obj.gif
deleted file mode 100644
index 3f40e35..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/lsite_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/places_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/places_obj.gif
deleted file mode 100644
index a87c024..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/places_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/psearch_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/psearch_obj.gif
deleted file mode 100644
index 76769ed..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/psearch_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/saved_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/saved_obj.gif
deleted file mode 100644
index 117bc61..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/saved_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/site_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/site_obj.gif
deleted file mode 100644
index 63fe7db..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/site_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/tsearch_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/tsearch_obj.gif
deleted file mode 100644
index a126e8a..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/tsearch_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/unconf_feature_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/unconf_feature_obj.gif
deleted file mode 100644
index 8aed86f..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/unconf_feature_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/updates_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/updates_obj.gif
deleted file mode 100644
index 972332c..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/updates_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/usearch_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/usearch_obj.gif
deleted file mode 100644
index 0b4a334..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/usearch_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/vfixed_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/vfixed_obj.gif
deleted file mode 100644
index 0444f47..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/vfixed_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/vremote_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/vremote_obj.gif
deleted file mode 100644
index 63d2fcf..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/vremote_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/obj16/vremovable_obj.gif b/update/org.eclipse.update.ui/icons/full/obj16/vremovable_obj.gif
deleted file mode 100644
index aef0ef3..0000000
--- a/update/org.eclipse.update.ui/icons/full/obj16/vremovable_obj.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ovr16/current_co.gif b/update/org.eclipse.update.ui/icons/full/ovr16/current_co.gif
deleted file mode 100644
index a794943..0000000
--- a/update/org.eclipse.update.ui/icons/full/ovr16/current_co.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ovr16/error_co.gif b/update/org.eclipse.update.ui/icons/full/ovr16/error_co.gif
deleted file mode 100644
index 8612eaf..0000000
--- a/update/org.eclipse.update.ui/icons/full/ovr16/error_co.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ovr16/installable_co.gif b/update/org.eclipse.update.ui/icons/full/ovr16/installable_co.gif
deleted file mode 100644
index 2663d5c..0000000
--- a/update/org.eclipse.update.ui/icons/full/ovr16/installable_co.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ovr16/linked_co.gif b/update/org.eclipse.update.ui/icons/full/ovr16/linked_co.gif
deleted file mode 100644
index 304fff4..0000000
--- a/update/org.eclipse.update.ui/icons/full/ovr16/linked_co.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/ovr16/unconfigured_co.gif b/update/org.eclipse.update.ui/icons/full/ovr16/unconfigured_co.gif
deleted file mode 100644
index d9449f9..0000000
--- a/update/org.eclipse.update.ui/icons/full/ovr16/unconfigured_co.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/wizban/config_wiz.gif b/update/org.eclipse.update.ui/icons/full/wizban/config_wiz.gif
deleted file mode 100644
index da59ae3..0000000
--- a/update/org.eclipse.update.ui/icons/full/wizban/config_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/wizban/def_wizban.jpg b/update/org.eclipse.update.ui/icons/full/wizban/def_wizban.jpg
deleted file mode 100644
index 912a504..0000000
--- a/update/org.eclipse.update.ui/icons/full/wizban/def_wizban.jpg
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/wizban/install_wiz.gif b/update/org.eclipse.update.ui/icons/full/wizban/install_wiz.gif
deleted file mode 100644
index 89b6c04..0000000
--- a/update/org.eclipse.update.ui/icons/full/wizban/install_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/wizban/new_bookmark_wiz.gif b/update/org.eclipse.update.ui/icons/full/wizban/new_bookmark_wiz.gif
deleted file mode 100644
index fc247d4..0000000
--- a/update/org.eclipse.update.ui/icons/full/wizban/new_bookmark_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/wizban/new_folder_wiz.gif b/update/org.eclipse.update.ui/icons/full/wizban/new_folder_wiz.gif
deleted file mode 100644
index 093cd16..0000000
--- a/update/org.eclipse.update.ui/icons/full/wizban/new_folder_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/wizban/new_search_wiz.gif b/update/org.eclipse.update.ui/icons/full/wizban/new_search_wiz.gif
deleted file mode 100644
index 4c70954..0000000
--- a/update/org.eclipse.update.ui/icons/full/wizban/new_search_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/wizban/uninstall_wiz.gif b/update/org.eclipse.update.ui/icons/full/wizban/uninstall_wiz.gif
deleted file mode 100644
index 86d96c8..0000000
--- a/update/org.eclipse.update.ui/icons/full/wizban/uninstall_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/icons/full/wizban/update_wiz.gif b/update/org.eclipse.update.ui/icons/full/wizban/update_wiz.gif
deleted file mode 100644
index 259fd25..0000000
--- a/update/org.eclipse.update.ui/icons/full/wizban/update_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/plugin.properties b/update/org.eclipse.update.ui/plugin.properties
deleted file mode 100644
index eedc32c..0000000
--- a/update/org.eclipse.update.ui/plugin.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Update UI plugin.xml resources
-#
-name = Install/Update UI
-provider-name = International Business Machines Corp.
-
-actionSets.softwareUpdates.label = Software Updates
-actionSets.updateManager.label = &Update Manager
-
-searchCategories.updates = Available Updates
-searchCategories.updates.desc = <form><p>Search for updates to \
-features currently installed in this application. Updates are \
-features that have the same identifier as the installed features, \
-but newer versions.</p><p>Use scope settings to control the \
-extent of the search and the update sites that will be visited.</p></form>
-
-searchCategories.expression = Regular Expressions
-searchCategories.expression.desc = <form><p>Search for features that \
-contain desired text or reqular expression. Use the query settings \
-to configure search options.</p></form>
-
-searchCategories.plugin = Plug-ins in Features
-searchCategories.plugin.desc = <form><p>Look for plug-ins that \
-are packaged in the features. This search category is useful \
-when required plug-ins of the feature you wanted to install \
-were not found in this application.</p></form>
-
-mainPreference.name = Install/Update
-
-views.category.label = Update Manager
-views.updates.label = Updates
-views.configuration.label = Configuration
-views.preview.label = Preview
-views.webBrowser.label = External Preview
-perspective.label = Install/Update
-properties.site.label = Site Info
-properties.configuration.label = Configuration
-properties.preserved.label = Preserved Configuration
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/plugin.xml b/update/org.eclipse.update.ui/plugin.xml
deleted file mode 100644
index 98f55e5..0000000
--- a/update/org.eclipse.update.ui/plugin.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<plugin
- id="org.eclipse.update.ui"
- name="%name"
- version="2.0.0"
- provider-name="%provider-name"
- class="org.eclipse.update.internal.ui.UpdateUIPlugin">
-
- <runtime>
- <library name="updateui.jar">
- <export name="*"/>
- </library>
- </runtime>
- <requires>
- <import plugin="org.eclipse.core.runtime"/>
- <import plugin="org.eclipse.ui"/>
- <import plugin="org.eclipse.update.core"/>
- <import plugin="org.eclipse.update.ui.forms"/>
- <import plugin="org.eclipse.core.resources"/>
- <import plugin="org.apache.xerces"/>
- </requires>
-
-
- <extension-point id="searchCategory" name="Search Category" schema="schema/searchCategory.xsd"/>
-
- <extension
- point="org.eclipse.ui.actionSets">
- <actionSet
- label="%actionSets.softwareUpdates.label"
- visible="true"
- id="org.eclipse.update.ui.softwareUpdates">
- <action
- label="%actionSets.updateManager.label"
- icon="icons/full/cview16/update_pers.gif"
- class="org.eclipse.update.internal.ui.UpdateManagerAction"
- menubarPath="help/helpEnd"
- id="org.eclipse.update.ui.updateManager">
- </action>
- </actionSet>
- </extension>
- <extension
- point="org.eclipse.ui.views">
- <category
- name="%views.category.label"
- id="org.eclipse.update.ui">
- </category>
- <view
- name="%views.updates.label"
- icon="icons/full/cview16/updates.gif"
- category="org.eclipse.update.ui"
- class="org.eclipse.update.internal.ui.views.UpdatesView"
- id="org.eclipse.update.ui.UpdatesView">
- </view>
- <view
- name="%views.configuration.label"
- icon="icons/full/cview16/configs.gif"
- category="org.eclipse.update.ui"
- class="org.eclipse.update.internal.ui.views.ConfigurationView"
- id="org.eclipse.update.ui.ConfigurationView">
- </view>
- <view
- name="%views.preview.label"
- icon="icons/full/cview16/preview.gif"
- category="org.eclipse.update.ui"
- class="org.eclipse.update.internal.ui.views.DetailsView"
- id="org.eclipse.update.ui.DetailsView">
- </view>
- </extension>
- <extension
- point="org.eclipse.ui.perspectives">
- <perspective
- name="%perspective.label"
- icon="icons/full/cview16/update_pers.gif"
- class="org.eclipse.update.internal.ui.UpdatePerspective"
- id="org.eclipse.update.ui.UpdatePerspective">
- </perspective>
- </extension>
- <extension
- point="org.eclipse.ui.propertyPages">
- <page
- objectClass="org.eclipse.update.internal.ui.model.SiteBookmark"
- name="%properties.site.label"
- class="org.eclipse.update.internal.ui.properties.SiteBookmarkPropertyPage"
- id="org.eclipse.update.ui.sitePropertyPage">
- </page>
- <page
- objectClass="org.eclipse.update.configuration.IInstallConfiguration"
- name="%properties.configuration.label"
- class="org.eclipse.update.internal.ui.properties.ConfigurationPropertyPage"
- id="org.eclipse.update.ui.configPropertyPage">
- </page>
- <page
- objectClass="org.eclipse.update.internal.ui.model.PreservedConfiguration"
- name="%properties.preserved.label"
- class="org.eclipse.update.internal.ui.properties.ConfigurationPropertyPage"
- id="org.eclipse.update.ui.configPropertyPage">
- </page>
- </extension>
- <extension
- point="org.eclipse.update.ui.searchCategory">
- <search
- name="%searchCategories.updates"
- icon="icons/full/obj16/usearch_obj.gif"
- class="org.eclipse.update.internal.ui.search.UpdatesSearchCategory"
- id="org.eclipse.update.ui.updates">
- <description>
- %searchCategories.updates.desc
- </description>
- </search>
- <search
- name="%searchCategories.expression"
- icon="icons/full/obj16/tsearch_obj.gif"
- class="org.eclipse.update.internal.ui.search.ExpressionSearchCategory"
- id="org.eclipse.update.ui.expression">
- <description>
- %searchCategories.expression.desc
- </description>
- </search>
- <search
- name="%searchCategories.plugin"
- icon="icons/full/obj16/psearch_obj.gif"
- class="org.eclipse.update.internal.ui.search.PluginsSearchCategory"
- id="org.eclipse.update.ui.plugins">
- <description>
- %searchCategories.plugin.desc
- </description>
- </search>
- </extension>
- <extension
- point="org.eclipse.ui.preferencePages">
- <page
- name="%mainPreference.name"
- class="org.eclipse.update.internal.ui.preferences.MainPreferencePage"
- id="org.eclipse.update.internal.ui.preferences.MainPreferencePage">
- </page>
- </extension>
- <extension
- point="org.eclipse.update.core.deltaHandler">
- <display
- class="org.eclipse.update.internal.ui.wizards.InstallDeltaWizard">
- </display>
- </extension>
-
-</plugin>
diff --git a/update/org.eclipse.update.ui/schema/searchCategory.exsd b/update/org.eclipse.update.ui/schema/searchCategory.exsd
deleted file mode 100644
index 287d7ef..0000000
--- a/update/org.eclipse.update.ui/schema/searchCategory.exsd
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.update.ui">
-<annotation>
- <appInfo>
- <meta.schema plugin="org.eclipse.update.ui" id="searchCategory" name="Search Category"/>
- </appInfo>
- <documentation>
- [Enter description of this extension point]
- </documentation>
-</annotation>
-
- <element name="extension">
- <complexType>
- <sequence>
- <element ref="search" minOccurs="1" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="search">
- <annotation>
- <appInfo>
- <meta.element labelAttribute="name" icon="icon"/>
- </appInfo>
- </annotation>
- <complexType>
- <sequence>
- <element ref="description" minOccurs="0" maxOccurs="1"/>
- </sequence>
- <attribute name="id" type="string" use="required">
- <annotation>
- <documentation>
- unique identifier of this search category
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string" use="required">
- <annotation>
- <documentation>
- translatable name of this search category
- </documentation>
- </annotation>
- </attribute>
- <attribute name="class" type="string">
- <annotation>
- <documentation>
- a fully qualified name of the class that implements
-<samp>org.eclipse.update.internal.ui.search.ISearchQuery</samp>.
- </documentation>
- <appInfo>
- <meta.attribute kind="java" basedOn="org.eclipse.update.internal.ui.search.ISearchCategory"/>
- </appInfo>
- </annotation>
- </attribute>
- <attribute name="icon" type="string">
- <annotation>
- <documentation>
- a relative path to the image that will be used to represent
-instances of this search category in the UI.
- </documentation>
- <appInfo>
- <meta.attribute kind="resource"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="description" type="string">
- <annotation>
- <documentation>
- a short description of this search category
- </documentation>
- </annotation>
- </element>
-
- <annotation>
- <appInfo>
- <meta.section type="examples"/>
- </appInfo>
- <documentation>
- [Enter extension point usage example here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="apiInfo"/>
- </appInfo>
- <documentation>
- [Enter API information here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="implementation"/>
- </appInfo>
- <documentation>
- [Enter information about supplied implementation of this extension point.]
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="copyright"/>
- </appInfo>
- <documentation>
-
- </documentation>
- </annotation>
-
-</schema>
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateManagerAction.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateManagerAction.java
deleted file mode 100644
index 48dcb0e..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateManagerAction.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.eclipse.update.internal.ui;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.ui.*;
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * Insert the type's description here.
- * @see IWorkbenchWindowActionDelegate
- */
-public class UpdateManagerAction implements IWorkbenchWindowActionDelegate {
- /**
- * The constructor.
- */
- public UpdateManagerAction() {
- }
-
- /**
- * Insert the method's description here.
- * @see IWorkbenchWindowActionDelegate#run
- */
- public void run(IAction action) {
- IWorkbenchPage page = UpdateUIPlugin.getActiveWorkbenchWindow().getActivePage();
- if (page == null ||
- page.getPerspective().
- getId().equals(UpdatePerspective.PERSPECTIVE_ID))
- return;
- IWorkbenchWindow window = page.getWorkbenchWindow();
-
- try {
- IAdaptable input = UpdateUIPlugin.getWorkspace();
- window.getWorkbench().showPerspective(UpdatePerspective.PERSPECTIVE_ID, window);
- } catch (WorkbenchException e) {
- UpdateUIPlugin.logException(e, true);
- }
- }
-
- /**
- * Insert the method's description here.
- * @see IWorkbenchWindowActionDelegate#selectionChanged
- */
- public void selectionChanged(IAction arg0, ISelection arg1) {
- }
-
- /**
- * Insert the method's description here.
- * @see IWorkbenchWindowActionDelegate#dispose
- */
- public void dispose() {
- }
-
- /**
- * Insert the method's description here.
- * @see IWorkbenchWindowActionDelegate#init
- */
- public void init(IWorkbenchWindow arg0) {
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdatePerspective.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdatePerspective.java
deleted file mode 100644
index b2a90b9..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdatePerspective.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.eclipse.update.internal.ui;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.ui.*;
-import org.eclipse.jface.dialogs.MessageDialog;
-
-public class UpdatePerspective implements IPerspectiveFactory {
- private static final String PREFIX = "org.eclipse.update.ui.";
- public static final String PERSPECTIVE_ID = PREFIX + "UpdatePerspective";
- public static final String ID_UPDATES = PREFIX + "UpdatesView";
- public static final String ID_CONFIGURATION = PREFIX + "ConfigurationView";
- public static final String ID_DETAILS = PREFIX + "DetailsView";
- public static final String ID_BROWSER = PREFIX + "WebBrowser";
-
- public UpdatePerspective() {
- super();
- }
-
- public void createInitialLayout(IPageLayout factory) {
- factory.setEditorAreaVisible(false);
- factory.addView(
- ID_CONFIGURATION,
- IPageLayout.LEFT,
- 0.33f,
- factory.getEditorArea());
- factory.addView(ID_UPDATES, IPageLayout.BOTTOM, 0.5f, ID_CONFIGURATION);
- IFolderLayout folder = factory.createFolder("details", IPageLayout.RIGHT, 0.67f, factory.getEditorArea());
- folder.addView(ID_DETAILS);
- folder.addPlaceholder(ID_BROWSER);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPlugin.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPlugin.java
deleted file mode 100644
index 278b881..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPlugin.java
+++ /dev/null
@@ -1,248 +0,0 @@
-package org.eclipse.update.internal.ui;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.net.Authenticator;
-import java.text.MessageFormat;
-import java.util.*;
-
-import org.eclipse.core.boot.*;
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.*;
-import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.update.configuration.IConfiguredSite;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.forms.UpdateAdapterFactory;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.parts.AboutInfo;
-import org.eclipse.update.internal.ui.security.AuthorizationDatabase;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class UpdateUIPlugin extends AbstractUIPlugin {
- public static final String PLUGIN_ID = "org.eclipse.update.ui";
- //The shared instance.
- private static UpdateUIPlugin plugin;
- //Resource bundle.
- private ResourceBundle resourceBundle;
- private UpdateAdapterFactory adapterFactory;
- private UpdateModel model;
- private AuthorizationDatabase database;
- private AboutInfo aboutInfo;
-
- /**
- * The constructor.
- */
- public UpdateUIPlugin(IPluginDescriptor descriptor) {
- super(descriptor);
- plugin = this;
- try {
- resourceBundle =
- ResourceBundle.getBundle(
- "org.eclipse.update.internal.ui.UpdateUIPluginResources");
- } catch (MissingResourceException x) {
- resourceBundle = null;
- }
- }
-
- /**
- * Returns the shared instance.
- */
- public static UpdateUIPlugin getDefault() {
- return plugin;
- }
-
- public static IWorkbenchPage getActivePage() {
- return getDefault().internalGetActivePage();
- }
-
- private IWorkbenchPage internalGetActivePage() {
- return getWorkbench().getActiveWorkbenchWindow().getActivePage();
- }
-
- public static Shell getActiveWorkbenchShell() {
- return getActiveWorkbenchWindow().getShell();
- }
-
- public static IWorkbenchWindow getActiveWorkbenchWindow() {
- return getDefault().getWorkbench().getActiveWorkbenchWindow();
- }
-
- public static String getPluginId() {
- return getDefault().getDescriptor().getUniqueIdentifier();
- }
-
- public AboutInfo getAboutInfo() {
- return aboutInfo;
- }
-
- /**
- * Returns the workspace instance.
- */
- public static IWorkspace getWorkspace() {
- return ResourcesPlugin.getWorkspace();
- }
-
- /**
- * Returns the string from the plugin's resource bundle,
- * or 'key' if not found.
- */
- public static String getResourceString(String key) {
- ResourceBundle bundle = UpdateUIPlugin.getDefault().getResourceBundle();
- try {
- return bundle.getString(key);
- } catch (MissingResourceException e) {
- return key;
- }
- }
-
- public static String getFormattedMessage(String key, String[] args) {
- String text = getResourceString(key);
- return java.text.MessageFormat.format(text, args);
- }
-
- public static String getFormattedMessage(String key, String arg) {
- String text = getResourceString(key);
- return java.text.MessageFormat.format(text, new Object[] { arg });
- }
-
- /**
- * Returns the plugin's resource bundle,
- */
- public ResourceBundle getResourceBundle() {
- return resourceBundle;
- }
-
- public void startup() throws CoreException {
- super.startup();
- readInfo();
- model = new UpdateModel();
- model.startup();
- IAdapterManager manager = Platform.getAdapterManager();
- adapterFactory = new UpdateAdapterFactory();
- manager.registerAdapters(adapterFactory, UIModelObject.class);
- database = new AuthorizationDatabase();
- Authenticator.setDefault(database);
- }
-
- public void shutdown() throws CoreException {
- IAdapterManager manager = Platform.getAdapterManager();
- manager.unregisterAdapters(adapterFactory);
- model.shutdown();
- super.shutdown();
- }
-
- public UpdateModel getUpdateModel() {
- return model;
- }
-
- public static void logException(Throwable e) {
- logException(e, true);
- }
-
- public static void logException(Throwable e, boolean showErrorDialog) {
- if (e instanceof InvocationTargetException) {
- e = ((InvocationTargetException) e).getTargetException();
- }
-
- IStatus status = null;
- if (e instanceof CoreException) {
- status = ((CoreException) e).getStatus();
- } else {
- String message = e.getMessage();
- if (message == null)
- message = e.toString();
- status =
- new Status(
- IStatus.ERROR,
- getPluginId(),
- IStatus.OK,
- message,
- e);
- }
- log(status, showErrorDialog);
- }
-
- public static void log(IStatus status, boolean showErrorDialog) {
- if (showErrorDialog)
- ErrorDialog.openError(
- getActiveWorkbenchShell(),
- null,
- null,
- status);
- //ResourcesPlugin.getPlugin().getLog().log(status);
- Platform.getPlugin("org.eclipse.core.runtime").getLog().log(status);
- }
-
- public static IFeature[] searchSite(
- String featureId,
- IConfiguredSite site,
- boolean onlyConfigured)
- throws CoreException {
- IFeatureReference[] references = null;
-
- if (onlyConfigured)
- references = site.getConfiguredFeatures();
- else
- references = site.getSite().getFeatureReferences();
- Vector result = new Vector();
-
- for (int i = 0; i < references.length; i++) {
- IFeature feature = references[i].getFeature();
- String id = feature.getVersionedIdentifier().getIdentifier();
- if (featureId.equals(id)) {
- result.add(feature);
- }
- }
- return (IFeature[]) result.toArray(new IFeature[result.size()]);
- }
- /**
- * Gets the database.
- * @return Returns a AuthorizationDatabase
- */
- public AuthorizationDatabase getDatabase() {
- return database;
- }
-
- private void readInfo() {
- // determine the identifier of the "dominant" application
- IPlatformConfiguration conf =
- BootLoader.getCurrentPlatformConfiguration();
- String versionedFeatureId = conf.getPrimaryFeatureIdentifier();
-
- if (versionedFeatureId == null) {
- aboutInfo = new AboutInfo(null, null); // Ok to pass null
- } else {
- int index = versionedFeatureId.lastIndexOf("_"); //$NON-NLS-1$
- if (index == -1)
- aboutInfo = new AboutInfo(versionedFeatureId, null);
- else {
- String mainPluginName = versionedFeatureId.substring(0, index);
- PluginVersionIdentifier mainPluginVersion = null;
- try {
- mainPluginVersion =
- new PluginVersionIdentifier(
- versionedFeatureId.substring(index + 1));
- } catch (Exception e) {
- IStatus iniStatus = new Status(IStatus.ERROR, WorkbenchPlugin.getDefault().getDescriptor().getUniqueIdentifier(), 0, "Unknown plugin version " + versionedFeatureId, e); //$NON-NLS-1$
- log(iniStatus, true); //$NON-NLS-1$
- }
- aboutInfo = new AboutInfo(mainPluginName, mainPluginVersion);
- }
- }
- try {
- aboutInfo.readINIFile();
- } catch (CoreException e) {
- log(e.getStatus(), true); //$NON-NLS-1$
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginImages.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginImages.java
deleted file mode 100644
index 36e275c..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginImages.java
+++ /dev/null
@@ -1,208 +0,0 @@
-package org.eclipse.update.internal.ui;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.MalformedURLException;
-import org.eclipse.core.runtime.*;
-import java.io.File;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import java.net.URL;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.update.internal.ui.model.IFeatureAdapter;
-
-/**
- * Bundle of all images used by the PDE plugin.
- */
-public class UpdateUIPluginImages {
-
-
- private static final String NAME_PREFIX= UpdateUIPlugin.getPluginId()+".";
- private static final int NAME_PREFIX_LENGTH= NAME_PREFIX.length();
-
-
- private final static URL BASE_URL = UpdateUIPlugin.getDefault().getDescriptor().getInstallURL();
-
-
- private static ImageRegistry PLUGIN_REGISTRY;
-
- public final static String ICONS_PATH = "icons/full/";
-
- /**
- * Set of predefined Image Descriptors.
- */
-
- private static final String PATH_OBJ= ICONS_PATH+"obj16/";
- private static final String PATH_VIEW = ICONS_PATH+"cview16/";
- private static final String PATH_LCL= ICONS_PATH+"elcl16/";
- private static final String PATH_LCL_HOVER= ICONS_PATH+"clcl16/";
- private static final String PATH_LCL_DISABLED= ICONS_PATH+"dlcl16/";
- private static final String PATH_TOOL = ICONS_PATH + "etool16/";
- private static final String PATH_TOOL_HOVER = ICONS_PATH + "ctool16/";
- private static final String PATH_TOOL_DISABLED = ICONS_PATH + "dtool16/";
- private static final String PATH_OVR = ICONS_PATH + "ovr16/";
- private static final String PATH_WIZBAN = ICONS_PATH + "wizban/";
- private static final String PATH_FORMS = ICONS_PATH + "forms/";
-
-
- /**
- * Frequently used images
- */
- public static final String IMG_FORM_BANNER = NAME_PREFIX+"FORM_BANNER";
- public static final String IMG_FORM_UNDERLINE = NAME_PREFIX + "FORM_UNDERLINE";
-
- /**
- * OBJ16
- */
- public static final ImageDescriptor DESC_APP_OBJ = create(PATH_OBJ, "app_obj.gif");
- public static final ImageDescriptor DESC_BFOLDER_OBJ = create(PATH_OBJ, "bfolder_obj.gif");
- public static final ImageDescriptor DESC_CATEGORY_OBJ = create(PATH_OBJ, "category_obj.gif");
- public static final ImageDescriptor DESC_CD_OBJ = create(PATH_OBJ, "cd_obj.gif");
- public static final ImageDescriptor DESC_COMPUTER_OBJ = create(PATH_OBJ, "computer_obj.gif");
- public static final ImageDescriptor DESC_CONFIG_OBJ = create(PATH_OBJ, "config_obj.gif");
- public static final ImageDescriptor DESC_FEATURE_OBJ = create(PATH_OBJ, "feature_obj.gif");
- public static final ImageDescriptor DESC_FLOPPY_OBJ = create(PATH_OBJ, "floppy_obj.gif");
- public static final ImageDescriptor DESC_HISTORY_OBJ = create(PATH_OBJ, "history_obj.gif");
- public static final ImageDescriptor DESC_LSITE_OBJ = create(PATH_OBJ, "lsite_obj.gif");
- public static final ImageDescriptor DESC_SITE_OBJ = create(PATH_OBJ, "site_obj.gif");
- public static final ImageDescriptor DESC_PLACES_OBJ = create(PATH_OBJ, "places_obj.gif");
- public static final ImageDescriptor DESC_SAVED_OBJ = create(PATH_OBJ, "saved_obj.gif");
- public static final ImageDescriptor DESC_UNCONF_FEATURE_OBJ = create(PATH_OBJ, "unconf_feature_obj.gif");
- public static final ImageDescriptor DESC_UPDATES_OBJ = create(PATH_OBJ, "updates_obj.gif");
- public static final ImageDescriptor DESC_VFIXED_OBJ = create(PATH_OBJ, "vfixed_obj.gif");
- public static final ImageDescriptor DESC_VREMOTE_OBJ = create(PATH_OBJ, "vremote_obj.gif");
- public static final ImageDescriptor DESC_VREMOVABLE_OBJ = create(PATH_OBJ, "vremovable_obj.gif");
-
-
-
- /**
- * OVR16
- */
- public static final ImageDescriptor DESC_LINKED_CO = create(PATH_OVR, "linked_co.gif");
- public static final ImageDescriptor DESC_INSTALLABLE_CO = create(PATH_OVR, "installable_co.gif");
- public static final ImageDescriptor DESC_CURRENT_CO = create(PATH_OVR, "current_co.gif");
- public static final ImageDescriptor DESC_ERROR_CO = create(PATH_OVR, "error_co.gif");
-
- /**
- * VIEW16
- */
-
- public static final ImageDescriptor DESC_CONFIGS_VIEW = create(PATH_VIEW, "configs.gif");
- public static final ImageDescriptor DESC_SITES_VIEW = create(PATH_VIEW, "updates.gif");
-
- /**
- * LCL
- */
- public static final ImageDescriptor DESC_BACKWARD_NAV = create(PATH_LCL, "backward_nav.gif");
- public static final ImageDescriptor DESC_BACKWARD_NAV_H = create(PATH_LCL_HOVER, "backward_nav.gif");
- public static final ImageDescriptor DESC_BACKWARD_NAV_D = create(PATH_LCL_DISABLED, "backward_nav.gif");
- public static final ImageDescriptor DESC_FORWARD_NAV = create(PATH_LCL, "forward_nav.gif");
- public static final ImageDescriptor DESC_FORWARD_NAV_H = create(PATH_LCL_HOVER, "forward_nav.gif");
- public static final ImageDescriptor DESC_FORWARD_NAV_D = create(PATH_LCL_DISABLED, "forward_nav.gif");
- public static final ImageDescriptor DESC_HOME_NAV = create(PATH_LCL, "home_nav.gif");
- public static final ImageDescriptor DESC_HOME_NAV_H = create(PATH_LCL_HOVER, "home_nav.gif");
- public static final ImageDescriptor DESC_HOME_NAV_D = create(PATH_LCL_DISABLED, "home_nav.gif");
- public static final ImageDescriptor DESC_REFRESH_NAV = create(PATH_LCL, "refresh_nav.gif");
- public static final ImageDescriptor DESC_REFRESH_NAV_H = create(PATH_LCL_HOVER, "refresh_nav.gif");
- public static final ImageDescriptor DESC_REFRESH_NAV_D = create(PATH_LCL_DISABLED, "refresh_nav.gif");
- public static final ImageDescriptor DESC_STOP_NAV = create(PATH_LCL, "stop_nav.gif");
- public static final ImageDescriptor DESC_STOP_NAV_H = create(PATH_LCL_HOVER, "stop_nav.gif");
- public static final ImageDescriptor DESC_STOP_NAV_D = create(PATH_LCL_DISABLED, "stop_nav.gif");
- public static final ImageDescriptor DESC_GO_NAV = create(PATH_LCL, "go_nav.gif");
- public static final ImageDescriptor DESC_GO_NAV_H = create(PATH_LCL_HOVER, "go_nav.gif");
- public static final ImageDescriptor DESC_GO_NAV_D = create(PATH_LCL_DISABLED, "go_nav.gif");
- public static final ImageDescriptor DESC_SHOW_UNCONF = create(PATH_LCL, "show_unconf.gif");
- public static final ImageDescriptor DESC_SHOW_UNCONF_H = create(PATH_LCL_HOVER, "show_unconf.gif");
- public static final ImageDescriptor DESC_SHOW_UNCONF_D = create(PATH_LCL_DISABLED, "show_unconf.gif");
-
- /**
- * WIZ
- */
- public static final ImageDescriptor DESC_INSTALL_WIZ = create(PATH_WIZBAN, "install_wiz.gif");
- public static final ImageDescriptor DESC_UPDATE_WIZ = create(PATH_WIZBAN, "update_wiz.gif");
- public static final ImageDescriptor DESC_CONFIG_WIZ = create(PATH_WIZBAN, "config_wiz.gif");
- public static final ImageDescriptor DESC_UNINSTALL_WIZ = create(PATH_WIZBAN, "uninstall_wiz.gif");
- public static final ImageDescriptor DESC_INSTALL_BANNER = create(PATH_WIZBAN, "def_wizban.jpg");
- public static final ImageDescriptor DESC_FORM_BANNER = create(PATH_FORMS, "form_banner.gif");
- public static final ImageDescriptor DESC_FORM_UNDERLINE = create(PATH_FORMS, "form_underline.gif");
- public static final ImageDescriptor DESC_PROVIDER = create(PATH_FORMS, "def_provider.gif");
- public static final ImageDescriptor DESC_ITEM = create(PATH_FORMS, "topic.gif");
- public static final ImageDescriptor DESC_NEW_BOOKMARK = create(PATH_WIZBAN, "new_bookmark_wiz.gif");
- public static final ImageDescriptor DESC_NEW_FOLDER = create(PATH_WIZBAN, "new_folder_wiz.gif");
- public static final ImageDescriptor DESC_NEW_SEARCH = create(PATH_WIZBAN, "new_search_wiz.gif");
-
- private static ImageDescriptor create(String prefix, String name) {
- return ImageDescriptor.createFromURL(makeImageURL(prefix, name));
- }
-
-
- public static Image get(String key) {
- if (PLUGIN_REGISTRY==null) initialize();
- return PLUGIN_REGISTRY.get(key);
- }
-
-
-public static ImageDescriptor getImageDescriptorFromPlugin(
- IPluginDescriptor pluginDescriptor,
- String subdirectoryAndFilename) {
- URL installURL = pluginDescriptor.getInstallURL();
- try {
- URL newURL = new URL(installURL, subdirectoryAndFilename);
- return ImageDescriptor.createFromURL(newURL);
- }
- catch (MalformedURLException e) {
- }
- return null;
-}
-
-
-public static Image getImageFromPlugin(
- IPluginDescriptor pluginDescriptor,
- String subdirectoryAndFilename) {
- URL installURL = pluginDescriptor.getInstallURL();
- Image image = null;
- try {
- URL newURL = new URL(installURL, subdirectoryAndFilename);
- String key = newURL.toString();
- if (PLUGIN_REGISTRY==null) initialize();
- image = PLUGIN_REGISTRY.get(key);
- if (image==null) {
- ImageDescriptor desc = ImageDescriptor.createFromURL(newURL);
- image = desc.createImage();
- PLUGIN_REGISTRY.put(key, image);
- }
- }
- catch (MalformedURLException e) {
- }
- return image;
-}
-/* package */
-private static final void initialize() {
- PLUGIN_REGISTRY = new ImageRegistry();
- manage(IMG_FORM_BANNER, DESC_FORM_BANNER);
- manage(IMG_FORM_UNDERLINE, DESC_FORM_UNDERLINE);
-}
-
-
-private static URL makeImageURL(String prefix, String name) {
- String path = prefix + name;
- URL url = null;
- try {
- url = new URL(BASE_URL, path);
- }
- catch (MalformedURLException e) {
- return null;
- }
- return url;
-}
-
-public static Image manage(String key, ImageDescriptor desc) {
- Image image = desc.createImage();
- PLUGIN_REGISTRY.put(key, image);
- return image;
-}
-
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties
deleted file mode 100644
index ca7d413..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/UpdateUIPluginResources.properties
+++ /dev/null
@@ -1,390 +0,0 @@
-#
-#
-#
-InstallConfigurationPage.createdOn = Created On
-InstallConfigurationPage.currentConfig = \nCurrent Configuration
-InstallConfigurationPage.yes = Yes
-InstallConfigurationPage.no = No
-InstallConfigurationPage.ActivitySection.title=Activities
-InstallConfigurationPage.ActivitySection.desc=The following list shows \
-activities that caused the creation of this configuration:
-InstallConfigurationPage.ActivitySection.headers.date= Date
-InstallConfigurationPage.ActivitySection.headers.target= Target
-InstallConfigurationPage.ActivitySection.headers.action= Action
-InstallConfigurationPage.ActivitySection.headers.status= Status
-InstallConfigurationPage.ActivitySection.action.configure= Enabled
-InstallConfigurationPage.ActivitySection.action.featureInstall= Feature Installed
-InstallConfigurationPage.ActivitySection.action.featureRemove= Feature Removed
-InstallConfigurationPage.ActivitySection.action.siteInstall= Site Installed
-InstallConfigurationPage.ActivitySection.action.siteRemove= Site Removed
-InstallConfigurationPage.ActivitySection.action.unconfigure= Disabled
-InstallConfigurationPage.ActivitySection.action.unknown= Unknown
-InstallConfigurationPage.ActivitySection.status.ok = Success
-InstallConfigurationPage.ActivitySection.status.nok = Failure
-InstallConfigurationPage.ActivitySection.action.revert = Revert
-InstallConfigurationPage.ActivitySection.action.reconcile = Reconcile
-InstallConfigurationPage.ActivitySection.action.addpreserved = Preserved
-
-InstallConfigurationPage.RevertSection.title =Configuration Reversal
-InstallConfigurationPage.RevertSection.desc=You can revert from the current \
-to any of the previous configurations. Note that the reversal \
-will be only partial if some of the features that are part of the \
-desired configuration have since been deleted.
-
-InstallConfigurationPage.RevertSection.currentText=This is the current configuration.
-InstallConfigurationPage.RevertSection.revertText= \ To revert to the previous one, press:
-InstallConfigurationPage.RevertSection.revertButton=Revert
-InstallConfigurationPage.RevertSection.restoreText=To restore this configuration, press:
-InstallConfigurationPage.RevertSection.restoreButton=Restore
-InstallConfigurationPage.RevertSection.dialog.title=Revert/Restore configuration.
-InstallConfigurationPage.RevertSection.dialog.message=The configuration has been successfully \
-restored. You will need to restart the workbench to be able \
-to use it.
-
-
-Revert.ProblemDialog.title = Restore Problems
-
-BaseTreeView.Popup.ShowDetails = Show Details
-
-MyComputer.label = My Computer
-MyComputerPage.title= My Computer - {0}
-MyComputerPage.desc = Browse the file system in order to find a valid update site.
-
-VolumeLabelProvider.cdrom = Compact Disc
-VolumeLabelProvider.floppy3 = 3.5 Floppy
-VolumeLabelProvider.floppy5 = 5.25 Floppy
-VolumeLabelProvider.localDisk = Local Disc
-
-CategoryPage.title = Category
-CategoryPage.moreInfo = More Info
-
-FeaturePage.provider = Provider
-FeaturePage.version = \nVersion
-FeaturePage.installedVersion = \nInstalled Version
-FeaturePage.pendingVersion = {0} (changes pending)
-FeaturePage.size = \nDownload Size
-FeaturePage.os = Operating System
-FeaturePage.ws = \nWindowing System
-FeaturePage.nl = \nSupported Languages
-FeaturePage.arch = \nSupported Operating System Architecture
-FeaturePage.platforms = Supported Platforms
-FeaturePage.description = \nDescription
-FeaturePage.infoLink = More Info
-FeaturePage.licenseLink = License
-FeaturePage.copyrightLink = Copyright
-FeaturePage.notInstalled = Not Installed
-FeaturePage.sizeValue = {0} KB
-FeaturePage.unknownSizeValue = Unknown Size
-FeaturePage.doButton.uninstall = Uninstall
-FeaturePage.doButton.unconfigure = Disable
-FeaturePage.doButton.configure = Enable
-FeaturePage.doButton.update = Update
-FeaturePage.doButton.install = Install
-FeaturePage.dialog.utitle = Uninstall
-FeaturePage.dialog.title = Install
-FeaturePage.dialog.ctitle = Enable
-FeaturePage.dialog.uctitle = Disable
-FeaturePage.dialog.umessage = The feature has been successfully \
-uninstalled. You will need to restart the workbench to see the \
-effects of the action. Do you want to restart now?
-FeaturePage.dialog.message = The feature has been successfully \
-installed. You will need to restart the workbench to be able \
-to use it. Do you want to restart now?
-FeaturePage.dialog.cmessage = The feature has been successfully \
-enabled. You will need to restart the workbench to be able \
-to use it. Do you want to restart now?
-FeaturePage.dialog.ucmessage = The feature has been successfully \
-disabled. You will need to restart the workbench to see the \
-effects of the action. Do you want to restart now?
-
-FeaturePage.missing.title = Missing Plug-ins
-FeaturePage.missing.message = The feature you want to install requires plug-ins \
-that cannot be found in the current configuration. You can search for features that \
-contain required plug-ins and install them before this one or abort.
-
-FeaturePage.missing.search = &Search
-FeaturePage.missing.abort = &Abort
-FeaturePage.missing.searchObjectName = Missing plug-ins of {0}
-
-ActivityConstraints.rootMessage = Requested operation cannot be performed because it would invalidate the current configuration. See details for more information.
-ActivityConstraints.primary = Platform or primary feature must never be disabled.
-ActivityConstraints.prereq = About to loose required plug-in "{0}".
-ActivityConstraints.childMessage = {0} ({1}): {2}
-
-DetailsView.home.label=Go Home
-DetailsView.backward.label=Go Backward
-DetailsView.forward.label=Go Forward
-
-DetailsView.home.tooltip=Go to the Update Manager home page
-DetailsView.backward.tooltip=Go Back
-DetailsView.forward.tooltip=Go Forward
-
-InfoGroup.plainTextVersion = Plain Text Version
-InfoGroup.htmlVersion = HTML Version
-
-InstallableSitePage.title = Install Location
-InstallableSitePage.desc = <form><p>Install location is the place on your \
-disk where features are installed. This location is chosen in the \
-<b>Install</b> wizard.</p></form>
-
-LocalSitePage.title = Current Configuration
-ConfigurationView.current = Current Configuration
-ConfigurationView.showUnconfFeatures = Show Disabled Features
-ConfigurationView.showUnconfFeatures.tooltip = Show Disabled Features
-ConfigurationView.Popup.restore = Restore
-ConfigurationView.Popup.preserve = Save
-ConfigurationView.Popup.removePreserved=Remove
-ConfigurationView.historyFolder = Configuration History
-ConfigurationView.savedFolder = Saved Configurations
-
-HomePage.title = Welcome to Eclipse Update
-
-HomePage.updates.title= Feature Updates
-HomePage.updates.desc=<form><p>To check for updates for features you \
-have installed, go to <img href="image1"/> <a href="action1">Updates</a> and select \
-<b>Available Updates</b>. <b>Search</b> page will \
-be shown allowing you to initiate and customize the search.</p></form>
-
-HomePage.installs.title = Installing New Features
-HomePage.installs.desc = <form><p>To install new features, open \
-<img href="image1"/> <a href="action1">Updates</a> view and expand the desired site \
-(this operation may take time). Select features and read about \
-them in the <b>Preview</b>.</p>\
-<p>If you have a removable device (e.g. a CD-ROM) that containes updates, \
-you can navigate to them from <b>My Computer</b> object. You can also create \
-configurable searches in order to locate features that match a specific query. To \
-create a search, select <b>New</b>, <b>Search...</b> from the pop-up menu in <b>Updates</b></p></form>
-
-HomePage.uninstalls.title = Working With Installed Features
-HomePage.uninstals.desc = <form><p>Features that have been previously installed can be \
-<b>disabled</b> to make them invisible to you application, or re-enabled.</p>\
-<p>Disabled feature is still physically present on your computer. To permanently \
-remove it, you need to <b>uninstall</b> it.</p>\
-<p>To view the currently enabled features, expand <b>Current Configuration</b> object in \
-<img href="image1"/> <a href="action1">Configurations</a> view.</p></form>
-
-HomePage.history.title = Installation History
-HomePage.history.desc = <form><p>The history of your activity is kept in the <b>installation history</b>. \
-You can review it by expanding <b>History</b> folder in the <a href="action1">Configurations</a> view. \
-Only a limited number of history objects are kept. You can preserve stable configurations \
-in order to be able to recreate them at a later date.</p></form>
-
-NewSiteDialog.title = New Site Bookmark
-NewSiteDialog.url = &Site URL:
-NewSiteDialog.name = Site &Name:
-
-NewFolderDialog.title = New Folder
-NewFolderDialog.name= &Folder Name:
-
-NewSearchDialog.title = New Search
-NewSearchDialog.name = &Search Name:
-NewSearchDialog.category = Search &Category:
-
-SiteBookmarkPropertyPage.name = Name:
-SiteBookmarkPropertyPage.address = Address:
-ConfigurationPropertyPage.name = Configuration Name:
-SiteCategory.other.label = Other
-SiteCategory.other.description = Features found under this category are either not categorized or their categories could not be found on server.
-
-SiteBookmarkPropertySource.url.label=Site URL
-SiteBookmarkPropertySource.url.desc=a URL of the update site
-SiteBookmarkPropertySource.name.label=Site name
-SiteBookmarkPropertySource.name.desc=a display name of the update site
-
-SitePage.desc = <form><p>Expand the site folder to browse the \
-features available for download. By default, features are categorized if \
-category information exists on the site.</p><p>To view features in \
-a flat list, uncheck <b>Show Site Categories</b> option available on \
-the pull-down menu of the <img href="updateSites"/> <b>Updates</b> view.</p>\
-<p>Features can be designed to work on certain platforms only. These features \
-will not show up in the <b>Updates</b> view unless you uncheck \
-<b>Show Matching Features Only</b> option on the same pull-down menu.\
-</p></form>
-SitePage.link = Site home page
-
-UpdatesView.Popup.new=New
-UpdatesView.Popup.newSite = Site Bookmark...
-UpdatesView.Popup.newFolder = Folder...
-UpdatesView.Popup.newSearch = Search...
-UpdatesView.Popup.newLocalSite = Bookmark Location...
-UpdatesView.Popup.delete = Delete
-UpdatesView.Popup.refresh = Refresh
-UpdatesView.menu.showFiles = &Show My Computer Files
-UpdatesView.menu.showCategories = Show Site &Categories
-UpdatesView.menu.filterEnvironment = Show &Matching Features Only
-UpdatesView.newSearch.title = New Search
-UpdatesView.newBookmark.title = New Site Bookmark
-UpdatesView.newFolder.title = New Folder
-
-DiscoveryFolder = Sites to Visit
-DiscoveryFolderPage.title = Sites to Visit
-DiscoveryFolderPage.desc = This folder contains links to the update sites provided by features \
-installed in this application. Feature providers include them to let you know about sites \
-that contain features you might want to try out.
-
-BaseNewWizardPage.name = &Name:
-BaseNewWizardPage.createIn = &Create in:
-BaseNewWizardPage.existing = &Existing folders:
-BaseNewWizardPage.invalid = Container path is invalid
-
-NewFolderWizardPage.title = Create New Folder
-NewFolderWizardPage.desc = Create a new folder to organize your bookmarks. You can \
-choose an existing folder as a container or create a new root folder.
-
-NewSearchWizardPage.title = New Feature Search
-NewSearchWizardPage.desc = Create a new search for features. Use folders to organize \
-your search objects
-NewSearchWizardPage.category = &Category:
-
-NewSiteBookmarkWizardPage.title = New Update Site Bookmark
-NewSiteBookmarkWizardPage.desc = Bookmark an update site. Use folders to organize \
-your bookmarks.
-NewSiteBookmarkWizardPage.url = &URL:
-NewSiteBookmarkWizardPage.http = http://
-NewSiteBookmarkWizardPage.invalid = Invalid URL format
-
-UpdatesPage.title = Available Updates
-SearchPage.title = Search
-SearchPage.lastSearch = Last search: {0}
-SearchPage.noLastSearch = Last search: n/a
-SearchPage.searchNow = Search Now
-SearchPage.cancel = Cancel
-SearchPage.desc=<form><p>Search the update sites for features using various search criteria.\
-</p></form>
-SearchPage.query.label= Query Settings
-SearchPage.query.category= Search Category:
-SearchPage.options.label = Scope Settings
-SearchPage.options.myComputerCheck = Include My Computer in the search
-SearchPage.options.myComputerSettings.title = Search Settings
-SearchPage.options.myComputerSettings = Settings...
-SearchPage.options.fullModeCheck = Show results in extended form
-SearchPage.options.bookmarkCheck = Search bookmarked sites
-SearchPage.options.discoveryCheck = Search sites in "Places to Visit" folder
-SearchPage.options.filterCheck = Only include features applicable to this environment
-
-MyComputerSearchDialog.label = Select the volumes that should be searched:
-
-ExpressionSearchCategory.expression = Expression:
-ExpressionSearchCategory.case = Case sensitive
-ExpressionSearchCategory.look = Look for expression in:
-ExpressionSearchCategory.name = Feature name
-ExpressionSearchCategory.provider = Feature provider
-ExpressionSearchCategory.description = Feature description
-
-UpdatesSearchCategory.currentSearch = Available Feature Updates
-PluginSearchCategory.new = New...
-
-AvailableUpdates.name = Available Updates
-Search.begin = Searching for updates:
-Search.myComputer = Scanning My Computer:
-Search.contacting = Contacting site {0} ...
-Search.checking = Running the queries...
-
-UpdatesPage.SearchResultSection.title = Search Results
-UpdatesPage.SearchResultSection.desc = The following features satisfy the search criteria ({0}):
-UpdatesPage.SearchResultSection.nodesc = No features found.
-UpdatesPage.SearchResultSection.startdesc = Search in progress ...
-UpdatesPage.SearchResultSection.resultEntry = \
-<form><p><a href="openFeature">{0}</a></p>\
-<p>Provider: <b>{1}</b></p>\
-<p addVerticalSpace="false">Found at: <a href="openSite">{2}</a></p>\
-{3}\
-</form>
-
-BrowserPage.address = Address:
-BrowserPage.stop = Stop
-BrowserPage.go = Go
-BrowserPage.refresh = Refresh
-
-WebBrowserView.notAvailable = Embedded Web browser is not available. \
-Requiests for opening URLs are processed using Web browser registered to handle \
-Web pages on your system.
-WebBrowserView.address = Address:
-WebBrowserView.stop = Stop
-WebBrowserView.go = Go
-WebBrowserView.refresh = Refresh
-WebBrowserView.backward = Go Back
-WebBrowserView.forward = Go Forward
-
-InstallWizard.LicensePage.title = Feature License
-InstallWizard.LicensePage.desc = This feature has a license \
-agreement that you need to accept before proceeding with \
-the installation.
-InstallWizard.LicensePage.accept = &Accept
-InstallWizard.LicensePage.decline = &Decline
-
-InstallWizard.ReviewPage.title = Feature Install
-InstallWizard.ReviewPage.desc =This wizard helps you install \
-new, update or uninstall existing features of your product.
-InstallWizard.ReviewPage.about.install = You are about to install the following feature:
-InstallWizard.ReviewPage.about.uninstall = You are about to uninstall the following feature:
-InstallWizard.ReviewPage.about.unconfigure = You are about to disable the following feature:
-InstallWizard.ReviewPage.about.configure = You are about to enable the following feature:
-InstallWizard.ReviewPage.name = Name:
-InstallWizard.ReviewPage.provider = Provider:
-InstallWizard.ReviewPage.version = Version:
-InstallWizard.ReviewPage.correct.install = \nIf that is correct, select Next to continue.
-InstallWizard.ReviewPage.correct.uninstall = \nIf that is correct, select Finish.
-
-InstallWizard.TargetPage.title = Install Location
-InstallWizard.TargetPage.desc = Choose the location where the feature will be installed.
-InstallWizard.TargetPage.new = &New...
-InstallWizard.TargetPage.requiredSpace = Required space:
-InstallWizard.TargetPage.availableSpace = Free space:
-InstallWizard.TargetPage.location = Target Location
-InstallWizard.TargetPage.location.message = Select a new install location
-InstallWizard.TargetPage.location.empty = Target install location must be selected. If none is available, create a new one.
-InstallWizard.TargetPage.location.error.title = Invalid Location
-InstallWizard.TargetPage.location.error.message = The selected location cannot be used to install features: {0}
-InstallWizard.TargetPage.size = {0}KB
-InstallWizard.TargetPage.unknownSize = Unknown
-
-InstallWizard.error.unable=Unable to locate configuration site for the feature
-InstallWizard.error.old= Error while updating the old feature version
-
-InstallDeltaWizard.wtitle = Configuration Changes
-InstallDeltaWizard.processing = Processing pending changes:
-InstallDeltaWizard.title = Pending Configuration Changes
-InstallDeltaWizard.desc = The configuration of this application has changed. Select \
-the detected changes from the list for processing.
-InstallDeltaWizard.label = Detected &changes:
-
-MainPreferencePage.description = General settings for Install/Update Manager.
-MainPreferencePage.historySize = &Maximum number of 'History' configurations:
-MainPreferencePage.browserChoice = When opening Web links, use:
-MainPreferencePage.browserChoice.embedded = &Embedded Browser
-MainPreferencePage.browserChoice.system = &Default System Browser
-
-JarVerificationDialog.Verification=Verification
-JarVerificationDialog.AboutToInstall=You are about to install an unsigned {0}.
-JarVerificationDialog.NotDigitallySigned=This {0} has not been digitally signed.
-JarVerificationDialog.CannotVerifyProvider=The provider of this {0} cannot be verified.
-JarVerificationDialog.ContinueMayCorrupt=Continuing to install this feature may corrupt your installation.
-JarVerificationDialog.InstallMayCorrupt=Installing this feature may corrupt your installation.
-JarVerificationDialog.CorruptedContent=The content of this {0} has been corrupted
-JarVerificationDialog.ComponentNotInstalled=This feature will not be installed.
-JarVerificationDialog.SignedComponent=You are about to install a signed {0}.
-JarVerificationDialog.UnknownCertificate=The certificates used to authenticate this {0} are not recognized.
-JarVerificationDialog.UnableToVerifyProvider=The provider of this {0} cannot be verified.
-JarVerificationDialog.FileName=File Identifier:
-JarVerificationDialog.FeatureName=Feature name:
-JarVerificationDialog.FeatureIdentifier=Feature Identifier:
-JarVerificationDialog.Provider= Provider:
-JarVerificationDialog.MayChooseToInstall=You may choose to install the feature or cancel its installation.
-JarVerificationDialog.MayChooseToContinue=You may choose to continue to install the feature or cancel its installation.
-JarVerificationDialog.Install=Install Feature
-JarVerificationDialog.Continue=Continue Installing Feature
-JarVerificationDialog.Cancel=Cancel Feature Installation
-JarVerificationDialog.KnownCertificate=One of the certificates used to authenticate this {0} was recognized.
-JarVerificationDialog.ProviderKnown=The provider of this {0} has been validated by a trusted third party.
-JarVerificationDialog.Caution=\r\nCaution: \"{0}\" asserts that the content of this feature is safe. \r\nYou should only install this feature if you trust \"{0}\" to make that assertion
-JarVerificationDialog.RootCA= According to:
-JarVerificationDialog.SubjectCA= File signed by:
-JarVerificationDialog.CertificateInfo= Certificate:
-
-UserVerificationDialog.PasswordRequired=Password Required
-UserVerificationDialog.EnterNameAndPassword=Enter user name and password for:
-UserVerificationDialog.Domain=At the following domain:
-UserVerificationDialog.Password=Password:
-UserVerificationDialog.UserName=User name:
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/ActivityConstraints.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/ActivityConstraints.java
deleted file mode 100644
index b38a789..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/ActivityConstraints.java
+++ /dev/null
@@ -1,331 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.boot.BootLoader;
-import org.eclipse.core.runtime.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.PendingChange;
-
-/**
- *
- */
-public class ActivityConstraints {
- private static final String KEY_ROOT_MESSAGE =
- "ActivityConstraints.rootMessage";
- private static final String KEY_PRIMARY = "ActivityConstraints.primary";
- private static final String KEY_PREREQ = "ActivityConstraints.prereq";
- private static final String KEY_CHILD_MESSAGE =
- "ActivityConstraints.childMessage";
-
- public static IStatus validatePendingChange(PendingChange job) {
- ArrayList children = new ArrayList();
- switch (job.getJobType()) {
- case PendingChange.UNCONFIGURE :
- validateUnconfigure(job.getFeature(), children);
- break;
- case PendingChange.CONFIGURE :
- validateConfigure(job.getFeature(), children);
- break;
- case PendingChange.INSTALL :
- validateInstall(
- job.getOldFeature(),
- job.getFeature(),
- children);
- break;
- }
- if (children.size() > 0) {
- IStatus[] carray =
- (IStatus[]) children.toArray(new IStatus[children.size()]);
- String message = UpdateUIPlugin.getResourceString(KEY_ROOT_MESSAGE);
- return new MultiStatus(
- UpdateUIPlugin.getPluginId(),
- IStatus.ERROR,
- carray,
- message,
- null);
- }
- return null;
- }
-
- private static void validateUnconfigure(
- IFeature feature,
- ArrayList children) {
- try {
- // test for the platform feature
- if (isPlatformFeature(feature)) {
- children.add(
- createStatus(
- feature,
- UpdateUIPlugin.getResourceString(KEY_PRIMARY)));
- // That's enough - there is no need to check the rest
- // if we get to here.
- return;
- }
- // test if unconfiguring will invalidate prereqs
- ArrayList otherFeatures = computeOtherFeatures(feature);
- ArrayList plugins = computeUniquePlugins(otherFeatures);
- // Going plug-ins are those that are only listed in the feature
- // that will be unconfigured. Other plug-ins are referenced by
- // other configured features and should not be of our concern.
- ArrayList goingPlugins = new ArrayList();
- computeGoingPlugins(feature, plugins, goingPlugins);
- // See if any of the features depends on the plug-ins that
- // will go away
- for (int i = 0; i < otherFeatures.size(); i++) {
- IFeature otherFeature = (IFeature) otherFeatures.get(i);
- validatePrereqs(otherFeature, goingPlugins, true, children);
- }
-
- } catch (CoreException e) {
- children.add(e.getStatus());
- }
- }
-
- private static void validateConfigure(
- IFeature feature,
- ArrayList children) {
- // Check the prereqs
- try {
- ArrayList otherFeatures = computeOtherFeatures(feature);
- ArrayList plugins = computeUniquePlugins(otherFeatures);
- ArrayList goingPlugins = new ArrayList();
- computeGoingPlugins(feature, plugins, goingPlugins);
- validatePrereqs(feature, plugins, false, children);
- } catch (CoreException e) {
- children.add(e.getStatus());
- }
- }
-
- private static void validateInstall(
- IFeature oldFeature,
- IFeature newFeature,
- ArrayList children) {
- // just check if unconfiguring the old feature will
- // cause anything to break
- if (oldFeature == null) {
- // Installing a new feature is OK as long as
- // all of its prereqs are satisfied. This is
- // tested before we get to this class, so
- // no need to test again.
- return;
- }
- try {
- ArrayList otherFeatures = computeOtherFeatures(oldFeature);
- ArrayList plugins = computeUniquePlugins(otherFeatures);
- ArrayList goingPlugins = new ArrayList();
- computeGoingPlugins(oldFeature, plugins, goingPlugins);
- // now see if the new version of a feature will
- // bring the going plugins to zero.
- restoreGoingPlugins(newFeature, goingPlugins);
- validatePrereqs(oldFeature, goingPlugins, true, children);
- } catch (CoreException e) {
- children.add(e.getStatus());
- }
-
- }
-
- private static ArrayList computeOtherFeatures(IFeature thisFeature)
- throws CoreException {
- ArrayList features = new ArrayList();
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration config = localSite.getCurrentConfiguration();
- IConfiguredSite[] csites = config.getConfiguredSites();
-
- for (int i = 0; i < csites.length; i++) {
- IConfiguredSite csite = csites[i];
- IFeatureReference[] crefs = csite.getConfiguredFeatures();
- for (int j = 0; j < crefs.length; j++) {
- IFeatureReference cref = crefs[j];
- IFeature cfeature = cref.getFeature();
- if (thisFeature.equals(cfeature))
- continue;
- features.add(cfeature);
- }
- }
- // remove included features so that only the top-level features
- // remain on the list
- IFeature[] array =
- (IFeature[]) features.toArray(new IFeature[features.size()]);
- for (int i = 0; i < array.length; i++) {
- IFeature feature = array[i];
- IFeatureReference[] included =
- feature.getIncludedFeatureReferences();
- for (int j = 0; j < included.length; j++) {
- IFeatureReference ref = included[j];
- IFeature fref = ref.getFeature();
- int index = features.indexOf(fref);
- if (index != -1)
- features.remove(index);
- }
- }
- return features;
- }
-
- private static void addUniquePlugins(IFeature feature, ArrayList plugins)
- throws CoreException {
- IPluginEntry[] entries = feature.getPluginEntries();
- for (int i = 0; i < entries.length; i++) {
- IPluginEntry entry = entries[i];
- if (!plugins.contains(entry))
- plugins.add(entry);
- IFeatureReference[] included =
- feature.getIncludedFeatureReferences();
- for (int j = 0; j < included.length; j++) {
- IFeature fref = included[j].getFeature();
- addUniquePlugins(fref, plugins);
- }
- }
- }
-
- private static void computeGoingPlugins(
- IFeature feature,
- ArrayList plugins,
- ArrayList result)
- throws CoreException {
- IPluginEntry[] entries = feature.getPluginEntries();
- // plug-ins that are only referenced by this feature
- // and are not on the list will be disabled (going)
- // when the feature is disabled.
- for (int i = 0; i < entries.length; i++) {
- if (!plugins.contains(entries[i])) {
- result.add(entries[i]);
- }
- }
- IFeatureReference[] included = feature.getIncludedFeatureReferences();
- for (int i = 0; i < included.length; i++) {
- computeGoingPlugins(included[i].getFeature(), plugins, result);
- }
- }
-
- private static void restoreGoingPlugins(
- IFeature feature,
- ArrayList goingPlugins)
- throws CoreException {
- IPluginEntry[] entries = feature.getPluginEntries();
- // plug-ins that are only referenced by this feature
- // and are not on the list will be disabled (going)
- // when the feature is disabled.
- for (int i = 0; i < entries.length; i++) {
- int index = goingPlugins.indexOf(entries[i]);
- if (index != -1)
- goingPlugins.remove(index);
- }
- IFeatureReference[] included = feature.getIncludedFeatureReferences();
- for (int i = 0; i < included.length; i++) {
- restoreGoingPlugins(included[i].getFeature(), goingPlugins);
- }
- }
-
- private static void validatePrereqs(
- IFeature feature,
- ArrayList goingPlugins,
- boolean inclusion,
- ArrayList children) {
- IImport[] imports = feature.getImports();
- for (int i = 0; i < imports.length; i++) {
- IImport iimport = imports[i];
- VersionedIdentifier vid = iimport.getVersionedIdentifier();
- String message =
- UpdateUIPlugin.getFormattedMessage(KEY_PREREQ, vid.toString());
- boolean found = false;
- PluginVersionIdentifier version = vid.getVersion();
- boolean ignoreVersion =
- version.getMajorComponent() == 0
- && version.getMinorComponent() == 0
- && version.getServiceComponent() == 0;
-
- for (int j = 0; j < goingPlugins.size(); j++) {
- IPluginEntry entry = (IPluginEntry) goingPlugins.get(j);
- if (ignoreVersion) {
- if (entry
- .getVersionedIdentifier()
- .getIdentifier()
- .equals(vid.getIdentifier()))
- found = true;
- } else if (entry.getVersionedIdentifier().equals(vid))
- found = true;
- if (inclusion && found) {
- children.add(createStatus(feature, message));
- break;
- }
- }
- if (!inclusion && !found) {
- children.add(createStatus(feature, message));
- }
- }
- }
-
- private static boolean isPlatformFeature(IFeature feature)
- throws CoreException {
- String[] bootstrapPlugins =
- BootLoader
- .getCurrentPlatformConfiguration()
- .getBootstrapPluginIdentifiers();
- if (containsBootstrapPlugins(feature, bootstrapPlugins))
- return true;
- // is primary
- return feature.isPrimary();
- }
-
- private static boolean containsBootstrapPlugins(
- IFeature feature,
- String[] ids)
- throws CoreException {
- IPluginEntry[] entries = feature.getPluginEntries();
- // contains bootstrap plug-ins
- for (int i = 0; i < entries.length; i++) {
- IPluginEntry entry = entries[i];
- String id = entry.getVersionedIdentifier().getIdentifier();
- if (isOnTheList(id, ids))
- return true;
- }
- // test included
- IFeatureReference[] included = feature.getIncludedFeatureReferences();
- for (int i = 0; i < included.length; i++) {
- IFeatureReference ref = included[i];
- if (containsBootstrapPlugins(ref.getFeature(), ids))
- return true;
- }
- return false;
- }
-
- private static boolean isOnTheList(String id, String[] list) {
- for (int i = 0; i < list.length; i++) {
- if (id.equalsIgnoreCase(list[i]))
- return true;
- }
- return false;
- }
-
- private static ArrayList computeUniquePlugins(ArrayList otherFeatures)
- throws CoreException {
- ArrayList plugins = new ArrayList();
- for (int i = 0; i < otherFeatures.size(); i++) {
- IFeature otherFeature = (IFeature) otherFeatures.get(i);
- addUniquePlugins(otherFeature, plugins);
- }
- return plugins;
- }
-
- private static IStatus createStatus(IFeature feature, String message) {
- VersionedIdentifier vid = feature.getVersionedIdentifier();
- String id = vid.getIdentifier();
- PluginVersionIdentifier version = vid.getVersion();
- String fullMessage =
- UpdateUIPlugin.getFormattedMessage(
- KEY_CHILD_MESSAGE,
- new String[] {
- feature.getLabel(),
- version.toString(),
- message });
- return new Status(
- IStatus.ERROR,
- UpdateUIPlugin.getPluginId(),
- IStatus.OK,
- fullMessage,
- null);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/ActivitySection.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/ActivitySection.java
deleted file mode 100644
index 2174e5a..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/ActivitySection.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.text.DateFormat;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.configuration.IActivity;
-import org.eclipse.update.configuration.IInstallConfiguration;
-import org.eclipse.update.core.Utilities;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.pages.UpdateFormPage;
-import org.eclipse.update.ui.forms.internal.FormWidgetFactory;
-
-
-public class ActivitySection extends UpdateSection {
-// NL resource keys
- private static final String KEY_TITLE = "InstallConfigurationPage.ActivitySection.title";
- private static final String KEY_DESC = "InstallConfigurationPage.ActivitySection.desc";
- private static final String KEY_DATE = "InstallConfigurationPage.ActivitySection.headers.date";
- private static final String KEY_TARGET = "InstallConfigurationPage.ActivitySection.headers.target";
- private static final String KEY_ACTION = "InstallConfigurationPage.ActivitySection.headers.action";
- private static final String KEY_STATUS = "InstallConfigurationPage.ActivitySection.headers.status";
- private static final String KEY_CONFIGURE = "InstallConfigurationPage.ActivitySection.action.configure";
- private static final String KEY_FEATURE_INSTALL = "InstallConfigurationPage.ActivitySection.action.featureInstall";
- private static final String KEY_FEATURE_REMOVE = "InstallConfigurationPage.ActivitySection.action.featureRemove";
- private static final String KEY_SITE_INSTALL = "InstallConfigurationPage.ActivitySection.action.siteInstall";
- private static final String KEY_SITE_REMOVE = "InstallConfigurationPage.ActivitySection.action.siteRemove";
- private static final String KEY_UNCONFIGURE = "InstallConfigurationPage.ActivitySection.action.unconfigure";
- private static final String KEY_UNKNOWN = "InstallConfigurationPage.ActivitySection.action.unknown";
- private static final String KEY_REVERT = "InstallConfigurationPage.ActivitySection.action.revert";
- private static final String KEY_RECONCILIATION = "InstallConfigurationPage.ActivitySection.action.reconcile";
- private static final String KEY_ADD_PRESERVED = "InstallConfigurationPage.ActivitySection.action.addpreserved";
- private static final String KEY_OK = "InstallConfigurationPage.ActivitySection.status.ok";
- private static final String KEY_NOK = "InstallConfigurationPage.ActivitySection.status.nok";
-
- private Composite container;
- private FormWidgetFactory factory;
- private Control [] headers;
- public ActivitySection(UpdateFormPage page) {
- super(page);
- setAddSeparator(false);
- setHeaderText(UpdateUIPlugin.getResourceString(KEY_TITLE));
- setDescription(UpdateUIPlugin.getResourceString(KEY_DESC));
- }
-
- public Composite createClient(Composite parent, FormWidgetFactory factory) {
- GridLayout layout = new GridLayout();
- this.factory = factory;
- header.setForeground(factory.getColor(factory.COLOR_COMPOSITE_SEPARATOR));
- layout.marginWidth = 0;
- layout.horizontalSpacing = 10;
- container = factory.createComposite(parent);
- container.setLayout(layout);
- layout.numColumns = 4;
-
- headers = new Control [5];
-
- headers[0] = createHeader(container, factory, UpdateUIPlugin.getResourceString(KEY_DATE));
- headers[1] = createHeader(container, factory, UpdateUIPlugin.getResourceString(KEY_TARGET));
- headers[2] = createHeader(container, factory, UpdateUIPlugin.getResourceString(KEY_ACTION));
- headers[3] = createHeader(container, factory, UpdateUIPlugin.getResourceString(KEY_STATUS));
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- headers[3].setLayoutData(gd);
- Composite separator = factory.createCompositeSeparator(container);
- headers[4] = separator;
- gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.heightHint = 1;
- gd.horizontalSpan = 4;
- separator.setLayoutData(gd);
- separator.setBackground(factory.getBorderColor());
- return container;
- }
-
- private boolean isHeader(Control c) {
- for (int i=0; i<headers.length; i++) {
- if (c.equals(headers[i])) return true;
- }
- return false;
- }
-
- public void configurationChanged(IInstallConfiguration config) {
- Control [] children = container.getChildren();
- for (int i=0; i<children.length; i++) {
- Control child = children[i];
- if (!isHeader(child))
- children[i].dispose();
- }
-
- IActivity [] activities = config.getActivities();
- for (int i=0; i<activities.length; i++) {
- IActivity activity = activities[i];
- factory.createLabel(container, Utilities.format(activity.getDate()));
- createLimitedLabel(container, activity.getLabel(), 300, factory);
- factory.createLabel(container, getActionLabel(activity));
- factory.createLabel(container, getStatusLabel(activity));
- }
- Composite separator = factory.createCompositeSeparator(container);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.heightHint = 1;
- gd.horizontalSpan = 4;
- separator.setLayoutData(gd);
- separator.setBackground(factory.getBorderColor());
- factory.createLabel(container, null);
- container.layout(true);
- container.getParent().layout(true);
- }
-
- private void createLimitedLabel(Composite container, String text, int limit, FormWidgetFactory factory) {
- CLabel clabel = new CLabel(container, SWT.NULL);
- clabel.setBackground(factory.getBackgroundColor());
- clabel.setForeground(factory.getForegroundColor());
- clabel.setText(text);
- GridData gd = new GridData();
- gd.widthHint = limit;
- clabel.setLayoutData(gd);
- }
-
- private Label createHeader(Composite parent, FormWidgetFactory factory, String text) {
- Label label = factory.createLabel(parent, text);
- label.setFont(JFaceResources.getBannerFont());
- return label;
- }
-
- private String getActionLabel(IActivity activity) {
- int action = activity.getAction();
- switch (action) {
- case IActivity.ACTION_CONFIGURE:
- return UpdateUIPlugin.getResourceString(KEY_CONFIGURE);
- case IActivity.ACTION_FEATURE_INSTALL:
- return UpdateUIPlugin.getResourceString(KEY_FEATURE_INSTALL);
- case IActivity.ACTION_FEATURE_REMOVE:
- return UpdateUIPlugin.getResourceString(KEY_FEATURE_REMOVE);
- case IActivity.ACTION_SITE_INSTALL:
- return UpdateUIPlugin.getResourceString(KEY_SITE_INSTALL);
- case IActivity.ACTION_SITE_REMOVE:
- return UpdateUIPlugin.getResourceString(KEY_SITE_REMOVE);
- case IActivity.ACTION_UNCONFIGURE:
- return UpdateUIPlugin.getResourceString(KEY_UNCONFIGURE);
- case IActivity.ACTION_REVERT:
- return UpdateUIPlugin.getResourceString(KEY_REVERT);
- case IActivity.ACTION_RECONCILIATION:
- return UpdateUIPlugin.getResourceString(KEY_RECONCILIATION);
- case IActivity.ACTION_ADD_PRESERVED:
- return UpdateUIPlugin.getResourceString(KEY_ADD_PRESERVED);
- default:
- return UpdateUIPlugin.getResourceString(KEY_UNKNOWN);
- }
- }
-
- private String getStatusLabel(IActivity activity) {
- switch (activity.getStatus()) {
- case IActivity.STATUS_OK:
- return UpdateUIPlugin.getResourceString(KEY_OK);
- case IActivity.STATUS_NOK:
- return UpdateUIPlugin.getResourceString(KEY_NOK);
- }
- return UpdateUIPlugin.getResourceString(KEY_UNKNOWN);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/CategoryForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/CategoryForm.java
deleted file mode 100644
index b8738f5..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/CategoryForm.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.pages.*;
-import org.eclipse.update.internal.ui.parts.*;
-import org.eclipse.update.internal.ui.views.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.ui.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.swt.custom.BusyIndicator;
-import java.net.URL;
-import org.eclipse.core.runtime.CoreException;
-
-
-public class CategoryForm extends UpdateWebForm {
- private final static String KEY_TITLE = "CategoryPage.title";
- private final static String KEY_MORE_INFO = "CategoryPage.moreInfo";
- SiteCategory currentCategory;
- Label textLabel;
- SelectableFormLabel link;
-
-public CategoryForm(UpdateFormPage page) {
- super(page);
-}
-
-public void dispose() {
- super.dispose();
-}
-
-public void initialize(Object modelObject) {
- setHeadingText(UpdateUIPlugin.getResourceString(KEY_TITLE));
- super.initialize(modelObject);
- //((Composite)getControl()).layout(true);
-}
-
-protected void createContents(Composite parent) {
- HTMLTableLayout layout = new HTMLTableLayout();
- parent.setLayout(layout);
- layout.leftMargin = layout.rightMargin = 10;
- layout.topMargin = 10;
- layout.horizontalSpacing = 0;
- layout.verticalSpacing = 20;
- layout.numColumns = 1;
-
- FormWidgetFactory factory = getFactory();
- textLabel = factory.createLabel(parent, null, SWT.WRAP);
-
- IHyperlinkListener listener;
-
- listener = new HyperlinkAdapter() {
- public void linkActivated(Control link) {
- if (currentCategory==null) return;
- BusyIndicator.showWhile(getControl().getDisplay(),
- new Runnable() {
- public void run() {
- ICategory category = currentCategory.getCategory();
- if (category!=null) {
- IURLEntry info = category.getDescription();
- URL infoURL = info.getURL();
- if (infoURL!=null) {
- DetailsView dv = (DetailsView)getPage().getView();
- dv.showURL(infoURL.toString());
- }
- }
- }
- });
- }
- };
- link = new SelectableFormLabel(parent, SWT.NULL);
- link.setText(UpdateUIPlugin.getResourceString(KEY_MORE_INFO));
- factory.turnIntoHyperlink(link, listener);
- link.setVisible(false);
-}
-
-public void expandTo(Object obj) {
- if (obj instanceof SiteCategory) {
- inputChanged((SiteCategory)obj);
- }
-}
-
-private void inputChanged(SiteCategory category) {
- setHeadingText(category.getCategory().getLabel());
- IURLEntry info = category.getCategory().getDescription();
- if (info!=null) {
- String text = info.getAnnotation();
- if (text!=null)
- textLabel.setText(text);
- else
- textLabel.setText("");
- link.setVisible(info.getURL()!=null);
- }
- else {
- textLabel.setText("");
- link.setVisible(false);
- }
- textLabel.getParent().layout();
- ((Composite)getControl()).layout();
- getControl().redraw();
- currentCategory = category;
-}
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsForm.java
deleted file mode 100644
index 7473abe..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsForm.java
+++ /dev/null
@@ -1,854 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.URL;
-import java.util.*;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.resource.*;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.pages.UpdateFormPage;
-import org.eclipse.update.internal.ui.search.*;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.internal.ui.wizards.*;
-import org.eclipse.update.ui.forms.internal.*;
-
-public class DetailsForm extends PropertyWebForm {
- // NL keys
-
- private static final String KEY_PROVIDER = "FeaturePage.provider";
- private static final String KEY_VERSION = "FeaturePage.version";
- private static final String KEY_IVERSION = "FeaturePage.installedVersion";
- private static final String KEY_PENDING_VERSION = "FeaturePage.pendingVersion";
- private static final String KEY_SIZE = "FeaturePage.size";
- private static final String KEY_OS = "FeaturePage.os";
- private static final String KEY_WS = "FeaturePage.ws";
- private static final String KEY_NL = "FeaturePage.nl";
- private static final String KEY_ARCH = "FeaturePage.arch";
- private static final String KEY_PLATFORMS = "FeaturePage.platforms";
- private static final String KEY_DESC = "FeaturePage.description";
- private static final String KEY_INFO_LINK = "FeaturePage.infoLink";
- private static final String KEY_LICENSE_LINK = "FeaturePage.licenseLink";
- private static final String KEY_COPYRIGHT_LINK = "FeaturePage.copyrightLink";
- private static final String KEY_NOT_INSTALLED = "FeaturePage.notInstalled";
- private static final String KEY_SIZE_VALUE = "FeaturePage.sizeValue";
- private static final String KEY_UNKNOWN_SIZE_VALUE =
- "FeaturePage.unknownSizeValue";
- private static final String KEY_DO_UNCONFIGURE =
- "FeaturePage.doButton.unconfigure";
- private static final String KEY_DO_CONFIGURE = "FeaturePage.doButton.configure";
- private static final String KEY_DO_UPDATE = "FeaturePage.doButton.update";
- private static final String KEY_DO_INSTALL = "FeaturePage.doButton.install";
- private static final String KEY_DO_UNINSTALL = "FeaturePage.doButton.uninstall";
- private static final String KEY_DIALOG_UTITLE = "FeaturePage.dialog.utitle";
- private static final String KEY_DIALOG_TITLE = "FeaturePage.dialog.title";
- private static final String KEY_DIALOG_CTITLE = "FeaturePage.dialog.ctitle";
- private static final String KEY_DIALOG_UCTITLE = "FeaturePage.dialog.uctitle";
- private static final String KEY_DIALOG_UMESSAGE = "FeaturePage.dialog.umessage";
- private static final String KEY_DIALOG_MESSAGE = "FeaturePage.dialog.message";
- private static final String KEY_DIALOG_CMESSAGE = "FeaturePage.dialog.cmessage";
- private static final String KEY_DIALOG_UCMESSAGE =
- "FeaturePage.dialog.ucmessage";
- private static final String KEY_MISSING_TITLE = "FeaturePage.missing.title";
- private static final String KEY_MISSING_MESSAGE = "FeaturePage.missing.message";
- private static final String KEY_MISSING_SEARCH = "FeaturePage.missing.search";
- private static final String KEY_MISSING_ABORT = "FeaturePage.missing.abort";
- private static final String KEY_SEARCH_OBJECT_NAME =
- "FeaturePage.missing.searchObjectName";
- //
-
- private Label imageLabel;
- private Label providerLabel;
- private Label versionLabel;
- private Label installedVersionLabel;
- private Label sizeLabel;
- private Label osLabel;
- private Label wsLabel;
- private Label nlLabel;
- private Label archLabel;
- private Label descriptionText;
- private URL infoLinkURL;
- private SelectableFormLabel infoLinkLabel;
- private InfoLink licenseLink;
- private InfoLink copyrightLink;
- private ReflowGroup supportedPlatformsGroup;
- private Image providerImage;
- private Button uninstallButton;
- private Button doButton;
- private IFeature currentFeature;
- private IFeatureAdapter currentAdapter;
- private ModelListener modelListener;
- private Hashtable imageCache = new Hashtable();
- private HyperlinkHandler sectionHandler;
- private boolean alreadyInstalled;
- private IFeature[] installedFeatures;
- private boolean newerVersion;
-
- class ModelListener implements IUpdateModelChangedListener {
- /**
- * @see IUpdateModelChangedListener#objectAdded(Object, Object)
- */
- public void objectsAdded(Object parent, Object[] children) {
- if (isCurrentFeature(children))
- refresh();
- }
-
- boolean isCurrentFeature(Object[] children) {
- for (int i = 0; i < children.length; i++) {
- Object obj = children[i];
- if (obj instanceof PendingChange) {
- PendingChange job = (PendingChange) obj;
- if (job.getFeature().equals(currentFeature)) {
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * @see IUpdateModelChangedListener#objectRemoved(Object, Object)
- */
- public void objectsRemoved(Object parent, Object[] children) {
- if (isCurrentFeature(children))
- doButton.setEnabled(true);
- }
-
- /**
- * @see IUpdateModelChangedListener#objectChanged(Object, String)
- */
- public void objectChanged(Object object, String property) {
- }
- }
-
- abstract class LinkListener implements IHyperlinkListener {
- public abstract URL getURL();
- public void linkActivated(Control linkLabel) {
- URL url = getURL();
- if (url != null)
- openURL(url.toString());
- }
- public void linkEntered(Control linkLabel) {
- URL url = getURL();
- if (url != null)
- showStatus(url.toString());
- }
- public void linkExited(Control linkLabel) {
- showStatus(null);
- }
-
- private void showStatus(String text) {
- IViewSite site = getPage().getView().getViewSite();
- IStatusLineManager sm = site.getActionBars().getStatusLineManager();
- sm.setMessage(text);
- }
- }
-
- abstract class ReflowGroup extends ExpandableGroup {
- public void expanded() {
- reflow();
- updateSize();
- }
- public void collapsed() {
- reflow();
- updateSize();
- }
- protected SelectableFormLabel createTextLabel(
- Composite parent,
- FormWidgetFactory factory) {
- SelectableFormLabel label = super.createTextLabel(parent, factory);
- label.setFont(JFaceResources.getBannerFont());
- return label;
- }
- protected HyperlinkHandler getHyperlinkHandler(FormWidgetFactory factory) {
- return sectionHandler;
- }
- }
-
- public DetailsForm(UpdateFormPage page) {
- super(page);
- providerImage = UpdateUIPluginImages.DESC_PROVIDER.createImage();
- modelListener = new ModelListener();
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- model.addUpdateModelChangedListener(modelListener);
- sectionHandler = new HyperlinkHandler();
- }
-
- public void dispose() {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- model.removeUpdateModelChangedListener(modelListener);
- providerImage.dispose();
- for (Enumeration enum = imageCache.elements(); enum.hasMoreElements();) {
- Image image = (Image) enum.nextElement();
- image.dispose();
- }
- imageCache.clear();
- sectionHandler.dispose();
- super.dispose();
- }
-
- public void initialize(Object modelObject) {
- setHeadingText("");
- super.initialize(modelObject);
- }
-
- private void configureSectionHandler(FormWidgetFactory factory) {
- sectionHandler.setHyperlinkUnderlineMode(HyperlinkHandler.UNDERLINE_NEVER);
- sectionHandler.setBackground(factory.getBackgroundColor());
- sectionHandler.setForeground(
- factory.getColor(factory.COLOR_COMPOSITE_SEPARATOR));
- }
-
- public void createContents(Composite container) {
- HTMLTableLayout layout = new HTMLTableLayout();
- layout.numColumns = 2;
- container.setLayout(layout);
- layout.rightMargin = 0;
- GridData gd;
-
- configureSectionHandler(factory);
-
- GridLayout glayout = new GridLayout();
- Composite properties = factory.createComposite(container);
- properties.setLayout(glayout);
- glayout.marginWidth = glayout.marginHeight = 0;
- glayout.verticalSpacing = 0;
-
- providerLabel =
- createProperty(properties, UpdateUIPlugin.getResourceString(KEY_PROVIDER));
- versionLabel =
- createProperty(properties, UpdateUIPlugin.getResourceString(KEY_VERSION));
- installedVersionLabel =
- createProperty(properties, UpdateUIPlugin.getResourceString(KEY_IVERSION));
- sizeLabel =
- createProperty(properties, UpdateUIPlugin.getResourceString(KEY_SIZE));
- supportedPlatformsGroup = new ReflowGroup() {
- public void fillExpansion(Composite expansion, FormWidgetFactory factory) {
- GridLayout layout = new GridLayout();
- expansion.setLayout(layout);
- layout.marginWidth = 0;
- osLabel = createProperty(expansion, UpdateUIPlugin.getResourceString(KEY_OS));
- wsLabel = createProperty(expansion, UpdateUIPlugin.getResourceString(KEY_WS));
- nlLabel = createProperty(expansion, UpdateUIPlugin.getResourceString(KEY_NL));
- archLabel = createProperty(expansion, UpdateUIPlugin.getResourceString(KEY_ARCH));
- }
- };
- supportedPlatformsGroup.setText(
- UpdateUIPlugin.getResourceString(KEY_PLATFORMS));
- new Label(properties, SWT.NULL);
- supportedPlatformsGroup.createControl(properties, factory);
- setFocusControl(supportedPlatformsGroup.getControl());
-
- imageLabel = factory.createLabel(container, null);
- TableData td = new TableData();
- td.align = TableData.CENTER;
- //td.valign = TableData.MIDDLE;
- imageLabel.setLayoutData(td);
-
- Label label =
- createHeading(container, UpdateUIPlugin.getResourceString(KEY_DESC));
- td = new TableData();
- td.colspan = 2;
- label.setLayoutData(td);
- descriptionText = factory.createLabel(container, null, SWT.WRAP);
- td = new TableData();
- td.colspan = 2;
- td.grabHorizontal = true;
- descriptionText.setLayoutData(td);
-
- glayout = new GridLayout();
- glayout.numColumns = 5;
- glayout.horizontalSpacing = 20;
- glayout.marginWidth = 10;
-
- Composite l = factory.createCompositeSeparator(container);
- l.setBackground(factory.getBorderColor());
- td = new TableData();
- td.colspan = 2;
- td.heightHint = 1;
- td.align = TableData.FILL;
- l.setLayoutData(td);
-
- Composite footer = factory.createComposite(container);
- td = new TableData();
- td.colspan = 2;
- td.align = TableData.FILL;
- td.valign = TableData.FILL;
- footer.setLayoutData(td);
- footer.setLayout(glayout);
-
- LinkListener listener = new LinkListener() {
- public URL getURL() {
- return infoLinkURL;
- }
- };
- infoLinkLabel = new SelectableFormLabel(footer, SWT.NULL);
- infoLinkLabel.setText(UpdateUIPlugin.getResourceString(KEY_INFO_LINK));
- factory.turnIntoHyperlink(infoLinkLabel, listener);
- gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
- infoLinkLabel.setLayoutData(gd);
- licenseLink = new InfoLink((DetailsView) getPage().getView());
- licenseLink.setText(UpdateUIPlugin.getResourceString(KEY_LICENSE_LINK));
- licenseLink.createControl(footer, factory);
- gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
- licenseLink.getControl().setLayoutData(gd);
- copyrightLink = new InfoLink((DetailsView) getPage().getView());
- copyrightLink.setText(UpdateUIPlugin.getResourceString(KEY_COPYRIGHT_LINK));
- copyrightLink.createControl(footer, factory);
- gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
- copyrightLink.getControl().setLayoutData(gd);
-
- uninstallButton = factory.createButton(footer, "", SWT.PUSH);
- uninstallButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- doUninstall();
- }
- });
- gd =
- new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_BEGINNING);
- gd.grabExcessHorizontalSpace = true;
- uninstallButton.setVisible(false);
- uninstallButton.setText(UpdateUIPlugin.getResourceString(KEY_DO_UNINSTALL));
- uninstallButton.setLayoutData(gd);
-
- doButton = factory.createButton(footer, "", SWT.PUSH);
- doButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- doButtonSelected();
- }
- });
- gd =
- new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_BEGINNING);
- //gd.grabExcessHorizontalSpace = true;
- doButton.setLayoutData(gd);
- }
-
- public void expandTo(final Object obj) {
- BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {
- public void run() {
- if (obj instanceof IFeature) {
- currentAdapter = null;
- currentFeature = (IFeature) obj;
- refresh();
- } else if (obj instanceof IFeatureAdapter) {
- try {
- currentFeature = ((IFeatureAdapter) obj).getFeature();
- currentAdapter = (IFeatureAdapter) obj;
- refresh();
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- } else {
- currentFeature = null;
- currentAdapter = null;
- refresh();
- }
- }
- });
- }
-
- private String getInstalledVersion(IFeature feature) {
- alreadyInstalled = false;
- VersionedIdentifier vid = feature.getVersionedIdentifier();
- PluginVersionIdentifier version = vid.getVersion();
- newerVersion = installedFeatures.length > 0;
-
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < installedFeatures.length; i++) {
- IFeature installedFeature = installedFeatures[i];
- VersionedIdentifier ivid = installedFeature.getVersionedIdentifier();
- if (buf.length() > 0)
- buf.append(", ");
- PluginVersionIdentifier iversion = ivid.getVersion();
- buf.append(iversion.toString());
- if (ivid.equals(vid)) {
- alreadyInstalled = true;
- } else {
- if (iversion.isGreaterOrEqualTo(version))
- newerVersion = false;
- }
- }
- if (buf.length() > 0) {
- String versionText = buf.toString();
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- PendingChange change = model.findRelatedPendingChange(feature);
- if (change != null) {
- return UpdateUIPlugin.getFormattedMessage(KEY_PENDING_VERSION, versionText);
- } else
- return versionText;
- } else
- return null;
- }
-
- private IFeature[] getInstalledFeatures(IFeature feature) {
- Vector features = new Vector();
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration config = localSite.getCurrentConfiguration();
- IConfiguredSite[] isites = config.getConfiguredSites();
- VersionedIdentifier vid = feature.getVersionedIdentifier();
- String id = vid.getIdentifier();
-
- for (int i = 0; i < isites.length; i++) {
- IConfiguredSite isite = isites[i];
- IFeature[] result = UpdateUIPlugin.searchSite(id, isite, true);
- for (int j = 0; j < result.length; j++) {
- IFeature installedFeature = result[j];
- features.add(installedFeature);
- }
- }
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- return (IFeature[]) features.toArray(new IFeature[features.size()]);
- }
-
- private void refresh() {
- IFeature feature = currentFeature;
-
- if (feature == null)
- return;
-
- installedFeatures = getInstalledFeatures(feature);
-
- setHeadingText(feature.getLabel());
- providerLabel.setText(feature.getProvider());
- versionLabel.setText(feature.getVersionedIdentifier().getVersion().toString());
- String installedVersion = getInstalledVersion(feature);
- if (installedVersion == null)
- installedVersion = UpdateUIPlugin.getResourceString(KEY_NOT_INSTALLED);
- installedVersionLabel.setText(installedVersion);
- long size = feature.getInstallSize();
- String format = null;
- if (size != -1) {
- String stext = Long.toString(size);
- String pattern = UpdateUIPlugin.getResourceString(KEY_SIZE_VALUE);
- format = UpdateUIPlugin.getFormattedMessage(pattern, stext);
- } else {
- format = UpdateUIPlugin.getResourceString(KEY_UNKNOWN_SIZE_VALUE);
- }
- sizeLabel.setText(format);
- if (feature.getDescription() != null)
- descriptionText.setText(feature.getDescription().getAnnotation());
- else
- descriptionText.setText("");
- Image logoImage = loadProviderImage(feature);
- if (logoImage == null)
- logoImage = providerImage;
- imageLabel.setImage(logoImage);
- infoLinkURL = null;
- if (feature.getDescription() != null)
- infoLinkURL = feature.getDescription().getURL();
- infoLinkLabel.setVisible(infoLinkURL != null);
-
- setOS(feature.getOS());
- setWS(feature.getWS());
- setNL(feature.getNL());
- setArch(feature.getArch());
-
- licenseLink.setInfo(feature.getLicense());
- copyrightLink.setInfo(feature.getCopyright());
- doButton.setVisible(getDoButtonVisibility());
- uninstallButton.setVisible(getUninstallButtonVisibility());
- if (doButton.isVisible())
- updateButtonText(newerVersion);
- reflow();
- updateSize();
- ((Composite) getControl()).redraw();
- }
-
- private boolean getDoButtonVisibility() {
- if (currentFeature instanceof MissingFeature)
- return false;
- if (currentAdapter==null || currentAdapter.isIncluded()) return false;
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- if (model.findRelatedPendingChange(currentFeature) != null)
- return false;
- if (currentAdapter instanceof IConfiguredSiteContext) {
- // part of the local configuration
- IConfiguredSiteContext context = (IConfiguredSiteContext) currentAdapter;
- if (!context.getInstallConfiguration().isCurrent())
- return false;
- else
- return true;
- }
- // Random site feature
- if (alreadyInstalled)
- return false;
- // Not installed - check if there are other
- // features with this ID that are installed
- // and that are newer than this one
- if (installedFeatures.length > 0 && !newerVersion)
- return false;
- return true;
- }
-
- private boolean getUninstallButtonVisibility() {
- if (currentFeature instanceof MissingFeature)
- return false;
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- if (model.isPending(currentFeature))
- return false;
- if (currentAdapter instanceof IConfiguredSiteContext) {
- boolean configured = isConfigured();
- return !configured;
- }
- return false;
- }
-
- private boolean isConfigured() {
- if (currentAdapter instanceof IConfiguredSiteContext) {
- IConfiguredSiteContext context = (IConfiguredSiteContext) currentAdapter;
- IConfiguredSite csite = context.getConfigurationSite();
- IFeatureReference fref = csite.getSite().getFeatureReference(currentFeature);
- IFeatureReference[] cfeatures = csite.getConfiguredFeatures();
- for (int i = 0; i < cfeatures.length; i++) {
- if (cfeatures[i].equals(fref))
- return true;
- }
- }
- return false;
- }
-
- private void updateButtonText(boolean update) {
- if (currentAdapter instanceof IConfiguredSiteContext) {
- boolean configured = isConfigured();
- if (configured)
- doButton.setText(UpdateUIPlugin.getResourceString(KEY_DO_UNCONFIGURE));
- else
- doButton.setText(UpdateUIPlugin.getResourceString(KEY_DO_CONFIGURE));
- } else if (update) {
- doButton.setText(UpdateUIPlugin.getResourceString(KEY_DO_UPDATE));
- } else
- doButton.setText(UpdateUIPlugin.getResourceString(KEY_DO_INSTALL));
- }
-
- private Image loadProviderImage(IFeature feature) {
- Image image = null;
- URL imageURL = feature.getImage();
- if (imageURL == null)
- return null;
- // check table
- image = (Image) imageCache.get(imageURL);
- if (image == null) {
- ImageDescriptor id = ImageDescriptor.createFromURL(imageURL);
- image = id.createImage();
- if (image != null)
- imageCache.put(imageURL, image);
- }
- return image;
- }
-
- private void reflow() {
- versionLabel.getParent().layout(true);
- doButton.getParent().layout(true);
- imageLabel.getParent().layout(true);
- ((Composite) getControl()).layout(true);
- }
-
- private void setOS(String os) {
- if (os == null)
- osLabel.setText("");
- else {
- String[] array = getTokens(os);
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < array.length; i++) {
- if (i > 0)
- buf.append("\n");
- buf.append(mapOS(array[i]));
- }
- osLabel.setText(buf.toString());
- }
- }
-
- private String mapOS(String key) {
- return key;
- }
-
- private String mapWS(String key) {
- return key;
- }
-
- private String mapArch(String key) {
- return key;
- }
-
- private String mapNL(String nl) {
- String language, country;
-
- int loc = nl.indexOf('_');
- if (loc != -1) {
- language = nl.substring(0, loc);
- country = nl.substring(loc + 1);
- } else {
- language = nl;
- country = "";
- }
- Locale locale = new Locale(language, country);
- return locale.getDisplayName();
- }
-
- private void setWS(String ws) {
- if (ws == null)
- wsLabel.setText("");
- else {
- String[] array = getTokens(ws);
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < array.length; i++) {
- if (i > 0)
- buf.append("\n");
- buf.append(mapWS(array[i]));
- }
- wsLabel.setText(buf.toString());
- }
- }
-
- private void setArch(String arch) {
- if (arch == null)
- archLabel.setText("");
- else {
- String[] array = getTokens(arch);
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < array.length; i++) {
- if (i > 0)
- buf.append("\n");
- buf.append(mapArch(array[i]));
- }
- archLabel.setText(buf.toString());
- }
- }
-
- private void setNL(String nl) {
- if (nl == null)
- nlLabel.setText("");
- else {
- String[] array = getTokens(nl);
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < array.length; i++) {
- if (i > 0)
- buf.append("\n");
- buf.append(mapNL(array[i]));
- }
- nlLabel.setText(buf.toString());
- }
- }
-
- private String[] getTokens(String source) {
- Vector result = new Vector();
- StringTokenizer stok = new StringTokenizer(source, ",");
- while (stok.hasMoreTokens()) {
- String tok = stok.nextToken();
- result.add(tok);
- }
- return (String[]) result.toArray(new String[result.size()]);
- }
-
- private void openURL(final String url) {
- BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {
- public void run() {
- DetailsView dv = (DetailsView) getPage().getView();
- dv.showURL(url);
- }
- });
- }
-
- private void doUninstall() {
- executeJob(PendingChange.UNINSTALL);
- }
-
- private void executeJob(int mode) {
- if (currentFeature != null) {
- if (mode == PendingChange.INSTALL) {
- if (testDependencies(currentFeature) == false)
- return;
- }
- final PendingChange job = createPendingChange(mode);
- IStatus validationStatus = ActivityConstraints.validatePendingChange(job);
- if (validationStatus!=null) {
- ErrorDialog.openError(UpdateUIPlugin.getActiveWorkbenchShell(), null, null, validationStatus);
- return;
- }
- BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {
- public void run() {
- InstallWizard wizard = new InstallWizard(job);
- WizardDialog dialog =
- new InstallWizardDialog(UpdateUIPlugin.getActiveWorkbenchShell(), wizard);
- dialog.create();
- dialog.getShell().setSize(600, 500);
- dialog.open();
- if (wizard.isSuccessfulInstall())
- showRestartMessage(job);
- }
- });
- }
- }
-
- private void doButtonSelected() {
- if (currentFeature != null) {
- int mode;
- if (currentAdapter instanceof IConfiguredSiteContext) {
- boolean configured = isConfigured();
- if (configured)
- mode = PendingChange.UNCONFIGURE;
- else
- mode = PendingChange.CONFIGURE;
- } else {
- mode = PendingChange.INSTALL;
- }
- executeJob(mode);
- }
- }
-
- private boolean testDependencies(IFeature feature) {
- IImport[] imports = feature.getImports();
- if (imports.length == 0)
- return true;
- ArrayList missing = new ArrayList();
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration config = localSite.getCurrentConfiguration();
- IConfiguredSite[] configSites = config.getConfiguredSites();
-
- for (int i = 0; i < imports.length; i++) {
- if (!isOnTheList(imports[i], configSites)) {
- missing.add(imports[i]);
- }
- }
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- return false;
- }
- if (missing.size() > 0) {
- // show missing plug-in dialog and ask to search
- MessageDialog dialog =
- new MessageDialog(
- getControl().getShell(),
- UpdateUIPlugin.getResourceString(KEY_MISSING_TITLE),
- (Image) null,
- UpdateUIPlugin.getResourceString(KEY_MISSING_MESSAGE),
- MessageDialog.WARNING,
- new String[] {
- UpdateUIPlugin.getResourceString(KEY_MISSING_SEARCH),
- UpdateUIPlugin.getResourceString(KEY_MISSING_ABORT)},
- 0);
- int result = dialog.open();
- if (result == 0) {
- initiatePluginSearch(missing);
- return false;
- } else if (result == 1) {
- return true;
- } else {
- return false;
- }
- } else
- return true;
- }
- private boolean isOnTheList(IImport iimport, IConfiguredSite[] configSites) {
- for (int i = 0; i < configSites.length; i++) {
- IConfiguredSite csite = configSites[i];
- ISite site = csite.getSite();
- IPluginEntry[] entries = site.getPluginEntries();
- if (isOnTheList(iimport, entries))
- return true;
- }
- return false;
- }
- private boolean isOnTheList(IImport iimport, IPluginEntry[] entries) {
- VersionedIdentifier importId = iimport.getVersionedIdentifier();
- for (int i = 0; i < entries.length; i++) {
- IPluginEntry entry = entries[i];
- VersionedIdentifier entryId = entry.getVersionedIdentifier();
- if (entryId.equals(importId))
- return true;
- }
- return false;
- }
-
- private void initiatePluginSearch(ArrayList missing) {
- SearchCategoryDescriptor desc =
- SearchCategoryRegistryReader.getDefault().getDescriptor(
- "org.eclipse.update.ui.plugins");
- if (desc == null)
- return;
- String name =
- UpdateUIPlugin.getFormattedMessage(
- KEY_SEARCH_OBJECT_NAME,
- currentFeature.getLabel());
- SearchObject search = new SearchObject(name, desc, true);
- search.setPersistent(false);
- search.setInstantSearch(true);
- search.setSearchBookmarks(true);
- search.setSearchDiscovery(true);
- String value = PluginsSearchCategory.encodeImports(missing);
- search.getSettings().put("imports", value);
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- try {
- UpdateUIPlugin.getActivePage().showView(UpdatePerspective.ID_UPDATES);
- } catch (PartInitException e) {
- }
- model.addBookmark(search);
- try {
- UpdateUIPlugin.getActivePage().showView(UpdatePerspective.ID_DETAILS);
- } catch (PartInitException e) {
- }
- }
-
- private PendingChange createPendingChange(int type) {
- if (type == PendingChange.INSTALL && installedFeatures.length > 0) {
- return new PendingChange(installedFeatures[0], currentFeature);
- } else {
- return new PendingChange(currentFeature, type);
- }
- }
-
- private void showRestartMessage(PendingChange job) {
- String titleKey;
- String messageKey;
-
- switch (job.getJobType()) {
- case PendingChange.INSTALL :
- titleKey = KEY_DIALOG_TITLE;
- messageKey = KEY_DIALOG_MESSAGE;
- break;
- case PendingChange.CONFIGURE :
- titleKey = KEY_DIALOG_CTITLE;
- messageKey = KEY_DIALOG_CMESSAGE;
- break;
- case PendingChange.UNCONFIGURE :
- titleKey = KEY_DIALOG_UCTITLE;
- messageKey = KEY_DIALOG_UCMESSAGE;
- break;
- case PendingChange.UNINSTALL :
- titleKey = KEY_DIALOG_UTITLE;
- messageKey = KEY_DIALOG_UMESSAGE;
- break;
- default :
- return;
- }
- String title = UpdateUIPlugin.getResourceString(titleKey);
- String message = UpdateUIPlugin.getResourceString(messageKey);
- boolean restart =
- MessageDialog.openConfirm(
- UpdateUIPlugin.getActiveWorkbenchShell(),
- title,
- message);
- if (restart)
- PlatformUI.getWorkbench().restart();
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsHistory.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsHistory.java
deleted file mode 100644
index 5e78d51..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsHistory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.util.*;
-
-public class DetailsHistory {
- private final static int MAX_SIZE = 50;
- private LinkedList history;
- private int current = -1;
-
- public DetailsHistory() {
- history = new LinkedList();
- }
-
- private void resetIterator() {
- current = history.size() -1;
- }
-
- public void add(DetailsHistoryItem item) {
- if (history.isEmpty() ||
- history.getLast().equals(item)==false) {
- //System.out.println("Item added: "+item);
- history.addLast(item);
- if (history.size() > MAX_SIZE)
- history.removeFirst();
- }
- resetIterator();
- }
- public void add(String pageId, Object input) {
- this.add(new DetailsHistoryItem(pageId, input));
- }
- public boolean hasNext() {
- //if (iterator==null) return false;
- //return iterator.hasNext();
- if (current== -1) return false;
- if (current == history.size()-1) return false;
- return true;
- }
- public boolean hasPrevious() {
- //if (iterator==null) return false;
- //return iterator.hasPrevious();
- if (current == -1) return false;
- return (current>0);
- }
- public DetailsHistoryItem getNext() {
- if (hasNext()) {
- DetailsHistoryItem item = (DetailsHistoryItem)history.get(++current);
- //System.out.println("Next returned: "+item);
- return item;
- }
- return null;
- }
- public DetailsHistoryItem getPrevious() {
- if (hasPrevious()) {
- DetailsHistoryItem item = (DetailsHistoryItem)history.get(--current);
- //System.out.println("Prev returned: "+item);
- return item;
- }
- return null;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsHistoryItem.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsHistoryItem.java
deleted file mode 100644
index d83b2b0..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DetailsHistoryItem.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-public class DetailsHistoryItem {
- private String pageId;
- private Object input;
-
- public DetailsHistoryItem(String pageId, Object input) {
- this.pageId = pageId;
- this.input = input;
- }
-
- public String getPageId() {
- return pageId;
- }
-
- public Object getInput() {
- return input;
- }
- public boolean equals(Object itemObj) {
- if (itemObj instanceof DetailsHistoryItem) {
- DetailsHistoryItem item = (DetailsHistoryItem)itemObj;
- if (!pageId.equals(item.getPageId())) return false;
- if (input==null && item.getInput()==null) return true;
- if (input.equals(item.getInput())) return true;
- }
- return false;
- }
- public String toString() {
- return pageId+", "+input;
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DiscoveryFolderForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DiscoveryFolderForm.java
deleted file mode 100644
index 27c57d6..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/DiscoveryFolderForm.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-
-import org.eclipse.update.internal.ui.pages.*;
-import org.eclipse.update.internal.ui.parts.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.ui.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.swt.custom.BusyIndicator;
-import java.net.URL;
-import org.eclipse.core.runtime.CoreException;
-import java.text.MessageFormat;
-
-
-
-public class DiscoveryFolderForm extends UpdateWebForm {
- private SiteBookmark currentBookmark;
- private static final String KEY_TITLE = "DiscoveryFolderPage.title";
- private static final String KEY_DESC = "DiscoveryFolderPage.desc";
-
-public DiscoveryFolderForm(UpdateFormPage page) {
- super(page);
-}
-
-public void dispose() {
- super.dispose();
-}
-
-public void initialize(Object modelObject) {
- setHeadingText(UpdateUIPlugin.getResourceString(KEY_TITLE));
- super.initialize(modelObject);
-}
-
-protected void createContents(Composite parent) {
- HTMLTableLayout layout = new HTMLTableLayout();
- parent.setLayout(layout);
- layout.leftMargin = layout.rightMargin = 10;
- layout.topMargin = 10;
- layout.horizontalSpacing = 0;
- layout.verticalSpacing = 20;
- layout.numColumns = 1;
-
- FormWidgetFactory factory = getFactory();
-
- Label text = factory.createLabel(parent, null, SWT.WRAP);
- text.setText(UpdateUIPlugin.getResourceString(KEY_DESC));
-}
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/IUpdateForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/IUpdateForm.java
deleted file mode 100644
index 5ef0f56..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/IUpdateForm.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.update.internal.ui.pages.IUpdateFormPage;
-import org.eclipse.update.ui.forms.internal.IForm;
-
-public interface IUpdateForm extends IForm {
- public IUpdateFormPage getPage();
-
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InfoLink.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InfoLink.java
deleted file mode 100644
index 88e42b4..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InfoLink.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.update.core.*;
-import org.eclipse.swt.layout.*;
-import java.net.URL;
-import org.eclipse.swt.SWT;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.views.*;
-
-public class InfoLink extends HyperlinkAdapter {
- private IURLEntry info;
- private SelectableFormLabel linkLabel;
- private DetailsView view;
- private boolean visible = true;
- private String text="";
-
- public InfoLink(DetailsView view) {
- this.view = view;
- }
-
- public void createControl(Composite composite, FormWidgetFactory factory) {
- linkLabel = factory.createSelectableLabel(composite, text);
- factory.turnIntoHyperlink(linkLabel, this);
- linkLabel.setVisible(visible);
- }
-
- public Control getControl() {
- return linkLabel;
- }
-
- public void linkActivated(Control link) {
- URL url = info.getURL();
- if (url!=null) {
- view.showURL(url.toString());
- return;
- }
- String annotation = info.getAnnotation();
- if (annotation !=null && annotation.length()>0) {
- view.showText(annotation);
- }
- }
-
- public void setInfo(IURLEntry info) {
- this.info = info;
- if (info!=null) {
- boolean hasText = info.getAnnotation()!=null && info.getAnnotation().length()>0;
- boolean hasURL = info.getURL()!=null;
- setVisible(hasText || hasURL);
- }
- else setVisible(false);
- }
-
- private void setVisible(boolean visible) {
- this.visible = visible;
- if (linkLabel!=null) {
- linkLabel.setVisible(visible);
- }
- }
- /**
- * Gets the text.
- * @return Returns a String
- */
- public String getText() {
- return text;
- }
-
- /**
- * Sets the text.
- * @param text The text to set
- */
- public void setText(String text) {
- this.text = text;
- if (linkLabel != null) {
- linkLabel.setText(text);
- }
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InstallConfigurationForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InstallConfigurationForm.java
deleted file mode 100644
index 6622d1d..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InstallConfigurationForm.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.text.DateFormat;
-import java.util.Date;
-
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.configuration.IInstallConfiguration;
-import org.eclipse.update.core.Utilities;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.pages.UpdateFormPage;
-import org.eclipse.update.ui.forms.internal.*;
-
-public class InstallConfigurationForm extends PropertyWebForm {
- private static final String KEY_CREATED_ON =
- "InstallConfigurationPage.createdOn";
- private static final String KEY_CURRENT_CONFIG =
- "InstallConfigurationPage.currentConfig";
- private static final String KEY_YES = "InstallConfigurationPage.yes";
- private static final String KEY_NO = "InstallConfigurationPage.no";
-
- private IInstallConfiguration currentConfiguration;
- private Label dateLabel;
- private Label currentLabel;
- private ActivitySection activitySection;
- private RevertSection revertSection;
- private IUpdateModelChangedListener modelListener;
-
- public InstallConfigurationForm(UpdateFormPage page) {
- super(page);
- }
-
- public void dispose() {
- super.dispose();
- }
-
- public void initialize(Object modelObject) {
- setHeadingText("");
- super.initialize(modelObject);
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- modelListener = new IUpdateModelChangedListener() {
- public void objectsAdded(Object parent, Object[] children) {
- }
- public void objectsRemoved(Object parent, Object[] children) {
- }
- public void objectChanged(Object obj, String property) {
- if (obj instanceof PreservedConfiguration)
- obj = ((PreservedConfiguration) obj).getConfiguration();
- if (obj.equals(currentConfiguration)) {
- inputChanged(currentConfiguration);
- }
-
- }
- };
- model.addUpdateModelChangedListener(modelListener);
- }
-
- protected void createContents(Composite parent) {
- HTMLTableLayout layout = new HTMLTableLayout();
- parent.setLayout(layout);
- layout.leftMargin = layout.rightMargin = 10;
- layout.topMargin = 10;
- layout.horizontalSpacing = 0;
- layout.verticalSpacing = 0;
- layout.numColumns = 1;
-
- FormWidgetFactory factory = getFactory();
-
- dateLabel =
- createProperty(parent, UpdateUIPlugin.getResourceString(KEY_CREATED_ON));
- currentLabel =
- createProperty(parent, UpdateUIPlugin.getResourceString(KEY_CURRENT_CONFIG));
- factory.createLabel(parent, null);
-
- activitySection = new ActivitySection((UpdateFormPage) getPage());
- Control control = activitySection.createControl(parent, factory);
- TableData td = new TableData();
- //td.align = TableData.FILL;
- //td.grabHorizontal = true;
- td.valign = TableData.TOP;
- //td.colspan = 2;
- control.setLayoutData(td);
-
- revertSection = new RevertSection((UpdateFormPage) getPage());
- control = revertSection.createControl(parent, factory);
- td = new TableData();
- td.align = TableData.FILL;
- td.grabHorizontal = true;
- td.valign = TableData.TOP;
- control.setLayoutData(td);
-
- registerSection(activitySection);
- registerSection(revertSection);
- }
-
- protected Object createPropertyLayoutData() {
- TableData td = new TableData();
- //td.indent = 10;
- return td;
- }
-
- public void expandTo(Object obj) {
- if (obj instanceof PreservedConfiguration) {
- obj = ((PreservedConfiguration) obj).getConfiguration();
- }
- if (obj instanceof IInstallConfiguration) {
- inputChanged((IInstallConfiguration) obj);
- }
- }
-
- private void inputChanged(IInstallConfiguration configuration) {
- setHeadingText(configuration.getLabel());
- Date date = configuration.getCreationDate();
- dateLabel.setText(Utilities.format(date));
- String isCurrent =
- configuration.isCurrent()
- ? UpdateUIPlugin.getResourceString(KEY_YES)
- : UpdateUIPlugin.getResourceString(KEY_NO);
- currentLabel.setText(isCurrent);
-
- activitySection.configurationChanged(configuration);
- revertSection.configurationChanged(configuration);
- // reflow
- dateLabel.getParent().layout(true);
- ((Composite) getControl()).layout(true);
- getControl().redraw();
- updateSize();
- currentConfiguration = configuration;
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InstallableSiteForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InstallableSiteForm.java
deleted file mode 100644
index 30d58e2..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/InstallableSiteForm.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.pages.*;
-import org.eclipse.update.internal.ui.parts.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.ui.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.swt.custom.BusyIndicator;
-import java.net.URL;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.swt.events.*;
-import org.eclipse.update.ui.forms.internal.engine.FormEngine;
-
-public class InstallableSiteForm extends UpdateWebForm {
-private static final String KEY_TITLE = "InstallableSitePage.title";
-private static final String KEY_DESC = "InstallableSitePage.desc";
-private static final String KEY_NEW_LOC = "InstallableSitePage.newLocation";
-
-private IConfiguredSite currentSite;
-private Label urlLabel;
-
-public InstallableSiteForm(UpdateFormPage page) {
- super(page);
-}
-
-public void dispose() {
- super.dispose();
-}
-
-public void initialize(Object modelObject) {
- setHeadingText(UpdateUIPlugin.getResourceString(KEY_TITLE));
- super.initialize(modelObject);
- //((Composite)getControl()).layout(true);
-}
-
-protected void createContents(Composite parent) {
- HTMLTableLayout layout = new HTMLTableLayout();
- parent.setLayout(layout);
- layout.leftMargin = layout.rightMargin = 10;
- layout.topMargin = 10;
- layout.horizontalSpacing = 0;
- layout.verticalSpacing = 20;
- layout.numColumns = 1;
-
- FormWidgetFactory factory = getFactory();
- urlLabel = factory.createHeadingLabel(parent, null);
- FormEngine desc = factory.createFormEngine(parent);
- desc.load(UpdateUIPlugin.getResourceString(KEY_DESC), true, true);
- TableData td = new TableData();
- td.align = TableData.FILL;
- td.grabHorizontal=true;
- desc.setLayoutData(td);
-}
-
-public void expandTo(Object obj) {
- if (obj instanceof IConfiguredSiteAdapter) {
- inputChanged(((IConfiguredSiteAdapter)obj).getConfigurationSite());
- }
-}
-
-private void inputChanged(IConfiguredSite csite) {
- ISite site = csite.getSite();
- urlLabel.setText(site.getURL().toString());
- urlLabel.getParent().layout();
- ((Composite)getControl()).layout();
- getControl().redraw();
- currentSite = csite;
-}
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/LocalSiteForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/LocalSiteForm.java
deleted file mode 100644
index 90930e6..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/LocalSiteForm.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.SiteBookmark;
-import org.eclipse.update.internal.ui.pages.UpdateFormPage;
-import org.eclipse.update.internal.ui.parts.AboutInfo;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.update.ui.forms.internal.engine.*;
-
-public class LocalSiteForm extends UpdateWebForm {
- private static final String KEY_TITLE = "LocalSitePage.title";
-
- private Label url;
- private SiteBookmark currentBookmark;
- private AboutInfo aboutInfo;
- private Image image;
-
- public LocalSiteForm(UpdateFormPage page) {
- super(page);
- aboutInfo = UpdateUIPlugin.getDefault().getAboutInfo();
- ImageDescriptor desc = aboutInfo.getAboutImage();
- if (desc != null)
- image = desc.createImage(); // may be null
- }
-
- public void dispose() {
- if (image != null)
- image.dispose();
- super.dispose();
- }
-
- public void initialize(Object modelObject) {
- setHeadingText(UpdateUIPlugin.getResourceString(KEY_TITLE));
- super.initialize(modelObject);
- }
-
- protected void createContents(Composite parent) {
- FormWidgetFactory factory = getFactory();
- HTMLTableLayout layout = new HTMLTableLayout();
- parent.setLayout(layout);
- layout.leftMargin = layout.rightMargin = 10;
- layout.topMargin = 10;
- layout.horizontalSpacing = 20;
- layout.verticalSpacing = 20;
- layout.numColumns = image != null ? 2 : 1;
-
- if (image != null) {
- Label ilabel = factory.createLabel(parent, null);
- ilabel.setImage(image);
- }
-
- HTTPAction action = new HTTPAction() {
- public void linkActivated(IHyperlinkSegment link) {
- ((DetailsView) getPage().getView()).showURL(link.getText());
- }
- };
- IActionBars bars = getPage().getView().getViewSite().getActionBars();
- action.setStatusLineManager(bars.getStatusLineManager());
- // text on the right
- FormEngine engine = factory.createFormEngine(parent);
- engine.registerTextObject(FormEngine.URL_HANDLER_ID, action);
- engine.setParagraphsSeparated(false);
- engine.setHyperlinkSettings(factory.getHyperlinkHandler());
- engine.marginWidth = 1;
- TableData data = new TableData();
- data.align = TableData.FILL;
- engine.load(getProductText(), false, true);
- engine.setLayoutData(data);
- setFocusControl(engine);
-
- Composite sep = factory.createCompositeSeparator(parent);
- data = new TableData();
- data.align = TableData.FILL;
- data.heightHint = 1;
- data.colspan = image != null ? 2 : 1;
- sep.setLayoutData(data);
- }
-
- public void expandTo(Object obj) {
- }
-
- private void inputChanged(SiteBookmark site) {
- }
- private String getProductText() {
- return aboutInfo.getAboutText();
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/MainForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/MainForm.java
deleted file mode 100644
index b9c0780..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/MainForm.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.update.internal.ui.pages.*;
-import org.eclipse.update.internal.ui.parts.*;
-import org.eclipse.update.internal.ui.views.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.ui.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.update.ui.forms.internal.engine.*;
-
-public class MainForm extends UpdateWebForm {
-private static final String KEY_TITLE = "HomePage.title";
-private static final String KEY_UPDATES_TITLE = "HomePage.updates.title";
-private static final String KEY_UPDATES_DESC = "HomePage.updates.desc";
-private static final String KEY_INSTALLS_TITLE = "HomePage.installs.title";
-private static final String KEY_INSTALLS_DESC = "HomePage.installs.desc";
-private static final String KEY_UNINSTALLS_TITLE = "HomePage.uninstalls.title";
-private static final String KEY_UNINSTALLS_DESC = "HomePage.uninstals.desc";
-private static final String KEY_HISTORY_TITLE = "HomePage.history.title";
-private static final String KEY_HISTORY_DESC = "HomePage.history.desc";
-
- Image itemImage;
- Image myEclipseImage;
- Image sitesImage;
-
-public MainForm(UpdateFormPage page) {
- super(page);
- itemImage = UpdateUIPluginImages.DESC_ITEM.createImage();
- myEclipseImage = UpdateUIPluginImages.DESC_CONFIGS_VIEW.createImage();
- sitesImage = UpdateUIPluginImages.DESC_SITES_VIEW.createImage();
-}
-
-public void dispose() {
- itemImage.dispose();
- myEclipseImage.dispose();
- sitesImage.dispose();
- super.dispose();
-}
-
-public void initialize(Object modelObject) {
- setHeadingText(UpdateUIPlugin.getResourceString(KEY_TITLE));
- super.initialize(modelObject);
-}
-
-protected int getNumColumns() {
- return 1;
-}
-
-protected void createContents(Composite parent) {
- HTMLTableLayout layout = new HTMLTableLayout();
- parent.setLayout(layout);
- layout.leftMargin = layout.rightMargin = 10;
- layout.topMargin = 15;
- layout.horizontalSpacing = 5;
- layout.verticalSpacing = 0;
- layout.numColumns = 2;
-
- FormWidgetFactory factory = getFactory();
-
- Label topicImage;
- Label topic;
- FormEngine text;
- HyperlinkAction action;
-
- String topicColorId = "mainPage.topicColor";
- Color topicColor = factory.registerColor(topicColorId, 91, 120, 172);
-
- action = new HyperlinkAction() {
- public void linkActivated(IHyperlinkSegment link) {
- UpdatesView view = (UpdatesView)showView(UpdatePerspective.ID_UPDATES);
- if (view!=null)
- view.selectUpdateObject();
- }
- };
- topicImage = factory.createLabel(parent, null);
- topicImage.setImage(itemImage);
- topic = factory.createHeadingLabel(parent, UpdateUIPlugin.getResourceString(KEY_UPDATES_TITLE), SWT.WRAP);
- topic.setForeground(topicColor);
- factory.createLabel(parent, null);
- text =factory.createFormEngine(parent);
- setFocusControl(text);
- text.load(UpdateUIPlugin.getResourceString(KEY_UPDATES_DESC), true, false);
- text.registerTextObject("action1", action);
- text.registerTextObject("image1", myEclipseImage);
- TableData td = new TableData();
- td.grabHorizontal=true;
- text.setLayoutData(td);
-
- addSeparator(parent);
-
- action = new HyperlinkAction() {
- public void linkActivated(IHyperlinkSegment link) {
- showView(UpdatePerspective.ID_UPDATES);
- }
- };
- topicImage = factory.createLabel(parent, null);
- topicImage.setImage(itemImage);
- topic = factory.createHeadingLabel(parent, UpdateUIPlugin.getResourceString(KEY_INSTALLS_TITLE), SWT.WRAP);
- topic.setForeground(topicColor);
- factory.createLabel(parent, null);
- text = factory.createFormEngine(parent);
- text.load(UpdateUIPlugin.getResourceString(KEY_INSTALLS_DESC), true, false);
- text.registerTextObject("action1", action);
- text.registerTextObject("image1", sitesImage);
- td = new TableData();
- td.grabHorizontal=true;
- text.setLayoutData(td);
- addSeparator(parent);
-
- action = new HyperlinkAction() {
- public void linkActivated(IHyperlinkSegment link) {
- ConfigurationView view = (ConfigurationView)showView(UpdatePerspective.ID_CONFIGURATION);
- if (view!=null)
- view.selectCurrentConfiguration();
- }
- };
- topicImage = factory.createLabel(parent, null);
- topicImage.setImage(itemImage);
- topic = factory.createHeadingLabel(parent, UpdateUIPlugin.getResourceString(KEY_UNINSTALLS_TITLE), SWT.WRAP);
- topic.setForeground(topicColor);
- factory.createLabel(parent, null);
- text = factory.createFormEngine(parent);
- text.load(UpdateUIPlugin.getResourceString(KEY_UNINSTALLS_DESC), true, false);
- text.registerTextObject("action1", action);
- text.registerTextObject("image1", myEclipseImage);
- td = new TableData();
- td.grabHorizontal=true;
- text.setLayoutData(td);
-
- addSeparator(parent);
-
- action = new HyperlinkAction() {
- public void linkActivated(IHyperlinkSegment link) {
- ConfigurationView view = (ConfigurationView)showView(UpdatePerspective.ID_CONFIGURATION);
- if (view!=null) view.selectHistoryFolder();
- }
- };
- topicImage = factory.createLabel(parent, null);
- topicImage.setImage(itemImage);
- topic = factory.createHeadingLabel(parent, UpdateUIPlugin.getResourceString(KEY_HISTORY_TITLE), SWT.WRAP);
- topic.setForeground(topicColor);
- factory.createLabel(parent, null);
- text = factory.createFormEngine(parent);
- text.load(UpdateUIPlugin.getResourceString(KEY_HISTORY_DESC), true, false);
- text.registerTextObject("action1", action);
- td = new TableData();
- td.grabHorizontal=true;
- text.setLayoutData(td);
-}
-
-private void addSeparator(Composite parent) {
- Label label = new Label(parent, SWT.NULL);
- TableData td = new TableData();
- td.colspan = 2;
- label.setLayoutData(td);
-}
-
-private IViewPart showView(String viewId) {
- try {
- IViewPart part = UpdateUIPlugin.getActivePage().showView(viewId);
- return part;
- }
- catch (PartInitException e) {
- return null;
- }
-}
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/MyComputerForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/MyComputerForm.java
deleted file mode 100644
index 28c7df6..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/MyComputerForm.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.pages.*;
-import org.eclipse.update.internal.ui.parts.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.ui.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.swt.custom.BusyIndicator;
-import java.net.URL;
-import org.eclipse.core.runtime.CoreException;
-import java.text.MessageFormat;
-
-
-public class MyComputerForm extends UpdateWebForm {
- private SiteBookmark currentBookmark;
- private static final String KEY_TITLE = "MyComputerPage.title";
- private static final String KEY_NTITLE = "MyComputerPage.ntitle";
- private static final String KEY_DESC = "MyComputerPage.desc";
-
-public MyComputerForm(UpdateFormPage page) {
- super(page);
-}
-
-public void dispose() {
- super.dispose();
-}
-
-public void initialize(Object modelObject) {
- setHeadingText(UpdateUIPlugin.getResourceString(KEY_TITLE));
- super.initialize(modelObject);
-}
-
-protected void createContents(Composite parent) {
- HTMLTableLayout layout = new HTMLTableLayout();
- parent.setLayout(layout);
- layout.leftMargin = layout.rightMargin = 10;
- layout.topMargin = 10;
- layout.horizontalSpacing = 0;
- layout.verticalSpacing = 20;
- layout.numColumns = 1;
-
- FormWidgetFactory factory = getFactory();
-
- Label text = factory.createLabel(parent, null, SWT.WRAP);
- text.setText(UpdateUIPlugin.getResourceString(KEY_DESC));
-}
-
-public void expandTo(Object obj) {
- if (obj instanceof MyComputer) {
- inputChanged((MyComputer)obj);
- }
-}
-
-private void inputChanged(MyComputer myComputer) {
- String pattern = UpdateUIPlugin.getResourceString(KEY_TITLE);
- String name = System.getProperty("user.name");
- String message = MessageFormat.format(pattern, new Object[] {name});
- setHeadingText(message);
-}
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/PropertyWebForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/PropertyWebForm.java
deleted file mode 100644
index 3d2e8e0..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/PropertyWebForm.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.internal.ui.pages.*;
-import org.eclipse.update.internal.ui.parts.*;
-
-public class PropertyWebForm extends UpdateWebForm {
-
- /**
- * Constructor for PropertyWebForm.
- * @param page
- */
- public PropertyWebForm(IUpdateFormPage page) {
- super(page);
- }
-
-protected Label createProperty(Composite parent, String name) {
- createHeading(parent, name);
- Label label = factory.createLabel(parent, null);
- label.setText("");
- label.setLayoutData(createPropertyLayoutData());
- return label;
-}
-
-protected Object createPropertyLayoutData() {
- GridData gd = new GridData();
- gd.horizontalIndent = 10;
- return gd;
-}
-
-protected Label createHeading(Composite parent, String text) {
- Label l = factory.createHeadingLabel(parent, text);
- Color hc;
- hc = factory.getColor(factory.COLOR_COMPOSITE_SEPARATOR);
- l.setForeground(hc);
- return l;
-}
-
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/RevertSection.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/RevertSection.java
deleted file mode 100644
index f5e9509..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/RevertSection.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.update.internal.ui.pages.*;
-import org.eclipse.update.internal.ui.parts.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-
-import java.lang.reflect.InvocationTargetException;
-
-public class RevertSection extends UpdateSection {
-// NL keys
-private static final String KEY_TITLE = "InstallConfigurationPage.RevertSection.title";
-private static final String KEY_DESC = "InstallConfigurationPage.RevertSection.desc";
-private static final String KEY_CURRENT_TEXT = "InstallConfigurationPage.RevertSection.currentText";
-private static final String KEY_REVERT_TEXT = "InstallConfigurationPage.RevertSection.revertText";
-private static final String KEY_REVERT_BUTTON = "InstallConfigurationPage.RevertSection.revertButton";
-private static final String KEY_RESTORE_TEXT = "InstallConfigurationPage.RevertSection.restoreText";
-private static final String KEY_RESTORE_BUTTON = "InstallConfigurationPage.RevertSection.restoreButton";
-private static final String KEY_DIALOG_TITLE="InstallConfigurationPage.RevertSection.dialog.title";
-private static final String KEY_DIALOG_MESSAGE="InstallConfigurationPage.RevertSection.dialog.message";
-
-
- private Composite container;
- private FormWidgetFactory factory;
- private IInstallConfiguration config;
- private Label currentTextLabel;
- private Label textLabel;
- private Button revertButton;
-
- public RevertSection(UpdateFormPage page) {
- super(page);
- setAddSeparator(false);
- setHeaderText(UpdateUIPlugin.getResourceString(KEY_TITLE));
- setDescription(UpdateUIPlugin.getResourceString(KEY_DESC));
- }
-
- public Composite createClient(Composite parent, FormWidgetFactory factory) {
- HTMLTableLayout layout = new HTMLTableLayout();
- this.factory = factory;
- header.setForeground(factory.getColor(factory.COLOR_COMPOSITE_SEPARATOR));
- layout.leftMargin = layout.rightMargin = 0;
- layout.horizontalSpacing = 0;
- container = factory.createComposite(parent);
- container.setLayout(layout);
- layout.numColumns = 3;
- currentTextLabel = factory.createLabel(container, "");
- currentTextLabel.setFont(JFaceResources.getBannerFont());
- TableData td = new TableData();
- td.valign = TableData.MIDDLE;
- currentTextLabel.setLayoutData(td);
- textLabel = factory.createLabel(container, "", SWT.WRAP);
- td = new TableData();
- td.valign = TableData.MIDDLE;
- textLabel.setLayoutData(td);
- revertButton = factory.createButton(container, "", SWT.PUSH);
- revertButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- performRevert();
- }
- });
- td = new TableData();
- td.indent = 5;
- td.valign = TableData.MIDDLE;
- revertButton.setLayoutData(td);
- return container;
- }
-
- public void configurationChanged(IInstallConfiguration config) {
- this.config = config;
- boolean canRevert = false;
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration [] history = localSite.getConfigurationHistory();
- int length = history.length;
- canRevert = length > 1;
- }
- catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- container.getParent().setVisible(canRevert);
- if (!canRevert) return;
- if (config.isCurrent()) {
- currentTextLabel.setText(UpdateUIPlugin.getResourceString(KEY_CURRENT_TEXT));
- textLabel.setText(UpdateUIPlugin.getResourceString(KEY_REVERT_TEXT));
- revertButton.setText(UpdateUIPlugin.getResourceString(KEY_REVERT_BUTTON));
- }
- else {
- currentTextLabel.setText("");
- textLabel.setText(UpdateUIPlugin.getResourceString(KEY_RESTORE_TEXT));
- revertButton.setText(UpdateUIPlugin.getResourceString(KEY_RESTORE_BUTTON));
- }
- }
-
- private void performRevert() {
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration target = config;
- if (config.isCurrent()) {
- // take the previous one
- IInstallConfiguration [] history = localSite.getConfigurationHistory();
- target = history[history.length - 2];
- }
- performRevert(target);
- }
- catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
-
- public static void performRevert(final IInstallConfiguration target) {
- IRunnableWithProgress operation = new IRunnableWithProgress() {
-
- public void run(IProgressMonitor monitor) {
- boolean success = false;
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- localSite.revertTo(target, monitor, new UIProblemHandler());
- saveLocalSite();
- success = true;
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- } finally {
- monitor.done();
- if (success)
- informRestartNeeded();
- }
- }
- };
- try {
- ProgressMonitorDialog dialog = new ProgressMonitorDialog(UpdateUIPlugin.getActiveWorkbenchShell().getShell());
- dialog.run(false, true, operation);
- }
- catch (InvocationTargetException e) {
- UpdateUIPlugin.logException(e);
- }
- catch (InterruptedException e) {
- }
- }
-
- private static void saveLocalSite() throws CoreException {
- ILocalSite localSite = SiteManager.getLocalSite();
- localSite.save();
- }
-
-
-
- public static void informRestartNeeded(){
- String title = UpdateUIPlugin.getResourceString(KEY_DIALOG_TITLE);
- String message= UpdateUIPlugin.getResourceString(KEY_DIALOG_MESSAGE);
- MessageDialog.openInformation(UpdateUIPlugin.getActiveWorkbenchShell(), title, message);
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SearchForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SearchForm.java
deleted file mode 100644
index 66bbb92..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SearchForm.java
+++ /dev/null
@@ -1,609 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.wizard.ProgressMonitorPart;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.part.PageBook;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.UpdateModel;
-import org.eclipse.update.internal.ui.pages.UpdateFormPage;
-import org.eclipse.update.internal.ui.search.*;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.update.ui.forms.internal.engine.FormEngine;
-
-public class SearchForm extends UpdateWebForm {
- private static final String KEY_TITLE = "SearchPage.title";
- private static final String KEY_LAST_SEARCH = "SearchPage.lastSearch";
- private static final String KEY_NO_LAST_SEARCH = "SearchPage.noLastSearch";
- private static final String KEY_SEARCH_NOW = "SearchPage.searchNow";
- private static final String KEY_CANCEL = "SearchPage.cancel";
- private static final String KEY_DESC = "SearchPage.desc";
- private static final String KEY_QUERY = "SearchPage.query.label";
- private static final String KEY_CATEGORY = "SearchPage.query.category";
- private static final String KEY_OPTIONS = "SearchPage.options.label";
- private static final String KEY_MY_COMPUTER_CHECK =
- "SearchPage.options.myComputerCheck";
- private static final String KEY_MY_COMPUTER_TITLE =
- "SearchPage.options.myComputerSettings.title";
- private static final String KEY_MY_COMPUTER_MORE =
- "SearchPage.options.myComputerSettings";
- private static final String KEY_FULL_MODE_CHECK =
- "SearchPage.options.fullModeCheck";
- private static final String KEY_BOOKMARK_CHECK =
- "SearchPage.options.bookmarkCheck";
- private static final String KEY_DISCOVERY_CHECK =
- "SearchPage.options.discoveryCheck";
- private static final String KEY_FILTER_CHECK =
- "SearchPage.options.filterCheck";
- private static final String UPDATES_IMAGE_ID = "updates";
- private static final String SETTINGS_SECTION = "SearchForm";
- private static final String S_FULL_MODE = "fullMode";
-
- private FormEngine descLabel;
- private Label infoLabel;
- private ExpandableGroup queryGroup;
- private ExpandableGroup optionsGroup;
- private CCombo categoryCombo;
- private Button myComputerCheck;
- private Button discoveryCheck;
- private Button bookmarkCheck;
- private Button filterCheck;
- private Button myComputerSettings;
- private Button fullModeCheck;
- private Button searchButton;
- private PageBook pagebook;
- private SearchMonitor monitor;
- //private UpdateSearchProgressMonitor statusMonitor;
- //private SearchResultSection searchResultSection;
- private SearchResultSection searchResultSection;
- private IDialogSettings settings;
- private SearchObject searchObject;
- private ArrayList categories = new ArrayList();
- private Hashtable descTable = new Hashtable();
- private ISearchCategory currentCategory;
-
- abstract class OptionsGroup extends ExpandableGroup {
- protected SelectableFormLabel createTextLabel(
- Composite parent,
- FormWidgetFactory factory) {
- SelectableFormLabel label = super.createTextLabel(parent, factory);
- label.setFont(JFaceResources.getBannerFont());
- return label;
- }
- public void expanded() {
- getControl().getParent().layout();
- reflow();
- updateSize();
- }
- public void collapsed() {
- getControl().getParent().layout();
- reflow();
- updateSize();
- }
- }
-
- class SearchMonitor extends ProgressMonitorPart {
- public SearchMonitor(Composite parent) {
- super(parent, null);
- setBackground(factory.getBackgroundColor());
- fLabel.setBackground(factory.getBackgroundColor());
- fProgressIndicator.setBackground(factory.getBackgroundColor());
- }
- public void done() {
- super.done();
- updateButtonText();
- searchButton.setEnabled(true);
- Date date = new Date();
- String pattern = UpdateUIPlugin.getResourceString(KEY_LAST_SEARCH);
- String text =
- UpdateUIPlugin.getFormattedMessage(pattern, date.toString());
- infoLabel.setText(text);
- infoLabel.getParent().layout();
- reflow(true);
- searchObject.detachProgressMonitor(this);
- // if (statusMonitor != null) {
- // searchObject.detachProgressMonitor(statusMonitor);
- // statusMonitor = null;
- // }
- enableOptions(true);
- }
- }
-
- public SearchForm(UpdateFormPage page) {
- super(page);
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- IDialogSettings master =
- UpdateUIPlugin.getDefault().getDialogSettings();
- settings = master.getSection(SETTINGS_SECTION);
- if (settings == null)
- settings = master.addNewSection(SETTINGS_SECTION);
- }
-
- public void dispose() {
- if (searchObject != null) {
- detachFrom(searchObject);
- }
- if (searchResultSection != null)
- searchResultSection.dispose();
- super.dispose();
- }
-
- private void detachFrom(SearchObject obj) {
- obj.detachProgressMonitor(monitor);
- // if (statusMonitor != null)
- // obj.detachProgressMonitor(statusMonitor);
- }
-
- public void initialize(Object modelObject) {
- updateHeadingText(null);
- super.initialize(modelObject);
- }
-
- private void updateHeadingText(SearchObject obj) {
- String title = UpdateUIPlugin.getResourceString(KEY_TITLE);
- if (obj != null)
- title += " - " + obj.getName();
- setHeadingText(title);
- }
-
- protected void createContents(Composite parent) {
- HTMLTableLayout layout = new HTMLTableLayout();
- parent.setLayout(layout);
- layout.leftMargin = 5;
- layout.rightMargin = 5;
- layout.topMargin = 0;
- layout.bottomMargin = 2;
- layout.horizontalSpacing = 15;
- layout.verticalSpacing = 10;
- layout.numColumns = 2;
-
- FormWidgetFactory factory = getFactory();
- TableData td;
-
- descLabel = factory.createFormEngine(parent);
- descLabel.load(UpdateUIPlugin.getResourceString(KEY_DESC), true, true);
- td = new TableData();
- td.colspan = 2;
- descLabel.setLayoutData(td);
-
- queryGroup = new OptionsGroup() {
- public void fillExpansion(
- Composite expansion,
- FormWidgetFactory factory) {
- fillQueryGroup(expansion, factory);
- }
- };
- Composite optionContainer = factory.createComposite(parent);
- layout = new HTMLTableLayout();
- layout.numColumns = 2;
- layout.leftMargin = 0;
- layout.rightMargin = 0;
- layout.bottomMargin = 0;
- layout.topMargin = 0;
- layout.horizontalSpacing = 15;
- layout.verticalSpacing = 0;
- optionContainer.setLayout(layout);
- td = new TableData();
- td.colspan = 2;
- optionContainer.setLayoutData(td);
-
- queryGroup.setText(UpdateUIPlugin.getResourceString(KEY_QUERY));
- queryGroup.createControl(optionContainer, factory);
- setFocusControl(queryGroup.getControl());
-
- optionsGroup = new OptionsGroup() {
- public void fillExpansion(
- Composite expansion,
- FormWidgetFactory factory) {
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- expansion.setLayout(layout);
-
- myComputerCheck =
- factory.createButton(expansion, null, SWT.CHECK);
- myComputerCheck.setText(
- UpdateUIPlugin.getResourceString(KEY_MY_COMPUTER_CHECK));
- myComputerCheck.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- myComputerSettings.setEnabled(
- myComputerCheck.getSelection());
- searchObject.setSearchMyComputer(
- myComputerCheck.getSelection());
- }
- });
-
- myComputerSettings =
- factory.createButton(expansion, null, SWT.PUSH);
- myComputerSettings.setText(
- UpdateUIPlugin.getResourceString(KEY_MY_COMPUTER_MORE));
- myComputerSettings
- .addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- BusyIndicator
- .showWhile(
- myComputerSettings.getDisplay(),
- new Runnable() {
- public void run() {
- MyComputerSearchDialog sd =
- new MyComputerSearchDialog(
- myComputerSettings.getShell(),
- searchObject);
- sd.create();
- sd.getShell().setText(
- UpdateUIPlugin.getResourceString(
- KEY_MY_COMPUTER_TITLE));
- sd.open();
- }
- });
- }
- });
- GridData gd;
- discoveryCheck =
- factory.createButton(expansion, null, SWT.CHECK);
- discoveryCheck.setText(
- UpdateUIPlugin.getResourceString(KEY_DISCOVERY_CHECK));
- discoveryCheck.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- searchObject.setSearchDiscovery(
- discoveryCheck.getSelection());
- }
- });
- gd = new GridData();
- gd.horizontalSpan = 2;
- discoveryCheck.setLayoutData(gd);
-
- bookmarkCheck =
- factory.createButton(expansion, null, SWT.CHECK);
- bookmarkCheck.setText(
- UpdateUIPlugin.getResourceString(KEY_BOOKMARK_CHECK));
- bookmarkCheck.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- searchObject.setSearchBookmarks(
- bookmarkCheck.getSelection());
- }
- });
- gd = new GridData();
- gd.horizontalSpan = 2;
- bookmarkCheck.setLayoutData(gd);
-
- filterCheck =
- factory.createButton(expansion, null, SWT.CHECK);
- filterCheck.setText(
- UpdateUIPlugin.getResourceString(KEY_FILTER_CHECK));
- filterCheck.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- searchObject.setFilterEnvironment(
- filterCheck.getSelection());
- }
- });
- gd = new GridData();
- gd.horizontalSpan = 2;
- filterCheck.setLayoutData(gd);
- }
- };
- optionsGroup.setText(UpdateUIPlugin.getResourceString(KEY_OPTIONS));
- optionsGroup.createControl(optionContainer, factory);
-
- fullModeCheck = factory.createButton(parent, null, SWT.CHECK);
- fullModeCheck.setText(
- UpdateUIPlugin.getResourceString(KEY_FULL_MODE_CHECK));
- fullModeCheck.setSelection(settings.getBoolean(S_FULL_MODE));
- fullModeCheck.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- toggleMode(fullModeCheck.getSelection());
- }
- });
- td = new TableData();
- td.colspan = 2;
- fullModeCheck.setLayoutData(td);
-
- Composite sep = factory.createCompositeSeparator(parent);
- td = new TableData();
- td.align = TableData.FILL;
- td.heightHint = 1;
- td.colspan = 2;
- sep.setBackground(factory.getColor(factory.COLOR_BORDER));
- sep.setLayoutData(td);
-
- Composite searchContainer = factory.createComposite(parent);
- GridLayout glayout = new GridLayout();
- glayout.numColumns = 2;
- searchContainer.setLayout(glayout);
- td = new TableData();
- td.align = TableData.FILL;
- td.colspan = 2;
- searchContainer.setLayoutData(td);
- GridData gd;
-
- infoLabel = factory.createLabel(searchContainer, null);
- infoLabel.setText(UpdateUIPlugin.getResourceString(KEY_NO_LAST_SEARCH));
- gd = new GridData(GridData.VERTICAL_ALIGN_CENTER);
- infoLabel.setLayoutData(gd);
-
- searchButton =
- factory.createButton(
- searchContainer,
- UpdateUIPlugin.getResourceString(KEY_SEARCH_NOW),
- SWT.PUSH);
- searchButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- performSearch();
- }
- });
- gd = new GridData(GridData.VERTICAL_ALIGN_CENTER);
- gd.horizontalIndent = 10;
- searchButton.setLayoutData(gd);
-
- monitor = new SearchMonitor(parent);
- td = new TableData();
- td.align = TableData.FILL;
- td.colspan = 2;
- monitor.setLayoutData(td);
- if (searchObject != null && searchObject.isSearchInProgress()) {
- // sync up with the search
- catchUp();
- }
- searchResultSection =
- new SearchResultSection((UpdateFormPage) getPage());
- Control control = searchResultSection.createControl(parent, factory);
- td = new TableData();
- td.align = TableData.FILL;
- td.colspan = 2;
- td.grabHorizontal = true;
- control.setLayoutData(td);
- searchResultSection.setFullMode(settings.getBoolean(S_FULL_MODE));
- }
-
- private void fillQueryGroup(
- Composite container,
- FormWidgetFactory factory) {
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = 2;
- layout.marginHeight = 2;
- container.setLayout(layout);
- factory.createLabel(
- container,
- UpdateUIPlugin.getResourceString(KEY_CATEGORY));
- categoryCombo = new CCombo(container, SWT.READ_ONLY | SWT.FLAT);
- categoryCombo.setBackground(factory.getBackgroundColor());
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- categoryCombo.setLayoutData(gd);
-
- pagebook = new PageBook(container, SWT.NULL);
- pagebook.setBackground(factory.getBackgroundColor());
- gd =
- new GridData(
- GridData.FILL_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL);
- gd.horizontalSpan = 2;
- pagebook.setLayoutData(gd);
- SearchCategoryDescriptor[] descriptors =
- SearchCategoryRegistryReader.getDefault().getCategoryDescriptors();
- for (int i = 0; i < descriptors.length; i++) {
- ISearchCategory category = descriptors[i].createCategory();
- if (category != null) {
- categories.add(category);
- descTable.put(category, descriptors[i]);
- categoryCombo.add(descriptors[i].getName());
- category.createControl(pagebook, factory);
- }
- }
- categoryCombo.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- int index = categoryCombo.getSelectionIndex();
- ISearchCategory category =
- (ISearchCategory) categories.get(index);
- switchTo(category);
- searchObject.setCategoryId(category.getId());
- }
- });
- categoryCombo.select(0);
- factory.paintBordersFor(container);
- }
-
- private void switchTo(ISearchCategory category) {
- pagebook.showPage(category.getControl());
- currentCategory = category;
- SearchCategoryDescriptor desc =
- (SearchCategoryDescriptor) descTable.get(category);
- descLabel.load(desc.getDescription(), true, true);
- reflow();
- updateSize();
- }
-
- private void selectCategory(SearchObject obj) {
- for (int i = 0; i < categories.size(); i++) {
- ISearchCategory category = (ISearchCategory) categories.get(i);
- if (category.getId().equals(obj.getCategoryId())) {
- categoryCombo.select(i);
- switchTo(category);
- category.load(obj.getSettings(), !obj.isCategoryFixed());
- searchResultSection.setSearchString(
- category.getCurrentSearch());
- categoryCombo.setEnabled(!obj.isCategoryFixed());
- break;
- }
- }
- }
-
- private void reflow(boolean searchFinished) {
- if (searchFinished)
- searchResultSection.searchFinished();
- else
- searchResultSection.reflow();
- descLabel.getParent().layout(true);
- ((Composite) getControl()).layout(true);
- updateSize();
- }
-
- private void reflow() {
- reflow(false);
- }
-
- private void toggleMode(final boolean fullMode) {
- BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {
- public void run() {
- searchResultSection.setFullMode(fullMode);
- descLabel.getParent().layout(true);
- ((Composite) getControl()).layout(true);
- updateSize();
- }
- });
- settings.put(S_FULL_MODE, fullMode);
- }
-
- private void performSearch() {
- if (searchObject != null) {
- if (searchObject.isSearchInProgress()) {
- stopSearch();
- } else {
- if (!startSearch())
- return;
- }
- updateButtonText();
- }
- }
-
- private boolean startSearch() {
- try {
- if (!searchObject.isCategoryFixed()) {
- currentCategory.store(searchObject.getSettings());
- searchObject.setCategoryId(currentCategory.getId());
- }
- searchObject.attachProgressMonitor(monitor);
- //attachStatusLineMonitor();
- enableOptions(false);
- searchObject.startSearch(getControl().getDisplay(), getQueries());
- //searchResultSection.setSearchObject(searchObject);
- searchResultSection.searchStarted();
- } catch (InvocationTargetException e) {
- UpdateUIPlugin.logException(e);
- return false;
- } catch (InterruptedException e) {
- UpdateUIPlugin.logException(e);
- return false;
- }
- return true;
- }
-
- private ISearchQuery[] getQueries() {
- int index = categoryCombo.getSelectionIndex();
- ISearchCategory category = (ISearchCategory) categories.get(index);
- searchResultSection.setSearchString(category.getCurrentSearch());
- return category.getQueries();
- }
-
- private void catchUp() {
- searchObject.attachProgressMonitor(monitor);
- //attachStatusLineMonitor();
- enableOptions(false);
- updateButtonText();
- }
-
- // private void attachStatusLineMonitor() {
- // if (statusMonitor != null)
- // return;
- // IViewSite vsite = getPage().getView().getViewSite();
- // IStatusLineManager manager = vsite.getActionBars().getStatusLineManager();
- // manager = getRootManager(manager);
- //
- // statusMonitor = new UpdateSearchProgressMonitor(manager);
- // searchObject.attachProgressMonitor(statusMonitor);
- // }
-
- private IStatusLineManager getRootManager(IStatusLineManager manager) {
- IContributionManager parent = manager;
-
- while (parent instanceof SubStatusLineManager) {
- IContributionManager newParent =
- ((SubStatusLineManager) parent).getParent();
- if (newParent == null)
- break;
- parent = newParent;
- }
- return (IStatusLineManager) parent;
- }
-
- private void stopSearch() {
- searchButton.setEnabled(false);
- searchObject.stopSearch();
- }
-
- private void enableOptions(boolean enable) {
- myComputerCheck.setEnabled(enable);
- myComputerSettings.setEnabled(enable);
- discoveryCheck.setEnabled(enable);
- bookmarkCheck.setEnabled(enable);
- filterCheck.setEnabled(enable);
- }
-
- private void updateButtonText() {
- boolean inSearch =
- searchObject != null && searchObject.isSearchInProgress();
- if (inSearch)
- searchButton.setText(UpdateUIPlugin.getResourceString(KEY_CANCEL));
- else
- searchButton.setText(
- UpdateUIPlugin.getResourceString(KEY_SEARCH_NOW));
- searchButton.getParent().layout(true);
- }
-
- private void updateScopeSettings(SearchObject sobj) {
- myComputerCheck.setSelection(sobj.getSearchMyComputer());
- myComputerSettings.setEnabled(sobj.getSearchMyComputer());
- discoveryCheck.setSelection(sobj.getSearchDiscovery());
- bookmarkCheck.setSelection(sobj.getSearchBookmarks());
- filterCheck.setSelection(sobj.getFilterEnvironment());
- }
-
- public void expandTo(Object obj) {
- if (obj instanceof SearchObject) {
- inputChanged((SearchObject) obj);
- }
- }
- private void inputChanged(final SearchObject obj) {
- BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {
- public void run() {
- if (searchObject != null) {
- if (searchObject == obj)
- return;
- if (currentCategory != null) {
- if (!searchObject.isCategoryFixed())
- currentCategory.store(searchObject.getSettings());
- searchObject.setCategoryId(currentCategory.getId());
- }
- detachFrom(searchObject);
- }
- searchObject = obj;
- updateHeadingText(searchObject);
- selectCategory(obj);
- updateScopeSettings(obj);
- searchResultSection.setSearchObject(searchObject);
- if (searchObject.isSearchInProgress()) {
- // sync up with the search
- catchUp();
- } else if (searchObject.isInstantSearch()) {
- searchObject.setInstantSearch(false);
- getControl().getDisplay().asyncExec(new Runnable() {
- public void run() {
- performSearch();
- }
- });
- }
- }
- });
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SearchResultSection.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SearchResultSection.java
deleted file mode 100644
index 45731cc..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SearchResultSection.java
+++ /dev/null
@@ -1,292 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.pages.UpdateFormPage;
-import org.eclipse.update.internal.ui.search.*;
-import org.eclipse.update.internal.ui.views.*;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.update.ui.forms.internal.engine.*;
-
-public class SearchResultSection {
- private static final String KEY_TITLE = "UpdatesPage.SearchResultSection.title";
- private static final String KEY_DESC = "UpdatesPage.SearchResultSection.desc";
- private static final String KEY_NODESC =
- "UpdatesPage.SearchResultSection.nodesc";
- private static final String KEY_STARTDESC =
- "UpdatesPage.SearchResultSection.startdesc";
- private static final String KEY_RESULT_ENTRY =
- "UpdatesPage.SearchResultSection.resultEntry";
- private static final String KEY_SITE_LINK = "openSite";
- private static final String KEY_FEATURE_LINK = "openFeature";
-
- private Composite container;
- private FormWidgetFactory factory;
- private int counter = 0;
- private boolean fullMode = false;
- private Label header;
- private Label descLabel;
- private Image featureImage;
- private UpdateFormPage page;
- private String searchString;
- private SearchObject search;
-
- public SearchResultSection(UpdateFormPage page) {
- this.page = page;
- featureImage = UpdateUIPluginImages.DESC_FEATURE_OBJ.createImage();
- }
-
- public void setSearchString(String text) {
- this.searchString = text;
- updateTitle();
- }
-
- private void updateTitle() {
- String text = UpdateUIPlugin.getResourceString(KEY_TITLE);
- if (searchString != null)
- text += ": " + searchString;
- header.setText(text);
- }
-
- public Composite createControl(Composite parent, FormWidgetFactory factory) {
- HTMLTableLayout layout = new HTMLTableLayout();
- this.factory = factory;
-
- layout.leftMargin = 0;
- layout.rightMargin = 0;
- layout.horizontalSpacing = 5;
- layout.numColumns = 2;
-
- header =
- factory.createHeadingLabel(parent, UpdateUIPlugin.getResourceString(KEY_TITLE));
- header.setForeground(factory.getColor(factory.COLOR_COMPOSITE_SEPARATOR));
- TableData td = new TableData();
- td.align = TableData.FILL;
- td.colspan = 2;
- td.grabHorizontal = true;
- header.setLayoutData(td);
-
- descLabel =
- factory.createLabel(
- parent,
- UpdateUIPlugin.getResourceString(KEY_NODESC),
- SWT.WRAP);
- td = new TableData();
- td.align = TableData.FILL;
- td.colspan = 2;
- descLabel.setLayoutData(td);
-
- container = factory.createComposite(parent);
- container.setLayout(layout);
-
- initialize();
- return container;
- }
-
- public void dispose() {
- featureImage.dispose();
- }
-
- public void setFullMode(boolean value) {
- if (fullMode != value) {
- this.fullMode = value;
- if (container != null)
- reflow();
- }
- }
-
- public void reflow() {
- reset();
- searchFinished();
- }
-
- public void reset() {
- counter = 0;
- Control[] children = container.getChildren();
- for (int i = 0; i < children.length; i++) {
- Control child = children[i];
- child.dispose();
- }
- }
-
- public void searchStarted() {
- reset();
- descLabel.setText(UpdateUIPlugin.getResourceString(KEY_STARTDESC));
- container.layout(true);
- }
-
- public void searchFinished() {
- initialize();
- container.layout(true);
- }
-
- public void setSearchObject(SearchObject search) {
- if (this.search != search) {
- this.search = search;
- reset();
- if (search != null)
- initialize();
- container.layout(true);
- }
- }
-
- private void initialize() {
- // add children
- if (search != null) {
- Object[] sites = search.getChildren(null);
- for (int i = 0; i < sites.length; i++) {
- SearchResultSite site = (SearchResultSite) sites[i];
- Object[] features = site.getChildren(null);
- for (int j = 0; j < features.length; j++) {
- IFeatureAdapter adapter = (IFeatureAdapter) features[j];
- addFeature(site, adapter);
- }
- }
- }
- if (counter > 0) {
- String desc = UpdateUIPlugin.getFormattedMessage(KEY_DESC, ("" + counter));
- descLabel.setText(desc);
- } else {
- descLabel.setText(UpdateUIPlugin.getResourceString(KEY_NODESC));
- }
- }
-
- private void addFeature(final SearchResultSite site, final IFeatureAdapter featureAdapter) {
- counter++;
- Label imageLabel = factory.createLabel(container, null);
- imageLabel.setImage(featureImage);
- TableData td = new TableData();
- imageLabel.setLayoutData(td);
-
- IFeature feature;
-
- try {
- feature = featureAdapter.getFeature();
- }
- catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- return;
- }
- final IFeature ffeature = feature;
-
- if (fullMode) {
- URL siteURL = feature.getSite().getURL();
- IURLEntry desc = feature.getDescription();
- String description = "";
- if (desc != null) {
- String text = desc.getAnnotation();
- if (text != null) {
- description = getDescriptionMarkup(text);
- }
- }
-
- FormEngine engine = factory.createFormEngine(container);
- String[] variables =
- new String[] {
- getFeatureLabel(feature),
- feature.getProvider(),
- siteURL.toString(),
- description };
- String markup = UpdateUIPlugin.getFormattedMessage(KEY_RESULT_ENTRY, variables);
- engine.setHyperlinkSettings(factory.getHyperlinkHandler());
- engine.marginWidth = 1;
- engine.load(markup, true, false);
- HyperlinkAction siteAction = new HyperlinkAction() {
- public void linkActivated(IHyperlinkSegment link) {
- openSite(site);
- }
- };
- siteAction.setDescription(feature.getSite().getURL().toString());
- siteAction.setStatusLineManager(getStatusLineManager());
-
- HyperlinkAction featureAction = new HyperlinkAction() {
- public void linkActivated(IHyperlinkSegment link) {
- openFeature(featureAdapter);
- }
- };
- featureAction.setDescription(feature.getURL().toString());
- featureAction.setStatusLineManager(getStatusLineManager());
- engine.registerTextObject(KEY_SITE_LINK, siteAction);
- engine.registerTextObject(KEY_FEATURE_LINK, featureAction);
- td = new TableData();
- td.grabHorizontal = true;
- td.align = TableData.FILL;
- engine.setLayoutData(td);
- } else {
- SelectableFormLabel featureLabel = new SelectableFormLabel(container, SWT.WRAP);
- featureLabel.setText(getFeatureLabel(feature));
- featureLabel.setData(feature);
- factory.turnIntoHyperlink(featureLabel, new HyperlinkAdapter() {
- public void linkEntered(Control link) {
- showStatus(ffeature.getURL().toString());
- }
- public void linkActivated(Control link) {
- openFeature(featureAdapter);
- }
- public void linkExited(Control link) {
- showStatus(null);
- }
- });
- }
- }
-
- private String getDescriptionMarkup(String text) {
- StringBuffer buf = new StringBuffer();
-
- for (int i = 0; i < text.length(); i++) {
- char c = text.charAt(i);
- if (c == '\n') {
- buf.append("</p><p addVerticalSpace=\"false\">");
- } else
- buf.append(c);
- }
- return "<p>" + buf.toString() + "</p>";
- }
-
- private String getFeatureLabel(IFeature feature) {
- String fullLabel = feature.getLabel();
- return fullLabel
- + " "
- + feature.getVersionedIdentifier().getVersion().toString();
- }
-
- private void openFeature(IFeatureAdapter adapter) {
- try {
- UpdatesView view = (UpdatesView)UpdateUIPlugin.getActivePage().showView(UpdatePerspective.ID_UPDATES);
- view.setSelection(new StructuredSelection(adapter));
- }
- catch (PartInitException e) {
- UpdateUIPlugin.logException(e);
- }
- }
-
- private void openSite(SearchResultSite resultSite) {
- try {
- UpdatesView view =
- (UpdatesView) UpdateUIPlugin.getActivePage().showView(
- UpdatePerspective.ID_UPDATES);
- view.setSelection(new StructuredSelection(resultSite));
- } catch (PartInitException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- private IStatusLineManager getStatusLineManager() {
- IActionBars bars = page.getView().getViewSite().getActionBars();
- IStatusLineManager manager = bars.getStatusLineManager();
- return manager;
- }
-
- private void showStatus(String message) {
- getStatusLineManager().setMessage(message);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SiteForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SiteForm.java
deleted file mode 100644
index b4b323a..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/SiteForm.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.pages.*;
-import org.eclipse.update.internal.ui.parts.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.ui.forms.internal.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.ui.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.swt.custom.BusyIndicator;
-import java.net.URL;
-import java.net.MalformedURLException;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.ui.forms.internal.engine.FormEngine;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.update.internal.ui.views.*;
-
-public class SiteForm extends UpdateWebForm {
- private static final String KEY_DESC = "SitePage.desc";
- private static final String KEY_LINK = "SitePage.link";
- private Label url;
- private SelectableFormLabel link;
- private ISiteAdapter currentAdapter;
- private Image updateSitesImage;
- private static final String KEY_UPDATE_SITES_IMAGE = "updateSites";
-
- public SiteForm(UpdateFormPage page) {
- super(page);
- updateSitesImage = UpdateUIPluginImages.DESC_SITES_VIEW.createImage();
- }
-
- public void dispose() {
- updateSitesImage.dispose();
- super.dispose();
- }
-
- public void initialize(Object modelObject) {
- setHeadingText("");
- super.initialize(modelObject);
- //((Composite)getControl()).layout(true);
- }
-
- protected void createContents(Composite parent) {
- HTMLTableLayout layout = new HTMLTableLayout();
- parent.setLayout(layout);
- layout.leftMargin = layout.rightMargin = 10;
- layout.topMargin = 10;
- layout.horizontalSpacing = 0;
- layout.verticalSpacing = 20;
- layout.numColumns = 1;
-
- FormWidgetFactory factory = getFactory();
- url = factory.createHeadingLabel(parent, null);
-
- FormEngine desc = factory.createFormEngine(parent);
- setFocusControl(desc);
- desc.registerTextObject(KEY_UPDATE_SITES_IMAGE, updateSitesImage);
- desc.load(UpdateUIPlugin.getResourceString(KEY_DESC), true, true);
- TableData td = new TableData();
- td.align = TableData.FILL;
- td.grabHorizontal = true;
- desc.setLayoutData(td);
-
- IHyperlinkListener listener;
- IActionBars bars = getPage().getView().getViewSite().getActionBars();
- final IStatusLineManager manager = bars.getStatusLineManager();
-
- listener = new HyperlinkAdapter() {
- public void linkEntered(Control link) {
- ISite site = currentAdapter.getSite();
- if (site != null) {
- URL infoURL = getRawURL(site); // do not show callback string
- if (infoURL != null) {
- manager.setMessage(infoURL.toString());
- }
- }
- }
- public void linkExited(Control link) {
- manager.setMessage(null);
- }
- public void linkActivated(Control link) {
- if (currentAdapter == null)
- return;
- BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {
- public void run() {
- ISite site = currentAdapter.getSite();
- if (site != null) {
- URL infoURL = getURLforSite(site); // navigate with callback string
- if (infoURL != null) {
- DetailsView dv = (DetailsView) getPage().getView();
- dv.showURL(infoURL.toString());
- }
- }
- }
- });
- }
- public URL getURLforSite(ISite site) {
- URL link = getRawURL(site);
- if (link == null)
- return null;
- String callback = WebInstallHandler.getCallbackString();
- if (callback == null)
- return link;
- try {
- return new URL(link.toExternalForm() + callback);
- } catch (MalformedURLException e) {
- return link;
- }
- }
- };
- link = new SelectableFormLabel(parent, SWT.NULL);
- link.setText(UpdateUIPlugin.getResourceString(KEY_LINK));
- factory.turnIntoHyperlink(link, listener);
- }
-
- public void expandTo(Object obj) {
- if (obj instanceof ISiteAdapter) {
- inputChanged((ISiteAdapter) obj);
- }
- }
-
- private void inputChanged(ISiteAdapter adapter) {
- setHeadingText(adapter.getLabel());
- url.setText(adapter.getURL().toString());
- updateLinkVisibility(adapter);
- url.getParent().layout();
- ((Composite) getControl()).layout();
- updateSize();
- getControl().redraw();
- currentAdapter = adapter;
- }
-
- public URL getRawURL(ISite site) {
- IURLEntry entry = site.getDescription();
- if (entry == null)
- return null;
- return entry.getURL();
- }
-
- private void updateLinkVisibility(ISiteAdapter adapter) {
- /*
- ISite site = adapter.getSite();
- URL infoURL = getRawURL(site);
- link.setVisible(infoURL!=null);
- */
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UIProblemHandler.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UIProblemHandler.java
deleted file mode 100644
index c578713..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UIProblemHandler.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.configuration.IProblemHandler;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-
-/**
- *
- */
-public class UIProblemHandler implements IProblemHandler {
- private static final String KEY_TITLE = "Revert.ProblemDialog.title";
-
- /*
- * @see IProblemHandler#reportProblem(String)
- */
- public boolean reportProblem(String problemText) {
- String title = UpdateUIPlugin.getResourceString(KEY_TITLE);
- return MessageDialog.openQuestion(UpdateUIPlugin.getActiveWorkbenchShell(), title, problemText);
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UnknownObjectForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UnknownObjectForm.java
deleted file mode 100644
index d69d1d7..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UnknownObjectForm.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.update.configuration.IVolume;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.pages.UpdateFormPage;
-import org.eclipse.update.internal.ui.parts.VolumeLabelProvider;
-import org.eclipse.update.ui.forms.internal.*;
-
-public class UnknownObjectForm extends UpdateWebForm {
- private Object currentObj;
- private VolumeLabelProvider volumeProvider;
-
- public UnknownObjectForm(UpdateFormPage page) {
- super(page);
- }
-
- public void dispose() {
- if (volumeProvider!=null) volumeProvider.dispose();
- super.dispose();
- }
-
- public void initialize(Object modelObject) {
- setHeadingText("");
- super.initialize(modelObject);
- }
-
- protected void createContents(Composite parent) {
- HTMLTableLayout layout = new HTMLTableLayout();
- parent.setLayout(layout);
- layout.leftMargin = layout.rightMargin = 10;
- layout.topMargin = 10;
- layout.horizontalSpacing = 0;
- layout.verticalSpacing = 20;
- layout.numColumns = 1;
-
- FormWidgetFactory factory = getFactory();
- factory.createComposite(parent);
- TableData td = new TableData();
- td.align = TableData.FILL;
- }
-
- public void expandTo(Object obj) {
- String name = "";
-
- if (obj != null && obj instanceof UIModelObject) {
- if (obj instanceof MyComputerDirectory) {
- MyComputerDirectory dir = (MyComputerDirectory)obj;
- IVolume volume = dir.getVolume();
- if (volume!=null) name = getVolumeName(volume);
- }
- if (name.length()==0)
- name = obj.toString();
- }
- setHeadingText(name);
- if (getControl() != null) {
- ((Composite) getControl()).layout();
- getControl().redraw();
- }
- currentObj = obj;
- }
- private String getVolumeName(IVolume volume) {
- if (volumeProvider==null)
- volumeProvider = new VolumeLabelProvider();
- return volumeProvider.getText(volume);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateAdapterFactory.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateAdapterFactory.java
deleted file mode 100644
index 8cd0d84..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateAdapterFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.core.runtime.*;
-import org.eclipse.ui.views.properties.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.properties.*;
-
-public class UpdateAdapterFactory implements IAdapterFactory {
-
-public Object getAdapter(Object adaptableObject, Class adapterType) {
- if (adapterType.equals(IPropertySource.class))
- return getProperties(adaptableObject);
- return null;
-}
-
-public Class[] getAdapterList() {
- return new Class[] { IPropertySource.class };
-}
-
-private Object getProperties(Object object) {
- if (object instanceof SiteBookmark) {
- return new SiteBookmarkPropertySource((SiteBookmark)object);
- }
- return null;
-}
-
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateSection.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateSection.java
deleted file mode 100644
index de07c1e..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateSection.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.update.internal.ui.pages.*;
-import org.eclipse.update.ui.forms.internal.*;
-
-public abstract class UpdateSection extends FormSection {
- private UpdateFormPage page;
-
- public UpdateSection(UpdateFormPage page) {
- this.page = page;
- }
-
- public UpdateFormPage getPage() {
- return page;
- }
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateWebForm.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateWebForm.java
deleted file mode 100644
index 4a9873c..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/forms/UpdateWebForm.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.eclipse.update.internal.ui.forms;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.update.internal.ui.UpdateUIPluginImages;
-import org.eclipse.update.internal.ui.pages.IUpdateFormPage;
-import org.eclipse.update.ui.forms.internal.WebForm;
-
-public class UpdateWebForm extends WebForm implements IUpdateForm {
- private IUpdateFormPage page;
- private Control focusControl;
-
- public UpdateWebForm(IUpdateFormPage page) {
- this.page = page;
- }
-
- public IUpdateFormPage getPage() {
- return page;
- }
-
- public void initialize(Object model) {
- super.initialize(model);
- if (isWhiteBackground()) {
- setHeadingImage(UpdateUIPluginImages.get(UpdateUIPluginImages.IMG_FORM_BANNER));
- setHeadingUnderlineImage(
- UpdateUIPluginImages.get(UpdateUIPluginImages.IMG_FORM_UNDERLINE));
- }
- refreshSize();
- }
- private boolean isWhiteBackground() {
- Color color = getFactory().getBackgroundColor();
- return (
- color.getRed() == 255 && color.getGreen() == 255 && color.getBlue() == 255);
- }
- protected void refreshSize() {
- ((Composite) getControl()).layout();
- updateSize();
- }
- protected void setFocusControl(Control control) {
- focusControl = control;
- }
- public void setFocus() {
- //if (focusControl!=null) focusControl.setFocus();
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/BookmarkFolder.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/BookmarkFolder.java
deleted file mode 100644
index 963514b..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/BookmarkFolder.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.IPath;
-
-public class BookmarkFolder extends NamedModelObject {
- protected ArrayList children= new ArrayList();
- public BookmarkFolder() {
- }
-
- public BookmarkFolder(String name) {
- super(name);
- }
-
- public Object[] getChildren(Object parent) {
- return children.toArray();
- }
-
- public boolean hasChildren() {
- return children.size()>0;
- }
-
- public void addChild(NamedModelObject object) {
- internalAdd(object);
- notifyObjectsAdded(this, new Object[] {object});
- }
-
- public void addChildren(NamedModelObject [] objects) {
- for (int i=0; i<objects.length; i++) {
- internalAdd(objects[i]);
- }
- notifyObjectsAdded(this, objects);
- }
-
- protected void internalAdd(NamedModelObject child) {
- children.add(child);
- child.setModel(getModel());
- child.setParent(this);
- }
-
- public void removeChildren(NamedModelObject [] objects) {
- for (int i=0; i<objects.length; i++) {
- children.remove(objects[i]);
- objects[i].setParent(null);
- }
- notifyObjectsRemoved(this, objects);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/BookmarkUtil.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/BookmarkUtil.java
deleted file mode 100644
index 3780394..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/BookmarkUtil.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-
-import org.apache.xerces.parsers.DOMParser;
-import org.eclipse.core.runtime.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.search.*;
-import org.w3c.dom.*;
-import org.xml.sax.SAXException;
-
-public class BookmarkUtil {
- public static void parse(String fileName, Vector bookmarks) {
- File file = new File(fileName);
- if (!file.exists())
- return;
- DOMParser parser = new DOMParser();
- try {
- parser.parse(fileName);
- Document doc = parser.getDocument();
- Node root = doc.getDocumentElement();
- processRoot(root, bookmarks);
- } catch (SAXException e) {
- UpdateUIPlugin.logException(e);
- } catch (IOException e) {
- UpdateUIPlugin.logException(e);
- }
- }
-
- public static SiteBookmark[] getBookmarks(Vector bookmarks) {
- ArrayList result = new ArrayList();
- for (int i = 0; i < bookmarks.size(); i++) {
- processEntry(bookmarks.get(i), result);
- }
- return (SiteBookmark[]) result.toArray(new SiteBookmark[result.size()]);
- }
-
- public static BookmarkFolder getFolder(Vector bookmarks, IPath path) {
- NamedModelObject object = find(bookmarks, path);
- if (object != null && object instanceof BookmarkFolder)
- return (BookmarkFolder) object;
- return null;
- }
-
- public static NamedModelObject find(Vector bookmarks, IPath path) {
- Object[] array = bookmarks.toArray();
- return find(array, path);
- }
-
- private static NamedModelObject find(Object[] array, IPath path) {
- String name = path.segment(0);
- for (int i = 0; i < array.length; i++) {
- NamedModelObject obj = (NamedModelObject) array[i];
- if (obj.getName().equals(name)) {
- if (obj instanceof BookmarkFolder) {
- if (path.segmentCount() > 1) {
- IPath childPath = path.removeFirstSegments(1);
- BookmarkFolder folder = (BookmarkFolder) obj;
- return find(folder.getChildren(null), childPath);
- }
- }
- return obj;
- }
- }
- return null;
- }
-
- private static void processRoot(Node root, Vector bookmarks) {
- if (root.getNodeName().equals("bookmarks")) {
- NodeList children = root.getChildNodes();
- processChildren(children, null, bookmarks);
- }
- }
- private static void processChildren(
- NodeList children,
- BookmarkFolder folder,
- Vector bookmarks) {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- for (int i = 0; i < children.getLength(); i++) {
- Node child = children.item(i);
- NamedModelObject object = null;
- if (child.getNodeType() == Node.ELEMENT_NODE) {
- if (child.getNodeName().equals("site")) {
- object = createSite(child);
-
- } else if (child.getNodeName().equals("folder")) {
- object = createFolder(child);
- } else if (child.getNodeName().equals("search")) {
- object = createSearch(child);
- }
- }
- if (object != null) {
- if (folder != null) {
- folder.addChild(object);
- } else {
- bookmarks.add(object);
- }
- object.setModel(model);
- }
- }
- }
-
- private static SiteBookmark createSite(Node child) {
- SiteBookmark bookmark = new SiteBookmark();
- String name = getAttribute(child, "name");
- URL url = null;
- try {
- url = new URL(getAttribute(child, "url"));
- } catch (MalformedURLException e) {
- }
- return new SiteBookmark(name, url);
- }
-
- private static BookmarkFolder createFolder(Node child) {
- BookmarkFolder folder = new BookmarkFolder();
- String name = getAttribute(child, "name");
- folder.setName(name);
- if (child.hasChildNodes()) {
- NodeList children = child.getChildNodes();
- processChildren(children, folder, null);
- }
- return folder;
- }
- private static SearchObject createSearch(Node child) {
- String name = getAttribute(child, "name");
- String categoryId = getAttribute(child, "category");
- String fixed = getAttribute(child, "fixed");
- boolean fixedCategory = fixed.equals("true");
- SearchCategoryDescriptor desc =
- SearchCategoryRegistryReader.getDefault().getDescriptor(categoryId);
- SearchObject search = new SearchObject(name, desc, fixedCategory);
- if (child.hasChildNodes()) {
- NodeList children = child.getChildNodes();
- Hashtable settings = search.getSettings();
- for (int i = 0; i < children.getLength(); i++) {
- Node param = children.item(i);
- if (param.getNodeType() == Node.ELEMENT_NODE
- && param.getNodeName().equals("param")) {
- String key = getAttribute(param, "name");
- String value = getAttribute(param, "value");
- settings.put(key, value);
- }
- }
- }
- return search;
- }
- public static void store(String fileName, Vector bookmarks) {
- try {
- FileOutputStream fos = new FileOutputStream(fileName);
- PrintWriter writer = new PrintWriter(fos);
- writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
- writer.println("<bookmarks>");
- for (int i = 0; i < bookmarks.size(); i++) {
- Object obj = bookmarks.get(i);
- writeObject(" ", obj, writer);
- }
- writer.println("</bookmarks>");
- writer.flush();
- writer.close();
- fos.close();
- } catch (IOException e) {
- }
- }
- private static void writeObject(
- String indent,
- Object obj,
- PrintWriter writer) {
- if (obj instanceof SiteBookmark) {
- SiteBookmark bookmark = (SiteBookmark) obj;
- String name = bookmark.getName();
- String url = bookmark.getURL().toString();
- writer.println(indent + "<site name=\"" + name + "\" url=\"" + url + "\"/>");
- } else if (obj instanceof BookmarkFolder) {
- BookmarkFolder folder = (BookmarkFolder) obj;
- String name = folder.getName();
- writer.println(indent + "<folder name=\"" + name + "\">");
- Object[] children = folder.getChildren(folder);
- String indent2 = indent + " ";
- for (int i = 0; i < children.length; i++) {
- writeObject(indent2, children[i], writer);
- }
- writer.println(indent + "</folder>");
- } else if (obj instanceof SearchObject) {
- SearchObject search = (SearchObject) obj;
- if (search.isPersistent() == false)
- return;
- String name = search.getName();
- String categoryId = search.getCategoryId();
- String fixed = search.isCategoryFixed() ? "true" : "false";
- writer.println(
- indent
- + "<search name=\""
- + name
- + "\" category=\""
- + categoryId
- + "\" fixed=\""
- + fixed
- + "\">");
- Hashtable settings = search.getSettings();
- String indent2 = indent + " ";
- for (Enumeration enum = settings.keys(); enum.hasMoreElements();) {
- String key = (String) enum.nextElement();
- String value = (String) settings.get(key);
- writer.println(
- indent2 + "<param name=\"" + key + "\" value=\"" + value + "\"/>");
- }
- writer.println(indent + "</search>");
- }
-
- }
-
- private static String getAttribute(Node node, String name) {
- NamedNodeMap atts = node.getAttributes();
- Node att = atts.getNamedItem(name);
- if (att != null) {
- return att.getNodeValue();
- }
- return "";
- }
- private static void processFolder(BookmarkFolder folder, ArrayList result) {
- Object[] children = folder.getChildren(folder);
- for (int i = 0; i < children.length; i++) {
- processEntry(children[i], result);
- }
- }
- private static void processEntry(Object obj, ArrayList result) {
- if (obj instanceof SiteBookmark)
- result.add(obj);
- else if (obj instanceof BookmarkFolder) {
- processFolder((BookmarkFolder) obj, result);
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfigurationSiteAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfigurationSiteAdapter.java
deleted file mode 100644
index bf40dac..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfigurationSiteAdapter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-
-/**
- * @version 1.0
- * @author
- */
-public class ConfigurationSiteAdapter
- extends UIModelObject
- implements IConfiguredSiteAdapter {
- private IInstallConfiguration config;
- private IConfiguredSite csite;
-
- public ConfigurationSiteAdapter(IInstallConfiguration config, IConfiguredSite csite) {
- this.csite = csite;
- this.config = config;
- }
-
- public IConfiguredSite getConfigurationSite() {
- return csite;
- }
-
- public IInstallConfiguration getInstallConfiguration() {
- return config;
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfiguredFeatureAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfiguredFeatureAdapter.java
deleted file mode 100644
index 12bb6cf..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ConfiguredFeatureAdapter.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-
-/**
- * @version 1.0
- * @author
- */
-public class ConfiguredFeatureAdapter
- extends SimpleFeatureAdapter
- implements IConfiguredFeatureAdapter {
- private IConfiguredSiteAdapter adapter;
- private boolean configured;
-
- public ConfiguredFeatureAdapter(
- IConfiguredSiteAdapter adapter,
- IFeature feature,
- boolean configured) {
- super(feature);
- this.adapter = adapter;
- this.configured = configured;
- }
-
- public IConfiguredSite getConfigurationSite() {
- return adapter.getConfigurationSite();
- }
- public IInstallConfiguration getInstallConfiguration() {
- return adapter.getInstallConfiguration();
- }
- public boolean isConfigured() {
- return configured;
- }
- public IFeatureAdapter[] getIncludedFeatures() {
- try {
- IFeatureReference[] included = getFeature().getIncludedFeatureReferences();
- ConfiguredFeatureAdapter[] result =
- new ConfiguredFeatureAdapter[included.length];
- for (int i = 0; i < included.length; i++) {
- result[i] =
- new ConfiguredFeatureAdapter(adapter, included[i].getFeature(), configured);
- result[i].setIncluded(true);
- }
- return result;
- } catch (CoreException e) {
- return new IFeatureAdapter[0];
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/DiscoveryFolder.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/DiscoveryFolder.java
deleted file mode 100644
index e9b8ac8..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/DiscoveryFolder.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.core.runtime.CoreException;
-
-public class DiscoveryFolder extends BookmarkFolder {
- public DiscoveryFolder() {
- super(UpdateUIPlugin.getResourceString("DiscoveryFolder"));
- setModel(UpdateUIPlugin.getDefault().getUpdateModel());
- }
- public void initialize() {
- children.clear();
- try {
- ILocalSite site = SiteManager.getLocalSite();
- IInstallConfiguration config = site.getCurrentConfiguration();
- IConfiguredSite [] csites = config.getConfiguredSites();
- for (int i=0; i<csites.length; i++) {
- IConfiguredSite csite = csites[i];
- IFeatureReference [] refs = csite.getConfiguredFeatures();
- for (int j=0; j<refs.length; j++) {
- IFeatureReference ref = refs[j];
- IFeature feature = ref.getFeature();
- IURLEntry [] entries = feature.getDiscoverySiteEntries();
- addBookmarks(entries);
- }
- }
- }
- catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- private void addBookmarks(IURLEntry [] entries) {
- for (int i=0; i<entries.length; i++) {
- IURLEntry entry = entries[i];
- SiteBookmark bookmark = new SiteBookmark(entry.getAnnotation(), entry.getURL());
- internalAdd(bookmark);
- }
- }
- public Object [] getChildren(Object parent) {
- if (hasChildren()==false) initialize();
- return super.getChildren(parent);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/FeatureAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/FeatureAdapter.java
deleted file mode 100644
index 2885bed..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/FeatureAdapter.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * @version 1.0
- * @author
- */
-public abstract class FeatureAdapter extends UIModelObject implements IFeatureAdapter {
- private boolean included=false;
-
- /*
- * @see IFeatureAdapter#getInstallConfiguration()
- */
- public IInstallConfiguration getInstallConfiguration() {
- return null;
- }
-
- public boolean isIncluded() {
- return included;
- }
-
- protected void setIncluded(boolean included) {
- this.included = included;
- }
-
- public String toString() {
- try {
- IFeature feature = getFeature();
- return feature.getLabel();
- }
- catch (CoreException e) {
- return "<failure>";
- }
- }
- public boolean hasIncludedFeatures() {
- try {
- IFeatureReference [] included = getFeature().getIncludedFeatureReferences();
- return included.length>0;
- }
- catch (CoreException e) {
- return false;
- }
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/FeatureReferenceAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/FeatureReferenceAdapter.java
deleted file mode 100644
index 4f90cff..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/FeatureReferenceAdapter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.core.runtime.*;
-import org.eclipse.update.core.*;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class FeatureReferenceAdapter extends FeatureAdapter {
- private IFeatureReference featureRef;
-
- public FeatureReferenceAdapter(IFeatureReference featureRef) {
- this(featureRef, false);
- }
-
- public FeatureReferenceAdapter(IFeatureReference featureRef, boolean included) {
- this.featureRef = featureRef;
- setIncluded(included);
- }
-
- public IFeature getFeature() throws CoreException {
- return featureRef.getFeature();
- }
-
- public IFeatureAdapter[] getIncludedFeatures() {
- try {
- IFeatureReference[] included =
- getFeature().getIncludedFeatureReferences();
- FeatureReferenceAdapter[] result =
- new FeatureReferenceAdapter[included.length];
- for (int i = 0; i < included.length; i++) {
- result[i] = new FeatureReferenceAdapter(included[i], true);
- }
- return result;
- } catch (CoreException e) {
- return new IFeatureAdapter[0];
- }
- }
-
- public IFeatureReference getFeatureReference() {
- return featureRef;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredFeatureAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredFeatureAdapter.java
deleted file mode 100644
index 63c7ecb..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredFeatureAdapter.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.update.core.*;
-
-/**
- * @version 1.0
- * @author
- */
-public interface IConfiguredFeatureAdapter extends IConfiguredSiteContext {
- public boolean isConfigured();
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredSiteAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredSiteAdapter.java
deleted file mode 100644
index 075e6a3..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredSiteAdapter.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.update.core.*;
-
-/**
- * @version 1.0
- * @author
- */
-public interface IConfiguredSiteAdapter extends IConfiguredSiteContext {
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredSiteContext.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredSiteContext.java
deleted file mode 100644
index 8fd4c3e..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IConfiguredSiteContext.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-
-/**
- * @version 1.0
- * @author
- */
-public interface IConfiguredSiteContext {
- public IInstallConfiguration getInstallConfiguration();
- public IConfiguredSite getConfigurationSite();
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IFeatureAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IFeatureAdapter.java
deleted file mode 100644
index 53eb31e..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IFeatureAdapter.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.update.core.*;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * @version 1.0
- * @author
- */
-public interface IFeatureAdapter {
- public IFeature getFeature() throws CoreException;
- public IFeatureAdapter [] getIncludedFeatures();
- public boolean hasIncludedFeatures();
- public boolean isIncluded();
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ISiteAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ISiteAdapter.java
deleted file mode 100644
index e3bc57b..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/ISiteAdapter.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.update.core.ISite;
-import java.net.URL;
-
-public interface ISiteAdapter {
-
- public String getLabel();
- public URL getURL();
- public ISite getSite();
-
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IUpdateModelChangedListener.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IUpdateModelChangedListener.java
deleted file mode 100644
index 38cf11c..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/IUpdateModelChangedListener.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-public interface IUpdateModelChangedListener {
- public void objectsAdded(Object parent, Object [] children);
- public void objectsRemoved(Object parent, Object [] children);
- public void objectChanged(Object object, String property);
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MissingFeature.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MissingFeature.java
deleted file mode 100644
index 676e622..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MissingFeature.java
+++ /dev/null
@@ -1,313 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-
-import java.io.InputStream;
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.update.core.IFeature;
-import org.eclipse.update.core.IFeatureContentConsumer;
-import org.eclipse.update.core.IFeatureContentProvider;
-import org.eclipse.update.core.IFeatureReference;
-import org.eclipse.update.core.IImport;
-import org.eclipse.update.core.IInstallHandlerEntry;
-import org.eclipse.update.core.INonPluginEntry;
-import org.eclipse.update.core.IPluginEntry;
-import org.eclipse.update.core.ISite;
-import org.eclipse.update.core.IURLEntry;
-import org.eclipse.update.core.IVerificationListener;
-import org.eclipse.update.core.VersionedIdentifier;
-
-public class MissingFeature implements IFeature {
-
- private URL url;
- private ISite site;
- private VersionedIdentifier id = new VersionedIdentifier("unknown", "0.0.0");
- public MissingFeature(ISite site, URL url) {
- this.url = url;
- }
-
- /*
- * @see IFeature#getIdentifier()
- */
- public VersionedIdentifier getVersionedIdentifier() {
- return id;
- }
-
- /*
- * @see IFeature#getSite()
- */
- public ISite getSite() {
- return site;
- }
-
- /*
- * @see IFeature#getLabel()
- */
- public String getLabel() {
- return url.toString();
- }
-
- /*
- * @see IFeature#getURL()
- */
- public URL getURL() {
- return url;
- }
-
- /*
- * @see IFeature#getUpdateInfo()
- */
- public IURLEntry getUpdateSiteEntry() {
- return null;
- }
-
- /*
- * @see IFeature#getDiscoveryInfos()
- */
- public IURLEntry[] getDiscoverySiteEntries() {
- return null;
- }
-
- /*
- * @see IFeature#getProvider()
- */
- public String getProvider() {
- return "Unknown";
- }
-
- /*
- * @see IFeature#getDescription()
- */
- public IURLEntry getDescription() {
- return null;
- }
-
- /*
- * @see IFeature#getCopyright()
- */
- public IURLEntry getCopyright() {
- return null;
- }
-
- /*
- * @see IFeature#getLicense()
- */
- public IURLEntry getLicense() {
- return null;
- }
-
- /*
- * @see IFeature#getOS()
- */
- public String getOS() {
- return null;
- }
-
- /*
- * @see IFeature#getWS()
- */
- public String getWS() {
- return null;
- }
-
- /*
- * @see IFeature#getNL()
- */
- public String getNL() {
- return null;
- }
-
- /*
- * @see IFeature#getArch()
- */
- public String getArch() {
- return null;
- }
-
- /*
- * @see IFeature#getImage()
- */
- public URL getImage() {
- return null;
- }
-
- /*
- * @see IFeature#getImports()
- */
- public IImport[] getImports() {
- return null;
- }
-
-
- /*
- * @see IFeature#getArchives()
- */
- public String[] getArchives() {
- return null;
- }
-
- /*
- * @see IFeature#getDataEntries()
- */
- public INonPluginEntry[] getNonPluginEntries() {
- return null;
- }
-
- /*
- * @see IFeature#addDataEntry(IDataEntry)
- */
- public void addNonPluginEntry(INonPluginEntry dataEntry) {
- }
-
- /*
- * @see IFeature#getDownloadSize()
- */
- public long getDownloadSize() {
- return 0;
- }
-
- /*
- * @see IFeature#getInstallSize(ISite)
- */
- public long getInstallSize() {
- return 0;
- }
-
- /*
- * @see IFeature#isPrimary()
- */
- public boolean isPrimary() {
- return false;
- }
-
- /*
- * @see IFeature#getApplication()
- */
- public String getApplication() {
- return null;
- }
-
- /*
- * @see IPluginContainer#getPluginEntries()
- */
- public IPluginEntry[] getPluginEntries() {
- return new IPluginEntry[0];
- }
-
- /*
- * @see IPluginContainer#getPluginEntryCount()
- */
- public int getPluginEntryCount() {
- return 0;
- }
-
- /*
- * @see IPluginContainer#getDownloadSize(IPluginEntry)
- */
- public long getDownloadSize(IPluginEntry entry) {
- return 0;
- }
-
- /*
- * @see IPluginContainer#getInstallSize(IPluginEntry)
- */
- public long getInstallSize(IPluginEntry entry) {
- return 0;
- }
-
- /*
- * @see IPluginContainer#addPluginEntry(IPluginEntry)
- */
- public void addPluginEntry(IPluginEntry pluginEntry) {
- }
-
- /*
- * @see IPluginContainer#store(IPluginEntry, String, InputStream)
- */
- public void store(IPluginEntry entry, String name, InputStream inStream)
- throws CoreException {
- }
-
- /*
- * @see IAdaptable#getAdapter(Class)
- */
- public Object getAdapter(Class adapter) {
- return null;
- }
-
- /*
- * @see IPluginContainer#remove(IPluginEntry)
- */
- public void remove(IPluginEntry entry) throws CoreException {
- }
-
- /*
- * @see IFeature#setFeatureContentProvider(IFeatureContentProvider)
- */
- public void setFeatureContentProvider(IFeatureContentProvider featureContentProvider) {
- }
-
- /*
- * @see IFeature#getFeatureContentConsumer()
- */
- public IFeatureContentConsumer getFeatureContentConsumer() throws CoreException {
- return null;
- }
-
- /*
- * @see IFeature#setSite(ISite)
- */
- public void setSite(ISite site) throws CoreException {
- this.site = site;
- }
-
- /*
- * @see IFeature#getFeatureContentProvider()
- */
- public IFeatureContentProvider getFeatureContentProvider() throws CoreException {
- return null;
- }
-
- /*
- * @see IFeature#install(IFeature,IVerifier, IProgressMonitor)
- */
- public IFeatureReference install(IFeature targetFeature, IVerificationListener verificationListener, IProgressMonitor monitor) throws CoreException {
- return null;
- }
-
- /*
- * @see IFeature#remove(IProgressMonitor)
- */
- public void remove(IProgressMonitor monitor) throws CoreException {
- }
-
- /*
- * @see IPluginContainer#remove(IPluginEntry, IProgressMonitor)
- */
- public void remove(IPluginEntry entry, IProgressMonitor monitor) throws CoreException {
- }
-
- /*
- * @see IFeature#getNonPluginEntryCount()
- */
- public int getNonPluginEntryCount() {
- return 0;
- }
-
- /*
- * @see IFeature#getInstallHandlerEntry()
- */
- public IInstallHandlerEntry getInstallHandlerEntry() {
- return null;
- }
- /*
- * @see IFeature#getIncludedFeatureReferences()
- */
- public IFeatureReference[] getIncludedFeatureReferences()
- throws CoreException {
- return new IFeatureReference[0];
- }
-
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MonitorAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MonitorAdapter.java
deleted file mode 100644
index c6f17bd..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MonitorAdapter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-
-public class MonitorAdapter implements IProgressMonitor {
-
- /**
- * @see IProgressMonitor#beginTask(String, int)
- */
- public void beginTask(String taskName, int count) {
- }
-
-
- /**
- * @see IProgressMonitor#done()
- */
- public void done() {
- }
-
-
- /**
- * @see IProgressMonitor#internalWorked(double)
- */
- public void internalWorked(double arg0) {
- }
-
-
- /**
- * @see IProgressMonitor#isCanceled()
- */
- public boolean isCanceled() {
- return false;
- }
-
-
- /**
- * @see IProgressMonitor#setCanceled(boolean)
- */
- public void setCanceled(boolean arg0) {
- }
-
-
- /**
- * @see IProgressMonitor#setTaskName(String)
- */
- public void setTaskName(String arg0) {
- }
-
-
- /**
- * @see IProgressMonitor#subTask(String)
- */
- public void subTask(String arg0) {
- }
-
-
- /**
- * @see IProgressMonitor#worked(int)
- */
- public void worked(int arg0) {
- }
-
-
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputer.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputer.java
deleted file mode 100644
index 5cadbb0..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputer.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.URL;
-import org.eclipse.update.core.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.views.properties.*;
-import org.eclipse.ui.model.*;
-import java.util.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.search.*;
-
-import java.io.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.update.configuration.IVolume;
-import org.eclipse.update.configuration.LocalSystemInfo;
-
-public class MyComputer extends UIModelObject implements IWorkbenchAdapter {
- private static final String KEY_LABEL = "MyComputer.label";
- private Object[] children;
- public MyComputer() {
- }
-
- public Object getAdapter(Class adapter) {
- if (adapter.equals(IWorkbenchAdapter.class)) {
- return this;
- }
- return super.getAdapter(adapter);
- }
-
- public String getName() {
- return UpdateUIPlugin.getResourceString(KEY_LABEL);
- }
-
- public String toString() {
- return getName();
- }
-
- /**
- * @see IWorkbenchAdapter#getChildren(Object)
- */
- public Object[] getChildren(Object parent) {
- BusyIndicator
- .showWhile(
- UpdateUIPlugin.getActiveWorkbenchShell().getDisplay(),
- new Runnable() {
- public void run() {
- IVolume[] volumes = LocalSystemInfo.getVolumes();
- if (volumes != null && volumes.length > 0) {
- children = new MyComputerDirectory[volumes.length];
- for (int i = 0; i < children.length; i++) {
- children[i] =
- new MyComputerDirectory(
- MyComputer.this,
- volumes[i].getFile(),
- volumes[i]);
- }
- } else
- children = new Object[0];
- }
- });
- return children;
- }
-
- /**
- * @see IWorkbenchAdapter#getImageDescriptor(Object)
- */
- public ImageDescriptor getImageDescriptor(Object obj) {
- return UpdateUIPluginImages.DESC_COMPUTER_OBJ;
- }
-
- /**
- * @see IWorkbenchAdapter#getLabel(Object)
- */
- public String getLabel(Object obj) {
- return getName();
- }
-
- /**
- * @see IWorkbenchAdapter#getParent(Object)
- */
- public Object getParent(Object arg0) {
- return null;
- }
-
- public void collectSites(
- Vector sites,
- MyComputerSearchSettings settings,
- IProgressMonitor monitor) {
- IVolume[] volumes = LocalSystemInfo.getVolumes();
- for (int i = 0; i < volumes.length; i++) {
- File drive = volumes[i].getFile();
- if (monitor.isCanceled())
- return;
- DriveSearchSettings ds = settings.getDriveSettings(drive.getPath());
- if (ds.isChecked()) {
- collectSites(drive, sites, ds, monitor);
- }
- }
- }
-
- private void collectSites(
- File dir,
- Vector sites,
- DriveSearchSettings driveSettings,
- IProgressMonitor monitor) {
- File[] children = dir.listFiles();
- if (children == null)
- return;
-
- for (int i = 0; i < children.length; i++) {
- File child = children[i];
- if (monitor.isCanceled())
- return;
- if (child.isDirectory()) {
- monitor.subTask(child.getPath());
- SiteBookmark bookmark = MyComputerDirectory.createSite(child);
- if (bookmark != null) {
- ISite site = bookmark.getSite(false);
- if (site != null)
- sites.add(bookmark);
- } else
- collectSites(child, sites, driveSettings, monitor);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputerDirectory.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputerDirectory.java
deleted file mode 100644
index 1661720..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputerDirectory.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.*;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-
-public class MyComputerDirectory
- extends UIModelObject
- implements IWorkbenchAdapter {
- private UIModelObject parent;
- private File file;
- private IVolume volume;
- Object[] children;
-
- public MyComputerDirectory(
- UIModelObject parent,
- File file,
- IVolume volume) {
- this.parent = parent;
- this.file = file;
- this.volume = volume;
- }
-
- public MyComputerDirectory(UIModelObject parent, File file) {
- this(parent, file, null);
- }
-
- public Object getAdapter(Class adapter) {
- if (adapter.equals(IWorkbenchAdapter.class)) {
- return this;
- }
- return super.getAdapter(adapter);
- }
-
- public IVolume getVolume() {
- return volume;
- }
-
- public String getName() {
- return file.getPath();
- }
-
- public File getFile() {
- return file;
- }
-
- public String toString() {
- return getName();
- }
-
- public boolean hasChildren(Object parent) {
- if (file.isDirectory()) {
- final boolean[] result = new boolean[1];
- BusyIndicator
- .showWhile(
- UpdateUIPlugin.getActiveWorkbenchShell().getDisplay(),
- new Runnable() {
- public void run() {
- File[] children = file.listFiles();
- result[0] = children != null && children.length > 0;
- }
- });
- return result[0];
- }
- return false;
- }
-
- /**
- * @see IWorkbenchAdapter#getChildren(Object)
- */
-
- public Object[] getChildren(Object parent) {
- BusyIndicator
- .showWhile(
- UpdateUIPlugin.getActiveWorkbenchShell().getDisplay(),
- new Runnable() {
- public void run() {
- File[] files = file.listFiles();
- if (files==null) {
- children = new Object[0];
- return;
- }
-
- children = new Object[files.length];
- for (int i = 0; i < files.length; i++) {
- File file = files[i];
-
- if (file.isDirectory()) {
- SiteBookmark site = createSite(file);
- if (site != null)
- children[i] = site;
- else
- children[i] =
- new MyComputerDirectory(
- MyComputerDirectory.this,
- file);
- } else {
- children[i] =
- new MyComputerFile(MyComputerDirectory.this, file);
- }
- }
- }
- });
- return children;
- }
-
- static SiteBookmark createSite(File file) {
- try {
- File siteXML = new File(file, "site.xml");
- if (siteXML.exists() == false)
- return null;
- URL url =
- new URL("file:" + file.getAbsolutePath() + File.separator);
- SiteBookmark site = new SiteBookmark(file.getName(), url);
- site.setType(SiteBookmark.LOCAL);
- return site;
- } catch (Exception e) {
- return null;
- }
- }
-
- /**
- * @see IWorkbenchAdapter#getImageDescriptor(Object)
- */
- public ImageDescriptor getImageDescriptor(Object obj) {
- return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
- ISharedImages.IMG_OBJ_FOLDER);
- }
-
- public Image getImage(Object obj) {
- return PlatformUI.getWorkbench().getSharedImages().getImage(
- ISharedImages.IMG_OBJ_FOLDER);
- }
-
- /**
- * @see IWorkbenchAdapter#getLabel(Object)
- */
- public String getLabel(Object obj) {
- return file.getName();
- }
-
- /**
- * @see IWorkbenchAdapter#getParent(Object)
- */
- public Object getParent(Object arg0) {
- return parent;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputerFile.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputerFile.java
deleted file mode 100644
index 4a6899a..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/MyComputerFile.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.URL;
-import org.eclipse.update.core.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.views.properties.*;
-import org.eclipse.ui.model.*;
-import java.util.*;
-import org.eclipse.update.internal.ui.*;
-import java.io.*;
-import org.eclipse.ui.*;
-import org.eclipse.swt.graphics.Image;
-
-public class MyComputerFile extends UIModelObject implements IWorkbenchAdapter {
- private UIModelObject parent;
- private File file;
-
- public MyComputerFile(UIModelObject parent, File file) {
- this.parent = parent;
- this.file = file;
- }
-
- public Object getAdapter(Class adapter) {
- if (adapter.equals(IWorkbenchAdapter.class)) {
- return this;
- }
- return super.getAdapter(adapter);
- }
-
- public String getName() {
- return file.getName();
- }
-
- public String toString() {
- return getName();
- }
-
- /**
- * @see IWorkbenchAdapter#getChildren(Object)
- */
-
- public Object[] getChildren(Object parent) {
- return new Object[0];
- }
-
-
- /**
- * @see IWorkbenchAdapter#getImageDescriptor(Object)
- */
- public ImageDescriptor getImageDescriptor(Object obj) {
- return PlatformUI.getWorkbench().getEditorRegistry().getImageDescriptor(getName());
- }
-
- /**
- * @see IWorkbenchAdapter#getLabel(Object)
- */
- public String getLabel(Object obj) {
- return getName();
- }
-
-
- /**
- * @see IWorkbenchAdapter#getParent(Object)
- */
- public Object getParent(Object arg0) {
- return parent;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/NamedModelObject.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/NamedModelObject.java
deleted file mode 100644
index 75abb95..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/NamedModelObject.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-
-public class NamedModelObject extends UIModelObject
- implements IWorkbenchAdapter {
- private String name;
- private NamedModelObject parent;
-
- public static final String P_NAME="p_name";
-
- public NamedModelObject() {
- }
-
- public NamedModelObject(String name) {
- this.name = name;
- }
-
- public Object getAdapter(Class adapter) {
- if (adapter.equals(IWorkbenchAdapter.class)) {
- return this;
- }
- return super.getAdapter(adapter);
- }
-
- public String getName() {
- return name;
- }
-
- public IPath getPath() {
- Object parent = getParent(null);
- if (parent!=null && parent instanceof NamedModelObject)
- return ((NamedModelObject)parent).getPath().append(getName());
- else
- return new Path(getName());
- }
-
- public String toString() {
- return getName();
- }
-
- public void setName(String name) {
- this.name = name;
- notifyObjectChanged(P_NAME);
- }
-
- /**
- * @see IWorkbenchAdapter#getChildren(Object)
- */
- public Object[] getChildren(Object parent) {
- return null;
- }
-
-
- /**
- * @see IWorkbenchAdapter#getImageDescriptor(Object)
- */
- public ImageDescriptor getImageDescriptor(Object obj) {
- return null;
- }
-
-
- /**
- * @see IWorkbenchAdapter#getLabel(Object)
- */
- public String getLabel(Object obj) {
- return getName();
- }
-
-
- /**
- * @see IWorkbenchAdapter#getParent(Object)
- */
- public Object getParent(Object arg0) {
- return parent;
- }
- public void setParent(NamedModelObject parent) {
- this.parent = parent;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/PendingChange.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/PendingChange.java
deleted file mode 100644
index 4aa1b9b..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/PendingChange.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.core.*;
-import java.util.*;
-import org.eclipse.core.runtime.*;
-
-
-public class PendingChange extends SimpleFeatureAdapter {
- public static final int INSTALL = 0x1;
- public static final int UNINSTALL = 0x2;
- public static final int CONFIGURE = 0x3;
- public static final int UNCONFIGURE = 0x4;
- private int jobType;
- private IFeature oldFeature;
-
- public PendingChange(IFeature feature, int jobType) {
- super(feature);
- this.jobType = jobType;
- }
-
- public PendingChange(IFeature oldFeature, IFeature newFeature) {
- this(newFeature, INSTALL);
- this.oldFeature = oldFeature;
- }
-
- public int getJobType() {
- return jobType;
- }
-
- public IFeature getFeature() {
- return feature;
- }
-
- public IFeature getOldFeature() {
- return oldFeature;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/PreservedConfiguration.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/PreservedConfiguration.java
deleted file mode 100644
index 3b92a3f..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/PreservedConfiguration.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.core.runtime.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-
-public class PreservedConfiguration extends UIModelObject {
- private IInstallConfiguration config;
-
- public PreservedConfiguration(IInstallConfiguration config) {
- this.config = config;
- }
-
- public IInstallConfiguration getConfiguration() {
- return config;
- }
-
- public String toString() {
- return config.getLabel();
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SimpleFeatureAdapter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SimpleFeatureAdapter.java
deleted file mode 100644
index fcdbbce..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SimpleFeatureAdapter.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.model;
-
-import org.eclipse.update.core.*;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * @version 1.0
- * @author
- */
-public class SimpleFeatureAdapter extends FeatureAdapter {
- protected IFeature feature;
- public SimpleFeatureAdapter(IFeature feature) {
- this.feature = feature;
- }
-
- public IFeature getFeature() throws CoreException {
- return feature;
- }
-
- public IFeatureAdapter [] getIncludedFeatures() {
- return new IFeatureAdapter[0];
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteBookmark.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteBookmark.java
deleted file mode 100644
index dd986eb..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteBookmark.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.URL;
-import org.eclipse.update.core.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.views.properties.*;
-import org.eclipse.ui.model.*;
-import java.util.*;
-import org.eclipse.update.internal.ui.*;
-
-public class SiteBookmark extends NamedModelObject
- implements ISiteAdapter {
- public static final int USER = 0;
- public static final int LOCAL = 1;
- public static final int LOCAL_BOOKMARK = 2;
- private URL url;
- private ISite site;
- private Vector catalog;
- private SiteCategory otherCategory;
- private int type;
-
- public static final String P_URL="p_url";
-
- public SiteBookmark() {
- }
-
- public SiteBookmark(String name, URL url) {
- super(name);
- this.url = url;
- }
-
- public void setType(int type) {
- this.type = type;
- }
-
- public int getType() {
- return type;
- }
-
- public URL getURL() {
- return url;
- }
-
-
- public void setURL(URL url) {
- this.url = url;
- site = null;
- notifyObjectChanged(P_URL);
- }
-
- public ISite getSite() {
- return getSite(true);
- }
-
- public ISite getSite(boolean showDialogIfFailed) {
- if (site==null) {
- try {
- connect();
- }
- catch (CoreException e) {
- UpdateUIPlugin.logException(e, showDialogIfFailed);
- }
- }
- return site;
- }
-
- public boolean isSiteConnected() {
- return site!=null;
- }
-
- public void connect() throws CoreException {
- site = SiteManager.getSite(url);
- createCatalog();
- }
-
- private void createCatalog() {
- catalog = new Vector();
- otherCategory = new SiteCategory(null, null);
- // Add all the categories
- ICategory [] categories;
- categories = site.getCategories();
-
- for (int i=0; i<categories.length; i++) {
- ICategory category = categories[i];
- addCategoryToCatalog(category);
- }
- // Add features to categories
- IFeatureReference [] featureRefs;
- featureRefs = site.getFeatureReferences();
-
- for (int i=0; i<featureRefs.length; i++) {
- IFeatureReference featureRef = featureRefs[i];
- addFeatureToCatalog(featureRef);
- }
- if (otherCategory.getChildCount()>0)
- catalog.add(otherCategory);
- }
-
- public Object [] getCatalog(boolean withCategories) {
- if (withCategories)
- return catalog.toArray();
- else {
- // Make a flat catalog
- Vector flatCatalog = new Vector();
- for (int i=0; i<catalog.size(); i++) {
- SiteCategory category = (SiteCategory)catalog.get(i);
- category.addFeaturesTo(flatCatalog);
- }
- return flatCatalog.toArray();
- }
- }
-
- private void addCategoryToCatalog(ICategory category) {
- String name = category.getName();
- int loc = name.indexOf('/');
- if (loc == -1) {
- // first level
- catalog.add(new SiteCategory(name, category));
- }
- else {
- IPath path = new Path(name);
- name = path.lastSegment().toString();
- path = path.removeLastSegments(1);
- SiteCategory parentCategory = findCategory(path, catalog.toArray());
- if (parentCategory!=null) {
- parentCategory.add(new SiteCategory(name, category));
- }
- }
- }
- private void addFeatureToCatalog(IFeatureReference feature) {
- ICategory [] categories = feature.getCategories();
- boolean orphan = true;
-
- for (int i=0; i<categories.length; i++) {
- ICategory category = categories[i];
- String name = category.getName();
- IPath path = new Path(name);
- SiteCategory parentCategory = findCategory(path, catalog.toArray());
- if (parentCategory!=null) {
- parentCategory.add(new FeatureReferenceAdapter(feature));
- orphan = false;
- }
- }
- if (orphan)
- otherCategory.add(new FeatureReferenceAdapter(feature));
- }
-
- private SiteCategory findCategory(IPath path, Object [] children) {
- for (int i=0; i<children.length; i++) {
- Object child = children[i];
- if (child instanceof SiteCategory) {
- SiteCategory sc = (SiteCategory)child;
- if (sc.getName().equals(path.segment(0))) {
- if (path.segmentCount()==1) return sc;
- else {
- path = path.removeFirstSegments(1);
- return findCategory(path, sc.getChildren());
- }
- }
- }
- }
- return null;
- }
- /**
- * @see ISiteAdapter#getLabel()
- */
- public String getLabel() {
- return getName();
- }
-
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteCategory.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteCategory.java
deleted file mode 100644
index 38163da..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/SiteCategory.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.util.*;
-import org.eclipse.update.core.*;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import java.net.URL;
-import org.eclipse.core.runtime.PlatformObject;
-
-public class SiteCategory extends UIModelObject {
-private static final String KEY_OTHER_LABEL= "SiteCategory.other.label";
-private static final String KEY_OTHER_DESCRIPTION= "SiteCategory.other.description";
-
- Vector children;
- private ICategory category;
- private String name;
-
- class OtherCategory implements ICategory {
- IURLEntry entry;
- public OtherCategory() {
- entry = new IURLEntry () {
- public String getAnnotation() {
- return UpdateUIPlugin.getResourceString(KEY_OTHER_DESCRIPTION);
- }
- public URL getURL() {
- return null;
- }
- public Object getAdapter(Class clazz) {
- return null;
- }
- };
- }
- public String getName() {
- return SiteCategory.this.getName();
- }
- public String getLabel() {
- return SiteCategory.this.getName();
- }
- public IURLEntry getDescription() {
- return entry;
- }
- public Object getAdapter(Class clazz) {
- return null;
- }
- }
-
- public SiteCategory(String name, ICategory category) {
- if (category==null) {
- this.name = UpdateUIPlugin.getResourceString(KEY_OTHER_LABEL);
- this.category = new OtherCategory();
- }
- else {
- this.name = name;
- this.category = category;
- }
- children = new Vector();
- }
-
- public boolean isOtherCategory() {
- return category instanceof OtherCategory;
- }
-
- public Object [] getChildren() {
- return children.toArray();
- }
-
- public int getChildCount() {
- return children.size();
- }
-
- public String getName() {
- return name;
- }
- public String getFullName() {
- return category.getName();
- }
-
- public String toString() {
- return category.getLabel();
- }
-
- public ICategory getCategory() {
- return category;
- }
-
- void add(Object child) {
- children.add(child);
- }
-
- public void touchFeatures() throws CoreException {
- for (int i=0; i<children.size(); i++) {
- Object child = children.get(i);
- if (child instanceof FeatureReferenceAdapter) {
- FeatureReferenceAdapter cf = (FeatureReferenceAdapter)child;
- cf.getFeature();
- }
- else if (child instanceof SiteCategory) {
- ((SiteCategory)child).touchFeatures();
- }
- }
- }
-
- public void addFeaturesTo(Vector flatList) {
- for (int i=0; i<children.size(); i++) {
- Object child = children.get(i);
- if (child instanceof FeatureReferenceAdapter) {
- FeatureReferenceAdapter cfeature = (FeatureReferenceAdapter)child;
- // Don't add duplicates - there may be the same
- // feature present in several categories
- if (findFeature(flatList, cfeature.getFeatureReference())==null) {
- flatList.add(child);
- }
- }
- else if (child instanceof SiteCategory) {
- ((SiteCategory)child).addFeaturesTo(flatList);
- }
- }
- }
-
- private FeatureReferenceAdapter findFeature(Vector flatList, IFeatureReference featureRef) {
- for (int i=0; i<flatList.size(); i++) {
- FeatureReferenceAdapter cfeature = (FeatureReferenceAdapter)flatList.get(i);
- if (cfeature.getFeatureReference().equals(featureRef))
- return cfeature;
- }
- return null;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/UIModelObject.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/UIModelObject.java
deleted file mode 100644
index 0bf4d37..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/UIModelObject.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.ui.model.IWorkbenchAdapter;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-
-public class UIModelObject extends PlatformObject implements IWorkbenchAdapter {
- UpdateModel model;
-
- public void setModel(UpdateModel model) {
- this.model = model;
- }
-
- public UpdateModel getModel() {
- return model;
- }
-
- protected void notifyObjectChanged(String property) {
- if (model==null) return;
- model.fireObjectChanged(this, property);
- }
-
- protected void notifyObjectsAdded(Object parent, Object [] objects) {
- if (model==null) return;
- model.fireObjectsAdded(parent, objects);
- }
-
- protected void notifyObjectsRemoved(Object parent, Object [] objects) {
- if (model==null) return;
- model.fireObjectsRemoved(parent, objects);
- }
-
- public Object [] getChildren(Object obj) {
- return new Object[0];
- }
-
- public Object getParent(Object obj) {
- return null;
- }
- public String getLabel(Object obj) {
- return toString();
- }
- public ImageDescriptor getImageDescriptor(Object obj) {
- return null;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/UpdateModel.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/UpdateModel.java
deleted file mode 100644
index 5ec377f..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/model/UpdateModel.java
+++ /dev/null
@@ -1,167 +0,0 @@
-package org.eclipse.update.internal.ui.model;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.util.Iterator;
-import java.util.Vector;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.update.core.IFeature;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-
-public class UpdateModel implements IAdaptable {
- private Vector changes = new Vector();
- private Vector bookmarks = new Vector();
- private Vector listeners = new Vector();
- private IDialogSettings settings;
- private static final String BOOKMARK_FILE = "bookmarks.xml";
-
- public UpdateModel() {
- settings = UpdateUIPlugin.getDefault().getDialogSettings();
- }
-
- public void startup() {
- // load bookmarks
- BookmarkUtil.parse(getBookmarksFileName(), bookmarks);
- }
-
- private String getBookmarksFileName() {
- IPath path = UpdateUIPlugin.getDefault().getStateLocation();
- path = path.append(BOOKMARK_FILE);
- return path.toOSString();
- }
-
- public void shutdown() {
- saveBookmarks();
- }
-
- public void saveBookmarks() {
- BookmarkUtil.store(getBookmarksFileName(), bookmarks);
- }
-
- public PendingChange [] getPendingChanges() {
- return (PendingChange[])
- changes.toArray(new PendingChange[changes.size()]);
- }
-
- public PendingChange [] getPendingChanges(int type) {
- Vector v = new Vector();
- for (int i=0; i<changes.size(); i++) {
- PendingChange job = (PendingChange)changes.elementAt(i);
- if (job.getJobType() == type)
- v.add(job);
- }
- return (PendingChange[])
- v.toArray(new PendingChange[v.size()]);
- }
-
- public PendingChange findPendingChange(IFeature feature) {
- for (int i=0; i<changes.size(); i++) {
- PendingChange job = (PendingChange)changes.elementAt(i);
- if (job.getFeature().equals(feature))
- return job;
- }
- return null;
- }
-
- public PendingChange findRelatedPendingChange(IFeature feature) {
- for (int i=0; i<changes.size(); i++) {
- PendingChange job = (PendingChange)changes.elementAt(i);
-
- String jobId = job.getFeature().getVersionedIdentifier().getIdentifier();
- String id = feature.getVersionedIdentifier().getIdentifier();
- if (id.equals(jobId)) return job;
- }
- return null;
- }
-
-
- public boolean isPending(IFeature feature) {
- return findPendingChange(feature)!=null;
- }
-
- public void addPendingChange(PendingChange change) {
- changes.add(change);
- change.setModel(this);
- fireObjectsAdded(this, new Object[] {change});
- }
-
- public void removePendingChange(PendingChange change) {
- changes.remove(change);
- change.setModel(null);
- fireObjectsRemoved(this, new Object[] {change});
- }
-
- public void removePendingChange(IFeature scheduledFeature) {
- PendingChange change = findPendingChange(scheduledFeature);
- if (change!=null)
- removePendingChange(change);
- }
-
- public void addBookmark(NamedModelObject bookmark) {
- bookmarks.add(bookmark);
- bookmark.setModel(this);
- fireObjectsAdded(null, new Object []{bookmark});
- }
-
- public void removeBookmark(NamedModelObject bookmark) {
- bookmarks.remove(bookmark);
- bookmark.setModel(null);
- fireObjectsRemoved(null, new Object []{bookmark});
- }
-
- public NamedModelObject [] getBookmarks() {
- return (NamedModelObject[])bookmarks.toArray(new NamedModelObject[bookmarks.size()]);
- }
-
- public SiteBookmark [] getBookmarkLeafs() {
- return BookmarkUtil.getBookmarks(bookmarks);
- }
-
- public BookmarkFolder getFolder(IPath path) {
- return BookmarkUtil.getFolder(bookmarks, path);
- }
-
- public void addUpdateModelChangedListener(IUpdateModelChangedListener listener) {
- if (!listeners.contains(listener))
- listeners.add(listener);
- }
-
-
- public void removeUpdateModelChangedListener(IUpdateModelChangedListener listener) {
- if (listeners.contains(listener))
- listeners.remove(listener);
- }
-
- public void fireObjectsAdded(Object parent, Object [] children) {
- for (Iterator iter=listeners.iterator();
- iter.hasNext();) {
- IUpdateModelChangedListener listener = (IUpdateModelChangedListener)iter.next();
- listener.objectsAdded(parent, children);
- }
- }
-
-
- public void fireObjectsRemoved(Object parent, Object [] children) {
- for (Iterator iter=listeners.iterator();
- iter.hasNext();) {
- IUpdateModelChangedListener listener = (IUpdateModelChangedListener)iter.next();
- listener.objectsRemoved(parent, children);
- }
- }
-
- public void fireObjectChanged(Object object, String property) {
- for (Iterator iter=listeners.iterator();
- iter.hasNext();) {
- IUpdateModelChangedListener listener = (IUpdateModelChangedListener)iter.next();
- listener.objectChanged(object, property);
- }
- }
- public Object getAdapter(Class key) {
- return null;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/CategoryPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/CategoryPage.java
deleted file mode 100644
index 6b81342..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/CategoryPage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.CategoryForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class CategoryPage extends UpdateFormPage {
-
- public CategoryPage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new CategoryForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/DetailsPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/DetailsPage.java
deleted file mode 100644
index 3a4a22c..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/DetailsPage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.DetailsForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class DetailsPage extends UpdateFormPage {
-
- public DetailsPage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new DetailsForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/DiscoveryFolderPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/DiscoveryFolderPage.java
deleted file mode 100644
index b8d4a27..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/DiscoveryFolderPage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.DiscoveryFolderForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class DiscoveryFolderPage extends UpdateFormPage {
-
- public DiscoveryFolderPage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new DiscoveryFolderForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/IUpdateFormPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/IUpdateFormPage.java
deleted file mode 100644
index 26661ed..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/IUpdateFormPage.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.jface.action.*;
-import org.eclipse.update.internal.ui.views.*;
-import org.eclipse.update.ui.forms.internal.IFormPage;
-
-public interface IUpdateFormPage extends IFormPage {
- boolean contextMenuAboutToShow(IMenuManager manager);
- IAction getAction(String id);
- void openTo(Object object);
- void performGlobalAction(String id);
- void update();
- void dispose();
- void setFocus();
- MultiPageView getView();
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/InstallConfigurationPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/InstallConfigurationPage.java
deleted file mode 100644
index 4e4833c..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/InstallConfigurationPage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.InstallConfigurationForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class InstallConfigurationPage extends UpdateFormPage {
-
- public InstallConfigurationPage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new InstallConfigurationForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/InstallableSitePage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/InstallableSitePage.java
deleted file mode 100644
index 52dd498..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/InstallableSitePage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.InstallableSiteForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class InstallableSitePage extends UpdateFormPage {
-
- public InstallableSitePage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new InstallableSiteForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/LocalSitePage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/LocalSitePage.java
deleted file mode 100644
index 1989462..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/LocalSitePage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.LocalSiteForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class LocalSitePage extends UpdateFormPage {
-
- public LocalSitePage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new LocalSiteForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/MainPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/MainPage.java
deleted file mode 100644
index 13eaab5..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/MainPage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.MainForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class MainPage extends UpdateFormPage {
-
- public MainPage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new MainForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/MyComputerPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/MyComputerPage.java
deleted file mode 100644
index ad4ab36..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/MyComputerPage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.MyComputerForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class MyComputerPage extends UpdateFormPage {
-
- public MyComputerPage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new MyComputerForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/SearchPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/SearchPage.java
deleted file mode 100644
index 8e75f00..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/SearchPage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.SearchForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class SearchPage extends UpdateFormPage {
-
- public SearchPage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new SearchForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/SitePage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/SitePage.java
deleted file mode 100644
index d26e981..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/SitePage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.SiteForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class SitePage extends UpdateFormPage {
-
- public SitePage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new SiteForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/UnknownObjectPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/UnknownObjectPage.java
deleted file mode 100644
index f468696..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/UnknownObjectPage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.update.internal.ui.pages;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.update.internal.ui.forms.UnknownObjectForm;
-import org.eclipse.update.internal.ui.views.DetailsView;
-import org.eclipse.update.ui.forms.internal.*;
-
-
-public class UnknownObjectPage extends UpdateFormPage {
-
- public UnknownObjectPage(DetailsView view, String title) {
- super(view, title);
- }
-
- public IForm createForm() {
- return new UnknownObjectForm(this);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/UpdateFormPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/UpdateFormPage.java
deleted file mode 100644
index 4f207b2..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/pages/UpdateFormPage.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/AboutInfo.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/AboutInfo.java
deleted file mode 100644
index 647e1d8..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/AboutInfo.java
+++ /dev/null
@@ -1,272 +0,0 @@
-package org.eclipse.update.internal.ui.parts;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.*;
-import java.net.URL;
-import java.util.*;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * The about info class;
- * <p>
- * The information within this object is obtained from the about "ini" file".
- * This file resides within an install configurations directory and must be a
- * standard java property file.
- * </p>
- */
-public class AboutInfo extends ConfigurationInfo {
-
- private String appName;
- private String productName;
- private ImageDescriptor windowImage;
- private ImageDescriptor aboutImage;
- private ImageDescriptor featureImage;
- private String aboutText;
- private URL welcomePageURL;
-
- /**
- * Constructs a new instance of the about info.
- */
- public AboutInfo(String featureId, PluginVersionIdentifier versionId) {
- super(featureId, versionId, "about.ini", "about.properties", "about.mappings"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- /**
- * Returns the descriptor for an image which can be shown in an "about" dialog
- * for this product.
- * Products designed to run "headless" typically would not have such an image.
- *
- * @return the descriptor for an about image, or <code>null</code> if none
- */
- public ImageDescriptor getAboutImage() {
- return aboutImage;
- }
-
- /**
- * Returns the descriptor for an image which can be shown in an "about features"
- * dialog.
- * Products designed to run "headless" typically would not have such an image.
- *
- * @return the descriptor for a feature image, or <code>null</code> if none
- */
- public ImageDescriptor getFeatureImage() {
- return featureImage;
- }
-
- /**
- * Returns a label for the feature, we use the descriptor label
- */
- public String getFeatureLabel() {
- if (getDescriptor() == null)
- return null;
- return getDescriptor().getLabel();
- }
-
- /**
- * Returns the text to show in an "about" dialog for this product.
- * Products designed to run "headless" typically would not have such text.
- *
- * @return the about text, or <code>null</code> if none
- */
- public String getAboutText() {
- return aboutText;
- }
-
- /**
- * Returns the app name or <code>null</code>.
- * Note this is never shown to the user.
- * It is used to initialize the SWT Display.
- * <p>
- * On Motif, for example, this can be used
- * to set the name used for resource lookup.
- * </p>
- *
- * @return the app name, or <code>null</code>
- *
- * @see org.eclipse.swt.widgets.Display#setAppName
- */
- public String getAppName() {
- return appName;
- }
-
- /**
- * Returns the product name or <code>null</code>.
- * This is shown in the window title and the About action.
- *
- * @return the product name, or <code>null</code>
- */
- public String getProductName() {
- return productName;
- }
-
- /**
- * Returns the provider name or <code>null</code>.
- *
- * @return the provider name, or <code>null</code>
- */
- public String getProviderName() {
- IPluginDescriptor desc = getDescriptor();
- if (desc == null)
- return null;
- return desc.getProviderName();
- }
-
- /**
- * Returns the version or <code>null</code>.
- *
- * @return the version, or <code>null</code>
- */
- public String getVersion() {
- PluginVersionIdentifier versionId = getVersionId();
- if (versionId == null)
- return null;
- return versionId.toString();
- }
-
- /**
- * Returns a <code>URL</code> for the welcome page.
- * Products designed to run "headless" typically would not have such an page.
- *
- * @return the welcome page, or <code>null</code> if none
- */
- public URL getWelcomePageURL() {
- return welcomePageURL;
- }
-
- /**
- * Returns the image descriptor for the window image to use for this product.
- * Products designed to run "headless" typically would not have such an image.
- *
- * @return the image descriptor for the window image, or <code>null</code> if none
- */
- public ImageDescriptor getWindowImage() {
- return windowImage;
- }
-
- /**
- * Reads the ini file.
- */
- protected void readINIFile(URL iniURL, URL propertiesURL, URL mappingsURL)
- throws CoreException {
-
- Properties ini = new Properties();
- InputStream is = null;
- try {
- is = iniURL.openStream();
- ini.load(is);
- } catch (IOException e) {
- reportINIFailure(e, "Cannot read about info file " + iniURL); //$NON-NLS-1$
- return;
- } finally {
- try {
- if (is != null)
- is.close();
- } catch (IOException e) {
- }
- }
-
- PropertyResourceBundle bundle = null;
-
- if (propertiesURL != null) {
- InputStream bundleStream = null;
- try {
- bundleStream = propertiesURL.openStream();
- bundle = new PropertyResourceBundle(bundleStream);
- } catch (IOException e) {
- reportINIFailure(e, "Cannot read about properties file " + propertiesURL); //$NON-NLS-1$
- bundle = null;
- } finally {
- try {
- if (bundleStream != null)
- bundleStream.close();
- } catch (IOException e) {
- }
- }
- }
-
- PropertyResourceBundle mappingsBundle = null;
-
- if (mappingsURL != null) {
- InputStream bundleStream = null;
- try {
- bundleStream = mappingsURL.openStream();
- mappingsBundle = new PropertyResourceBundle(bundleStream);
- } catch (IOException e) {
- reportINIFailure(e, "Cannot read about mappings file " + mappingsURL); //$NON-NLS-1$
- mappingsBundle = null;
- } finally {
- try {
- if (bundleStream != null)
- bundleStream.close();
- } catch (IOException e) {
- }
- }
- }
-
- // Create the mappings array
- ArrayList mappingsList = new ArrayList();
- if (mappingsBundle != null) {
- boolean found = true;
- int i = 0;
- while (found) {
- try {
- mappingsList.add(mappingsBundle.getString(new Integer(i).toString()));
- } catch (MissingResourceException e) {
- found = false;
- }
- i++;
- }
- }
- String[] mappingsArray = (String[])mappingsList.toArray(new String[mappingsList.size()]);
-
- productName = (String) ini.get("productName"); //$NON-NLS-1$
- productName = getResourceString(productName, bundle, mappingsArray);
-
- windowImage = getImage(ini, "windowImage"); //$NON-NLS-1$
-
- aboutText = (String) ini.get("aboutText"); //$NON-NLS-1$
- aboutText = getResourceString(aboutText, bundle, mappingsArray);
-
- aboutImage = getImage(ini, "aboutImage"); //$NON-NLS-1$
-
- featureImage = getImage(ini, "featureImage"); //$NON-NLS-1$
-
- welcomePageURL = getURL(ini, "welcomePage");
-
- appName = (String) ini.get("appName"); //$NON-NLS-1$
- appName = getResourceString(appName, bundle, mappingsArray);
-
- }
-
- /**
- * Returns a URL for the given key, or <code>null</code>.
- *
- * @return a URL for the given key, or <code>null</code>
- */
- private URL getURL(Properties ini, String key) {
- URL url = null;
- String fileName = (String) ini.get(key);
- if (fileName != null) {
- url = getDescriptor().find(new Path("$nl$").append(fileName));
- }
- return url;
- }
-
- /**
- * Returns an image descriptor for the given key, or <code>null</code>.
- *
- * @return an image descriptor for the given key, or <code>null</code>
- */
- private ImageDescriptor getImage(Properties ini, String key) {
- URL url = getURL(ini, key);
- if (url != null) {
- return ImageDescriptor.createFromURL(url);
- }
- return null;
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/ConfigurationInfo.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/ConfigurationInfo.java
deleted file mode 100644
index 18991f1..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/ConfigurationInfo.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package org.eclipse.update.internal.ui.parts;
-
-import java.io.IOException;
-import java.net.URL;
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.eclipse.core.boot.BootLoader;
-import org.eclipse.core.boot.IPlatformConfiguration;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPluginDescriptor;
-import org.eclipse.core.runtime.IPluginRegistry;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.PluginVersionIdentifier;
-import org.eclipse.core.runtime.Status;
-
-/**
- * Configuation info class;
- * <p>
- * The information within subclasses of this object is obtained from a configuration
- * "ini" file". This file resides within an install configurations directory and must
- * be a standard java property file. A properties file may also be used to NL values
- * in the ini file.
- * </p>
- */
-
-public abstract class ConfigurationInfo {
-
- private IPluginDescriptor desc;
- private URL baseURL;
- private String featureId;
- private PluginVersionIdentifier versionId;
- private String iniFilename;
- private String propertiesFilename;
- private String mappingsFilename;
-
- private static final String KEY_PREFIX = "%"; //$NON-NLS-1$
- private static final String KEY_DOUBLE_PREFIX = "%%"; //$NON-NLS-1$
-
- protected ConfigurationInfo(String fId, PluginVersionIdentifier vId, String ini, String properties, String mappings) {
- featureId = fId;
- versionId = vId;
- iniFilename = ini;
- propertiesFilename = properties;
- mappingsFilename = mappings;
- }
-
- /**
- * R1.0 platform.ini handling using "main" plugin and fragments for NL
- */
- public void readINIFile() throws CoreException {
- if (featureId == null) {
- reportINIFailure(null, "Unknown configuration identifier"); //$NON-NLS-1$
- return;
- }
-
- // attempt to locate the corresponding plugin
- IPluginRegistry reg = Platform.getPluginRegistry();
- if (reg == null) {
- reportINIFailure(null, "Plugin registry is null"); //$NON-NLS-1$
- return;
- }
- if (versionId == null)
- this.desc = reg.getPluginDescriptor(featureId);
- else {
- this.desc = reg.getPluginDescriptor(featureId, versionId);
- }
- if (this.desc == null) {
- reportINIFailure(null, "Missing plugin descriptor for " + featureId); //$NON-NLS-1$
- return;
- }
- this.baseURL = desc.getInstallURL();
-
- // load the ini, properties and mapping files
- URL iniURL = null;
- try {
- iniURL = desc.find(new Path("$nl$").append(iniFilename));
- if (iniURL != null)
- iniURL = Platform.resolve(iniURL);
- } catch (IOException e) {
- // null check below
- }
- if (iniURL == null) {
- reportINIFailure(null, "Unable to load plugin file: " + iniFilename); //$NON-NLS-1$
- return;
- }
-
- URL propertiesURL = null;
- try {
- propertiesURL = desc.find(new Path("$nl$").append(propertiesFilename));
- if (propertiesURL != null)
- propertiesURL = Platform.resolve(propertiesURL);
- } catch (IOException e) {
- reportINIFailure(null, "Unable to load plugin file: " + propertiesFilename); //$NON-NLS-1$
- }
-
- URL mappingsURL = null;
- try {
- mappingsURL = desc.find(new Path("$nl$").append(mappingsFilename));
- if (mappingsURL != null)
- mappingsURL = Platform.resolve(mappingsURL);
- } catch (IOException e) {
- reportINIFailure(null, "Unable to load mapping file: " + mappingsURL); //$NON-NLS-1$
- }
-
- // OK to pass null properties and/or mapping file
- readINIFile(iniURL, propertiesURL, mappingsURL);
- }
-
- /**
- * Gets the descriptor
- * @return Returns a IPluginDescriptor
- */
- protected IPluginDescriptor getDescriptor() {
- return desc;
- }
- /**
- * Gets the baseURL
- * @return Returns a URL
- */
- protected URL getBaseURL() {
- return baseURL;
- }
- /**
- * Gets the feature id
- * @return the feature id
- */
- public String getFeatureId() {
- return featureId;
- }
- /**
- * Gets the version id
- * @return the version id
- */
- protected PluginVersionIdentifier getVersionId() {
- return versionId;
- }
-
- /**
- * Returns a resource string corresponding to the given argument
- * value and bundle.
- * If the argument value specifies a resource key, the string
- * is looked up in the given resource bundle. If the argument does not
- * specify a valid key, the argument itself is returned as the
- * resource string. The key lookup is performed against the
- * specified resource bundle. If a resource string
- * corresponding to the key is not found in the resource bundle
- * the key value, or any default text following the key in the
- * argument value is returned as the resource string.
- * A key is identified as a string begining with the "%" character.
- * Note that the "%" character is stripped off prior to lookup
- * in the resource bundle.
- * <p>
- * For example, assume resource bundle plugin.properties contains
- * name = Project Name
- * <pre>
- * <li>getResourceString("Hello World") returns "Hello World"</li>
- * <li>getResourceString("%name") returns "Project Name"</li>
- * <li>getResourceString("%name Hello World") returns "Project Name"</li>
- * <li>getResourceString("%abcd Hello World") returns "Hello World"</li>
- * <li>getResourceString("%abcd") returns "%abcd"</li>
- * <li>getResourceString("%%name") returns "%name"</li>
- * <li>getResourceString(<code>null</code>) returns <code>null</code></li>
- * </pre>
- * </p>
- *
- * @param value the value or <code>null</code>
- * @param b the resource bundle or <code>null</code>
- * @param mappings
- * @return the resource string
- */
- protected String getResourceString(String value, ResourceBundle b, String[] mappings) {
-
- if(value == null)
- return null;
- String s = value.trim();
-
- if (!s.startsWith(KEY_PREFIX))
- return s;
-
- if (s.startsWith(KEY_DOUBLE_PREFIX))
- return s.substring(1);
-
- int ix = s.indexOf(" "); //$NON-NLS-1$
- String key = ix == -1 ? s : s.substring(0, ix);
- String dflt = ix == -1 ? s : s.substring(ix + 1);
-
- if (b == null)
- return dflt;
-
- String result = null;
- try {
- result = b.getString(key.substring(1));
- } catch (MissingResourceException e) {
- reportINIFailure(e, "Property \"" + key + "\" not found");//$NON-NLS-1$ //$NON-NLS-2$
- return dflt;
- }
-
- if (result.indexOf('{') != -1) {
- // We test for the curly braces since due to NL issues we do not
- // want to use MessageFormat unless we have to.
- result = MessageFormat.format(result, mappings);
- }
-
- return result;
- }
-
- /**
- * Read the ini file.
- */
- protected abstract void readINIFile(URL iniURL, URL propertiesURL, URL mappingURL)
- throws CoreException;
-
- /**
- * Report an ini failure
- */
- protected void reportINIFailure(Exception e, String message) {
-/*
- if (!WorkbenchPlugin.DEBUG) {
- // only report ini problems if the -debug command line argument is used
- return;
- }
-
- IStatus iniStatus = new Status(IStatus.ERROR, WorkbenchPlugin.getDefault().getDescriptor().getUniqueIdentifier(),
- 0, message, e);
- WorkbenchPlugin.log("Problem reading configuration info for: " + getFeatureId(), iniStatus);//$NON-NLS-1$
-*/
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/DefaultContentProvider.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/DefaultContentProvider.java
deleted file mode 100644
index cecc271..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/DefaultContentProvider.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.eclipse.update.internal.ui.parts;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.viewers.*;
-
-public class DefaultContentProvider implements IContentProvider {
-
-public DefaultContentProvider() {
- super();
-}
-public void dispose() {}
-public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/EnvironmentUtil.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/EnvironmentUtil.java
deleted file mode 100644
index ff0abda..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/EnvironmentUtil.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.eclipse.update.internal.ui.parts;
-
-import java.util.StringTokenizer;
-
-import org.eclipse.core.boot.BootLoader;
-import org.eclipse.update.core.IFeature;
-
-public class EnvironmentUtil {
- public static boolean isValidEnvironment(IFeature candidate) {
- String os = candidate.getOS();
- String ws = candidate.getWS();
- String nl = candidate.getNL();
- String arch = candidate.getArch();
- if (os!=null && isMatching(os, BootLoader.getOS())==false) return false;
- if (ws!=null && isMatching(ws, BootLoader.getWS())==false) return false;
- if (nl!=null && isMatching(nl, BootLoader.getNL())==false) return false;
- if (arch!=null && isMatching(arch, BootLoader.getOSArch())==false) return false;
- return true;
- }
-
- private static boolean isMatching(String values, String current) {
- StringTokenizer stok = new StringTokenizer(values, ",");
- while (stok.hasMoreTokens()) {
- String token = stok.nextToken();
- if (token.equalsIgnoreCase(current)) return true;
- }
- return false;
- }
-
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/OverlayIcon.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/OverlayIcon.java
deleted file mode 100644
index 0735db9..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/OverlayIcon.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package org.eclipse.update.internal.ui.parts;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.Point;
-
-import org.eclipse.jface.resource.CompositeImageDescriptor;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-/**
- * An OverlayIcon consists of a main icon and several adornments.
- */
-public class OverlayIcon extends CompositeImageDescriptor {
-
- static final int DEFAULT_WIDTH= 16;
- static final int DEFAULT_HEIGHT= 16;
-
- private Point fSize= null;
-
- private ImageDescriptor fBase;
- private ImageDescriptor fOverlays[][];
-
- public OverlayIcon(ImageDescriptor base, ImageDescriptor[][] overlays) {
- fBase= base;
- if (fBase == null)
- fBase= ImageDescriptor.getMissingImageDescriptor();
- fOverlays= overlays;
- fSize= new Point(DEFAULT_WIDTH, DEFAULT_HEIGHT);
- }
- public OverlayIcon(ImageDescriptor base, ImageDescriptor[][] overlays, Point size) {
- fBase= base;
- if (fBase == null)
- fBase= ImageDescriptor.getMissingImageDescriptor();
- fOverlays= overlays;
- fSize= size;
- }
- protected void drawBottomLeft(ImageDescriptor[] overlays) {
- if (overlays == null)
- return;
- int length= overlays.length;
- int x= 0;
- for (int i= 0; i < 3; i++) {
- if (i < length && overlays[i] != null) {
- ImageData id= overlays[i].getImageData();
- drawImage(id, x, getSize().y-id.height);
- x+= id.width;
- }
- }
- }
- protected void drawBottomRight(ImageDescriptor[] overlays) {
- if (overlays == null)
- return;
- int length= overlays.length;
- int x= getSize().x;
- for (int i= 2; i >= 0; i--) {
- if (i < length && overlays[i] != null) {
- ImageData id= overlays[i].getImageData();
- x-= id.width;
- drawImage(id, x, getSize().y-id.height);
- }
- }
- }
- protected void drawCompositeImage(int width, int height) {
- ImageData bg= fBase.getImageData();
- drawImage(bg, 0, 0);
-
- if (fOverlays != null) {
- if (fOverlays.length > 0)
- drawTopRight( fOverlays[0]);
-
- if (fOverlays.length > 1)
- drawBottomRight(fOverlays[1]);
-
- if (fOverlays.length > 2)
- drawBottomLeft(fOverlays[2]);
-
- if (fOverlays.length > 3)
- drawTopLeft(fOverlays[3]);
- }
- }
- protected void drawTopLeft(ImageDescriptor[] overlays) {
- if (overlays == null)
- return;
- int length= overlays.length;
- int x= 0;
- for (int i= 0; i < 3; i++) {
- if (i < length && overlays[i] != null) {
- ImageData id= overlays[i].getImageData();
- drawImage(id, x, 0);
- x+= id.width;
- }
- }
- }
- protected void drawTopRight(ImageDescriptor[] overlays) {
- if (overlays == null)
- return;
- int length= overlays.length;
- int x= getSize().x;
- for (int i= 2; i >= 0; i--) {
- if (i < length && overlays[i] != null) {
- ImageData id= overlays[i].getImageData();
- x-= id.width;
- drawImage(id, x, 0);
- }
- }
- }
-
- protected Point getSize() {
- return fSize;
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/PixelConverter.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/PixelConverter.java
deleted file mode 100644
index e10e58c..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/PixelConverter.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.parts;
-/**
- * @version 1.0
- * @author
- */
-import org.eclipse.swt.graphics.FontMetrics;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.widgets.Control;
-
-import org.eclipse.jface.dialogs.Dialog;
-
-public class PixelConverter {
-
- private FontMetrics fFontMetrics;
-
- public PixelConverter(Control control) {
- GC gc = new GC(control);
- gc.setFont(control.getFont());
- fFontMetrics= gc.getFontMetrics();
- gc.dispose();
- }
-
- private FontMetrics fgFontMetrics;
-
- /**
- * @see DialogPage#convertHeightInCharsToPixels
- */
- public int convertHeightInCharsToPixels(int chars) {
- return Dialog.convertHeightInCharsToPixels(fFontMetrics, chars);
- }
-
- /**
- * @see DialogPage#convertHorizontalDLUsToPixels
- */
- public int convertHorizontalDLUsToPixels(int dlus) {
- return Dialog.convertHorizontalDLUsToPixels(fFontMetrics, dlus);
- }
-
- /**
- * @see DialogPage#convertVerticalDLUsToPixels
- */
- public int convertVerticalDLUsToPixels(int dlus) {
- return Dialog.convertVerticalDLUsToPixels(fFontMetrics, dlus);
- }
-
- /**
- * @see DialogPage#convertWidthInCharsToPixels
- */
- public int convertWidthInCharsToPixels(int chars) {
- return Dialog.convertWidthInCharsToPixels(fFontMetrics, chars);
- }
-
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/SWTUtil.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/SWTUtil.java
deleted file mode 100644
index 7f8e62a..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/SWTUtil.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.parts;
-/**
- * @version 1.0
- * @author
- */
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.DragSource;
-import org.eclipse.swt.dnd.DropTarget;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Caret;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ScrollBar;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Utility class to simplify access to some SWT resources.
- */
-public class SWTUtil {
-
- /**
- * Returns the standard display to be used. The method first checks, if
- * the thread calling this method has an associated disaply. If so, this
- * display is returned. Otherwise the method returns the default display.
- */
- public static Display getStandardDisplay() {
- Display display;
- display= Display.getCurrent();
- if (display == null)
- display= Display.getDefault();
- return display;
- }
-
- /**
- * Returns the shell for the given widget. If the widget doesn't represent
- * a SWT object that manage a shell, <code>null</code> is returned.
- *
- * @return the shell for the given widget
- */
- public static Shell getShell(Widget widget) {
- if (widget instanceof Control)
- return ((Control)widget).getShell();
- if (widget instanceof Caret)
- return ((Caret)widget).getParent().getShell();
- if (widget instanceof DragSource)
- return ((DragSource)widget).getControl().getShell();
- if (widget instanceof DropTarget)
- return ((DropTarget)widget).getControl().getShell();
- if (widget instanceof Menu)
- return ((Menu)widget).getParent().getShell();
- if (widget instanceof ScrollBar)
- return ((ScrollBar)widget).getParent().getShell();
-
- return null;
- }
-
-
- /**
- * Returns a width hint for a button control.
- */
- public static int getButtonWidthHint(Button button) {
- PixelConverter converter= new PixelConverter(button);
- int widthHint= converter.convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
- return Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
- }
-
- /**
- * Returns a height hint for a button control.
- */
- public static int getButtonHeigthHint(Button button) {
- PixelConverter converter= new PixelConverter(button);
- return converter.convertVerticalDLUsToPixels(IDialogConstants.BUTTON_HEIGHT);
- }
-
-
- /**
- * Sets width and height hint for the button control.
- * <b>Note:</b> This is a NOP if the button's layout data is not
- * an instance of <code>GridData</code>.
- *
- * @param the button for which to set the dimension hint
- */
- public static void setButtonDimensionHint(Button button) {
- Assert.isNotNull(button);
- Object gd= button.getLayoutData();
- if (gd instanceof GridData) {
- ((GridData)gd).heightHint= getButtonHeigthHint(button);
- ((GridData)gd).widthHint= getButtonWidthHint(button);
- }
- }
-
-
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/VolumeLabelProvider.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/VolumeLabelProvider.java
deleted file mode 100644
index 810a021..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/parts/VolumeLabelProvider.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.eclipse.update.internal.ui.parts;
-
-import java.io.File;
-
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.ui.*;
-
-public class VolumeLabelProvider extends LabelProvider {
- private static final String KEY_VOLUME_CDROM = "VolumeLabelProvider.cdrom";
- private static final String KEY_VOLUME_FLOPPY_3 =
- "VolumeLabelProvider.floppy3";
- private static final String KEY_VOLUME_FLOPPY_5 =
- "VolumeLabelProvider.floppy5";
- private static final String KEY_LOCAL_DISK =
- "VolumeLabelProvider.localDisk";
- private Image cdImage;
- private Image vfixedImage;
- private Image floppyImage;
- private Image vremovableImage;
- private Image vremoteImage;
- /**
- * Constructor for VolumeLabelProvider.
- */
- public VolumeLabelProvider() {
- floppyImage = UpdateUIPluginImages.DESC_FLOPPY_OBJ.createImage();
- cdImage = UpdateUIPluginImages.DESC_CD_OBJ.createImage();
- vfixedImage = UpdateUIPluginImages.DESC_VFIXED_OBJ.createImage();
- vremoteImage = UpdateUIPluginImages.DESC_VREMOTE_OBJ.createImage();
- vremovableImage =
- UpdateUIPluginImages.DESC_VREMOVABLE_OBJ.createImage();
- }
-
- public String getText(Object obj) {
- if (obj instanceof IVolume) {
- return getVolumeText((IVolume) obj);
- }
- return obj.toString();
- }
-
- private String getVolumeText(IVolume volume) {
- String fileName = getVolumeName(volume);
- String nativeLabel = volume.getLabel();
- if (nativeLabel == null || nativeLabel.length() == 0) {
- // set well-known names for types
- int type = volume.getType();
- switch (type) {
- case LocalSystemInfo.VOLUME_CDROM :
- nativeLabel =
- UpdateUIPlugin.getResourceString(KEY_VOLUME_CDROM);
- break;
- case LocalSystemInfo.VOLUME_FLOPPY_3 :
- nativeLabel =
- UpdateUIPlugin.getResourceString(KEY_VOLUME_FLOPPY_3);
- break;
- case LocalSystemInfo.VOLUME_FLOPPY_5 :
- nativeLabel =
- UpdateUIPlugin.getResourceString(KEY_VOLUME_FLOPPY_5);
- break;
- case LocalSystemInfo.VOLUME_FIXED:
- nativeLabel =
- UpdateUIPlugin.getResourceString(KEY_LOCAL_DISK);
- break;
- }
- }
- if (nativeLabel != null && nativeLabel.length() > 0) {
- return nativeLabel + " (" + fileName + ")";
- } else {
- return fileName;
- }
- }
- private String getVolumeName(IVolume volume) {
- String name = volume.getFile().getPath();
- if (name.endsWith(File.separator) && name.length()>1) {
- name = name.substring(0, name.length()-1);
- }
- return name;
- }
-
- public Image getImage(Object obj) {
- if (obj instanceof IVolume) {
- return getVolumeImage((IVolume) obj);
- }
- return vfixedImage;
- }
- private Image getVolumeImage(IVolume volume) {
- switch (volume.getType()) {
- case LocalSystemInfo.VOLUME_CDROM :
- return cdImage;
- case LocalSystemInfo.VOLUME_FIXED :
- return vfixedImage;
- case LocalSystemInfo.VOLUME_FLOPPY_3 :
- case LocalSystemInfo.VOLUME_FLOPPY_5 :
- return floppyImage;
- case LocalSystemInfo.VOLUME_RAMDISK :
- case LocalSystemInfo.VOLUME_REMOVABLE :
- return vremovableImage;
- case LocalSystemInfo.VOLUME_REMOTE :
- return vremoteImage;
- }
- return null;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/preferences/MainPreferencePage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/preferences/MainPreferencePage.java
deleted file mode 100644
index 6b79f53..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/preferences/MainPreferencePage.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.eclipse.update.internal.ui.preferences;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.preference.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.ui.*;
-import org.eclipse.update.core.SiteManager;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-
-/**
- * Insert the type's description here.
- * @see PreferencePage
- */
-public class MainPreferencePage
- extends FieldEditorPreferencePage
- implements IWorkbenchPreferencePage {
- private static final String KEY_DESCRIPTION = "MainPreferencePage.description";
- private static final String PREFIX = UpdateUIPlugin.getPluginId();
- private static final String P_HISTORY_SIZE = PREFIX + ".historySize";
- private static final String P_BROWSER = PREFIX + ".browser";
- private static final String EMBEDDED_VALUE = "embedded";
- private static final String SYSTEM_VALUE = "system";
- private static final String KEY_HISTORY_SIZE = "MainPreferencePage.historySize";
- private static final String KEY_BROWSER_CHOICE =
- "MainPreferencePage.browserChoice";
- private static final String KEY_BROWSER_CHOICE_EMBEDDED =
- "MainPreferencePage.browserChoice.embedded";
- private static final String KEY_BROWSER_CHOICE_SYSTEM =
- "MainPreferencePage.browserChoice.system";
- /**
- * The constructor.
- */
- public MainPreferencePage() {
- super(GRID);
- setPreferenceStore(UpdateUIPlugin.getDefault().getPreferenceStore());
- setDescription(UpdateUIPlugin.getResourceString(KEY_DESCRIPTION));
- initializeDefaults(getPreferenceStore());
- }
-
- /**
- * Insert the method's description here.
- * @see PreferencePage#init
- */
- public void init(IWorkbench workbench) {
- }
- public void createFieldEditors() {
- IntegerFieldEditor maxLevel =
- new IntegerFieldEditor(
- P_HISTORY_SIZE,
- UpdateUIPlugin.getResourceString(KEY_HISTORY_SIZE),
- getFieldEditorParent());
- maxLevel.setValidRange(1, Integer.MAX_VALUE);
- addField(maxLevel);
- if (SWT.getPlatform().equals("win32")) {
- RadioGroupFieldEditor browser =
- new RadioGroupFieldEditor(
- P_BROWSER,
- UpdateUIPlugin.getResourceString(KEY_BROWSER_CHOICE),
- 1,
- new String[][] {
- {
- UpdateUIPlugin.getResourceString(KEY_BROWSER_CHOICE_EMBEDDED),
- EMBEDDED_VALUE },
- {
- UpdateUIPlugin.getResourceString(KEY_BROWSER_CHOICE_SYSTEM), SYSTEM_VALUE }
- }, getFieldEditorParent());
- addField(browser);
- }
- }
- private static void initializeDefaults(IPreferenceStore store) {
- store.setDefault(P_HISTORY_SIZE, 5);
- store.setDefault(P_BROWSER, EMBEDDED_VALUE);
- }
- private int getHistorySize() {
- IPreferenceStore store = UpdateUIPlugin.getDefault().getPreferenceStore();
- initializeDefaults(store);
- return store.getInt(P_HISTORY_SIZE);
- }
- public static boolean getUseEmbeddedBrowser() {
- IPreferenceStore store = UpdateUIPlugin.getDefault().getPreferenceStore();
- initializeDefaults(store);
- return store.getString(P_BROWSER).equals(EMBEDDED_VALUE);
- }
-
- public boolean performOk() {
- boolean result = super.performOk();
- if (result) {
- BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {
- public void run() {
- try {
- SiteManager.getLocalSite().setMaximumHistoryCount(getHistorySize());
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- });
- }
- return result;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/ConfigurationPropertyPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/ConfigurationPropertyPage.java
deleted file mode 100644
index dabe837..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/ConfigurationPropertyPage.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.eclipse.update.internal.ui.properties;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.dialogs.PropertyPage;
-import org.eclipse.ui.IWorkbenchPropertyPage;
-import org.eclipse.swt.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Insert the type's description here.
- * @see PropertyPage
- */
-public class ConfigurationPropertyPage extends PropertyPage implements IWorkbenchPropertyPage {
- private static final String KEY_NAME = "ConfigurationPropertyPage.name";
- private Text nameText;
- private boolean changed;
- /**
- * The constructor.
- */
- public ConfigurationPropertyPage() {
- }
-
- /**
- * Insert the method's description here.
- * @see PropertyPage#createContents
- */
- protected Control createContents(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- container.setLayout(layout);
-
- Label label = new Label(container, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_NAME));
- nameText = new Text(container, SWT.SINGLE|SWT.BORDER);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- nameText.setLayoutData(gd);
- initializeFields();
- return container;
- }
-
- public boolean performOk() {
- if (changed) {
- IInstallConfiguration config = getConfiguration();
- config.setLabel(nameText.getText());
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- model.fireObjectChanged(getElement(), null);
- try {
- SiteManager.getLocalSite().save();
- }
- catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- return true;
- }
-
- private IInstallConfiguration getConfiguration() {
- Object obj = getElement();
- if (obj instanceof PreservedConfiguration)
- return ((PreservedConfiguration)obj).getConfiguration();
- return (IInstallConfiguration)obj;
- }
-
- private void initializeFields() {
- IInstallConfiguration config = getConfiguration();
- nameText.setText(config.getLabel());
- nameText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- checkFields();
- }
- });
- }
- private void checkFields() {
- boolean valid = true;
- // check the value
- setValid(valid);
- changed=true;
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/SiteBookmarkPropertyPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/SiteBookmarkPropertyPage.java
deleted file mode 100644
index df2e011..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/SiteBookmarkPropertyPage.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.eclipse.update.internal.ui.properties;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.dialogs.PropertyPage;
-import org.eclipse.ui.IWorkbenchPropertyPage;
-import org.eclipse.swt.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.swt.events.*;
-import java.net.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-
-/**
- * Insert the type's description here.
- * @see PropertyPage
- */
-public class SiteBookmarkPropertyPage
- extends PropertyPage
- implements IWorkbenchPropertyPage {
- private static final String KEY_NAME = "SiteBookmarkPropertyPage.name";
- private static final String KEY_ADDRESS = "SiteBookmarkPropertyPage.address";
- private Text siteName;
- private Text siteURL;
- private boolean changed;
- private boolean urlChanged;
- /**
- * The constructor.
- */
- public SiteBookmarkPropertyPage() {
- }
-
- /**
- * Insert the method's description here.
- * @see PropertyPage#createContents
- */
- protected Control createContents(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- container.setLayout(layout);
-
- Label label = new Label(container, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_NAME));
- siteName = new Text(container, SWT.SINGLE | SWT.BORDER);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- siteName.setLayoutData(gd);
- label = new Label(container, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_ADDRESS));
- siteURL = new Text(container, SWT.SINGLE | SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- siteURL.setLayoutData(gd);
- initializeFields();
- return container;
- }
-
- public boolean performOk() {
- if (changed) {
- SiteBookmark site = (SiteBookmark) getElement();
- site.setName(siteName.getText());
-
- if (urlChanged) {
-
- try {
- URL url = new URL(siteURL.getText());
- site.setURL(url);
- } catch (MalformedURLException e) {
- }
- }
- }
- return true;
- }
-
- private void initializeFields() {
- SiteBookmark site = (SiteBookmark) getElement();
- siteName.setText(site.getName());
- siteURL.setText(site.getURL().toString());
- siteName.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- checkFields();
- }
- });
- siteURL.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- urlChanged = true;
- checkFields();
- }
- });
- siteName.setEnabled(site.getType() != SiteBookmark.LOCAL);
- siteURL.setEnabled(site.getType() == SiteBookmark.USER);
- }
- private void checkFields() {
- boolean valid = true;
- if (siteName.getText().length() == 0)
- valid = false;
- try {
- new URL(siteURL.getText());
- } catch (MalformedURLException e) {
- valid = false;
- }
- setValid(valid);
- changed = true;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/SiteBookmarkPropertySource.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/SiteBookmarkPropertySource.java
deleted file mode 100644
index 62fee2c..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/properties/SiteBookmarkPropertySource.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.eclipse.update.internal.ui.properties;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.ui.views.properties.*;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import java.util.*;
-import org.eclipse.update.internal.ui.model.*;
-import java.net.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-
-public class SiteBookmarkPropertySource implements IPropertySource {
- private static final String KEY_URL_LABEL =
- "SiteBookmarkPropertySource.url.label";
- private static final String KEY_URL_DESC =
- "SiteBookmarkPropertySource.url.desc";
- private static final String KEY_NAME_LABEL =
- "SiteBookmarkPropertySource.name.label";
- private static final String KEY_NAME_DESC =
- "SiteBookmarkPropertySource.name.desc";
-
- private SiteBookmark bookmark;
-
- public SiteBookmarkPropertySource(SiteBookmark bookmark) {
- this.bookmark = bookmark;
- }
- /**
- * @see IPropertySource#getEditableValue()
- */
- public Object getEditableValue() {
- return null;
- }
-
- /**
- * @see IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors() {
- IPropertyDescriptor[] descriptors = new IPropertyDescriptor[2];
- PropertyDescriptor desc;
- if (bookmark.getType() != SiteBookmark.LOCAL)
- desc =
- new TextPropertyDescriptor(
- SiteBookmark.P_URL,
- UpdateUIPlugin.getResourceString(KEY_URL_LABEL));
- else
- desc =
- new PropertyDescriptor(
- SiteBookmark.P_URL,
- UpdateUIPlugin.getResourceString(KEY_URL_LABEL));
- desc.setDescription(UpdateUIPlugin.getResourceString(KEY_URL_DESC));
- descriptors[0] = desc;
-
- if (bookmark.getType() == SiteBookmark.USER)
- desc =
- new TextPropertyDescriptor(
- SiteBookmark.P_NAME,
- UpdateUIPlugin.getResourceString(KEY_NAME_LABEL));
- else
- desc =
- new PropertyDescriptor(
- SiteBookmark.P_NAME,
- UpdateUIPlugin.getResourceString(KEY_NAME_LABEL));
- desc.setDescription(UpdateUIPlugin.getResourceString(KEY_NAME_DESC));
- descriptors[1] = desc;
- return descriptors;
- }
-
- /**
- * @see IPropertySource#getPropertyValue(Object)
- */
- public Object getPropertyValue(Object property) {
- if (property.equals(SiteBookmark.P_NAME))
- return bookmark.getName();
- if (property.equals(SiteBookmark.P_URL))
- return bookmark.getURL().toString();
- return "";
- }
-
- /**
- * @see IPropertySource#isPropertySet(Object)
- */
- public boolean isPropertySet(Object arg0) {
- return false;
- }
-
- /**
- * @see IPropertySource#resetPropertyValue(Object)
- */
- public void resetPropertyValue(Object arg0) {
- }
-
- /**
- * @see IPropertySource#setPropertyValue(Object, Object)
- */
- public void setPropertyValue(Object property, Object value) {
- if (property.equals(SiteBookmark.P_NAME))
- bookmark.setName(value.toString());
- if (property.equals(SiteBookmark.P_URL)) {
- try {
- URL url = new URL(value.toString());
- bookmark.setURL(url);
- } catch (MalformedURLException e) {
- }
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/BackgroundProgressMonitor.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/BackgroundProgressMonitor.java
deleted file mode 100644
index cf335d4..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/BackgroundProgressMonitor.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import java.util.*;
-import org.eclipse.swt.widgets.Display;
-
-public class BackgroundProgressMonitor implements IProgressMonitor {
- private Vector monitors=new Vector();
- private boolean canceled=false;
- private String taskName;
- private String subTaskName;
- private int totalWorked=0;
- private int taskCount;
- private boolean inProgress;
- private Display display;
-
- public void setDisplay(Display display) {
- this.display = display;
- }
-
- public Display getDisplay() {
- return display;
- }
-
- public void addProgressMonitor(final IProgressMonitor monitor) {
- if (monitors.contains(monitor)==false) {
- monitors.add(monitor);
- if (inProgress && display!=null) {
- display.asyncExec(new Runnable() {
- public void run() {
- // we are late - catch up
- monitor.beginTask(taskName, taskCount);
- monitor.worked(totalWorked);
- if (subTaskName!=null)
- monitor.subTask(subTaskName);
- }
- });
- }
- }
- }
-
- public void removeProgressMonitor(IProgressMonitor monitor) {
- if (monitors.contains(monitor))
- monitors.remove(monitor);
- }
-
- /**
- * @see IProgressMonitor#beginTask(String, int)
- */
- public void beginTask(final String taskName, final int count) {
- totalWorked = 0;
- taskCount = count;
- this.taskName = taskName;
- subTaskName = null;
- canceled = false;
- display.asyncExec(new Runnable() {
- public void run() {
- for (Iterator iter=monitors.iterator(); iter.hasNext();) {
- IProgressMonitor m = (IProgressMonitor)iter.next();
- m.beginTask(taskName, count);
- }
- }
- });
- }
-
-
- /**
- * @see IProgressMonitor#done()
- */
- public void done() {
- final Vector safeMonitors = (Vector)monitors.clone();
- display.asyncExec(new Runnable() {
- public void run() {
- for (Iterator iter=safeMonitors.iterator(); iter.hasNext();) {
- IProgressMonitor m = (IProgressMonitor)iter.next();
- m.done();
- }
- inProgress = false;
- }
- });
- }
-
-
- /**
- * @see IProgressMonitor#internalWorked(double)
- */
- public void internalWorked(double arg0) {
- }
-
-
- /**
- * @see IProgressMonitor#isCanceled()
- */
- public boolean isCanceled() {
- return canceled;
- }
-
-
- /**
- * @see IProgressMonitor#setCanceled(boolean)
- */
- public void setCanceled(final boolean canceled) {
- display.asyncExec(new Runnable() {
- public void run() {
- for (Iterator iter=monitors.iterator(); iter.hasNext();) {
- IProgressMonitor m = (IProgressMonitor)iter.next();
- m.setCanceled(canceled);
- }
- BackgroundProgressMonitor.this.canceled = canceled;
- }
- });
- }
-
-
- /**
- * @see IProgressMonitor#setTaskName(String)
- */
- public void setTaskName(final String name) {
- display.asyncExec(new Runnable() {
- public void run() {
- for (Iterator iter=monitors.iterator(); iter.hasNext();) {
- IProgressMonitor m = (IProgressMonitor)iter.next();
- m.setTaskName(name);
- }
- BackgroundProgressMonitor.this.taskName = name;
- }
- });
- }
-
-
- /**
- * @see IProgressMonitor#subTask(String)
- */
- public void subTask(final String name) {
- subTaskName = name;
- display.asyncExec(new Runnable() {
- public void run() {
- for (Iterator iter=monitors.iterator(); iter.hasNext();) {
- IProgressMonitor m = (IProgressMonitor)iter.next();
- m.subTask(name);
- }
- }
- });
- }
-
-
- /**
- * @see IProgressMonitor#worked(int)
- */
- public void worked(final int amount) {
- totalWorked += amount;
- display.asyncExec(new Runnable() {
- public void run() {
- for (Iterator iter=monitors.iterator(); iter.hasNext();) {
- IProgressMonitor m = (IProgressMonitor)iter.next();
- m.worked(amount);
- }
- }
- });
- }
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/BackgroundThread.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/BackgroundThread.java
deleted file mode 100644
index 9f45dec..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/BackgroundThread.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.operation.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.swt.widgets.*;
-import java.lang.reflect.InvocationTargetException;
-import org.eclipse.jface.util.Assert;
-
-public class BackgroundThread extends Thread {
- /**
- * The operation to be run.
- */
- private IRunnableWithProgress runnable;
-
- /**
- * The exception thrown by the operation starter.
- */
- private Throwable throwable;
-
- /**
- * The progress monitor used for progress and cancelation.
- */
- private IProgressMonitor progressMonitor;
-
- /**
- * The display used for event dispatching.
- */
- private Display display;
-
- /**
- * Indicates whether to continue event queue dispatching.
- */
- private volatile boolean continueEventDispatching = true;
-
- public BackgroundThread(IRunnableWithProgress operation, IProgressMonitor monitor, Display display) {
- super("BackgroundThread"); //$NON-NLS-1$
- Assert.isTrue(monitor != null && display != null);
- runnable = operation;
- this.progressMonitor = monitor;
- this.display = display;
- }
- /* (non-Javadoc)
- * Method declared on Thread.
- */
- public void run() {
- try {
- if (runnable != null)
- runnable.run(progressMonitor);
- } catch (InvocationTargetException e) {
- throwable= e;
- } catch (InterruptedException e) {
- throwable= e;
- } catch (RuntimeException e) {
- //throwable= e;
- throw e;
- } catch (ThreadDeath e) {
- // Make sure to propagate ThreadDeath, or threads will never fully terminate
- throw e;
- } catch (Error e) {
- throwable= e;
- } finally {
- // Make sure that all events in the asynchronous event queue
- // are dispatched.
- display.syncExec(new Runnable() {
- public void run() {
- // do nothing
- }
- });
-
- // Stop event dispatching
- continueEventDispatching= false;
-
- // Force the event loop to return from sleep () so that
- // it stops event dispatching.
- display.asyncExec(null);
- }
- }
- public Throwable getThrowable() {
- return throwable;
- }
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/DefaultUpdatesSearchObject.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/DefaultUpdatesSearchObject.java
deleted file mode 100644
index 3be43c6..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/DefaultUpdatesSearchObject.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.jface.dialogs.IDialogSettings;
-
-public class DefaultUpdatesSearchObject extends SearchObject {
- private static final String KEY_NAME = "AvailableUpdates.name";
- private static final String SECTION_ID = "defaultUpdateSearch";
-
- public DefaultUpdatesSearchObject() {
- super(
- UpdateUIPlugin.getResourceString(KEY_NAME),
- SearchCategoryRegistryReader.getDefault().getDescriptor(
- "org.eclipse.update.ui.updates"),
- true);
- setModel(UpdateUIPlugin.getDefault().getUpdateModel());
- }
- private IDialogSettings getSection() {
- IDialogSettings master = UpdateUIPlugin.getDefault().getDialogSettings();
- IDialogSettings section = master.getSection(SECTION_ID);
- if (section == null) {
- section = master.addNewSection(SECTION_ID);
- }
- return section;
- }
- public boolean getSearchMyComputer() {
- return getSection().getBoolean(S_MY_COMPUTER);
- }
-
- public void setSearchMyComputer(boolean value) {
- getSection().put(S_MY_COMPUTER, value);
- }
-
- public void setSearchBookmarks(boolean value) {
- getSection().put(S_BOOKMARKS, value);
- }
- public boolean getSearchBookmarks() {
- return getSection().getBoolean(S_BOOKMARKS);
- }
-
- public void setSearchDiscovery(boolean value) {
- getSection().put(S_DISCOVERY, value);
- }
- public boolean getSearchDiscovery() {
- return getSection().getBoolean(S_DISCOVERY);
- }
- public String getDriveSettings() {
- return getSection().get(S_DRIVES);
- }
- public void setDriveSettings(String drives) {
- getSection().put(S_DRIVES, drives);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/DriveSearchSettings.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/DriveSearchSettings.java
deleted file mode 100644
index 36ac88e..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/DriveSearchSettings.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.search;
-
-/**
- * @version 1.0
- * @author
- */
-public class DriveSearchSettings {
-public static final int DISABLED = 0;
-public static final int DEEP = - 1;
-public static final int SHALLOW = -2;
-public static final int CUSTOM = -3;
-
- private String name;
- private boolean checked = false;
- private int searchDepth = DEEP;
- private int numberOfLevels = Integer.MAX_VALUE;
-
- public DriveSearchSettings() {
- }
-
- public DriveSearchSettings(String name) {
- this.name = name;
- }
-
- /**
- * Gets the name.
- * @return Returns a String
- */
- public String getName() {
- return name;
- }
-
- /**
- * Sets the name.
- * @param name The name to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * Gets the checked.
- * @return Returns a boolean
- */
- public boolean isChecked() {
- return checked;
- }
-
- /**
- * Sets the checked.
- * @param checked The checked to set
- */
- public void setChecked(boolean checked) {
- this.checked = checked;
- }
-
- /**
- * Gets the searchDepth.
- * @return Returns a int
- */
- public int getSearchDepth() {
- return searchDepth;
- }
-
- /**
- * Sets the searchDepth.
- * @param searchDepth The searchDepth to set
- */
- public void setSearchDepth(int searchDepth) {
- this.searchDepth = searchDepth;
- }
-
- /**
- * Gets the numberOfLevels.
- * @return Returns a int
- */
- public int getNumberOfLevels() {
- return numberOfLevels;
- }
-
- /**
- * Sets the numberOfLevels.
- * @param numberOfLevels The numberOfLevels to set
- */
- public void setNumberOfLevels(int numberOfLevels) {
- this.numberOfLevels = numberOfLevels;
- }
-
- void load(String value) {
- int loc = value.indexOf(',');
- name = value.substring(0, loc);
- checked = true;
- String depth = value.substring(loc+1);
- int idepth = DEEP;
-
- try {
- idepth = Integer.parseInt(depth);
- if (idepth>0) {
- searchDepth = CUSTOM;
- numberOfLevels = idepth;
- }
- else if (idepth<0) {
- searchDepth = idepth;
- }
- else checked = false;
- }
- catch (NumberFormatException e) {
- }
- }
-
- String encode() {
- int idepth=DISABLED;
-
- if (checked)
- idepth = searchDepth == CUSTOM ? numberOfLevels:searchDepth;
- String result = name + ","+idepth;
- return result;
- }
-
- public String toString() {
- return getName();
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ExpressionSearchCategory.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ExpressionSearchCategory.java
deleted file mode 100644
index 2344d75..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ExpressionSearchCategory.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-
-import java.util.Map;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.core.IFeature;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.ISiteAdapter;
-import org.eclipse.update.ui.forms.internal.FormWidgetFactory;
-
-public class ExpressionSearchCategory extends SearchCategory {
- private static final String KEY_EXPRESSION = "ExpressionSearchCategory.expression";
- private static final String KEY_CASE = "ExpressionSearchCategory.case";
- private static final String KEY_LOOK = "ExpressionSearchCategory.look";
- private static final String KEY_NAME = "ExpressionSearchCategory.name";
- private static final String KEY_PROVIDER = "ExpressionSearchCategory.provider";
- private static final String KEY_DESCRIPTION = "ExpressionSearchCategory.description";
-
- private Text expressionText;
- private Button caseCheck;
- private Button nameCheck;
- private Button providerCheck;
- private Button descriptionCheck;
- private boolean caseSensitive = false;
- private boolean searchName = true;
- private boolean searchProvider = false;
- private boolean searchDesc = false;
- private String expression="";
- private String noCaseExpression;
-
- public ExpressionSearchCategory() {
- }
-
- public void createControl(Composite parent, FormWidgetFactory factory) {
- Composite container = factory.createComposite(parent);
- GridLayout layout = new GridLayout();
- layout.marginWidth = 2;
- layout.numColumns = 2;
- container.setLayout(layout);
- factory.createLabel(container, UpdateUIPlugin.getResourceString(KEY_EXPRESSION));
- expressionText = factory.createText(container, "");
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- expressionText.setLayoutData(gd);
- caseCheck = factory.createButton(container, UpdateUIPlugin.getResourceString(KEY_CASE), SWT.CHECK);
- fillHorizontal(caseCheck, 0);
- Label label = factory.createLabel(container, UpdateUIPlugin.getResourceString(KEY_LOOK));
- fillHorizontal(label, 0);
- nameCheck = factory.createButton(container, UpdateUIPlugin.getResourceString(KEY_NAME), SWT.CHECK);
- fillHorizontal(nameCheck, 10);
- providerCheck = factory.createButton(container, UpdateUIPlugin.getResourceString(KEY_PROVIDER), SWT.CHECK);
- fillHorizontal(providerCheck, 10);
- descriptionCheck = factory.createButton(container, UpdateUIPlugin.getResourceString(KEY_DESCRIPTION), SWT.CHECK);
- fillHorizontal(descriptionCheck, 10);
- factory.paintBordersFor(container);
- initializeWidgets(false);
- setControl(container);
- }
- private void fillHorizontal(Control control, int indent) {
- GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- gd.horizontalSpan = 2;
- gd.horizontalIndent = indent;
- control.setLayoutData(gd);
- }
-
- /**
- * @see ISearchCategory#matches(IFeature)
- */
- public ISearchQuery [] getQueries() {
- storeSettingsFromWidgets();
- ISearchQuery query = new ISearchQuery() {
- public ISiteAdapter getSearchSite() {
- return null;
- }
- public boolean matches(IFeature feature) {
- return internalMatches(feature);
- }
- };
- return new ISearchQuery [] { query };
- }
-
- private void storeSettingsFromWidgets() {
- caseSensitive = caseCheck.getSelection();
- searchName = nameCheck.getSelection();
- searchProvider = providerCheck.getSelection();
- searchDesc = descriptionCheck.getSelection();
- expression = expressionText.getText().trim();
- noCaseExpression = expression.toLowerCase();
- }
- private void initializeWidgets(boolean editable) {
- caseCheck.setSelection(caseSensitive);
- nameCheck.setSelection(searchName);
- providerCheck.setSelection(searchProvider);
- descriptionCheck.setSelection(searchDesc);
- expressionText.setText(expression);
-
- caseCheck.setEnabled(editable);
- nameCheck.setEnabled(editable);
- providerCheck.setEnabled(editable);
- descriptionCheck.setEnabled(editable);
- expressionText.setEnabled(editable);
- }
-
- public String getCurrentSearch() {
- return expressionText.getText();
- }
- private boolean internalMatches(IFeature feature) {
- if (searchName) {
- if (matches(feature.getLabel())) return true;
- }
- if (searchProvider) {
- if (matches(feature.getProvider())) return true;
- }
- if (searchDesc) {
- String annotation = null;
- if (feature.getDescription()!=null)
- annotation = feature.getDescription().getAnnotation();
- if (annotation!=null) {
- if (matches(annotation)) return true;
- }
- }
- return false;
- }
- private boolean matches(String text) {
- if (!caseSensitive) {
- String noCaseText = text.toLowerCase();
- return noCaseText.indexOf(noCaseExpression)!= -1;
- }
- return text.indexOf(expression)!= -1;
- }
- public void load(Map map, boolean editable) {
- caseSensitive = getBoolean("case", map);
- searchName = getBoolean("name", map);
- searchProvider = getBoolean("provider", map);
- searchDesc = getBoolean("desc", map);
- expression = getString("expression", map);
- if (caseCheck!=null)
- initializeWidgets(editable);
- }
-
- public void store(Map map) {
- storeSettingsFromWidgets();
- map.put("case", caseSensitive?"true":"false");
- map.put("name", searchName?"true":"false");
- map.put("provider", searchProvider?"true":"false");
- map.put("desc", searchDesc?"true":"false");
- map.put("expression", expression);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ISearchCategory.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ISearchCategory.java
deleted file mode 100644
index 5b6d2d9..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ISearchCategory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.ui.forms.internal.FormWidgetFactory;
-import java.util.Map;
-
-public interface ISearchCategory {
-/**
- * Returns the unique identifier of this search category.
- */
- public String getId();
-/**
- * Accepts the identifier assigned to this category during
- * the registry reading.
- */
- public void setId(String id);
-/**
- * Returns an array of queries that need to be executed
- * when search of this category is initiated.
- */
- public ISearchQuery [] getQueries();
-/**
- * Creates a control that contains widgets users can use to
- * customize category settings.
- */
- public void createControl(Composite parent, FormWidgetFactory factory);
-/**
- * Returns the control that hosts widgets users can use to
- * customize category settings.
- */
- public Control getControl();
-/**
- * Returns a textual representation of the current search. This
- * text will be used in the UI
- */
- public String getCurrentSearch();
-/**
- * Load the category settings from the provided object.
- */
- public void load(Map settings, boolean editable);
-/**
- * Save the category settings into the provided object.
- */
- public void store(Map settings);
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ISearchQuery.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ISearchQuery.java
deleted file mode 100644
index 091df8b..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/ISearchQuery.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-
-import org.eclipse.update.core.IFeature;
-import java.net.URL;
-import org.eclipse.update.internal.ui.model.ISiteAdapter;
-
-public interface ISearchQuery {
-/**
- * Returns a URL of an explicit site that needs to
- * be used for this query. This site is searched first.
- * In addition, local file system and bookmarked sites
- * can be searched as well if selected in search options.
- * @return a url of a site that needs to be searched for
- * this query or <samp>null</samp> if a general scan
- * should be used.
- */
- public ISiteAdapter getSearchSite();
-/**
- * Tests whether the feature matches the query criteria.
- * @return true if there is a match or false otherwise.
- */
- public boolean matches(IFeature feature);
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/MyComputerSearchDialog.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/MyComputerSearchDialog.java
deleted file mode 100644
index a86a063..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/MyComputerSearchDialog.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.search;
-
-import java.util.*;
-
-import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.parts.*;
-import org.eclipse.jface.dialogs.Dialog;
-
-/**
- * @version 1.0
- * @author
- */
-public class MyComputerSearchDialog extends Dialog {
- private static final String KEY_LABEL = "MyComputerSearchDialog.label";
- private MyComputerSearchSettings settings;
- private Button okButton;
- private VolumeLabelProvider volumeLabelProvider;
- private CheckboxTableViewer viewer;
- private boolean loaded = false;
- private SearchObject search;
- private Hashtable driveMap = new Hashtable();
-
- class DriveContentProvider
- extends DefaultContentProvider
- implements IStructuredContentProvider {
- public Object[] getElements(Object input) {
- if (!loaded)
- initializeDrives();
- return settings.getDriveSettings();
- }
- }
-
- class DriveLabelProvider extends LabelProvider {
- public String getText(Object obj) {
- IVolume volume = (IVolume)driveMap.get(obj);
- if (volume!=null) return volumeLabelProvider.getText(volume);
- return ((DriveSearchSettings) obj).getName();
- }
- public Image getImage(Object obj) {
- IVolume volume = (IVolume)driveMap.get(obj);
- return volumeLabelProvider.getImage(volume);
- }
- }
-
- /**
- * Constructor for MyComputerSearchDialog.
- * @param parentShell
- */
- public MyComputerSearchDialog(Shell parentShell, SearchObject search) {
- super(parentShell);
- settings = new MyComputerSearchSettings(search);
- volumeLabelProvider = new VolumeLabelProvider();
- }
-
- public boolean close() {
- boolean value = super.close();
- volumeLabelProvider.dispose();
- return value;
- }
-
- public void buttonPressed(int id) {
- if (id == IDialogConstants.OK_ID) {
- storeSettings();
- }
- super.buttonPressed(id);
- }
-
- protected void createButtonsForButtonBar(Composite parent) {
- // create OK and Cancel buttons by default
- okButton =
- createButton(
- parent,
- IDialogConstants.OK_ID,
- IDialogConstants.OK_LABEL,
- true);
- createButton(
- parent,
- IDialogConstants.CANCEL_ID,
- IDialogConstants.CANCEL_LABEL,
- false);
- }
-
- public Control createDialogArea(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.numColumns = 1;
- layout.marginHeight = 10;
- layout.marginWidth = 10;
- container.setLayout(layout);
- container.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- Label label = new Label(container, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_LABEL));
-
- viewer = CheckboxTableViewer.newCheckList(container, SWT.BORDER);
- viewer.setContentProvider(new DriveContentProvider());
- viewer.setLabelProvider(new DriveLabelProvider());
- viewer.addCheckStateListener(new ICheckStateListener() {
- public void checkStateChanged(CheckStateChangedEvent event) {
- handleDriveChecked(
- (DriveSearchSettings) event.getElement(),
- event.getChecked());
- }
- });
- viewer.setInput(UpdateUIPlugin.getDefault());
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.widthHint = 200;
- gd.heightHint = 300;
- viewer.getTable().setLayoutData(gd);
- loadSettings();
- return container;
- }
-
- private void loadSettings() {
- Vector selected = new Vector();
- DriveSearchSettings[] drives = settings.getDriveSettings();
- for (int i = 0; i < drives.length; i++) {
- if (drives[i].isChecked())
- selected.add(drives[i]);
- }
- viewer.setCheckedElements(selected.toArray());
- }
-
- private void initializeDrives() {
- IVolume[] volumes = LocalSystemInfo.getVolumes();
- for (int i = 0; i < volumes.length; i++) {
- // Ensure settings exists
- String label = volumes[i].getLabel();
- if (label == null || "".equals(label))
- label = volumes[i].getFile().getPath();
- else
- label = label + " (" + volumes[i].getFile().getPath() + ")";
- DriveSearchSettings drive = settings.getDriveSettings(label);
- driveMap.put(drive, volumes[i]);
- }
- }
-
- private void handleDriveChecked(
- DriveSearchSettings drive,
- boolean checked) {
- drive.setChecked(checked);
- }
-
- private void storeSettings() {
- settings.store();
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/MyComputerSearchSettings.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/MyComputerSearchSettings.java
deleted file mode 100644
index ab83bd6..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/MyComputerSearchSettings.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * (c) Copyright 2001 MyCorporation.
- * All Rights Reserved.
- */
-package org.eclipse.update.internal.ui.search;
-
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import java.util.StringTokenizer;
-import java.io.File;
-import java.util.Vector;
-/**
- * @version 1.0
- * @author
- */
-public class MyComputerSearchSettings {
- private static final String SECTION = "myComputerSearchSettings";
- SearchObject search;
- private Vector drives = new Vector();
- private boolean masterSettings=false;
-
- public boolean isMyComputerSearched() {
- return false;
- }
-
- public MyComputerSearchSettings(SearchObject search) {
- this.search = search;
- load();
- }
-
- public DriveSearchSettings[] getDriveSettings() {
- return (DriveSearchSettings[]) drives.toArray(
- new DriveSearchSettings[drives.size()]);
- }
-
- public DriveSearchSettings getDriveSettings(String driveName) {
- for (int i = 0; i < drives.size(); i++) {
- DriveSearchSettings drive = (DriveSearchSettings) drives.get(i);
- if (drive.getName().equalsIgnoreCase(driveName)) {
- return drive;
- }
- }
- DriveSearchSettings drive = new DriveSearchSettings(driveName);
- drives.add(drive);
- return drive;
- }
-
- private void load() {
- String drivesString = search.getDriveSettings();
- if (drivesString != null) {
- StringTokenizer stok = new StringTokenizer(drivesString, File.pathSeparator);
- while (stok.hasMoreTokens()) {
- String driveString = stok.nextToken();
- DriveSearchSettings drive = new DriveSearchSettings();
- drive.load(driveString);
- drives.add(drive);
- }
- }
- }
-
- public void store() {
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < drives.size(); i++) {
- DriveSearchSettings drive = (DriveSearchSettings) drives.get(i);
- buf.append(drive.encode());
- buf.append(File.pathSeparator);
- }
- search.setDriveSettings(buf.toString());
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/PluginsSearchCategory.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/PluginsSearchCategory.java
deleted file mode 100644
index 24e0f80..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/PluginsSearchCategory.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-
-import java.util.*;
-
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.ISiteAdapter;
-import org.eclipse.update.internal.ui.parts.DefaultContentProvider;
-import org.eclipse.update.ui.forms.internal.FormWidgetFactory;
-
-public class PluginsSearchCategory extends SearchCategory {
- private static final String KEY_NEW = "PluginSearchCategory.new";
- private ArrayList imports;
- private TableViewer tableViewer;
- private Button newButton;
-
- class ImportContentProvider
- extends DefaultContentProvider
- implements IStructuredContentProvider {
- public Object[] getElements(Object parent) {
- if (imports == null)
- return new Object[0];
- return imports.toArray();
- }
- }
-
- class ImportLabelProvider extends LabelProvider {
- public String getText(Object obj) {
- if (obj instanceof IImport) {
- IImport iimport = (IImport) obj;
- return iimport.getVersionedIdentifier().toString();
- }
- return obj.toString();
- }
- }
-
- public PluginsSearchCategory() {
- }
-
- public void initialize() {
- if (imports == null)
- imports = new ArrayList();
- }
- public ISearchQuery[] getQueries() {
- initialize();
- ISearchQuery query = new ISearchQuery() {
- public ISiteAdapter getSearchSite() {
- return null;
- }
- public boolean matches(IFeature feature) {
- for (int i = 0; i < imports.size(); i++) {
- IImport iimport = (IImport) imports.get(i);
- if (!contains(feature, iimport))
- return false;
- }
- return true;
- }
- };
- return new ISearchQuery[] { query };
- }
- private boolean contains(IFeature feature, IImport iimport) {
- IPluginEntry[] entries = feature.getPluginEntries();
- VersionedIdentifier importId = iimport.getVersionedIdentifier();
- for (int i = 0; i < entries.length; i++) {
- IPluginEntry entry = entries[i];
- VersionedIdentifier entryId = entry.getVersionedIdentifier();
- if (entryId.equals(importId))
- return true;
- }
- return false;
- }
-
- public String getCurrentSearch() {
- return encodeImports(imports);
- }
- public void createControl(Composite parent, FormWidgetFactory factory) {
- Composite container = factory.createComposite(parent);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = 2;
- layout.marginHeight = 2;
- container.setLayout(layout);
- tableViewer = new TableViewer(container, SWT.V_SCROLL | SWT.H_SCROLL);
- tableViewer.setContentProvider(new ImportContentProvider());
- tableViewer.setLabelProvider(new ImportLabelProvider());
- tableViewer.setInput(this);
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 100;
- tableViewer.getControl().setLayoutData(gd);
- newButton =
- factory.createButton(
- container,
- UpdateUIPlugin.getResourceString(KEY_NEW),
- SWT.PUSH);
- newButton.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- }
- });
- gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
- newButton.setLayoutData(gd);
- factory.paintBordersFor(container);
- setControl(container);
- }
- public void load(Map map, boolean editable) {
- String key = "imports";
- String value = (String) map.get(key);
- imports = new ArrayList();
- if (value != null)
- decodeImports(value, imports);
- tableViewer.refresh();
- newButton.setEnabled(editable);
- }
- public void store(Map map) {
- String value = encodeImports(imports);
- map.put("imports", value);
- }
- public static String encodeImports(ArrayList imports) {
- if (imports == null)
- return "";
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < imports.size(); i++) {
- IImport iimport = (IImport) imports.get(i);
- String entry = iimport.getVersionedIdentifier().toString();
- if (i > 0)
- buf.append(",");
- buf.append(entry);
- }
- return buf.toString();
- }
- public static void decodeImports(String text, ArrayList result) {
- StringTokenizer stok = new StringTokenizer(text, ",");
- while (stok.hasMoreTokens()) {
- String token = stok.nextToken();
- int uloc = token.lastIndexOf('_');
- String id = token.substring(0, uloc);
- String version = token.substring(uloc + 1);
- Import iimport = new Import();
- iimport.setPluginIdentifier(id);
- iimport.setPluginVersion(version);
- result.add(iimport);
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategory.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategory.java
deleted file mode 100644
index c3a3206..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.ui.forms.internal.FormWidgetFactory;
-import java.util.Map;
-
-public abstract class SearchCategory implements ISearchCategory {
- private Control control;
- private String id;
-
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public Control getControl() {
- return control;
- }
-
- public void setControl(Control control) {
- this.control = control;
- }
- protected String getString(String key, Map map) {
- Object obj = map.get(key);
- if (obj!=null) return obj.toString();
- return "";
- }
- protected boolean getBoolean(String key, Map map) {
- return getString(key, map).equals("true");
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategoryDescriptor.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategoryDescriptor.java
deleted file mode 100644
index 95154b4..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategoryDescriptor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.swt.graphics.Image;
-
-public class SearchCategoryDescriptor {
- private IConfigurationElement config;
- public SearchCategoryDescriptor(IConfigurationElement config) {
- this.config = config;
- }
- public String getId() {
- return config.getAttribute("id");
- }
- public String getName() {
- return config.getAttribute("name");
- }
- public Image getImage() {
- String imageName = config.getAttribute("icon");
- if (imageName == null)
- return null;
- return UpdateUIPluginImages.getImageFromPlugin(
- config.getDeclaringExtension().getDeclaringPluginDescriptor(),
- imageName);
- }
- public String getDescription() {
- IConfigurationElement children [] = config.getChildren("description");
- if (children.length==1) {
- return children[0].getValue();
- }
- return "<form></form>";
- }
- public ISearchCategory createCategory() {
- try {
- Object obj = config.createExecutableExtension("class");
- if (obj instanceof ISearchCategory) {
- ISearchCategory category = (ISearchCategory)obj;
- category.setId(getId());
- return category;
- }
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- return null;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategoryRegistryReader.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategoryRegistryReader.java
deleted file mode 100644
index 9949078..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchCategoryRegistryReader.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-
-import java.util.ArrayList;
-import org.eclipse.core.runtime.*;
-
-public class SearchCategoryRegistryReader {
- private ArrayList descriptors;
-
- static SearchCategoryRegistryReader instance;
-
- SearchCategoryRegistryReader() {
- }
-
- public static SearchCategoryRegistryReader getDefault() {
- if (instance == null)
- instance = new SearchCategoryRegistryReader();
- return instance;
- }
-
- public SearchCategoryDescriptor[] getCategoryDescriptors() {
- if (descriptors == null)
- load();
- return (SearchCategoryDescriptor[]) descriptors.toArray(
- new SearchCategoryDescriptor[descriptors.size()]);
- }
-
- public SearchCategoryDescriptor getDescriptor(String categoryId) {
- if (descriptors == null)
- load();
- for (int i = 0; i < descriptors.size(); i++) {
- SearchCategoryDescriptor desc = (SearchCategoryDescriptor) descriptors.get(i);
- if (desc.getId().equals(categoryId))
- return desc;
- }
- return null;
- }
-
- private void load() {
- descriptors = new ArrayList();
- IPluginRegistry registry = Platform.getPluginRegistry();
- IConfigurationElement[] elements =
- registry.getConfigurationElementsFor("org.eclipse.update.ui.searchCategory");
- for (int i = 0; i < elements.length; i++) {
- IConfigurationElement element = elements[i];
- if (element.getName().equals("search"))
- descriptors.add(new SearchCategoryDescriptor(element));
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchObject.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchObject.java
deleted file mode 100644
index 2b14a0f..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchObject.java
+++ /dev/null
@@ -1,362 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.lang.reflect.InvocationTargetException;
-import java.net.URL;
-import java.util.*;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.parts.EnvironmentUtil;
-
-public class SearchObject extends NamedModelObject {
- public static final String P_REFRESH = "p_refresh";
- public static final String P_CATEGORY = "p_category";
-
- private static final String KEY_NAME = "Search.name";
- private static final String KEY_BEGIN = "Search.begin";
- private static final String KEY_MY_COMPUTER = "Search.myComputer";
- private static final String KEY_CONTACTING = "Search.contacting";
- private static final String KEY_CHECKING = "Search.checking";
- protected static final String S_MY_COMPUTER = "searchMyComputer";
- protected static final String S_BOOKMARKS = "searchBookmarks";
- protected static final String S_DISCOVERY = "searchDiscovery";
- protected static final String S_FILTER = "searchFilter";
- protected static final String S_DRIVES = "searchDrives";
-
- private Vector result = new Vector();
- private boolean searchInProgress;
- private BackgroundProgressMonitor backgroundProgress;
- private BackgroundThread searchThread;
- private boolean debug = false;
- private ISite[] myComputerSites = null;
- private String categoryId;
- private boolean categoryFixed;
- private Hashtable settings = new Hashtable();
- private boolean persistent = true;
- private boolean instantSearch = false;
-
- class SearchAdapter extends MonitorAdapter {
- public void done() {
- searchInProgress = false;
- }
- }
-
- public SearchObject() {
- this("", null, false);
- }
- public SearchObject(String name, SearchCategoryDescriptor descriptor) {
- this(name, descriptor, false);
- }
- public SearchObject(
- String name,
- SearchCategoryDescriptor descriptor,
- boolean categoryFixed) {
- super(name);
- this.categoryId = descriptor.getId();
- this.categoryFixed = categoryFixed;
- backgroundProgress = new BackgroundProgressMonitor();
- backgroundProgress.addProgressMonitor(new SearchAdapter());
- }
-
- public boolean isCategoryFixed() {
- return categoryFixed;
- }
-
- public boolean isPersistent() {
- return persistent;
- }
-
- public void setPersistent(boolean value) {
- this.persistent = value;
- }
-
- public boolean isInstantSearch() {
- return instantSearch;
- }
-
- public void setInstantSearch(boolean value) {
- this.instantSearch = value;
- }
-
- public String getCategoryId() {
- return categoryId;
- }
-
- public void setCategoryId(String id) {
- if (categoryId != null && !categoryId.equals(id)) {
- settings.clear();
- }
- this.categoryId = id;
- notifyObjectChanged(P_CATEGORY);
- }
-
- public Hashtable getSettings() {
- return settings;
- }
-
- public boolean getSearchMyComputer() {
- return getBooleanValue(S_MY_COMPUTER);
- }
-
- public void setSearchMyComputer(boolean value) {
- settings.put(S_MY_COMPUTER, value ? "true" : "false");
- }
-
- public void setSearchBookmarks(boolean value) {
- setBooleanValue(S_BOOKMARKS, value);
- }
- public boolean getSearchBookmarks() {
- return getBooleanValue(S_BOOKMARKS);
- }
-
- public void setSearchDiscovery(boolean value) {
- setBooleanValue(S_DISCOVERY, value);
- }
- public boolean getSearchDiscovery() {
- return getBooleanValue(S_DISCOVERY);
- }
- public String getDriveSettings() {
- return (String)settings.get(S_DRIVES);
- }
- public void setDriveSettings(String drives) {
- settings.put(S_DRIVES, drives);
- }
-
- public void setFilterEnvironment(boolean value) {
- setBooleanValue(S_FILTER, !value);
- }
- public boolean getFilterEnvironment() {
- return !getBooleanValue(S_FILTER);
- }
-
- private boolean getBooleanValue(String key) {
- String value = (String) settings.get(key);
- if (value != null && value.equals("true"))
- return true;
- return false;
- }
- private void setBooleanValue(String key, boolean value) {
- settings.put(key, value ? "true" : "false");
- }
-
- /**
- * @see IWorkbenchAdapter#getChildren(Object)
- */
- public Object[] getChildren(Object parent) {
- return result.toArray();
- }
-
- public boolean hasChildren() {
- return result.size() > 0;
- }
-
- public void attachProgressMonitor(IProgressMonitor monitor) {
- backgroundProgress.addProgressMonitor(monitor);
- }
- public void detachProgressMonitor(IProgressMonitor monitor) {
- backgroundProgress.removeProgressMonitor(monitor);
- }
-
- public void startSearch(Display display, ISearchQuery[] queries)
- throws InvocationTargetException, InterruptedException {
- if (searchInProgress)
- return;
- backgroundProgress.setDisplay(display);
- IRunnableWithProgress operation = getSearchOperation(queries);
- searchThread =
- new BackgroundThread(operation, backgroundProgress, Display.getDefault());
- searchInProgress = true;
- searchThread.start();
- Throwable throwable = searchThread.getThrowable();
- if (throwable != null) {
- if (debug) {
- System.err.println("Exception in search background thread:"); //$NON-NLS-1$
- throwable.printStackTrace();
- System.err.println("Called from:"); //$NON-NLS-1$
- // Don't create the InvocationTargetException on the throwable,
- // otherwise it will print its stack trace (from the other thread).
- new InvocationTargetException(null).printStackTrace();
- }
- if (throwable instanceof InvocationTargetException) {
- throw (InvocationTargetException) throwable;
- } else if (throwable instanceof InterruptedException) {
- throw (InterruptedException) throwable;
- } else if (throwable instanceof OperationCanceledException) {
- // See 1GAN3L5: ITPUI:WIN2000 - ModalContext converts OperationCancelException into InvocationTargetException
- throw new InterruptedException(throwable.getMessage());
- } else {
- throw new InvocationTargetException(throwable);
- }
- }
- }
-
- public boolean isSearchInProgress() {
- return searchInProgress;
- }
-
- public void stopSearch() {
- if (!searchInProgress || searchThread == null)
- return;
- backgroundProgress.setCanceled(true);
- }
-
- public IRunnableWithProgress getSearchOperation(final ISearchQuery[] queries) {
- return new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- try {
- doSearch(queries, monitor);
- } catch (CoreException e) {
- throw new InvocationTargetException(e);
- }
- }
- };
- }
-
- private void doSearch(ISearchQuery[] queries, IProgressMonitor monitor)
- throws CoreException {
- result.clear();
- asyncFireObjectChanged(this, P_REFRESH);
-
- ArrayList candidates = new ArrayList();
-
- backgroundProgress.beginTask(
- UpdateUIPlugin.getResourceString(KEY_BEGIN),
- IProgressMonitor.UNKNOWN);
-
- if (getSearchMyComputer()) {
- backgroundProgress.setTaskName(
- UpdateUIPlugin.getResourceString(KEY_MY_COMPUTER));
- initializeMyComputerSites(monitor);
- }
- computeSearchSources(candidates);
- int ntasks = queries.length * (1 + candidates.size());
-
- backgroundProgress.beginTask(
- UpdateUIPlugin.getResourceString(KEY_BEGIN),
- ntasks);
-
- for (int i = 0; i < queries.length; i++) {
- ISearchQuery query = queries[i];
- ISiteAdapter site = query.getSearchSite();
- if (site != null) {
- searchOneSite(site, query, monitor);
- if (monitor.isCanceled())
- break;
- }
- monitor.worked(1);
-
- for (int j = 0; j < candidates.size(); j++) {
- if (monitor.isCanceled()) {
- break;
- }
- Object source = candidates.get(j);
- searchOneSite((ISiteAdapter) source, query, monitor);
- monitor.worked(1);
- }
- if (monitor.isCanceled())
- break;
- }
- searchInProgress = false;
- monitor.done();
- asyncFireObjectChanged(this, P_REFRESH);
- }
-
- public void computeSearchSources(ArrayList sources) {
- addMyComputerSites(sources);
- addBookmarks(sources);
- }
-
- private void searchOneSite(
- ISiteAdapter siteAdapter,
- ISearchQuery query,
- IProgressMonitor monitor)
- throws CoreException {
- String pattern = UpdateUIPlugin.getResourceString(KEY_CONTACTING);
- String text =
- UpdateUIPlugin.getFormattedMessage(pattern, siteAdapter.getLabel());
- monitor.subTask(text);
- URL siteURL = siteAdapter.getURL();
- ISite site = SiteManager.getSite(siteURL);
-
- monitor.subTask(UpdateUIPlugin.getResourceString(KEY_CHECKING));
- IFeatureReference[] refs = site.getFeatureReferences();
- SearchResultSite searchSite = null;
- for (int i = 0; i < refs.length; i++) {
- IFeature candidate = refs[i].getFeature();
- // filter out the feature for environment
- if (getFilterEnvironment() && isValidEnvironment(candidate)==false) continue;
-
- if (query.matches(candidate)) {
- // bingo - add this
- if (searchSite == null) {
- searchSite = new SearchResultSite(this, siteAdapter.getLabel(), site);
- result.add(searchSite);
- asyncFireObjectAdded(this, searchSite);
- }
- searchSite.addCandidate(new SimpleFeatureAdapter(candidate));
- asyncFireObjectAdded(searchSite, candidate);
- }
- }
- }
-
- private boolean isValidEnvironment(IFeature candidate) {
- return EnvironmentUtil.isValidEnvironment(candidate);
- }
-
- private void asyncFireObjectAdded(final Object parent, final Object child) {
- Display display = backgroundProgress.getDisplay();
- final UpdateModel model = getModel();
- display.asyncExec(new Runnable() {
- public void run() {
- model.fireObjectsAdded(parent, new Object[] { child });
- }
- });
- }
-
- private void asyncFireObjectChanged(final Object obj, final String property) {
- Display display = backgroundProgress.getDisplay();
- final UpdateModel model = getModel();
- display.asyncExec(new Runnable() {
- public void run() {
- model.fireObjectChanged(obj, property);
- }
- });
- }
-
- private void initializeMyComputerSites(IProgressMonitor monitor) {
- Vector sites = new Vector();
- MyComputer myComputer = new MyComputer();
- MyComputerSearchSettings settings = new MyComputerSearchSettings(this);
- myComputer.collectSites(sites, settings, monitor);
- if (sites.size() > 0) {
- myComputerSites = (ISite[]) sites.toArray(new ISite[sites.size()]);
- } else
- myComputerSites = null;
- }
-
- private void addMyComputerSites(ArrayList result) {
- if (myComputerSites != null && getSearchMyComputer()) {
- for (int i = 0; i < myComputerSites.length; i++) {
- result.add(myComputerSites[i]);
- }
- }
- }
- private void addBookmarks(ArrayList result) {
- if (getSearchBookmarks() == false)
- return;
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- SiteBookmark[] bookmarks = model.getBookmarkLeafs();
- for (int i = 0; i < bookmarks.length; i++) {
- SiteBookmark bookmark = bookmarks[i];
- result.add(bookmark);
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchResultSite.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchResultSite.java
deleted file mode 100644
index 26b0a15..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/SearchResultSite.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.URL;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.model.IFeatureAdapter;
-import org.eclipse.update.internal.ui.model.ISiteAdapter;
-import org.eclipse.update.internal.ui.model.UIModelObject;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.views.properties.*;
-import org.eclipse.ui.model.*;
-import java.util.*;
-
-public class SearchResultSite
- extends UIModelObject
- implements IWorkbenchAdapter, ISiteAdapter {
- private ISite site;
- private Vector candidates;
- private String label;
- private SearchObject search;
-
- public Object getAdapter(Class adapter) {
- if (adapter.equals(IWorkbenchAdapter.class)) {
- return this;
- }
- return super.getAdapter(adapter);
- }
-
- public SearchResultSite(SearchObject search, String label, ISite site) {
- this.search = search;
- this.label = label;
- this.site = site;
- candidates = new Vector();
- }
-
- public SearchObject getSearch() {
- return search;
- }
-
- public ISite getSite() {
- return site;
- }
-
- public String getLabel() {
- return label;
- }
-
- public String toString() {
- return getLabel();
- }
-
- /**
- * @see IWorkbenchAdapter#getChildren(Object)
- */
- public Object[] getChildren(Object parent) {
- return candidates.toArray();
- }
- public int getChildCount() {
- return candidates.size();
- }
-
- /**
- * @see IWorkbenchAdapter#getImageDescriptor(Object)
- */
- public ImageDescriptor getImageDescriptor(Object obj) {
- return null;
- }
-
- /**
- * @see IWorkbenchAdapter#getLabel(Object)
- */
- public String getLabel(Object obj) {
- return getLabel();
- }
-
- /**
- * @see IWorkbenchAdapter#getParent(Object)
- */
- public Object getParent(Object arg0) {
- return null;
- }
-
- public void addCandidate(IFeatureAdapter candidate) {
- candidates.add(candidate);
- }
- /**
- * @see ISiteAdapter#getURL()
- */
- public URL getURL() {
- return site.getURL();
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/UpdatesSearchCategory.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/UpdatesSearchCategory.java
deleted file mode 100644
index eac6010..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/search/UpdatesSearchCategory.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package org.eclipse.update.internal.ui.search;
-
-import java.net.URL;
-import java.util.*;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.PluginVersionIdentifier;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.ISiteAdapter;
-import org.eclipse.update.ui.forms.internal.FormWidgetFactory;
-
-public class UpdatesSearchCategory extends SearchCategory {
- private static final String KEY_CURRENT_SEARCH = "UpdatesSearchCategory.currentSearch";
-
- class SiteAdapter implements ISiteAdapter {
- IURLEntry entry;
- SiteAdapter(IURLEntry entry) {
- this.entry = entry;
- }
- public URL getURL() {
- return entry.getURL();
- }
- public String getLabel() {
- String label = entry.getAnnotation();
- if (label == null || label.length() == 0)
- label = getURL().toString();
- return label;
- }
- public ISite getSite() {
- try {
- return SiteManager.getSite(getURL());
- } catch (CoreException e) {
- return null;
- }
- }
- }
-
- class UpdateQuery implements ISearchQuery {
- IFeature candidate;
- ISiteAdapter adapter;
-
- public UpdateQuery(IFeature candidate) {
- this.candidate = candidate;
- IURLEntry entry = candidate.getUpdateSiteEntry();
- if (entry != null && entry.getURL() != null)
- adapter = new SiteAdapter(entry);
- }
- public ISiteAdapter getSearchSite() {
- return adapter;
- }
- public boolean matches(IFeature feature) {
- return isNewerVersion(candidate, feature);
- }
- }
-
- private ArrayList candidates;
-
- public UpdatesSearchCategory() {
- }
-
- public void initialize() {
- candidates = new ArrayList();
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration config = localSite.getCurrentConfiguration();
- IConfiguredSite[] isites = config.getConfiguredSites();
- for (int i = 0; i < isites.length; i++) {
- ISite isite = isites[i].getSite();
- IFeatureReference[] refs = isite.getFeatureReferences();
- for (int j = 0; j < refs.length; j++) {
- IFeatureReference ref = refs[j];
- candidates.add(ref.getFeature());
- }
- }
- filterIncludedFeatures(candidates);
-
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e, false);
- }
- }
-
- private void filterIncludedFeatures(ArrayList candidates) throws CoreException {
- IFeature [] array = (IFeature[])candidates.toArray(new IFeature[candidates.size()]);
- // filter out included features so that only top-level features remain on the list
- for (int i=0; i<array.length; i++) {
- IFeature feature = array[i];
- IFeatureReference [] included = feature.getIncludedFeatureReferences();
- for (int j=0; j<included.length; j++) {
- IFeatureReference fref = included[j];
- IFeature ifeature = fref.getFeature();
- int index = candidates.indexOf(ifeature);
- if (index!= -1)
- candidates.remove(index);
- }
- }
- }
- public ISearchQuery[] getQueries() {
- initialize();
- ISearchQuery[] queries = new ISearchQuery[candidates.size()];
- for (int i = 0; i < candidates.size(); i++) {
- queries[i] = new UpdateQuery((IFeature) candidates.get(i));
- }
- return queries;
- }
-
- public String getCurrentSearch() {
- return UpdateUIPlugin.getResourceString(KEY_CURRENT_SEARCH);
- }
-
- private boolean isNewerVersion(IFeature feature, IFeature candidate) {
- VersionedIdentifier fvi = feature.getVersionedIdentifier();
- VersionedIdentifier cvi = candidate.getVersionedIdentifier();
- PluginVersionIdentifier fv = fvi.getVersion();
- PluginVersionIdentifier cv = cvi.getVersion();
- return cv.isGreaterThan(fv);
- }
-
- public void createControl(Composite parent, FormWidgetFactory factory) {
- Composite container = factory.createComposite(parent);
- setControl(container);
- }
- public void load(Map map, boolean editable) {
- }
- public void store(Map map) {
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/AuthorizationDatabase.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/AuthorizationDatabase.java
deleted file mode 100644
index fe743db..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/AuthorizationDatabase.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package org.eclipse.update.internal.ui.security;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.net.*;
-import java.util.Hashtable;
-import java.util.Map;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.update.core.Utilities;
-import org.eclipse.update.internal.core.UpdateManagerPlugin;
-import org.eclipse.update.internal.core.UpdateManagerUtils;
-
-/**
- * A transient database that remembers information, such as usernames and
- * passwords. The information is stored in memory only and is discarted
- * when the Plaform shuts down.
- */
-public class AuthorizationDatabase extends Authenticator {
-
- private InetAddress requestingSite;
- private int requestingPort;
- private String requestingProtocol;
- private String requestingPrompt;
- private String requestingScheme;
- private PasswordAuthentication savedPasswordAuthentication;
-
- // fields needed for caching the password
- public static final String INFO_PASSWORD = "org.eclipse.update.internal.ui.security.password"; //$NON-NLS-1$
- public static final String INFO_USERNAME = "org.eclipse.update.internal.ui.security.username"; //$NON-NLS-1$
- public static final String AUTH_SCHEME = ""; //$NON-NLS-1$
-
- /**
- * The Map containing the userid and password
- */
- private Map result = new Hashtable();
-
- /**
- *
- */
- public void addAuthenticationInfo(URL serverUrl, String realm, String scheme, Map info) {
- try {
- Platform.addAuthorizationInfo(serverUrl, realm, scheme, info);
- } catch (CoreException e) {
- UpdateManagerPlugin.getPlugin().getLog().log(e.getStatus());
- }
- }
-
- /**
- *
- */
- public Map getAuthenticationInfo(URL serverUrl, String realm, String scheme) {
-
- return Platform.getAuthorizationInfo(serverUrl, realm, scheme);
- }
-
- /**
- *
- */
- public Map requestAuthenticationInfo(final URL resourceUrl, final String realm, final String scheme) {
-
- result = new Hashtable();
- if (scheme != null && scheme.equalsIgnoreCase("Basic")) {
-
- Display disp = Display.getCurrent();
- if (disp != null) {
- promptForPassword(resourceUrl, realm, result);
- } else {
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- promptForPassword(resourceUrl, realm, result);
- }
- });
- };
- }
- return result;
- }
-
- public void reset(){
- requestingPort = 0;
- requestingPrompt = null;
- requestingProtocol = null;
- requestingScheme = null;
- requestingSite = null;
- }
-
- /**
- *
- */
- private void promptForPassword(URL resourceUrl, String realm, Map info) {
-
- Shell shell = new Shell();
- UserValidationDialog ui = new UserValidationDialog(shell, resourceUrl, realm, ""); //$NON-NLS-1$
- ui.setUsernameMutable(true);
- ui.setBlockOnOpen(true);
- ui.open();
-
- if (ui.getReturnCode() != ui.CANCEL) {
- info.put(INFO_USERNAME, ui.getUserid());
- info.put(INFO_PASSWORD, ui.getPassword());
- }
- shell.dispose();
-
- }
- /*
- * @see Authenticator#getPasswordAuthentication()
- */
- protected PasswordAuthentication getPasswordAuthentication() {
-
- try {
- URL url = new URL(getRequestingProtocol(), getRequestingSite().getHostAddress(), getRequestingPort(), ""); //$NON-NLS-1$
- return retrievePasswordAuthentication(url);
- } catch (MalformedURLException e) {
- IStatus status = Utilities.newCoreException("",e).getStatus();
- UpdateManagerPlugin.getPlugin().getLog().log(status);
- }
- return new PasswordAuthentication("", new char[] { ' ' }); //$NON-NLS-1$
- }
-
- /*
- *
- */
- private PasswordAuthentication retrievePasswordAuthentication(URL url) {
-
- Map map = null;
- String username = null;
- String password = null;
-
- if (equalsPreviousRequest()) {
- // same request, the userid/password was wrong
- // or user cancelled. force a refresh
- if (savedPasswordAuthentication != null)
- // only prompt if the user didn't cancel
- map = requestAuthenticationInfo(url, requestingPrompt, requestingScheme);
- } else {
- // save state
- requestingPort = getRequestingPort();
- requestingPrompt = getRequestingPrompt();
- requestingProtocol = getRequestingProtocol();
- requestingScheme = getRequestingScheme();
- requestingSite = getRequestingSite();
- map = Platform.getAuthorizationInfo(url, requestingPrompt, requestingScheme);
- if (map == null) {
- map = requestAuthenticationInfo(url, requestingPrompt, requestingScheme);
- }
- }
-
- if (map != null) {
- username = (String) map.get(INFO_USERNAME);
- password = (String) map.get(INFO_PASSWORD);
- }
-
- if (username!=null && password!=null){
- savedPasswordAuthentication = new PasswordAuthentication(username, password.toCharArray());
- } else {
- savedPasswordAuthentication = null;
- }
-
- return savedPasswordAuthentication;
-
- }
-
- private boolean equalsPreviousRequest() {
-
- if (requestingPort != getRequestingPort())
- return false;
-
- if (requestingPrompt != null && !requestingPrompt.equals(getRequestingPrompt()))
- return false;
- if (requestingPrompt == null && getRequestingPrompt() != null)
- return false;
-
- if (requestingProtocol != null && !requestingProtocol.equals(getRequestingProtocol()))
- return false;
- if (requestingProtocol == null && getRequestingProtocol() != null)
- return false;
-
- if (requestingScheme != null && !requestingScheme.equals(getRequestingScheme()))
- return false;
- if (requestingScheme == null && getRequestingScheme() != null)
- return false;
-
- if (requestingSite != null && !requestingSite.equals(getRequestingSite()))
- return false;
- if (requestingSite == null && getRequestingSite() != null)
- return false;
-
- return true;
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/BannerPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/BannerPage.java
deleted file mode 100644
index 7c84e98..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/BannerPage.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.eclipse.update.internal.ui.security;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.net.URL;
-
-import org.eclipse.jface.dialogs.DialogPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-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.Label;
-import org.eclipse.update.internal.ui.UpdateUIPluginImages;
-
-public abstract class BannerPage extends DialogPage {
- private Image bannerImage;
- public BannerPage(String name) {
- super(name);
- }
- /**
- * @see DialogPage#createControl(Composite)
- */
- public void createControl(Composite parent) {
- Composite client = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.horizontalSpacing = 10;
- client.setLayout(layout);
- Composite bannerParent = new Composite(client, SWT.BORDER);
- bannerParent.setLayoutData(new GridData(GridData.FILL_VERTICAL));
- layout = new GridLayout();
- layout.marginWidth = layout.marginHeight = 0;
- bannerParent.setLayout(layout);
-
- Label label = new Label(bannerParent, SWT.NULL);
- label.setLayoutData(new GridData(GridData.FILL_BOTH));
- label.setImage(getBannerImage());
-
- Control contents = createContents(client);
- contents.setLayoutData(new GridData(GridData.FILL_BOTH));
- setControl(client);
- }
-
- protected URL getBannerImageURL() {
- return null;
- }
- private Image getBannerImage() {
- URL imageURL = getBannerImageURL();
- Image image=null;
- if (imageURL==null) {
- // use default
- bannerImage = UpdateUIPluginImages.DESC_INSTALL_BANNER.createImage();
- image = bannerImage;
- }
- return image;
- }
-
- public void dispose() {
- if (bannerImage!=null) {
- bannerImage.dispose();
- }
- super.dispose();
- }
-
- protected abstract Control createContents(Composite parent);
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationDialog.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationDialog.java
deleted file mode 100644
index 09f2927..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationDialog.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package org.eclipse.update.internal.ui.security;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import org.eclipse.jface.dialogs.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.core.IVerificationResult;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.UpdateUIPluginImages;
-
-/**
- *
- */
-public class JarVerificationDialog extends TitleAreaDialog {
-
- private IVerificationResult _VerificationResult = null;
- private IDialogPage _DialogPage;
- private Composite pageContainer;
- private Image defaultImage = null;
- private ImageDescriptor defaultImageDescriptor =
- UpdateUIPluginImages.DESC_INSTALL_WIZ;
-
- /**
- * Constructor for JarVerificationDialog.
- * @param parentShell
- * @param newWizard
- */
- public JarVerificationDialog(Shell parentShell,IDialogPage dialogPage, IVerificationResult verificationResult) {
- super(parentShell);
- setShellStyle(SWT.TITLE | SWT.BORDER | SWT.APPLICATION_MODAL);
- _VerificationResult = verificationResult;
- _DialogPage = dialogPage;
- if (dialogPage instanceof JarVerificationPage){
- ((JarVerificationPage)_DialogPage).setTitleAreaDialog(this);
- }
- }
-
- /**
- * Add buttons to the dialog's button bar.
- */
- protected void createButtonsForButtonBar(Composite parent) {
- if (_VerificationResult.getVerificationCode()
- != IVerificationResult.TYPE_ENTRY_CORRUPTED) {
-
- if (_VerificationResult.isFeatureVerification()) {
- createButton(
- parent,
- IDialogConstants.OK_ID,
- UpdateUIPlugin.getResourceString("JarVerificationDialog.Install"),
- false);
- //$NON-NLS-1$
- } else {
- createButton(
- parent,
- IDialogConstants.OK_ID,
- UpdateUIPlugin.getResourceString("JarVerificationDialog.Continue"),
- false);
- //$NON-NLS-1$
- }
-
- // Radio button: Cancel installation
- //----------------------------------
- createButton(
- parent,
- IDialogConstants.CANCEL_ID,
- UpdateUIPlugin.getResourceString("JarVerificationDialog.Cancel"),
- true);
- //$NON-NLS-1$
-
- } else {
- createButton(
- parent,
- IDialogConstants.CANCEL_ID,
- UpdateUIPlugin.getResourceString("JarVerificationDialog.Cancel"),
- true);
- }
- }
-
- /* (non-Javadoc)
- * Method declared on Dialog.
- */
- protected Control createDialogArea(Composite parent) {
- Composite compositeParent = (Composite)super.createDialogArea(parent);
- setTitleImage(this.getImage());
- setTitle("Feature Verification");
- setMessage("Message from Dialog");
-
- _DialogPage.createControl(compositeParent);
- pageContainer=(Composite)_DialogPage.getControl();
- GridData gd = new GridData(GridData.FILL_BOTH);
- pageContainer.setLayoutData(gd);
- pageContainer.setFont(parent.getFont());
-
- // Build the separator line
- Label separator= new Label(compositeParent, SWT.HORIZONTAL | SWT.SEPARATOR);
- separator.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return compositeParent;
- }
-
- /**
- * @see IDialogPage#getImage()
- */
- public Image getImage() {
- if (defaultImage == null)
- defaultImage = defaultImageDescriptor.createImage();
-
- return defaultImage;
- }
-
- public boolean close() {
- // dispose of image
- if (defaultImage != null) {
- defaultImage.dispose();
- defaultImage = null;
- }
- return super.close();
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationPage.java
deleted file mode 100644
index b8697d0..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationPage.java
+++ /dev/null
@@ -1,376 +0,0 @@
-package org.eclipse.update.internal.ui.security;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-import org.eclipse.jface.dialogs.TitleAreaDialog;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.core.IVerificationResult;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-
-/**
- *
- */
-public class JarVerificationPage extends BannerPage {
-
- private IVerificationResult _VerificationResult = null;
- private String _fileName = null;
- private String _strFeatureName = null;
- private String _strId = null;
- private String _strProviderName = null;
- private TitleAreaDialog _Dialog;
- private boolean okToInstall = false;
- private String componentVerified;
-
- /*
- * Constructor for JarVerificationPage.
- */
- public JarVerificationPage(IVerificationResult verificationResult) {
- super(UpdateUIPlugin.getResourceString("JarVerificationDialog.Verification"));
- _fileName = verificationResult.getContentReference().getIdentifier();
- _VerificationResult = verificationResult;
- _strId = verificationResult.getFeature().getVersionedIdentifier().toString();
- _strFeatureName = verificationResult.getFeature().getLabel();
- _strProviderName = verificationResult.getFeature().getProvider();
- componentVerified =
- (verificationResult.isFeatureVerification()) ? "feature" : "feature file";
- okToInstall = false;
- }
-
- /* (non-Javadoc)
- * Method declared on Dialog.
- */
- protected Control createContents(Composite compositeParent) {
-
- // Composite: Client
- //------------------
- Composite compositeClient = new Composite(compositeParent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.marginHeight = layout.marginWidth = 0;
- compositeClient.setLayout(layout);
- compositeClient.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- // Text Information
- //------------------
- createTextArea(compositeClient);
-
- // Certificate Area
- //------------------
- createCertificateArea(compositeClient);
-
- // File and Feature Information
- //-----------------------------
- createInformationArea(compositeClient);
-
- // Choice Area
- //------------
- createChoiceArea(compositeClient);
-
- return compositeClient;
-
- }
-
- /*
- * Continue install or cancel install
- */
- private void createChoiceArea(Composite compositeClient) {
- if (_VerificationResult.getVerificationCode()
- != IVerificationResult.TYPE_ENTRY_CORRUPTED) {
-
- // Text: Instruction
- //------------------
- Text textInstruction = new Text(compositeClient, SWT.MULTI | SWT.READ_ONLY);
- textInstruction.setLayoutData(
- new GridData(
- GridData.VERTICAL_ALIGN_BEGINNING
- | GridData.GRAB_VERTICAL
- | GridData.FILL_HORIZONTAL));
- if (_VerificationResult.isFeatureVerification()) {
- textInstruction.setText(
- UpdateUIPlugin.getResourceString("JarVerificationDialog.MayChooseToInstall"));
- //$NON-NLS-1$
- } else {
- textInstruction.setText(
- UpdateUIPlugin.getResourceString("JarVerificationDialog.MayChooseToContinue"));
- //$NON-NLS-1$
- }
- //$NON-NLS-1$
- }
- }
-
- /*
- * Creates the Information text
- */
- private void createTextArea(Composite compositeClient) {
-
- // Text: Information
- //------------------
- Text textInformation =
- new Text(compositeClient, SWT.WRAP | SWT.READ_ONLY | SWT.MULTI);
- textInformation.setLayoutData(
- new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL));
-
- StringBuffer strb = new StringBuffer();
- switch (_VerificationResult.getVerificationCode()) {
-
- case IVerificationResult.TYPE_ENTRY_NOT_SIGNED :
- String msg =
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.AboutToInstall",
- componentVerified);
- setMessage(msg, WARNING);
- strb.append(
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.NotDigitallySigned",
- componentVerified));
- //$NON-NLS-1$
- strb.append("\r\n"); //$NON-NLS-1$
- strb.append(
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.CannotVerifyProvider",
- componentVerified));
- //$NON-NLS-1$
- strb.append("\r\n"); //$NON-NLS-1$
- if (_VerificationResult.isFeatureVerification()) {
- strb.append(
- UpdateUIPlugin.getResourceString("JarVerificationDialog.InstallMayCorrupt"));
- //$NON-NLS-1$
- } else {
- strb.append(
- UpdateUIPlugin.getResourceString("JarVerificationDialog.ContinueMayCorrupt"));
- //$NON-NLS-1$
- }
- textInformation.setText(strb.toString());
- break;
-
- case IVerificationResult.TYPE_ENTRY_CORRUPTED :
- msg =
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.CorruptedContent",
- componentVerified);
- setMessage(msg, ERROR);
- //$NON-NLS-1$
- strb.append(
- UpdateUIPlugin.getResourceString(
- "JarVerificationDialog.ComponentNotInstalled"));
- //$NON-NLS-1$
- textInformation.setText(strb.toString());
- break;
-
- case IVerificationResult.TYPE_ENTRY_SIGNED_UNRECOGNIZED :
- msg =
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.SignedComponent",
- componentVerified);
- //$NON-NLS-1$
- setMessage(msg, WARNING);
- strb.append(
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.UnknownCertificate",
- componentVerified));
- //$NON-NLS-1$
- strb.append("\r\n"); //$NON-NLS-1$
- strb.append(
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.UnableToVerifyProvider",
- componentVerified));
- //$NON-NLS-1$
- strb.append("\r\n"); //$NON-NLS-1$
- if (_VerificationResult.isFeatureVerification()) {
- strb.append(
- UpdateUIPlugin.getResourceString("JarVerificationDialog.InstallMayCorrupt"));
- //$NON-NLS-1$
- } else {
- strb.append(
- UpdateUIPlugin.getResourceString("JarVerificationDialog.ContinueMayCorrupt"));
- //$NON-NLS-1$
- }
- textInformation.setText(strb.toString());
- break;
-
- case IVerificationResult.TYPE_ENTRY_SIGNED_RECOGNIZED :
- msg =
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.SignedComponent",
- componentVerified);
- //$NON-NLS-1$
- setMessage(msg, WARNING);
- strb.append(
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.KnownCertificate",
- componentVerified));
- //$NON-NLS-1$
- strb.append("\r\n"); //$NON-NLS-1$
- strb.append(
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.ProviderKnown",
- componentVerified));
- //$NON-NLS-1$
- strb.append("\r\n"); //$NON-NLS-1$
-
- textInformation.setText(strb.toString());
-
- createCautionArea(compositeClient);
- break;
- }
- }
-
- /*
- * Caution Label and text
- */
- private void createCautionArea(Composite compositeClient) {
- // Composite: Caution
- //------------------------------
- Composite compositeCaution = new Composite(compositeClient, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = layout.marginHeight = 0;
- compositeCaution.setLayout(layout);
- compositeCaution.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- // Icon
- //-----
- Label label = new Label(compositeCaution,SWT.LEFT);
- label.setImage(JFaceResources.getImage(_Dialog.DLG_IMG_MESSAGE_WARNING));
-
- // Text
- //-----
- Text textInformationCaution =
- new Text(compositeCaution, SWT.WRAP | SWT.READ_ONLY | SWT.MULTI);
- textInformationCaution.setText(
- UpdateUIPlugin.getFormattedMessage(
- "JarVerificationDialog.Caution",
- _strProviderName));
- //$NON-NLS-1$
- }
-
- /*
- * Presents File & Feature information
- */
- private void createInformationArea(Composite compositeClient) {
-
- // Composite: Information labels
- //------------------------------
- Composite compositeInformation = new Composite(compositeClient, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = layout.marginHeight = 0;
- compositeInformation.setLayout(layout);
- compositeInformation.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- // Feature name
- //---------------
- Label label = null;
- Text text = null;
- if (_strFeatureName != null && _strFeatureName.length() > 0) {
- label = new Label(compositeInformation, SWT.NULL);
- label.setText(
- UpdateUIPlugin.getResourceString("JarVerificationDialog.FeatureName"));
- //$NON-NLS-1$
- text = new Text(compositeInformation, SWT.WRAP | SWT.READ_ONLY | SWT.MULTI);
- text.setFont(JFaceResources.getBannerFont());
- text.setText(_strFeatureName);
- }
- // Feature identifier
- //---------------------
- if (_strId != null && _strId.length() > 0) {
- label = new Label(compositeInformation, SWT.NULL);
- label.setText(
- UpdateUIPlugin.getResourceString("JarVerificationDialog.FeatureIdentifier"));
- //$NON-NLS-1$
- text = new Text(compositeInformation, SWT.WRAP | SWT.READ_ONLY | SWT.MULTI);
- text.setFont(JFaceResources.getBannerFont());
- text.setText(_strId);
- }
- // Provider name
- //--------------
- if (_strProviderName != null && _strProviderName.length() > 0) {
- label = new Label(compositeInformation, SWT.NULL);
- label.setText(
- UpdateUIPlugin.getResourceString("JarVerificationDialog.Provider"));
- //$NON-NLS-1$
- text = new Text(compositeInformation, SWT.WRAP | SWT.READ_ONLY | SWT.MULTI);
- text.setFont(JFaceResources.getBannerFont());
- text.setText(_strProviderName);
- }
- // Label: File name
- //-----------------
- label = new Label(compositeInformation, SWT.NULL);
- label.setText(
- UpdateUIPlugin.getResourceString("JarVerificationDialog.FileName"));
- //$NON-NLS-1$
- text = new Text(compositeInformation, SWT.WRAP | SWT.READ_ONLY | SWT.MULTI);
- text.setFont(JFaceResources.getBannerFont());
- text.setText(_fileName);
- }
-
- /*
- * Show certificate information
- */
- private void createCertificateArea(Composite compositeClient) {
-
- if (_VerificationResult.getVerificationCode()
- == IVerificationResult.TYPE_ENTRY_SIGNED_UNRECOGNIZED
- || _VerificationResult.getVerificationCode()
- == IVerificationResult.TYPE_ENTRY_SIGNED_RECOGNIZED) {
- // Group box
- //----------
- Group group = new Group(compositeClient, SWT.SHADOW_ETCHED_IN);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = layout.marginHeight = 0;
- group.setLayout(layout);
- group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- group.setText(UpdateUIPlugin.getResourceString("JarVerificationDialog.CertificateInfo"));
-
- // Signer
- //-------------------
- Label label = null;
- Text text = null;
- //data = new GridData(GridData.FILL_HORIZONTAL);
- //data.horizontalIndent = 0;
- //textInformation.setLayoutData(data);
- if (_VerificationResult.getSignerInfo() != null) {
- label = new Label(group, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString("JarVerificationDialog.SubjectCA"));
- label.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
- //$NON-NLS-1$
- text = new Text(group, SWT.WRAP | SWT.READ_ONLY | SWT.MULTI);
- text.setText(_VerificationResult.getSignerInfo());
- }
-
- // Authenticator
- //---------------------
- if (_VerificationResult.getVerifierInfo() != null) {
- label = new Label(group, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString("JarVerificationDialog.RootCA"));
- label.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
- //$NON-NLS-1$
- text = new Text(group, SWT.WRAP | SWT.READ_ONLY | SWT.MULTI);
- text.setText(_VerificationResult.getVerifierInfo());
- }
- }
- }
-
- /*
- * Sets the Dialog
- */
- public void setTitleAreaDialog(TitleAreaDialog dialog) {
- _Dialog = dialog;
- };
-
- /*
- *
- */
- public void setMessage(String newMessage, int newType) {
- super.setMessage(newMessage, newType);
- if (_Dialog != null) {
- _Dialog.setMessage(newMessage, newType);
- }
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationService.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationService.java
deleted file mode 100644
index 1c60c36..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/JarVerificationService.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.eclipse.update.internal.ui.security;
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogPage;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.update.core.IVerificationListener;
-import org.eclipse.update.core.IVerificationResult;
-import org.eclipse.update.internal.security.JarVerifier;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.wizards.InstallWizardDialog;
-/**
- *
- */
-public class JarVerificationService implements IVerificationListener {
-
- /*
- * The JarVerifier is a instance variable
- * bacause we want to reuse it upon multiple calls
- */
- private JarVerifier jarVerifier;
-
- /*
- * the Shell
- */
- private Shell shell;
-
- /*
- * If no shell, create a new shell
- */
- public JarVerificationService() {
- this(null);
- }
-
- /*
- *
- */
- public JarVerificationService(Shell aShell) {
- jarVerifier = new JarVerifier();
- shell = aShell;
-
- // find the default display and get the active shell
- if (shell == null) {
- final Display disp = Display.getDefault();
- if (disp == null) {
- shell = new Shell(new Display());
- } else {
- disp.syncExec(new Runnable() {
- public void run() {
- shell = disp.getActiveShell();
- }
- });
- }
- }
- }
-
- /*
- *
- */
- private int openWizard(IVerificationResult result) {
- int code;
- IDialogPage page = new JarVerificationPage(result);
- Dialog dialog =
- new JarVerificationDialog(shell,page,result);
- dialog.create();
- dialog.getShell().setSize(600, 500);
- dialog.open();
- if (dialog.getReturnCode() == dialog.OK)
- code = CHOICE_INSTALL_TRUST_ALWAYS;
- else
- code = CHOICE_ABORT;
-
- return code;
-
- }
-
- /*
- *
- */
- public int prompt(final IVerificationResult verificationResult){
-
- if (verificationResult.alreadySeen()) return CHOICE_INSTALL_TRUST_ALWAYS;
-
- switch (verificationResult.getVerificationCode()) {
- case IVerificationResult.UNKNOWN_ERROR :
- return CHOICE_ERROR;
-
- case IVerificationResult.VERIFICATION_CANCELLED:
- return CHOICE_ABORT;
-
- // cannot verify it: do not prompt user.
- case IVerificationResult.TYPE_ENTRY_UNRECOGNIZED:
- return CHOICE_INSTALL_TRUST_ALWAYS;
-
- default :
- {
- final int[] wizardResult = new int[1];
- shell.getDisplay().syncExec(new Runnable() {
- public void run() {
- wizardResult[0] = openWizard(verificationResult);
- }
- });
- return wizardResult[0];
- }
- }
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/UserValidationDialog.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/UserValidationDialog.java
deleted file mode 100644
index 699a366..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/security/UserValidationDialog.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package org.eclipse.update.internal.ui.security;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.URL;
-
-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.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-
-
-/**
- * User authentication dialog
- */
-public class UserValidationDialog extends Dialog {
- protected Text usernameField;
- protected Text passwordField;
-
- protected String domain;
- protected String realm;
- protected String defaultUsername;
- protected String password = null;
- protected String userid = null;
- protected boolean isUsernameMutable = true;
- /**
- * Creates a new UserValidationDialog.
- */
- public UserValidationDialog(Shell parentShell, URL location, String realm, String defaultName) {
- super(parentShell);
- this.defaultUsername = defaultName;
- this.domain = location.getHost();
- this.realm = realm;
- }
- /**
- */
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(UpdateUIPlugin.getResourceString("UserVerificationDialog.PasswordRequired")); //$NON-NLS-1$
- }
- /**
- */
- 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();
- }
- }
- /**
- */
- protected Control createDialogArea(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));
-
- Label label = new Label(main, SWT.WRAP);
- String text = UpdateUIPlugin.getResourceString("UserVerificationDialog.EnterNameAndPassword")+ realm; //$NON-NLS-1$
- text += "\n" + UpdateUIPlugin.getResourceString("UserVerificationDialog.Domain")+domain; //$NON-NLS-1$ //$NON-NLS-2$
- label.setText(text);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 3;
- label.setLayoutData(data);
-
- createUsernameFields(main);
- createPasswordFields(main);
-
- return main;
- }
- /**
- * Creates the three widgets that represent the user name entry
- * area.
- */
- protected void createPasswordFields(Composite parent) {
- new Label(parent, SWT.NONE).setText(UpdateUIPlugin.getResourceString("UserVerificationDialog.Password")); //$NON-NLS-1$
-
- passwordField = new Text(parent, SWT.BORDER);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH);
- passwordField.setLayoutData(data);
- passwordField.setEchoChar('*');
-
- new Label(parent, SWT.NONE); //spacer
- }
- /**
- * Creates the three widgets that represent the user name entry
- * area.
- */
- protected void createUsernameFields(Composite parent) {
- new Label(parent, SWT.NONE).setText(UpdateUIPlugin.getResourceString("UserVerificationDialog.UserName")); //$NON-NLS-1$
-
- usernameField = new Text(parent, SWT.BORDER);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH);
- usernameField.setLayoutData(data);
-
- new Label(parent, SWT.NONE); //spacer
- }
- /**
- * Returns the password entered by the user, or null
- * if the user canceled.
- */
- public String getPassword() {
- return password;
- }
- /**
- * Returns the username entered by the user, or null
- * if the user canceled.
- */
- public String getUserid() {
- return userid;
- }
- /**
- * Notifies that the ok button of this dialog has been pressed.
- */
- protected void okPressed() {
- password = passwordField.getText();
- userid = 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.
- */
- public void setUsernameMutable(boolean value) {
- isUsernameMutable = value;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/BaseTreeView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/BaseTreeView.java
deleted file mode 100644
index 6a3dcbd..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/BaseTreeView.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package org.eclipse.update.internal.ui.views;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.swt.SWT;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.jface.action.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.events.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.ui.*;
-
-/**
- * Insert the type's description here.
- * @see ViewPart
- */
-public abstract class BaseTreeView extends ViewPart {
- protected TreeViewer viewer;
- private Action showDetailsAction;
- private static final String KEY_SHOW_DETAILS = "BaseTreeView.Popup.ShowDetails";
- /**
- * The constructor.
- */
- public BaseTreeView() {
- }
-
- public abstract void initProviders();
-
- public void createPartControl(Composite parent) {
- viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setUseHashlookup(true);
- initProviders();
- //viewer.setInput(getInitialInput());
- //initDragAndDrop();
- //initRefreshKey();
- //initRenameKey();
- //updateTitle();
-
- MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$
- menuMgr.setRemoveAllWhenShown(true);
- menuMgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- manager.add(new GroupMarker("additions"));
- BaseTreeView.this.fillContextMenu(manager);
- }
- });
- Menu menu = menuMgr.createContextMenu(viewer.getTree());
- viewer.getTree().setMenu(menu);
- getSite().registerContextMenu(menuMgr, viewer);
- makeActions();
-
- viewer.getTree().addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent event) {
- if (event.character == SWT.DEL && event.stateMask == 0) {
- deleteKeyPressed(event.widget);
- }
- }
- });
-
- viewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- handleSelectionChanged(event);
- }
- });
- viewer.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- handleDoubleClick(event);
- }
- });
- viewer.getControl().addKeyListener(new KeyAdapter() {
- public void keyPressed(KeyEvent e) {
- handleKeyPressed(e);
- }
- });
-
- fillActionBars(getViewSite().getActionBars());
-
- getSite().setSelectionProvider(viewer);
-
- /*
- //if(memento != null) restoreState(memento);
- //memento = null;
- // Set help for the view
- WorkbenchHelp.setHelp(viewer.getControl(), new ViewContextComputer(this, INavigatorHelpContextIds.RESOURCE_VIEW));
- */
- partControlCreated();
- }
-
- protected void partControlCreated() {
- }
-
- public void setFocus() {
- viewer.getTree().setFocus();
- }
-
- protected void fillContextMenu(IMenuManager manager) {
- manager.add(showDetailsAction);
- }
-
- protected void makeActions() {
- showDetailsAction = new Action() {
- public void run() {
- IWorkbenchPage page = UpdateUIPlugin.getActivePage();
- try {
- IViewPart part = page.showView(UpdatePerspective.ID_DETAILS);
- ((DetailsView) part).selectionChanged(BaseTreeView.this, viewer.getSelection());
- } catch (PartInitException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- };
- showDetailsAction.setText(UpdateUIPlugin.getResourceString(KEY_SHOW_DETAILS));
- }
-
- protected void deleteKeyPressed(Widget widget) {
- }
-
- protected void handleSelectionChanged(SelectionChangedEvent e) {
- }
-
- protected void handleDoubleClick(DoubleClickEvent e) {
- showDetailsAction.run();
- }
-
- protected void handleKeyPressed(KeyEvent e) {
- }
-
- protected void fillActionBars(IActionBars bars) {
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/ConfigurationView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/ConfigurationView.java
deleted file mode 100644
index 2ffb4f8..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/ConfigurationView.java
+++ /dev/null
@@ -1,735 +0,0 @@
-package org.eclipse.update.internal.ui.views;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.*;
-import org.eclipse.ui.dialogs.PropertyDialogAction;
-import org.eclipse.ui.part.DrillDownAdapter;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.forms.RevertSection;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.parts.*;
-
-/**
- * Insert the type's description here.
- * @see ViewPart
- */
-public class ConfigurationView
- extends BaseTreeView
- implements
- IInstallConfigurationChangedListener,
- IConfiguredSiteChangedListener,
- ILocalSiteChangedListener {
- private static final String KEY_CURRENT = "ConfigurationView.current";
- private static final String KEY_SHOW_UNCONF_FEATURES =
- "ConfigurationView.showUnconfFeatures";
- private static final String KEY_SHOW_UNCONF_FEATURES_TOOLTIP =
- "ConfigurationView.showUnconfFeatures.tooltip";
- private Image eclipseImage;
- private Image featureImage;
- private Image unconfFeatureImage;
- private Image siteImage;
- private Image installSiteImage;
- private Image linkedSiteImage;
- private Image configImage;
- private Image currentConfigImage;
- private Image historyImage;
- private Image savedImage;
- private boolean initialized;
- private SavedFolder savedFolder;
- private HistoryFolder historyFolder;
- private Action showUnconfFeaturesAction;
- private Action revertAction;
- private Action preserveAction;
- private Action removePreservedAction;
- private Action propertiesAction;
- private IUpdateModelChangedListener modelListener;
- private DrillDownAdapter drillDownAdapter;
- private static final String KEY_RESTORE = "ConfigurationView.Popup.restore";
- private static final String KEY_PRESERVE =
- "ConfigurationView.Popup.preserve";
- private static final String KEY_REMOVE_PRESERVED =
- "ConfigurationView.Popup.removePreserved";
- private static final String KEY_HISTORY_FOLDER =
- "ConfigurationView.historyFolder";
- private static final String KEY_SAVED_FOLDER =
- "ConfigurationView.savedFolder";
-
- abstract class ViewFolder extends UIModelObject {
- private String label;
- private Image image;
-
- public ViewFolder(String label) {
- this.label = label;
- String imageKey = ISharedImages.IMG_OBJ_FOLDER;
- image =
- PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
- }
-
- public Object getAdapter(Class key) {
- return null;
- }
-
- public Image getImage() {
- return image;
- }
-
- public String toString() {
- return label;
- }
- public abstract Object[] getChildren();
- }
-
- class SavedFolder extends ViewFolder {
- public SavedFolder() {
- super(UpdateUIPlugin.getResourceString(KEY_SAVED_FOLDER));
- }
- public Object[] getChildren() {
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- return makeChildren(localSite.getPreservedConfigurations());
- } catch (CoreException e) {
- return new Object[0];
- }
- }
-
- private Object[] makeChildren(IInstallConfiguration[] preserved) {
- Object[] children = new Object[preserved.length];
- for (int i = 0; i < preserved.length; i++) {
- children[i] = new PreservedConfiguration(preserved[i]);
- }
- return children;
- }
- }
-
- class HistoryFolder extends ViewFolder {
- public HistoryFolder() {
- super(UpdateUIPlugin.getResourceString(KEY_HISTORY_FOLDER));
- }
- public Object[] getChildren() {
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- return localSite.getConfigurationHistory();
- } catch (CoreException e) {
- return new Object[0];
- }
- }
- }
-
- class UpdateModelChangedListener implements IUpdateModelChangedListener {
- /**
- * @see IUpdateModelChangedListener#objectAdded(Object, Object)
- */
- public void objectsAdded(Object parent, Object[] children) {
- }
-
- /**
- * @see IUpdateModelChangedListener#objectRemoved(Object, Object)
- */
- public void objectsRemoved(Object parent, Object[] children) {
- }
-
- /**
- * @see IUpdateModelChangedListener#objectChanged(Object, String)
- */
- public void objectChanged(Object object, String property) {
- }
-
- }
-
- class LocalSiteProvider
- extends DefaultContentProvider
- implements ITreeContentProvider {
- /**
- * @see ITreeContentProvider#getChildren(Object)
- */
- public Object[] getChildren(Object parent) {
- if (parent instanceof UpdateModel) {
- UpdateModel model = (UpdateModel) parent;
- ILocalSite localSite = getLocalSite();
- if (localSite != null)
- return new Object[] {
- getLocalSite(),
- historyFolder,
- savedFolder };
- else
- return new Object[0];
- }
- if (parent instanceof ILocalSite) {
- return openLocalSite();
- }
- if (parent instanceof ViewFolder) {
- return ((ViewFolder) parent).getChildren();
- }
- if (parent instanceof PreservedConfiguration) {
- // resolve the adapter
- parent = ((PreservedConfiguration) parent).getConfiguration();
- }
- if (parent instanceof IInstallConfiguration) {
- return getConfigurationSites((IInstallConfiguration) parent);
- }
- if (parent instanceof IConfiguredSiteAdapter) {
- IConfiguredSiteAdapter adapter =
- (IConfiguredSiteAdapter) parent;
- boolean showUnconf = showUnconfFeaturesAction.isChecked();
- if (showUnconf)
- return getAllFeatures(adapter);
- else
- return getConfiguredFeatures(adapter);
- }
- if (parent instanceof ConfiguredFeatureAdapter) {
- return ((ConfiguredFeatureAdapter)parent).getIncludedFeatures();
- }
- return new Object[0];
- }
-
- private Object[] getConfigurationSites(IInstallConfiguration config) {
- IConfiguredSite[] sites = config.getConfiguredSites();
- Object[] adapters = new Object[sites.length];
- for (int i = 0; i < sites.length; i++) {
- adapters[i] = new ConfigurationSiteAdapter(config, sites[i]);
- }
- return adapters;
- }
-
- private Object[] getConfiguredFeatures(IConfiguredSiteAdapter adapter) {
- try {
- IConfiguredSite csite = adapter.getConfigurationSite();
- IFeatureReference[] refs = csite.getConfiguredFeatures();
- ArrayList result = new ArrayList();
- for (int i = 0; i < refs.length; i++) {
- IFeature feature = refs[i].getFeature();
- result.add(
- new ConfiguredFeatureAdapter(adapter, feature, true));
- }
- return getRootFeatures(result);
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- return new Object[0];
- }
- }
-
- private Object[] getAllFeatures(IConfiguredSiteAdapter adapter) {
- IConfiguredSite csite = adapter.getConfigurationSite();
- ISite site = csite.getSite();
- IFeatureReference[] allRefs = site.getFeatureReferences();
- ArrayList result = new ArrayList();
-
- for (int i = 0; i < allRefs.length; i++) {
- IFeature feature;
- try {
- feature = allRefs[i].getFeature();
- } catch (CoreException e) {
- feature = new MissingFeature(site, allRefs[i].getURL());
- }
- result.add(
- new ConfiguredFeatureAdapter(
- adapter,
- feature,
- csite.isConfigured(feature)));
- }
- return getRootFeatures(result);
- }
-
- private Object[] getRootFeatures(ArrayList list) {
- ArrayList children = new ArrayList();
- ArrayList result = new ArrayList();
- try {
- for (int i = 0; i < list.size(); i++) {
- ConfiguredFeatureAdapter cf =
- (ConfiguredFeatureAdapter) list.get(i);
- IFeature feature = cf.getFeature();
- if (feature!=null)
- addChildFeatures(feature, children);
- }
- for (int i = 0; i < list.size(); i++) {
- ConfiguredFeatureAdapter cf =
- (ConfiguredFeatureAdapter) list.get(i);
- IFeature feature = cf.getFeature();
- if (feature!=null && isChildFeature(feature, children) == false)
- result.add(cf);
- }
- } catch (CoreException e) {
- return list.toArray();
- }
- return result.toArray();
- }
-
- private void addChildFeatures(IFeature feature, ArrayList children) {
- try {
- IFeatureReference[] included =
- feature.getIncludedFeatureReferences();
- for (int i = 0; i < included.length; i++) {
- IFeature childFeature = included[i].getFeature();
- children.add(childFeature);
- }
- } catch (CoreException e) {
- // FIXME at least log
- }
- }
-
- private boolean isChildFeature(IFeature feature, ArrayList children) {
- for (int i = 0; i < children.size(); i++) {
- IFeature child = (IFeature) children.get(i);
- if (feature
- .getVersionedIdentifier()
- .equals(child.getVersionedIdentifier()))
- return true;
- }
- return false;
- } /**
- * @see ITreeContentProvider#getParent(Object)
- */
- public Object getParent(Object child) {
- return null;
- } /**
- * @see ITreeContentProvider#hasChildren(Object)
- */
- public boolean hasChildren(Object parent) {
- if (parent instanceof ConfiguredFeatureAdapter) {
- return ((ConfiguredFeatureAdapter)parent).hasIncludedFeatures();
- }
- return true;
- } /**
- * @see IStructuredContentProvider#getElements(Object)
- */
- public Object[] getElements(Object input) {
- return getChildren(input);
- }
- }
-
- class LocalSiteLabelProvider extends LabelProvider {
- public String getText(Object obj) {
- if (obj instanceof ILocalSite) {
- AboutInfo info = UpdateUIPlugin.getDefault().getAboutInfo();
- String productName = info.getProductName();
- if (productName!=null) return productName;
- return UpdateUIPlugin.getResourceString(KEY_CURRENT);
- }
- if (obj instanceof IInstallConfiguration) {
- IInstallConfiguration config = (IInstallConfiguration) obj;
- return config.getLabel();
- }
- if (obj instanceof IConfiguredSiteAdapter) {
- IConfiguredSite csite =
- ((IConfiguredSiteAdapter) obj).getConfigurationSite();
- ISite site = csite.getSite();
- return site.getURL().toString();
- }
- if (obj instanceof IFeatureAdapter) {
- try {
- IFeature feature = ((IFeatureAdapter) obj).getFeature();
- String version =
- feature
- .getVersionedIdentifier()
- .getVersion()
- .toString();
- return feature.getLabel() + " " + version;
- } catch (CoreException e) {
- return "Error";
- }
- }
- return super.getText(obj);
- }
- public Image getImage(Object obj) {
- if (obj instanceof ILocalSite)
- return eclipseImage;
- if (obj instanceof IFeatureAdapter) {
- return getFeatureImage((IFeatureAdapter) obj);
- }
- if (obj instanceof IConfiguredSiteAdapter) {
- IConfiguredSite csite =
- ((IConfiguredSiteAdapter) obj).getConfigurationSite();
- if (csite.isUpdatable())
- return installSiteImage;
- else
- return linkedSiteImage;
- }
- if (obj instanceof SavedFolder) {
- return savedImage;
- }
- if (obj instanceof HistoryFolder) {
- return historyImage;
- }
- /*
- if (obj instanceof ViewFolder) {
- return ((ViewFolder) obj).getImage();
- }
- */
- if (obj instanceof PreservedConfiguration) {
- obj = ((PreservedConfiguration) obj).getConfiguration();
- }
- if (obj instanceof IInstallConfiguration) {
- IInstallConfiguration config = (IInstallConfiguration) obj;
- if (config.isCurrent())
- return currentConfigImage;
- return configImage;
- }
- return null;
- }
-
- private Image getFeatureImage(IFeatureAdapter adapter) {
- boolean configured = true;
- if (adapter instanceof IConfiguredFeatureAdapter) {
- configured =
- ((IConfiguredFeatureAdapter) adapter).isConfigured();
- }
- return (configured ? featureImage : unconfFeatureImage);
- }
- }
-
- public ConfigurationView() {
- ImageDescriptor edesc = UpdateUIPluginImages.DESC_APP_OBJ;
- AboutInfo info = UpdateUIPlugin.getDefault().getAboutInfo();
- if (info.getWindowImage()!=null)
- edesc = info.getWindowImage();
- eclipseImage = edesc.createImage();
- featureImage = UpdateUIPluginImages.DESC_FEATURE_OBJ.createImage();
- unconfFeatureImage =
- UpdateUIPluginImages.DESC_UNCONF_FEATURE_OBJ.createImage();
- ImageDescriptor siteDesc = UpdateUIPluginImages.DESC_LSITE_OBJ;
- siteImage = siteDesc.createImage();
- ImageDescriptor installSiteDesc = UpdateUIPluginImages.DESC_LSITE_OBJ;
- /*
- new OverlayIcon(
- siteDesc,
- new ImageDescriptor[][] { {
- UpdateUIPluginImages
- .DESC_INSTALLABLE_CO }
- });
- */
- installSiteImage = installSiteDesc.createImage();
- ImageDescriptor linkedSiteDesc =
- new OverlayIcon(
- siteDesc,
- new ImageDescriptor[][] { {
- UpdateUIPluginImages
- .DESC_LINKED_CO }
- });
- linkedSiteImage = linkedSiteDesc.createImage();
- configImage = UpdateUIPluginImages.DESC_CONFIG_OBJ.createImage();
- ImageDescriptor cdesc =
- new OverlayIcon(
- UpdateUIPluginImages.DESC_CONFIG_OBJ,
- new ImageDescriptor[][] { {
- }, {
- UpdateUIPluginImages.DESC_CURRENT_CO }
- });
- currentConfigImage = cdesc.createImage();
- savedImage = UpdateUIPluginImages.DESC_SAVED_OBJ.createImage();
- historyImage= UpdateUIPluginImages.DESC_HISTORY_OBJ.createImage();
- savedFolder = new SavedFolder();
- historyFolder = new HistoryFolder();
- }
-
- public void initProviders() {
- viewer.setContentProvider(new LocalSiteProvider());
- viewer.setInput(UpdateUIPlugin.getDefault().getUpdateModel());
- viewer.setLabelProvider(new LocalSiteLabelProvider());
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- localSite.addLocalSiteChangedListener(this);
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- modelListener = new IUpdateModelChangedListener() {
- public void objectsAdded(Object parent, Object[] children) {
- }
- public void objectsRemoved(Object parent, Object[] children) {
- }
- public void objectChanged(Object obj, String property) {
- viewer.update(obj, null);
- }
- };
- model.addUpdateModelChangedListener(modelListener);
- }
-
- private ILocalSite getLocalSite() {
- try {
- return SiteManager.getLocalSite();
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- return null;
- }
- }
-
- private Object[] openLocalSite() {
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration config = localSite.getCurrentConfiguration();
- IConfiguredSite[] sites = config.getConfiguredSites();
- Object[] result = new Object[sites.length];
- for (int i = 0; i < sites.length; i++) {
- result[i] = new ConfigurationSiteAdapter(config, sites[i]);
- }
- if (!initialized) {
- config.addInstallConfigurationChangedListener(this);
- initialized = true;
- }
- return result;
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- return new Object[0];
- }
- }
-
- public void dispose() {
- eclipseImage.dispose();
- featureImage.dispose();
- unconfFeatureImage.dispose();
- siteImage.dispose();
- installSiteImage.dispose();
- linkedSiteImage.dispose();
- savedImage.dispose();
- historyImage.dispose();
- configImage.dispose();
- currentConfigImage.dispose();
- if (initialized) {
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- localSite.removeLocalSiteChangedListener(this);
- IInstallConfiguration config =
- localSite.getCurrentConfiguration();
- config.removeInstallConfigurationChangedListener(this);
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- initialized = false;
- }
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- model.removeUpdateModelChangedListener(modelListener);
- super.dispose();
- }
- private Object getSelectedObject() {
- ISelection selection = viewer.getSelection();
- if (selection instanceof IStructuredSelection
- && !selection.isEmpty()) {
- IStructuredSelection ssel = (IStructuredSelection) selection;
- if (ssel.size() == 1) {
- return ssel.getFirstElement();
- }
- }
- return null;
- }
-
- public void selectHistoryFolder() {
- viewer.setExpandedState(historyFolder, true);
- viewer.setSelection(new StructuredSelection(historyFolder), true);
- }
- public void selectCurrentConfiguration() {
- viewer.setSelection(new StructuredSelection(getLocalSite()), true);
- }
-
- private IInstallConfiguration getSelectedConfiguration(
- Object obj,
- boolean onlyPreserved) {
- if (!onlyPreserved && obj instanceof IInstallConfiguration)
- return (IInstallConfiguration) obj;
- if (obj instanceof PreservedConfiguration)
- return ((PreservedConfiguration) obj).getConfiguration();
- return null;
- }
-
- private boolean isPreserved(IInstallConfiguration config) {
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration[] preservedConfigs =
- localSite.getPreservedConfigurations();
- for (int i = 0; i < preservedConfigs.length; i++) {
- if (preservedConfigs[i].equals(config))
- return true;
- }
- return false;
- } catch (CoreException e) {
- return false;
- }
- }
-
- protected void makeActions() {
- super.makeActions();
- showUnconfFeaturesAction = new Action() {
- public void run() {
- viewer.refresh(getLocalSite());
- }
- };
- showUnconfFeaturesAction.setText(
- UpdateUIPlugin.getResourceString(KEY_SHOW_UNCONF_FEATURES));
- showUnconfFeaturesAction.setImageDescriptor(
- UpdateUIPluginImages.DESC_UNCONF_FEATURE_OBJ);
- showUnconfFeaturesAction.setChecked(false);
- showUnconfFeaturesAction.setToolTipText(
- UpdateUIPlugin.getResourceString(KEY_SHOW_UNCONF_FEATURES_TOOLTIP));
- drillDownAdapter = new DrillDownAdapter(viewer);
- super.makeActions();
- revertAction = new Action() {
- public void run() {
- Object obj = getSelectedObject();
- IInstallConfiguration target =
- getSelectedConfiguration(obj, false);
- if (target != null)
- RevertSection.performRevert(target);
- }
- };
- revertAction.setText(UpdateUIPlugin.getResourceString(KEY_RESTORE));
- preserveAction = new Action() {
- public void run() {
- Object obj = getSelectedObject();
- IInstallConfiguration target =
- getSelectedConfiguration(obj, false);
- if (target == null)
- return;
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- localSite.addToPreservedConfigurations(target);
- localSite.save();
- viewer.refresh(savedFolder);
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- };
- preserveAction.setText(UpdateUIPlugin.getResourceString(KEY_PRESERVE));
- removePreservedAction = new Action() {
- public void run() {
- Object obj = getSelectedObject();
- IInstallConfiguration target =
- getSelectedConfiguration(obj, true);
- if (target == null)
- return;
- if (isPreserved(target) == false)
- return;
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- localSite.removeFromPreservedConfigurations(target);
- localSite.save();
- viewer.remove(obj);
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- };
- removePreservedAction.setText(
- UpdateUIPlugin.getResourceString(KEY_REMOVE_PRESERVED));
- propertiesAction =
- new PropertyDialogAction(
- UpdateUIPlugin.getActiveWorkbenchShell(),
- viewer);
- }
-
- protected void fillActionBars(IActionBars bars) {
- IToolBarManager tbm = bars.getToolBarManager();
- drillDownAdapter.addNavigationActions(tbm);
- tbm.add(new Separator());
- tbm.add(showUnconfFeaturesAction);
- }
- protected void fillContextMenu(IMenuManager manager) {
- Object obj = getSelectedObject();
- IInstallConfiguration config = getSelectedConfiguration(obj, false);
- if (config != null && !config.isCurrent()) {
- manager.add(revertAction);
- manager.add(new Separator());
- }
- if (config != null && !isPreserved(config)) {
- manager.add(preserveAction);
- }
- config = getSelectedConfiguration(obj, true);
- if (config != null) {
- manager.add(removePreservedAction);
- }
- super.fillContextMenu(manager);
- if (obj instanceof PreservedConfiguration
- || obj instanceof IInstallConfiguration)
- manager.add(propertiesAction);
- manager.add(new Separator());
- drillDownAdapter.addNavigationActions(manager);
- super.fillContextMenu(manager);
- }
-
- private void registerListeners() {
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration config = localSite.getCurrentConfiguration();
- config.addInstallConfigurationChangedListener(this);
- IConfiguredSite[] isites = config.getConfiguredSites();
- for (int i = 0; i < isites.length; i++) {
- isites[i].addConfiguredSiteChangedListener(this);
- }
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
-
- private void unregisterListeners() {
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration config = localSite.getCurrentConfiguration();
- config.removeInstallConfigurationChangedListener(this);
- IConfiguredSite[] isites = config.getConfiguredSites();
- for (int i = 0; i < isites.length; i++) {
- isites[i].removeConfiguredSiteChangedListener(this);
- }
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- } /**
- * @see IInstallConfigurationChangedListener#installSiteAdded(ISite)
- */
- public void installSiteAdded(IConfiguredSite csite) {
- asyncRefresh();
- } /**
- * @see IInstallConfigurationChangedListener#installSiteRemoved(ISite)
- */
- public void installSiteRemoved(IConfiguredSite site) {
- asyncRefresh();
- } /**
- * @see IConfiguredSiteChangedListener#featureInstalled(IFeature)
- */
- public void featureInstalled(IFeature feature) {
- asyncRefresh();
- } /**
- * @see IConfiguredSiteChangedListener#featureUninstalled(IFeature)
- */
- public void featureRemoved(IFeature feature) {
- asyncRefresh();
- } /**
- * @see IConfiguredSiteChangedListener#featureUConfigured(IFeature)
- */
- public void featureConfigured(IFeature feature) {
- };
- /**
- * @see IConfiguredSiteChangedListener#featureUConfigured(IFeature)
- */
- public void featureUnconfigured(IFeature feature) {
- };
- public void currentInstallConfigurationChanged(IInstallConfiguration configuration) {
- asyncRefresh();
- }
-
- public void installConfigurationRemoved(IInstallConfiguration configuration) {
- asyncRefresh();
- }
-
- private void asyncRefresh() {
- Control control = viewer.getControl();
- if (control.isDisposed()) return;
- control.getDisplay().asyncExec(new Runnable() {
- public void run() {
- viewer.refresh();
- }
- });
- }
-
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/DetailsView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/DetailsView.java
deleted file mode 100644
index 45ef2a4..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/DetailsView.java
+++ /dev/null
@@ -1,314 +0,0 @@
-package org.eclipse.update.internal.ui.views;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.io.*;
-import java.util.Vector;
-
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.program.Program;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.*;
-import org.eclipse.ui.texteditor.IUpdate;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.IFeature;
-import org.eclipse.update.core.model.ModelObject;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.forms.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.pages.*;
-import org.eclipse.update.internal.ui.preferences.MainPreferencePage;
-import org.eclipse.update.internal.ui.search.*;
-
-/**
- * Insert the type's description here.
- * @see ViewPart
- */
-public class DetailsView extends MultiPageView {
-
- // NL keys
- private static final String KEY_HOME = "DetailsView.home.label";
- private static final String KEY_BACKWARD = "DetailsView.backward.label";
- private static final String KEY_FORWARD = "DetailsView.forward.label";
- private static final String KEY_T_HOME = "DetailsView.home.tooltip";
- private static final String KEY_T_BACKWARD = "DetailsView.backward.tooltip";
- private static final String KEY_T_FORWARD = "DetailsView.forward.tooltip";
-
- public static final String HOME_PAGE = "Home";
- public static final String SITE_PAGE = "Site";
- public static final String CATEGORY_PAGE = "Category";
- public static final String DETAILS_PAGE = "Details";
- public static final String BROWSER_PAGE = "Browser";
- public static final String CONFIG_PAGE = "Config";
- public static final String INSTALL_CONFIGURATION_PAGE = "InstallConfiguration";
- public static final String INSTALL_SITE_PAGE = "InstallSite";
- public static final String CDROM_PAGE = "MyComputer";
- public static final String SEARCH_PAGE = "Search";
- public static final String DISCOVERY_PAGE = "Discovery";
- public static final String UNKNOWN_PAGE = "Unknown";
-
- private Action homeAction;
- private UpdateAction backAction;
- private UpdateAction forwardAction;
- private DetailsHistory history = new DetailsHistory();
- private Vector tmpFiles;
-
- private boolean inHistory = false;
-
- abstract class UpdateAction extends Action implements IUpdate {
- }
-
- /**
- * The constructor.
- */
- public DetailsView() {
- history = new DetailsHistory();
- }
-
- public void createPages() {
- firstPageId = HOME_PAGE;
- formWorkbook.setFirstPageSelected(false);
- MainPage mainPage = new MainPage(this, "Update Home");
- addPage(HOME_PAGE, mainPage);
- DetailsPage detailsPage = new DetailsPage(this, "Details");
- addPage(DETAILS_PAGE, detailsPage);
- SitePage sitePage = new SitePage(this, "Site");
- addPage(SITE_PAGE, sitePage);
- addPage(CATEGORY_PAGE, new CategoryPage(this, "Category"));
- addPage(CONFIG_PAGE, new LocalSitePage(this, "Configuration"));
- addPage(
- INSTALL_CONFIGURATION_PAGE,
- new InstallConfigurationPage(this, "Snapshot"));
- addPage(INSTALL_SITE_PAGE, new InstallableSitePage(this, "Install Location"));
- addPage(CDROM_PAGE, new MyComputerPage(this, "MyComputer"));
- addPage(SEARCH_PAGE, new SearchPage(this, "Search"));
- addPage(DISCOVERY_PAGE, new DiscoveryFolderPage(this, "Discovery Sites"));
- addPage(UNKNOWN_PAGE, new UnknownObjectPage(this, "Unknown Object"));
- }
-
- public void showURL(String url) {
- boolean useEmbedded = false;
- if (SWT.getPlatform().equals("win32")) {
- useEmbedded = MainPreferencePage.getUseEmbeddedBrowser();
- }
- if (useEmbedded) {
- IWorkbenchPage page = UpdateUIPlugin.getActivePage();
- try {
- IViewPart part = page.showView(UpdatePerspective.ID_BROWSER);
- ((IEmbeddedWebBrowser) part).openTo(url);
- } catch (PartInitException e) {
- UpdateUIPlugin.logException(e);
- }
- } else {
- Program.launch(url);
- }
- }
-
- public void showText(String text) {
- try {
- File file = File.createTempFile("FeatureLicense", ".txt");
- OutputStream stream = new FileOutputStream(file);
- PrintWriter writer = new PrintWriter(stream);
- writer.println(text);
- writer.flush();
- stream.close();
- if (tmpFiles == null)
- tmpFiles = new Vector();
- tmpFiles.add(file.getAbsolutePath());
- showURL("file:///" + file.getAbsolutePath());
- } catch (IOException e) {
- }
- }
-
- public void dispose() {
- if (tmpFiles != null) {
- for (int i = 0; i < tmpFiles.size(); i++) {
- String fileName = tmpFiles.get(i).toString();
- File file = new File(fileName);
- file.delete();
- }
- tmpFiles = null;
- }
- super.dispose();
- }
-
- public void createPartControl(Composite parent) {
- super.createPartControl(parent);
- history.add(HOME_PAGE, null);
- makeActions();
- fillActionBars();
- }
-
- public void showPageWithInput(String pageId, Object input) {
- if (pageId.equals(HOME_PAGE) == false) {
- if (!(input instanceof UIModelObject || input instanceof ModelObject))
- return;
- }
- showPage(pageId, input);
- if (input != null)
- history.add(pageId, input);
- backAction.update();
- forwardAction.update();
- IWorkbenchPage page = UpdateUIPlugin.getActivePage();
- IViewPart view = page.findView(UpdatePerspective.ID_DETAILS);
- if (view != null) {
- page.bringToTop(view);
- }
- }
-
- public void selectionChanged(IWorkbenchPart part, ISelection sel) {
- if (part == this)
- return;
- Object el = null;
- if (sel instanceof IStructuredSelection) {
- IStructuredSelection ssel = (IStructuredSelection) sel;
- if (ssel.size() == 1) {
- el = ssel.getFirstElement();
- if (el instanceof IFeature || el instanceof IFeatureAdapter) {
- showPageWithInput(DETAILS_PAGE, el);
- return;
- }
- if (el instanceof SiteBookmark) {
- showPageWithInput(SITE_PAGE, el);
- return;
- }
- if (el instanceof SiteCategory) {
- showPageWithInput(CATEGORY_PAGE, el);
- return;
- }
- if (el instanceof ILocalSite) {
- showPageWithInput(CONFIG_PAGE, el);
- return;
- }
- if (el instanceof IInstallConfiguration
- || el instanceof PreservedConfiguration) {
- showPageWithInput(INSTALL_CONFIGURATION_PAGE, el);
- return;
- }
- if (el instanceof IConfiguredSiteAdapter) {
- showPageWithInput(INSTALL_SITE_PAGE, el);
- return;
- }
- if (el instanceof MyComputer) {
- showPageWithInput(CDROM_PAGE, el);
- return;
- }
- if (el instanceof DiscoveryFolder) {
- showPageWithInput(DISCOVERY_PAGE, el);
- return;
- }
- if (el instanceof SearchObject) {
- showPageWithInput(SEARCH_PAGE, el);
- return;
- }
- if (el instanceof SearchResultSite) {
- showPageWithInput(SITE_PAGE, el);
- return;
- }
- //fallback - show empty page
- showPageWithInput(UNKNOWN_PAGE, el);
- } else
- showPageWithInput(UNKNOWN_PAGE, null);
- }
- }
-
- private void makeActions() {
- homeAction = new Action() {
- public void run() {
- performHome();
- }
- };
- homeAction.setText(UpdateUIPlugin.getResourceString(KEY_HOME));
- homeAction.setToolTipText(UpdateUIPlugin.getResourceString(KEY_T_HOME));
- homeAction.setImageDescriptor(UpdateUIPluginImages.DESC_HOME_NAV);
- homeAction.setHoverImageDescriptor(UpdateUIPluginImages.DESC_HOME_NAV_H);
- homeAction.setDisabledImageDescriptor(UpdateUIPluginImages.DESC_HOME_NAV_D);
-
- backAction = new UpdateAction() {
- public void run() {
- performBackward();
- }
- public void update() {
- setEnabled(canPerformBackward());
- }
- };
- backAction.setText(UpdateUIPlugin.getResourceString(KEY_BACKWARD));
- backAction.setToolTipText(UpdateUIPlugin.getResourceString(KEY_T_BACKWARD));
- backAction.setImageDescriptor(UpdateUIPluginImages.DESC_BACKWARD_NAV);
- backAction.setHoverImageDescriptor(UpdateUIPluginImages.DESC_BACKWARD_NAV_H);
- backAction.setDisabledImageDescriptor(UpdateUIPluginImages.DESC_BACKWARD_NAV_D);
- backAction.setEnabled(false);
-
- forwardAction = new UpdateAction() {
- public void run() {
- performForward();
- }
- public void update() {
- setEnabled(canPerformForward());
- }
- };
- forwardAction.setText(UpdateUIPlugin.getResourceString(KEY_FORWARD));
- forwardAction.setToolTipText(UpdateUIPlugin.getResourceString(KEY_T_FORWARD));
- forwardAction.setImageDescriptor(UpdateUIPluginImages.DESC_FORWARD_NAV);
- forwardAction.setHoverImageDescriptor(UpdateUIPluginImages.DESC_FORWARD_NAV_H);
- forwardAction.setDisabledImageDescriptor(
- UpdateUIPluginImages.DESC_FORWARD_NAV_D);
- forwardAction.setEnabled(false);
- }
-
- private void fillActionBars() {
- IActionBars bars = getViewSite().getActionBars();
- IToolBarManager mng = bars.getToolBarManager();
- mng.add(homeAction);
- mng.add(backAction);
- mng.add(forwardAction);
- }
-
- public void contextMenuAboutToShow(IMenuManager menu) {
- menu.add(backAction);
- menu.add(forwardAction);
- menu.add(homeAction);
- }
-
- private void performHome() {
- showPageWithInput(HOME_PAGE, null);
- }
-
- private boolean canPerformBackward() {
- return history.hasPrevious();
- }
-
- private void performBackward() {
- DetailsHistoryItem item = history.getPrevious();
- if (item != null) {
- inHistory = true;
- showPage(item.getPageId(), item.getInput());
- //inHistory = false;
- if (item.getPageId() != BROWSER_PAGE) {
- backAction.update();
- forwardAction.update();
- }
- }
- }
-
- private void performForward() {
- DetailsHistoryItem item = history.getNext();
- if (item != null) {
- inHistory = true;
- showPage(item.getPageId(), item.getInput());
- //inHistory = false;
- if (item.getPageId() != BROWSER_PAGE) {
- backAction.update();
- forwardAction.update();
- }
- }
- }
-
- private boolean canPerformForward() {
- return history.hasNext();
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/IEmbeddedWebBrowser.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/IEmbeddedWebBrowser.java
deleted file mode 100644
index 2224824..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/IEmbeddedWebBrowser.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.eclipse.update.internal.ui.views;
-
-public interface IEmbeddedWebBrowser {
- public void openTo(String url);
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/MultiPageView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/MultiPageView.java
deleted file mode 100644
index 24a1eed..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/MultiPageView.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java
deleted file mode 100644
index 8da0a55..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/views/UpdatesView.java
+++ /dev/null
@@ -1,752 +0,0 @@
-package org.eclipse.update.internal.ui.views;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.util.*;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.action.*;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.*;
-import org.eclipse.ui.dialogs.PropertyDialogAction;
-import org.eclipse.ui.texteditor.IUpdate;
-import org.eclipse.update.configuration.IVolume;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.parts.*;
-import org.eclipse.update.internal.ui.search.*;
-import org.eclipse.update.internal.ui.security.AuthorizationDatabase;
-import org.eclipse.update.internal.ui.wizards.*;
-
-/**
- * Insert the type's description here.
- * @see ViewPart
- */
-public class UpdatesView
- extends BaseTreeView
- implements IUpdateModelChangedListener {
- private static final String KEY_NEW = "UpdatesView.Popup.new";
- private static final String KEY_NEW_SITE = "UpdatesView.Popup.newSite";
- private static final String KEY_NEW_FOLDER = "UpdatesView.Popup.newFolder";
- private static final String KEY_NEW_SEARCH = "UpdatesView.Popup.newSearch";
- private static final String KEY_NEW_LOCAL_SITE =
- "UpdatesView.Popup.newLocalSite";
- private static final String KEY_DELETE = "UpdatesView.Popup.delete";
- private static final String KEY_REFRESH = "UpdatesView.Popup.refresh";
- private static final String KEY_FILTER_FILES = "UpdatesView.menu.showFiles";
- private static final String KEY_FILTER_ENVIRONMENT =
- "UpdatesView.menu.filterEnvironment";
- private static final String KEY_SHOW_CATEGORIES =
- "UpdatesView.menu.showCategories";
- private static final String KEY_NEW_SEARCH_TITLE =
- "UpdatesView.newSearch.title";
- private static final String KEY_NEW_BOOKMARK_TITLE =
- "UpdatesView.newBookmark.title";
- private static final String KEY_NEW_FOLDER_TITLE =
- "UpdatesView.newFolder.title";
- private Action propertiesAction;
- private Action newAction;
- private Action newFolderAction;
- private Action newSearchAction;
- private Action newLocalAction;
- private DeleteAction deleteAction;
- private Action fileFilterAction;
- private Action filterEnvironmentAction;
- private Action showCategoriesAction;
- private Image siteImage;
- private Image featureImage;
- private Image categoryImage;
- private Image discoveryImage;
- private Image bookmarkFolderImage;
- private Image computerImage;
- private VolumeLabelProvider volumeLabelProvider;
- private Action refreshAction;
- private SearchObject updateSearchObject;
- private SelectionChangedListener selectionListener;
- private Hashtable fileImages = new Hashtable();
- private FileFilter fileFilter = new FileFilter();
- private EnvironmentFilter environmentFilter = new EnvironmentFilter();
-
- class DeleteAction extends Action implements IUpdate {
- public DeleteAction() {
- }
- public void run() {
- performDelete();
- }
- public void update() {
- boolean enabled = true;
- IStructuredSelection sel =
- (IStructuredSelection) UpdatesView.this.viewer.getSelection();
- for (Iterator iter = sel.iterator(); iter.hasNext();) {
- Object obj = iter.next();
- if (obj instanceof NamedModelObject) {
- if (!(obj instanceof DiscoveryFolder))
- continue;
- }
- enabled = false;
- break;
- }
- setEnabled(enabled);
- }
- }
-
- class FileFilter extends ViewerFilter {
- public boolean select(Viewer viewer, Object parent, Object child) {
- if (child instanceof MyComputerFile) {
- return false;
- }
- return true;
- }
- }
-
- class EnvironmentFilter extends ViewerFilter {
- public boolean select(Viewer viewer, Object parent, Object child) {
- if (child instanceof IFeatureAdapter) {
- try {
- child = ((IFeatureAdapter) child).getFeature();
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- if (child instanceof IFeature) {
- return EnvironmentUtil.isValidEnvironment((IFeature) child);
- }
- return true;
- }
- }
-
- class SelectionChangedListener implements ISelectionChangedListener {
- public void selectionChanged(SelectionChangedEvent event) {
- updateForSelection((IStructuredSelection) event.getSelection());
- }
- }
-
- class SiteProvider
- extends DefaultContentProvider
- implements ITreeContentProvider {
-
- public Object[] getChildren(Object parent) {
- if (parent instanceof UpdateModel) {
- return getBookmarks((UpdateModel) parent);
- }
- if (parent instanceof BookmarkFolder) {
- return ((BookmarkFolder) parent).getChildren(parent);
- }
- if (parent instanceof SiteBookmark) {
- return getSiteCatalog((SiteBookmark) parent);
- }
- if (parent instanceof SearchObject) {
- return ((SearchObject) parent).getChildren(null);
- }
- if (parent instanceof SearchResultSite) {
- return ((SearchResultSite) parent).getChildren(null);
- }
- if (parent instanceof MyComputer) {
- return ((MyComputer) parent).getChildren(parent);
- }
- if (parent instanceof MyComputerDirectory) {
- return ((MyComputerDirectory) parent).getChildren(parent);
- }
- if (parent instanceof SiteCategory) {
- final SiteCategory category = (SiteCategory) parent;
- BusyIndicator
- .showWhile(viewer.getTree().getDisplay(), new Runnable() {
- public void run() {
- try {
- category.touchFeatures();
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- });
- return category.getChildren();
- }
- if (parent instanceof IFeatureAdapter) {
- return ((IFeatureAdapter) parent).getIncludedFeatures();
- }
- return new Object[0];
- }
-
- public Object getParent(Object child) {
- return null;
- }
-
- public boolean hasChildren(Object parent) {
- if (parent instanceof SiteBookmark)
- return true;
- if (parent instanceof MyComputer) {
- return true;
- }
- if (parent instanceof DiscoveryFolder) {
- return true;
- }
- if (parent instanceof BookmarkFolder) {
- return ((BookmarkFolder) parent).hasChildren();
- }
- if (parent instanceof SearchObject) {
- return ((SearchObject) parent).hasChildren();
- }
- if (parent instanceof MyComputerDirectory) {
- return ((MyComputerDirectory) parent).hasChildren(parent);
- }
- if (parent instanceof SiteCategory) {
- return ((SiteCategory) parent).getChildCount() > 0;
- }
- if (parent instanceof SearchResultSite) {
- return ((SearchResultSite) parent).getChildCount() > 0;
- }
- if (parent instanceof IFeatureAdapter) {
- return ((IFeatureAdapter) parent).hasIncludedFeatures();
- }
- return false;
- }
-
- public Object[] getElements(Object obj) {
- return getChildren(obj);
- }
- }
-
- class SiteLabelProvider extends LabelProvider {
- public String getText(Object obj) {
- if (obj instanceof IFeature) {
- IFeature feature = (IFeature) obj;
- return feature.getLabel();
- }
- if (obj instanceof IFeatureAdapter) {
- try {
- IFeature feature = ((IFeatureAdapter) obj).getFeature();
- VersionedIdentifier versionedIdentifier =
- (feature != null)
- ? feature.getVersionedIdentifier()
- : null;
- String version = "";
- if (versionedIdentifier != null)
- version = versionedIdentifier.getVersion().toString();
- String label = (feature != null) ? feature.getLabel() : "";
- return label + " " + version;
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- if (obj instanceof MyComputerDirectory) {
- MyComputerDirectory dir = (MyComputerDirectory) obj;
- IVolume volume = dir.getVolume();
- if (volume != null)
- return volumeLabelProvider.getText(volume);
- else
- return dir.getLabel(dir);
- }
- return super.getText(obj);
- }
- public Image getImage(Object obj) {
- if (obj instanceof SiteBookmark
- || obj instanceof SearchResultSite) {
- return siteImage;
- }
- if (obj instanceof MyComputer) {
- return computerImage;
- }
- if (obj instanceof DiscoveryFolder) {
- return discoveryImage;
- }
- if (obj instanceof MyComputerDirectory) {
- IVolume volume = ((MyComputerDirectory) obj).getVolume();
- if (volume != null) {
- Image image = volumeLabelProvider.getImage(volume);
- if (image != null)
- return image;
- }
- return ((MyComputerDirectory) obj).getImage(obj);
- }
- if (obj instanceof MyComputerFile) {
- ImageDescriptor desc =
- ((MyComputerFile) obj).getImageDescriptor(obj);
- Image image = (Image) fileImages.get(desc);
- if (image == null) {
- image = desc.createImage();
- fileImages.put(desc, image);
- }
- return image;
- }
- if (obj instanceof SiteCategory) {
- return categoryImage;
- }
- if (obj instanceof BookmarkFolder) {
- return bookmarkFolderImage;
- }
- if (obj instanceof SearchObject) {
- return getSearchObjectImage((SearchObject) obj);
- }
- if (obj instanceof IFeature || obj instanceof IFeatureAdapter) {
- return featureImage;
- }
- return super.getImage(obj);
- }
- private Image getSearchObjectImage(SearchObject obj) {
- String categoryId = obj.getCategoryId();
- SearchCategoryDescriptor desc =
- SearchCategoryRegistryReader.getDefault().getDescriptor(
- categoryId);
- if (desc != null) {
- return desc.getImage();
- }
- return null;
- }
- }
-
- /**
- * The constructor.
- */
- public UpdatesView() {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- model.addUpdateModelChangedListener(this);
- selectionListener = new SelectionChangedListener();
- updateSearchObject = new DefaultUpdatesSearchObject();
- initializeImages();
- }
-
- public void dispose() {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- model.removeUpdateModelChangedListener(this);
- disposeImages();
- super.dispose();
- }
-
- public void initProviders() {
- viewer.setContentProvider(new SiteProvider());
- viewer.setLabelProvider(new SiteLabelProvider());
- viewer.setInput(UpdateUIPlugin.getDefault().getUpdateModel());
- }
-
- public void makeActions() {
- super.makeActions();
- propertiesAction =
- new PropertyDialogAction(
- UpdateUIPlugin.getActiveWorkbenchShell(),
- viewer);
- newAction = new Action() {
- public void run() {
- performNewBookmark();
- }
- };
- newAction.setText(UpdateUIPlugin.getResourceString(KEY_NEW_SITE));
-
- newFolderAction = new Action() {
- public void run() {
- performNewBookmarkFolder();
- }
- };
- newFolderAction.setText(
- UpdateUIPlugin.getResourceString(KEY_NEW_FOLDER));
-
- newSearchAction = new Action() {
- public void run() {
- performNewSearch();
- }
- };
- newSearchAction.setText(
- UpdateUIPlugin.getResourceString(KEY_NEW_SEARCH));
-
- newLocalAction = new Action() {
- public void run() {
- performNewLocal();
- }
- };
- newLocalAction.setText(
- UpdateUIPlugin.getResourceString(KEY_NEW_LOCAL_SITE));
-
- deleteAction = new DeleteAction();
- deleteAction.setText(UpdateUIPlugin.getResourceString(KEY_DELETE));
-
- refreshAction = new Action() {
- public void run() {
- performRefresh();
- }
- };
- refreshAction.setText(UpdateUIPlugin.getResourceString(KEY_REFRESH));
-
- fileFilterAction = new Action() {
- public void run() {
- if (fileFilterAction.isChecked()) {
- viewer.removeFilter(fileFilter);
- } else
- viewer.addFilter(fileFilter);
- }
- };
- fileFilterAction.setText(
- UpdateUIPlugin.getResourceString(KEY_FILTER_FILES));
- fileFilterAction.setChecked(false);
-
- viewer.addFilter(fileFilter);
-
- filterEnvironmentAction = new Action() {
- public void run() {
- if (filterEnvironmentAction.isChecked()) {
- viewer.addFilter(environmentFilter);
- }
- else
- viewer.removeFilter(environmentFilter);
- }
- };
-
- filterEnvironmentAction.setText(
- UpdateUIPlugin.getResourceString(KEY_FILTER_ENVIRONMENT));
- filterEnvironmentAction.setChecked(true);
-
- viewer.addFilter(environmentFilter);
-
- showCategoriesAction = new Action() {
- public void run() {
- showCategories(!showCategoriesAction.isChecked());
- }
- };
- showCategoriesAction.setText(
- UpdateUIPlugin.getResourceString(KEY_SHOW_CATEGORIES));
- showCategoriesAction.setChecked(true);
-
- viewer.addSelectionChangedListener(selectionListener);
- }
-
- private void updateForSelection(IStructuredSelection selection) {
- refreshAction.setEnabled(selection.size() == 1);
- }
-
- public void fillActionBars(IActionBars bars) {
- IMenuManager menuManager = bars.getMenuManager();
- menuManager.add(fileFilterAction);
- menuManager.add(new Separator());
- menuManager.add(showCategoriesAction);
- menuManager.add(filterEnvironmentAction);
- bars.setGlobalActionHandler(
- IWorkbenchActionConstants.DELETE,
- deleteAction);
- }
-
- public void fillContextMenu(IMenuManager manager) {
- Object obj = getSelectedObject();
- manager.add(refreshAction);
- manager.add(new Separator());
- MenuManager newMenu =
- new MenuManager(UpdateUIPlugin.getResourceString(KEY_NEW));
- newMenu.add(newAction);
- newMenu.add(newFolderAction);
- newMenu.add(newSearchAction);
- manager.add(newMenu);
- if (obj instanceof SiteBookmark) {
- SiteBookmark site = (SiteBookmark) obj;
- if (site.getType() == SiteBookmark.LOCAL)
- manager.add(newLocalAction);
- }
- if (canDelete(obj))
- manager.add(deleteAction);
- manager.add(new Separator());
- super.fillContextMenu(manager);
- if (obj instanceof SiteBookmark)
- manager.add(propertiesAction);
- }
-
- private boolean canDelete(Object obj) {
- if (obj instanceof SiteBookmark) {
- SiteBookmark site = (SiteBookmark) obj;
- return (site.getType() != SiteBookmark.LOCAL);
- }
- if (obj instanceof BookmarkFolder
- && !(obj instanceof DiscoveryFolder)) {
- return true;
- }
- if (obj instanceof SearchObject
- && !(obj instanceof DefaultUpdatesSearchObject)) {
- return true;
- }
- return false;
- }
-
- private Object getSelectedObject() {
- IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
- return sel.getFirstElement();
- }
-
- private void performNewBookmark() {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- Shell shell = UpdateUIPlugin.getActiveWorkbenchShell();
- NewSiteBookmarkWizardPage page =
- new NewSiteBookmarkWizardPage(getSelectedFolder());
- NewWizard wizard =
- new NewWizard(page, UpdateUIPluginImages.DESC_NEW_BOOKMARK);
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- dialog.getShell().setText(
- UpdateUIPlugin.getResourceString(KEY_NEW_BOOKMARK_TITLE));
- //dialog.getShell().setSize(400, 400);
- dialog.open();
- }
-
- private BookmarkFolder getSelectedFolder() {
- Object sel = getSelectedObject();
- if (sel instanceof BookmarkFolder
- && !(sel instanceof DiscoveryFolder)) {
- BookmarkFolder folder = (BookmarkFolder) sel;
- return folder;
- }
- return null;
- }
-
- private void performNewBookmarkFolder() {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- Shell shell = UpdateUIPlugin.getActiveWorkbenchShell();
- NewFolderWizardPage page = new NewFolderWizardPage(getSelectedFolder());
- NewWizard wizard =
- new NewWizard(page, UpdateUIPluginImages.DESC_NEW_FOLDER);
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- dialog.getShell().setText(
- UpdateUIPlugin.getResourceString(KEY_NEW_FOLDER_TITLE));
- //dialog.getShell().setSize(400, 350);
- dialog.open();
- }
-
- private void performNewSearch() {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- Shell shell = UpdateUIPlugin.getActiveWorkbenchShell();
- NewSearchWizardPage page = new NewSearchWizardPage(getSelectedFolder());
- NewWizard wizard =
- new NewWizard(page, UpdateUIPluginImages.DESC_NEW_SEARCH);
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- dialog.getShell().setText(
- UpdateUIPlugin.getResourceString(KEY_NEW_SEARCH_TITLE));
- //dialog.getShell().setSize(400, 350);
- dialog.open();
- }
-
- private void performNewLocal() {
- ISelection selection = viewer.getSelection();
- if (selection instanceof IStructuredSelection) {
- IStructuredSelection ssel = (IStructuredSelection) selection;
- Object obj = ssel.getFirstElement();
- if (obj instanceof SiteBookmark) {
- SiteBookmark bookmark = (SiteBookmark) obj;
- if (bookmark.getType() == SiteBookmark.LOCAL) {
- UpdateModel model =
- UpdateUIPlugin.getDefault().getUpdateModel();
- Shell shell = UpdateUIPlugin.getActiveWorkbenchShell();
- NewSiteBookmarkWizardPage page =
- new NewSiteBookmarkWizardPage(
- getSelectedFolder(),
- bookmark);
- NewWizard wizard =
- new NewWizard(
- page,
- UpdateUIPluginImages.DESC_NEW_BOOKMARK);
- WizardDialog dialog = new WizardDialog(shell, wizard);
- dialog.create();
- dialog.getShell().setText("New Site Bookmark");
- dialog.open();
- }
- }
- }
- }
-
- private void performDelete() {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- ISelection selection = viewer.getSelection();
- if (selection instanceof IStructuredSelection) {
- IStructuredSelection ssel = (IStructuredSelection) selection;
- if (!confirmDeletion(ssel))
- return;
- for (Iterator iter = ssel.iterator(); iter.hasNext();) {
- Object obj = iter.next();
- if (obj instanceof NamedModelObject) {
- NamedModelObject child = (NamedModelObject) obj;
- BookmarkFolder folder =
- (BookmarkFolder) child.getParent(child);
- if (folder != null)
- folder.removeChildren(new NamedModelObject[] { child });
- else
- model.removeBookmark(child);
- }
- }
- }
- }
-
- private void performRefresh() {
- IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
- final Object obj = sel.getFirstElement();
-
- if (obj != null) {
- BusyIndicator
- .showWhile(viewer.getTree().getDisplay(), new Runnable() {
- public void run() {
- try {
- // reinitialize the authenticator
- AuthorizationDatabase auth =
- UpdateUIPlugin.getDefault().getDatabase();
- if (auth != null)
- auth.reset();
- if (obj instanceof SiteBookmark)
- ((SiteBookmark) obj).connect();
- viewer.refresh(obj);
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- });
- }
- }
-
- private boolean confirmDeletion(IStructuredSelection ssel) {
- String title = "Confirm Delete";
- String message;
-
- if (ssel.size() > 1) {
- message =
- "Are you sure you want to delete these "
- + ssel.size()
- + " items?";
- } else {
- Object obj = ssel.getFirstElement().toString();
- message =
- "Are you sure you want to delete \"" + obj.toString() + "\"?";
- }
- return MessageDialog.openConfirm(
- viewer.getControl().getShell(),
- title,
- message);
- }
-
- private Object[] getBookmarks(UpdateModel model) {
- NamedModelObject[] bookmarks = model.getBookmarks();
- Object[] array = new Object[3 + bookmarks.length];
- array[0] = new MyComputer();
- array[1] = new DiscoveryFolder();
- array[2] = updateSearchObject;
- for (int i = 3; i < array.length; i++) {
- array[i] = bookmarks[i - 3];
- }
- return array;
- }
- public void selectUpdateObject() {
- viewer.setSelection(new StructuredSelection(updateSearchObject), true);
- }
-
- class CatalogBag {
- Object[] catalog;
- }
-
- private Object[] getSiteCatalog(final SiteBookmark bookmark) {
- if (!bookmark.isSiteConnected()) {
- final CatalogBag bag = new CatalogBag();
- BusyIndicator
- .showWhile(viewer.getTree().getDisplay(), new Runnable() {
- public void run() {
- try {
- bookmark.connect();
- bag.catalog =
- bookmark.getCatalog(
- showCategoriesAction.isChecked());
- } catch (CoreException e) {
- // FIXME
- }
- }
- });
- if (bag.catalog != null)
- return bag.catalog;
- }
- if (bookmark.getSite() != null) {
- return bookmark.getCatalog(showCategoriesAction.isChecked());
- }
- return new Object[0];
- }
-
- private void showCategories(boolean show) {
- Object[] expanded = viewer.getExpandedElements();
- for (int i = 0; i < expanded.length; i++) {
- if (expanded[i] instanceof SiteBookmark) {
- viewer.refresh(expanded[i]);
- }
- }
- }
-
- protected void handleSelectionChanged(SelectionChangedEvent e) {
- deleteAction.update();
- }
-
- protected void deleteKeyPressed(Widget widget) {
- if (deleteAction.isEnabled())
- deleteAction.run();
- }
-
- public void objectsAdded(Object parent, Object[] children) {
- Object child = children[0];
- if (child instanceof NamedModelObject
- || child instanceof SearchResultSite
- || child instanceof IFeature
- || child instanceof IFeatureAdapter) {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- if (parent == null)
- parent = model;
- viewer.add(parent, children);
- if (parent != model)
- viewer.setExpandedState(parent, true);
- viewer.setSelection(new StructuredSelection(children), true);
- }
- }
-
- public void objectsRemoved(Object parent, Object[] children) {
- if (children[0] instanceof NamedModelObject
- || children[0] instanceof SearchResultSite) {
- viewer.remove(children);
- viewer.setSelection(new StructuredSelection());
- }
- }
-
- public void objectChanged(Object object, String property) {
- if (object instanceof SiteBookmark) {
- if (property.equals(SiteBookmark.P_NAME)) {
- viewer.update(object, null);
- }
- if (property.equals(SiteBookmark.P_URL)) {
- viewer.refresh(object);
- }
- viewer.setSelection(viewer.getSelection());
- }
- }
-
- public void setSelection(IStructuredSelection selection) {
- viewer.setSelection(selection, true);
- }
-
- private void initializeImages() {
- siteImage = UpdateUIPluginImages.DESC_SITE_OBJ.createImage();
- featureImage = UpdateUIPluginImages.DESC_FEATURE_OBJ.createImage();
- discoveryImage = UpdateUIPluginImages.DESC_PLACES_OBJ.createImage();
- bookmarkFolderImage =
- UpdateUIPluginImages.DESC_BFOLDER_OBJ.createImage();
- categoryImage = UpdateUIPluginImages.DESC_CATEGORY_OBJ.createImage();
- computerImage = UpdateUIPluginImages.DESC_COMPUTER_OBJ.createImage();
- volumeLabelProvider = new VolumeLabelProvider();
- }
- private void disposeImages() {
- siteImage.dispose();
- featureImage.dispose();
- discoveryImage.dispose();
- bookmarkFolderImage.dispose();
- categoryImage.dispose();
- computerImage.dispose();
- for (Enumeration enum = fileImages.elements();
- enum.hasMoreElements();
- ) {
- ((Image) enum.nextElement()).dispose();
- }
- volumeLabelProvider.dispose();
- }
-
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/BannerPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/BannerPage.java
deleted file mode 100644
index 09bfac7..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/BannerPage.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.layout.*;
-import java.util.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.internal.ui.*;
-import java.net.URL;
-import org.eclipse.swt.graphics.Image;
-
-public abstract class BannerPage extends WizardPage {
- private Image bannerImage;
- public BannerPage(String name) {
- super(name);
- }
- /**
- * @see DialogPage#createControl(Composite)
- */
- public void createControl(Composite parent) {
- Composite client = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.horizontalSpacing = 10;
- client.setLayout(layout);
- Composite bannerParent = new Composite(client, SWT.NULL/*SWT.BORDER */);
- bannerParent.setLayoutData(new GridData(GridData.FILL_VERTICAL));
- layout = new GridLayout();
- layout.marginWidth = layout.marginHeight = 0;
- bannerParent.setLayout(layout);
-
- Label label = new Label(bannerParent, SWT.NULL);
- label.setLayoutData(new GridData(GridData.FILL_BOTH));
- label.setImage(getBannerImage());
-
- Control contents = createContents(client);
- contents.setLayoutData(new GridData(GridData.FILL_BOTH));
- setControl(client);
- }
-
- protected URL getBannerImageURL() {
- return null;
- }
- private Image getBannerImage() {
- URL imageURL = getBannerImageURL();
- Image image=null;
- if (imageURL==null) {
- // use default
- bannerImage = UpdateUIPluginImages.DESC_INSTALL_BANNER.createImage();
- image = bannerImage;
- }
- return image;
- }
-
- public void dispose() {
- if (bannerImage!=null) {
- bannerImage.dispose();
- }
- super.dispose();
- }
-
- protected abstract Control createContents(Composite parent);
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/BaseNewWizardPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/BaseNewWizardPage.java
deleted file mode 100644
index dffdfdb..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/BaseNewWizardPage.java
+++ /dev/null
@@ -1,192 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.ui.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.parts.DefaultContentProvider;
-
-/**
- * @author dejan
- *
- * To change this generated comment edit the template variable "typecomment":
- * Window>Preferences>Java>Templates.
- */
-public abstract class BaseNewWizardPage extends WizardPage {
- private static final String KEY_NAME = "BaseNewWizardPage.name";
- private static final String KEY_CREATE_IN = "BaseNewWizardPage.createIn";
- private static final String KEY_EXISTING = "BaseNewWizardPage.existing";
- private static final String KEY_INVALID = "BaseNewWizardPage.invalid";
- private BookmarkFolder folder;
- private String name;
- private TreeViewer tree;
- private Text nameText;
- private Text containerText;
- private Image folderImage;
-
- class ContainerContentProvider
- extends DefaultContentProvider
- implements ITreeContentProvider {
-
- public Object[] getChildren(Object parent) {
- if (parent instanceof UpdateModel) {
- return ((UpdateModel) parent).getBookmarks();
- }
- if (parent instanceof BookmarkFolder) {
- return ((BookmarkFolder) parent).getChildren(parent);
- }
- return new Object[0];
- }
-
- public Object getParent(Object child) {
- if (child instanceof NamedModelObject)
- return ((NamedModelObject) child).getParent(null);
- return null;
- }
-
- public boolean hasChildren(Object parent) {
- if (parent instanceof BookmarkFolder) {
- return ((BookmarkFolder) parent).hasChildren();
- }
- return false;
- }
-
- public Object[] getElements(Object obj) {
- return getChildren(obj);
- }
- }
-
- class ContainerLabelProvider extends LabelProvider {
- public Image getImage(Object obj) {
- if (obj instanceof BookmarkFolder)
- return folderImage;
- return super.getImage(obj);
- }
- }
-
- public BaseNewWizardPage(BookmarkFolder folder) {
- super("");
- this.folder = folder;
- folderImage = UpdateUIPluginImages.DESC_BFOLDER_OBJ.createImage();
- }
-
- public void dispose() {
- folderImage.dispose();
- super.dispose();
- }
-
- /**
- * @see IDialogPage#createControl(Composite)
- */
- public void createControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- container.setLayout(layout);
- Label label = new Label(container, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_NAME));
- nameText = new Text(container, SWT.SINGLE | SWT.BORDER);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- nameText.setLayoutData(gd);
- nameText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- validatePage();
- }
- });
- createClientControl(container, 2);
- label = new Label(container, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_CREATE_IN));
- containerText = new Text(container, SWT.SINGLE | SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- containerText.setLayoutData(gd);
- if (folder != null)
- containerText.setText(folder.getPath().toString());
- containerText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- validatePage();
- }
- });
- label = new Label(container, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_EXISTING));
- gd = new GridData();
- gd.horizontalSpan = 2;
- label.setLayoutData(gd);
- tree = new TreeViewer(container);
- gd = new GridData(GridData.FILL_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL);
- gd.horizontalSpan = 2;
- gd.widthHint = 250;
- gd.heightHint = 200;
- tree.getControl().setLayoutData(gd);
- tree.setContentProvider(new ContainerContentProvider());
- tree.setLabelProvider(new ContainerLabelProvider());
- tree.addFilter(new ViewerFilter() {
- public boolean select(Viewer v, Object parent, Object child) {
- return (child instanceof BookmarkFolder);
- }
- });
- tree.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent e) {
- handleSelectionChanged((IStructuredSelection) e.getSelection());
- }
- });
- tree.setInput(UpdateUIPlugin.getDefault().getUpdateModel());
- if (folder != null)
- tree.setSelection(new StructuredSelection(folder), true);
- setControl(container);
- }
-
- protected abstract void createClientControl(Composite parent, int span);
-
- protected void validatePage() {
- String message = null;
- boolean complete = true;
- if (containerText.getText().length() > 0) {
- folder = getFolderFromPath(containerText.getText());
- if (folder == null) {
- message = UpdateUIPlugin.getResourceString(KEY_INVALID);
- }
- } else
- folder = null;
- if (nameText.getText().length() == 0) {
- complete = false;
- }
- setErrorMessage(message);
- setPageComplete(message == null && complete);
- }
- private BookmarkFolder getFolderFromPath(String path) {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- return model.getFolder(new Path(path));
- }
- private void handleSelectionChanged(IStructuredSelection selection) {
- folder = (BookmarkFolder) selection.getFirstElement();
- if (folder != null)
- containerText.setText(folder.getPath().toString());
- else
- containerText.setText("");
- }
- public BookmarkFolder getFolder() {
- return folder;
- }
- public String getName() {
- return nameText.getText();
- }
- public abstract boolean finish();
-
- protected void addToModel(NamedModelObject object) {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- BookmarkFolder parentFolder = getFolder();
- if (parentFolder != null)
- parentFolder.addChild(object);
- else {
- model.addBookmark(object);
- }
- model.saveBookmarks();
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallDeltaWizard.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallDeltaWizard.java
deleted file mode 100644
index 65efc0c..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallDeltaWizard.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.*;
-import org.eclipse.swt.custom.BusyIndicator;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.parts.SWTUtil;
-
-public class InstallDeltaWizard
- extends Wizard
- implements IInstallDeltaHandler {
- private static final String KEY_WTITLE = "InstallDeltaWizard.wtitle";
- private static final String KEY_PROCESSING =
- "InstallDeltaWizard.processing";
- private ISessionDelta[] deltas;
- private InstallDeltaWizardPage page;
-
- /**
- * Constructor for InstallDeltaWizard.
- */
- public InstallDeltaWizard() {
- setNeedsProgressMonitor(true);
- setWindowTitle(UpdateUIPlugin.getResourceString(KEY_WTITLE));
- setDefaultPageImageDescriptor(UpdateUIPluginImages.DESC_UPDATE_WIZ);
- }
-
- public void addPages() {
- page = new InstallDeltaWizardPage(deltas);
- addPage(page);
- }
-
- /**
- * @see IWizard#performFinish()
- */
- public boolean performFinish() {
- final ISessionDelta[] selectedDeltas = page.getSelectedDeltas();
- IRunnableWithProgress op = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor)
- throws InvocationTargetException {
- try {
- doFinish(selectedDeltas, monitor);
- } catch (CoreException e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- };
- try {
- getContainer().run(true, true, op);
- } catch (InvocationTargetException e) {
- UpdateUIPlugin.logException(e);
- return false;
- } catch (InterruptedException e) {
- return false;
- }
- return true;
- }
-
- private void doFinish(
- ISessionDelta[] selectedDeltas,
- IProgressMonitor monitor)
- throws CoreException {
- monitor.beginTask(
- UpdateUIPlugin.getResourceString(KEY_PROCESSING),
- selectedDeltas.length);
- for (int i = 0; i < selectedDeltas.length; i++) {
- ISessionDelta delta = selectedDeltas[i];
- delta.process(monitor);
- monitor.worked(1);
- if (monitor.isCanceled()) return;
- }
- }
-
- /**
- * @see IInstallDeltaHandler#init(ISessionDelta[])
- */
- public void init(ISessionDelta[] deltas) {
- this.deltas = deltas;
- }
-
- /**
- * @see IInstallDeltaHandler#open()
- */
- public void open() {
- BusyIndicator.showWhile(SWTUtil.getStandardDisplay(), new Runnable() {
- public void run() {
- WizardDialog dialog =
- new WizardDialog(
- UpdateUIPlugin.getActiveWorkbenchShell(),
- InstallDeltaWizard.this);
- dialog.create();
- dialog.getShell().setSize(500, 500);
- dialog.open();
- }
- });
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallDeltaWizardPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallDeltaWizardPage.java
deleted file mode 100644
index 55f0d5a..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallDeltaWizardPage.java
+++ /dev/null
@@ -1,201 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-
-import java.util.*;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.configuration.ISessionDelta;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.update.internal.ui.model.MissingFeature;
-import org.eclipse.update.internal.ui.parts.DefaultContentProvider;
-
-/**
- * @author dejan
- *
- * To change this generated comment edit the template variable "typecomment":
- * Window>Preferences>Java>Templates.
- */
-public class InstallDeltaWizardPage extends WizardPage {
- private ISessionDelta[] deltas;
- private static final String KEY_TITLE = "InstallDeltaWizard.title";
- private static final String KEY_DESC = "InstallDeltaWizard.desc";
- private static final String KEY_LABEL = "InstallDeltaWizard.label";
- private CheckboxTreeViewer deltaViewer;
- private Image deltaImage;
- private Image featureImage;
- private Hashtable features;
-
- class DeltaFeature {
- IFeature feature;
- ISessionDelta delta;
- public DeltaFeature(ISessionDelta delta, IFeature feature) {
- this.feature = feature;
- this.delta = delta;
- }
- public String toString() {
- return feature.getLabel()
- + " ("
- + feature.getVersionedIdentifier().getVersion().toString()
- + ")";
- }
- }
-
- class DeltaContentProvider
- extends DefaultContentProvider
- implements ITreeContentProvider {
- public boolean hasChildren(Object parent) {
- if (parent instanceof ISessionDelta)
- return true;
- return false;
- }
- public Object[] getChildren(Object parent) {
- if (parent instanceof ISessionDelta) {
- return (Object[]) features.get(parent);
- }
- return new Object[0];
- }
- public Object getParent(Object child) {
- if (child instanceof DeltaFeature) {
- return ((DeltaFeature) child).delta;
- }
- return null;
- }
- public Object[] getElements(Object input) {
- return deltas;
- }
- }
-
- class DeltaLabelProvider extends LabelProvider {
- public String getText(Object obj) {
- if (obj instanceof ISessionDelta) {
- return ((ISessionDelta) obj).getDate().toString();
- }
- return super.getText(obj);
- }
- public Image getImage(Object obj) {
- if (obj instanceof ISessionDelta)
- return deltaImage;
- if (obj instanceof DeltaFeature)
- return featureImage;
- return super.getImage(obj);
- }
- }
-
- /**
- * Constructor for InstallDeltaWizardPage.
- * @param pageName
- */
- public InstallDeltaWizardPage(ISessionDelta[] deltas) {
- super("installDeltaPage");
- this.deltas = deltas;
- setTitle(UpdateUIPlugin.getResourceString(KEY_TITLE));
- setDescription(UpdateUIPlugin.getResourceString(KEY_DESC));
- deltaImage = UpdateUIPluginImages.DESC_UPDATES_OBJ.createImage();
- featureImage = UpdateUIPluginImages.DESC_FEATURE_OBJ.createImage();
- }
-
- public void dispose() {
- deltaImage.dispose();
- featureImage.dispose();
- super.dispose();
- }
-
- private void initializeFeatures() {
- features = new Hashtable();
- for (int i = 0; i < deltas.length; i++) {
- ISessionDelta delta = deltas[i];
- IFeatureReference[] references = delta.getFeatureReferences();
- Object[] dfeatures = new Object[references.length];
- for (int j = 0; j < references.length; j++) {
- IFeatureReference reference = references[j];
- DeltaFeature dfeature = null;
- try {
- IFeature feature = reference.getFeature();
- dfeature = new DeltaFeature(delta, feature);
- } catch (CoreException e) {
- IFeature feature =
- new MissingFeature(
- reference.getSite(),
- reference.getURL());
- dfeature = new DeltaFeature(delta, feature);
- }
- dfeatures[j] = dfeature;
- }
- features.put(delta, dfeatures);
- }
- }
-
- /**
- * @see IDialogPage#createControl(Composite)
- */
- public void createControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- container.setLayout(layout);
- Label label = new Label(container, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_LABEL));
- deltaViewer = new CheckboxTreeViewer(container, SWT.BORDER);
- deltaViewer.setContentProvider(new DeltaContentProvider());
- deltaViewer.setLabelProvider(new DeltaLabelProvider());
- deltaViewer.addCheckStateListener(new ICheckStateListener() {
- public void checkStateChanged(CheckStateChangedEvent event) {
- handleCheckStateChanged(event.getElement(), event.getChecked());
- }
- });
- GridData gd = new GridData(GridData.FILL_BOTH);
- deltaViewer.getControl().setLayoutData(gd);
- initializeFeatures();
- deltaViewer.setInput(this);
- setFeaturesGray();
- dialogChanged();
- setControl(container);
- }
-
- private void setFeaturesGray() {
- if (features == null)
- return;
- ArrayList grayed = new ArrayList();
- for (Enumeration enum = features.elements(); enum.hasMoreElements();) {
- Object[] dfeatures = (Object[]) enum.nextElement();
- for (int i = 0; i < dfeatures.length; i++) {
- grayed.add(dfeatures[i]);
- }
- }
- deltaViewer.setGrayedElements(grayed.toArray());
- }
-
- private void handleCheckStateChanged(Object obj, boolean checked) {
- if (obj instanceof DeltaFeature) {
- // do not allow it
- deltaViewer.setChecked(obj, !checked);
- }
- if (obj instanceof ISessionDelta) {
- Object [] dfeatures = (Object[])features.get(obj);
- for (int i=0; i<dfeatures.length; i++) {
- deltaViewer.setChecked(dfeatures[i], checked);
- }
- dialogChanged();
- }
- }
- private void dialogChanged() {
- ISessionDelta[] deltas = getSelectedDeltas();
- setPageComplete(deltas.length > 0);
- }
- public ISessionDelta[] getSelectedDeltas() {
- Object[] checked = deltaViewer.getCheckedElements();
- ArrayList selected = new ArrayList();
- for (int i = 0; i < checked.length; i++) {
- Object obj = checked[i];
- if (obj instanceof ISessionDelta)
- selected.add(obj);
- }
- return (ISessionDelta[]) selected.toArray(
- new ISessionDelta[selected.size()]);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizard.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizard.java
deleted file mode 100644
index b0a8fb5..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizard.java
+++ /dev/null
@@ -1,209 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import java.lang.reflect.InvocationTargetException;
-import java.text.DateFormat;
-
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.UpdateUIPluginImages;
-import org.eclipse.update.internal.ui.model.PendingChange;
-import org.eclipse.update.internal.ui.model.UpdateModel;
-import org.eclipse.update.internal.ui.security.JarVerificationService;
-
-public class InstallWizard extends Wizard {
- private static final String KEY_UNABLE = "InstallWizard.error.unable";
- private static final String KEY_OLD = "InstallWizard.error.old";
- private ReviewPage reviewPage;
- private TargetPage targetPage;
- private PendingChange job;
- private boolean successfulInstall = false;
- private IInstallConfiguration config;
-
- public InstallWizard(PendingChange job) {
- setDialogSettings(UpdateUIPlugin.getDefault().getDialogSettings());
- setDefaultPageImageDescriptor(UpdateUIPluginImages.DESC_INSTALL_WIZ);
- setForcePreviousAndNextButtons(true);
- setNeedsProgressMonitor(true);
- this.job = job;
- }
-
- public boolean isSuccessfulInstall() {
- return successfulInstall;
- }
-
- private boolean hasLicense() {
- IFeature feature = job.getFeature();
- IURLEntry info = feature.getLicense();
- if (info == null)
- return false;
- return info.getAnnotation() != null && info.getAnnotation().length() > 0;
- }
-
- /**
- * @see Wizard#performFinish()
- */
- public boolean performFinish() {
- final IConfiguredSite targetSite =
- (targetPage == null) ? null : targetPage.getTargetSite();
- IRunnableWithProgress operation = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- try {
- successfulInstall = false;
- makeConfigurationCurrent();
- execute(targetSite, monitor);
- saveLocalSite();
- successfulInstall = true;
- } catch (CoreException e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- };
- try {
- getContainer().run(false, true, operation);
- } catch (InvocationTargetException e) {
- UpdateUIPlugin.logException(e);
- return false;
- } catch (InterruptedException e) {
- return false;
- }
- return true;
- }
-
- public void addPages() {
- reviewPage = new ReviewPage(job);
- addPage(reviewPage);
-
- config = createInstallConfiguration();
-
- if (job.getJobType() == PendingChange.INSTALL) {
- if (hasLicense()) {
- addPage(new LicensePage(job));
- }
- targetPage = new TargetPage(job.getFeature(), config);
- addPage(targetPage);
- }
- }
-
- private IInstallConfiguration createInstallConfiguration() {
- try {
- ILocalSite localSite = SiteManager.getLocalSite();
- IInstallConfiguration config = localSite.cloneCurrentConfiguration();
- config.setLabel(Utilities.format(config.getCreationDate()));
- return config;
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- return null;
- }
- }
-
- private void makeConfigurationCurrent() throws CoreException {
- ILocalSite localSite = SiteManager.getLocalSite();
- localSite.addConfiguration(config);
- }
-
- private void saveLocalSite() throws CoreException {
- ILocalSite localSite = SiteManager.getLocalSite();
- localSite.save();
- }
-
- public boolean canFinish() {
- IWizardPage page = getContainer().getCurrentPage();
- return page.getNextPage() == null && super.canFinish();
- }
-
- public IWizardPage getPreviousPage(IWizardPage page) {
- return super.getPreviousPage(page);
- }
- public IWizardPage getNextPage(IWizardPage page) {
- return super.getNextPage(page);
- }
- /*
- * When we are uninstalling, there is not targetSite
- */
- private void execute(IConfiguredSite targetSite, IProgressMonitor monitor)
- throws CoreException {
- IFeature feature = job.getFeature();
- if (job.getJobType() == PendingChange.UNINSTALL) {
- //find the config site of this feature
- IConfiguredSite site = findConfigSite(feature);
- if (site != null) {
- site.remove(feature, monitor);
- } else {
- // we should do something here
- throwError(UpdateUIPlugin.getResourceString(KEY_UNABLE));
- }
- } else if (job.getJobType() == PendingChange.INSTALL) {
- IFeature oldFeature = job.getOldFeature();
- boolean success = true;
- if (oldFeature != null) {
- success = unconfigure(oldFeature);
- }
- if (success)
- targetSite.install(feature, getVerificationListener(), monitor);
- else {
- throwError(UpdateUIPlugin.getResourceString(KEY_OLD));
- }
- } else if (job.getJobType() == PendingChange.CONFIGURE) {
- configure(job.getFeature());
- } else if (job.getJobType() == PendingChange.UNCONFIGURE) {
- unconfigure(job.getFeature());
- } else {
- // should not be here
- return;
- }
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- model.addPendingChange(job);
- }
-
- private void throwError(String message) throws CoreException {
- IStatus status =
- new Status(
- IStatus.ERROR,
- UpdateUIPlugin.getPluginId(),
- IStatus.OK,
- message,
- null);
- throw new CoreException(status);
- }
-
- private IConfiguredSite findConfigSite(IFeature feature) throws CoreException {
- ILocalSite localSite = SiteManager.getLocalSite();
- IConfiguredSite[] configSite =
- localSite.getCurrentConfiguration().getConfiguredSites();
- for (int i = 0; i < configSite.length; i++) {
- IConfiguredSite site = configSite[i];
- if (site.getSite().equals(feature.getSite())) {
- return site;
- }
- }
- return null;
- }
-
- private boolean unconfigure(IFeature feature) throws CoreException {
- IConfiguredSite site = findConfigSite(feature);
- if (site != null) {
- return site.unconfigure(feature);
- }
- return false;
- }
- private void configure(IFeature feature) throws CoreException {
- IConfiguredSite site = findConfigSite(feature);
- if (site != null) {
- site.configure(feature);
- }
- }
-
- private IVerificationListener getVerificationListener() {
- return new JarVerificationService(this.getShell());
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizardDialog.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizardDialog.java
deleted file mode 100644
index 802be34..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/InstallWizardDialog.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.jface.wizard.*;
-
-public class InstallWizardDialog extends WizardDialog {
-
- public InstallWizardDialog(Shell shell, IWizard wizard) {
- super(shell, wizard);
- }
-
- public void cancel() {
- cancelPressed();
- }
-}
-
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/LicensePage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/LicensePage.java
deleted file mode 100644
index 310381c..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/LicensePage.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.layout.*;
-import java.util.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.swt.events.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.parts.SWTUtil;
-
-public class LicensePage extends WizardPage {
-private static final String KEY_TITLE = "InstallWizard.LicensePage.title";
-private static final String KEY_DESC = "InstallWizard.LicensePage.desc";
-private static final String KEY_ACCEPT = "InstallWizard.LicensePage.accept";
-private static final String KEY_DECLINE = "InstallWizard.LicensePage.decline";
-
- private PendingChange job;
- /**
- * Constructor for ReviewPage
- */
- public LicensePage(PendingChange job) {
- super("License");
- setTitle(UpdateUIPlugin.getResourceString(KEY_TITLE));
- setDescription(UpdateUIPlugin.getResourceString(KEY_DESC));
- this.job = job;
- setPageComplete(false);
- }
-
- /**
- * @see DialogPage#createControl(Composite)
- */
- public void createControl(Composite parent) {
- Composite client = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- client.setLayout(layout);
- Text text = new Text(client, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
-
- GridData gd = new GridData(GridData.FILL_BOTH);
- text.setLayoutData(gd);
- text.setText(job.getFeature().getLicense().getAnnotation());
-
- Composite buttonContainer = new Composite(client, SWT.NULL);
- layout = new GridLayout();
- layout.numColumns = 2;
- gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
- buttonContainer.setLayout(layout);
- buttonContainer.setLayoutData(gd);
-
- final Button button1 = new Button(buttonContainer, SWT.PUSH);
- button1.setText(UpdateUIPlugin.getResourceString(KEY_ACCEPT));
- button1.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- button1.setEnabled(false);
- setPageComplete(true);
- }
- });
- SWTUtil.setButtonDimensionHint(button1);
- final Button button2 = new Button(buttonContainer, SWT.PUSH);
- button2.setText(UpdateUIPlugin.getResourceString(KEY_DECLINE));
- button2.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- InstallWizardDialog dialog = (InstallWizardDialog)getWizard().getContainer();
- dialog.cancel();
- }
- });
- SWTUtil.setButtonDimensionHint(button2);
- setControl(client);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewFolderWizardPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewFolderWizardPage.java
deleted file mode 100644
index 90ddc1a..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewFolderWizardPage.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.*;
-
-/**
- * @author dejan
- *
- * To change this generated comment edit the template variable "typecomment":
- * Window>Preferences>Java>Templates.
- */
-public class NewFolderWizardPage extends BaseNewWizardPage {
- private static final String KEY_TITLE = "NewFolderWizardPage.title";
- private static final String KEY_DESC = "NewFolderWizardPage.desc";
-
- /**
- * Constructor for NewFolderWizardPage.
- * @param folder
- */
- public NewFolderWizardPage(BookmarkFolder folder) {
- super(folder);
- setTitle(UpdateUIPlugin.getResourceString(KEY_TITLE));
- setDescription(UpdateUIPlugin.getResourceString(KEY_DESC));
- }
-
- /**
- * @see BaseNewWizardPage#createClientControl(Composite, int)
- */
- protected void createClientControl(Composite parent, int span) {
- }
-
- public boolean finish() {
- BookmarkFolder newFolder = new BookmarkFolder(getName());
- addToModel(newFolder);
- return true;
- }
-}
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewSearchWizardPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewSearchWizardPage.java
deleted file mode 100644
index 9454b5d..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewSearchWizardPage.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.update.internal.ui.search.*;
-
-/**
- * @author dejan
- *
- * To change this generated comment edit the template variable "typecomment":
- * Window>Preferences>Java>Templates.
- */
-public class NewSearchWizardPage extends BaseNewWizardPage {
- private static final String KEY_TITLE = "NewSearchWizardPage.title";
- private static final String KEY_DESC = "NewSearchWizardPage.desc";
- private static final String KEY_CATEGORY = "NewSearchWizardPage.category";
- private Combo categoryCombo;
- private SearchCategoryDescriptor[] descriptors;
- private SearchCategoryDescriptor descriptor;
- /**
- * Constructor for NewFolderWizardPage.
- * @param folder
- */
- public NewSearchWizardPage(BookmarkFolder folder) {
- super(folder);
- setTitle(UpdateUIPlugin.getResourceString(KEY_TITLE));
- setDescription(UpdateUIPlugin.getResourceString(KEY_DESC));
- }
-
- /**
- * @see BaseNewWizardPage#createClientControl(Composite, int)
- */
- protected void createClientControl(Composite parent, int span) {
- Label label = new Label(parent, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_CATEGORY));
- categoryCombo = new Combo(parent, SWT.READ_ONLY);
- descriptors =
- SearchCategoryRegistryReader.getDefault().getCategoryDescriptors();
- for (int i = 0; i < descriptors.length; i++) {
- categoryCombo.add(descriptors[i].getName());
- }
- categoryCombo.select(0);
- categoryCombo.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- descriptor = descriptors[categoryCombo.getSelectionIndex()];
- validatePage();
- }
- });
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- categoryCombo.setLayoutData(gd);
- }
-
- protected void validatePage() {
- super.validatePage();
- if (isPageComplete())
- setPageComplete(descriptor != null);
- }
-
- public boolean finish() {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- SearchObject search = new SearchObject(getName(), descriptor);
- addToModel(search);
- return true;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewSiteBookmarkWizardPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewSiteBookmarkWizardPage.java
deleted file mode 100644
index baa9d93..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewSiteBookmarkWizardPage.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-
-import java.net.*;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-import org.eclipse.update.internal.ui.model.*;
-
-/**
- * @author dejan
- *
- * To change this generated comment edit the template variable "typecomment":
- * Window>Preferences>Java>Templates.
- */
-public class NewSiteBookmarkWizardPage extends BaseNewWizardPage {
- private static final String KEY_TITLE = "NewSiteBookmarkWizardPage.title";
- private static final String KEY_DESC = "NewSiteBookmarkWizardPage.desc";
- private static final String KEY_URL = "NewSiteBookmarkWizardPage.url";
- private static final String KEY_HTTP = "NewSiteBookmarkWizardPage.http";
- private static final String KEY_INVALID = "NewSiteBookmarkWizardPage.invalid";
- private Text urlText;
- private URL url;
- private SiteBookmark localBookmark;
- /**
- * Constructor for NewFolderWizardPage.
- * @param folder
- */
- public NewSiteBookmarkWizardPage(BookmarkFolder folder) {
- super(folder);
- setTitle(UpdateUIPlugin.getResourceString(KEY_TITLE));
- setDescription(UpdateUIPlugin.getResourceString(KEY_DESC));
- }
-
- public NewSiteBookmarkWizardPage(
- BookmarkFolder folder,
- SiteBookmark localBookmark) {
- this(folder);
- this.localBookmark = localBookmark;
- }
-
- /**
- * @see BaseNewWizardPage#createClientControl(Composite, int)
- */
- protected void createClientControl(Composite parent, int span) {
- Label label = new Label(parent, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_URL));
- urlText = new Text(parent, SWT.SINGLE | SWT.BORDER);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- urlText.setLayoutData(gd);
- if (localBookmark != null) {
- url = localBookmark.getURL();
- urlText.setText(url.toString());
- urlText.setEnabled(false);
- } else
- urlText.setText(UpdateUIPlugin.getResourceString(KEY_HTTP));
- urlText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- validatePage();
- }
- });
- }
-
- protected void validatePage() {
- super.validatePage();
- if (isPageComplete() && localBookmark == null) {
- try {
- url = new URL(urlText.getText());
- super.validatePage();
- } catch (MalformedURLException e) {
- setErrorMessage(UpdateUIPlugin.getResourceString(KEY_INVALID));
- setPageComplete(false);
- }
- }
- }
-
- public boolean finish() {
- UpdateModel model = UpdateUIPlugin.getDefault().getUpdateModel();
- BookmarkFolder parentFolder = getFolder();
- SiteBookmark newBookmark = new SiteBookmark(getName(), url);
- addToModel(newBookmark);
- return true;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewWizard.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewWizard.java
deleted file mode 100644
index a80306d..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/NewWizard.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.internal.SetPagePerspectiveAction;
-import org.eclipse.update.internal.ui.model.BookmarkFolder;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-public class NewWizard extends Wizard {
- protected BaseNewWizardPage page;
-
- public NewWizard(BaseNewWizardPage page, ImageDescriptor descriptor) {
- this.page = page;
- setDefaultPageImageDescriptor(descriptor);
- }
-
- public void addPages() {
- addPage(page);
- }
-
- public boolean performFinish() {
- return page.finish();
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/ReviewPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/ReviewPage.java
deleted file mode 100644
index 3874519..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/ReviewPage.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.layout.*;
-import java.util.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.update.internal.ui.UpdateUIPlugin;
-
-public class ReviewPage extends BannerPage {
-// NL keys
-private static final String KEY_TITLE = "InstallWizard.ReviewPage.title";
-private static final String KEY_DESC = "InstallWizard.ReviewPage.desc";
-private static final String KEY_ABOUT_INSTALL = "InstallWizard.ReviewPage.about.install";
-private static final String KEY_ABOUT_UNINSTALL = "InstallWizard.ReviewPage.about.uninstall";
-private static final String KEY_ABOUT_UNCONFIGURE = "InstallWizard.ReviewPage.about.unconfigure";
-private static final String KEY_ABOUT_CONFIGURE = "InstallWizard.ReviewPage.about.configure";
-private static final String KEY_NAME = "InstallWizard.ReviewPage.name";
-private static final String KEY_PROVIDER = "InstallWizard.ReviewPage.provider";
-private static final String KEY_VERSION = "InstallWizard.ReviewPage.version";
-private static final String KEY_CORRECT_INSTALL = "InstallWizard.ReviewPage.correct.install";
-private static final String KEY_CORRECT_UNINSTALL = "InstallWizard.ReviewPage.correct.uninstall";
-
- private PendingChange job;
- /**
- * Constructor for ReviewPage
- */
- public ReviewPage(PendingChange job) {
- super("Review");
- setTitle(UpdateUIPlugin.getResourceString(KEY_TITLE));
- setDescription(UpdateUIPlugin.getResourceString(KEY_DESC));
- this.job = job;
- }
-
-
-
- /**
- * @see DialogPage#createControl(Composite)
- */
- public Control createContents(Composite parent) {
- Composite client = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = layout.marginHeight = 0;
- client.setLayout(layout);
- Label label = new Label(client, SWT.NULL);
- switch (job.getJobType()) {
- case PendingChange.UNINSTALL :
- label.setText(UpdateUIPlugin.getResourceString(KEY_ABOUT_UNINSTALL));
- break;
- case PendingChange.INSTALL :
- label.setText(UpdateUIPlugin.getResourceString(KEY_ABOUT_INSTALL));
- break;
- case PendingChange.UNCONFIGURE:
- label.setText(UpdateUIPlugin.getResourceString(KEY_ABOUT_UNCONFIGURE));
- break;
- case PendingChange.CONFIGURE:
- label.setText(UpdateUIPlugin.getResourceString(KEY_ABOUT_CONFIGURE));
- break;
- }
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = 2;
- label.setLayoutData(gd);
-
- label = new Label(client, SWT.NULL);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = 2;
- label.setLayoutData(gd);
-
- label = new Label(client, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_NAME));
-
- label = new Label(client, SWT.NULL);
- label.setFont(JFaceResources.getBannerFont());
- label.setText(job.getFeature().getLabel());
- gd = new GridData(GridData.FILL_HORIZONTAL);
- label.setLayoutData(gd);
- label = new Label(client, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_PROVIDER));
- label = new Label(client, SWT.NULL);
- label.setFont(JFaceResources.getBannerFont());
- label.setText(job.getFeature().getProvider());
- gd = new GridData(GridData.FILL_HORIZONTAL);
- label.setLayoutData(gd);
- label = new Label(client, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_VERSION));
- label = new Label(client, SWT.NULL);
- label.setFont(JFaceResources.getBannerFont());
- label.setText(job.getFeature().getVersionedIdentifier().getVersion().toString());
- gd = new GridData(GridData.FILL_HORIZONTAL);
- label.setLayoutData(gd);
-
- label = new Label(client, SWT.NULL);
- if (job.getJobType()==PendingChange.INSTALL)
- label.setText(UpdateUIPlugin.getResourceString(KEY_CORRECT_INSTALL));
- else
- label.setText(UpdateUIPlugin.getResourceString(KEY_CORRECT_UNINSTALL));
- gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = 2;
- label.setLayoutData(gd);
- return client;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/TargetPage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/TargetPage.java
deleted file mode 100644
index 1cf7e34..0000000
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/TargetPage.java
+++ /dev/null
@@ -1,279 +0,0 @@
-package org.eclipse.update.internal.ui.wizards;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.layout.*;
-import java.util.*;
-import org.eclipse.swt.SWT;
-import org.eclipse.update.internal.ui.model.*;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.jface.viewers.*;
-import org.eclipse.update.internal.ui.parts.*;
-import org.eclipse.update.core.*;
-import org.eclipse.update.configuration.*;
-import org.eclipse.update.internal.ui.*;
-import java.net.URL;
-import java.io.*;
-import org.eclipse.core.boot.IPlatformConfiguration;
-import org.eclipse.jface.dialogs.MessageDialog;
-
-public class TargetPage extends BannerPage {
- // NL keys
- private static final String KEY_TITLE = "InstallWizard.TargetPage.title";
- private static final String KEY_DESC = "InstallWizard.TargetPage.desc";
- private static final String KEY_NEW = "InstallWizard.TargetPage.new";
- private static final String KEY_REQUIRED_FREE_SPACE =
- "InstallWizard.TargetPage.requiredSpace";
- private static final String KEY_AVAILABLE_FREE_SPACE =
- "InstallWizard.TargetPage.availableSpace";
- private static final String KEY_LOCATION = "InstallWizard.TargetPage.location";
- private static final String KEY_LOCATION_MESSAGE =
- "InstallWizard.TargetPage.location.message";
- private static final String KEY_LOCATION_EMPTY =
- "InstallWizard.TargetPage.location.empty";
- private static final String KEY_LOCATION_ERROR_TITLE =
- "InstallWizard.TargetPage.location.error.title";
- private static final String KEY_LOCATION_ERROR_MESSAGE =
- "InstallWizard.TargetPage.location.error.message";
- private static final String KEY_SIZE =
- "InstallWizard.TargetPage.size";
- private static final String KEY_SIZE_UNKNOWN =
- "InstallWizard.TargetPage.unknownSize";
- private TableViewer tableViewer;
- private IInstallConfiguration config;
- private Image siteImage;
- private ConfigListener configListener;
- private Label requiredSpaceLabel;
- private Label availableSpaceLabel;
- private IFeature feature;
-
- class TableContentProvider
- extends DefaultContentProvider
- implements IStructuredContentProvider {
-
- /**
- * @see IStructuredContentProvider#getElements(Object)
- */
- public Object[] getElements(Object parent) {
- return config.getConfiguredSites();
- }
- }
-
- class TableLabelProvider extends LabelProvider implements ITableLabelProvider {
- /**
- * @see ITableLabelProvider#getColumnImage(Object, int)
- */
- public Image getColumnImage(Object obj, int col) {
- return siteImage;
- }
-
- /**
- * @see ITableLabelProvider#getColumnText(Object, int)
- */
- public String getColumnText(Object obj, int col) {
- if (obj instanceof IConfiguredSite && col == 0) {
- IConfiguredSite csite = (IConfiguredSite) obj;
- ISite site = csite.getSite();
- URL url = site.getURL();
- return url.toString();
- }
- return null;
- }
-
- }
-
- class ConfigListener implements IInstallConfigurationChangedListener {
- public void installSiteAdded(IConfiguredSite csite) {
- tableViewer.add(csite);
- tableViewer.setSelection(new StructuredSelection(csite));
- }
-
- public void installSiteRemoved(IConfiguredSite csite) {
- tableViewer.remove(csite);
- }
- }
-
- /**
- * Constructor for ReviewPage
- */
- public TargetPage(IFeature feature, IInstallConfiguration config) {
- super("Target");
- setTitle(UpdateUIPlugin.getResourceString(KEY_TITLE));
- setDescription(UpdateUIPlugin.getResourceString(KEY_DESC));
- this.config = config;
- this.feature = feature;
- siteImage = UpdateUIPluginImages.DESC_SITE_OBJ.createImage();
- configListener = new ConfigListener();
- }
-
- public void dispose() {
- if (siteImage != null) {
- siteImage.dispose();
- siteImage = null;
- }
- config.removeInstallConfigurationChangedListener(configListener);
- super.dispose();
- }
-
- /**
- * @see DialogPage#createControl(Composite)
- */
- public Control createContents(Composite parent) {
- Composite client = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = layout.marginHeight = 0;
- client.setLayout(layout);
- createTableViewer(client);
- Composite buttonContainer = new Composite(client, SWT.NULL);
- GridLayout blayout = new GridLayout();
- blayout.marginWidth = blayout.marginHeight = 0;
- buttonContainer.setLayout(blayout);
- GridData gd = new GridData(GridData.FILL_VERTICAL);
- buttonContainer.setLayoutData(gd);
- final Button button = new Button(buttonContainer, SWT.PUSH);
- button.setText(UpdateUIPlugin.getResourceString(KEY_NEW));
- button.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- addTargetLocation();
- }
- });
- gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
- button.setLayoutData(gd);
- SWTUtil.setButtonDimensionHint(button);
- Composite status = new Composite(client, SWT.NULL);
- gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- gd.horizontalSpan = 2;
- status.setLayoutData(gd);
- layout = new GridLayout();
- layout.numColumns = 2;
- status.setLayout(layout);
- Label label = new Label(status, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_REQUIRED_FREE_SPACE));
- requiredSpaceLabel = new Label(status, SWT.NULL);
- requiredSpaceLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- label = new Label(status, SWT.NULL);
- label.setText(UpdateUIPlugin.getResourceString(KEY_AVAILABLE_FREE_SPACE));
- availableSpaceLabel = new Label(status, SWT.NULL);
- availableSpaceLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- tableViewer.setInput(UpdateUIPlugin.getDefault().getUpdateModel());
- selectFirstTarget();
- return client;
- }
- private void createTableViewer(Composite parent) {
- tableViewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
- GridData gd = new GridData(GridData.FILL_BOTH);
- Table table = tableViewer.getTable();
- table.setLayoutData(gd);
- tableViewer.setContentProvider(new TableContentProvider());
- tableViewer.setLabelProvider(new TableLabelProvider());
- tableViewer.addFilter(new ViewerFilter() {
- public boolean select(Viewer v, Object parent, Object obj) {
- IConfiguredSite site = (IConfiguredSite) obj;
- return site.isUpdatable();
- }
- });
- tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- ISelection selection = event.getSelection();
- boolean empty = selection.isEmpty();
- verifyNotEmpty(empty);
- updateStatus(((IStructuredSelection) selection).getFirstElement());
- }
- });
-
- if (config!=null)
- config.addInstallConfigurationChangedListener(configListener);
- }
-
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- tableViewer.getTable().setFocus();
- }
- }
-
- private void verifyNotEmpty(boolean empty) {
- String errorMessage = null;
- if (empty)
- errorMessage = UpdateUIPlugin.getResourceString(KEY_LOCATION_EMPTY);
- setErrorMessage(errorMessage);
- setPageComplete(!empty);
- }
-
- private void selectFirstTarget() {
- IConfiguredSite[] sites = config.getConfiguredSites();
- IConfiguredSite firstSite = null;
- for (int i = 0; i < sites.length; i++) {
- IConfiguredSite csite = sites[i];
- if (csite.isUpdatable()) {
- firstSite = csite;
- break;
- }
-
- }
- if (firstSite != null) {
- tableViewer.setSelection(new StructuredSelection(firstSite));
- }
- }
-
- private void addTargetLocation() {
- DirectoryDialog dd = new DirectoryDialog(getContainer().getShell());
- dd.setMessage(UpdateUIPlugin.getResourceString(KEY_LOCATION_MESSAGE));
- String path = dd.open();
- if (path != null) {
- try {
- File file = new File(path);
- IConfiguredSite csite = config.createConfiguredSite(file);
- if (csite.isUpdatable())
- config.addConfiguredSite(csite);
- else {
- String title = UpdateUIPlugin.getResourceString(KEY_LOCATION_ERROR_TITLE);
- String message =
- UpdateUIPlugin.getFormattedMessage(KEY_LOCATION_ERROR_MESSAGE, path);
- MessageDialog.openError(getContainer().getShell(), title, message);
- }
- } catch (CoreException e) {
- UpdateUIPlugin.logException(e);
- }
- }
- }
-
- private void updateStatus(Object element) {
- if (element == null) {
- requiredSpaceLabel.setText("");
- availableSpaceLabel.setText("");
- return;
- }
- IConfiguredSite site = (IConfiguredSite) element;
- URL url = site.getSite().getURL();
- String fileName = url.getFile();
- File file = new File(fileName);
- long available = LocalSystemInfo.getFreeSpace(file);
- long required = site.getSite().getInstallSizeFor(feature);
- if (required == -1)
- requiredSpaceLabel.setText(UpdateUIPlugin.getResourceString(KEY_SIZE_UNKNOWN));
- else
- requiredSpaceLabel.setText(UpdateUIPlugin.getFormattedMessage(KEY_SIZE, ""+required));
-
- if (available == LocalSystemInfo.SIZE_UNKNOWN)
- availableSpaceLabel.setText(UpdateUIPlugin.getResourceString(KEY_SIZE_UNKNOWN));
- else
- availableSpaceLabel.setText(UpdateUIPlugin.getFormattedMessage(KEY_SIZE, ""+available));
- }
-
- public IConfiguredSite getTargetSite() {
- IStructuredSelection sel = (IStructuredSelection) tableViewer.getSelection();
- if (sel.isEmpty())
- return null;
- return (IConfiguredSite) sel.getFirstElement();
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update/.classpath b/update/org.eclipse.update/.classpath
deleted file mode 100644
index f12531d..0000000
--- a/update/org.eclipse.update/.classpath
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="var" path="JRE_LIB" rootpath="JRE_SRCROOT" sourcepath="JRE_SRC"/>
- <classpathentry kind="var"
- path="ECLIPSE_HOME/plugins/org.eclipse.core.boot/boot.jar" sourcepath="ECLIPSE_HOME/plugins/org.eclipse.core.boot/bootsrc.zip"/>
- <classpathentry kind="var"
- path="ECLIPSE_HOME/plugins/org.eclipse.core.runtime/runtime.jar" sourcepath="ECLIPSE_HOME/plugins/org.eclipse.core.runtime/runtimesrc.zip"/>
- <classpathentry kind="var"
- path="ECLIPSE_HOME/plugins/org.eclipse.swt/swt.jar" sourcepath="ECLIPSE_HOME/plugins/org.eclipse.swt/swtsrc.zip"/>
- <classpathentry kind="var"
- path="ECLIPSE_HOME/plugins/org.eclipse.ui/workbench.jar" sourcepath="ECLIPSE_HOME/plugins/org.eclipse.ui/workbenchsrc.zip"/>
- <classpathentry kind="var" path="ECLIPSE_HOME/plugins/org.eclipse.webdav/webdav.jar"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/update/org.eclipse.update/.cvsignore b/update/org.eclipse.update/.cvsignore
deleted file mode 100644
index c5e82d7..0000000
--- a/update/org.eclipse.update/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
\ No newline at end of file
diff --git a/update/org.eclipse.update/.vcm_meta b/update/org.eclipse.update/.vcm_meta
deleted file mode 100644
index 7655f8d..0000000
--- a/update/org.eclipse.update/.vcm_meta
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project-description>
- <comment></comment>
- <nature id="org.eclipse.jdt.core.javanature"/>
- <builder name="org.eclipse.jdt.core.javabuilder">
- </builder>
-</project-description>
diff --git a/update/org.eclipse.update/about.html b/update/org.eclipse.update/about.html
deleted file mode 100644
index 9a15e5c..0000000
--- a/update/org.eclipse.update/about.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<html>
-<head>
-<title>About</title>
-<style type="text/css">
-p, table, td, th { font-family: arial, helvetica, geneva; font-size: 10pt}
-pre { font-family: "Courier New", Courier, mono; font-size: 10pt}
-h2 { font-family: arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
-code { font-family: "Courier New", Courier, mono; font-size: 10pt}
-sup { font-family: arial,helvetica,geneva; font-size: 10px}
-h3 { font-family: arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
-li { font-family: arial, helvetica, geneva; font-size: 10pt}
-h1 { font-family: arial, helvetica, geneva; font-size: 28px; font-weight: bold}
-body { font-family: arial, helvetica, geneva; font-size: 10pt; clip: rect( ); margin-top: 5mm; margin-left: 3mm}
-</style>
-</head>
-<body>
-<body lang=EN-US link=blue vlink=purple>
-<table border=0 cellspacing=5 cellpadding=2 width="100%" >
- <tr>
- <td align=LEFT valign=TOP colspan="2" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">About This Plug-in</font></b></td>
- </tr>
- <tr>
- <td>
-<p>1st November, 2001</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in. The plug-in is provided to you under the terms and conditions of the
-<a href="http://www.eclipse.org/legal/cpl-v05.html">Common Public License Version 0.5</a>. For purposes of the Common Public License, "Program" will mean the plug-in.</p>
-</td></tr></table>
-</body>
-</html>
\ No newline at end of file
diff --git a/update/org.eclipse.update/build.properties b/update/org.eclipse.update/build.properties
deleted file mode 100644
index ac7da03..0000000
--- a/update/org.eclipse.update/build.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-source.update.jar=src/
-bin.includes=plugin.xml,icons/,plugin.properties,*.jar,about.html
diff --git a/update/org.eclipse.update/icons/full/ctool16/new.gif b/update/org.eclipse.update/icons/full/ctool16/new.gif
deleted file mode 100644
index d16d5b0..0000000
--- a/update/org.eclipse.update/icons/full/ctool16/new.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/icons/full/ctool16/update.gif b/update/org.eclipse.update/icons/full/ctool16/update.gif
deleted file mode 100644
index f011d8a..0000000
--- a/update/org.eclipse.update/icons/full/ctool16/update.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/icons/full/wizban/new.gif b/update/org.eclipse.update/icons/full/wizban/new.gif
deleted file mode 100644
index 2a0c793..0000000
--- a/update/org.eclipse.update/icons/full/wizban/new.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/icons/full/wizban/revert.gif b/update/org.eclipse.update/icons/full/wizban/revert.gif
deleted file mode 100644
index d7402a2..0000000
--- a/update/org.eclipse.update/icons/full/wizban/revert.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/icons/full/wizban/update.gif b/update/org.eclipse.update/icons/full/wizban/update.gif
deleted file mode 100644
index 4ff15da..0000000
--- a/update/org.eclipse.update/icons/full/wizban/update.gif
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/plugin.properties b/update/org.eclipse.update/plugin.properties
deleted file mode 100644
index 9c052ee..0000000
--- a/update/org.eclipse.update/plugin.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-S_Eclipse_Update_Manager_Plugin = Install/Update Manager
-S_Software_Updates = &Software Updates
-S_Software_Updates_Preferences = Software Updates
diff --git a/update/org.eclipse.update/plugin.xml b/update/org.eclipse.update/plugin.xml
deleted file mode 100644
index 87f8787..0000000
--- a/update/org.eclipse.update/plugin.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- File written by PDE 1.0 -->
-<plugin
- id="org.eclipse.update"
- name="%S_Eclipse_Update_Manager_Plugin"
- version="1.0"
- provider-name="International Business Machines Corp."
- class="org.eclipse.update.internal.core.UpdateManagerPlugin">
-<requires>
- <import plugin="org.eclipse.core.runtime"/>
- <import plugin="org.eclipse.ui"/>
- <import plugin="org.eclipse.webdav"/>
-</requires>
-
-<runtime>
- <library name="update.jar"/>
-</runtime>
-
-<!-- ================================================================================= -->
-<!-- -->
-<!-- Update Manager Help Menu Action Set -->
-<!-- -->
-<!-- ================================================================================= -->
-<extension
- point="org.eclipse.ui.actionSets">
- <actionSet
- label="%S_Software_Updates"
- visible="false"
- id="org.eclipse.update.internal.ui.UpdateManagerActionSet">
- <action
- label="%S_Software_Updates"
- class="org.eclipse.update.internal.ui.UMDialogAction"
- menubarPath="help/helpEnd"
- id="org.eclipse.update.internal.ui.UpdateManagerAction">
- </action>
- </actionSet>
-</extension>
-<!-- ============================================================================================ -->
-<!-- -->
-<!-- Update Manager Application -->
-<!-- -->
-<!-- ============================================================================================ -->
-<extension
- id="updateManager"
- point="org.eclipse.core.runtime.applications">
- <application>
- <run
- class="org.eclipse.update.internal.ui.UMApplicationUserInterface">
- </run>
- </application>
-</extension>
-</plugin>
diff --git a/update/org.eclipse.update/plugin.xml.off b/update/org.eclipse.update/plugin.xml.off
deleted file mode 100644
index 8a83831..0000000
--- a/update/org.eclipse.update/plugin.xml.off
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- Eclipse Update Manager Plugin -->
-
-<plugin
- id = "org.eclipse.update"
- name = "%S_Eclipse_Update_Manager_Plugin"
- version = "1.0"
- provider-name = "International Business Machines Corp."
- class = "org.eclipse.update.internal.core.UpdateManagerPlugin">
-
- <requires>
- <import plugin="org.eclipse.core.runtime"/>
- <import plugin="org.eclipse.ui"/>
- <import plugin="org.eclipse.webdav"/>
- </requires>
-
- <runtime>
- <library name="update.jar" />
- </runtime>
-
- <!-- ================================================================================= -->
- <!-- -->
- <!-- Update Manager Preference Page Settings -->
- <!-- -->
- <!-- ================================================================================= -->
- <extension point="org.eclipse.ui.preferencePages">
- <page id = "UMPreferencePageSettings"
- name = "%S_Software_Updates_Preferences"
- class = "org.eclipse.update.internal.ui.UMPreferencePageSettings">
- </page>
- </extension>
-
- <!-- ================================================================================= -->
- <!-- -->
- <!-- Update Manager Help Menu Action Set -->
- <!-- -->
- <!-- ================================================================================= -->
- <extension point="org.eclipse.ui.actionSets">
- <actionSet
- id = "org.eclipse.update.internal.ui.UpdateManagerActionSet"
- label = "%S_Software_Updates"
- visible = "true">
- <action id = "org.eclipse.update.internal.ui.UpdateManagerAction"
- menubarPath = "help/helpEnd"
- label = "%S_Software_Updates"
- class = "org.eclipse.update.internal.ui.UMDialogAction"/>
- </actionSet>
- </extension>
-
- <!-- ============================================================================================ -->
- <!-- -->
- <!-- Update Manager Application -->
- <!-- -->
- <!-- ============================================================================================ -->
- <extension id="updateManager" point="org.eclipse.core.runtime.applications">
- <application>
- <run class="org.eclipse.update.internal.ui.UMApplicationUserInterface">
- </run>
- </application>
- </extension>
-</plugin>
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/ISessionDefiner.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/ISessionDefiner.java
deleted file mode 100644
index 626ca05..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/ISessionDefiner.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- */
-import org.eclipse.core.internal.boot.update.*;
-
-public interface ISessionDefiner {
-/**
- * Creates one or more operations for the current session.
- */
-void defineOperations( UMSessionManagerSession session, IInstallable[] descriptors, boolean bVerifyJars );
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/IUMLock.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/IUMLock.java
deleted file mode 100644
index c25c907..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/IUMLock.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- */
-public interface IUMLock {
-/**
- * Checks to see if the UMLock file is there. If yes, returns true
- */
-public boolean exists();
-/**
- */
-void remove();
-/**
- */
-void set();
-/**
- */
-void set(String msg);
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMLock.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMLock.java
deleted file mode 100644
index 5c08d9a..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMLock.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- */
-import org.eclipse.core.internal.boot.update.*;
-import java.io.*;
-import java.net.*;
-public class UMLock implements IUMLock {
- File file = null;
-/**
- * UMLock constructor comment.
- */
-public UMLock() {
- super();
- URL lockfileURL = null;
- try {
- lockfileURL = new URL(UMEclipseTree.getInstallTreeURL(), IManifestAttributes.UM_LOCK);
- } catch (MalformedURLException ex) {
- }
- file = getFile(lockfileURL);
-}
-/**
- * Checks to see if the UMLock file is there. If yes, returns true
- */
-public boolean exists() {
-
- if (file != null) {
- if (file.exists() == true) {
- return true;
- }
- }
- return false;
-}
-/**
- */
-public static File getFile(URL url) {
- File file = null;
- if (url != null) {
-
- // Convert the URL to a string
- //----------------------------
- String strFilespec = UMEclipseTree.getFileInPlatformString(url);
-
- file = new File(strFilespec);
- }
- return file;
-}
-/**
- */
-public void remove() {
- if (exists())
- file.delete();
-
-}
-/**
- */
-public void set() {
- set("");
-}
-/**
- */
-public void set(String msg) {
- URL lockfileURL = null;
- try {
- lockfileURL = new URL(UMEclipseTree.getInstallTreeURL(), IManifestAttributes.UM_LOCK);
- } catch (MalformedURLException ex) {
- }
-
- // Create a lock file
- //-------------------
- Log lockfile = new Log();
-
- try {
- lockfile.load(lockfileURL); // creates file if it doesn't exist
- }
- catch (LogStoreException ex) {
- return;
- }
-
- // Add an entry
- //-------------
- LogEntry lockEntry = new LogEntry( lockfile, msg );
- lockfile.addChildEntry( lockEntry );
-
-
- try {
- lockfile.save(lockfileURL);
- }
- catch (LogStoreException ex) {
- return;
- }
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionDefinerReferenceUpdate.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionDefinerReferenceUpdate.java
deleted file mode 100644
index 240091b..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionDefinerReferenceUpdate.java
+++ /dev/null
@@ -1,216 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- */
-import org.eclipse.core.internal.boot.update.*;
-import org.eclipse.core.internal.boot.LaunchInfo;
-
-public class UMSessionDefinerReferenceUpdate implements ISessionDefiner {
-/**
- * UMUpdaterCached constructor comment.
- */
-public UMSessionDefinerReferenceUpdate() {
- super();
-}
-/**
- * Creates one or more operations for the current parcel.
- */
-public void defineComponentOperation(UMSessionManagerParcel parcel, IInstallable descriptor, boolean bVerifyJars) {
-
- IComponentDescriptor componentDescriptor = null;
-
- if (descriptor instanceof IComponentDescriptor) {
- componentDescriptor = (IComponentDescriptor) descriptor;
- }
- else if (descriptor instanceof IComponentEntryDescriptor) {
- componentDescriptor = ((IComponentEntryDescriptor) descriptor).getComponentDescriptor();
- }
- if (componentDescriptor == null)
- return;
-
- UMSessionManagerOperation operation = null;
-
- // Create download operation
- //--------------------------
- operation = parcel.createOperation();
- operation.setAction(UpdateManagerConstants.OPERATION_COPY);
- operation.setId(componentDescriptor.getUniqueIdentifier());
- operation.setSource(componentDescriptor.getDownloadURL().toExternalForm());
- String downloadTarget = UMEclipseTree.getStagingArea().toExternalForm() + componentDescriptor.getDirName() + ".jar";
- operation.setTarget(downloadTarget);
- operation.setData(descriptor);
-
- // Create jar verification operation
- //----------------------------------
- if (bVerifyJars == true) {
- operation = parcel.createOperation();
- operation.setAction(UpdateManagerConstants.OPERATION_VERIFY_JAR);
- operation.setId(componentDescriptor.getUniqueIdentifier());
- operation.setSource(downloadTarget);
- operation.setTarget(null);
- operation.setData(descriptor);
- }
-
- // Create apply operation for component files (files not in plugins/ dir structure)
- //---------------------------------------------------------------------------------
- operation = parcel.createOperation();
- operation.setAction(UpdateManagerConstants.OPERATION_UNZIP_INSTALL);
- operation.setId(componentDescriptor.getUniqueIdentifier());
- operation.setSource(downloadTarget);
- String applyTarget = UMEclipseTree.getBaseInstallURL().toExternalForm();
- // String applyTarget = "file:///c:/temp/x/" ;
- operation.setTarget(applyTarget);
- operation.setData(descriptor);
-
- // Create apply operation for plug-ins
- //------------------------------------
- IPluginEntryDescriptor[] plugins = componentDescriptor.getPluginEntries();
- IFragmentEntryDescriptor[] fragments = componentDescriptor.getFragmentEntries();
- if ((plugins.length > 0) || (fragments.length >0)) {
- operation = parcel.createOperation();
- operation.setAction(UpdateManagerConstants.OPERATION_UNZIP_PLUGINS);
- operation.setId(componentDescriptor.getUniqueIdentifier());
- operation.setSource(downloadTarget);
- // by specifiying the install dir with a trailing slash, the unzip method
- // will just unzip the contents of the jar into the dir
- applyTarget = UMEclipseTree.getBaseInstallURL().toExternalForm();
- // applyTarget = "file:///c:/temp/x/" ;
- operation.setTarget(applyTarget);
- operation.setData(descriptor);
- }
-
-}
-/**
- * Creates one or more operations for the current session.
- */
-public void defineOperations(UMSessionManagerSession session, IInstallable[] descriptors, boolean bVerifyJars) {
-
- for (int i = 0; i < descriptors.length; ++i) {
-
- // Products
- //---------
- if (descriptors[i] instanceof IProductDescriptor) {
-
- UMSessionManagerParcel parcel = null;
-
- // Create parcel
- //--------------
- parcel = session.createParcel();
- parcel.setType(IManifestAttributes.PRODUCT);
- parcel.setAction(UpdateManagerConstants.OPERATION_ACTION_INSTALL);
- parcel.setId(((IProductDescriptor) descriptors[i]).getUniqueIdentifier());
- parcel.setData((IProductDescriptor) descriptors[i]);
-
- defineProductOperation(parcel, descriptors[i], bVerifyJars);
- }
-
- // Components
- //-----------
- else if (descriptors[i] instanceof IComponentDescriptor) {
-
- UMSessionManagerParcel parcel = null;
-
- // Create parcel
- //--------------
- parcel = session.createParcel();
- parcel.setType(IManifestAttributes.COMPONENT);
- parcel.setAction(UpdateManagerConstants.OPERATION_ACTION_INSTALL);
- parcel.setId(((IComponentDescriptor) descriptors[i]).getUniqueIdentifier());
- parcel.setData((IComponentDescriptor) descriptors[i]);
-
- defineComponentOperation(parcel, descriptors[i], bVerifyJars);
- }
-
- // Component Entries
- //------------------
- else if (descriptors[i] instanceof IComponentEntryDescriptor) {
-
- UMSessionManagerParcel parcel = null;
-
- // Create parcel
- //--------------
- parcel = session.createParcel();
- parcel.setType(IManifestAttributes.COMPONENT);
- parcel.setAction(UpdateManagerConstants.OPERATION_ACTION_INSTALL);
- parcel.setId(((IComponentEntryDescriptor) descriptors[i]).getUniqueIdentifier());
- parcel.setData((IComponentEntryDescriptor) descriptors[i]);
-
- defineComponentOperation(parcel, descriptors[i], bVerifyJars);
- }
- }
-}
-/**
- * Creates one or more operations for the current parcel.
- */
-public void defineProductOperation(UMSessionManagerParcel parcel, IInstallable descriptor, boolean bVerifyJars) {
-
- IProductDescriptor productDescriptor = (IProductDescriptor) descriptor;
- UMSessionManagerOperation operation = null;
-
- // Create download operation
- //--------------------------
- operation = parcel.createOperation();
- operation.setAction(UpdateManagerConstants.OPERATION_COPY);
- operation.setId(productDescriptor.getUniqueIdentifier());
- operation.setSource(productDescriptor.getDownloadURL().toExternalForm());
- String downloadTarget = UMEclipseTree.getStagingArea().toString() + productDescriptor.getDirName() + ".jar";
- operation.setTarget(downloadTarget);
- operation.setData(productDescriptor);
-
- // Create jar verification operation
- //----------------------------------
- if (bVerifyJars == true) {
- operation = parcel.createOperation();
- operation.setAction(UpdateManagerConstants.OPERATION_VERIFY_JAR);
- operation.setId(productDescriptor.getUniqueIdentifier());
- operation.setSource(downloadTarget);
- operation.setTarget(null);
- operation.setData(productDescriptor);
- }
-
- // Create apply operation for product files
- //-----------------------------------------
- operation = parcel.createOperation();
- operation.setAction(UpdateManagerConstants.OPERATION_UNZIP_INSTALL);
- operation.setId(productDescriptor.getUniqueIdentifier());
- operation.setSource(downloadTarget);
- String applyTarget = UMEclipseTree.getBaseInstallURL().toExternalForm();
- operation.setTarget(applyTarget);
- operation.setData(productDescriptor);
-
- // Create component sub-parcels
- //-----------------------------
- IComponentEntryDescriptor[] entries = productDescriptor.getComponentEntries();
- for (int j = 0; j < entries.length; ++j) {
- if (entries[j].isSelected()) {
-
- UMSessionManagerParcel subparcel = null;
- // Create parcel for each component
- //---------------------------------
- subparcel = parcel.createParcel();
- subparcel.setType(IManifestAttributes.COMPONENT);
- subparcel.setAction(UpdateManagerConstants.OPERATION_ACTION_INSTALL);
- subparcel.setId(entries[j].getUniqueIdentifier());
- subparcel.setData(entries[j]);
-
- defineComponentOperation(subparcel, entries[j], bVerifyJars);
- }
- }
-
- // Create apply operation for product files
- //-----------------------------------------
- String app = LaunchInfo.getCurrent().getApplicationConfigurationIdentifier();
- if ((app != null) && (app.equals(productDescriptor.getUniqueIdentifier()))) { // dominant app?
- operation = parcel.createOperation();
- operation.setAction(UpdateManagerConstants.OPERATION_UNZIP_BINDIR);
- operation.setId(productDescriptor.getUniqueIdentifier());
- operation.setSource(downloadTarget);
- operation.setTarget(applyTarget);
- operation.setData(productDescriptor);
- }
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManager.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManager.java
deleted file mode 100644
index ab379b5..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManager.java
+++ /dev/null
@@ -1,351 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.internal.boot.update.*;
-import java.io.*;
-import java.net.*;
-import java.util.*;
-
-/**
- * Session Manager executes defined sessions, and manages the update and update history logs.
- * Logs look like this:
- *
- * <session timestamp="xxxx" status="complete" attempts="1">
- * <operation action="urltocache" status="complete" attempts="1">
- * <parcel type="component" id="xxx" action="add" status="complete" attempts="1">
- * <item id="xxx" source="file:///C:/temp/sample_in.java" target="file:///C:/temp/sample_out.java" status="complete" attempts="1">
- * <message text="successful" timestamp="Thu Mar 01 09:56:49 EST 2001" />
- * </item>
- * </parcel>
- * </operation>
- * </session>
- *
- *
- * Each element is represented by an UpdateManagerXyz class and have specific
- * member functions for accessing domain specific attributes and child elements.
- * The "status" attribute can be one of "pending", "failed", or "complete".
- */
-
-public class UMSessionManager {
-
- protected Log _logUpdate = null;
- protected Log _logHistory = null;
-
- protected URL _urlUpdate = null;
- protected URL _urlHistory = null;
-
- protected ArrayList _alUpdateSessions = new ArrayList();
-/**
- * Constructs an UpdateManager with the update log and history log URLs.
- * The boolean specifies whether an exception should be thrown if one of
- * the logs is not found.
- */
-public UMSessionManager(URL urlUpdateLog, URL urlHistoryLog, boolean notifyIfLogNotFound) throws LogStoreException {
-
- _urlUpdate = urlUpdateLog;
- _urlHistory = urlHistoryLog;
-
- // Attempt to open the two logs
- //-----------------------------
- _logUpdate = new Log();
- _logHistory = new Log();
-
- // If the files do not exist
- // notify if required. Otherwise assume new files
- //------------------------------------------------
- try {
- _logUpdate.load(_urlUpdate);
- }
- catch (LogStoreException ex) {
-// _logUpdate.printEntryTree(0);
- if (notifyIfLogNotFound == true) {
- throw ex;
- }
- }
-
- // Create the update session structure from the log
- //-------------------------------------------------
- buildTreeFromLog( _logUpdate );
-
-/*
- try {
- _logHistory.load(_urlUpdate);
- }
- catch (LogStoreException ex) {
-
- if (notifyIfLogNotFound == true) {
- throw ex;
- }
- }
-
- _logHistory.printEntryTree(0);
-*/
-}
-/**
- * Creates a tree of sessions from the given log.
- * @param logUpdate org.eclipse.update.internal.core.Log
- * @param alUpdate java.util.ArrayList
- */
-private void buildTreeFromLog(Log logUpdate ) {
-
- ILogEntry[] entryChildren = logUpdate.getChildEntries();
-
- UMSessionManagerSession session = null;
-
- for( int i=0; i<entryChildren.length; ++i )
- {
- session = new UMSessionManagerSession( entryChildren[i] );
-
- _alUpdateSessions.add( session );
-
- session.buildTreeFromLog( entryChildren[i] );
- }
-
- return;
-}
-/**
- * Creates a new update session where pending operations may be defined for
- * completion.
- * @return org.eclipse.update.internal.core.UMSessionManagerSession
- */
-public UMSessionManagerSession createUpdateSession() {
-
- UMSessionManagerSession umSession = null;
-
- if( _logUpdate != null )
- {
- ILogEntry entrySession = new LogEntry( _logUpdate, UpdateManagerConstants.STRING_SESSION );
-
- _logUpdate.addChildEntry( entrySession );
-
- umSession = new UMSessionManagerSession( entrySession );
-
- umSession.buildTreeFromLog( entrySession );
-
- _alUpdateSessions.add( umSession );
- }
-
- return umSession;
-}
-/**
- * Runs all sessions
- */
-public boolean executePendingSessions(IProgressMonitor progressMonitor) {
-
- // Run each of the failed sessions
- //--------------------------------
- boolean bSuccess = true;
-
- UMSessionManagerSession session = null;
-
- Iterator iter = _alUpdateSessions.iterator();
-
- while (iter.hasNext() == true) {
-
- session = (UMSessionManagerSession) iter.next();
-
- if (session.getStatus().equals(UpdateManagerConstants.STATUS_PENDING) == true) {
- if (session.execute(progressMonitor) == false) {
- bSuccess = false;
- }
- }
- }
-
- return bSuccess;
-}
-/**
- * Runs one session
- */
-public boolean executeSession(UMSessionManagerSession session, IProgressMonitor progressMonitor) {
-
- if (session == null)
- return false;
-
- // Run the session
- //----------------
- return session.execute(progressMonitor);
-}
-/**
- * Runs one session
- */
-public boolean executeSessionUndo(UMSessionManagerSession session, IProgressMonitor progressMonitor) {
-
- if (session == null)
- return false;
-
- // Run the session
- //----------------
- return session.executeUndo(progressMonitor);
-}
-/**
- * Returns an array of sessions that are complete.
- * @return org.eclipse.update.internal.core.UMSessionManagerSession[]
- */
-private UMSessionManagerSession[] getUpdateSessionsCompleted() {
-
- // Obtain the successfully completed sessions
- //-------------------------------------------
- UMSessionManagerSession session = null;
-
- ArrayList alSessionsCompleted = new ArrayList();
-
- Iterator iter = _alUpdateSessions.iterator();
-
- while (iter.hasNext() == true) {
-
- session = (UMSessionManagerSession) iter.next();
-
- if (session.isComplete() == true) {
- alSessionsCompleted.add(session);
- }
- }
-
- Object[] objArray = alSessionsCompleted.toArray();
- UMSessionManagerSession[] sessions = new UMSessionManagerSession[objArray.length];
- System.arraycopy(objArray, 0, sessions, 0, objArray.length);
-
- return sessions;
-}
-/**
- * Removes an existing update session
- *
- */
-private boolean removeUpdateSession(UMSessionManagerSession session) {
-
- if (session != null && _logUpdate != null) {
-
- // Ensure session exists
- //----------------------
- if (_alUpdateSessions.contains(session) == false) {
- return false;
- }
-
- // Remove the log entry
- //---------------------
- if (session.getLogEntry() != null) {
-
- if (_logUpdate.removeChildEntry(session.getLogEntry()) == false) {
- return false;
- }
-
- // Remove the session
- //-------------------
- _alUpdateSessions.remove(session);
- }
- }
-
- return true;
-}
-/**
- * Saves the current state of the update log.
- */
-public void saveUpdateLog() throws LogStoreException {
- _logUpdate.save( _urlUpdate );
-}
-/**
- * Moves all completed sessions in the update log to the history log.
- * This method does not parse the history file. Sessions are written to
- * the end of the history log and removed from the update log tree, and update
- * session tree. The update log is saved.
- */
-public void updateAndSaveLogs() throws LogStoreException {
-
- // Check for history log URL
- // If none, save the update log
- //-----------------------------
- if (_urlHistory == null) {
- saveUpdateLog();
- return;
- }
-
- // Obtain a list of completed update sessions
- //-------------------------------------------
- UMSessionManagerSession[] sessionsCompleted = getUpdateSessionsCompleted();
-
- // If there are none, save the update log
- //---------------------------------------
- if (sessionsCompleted.length <= 0) {
- saveUpdateLog();
- return;
- }
-
- // Attempt to open the output log
- //-------------------------------
- String strFilespec = UMEclipseTree.getFileInPlatformString(_urlHistory);
-
-
- File file = new File(strFilespec);
-
- boolean bExists = file.exists();
-
- if (bExists == false) {
- try {
- bExists = file.createNewFile();
- }
- catch (IOException ex) {
- return;
- }
- }
-
- // Create a file writer and seek to the end of the file
- //-----------------------------------------------------
- RandomAccessFile fileWriter = null;
-
- if (bExists == true) {
- try {
- fileWriter = new RandomAccessFile(file, "rw");
- long lLength = fileWriter.length();
- fileWriter.seek(lLength);
- }
- catch (IOException ex) {
- fileWriter = null;
- }
- }
-
- // Write out each session log to the history log
- // Remove the session log from the update log
- // Save both logs
- //----------------------------------------------
- StringBuffer strb = new StringBuffer();
-
- if (fileWriter != null) {
-
- ILogEntry logEntry = null;
-
- for (int i = 0; i < sessionsCompleted.length; ++i) {
-
- logEntry = sessionsCompleted[i].getLogEntry();
-
- if (logEntry != null) {
- logEntry.printPersistentEntryString(strb, 0);
- }
- }
- }
-
- // Write the buffer to the end of the history file
- //------------------------------------------------
- if (strb.length() > 0) {
- try {
- fileWriter.write(strb.toString().getBytes());
- fileWriter.close();
- }
- catch (IOException ex) {
-
- }
- }
-
- // Remove the update sessions from the update log
- //-----------------------------------------------
- for (int i = 0; i < sessionsCompleted.length; ++i) {
- removeUpdateSession(sessionsCompleted[i]);
- }
-
- // Save the update log to keep logs in sync
- //-----------------------------------------
- saveUpdateLog();
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerEntry.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerEntry.java
deleted file mode 100644
index 9d616c8..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerEntry.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.internal.boot.update.*;
-/**
- * Abstract class for update manager objects that have an ILogEntry
- */
-public abstract class UMSessionManagerEntry {
- protected ILogEntry _logEntry = null;
- protected ILogEntryProperty _propertyStatus = null;
- protected ILogEntryProperty _propertyAttempts = null;
- protected Object _objData = null;
-/**
- * UpdateManagerEntry constructor comment.
- */
-public UMSessionManagerEntry( ILogEntry logEntry ) {
- _logEntry = logEntry;
-
- // Status
- //-------
- _propertyStatus = _logEntry.getProperty(UpdateManagerConstants.STRING_STATUS);
-
- if (_propertyStatus == null) {
- _propertyStatus = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_STATUS, UpdateManagerConstants.STATUS_PENDING );
- logEntry.addProperty( _propertyStatus );
- }
-
- // Attempts
- //---------
- _propertyAttempts = _logEntry.getProperty(UpdateManagerConstants.STRING_ATTEMPTS);
-
- if (_propertyAttempts == null) {
- _propertyAttempts = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_ATTEMPTS, UpdateManagerConstants.STRING_0 );
- logEntry.addProperty( _propertyAttempts );
- }
-
-}
-/**
- * @param logEntry org.eclipse.update.internal.core.ILogEntry
- */
-public void buildTreeFromLog(ILogEntry logEntry) {
-
- // Attempts
- //---------
- ILogEntryProperty property = _logEntry.getProperty(UpdateManagerConstants.STRING_ATTEMPTS);
-
- if (property != null) {
- _propertyAttempts = property;
- }
-
- // Status
- //-------
- property = _logEntry.getProperty(UpdateManagerConstants.STRING_STATUS);
-
- if (property != null) {
- _propertyStatus = property;
- }
-}
-/**
- *
- * @return java.lang.String
- * @param strPrefix java.lang.String
- * @param ex java.lang.Exception
- */
-public String createMessageString(String strPrefix, Exception ex) {
-
- StringBuffer strb = new StringBuffer(strPrefix);
-
- if (ex != null) {
- if (ex.getLocalizedMessage() != null) {
- strb.append(": " + ex.getLocalizedMessage());
- }
-
- else if (ex.toString() != null && ex.toString().length() > 0) {
- strb.append(": " + ex.toString());
- }
- }
-
- return strb.toString();
-}
-/**
- * Execute any pending or failed updates.
- */
-public abstract boolean execute( IProgressMonitor progressMonitor );
-/**
- * Execute any pending or failed updates.
- */
-public abstract boolean executeUndo( IProgressMonitor progressMonitor );
-/**
- * @return java.lang.Object
- */
-public java.lang.Object getData() {
- return _objData;
-}
-/**
- * Returns the log entry associated with this session object.
- * @return org.eclipse.update.internal.core.ILogEntry
- */
-public ILogEntry getLogEntry() {
- return _logEntry;
-}
-/**
- *
- * @return java.lang.String
- */
-public String getStatus() {
-
- return _propertyStatus.getValue();
-}
-/**
- * @param strb java.lang.StringBuffer
- * @param iIndentation int
- */
-public abstract void getStatusString(StringBuffer strb, int iIndentation);
-/**
- * Increments the value of the number of attempts
- */
-public void incrementAttemptCount() {
-
- int iAttempts = 0;
-
- try {
- iAttempts = new Integer(_propertyAttempts.getValue()).intValue();
- }
- catch (Exception ex) {
- }
-
- _propertyAttempts.setValue( Integer.toString( ++iAttempts ) );
-}
-/**
- * @param strb java.lang.StringBuffer
- * @param iIndentation int
- */
-public void indent(StringBuffer strb, int iIndentation) {
-
- // Line feed
- //----------
- strb.append( "\n" );
-
- // Indentation spaces
- //-------------------
- for( int i=0; i<iIndentation; ++i ){
- strb.append( " " );
- }
-}
-/**
- */
-public void resetAttemptCount() {
- _propertyAttempts.setValue( UpdateManagerConstants.STRING_0 );
-}
-/**
- * Stores IManifestDescriptor
- * @param newData java.lang.Object
- */
-public void setData(java.lang.Object objData) {
- _objData = objData;
-}
-/**
- * Every entry has a status property.
- * @return java.lang.String
- * @param status java.lang.String
- */
-public void setStatus(String strStatus) {
-
- _propertyStatus.setValue( strStatus != null ? strStatus : UpdateManagerConstants.STRING_EMPTY );
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerMessage.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerMessage.java
deleted file mode 100644
index 3a9c9b9..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerMessage.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.internal.boot.update.*;
-import java.util.Date;
-
-/**
- * This class represents a failure message and consists of a timestamp and text.
- *
- */
-
-public class UMSessionManagerMessage {
- protected ILogEntry _logEntry = null;
- protected ILogEntryProperty _propertyTimestamp = null;
- protected ILogEntryProperty _propertyText = null;
-/**
- *
- * @param logEntry org.eclipse.update.internal.core.ILogEntry
- */
-public UMSessionManagerMessage(ILogEntry logEntry) {
-
- _logEntry = logEntry;
-
- // Text
- //-----
- _propertyText = _logEntry.getProperty(UpdateManagerConstants.STRING_TEXT);
-
- if (_propertyText == null) {
- _propertyText = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_TEXT, UpdateManagerConstants.STRING_EMPTY );
- logEntry.addProperty( _propertyText );
- }
-
- // Timestamp
- //----------
- _propertyTimestamp = _logEntry.getProperty(UpdateManagerConstants.STRING_TIMESTAMP);
-
- if (_propertyTimestamp == null) {
- _propertyTimestamp = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_TIMESTAMP, new Date().toString() );
- logEntry.addProperty( _propertyTimestamp );
- }
-}
-/**
- * @param logEntry org.eclipse.update.internal.core.LogEntry
- */
-public void buildTreeFromLog(ILogEntry logEntry) {
-
- // Text
- //-----
- ILogEntryProperty property = _logEntry.getProperty(UpdateManagerConstants.STRING_TEXT);
-
- if (property != null) {
- _propertyText = property;
- }
-
- // Source
- //-------
- property = _logEntry.getProperty(UpdateManagerConstants.STRING_TIMESTAMP);
-
- if (property != null) {
- _propertyTimestamp = property;
- }
-}
-/**
- * @return java.lang.String
- */
-public String getText() {
-
- return _propertyText.getValue();
-}
-/**
- *
- */
-public void setText( String strID ) {
- _propertyText.setValue( strID != null ? strID : UpdateManagerConstants.STRING_EMPTY );
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerOperation.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerOperation.java
deleted file mode 100644
index f6aadd5..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerOperation.java
+++ /dev/null
@@ -1,1189 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.webdav.http.client.Response;
-import java.util.jar.*;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.internal.boot.LaunchInfo;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.core.internal.boot.update.*;
-import java.io.*;
-import java.net.*;
-import java.util.*;
-
-/**
- * This class represents an operation such as "copy" or "unzip".
- * Attributes are id, status (pending/complete), action,
- * source, target. Children are messages.
- */
-
-public class UMSessionManagerOperation extends UMSessionManagerEntry {
-
- protected ArrayList _alMessages = new ArrayList();
- protected ILogEntryProperty _propertyAction = null;
- protected ILogEntryProperty _propertyID = null;
- protected ILogEntryProperty _propertySource = null;
- protected ILogEntryProperty _propertyTarget = null;
-/**
- * UpdateManagerOperation constructor comment.
- */
-public UMSessionManagerOperation( ILogEntry logEntry ) {
- super( logEntry );
-
- // Action
- //-------
- _propertyAction = _logEntry.getProperty(UpdateManagerConstants.STRING_ACTION);
-
- if (_propertyAction == null) {
- _propertyAction = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_ACTION, UpdateManagerConstants.STRING_EMPTY );
- logEntry.addProperty( _propertyAction );
- }
-
- // Id
- //---
- _propertyID = _logEntry.getProperty(UpdateManagerConstants.STRING_ID);
-
- if (_propertyID == null) {
- _propertyID = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_ID, UpdateManagerConstants.STRING_EMPTY );
- logEntry.addProperty( _propertyID );
- }
-
- // Source
- //-------
- _propertySource = _logEntry.getProperty(UpdateManagerConstants.STRING_SOURCE);
-
- if (_propertySource == null) {
- _propertySource = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_SOURCE, UpdateManagerConstants.STRING_EMPTY );
- logEntry.addProperty( _propertySource );
- }
-
- // Target
- //-------
- _propertyTarget = _logEntry.getProperty(UpdateManagerConstants.STRING_TARGET);
-
- if (_propertyTarget == null) {
- _propertyTarget = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_TARGET, UpdateManagerConstants.STRING_EMPTY );
- logEntry.addProperty( _propertyTarget);
- }
-}
-/**
- * @param logEntry org.eclipse.update.internal.core.LogEntry
- */
-public void buildTreeFromLog(ILogEntry logEntry) {
-
- super.buildTreeFromLog( logEntry );
-
- // Action
- //-------
- ILogEntryProperty property = _logEntry.getProperty(UpdateManagerConstants.STRING_ACTION);
-
- if (property != null) {
- _propertyAction = property;
- }
-
-
- // Id
- //---
- property = _logEntry.getProperty(UpdateManagerConstants.STRING_ID);
-
- if (property != null) {
- _propertyID = property;
- }
-
- // Source
- //-------
- property = _logEntry.getProperty(UpdateManagerConstants.STRING_SOURCE);
-
- if (property != null) {
- _propertySource = property;
- }
-
- // Target
- //-------
- property = _logEntry.getProperty(UpdateManagerConstants.STRING_TARGET);
-
- if (property != null) {
- _propertyTarget = property;
- }
-
-
- ILogEntry[] entries = logEntry.getChildEntries();
-
- // Messages
- //---------
- int iIndex = 0;
- UMSessionManagerMessage message = null;
-
- for( int i = 0; i < entries.length; ++i) {
- if (entries[i] != null && entries[i].getName().equals(UpdateManagerConstants.STRING_MESSAGE) == true) {
- message = new UMSessionManagerMessage( entries[i] );
- _alMessages.add( message );
-
- message.buildTreeFromLog( entries[i] );
- }
- }
-}
-/**
- * Copies all data from input stream to output stream.
- * @param inputStream java.io.InputStream
- * @param outputStream java.io.OutputStream
- */
-public String copyStream(InputStream streamInput, OutputStream streamOutput, long lContentLength, String strTaskName, IProgressMonitor progressMonitor, boolean bSubtask) {
-
- String strErrorMessage = null;
-
- // Allocate buffer
- //----------------
- byte[] byteArray = null;
-
- if (streamInput != null && streamOutput != null) {
- byteArray = new byte[64000];
- }
-
- if (byteArray != null) {
-
- // Copy
- //-----
- if (progressMonitor != null) {
- if (bSubtask == false) {
- if (lContentLength > 0 && lContentLength < Integer.MAX_VALUE)
- progressMonitor.beginTask(UpdateManagerStrings.getString("S_Copy") + ": " +strTaskName, (int) lContentLength);
- else
- progressMonitor.beginTask(UpdateManagerStrings.getString("S_Copy") + ": " + strTaskName, IProgressMonitor.UNKNOWN);
- }
- else {
- progressMonitor.subTask(UpdateManagerStrings.getString("S_Copy") + ": " + strTaskName);
- }
- }
-
- int iBytesReceived = 0;
-
- do {
- // Read
- //-----
- try {
- iBytesReceived = streamInput.read(byteArray);
- }
- catch (Exception ex) {
- iBytesReceived = 0;
- strErrorMessage = UpdateManagerStrings.getString("S_Error_reading_from_input_stream") + ": " + ex.getMessage();
- }
-
- // Write
- //------
- if (iBytesReceived > 0) {
- try {
- streamOutput.write(byteArray, 0, iBytesReceived);
-
- if (progressMonitor != null && bSubtask == false)
- progressMonitor.worked(iBytesReceived);
- }
- catch (IOException ex) {
- iBytesReceived = 0;
- strErrorMessage = UpdateManagerStrings.getString("S_Error_writing_to_output_stream") + ": " + ex.getMessage();
- }
- }
- }
- while (iBytesReceived > 0);
-
- if (progressMonitor != null && bSubtask == false) {
- progressMonitor.done();
- }
- }
-
- return strErrorMessage;
-}
-/**
- *
- * @return org.eclipse.update.internal.core.UMSessionManagerMessage
- * @param actionType java.lang.String
- */
-public UMSessionManagerMessage createMessage() {
-
- // Create a new log entry
- //-----------------------
- ILogEntry logEntryChild = new LogEntry( _logEntry, UpdateManagerConstants.STRING_MESSAGE );
- _logEntry.addChildEntry( logEntryChild );
-
- // Create the operation object
- //----------------------------
- UMSessionManagerMessage message = new UMSessionManagerMessage( logEntryChild );
-
- message.buildTreeFromLog( logEntryChild );
-
- _alMessages.add( message );
-
- return message;
-}
-/**
- *
- *
- */
-public boolean doCopy(IProgressMonitor progressMonitor) {
-
- String strErrorMessage = null;
-
- // Input URL
- //----------
- URL urlInput = null;
-
- try {
- urlInput = new URL(getSource());
- }
- catch (MalformedURLException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Source_URL_is_malformed"), ex);
- }
-
- URL urlOutput = null;
-
- // Output URL
- //-----------
- try {
- urlOutput = new URL(getTarget());
- }
- catch (MalformedURLException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Target_URL_is_malformed"), ex);
- }
-
- // Input
- //-------
- InputStream streamInput = null;
-
- long lContentLength = 0;
-
- if (urlInput != null && urlOutput != null) {
-
- // Input stream
- //-------------
- try {
- URLHandler.Response response = (URLHandler.Response)URLHandler.open(urlInput);
- lContentLength = response.getContentLength();
- if( response.getResponseCode() == HttpURLConnection.HTTP_OK )
- streamInput = response.getInputStream();
- }
- catch (IOException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Unable_to_obtain_source_input_stream"), ex);
- }
-
- }
-
- // Output
- //-------
- OutputStream streamOutput = null;
-
- if (streamInput != null) {
-
- // Output connection
- //------------------
- URLConnection urlConnectionOutput = null;
-
- try {
- urlConnectionOutput = urlOutput.openConnection();
- urlConnectionOutput.setDoOutput(true);
- }
- catch (IOException ex) {
- strErrorMessage = createMessageString( UpdateManagerStrings.getString("S_Unable_to_connect"), ex );
- }
-
- // Output stream
- //--------------
- if (urlConnectionOutput != null) {
- try {
- streamOutput = urlConnectionOutput.getOutputStream();
- }
- catch (IOException ex) {
- strErrorMessage = createMessageString( UpdateManagerStrings.getString("S_Unable_to_obtain_target_output_stream"), ex );
- }
- }
-
- // Attempt to create a file output stream
- // This is used when protocol is file: or valoader:
- // thus our local writes are all file I/O currently
- //-------------------------------------------------
- if (streamOutput == null) {
- try
- {
- streamOutput = getFileOutputStream(urlOutput);
- }
- catch( IOException ex){
- strErrorMessage = createMessageString( UpdateManagerStrings.getString("S_Unable_to_create_file"), ex );
- }
- }
- }
-
- if( streamInput != null && streamOutput != null )
- {
- strErrorMessage = copyStream( streamInput, streamOutput, lContentLength, urlInput.toExternalForm(), progressMonitor, false );
- }
-
- // Close input stream
- //-------------------
- if (streamInput != null) {
- try {
- streamInput.close();
- }
- catch (IOException ex) {
- }
- }
-
- // Close output stream
- //--------------------
- if (streamOutput != null) {
- try {
- streamOutput.flush();
- streamOutput.close();
- }
- catch (IOException ex) {
- strErrorMessage = createMessageString( UpdateManagerStrings.getString("S_Error_closing_output_stream"), ex );
- }
- }
-
- // Increment the number of attempts
- //---------------------------------
- incrementAttemptCount();
-
- // Error return
- //-------------
- if (strErrorMessage != null) {
- UMSessionManagerMessage message = createMessage();
- message.setText(strErrorMessage);
- setStatus(UpdateManagerConstants.STATUS_FAILED);
- return false;
- }
-
- // Successful return
- //------------------
- setStatus(UpdateManagerConstants.STATUS_SUCCEEDED);
-
- return true;
-}
-/**
- *
- *
- */
-public boolean doUnzip(IProgressMonitor progressMonitor) {
-
- String strErrorMessage = null;
- int rc = UpdateManagerConstants.UNDEFINED_CONTENTS;
-
- // Input URL
- //----------
- URL urlInput = null;
- try {
- urlInput = new URL(getSource());
- }
- catch (MalformedURLException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Source_URL_is_malformed"), ex);
- }
-
- // Output URL
- //-----------
- URL urlOutput = null;
- try {
- urlOutput = new URL(getTarget());
- }
- catch (MalformedURLException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Target_URL_is_malformed"), ex);
- }
-
- // For unzipping plugins or component/configuration jar,
- // set up the list of directories to look for, also call
- // LaunchInfo.installPending
- //-----------------------------------------------------
- Vector dirNames = new Vector();
- Vector dirNamesInstalled = new Vector();// keep track of plugins/fragments unzipped
- Vector dirNamesUnexpected = new Vector(); // keep track of unexpected plugins/fragments dir
- ArrayList productVIDs = new ArrayList();
- ArrayList componentVIDs = new ArrayList();
- ArrayList pluginVIDs = new ArrayList();
- ArrayList fragmentVIDs = new ArrayList();
-
- if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_PLUGINS ) {
- IComponentDescriptor comp = null;
- if (getData() instanceof IComponentEntryDescriptor) {
- comp = ((IComponentEntryDescriptor) getData()).getComponentDescriptor();
- } else {
- comp = (IComponentDescriptor) getData();
- }
- if (comp != null) {
- IPluginEntryDescriptor[] plugins = comp.getPluginEntries();
- for (int i=0; i<plugins.length; i++) {
- dirNames.addElement( UMEclipseTree.PLUGINS_DIR + "/" + plugins[i].getDirName());
- pluginVIDs.add(new LaunchInfo.VersionedIdentifier(plugins[i].getUniqueIdentifier(), plugins[i].getVersionStr()));
- }
- IFragmentEntryDescriptor[] fragments = comp.getFragmentEntries();
- for (int i=0; i<fragments.length; i++) {
- dirNames.addElement( UMEclipseTree.FRAGMENTS_DIR + "/" + fragments[i].getDirName());
- fragmentVIDs.add(new LaunchInfo.VersionedIdentifier(plugins[i].getUniqueIdentifier(), plugins[i].getVersionStr()));
- }
- } else {
- strErrorMessage = UpdateManagerStrings.getString("S_Error_in_registry");
- }
- } else if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_INSTALL) {
- rc = UpdateManagerConstants.INSTALL_XML_MISSING;
- if (getData() instanceof IProductDescriptor) {
- IProductDescriptor desc = (IProductDescriptor) getData();
- dirNames.addElement(UMEclipseTree.INSTALL_DIR + "/" + UMEclipseTree.PRODUCTS_DIR + "/" + desc.getDirName());
- productVIDs.add(new LaunchInfo.VersionedIdentifier(desc.getUniqueIdentifier(), desc.getVersionStr()));
- } else {
- IComponentDescriptor desc = null;
- if (getData() instanceof IComponentEntryDescriptor) {
- desc = ((IComponentEntryDescriptor) getData()).getComponentDescriptor();
- } else {
- desc = (IComponentDescriptor) getData();
- }
- dirNames.addElement(UMEclipseTree.INSTALL_DIR + "/" + UMEclipseTree.COMPONENTS_DIR + "/" + desc.getDirName());
- componentVIDs.add(new LaunchInfo.VersionedIdentifier(desc.getUniqueIdentifier(), desc.getVersionStr()));
- }
- }
- if (!LaunchInfo.getCurrent().installPending(productVIDs, componentVIDs, pluginVIDs, fragmentVIDs)) {
- strErrorMessage = UpdateManagerStrings.getString("S_Error_occurred_during_installation_setup");
- }
-
-
- // Create a file specification from the input URL
- //-----------------------------------------------
- String strFilespec = UMEclipseTree.getFileInPlatformString(urlInput);
-
- JarFile jarFile = null;
-
- try {
- jarFile = new JarFile(strFilespec);
- }
- catch (IOException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Unable_to_open_Jar_file"), ex);
- }
-
- if ((jarFile != null) && (strErrorMessage == null)) {
-
- JarEntry entry = null;
- InputStream streamInputEntry = null;
-
- int iCount = jarFile.size();
-
- // Set up progress monitor
- // Compute the filename without the path information
- //--------------------------------------------------
- String strFilename = strFilespec;
- int iIndex = strFilespec.lastIndexOf(File.separatorChar);
-
- if (iIndex >= 0 && iIndex < strFilespec.length() - 1) {
- strFilename = strFilespec.substring(iIndex + 1);
- }
-
- if (progressMonitor != null) {
- progressMonitor.beginTask(UpdateManagerStrings.getString("S_Install") + ": " + strFilename, iCount);
- }
-
-
- // Do each jar file entry
- //-----------------------
- Enumeration enum = jarFile.entries();
- while (enum.hasMoreElements() == true) {
- entry = (JarEntry) enum.nextElement();
- String entryName = entry.getName();
-
- if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_PLUGINS ) {
- // Unzip plugins and fragments. Skip entries not under plugins/ or fragments/ trees
- //-----------------------------------------------------------------------------------
- if ((!entryName.startsWith(UMEclipseTree.PLUGINS_DIR) &&
- !entryName.startsWith(UMEclipseTree.FRAGMENTS_DIR))
- || entryName.endsWith("/")) {
- if (progressMonitor != null) progressMonitor.worked(1);
- continue;
- }
- String prefix = entryName;
- int second_slash = entryName.indexOf("/", (entryName.indexOf("/")+1));
- if (second_slash > 0)
- prefix = entryName.substring(0,second_slash);
- int match = dirNames.indexOf(prefix);
- if (match < 0) { // not a valid plugin
- if (!dirNamesUnexpected.contains(prefix))
- dirNamesUnexpected.addElement(prefix);
- continue;
- }
- // got an entry with matching directory
- // keep track of which ones they are
- if (!dirNamesInstalled.contains(prefix))
- dirNamesInstalled.addElement(prefix);
- } else if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_INSTALL) {
- // Skip over entries that don't start with the right dir naming convention (id_version)
- //-------------------------------------------------------------------------------------
- if (!entryName.startsWith((String)dirNames.firstElement()) || entryName.endsWith("/")) {
- if (progressMonitor != null) progressMonitor.worked(1);
- continue;
- }
- // got an entry - as long as we have install.xml we're happy
- if (entryName.equals((String)dirNames.firstElement()+"/"+IManifestAttributes.INSTALL_MANIFEST))
- rc = UpdateManagerConstants.OK;
- } else if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_BINDIR) {
- // Unzip the bin directory, if it exists
- //--------------------------------------
- if (!entryName.startsWith(UMEclipseTree.BIN_DIR) || entryName.endsWith("/")) {
- if (progressMonitor != null) progressMonitor.worked(1);
- continue;
- }
- // got bin dir
- rc = UpdateManagerConstants.OK;
- }
- try {
- streamInputEntry = jarFile.getInputStream(entry);
- }
- catch (IOException ex) {
- streamInputEntry = null;
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Unable_to_open_jar_entry_input_stream"), ex);
- break;
- }
- catch (SecurityException ex) {
- streamInputEntry = null;
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Encountered_jar_entry_security_exception"), ex);
- break;
- }
-
-
- // Create an output URL
- //---------------------
- URL urlOutputFile = null;
-
- if (streamInputEntry != null) {
- try {
- // Ensure file separator between target directory, and source file path
- //---------------------------------------------------------------------
- StringBuffer strbTarget = new StringBuffer(getTarget());
- if (getTarget().endsWith("/") == false) {
- strbTarget.append('/');
- }
- strbTarget.append(entryName);
- urlOutputFile = new URL(strbTarget.toString());
- File fTarget = new File(UMEclipseTree.getFileInPlatformString(urlOutputFile));
- if (fTarget.exists() &&
- (getAction() != UpdateManagerConstants.OPERATION_UNZIP_BINDIR)) {
- // we will not override existing files, except in bin/
- if (progressMonitor != null) progressMonitor.worked(1);
- continue;
- }
- }
- catch (MalformedURLException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Unable_to_create_jar_entry_URL"), ex);
- break;
- }
- }
-
-
- // Create a file output stream
- //----------------------------
- OutputStream streamOutputFile = null;
-
- if (urlOutputFile != null) {
- try {
- streamOutputFile = getFileOutputStream(urlOutputFile);
- }
- catch (IOException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Unable_to_create_output_file_for_Jar_entry") + ": " + urlOutputFile.toExternalForm(), ex);
- break;
- }
- }
-
- // Copy from input to output stream
- //---------------------------------
- if (streamInputEntry != null && streamOutputFile != null) {
-
- // Do not alter progress monitor
- //------------------------------
- strErrorMessage = copyStream(streamInputEntry, streamOutputFile, 0, entryName, null, true );
- if (strErrorMessage != null) {
- break;
- }
- }
- try {
- if (streamInputEntry != null) streamInputEntry.close();
- if (streamOutputFile != null) streamOutputFile.close();
- } catch (java.io.IOException ex) {
- // unchecked
- }
- if (progressMonitor != null) progressMonitor.worked(1);
- } // while
-// strErrorMessage = "Error Injected!";
- try {
- jarFile.close();
- } catch (java.io.IOException ex) {
- // unchecked
- }
- } // if jarFile is not null
-
- // tally up what's unzipped and what's not
- //---------------------------------
- if (strErrorMessage == null) {
- if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_PLUGINS ) {
- if (dirNamesUnexpected.size() > 0) {
- rc = UpdateManagerConstants.UNDEFINED_CONTENTS;
- strErrorMessage = UpdateManagerStrings.getString("S_Undefined_contents_found_in_Jar");
- }
- else if (!dirNamesInstalled.containsAll(dirNames)) {
- rc = UpdateManagerConstants.MISSING_CONTENTS;
- strErrorMessage = UpdateManagerStrings.getString("S_Unable_to_find_defined_contents_in_Jar");
- }
- } else if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_INSTALL) {
- if (rc != UpdateManagerConstants.OK)
- strErrorMessage = UpdateManagerStrings.getString("S_Unable_to_find_install_manifest_file_in_Jar");
- }
- }
-
- // Call LaunchInfo.installConfirmed if all clean
- // Otherwise, call after we've cleaned up (undo*)
- //-----------------------------------------------
- if (strErrorMessage == null) {
- if (!LaunchInfo.getCurrent().installConfirmed(productVIDs, componentVIDs, pluginVIDs, fragmentVIDs)) {
- strErrorMessage = UpdateManagerStrings.getString("S_Error_occurred_during_installation_completion");
- }
- }
-
- if (progressMonitor != null) progressMonitor.done();
-
- // Increment the number of attempts
- //---------------------------------
- incrementAttemptCount();
-
- // Error return
- //-------------
- if (strErrorMessage != null) {
- UMSessionManagerMessage message = createMessage();
- message.setText(strErrorMessage);
- setStatus(UpdateManagerConstants.STATUS_FAILED);
- return false;
- }
-
- // Successful return
- //------------------
- setStatus(UpdateManagerConstants.STATUS_SUCCEEDED);
-
- return true;
-}
-/**
- *
- *
- */
-public boolean doVerify(IProgressMonitor progressMonitor) {
-
- String strErrorMessage = null;
-
- // Input URL
- //----------
- URL urlInput = null;
-
- try {
- urlInput = new URL(getSource());
- }
- catch (MalformedURLException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Source_URL_is_malformed"), ex);
- }
-
- IInstallable installable = (IInstallable) getData();
-
- String strName = installable.getLabel();
- String strId = null;
- String strProviderName = null;
-
- if (installable instanceof IProductDescriptor) {
- strId = ((IProductDescriptor) installable).getUniqueIdentifier();
- strProviderName = ((IProductDescriptor) installable).getProviderName();
- }
- else if (installable instanceof IComponentDescriptor) {
- strId = ((IComponentDescriptor) installable).getUniqueIdentifier();
- strProviderName = ((IComponentDescriptor) installable).getProviderName();
- }
- else if (installable instanceof IComponentEntryDescriptor) {
- strId = ((IComponentEntryDescriptor) installable).getUniqueIdentifier();
- }
- else if (installable instanceof IPluginEntryDescriptor) {
- strId = ((IPluginEntryDescriptor) installable).getUniqueIdentifier();
- }
- else if (installable instanceof IFragmentEntryDescriptor) {
- strId = ((IFragmentEntryDescriptor) installable).getUniqueIdentifier();
- }
-
- JarVerificationService verifier = UpdateManager.getCurrentInstance().getJarVerifier();
-
- JarVerificationResult result = verifier.okToInstall(new File(urlInput.getFile()), strId, strName, strProviderName, progressMonitor);
-
- if (result.getResultCode() == JarVerificationResult.CANCEL_INSTALL) {
- Exception ex = result.getResultException();
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Installation_cancelled_by_user"), ex);
- }
-
- // Increment the number of attempts
- //---------------------------------
- incrementAttemptCount();
-
- // Error return
- //-------------
- if (strErrorMessage != null) {
- UMSessionManagerMessage message = createMessage();
- message.setText(strErrorMessage);
- setStatus(UpdateManagerConstants.STATUS_FAILED);
- return false;
- }
-
- // Successful return
- //------------------
- setStatus(UpdateManagerConstants.STATUS_SUCCEEDED);
-
- return true;
-}
-/**
- * Execute copy from source URL to target URL.
- */
-public boolean execute(IProgressMonitor progressMonitor) {
-
- if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_INSTALL ||
- getAction() == UpdateManagerConstants.OPERATION_UNZIP_PLUGINS ||
- getAction() == UpdateManagerConstants.OPERATION_UNZIP_BINDIR) {
- return doUnzip(progressMonitor);
- }
-
- else if (getAction() == UpdateManagerConstants.OPERATION_COPY) {
- return doCopy(progressMonitor);
- }
- else if (getAction() == UpdateManagerConstants.OPERATION_VERIFY_JAR) {
- return doVerify(progressMonitor);
- }
- return false;
-}
-/**
- * Execute any pending or failed updates.
- */
-public boolean executeUndo(IProgressMonitor progressMonitor) {
-
- // Undo all successful and failed operations
- //------------------------------------------
- if (getStatus().equals(UpdateManagerConstants.STATUS_PENDING) == false) {
- if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_INSTALL ||
- getAction() == UpdateManagerConstants.OPERATION_UNZIP_PLUGINS) {
- return undoUnzip(progressMonitor);
- }
- else if (getAction() == UpdateManagerConstants.OPERATION_COPY) {
- return undoCopy(progressMonitor);
- }
- else if (getAction() == UpdateManagerConstants.OPERATION_VERIFY_JAR){
- return undoVerify(progressMonitor);
- }
- }
-
- return true;
-}
-/**
- *
- * @return java.lang.String
- */
-public String getAction() {
-
- return _propertyAction.getValue();
-}
-/**
- * Creates a file output stream from the URL.
- * @param url java.net.URL
- */
-private FileOutputStream getFileOutputStream(URL url) throws IOException {
-
- // Convert the URL to a string
- //----------------------------
- String strFilespec = UMEclipseTree.getFileInPlatformString(url);
-
-
- // Create directory structure
- //---------------------------
- int iIndex = strFilespec.lastIndexOf(File.separator);
- if (iIndex >= 0) {
- String strPath = strFilespec.substring(0, iIndex+1);
-
- File fileDirectory = new File(strPath);
- if (fileDirectory.exists() == false) {
- fileDirectory.mkdirs();
- }
- }
-
- // Open / create the file
- //-----------------------
- File file = new File(strFilespec);
- boolean bExists = file.exists();
-
- if (bExists == false) {
- bExists = file.createNewFile();
- }
-
- // Create the output stream
- //-------------------------
- return new FileOutputStream(file);
-}
-/**
- * @return java.lang.String
- */
-public String getId() {
-
- return _propertyID.getValue();
-}
-/**
- *
- * @return java.lang.String
- */
-public String getSource() {
-
- return _propertySource.getValue();
-}
-/**
- * @param strb java.lang.StringBuffer
- * @param iIndentation int
- */
-public void getStatusString(java.lang.StringBuffer strb, int iIndentation) {
-
- if (getStatus().equals(UpdateManagerConstants.STATUS_SUCCEEDED) == true) {
- return;
- }
- else if (getStatus().equals(UpdateManagerConstants.STATUS_PENDING) == true) {
- return;
- }
-
- else {
- if (getAction().equals(UpdateManagerConstants.OPERATION_COPY) == true) {
- indent(strb, iIndentation);
- strb.append(UpdateManagerStrings.getString("S_Copy") + ": " + getSource());
- }
- else if (getAction().equals(UpdateManagerConstants.OPERATION_UNZIP_INSTALL) ||
- getAction().equals(UpdateManagerConstants.OPERATION_UNZIP_PLUGINS) == true) {
- indent(strb, iIndentation);
- strb.append(UpdateManagerStrings.getString("S_Install") + ": " + getSource());
- }
-
- // Obtain messages
- //----------------
- for (int i = 0; i < _alMessages.size(); ++i) {
- indent(strb, iIndentation + 2);
- strb.append(((UMSessionManagerMessage) _alMessages.get(i)).getText());
- }
- }
-}
-/**
- *
- * @return java.lang.String
- */
-public String getTarget() {
-
- return _propertyTarget.getValue();
-}
-/**
- *
- * @param actionType java.lang.String
- */
-public void setAction(String strAction) {
- _propertyAction.setValue( strAction != null ? strAction : UpdateManagerConstants.STRING_EMPTY );
-}
-/**
- *
- */
-public void setId( String strID ) {
- _propertyID.setValue( strID != null ? strID : UpdateManagerConstants.STRING_EMPTY );
-}
-/**
- *
- */
-public void setSource( String strSource ) {
- _propertySource.setValue( strSource != null ? strSource : UpdateManagerConstants.STRING_EMPTY );
-}
-/**
- *
- */
-public void setTarget( String strTarget ) {
- _propertyTarget.setValue( strTarget != null ? strTarget : UpdateManagerConstants.STRING_EMPTY );
-}
-/**
- *
- *
- */
-public boolean undoCopy(IProgressMonitor progressMonitor) {
-
- String strErrorMessage = null;
-
- // Output URL
- //-----------
- URL urlOutput = null;
-
- try {
- urlOutput = new URL(getTarget());
- }
- catch (MalformedURLException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Target_URL_is_malformed"), ex);
- }
-
- if (urlOutput != null) {
-
- // Convert the URL to a string
- //----------------------------
- String strFilespec = UMEclipseTree.getFileInPlatformString(urlOutput);
-
- // Delete the file
- //----------------
- File file = new File(strFilespec);
- if (file.exists() == true) {
- if (file.delete() == false) {
- strErrorMessage = UpdateManagerStrings.getString("S_Unable_to_delete_file") + ": " + strFilespec;
- }
- }
- }
-
- // Reset the number of attempts
- //-----------------------------
- resetAttemptCount();
-
- // Error return
- //-------------
- if (strErrorMessage != null) {
- if (getStatus().equals(UpdateManagerConstants.STATUS_SUCCEEDED) == true)
- setStatus(UpdateManagerConstants.STATUS_SUCCEEDED_UNDO_FAILED);
- else
- setStatus(UpdateManagerConstants.STATUS_FAILED_UNDO_FAILED);
-
- return false;
- }
-
- // Successful return
- //------------------
- if (getStatus().equals(UpdateManagerConstants.STATUS_SUCCEEDED) == true)
- setStatus(UpdateManagerConstants.STATUS_SUCCEEDED_UNDO_SUCCEEDED);
- else
- setStatus(UpdateManagerConstants.STATUS_FAILED_UNDO_SUCCEEDED);
-
- return true;
-}
-/**
- *
- *
- */
-public boolean undoUnzip(IProgressMonitor progressMonitor) {
-
- String strErrorMessage = null;
-
- // Input URL
- //----------
- URL urlInput = null;
- try {
- urlInput = new URL(getSource());
- }
- catch (MalformedURLException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Source_URL_is_malformed"), ex);
- }
-
- // Output URL
- //-----------
- URL urlOutput = null;
- try {
- urlOutput = new URL(getTarget());
- }
- catch (MalformedURLException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Target_URL_is_malformed"), ex);
- }
-
- // For plugins or component/configuration jar,
- // set up the list of directories to look for
- // This section contains subtle differences from doUnzip()
- //--------------------------------------------------------
- Vector dirNames = new Vector();
- ArrayList productVIDs = new ArrayList();
- ArrayList componentVIDs = new ArrayList();
- ArrayList pluginVIDs = new ArrayList();
- ArrayList fragmentVIDs = new ArrayList();
- if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_PLUGINS ) {
- IComponentDescriptor comp = null;
- if (getData() instanceof IComponentEntryDescriptor) {
- comp = ((IComponentEntryDescriptor) getData()).getComponentDescriptor();
- } else {
- comp = (IComponentDescriptor) getData();
- }
- if (comp != null) {
- IPluginEntryDescriptor[] plugins = comp.getPluginEntries();
- for (int i=0; i<plugins.length; i++) {
- dirNames.addElement( UMEclipseTree.PLUGINS_DIR + "/" + plugins[i].getDirName());
- pluginVIDs.add(new LaunchInfo.VersionedIdentifier(plugins[i].getUniqueIdentifier(), plugins[i].getVersionStr()));
- }
- IFragmentEntryDescriptor[] fragments = comp.getFragmentEntries();
- for (int i=0; i<fragments.length; i++) {
- dirNames.addElement( UMEclipseTree.FRAGMENTS_DIR + "/" + fragments[i].getDirName());
- fragmentVIDs.add(new LaunchInfo.VersionedIdentifier(plugins[i].getUniqueIdentifier(), plugins[i].getVersionStr()));
- }
- } else {
- strErrorMessage = UpdateManagerStrings.getString("S_Error_in_registry");
- }
- } else if (getAction() == UpdateManagerConstants.OPERATION_UNZIP_INSTALL) {
- // rc = UpdateManagerConstants.INSTALL_XML_MISSING;
- if (getData() instanceof IProductDescriptor) {
- IProductDescriptor desc = (IProductDescriptor) getData();
- dirNames.addElement(UMEclipseTree.INSTALL_DIR + "/" + UMEclipseTree.PRODUCTS_DIR + "/" + desc.getDirName() + "/");
- productVIDs.add(new LaunchInfo.VersionedIdentifier(desc.getUniqueIdentifier(), desc.getVersionStr()));
- } else {
- IComponentDescriptor desc = (IComponentDescriptor) getData();
- dirNames.addElement(UMEclipseTree.INSTALL_DIR + "/" + UMEclipseTree.COMPONENTS_DIR + "/" + desc.getDirName() + "/");
- componentVIDs.add(new LaunchInfo.VersionedIdentifier(desc.getUniqueIdentifier(), desc.getVersionStr()));
- }
- }
-
-
- // Create a file specification from the input URL
- //-----------------------------------------------
- String strFilespec = UMEclipseTree.getFileInPlatformString(urlInput);
-
- JarFile jarFile = null;
-
- try {
- jarFile = new JarFile(strFilespec);
- }
- catch (IOException ex) {
- strErrorMessage = createMessageString(UpdateManagerStrings.getString("S_Unable_to_open_Jar_file"), ex);
- }
-
- if (jarFile != null) {
-
- JarEntry entry = null;
-
- int iCount = jarFile.size();
-
- // Set up progress monitor
- // Compute the filename without the path information
- //--------------------------------------------------
- String strFilename = strFilespec;
- int iIndex = strFilespec.lastIndexOf(File.separatorChar);
-
- if (iIndex >= 0 && iIndex < strFilespec.length() - 1) {
- strFilename = strFilespec.substring(iIndex + 1);
- }
-
- if (progressMonitor != null) progressMonitor.beginTask(UpdateManagerStrings.getString("S_Undo") + ": " + strFilename, iCount);
-
- // Do each jar file entry
- //-----------------------
- Enumeration enum = jarFile.entries();
-
- while (enum.hasMoreElements() == true) {
- entry = (JarEntry) enum.nextElement();
- String entryName = entry.getName();
-
- if (getAction().equals(UpdateManagerConstants.OPERATION_UNZIP_PLUGINS)) {
- // Remove the plugins and fragments. Skip entries not under plugins/ or fragments/ trees
- //----------------------------------------------------------------------------------------
- if ((!entryName.startsWith(UMEclipseTree.PLUGINS_DIR)) &&
- (!entryName.startsWith(UMEclipseTree.FRAGMENTS_DIR))) {
- if (progressMonitor != null) progressMonitor.worked(1);
- continue;
- }
- if ((entryName.equals(UMEclipseTree.PLUGINS_DIR + "/")) ||
- (entryName.equals(UMEclipseTree.FRAGMENTS_DIR + "/"))) {
- if (progressMonitor != null) progressMonitor.worked(1);
- continue;
- }
- // Don't bother cleaning up the entries not matching the expected list
- // They weren't unzipped in the first place
- //--------------------------------------------------------------------
- String prefix = entryName;
- int second_slash = entryName.indexOf("/", (entryName.indexOf("/")+1));
- if (second_slash > 0)
- prefix = entryName.substring(0,second_slash);
- int match = dirNames.indexOf(prefix);
- if (match < 0) { // not a valid plugin
- continue;
- }
- } else if (getAction().equals(UpdateManagerConstants.OPERATION_UNZIP_INSTALL)) {
- // Remove the component/product items. Skip over entries that don't match the dirname
- //------------------------------------------------------------------------------------
- if (!entryName.startsWith((String)dirNames.firstElement())) {
- if (progressMonitor != null) progressMonitor.worked(1);
- continue;
- }
- } else if (getAction().equals(UpdateManagerConstants.OPERATION_UNZIP_BINDIR)) {
- // No-op. The bin directory contents cannot be undone
- //-----------------------------------------------------
- break;
- }
-
- if (urlOutput != null) {
- // Build pathname to actual install location
- //------------------------------------------
- strFilespec = urlOutput.getFile() + "/" + entryName;
- strFilespec = strFilespec.replace('/',File.separatorChar);
- int k = strFilespec.indexOf(UMEclipseTree.DEVICE_SEPARATOR);
- if (k != -1 && strFilespec.startsWith(File.separator)) {
- strFilespec = strFilespec.substring(1);
- }
-
- // Delete the file or directory
- //-----------------------------
- File file = new File(strFilespec);
- if (file.exists() == true) {
- if (file.isDirectory())
- UpdateManager.cleanupDirectory(file);
- if (file.delete() == false) {
- strErrorMessage = UpdateManagerStrings.getString("S_Unable_to_delete_file") + ": " + strFilespec;
- }
- }
- }
- if (progressMonitor != null) progressMonitor.worked(1);
- } // while
-
- try {
- jarFile.close();
- } catch (java.io.IOException ex) {
- // unchecked
- }
- } // if jarFile is not null
-
- // Call LaunchInfo.installConfirmed if all clean
- //-----------------------------------------------
- if (strErrorMessage == null) {
- if (!LaunchInfo.getCurrent().installConfirmed(productVIDs, componentVIDs, pluginVIDs, fragmentVIDs)) {
- strErrorMessage = UpdateManagerStrings.getString("S_Error_occurred_during_installation_completion");
- }
- }
-
- if (progressMonitor != null) progressMonitor.done();
-
- // Reset the number of attempts
- //-----------------------------
- resetAttemptCount();
-
- // Error return
- //-------------
- if (strErrorMessage != null) {
- if (getStatus().equals(UpdateManagerConstants.STATUS_SUCCEEDED) == true)
- setStatus(UpdateManagerConstants.STATUS_SUCCEEDED_UNDO_FAILED);
- else
- setStatus(UpdateManagerConstants.STATUS_FAILED_UNDO_FAILED);
-
- return false;
- }
-
- // Successful return
- //------------------
- if (getStatus().equals(UpdateManagerConstants.STATUS_SUCCEEDED) == true)
- setStatus(UpdateManagerConstants.STATUS_SUCCEEDED_UNDO_SUCCEEDED);
- else
- setStatus(UpdateManagerConstants.STATUS_FAILED_UNDO_SUCCEEDED);
-
- return true;
-}
-/**
- *
- *
- */
-public boolean undoVerify(IProgressMonitor progressMonitor) {
-
- resetAttemptCount();
-
- if (getStatus().equals(UpdateManagerConstants.STATUS_SUCCEEDED) == true)
- setStatus(UpdateManagerConstants.STATUS_SUCCEEDED_UNDO_SUCCEEDED);
- else
- setStatus(UpdateManagerConstants.STATUS_FAILED_UNDO_SUCCEEDED);
-
- return true;
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerParcel.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerParcel.java
deleted file mode 100644
index b0c7d97..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerParcel.java
+++ /dev/null
@@ -1,327 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.internal.boot.update.*;
-import java.util.*;
-
-/**
- * This class represents either a component or a product. A parcel can
- * have sub parcels, and copy objects. Attributes are action (add, fix), id, status (pending, complete),
- * type (component / product).
- */
-
-public class UMSessionManagerParcel extends UMSessionManagerEntry {
-
- protected ArrayList _alParcels = new ArrayList();
- protected ArrayList _alOperations = new ArrayList();
-
- protected ILogEntryProperty _propertyAction = null;
- protected ILogEntryProperty _propertyID = null;
- protected ILogEntryProperty _propertyType = null;
-/**
- * UpdateManagerParcel constructor comment.
- */
-public UMSessionManagerParcel( ILogEntry logEntry ) {
- super( logEntry );
-
- // Action
- //-------
- _propertyAction = _logEntry.getProperty(UpdateManagerConstants.STRING_ACTION);
-
- if (_propertyAction == null) {
- _propertyAction = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_ACTION, UpdateManagerConstants.STRING_EMPTY );
- logEntry.addProperty( _propertyAction );
- }
-
- // Id
- //---
- _propertyID = _logEntry.getProperty(UpdateManagerConstants.STRING_ID);
-
- if (_propertyID == null) {
- _propertyID = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_ID, UpdateManagerConstants.STRING_EMPTY );
- logEntry.addProperty( _propertyID );
- }
-
- // Type
- //-----
- _propertyType = _logEntry.getProperty(UpdateManagerConstants.STRING_TYPE);
-
- if (_propertyType == null) {
- _propertyType = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_TYPE, UpdateManagerConstants.STRING_EMPTY );
- logEntry.addProperty( _propertyType );
- }
-}
-/**
- * @param logEntry org.eclipse.update.internal.core.LogEntry
- */
-public void buildTreeFromLog(ILogEntry logEntry) {
-
- super.buildTreeFromLog( logEntry );
-
- // Action
- //-------
- ILogEntryProperty property = _logEntry.getProperty(UpdateManagerConstants.STRING_ACTION);
-
- if (property != null) {
- _propertyAction = property;
- }
-
- // Id
- //---
- property = _logEntry.getProperty(UpdateManagerConstants.STRING_ID);
-
- if (property != null) {
- _propertyID = property;
- }
-
- // Type
- //-----
- property = _logEntry.getProperty(UpdateManagerConstants.STRING_TYPE);
-
- if (property != null) {
- _propertyType = property;
- }
-
- ILogEntry[] entries = logEntry.getChildEntries();
-
- // Parcels
- //--------
- int iIndex = 0;
- UMSessionManagerParcel parcel = null;
-
- for( int i = 0; i < entries.length; ++i) {
- if (entries[i] != null && entries[i].getName().equals(UpdateManagerConstants.STRING_PARCEL) == true) {
- parcel = new UMSessionManagerParcel( entries[i] );
- _alParcels.add( parcel );
-
- parcel.buildTreeFromLog( entries[i] );
- }
- }
-
- // Operations
- //-----------
- iIndex = 0;
- UMSessionManagerOperation operation = null;
-
- for( int i = 0; i < entries.length; ++i) {
- if (entries[i] != null && entries[i].getName().equals(UpdateManagerConstants.STRING_OPERATION) == true) {
- operation = new UMSessionManagerOperation( entries[i] );
- _alOperations.add( operation );
-
- operation.buildTreeFromLog( entries[i] );
- }
- }
-}
-/**
- * @return org.eclipse.update.internal.core.UMSessionManagerOperation
- * @param actionType java.lang.String
- */
-public UMSessionManagerOperation createOperation() {
-
- // Create a new log entry
- //-----------------------
- ILogEntry logEntryChild = new LogEntry( _logEntry, UpdateManagerConstants.STRING_OPERATION );
- _logEntry.addChildEntry( logEntryChild );
-
- // Create the operation object
- //----------------------------
- UMSessionManagerOperation operation = new UMSessionManagerOperation( logEntryChild );
- _alOperations.add( operation );
-
- return operation;
-}
-/**
- * Creates a sub-parcel
- * @return org.eclipse.update.internal.core.UpdateManagerParcel
- * @param actionType java.lang.String
- */
-public UMSessionManagerParcel createParcel() {
-
- // Create a new log entry
- //-----------------------
- ILogEntry logEntryChild = new LogEntry( _logEntry, UpdateManagerConstants.STRING_PARCEL );
- _logEntry.addChildEntry( logEntryChild );
-
- // Create the parcel object
- //-------------------------
- UMSessionManagerParcel parcel = new UMSessionManagerParcel( logEntryChild );
- _alParcels.add( parcel );
-
- return parcel;
-}
-/**
- * Execute any pending or failed updates.
- */
-public boolean execute(IProgressMonitor progressMonitor) {
-
- // Stop if any failure occurs
- //---------------------------
- boolean bSuccess = true;
-
- // Parcels may be sequential, do in forward order
- //-----------------------------------------------
- for (int i = 0; i < _alParcels.size(); ++i) {
-
- if (((UMSessionManagerParcel) _alParcels.get(i)).execute(progressMonitor) == false) {
- bSuccess = false;
- break;
- }
- }
-
- // Operations may be sequential, do in forward order
- //--------------------------------------------------
- if (bSuccess == true) {
- for (int i = 0; i < _alOperations.size(); ++i) {
-
- if (((UMSessionManagerOperation) _alOperations.get(i)).execute(progressMonitor) == false) {
- bSuccess = false;
- break;
- }
- }
- }
-
- // Status
- //-------
- setStatus(bSuccess == true ? UpdateManagerConstants.STATUS_SUCCEEDED : UpdateManagerConstants.STATUS_FAILED);
-
- incrementAttemptCount();
-
- return bSuccess;
-}
-/**
- * Execute any pending or failed updates.
- */
-public boolean executeUndo(org.eclipse.core.runtime.IProgressMonitor progressMonitor) {
-
- // Undo only failed attempts
- //--------------------------
- if (getStatus().equals(UpdateManagerConstants.STATUS_FAILED) == false) {
- return true;
- }
-
- // Attempt all even if failure occurs
- //-----------------------------------
- boolean bSuccess = true;
-
- // Parcels may be sequential, undo in reverse order
- //-------------------------------------------------
- for (int i = _alParcels.size() - 1; i >= 0; --i) {
-
- if (((UMSessionManagerParcel) _alParcels.get(i)).executeUndo(progressMonitor) == false) {
- bSuccess = false;
- }
- }
-
- // Operations may be sequential, undo in reverse order
- //----------------------------------------------------
- for (int i = _alOperations.size() - 1; i >= 0; --i) {
-
- if (((UMSessionManagerOperation) _alOperations.get(i)).executeUndo(progressMonitor) == false) {
- bSuccess = false;
- }
- }
-
- // Status
- //-------
- setStatus(bSuccess == true ? UpdateManagerConstants.STATUS_FAILED_UNDO_SUCCEEDED : UpdateManagerConstants.STATUS_FAILED_UNDO_FAILED);
-
- resetAttemptCount();
-
- return bSuccess;
-}
-/**
- * @return java.lang.String
- */
-public String getAction() {
-
- return _propertyAction.getValue();
-}
-/**
- * @return java.lang.String
- */
-public String getId() {
-
- return _propertyID.getValue();
-}
-/**
- * Returns all operations
- * @return org.eclipse.update.internal.core.UMSessionManagerOperation[]
- */
-public UMSessionManagerOperation[] getOperations() {
-
- UMSessionManagerOperation[] operations = new UMSessionManagerOperation[_alOperations.size()];
- return (UMSessionManagerOperation[])_alOperations.toArray( operations );
-}
-/**
- * Returns all sub-parcels
- * @return org.eclipse.update.internal.core.UpdateManagerParcel[]
- */
-public UMSessionManagerParcel[] getParcels() {
-
- UMSessionManagerParcel[] parcels = new UMSessionManagerParcel[_alParcels.size()];
- return (UMSessionManagerParcel[])_alParcels.toArray( parcels );
-}
-/**
- * @param strb java.lang.StringBuffer
- * @param iIndentation int
- */
-public void getStatusString(java.lang.StringBuffer strb, int iIndentation) {
-
- if (getStatus().equals(UpdateManagerConstants.STATUS_SUCCEEDED) == true) {
- return;
- }
-
- else {
- // Parcel label
- //-------------
- IInstallable descriptor = (IInstallable) getData();
-
- indent(strb, iIndentation);
- strb.append( descriptor.getLabel());
-
-
- // Parcels may be sequential, do in forward order
- //-----------------------------------------------
- for (int i = 0; i < _alParcels.size(); ++i) {
-
- ((UMSessionManagerParcel) _alParcels.get(i)).getStatusString(strb, iIndentation + 2);
- }
-
- // Operations may be sequential, do in forward order
- //--------------------------------------------------
- for (int i = 0; i < _alOperations.size(); ++i) {
-
- ((UMSessionManagerOperation) _alOperations.get(i)).getStatusString(strb, iIndentation + 2);
- }
- }
-}
-/**
- * @return java.lang.String
- */
-public String getType() {
-
- return _propertyType.getValue();
-}
-/**
- *
- */
-public void setAction( String strAction ) {
- _propertyAction.setValue( strAction != null ? strAction : UpdateManagerConstants.STRING_EMPTY );
-}
-/**
- *
- */
-public void setId( String strID ) {
- _propertyID.setValue( strID != null ? strID : UpdateManagerConstants.STRING_EMPTY );
-}
-/**
- *
- */
-public void setType( String strType ) {
- _propertyType.setValue( strType != null ? strType : UpdateManagerConstants.STRING_EMPTY );
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerSession.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerSession.java
deleted file mode 100644
index 369855a..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UMSessionManagerSession.java
+++ /dev/null
@@ -1,207 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.internal.boot.update.*;
-import java.util.Date;
-import java.util.*;
-
-/**
- * This class represents a session in which update manager operations are
- * executed. This class contains parcel objects and has status and timestamp
- * as its attributes. The timestamp attribute is automatically set when the session
- * is created for the first time.
- */
-
-public class UMSessionManagerSession extends UMSessionManagerEntry {
- protected ArrayList _alParcels = new ArrayList();
- protected ILogEntryProperty _propertyTimestamp = null;
-/**
- * UpdateManagerSession constructor comment.
- */
-public UMSessionManagerSession(ILogEntry logEntry) {
- super( logEntry );
-
- // Timestamp
- //----------
- _propertyTimestamp = _logEntry.getProperty(UpdateManagerConstants.STRING_TIMESTAMP);
-
- if (_propertyTimestamp == null) {
- _propertyTimestamp = new LogEntryProperty(logEntry, UpdateManagerConstants.STRING_TIMESTAMP, new Date().toString() );
- logEntry.addProperty( _propertyTimestamp );
- }
-}
-/**
- * @param logEntry org.eclipse.update.internal.core.LogEntry
- */
-public void buildTreeFromLog(ILogEntry logEntry) {
-
- super.buildTreeFromLog( logEntry );
-
- // Timestamp
- //----------
- ILogEntryProperty property = _logEntry.getProperty(UpdateManagerConstants.STRING_TIMESTAMP);
-
- if (property != null) {
- _propertyTimestamp = property;
- }
-
-
- ILogEntry[] entries = logEntry.getChildEntries();
-
- // Parcels
- //--------
- int iIndex = 0;
- UMSessionManagerParcel parcel = null;
-
- for( int i = 0; i < entries.length; ++i) {
- if (entries[i] != null && entries[i].getName().equals(UpdateManagerConstants.STRING_PARCEL) == true) {
- parcel = new UMSessionManagerParcel( entries[i] );
- _alParcels.add( parcel );
-
- parcel.buildTreeFromLog( entries[i] );
- }
- }
-}
-/**
- *
- * @return org.eclipse.update.internal.core.UMTaskManagerParcel
- * @param actionType java.lang.String
- */
-public UMSessionManagerParcel createParcel() {
-
- // Create a new log entry
- //-----------------------
- ILogEntry logEntryChild = new LogEntry( _logEntry, UpdateManagerConstants.STRING_PARCEL );
- _logEntry.addChildEntry( logEntryChild );
-
- // Create the copy object
- //-----------------------
- UMSessionManagerParcel parcel = new UMSessionManagerParcel( logEntryChild );
- _alParcels.add( parcel );
-
- return parcel;
-}
-/**
- * Execute any pending or failed updates.
- */
-public boolean execute(IProgressMonitor progressMonitor) {
-
- // Attempt all even if failure occurs
- //-----------------------------------
- boolean bSuccess = true;
-
- // Parcels may be sequential, do in forward order
- //-----------------------------------------------
- for (int i = 0; i < _alParcels.size(); ++i) {
-
- if (((UMSessionManagerParcel) _alParcels.get(i)).execute(progressMonitor) == false) {
- bSuccess = false;
- }
- }
-
- // Status
- //-------
- setStatus(bSuccess == true ? UpdateManagerConstants.STATUS_SUCCEEDED : UpdateManagerConstants.STATUS_FAILED);
-
- incrementAttemptCount();
-
- return bSuccess;
-}
-/**
- * Execute any pending or failed updates.
- */
-public boolean executeUndo(org.eclipse.core.runtime.IProgressMonitor progressMonitor) {
-
- // Undo only failed attempts
- //--------------------------
- if (getStatus().equals(UpdateManagerConstants.STATUS_FAILED) == false) {
- return true;
- }
-
- // Attempt all even if failure occurs
- //-----------------------------------
- boolean bSuccess = true;
-
- // Parcels may be sequential, undo in reverse order
- //-------------------------------------------------
- for (int i = _alParcels.size() - 1; i >= 0; --i) {
-
- if (((UMSessionManagerParcel) _alParcels.get(i)).executeUndo(progressMonitor) == false) {
- bSuccess = false;
- }
- }
-
- // Status
- //-------
- setStatus(bSuccess == true ? UpdateManagerConstants.STATUS_FAILED_UNDO_SUCCEEDED : UpdateManagerConstants.STATUS_FAILED_UNDO_FAILED);
-
- resetAttemptCount();
-
- return bSuccess;
-}
-/**
- * Returns all parcels
- * @return org.eclipse.update.internal.core.UMSessionManagerParcel[]
- */
-public UMSessionManagerParcel[] getParcels() {
-
- UMSessionManagerParcel[] parcels = new UMSessionManagerParcel[_alParcels.size()];
- return (UMSessionManagerParcel[])_alParcels.toArray( parcels );
-}
-/**
- * @return java.lang.String
- */
-public String getStatusString() {
-
- StringBuffer strb = new StringBuffer();
-
- getStatusString( strb, 0 );
-
- return strb.toString();
-}
-/**
- * @param strb java.lang.StringBuffer
- * @param iIndentation int
- */
-public void getStatusString(java.lang.StringBuffer strb, int iIndentation) {
-
- String strStatus = getStatus();
-
- if (strStatus.equals(UpdateManagerConstants.STATUS_SUCCEEDED) == true) {
- strb.append(UpdateManagerStrings.getString("S_Installations_have_completed_successfully"));
- strb.append("\n");
- strb.append(UpdateManagerStrings.getString("S_You_must_restart_the_workbench_to_activate_any_changes"));
- }
-
- else {
- strb.append(UpdateManagerStrings.getString("S_An_installation_error_or_cancellation_has_occurred"));
-
- // Parcels may be sequential, do in forward order
- //-----------------------------------------------
- for (int i = 0; i < _alParcels.size(); ++i) {
-
- ((UMSessionManagerParcel) _alParcels.get(i)).getStatusString(strb, 2);
- }
- }
-}
-/**
- * @return java.lang.String
- */
-public String getTimestamp() {
-
- return _propertyTimestamp.getValue();
-}
-/**
- * Returns whether this session is complete
- * @return boolean
- */
-public boolean isComplete() {
-
- return _propertyStatus.getValue().equals(UpdateManagerConstants.STATUS_SUCCEEDED) ||
- _propertyStatus.getValue().equals(UpdateManagerConstants.STATUS_FAILED_UNDO_SUCCEEDED);
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/URLHandler.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/URLHandler.java
deleted file mode 100644
index 50eed69..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/URLHandler.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.internal.boot.update.*;
-import org.eclipse.webdav.http.client.*;
-import org.eclipse.webdav.client.WebDAVFactory;
-import org.eclipse.webdav.Context;
-import java.io.*;
-import java.net.*;
-
-public class URLHandler extends BaseURLHandler {
-
- private static HttpClient http = null;
- private static WebDAVFactory factory = null;
-
- private static final String HTTP = "http";
-
- static class Response extends BaseURLHandler.Response {
- private org.eclipse.webdav.http.client.Response r = null;
- private Response(org.eclipse.webdav.http.client.Response r) {
- this.r = r;
- }
- public InputStream getInputStream() throws IOException {
- return r.getInputStream();
- }
- public long getContentLength() {
- return r.getContentLength();
- }
- public int getResponseCode() {
- return r.getStatusCode();
- }
- public String getResponseMessage() {
- return r.getStatusMessage();
- }
- }
-
-private URLHandler() {}
-public static BaseURLHandler.Response open(URL url) throws IOException {
-
- if (url==null) return null;
-
- if (!url.getProtocol().equals(HTTP)) {
- URLConnection c = url.openConnection();
- Context ctx = factory.newContext();
- int i = 1;
- String name = null;
- while ((name = c.getHeaderFieldKey(i)) != null) {
- ctx.put(name.toLowerCase(), c.getHeaderField(i));
- i++;
- }
- InputStream is = c.getInputStream();
- return new Response(new org.eclipse.webdav.http.client.Response(UNKNOWN_STATUS,UNKNOWN_MSG,ctx,is));
- }
- else {
- if (http==null) throw new IllegalStateException(UpdateManagerStrings.getString("S_HTTP_client_not_set"));
- Request request = new Request("GET", url, null);
- return new Response(http.invoke(request));
- }
-}
-protected BaseURLHandler.Response openURL(URL url) throws IOException {
- return URLHandler.open(url);
-}
-public static void setHttpClient(HttpClient c) {
-
- if (http==null) {
- http = c;
- factory = new WebDAVFactory();
-
- // setup this handler as the handler for boot portion of update manager
- BaseURLHandler.setURLHandler(new URLHandler());
- }
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManager.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManager.java
deleted file mode 100644
index e456884..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManager.java
+++ /dev/null
@@ -1,640 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.TreeSet;
-
-import org.eclipse.core.internal.boot.LaunchInfo;
-import org.eclipse.core.internal.boot.LaunchInfo.VersionedIdentifier;
-import org.eclipse.core.internal.boot.update.IComponentDescriptor;
-import org.eclipse.core.internal.boot.update.IComponentEntryDescriptor;
-import org.eclipse.core.internal.boot.update.IFragmentEntryDescriptor;
-import org.eclipse.core.internal.boot.update.IInstallable;
-import org.eclipse.core.internal.boot.update.IPluginEntryDescriptor;
-import org.eclipse.core.internal.boot.update.IProductDescriptor;
-import org.eclipse.core.internal.boot.update.IUMRegistry;
-import org.eclipse.core.internal.boot.update.IURLNamePair;
-import org.eclipse.core.internal.boot.update.LogStoreException;
-import org.eclipse.core.internal.boot.update.UMEclipseTree;
-import org.eclipse.core.internal.boot.update.UMRegistryManager;
-import org.eclipse.core.internal.boot.update.UpdateManagerConstants;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.update.internal.ui.JarVerificationService;
-
-/**
- * Update Manager updates a workstation in one of three modes:
- * <ol>
- * <li>local</li>
- * <li>remote</li>
- * <li>remote cached</li>
- * </ol>
- * Usage:
- * <ol>
- * <li>Create an instance of this class</li>
- * <li>Set persistent properties as required</li>
- * <ul>
- * <li>mode</li>
- * <li>update log URL</li>
- * <li>history log URL</li>
- * </ul>
- * <li>Call the initialize function</li>
- * <li>Call the update function</li>
- * </ol>
- * Persistent properties are loaded before any are changed, and saved after any
- * are changed.
- */
-
-public class UpdateManager {
-
- // Package name for this class
- // Used by UpdateManagerStrings to obtain its resource bundle properties file
- //---------------------------------------------------------------------------
- public static final String _strPackageName = "org.eclipse.update.internal.core";
- public static UpdateManager _updateManagerInstance = null;
-
- // Persistent properties
- //----------------------
- protected int _iMode = UpdateManagerConstants.MODE_LOCAL;
- protected String _strUpdateLogURL = null;
- protected String _strHistoryLogURL = null;
-
- // Instance state data
- //--------------------
- protected UMRegistryManager _registryManager = null;
- protected UMSessionManager _sessionManager = null;
- protected Shell _shell = null;
-
- protected JarVerificationService _jarVerifier = null;
-/**
- * Constructs an instance of this class, then initializes by loading its persistent properties
- */
-public UpdateManager() {
-}
-/**
- * Constructs an instance of this class, then initializes by loading its persistent properties
- */
-public UpdateManager( Shell shell ) {
- _updateManagerInstance = this;
- _shell = shell;
-}
-/**
- * Deletes all files in the staging area.
- */
-public void cleanup() {
- String strStagingDirectory = UMEclipseTree.getFileInPlatformString(UMEclipseTree.getStagingArea());
-
- File fileStagingDirectory = new File(strStagingDirectory);
-
- if (fileStagingDirectory.exists() == true) {
- File[] files = fileStagingDirectory.listFiles();
- for (int i = 0; i < files.length; ++i) {
- if (files[i].isDirectory() == true) {
- cleanupDirectory(files[i]);
- }
- boolean bSuccessful = files[i].delete();
-
- }
- }
-}
-/**
- */
-public static void cleanupDirectory(File fileDirectory) {
-
- File[] files = fileDirectory.listFiles();
-
- for (int i = 0; i < files.length; ++i) {
- if (files[i].isDirectory() == true) {
- cleanupDirectory(files[i]);
- }
-
- boolean bSuccessful = files[i].delete();
-// if (!bSuccessful)
-// System.out.println("ooops!" + files[i]);
- }
-}
-/**
- */
-public UMSessionManagerSession createSession(IInstallable[] descriptors, boolean bVerifyJars) throws UpdateManagerException {
-
- // FOR NOW DO NOT DO JAR VERIFICATION
- //-----------------------------------
- bVerifyJars = false;
-
- // Create a new update session
- //----------------------------
- UMSessionManagerSession session = _sessionManager.createUpdateSession();
-
- // Create a definer that can define the operations required
- //---------------------------------------------------------
- ISessionDefiner sessionDefiner = new UMSessionDefinerReferenceUpdate();
-
- // Define a set of operations
- //---------------------------
- sessionDefiner.defineOperations(session, descriptors, bVerifyJars);
-
- // Save the update log
- //--------------------
- try {
- _sessionManager.saveUpdateLog();
- }
- catch (LogStoreException ex) {
- throw new UpdateManagerException(ex.getMessage());
- }
-
- return session;
-}
-/**
- * Updates the local machine by:
- * <ol>
- * <li>defining the operations</li>
- * <li>downloading any new objects</li>
- * <li>applying any downloaded updates</li>
- * <li>displaying a progress monitor</li>
- * </ol>
- */
-public UMSessionManagerSession executeSession( UMSessionManagerSession session, IProgressMonitor progressMonitor ) throws UpdateManagerException {
-
- // Throw any exception when complete
- //----------------------------------
- UpdateManagerException umException = null;
-
- // Execute the session
- //--------------------
- _sessionManager.executeSession( session, progressMonitor );
-
- // Move successful sessions from update log to history log
- //--------------------------------------------------------
- try {
- _sessionManager.updateAndSaveLogs();
- }
- catch (LogStoreException ex) {
- if (umException != null) {
- umException = new UpdateManagerException("S_Unable_to_save_update_logs");
- }
- }
-
- // Throw any exceptions found
- //---------------------------
- if (umException != null) {
- throw umException;
- }
-
- return session;
-}
-/**
- * Updates the local machine by:
- * <ol>
- * <li>defining the operations</li>
- * <li>downloading any new objects</li>
- * <li>applying any downloaded updates</li>
- * <li>displaying a progress monitor</li>
- * </ol>
- */
-public UMSessionManagerSession executeSessionUndo( UMSessionManagerSession session, IProgressMonitor progressMonitor ) throws UpdateManagerException {
-
- // Throw any exception when complete
- //----------------------------------
- UpdateManagerException umException = null;
-
- // Execute the session
- //--------------------
- _sessionManager.executeSessionUndo( session, progressMonitor );
-
- // Move successful sessions from update log to history log
- //--------------------------------------------------------
- try {
- _sessionManager.updateAndSaveLogs();
- }
- catch (LogStoreException ex) {
- if (umException != null) {
- umException = new UpdateManagerException("S Unable to save update logs");
- }
- }
-
- // Throw any exceptions found
- //---------------------------
- if (umException != null) {
- throw umException;
- }
-
- return session;
-}
-/**
- */
-public static UpdateManager getCurrentInstance() {
- return _updateManagerInstance;
-}
-/**
- * Takes a string with an Id + '_' + Version, and returns the Id.
- */
-private String getIdFromInfoString(String strInfo) {
-
- String strId = null;
-
- int iIndex = strInfo.lastIndexOf('_');
-
- if (iIndex >= 0) {
- strId = strInfo.substring(0, iIndex);
- }
-
- else {
- strId = strInfo;
- }
-
- return strId;
-}
-// return the jar verifier
-
-public JarVerificationService getJarVerifier() {
- if (_jarVerifier == null)
- _jarVerifier = new JarVerificationService( _shell );
- return _jarVerifier;
-}
-/**
- * Returns a list of components that require updating by:
- *<ol>
- *<li>Loading all product/component manifests from .install/tree </li>
- *<li>Determining which components require updating by:</li>
- *<ol>
- *<li>Collecting update URLs from each component</li>
- *<li>Collecting update URLs from products that components are a part of</li>
- *</ol>
- *<li>Determining what updates are available by:</li>
- *<ol>
- *<li>Accessing the update URL</li>
- *<li>Determining if the component is a newer version of the existing one</li>
- *</ol>
- *<li>
- *</ol>
- */
-public IURLNamePair[] getLocalDiscoveryURLs() {
-
- IURLNamePair[] urlNPs = null;
-
- // Obtain the local registry
- //--------------------------
- IUMRegistry registry = _registryManager.getLocalRegistry();
-
- // Create a list of all URLs
- //--------------------------
- TreeSet setURLs = new TreeSet( new UpdateManagerURLComparator() );
-
- // Obtain a list of all installed components
- //------------------------------------------
- IComponentDescriptor[] componentDescriptors = registry.getComponentDescriptors();
-
- // Obtain a list of discovery URLs
- //--------------------------------
- for (int i = 0; i < componentDescriptors.length; ++i) {
- urlNPs = componentDescriptors[i].getDiscoveryURLs();
-
- for (int j = 0; j < urlNPs.length; ++j) {
- setURLs.add(urlNPs[j]);
- }
- }
-
- // Obtain a list of all installed products
- //----------------------------------------
- IProductDescriptor[] productDescriptors = registry.getProductDescriptors();
-
- // Obtain a list of discovery URLs
- //--------------------------------
- for (int i = 0; i < productDescriptors.length; ++i) {
- urlNPs = productDescriptors[i].getDiscoveryURLs();
-
- for (int j = 0; j < urlNPs.length; ++j) {
- setURLs.add(urlNPs[j]);
- }
- }
-
- urlNPs = new IURLNamePair[ setURLs.size() ];
- System.arraycopy(setURLs.toArray(), 0, urlNPs, 0, setURLs.size() );
-
- return urlNPs;
-}
-/**
- * Returns a list of components that require updating by:
- *<ol>
- *<li>Loading all product/component manifests from .install/tree </li>
- *<li>Determining which components require updating by:</li>
- *<ol>
- *<li>Collecting update URLs from each component</li>
- *<li>Collecting update URLs from products that components are a part of</li>
- *</ol>
- *<li>Determining what updates are available by:</li>
- *<ol>
- *<li>Accessing the update URL</li>
- *<li>Determining if the component is a newer version of the existing one</li>
- *</ol>
- *<li>
- *</ol>
- */
-public IURLNamePair[] getLocalUpdateURLs() {
-
- IURLNamePair[] urlNPs = null;
-
- // Obtain the local registry
- //--------------------------
- IUMRegistry registry = _registryManager.getLocalRegistry();
-
- // Create a list of all URLs
- //--------------------------
- TreeSet setURLs = new TreeSet( new UpdateManagerURLComparator() );
-
- // Obtain a list of all installed components
- //------------------------------------------
- IComponentDescriptor[] componentDescriptors = registry.getComponentDescriptors();
-
- // Obtain a list of discovery URLs
- //--------------------------------
- for (int i = 0; i < componentDescriptors.length; ++i) {
- urlNPs = componentDescriptors[i].getUpdateURLs();
-
- for (int j = 0; j < urlNPs.length; ++j) {
- setURLs.add(urlNPs[j]);
- }
- }
-
- // Obtain a list of all installed products
- //----------------------------------------
- IProductDescriptor[] productDescriptors = registry.getProductDescriptors();
-
- // Obtain a list of discovery URLs
- //--------------------------------
- for (int i = 0; i < productDescriptors.length; ++i) {
- urlNPs = productDescriptors[i].getUpdateURLs();
-
- for (int j = 0; j < urlNPs.length; ++j) {
- setURLs.add(urlNPs[j]);
- }
- }
-
- urlNPs = new IURLNamePair[ setURLs.size() ];
- System.arraycopy(setURLs.toArray(), 0, urlNPs, 0, setURLs.size() );
-
- return urlNPs;
-}
-// return the local (current) registry
-
-public IUMRegistry getRegistryAt(URL url) {
-
- return _registryManager.getRegistryAt( url );
-}
-/**
- */
-public UMRegistryManager getRegistryManager() {
- return _registryManager;
-}
-/**
- * Initializes the update and history log URLs,creates a session manager,
- * and creates a registry manager.
- */
-public void initialize() throws UpdateManagerException{
-
- // Obtain install URL
- //-------------------
- URL urlBase = UMEclipseTree.getBaseInstallURL();
- String strUrlBase = urlBase.toExternalForm();
- String strUrlInstall = strUrlBase + "install/";
-
- String strUrlUpdateLog = strUrlInstall + "update.log";
- String strUrlHistoryLog = strUrlInstall + "history.log";
-
- setUpdateLogURL(strUrlUpdateLog);
- setHistoryLogURL(strUrlHistoryLog);
-
- // Create a session manager
- //-------------------------
- try {
- _sessionManager = new UMSessionManager(new URL(_strUpdateLogURL), new URL(_strHistoryLogURL), true);
- }
- catch (MalformedURLException ex) {
- throw new UpdateManagerException("Invalid log URL specification");
- }
- catch (LogStoreException ex) {
- throw new UpdateManagerException(ex.getMessage());
- }
-
- // Registry Manager
- //-----------------
- _registryManager = new UMRegistryManager(urlBase);
-}
-/**
- *
- */
-public void removeComponent(IComponentDescriptor componentDescriptor) {
- removeComponent(componentDescriptor, null);
-}
-/**
- *
- */
-public void removeComponent(IComponentDescriptor componentDescriptor, IProductDescriptor productDescriptor) {
-
- if( componentDescriptor == null )
- return;
-
- LaunchInfo launchInfo = LaunchInfo.getCurrent();
- LaunchInfo.VersionedIdentifier vid = null;
-
- // Plugins
- //--------
- IPluginEntryDescriptor[] pluginEntries = componentDescriptor.getPluginEntries();
-
- for (int i = 0; i < pluginEntries.length; ++i) {
- vid = new LaunchInfo.VersionedIdentifier(pluginEntries[i].getUniqueIdentifier(), pluginEntries[i].getVersionStr());
- launchInfo.removePlugin(vid);
- }
-
- // Fragments
- //----------
- IFragmentEntryDescriptor[] fragmentEntries = componentDescriptor.getFragmentEntries();
-
- for (int i = 0; i < fragmentEntries.length; ++i) {
- vid = new LaunchInfo.VersionedIdentifier(fragmentEntries[i].getUniqueIdentifier(), pluginEntries[i].getVersionStr());
- launchInfo.removeFragment(vid);
- }
-
- // Component
- //----------
- vid = new LaunchInfo.VersionedIdentifier(componentDescriptor.getUniqueIdentifier(), componentDescriptor.getVersionStr());
- launchInfo.removeComponent(vid);
- _registryManager.removeComponentDescriptorFromLocal(componentDescriptor, productDescriptor);
-
- return;
-}
-/**
- *
- */
-public void removeProduct(IProductDescriptor productDescriptor) {
-
- if( productDescriptor == null )
- return;
-
- // Components
- //-----------
- IComponentEntryDescriptor[] componentEntries = productDescriptor.getComponentEntries();
-
- for (int i = 0; i < componentEntries.length; ++i) {
- IComponentDescriptor componentDescriptor = componentEntries[i].getComponentDescriptor();
- if (componentDescriptor.isRemovable(productDescriptor))
- removeComponent(componentDescriptor, productDescriptor);
- }
-
- // Product
- //--------
- LaunchInfo.VersionedIdentifier vid = new LaunchInfo.VersionedIdentifier(productDescriptor.getUniqueIdentifier(), productDescriptor.getVersionStr());
- LaunchInfo.getCurrent().removeConfiguration(vid);
- _registryManager.removeProductDescriptorFromLocal(productDescriptor);
-}
-/**
- * Sets the URL for the history log. This property is persistent.
- */
-public void setHistoryLogURL(String strURL) throws UpdateManagerException {
-
- // Check for valid URL
- //--------------------
- try {
- new URL(strURL);
- }
- catch (MalformedURLException ex) {
- throw new UpdateManagerException("Invalid log URL specification");
- }
-
- // Change the property
- //--------------------
- _strHistoryLogURL = strURL;
-}
-/**
- * Sets the URL for the update log. This property is persistent.
- */
-public void setUpdateLogURL(String strURL) throws UpdateManagerException {
-
- // Check for valid URL
- //--------------------
- try {
- new URL(strURL);
- }
- catch (MalformedURLException ex) {
- throw new UpdateManagerException("Invalid log URL specification");
- }
-
- // Change the property
- //--------------------
- _strUpdateLogURL = strURL;
-}
-/**
- * Updates the boot loader's launch information with what is currently installed.
- */
-public void updateLaunchInfoAndRegistry(UMSessionManagerSession session) {
-
- // Update launch info even if this session had a failure
- // One or more parcels could have succeeded
- //------------------------------------------------------
- if (session != null) {
-
- LaunchInfo launchInfo = LaunchInfo.getCurrent();
-
- // Obtain product/component information
- //-------------------------------------
- UMSessionManagerParcel[] parcels = session.getParcels();
-
- for (int i = 0; i < parcels.length; ++i) {
- updateLaunchInfoAndRegistryParcel( parcels[i], launchInfo );
- }
- }
-}
-/**
- * Recursively updates the boot loader's information for this parcel and sub-parcels.
- */
-protected void updateLaunchInfoAndRegistryParcel(UMSessionManagerParcel parcel, LaunchInfo launchInfo) {
-
- // Update the profile only if the install was successful
- //------------------------------------------------------
- if (parcel != null && parcel.getStatus().equals(UpdateManagerConstants.STATUS_SUCCEEDED) == true) {
-
- Object objData = parcel.getData();
-
- // Product
- //--------
- if (objData instanceof IProductDescriptor) {
- updateLaunchInfoProduct((IProductDescriptor) objData, launchInfo);
- _registryManager.addProductDescriptorToLocal((IProductDescriptor) objData);
- }
-
- // Component
- //----------
- else if (objData instanceof IComponentDescriptor) {
- updateLaunchInfoComponent((IComponentDescriptor) objData, launchInfo);
- _registryManager.addComponentDescriptorToLocal((IComponentDescriptor) objData, true);
- }
-
- // Component Entry
- //----------------
- else if (objData instanceof IComponentEntryDescriptor) {
- IComponentDescriptor comp = ((IComponentEntryDescriptor)objData).getComponentDescriptor();
- updateLaunchInfoComponent(comp, launchInfo);
- _registryManager.addComponentDescriptorToLocal(comp, false);
- }
-
- // Do child parcels
- //-----------------
- UMSessionManagerParcel[] parcelChildren = parcel.getParcels();
-
- for (int i = 0; i < parcelChildren.length; ++i) {
- updateLaunchInfoAndRegistryParcel(parcelChildren[i], launchInfo);
- }
- }
-}
-/**
- * Updates the boot loader's launch information with what is currently installed.
- */
-public void updateLaunchInfoComponent(IComponentDescriptor descriptor, LaunchInfo launchInfo) {
-
- // Component
- //----------
- launchInfo.setComponent(new LaunchInfo.VersionedIdentifier(descriptor.getUniqueIdentifier(), descriptor.getVersionStr()));
-
- // Plugins
- //--------
- IPluginEntryDescriptor[] pluginDescriptors = descriptor.getPluginEntries();
-
- for (int i = 0; i < pluginDescriptors.length; ++i) {
- updateLaunchInfoPlugin(pluginDescriptors[i], launchInfo);
- }
-
- // Fragments
- //----------
- IFragmentEntryDescriptor[] fragmentDescriptors = descriptor.getFragmentEntries();
-
- for (int i = 0; i < fragmentDescriptors.length; ++i) {
- updateLaunchInfoFragment(fragmentDescriptors[i], launchInfo);
- }
-}
-/**
- * Updates the boot loader's launch information with what is currently installed.
- */
-public void updateLaunchInfoFragment(IFragmentEntryDescriptor descriptor, LaunchInfo launchInfo) {
-
- launchInfo.setFragment(new LaunchInfo.VersionedIdentifier(descriptor.getUniqueIdentifier(),descriptor.getVersionStr()));
-}
-/**
- * Updates the boot loader's launch information with what is currently installed.
- */
-public void updateLaunchInfoPlugin(IPluginEntryDescriptor descriptor, LaunchInfo launchInfo) {
-
- launchInfo.setPlugin(new LaunchInfo.VersionedIdentifier(descriptor.getUniqueIdentifier(),descriptor.getVersionStr()));
-}
-/**
- * Updates the boot loader's launch information with what is currently installed.
- */
-public void updateLaunchInfoProduct(IProductDescriptor descriptor, LaunchInfo launchInfo) {
-
- launchInfo.setConfiguration(new LaunchInfo.VersionedIdentifier(descriptor.getUniqueIdentifier(),descriptor.getVersionStr()), descriptor.getApplication());
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerException.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerException.java
deleted file mode 100644
index e25de36..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerException.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- *
- */
-public class UpdateManagerException extends Exception {
-/**
- * UpdateManagerException constructor comment.
- */
-public UpdateManagerException( String strMessage ) {
- super( strMessage );
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerPlugin.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerPlugin.java
deleted file mode 100644
index e05d25d..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerPlugin.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.MalformedURLException;
-import java.net.URL;
-/**
- */
-import org.eclipse.core.runtime.*;
-import org.eclipse.update.internal.ui.*;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.webdav.http.client.HttpClient;
-
-public class UpdateManagerPlugin extends Plugin {
- private static UpdateManagerPlugin _pluginInstance = null;
- private HttpClient client =null;
-/**
- * UpdateManagerPlugin constructor comment.
- */
-public UpdateManagerPlugin( IPluginDescriptor pluginDescriptor ) {
- super( pluginDescriptor );
-
- _pluginInstance = this;
-}
-/**
- * Returns the image descriptor of an image file relative to this plugin
- * @return org.eclipse.jface.resource.ImageDescriptor
- * @param strImage java.lang.String
- */
-public static ImageDescriptor getImageDescriptor(String strImage) {
-
- UpdateManagerPlugin plugin = getPluginInstance();
-
- if (plugin != null) {
-
- // Obtain my plugin descriptor
- //----------------------------
- IPluginDescriptor pluginDescriptor = plugin.getDescriptor();
-
- // Determine where I am installed
- //-------------------------------
- URL path = pluginDescriptor.getInstallURL();
-
- // Add the relative file location to the install location
- // Create the image descriptor
- //-------------------------------------------------------
- URL urlFullPathString = null;
-
- try {
- urlFullPathString = new URL(path, strImage);
- return ImageDescriptor.createFromURL(urlFullPathString);
- }
-
- catch (MalformedURLException e) {
- }
- }
- return null;
-}
-/**
- * @return org.eclipse.update.internal.core.UpdateManagerPlugin
- */
-public static UpdateManagerPlugin getPluginInstance() {
- return _pluginInstance;
-}
-/**
- * Shuts down this plug-in and discards all plug-in state.
- * <p>
- * This method should be re-implemented in subclasses that need to do something
- * when the plug-in is shut down. Implementors should call the inherited method
- * to ensure that any system requirements can be met.
- * </p>
- * <p>
- * Plug-in shutdown code should be robust. In particular, this method
- * should always make an effort to shut down the plug-in. Furthermore,
- * the code should not assume that the plug-in was started successfully,
- * as this method will be invoked in the event of a failure during startup.
- * </p>
- * <p>
- * Note 1: If a plug-in has been started, this method will be automatically
- * invoked by the platform when the platform is shut down.
- * </p>
- * <p>
- * Note 2: This method is intended to perform simple termination
- * of the plug-in environment. The platform may terminate invocations
- * that do not complete in a timely fashion.
- * </p>
- * <b>Cliens must never explicitly call this method.</b>
- *
- * @exception CoreException if this method fails to shut down
- * this plug-in
- */
-public void shutdown() throws CoreException {
- if(client!=null) client.close();
-}
-/**
- * Starts up this plug-in.
- * <p>
- * This method should be overridden in subclasses that need to do something
- * when this plug-in is started. Implementors should call the inherited method
- * to ensure that any system requirements can be met.
- * </p>
- * <p>
- * If this method throws an exception, it is taken as an indication that
- * plug-in initialization has failed; as a result, the plug-in will not
- * be activated; moreover, the plug-in will be marked as disabled and
- * ineligible for activation for the duration.
- * </p>
- * <p>
- * Plug-in startup code should be robust. In the event of a startup failure,
- * the plug-in's <code>shutdown</code> method will be invoked automatically,
- * in an attempt to close open files, etc.
- * </p>
- * <p>
- * Note 1: This method is automatically invoked by the platform
- * the first time any code in the plug-in is executed.
- * </p>
- * <p>
- * Note 2: This method is intended to perform simple initialization
- * of the plug-in environment. The platform may terminate initializers
- * that do not complete in a timely fashion.
- * </p>
- * <b>Cliens must never explicitly call this method.</b>
- *
- * @exception CoreException if this plug-in did not start up properly
- */
-public void startup() throws CoreException {
- // Setup HTTP client
- //------------------
- client = new HttpClient();
- client.setAuthenticator(new AuthorizationDatabase());
- URLHandler.setHttpClient(client);
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerStrings.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerStrings.java
deleted file mode 100644
index 21b7ecd..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerStrings.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- * This class loads translatable strings from a resource bundle properties file.
- */
-import java.util.ResourceBundle;
-import java.util.MissingResourceException;
-
-public class UpdateManagerStrings
-{
- private static ResourceBundle _resourceBundle = null;
-/**
- * Obtains a NL translated string from a resource bundle
- * @param strKey java.lang.String
- */
-public static String getString( String strKey )
-{
- String strTranslated = strKey;
-
- // Obtain the set of translated strings
- //-------------------------------------
- if( _resourceBundle == null )
- {
- try
- {
- _resourceBundle = ResourceBundle.getBundle( UpdateManager._strPackageName + ".updatemanagerstrings" );
- }
- catch( MissingResourceException ex )
- {
- _resourceBundle = null;
- }
- }
-
- // Obtain the translated string
- //-----------------------------
- if( _resourceBundle != null )
- {
- try
- {
- strTranslated = _resourceBundle.getString( strKey );
- }
- catch( MissingResourceException ex )
- {
- strTranslated = strKey;
- }
- }
-
- return strTranslated;
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerURLComparator.java b/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerURLComparator.java
deleted file mode 100644
index ede4744..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/UpdateManagerURLComparator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.eclipse.update.internal.core;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import org.eclipse.core.internal.boot.update.*;
-import java.net.*;
-/**
- *
- */
-import java.util.Comparator;
-public class UpdateManagerURLComparator implements Comparator{
-/**
- * UpdateManagerTreeItemComparator constructor comment.
- */
-public UpdateManagerURLComparator() {
- super();
-}
-/**
- * Compares two strings independent of case.
- *
- * @return a negative integer, zero, or a positive integer as the
- * first argument is less than, equal to, or greater than the
- * second.
- * @throws ClassCastException if the arguments' types prevent them from
- * being compared by this Comparator.
- */
-public int compare(java.lang.Object o1, java.lang.Object o2) {
-
- if (o1 instanceof URLNamePair && o2 instanceof URLNamePair) {
- return ((URLNamePair) o1).getURL().toExternalForm().toLowerCase().compareTo(((URLNamePair) o2).getURL().toExternalForm().toLowerCase());
- }
-
- return 0;
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/core/updatemanagerstrings.properties b/update/org.eclipse.update/src/org/eclipse/update/internal/core/updatemanagerstrings.properties
deleted file mode 100644
index 5cec005..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/core/updatemanagerstrings.properties
+++ /dev/null
@@ -1,112 +0,0 @@
-S_Add = Add
-S_Additional_Locations = Additional Locations
-S_An_installation_error_or_cancellation_has_occurred = An installation error or cancellation has occurred
-S_At_the_following_domain = At the following domain
-S_Available = Available
-S_Cancel_component_installation = Cancel component installation
-S_Component = Component
-S_Component_identifier = Component identifier
-S_Component_name = Component name
-S_Configuration_Change = Configuration Change
-S_Copy = Copy
-S_Current_installation = Current installation
-S_Description = Description
-S_Encountered_jar_entry_security_exception = Encountered jar entry security exception
-S_Enter_a_user_name_and_password_for = Enter a user name and password for
-S_Error_closing_output_stream = Error closing output stream
-S_Error_in_registry = Error in registry
-S_Error_occurred_during_installation_completion = Error occurred during installation completion
-S_Error_occurred_during_installation_setup = Error occurred during installation setup
-S_Error_occurred_during_verification = Error occurred during verification
-S_Error_reading_from_input_stream = Error reading from input stream
-S_Error_writing_to_output_stream = Error writing to output stream
-S_Examining = Examining
-S_File_is_not_a_valid_JAR_file = File is not a valid JAR file
-S_File_name = File name
-S_HTTP_client_not_set = HTTP client not set
-S_Identifier = Identifier
-S_Information = Information
-S_Install = Install
-S_Install_component = Install component
-S_Install_Components = Install Components
-S_Installation = Installation
-S_Installation_cancelled_by_user = Installation cancelled by user
-S_Installation_completed = Installation completed
-S_Installations_have_completed_successfully = Installations have completed successfully
-S_Installed = Installed
-S_Installed_Components = Installed Components
-S_Installing_this_component_may_corrupt_your_installation = Installing this component may corrupt your installation
-S_Location = Location
-S_New_Component_Updates = New Component Updates
-S_New_Components = New Components
-S_No_installable_items_were_found = No installable items were found
-S_not_available = not available
-S_not_compatible = not compatible
-S_not_newer = not newer
-S_not_updatable = not updatable
-S_Number_of_installation_histories_to_keep = Number of installation histories to keep
-S_Obtaining_information = Obtaining information
-S_OK = OK
-S_optional = optional
-S_Password = Password
-S_Password_Required = Password Required
-S_Predefined_Locations = Predefined Locations
-S_Provider = Provider
-S_Reading = Reading
-S_Remove = Remove
-S_Remove_selected_components = Remove selected components
-S_Revert = Revert
-S_Revert_to_a_Previous_Installation = Revert to a Previous Installation
-S_Revert_to_another_installation = Revert to another installation
-S_Search_for_more_recent_versions_to_install = Search for more recent versions to install
-S_Search_for_new_components = Search for new components
-S_Search_for_updates_for_all_components = Search for updates for all components
-S_Search_for_updates_for_selected_components = Search for updates for selected components
-S_Select_a_previous_installation_to_revert_to = Select a previous installation to revert to
-S_Select_any_optional_components_to_install = Select any optional components to install
-S_Select_available_versions_to_install = Select available versions to install
-S_Select_components_to_install = Select components to install
-S_Select_locations_to_update_from = Select locations to update from
-S_Show_only_most_recent_versions = Show only most recent versions
-S_Software_Updates = Software Updates
-S_Source_location = Source location
-S_Source_URL_is_malformed = Source URL is malformed
-S_Specify_search_locations_for_new_components = Specify search locations for new components
-S_Status = Status
-S_Target_URL_is_malformed = Target URL is malformed
-S_The_certificates_used_to_authenticate_this_component_are_not_recognized = The certificates used to authenticate this component are not recognized
-S_The_content_of_this_component_has_been_corrupted = The content of this component has been corrupted
-S_The_following_installation_will_become_active_when_the_workbench_is_restarted = The following installation will become active when the workbench is restarted
-S_The_following_items_will_be_installed = The following items will be installed
-S_The_following_items_will_be_updated = The following items will be updated
-S_The_installation_process_will_be_aborted = The installation process will be aborted
-S_The_provider_of_this_component_cannot_be_verified = The provider of this component cannot be verified
-S_This_component_has_not_been_digitally_signed = This component has not been digitally signed
-S_This_component_will_not_be_installed = This component will not be installed
-S_Update = Update
-S_Update_All = Update All
-S_Updates_completed = Updates completed
-S_Unable_to_access_the_following_locations = Unable to access the following locations
-S_Unable_to_connect = Unable to connect
-S_Unable_to_create_file = Unable to create file
-S_Unable_to_create_jar_entry_URL = Unable to create jar entry URL
-S_Unable_to_create_output_file_for_Jar_entry = Unable to create output file for Jar entry
-S_Unable_to_delete_file = Unable to delete file
-S_Unable_to_find_install_manifest_file_in_Jar = Unable to find install manifest file in Jar
-S_Unable_to_find_defined_contents_in_Jar = Unable to find defined contents in Jar
-S_Unable_to_obtain_source_input_stream = Unable to obtain source input stream
-S_Unable_to_obtain_target_output_stream = Unable to obtain target output stream
-S_Unable_to_open_error_logs = Unable to open error_logs
-S_Unable_to_open_jar_entry_input_stream = Unable to open jar entry input stream
-S_Unable_to_open_Jar_file = Unable to open Jar file
-S_Undefined_contents_found_in_Jar = Undefined contents found in Jar
-S_Undo = Undo
-S_User_name = User name
-S_Verification = Verification
-S_Verification_cancelled = Verification cancelled
-S_Verify = Verify
-S_Version = Version
-S_You_are_about_to_install_a_signed_component = You are about to install a signed component
-S_You_are_about_to_install_an_unsigned_component = You are about to install an unsigned component
-S_You_may_choose_to_install_the_component_or_cancel_its_installation = You may choose to install the component or cancel its installation
-S_You_must_restart_the_workbench_to_activate_any_changes = You must restart the workbench to activate any changes
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/AuthorizationDatabase.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/AuthorizationDatabase.java
deleted file mode 100644
index 8d2af15..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/AuthorizationDatabase.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package org.eclipse.update.internal.ui;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.URL;
-import java.util.Hashtable;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.update.internal.core.UpdateManagerPlugin;
-import org.eclipse.webdav.http.client.IAuthenticator;
-
-/**
- * A transient database that remembers information, such as usernames and
- * passwords. The information is stored in memory only and is discarted
- * when the Plaform shuts down.
- */
-public class AuthorizationDatabase implements IAuthenticator {
-
- /**
- * The Map containing the userid and password
- */
- private Map result = new Hashtable();
-
- /**
- *
- */
- public void addAuthenticationInfo(URL serverUrl, String realm, String scheme, Map info) {
- try {
- Platform.addAuthorizationInfo(serverUrl, realm, scheme, info);
- }
- catch (CoreException e) {
- UpdateManagerPlugin.getPluginInstance().getLog().log(e.getStatus());
- }
- }
-
- /**
- *
- */
- public void addProtectionSpace(URL resourceUrl, String realm) {
- try {
- Platform.addProtectionSpace(resourceUrl, realm);
- }
- catch (CoreException e) {
- UpdateManagerPlugin.getPluginInstance().getLog().log(e.getStatus());
- }
-
- }
- /**
- *
- */
- public Map getAuthenticationInfo(URL serverUrl, String realm, String scheme) {
-
- return Platform.getAuthorizationInfo(serverUrl, realm, scheme);
- }
- /**
- *
- */
- public String getProtectionSpace(URL resourceUrl) {
- return Platform.getProtectionSpace(resourceUrl);
- }
- /**
- *
- */
- public Map requestAuthenticationInfo(final URL resourceUrl, final String realm, final String scheme) {
-
- result = new Hashtable();
- if (scheme.equalsIgnoreCase("Basic")) {
-
- Display disp = Display.getCurrent();
- if (disp != null) {
- promptForPassword(resourceUrl, realm, result);
- }
- else {
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- promptForPassword(resourceUrl, realm, result);
- }
- });
- };
- }
- return result;
- }
-
- /**
- *
- */
- private void promptForPassword(URL resourceUrl, String realm, Map info) {
-
- Shell shell = new Shell();
- UserValidationDialog ui = new UserValidationDialog(shell, resourceUrl, realm, "");
- ui.setUsernameMutable(true);
- ui.setBlockOnOpen(true);
- ui.open();
-
- if (ui.getReturnCode() != ui.CANCEL) {
- info.put("username", ui.getUserid());
- info.put("password", ui.getPassword());
- }
- shell.dispose();
-
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/Installation.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/Installation.java
deleted file mode 100644
index 056f820..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/Installation.java
+++ /dev/null
@@ -1,221 +0,0 @@
-package org.eclipse.update.internal.ui;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Date;
-import org.eclipse.core.internal.boot.LaunchInfo;
-import org.eclipse.core.internal.boot.LaunchInfo.History;
-/**
- */
-public class Installation {
- private static final String STRING_ID = "-id";
- private static final String STRING_LIST = "-list";
- private static final String STRING_LOCATION = "-location";
- private static final String STRING_SET = "-set";
-
- private boolean _bList = false;
- private boolean _bSet = false;
- private String _strLocation = null;
- private String _strId = null;
- private int _iId = -1;
- private LaunchInfo _launchInfo = null;
- /**
- * Installation constructor comment.
- */
- public Installation() {
- super();
- }
- /**
- *
- */
- private String checkCommandLineOptions() {
-
- // Command
- //--------
- if (_bList == true) {
- if (_bSet == true) {
- return "Invalid option syntax";
- }
- }
-
- else if (_bSet == true) {
- if (_bList == true) {
- return "Invalid option syntax";
- }
- }
-
- else {
- return "Command missing";
- }
-
- // Location
- //---------
- if (_strLocation == null || _strLocation.length() == 0) {
- return "Location missing";
- }
-
- URL urlLocation = null;
-
- try {
- urlLocation = new URL(_strLocation);
- }
- catch (MalformedURLException ex) {
- return "Invalid location syntax";
- }
-
- // Set the location of the installation directory
- //-----------------------------------------------
- // LaunchInfo.startup(urlLocation);
- _launchInfo = LaunchInfo.getCurrent();
-
- // Set
- //----
- if (_bSet == true) {
- if (_strId == null || _strId.length() == 0) {
- return "Installation identifier number missing";
- }
-
- try {
- _iId = new Integer(_strId).intValue();
- }
- catch (NumberFormatException ex) {
- return "Invalid identifier syntax";
- }
- }
-
- return null;
- }
- /**
- */
- public String doList() {
-
- LaunchInfo launchInfoFormer = null;
-
- LaunchInfo.History[] histories = _launchInfo.getLaunchInfoHistory();
-
- if (histories.length == 0)
- return "No histories found";
-
- if (histories.length == 1 && histories[0].getLaunchInfoDate() == null)
- return "No histories found";
-
- // Same order as doSet()
- // Most recent to oldest order
- //----------------------------
- int iIndex = 1;
-
- for (int i = histories.length - 1; i >= 0; --i) {
-
- Date date = histories[i].getLaunchInfoDate();
-
- // Older profile
- //--------------
- if (date != null) {
- System.out.println(Integer.toString(iIndex++) + " " + histories[i].getLaunchInfoDate().toString());
- }
- }
-
- return null;
- }
- /**
- *
- */
- public String doSet() {
-
- LaunchInfo.History[] histories = _launchInfo.getLaunchInfoHistory();
-
- if (_iId < histories.length) {
-
- int iIndex = 1;
-
- // Same algorithm as doList()
- // Most recent to oldest order
- //----------------------------
- for (int i = histories.length - 1; i >= 0; --i) {
-
- Date date = histories[i].getLaunchInfoDate();
-
- // Older profile
- //--------------
- if (date != null) {
- if (iIndex == _iId) {
- _launchInfo.revertTo(histories[i]);
- System.out.println(date.toString());
- return null;
- }
- else {
- iIndex++;
- }
- }
- }
- }
-
- return "Identifier not found";
- }
- /**
- */
- public static void main(String[] args) {
-
- Installation installation = new Installation();
-
- installation.parseCommandLineOptions(args);
-
- String strError = installation.checkCommandLineOptions();
-
- if (strError == null) {
- if (installation._bList == true)
- strError = installation.doList();
-
- else if (installation._bSet == true)
- strError = installation.doSet();
- }
-
- if (strError != null) {
- System.out.println(strError);
- printUsage();
- System.exit(-1);
- }
- }
- /**
- */
- public void parseCommandLineOptions(String[] straArgs) {
-
- for (int i = 0; i < straArgs.length; ++i) {
-
- // Command: List
- //--------------
- if (straArgs[i].equalsIgnoreCase(STRING_LIST) == true) {
- _bList = true;
- }
-
- // Command: Set
- //-------------
- else if (straArgs[i].equalsIgnoreCase(STRING_SET) == true) {
- _bSet = true;
- }
-
- // Location to install from
- //-------------------------
- else if (straArgs[i].equalsIgnoreCase(STRING_LOCATION) == true && i < straArgs.length - 1) {
- _strLocation = straArgs[++i];
- }
-
- // Identifier
- //-----------
- else if (straArgs[i].equalsIgnoreCase(STRING_ID) == true && i < straArgs.length - 1) {
- _strId = straArgs[++i];
- }
- }
- }
- /**
- */
- public static void printUsage() {
- System.out.println("");
- System.out.println("-list -location urlPath");
- System.out.println("-set -location urlPath -id number");
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationDialog.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationDialog.java
deleted file mode 100644
index 6d5389d..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationDialog.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationResult.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationResult.java
deleted file mode 100644
index 1711181..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationResult.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.eclipse.update.internal.ui;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- * Result of the service
- */
-public class JarVerificationResult {
-
- public static final int CANCEL_INSTALL = 0;
- public static final int OK_TO_INSTALL = 1;
-
- private int resultCode;
- private Exception resultException;
- /**
- */
- public int getResultCode() {
- return resultCode;
- }
- /**
- */
- public Exception getResultException() {
- return resultException;
- }
- /**
- */
- public void setResultCode(int newResultCode) {
- resultCode = newResultCode;
- }
- /**
- * called by JarVerificationService only
- */
- void setResultException(Exception newResultException) {
- resultException = newResultException;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationService.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationService.java
deleted file mode 100644
index 69b4339..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerificationService.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerifier.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerifier.java
deleted file mode 100644
index dda11d7..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/JarVerifier.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/KeyStores.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/KeyStores.java
deleted file mode 100644
index 7284e0a..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/KeyStores.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/Main.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/Main.java
deleted file mode 100644
index e0f0367..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/Main.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package org.eclipse.update.internal.ui;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.net.*;
-import java.lang.reflect.*;
-import java.io.PrintWriter;
-import java.util.StringTokenizer;
-import java.util.Vector;
-/**
- * Startup class for Eclipse. Creates a class loader using
- * supplied URL of platform installation, loads and calls
- * the Eclipse Boot Loader
- */
-public class Main {
- protected boolean debug = false;
- protected boolean usage = false;
- protected String bootLocation = null;
- protected String application;
- protected URL pluginPathLocation;
- protected String location;
-
- // constants
- private static final String APPLICATION = "-application";
- private static final String BOOT = "-boot";
- private static final String DEBUG = "-debug";
- private static final String USAGE = "-?";
- private static final String BOOTLOADER = "org.eclipse.core.boot.BootLoader";
-
- // The project containing the boot loader code. This is used to construct
- // the correct class path for running in VAJ and VAME.
- private static final String PROJECT_NAME = "Eclipse Core Boot";
-
- private static boolean inVAJ;
- static {
- try {
- Class.forName("com.ibm.uvm.lang.ProjectClassLoader");
- inVAJ = true;
- } catch (Exception e) {
- inVAJ = false;
- }
- }
- private static boolean inVAME;
- static {
- try {
- Class.forName("com.ibm.eclipse.VAME");
- inVAME = true;
- } catch (Exception e) {
- inVAME = false;
- }
- }
-
-protected void basicRun(String[] args) throws Exception {
- Class clazz = getBootLoader(bootLocation);
- Method method = clazz.getDeclaredMethod("run", new Class[] { String.class, URL.class, String.class, String[].class });
- try {
- method.invoke(clazz, new Object[] { application, pluginPathLocation, location, args });
- } catch (InvocationTargetException e) {
- if (e.getTargetException() instanceof Error)
- throw (Error) e.getTargetException();
- else
- throw e;
- }
-}
-public Class getBootLoader(String base) throws Exception {
- URLClassLoader loader = new URLClassLoader(new URL[] { getBootURL(base)}, null);
- return loader.loadClass(BOOTLOADER);
-}
-/**
- * Returns the <code>URL</code> where the boot classes are located.
- */
-protected URL getBootURL(String base) throws MalformedURLException {
- URL url = null;
- if (base != null)
- return new URL(base);
- // Create a URL based on the location of this class' code.
- // strip off jar file and/or last directory to get
- // to the directory containing projects.
- url = getClass().getProtectionDomain().getCodeSource().getLocation();
- String path = url.getFile();
- if (path.endsWith(".jar"))
- path = path.substring(0, path.lastIndexOf("/"));
- if (path.endsWith("/"))
- path = path.substring(0, path.length() - 1);
- if (inVAJ || inVAME) {
- int ix = path.lastIndexOf("/");
- path = path.substring(0, ix + 1);
- path = path + PROJECT_NAME + "/";
- } else
- path = path + "/plugins/org.eclipse.core.boot/boot.jar";
- return new URL(url.getProtocol(), url.getHost(), url.getPort(), path);
-}
-/**
- * Print the usage of this launcher on the system console
- */
-protected void printUsage(PrintWriter out) {
- out.println("The general form of using the Platform bootstrap main is:");
- out.println(" java <main class> -application <name> [option list]");
- out.println("where the required arguments are:");
- out.println(" -application <name> : the application to run ");
- out.println("and where the option list can be any number of the following:");
- out.println(" -platform <location> : run in the given location");
- out.println(" -debug [debug options file] : turn on debug mode. Read debug options from ");
- out.println(" the specified file or from ./.options if not specified.");
- out.println(" -? : print this message");
- out.flush();
-}
-protected String[] processCommandLine(String[] args) throws Exception {
- int[] configArgs = new int[100];
- configArgs[0] = -1; // need to initialize the first element to something that could not be an index.
- int configArgIndex = 0;
- for (int i = 0; i < args.length; i++) {
- boolean found = false;
- // check for args without parameters (i.e., a flag arg)
- // check if debug should be enabled for the entire platform
- if (args[i].equalsIgnoreCase(DEBUG)) {
- debug = true;
- // passed thru this arg (i.e., do not set found = true
- }
-
- // look for the usage flag
- if (args[i].equalsIgnoreCase(USAGE)) {
- usage = true;
- // passed thru this arg (i.e., do not set found = true
- }
-
- if (found) {
- configArgs[configArgIndex++] = i;
- continue;
- }
- // check for args with parameters. If we are at the last argument or if the next one
- // has a '-' as the first character, then we can't have an arg with a parm so continue.
- if (i == args.length - 1 || args[i + 1].startsWith("-")) {
- continue;
- }
- String arg = args[++i];
-
- // look for the laucher to run
- if (args[i - 1].equalsIgnoreCase(BOOT)) {
- found = true;
- bootLocation = arg;
- }
-
- // look for the application to run
- if (args[i - 1].equalsIgnoreCase(APPLICATION)) {
- found = true;
- application = arg;
- }
-
- // done checking for args. Remember where an arg was found
- if (found) {
- configArgs[configArgIndex++] = i - 1;
- configArgs[configArgIndex++] = i;
- }
- }
-
- // remove all the arguments consumed by this argument parsing
- if (configArgIndex == 0)
- return args;
- String[] passThruArgs = new String[args.length - configArgIndex];
- configArgIndex = 0;
- int j = 0;
- for (int i = 0; i < args.length; i++) {
- if (i == configArgs[configArgIndex])
- configArgIndex++;
- else
- passThruArgs[j++] = args[i];
- }
- return passThruArgs;
-}
-public void run(String[] args) throws Exception {
- String[] passThruArgs = processCommandLine(args);
- if (usage) {
- printUsage(new PrintWriter(System.out));
- return;
- }
- basicRun(passThruArgs);
-}
-}
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplication.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplication.java
deleted file mode 100644
index 3bb792a..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplication.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.eclipse.update.internal.ui;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/*
- * Update Manager Install Application
- *
- * Command to run from command line:
- *
- *.\jre\bin\java -verify -cp startup.jar org.eclipse.core.launcher.UIMain -application org.eclipse.update.internal.ui.updateManager -install -url http://klicnik.torolab.ibm.com/eclipse/site/ -id org.eclipse.sdk %*
- *
- *
- * Arguments are:
- * -install Install command
- * -url [url] Location from which to install from
- * -id [id] Identifier of the manifest to install
- *
- * Sample:
- * -install -url file:/c:/temp/updatesite/ -id org.eclipse.sdk
- */
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-public class UMApplication extends Main {
- private static final String DEFAULT_APPLICATION = "org.eclipse.update.internal.ui.updateManager";
- public UMApplication() {
- super();
- application = DEFAULT_APPLICATION;
- }
- public static void main(String[] args) {
-
- int iReturnCode = 0;
-
- try {
- new UMApplication().run(args);
- }
-
- catch (Exception e) {
- }
-
- System.exit(0);
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationUserInterface.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationUserInterface.java
deleted file mode 100644
index 2543bc2..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationUserInterface.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationUserInterfaceProperties.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationUserInterfaceProperties.java
deleted file mode 100644
index ac84b0b..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationUserInterfaceProperties.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationWindow.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationWindow.java
deleted file mode 100644
index 9d6394b..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMApplicationWindow.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMDialog.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMDialog.java
deleted file mode 100644
index a098936..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMDialog.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMDialogAction.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMDialogAction.java
deleted file mode 100644
index 19dd3d4..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMDialogAction.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMPreferencePageSettings.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMPreferencePageSettings.java
deleted file mode 100644
index d5a2709..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMPreferencePageSettings.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizard.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizard.java
deleted file mode 100644
index 0adbc08..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizard.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageComplete.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageComplete.java
deleted file mode 100644
index 5d3a7ec..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageComplete.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageInstallable.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageInstallable.java
deleted file mode 100644
index b2803d4..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageInstallable.java
+++ /dev/null
@@ -1,1333 +0,0 @@
-package org.eclipse.update.internal.ui;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.TreeSet;
-import java.util.Vector;
-
-import org.eclipse.core.internal.boot.update.IComponentDescriptor;
-import org.eclipse.core.internal.boot.update.IComponentEntryDescriptor;
-import org.eclipse.core.internal.boot.update.IManifestDescriptor;
-import org.eclipse.core.internal.boot.update.IProductDescriptor;
-import org.eclipse.core.internal.boot.update.IUMRegistry;
-import org.eclipse.core.internal.boot.update.UMEclipseTree;
-import org.eclipse.core.internal.boot.update.URLNamePair;
-import org.eclipse.core.internal.boot.update.UpdateManagerConstants;
-import org.eclipse.core.internal.boot.update.BaseURLHandler.Response;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ColumnLayoutData;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.custom.TableTree;
-import org.eclipse.swt.custom.TableTreeItem;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.MouseTrackListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Point;
-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.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.update.internal.core.URLHandler;
-import org.eclipse.update.internal.core.UpdateManagerStrings;
-import org.eclipse.webdav.http.client.IStatusCodes;
-
-/**
- * Presents products and components that may be selected for installation.
- */
-public class UMWizardPageInstallable extends WizardPage implements MouseMoveListener, MouseTrackListener, SelectionListener {
- protected boolean _bRefreshRequired = true;
- protected UMWizard _wizard = null;
- protected TableTree _tableTreeItems = null;
- protected Hashtable _hashRegistryCache = new Hashtable();
- protected TreeSet _treeSetItems = null;
- protected TreeSet _treeSetLocations = null;
- protected Text _textDescription = null;
- protected String _strDescription = null;
- protected boolean _bUpdateMode = false;
- protected SashForm _sashFormTopBottom = null;
- protected IProgressMonitor _progressMonitor = null;
- protected URLNamePair[] _urlNamePairs = null;
- protected Button _buttonShowLatestOnly = null;
- protected boolean _bShowLatestOnly = true;
- /**
- *
- */
- public UMWizardPageInstallable(UMWizard wizard, String strName, boolean bUpdateMode) {
- super(strName);
- _wizard = wizard;
- _bUpdateMode = bUpdateMode;
-
- if (bUpdateMode == true) {
- this.setTitle(UpdateManagerStrings.getString("S_New_Component_Updates"));
- this.setDescription(UpdateManagerStrings.getString("S_Select_available_versions_to_install"));
- }
- else {
- this.setTitle(UpdateManagerStrings.getString("S_New_Components"));
- this.setDescription(UpdateManagerStrings.getString("S_Select_components_to_install"));
- }
- }
- /**
- *
- */
- public void addLocationToTree(IUMRegistry registryRemote, IUMRegistry registryLocal, IProgressMonitor progressMonitor) {
-
- UMWizardTreeItem itemProduct = null;
- UMWizardTreeItem itemComponent = null;
- UMWizardTreeItem itemComponentEntry = null;
- UMWizardTreeItem itemLocation = null;
- UMWizardTreeItem itemComponentCategory = null;
- UMWizardTreeItem itemProductCategory = null;
-
- IProductDescriptor descriptorLocalProduct = null;
- IProductDescriptor[] descriptorsProduct = null;
- IComponentDescriptor descriptorLocalComponent = null;
- IComponentDescriptor[] descriptorsComponent = null;
- IComponentEntryDescriptor[] descriptorsEntry = null;
-
- // Obtain descriptors
- //-------------------
- if (_bShowLatestOnly == true) {
- descriptorsProduct = registryRemote.getProductDescriptors();
- descriptorsComponent = registryRemote.getComponentDescriptors();
- }
- else {
- descriptorsProduct = registryRemote.getAllProductDescriptors();
- descriptorsComponent = registryRemote.getAllComponentDescriptors();
- }
-
- if (descriptorsProduct.length + descriptorsComponent.length > 0) {
-
- itemLocation = new UMWizardTreeItem();
- itemLocation._iType = UpdateManagerConstants.TYPE_URL;
- itemLocation._strDescription = registryRemote.getRegistryBaseURL().toExternalForm();
- itemLocation._strName = getURLDescription(itemLocation._strDescription);
- itemLocation._strURLUpdate = itemLocation._strName;
-
- progressMonitor.beginTask(UpdateManagerStrings.getString("S_Examining") + ":", descriptorsProduct.length + descriptorsComponent.length);
- progressMonitor.subTask(itemLocation._strName);
-
- IManifestDescriptor[] descriptorsSelected = _wizard._manifestDescriptors;
-
- boolean bIncludeThisOne = false;
-
- // Products
- //---------
- if (descriptorsProduct.length > 0) {
-
- itemProductCategory = new UMWizardTreeItem();
- itemProductCategory._iType = UpdateManagerConstants.TYPE_PRODUCT_CATEGORY;
- itemProductCategory._strName = "products";
-
- // Add product category to location tree later
- //--------------------------------------------
- IProductDescriptor descriptorProductSelected = null;
-
- for (int i = 0; i < descriptorsProduct.length; ++i) {
-
- // Include all if selected descriptors is null
- // Otherwise, include only those selected
- //--------------------------------------------
- bIncludeThisOne = true;
-
- if (descriptorsSelected != null) {
- bIncludeThisOne = false;
-
- for (int j = 0; j < descriptorsSelected.length; ++j) {
- if (descriptorsSelected[j] instanceof IProductDescriptor) {
- descriptorProductSelected = (IProductDescriptor) descriptorsSelected[j];
- if (descriptorProductSelected.getUniqueIdentifier() != null) {
- if (descriptorProductSelected.getUniqueIdentifier().equals(descriptorsProduct[i].getUniqueIdentifier()) == true) {
- bIncludeThisOne = true;
- break;
- }
- }
- }
- }
- }
-
- // Display only non-installed items
- //---------------------------------
- if (_bUpdateMode == false) {
- if (registryLocal.getProductDescriptor(descriptorsProduct[i].getUniqueIdentifier()) != null) {
- bIncludeThisOne = false;
- }
- }
-
- if (bIncludeThisOne == true) {
- itemProduct = new UMWizardTreeItem();
- itemProduct._iType = UpdateManagerConstants.TYPE_PRODUCT;
- itemProduct._strDescription = descriptorsProduct[i].getDescription();
- itemProduct._strName = descriptorsProduct[i].getLabel();
- itemProduct._strId = descriptorsProduct[i].getUniqueIdentifier();
- itemProduct._strVendorName = descriptorsProduct[i].getProviderName();
- itemProduct._strVersionAvailable = descriptorsProduct[i].getVersionStr();
- itemProduct._descriptorAvailable = descriptorsProduct[i];
-
- descriptorLocalProduct = registryLocal.getProductDescriptor(itemProduct._strId);
-
- if (descriptorLocalProduct != null) {
- itemProduct._descriptorCurrent = descriptorLocalProduct;
- itemProduct._strVersionCurrent = descriptorLocalProduct.getVersionStr();
- }
-
- itemProductCategory.addChildItem(itemProduct);
-
- // Component entries of the product
- //---------------------------------
- descriptorsEntry = descriptorsProduct[i].getComponentEntries();
-
- for (int j = 0; j < descriptorsEntry.length; ++j) {
-
- // Turn off selected flag
- //-----------------------
- descriptorsEntry[j].isSelected(false);
- itemComponentEntry = new UMWizardTreeItem();
- itemComponentEntry._iType = UpdateManagerConstants.TYPE_COMPONENT_ENTRY;
- itemComponentEntry._strName = descriptorsEntry[j].getLabel();
- itemComponentEntry._strId = descriptorsEntry[j].getUniqueIdentifier();
- itemComponentEntry._strVersionAvailable = descriptorsEntry[j].getVersionStr();
- itemComponentEntry._descriptorEntry = descriptorsEntry[j];
-
- descriptorLocalComponent = registryLocal.getComponentDescriptor(itemComponentEntry._strId);
-
- if (descriptorLocalComponent != null) {
- itemComponentEntry._strVersionCurrent = descriptorLocalComponent.getVersionStr();
- itemComponentEntry._strVendorName = descriptorLocalComponent.getProviderName();
- itemComponentEntry._descriptorCurrent = descriptorLocalComponent;
- }
-
- itemProduct.addChildItem(itemComponentEntry);
- }
- }
-
- progressMonitor.worked(1);
- }
-
- // Add component category if there are any components
- //---------------------------------------------------
- if (itemProductCategory._vectorChildren != null && itemProductCategory._vectorChildren.size() > 0) {
- itemLocation.addChildItem(itemProductCategory);
- }
- }
-
- // Components
- //-----------
- if (descriptorsComponent.length > 0) {
-
- itemComponentCategory = new UMWizardTreeItem();
- itemComponentCategory._iType = UpdateManagerConstants.TYPE_COMPONENT_CATEGORY;
- itemComponentCategory._strName = "components";
-
- // Add product category to location tree later
- //--------------------------------------------
- IComponentDescriptor descriptorComponentSelected = null;
- for (int i = 0; i < descriptorsComponent.length; ++i) {
-
- // Include all if selected descriptors is null
- // Otherwise, include only those selected
- //--------------------------------------------
- bIncludeThisOne = true;
- if (descriptorsSelected != null) {
- bIncludeThisOne = false;
- for (int j = 0; j < descriptorsSelected.length; ++j) {
- if (descriptorsSelected[j] instanceof IComponentDescriptor) {
- descriptorComponentSelected = (IComponentDescriptor) descriptorsSelected[j];
- if (descriptorComponentSelected.getUniqueIdentifier() != null) {
- if (descriptorComponentSelected.getUniqueIdentifier().equals(descriptorsComponent[i].getUniqueIdentifier()) == true) {
- bIncludeThisOne = true;
- break;
- }
- }
- }
- }
- }
-
- // Display only non-installed items
- //---------------------------------
- if (_bUpdateMode == false) {
- if (registryLocal.getComponentDescriptor(descriptorsComponent[i].getUniqueIdentifier()) != null) {
- bIncludeThisOne = false;
- }
- }
-
- if (bIncludeThisOne == true) {
- itemComponent = new UMWizardTreeItem();
- itemComponent._iType = UpdateManagerConstants.TYPE_COMPONENT;
- itemComponent._strDescription = descriptorsComponent[i].getDescription();
- itemComponent._strName = descriptorsComponent[i].getLabel();
- itemComponent._strId = descriptorsComponent[i].getUniqueIdentifier();
- itemComponent._strVendorName = descriptorsComponent[i].getProviderName();
- itemComponent._strVersionAvailable = descriptorsComponent[i].getVersionStr();
- itemComponent._descriptorAvailable = descriptorsComponent[i];
-
- descriptorLocalComponent = registryLocal.getComponentDescriptor(itemComponent._strId);
-
- if (descriptorLocalComponent != null) {
- itemComponent._strVersionCurrent = descriptorLocalComponent.getVersionStr();
- itemComponent._descriptorCurrent = descriptorLocalComponent;
- }
-
- itemComponentCategory.addChildItem(itemComponent);
- }
- progressMonitor.worked(1);
- }
-
- // Add component category if there are any components
- //---------------------------------------------------
- if (itemComponentCategory._vectorChildren != null && itemComponentCategory._vectorChildren.size() > 0) {
- itemLocation.addChildItem(itemComponentCategory);
- }
- }
- progressMonitor.done();
-
- // Add location if there are any products/components
- //---------------------------------------------------
- if (itemLocation._vectorChildren != null && itemLocation._vectorChildren.size() > 0) {
- _treeSetItems.add(itemLocation);
- }
- }
- }
- /**
- *
- */
- public void connectToTree() {
-
- // Remove all existing tree items
- //-------------------------------
- _tableTreeItems.removeAll();
-
- UMWizardTreeItem item = null;
-
- Iterator iter = _treeSetItems.iterator();
-
- while (iter.hasNext() == true) {
-
- item = (UMWizardTreeItem) iter.next();
-
- // Create a new tree item for the top level (URL)
- //-----------------------------------------------
- TableTreeItem treeItem = new TableTreeItem(_tableTreeItems, SWT.NULL);
-
- if (item._strName != null)
- treeItem.setText(0, item._strName);
-
- if (item._strVendorName != null)
- treeItem.setText(4, item._strVendorName);
-
- treeItem.setData(item);
-
- // Create child tree items
- //------------------------
- if (item._vectorChildren != null) {
- for (int i = 0; i < item._vectorChildren.size(); ++i) {
- connectToTree((UMWizardTreeItem) item._vectorChildren.elementAt(i), treeItem);
- }
- }
-
- treeItem.setExpanded(true);
- }
- }
- /**
- * Connects items to a new tree widget.
- */
- public void connectToTree(UMWizardTreeItem item, TableTreeItem treeItemParent) {
-
- // Ignore product category and component category items
- //-----------------------------------------------------
- TableTreeItem treeItem = treeItemParent;
-
- // Create a new tree item
- //-----------------------
- if (item._iType == UpdateManagerConstants.TYPE_PRODUCT || item._iType == UpdateManagerConstants.TYPE_COMPONENT || item._iType == UpdateManagerConstants.TYPE_COMPONENT_ENTRY) {
-
- treeItem = new TableTreeItem(treeItemParent, SWT.NULL);
- treeItem.setText(0, item._strName);
- treeItem.setData(item);
-
- // Table text
- //-----------
- if (item._strVersionCurrent != null)
- treeItem.setText(1, item._strVersionCurrent);
-
- if (item._strVersionAvailable != null)
- treeItem.setText(2, item._strVersionAvailable);
-
- if (item._strVendorName != null)
- treeItem.setText(4, item._strVendorName);
-
- // Status text
- //------------
- boolean bInstallable = false;
-
- if (item._iType == UpdateManagerConstants.TYPE_PRODUCT) {
- int iInstallable = isInstallableProduct(treeItem);
- treeItem.setText(3, convertInstallableToString(iInstallable));
- }
-
- else if (item._iType == UpdateManagerConstants.TYPE_COMPONENT) {
- int iInstallable = isInstallableComponent(treeItem);
- treeItem.setText(3, convertInstallableToString(iInstallable));
- }
-
- else if (item._iType == UpdateManagerConstants.TYPE_COMPONENT_ENTRY) {
-
- int iInstallable = isInstallableComponentEntry(treeItem);
- treeItem.setText(3, convertInstallableToString(iInstallable));
-
- if (iInstallable == UpdateManagerConstants.OK_TO_INSTALL) {
- // Optional installation
- //----------------------
- if (item._descriptorEntry.isOptionalForInstall() == true) {
- treeItem.setText(3, UpdateManagerStrings.getString("S_optional"));
- }
- }
- else {
- treeItem.setText(3, convertInstallableToString(iInstallable));
- }
- }
- }
-
- // Create child tree items
- //------------------------
- if (item._vectorChildren != null) {
- for (int i = 0; i < item._vectorChildren.size(); ++i) {
- connectToTree((UMWizardTreeItem) item._vectorChildren.elementAt(i), treeItem);
- }
- }
-
- // Expand only after children have been created
- //---------------------------------------------
- if (item._iType != UpdateManagerConstants.TYPE_PRODUCT)
- treeItem.setExpanded(true);
-
- return;
- }
- /**
- * Converts installable constant to a displayable string
- */
- public String convertInstallableToString(int iInstallable) {
-
- switch (iInstallable) {
- case UpdateManagerConstants.NOT_COMPATIBLE :
- return UpdateManagerStrings.getString("S_not_compatible");
- case UpdateManagerConstants.NOT_NEWER :
- return UpdateManagerStrings.getString("S_not_newer");
- case UpdateManagerConstants.NOT_UPDATABLE :
- return UpdateManagerStrings.getString("S_not_updatable");
- case UpdateManagerConstants.NOT_AVAILABLE :
- return UpdateManagerStrings.getString("S_not_available");
- default :
- return "";
- }
- }
- /**
- * createContents method comment.
- */
- public void createControl(Composite compositeParent) {
- // Content
- //--------
- Composite compositeContent = new Composite(compositeParent, SWT.NULL);
-
- GridLayout layout = new GridLayout();
- compositeContent.setLayout(layout);
-
- GridData gridData = new GridData();
- gridData.horizontalAlignment = GridData.FILL;
- gridData.verticalAlignment = GridData.FILL;
- gridData.grabExcessHorizontalSpace = true;
- gridData.grabExcessVerticalSpace = true;
- compositeContent.setLayoutData(gridData);
-
- // Checkbox: Show most recent versions only
- //-----------------------------------------
- _buttonShowLatestOnly = new Button(compositeContent, SWT.CHECK);
- _buttonShowLatestOnly.setText(UpdateManagerStrings.getString("S_Show_only_most_recent_versions"));
- _buttonShowLatestOnly.setSelection(_bShowLatestOnly);
- _buttonShowLatestOnly.addSelectionListener(this);
-
- // SashPane Top/Bottom
- //--------------------
- _sashFormTopBottom = new SashForm(compositeContent, SWT.VERTICAL);
-
- gridData = new GridData();
- gridData.horizontalAlignment = GridData.FILL;
- gridData.verticalAlignment = GridData.FILL;
- gridData.grabExcessHorizontalSpace = true;
- gridData.grabExcessVerticalSpace = true;
- _sashFormTopBottom.setLayoutData(gridData);
-
- // Tree: Installable
- //------------------
- _tableTreeItems = new TableTree(_sashFormTopBottom, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER | SWT.CHECK);
-
- String[] columnTitles = { UpdateManagerStrings.getString("S_Component"), UpdateManagerStrings.getString("S_Installed"), UpdateManagerStrings.getString("S_Available"), UpdateManagerStrings.getString("S_Status"), UpdateManagerStrings.getString("S_Provider")};
- int[] iColumnWeight = { 40, 15, 15, 15, 15 };
- TableLayout layoutTable = new TableLayout();
-
- for (int i = 0; i < columnTitles.length; i++) {
- TableColumn tableColumn = new TableColumn(_tableTreeItems.getTable(), SWT.NONE);
- tableColumn.setText(columnTitles[i]);
- ColumnLayoutData cLayout = new ColumnWeightData(iColumnWeight[i], true);
- layoutTable.addColumnData(cLayout);
- }
-
- _tableTreeItems.getTable().setLinesVisible(true);
- _tableTreeItems.getTable().setHeaderVisible(true);
- _tableTreeItems.getTable().setLayout(layoutTable);
- _tableTreeItems.getTable().addMouseMoveListener(this);
- _tableTreeItems.getTable().addMouseTrackListener(this);
-
- _tableTreeItems.addSelectionListener(this);
-
- gridData = new GridData();
- gridData.horizontalAlignment = GridData.FILL;
- gridData.verticalAlignment = GridData.FILL;
- gridData.grabExcessHorizontalSpace = true;
- gridData.grabExcessVerticalSpace = true;
- _tableTreeItems.setLayoutData(gridData);
-
- // Text: Description
- //------------------
- _textDescription = new Text(_sashFormTopBottom, SWT.WRAP | SWT.READ_ONLY | SWT.MULTI | SWT.BORDER);
- gridData = new GridData();
- gridData.horizontalAlignment = GridData.FILL;
- gridData.verticalAlignment = GridData.FILL;
- gridData.heightHint = 50;
- _textDescription.setLayoutData(gridData);
-
- _sashFormTopBottom.setWeights(new int[] { 80, 20 });
-
- setControl(compositeContent);
-
- setPageComplete(false);
- }
- /**
- *
- */
- public IUMRegistry getRegistryAt(String strLocation) {
-
- IUMRegistry registry = (IUMRegistry) _hashRegistryCache.get(strLocation);
-
- // Create new entry if not found
- //------------------------------
- if (registry == null) {
- URL url = null;
-
- try {
- url = new URL(strLocation);
- }
- catch (MalformedURLException ex) {
- return null;
- }
-
- registry = _wizard._updateManager.getRegistryAt(url);
-
- if (registry != null) {
- _hashRegistryCache.put(strLocation, registry);
- }
- }
-
- return registry;
- }
- /**
- *
- */
- public UMWizardTreeItem[] getSelectedItems() {
-
- UMWizardTreeItem[] items = null;
-
- // Obtain all selected items
- //--------------------------
- TableTreeItem[] treeItemChildren = _tableTreeItems.getItems();
-
- // Place them into an array
- //-------------------------
- Hashtable hashProducts = new Hashtable();
- Hashtable hashComponents = new Hashtable();
- Hashtable hashComponentEntries = new Hashtable();
-
- for (int i = 0; i < treeItemChildren.length; ++i) {
- getSelectedItemsRecursive(treeItemChildren[i], hashProducts, hashComponents, hashComponentEntries);
- }
-
- // Copy items to an array
- //-----------------------
- items = new UMWizardTreeItem[hashProducts.size() + hashComponents.size() + hashComponentEntries.size()];
-
- // Products
- //---------
- Object[] objArray = hashProducts.values().toArray();
- System.arraycopy(objArray, 0, items, 0, objArray.length);
-
- // Components
- //-----------
- objArray = hashComponents.values().toArray();
- System.arraycopy(objArray, 0, items, hashProducts.size(), objArray.length);
-
- // Component Entries
- //------------------
- objArray = hashComponentEntries.values().toArray();
- System.arraycopy(objArray, 0, items, hashProducts.size() + hashComponents.size(), objArray.length);
-
- return items;
- }
- /**
- *
- */
- public void getSelectedItemsRecursive(TableTreeItem treeItem, Hashtable hashProducts, Hashtable hashComponents, Hashtable hashComponentEntries) {
-
- // Obtain all selected items
- //--------------------------
- UMWizardTreeItem umTreeItem = null;
-
- if (treeItem.getChecked() == true) {
- umTreeItem = (UMWizardTreeItem) treeItem.getData();
-
- if (umTreeItem != null) {
- if (umTreeItem._iType == UpdateManagerConstants.TYPE_PRODUCT) {
-
- // Remove duplicates by storing newer ones only
- //---------------------------------------------
- if (hashProducts.containsKey(umTreeItem._strId) == true) {
- UMWizardTreeItem umTreeItemPrevious = (UMWizardTreeItem) hashProducts.get(umTreeItem._strId);
- if (((IProductDescriptor) umTreeItem._descriptorAvailable).compare((IProductDescriptor) umTreeItemPrevious._descriptorAvailable) > 0) {
- hashProducts.remove(umTreeItem._strId);
- hashProducts.put(umTreeItem._strId, umTreeItem);
- }
- }
- else {
- hashProducts.put(umTreeItem._strId, umTreeItem);
- }
- }
-
- else if (umTreeItem._iType == UpdateManagerConstants.TYPE_COMPONENT) {
-
- // Remove duplicates by storing newer ones only
- //---------------------------------------------
- if (hashComponents.containsKey(umTreeItem._strId) == true) {
- UMWizardTreeItem umTreeItemPrevious = (UMWizardTreeItem) hashComponents.get(umTreeItem._strId);
- if (((IComponentDescriptor) umTreeItem._descriptorAvailable).compare((IComponentDescriptor) umTreeItemPrevious._descriptorAvailable) > 0) {
- hashComponents.remove(umTreeItem._strId);
- hashComponents.put(umTreeItem._strId, umTreeItem);
- }
- }
- else {
- hashComponents.put(umTreeItem._strId, umTreeItem);
- }
- }
-
- else if (umTreeItem._iType == UpdateManagerConstants.TYPE_COMPONENT_ENTRY) {
-
- // Add only if the parent product has not been selected
- //-----------------------------------------------------
- TableTreeItem treeItemParent = treeItem.getParentItem();
- if (treeItemParent.getChecked() == false) {
-
- // Remove duplicates by storing newer ones only
- //---------------------------------------------
- if (hashComponentEntries.containsKey(umTreeItem._strId) == true) {
- UMWizardTreeItem umTreeItemPrevious = (UMWizardTreeItem) hashComponentEntries.get(umTreeItem._strId);
- if (((IComponentEntryDescriptor) umTreeItem._descriptorEntry).compare((IComponentEntryDescriptor) umTreeItemPrevious._descriptorEntry) > 0) {
- hashComponentEntries.remove(umTreeItem._strId);
- hashComponentEntries.put(umTreeItem._strId, umTreeItem);
- }
- }
- else {
- hashComponentEntries.put(umTreeItem._strId, umTreeItem);
- }
- }
- }
- }
- }
-
- // Do child items
- //---------------
- TableTreeItem[] treeItemChildren = treeItem.getItems();
-
- for (int i = 0; i < treeItemChildren.length; ++i) {
- getSelectedItemsRecursive(treeItemChildren[i], hashProducts, hashComponents, hashComponentEntries);
- }
-
- return;
- }
- /**
- */
- public String getURLDescription(String strURL) {
-
- if (_treeSetLocations != null && _treeSetLocations.size() > 0) {
- Iterator iter = _treeSetLocations.iterator();
- URLNamePair pair = null;
- while (iter.hasNext() == true) {
- pair = (URLNamePair) iter.next();
- if (pair._getURL().equals(strURL) == true) {
- if (pair._getName() != null && pair._getName().length() > 0) {
- return pair._getName();
- }
- }
- }
- }
-
- return strURL;
- }
- /**
- * Obtains a list of registered component URLs from the local update registry.
- * Obtains a list of bookmarked URLs from the persistent data.
- * Creates a tree for all of the URLs.
- */
- protected void initializeContent() {
-
- if (_bRefreshRequired == false) {
- return;
- }
-
- // Add all selected locations to a set
- //------------------------------------
- _treeSetLocations = new TreeSet(new UMWizardURLNamePairComparator());
-
- // Obtain predefined locations strings from location page
- //-------------------------------------------------------
- UMWizardPageLocations pageLocations = (UMWizardPageLocations) _wizard.getPage("locations");
-
- URLNamePair[] pairs = pageLocations.getSelectedPredefinedLocations();
-
- for (int i = 0; i < pairs.length; ++i) {
- _treeSetLocations.add(pairs[i]);
- }
-
- // Obtain additional locations strings from location page
- //-------------------------------------------------------
- pairs = pageLocations.getSelectedAdditionalLocations();
-
- for (int i = 0; i < pairs.length; ++i) {
- _treeSetLocations.add(pairs[i]);
- }
-
- // Obtain local registry in case there are installed versions
- //-----------------------------------------------------------
- final IUMRegistry registryLocal = _wizard._updateManager.getRegistryManager().getCurrentRegistry();
-
- final Vector vectorRegistries = new Vector();
- final Vector vectorURLsFailed = new Vector();
-
- _tableTreeItems.setRedraw(false);
-
- // Create an operation that read and create a registry for each location
- //----------------------------------------------------------------------
- IRunnableWithProgress operation = new IRunnableWithProgress() {
- public void run(IProgressMonitor progressMonitor) throws InvocationTargetException, InterruptedException {
-
- _progressMonitor = progressMonitor;
-
- progressMonitor.beginTask(UpdateManagerStrings.getString("S_Reading") + ":", _treeSetLocations.size());
-
- URLNamePair pair = null;
- IUMRegistry registry = null;
-
- Iterator iter = _treeSetLocations.iterator();
-
- boolean bUrlOk = false;
-
- while (iter.hasNext() == true) {
-
- bUrlOk = false;
-
- // Obtain the registry for the URL
- // This will download the information
- //-----------------------------------
- pair = (URLNamePair) iter.next();
-
- progressMonitor.subTask(pair._getName());
-
- // Attempt to open the stream
- //---------------------------
- try {
- URL url = new URL(pair._getURL());
- url = UMEclipseTree.appendTrailingSlash(url);
- Response response = URLHandler.open(url);
- // we open the url to get authenticated. response code not
- // important at this point
- /* if (response.getResponseCode() == IStatusCodes.HTTP_OK) {
- InputStream stream = response.getInputStream();
-
- if (stream != null) {
- stream.close();*/
- bUrlOk = true;
- // }
- // }
- }
- catch (Exception ex) {
- }
-
- if (bUrlOk == true) {
- registry = getRegistryAt(pair._getURL());
-
- // Add it to the list
- //-------------------
- if (registry != null)
- vectorRegistries.add(registry);
- }
- else {
- vectorURLsFailed.add(pair);
- }
-
- progressMonitor.worked(1);
- }
- progressMonitor.done();
-
- _progressMonitor = null;
- }
- };
-
- // Run the operation
- //------------------
- try {
- _wizard.getContainer().run(true, true, operation);
- }
- catch (InterruptedException e) {
- }
- catch (InvocationTargetException e) {
- }
-
- // Create a new tree
- //------------------
- _treeSetItems = new TreeSet(new UMWizardTreeItemComparator());
-
- // Create an operation that will fill the tree with information
- // Location URL A
- // products
- // Product A
- // Product B
- // components
- // Component A
- // Component B
- // Location URL B
- // ...
- //-------------------------------------------------------------
- operation = new IRunnableWithProgress() {
- public void run(IProgressMonitor progressMonitor) throws InvocationTargetException {
-
- IUMRegistry registryRemote = null;
-
- for (int i = 0; i < vectorRegistries.size(); ++i) {
- registryRemote = (IUMRegistry) vectorRegistries.elementAt(i);
- addLocationToTree(registryRemote, registryLocal, progressMonitor);
- }
- }
- };
-
- // Run the operation
- //------------------
- try {
- _wizard.getContainer().run(true, true, operation);
- }
- catch (InterruptedException e) {
- return;
- // System.out.println( "Interrupted" );
- }
- catch (InvocationTargetException e) {
- // System.out.println( "Invocation" );
- }
-
- _tableTreeItems.setRedraw(true);
-
- // Create tree widget items for each update manager tree item
- //-----------------------------------------------------------
- connectToTree();
-
- StringBuffer strbMessage = new StringBuffer();
-
- // Determine whether there are any updatable items
- //------------------------------------------------
- if (_tableTreeItems.getItemCount() == 0)
- strbMessage.append(UpdateManagerStrings.getString("S_No_installable_items_were_found") + "\n\n");
-
- // Determine if any locations could not be accessed
- //-------------------------------------------------
- if (vectorURLsFailed.size() > 0) {
- strbMessage.append(UpdateManagerStrings.getString("S_Unable_to_access_the_following_locations") + ":");
- for (int i = 0; i < vectorURLsFailed.size(); ++i) {
- strbMessage.append("\n ");
- strbMessage.append(((URLNamePair) vectorURLsFailed.elementAt(i))._getName());
- strbMessage.append(" (");
- strbMessage.append(((URLNamePair) vectorURLsFailed.elementAt(i))._getURL());
- strbMessage.append(")");
- }
- }
-
- if (strbMessage.length() > 0) {
- MessageDialog.openInformation(getControl().getShell(), UpdateManagerStrings.getString("S_Information"), strbMessage.toString());
- }
-
- // Reset refresh flag
- //-------------------
- _bRefreshRequired = false;
-
- return;
- }
- /**
- */
- public int isInstallableComponent(TableTreeItem treeItemComponent) {
-
- UMWizardTreeItem umTreeItem = (UMWizardTreeItem) treeItemComponent.getData();
-
- // False if none available to install
- //-----------------------------------
- if (umTreeItem._descriptorAvailable == null) {
- return -1;
- }
-
- // True if not yet installed
- //--------------------------
- if (umTreeItem._descriptorCurrent == null) {
- return UpdateManagerConstants.OK_TO_INSTALL;
- }
-
- // True if installable
- //--------------------
- return ((IComponentDescriptor) umTreeItem._descriptorAvailable).isInstallable((IComponentDescriptor) umTreeItem._descriptorCurrent);
- }
- /**
- * @return int
- * @param treeItemComponent org.eclipse.swt.custom.TableTreeItem
- */
- public int isInstallableComponentEntry(TableTreeItem treeItemComponentEntry) {
-
- UMWizardTreeItem umTreeItem = (UMWizardTreeItem) treeItemComponentEntry.getData();
-
- // False if none available to install
- //-----------------------------------
- if (umTreeItem._descriptorEntry == null) {
- return -1;
- }
-
- // Is the product installable?
- //----------------------------
- TableTreeItem treeItemProduct = treeItemComponentEntry.getParentItem();
-
- int iProductInstallable = isInstallableProduct(treeItemProduct);
-
- // If the product is not installable, disable if mandatory component
- //------------------------------------------------------------------
- if (iProductInstallable != UpdateManagerConstants.OK_TO_INSTALL) {
- if (umTreeItem._descriptorEntry.isOptionalForInstall() == false) {
- return iProductInstallable;
- }
- }
-
- return umTreeItem._descriptorEntry.isInstallable((IComponentDescriptor) umTreeItem._descriptorCurrent);
- }
- /**
- * @return int
- * @param treeItemComponent org.eclipse.swt.custom.TableTreeItem
- */
- public int isInstallableProduct(TableTreeItem treeItemProduct) {
-
- UMWizardTreeItem umTreeItem = (UMWizardTreeItem) treeItemProduct.getData();
-
- // False if none available to install
- //-----------------------------------
- if (umTreeItem._descriptorAvailable == null) {
- return -1;
- }
-
- // True if not yet installed
- //--------------------------
- else if (umTreeItem._descriptorCurrent == null) {
- return UpdateManagerConstants.OK_TO_INSTALL;
- }
-
- // True if installable
- //--------------------
- return ((IProductDescriptor) umTreeItem._descriptorAvailable).isInstallable((IProductDescriptor) umTreeItem._descriptorCurrent);
- }
- /**
- *
- */
- public boolean isInstallableRecursive(TableTreeItem treeItem) {
-
- boolean bInstallable = false;
-
- UMWizardTreeItem umTreeItem = (UMWizardTreeItem) treeItem.getData();
-
- // True if product or component is checked
- //----------------------------------------
- if (treeItem.getChecked() == true) {
- if (umTreeItem._iType == UpdateManagerConstants.TYPE_COMPONENT || umTreeItem._iType == UpdateManagerConstants.TYPE_PRODUCT || umTreeItem._iType == UpdateManagerConstants.TYPE_COMPONENT_ENTRY) {
- return true;
- }
- }
-
- // Check all children
- //-------------------
- TableTreeItem[] treeItemChildren = treeItem.getItems();
-
- for (int i = 0; i < treeItemChildren.length; ++i) {
- if (isInstallableRecursive(treeItemChildren[i]) == true) {
- return true;
- }
- }
-
- return false;
- }
- /**
- * Sent when the mouse pointer passes into the area of
- * the screen covered by a control.
- */
- public void mouseEnter(org.eclipse.swt.events.MouseEvent e) {
- }
- /**
- * Sent when the mouse pointer passes out of the area of
- * the screen covered by a control. Erases the description text area.
- */
- public void mouseExit(MouseEvent e) {
- if (_strDescription != _wizard._strEmpty) {
- _textDescription.setText(_wizard._strEmpty);
- _strDescription = _wizard._strEmpty;
- }
- }
- /**
- * Sent when the mouse pointer hovers (that is, stops moving
- * for an (operating system specified) period of time) over
- * a control.
- */
- public void mouseHover(MouseEvent e) {
- }
- /**
- * Determines which item the mouse is over. Sets the text in the description text area to the description of the item.
- */
- public void mouseMove(MouseEvent e) {
-
- // Table item
- //-----------
- TableItem tableItem = _tableTreeItems.getTable().getItem(new Point(e.x, e.y));
-
- // TableTree item
- //---------------
- if (tableItem != null) {
-
- TableTreeItem tableTreeItem = (TableTreeItem) tableItem.getData();
-
- // UMWizardTreeItem
- //----------------------
- if (tableTreeItem != null) {
-
- UMWizardTreeItem item = (UMWizardTreeItem) tableTreeItem.getData();
-
- // Description string
- //-------------------
- if (item != null) {
- if (item._strDescription != null) {
- if (_strDescription != item._strDescription) {
- _textDescription.setText(item._strDescription);
- _strDescription = item._strDescription;
- }
- }
- else {
- if (_strDescription != _wizard._strEmpty) {
- _textDescription.setText(_wizard._strEmpty);
- _strDescription = _wizard._strEmpty;
- }
- }
- }
- else if (_strDescription != _wizard._strEmpty) {
- _textDescription.setText(_wizard._strEmpty);
- _strDescription = _wizard._strEmpty;
- }
-
- }
- }
- else if (_strDescription != _wizard._strEmpty) {
- _textDescription.setText(_wizard._strEmpty);
- _strDescription = _wizard._strEmpty;
- }
- }
- /**
- * @return boolean
- */
- public boolean performCancel() {
-
- if (_progressMonitor == null)
- return true;
-
- _progressMonitor.setCanceled(true);
- return false;
- }
- /**
- */
- protected boolean setCheckedComponent(TableTreeItem treeItemComponent) {
-
- if (treeItemComponent.getChecked() == false) {
- int iInstallable = isInstallableComponent(treeItemComponent);
-
- setTreeItemChecked(treeItemComponent, iInstallable == 0);
- return iInstallable == 0;
- }
-
- return true;
- }
- /**
- */
- protected boolean setCheckedComponentEntry(TableTreeItem treeItemComponentEntry) {
-
- if (treeItemComponentEntry.getChecked() == false) {
-
- UMWizardTreeItem umTreeItem = (UMWizardTreeItem) treeItemComponentEntry.getData();
-
- int iInstallable = isInstallableComponentEntry(treeItemComponentEntry);
-
- if (iInstallable == 0) {
-
- // Set checked the product and all of its mandatory components
- //------------------------------------------------------------
- TableTreeItem treeItemProduct = treeItemComponentEntry.getParentItem();
-
- boolean bInstallableProduct = setCheckedProduct(treeItemProduct);
-
- // If the product is not installable, disable if mandatory component
- //------------------------------------------------------------------
- if (bInstallableProduct == false) {
-
- if (umTreeItem._descriptorEntry.isOptionalForInstall() == false) {
- if (treeItemComponentEntry.getChecked() == true)
- treeItemComponentEntry.setChecked(false);
- return false;
- }
- }
- }
-
- setTreeItemChecked(treeItemComponentEntry, iInstallable == 0);
- umTreeItem._descriptorEntry.isSelected(iInstallable == 0);
-
- return iInstallable == 0;
- }
-
- return true;
- }
- /**
- * This routine assumes that the checkbox was unchecked and is currently checked
- */
- protected boolean setCheckedProduct(TableTreeItem treeItemProduct) {
-
- if (treeItemProduct.getChecked() == false) {
-
- int iInstallable = isInstallableProduct(treeItemProduct);
-
- setTreeItemChecked(treeItemProduct, iInstallable == 0);
-
- if (iInstallable == 0) {
-
- TableTreeItem[] treeItemChildren = treeItemProduct.getItems();
-
- UMWizardTreeItem umTreeItem = null;
-
- for (int i = 0; i < treeItemChildren.length; ++i) {
- setCheckedComponentEntry(treeItemChildren[i]);
- }
- }
-
- return iInstallable == 0;
- }
-
- return true;
- }
- /**
- * This routine assumes that the checkbox was unchecked and is currently checked.
- */
- protected boolean setCheckedURL(TableTreeItem treeItemURL) {
-
- TableTreeItem[] treeItemChildren = treeItemURL.getItems();
- UMWizardTreeItem umTreeItem = null;
-
- for (int i = 0; i < treeItemChildren.length; ++i) {
- umTreeItem = (UMWizardTreeItem) treeItemChildren[i].getData();
-
- if (umTreeItem._iType == UpdateManagerConstants.TYPE_PRODUCT) {
- setCheckedProduct(treeItemChildren[i]);
- }
- else if (umTreeItem._iType == UpdateManagerConstants.TYPE_COMPONENT) {
- setCheckedComponent(treeItemChildren[i]);
- }
- }
-
- // Always checked
- //---------------
- if (treeItemURL.getChecked() == false)
- treeItemURL.setChecked(true);
-
- return true;
- }
- /**
- */
- protected void setTreeItemChecked(TableTreeItem treeItem, boolean bChecked) {
-
- if (bChecked == true) {
- if (treeItem.getChecked() == false)
- treeItem.setChecked(true);
- }
- else {
- if (treeItem.getChecked() == true)
- treeItem.setChecked(false);
- }
- }
- /**
- */
- public void setTreeItemChecked(boolean bChecked) {
- }
- /**
- */
- public void setTreeItemUncheckedRecursiveBackward(TableTreeItem treeItem) {
-
- if (treeItem.getChecked() != false) {
- treeItem.setChecked(false);
- }
-
- TableTreeItem treeItemParent = treeItem.getParentItem();
-
- if (treeItemParent != null) {
- setTreeItemUncheckedRecursiveBackward(treeItemParent);
- }
- }
- /**
- */
- public void setTreeItemUncheckedRecursiveForward(TableTreeItem treeItem) {
-
- if (treeItem.getChecked() != false) {
-
- treeItem.setChecked(false);
- /*
- UMWizardTreeItem umTreeItem = (UMWizardTreeItem) treeItem.getData();
-
- if (umTreeItem._iType == UpdateManagerConstants.TYPE_COMPONENT_ENTRY) {
-
- if (umTreeItem._descriptorEntry.isOptionalForInstall() == true) {
- umTreeItem._descriptorEntry.isSelected(false);
- }
- }
- */
- }
-
- TableTreeItem[] treeItemChildren = treeItem.getItems();
-
- for (int i = 0; i < treeItemChildren.length; ++i) {
- setTreeItemUncheckedRecursiveForward(treeItemChildren[i]);
- }
- }
- /**
- *
- */
- public void setVisible(boolean bVisible) {
-
- super.setVisible(bVisible);
-
- if (bVisible == true) {
- _sashFormTopBottom.layout();
- initializeContent();
-
- }
- }
- /**
- * Sent when default selection occurs in the control.
- */
- public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
- }
- /**
- * Sent when selection occurs in the control.
- */
- public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
-
- // Checkbox: Show latest versions only
- //------------------------------------
- if (e.widget == _buttonShowLatestOnly) {
- _bShowLatestOnly = _buttonShowLatestOnly.getSelection();
- _bRefreshRequired = true;
- initializeContent();
- }
-
- // TableTreeItem: Checkbox
- //------------------------
- else if (e.widget == _tableTreeItems && e.detail == SWT.CHECK) {
-
- // Set page complete to false in case there are
- // no selected items, or until selection is determined to be valid
- //----------------------------------------------------------------
- setPageComplete(false);
-
- TableTreeItem treeItem = (TableTreeItem) e.item;
-
- UMWizardTreeItem umTreeItem = (UMWizardTreeItem) treeItem.getData();
-
- boolean bChecked = treeItem.getChecked();
-
- // Check
- //------
- if (bChecked == true) {
- // Temporarily uncheck
- //--------------------
- treeItem.setChecked(false);
-
- if (umTreeItem._iType == UpdateManagerConstants.TYPE_URL)
- setCheckedURL(treeItem);
-
- else if (umTreeItem._iType == UpdateManagerConstants.TYPE_PRODUCT)
- setCheckedProduct(treeItem);
-
- else if (umTreeItem._iType == UpdateManagerConstants.TYPE_COMPONENT)
- setCheckedComponent(treeItem);
-
- else if (umTreeItem._iType == UpdateManagerConstants.TYPE_COMPONENT_ENTRY)
- setCheckedComponentEntry(treeItem);
- }
-
- // Uncheck
- //--------
- else {
- switch (umTreeItem._iType) {
- case UpdateManagerConstants.TYPE_COMPONENT_ENTRY :
- umTreeItem._descriptorEntry.isSelected(false);
- if (umTreeItem._descriptorEntry.isOptionalForInstall() == false)
- setTreeItemUncheckedRecursiveBackward(treeItem);
- break;
-
- default :
- setTreeItemUncheckedRecursiveBackward(treeItem);
- setTreeItemUncheckedRecursiveForward(treeItem);
- break;
- }
- }
-
- // Determine if page is complete
- //------------------------------
- boolean bPageComplete = false;
-
- TableTreeItem[] treeItems = _tableTreeItems.getItems();
-
- for (int i = 0; i < treeItems.length; ++i) {
- if (isInstallableRecursive(treeItems[i]) == true) {
- setPageComplete(true);
- break;
- }
- }
- }
-
- return;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageInstalling.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageInstalling.java
deleted file mode 100644
index 7eb1bb8..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageInstalling.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLaunchHistory.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLaunchHistory.java
deleted file mode 100644
index 9589619..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLaunchHistory.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLaunchHistoryComplete.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLaunchHistoryComplete.java
deleted file mode 100644
index 84a9d61..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLaunchHistoryComplete.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLocations.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLocations.java
deleted file mode 100644
index d61bfbb..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageLocations.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLComplete.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLComplete.java
deleted file mode 100644
index 582c842..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLComplete.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstall.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstall.java
deleted file mode 100644
index 4057a14..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstall.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstallable.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstallable.java
deleted file mode 100644
index 0e87c19..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstallable.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstalling.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstalling.java
deleted file mode 100644
index ba49c34..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPageURLInstalling.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPersistentProperties.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPersistentProperties.java
deleted file mode 100644
index 9cd1af7..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardPersistentProperties.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentNew.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentNew.java
deleted file mode 100644
index cdf3a47..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentNew.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentRevert.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentRevert.java
deleted file mode 100644
index 908d541..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentRevert.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentURLInstall.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentURLInstall.java
deleted file mode 100644
index 5c08941..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentURLInstall.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentUpdate.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentUpdate.java
deleted file mode 100644
index f686d65..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardProductComponentUpdate.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardTreeItem.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardTreeItem.java
deleted file mode 100644
index 57ebf4a..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardTreeItem.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardTreeItemComparator.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardTreeItemComparator.java
deleted file mode 100644
index 96c1981..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardTreeItemComparator.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.eclipse.update.internal.ui;
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
-
-/**
- *
- */
-import java.util.Comparator;
-public class UMWizardTreeItemComparator implements Comparator {
- /**
- * UpdateManagerTreeItemComparator constructor comment.
- */
- public UMWizardTreeItemComparator() {
- super();
- }
- /**
- * Compares its two arguments for order. Returns a negative integer,
- * zero, or a positive integer as the first argument is less than, equal
- * to, or greater than the second.<p>
- *
- * The implementor must ensure that <tt>sgn(compare(x, y)) ==
- * -sgn(compare(y, x))</tt> for all <tt>x</tt> and <tt>y</tt>. (This
- * implies that <tt>compare(x, y)</tt> must throw an exception if and only
- * if <tt>compare(y, x)</tt> throws an exception.)<p>
- *
- * The implementor must also ensure that the relation is transitive:
- * <tt>((compare(x, y)>0) && (compare(y, z)>0))</tt> implies
- * <tt>compare(x, z)>0</tt>.<p>
- *
- * Finally, the implementer must ensure that <tt>compare(x, y)==0</tt>
- * implies that <tt>sgn(compare(x, z))==sgn(compare(y, z))</tt> for all
- * <tt>z</tt>.<p>
- *
- * It is generally the case, but <i>not</i> strictly required that
- * <tt>(compare(x, y)==0) == (x.equals(y))</tt>. Generally speaking,
- * any comparator that violates this condition should clearly indicate
- * this fact. The recommended language is "Note: this comparator
- * imposes orderings that are inconsistent with equals."
- *
- * @return a negative integer, zero, or a positive integer as the
- * first argument is less than, equal to, or greater than the
- * second.
- * @throws ClassCastException if the arguments' types prevent them from
- * being compared by this Comparator.
- */
- public int compare(java.lang.Object o1, java.lang.Object o2) {
-
- if (o1 instanceof UMWizardTreeItem && o2 instanceof UMWizardTreeItem) {
- if (((UMWizardTreeItem) o1)._strName != null && ((UMWizardTreeItem) o2)._strName != null) {
- return ((UMWizardTreeItem) o1)._strName.compareTo(((UMWizardTreeItem) o2)._strName);
- }
- }
-
- return 0;
- }
-}
\ No newline at end of file
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardURLNamePairComparator.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardURLNamePairComparator.java
deleted file mode 100644
index 59cd313..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UMWizardURLNamePairComparator.java
+++ /dev/null
Binary files differ
diff --git a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UserValidationDialog.java b/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UserValidationDialog.java
deleted file mode 100644
index 8645286..0000000
--- a/update/org.eclipse.update/src/org/eclipse/update/internal/ui/UserValidationDialog.java
+++ /dev/null
Binary files differ