From be484bedd8cb4d97518836e811021f315a68e731 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sat, 12 Oct 2024 13:23:16 +0200 Subject: [PATCH 01/58] add first implementations of some annotation processing --- pom.xml | 18 ++ .../jdt/internal/common/HelperVisitor.java | 92 ++++++- .../jdt/internal/common/LambdaASTVisitor.java | 79 +++++- .../corext/fix2/MYCleanUpConstants.java | 4 + .../.settings/org.eclipse.jdt.core.prefs | 9 + sandbox_junit_cleanup/.classpath | 21 ++ sandbox_junit_cleanup/.gitignore | 1 + sandbox_junit_cleanup/.project | 34 +++ sandbox_junit_cleanup/META-INF/MANIFEST.MF | 26 ++ sandbox_junit_cleanup/build.properties | 5 + sandbox_junit_cleanup/plugin.xml | 12 + sandbox_junit_cleanup/pom.xml | 17 ++ .../corext/fix/JUnitCleanUpFixCore.java | 97 +++++++ .../corext/fix/helper/AbstractTool.java | 73 ++++++ .../fix/helper/AfterClassJUnitPlugin.java | 91 +++++++ .../corext/fix/helper/AfterJUnitPlugin.java | 91 +++++++ .../fix/helper/BeforeClassJUnitPlugin.java | 93 +++++++ .../corext/fix/helper/BeforeJUnitPlugin.java | 93 +++++++ .../corext/fix/helper/IgnoreJUnitPlugin.java | 106 ++++++++ .../corext/fix/helper/JunitHolder.java | 13 + .../corext/fix/helper/RunWithJUnitPlugin.java | 118 +++++++++ .../corext/fix/helper/TestJUnitPlugin.java | 91 +++++++ .../jdt/internal/ui/fix/JUnitCleanUp.java | 31 +++ .../jdt/internal/ui/fix/JUnitCleanUpCore.java | 110 ++++++++ .../jdt/internal/ui/fix/MultiFixMessages.java | 15 ++ .../ui/fix/MultiFixMessages.properties | 2 + .../preferences/cleanup/CleanUpMessages.java | 27 ++ .../cleanup/CleanUpMessages.properties | 2 + .../DefaultCleanUpOptionsInitializer.java | 26 ++ .../cleanup/SandboxCodeTabPage.java | 49 ++++ .../SaveActionCleanUpOptionsInitializer.java | 26 ++ sandbox_junit_cleanup_feature/.gitignore | 1 + sandbox_junit_cleanup_feature/.project | 23 ++ .../build.properties | 1 + sandbox_junit_cleanup_feature/feature.xml | 50 ++++ sandbox_junit_cleanup_feature/pom.xml | 14 + sandbox_junit_cleanup_test/.classpath | 21 ++ sandbox_junit_cleanup_test/.gitignore | 2 + sandbox_junit_cleanup_test/.project | 34 +++ .../META-INF/MANIFEST.MF | 28 ++ sandbox_junit_cleanup_test/build.properties | 5 + sandbox_junit_cleanup_test/fragment.xml | 5 + sandbox_junit_cleanup_test/pom.xml | 44 ++++ .../ui/tests/quickfix/Java8CleanUpTest.java | 239 ++++++++++++++++++ .../testresources/rtstubs9.jar | Bin 0 -> 791752 bytes sandbox_oomph/sandbox.setup | 4 +- sandbox_oomph/sandboxproject.setup | 9 +- sandbox_target/eclipse.target | 8 - .../quickfix/rules/AbstractEclipseJava.java | 55 +++- sandbox_web/pom.xml | 4 + 50 files changed, 1993 insertions(+), 26 deletions(-) create mode 100644 sandbox_jface_cleanup/.settings/org.eclipse.jdt.core.prefs create mode 100644 sandbox_junit_cleanup/.classpath create mode 100644 sandbox_junit_cleanup/.gitignore create mode 100644 sandbox_junit_cleanup/.project create mode 100644 sandbox_junit_cleanup/META-INF/MANIFEST.MF create mode 100644 sandbox_junit_cleanup/build.properties create mode 100644 sandbox_junit_cleanup/plugin.xml create mode 100644 sandbox_junit_cleanup/pom.xml create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUp.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/MultiFixMessages.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/MultiFixMessages.properties create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/DefaultCleanUpOptionsInitializer.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SaveActionCleanUpOptionsInitializer.java create mode 100644 sandbox_junit_cleanup_feature/.gitignore create mode 100644 sandbox_junit_cleanup_feature/.project create mode 100644 sandbox_junit_cleanup_feature/build.properties create mode 100644 sandbox_junit_cleanup_feature/feature.xml create mode 100644 sandbox_junit_cleanup_feature/pom.xml create mode 100644 sandbox_junit_cleanup_test/.classpath create mode 100644 sandbox_junit_cleanup_test/.gitignore create mode 100644 sandbox_junit_cleanup_test/.project create mode 100644 sandbox_junit_cleanup_test/META-INF/MANIFEST.MF create mode 100644 sandbox_junit_cleanup_test/build.properties create mode 100644 sandbox_junit_cleanup_test/fragment.xml create mode 100644 sandbox_junit_cleanup_test/pom.xml create mode 100644 sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java create mode 100644 sandbox_junit_cleanup_test/testresources/rtstubs9.jar diff --git a/pom.xml b/pom.xml index 78e5fe19..3a87516b 100644 --- a/pom.xml +++ b/pom.xml @@ -44,6 +44,9 @@ sandbox_jface_cleanup sandbox_jface_cleanup_feature sandbox_jface_cleanup_test + sandbox_junit_cleanup + sandbox_junit_cleanup_feature + sandbox_junit_cleanup_test sandbox_usage_view sandbox_usage_view_feature sandbox_product @@ -322,6 +325,21 @@ sandbox_jface_cleanup_test ${project.version} + + org.sandbox + sandbox_junit_cleanup + ${project.version} + + + org.sandbox + sandbox_junit_cleanup_feature + ${project.version} + + + org.sandbox + sandbox_junit_cleanup_test + ${project.version} + org.sandbox sandbox_usage_view diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java index 0dd2c0b1..f77039fe 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java @@ -45,6 +45,10 @@ public class HelperVisitor,V,T> { * */ public static final String METHODNAME = "methodname"; //$NON-NLS-1$ + /** + * + */ + public static final String ANNOTATIONNAME = "annotationname"; //$NON-NLS-1$ /** * @@ -637,6 +641,18 @@ public BiPredicate addMarkerAnnotation(BiPredicate addMarkerAnnotation(String name, BiPredicate bs) { + predicatedata.put(VisitorEnum.MarkerAnnotation, Map.ofEntries( + new AbstractMap.SimpleEntry<>(ANNOTATIONNAME, name) + )); + return predicatemap.put(VisitorEnum.MarkerAnnotation, bs); + } + /** * * @param bs @@ -765,6 +781,17 @@ public BiPredicate addNormalAnnotation(BiPredicate addNormalAnnotation(String name, BiPredicate bs) { + predicatedata.put(VisitorEnum.NormalAnnotation, Map.ofEntries( + new AbstractMap.SimpleEntry<>(ANNOTATIONNAME, name) + )); + return predicatemap.put(VisitorEnum.NormalAnnotation, bs); + } /** * * @param bs @@ -945,7 +972,19 @@ public BiPredicate addSimpleType(BiPredicate addSingleMemberAnnotation(BiPredicate bs) { return predicatemap.put(VisitorEnum.SingleMemberAnnotation, bs); } - + + /** + * @param name + * @param bs + * @return old BiPredicate assigned for nodetype + */ + public BiPredicate addSingleMemberAnnotation(String name, BiPredicate bs) { + predicatedata.put(VisitorEnum.SingleMemberAnnotation, Map.ofEntries( + new AbstractMap.SimpleEntry<>(ANNOTATIONNAME, name) + )); + return predicatemap.put(VisitorEnum.SingleMemberAnnotation, bs); + } + /** * * @param bs @@ -4184,6 +4223,23 @@ public static void callMarkerAnnotationVisitor(ASTNode node, ReferenceHol hv.build(node); } + /** + * @param + * @param + * @param name + * @param node + * @param dataholder + * @param nodesprocessed + * @param bs + */ + public static void callMarkerAnnotationVisitor(String name, ASTNode node, ReferenceHolder dataholder, Set nodesprocessed, + BiPredicate> bs) { + + HelperVisitor,V,T> hv= new HelperVisitor<>(nodesprocessed, dataholder); + hv.addMarkerAnnotation(name, bs); + hv.build(node); + } + /** * * @param @@ -4407,6 +4463,23 @@ public static void callNormalAnnotationVisitor(ASTNode node, ReferenceHol hv.build(node); } + /** + * @param + * @param + * @param name + * @param node + * @param dataholder + * @param nodesprocessed + * @param bs + */ + public static void callNormalAnnotationVisitor(String name, ASTNode node, ReferenceHolder dataholder, Set nodesprocessed, + BiPredicate> bs) { + + HelperVisitor,V,T> hv= new HelperVisitor<>(nodesprocessed, dataholder); + hv.addNormalAnnotation(name, bs); + hv.build(node); + } + /** * * @param @@ -4733,6 +4806,23 @@ public static void callSingleMemberAnnotationVisitor(ASTNode node, Refere hv.build(node); } + /** + * @param + * @param + * @param name + * @param node + * @param dataholder + * @param nodesprocessed + * @param bs + */ + public static void callSingleMemberAnnotationVisitor(String name, ASTNode node, ReferenceHolder dataholder, Set nodesprocessed, + BiPredicate> bs) { + + HelperVisitor,V,T> hv= new HelperVisitor<>(nodesprocessed, dataholder); + hv.addSingleMemberAnnotation(name, bs); + hv.build(node); + } + /** * * @param diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java index f95b2f11..9b859291 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java @@ -459,8 +459,21 @@ public boolean visit(LineComment node) { @Override public boolean visit(MarkerAnnotation node) { if (this.helperVisitor.predicatemap.containsKey(VisitorEnum.MarkerAnnotation)) { - return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.MarkerAnnotation))) - .test(node, this.helperVisitor.dataholder); + Map map=(Map) this.helperVisitor.getSupplierData().get(VisitorEnum.MarkerAnnotation); + if(map != null) { + String data=(String) map.get(HelperVisitor.ANNOTATIONNAME); + ITypeBinding binding = node.resolveTypeBinding(); + String fullyQualifiedName; + if (binding != null) { + fullyQualifiedName = binding.getQualifiedName(); + }else { + fullyQualifiedName = node.getTypeName().getFullyQualifiedName(); + } + if ((data!= null) && !fullyQualifiedName.equals(data)) { + return true; + } + } + return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.MarkerAnnotation))).test(node, this.helperVisitor.dataholder); } return true; } @@ -577,8 +590,21 @@ public boolean visit(NameQualifiedType node) { @Override public boolean visit(NormalAnnotation node) { if (this.helperVisitor.predicatemap.containsKey(VisitorEnum.NormalAnnotation)) { - return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.NormalAnnotation))) - .test(node, this.helperVisitor.dataholder); + Map map=(Map) this.helperVisitor.getSupplierData().get(VisitorEnum.NormalAnnotation); + if(map != null) { + String data=(String) map.get(HelperVisitor.ANNOTATIONNAME); + ITypeBinding binding = node.resolveTypeBinding(); + String fullyQualifiedName; + if (binding != null) { + fullyQualifiedName = binding.getQualifiedName(); + }else { + fullyQualifiedName = node.getTypeName().getFullyQualifiedName(); + } + if ((data!= null) && !fullyQualifiedName.equals(data)) { + return true; + } + } + return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.NormalAnnotation))).test(node, this.helperVisitor.dataholder); } return true; } @@ -757,8 +783,21 @@ public boolean visit(SimpleType node) { @Override public boolean visit(SingleMemberAnnotation node) { if (this.helperVisitor.predicatemap.containsKey(VisitorEnum.SingleMemberAnnotation)) { - return ((BiPredicate) (this.helperVisitor.predicatemap - .get(VisitorEnum.SingleMemberAnnotation))).test(node, this.helperVisitor.dataholder); + Map map=(Map) this.helperVisitor.getSupplierData().get(VisitorEnum.SingleMemberAnnotation); + if(map != null) { + String data=(String) map.get(HelperVisitor.ANNOTATIONNAME); + ITypeBinding binding = node.resolveTypeBinding(); + String fullyQualifiedName; + if (binding != null) { + fullyQualifiedName = binding.getQualifiedName(); + }else { + fullyQualifiedName = node.getTypeName().getFullyQualifiedName(); + } + if ((data!= null) && !fullyQualifiedName.equals(data)) { + return true; + } + } + return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.SingleMemberAnnotation))).test(node, this.helperVisitor.dataholder); } return true; } @@ -1378,6 +1417,20 @@ public void endVisit(LineComment node) { @Override public void endVisit(MarkerAnnotation node) { if (this.helperVisitor.consumermap.containsKey(VisitorEnum.MarkerAnnotation)) { + Map map=(Map) this.helperVisitor.getConsumerData().get(VisitorEnum.MarkerAnnotation); + if(map != null) { + String data=(String) map.get(HelperVisitor.ANNOTATIONNAME); + ITypeBinding binding = node.resolveTypeBinding(); + String fullyQualifiedName; + if (binding != null) { + fullyQualifiedName = binding.getQualifiedName(); + }else { + fullyQualifiedName = node.getTypeName().getFullyQualifiedName(); + } + if ((data!= null) && !fullyQualifiedName.equals(data)) { + return; + } + } ((BiConsumer) (this.helperVisitor.consumermap.get(VisitorEnum.MarkerAnnotation))).accept(node, this.helperVisitor.dataholder); } @@ -1476,6 +1529,20 @@ public void endVisit(NameQualifiedType node) { @Override public void endVisit(NormalAnnotation node) { if (this.helperVisitor.consumermap.containsKey(VisitorEnum.NormalAnnotation)) { + Map map=(Map) this.helperVisitor.getConsumerData().get(VisitorEnum.NormalAnnotation); + if(map != null) { + String data=(String) map.get(HelperVisitor.ANNOTATIONNAME); + ITypeBinding binding = node.resolveTypeBinding(); + String fullyQualifiedName; + if (binding != null) { + fullyQualifiedName = binding.getQualifiedName(); + }else { + fullyQualifiedName = node.getTypeName().getFullyQualifiedName(); + } + if ((data!= null) && !fullyQualifiedName.equals(data)) { + return; + } + } ((BiConsumer) (this.helperVisitor.consumermap.get(VisitorEnum.NormalAnnotation))).accept(node, this.helperVisitor.dataholder); } diff --git a/sandbox_common/src/org/sandbox/jdt/internal/corext/fix2/MYCleanUpConstants.java b/sandbox_common/src/org/sandbox/jdt/internal/corext/fix2/MYCleanUpConstants.java index 24813153..7c86c2b8 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/corext/fix2/MYCleanUpConstants.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/corext/fix2/MYCleanUpConstants.java @@ -71,6 +71,10 @@ public class MYCleanUpConstants { * */ public static final String XML_CLEANUP= "cleanup.xmlcleanup"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP= "cleanup.junitcleanup"; //$NON-NLS-1$ /** * */ diff --git a/sandbox_jface_cleanup/.settings/org.eclipse.jdt.core.prefs b/sandbox_jface_cleanup/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..62ef3488 --- /dev/null +++ b/sandbox_jface_cleanup/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/sandbox_junit_cleanup/.classpath b/sandbox_junit_cleanup/.classpath new file mode 100644 index 00000000..7931ec26 --- /dev/null +++ b/sandbox_junit_cleanup/.classpath @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/sandbox_junit_cleanup/.gitignore b/sandbox_junit_cleanup/.gitignore new file mode 100644 index 00000000..b83d2226 --- /dev/null +++ b/sandbox_junit_cleanup/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/sandbox_junit_cleanup/.project b/sandbox_junit_cleanup/.project new file mode 100644 index 00000000..e0994cde --- /dev/null +++ b/sandbox_junit_cleanup/.project @@ -0,0 +1,34 @@ + + + sandbox_junit_cleanup + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/sandbox_junit_cleanup/META-INF/MANIFEST.MF b/sandbox_junit_cleanup/META-INF/MANIFEST.MF new file mode 100644 index 00000000..983e3087 --- /dev/null +++ b/sandbox_junit_cleanup/META-INF/MANIFEST.MF @@ -0,0 +1,26 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: junit_cleanup +Bundle-SymbolicName: sandbox_junit_cleanup;singleton:=true +Bundle-Version: 1.1.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.filebuffers, + org.eclipse.core.filesystem, + org.eclipse.core.resources, + org.eclipse.core.expressions, + org.eclipse.jdt.core, + org.eclipse.jdt.ui, + org.eclipse.ltk.core.refactoring, + org.eclipse.text, + org.eclipse.swt, + org.eclipse.jface, + org.eclipse.ui.workbench, + org.eclipse.jdt.core.manipulation, + sandbox_common +Bundle-ActivationPolicy: lazy +Eclipse-RegisterBuddy: org.eclipse.jdt.core.manipulation +Import-Package: org.sandbox.jdt.internal.common, + org.sandbox.jdt.internal.corext.fix2 +Eclipse-BuddyPolicy: global +Automatic-Module-Name: sandbox.junit.cleanup diff --git a/sandbox_junit_cleanup/build.properties b/sandbox_junit_cleanup/build.properties new file mode 100644 index 00000000..8be33378 --- /dev/null +++ b/sandbox_junit_cleanup/build.properties @@ -0,0 +1,5 @@ +source.. = src/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + build.properties diff --git a/sandbox_junit_cleanup/plugin.xml b/sandbox_junit_cleanup/plugin.xml new file mode 100644 index 00000000..5b981c33 --- /dev/null +++ b/sandbox_junit_cleanup/plugin.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/sandbox_junit_cleanup/pom.xml b/sandbox_junit_cleanup/pom.xml new file mode 100644 index 00000000..f7ab6315 --- /dev/null +++ b/sandbox_junit_cleanup/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + org.sandbox + central + 1.1.0-SNAPSHOT + + sandbox_junit_cleanup + Sandbox junit cleanup + eclipse-plugin + + ${project.basedir}/src + + \ No newline at end of file diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java new file mode 100644 index 00000000..1d2f3586 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -0,0 +1,97 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix; + +import java.util.Set; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.fix.LinkedProposalModelCore; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.jdt.internal.corext.refactoring.util.TightSourceRangeComputer; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.helper.AbstractTool; +import org.sandbox.jdt.internal.corext.fix.helper.AfterClassJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.AfterJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.BeforeClassJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.BeforeJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.IgnoreJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.JunitHolder; +import org.sandbox.jdt.internal.corext.fix.helper.RunWithJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.TestJUnitPlugin; +import org.sandbox.jdt.internal.ui.fix.MultiFixMessages; + +public enum JUnitCleanUpFixCore { + + BEFORE(new BeforeJUnitPlugin()), + AFTER(new AfterJUnitPlugin()), + TEST(new TestJUnitPlugin()), + BEFORECLASS(new BeforeClassJUnitPlugin()), + AFTERCLASS(new AfterClassJUnitPlugin()), + IGNORE(new IgnoreJUnitPlugin()) +// , +// RUNWITH(new RunWithJUnitPlugin()) + ; + + AbstractTool> junitfound; + + @SuppressWarnings("unchecked") + JUnitCleanUpFixCore(AbstractTool> xmlsimplify) { + this.junitfound= (AbstractTool>) xmlsimplify; + } + + public String getPreview(boolean i) { + return junitfound.getPreview(i); + } + + /** + * Compute set of CompilationUnitRewriteOperation to refactor supported + * situations + * + * @param compilationUnit unit to search in + * @param operations set of all CompilationUnitRewriteOperations + * created already + * @param nodesprocessed list to remember nodes already processed + * @param createForOnlyIfVarUsed true if for loop should be created only only if + * loop var used within + */ + public void findOperations(final CompilationUnit compilationUnit, + final Set operations, final Set nodesprocessed) { + junitfound.find(this, compilationUnit, operations, nodesprocessed); + } + + public CompilationUnitRewriteOperationWithSourceRange rewrite(final ReferenceHolder hit) { + return new CompilationUnitRewriteOperationWithSourceRange() { + @Override + public void rewriteASTInternal(final CompilationUnitRewrite cuRewrite, final LinkedProposalModelCore linkedModel) + throws CoreException { + TextEditGroup group= createTextEditGroup(MultiFixMessages.JUnitCleanUp_description, cuRewrite); + TightSourceRangeComputer rangeComputer; + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + if (rewrite.getExtendedSourceRangeComputer() instanceof TightSourceRangeComputer) { + rangeComputer= (TightSourceRangeComputer) rewrite.getExtendedSourceRangeComputer(); + } else { + rangeComputer= new TightSourceRangeComputer(); + } + rangeComputer.addTightSourceNode( hit.get(0).minv); + rewrite.setTargetSourceRangeComputer(rangeComputer); + junitfound.rewrite(JUnitCleanUpFixCore.this, hit, cuRewrite, group); + } + }; + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java new file mode 100644 index 00000000..668a66a7 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -0,0 +1,73 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Collection; +import java.util.Set; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.ITypeBinding; +import org.eclipse.jdt.core.dom.Name; +import org.eclipse.jdt.internal.corext.dom.AbortSearchException; +import org.eclipse.jdt.internal.corext.dom.ScopeAnalyzer; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * @param Type found in Visitor + */ +public abstract class AbstractTool { + + protected static boolean isOfType(ITypeBinding typeBinding, String typename) { + if (typeBinding == null) { + throw new AbortSearchException(); + } + if (typeBinding.isArray()) { + typeBinding= typeBinding.getElementType(); + } + return typeBinding.getQualifiedName().equals(typename); + } + + public abstract void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed); + + public abstract void rewrite(JUnitCleanUpFixCore useExplicitEncodingFixCore, T holder, + CompilationUnitRewrite cuRewrite, TextEditGroup group); + + /** + * Adds an import to the class. This method should be used for every class + * reference added to the generated code. + * + * @param typeName a fully qualified name of a type + * @param cuRewrite CompilationUnitRewrite + * @param ast AST + * @return simple name of a class if the import was added and fully qualified + * name if there was a conflict + */ + protected Name addImport(String typeName, final CompilationUnitRewrite cuRewrite, AST ast) { + String importedName= cuRewrite.getImportRewrite().addImport(typeName); + return ast.newName(importedName); + } + + public abstract String getPreview(boolean afterRefactoring); + + public static Collection getUsedVariableNames(ASTNode node) { + CompilationUnit root= (CompilationUnit) node.getRoot(); + return new ScopeAnalyzer(root).getUsedVariableNames(node.getStartPosition(), node.getLength()); + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java new file mode 100644 index 00000000..9bbc6d2d --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Set; +import java.util.Map.Entry; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.MarkerAnnotation; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.internal.corext.dom.ASTNodes; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class AfterClassJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_AFTERCLASS = "org.junit.AfterClass"; + private static final String ORG_JUNIT_JUPITER_API_AFTER_ALL = "org.junit.jupiter.api.AfterAll"; + private static final String AFTER_ALL = "AfterAll"; + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_AFTERCLASS, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, MarkerAnnotation node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + mh.minvname = node.getTypeName().getFullyQualifiedName(); + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewrite = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + Annotation minv = mh.minv; + MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); + newAnnotation.setTypeName(ast.newSimpleName(AFTER_ALL)); + addImport(ORG_JUNIT_JUPITER_API_AFTER_ALL, cuRewrite, ast); + ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); + importRemover.removeImport(ORG_JUNIT_AFTERCLASS); + } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (!afterRefactoring) { + return """ + ; + """; //$NON-NLS-1$ + } + return """ + ; + """; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java new file mode 100644 index 00000000..5df733f3 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Set; +import java.util.Map.Entry; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.MarkerAnnotation; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.internal.corext.dom.ASTNodes; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class AfterJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_AFTER = "org.junit.After"; + private static final String ORG_JUNIT_JUPITER_API_AFTER_EACH = "org.junit.jupiter.api.AfterEach"; + private static final String AFTER_EACH = "AfterEach"; + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_AFTER, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, MarkerAnnotation node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + mh.minvname = node.getTypeName().getFullyQualifiedName(); + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewrite = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + Annotation minv = mh.minv; + MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); + newAnnotation.setTypeName(ast.newSimpleName(AFTER_EACH)); + addImport(ORG_JUNIT_JUPITER_API_AFTER_EACH, cuRewrite, ast); + ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); + importRemover.removeImport(ORG_JUNIT_AFTER); + } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (!afterRefactoring) { + return """ + ; + """; //$NON-NLS-1$ + } + return """ + ; + """; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java new file mode 100644 index 00000000..30340152 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.HashSet; +import java.util.Set; +import java.util.Map.Entry; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.ClassInstanceCreation; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.MarkerAnnotation; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.internal.corext.dom.ASTNodes; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class BeforeClassJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_BEFORECLASS = "org.junit.BeforeClass"; + private static final String ORG_JUNIT_JUPITER_API_BEFORE_ALL = "org.junit.jupiter.api.BeforeAll"; + private static final String BEFORE_ALL = "BeforeAll"; + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_BEFORECLASS, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, MarkerAnnotation node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + mh.minvname = node.getTypeName().getFullyQualifiedName(); + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewrite = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + Annotation minv = mh.minv; + MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); + newAnnotation.setTypeName(ast.newSimpleName(BEFORE_ALL)); + addImport(ORG_JUNIT_JUPITER_API_BEFORE_ALL, cuRewrite, ast); + ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); + importRemover.removeImport(ORG_JUNIT_BEFORECLASS); + } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (!afterRefactoring) { + return """ + ; + """; //$NON-NLS-1$ + } + return """ + ; + """; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java new file mode 100644 index 00000000..7ac8548f --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.HashSet; +import java.util.Set; +import java.util.Map.Entry; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.ClassInstanceCreation; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.MarkerAnnotation; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.internal.corext.dom.ASTNodes; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class BeforeJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_BEFORE = "org.junit.Before"; + private static final String ORG_JUNIT_JUPITER_API_BEFORE_EACH = "org.junit.jupiter.api.BeforeEach"; + private static final String BEFORE_EACH = "BeforeEach"; + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_BEFORE, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, MarkerAnnotation node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + mh.minvname = node.getTypeName().getFullyQualifiedName(); + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewrite = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + Annotation minv = mh.minv; + MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); + newAnnotation.setTypeName(ast.newSimpleName(BEFORE_EACH)); + addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH, cuRewrite, ast); + ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); + importRemover.removeImport(ORG_JUNIT_BEFORE); + } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (!afterRefactoring) { + return """ + ; + """; //$NON-NLS-1$ + } + return """ + ; + """; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java new file mode 100644 index 00000000..e215e798 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java @@ -0,0 +1,106 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Map.Entry; +import java.util.Set; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.Expression; +import org.eclipse.jdt.core.dom.SingleMemberAnnotation; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.internal.corext.dom.ASTNodes; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class IgnoreJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_IGNORE = "org.junit.Ignore"; + private static final String ORG_JUNIT_JUPITER_DISABLED = "org.junit.jupiter.api.Disabled"; + private static final String DISABLED = "Disabled"; + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_IGNORE, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + HelperVisitor.callNormalAnnotationVisitor(ORG_JUNIT_IGNORE, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + HelperVisitor.callSingleMemberAnnotationVisitor(ORG_JUNIT_IGNORE, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, Annotation node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + mh.minvname = node.getTypeName().getFullyQualifiedName(); + if(node instanceof SingleMemberAnnotation mynode) { + Expression value = mynode.getValue(); + mh.value=value.toString(); + } + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewrite = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + Annotation minv = mh.minv; + Annotation newAnnotation = null; + if(minv instanceof SingleMemberAnnotation mynode) { + newAnnotation = ast.newSingleMemberAnnotation(); + ((SingleMemberAnnotation)newAnnotation).setValue(ASTNodes.createMoveTarget(rewrite, mynode.getValue())); + } else { + newAnnotation = ast.newMarkerAnnotation(); + } + newAnnotation.setTypeName(ast.newSimpleName(DISABLED)); + addImport(ORG_JUNIT_JUPITER_DISABLED, cuRewrite, ast); + ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); + importRemover.removeImport(ORG_JUNIT_IGNORE); + } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (!afterRefactoring) { + return """ + ; + """; //$NON-NLS-1$ + } + return """ + ; + """; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java new file mode 100644 index 00000000..9da31d0b --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java @@ -0,0 +1,13 @@ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Set; + +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.Annotation; + +public class JunitHolder { + public Annotation minv; + public String minvname; + public Set nodesprocessed; + public String value; +} \ No newline at end of file diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java new file mode 100644 index 00000000..2460bdeb --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java @@ -0,0 +1,118 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Map.Entry; +import java.util.Set; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.Expression; +import org.eclipse.jdt.core.dom.ITypeBinding; +import org.eclipse.jdt.core.dom.NormalAnnotation; +import org.eclipse.jdt.core.dom.SingleMemberAnnotation; +import org.eclipse.jdt.core.dom.TypeLiteral; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.internal.corext.dom.ASTNodes; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class RunWithJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_RUNWITH = "org.junit.runner.RunWith"; + private static final String ORG_JUNIT_JUPITER_SUITE = "org.junit.platform.suite.api.Suite"; + private static final String SUITE = "Suite"; + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_RUNWITH, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + HelperVisitor.callNormalAnnotationVisitor(ORG_JUNIT_RUNWITH, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + HelperVisitor.callSingleMemberAnnotationVisitor(ORG_JUNIT_RUNWITH, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, Annotation node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + mh.minvname = node.getTypeName().getFullyQualifiedName(); + if(node instanceof SingleMemberAnnotation mynode) { + Expression value = mynode.getValue(); + if(value instanceof TypeLiteral myvalue) { + + ITypeBinding typeBinding = myvalue.resolveTypeBinding(); + if (typeBinding != null) { + mh.value = typeBinding.getQualifiedName(); + if (!"org.junit.runners.Suite".equals(mh.value)) { + return false; + } + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + } + } + } + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewrite = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + Annotation minv = mh.minv; + Annotation newAnnotation = null; + if(minv instanceof SingleMemberAnnotation mynode) { + newAnnotation = ast.newSingleMemberAnnotation(); + ((SingleMemberAnnotation)newAnnotation).setValue(ASTNodes.createMoveTarget(rewrite, mynode.getValue())); + } else { + newAnnotation = ast.newMarkerAnnotation(); + } + newAnnotation.setTypeName(ast.newSimpleName(SUITE)); + addImport(ORG_JUNIT_JUPITER_SUITE, cuRewrite, ast); + ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); + importRemover.removeImport(ORG_JUNIT_RUNWITH); + } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (!afterRefactoring) { + return """ + ; + """; //$NON-NLS-1$ + } + return """ + ; + """; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java new file mode 100644 index 00000000..ccd70154 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Set; +import java.util.Map.Entry; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.MarkerAnnotation; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.internal.corext.dom.ASTNodes; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class TestJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_TEST = "org.junit.Test"; + private static final String ORG_JUNIT_JUPITER_TEST = "org.junit.jupiter.api.Test"; + private static final String TEST = "Test"; + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_TEST, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, MarkerAnnotation node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + mh.minvname = node.getTypeName().getFullyQualifiedName(); + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewrite = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + Annotation minv = mh.minv; + MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); + newAnnotation.setTypeName(ast.newSimpleName(TEST)); + ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); + importRemover.removeImport(ORG_JUNIT_TEST); + addImport(ORG_JUNIT_JUPITER_TEST, cuRewrite, ast); + } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (!afterRefactoring) { + return """ + ; + """; //$NON-NLS-1$ + } + return """ + ; + """; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUp.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUp.java new file mode 100644 index 00000000..0e763d54 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUp.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.ui.fix; + +import java.util.Collections; +import java.util.Map; + +import org.eclipse.jdt.internal.ui.fix.AbstractCleanUpCoreWrapper; + +/** + */ +public class JUnitCleanUp extends AbstractCleanUpCoreWrapper { + public JUnitCleanUp(final Map options) { + super(options, new JUnitCleanUpCore()); + } + + public JUnitCleanUp() { + this(Collections.emptyMap()); + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java new file mode 100644 index 00000000..c0c0e80f --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java @@ -0,0 +1,110 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.ui.fix; + +import static org.sandbox.jdt.internal.corext.fix2.MYCleanUpConstants.JUNIT_CLEANUP; +import static org.sandbox.jdt.internal.ui.fix.MultiFixMessages.JUnitCleanUpFix_refactor; +import static org.sandbox.jdt.internal.ui.fix.MultiFixMessages.JUnitCleanUp_description; + +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.util.JavaModelUtil; +import org.eclipse.jdt.internal.corext.util.Messages; +import org.eclipse.jdt.internal.ui.fix.AbstractCleanUp; +import org.eclipse.jdt.ui.cleanup.CleanUpContext; +import org.eclipse.jdt.ui.cleanup.CleanUpRequirements; +import org.eclipse.jdt.ui.cleanup.ICleanUpFix; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +public class JUnitCleanUpCore extends AbstractCleanUp { + public JUnitCleanUpCore(final Map options) { + super(options); + } + /** + * + */ + public JUnitCleanUpCore() { + } + + @Override + public CleanUpRequirements getRequirements() { + return new CleanUpRequirements(requireAST(), false, false, null); + } + + public boolean requireAST() { + return isEnabled(JUNIT_CLEANUP); + } + + @Override + public ICleanUpFix createFix(final CleanUpContext context) throws CoreException { + CompilationUnit compilationUnit= context.getAST(); + if (compilationUnit == null) { + return null; + } + EnumSet computeFixSet= computeFixSet(); + if (!isEnabled(JUNIT_CLEANUP) || computeFixSet.isEmpty() + || !JavaModelUtil.is1d8OrHigher(compilationUnit.getJavaElement().getJavaProject())) { + return null; + } + Set operations= new LinkedHashSet<>(); + Set nodesprocessed= new HashSet<>(); + computeFixSet.forEach(i -> i.findOperations(compilationUnit, operations, nodesprocessed)); + if (operations.isEmpty()) { + return null; + } + return new CompilationUnitRewriteOperationsFixCore(JUnitCleanUpFix_refactor, compilationUnit, + operations.toArray(new CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation[0])); + } + + @Override + public String[] getStepDescriptions() { + List result= new ArrayList<>(); + if (isEnabled(JUNIT_CLEANUP)) { + result.add(Messages.format(JUnitCleanUp_description, new Object[] { String.join(",", //$NON-NLS-1$ + computeFixSet().stream().map(JUnitCleanUpFixCore::toString) + .collect(Collectors.toList())) })); + } + return result.toArray(new String[0]); + } + + @Override + public String getPreview() { + StringBuilder sb= new StringBuilder(); + EnumSet computeFixSet= computeFixSet(); + EnumSet.allOf(JUnitCleanUpFixCore.class) + .forEach(e -> sb.append(e.getPreview(computeFixSet.contains(e)))); + return sb.toString(); + } + + private EnumSet computeFixSet() { + EnumSet fixSet= EnumSet.noneOf(JUnitCleanUpFixCore.class); + + if (isEnabled(JUNIT_CLEANUP)) { + fixSet= EnumSet.allOf(JUnitCleanUpFixCore.class); + } + return fixSet; + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/MultiFixMessages.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/MultiFixMessages.java new file mode 100644 index 00000000..0d54bab8 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/MultiFixMessages.java @@ -0,0 +1,15 @@ +package org.sandbox.jdt.internal.ui.fix; + +import org.eclipse.osgi.util.NLS; + +public class MultiFixMessages { + private static final String BUNDLE_NAME= "org.sandbox.jdt.internal.ui.fix.MultiFixMessages"; //$NON-NLS-1$ + + public static String JUnitCleanUp_description; + public static String JUnitCleanUpFix_refactor; + + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, MultiFixMessages.class); + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/MultiFixMessages.properties b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/MultiFixMessages.properties new file mode 100644 index 00000000..c3d64092 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/MultiFixMessages.properties @@ -0,0 +1,2 @@ +JUnitCleanUp_description=Update junit ''{0}'' +JUnitCleanUpFix_refactor=Update junit \ No newline at end of file diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java new file mode 100644 index 00000000..ca6684b7 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.ui.preferences.cleanup; + +import org.eclipse.osgi.util.NLS; + +public class CleanUpMessages { + private static final String BUNDLE_NAME= "org.sandbox.jdt.internal.ui.preferences.cleanup.CleanUpMessages"; //$NON-NLS-1$ + public static String JavaFeatureTabPage_GroupName_Java1d8; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP; + + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, CleanUpMessages.class); + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties new file mode 100644 index 00000000..4434c43c --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties @@ -0,0 +1,2 @@ +JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP=JUNIT_CLEANUP +JavaFeatureTabPage_GroupName_Java1d8=Java 8 \ No newline at end of file diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/DefaultCleanUpOptionsInitializer.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/DefaultCleanUpOptionsInitializer.java new file mode 100644 index 00000000..07060059 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/DefaultCleanUpOptionsInitializer.java @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.ui.preferences.cleanup; + +import org.eclipse.jdt.ui.cleanup.CleanUpOptions; +import org.eclipse.jdt.ui.cleanup.ICleanUpOptionsInitializer; +import org.sandbox.jdt.internal.corext.fix2.MYCleanUpConstants; + +public class DefaultCleanUpOptionsInitializer implements ICleanUpOptionsInitializer { + + @Override + public void setDefaultOptions(CleanUpOptions options) { + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP, CleanUpOptions.FALSE); + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java new file mode 100644 index 00000000..b5ad350b --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.ui.preferences.cleanup; + +import java.util.Map; + +import org.eclipse.jdt.internal.ui.fix.AbstractCleanUp; +import org.eclipse.jdt.internal.ui.preferences.cleanup.AbstractCleanUpTabPage; +import org.eclipse.jdt.ui.cleanup.CleanUpOptions; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; +import org.sandbox.jdt.internal.corext.fix2.MYCleanUpConstants; +import org.sandbox.jdt.internal.ui.fix.JUnitCleanUp; + +public class SandboxCodeTabPage extends AbstractCleanUpTabPage { + + /** + * Constant array for boolean selection + */ + static final String[] FALSE_TRUE= { CleanUpOptions.FALSE, CleanUpOptions.TRUE }; + + public static final String ID= "org.eclipse.jdt.ui.cleanup.tabpage.sandbox"; //$NON-NLS-1$ + + @Override + protected AbstractCleanUp[] createPreviewCleanUps(Map values) { + return new AbstractCleanUp[] { new JUnitCleanUp(values) }; + } + + @Override + protected void doCreatePreferences(Composite composite, int numColumns) { + Group java1d8Group= createGroup(numColumns, composite, CleanUpMessages.JavaFeatureTabPage_GroupName_Java1d8); + final CheckboxPreference xmlsimplify= createCheckboxPref(java1d8Group, numColumns, + CleanUpMessages.JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP, + MYCleanUpConstants.JUNIT_CLEANUP, FALSE_TRUE); + intent(java1d8Group); + registerPreference(xmlsimplify); + } +} \ No newline at end of file diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SaveActionCleanUpOptionsInitializer.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SaveActionCleanUpOptionsInitializer.java new file mode 100644 index 00000000..3acdacc0 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SaveActionCleanUpOptionsInitializer.java @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.ui.preferences.cleanup; + +import org.eclipse.jdt.ui.cleanup.CleanUpOptions; +import org.eclipse.jdt.ui.cleanup.ICleanUpOptionsInitializer; +import org.sandbox.jdt.internal.corext.fix2.MYCleanUpConstants; + +public class SaveActionCleanUpOptionsInitializer implements ICleanUpOptionsInitializer { + + @Override + public void setDefaultOptions(CleanUpOptions options) { + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP, CleanUpOptions.FALSE); + } +} diff --git a/sandbox_junit_cleanup_feature/.gitignore b/sandbox_junit_cleanup_feature/.gitignore new file mode 100644 index 00000000..b83d2226 --- /dev/null +++ b/sandbox_junit_cleanup_feature/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/sandbox_junit_cleanup_feature/.project b/sandbox_junit_cleanup_feature/.project new file mode 100644 index 00000000..e4825b41 --- /dev/null +++ b/sandbox_junit_cleanup_feature/.project @@ -0,0 +1,23 @@ + + + sandbox_junit_cleanup_feature + + + + + + org.eclipse.pde.FeatureBuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.pde.FeatureNature + + diff --git a/sandbox_junit_cleanup_feature/build.properties b/sandbox_junit_cleanup_feature/build.properties new file mode 100644 index 00000000..e4762c45 --- /dev/null +++ b/sandbox_junit_cleanup_feature/build.properties @@ -0,0 +1 @@ +bin.includes=. \ No newline at end of file diff --git a/sandbox_junit_cleanup_feature/feature.xml b/sandbox_junit_cleanup_feature/feature.xml new file mode 100644 index 00000000..cc52a77f --- /dev/null +++ b/sandbox_junit_cleanup_feature/feature.xml @@ -0,0 +1,50 @@ + + + + + %description + + + + %copyright + + + + %license + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sandbox_junit_cleanup_feature/pom.xml b/sandbox_junit_cleanup_feature/pom.xml new file mode 100644 index 00000000..51001e58 --- /dev/null +++ b/sandbox_junit_cleanup_feature/pom.xml @@ -0,0 +1,14 @@ + + + 4.0.0 + + org.sandbox + central + 1.1.0-SNAPSHOT + + sandbox_junit_cleanup_feature + Sandbox junit cleanup Feature + eclipse-feature + \ No newline at end of file diff --git a/sandbox_junit_cleanup_test/.classpath b/sandbox_junit_cleanup_test/.classpath new file mode 100644 index 00000000..7931ec26 --- /dev/null +++ b/sandbox_junit_cleanup_test/.classpath @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/sandbox_junit_cleanup_test/.gitignore b/sandbox_junit_cleanup_test/.gitignore new file mode 100644 index 00000000..0f630157 --- /dev/null +++ b/sandbox_junit_cleanup_test/.gitignore @@ -0,0 +1,2 @@ +/target/ +/bin/ diff --git a/sandbox_junit_cleanup_test/.project b/sandbox_junit_cleanup_test/.project new file mode 100644 index 00000000..3ab272cb --- /dev/null +++ b/sandbox_junit_cleanup_test/.project @@ -0,0 +1,34 @@ + + + sandbox_junit_cleanup_test + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF b/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF new file mode 100644 index 00000000..9928de47 --- /dev/null +++ b/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF @@ -0,0 +1,28 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: junit cleanup tests +Bundle-SymbolicName: sandbox_junit_cleanup_test;singleton:=true +Bundle-Version: 1.1.0.qualifier +Fragment-Host: sandbox_junit_cleanup +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.junit, + sandbox_test_commons +Bundle-ActivationPolicy: lazy +Eclipse-BundleShape: dir +Eclipse-BuddyPolicy: global +Import-Package: org.junit.jupiter.api;version="5.7.1", + org.junit.jupiter.api.condition;version="5.7.1", + org.junit.jupiter.api.extension;version="5.7.1", + org.junit.jupiter.api.extension.support;version="5.7.1", + org.junit.jupiter.api.function;version="5.7.1", + org.junit.jupiter.api.io;version="5.7.1", + org.junit.jupiter.api.parallel;version="5.7.1", + org.junit.jupiter.params;version="5.7.1", + org.junit.jupiter.params.aggregator;version="5.7.1", + org.junit.jupiter.params.converter;version="5.7.1", + org.junit.jupiter.params.provider;version="5.7.1", + org.junit.jupiter.params.support;version="5.7.1", + org.opentest4j;version="1.2.0", + org.sandbox.jdt.internal.common, + org.sandbox.jdt.internal.corext.fix2 +Automatic-Module-Name: sandbox.junit.cleanup.test diff --git a/sandbox_junit_cleanup_test/build.properties b/sandbox_junit_cleanup_test/build.properties new file mode 100644 index 00000000..99ca9c2f --- /dev/null +++ b/sandbox_junit_cleanup_test/build.properties @@ -0,0 +1,5 @@ +source.. = src/ +bin.includes = META-INF/,\ + .,\ + fragment.xml,\ + build.properties diff --git a/sandbox_junit_cleanup_test/fragment.xml b/sandbox_junit_cleanup_test/fragment.xml new file mode 100644 index 00000000..79151e03 --- /dev/null +++ b/sandbox_junit_cleanup_test/fragment.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/sandbox_junit_cleanup_test/pom.xml b/sandbox_junit_cleanup_test/pom.xml new file mode 100644 index 00000000..57e98bcb --- /dev/null +++ b/sandbox_junit_cleanup_test/pom.xml @@ -0,0 +1,44 @@ + + + 4.0.0 + + org.sandbox + central + 1.1.0-SNAPSHOT + + sandbox_junit_cleanup_test + Sandbox junit cleanup test + eclipse-test-plugin + + + org.sandbox + sandbox_junit_cleanup + + + + src + + + org.eclipse.tycho + tycho-surefire-plugin + ${tycho-version} + + BREE + false + true + + + eclipse-plugin + org.sandbox + sandbox_junit_cleanup + + 0.0.0 + + + + + + + \ No newline at end of file diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java new file mode 100644 index 00000000..e87bb38c --- /dev/null +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -0,0 +1,239 @@ +/******************************************************************************* + * Copyright (c) 2022 + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer initial implementation + *******************************************************************************/ +package org.sandbox.jdt.ui.tests.quickfix; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.jdt.core.IClasspathEntry; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IPackageFragment; +import org.eclipse.jdt.core.IPackageFragmentRoot; +import org.eclipse.jdt.core.JavaCore; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; +import org.sandbox.jdt.internal.corext.fix2.MYCleanUpConstants; +import org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava; +import org.sandbox.jdt.ui.tests.quickfix.rules.EclipseJava8; + + +public class Java8CleanUpTest { + + @RegisterExtension + AbstractEclipseJava context= new EclipseJava8(); + + public static final String JUNIT_CONTAINER_ID= "org.eclipse.jdt.junit.JUNIT_CONTAINER"; //$NON-NLS-1$ + public final static IPath JUNIT4_CONTAINER_PATH= new Path(JUNIT_CONTAINER_ID).append("4"); //$NON-NLS-1$ + + IPackageFragmentRoot fRoot; + @BeforeEach + public void setup() throws CoreException { + IJavaProject fProject = context.javaProject; + fProject.setRawClasspath(context.getDefaultClasspath(), null); + IClasspathEntry cpe= JavaCore.newContainerEntry(JUNIT4_CONTAINER_PATH); + AbstractEclipseJava.addToClasspath(fProject, cpe); + fRoot = AbstractEclipseJava.addSourceContainer(fProject, "src"); + } + + enum JUnitCleanupCases{ + PositiveCase(""" +package test; +import static org.junit.Assert.*; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +/** + * + */ +@RunWith(Suite.class) +@Suite.SuiteClasses({ + MyTest.class +}) +public class MyTest { + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @Before + public void setUp() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @After + public void tearDown() throws Exception { + } + + @Ignore + @Test + public void test() { + fail("Not yet implemented"); + } + + @Ignore("not implemented") + @Test + public void test2() { + fail("Not yet implemented"); + } +} + """, //$NON-NLS-1$ + + """ +package test; +import static org.junit.Assert.*; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +/** + * + */ +@RunWith(Suite.class) +@Suite.SuiteClasses({ + MyTest.class +}) +public class MyTest { + + /** + * @throws java.lang.Exception + */ + @BeforeAll + public static void setUpBeforeClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @AfterAll + public static void tearDownAfterClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @BeforeEach + public void setUp() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @AfterEach + public void tearDown() throws Exception { + } + + @Disabled + @Test + public void test() { + fail("Not yet implemented"); + } + + @Disabled("not implemented") + @Test + public void test2() { + fail("Not yet implemented"); + } +} + """); //$NON-NLS-1$ + + String given; + String expected; + + JUnitCleanupCases(String given, String expected) { + this.given=given; + this.expected=expected; + } + } + + // @Disabled + @ParameterizedTest + @EnumSource(JUnitCleanupCases.class) + public void testJUnitCleanupParametrized(JUnitCleanupCases test) throws CoreException { + IPackageFragment pack= fRoot.createPackageFragment("test", true, null); +// IPackageFragment pack= context.getfSourceFolder().createPackageFragment("test", false, null); //$NON-NLS-1$ + ICompilationUnit cu= pack.createCompilationUnit("Test.java", test.given, false, null); //$NON-NLS-1$ + context.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu}, new String[] {test.expected}, null); + } + + enum NOJUnitCleanupCases { + + NOCase( + """ + package test; + import java.util.*; + public class Test { + void m(List strings) { + Iterator it = strings.iterator(); + while (it.hasNext()) { + String s = (String) it.next(); + if (s.isEmpty()) { + it.remove(); + } else { + System.out.println(s); + } + } + } + } + """) //$NON-NLS-1$ + ; + + NOJUnitCleanupCases(String given) { + this.given=given; + } + + String given; + } + + // @Disabled + @ParameterizedTest + @EnumSource(NOJUnitCleanupCases.class) + public void testJUnitCleanupdonttouch(NOJUnitCleanupCases test) throws CoreException { + IPackageFragment pack= context.getfSourceFolder().createPackageFragment("test", false, null); //$NON-NLS-1$ + ICompilationUnit cu= pack.createCompilationUnit("Test.java",test.given,false, null); //$NON-NLS-1$ + context.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context.assertRefactoringHasNoChange(new ICompilationUnit[] { cu }); + } +} diff --git a/sandbox_junit_cleanup_test/testresources/rtstubs9.jar b/sandbox_junit_cleanup_test/testresources/rtstubs9.jar new file mode 100644 index 0000000000000000000000000000000000000000..21fe246e5f9fc97995db780c5533dd853f07e240 GIT binary patch literal 791752 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
TtTfcHRz$H7b6|^++G6Qn$05t6Ymm zew;nuDh1GEW<|keOrRDHcI<&~0Jp5L7bLMygCd8_cnN_Tq|OB!R=B2>93v&qb{_Sd z51BL)G?o^OM1s;ZUMvEeHG)$PK%_(FZbXO5!(aoDAY=E6WwV|{iWkad34!yg4N+Wk zGERY9tdTs>fCkKI(8g=4ho?9_)9P`ats7bzVVf7_Q zWOM`p)vsa+j86PT(iR|Ob*0ykc-_2lr2hC+rf03pcBBaPF8dL9oal>+D`ytpr}(8Y z@5$qFD}+#@JJ7pk0jn$EP)VsoGV0)r31_!1uZLiQ9!mlegglFw`Zb5gdUf>5r zzU3F3!hlC&2UL%u056xunb}c_VMZt+6T&e%Rts{Z#uvQmAK2?gs_h9$0GC{q^nrQ% zQ2l{J>jYlaA165Z$H+9{>FfrQPq@=FhIXv^`4U+s9DEt|iZ{B|d9yb*)f=UI3QEem zlUWDWt+kAg`^q@_h${OMEGEFJsC`O$}bvA!YP$<@e4Td7h>_(Y6Mghiv-mwSrv_B`z-Jls!My)aeS$d#y>Gu$W zF^S%EN6Z|f0TV!%?0G!i&k6H3sN@Uqo)eZykO9;2g25kkaZG3}C^$59&$`sDRiaXg zCHzLHS>TOntvO)1B*HhqCAtya^3%CkTn6DE!GyZ%CO|6=LN2**OYoxZNbks`F&eNE z@08=TzPN8>-k1aEkLL;|ViAz9zypkku~32~bbC3%8?>WzawUkitR{m>rj2Q6i~ES= zJMi|{Gx1o!1-dr9LG>0rK@AoISGq37NtTnrp%yjR*t5pyw1s`X^7`T8;2=CH4piOr zPUiVd9C_97X$}UKvCjMke(d_$o zNFzinmEGmDn?&-8;d>l=_05>m<$a^zbKR9N%gIf*5qOrv-g+xXK42c+r7^FiqcE@z z58ZgF-h-e{B3z0?ufc<4y0R}GY^y5}xjV6`BVU9!ZqjJ|krEh!$7a%6?}0mA(YFUC zV|mlNKeK5&!picdZ+~vnXM~JJsCR#M6MIDHfFJyMiJ_BZLJ@N(+f9}uq<)&%S^KeB z3A3+L!*ujB^~W&91NB_sXZnwORQdR+DvPSd*C$>Pf~#h(PWhw#;t)#d&^i_g%{1xV zBp;jXBX!gS@M6t>^a@OuHQ&EGF|6SlBeY*5j(l}&Ie@!F7#q2*u@+lVP$bT5Kgco` zBy(rzH{^Gr;op<%lb8_xK`*_;Jz%wHYh?Xy+yyw<=JLe6k<0yc_IHGy`w$G7Vsyyt z5@gl$pOgPz@d>_e;Mz7M?&1$SGiz{&5t9BMEO9-!n2e$9Y65V>0%jvCiD6Da&#@pA(>SZmZ+Vc6BiS^l-aIObF6)zf-MluUFe3)<~{vI5bO%ec;8xR2YU)>Lk zA{hz`+_Z_^z-m?xa6^cF@ZO0~7eJw)F3$dyzHrdWE{@+ySPa{!4rklil(5k^I7AGTg~s805^*?k zyJ}%VEZhw$_Deqb?>TTEcQCl9xZ3zt74i4Smmd46<3lWgY?W@SmsZ+E5b%J+c|%~V`LjS+L5d#CVw(6OQ;QtMNxT!hGaW*K^8M)B{3wcFuLM>SR6r&J9dW08#W#Z>^C zvM1+F`JozSt^^Ke`OLs@$kOYMWiQ18fLInLjaY ztd$+;~q*dP|~Q@%b!rH9XXucEB~s0*Sv}r3jx= zb{bn}Dy()jY?+JEDD*0HWu*iLI@@#oRZ4#}bhg9R^$qO+jfd4}b^-z;aN0%pkddod zMOjy&4WjRDRS_D(!tG&UzE5&=9R>uS-YI+5zNm0{hF7Bjy~^m1c66Txte!Ni%byiF zx}WE+29*{$NuMda!VT3yhs-aOfaF0cnGg1NP;-E0C1S(6(T4ww_wqh(t0N4r4*yF( zFqAP~4lb(+2FijJ=5b$-%Ys{}NM|y7p1EC9A%Cw;$-K6eH+&6k^Kjf&S_s9f$st8R zcMskQ8dcx64-ge_LIIIRXp3;mIm%S0?-#tbmoqXzZq_z9vt!o(Hm*o`7YaHmXwFQ2%pt<}3QT z{H!{w69O--S4JBir{;Dk$t>N7ZZ}oByW;`#;T~@~9~`o;M}DOIk|ehV>|EykQYp7) z-08(Trk@$l`-KAeZm?fz`6B!NJ_W5To^(&B+q^q6DS5`-Wjm+1Le;~l*4>akhaYblRl>S$Y&5XtRf&?)z z^Ma0>Pbg_2HTAUFUJpib3UQDQbRBg&5yFG#A(U=xhi2Gm@}~;7w@YM7ArJ2P)KjKo zk|nioEz~^i9dF_50%oo*AS{k7N(T|;Xiy$a7l1J~0w!3?_I>c0tNVL|Wtx?o9_-5s z9n2|aBve#X`jpfcwd+U|V0?J&)`HPGyE6D%)?510TBSM3S3xpJkta=BSv@hX!!Jf= zr+kr#faZby?v+N7kfvTHXFNXLpv?po#@P9+N>D0KQ-f2<%?D!YW=WXQO}geTmc!@Y zmZz9EZp$|yGqoYVovHm5-{B8j4+Vf7!2D0ouBoGjEsAmIe;-RxlyWl^ACc_iOA#FG zP9x@MZS4Z3v{l}Spv9T}pe^C+Y$eU>bqGVT&c)baoI)*3YH7#K-j`=D4>LYy^_K7$R8!2~_^3b3bfaSo$ILdPOWY#~x*Aj%D1 z^SYIa-u(0gvWYl53KfbZL%wp8K-D@@a9e%x*5XQ$HZ&^MrAY96P(fvOHnky|cZtd(F{1$LS8?x?H8g)ezm zK6%@u=P9mLD#2hO7Q@StV8u`J?8&qK5}-=RmKl?~8+eY_>UPy5&?(%DtRcE9g*_af zb6aoS+b%=&%f0r;fe&IQA0lB{qAcM(D)y&Y?q~Hp;u~C@+?Zay(AecACL)2Xu(zdC z7uFUuBif3;zVI2+w~;(LdXdysGLhAGjcYhS`K)mp^{p%^Pg-XZ^TUdV!pc7EaXP(^ zZk~#Z^5|2XkquKjSP?E#lRsQGD(+XK-_)?hxO?&C*=#wJonGciksvu{@d-^U%fqPr zo2JB8Y_G$>_^x8oy$4{8uM|Au!?Y;?lUL62jfi&HpZ}#2sTL_GDUi(BfXIlpY|W{KU)uEQ5J15 zUYyw#gdYe<-O$7}+jN1~Gi!jJqAn;St(VS=aG zF2D|)Be23Pj__oaQ|6^DZ9C+j3FvU@j##|1%|RHxU~>Y-IfpD2@j;h~+6)z#FG>|3 zva5NdG$MoE$K@nF}1bNSfboU-GF9(%X`b+@#16d_kv{I0Db8c)#h~ zrrS_iMeO2BXghE&|1l!`Yn$B60nCj`GD4uG%FEuP&t(1%MTA$iR z`GKJF3t|XQP;T~2efrFH+(@nZUBFE4lNhXK-Tw}ZPv!p#jBo0l#k)L+)N7F6KYPtz zeZUV!LFyk|6F=5y)f6E3As9Ys+^$$+GIG;cLPJt|R&*l0{%X0h^qUwAs?=f6)*EHC zb|s@o_g!gx(cIA-ph96bN20|>9#J@MEwCi*&mMZ&?;MO=U1oh{m=Ws{0p&c}#BT>U zn=g0}^UFr{b(I`@?>>T`BN#$%o_`SP&sjZI-NA3$wuN}{*l^W|~pG*I!smceK!HJ`|J+Z-fOg~!m_I<@+x6*)$F@5{a$5LgL&Crv4uJ+W+ zJE(@WhDI;iu)$3rB0MiaZK2SZN`-f;SWg6Ug`F`|YCg$n>|U_rqi1xa9mBWA7#^xV zrtGYR`XH8RT~^^9m3@bE8it-H_@3{u{N5mgmSm00Cq*Jn7%@&>iNW;jJ9f}gelcvI?StJ5%&SK-7QL@MbhpFU&Up98kTYF zc#B_UT1NIhPM1+)bw~(`{btZ%>C=)#Cl!Ni)d9z#`NozbbLxncG?OQ5=y%DC61?)4edqKEsX$TKDE8Nwfo5J$(`a1pDKATMxF#RouY=f(oU2 z*F4t(sQ_G6OM@KEJGcwf9rZ6qxjZwLEFh@N4Y*RjZ_MLCX`Df%5M&4xNR0N+FAX2^ z4u5Vy{dj3VUYLfS{WLp{kR1e-CHb(slHG`1`%(YUXU(9X{z5ocM&n}it=Dq$d$CLL zTTxy1n^2iC9_t9lc^GttwU7dHu=Hf;_~rGjP1e@M_}bG~Q0tfi!{VUMDjHVm(wac38t(3OUg?66bj56Q-)J zy|nl}ZdfeintJPR$rB zN=>>Kh8D2662BnBH`izSz^-?t>zZCI+AnXHwwvTKU-AyX_)g}-#hJMa{DPM_l>U}i z7`!HzN0rqShwX=@&Fs9`A&a!mQrFsd+Codul#)7a^o!q2auhUFs*=2r$&ke!e6X3w zp=bEseL9(FfSohMmIADMS$xE`zenehh6RCL@a>{B!X)?D$+-u^{$fiYN|FO!3FIvt z)paEKBGLq9!ap%f`4hnCEF>0#jKgI_VuC&)E}Mf2j}Ts&_LilWHVy}w9TDGgRt?A< zX-(Z;oUC9^g*UE5*w7ThnBVG=|JZ<;T z*8yT#*q@}}>5aW3j?}=n-%xc(O{$DaAg{d`;dif{<(Jp~7cL(q2ME9M*UaP}LCC)2 z=birvLiSfOpRb9{A3A{dX$t{z3B6 zjlc;qebt1NWII&V;$R698EWc0`d0!R40O2V+F~#vI1qg72_OW54XXAz?>|Alf~Qub zr$)e20?n>mU(W&I{@SkUv#)%ZfZygEzXm5iAgg3-9ex1xM5-<;Vv7=dDP%FwWx&mW z&h_XNA6Dr2So(q^zn3=>?9lwY4B$Q$u{dS}G{;<%!S3Mv*bQM~kML{KYZXbZetkHy z?+(7ZHUIME_A^2!F*nIJfmPNuq5X~id0JM4n*@Oyy#G;lXSD;WF}i%E@{Npr zz>yx6#w*t}VY=0=eoXNepTn?D*$OcP8c-jY-nFjI-Jc!Dt)6aZ(8LantC)RzPu#JA zZQsx|a4@c99R`&6ERWAknu-PFN$IX0)|S3m_&jKdS2B&GfqJY!aMPE1v*Izz7(VMk zB`;bM;T+xWqah@d+)gAmjXTMX$4iX0Q}(U8EwLP8i#z@#FT_8XmO092X5O!ud|J|> z+h8dL8g-1+3Vxg#C8h2AA$)aEQc`)bz-Lj*yV=OY-FidwXz9AK@wM&T2XuW;p_Gcq z(W!h)>E2m(BxqZkE0r{;OY|T@X+|nE#nD`&S!#mw;lv^#xN-$&>MC#Y4(-_jx548M zw(%$WL+|I_ej8)sVA*%_E_gks z+?+(t`%(d`ku=jaUVKL3+O1)4U(sksR?9$|COS-NI>B<~8tQRAj2~0qI6^vlRDmJl zkI2jtTA~J0Ff-RJfkEaAgEN8y;mFK<-Lh-g`)^S*tCYu&d%rE#wteiZybn>d!r#JI z{raH37pFDUB{_J%yB41WJv9jU*?H&)Q#ogm~`Ww{ce7#|{mk*&u2rJJrTWSo@&oOH%hl~X%&AW_G)jbK=FC*@chf**)q#*LbMR#ZA7#D}L_aFKUH>GtT52`siao zhjwvTOTAAi0x^8+$QkVQ%9Q;45z6?5VF0&a@J@_RTgA<1cq^Gx6zfa{T4kK=yx7?g zcIw%Q6?jqsP0n)h6SF2-QC1J6!2U;bxWltn1X(;h^J+cm`QoXCg?U23bgBtrCCkXe z9#2AMP?wkH1Uf|Z3rutu=AYo(WpVB;(%dHSLzpDs<*x6nwalJcdxCVB7h8dGZ!@Jj zRTF_+%(Kxa9Cq?-9a=6#EbrMqy*y6u=vL+F;da+8T)cQ-sNcG1jBikghM2ipOL76( zGpcjJEP2g&JQP|GZzfEQ&%rsDy*?9_*byQ(Pl`~!l+{PHgE8W!_o6c87#?}xjmn_;m!Eb{Ab&yj@4t&kN0XpJ7aaokh&KurcD zg;aKG9CBB6xw5uV81cdFCp~`)7e#;Hu93W02SfguVhkVMU>l2(dr-t$k3sW5$2q0f z?z8!H{Az^b7`@Zj=PaF+^JdW-h6c;QPnDbbqigyZQ<)kEUraCP1kS7POe zCxxO>)n8Z(9p1I05wE1~Rlhc4+t3K2X$2DjUZXX_RkeIhGFPg>mVPBCRd%v;1Gt!JIRB{K{iF_N z{RT(Z_ot8a`77FJ@AKS|+TOUCiB0t%sG~#wD&t3qhQ0UytjJn=(!w$^Di*&iuiQ zEOwXAoQ?9IKqv#De{fw8eB-(>MTEAjelh0;9~Ef?_Z?U-hAL>%46Gu{Pkz_ z{=;ue1MEy~%>LrN|I8E}(}TE0gy~u8Mf|DZRw%n@Gzu84Byz(j8$S3i_Z!Alq`MwV z!QCNJH$U%%a@>)k=#L`C!qF4#P0Qdr8cid-{hlXwI-?STW}SVzP}9mXKlZ!IZ+KQU z*V;^yq1d82qs;mt4y-x@Zir4$h7q|z?RjWI(pfnwWe+5D{Ml@KToMSIE0tePI!WtY zwOfbxbfW7|nocO0Dt$cec5pD;JX8sY+#$0ZYan6bu4hU-yCiUGP%QG*e1dmsmY`xb zIQPN)j6{~{W(_d0sf)6g%nBR_ot=sc$r_|`dJCKt)^4MF{s$WNKeJZDDG;=`CD?0sHM#;~@Eg#}Ir8q7b`c zZXnW2dCBRFq`?%1gucY1$@+q4@7QgqqiyRH2sbJfmZ%~R6Q<^^LTNtOT6Mb*hN=sK zf*Cec5_*w*4$q~+3q3Ju*xn$l(29r0PvvPf5u&*O+YMlQra8%s;&WCsWt&;jyfTlu zZQ@7klZr2oJ9%YHca!tR_a0>sAq|QY>A_1Ryf0Ty2zI}Kd$DPzpC`=#3>wkjdd&Eg z3aoN0iK0dSF!w_imHdDLa|8!(T)0_@6mz5;+c@*612Pl#r~AXcVKvJP3sy*tNdc=} zt2IUEuu8;QgDoMqck=`$^)C^bxis!5$Y@T;@{-=SMfKZ^eh`{n4y%z66O*^M`7Cxw zoT)#RHOb}Og0gg|Xn6OnX7lC*g+~hF{Qcm5r)$5WLdZaPNX-E@;()Jwr2iqj{wpEy zcZP&_Psk0nbz{?YmE%&f2F5zO2g!q#an)0`;!@I(lFdzx>RyiwGuN1y8qIx0w={Ab zQ<8aWYy@221{j$cnV4eC9*bI_voZ{g$Th(;%yd&mQDeoaBs|RoC&VLZGUxb z-#KN2#%okuOQ&Y<7;pTdCiuraYEK)!$Iw-Ww3{vqn> zVlQrE?`-z(P-4G3v5!B+8<>joewY4fbLKBlvH5>okTs_?9MuoT*<@=8Co54Ipsyjv zV;DNBKz1=0eNZF>(meeuQ4_G1vl{ApUxW-fX2;0rd%oHH<}B0+^5L<+{djuFU;lDF z_I9S0-`j#}4rV5nUyX$`WSZsQD@eglIo^G0PZ;^?jC<4917@~IdP&~(ZjQ9O{CIPZ z?()lLwz2+GITs!VJ{twXn+we$9Te+NI*0{3WrSIAfI>ptg+%a8*}oXS?D*=86Mrid z)h|McLeNz$Y|UIOP5#m5+5L?($7cY7ts1d16E|Wy|4W&gAt>(u3#>VLSIVdVDZcgh z+z!GxZ31wSHnV}$QU3k4rTlqqpTCp%K`w8*7b|)uJz(Y!BZ2fkyD(06e+ftk=`SEk zKKhgS$LRY*?4u#p@`l_<^l$I%*Yc+_z{DETW&JKdhx#`vKcQ(&*aD5B)6#@(-}W0GZ2+42~e?dlm}RbAC2T+lp6(bTR8wTjmZ9eaa8 zA2*FYfpvIUEm$H5N-fX*eLAMy*Qo4%|d$y10WEn9HO&rq@k>I(XF zQLW-=%(YUP_6z}AiRU6JoR^n6xXrbAv11%*j~~g6C=52q8~gA>(a1A1-AA~r$XpZ4 zeJhCN5{b4!yyysNt7fF(3}bc}+Wh-O0ek!4<*2@JA1C?scJEz7G)?ev5NWFVqfi_o zd$qRJHHq{IA^4z0cS$28IS*r4-p?0%L=6Yey*{X#u_4oND!kz=ey>}svRr9vYmlmj zifH>_mT^`V@d(yw<)Rq@ug>epN~oLUaADY?By#xNtK?eb_G0XM(i1_CUg~~E1Uo3B ztig9`&*#zm(9TlsxMpWD_mo_f@RBbq1`!c$9eB9_Xp`lY^<3F?xn8EvcT{&#r|bJf zv>GWI45a21h-vZ1I75>~6ZoFCr3R4zG-enwr1r{Yn?CQ;@Y_s5}8T; zmNNcVRB<&6R~J)zce{VDuzx`nUyqoIOZas19c3RXsQC|9k){AN1cs9S;Vr_QePtQ( zVYp!E&|#Qhi2t)M{}K;=We?HM;QxV+LTD6h%m6>WIZNk*>?D^{~E(;0X% z@*Yx2g1|d7Zv_Xyiu;Biout05a6BlmO$*RNQblR8Y~@A?_0$r7W*f-nS1mA(n-nB&P0aE5OMQWLy#2SjJ@Z_Tp8P);24Op4B{zq zdWvUR)f+_xTEV6QP2KdKMA%Mp=?B7F>n0sIj#slJ>y8eB=Vo}Q9VMg?Jwe8vpy_jx z9-{fT#E)2paC0sQbh9i1pHFV>Jh>8AQC&=Ynt@LJ99D|egQN5*HP_xE6srWud%UE{ z!=c#SeOhN(aE2!#Q~lk`S^A_mg_y*RBy?iAHYGvSPKqr@ z!nr9I3j|JemXY1mJeobG11VT<78N7ncp?Rq=N%uQ6SPVp9?%cZFRQpkUr@Og&XW6c zP)bn~8Y1^|-X}(K33D0qJy$c8O)moBf2s<1 z;Y?_IqJlRBj~KQ)gsz{7r~f$%8h7475QkGqMOKDdIAqjr9f(r6iHC<~vOg@;ND!V_ zgA>Tn%~+$2+ho$9?nvhbYAYT!3WagKj7rHE!P2|Lh&HY<6Nu`|BncFZ>~T_Xp@QfU1kU_h4gVz_hX6!Hq<*U=zsofw{=JI-W3Hj~znW{D*iz~J=Ujsl zBHdqNLK}dyGb9ZBJNMkroa1}+^fRpZ9<)OOK&-z9PhtOGf~Oq0`0cONnu*`u(yw9r zw<$QtG~92sCQ@ZwVY(MwncEsX<-3dFAalrnB zovw;BsBh1d?l@ZeYfAikGMHblSsqe!gVf+mtRP16)hA}u3c{@yJg#7i zh3e!bEs526ft`S-rNV_)cd!Sl8O!YHMi8u-%{()Bg2WkTX9qvB^kX%++mlc{4D$a z(U;i>CCn<*4=oRZx}`_W5Yg$ijJjwO#7ow29&6kvSUf(Q55DzjOz^+BFL8LHL2i6l zqw`>(cE+l7njR66Wni=qSVd+ik}lz~Ej)-Oby6`{iWtaeBs7gK``9#GS@gWuT0gW* zbQ!yB6`YELl!Rd39KoYIj92^VZQPdVlG2?)VF+&u(@ z+Uciisx1UyLViyIZNdct!Y4f56BP~cOf$zbC??9L_pD6sK>^8;i=qDc-So5kAmfCU z${NUo2!`@o(IE(~|024WD-ifcrjhZ-o&yzwE&Y94+$q)S1iR_*yyvM-_5Nbny7ezq z+Z%WDZBWzVY%q>HZ(knWzLbDFuk#i9vi@NG!P|jL-o+81yLs!vgVfjF(U-uT(OADP zpZDzVEg&34?(1NY0e3|sCvll}nDC0-?_iG<0d`UpEi7?;u-D>K@3vm4oLb zo~>6fh#v<|`fiF1QQ&aY!2wk-W}dt$Nf5M#ev!RAz z&W97MyB9OIs$pa?*|DBUCbW6GF;TplI}iJCSgH%sC7109T<6sZn8Ik5zAQ+jagx(I z>BjW9H}f^5^7O}3usai_+2QCw)g5R~4>Rw?q`oX1RUUroJ7JLE54)zah2MDM9;Pvz z;H#_Imf@l*4bb7CWM+~IGCL=jjr4T$eZ<6HJzc-@#rIa<=C!2+*TGyH0)k{GRaKWMB_M7aKLTe%vQ*oc1Ih0WDF zwTzSo&C?ckiJer@i%$i5uE!U?_i zH+Qen_K_Z*JtL{y^}fm=;qBqInG+}F7Q^v_&+N6oN<+SDT5sArR_hw?@6Ez!Lpqak zC_}D1?J3(nw&G|b5Mp6# zH9Yzp+awKjD^#eRasVn~4FC}&)!~k-zn~dvm!=$YBu>H0_!{m=d82(Flor&Qwt)v| zUyZ>r_Bd**mPBvV%3Y@GxAsk#KC^{Wml$Hy%tMzG&b4sz?zMJKO*6)9!cb# zhZG*LI*RmKjgj@ zg8GKp!+(qIdf$uLBW0`V=4=(Oz5iq9*_-t%J<+RW5Jz|T%yU8Ntb ze6l9XBKrb;71RNZ0&1Xm_0~4}Hqh;e6XozKm=0->bH@1iz?lA~_PKz#U|6eY8DfLi0$JGz%Q=6b zrGljjJR32)x|FGz*2xzQwrw9wWRVj;KS0j$crA~lAbm7RG7^$ZqXuFMv&!PPR67>fL$GlWx-&0=zbz?Rc?>@MSOB;}!x zm!Bt`Ly!+HlDOH3dAps1v-VM|w}Z3UDO3g_H^sC@tSP-WjsC>|cZ^kP&URUMsrzfZ z6^zSvdkpcLC*W>DGyclPykJ`Z8u2R?-3Bu8TFc!83Fxwi#e*EwrJ3Hh1F3iKO9^DrW7)<*drf_Suoml7; zO#N59#@Y;^M3V&|%5wL`l#sizcU$ojaP9iC-ZMAvZwbKb+O#GM$hDP2rVIXAV}Ir7 zlCX2N{Sor3%GqP7;Cw-=Vvvq4QQlj&nk8&CnvKN33IxYsv^{qLw6+B6JsM>X?3n<6 zDP(oY3q{^qdSE8t4h)Kgk{KNJt~zbLoIg4ezDKg5EFPxZildclhitBY#D5wJLdj|G zjT&ctJ24+arJiK5oFN}fH)c};*kdzkIe&S^4A7eoqcA1m*vK;mcN8=nc_ne#u`jzx zjaXIk)sg_Pr$CD|+o?$=*DT$Yu`aHo@z7Hf;q(AHhjffaZ@&CRX5q15K`QmF9S0ET z+P?wc*bNhJ49#|4rXJrCF?g&fC;cXAZ-iTboTRr0j&sXLRv22~B!x;`_ z7o0u475O=_#}XAkcmr3TJ3Sva$=A8S&w_s-{Yj(G`bxmy_wqiRjEJU7Doh!K6i zXjHMbl&B=pEQTAD^XZf|!?#m> zP|1L8x87Y*+L#I-@oPDeQ=iXtjR95>a(%|G`*zGaT?YF#H-^fY4u0Z~>|-^eaY1y% zr2>6l#7=E&70JdOt0&s8_~@q8kFg%BG%a_{d_u=l_U*B44=ZL&OJI5W_!Hs{(iZKK z3fSQGoAxh0JwAqmR9u37tNmpEs{Mb@Ayr;OcFHh(;D+wy1~4B6gd(hOzQzs;EJh3+ z7R?K7!jmN-O*OTM_!5sGnBs8^^NHT%Ttw^%AWqTsTyMwqeExEP?zy1Nc=jplZQN&r0^z3Y93Fchbz+Ej< zfn2wI$MPnBH(0JyGysEjY3oUv!m3)w8_V@Xh9qClt4ceq`wRe5hiSD&^!Gt$Y*r5R zBMU9db3+9wL`82X$`6(bwnS_(pE%{@yPCnm`xRMMSK#H}v^dsm!e z=uGc2m??ywA>xo@nvM>o4VXQAA&VbxAZsQ4!RDIuBj18jWneIc4U-J&06dy%2Rf}wq*wQFcMjB>$X6m8tuwIc~--04~ zdTLy1Z>A; zzAyG}XhcZUDh2z4Z+gF{2s^2}C`SCg8V?{BkOz9yWeD7>qSRUnIzE)QhcHe&+xvh? zbjmMlW@zKF)4;if4n2-4K9>^97`;&J+Gt{V7bW=g+-c39Z~%Q^_OoaM&700;WudMv zKNA~{4^FgW4PEGD7peFbo3UxUFfc5YOA(RCtOH9cJhJj@O9{t8V-nM|sY#V7%ULvZ zwU^({E|qce_6+jGt0Cw2-`Y}n`#*Z7ks8)&%aS-9*2EDJj^t2F6Wo?*$qGwT_4(1@ zsU>)<7Bt0bM;M=cYwMcCSQ^F(hHE7sGtTL;Gx4IV+q_2|OmcHDGJ%4UOU`3H`yKAd zes{N!bhsIT8JPh(_}y7hrKS2&6%R^BRxpacC;BoeYTL+2H@Ck8dIe#RiPcnP|9$D` z?N##(SrfmsdnMT5GQ!rrlCj6?#5D{KLSovUACR~X0tc?NEv~$+W@?A%txJ3|PGUn} zR)t(gO0ut>(CV7%p5)wTEgJAIEJZjt!1GUu%q;xCxJDhrn)HaioDeBq+3_K|v$6;r zpYDqKxsd-`V*}Rf_Grg5q47wc)$Vlgrj>ci$C!-PvI1klDTgTHQL>`cGA4(-(hoD< z8_-yD6UN5G5Zo?&C&b~DWub!_lS*TiI*0hq1_ygL6ldw{Clc$WYZ|s9qjG~mG8PZh;*q$(~)XWPwxt=Bu-zV=@z?5f5!WkBp)D%e$?YM@`VF5y}SAL$}lwsuF<-`~cAN$P9}$;o{1k%Ld|$ z?vqlc@C=gPDW6 z2>~ni(sdwOisg%d7Ki2h(wz-1gT#3h5=xsS24D!!0%j9-jnd#g!Aj4>3!s8q_pzxF z-4o3`3Xpp?qaw4Bhq*sRa%vt6ne&+4xC!XU95{#8Pd`p}=pfLp$~(tmraB>_M83kwVmLuE z^s{^=TMcc`@6x3Ri~9Nq&7H>I3%l~BS^ariQfEhEX9cx`7FKi92I-T^Eid>M;wVNQ zO_^8n>P?gyDKQ`1^21=&`SM}P6XhUj<-)pCYEb7t<7-Sh%IJaVYI8?@ zw*lkjitji5!smsO`$%uOe8m^U2Oa4IE8-!U%O2C}3uh)*y~!0BQa9!yw>U!KZx6*E zCM`c7r_-;Vg5})^uU_4+Lc63X@Sk<&h584K|alCdWb~ENjBr__? z-9kJB?7#N8=Olj_+B|B!#j_q8Jq+8t3R{U7?ZbmS_9Y(H4qaD>)uVO^amCk0kmfzL z!&5p3rHxK}HqsaF;7*_Tn0HNxA79E<-wNdb$FZ6pY&KsbU1U63iNjXX?Knk`5zgL= z+Pw0MIuZWbW4IK5j_g7bLqwO-{li06nTz22>l4-k6JQyX+ws;36(aKbSkn; zDxz8{u}mtVS}H=59bPs!TO2o2DL2eFiRVd#6{;Ze#QfHM{#sQ3nu^OpamZ^QvzitV5 zZf?7YoJMXpR?cA4P0R2hAoob}#EU94N^#(GhdW{)^wDCLdyD8OvB z4*>VoN?eaKwcJ3Cb^N!-3c)P?%R^E%1KNC_uKsVAtQ!7&U!Q;7&i$7iD}o$6)~^3< zxeEXP!E%-0ga=&%L|C2Q9tZia$Kh({Vrgskw`cXUt@&NWe$FC({?WYrwK)R_63`Eb z^&h3>Vyo+gOe5-ub4A4Z_dOJ*NeuT-@sAJjPxOzB6;Fr{`i@CCXPu4(E@P z{!>Y{Yl7ev8Ay#sL&K)Nb#5LdK*4JJGiSs6VNOJIb(abGc>{2t=eNYwL!#$bOL{4Q(1pG2vH{|fam|Pg%$bd%Ye+v<@U<{ zrw*3Yf7!vp*nv&PG21E73&geZumW+=bKc|Oe14BB25#ma_2S;>PctW(?-thb zzgf4O{dwP6y+bpUsx{_0yt zQOG-?O`&XI3f)KVIrjIaW}7o@Xw_brCz8Yv0%0z< zOqM5mP`$V(K63%AzsXsNk>eR77aX>2XDmEf)`8bFA{eqLwHqu|Nw8KpEYQcupBd(T z-PCZJZkTt?+L2nmhnS0-P|8R=3cowX|Ize~inVdDn0N3>qwBI6@5&#PI}0oQVKcqJlG`59y;FU|OM-;!*b4r~t}VjiD^7Vu{!y zpP8=(y~{TF7?=FR$4!MiA8IE7q23*;VhkSCOARdp?DKp&;~Rv)Tbc6>2~w&06@Mf) zwWsf?EM14Co>*yFBtGEv(Bbt62AoK!@gzKAV{8?>%uv-BjTwbe(`!{ffIuu8G6!*l z7Y{o!gs4BWc5oIOk&{)^G?+1K>y==%N)EKsF156py(m|kF;s|eleR_)#I2A?TzaW7 z8SpY$pqg#(maqD4r+I) zlQs%0mny=rE)m%sQz^nE74p8X*f(}ZsZe-b!tIW^JZ5dI3unJt(5(N0)>|+FSHM(y zJ0pJKpysk^O%;O6+MTls&HB6A;+Zd)8BUOjN5-uPp)o8w>(*&q2a@AKkNviknK7GfLP{@*_ zv5aJhlS|jVhrC5?y;ab7xWE2c26NidADzGcot1f+mH@`O0k*}#*v!ZfFt!0e zu-pH~frWohOMXmq1B}W}!^AvF&P0dh-`15e5Gz*r|2gJAPjBAt2YBfBNeS8uYbpvj zp8g-jbE9ZJ_}+I2AwI>GYUNKUy@m|$7?%fTg~dsvZ=1h~QZ?kkUe-z@1;B3!g_Wz@ z_5-%49?;#nZk)XWw*_Si{342HY9u>Y8R)^(TVe7i ze`bv>U^4`!BW&qj?H~#1d=~(629f52%)*rx`n$Xl8fK+d@T;GZC2h3N=O1(G7{4{1 zFKdOr1VAEhkD~(O{Ch8<>iSF6IV_?uQ2jSU?nDIE^o>)N)7-kw;9oJf;6U};;%5=_#f)WjOE13FiVV14vUS8*%V`L^ zBQnFdc2hN;^cT1x(+rlCFYNP&nhOTc@*`KV<6!kCq0bD2xhK*uk0u{ubD$~(@LCD?Q;B8gfiIjk?o1>`ImBNfvQsL(mq!mqJY z294fj*5pn$p+#@^8IVXS>z&x>MVwoXG!9MRx$K-}cM^M2`>U0eq&PCdy*)#T*goD@ zd(irBfAmVM|Lr?^8J7K(i%3{YSOW%e^eoNX0i$~VncejMSpfK# zuk7&v_g{Bo|bBiUf<-Mo*{w|#SLISPgYtEY@Cs)X4w$<<0>N)gN11@ z;5&|k;sSd{24>qY3^hzOj7;LD_XG{WhA4X}`(V?u5FnEww8_MK)`CB0M9sg*yU*NaQo=n4~78>}5WrZQ7b4 z)bIzahYjKGk-Yc50hH#yRFfi#k1LV-PD1XC?=Xl5Ktx^LJ3Mt_TX*6 zeUQreafy<|)fVo63ncn2Li?rf{B?=H+(wk@sy(t8!fBk*XdUS;G)AVags-n9-A*#U zz8>8dnE}xu$;;U0OLIxQMRQfwcBySoR1|pS%bwSt@)bFm+mlsmESAcavrp&N9o*YY z3IM&5>$FhsLgzU9NMpFK*g6iapBGldyb0Vz#$rr0A42*dG4=}d9gSCkXUkbt_+VE2 z&^ns?OedfNNC4dm$@hX5qR39eNs{2@^2#YX%wy~w(G-aJM@&&ly%WY`$_0?j8PrN) zWEiNQ7fj-Z4yDuf&BA9|=>5q?GRuqV7;~W+%rGS(Gf0XJGMt1e4qeCYw0cdu+E^HD zge9kQ;y&}6Vus4@`cji>iK0itqS9oEA1~@-&?Ow(;LgC4=%XB&fZ`!o!6JNu0Jqu> z4E1X0M?HtCX~kfUmShUo*l<`!sRqhbW*4oOH_i3$Hk3ONUrg$%?1N4evD?FB%|}{H z$LG{}4xO=&7o7*8oG4+c@X7_D^i+DE>WU%W z%qHB^>hFwbHFJ>u8qc1GH{HP3-8m|a56iAL9d8;T3#%#`r&^^uI;CwOAEp1?G3!eL zwJMI9E$<_pZ;ZT+d`_Iz(zaJi@=9H~D}uS@K|lTFw>t(6R)v~@ro~2W`(sVWRqQQu zL%7Y!i4NK*-ffRu=YcDECtF3?@I-VQ(rAM&^9RyJCycDw+?Cky_AmH&Ss`C@MNPX4 z7YuT`qozKkA6jhN;t0*V(hGM3z`RG}UTQo_W6+ie^FD+E28RY5EqLdiGik#a@7()) zR_%2iqQ<1}T=||{M<=%_*zKB}`uDo%ZA)~SxH97C#;|0|Bds{UO1RkF zL~Xm{<%>9w>o=KN3sXy}>hyWU7rj$!(h%J*t$}yW>`V2sQQ>sZ95Swt9kTWON}LtF zg+x2Oj8XLtBNbQZz;a9ZFvRjuj0<0Aj|SqfAP-l; z2{Cg0ZsJ+|rhRJ6()lC1BA+Z(W=`JR;N(fUn=7KoFkPGWHdXr`jGrWeC3HjTN%0*oIx6Zd&Md7c6&UM4K&rTUAzS^hhb$Aw91QXtuCDUUV zE=GQgLWl8FEL1m=*FCUEQVb&V7p+vSROm6U9YJ8F!ag3I^mOZIz$DvnjH)(jPKRxt z(J6wU^h#i(IO%d=0VRHivDM-SDnxNCg;aV4w5rozX(IW}IJJSD(;vc29xT$f1egV= znS%vL52%^5510rz9tROf0my|j54gpb<+Yf2q%mhzE;}$7h_ds#nc4|%h@#ZdbCKXp zLQlbLhv);ps&d}R-RXYzoPMhG(K;4Vu8>#W4x`XXUhFPqHe;aGR6Tr?GoSq9^;c)* zO>1t=Q|Y7l(sqaKE*C=Yy>Bwx@PK(y( zZu8w=p~si$9_SPJ=v%9HM`5#)!-4y^d@@Upe82^cax#kZl@BLPTM6ytUe%S^ux zVP9I!H)|~|)wH}uAr$_09IDXqCQlB6-xI&v@9kxaedH4{j3fq>I7Tu9Rw4tL9uJA0 zU|#{1o@5`cOkYEw@`-fu@cj9J1X{sdwkaLRMsZ6w$0cLaIGl|xC zdixO*Wnvxpd~@Dqx{mxZQ;~SP8)@(1?-&oD-A9?W2jIRpzE16KDe_FV(Bm2K?`D&L zMfF3*olvJwx-LyZJ*uK6CU<4=I6O{?y}W^xlo|*hc>4`>8UNz$xHtUqAeJ1vc!sJo znDr}^n%<{i@1NL~H89%wYyh_94)lMi?xJP@(ElGJwn=f5lKnr1B&_C!=1na$E3whR z&`UEav_wz<2nUfGd0Wf`Lg_H%k(l>#h19)4KaxN8u*M@IXcK1UyUd5liL~nT7`a!) z9P={-IJE2Ji*VYgOIHUZs4>I!6cECmq)GJpxLCQ(O>1vxf>MxHOcY12Gp8HKp#9mR zJZA)ugTv5P0{vJu*=dQ6xLYS7gf(U%(N%_dq6(ohCHKg_)XQ@uyq&zk5$t~NW=)|R z*xk3Ws9&!fe48bnM{_%1ROC7IeBN`mc{6ScVNkxHtI;yvp(;5rH!Xt{cZh)?%1X<1 z%ic#P0_SnVQ6IiAv~?dBgVw;~ym8#Ix|;@AB+lKm0VNc$Co5uYIr2ET%HSrj)O%J< zo732lqyru3N9T?TiyDOib&a_?jPTkjfLbV$W%uXMg>KkL20I{Tums%2KWAGnQ;i?= z4N69KPDa*$vQ`6{K>%?2qR=U2i5niJ;DBrY(3 zoyo0;lBd`T&sxt~UevbfMt@~7f#V1fA)Q^ABZd1QKr}9&WnM_U*Fz-z+`3Mv6i2w! zI$J9Np}mNVBdS%u*RcmhPXJT??ZQ+*y-m1+>k(Y=% z@8L>8t8SX&sEw{EauXhO<$I1VJpuzY^omwg89h>YZfrTT0a5!TufL=5F__wgB2q&b zc-CdrY!Wa!9~M{c+qjNz|17*v0;7{G0<5mgZzJQE4Kx7y)=1BgLm&z|nLG?{5ep?{(jmA~3S3X$Kw@bbzet%fBv3mfIFfcI)m_nPv(pyHHw6`& z0eSwuczmv=sahZJ?z>mPEzkxeR)Wjm8 zT)8)VPfZgfc7YFHJpHE6yRxr_ip8HsrHJip1P-O8oQ`DCN@aL&3(~o(TxqtqO)XA> zs8T0|vrsH#Nyu2p%M^LAn^Y}BR}-+|X9I5wi-Cc+p_1Z!&awQe%^|#CJP(Erg6|+c zY6Tik-~W8q1}xjRvjB1N|5jWt_300B{h%QF1MK7#ZzVS;5Aa_p*2n!&vPB8KC|N>H zj3V-$DD|8_f6uw% zJJ@(QzH4TFCFM%1A4pJZfvbL{J-(b~D zS!W?pWGHA{Zvj-C-@sNARG8nyRuxp5U*A?2RFFVoF9@oF@RFKpP`CmZ@Xq{0&*$4y zyk2ECmm?e~Jbj%3V*e$6pAg=u4W&yAXwbU7wgo+p=Q%9}}n- z>`4O4d_ruLiikfKO!-Y5yXcd_5XaDo+C~pVd%J*=9TyQk6JH9Kz?l{SaZD?JY*9V4 zK;LjhE7_;138brXXr*EblxX1ZMA@L(orl)TD$7yO2?U&!YbU--7>axJMQ)6sSB!r9jkH>(b+ z-wrmrb&+RM4EHGpO;1w0x318dkFVOrsB)|el}DT!P@%NG7u$%eJn<36|vt%TW{PLDU!}? z@aAk@G7?-?Mh{5VVvzTQM=BINKeDN)DWIGlb|#iA@4z&3=3_L-dUBuB_h6L9CZv-_ zR&7jUDp}Y<7%t~Vy_J|2N>=4saBha-KKLR$po#r*-XDsYqxTCH^S4{WV15m6V}ho z_X?jFL`uuSOF6J^=Ss=eGIiD&b@7WG@N8N@V4E(WX8Qoo#FBq%vfwJ~oaX>jVpN8Q z-quxX6128AiZ9Qp%tM|f3Z0=q5ghQ3NR6|$k5*rc6|dUyrBkM~EZFmht0};})&ZqT zViclOBW2Itbcln%n8e{GgCo+tlEVV>Wku52-Vv737loER^*_pz2#zGy8EsH32JCv9u5 zNEaJ+1OhLaO+O-$w+O{a0g)Mvf99vCwoPuQm$C2;px(Grske4GYPZ!q8bbF7JI8mC zSf389V1KZKO=MG2d(DaJ@aO;pUjEiedI$54_UklTi!NXMDfKl_vqdry)4qF#)GXXc zR%K5A@nlN}(mGRm@SLH|oDQF(db8CwI4{9PG_VZvWuou!RvIyj!R6Y~_L;c9DLDN$ zi#N!9P63W~4_AzuLpXRX{^u2Vv0E4QY*AB`^GlviA%os}e)QZ+Iu<5Z9U{^+UuQ9U z%yPuXdGuEvg>OLKJA&<3z$&~RBlxU5;>{(GH5gt>vy>xabOUb1NzqW_ckDCsQO)XJ z1433r510qpf39<({`)q3LKd}aRrih9_w5)V+amNQ5>OKlJzCI%ybBmq;)Z&-)5t1v z0kCf<^6A!~?HTt*K%0HcqHaKAS6)d<+wXHo!6y6XPSIGfUe!oHZ!kUZ_}4<*4z?y3 zfq6b}z)^KLJV8NUf6Sopk=YESk`BtXDNU3g1g34$tQbDw*7(e3AtU0~RlEmEBey5s z!jS9MCY5xrjFFGJRH#3u{a$6_=~=o>F}xd&X**q2z${a-fcT7b9TTig4nF>H7TKea z-(qz4LWpQQa>0xkakZdwN!nJ$dM?Iq3{C|Z-Yf;L&y=3Q3x&7BIdu5Cz$(Xl<>1*= z@4+$l@PYgrr`eKsZt;5O4BVXsXoTuGF&%NfSE$cNJn#j5xA^RBx5UZkpXP6nvkIsk zVEWwPei!P!tns~I()*)I^ovC=i>bo#`P2anJ>6=2?>-$W1>VAa z#vPa0k!Onrw<|$SkrCb7y^y}-V6^pklXg>h?SI@K0cG=@rRBBmHW zP2gu`W{s(8&vIB%jV@IWe8I%-?_xw-)I`x;2( zOaLlG!e-@~Y7eE(g%Wj6#pVJOaij=Y%;e4dNgm83q|6bP13Ecj?1VXPZ(7gU!wzRI3Jf5iR9(!tYi9D)aA!tWDVtw8e({G%M%-H_x- z3UIflzje1nFDe=@^o`{2F?gpK0NRWnLF62CH!9&(t^}4O6kZT@837g+(OW1*$+E$> z6;TTY4ek586!)**KrxDnhsCCuN1q9`<>;Q{zp}P1V<5=1y2<#EwNK@9En_C=I^AKn z?>R~zB`BDBhEsk}Nl7e_B%>V>#n9eD<9*Ghky5RbZ>8Q2MyRV})alk4#PkGEh$y z#9}f$j7<~lD{s93@}$^371fGuIZSa_bvQR$`I!qhb6m>5A=omc6Y^ z7a3*Zj&N{EF>}0-xy`f2@kVi3So3q|isuJp-nk*s@>Vh>M)za;wqb*i5Ub!X%rV)Z zVUmj}Z&0w?fzn zpHyyIfjs{`l&puXgo3e7+y4;cjOO(n`v;z2=C{Xu>GWREQ~q*#f5Q^#em4I8g^c81 zseOh2Al&EJ|rxTB1||8e+B^03^oG10`bq7LShMK1Ieqcg+CZF1VA1|n*hiBJ;L@ zm0uF@Qux`Sd;-svatnk1l=~WfAQ72d4#PlDpQW@nFyOTuwe^UgnN0gdJCDcDp7>mz zD&!C1{tuoplOKi;R=Is0aG(t#qQbOBs>r|FEq;V%WwB@JgxiybG=%)v!0nn|5{Fm= zQEbNA%O`GA*5^D%iZVR52G+$UfPrW(doZJ&^cm4ow6#~0F3+j;zYfk1+9h9V{Axe076xdP`0_fVS1yBVSAYT-AT3iqmTLvdq?>0KpHg~6h zdWg@6Km*St&p!2tx8rmiX1P1qci|b?=W|u3ZJ4_3OMfPU5WJe=_R=kFC05R9_;{9v z@aEbWlu;U;N+7f)8mdhClY4as7ukG+6SG;9^Z;4oI8r?a;r#GInWd>=b~%q=#B`S< z*7mneyB)kt|10E3SH{IqAHd4q&e>upG0Jm_CT7ouiHmWKcMp8p-k<@IaVQ}e`pCdy00 z%Nm&e5={R8eAQEUrN?$2;6y*dn}2pSWG~MAbD#z=eDG_a=ASlP{X${<3t95dL6YuA zq+cU7FStWl1IzwDpPL{^Lwz7lSdc0F%Q$j^y<%_p4?ITf2?_v>QI;6z2U0T4S=+#o zBoGI5NCKEi0ju+s1^P!c27oq7G-Y3JD@gK60Mx=ww+1&~PU zZ}sG*%w8g?|4C-QH057p_7Y9~e_dwjdOs{aE&!VXY6ztAPYYX0W`EJWA1CY66#< z+e7|KQsN>`k10P&@piIr!z?3;#N>*PoZ1cRjl{-|-)q;oAOp%y9o# zUAz+w``r)Jo7Qht{$=an7yp+u0Oo4V_=kf}c>7}=-0(2xXB?{)V5>1N)^{nyu(7~0 z0%f$ZG+^Pvt0DV9v}a^?dn>)m^7pblJ;+G#p0D1Z=r8CT5FLxptUPZ57H>UW-7VU@ zD(QztRfMX@j-4v_j8v`UH3d9;%mV4qkq(6kmMm&{z6;ry2JFBceNdAERlxdP-Y@b9 ze-5~SkPrTCs*tsdM9nyCW3t{+5wKf^Yc&t{>9kh;HL)Sx4Oc}uKU$QdlpoRXx#zIK zn#x`k+9G;Lo4~3!|87mFq>$k^kQfif&4IP=Bce8X<{vLt==2VgBLtgZJWu4wV4!nX zm}tFGtFU!3agRhxre@?oc5d_Q7%mXI<9$|$f!6Or%$4Kh;cs;poBA{%dxblAZf^zD zKeZKXvi2{$s~o-_*U>bL;g)xl$a%}C2(sc37PW6-YMAcs;O-7%r%Q?vj!byqc`OGaxY^({~^*Wt~MJZ7St-ORnR z@!RrF0gl-1t=gk93`GuAM%2t)QsdN*6BiR6*EHeCPN0_+Fs)6yZ8oo~u$%iL>mt9| zLuB}J!#*}g`>Yvxs$H64$^}tl^AX+=vy2D&IPHkw#%KM+UdU6#K!Gr#FD0yG3*=NXWE$FaaZ2usV2-W2Ho%jBYG& z;f+tX`gjjQnL%Mv8iJ&kk1U1UZsE1OU?m{@33QLelopCB3Y2}W+UgvSdK441DpJ)* zwIYJ-1To}ERWEyc9e=Vwo5!3$(OLI?{2j@4yzN_(x@@s0z3_ur4H`kZb2^pu^$yKe z2}6QN!~BSlN;ax^ha@Uhn}+Bp2C9X%A-7)JXOlqc3ym6X6^?eNi`BhFO0gYv%#Q8D zkHD<19L6OdTwcRQusTdo@*YSdleZ4$F4Q&ou(*#l-r5|2*9q|%O+6*xI9i^p+`5Tx zVgHc$PG|=*4ZvcM{Wc(d+0>D-F?6#0qtzItqUkWpkMahZ*6e6-VZ*Xf)q*}(N59b= z%rLl=#}T{|q!RvHgN!N}D~WU+$IXvD!hkJI0OTTPb`Z;_CJ1J~^((If?i60^r^oL% z*srn$6#QWPTA{xMnWHsou3!%zYDoLlhTeR7^gq(_!||K+`)HIy!(ySb>ddh>QS!E8 z(o&W{jm;`S4I;Drro}nS+sK;I@J(IG!AD$k;mK3HRTuY3o^@94wbs0)NDGswUBzu) zzgptqcWxtn^DGn$G6dyNSLsxcL_KOuwt+B#-TLk}W*L~B@9=Fm^|de{Xv%_OMHAYK z)~OIvMFc6}{60d^X9D|SlE4EaEk)ZJxgnXn`V@qNaq_f@T13*PXE3%;hW2xSxKxS}PPRJ>k!4O$;loR)Q8 zB?sDlW&bHca@4&QOz*;WG|R>i!U>(_5Nm+e8EkLUJM1LqKv-we#u9l54v+ZzyKR9U zH;SV@;%VRy1`-usu0*^M#X>b8kD60G4q7qWXF3mx5mS(s!eSJeuDuH!=dER6E{kZlRI2 zs|kgiwyjDxeNWmLQ$Z86BQ8-tUt#{;NGnU1dGx@M-6q)m3KGm*uo{^ARF*(q?>#Vuu6~LIm9!ch zrjRVpS!KTMX%-5;$3&W>*%x@>BV?zaOdyShv_+vyY)^8{H!V23a)#f0zUAQ$Xnln5 zXdkg>w^OF^`H65iEd6{)3otlmzYSAf&L{lK1^kkFR^m8-ulolf8y%S$mV0iZpdT<; zp$NriU@Amv!Ei-A$kGVmQ+I~Bt%WoK4;XAbC{=M9*H?H@c0*3ZvY%UkHNRwXKD*E{ z;{jF?0SLQ02AHwY`d28QCsu({@^AU=&QDTbn-Dc97^}A>!fob2$uZJI2HG1Hv|NMs zi&`9LTf2tju4Q-<7k&uJ_$STlbaUC)qV-MowmZ^SH?)+@n!WC7E z#`1Fxl7!(`XgAE;I!IalBeNo}SS+PgZ|^qKJ>9JB?>441}emor8v@aDK@$4}6S(6v#~7v0jYC2m|1LTk`3 zDD>5{zLg=Fh~)%P>zFi43HB#3MWMz;iNR!u*n~wdw(1#VEVyYWz}$>O-txbG{jF?9 zTOetlZ8DwZ^SJ(|VxvDcX4Ir9t9pqAKH5GLY(EXw&=>=nn>Cg(rCzd9QQZT`_$I9L z_&W=5Y8iuuUUl}REWnULf4_GBnpEoG0NE+gB-t7ECxNpa47^!~pljMX{O;u*WUL%j zi(eaP<3+rQKLgYy{kOpE|0JpT*JJlNa_zrb zpC)}H00U}a`AJL=Rp^$VYXK1@f^snMd2Bntczh!JPK@@UYsJ!%aXMrp`ytEY?5q1Z z0MvQ@>g1i~01ly@xfa%Pww_a6n?b{rY~)6o8My_zY_m<+1tQuLld^@Yto-NC3JT>- zl6!eo&7VJaX{eQxCe>(VlO+=i-vq2cR#TK0<}Y}6sw+4N4ou>idU%-M$l2>u;;F?) z>3>blPlB&6DD-S!Y;5~LCm>#k4XRuEJes%#?}w0l35qC4aITOz&*$#E`1wCE1~I96QlVZy=dS>!RX4cQvK>`7xqjXYSV(9EB?Z5;d5Hddz2UEdZ72m_oN76vByLv{IK%;rl$!lG#o%^eA zaSQdO(%Q_i2j{VWHyF6K80cB;Mdb zVRD(|QLBcy)a+R6_;P>jx_gOACPx!Yl-Mfr`SszLMcZ~4`(<(t6Wlg#6IAWb$*FVR z_+4~>YuEt!oojd*3JKdd>HirDc`5%QOFAZJf@6d&AeG6uj+^IKN@tV6FKPf^4J(O* zbjI0&uEzix8$qi5l=xVD9d{(nJqMrV{UK)Tx}u?JP=6cqt;bnwO#R*2=gC!{C(^u! zhKxec{66LLfEo8jCKlHhc7W;5wa!*}jxgv|2Hjg-Vj zLk#Zjf!A_Bd5nJXBV3Xy0(0$JE$#3ZHG)o#P0=UTyPkQ1UD51~!n>{QcA0JyPO(Vi zh@`LL>C=%U30)5(Jh-k#x}k4a;V{?fvhT9_szG?mvYjW8HwE+SuQAQb9m-of>Fz>w z4hmqHW%M(%F$K3-MPG@gH+8&|r8Ha?aT}k@5}E-YkXF}`p<^DeW9@_Q995Y}$X?#= za_cd*EB_ zg#jL29{UNmo!7_EJRFt-F(8^^)hSvu*-038g)WBU<8({FdlO>p6&AaRP6Io;`TTcNaN4d0o%qY^pE zAO~&0MA8SN)Gbvl@=a?p)|0fA8{JlSz#azuMk?~!+PAAO!SB?fgRUrsMey z!xoTmbiq&v+5EJ~H?q8dtQorl;4?C>a{D@m$gcczgI&o6obm7c)U|6d*K@H6%+uaU zT4|~uTShlYnnh7rWj{nKur_6bSD|s|gj`cNS8-K}eI^ybFv0RwQ=X=V_wb${w%_Vrpn0Wv6zsfR1=Ze2B<~Yr@@F$@(=Apoa$s6%KgG zzaI!7cu^ku*Glm}Hzoh()Ob-P{+Etqhl!58x3z%2gt4M*nS-ppU9AJSJO^q;@_&nI zLr?jC)vCJMF9A^da`RCH#%T}E{z^LcX+(-d|w-Mzvok%DN;B-Pwi8j4l2n zu$2+B2tPJ0bN0bjzg`)C8DNscw5ZO@lBB{3^N)mlAuf1_$jm$!AomI|CZun5-o_)l zl;|d|pK~8@x0_5YPx3uK-LSu^=%L3Hr?kD{bdx9pXMFhR6tLtxPQ*LL^q$Jr4D=L- zw^+NX$5NZ!sjG}%+ahY(OX~b%fn5mm`pGzR{IQ0SE|Amu=NX&=LQP-H5z5$wfoonX zD*A{OP=>i;&kUFnVA4t?r*i%U{yK}oo>PqNu@;AhQLCqwLUOHUX>JfTlom$O<)-`O zz0^+MU?$v78>BOaNMY_6X)ia_q_Y8e_#MHr%!otIPJa)i6J#V!)jN@n#FHMWuBBRo zb-+F+lLP?oB0PR)c44!>XN*3=JiNXDx0VH4J`rY%U$KFu^SC}pA3J6}2AO?8Hp2>O z=IsDyxYI6W@@n+x4bb|c)%TJ2uyYL@c5=SJSMj4GdV-2OLQ#Cz$UA0a)17ZKoN-Y7R@!@Zw8IGWw$rjTne0%htZh6cvH7J!FcHj$3s>hV>-UjHpoq>bd0zi{#- za>(llda`?zpikn@pl8LJyR(jCyN}ZJzU+~HBV6eCWYwZ~=iid@p~X#XA%%Eh=i3Zb zNbN~x2B9tqAJ%)B4J*lSh{Pw?C*^#uG)Y!!IUL|NOKe7Y8(gmNT!)Gu;e>Y)QFO@# z(_*{|LcPr&0Bqh z_klsmifm_sQtM$%5old(L%+#Xe7dNOu!YCW1n#fjCR*mycw}=+T3oIEH>_ zOC(*dDIP3!MBm2EyyQ3^DofhJ>IlJRymrO4{&v;3kJb^R8|Mdq!QG%Xd}1SosC`F! z4tkQtc&iAb3B6Qra3Trg!ATh3einAgai{$u^MQT;I7#lSZTKm*0P1onGY5X}Fwj8) zKMOCC$~F*>uq{O!QpRgf>;41Cw`yC^t|UR7JL4abmYiI10vpn8nea%;N-qqd8i73_ zVMi103un9AH;F2O7)1K&YVgAOtEy-$GZ6(^(Af2;^=RMTQw5GXi`-+Shb^&RSm`@f z#^MIn6o;ikt=16hEyr%qd8X6^6E)-}AVffI=4-E1FSlsGnmF6|7kk|kUOs+@;QP9y zF0$qPjS8+zH{{-g6IV*{8Pw*j!h z0tOlWu{HCn7xg!_*PpGK&Bu-j08HjT1z@cFD*%H`KIfk{jr}t2|2w3N)zcJe_J8Sq z|7}m8z0D8SreB$9l+q-irh$V_AXrh%ts|U>ign`s1OwmJJ^_<}Azak{ zhgiMVW%rCj2qTj?t6;7;52k+YFr`_uyTD~7E{R!#66Yx`Jd9itqwd}s z=j={$*hMZVm^(6(;K}``5o)HsW^K}SaSOUAFOuL#5L)~8o4DM*sX$KW$IyhrVWIqw zY8pmdL_TWQUY}{A6HM6S>^I@^3FKD-&lB;uo)8y>2(uJ`p=9BbA#@*h60altF5=JL zoYu!{+Z&t41kn$jl;~|a>|T3yp{I#E*q7sk1C`DNZhuVTTT6@gOqn;1a^Dr7BCky{ z8^`t&rh)t_!B}yS(BwW4O1eJPcSj*A$~1~jHf%2U;lbz)7pZkR2^_DO*slE%=WHNM zV|JpJizhh@=XwM=OnC}v!$l;W9$dfzrh_E*dm+I`7E|Ho>|Nfl?sYC!>V3%Sz8I?7Ag5$9<`-!aY&I9dp1pc*aboTD+n4ItVJR4~z z!7@zDuchUtPClG(a5LXEUQKoTJb}GJ-_`>kVo6G#9vgwlaTy;Eoz279n6dMJRLhp7OeRLGGoIpB5YR5mY%nno(@eD? z)8)BIglkO&GG%5<1~ntYe(21V9n&;cwZ|%-OJCM|lq!K_jTh)C~V zCTG}&Y0c-T78f-vw*K~nEo0!|3%T&TGZvw!TB7-5FQIkB*#!qyOC)aMDsJ2GrbXzo z4ipMV1$I3t?9kPJNgd)mah|5R7`0 z2n8Q?M6=#Iw2SHHR2pq7#!TdyB@bLDyDj2rjG$Mv-3cIuj=&M-;HZy_OQDxpt6%w!a0Npus(% zIqWE4p8sG$b7`TN3}13Ix0O6uC-BLbE{W8dIC1nWwHGdeSPHvY;H;XBQ2>Yez34R= zTLAee*!rn&cl{hzeZIc*GD3izviJP0EKC?IsGm{Ifj-FeR>epu(G_NnBTj;ga;Gv< zL<6yj$=jw>wqtJO+zpjgc-u}X{~J7q*I%abU7jI!tNAJzU)q=q z)=MuJ6*;CgW@O14(uU1hNz;5*=?9j0+qv(`q<8?W_Z6X@*QTXmEJuAqy|yY`by)$b z%jWE+4gdC><@SKBJb2uHX(#}NRd~j`8v4V-bEVN)x@<~~wVmpG++bENUDdcjCw1WT zX!7FnYIt(`f`wqInYN{?MmJenH&vQ0+J|CBwgH!~+V5Fx!IrH%ckJgJL_;YHqtEz(&vgevRR`96^HZ~32Yo6e06FpI z=&uUlIP1s0!Z-=RGTeS8y)z+@$r(!gP}s1!HC_FvV30D5VGLZ_%J=RY;v1}fgZ%qc ztf>K8dlbIHq2WtQ^83}f`<$WH1g)0hSS%HeLS^wtDxQFhH&Ig(o*t@3U!^UJfgd}j zqu=$`Gjaoa%AO)xZ zR~0kxsnubnDObUzda>fKctL?>Ajb(Uwx!Rn+K4Y>VA~ZpmoLH^&TxaW^QSGSQ_J7s zIToBm`+r3cUlMvho%AiKPg{b=-WL8$%95$6_#J!!8=neO(&QA%i38ZGat(a}rxSda z@}U>$!W_#zmch8U(gm#eIT?%(c7K?{V-|`W+QsgLS7@=FTa(|~+ShJ@2VCz^^JXO*BaU4fSCRO#JUI zF^4rR3WgW7_+J$@rm$HBq5)CW;BQmrmtIZQ$x8n(I6zD-fMypX@Z4s$O-71x8kkyB zZ*)MF@s*%IP_X1Wu6Z~$d$OQE=+r=8;6M+^g?y-#a;e_Cn(nKwAHF<)zxoQcg%Sb< z+xxCG$LYkeEz~ALMV~3?BE}T*+gY42gB(9}gK|v5W2tOu*m)4hfYhaS_?5|!srGsGanx4j ziQ@V0Ru1>$&ykU|r&jpS07)7DwzozO_>I3IQGbk#2s)Wr0%{B-ibjTJ_5hmQKVnkF zamizO6m9M>8KwM%=9~4^veE>&fjA;_6`0Uu4IGYftEo;=eZ>T-dpS6i*Zv@UJuygk zVTkzhthRON9+i!9AI99=yM{>AQWS1QtpZCl$ScFlmbXs(j0teGg+j31C zoJ<2x+E2F5DP15nK2}*HLwWGYsuLdGKAkyFRxz*C!Bb;5(h9maZnt)=>JXQx9)*&t z`WG?qA2QAaB?^0yU8~L85JjOxtffy+2FBLoZFHc_iaVi z7MgB2q%TSyr8bhwIugNS<}4Wxo8$0B9b3p~x%5L_7Z2HXd=smgkU6dNle90^uQxg!89h#&d?~k_NssdL7 z!CY_}*7o;wKZGNz*3ntkT;7Ie@)ZCNB!nUVqEj{dep<$onZbW1dTohatBP0*V|d`T zY+R;$mTf}nx6e`>BF0&^-ys(pU1QQ#2htDjUX4Te$j`$}FlwkzbpjsvYlvKJV&D|O zJ@fvyTk#Un{qnB=Ogpq~kOWY8`^6{|^)+c0pv*1!&?>6lVBnihFU<#n3K56F-%lkbu+*a*KRYBlnb>eRYd!d&<^BBiD|8Pt&nQ7}jgy|X zMv>KMms?RLoy)o!vEE(F7{Oo-o6ssgo$I23Iv1LvD{OGy%$J!sa?5&Bt!f>w;n>sA zu7-}d9heZkAv=qr#mmIl@9zCml35(Q*+NLvZUu2B;#j-3qpsbljNnY#CJZ%(G25my zBGgrdT>azE^#utG#4<-rY?0laD46{)EP$?;boc2AWxX<6TR0o8Oazi7+#-1;Ukj?#l zeosh_V|KFVy~bR>RTD^H`nAf3f!I~S*=|#I>%M9^B{B9z!u%*OKZrU$yst%xT3JiU z$M$uPsd@)F!;>{U>pPT(hYa454N?Y>kcNlUet_qxU2N*V;CTAle$#6QJ+D%c1H34= zCyL)_vKW=D0rY__j^e&lVTr?sc!VAt=l{_5R&iBmTl+Abiw*(lmhO;{ZV)7-rMpwQ zJ4H%5q(Qp7ySqVBTIrH+f$qI^@2%(j-{1KzmRu|^)|hk5(c^j8x@&_5J>`Q}7uu#O zakTdw%x=vWf;#(f3Nu=(SWoZ&o;tBtHJ3pZ7?rrx5QOY&v4@g1L(TXor@GAK^nmWm zpV(vNr3hoNCUju$?pP3Xz2?kt44)D`VV0k5zSl(P6GkasVCKR6+o7$WGyb17@lUHm zs^Dbx$6!(P;d5X*+}$i%t)WIWM1+Qw;S)5^M^2S%MkHmXLlWu-mi<`~&mJ2a&zL>x z_9cfV9}DWMYf{sEXk}i%X zUrhbCxro1@P`@m2_9OQ{?OReZXl|&@Nd(lM`&`FLRvNUMS4?BQH?v3;Fsnes#g@YW zz#?SUNLx#!lg_4A&Ys~|G#ag+VT_Tp3ZcAhg_JT{0ipxTY{gK;-GzW_crq1U_5bB>jGiUNZ7ogAvCo*po*U&GIS zwGy)k?!u7wzaZuAF}x-b{1kj;>tjf%E#6L?!a#G*HD@%}^y;SCaFokVJ$N>^-l2Yt z6Hwqm8wVw=7lv!>zxz}ZdG<4B3iJEB`ouM|_6vKaovdYn9byzCw;&m%3>P%DROCU> z$c^+E!2(|;3^v{;bDj=DMz>HRMt9Q0smk1^^jb>9bjfQ|*j->XXs}w`p1npOc_0T} zVDX46yhwz!9%NC@Sj``$YPxrTE#>A?J~7!wlC?VAx2VpGj#&_aXZo-P}xY z;@_ZB#<#c2G6=s2gS4a?##YWfhIjpiw&}Sg;yj@RuqliZ1;nls|BGaDs z+~=J6Y8nIy@NctYoS!`7{a~TC&0j2le_vvH z^JjGAwslX%ka54H^L>LU^bcx#LndW$6EWV0%2FMesr2)-gq4AlhK{JQ3&-!9ihh%`b#_(#|n+igT=SPaDL?q{DmFB&#yzg zpJfoz2W~j(0_$md->ki#+yjkWBT2*;S%^+(swPYbr9$;mstT&ok!*BSYi)lUBC;$p zhR7pRx*L#ZeXkAE7b9!p-`YMOu040y+`V2y1HoTW_2Pl*#9ltC8}>2QXzxVTptCCE zOXBCf(g`=%hJ%a(SP;iR^HbIwwWWRdDhCx5^QcBFxqy{~>AYhMJ{tkbucu(ux7e)} z1WS*6b*#&&W|h}Rxsok(H0piao;_g$Ct^bk`xi#IVyx(}%%NsuXZJZBnm6JVHUQ;WIEUbq z76sBiWx-ihniCWn+0sSyS@VmT=IAW%un<1n=#~mB+g9r-?72@HJLc{#9t2|6nO=%= zSSVmEYJ|#oTUbYE%6p+J8t3a!_e4he-M-R>fflkAN{r?tP4VzS7XS?>#g(L#;CN$2 zwJOzC>x-)11JXvO&X2wF5SY`8!|hoB{j?TP`+j|EKM$OVTNnXDbGv)h`v#yPWvQ$E z9h=NNyfGLE&FVMYVI*aT0qq7wA!p_nj|^Lbw!F`Q;*#5mYX6 zobfocaRy6d>U$RdQs5j48T55 zkzo~#Fh6{#8z+{A7f%2+TjaN~>(8rtf9#Qdt7Cl+VZWEN;?(4U6Jp)NRTX|V%~W8- zHjL<%uUp~Svrt$9Gce`&2?Xl=ILPwE`#e*7q1{@s32s2#DZ9&!6SKVv;gdhHBrV^0 zoY~n9W#3$0@3MmowB$et!2mpzkS6T-SslhDxvF&Y65iU=EY1u@p9qAj!Wt2d$e|S- zx@IT5_2lrvPpwpbFCw$}WCVf*b-Mt?>3L<@iDVEC4jFRlG{T|^DRK-sJ1k3&K{z=P zToLUEgg8J9E~FcNV#fYV{hdIXoP0=rHkT;GT&{K;4V8-*DQ11Mw!vv}d{b}skZLE+ zwABV#PLe$NNa3n#vDBhfKL5bN0VFevrD}Y}U`UTaFQ2~D3w7hTcf-0@18>wZW|U{? z>}S~Z;&SI>7r&@r+vwX@^dG!@u}DkIKvD$hXlr4!|IAUFZiQNqXn8^WRd)0+3D6^Y z(EBaGr&}z@gWlCt(1vV(NSC2mi?1LfM^kl_LRGg@l&T^ocOfPY*)sBa8f~62GgT4C zHDPKAM!SJNsU)LZp)5O#wcH)OwcABr-vQGFb24?PNd_-NWnv=QrImJ5$JUlf?%7CV zy;zdxr!N^rJcoBqy5ZWcV#(d^E>-eT$oJTuI>`z3QTu*IW-g5M5C_*`hn;|+*VFVo zzT^>QQach+r0L_rTbWvYxZT{h*5|Mz>aymdd2`k{h`IW@0pSwF@a#_ws>UvO#`5qU zkM})~>Q_{^IT64qm$QFXghfN5na+@RiO+xQmD%Tl%Dnm|T_hyj0>=T24aTni>7o?% zF1|RJ*B~aA7rNJc#+JP~iospW9vVb;CqCxsX2byZk`*LCtqrpevBmEtGXl zk-{DICN#@kpdX2{IU#K@faDbGIrDbzN>wly>aCJ?GVatymbtz)W~eZ+PQg5axB7{eSkcTq zCg2Rc>4I2#aaZ?v2#bP<$k! zZ2x(pg|VUN$#Syn*$V4?V%NmP$_Qgav2itrN=~?Tz53&uhk?+TY;oOeU=nltTU-r- zpItK$LJhb-u5TlxZKuufeRbvU{<-%D{~QYR&Olal;<%0|A#lM5CvA;8778$9d*}3y z%pnvofRmsd3ZNOfe3GXQ7yu-30}26V05||2HqagGX@P|>FqMEidGjTph?Reb1#Y=F z=+H3K(v$GEz+d+k`1!Sg|Cz2q#LQCr54r}02Sdd>9~)bdmdGn$kT(@s}_9KdcDzQ=s)UH&Q^4)jT)`aBIebHNj^)xttE zs@fPcrgm5eM3fDgyh>LY@h4OkB-guTatCX3;E+z>jq{sRlM0~ebt$4V$;MP^Qnb`w zA0geQ(+ZV31^k8G$w^o!7(R+hp&dB_QBr2sY@ngb&;dsu+hUm^I$sz<=qT;%%qmaIhss^0ITa|wq$aCpW>T;D zxpILx4Hf2Kx74gYpD>DY)t;s#zSoWqor6T)Hl3Ra6ZdUJipa1+f~r{ui{oZ*&)^9{ z&|Iq>jIH8j807Ve=-_@Er;1|&jCPv;?|BizDqr6*M$+- z&kdcYw=5#f>I6MB5Kn<@qiz-bxgt4gIbRXi7xgO~&&RvE)i;^AUB|a9}m?(WAGDjcby{yyG8bPP?vliBJdRfMMt zWav5eXZ^?L?a2AByg)0|h2hWFo7uh~e88KRgoRr57wkS7#B*IQXh*1Av1p@R(7~Dp z)f3@vJa|pjp*^8S^kw!lj*qom>)q%oxvG^T52yDdJ5*8UWfA!ch|x2UWeVvppUJ~+ zJp;PKJU_*Pek})$D5a{dx|=Ztq`W5Q9rb?fn}c6OegsHy=_1qWdg}sOp0XhMdUD0p zUgm1uN<1EIEy)WtJ^+%D?yPh5Mas2!PZp1@if%5%i1BAjr^)--3s#f`rreiwPmGC}1!X6UWU2FDo4frTNdurNr_JC2yn#C&Y0klBG zzr~LIxs<|hYpZW_KUVy&&!SkEvnxQ{7rig+;aC4)CgQw1 z)4qpsr2K6ZO9K2Ke^nOm^QQ+sKOi5PzRd$o&$rmjEwb^R`^;}xI>G;|tf~=(Z%2HI zub-cgibNGL6f(G!zbcvH$FvE4Zgg-dF#tCRl3xuhiU%aktSIl+ab@u<&D0doJ#D>q zLbJinup`uTgC!2h;&K6L62tH8Y-Cl9l7>=Mk63?nWP}Fx4 zS&w2oM7AlN3QXTJ*e&!9*?( zuy6U$YO>FraqVei1-*T&+Qp+pWqtf%2uk^mvh;Iu`gMZS^MD8B8tl3a3^-uWJN4VZ z_vf^Z-^xngLhs*FQ~U?b`yn;$_V%7=i2k?KRE<~}mc+*kSeu{XBq^ojs4QV&rRSVf z9fwZznhFJ|f57O?gCu)*>D0LgND2kCY1zNKyh{0Mg)IU_k_6@A{Eg z5^!d47zXghj=mPC^>T108omT@nl?Y8wlJEumTzv7bV&gx6{sJKzZLW6`H1`ZzCXe7 zV-!to=kB>^OZc(SjP_~{NIvx=a+ohxNE5VL!_QbmqrSzF(mj7eXN1rP(;I_1ea}Vv z^an0lQc`NwFnI8fDYma%&iB52>rPj%)B^^PDS5JU?Ap^dwFFr?A2V=)8-sO%EIp2J z21_O>!Ae6gwG%L(W5xpAXsSEURWrrkLnfs1^7Ge!nv~EW8OA87&5A5j8PFtOXL|uc zkYzxb%8!>5Y+>%E^@6vG@lZ8-*^GDG+#cR%%={GQcyJ1di_08rcCaZu@#!*gB-P8h z9(J0rCo>%}-0Rw)JT;S>RThZIR0Sqv(T?7_W5m^nQqc9<35Q(6MfH0F)vcsaccq2P|IRTFd^PeU17p(wnxeVPL+U%3`pfpLWXzPgTV|g-McZ63= zI23io_Svr82L^Zx^79jIo@B?igjjHWRb8xN%F)?U?S|+pMd;cC_u93-)a5CTCVR5U z*61dg32mWnk(fMF_?&Ybrf@Gp`a^{BOGmp2jX@S#nMGLbF4;Q5>;xb5hPMIsH8d)` zQ?ky_Ic#Hg`m(|mlhgH&K~ST{29Z4l&T3gydSacWC8FWOInid|$DqS6v8sJeA z4;pi`#ePmYYKfuft6L{(@>d_c78yrPcofn`gu!yFFf9;HmKc_6VKRVN;+M{g#S~C2 zr8F%U=G1;gq(_%<0BVHCjy-9WEILrt5${@~E58VHWcGXu!IVZXx!g}j`7K^1<1@yy z(pcGsK^bg(a9n>QUGBCrd<9WAt(0hzmWjZWAj`#Qv(SWgm(6+Zy*5LL1D4EgwuUFI zcsL%Vt&X;YGxAlQF4VhAX`rqy(Sg8I7;K2i@$He=B(jTIvCT>%K)*f2F^FzhNL;N5(*d-PR2{Vee2&TMwaU z-+3)p^j36M{DGh>m5hwVp#6;B{6D}@R_PwD zqv^Lo{#*zB2}w*52v~1mZ1G1W`!8|n9zvcU5LteN6zdpih@PkzXqZ6%p7iHqVb7Q` z9WzPpVPVI!vb1AiD<>Vxzo^BE$L4UtQpTRaLdWuC0*1{!EfAQ%1A_hn;l)A{X)yT{ zu$Y$nkd!k}l7!z%Lk0ZyuXtES-w+rCJLo?UmdXREk^aMsYs{ZE$gO$e1js5^rf^SI z+P5;0{||_xK^IM^be-ip(br-0t`r76qz>1Bfjnm(? z_1pFR4P0gqsIn6s>eaxa%}s{H_ofQm-TT6c_5TPd0|gG11^|YmOblMaz{~y{>#Ei_ zbqw>`dvV`PiTJH7KcmM0qi*1~%tIn0Z)9($2XrA~mX@Z!Se*F*Jq8$qCk?FMlZ`g4 zgpNf;1Kml)&CT8)J2X%KOSvHb3%Lwm6_l=ht<$pZ%VUwz=9LXWy zsFV4hZRRjJp6B<#Z)(5*?j+w46PfNkABH;bN+fLieq_n~kp}T4q9;a^5 ziOrN#ziC5BZ%hp`gqLY-V@#Lt1$YpqS20#;2^3Fz+_(*LRIAkCA=AATfRl9Zotho^ zqG>K&laD#N={BTU<2ZSnzL8}%I*-vWOC6e_9N>&DDu4SFAJyXP5&8QAkNtvm&aq4i zxyGVw?sa3iy47m_I6jW(mv0XVIm_F`gJk1o-VEhwv4S!VjqsHZU~L(tBe*^kiva;L zFZO|l)Aidd@@Mt_;rJA^Z4CAQm~DFVToRlSxpO&}^{b@|`kQ>M(eV`S(~1#%IEQK) zxk!9cjew{qgH8kZTNC{I=8!dJt0v}2RVQ-!;( ziQ~2435<`~*3wD@jm!a`?1pOX9AT4HX}-qzcJVJ297RwSjlVP(r)-t1UmXOq4>mb3FO*l`%J=`h+evbh;4i#BDnhUDDvR zj>4>9MgWO;W1;Aku%^=Zkz}zXp;^C4k7#5=X`5zN34J9A1$4$FLU_c8sFro*1&_x5vluEA8X|QxQchZOpap{x!b*hMiUPr?I&0XlS?r!eRo8Uv8ot z|qX?p&mUMI|7^@#+~J?R^ete(1$NUVpRi~kvttmps( z6%bfcZMkq#)IZsl*#rf^1JLgSPQHhL6X?V}Nx32^VBWv;WGR?(fC>-Of+RGyAT>6S zGR9x1`-UHeo$asq0VwIy-<}1>ug*f;LKj%yG6TNHzfR?E4n0h!|DIQehus+Gnt}J_ z!Gc(Rh$kW43%D2Rl%0MU=Yn``Vm4@Vc@xcJF)M9IN0}YsFhNmpLk0&t#V)+}*dR&T z(|*DnZs^a610hAdv}7trs5VxD4UMBZU-XB-HK-5j#UjzE`ufZ{*6S6as(ki6lPw)1 zX?yc5&wfpr26GijD}O6E)5_}kwv=Lr0R2{!)glAJb8=JDsg1T#g4QDIE5iDc(cO0b zRIO{yy~!tz!|yojwvccXVYj4DUTMJaVD}4^HK7EFFW<$;Pqh-MrB)7EGrV&#E$-wtSK?*psmrp`hYLwZ~fE|1bD)Czdhxj+qyqI z*cbX%`oI>?pF8$`e^3=Em=<~zIcx~z(*=LbDELTB46&af`xaG{U%iJ#vn|^0MS^&G z@n#$JQF=#WmofY*1$06LBSIY#cAXi3Qxv+NGCV9?5OxDk_->T}{n>Z5r!pD!HH@Hs!jq zWYcFI|G2>Lq>y>gt>2v7>P0f)Br$pa((%qMVLCQ8^-Eiw+)tP8ggl&p8}>^ke3&Gq zd4aM$DrZ=`X~H#@(a~Uj3fC_iM_%&7`LyT8(T~ix7x&>{%#I3{7Tx`7WlMv zjsB+0_Th~8uEuZK3YQ`f6^&X~*Kx)y6QipGi_3Uo#PR@2*_K_>is7obf~j-`NQMe< zSqDql#^kbGJ~uFEZh966GBheVLYTxeXJ`sXjixKyplYu@F!XvmMWSH#WRq-7 zMW5UVHM}a>5nk@)7k@O>M>0v8s8Y`LgM&`$R@nwUPfssbplhdV-}a_GBW5Xf8^RMZ zazx1#3>@o|sac5eW8*^wD0aTJY@*i8FYK8a{wHHvP%Oq-wHgFd)V4v$6-XjQZAW?oag&_ zgb$j4$pQSHo7h*Jb(^D<+OIk&eNY!q7SPVsznQJ6V}`1=X_P-1@+{uWKpF|48Z_J4 z6aW{Oi8|zK@)&vrBC-upLu}`muaGY1@R-WfHYaJw{DQ7%9c0>f2r@p4Ye?M_D*doh z`YY)w)11T*a3%`zOk1Gy9$03je<7ET4@HPK|2kfCOZyar{y zpoF%Dc>WrQIe&jnXFX=kv%pjE`|UaXoZ$Xo>4eSn?;$CF7=U~`FM}or#5giXvfa)O z%?-@R4V;?-PiYaPW{T#g&Jv8T>g|AM(jjBjCzO?XO^rv#fD<&$8-TQehBZBx+|h-l zZ}IiE=+dyLaysR9e=A22L|%E!N^0ff{E7y{ENt6pFCl=vp1-;gTjpuzV`t@~l6)&mI)MMZPbCn5d)w>wgRddvNwDTLn*Vsj6xXSzeSp|IUwl%R_%PSDr zIaA6BMst(?Yq09>PSO6SW2!lLRrSnZLF!H7^|Y2v7N5l4A!EJa@F`bFM_2Q=b>nP2 zaNts>SNbCD)38PQLTq;gi%!f4@U*?gcSwst{S5<_lz){`+}GtcDeE&tX%7BriJ_EL5@@kX zQAU=(>vPcjHPZd~sGt4IhGh*r)7nQ%iC z7@<#U;$K*aw{BE;!$Q7fg`7rTw}*s;WG_rP%+3%mFl;E={xE5~B+sIc9h{B9Qz0cB zQ8@4jI7TBk{9FX<_(s83G9@*fVf9kg*EFSAl=5|xaC#ysdcCwjs|%@!uQ4if8;K=B zCz44{_r+Cb{WE^%tvpk|-7UnU_l67%J~^e@Nr*lO?I^)tbuz5B<7%?9I<`dzmR=KF zKRTj0Ly~vqH$e<)6Xm{x8$AX>=Z#Iix_=tQ^gAfsK;Og*Tu}M73HfEx^L-rdkIIi< z_(Rg;zbyCp2;PVmxiYP>FL(!)lI|ht3H4J6how_F1MIyynx?z~{Ytr}PBKVtQTEo+ zFvYNJ`Pnr+2-3DN2k`>UsZzI6y>MZ2LBmOw^cHc?YCvif5cEul2m@#bY<9|J`>-G6L z_HqxQgQFXgF7eSC9G;!m!?EG)Fm-GIEy~;9T9luQOg~tZKXXM{OJLdJd)*~0YSD5` z7ON|@yy`^Pp4cdcv6)S;B9TawhB20g#220zAn5mgb`pj9(^w@`AL>_X{YPpnbeh1q z>fuibVgovJiRauo!%kORZp*Kln>D~WS|qVeA!6j6Wp+UkDC}|k<)n0<6p9wTM zKZ5-Fnn;jz=3>_@;F#GvX`BF2)!f^JT{2Lbu(D3NnkLif-;Qd0R@!)J+E3*XsvibQ^{8GlX4hCTc65gS_Y`5L(nK96##tKo{Oa7F* z0_i1@BVUIln)(Q0ipuP+J&!$ne~4BM&)u9e{gVgrYukRj!9rIsDLh4G2KT8M{i4m~B698cWpIYCZo^9ET^e+-R@Nk$Qu^ec{_2cHM}j=piMLZ#i5%hpyY zjYsP9S0E`PNLKt<7N`6HO7+sY$^DII=7aZ36;?ji1o+6}EiBpX=6t9s;lMHp@e%@$tNgEeP9rZP+ zYW?o*v=IEGhw?(nlaep1z!w+&+ZXq9RnXYN!O~QpUP{|sM^76FrK4@|W1X`yN}3)V z=*5@E^AHtJZ{=RW6SZcSmgI}&L!pg}sg`OHRquB)G>+R@JpSt0(X35YdIa8KiJF5k zQ7vY6Pf z8*lkpp5hByWzClw_VHKwR@a5ZcMcbJ8|Rg_1kahL;^ZtD!q%4woSp=$oU$_@d}S18x+ED1unRft!3rG+p1`LpdN0 zSSaL~Qo9Zms*#{?OfQwM!xY}3-ANeRYkgbm>=5Qg+#ucg8`h665r%D?ka7gK*WBWf zt`oJA9N%8LedZ&keb1N4Pt&2*iBDcH$h2Qp zKfFf+P2UhpuTV+E#!G1iB*TMlyPW;S%(E3I*Ao*6o9~H)wZ5R2%XxIMh_9%>NmQpp#TwW&fp|eC zX_(0XLxPRvZA-~cvs-J5)}wD5V}(&3gIU2xs9SIEV;VCw2CH`DMy2AS&IUVT=2@U8 z+x?`2G{UlDyDz=Vtd|xoIhELI-%fj$LD>gKGNB8%I{*c1_9MbuiI)suSJ-GFwjsq! zeJHIC2m>8af@x7KR2t4tgqp$@+*rgz&IOjiLBPlG=K2Ce4QWE5v z2@5+?Ll6|E3Kg)h>$;qu=qXR&LfXEpWQ3fO^u}_dnIz#soWv=R>DW*=hla5EhS!Fr zy+X*_7ZQr&=89Wf)F9VnvRf#H%yh1;gaUV_DCko>?J@APv7=(%i!>RdPzO+iZb}}b z<-fZ{tAAOiP=Zh8`p9s8Q5Wwz%cj4hLT_yPupmV{fXzXcPIBT6#Wko}2T9g6UX{Ca z>AM-*#<^of-cOPnGNA*ArkVulB&QP+seRA@P+b?`!#yQT>ZGL?O390FkK)yWJH%F(BHq_ zg7H$dnR*S~k-YgUc5KbP0UTEKDN*^5B74_qrW4Q1HH0`gx5R#f7|xkb?w`iJn-I8* zow9IibZ22{BwV@n&D)E`6)`O#4f3V6@kXAuWmp!Cu14ak5#sh0C}nh=aO{x6IZ~_g z!x0!=bg2#^4=GJmI5?{@uWwPrcb@*o#ov|!=A zzgM?IwpoHyMaDs6up`Vu=&4eBj@2~@LWE1vCwoSzc6qRu6S6G(=zwX^SF0$ty*%W8HxG zr2a^g@YP}&%{o|_MdGG_UiFF_*%mZW84^)(BwoAdku@LNOyvQa>&KUUIdBI~1H*hm zO1vRnm+GI+8C^kNQJJfIdJk*t1#yZDyyP{IYqfS9S0@7}?Xy5DT)%j;nuC3kaC@$(2PQh3WMCE5FRbkq(sV~!AUh8Y*VCcRpE4L{1v3~Q@c(2hmSf>QGdNq(z%m#jkJ)fnG+vz~qrRH1an% zL{)wxGEl%HD$F`5+1006Os+}5l;lXhUBjd3jCUUk$W7;QVnv{qNUSVDN1<3vmz{ukA7HIa^64EGNJX<^k~K_{Exf_yD##C>|s5Q|_rIjpkhE!UW)(vSu>h85RUQ;3z5Ew8dwAzxYn zZ^G;d_AztamL&%Zs{C~m_K;NbMM_E98^D&bBc;!C>lKI11D3*8ba(3!ktd+jvMKmc zhW_ibL{1iBDd)YGYtEpU){Pyk)2mQl>C<94m@dH=K6_v*9qrCbenmX6#IOiHuIAW$ zN{o8(Ean>C;;xq;*0=GAmL;t67!t|$C?04%H4VAz(t?j8_tM4rlHavhUHC4##ABZ9 zbHNc*y?`}T7tV{c?&vOg0=N$mkh~l1mR%hl-cE>Z9^^;j1Yd10+I&0+kB|g)uHl*x zYl4c9PuTV#oR7s;a$GMoF1ma?XpUTnM*A2)LsCM0JQqBIX1q-8=%8l2y~IrU_~D$_ z$C?WF%*rCxyIkJehL4V#DCP?uE@WB((E@9(=usL9>?sd-i02h(O2FA6;||=6mCm8h$A{0qLUPI`hcx5;2eZRx6b{b$G0ZBJ@Et=8DQ^~B}rhe=U zBNKzEkv}6-3CC8>dmBauW~(m@B}^rZSPUTgKzkrYh6kd_4F$8r~W$<9u_ z4__w~0Crp!_wrrIRXmZu4xxp-6+>J`IH{z}5SCNt7KuuwQ%ZrFL;m-#Mv1c58tsNWetZZ@V{NQcXKBKG^f{v zi?Y%9k0BkG%|GI4k1UoXllEDy97}p9d84+UYP}IaJZovfgC$bgto1TeOp0BNJUf5} zaHqfFdSGvuzwgH_ZjxN<+s@`=>%5Hi=8Y;D8ysK~yG@Amd4WO)>}nG%z%Len&fc!f z&~WQfyEEAZ7OawT=I2AB6w;#|Mx=%v7qTT0bYUA#_+%Oz5p%4)i@g27mGZU^c4iKI zzx{%t4EIa)EV@cGeQP?Uk3M>DTprVq?WAZSx2v3l9oKsQObez1@52op-foH9H|@lJ z8^99*@9(b``cDq;uNrI7OO==7vdAg(0{yD9{IdKCFfg%`MS;h-lLr`iEfmByWI_fz;*=mc z6$KkPaZdT=v2Dc3h{?UyZf*oYaIbJCt;20!gA)c{m=pA(C>&{d@}RO4aqg%mUL#TO z#jcpVtcg^@)!qtAhcwzKBT}TG8Oca;3QxcT+H>&aB;WQA@wF?5nk&nfS3r7?EJ0}p zBE!J>J4soEZ!loBJfRp_aVW<=ij~*I0V}A~<9Ji}VhPJ@e-7;|Q`LHh5dl&oDpOp1 z-0g{GU4CgPO|ACLMponct^BR#OSu~Ylc#Iw`;V9o^Lyy2GzIN%II2uO_z{fDD6$U0 zJZp+hExUTcWvkGdOi`|@@@CqvBmLDvVC0dHoniQ>uskuEb)&pN)G%C7ouOVUw!Gw} z3#o9XR55ZIN<13sDSf1HTv`H4;3cgmC&#PCRX3njVqrF8Z^ zlt;L=)cq3;jXN_lO&ass4*R^FZxtBTs&17hUPwKSvHLWT*4q9#l8;*T6@#ub_8iU= zG}aD8cz1ALNovIBi|1J3hHm_fujYl zwK&r7qBAtexGjj2jgI9azrZ+IT;c;qIHZN@8}lOs`R9X|DmkkD;!Ya+TZ|ah!7lud zvBNZQr!;(pkue$E-&*31w=*_=h^G(yv=;9k4m{rsrqVs0e-wG zLns^la$u(+9>G?=vhLe!e^dO_Rq}<8@r+0V95A@dtNA{J!=&8{4jZj^hzy;KV|R@+6*K>8{n~V7>t9LL(ZRlU3-eE$inNDgMY~`i0Tk&{AgM5V!_7{pHOkTgzMi+Q1{+O0EqDNaxjj*{7{%y6(bs= zE;oj_gM_jqW|jD5re#_0bZ7&+#MeS4{t$OQ50Y&|p_gH(n!WQ5(3?Z6Da_D_=cj9z zkS(xPxbI;^9d#%ryhawI#stUTX2BQfZ$lCX?|f|950NzP4BJ*l3&+)i>1OOS<|-p% zP9TSv<0iAr0zOx zn$GH2nNuL-jR!Gs*nStdYd*cyd^&0w9Ok3rS9 zzZg9>a;vG`C=^~eK_Ouqwm;(497dDIL4k5NdDXLro?aT+ax6R0)foQP)%=X9{oU1w zS>EF*{e1}S+py#3zpI&B#7z=#mhSr$+W!nw8+zj1;D5%{{uvMI@A29iG^cLPKVpZNApKz*71%fZ0!qnluiV!m&@@On@o#Y( z5NX>R`_fWXE7Fku4_+InO*no8ElB!FrVX2@6z_WbU7BAGoDYA6Z=tPwf+}EXEb*3e z?a{ka{fiZ|?Kt3cC!0!u<1R-hQM#IZXJN2>1rW>0v;k>U=&`HA9R+Nh$!?~`=a9vj zcWY1QkUym0?9LTF!aam38mpm2vq-32_#EsuQU4sXhNtgT_cPx%Aoz2+(zq90wCnVO zB5oFyM8d5{q_~ws6B>i!cqxAP7hXP&Nb__Y*!8o>6|s}g)TmvsPbWD$RrDE$tUo`L z32sy0h2J-m9D(Zm>x27OUHGx=DGr=@`gf)Nhc381AjPA9i`s`5ym7y)_kXDinBT`; z!5C#B#LB@{y!miwGAfh3bV-y!!5?%%My4X*KkLFT0>OKXxchO@Z^FbVnF7nW=)8#_ zMCfx`#>Re{h2{va(>3#p2`sad9%ufzR2R{fjIQ6Bh-v`I_Y!N5i2T|2~4J0>2*$0ttLl@DnX7e zB+58ZflsgB$$HKD>LynK6f%_)o5sZ#M5FrvrzQ-7i}m`05z#L#s&C1;w4yVU%&fK1 zTt4XF%F6HrG-+wdgR))e2~gDXH)Kn)D-xmCL^u+|PE0l_g+5YC7+@+Dt=Tl4myff3 z5_rZwB*fFw_td0z+`Pu-T{oE_4=UkWl=?O3rj(ppco5TZUV}*<={9`D?O7SpL+u zcgjFOlT?K~-R>{E;(AH_N+BA{-T~J0>s_>@&XSwqMGO&;1(*xLILToMDxn*Gjj%m! z$KoaFg>(}skktq`ZsI*?a)+`3y$LVRC|_Dk z(SIQ693RhcV-(J*6q%2y*{9YQ8Zay^V%?F&Mc*-%*U1nB%PE3V4})9Y@15nqznDXC z4~ytUnLJ*e6L$Bs_%Ew^L~`dX;jM|b_N zO?n$oxq3VN4%wXxI`9 zm>~f_YXZG)@pLn4;bqc_K$z)<+Cu|B>+s}Z)k?)F(Fd;rOZBrfU|rXP;z(_OM6{*S z(~D?jro7u7e=r|G_Z2ehnZRovFvEaVgd|;K`a?M!iWzeW4O*QiR>r)ABJXHL9<(WuT?Ey``_Ev!|sH6m^rb7wKWN*H906bVP^= zlGtQ0tp!A(4+Kn#Z{XYR@K1K01e_flNg)AAjM~dj1{CJ^7$X1boaKQ?QNVhW zv%cQ9V$(N&HYopX^mtrp+@z@M$~_%E-Ckb3#suX(Aw&Tkm4&)=B4c>=+b9{xTS9)T zbm~?=f)&vqc2*-3)lwc zDNYnHV}UVPE%4#~Uv*d1UfV|R7a{qtbywkhtRv%3;-3GR?v@jfZvJQ81#SWUvmE#5 zWBj2g{JVF#|I2szLsj_W4^Pydn1$niQx;BnZ6Xx_l%evsCg)#Y=$}$P*SSwXesORA z2%rB-r5>!zpGJo%kl{bA8~_t8RIHw{4k_>cFHD8cI!-l&8=_v;}1Sn2q5t$(e9v=pZQ z)0uSj+;54DJW_uV{VvV|;YF^WFzye?Cxyxa;5pHVrJF*+#{P_yOdxnb|5C_@IpW0^ zh1Y`yF&0WF_dTcN8&ek>llr!X96!c=VSh|4UY;SreE&3|VW*f9N;>j1vT9JiC++gAWAmZR)_KGuCt~US{kJe`j!ffwlux z#ix%wjAh(KzmBqUyW#efDsroN29BsmjLE%u7WjDZ?L@#>c7|3z!T9c-T-;@ER7BZ3 zlyeg+%_zt^LVTMh?k1l5!V;BpCPbML5#69vm7y?yA}Hq5F52^1Hd z!x8xyQ`$O~EoIXVBR1vCAK;&lbQ{%wH`J{J}BP(UeZHis_m=#BmI|8E^zY?v;*CAkU<0rbL%Erfer}GDT5EC z1Vsk~=|qSu!NlAUBPPNYzT5~B=gi|{#zM#TtOGWeV0(0c+ka7ed?|#H24G`_s`JL|61_-)1LfbHGf;BN&aulrp}KA8+&5A z|B>A^7GHQ12o$pl`1!S*#K3R=(X5eoGzPAr$XXg(eBapfdjNAs7e166^N)p6HNcEV zjg^uT7K?^_PaMf7><#*E&P1I?G=u#1i9eH~&NlRsT;Mb^e->h;-n03wtE;Bs!(m8I z-3r0izPF{6LMFa=S#y||Arh83a|q>$>S~XO2`la}riXP|?R>9-s^*eWZ#b}#y^q!N z$z54gbJJyJ`a9m|L^oFWF{r}j=;gT)3T3i?raG+bKbY_>O8NLz)th>wOkER(I&8A6u{HG(Y9kq!qxN2R@~-ZCo7?fV**ZlpxIOS&8B zZbU#zZc?PXySqE2ySt^kL%JoEl9GOJ@RYxEzm{))Ok@1w3Ho#3{P(c`uN9n+_Y>%U6!awiW9a)|W|o(k*5SQ@XS-Lq_%%lU zF^~Bl|0@3@>WvcB(FqAFSdsWbX%iJgCH!1iPEH+TK{hHq1&f>%SM^G{0Y&|O8@E0A zGcPf(=la9V=gC)Eo9oAWxUCGfJSy-`#4k7GyQc^u-zW0==k-*6m3hC~2AIj)p1&0% zNldq(jF~imhgv=Tu!f!P=YTcRvzFyFvU2iG@q5{rahuPGmLHi*UDdb9LT0te)alwg zQK-AM7sxs^RxC$l!=oh~V*8hz#vg5njpsttcxDTU2R zpzDq9#ERx}f<8xTIzjElMF!dO@RV_?Yk;5wp+ozqyCwOjYxsw|`E}c*{?`uXk6sCg zH`afI%)i!vLFG1g?kB_VcPaiFFE9S-Fyf~AW+IkmCenI8*Z)Ey#bw)pa2+64bsl`?mnC}`241I{gedeTV=}v3Iw)o`JD@9l zQd4G3Kvt#@W5@VK>~-JVuFN!rnxdY|%I+o1RB10yj16Nr62>LuNJ)X>Hw0@qYT*Uh z-jAO?r7Ok?@>6*1Hx(OyBruQXFb#4l>`|RIHM4XBeCYaYJ52|H;xv~*vbHVR#wS6L z3NyI_dvT>`nPpVipGwRlt3^_IOROoFfV$mWMkR4sOA8Y$8gMP*LFm;1!2uzn77oYj zKf=cgHiS5Mh24#=S{92A=FX$w;aBsuLb_y{qOrG9Z-XPIkMwm0vDzC@o)%O6RRs-7 zF789z%^|6*I7EZX$})N__SYp6n?rkhcOC*HMoY|AKB2Fe22-BL5Y?_qr+PSeREI7g zP{R(^ie5yp0E|8T`U``W?Vr+l+2Ij>7^g<1Ze&f3a27Z`g3x}#0RN4{Hyx6-RTcR< zs3%-phaDcdIz;Q_?L0=e+x*(obd!t_lM3mU7gBChT*qCVYVmKDqNumZ+)1Te9?-0L zt~Or)MDx+3ZJB@U2a4(eyJbK(&5YAiy*8` zYX2mFVEG?0{zq;5SA7oounTZsAcB)0#rQv#IHYYJ24;VDjemya{Qo1D@`tYBpLo19#m`&19|R8&uBs{?*0ASx%dD6cK$Wi{7Jv08W_q0 z`$pX#Ic}2)h;B()mEO7gs;H!t*S}+KQ_-p_Qw>9)PHuc|OZpAE#Um^|Ccx+EiXi5B zD>Sk&c5TA!g==Nya#IV>$0swwV?KfuHYy*c1jy7_2(JnTj1VSJD>kSw>8*M}GabR6 ziwgjxQZ;StwV-E#gWJTBX#=PEwK8>vg`3DxL*ZW(H1hYQKTB(6zFCqDG4S$tiZPrr z0L&oyI-S8m)q;ct%PBPWBGnjNUUz;z5Q@4wH|j`T6oiC z?I~nJMt=hE3r}8f5bucd%nMn?rD<{U_DvLt?0L~~z zhyYd6OlsnS_$FzC7upZccL8@Z;wn}`T298e{gbvypGXD6YnS%5bvZIM?`JRrDqWnc zOAoD8)&>hO9^eNVc=Sd3=Y-nK7|5YnCe(F;F8@D5Bqx zg!d6b#K}4BSo^@7cJ)hT;|4razBO+?>eh0-S-CMc>Qs<+G_drc^#2g194LDYRf4xH zVQvp*8s!>s%YkZA?i$`h*vj!Km@Vd^`_|)^;huV0ktr;Cuu)3kI_Ctch96qxI8^ z<}`#4fv#RbK`X&5OH8LM=F1AJmxCypT70Rk{m@*T9D1Qda-6PKhuI^OAO974F7s zEf@72?m}04Yma9l3d$~wGaSe3wgV38T8lpqa^hup222kg<$umtJ~G6}@Oi_FV?%(* z3WL_zM3)yxGFL2%TD-_A06FK9w&kx#9$qqj3muIt=4k4MPf)|*Aq_7K)=;9G8pbr! zlQO$G*jqYdcA78jX|L!TU6x*VTISLub{J#KCUhE{Clf zcm^o43ZDUC{Vual*TtR5!Vkb{S#_mD!}<^-hXD&!`mEOS2oYg9ETudk77%4pvR&||7qjJk7rq!_VGxo?59Zf1hR!l<_%JUcmmIAfmh1LB^vD@Ts;<>%gT#4XTx*HzRK$d948ax5mvM(C?X*qqa}Vjq z5>LkfCGe)oLOd37{o{+PY-wg{@B@SQ#JgW+>_1u$e|vFn4l}NstRE7Q=8 z-8x{w$lm%#CwivAwxb<*J9Qqto&Q))`y;&mOExbBwAe3lw7-?p{wx#zg&6zcy6NNx z_2U1I7<-LPHg_M9JWh-y1^$b_W%56r@fQcX_;n5eJlG$3C((Zlu>LiP@U%lFz83(C z1pfRwiTKxq8b~IwH`M#>Od$~?GVOf8puprp2N_uiuT?0j-N)-lJ4y4907e7_Te_*Z z?2~q-$z0&24Bm04pK5Wr;Us=JF3AQ($q|P0 zzSW;X2z-69HGH_Ch1d_8vbUt?rlZ}|NlfrKJvXiD0^hF7yi!wgLhQZL3i)(EfO&Ff zuHVC02BnG<`N}(zI(Usy7@^@!J~Vwt#H%o1#kLXk*#Wan2Fo%b`tB<~Zv zGg@@39Vr{-l5Xbtt#X&%Ok>9eLj~gs@9Au9YlX>z@K`J2OT1S)n-(b(_@Q)G zg>C+_9C*3-AN7gZSAJkq{oxJ&tKQzfdP5mIj2?U7fAVp$y~myVBjX&8IQKtiI6%Dr&zw7xvx@t_ zJNL(r^T;Fo$Z`IBdH)ZOGlvD5_V35}*S89&#c6G*^9!^+TKt{7m&YCa{5zZT|FZa- z5?L4X@5SGLtW1hOOx_DQm;y`;b^g~={$SeH|F35NGFdhh65`^M5`Lqz$gO{fj!9H+ z|F@o_R_l{!pyaIxBv~0WG0^h?)#Wff{!o{Lf2d2H>eMmccU2!RO#b62<{u9j3BQhx zo|TofneOjR!zm**#n)(1hj#$?`ZA9p^N+;ZpsHEIhDZ$U{=^-^h`~~-6VSvN^xK2( zfH$#viHns*H!$vZ4(>PIXk`V{chv^s>Ifns)42KyGMfR3%(MP3xc(Q3~FhMCrN+vvggn_w@Bm@7h?< zlB>$Nnu^hRn3p#%0+qUmbXHq+DR4;U&ddD^Jv?+?rNf{{Y9+ggw+B7^T>Y zFBGG(Dw$niFmTZ6sqQIXD&&?-qS?n@Y+$5kk7x0V)*%fuEjlR;!-JK^dpg@TGXuVO z`KhgFD>AdrChC;v#w`71&$fO?@|2%l@+Q?ng+AvMij@-E$QyI(_gOS3(6SIFaC_u6 zE?GRyOmN427gG2s`)8s4KGz_W_Hrv;KFzRUYYcEc&H56ros@LAq7r3?PrW&bG!w7t z1VCVU%$ZW<%$c}@bJ4ir>DJRc<5qP}D8FL}2XCPTVgy=<@dJZ1ejjZSn00>vn9OK~ zBDwz2V0nlk3LTtR6guBAqhMV{IM(X~I5Ittngk#+Bab`xFkQ*_fDs&aMV}e_JGGn!@d*h`PsPLkT#K(zM(C1OMKdSQ?t&O zTrodO(w4Gh_GDF6oW8_`sCCqXnX?_r=u|_vls(*eo~W13zH|%U7d(gO99UAssVSWU zN~!JF^A(+K^mnc)*@oY9+3p%^lTD!ZGoY*e8N&$)Pf zXE(@;Yi*?IvgJGJMv!Lsgnw-nqne z+E0@#qkCKS_E6U&P3_P+eZ_qRvo=liut;>2e0$pH7&HTggyyEKu#pdRPBYI1t!Igf3 zUjKQ>#%@1d^!RoT91ed)kSX1Jd`uzT^epH;Eblf2mEQU8B={YCJ~;pGQCP7a_Pze&*+cPxfw#l( z7W~N*SGdPgHG)TDtRK%qb~JF=mK;*gxm=oD8jW3GMuxgXvm$bne1rnOd4H>W2m7V9 zSSS)S2dOy!OW)-VCDtvdchfAQ$-mPJH{MQi@)NMatlEMfFn^92oE@ZiQcxB4T;CS6 z3O$Qf8_8qX^qm)mmze5mZ%Zrn#7>y7+rCc%fp+*Dty+l%wJk!=43qFuMb?0ZpemwQ zy%rR9J5RXdDV>zD`0=&MTsD~CJi{5yeyoYd3*ylC0Dof;uCMKgcG&^KQXa7r#x@x> zZ`R25Y;3W%Fupa}DzF;srIpc0wc#>5GCQcRv9gvNc*oterj@SNeS5>j_bl@j|8@)^ zbLsAA!iuQRX1^L48#QDzh)0{4y90}7q_V(bprdb=-5C*fFMhI4}V`REHI(v@DIB;$Tj5A_7Nj@0yW6e2N10g~~xubC*+4`IPChy!^>*J>9 zQv2-eNhwQd1@bWVpBaO;qeruf^kZx#lHnMD zDc8&`QZ_GEclA3h#l@bDBNlMSJB*rREpcrqh|iU@8idzdf-Hp8Q6)W3YMXPbRknF; zcl~OXS=lEWFlVai;%PHc^0FpzR!5@b`BA|vOixVBjQrbEcbfqe+l^sZa##q+%DY?N zz;@UcjXSI!E%#7$9eRgsY%jBX-!V?a?@HjOeJfLtd+$V#CWAiG1nRa3_V|p?KHv5< z?c{k!QETr*N`R@=?EMyhbz1g20+Oqj_cGEd8$2;cERnV-jBSY4bbzxCcq4yV5_qHV zBnJ76iRU8W40szE46AUNp=UM>t6&*?+dj%yytaMRuO1&(!Sz-N5m$)0Yg>)=NY?Wh z^eW9_JobEg=(jEg{l0U1f1M3E+Z+x;=`(jat5Mc7Jmc1Tk= z6QXrddJF3hL7XX$Y;{=q=>}7-j&U)Don73VK`~Z)`9)V8Ur_BB8luQ1P&$#*5j6I0 z>KJY&mZUOjniZ?M%uC}d1N}ZPEYm+Fv`OFub9S@g`7JC-b(^>)FS6E7pw2oEk0zVPESo z_#>$#2`p8Gy%9z6$1`u!OW;%KtA!RSXy`{l@|{8};zI+ohtcQCLlg$+4?c^hN7#6;9fDc}d59{#j= zZZbF9#C)FrWMm211C8bFH{@4Tka0Sovn#|~1;X>{dD4qa4j(aY8D+-Bq!>2Uf$O>v99FqRx1Kz=Cid){^~vC7p6lu5l#7qpCQ zVHfx7RpvUyR4@k-z<~1C+C+hMr-`kp{L=R3J2TrB- z{X!B{x2)J!$V6~%X`Z8=X|ZYynmk8M=rC?e;S2kUf;UUbU9(ye)CXa|=!JWr-u{-X zUPJEM!1oI`8t9jgPoIK1JUvQiJtuC$Kj{1+l*h$|jjIVPIYK}^<{kb~^zDzVO~A~| zSPx+Oi`+W<5x;kRojlpu^m}IgUspl=Ye7fI;w_UK@P<9U2jU+&GWR8Ihu_E%LN+FU z?1T72&RiOM!jF}TmoL0qdZ8}dACAgLAl)-Oq>ur3ebQPavV8mPj)eIt)OYzc6ZlS_ zG_a1g^ACgBpP^>Yu*#^a$n{?2l%zsk%uCj2U+M;o z3&SX@zwC#ZKJYX;{)EoLb@X_$ zqRU8AMQ8FL+FSY&(rWg4ipn&SkG<7I9Mx$gOuS(a9BSBfnmp!G5+=51v?Kpk*7!lC z#`{5~1`h6|^*)(wyC26vmm>`avM+vGe)EK6$cJRen{w#>qCi1s>}MwD0gt)?{Q32> z`g7^#H)8<#(fWo4HhWKQr1`Az7o_k zdj9$95V;bI5=~FwQX!SZppTw#qqWx~MZ%2IV^#R;TwR5Q$)fP`Ec1fSbQk#I0P0Q7 zq&rxJ2kOj=Qip;Yh=&~tw-O_{1O!v%9CSi&t7a2O;1A5(HfRB2Z+Qtne+li9z!0#2 zhk!?gZ(eUpFdC;#)Ts_M0h12#!ef2BZjG50gfd140=#O_LOXAAp#-D7Vc8yF& zNl#9hownJa)KvmUnD?9txoV2P9pV%{tq`lb4fR5&4&6HET>#8SIS&tDRlg1w}1CB$fgSso{ zX%|AYg)34}ny>k~I%}@I8&|~Cr8S8*|0?f}8y#>#B7z~x(GJ`rjib%c0F%(qmy>5* zfXs9O@~W>@3c$JWdUpBMLJz!t=4HKqI`}adFR}hDm_A4lawQr=J$PksOnjI|Mn`H%=6nGQan;yebq%y$@=Ni^#m%V$`` zSOY^dojSsCfU-r`#q+zl( zVQ`;O2YMF6*S#yIW2P}OdOK~TC({u}6GCLMEBeN$&b+El*(5?-c#VNru}{+5EE5rH(N(gfd@PlbOwxN0lITDP8Pj0)Ie9#r& zW7T7DjZKx}zNgGus8Mx;qu4#AGg}&Ln*G|dHP7Y#${I(-yQAJ7&6PSb;VvyhZ}9fD zJZQ^Sa8x+%jQ1xxBS*F^In?*W31U2C@Q!iV+`|sY`ixVQ*siZoKHW;wW1gA8oFxR# z2t$OB6_~@sXd*U_NeHp;p5CoW=k-vcsTO#TUPMq=2j3VbW)iU`cULEq3eYi;;gphw z-1_2RM-(ft<}40zfTAOBVJ-yahQsChc!3EtB8hFt<`f1j`Z$n((@9bj9y$r#X+kMY zZOXV+K;kw|e-mmaMf!@yk=9@yva&2m=Uwr7yzFtALAY&saM@Gm2cD8mG`&0y(B4;% zdi|4-y08zg=AF9pnJDH#GiyY=aQ4%i7OR7ui{a+w=>y)E%b*l#1lj?7 zJWO#G z1<2+zUmC5WN(!*UdcKCRC_)yJ03nS?cs1=ZZ422YQbYb~9}EH@MB)$6tw_K~z)+UY zr_HCo5&?>d9LuAG)MbeVs$}Q`XT@I5?deR`I0}X%wfjqv2?H*Ks`#-I{yG`ybBuAPiT_H=N4v8+Bb(d zN&zVkn=z3;XJ46qFL>!LcC`NU=MeFRVcHvvv)A}B|r9rh6K7E`S$Qc zofQmDT);KD*x@;DdRIO%OkaWJ>oU=q7px-wnS4~W8Uc)pd>pod7yQ}QQeyb|HB_D@ z`rqPalXpq9=_bV|n_>qELZ81;Q6cCIB5S?^$0mpTe#-0Qr#leWkekRY(4vwkbQGQP zE_05YdXZlQF?htUPqeXIfoY-UdKLMr#Ykm~UbZ56*08smKI^l6KU8st*=LB2l)*;A z%k>JJ0Ff2p#azB!Or%eh_91NE>*9RtSYFn@Xn0tOk^2=UfQR z+EEs+o8NiGh`ZTHx(pJRwR^Qv*R}nhZ1#T)Zw76T^obKxF@=^~@Ixk#`_8-p5vsd# zVkPI~b1j!a57E(xz1|~5vxGkxTmDVXNky$|PH}18FxB#E;b1XMNh@|WdjS8=v*f6S zH=diZ$wN9cL2d=Cru^Fjbpr6E2DcsPp(G#0$IlgxUwJ8Ed-MCz=>PFnDX*4+-U{t@ z7#2-sF`R>J{+dC^#}tu;mP`O0+8WcM3kSr5YBXS%^P1 zUOe6w@rmGTQ&L3P=uSfH&OS<(RE;onG*piWMjHim5Uh5cH1soPF(M|G?A5uPsUhXc zVrZQ>G;m~CL3D8ekKk~X#n(t8B(N|+gH}1`BEEw5DSg9PY=KVp1nVyeS+jM%)``4r z6Er@={8CdK#^tpdpC(ht=U+~>P z0#x1Xk07`N)(T0VMYYpB5q;A+Q&0w@42qK(Z;;$Ri#^;`d4o9_x*SPcZthVRw*X_` zXL$%`Fb;ks!bRU^xeiK&-<-;^s`0@fAUCkSqM_b3;Ik|rc%jNM$ctFwCjl@@b7rKc z4H`&IEQWiqU(~iLe>u)|7>iWWN3!*oS}b zk$g)K*x`X5N&Qj8{mcmb7sUN2_;e`_m;!6`JW+8`%+Y8lX-#l1W?m4jRa>HYfC@x- zBEgnz4@=YLQ}rO8v1o(6orEyv)Amp~miI4@;tU8f?C|wD(AgXu`AsKPC8>{ zP0HAec?hl~lBM(nt6q?~?4B?5+eD>I@~ov4h?6X%IYA!CQB71>9;4CTv? zp9#4pr}zBsQT?u}U-&Xh)8dM&psR6jK&@25fb!NW=}V2L;GeUZUZg(RLF2E}Ya$x+Si>4v{(Ew zJrHjl-FCUWDlOik*_qOwJA(SsnbE$i4!SKOch|E9K{}kZ_yl*U)nFvub$p= z3U&f9eU?kkMyTFFHsbN59U+gJZ++@h$LaDt%ubu1P{RUYHV^UG!}oJ#`d2WMHP`#S zLer)AzC2zNUrVG7+X@9;V2A}l+G25?4LUt!$uaGQhIv9164psIbpk=Z2E9tU6B|)5I z>!=XZK<0fUM7!+n9nan}FL+uGU%V7qWMs^`gw;MaXP{(~0$Bw{mJrH=283Ap1H^Wd zJ|wGsYQaA{`e+E#|GXQ39#@w0Ne3Q=ZoS5BO;m+pfk&3jrGuWm++`nn`Yah_*{$i{$#gb4_-ATgvuOmGBp&3SKJn>RVC&62(NyZh;Gl^|TKpF6q82D=K619DtS zE>4ceQ)6Y^t%C>_=vFyRkuGyVnt7X}vcuR$)pk{5%{g=S8$3UJMhC19nhUTxw;{B5 z9BYydynM5U{6+FOZsV>8RspCo%Z+XyClEo?isi(_ZGin&{t_OX7UDUv3WulOa{#cB zgVsh1Rrb0j@?)+nVU8zd7+lMV#df1-;XT4k9uQV)@_;ZhQy{`ZxB@KffC&3w)f_Ua zyg|WRGCFe$a_Q;Rv)U&OGhNnKN#}m}gc2_A`2E%F<%1x@N#9FoC?LWH9!1#C%=%v- z?1ux}Q(m+}eT{av$f_3=sqKND7pS^H{NlYFUwHtHNgkF-(l}pR`v7S@4P4Tq4KM8Q zA^Alb9p`#5qS-L}dgWcn`s~oYK6XW)bPld&uaxEf(lHnQx%1-C^4-lXxx0~lnwB@< zjA3~lBIHY>PtKS*i@eHlpEO{aX382~l0Ohofl&C;nR++WlNkQh-eScVbA1>7d(Txd z@u}Aa9;+V~-eb#KQNLcMDLG@YHpC8QWv z=jJ0yk)y)cyP=dtYwbwwNo!Eb)!sbOhy6?wWy!0$g*l^6l8_*nA{V}TU-Ls==I)Lz zCu}IrzVo*T)+U03=)n-NS~|mria1nOXoxZS_Tk1R{PrX5h_XVeD_O+2Lsa)yMcO+? zPhUkQ|HdJ6Zf~Kfwz8ReHZ5Aimcp9nq#qe-FhdK@BEMir@8{Y0Rz1@-6_YIQWTME3 z5%={0SXX~>2Mivf49H=L$g7~CIZdC1+P1{SQh1;tF!g>9AM<|(FRW8K6$GDqwo{OZ zxMvwcuu%e!DGB)Cqc#v^KiYnnsdh7E5A zW>g@bx1IAPoWCvU=y<=*agi!oV2DL}h%3UIO>?7|yAbYUr!fSnZ&XCe`%XhBrzcmW z0k$!)oE#j>i%rSq7+fh?ac_Kq$Kd_*c`eCBa^+`si_ogdKAO z?lUr12Yy0H7g3aIV>W;bD{;AEmyYl_)8|-SZ4zyE3Z7J}JUQT05MP*8H^@PyE6np( z&^v_tB!g&QexR(Q(K91%C>>u_Xw!HxHnhDa>n8~@udo_G3rDH~h*jW~SZ25^bwnpV zAxh0zhUW>?&Kz4iPg+J=p6%;+io)o;uRS!T4f=cP!rgZY_ND_20i zSeG^ECYp?0f7mVB;qb}IP^b0BgtV(-jLkjp!C8#W6!5`DhCwHoc;N4Ezz3n&p96-; zwP-u(pQF;(<1vg#_Kt`r`;iF`cK5c-xOs=6IzXt)49=1VxEdV3C=q(8u~^FGTOUht z_vY!+7LWb(5rj<-ck!#v7m#?)2`gGU>YMWW^G}OaS7G>FA-nzj9tZF zJj6-f1Uojcz!<3m<*^6szr{&PKNL59xS1FQ>HCq@WaXEz{;;r=u1WT3@nYQeo?7sl zV)S@&h)d`*eBy@XG`Eyb9mhJoj=qL5wxAP1()W`!MlCupahX-(e<(G3B2!)}K=@9> zg6^9y{rpAh6cz@f+fIj%bz;qu9nDo4t%+!@)H8koZFSeF?f#rXA}O&D*#V_eI^!{V z5<>M!=|vjk@!8$FjLo@*S=x6t0%gY4y6_;>o#{j}(7Mg*NL=hiyh)^mw_N5PNG6vS zpR0x0hldHLC~@8{A$YG!b>i1(jGDqkgqm||!nv9&38@=lM13GBl=i#pDnJ1vMD1Zj z!Ku%wm0m?Owrx(JEg5#)UBgLd=@A zN2RxUwH(#6#0?Zci#k_Hj;c@Qx~13QnJ!s_dai+LjuT(_xM~m*1)|KG-?A(fB5%u= zB&n(6@9Js{Z7QD?KUr>eozwRv78+mgRe0Up5^}fu5{O>&^DIAKmA6 z!FI6Vl;xT?0j)+#o^KtrvBteocsL9LPoYpXT3Q7Xo^B|h|MNZq>KIKUVE*?hp^m2zXid9gx#UXg8oxgpaEXf zjZDjf&P-gDysoY{kSoahMq)^merv__)BwBSl8Jq_aeKVmREg4!g4Bb$?6_~zZ|lb= z%J_OijvBB0DmIK%h(7lyOzfO_Q=QR>tIR3Ye6xejP=AW-^7f60;N{fiOxkK=|Gt#O znm=>)mlr*$fFd@S9pBxV_Jc;8?;VOwdmK$qC#cIsnw7?j_pjj+;c_NoF-a^~;SdJA zbvckeelL7B2dCb0haZTQeEorZLco+?n)Z?hNzn=R(=>tC7E|L#ye(fH1hk0DPl3D(<@n`5qxFl7q0+lT3C#M^=W%5a!aV(bFt(jAhS z=Ly!%W)XCUz4~myceqc{-fqhR+3vzP?fZlC!6eY0)K#HoS1a^3JOGj ztgRYVV~U|W*`k&HFx!^1)#l*FgC76j>I+eS!t(6BcYTriXi@X}=?W-)Td&KhzcyvZ z;Z9(w6>VpGma(_P-ynRS+l=kyf?qUT98H1muy?Ko3~|PqqP;3TZ=ej-l+gEylK70_ zSm8J}njA=qQL)#Pr9A&C3-P9ywn#Ati?B%-U5Kv1yyz+N34?Xl;(i|KlCrhr41DPt ziYD9pLq!2l^#O&zRh=fi@jF@h_O~)BHKtgB<#y}4eTA}>96_RD7s6N8`5f1l?>OYv z89vII6gsS|3C>pG6iml4o;FnYDZzgesZqyHQt7*^MU2g4MNJ4?7%@Qzm)E_#D2unP zAw)EWV4dgWcK<9qSV5nsV8s~Iu&MnF%z01CrobY!F7PETqAUx_YT%xx)mVkz{x-x8 zwplZza&Qg0x>jLBv1-M|8QxQ^{0u#sI~l5m9r4;!&-baHz|floEu9SxIAgf4xf-3F zYFHLkC=FS&2`YAM8xPoF@R@545&+PJoGLRowHPAvh?#~CBYlSX(_0cZu%B5%)>%7( zFZ-khG?Y2^8KwGpsW|qTq{K{hBy?X}W?|+ip1%|o37l)FEzh)xS&x_;ML2kdQ(TBM z0AGpA9mS3(S*%^6Ina~?z&fG!yTZazA|IV0TSV4^bVM>ChveKsJN>@ge9XDn%d}fGL(?n5>aF}{KFf&D zD2AqYu+<;5zSG@%buB|noE_jT8hrX#2*L56LWtkJ`ro1mdD#hI6cJ}?#6}tF(Sd-} zmOsx&z7nnr2UO-V(IrmT6JHOqiO$yjQnn~|R%*`8$BgpfM!x&t6V`LV&Z4I``}OAw z2gy!W`{%$o5#)0@jkYJ?xRag9(xk(5gL5&{b$)QFNr7Q8MhmhBe%K-m(P#X;e?<6w&!OmJeYB;?*?N%sOFO9B# z?*ph%it|<{R!@|6toi6YLVT@3rt@Z#>95-p`7Z9>l|!-l@`tZoKzv=nphW z3N`4k7B(K&yK$pJcJSR$yNGUF=CaRoxfti{5=bM*q$ahGe^QX~mh_{qLkO9Jtv_a( z1E$@(Wwi8j?~7a)kO>_-A4wrP`Y#^#tzcGoV&FXCC#?d#U_ooj0_{kZ1$Y?RGE-iH zB(HgxJ2M3Y@9ZS%xIi zyZKDc)sKv5Pi^(&^JHQLlz)Bpsl_AZDud(T4)lwn4)a{Aq%k4?SA-@?QdiJ>um^0PYAZ}kxcJu5R~piJOzOuo>Mh#>sH=~$lOizGQmFy=z}ly@YQ0%9d^ zO*KS@O)Jj0y{6^G(ePRY1BBB@wIch@^;(v7Hyyd&J~@$tTVY^k)26ehRBW&199HPt zvdo=mW(N5Ne`?3AVfwkB5$!Uo7ZKxA@lnsW&o77-%9&TGhN-iirMR$NeWEs*1p8@= zBDAqjFUV%Ocu%R-ZEr^CXPTV%)e|4eT40xpa=Ma?eKd#=OX|i zEPu@xa&9>n6#yfI>JNp203);yry14+FMY ztH?*3DAD3n_P85oV*Jq0w9!?%BiWp+Z%>~I3R`3ZMNr~Jj#Z}8_WUww>++0j6ySKa zSDz89kK)vdI6uq3uVS|tZR(O)8loJ)etzrNV@PqE65>&6fIaYH@9V;7D!$;S!qXj< z{4_REHWFFU18q1=v^*n&+os})C)W)Wnjj3?{a_LJpFlm?ym^8v3^YE^2bQ- zU&iNt@U(8yCfBZ$$M59@?{x-2k$&h~!lpC+|KnyMC{TD%<3-9xzfFygj)Dcs-)2Dg zX+sJ_rVYUpw1Vn_n1KH#ISBq&$-(ff1p4gyBgta|ai+}Qg)Q5++I{MQz|{mA<<|!J zc|7v32C>!C{gKN4xY$17lJ}JepAocvNjbU0Y6b?{R%xA#LKN0cp8z0PEDZ}vG1HeK(WT|w&F4ACJwX2WIcH!L<(iI-t`05+YS z=Q-^T{$X#jF#Fx4!{`LZCg2lt6cuVQOuw8Pp_{xt&BlgQmwY?>#aVw5*##MT3e|Q! zfN=2)SDp{{f=CJtL*X<}eV4|OA$c16ZiC^oS3OHd7g^gb1cl}ivW;?FLnCK+Kk0i& zPcBs7ejGnlMB_h*quO2~wv{OUliTl8cFYSl8q7yY;?TgPGQ&>wsKO3w8g|EcD*Dkv(08w^Lt!@;q*~Fj+g5mL<8KfBSv-CcSRg!-S4eq&9zho2s zKK>I zNSmyh%$RKY{A2vULXpK>Tm*9SWD-RL5*a}n-y7w}ID(M~Hgx zm36?1_6kr3y-ORjmmM_;iAoBSOC5d2Jw#tl_sQi45b$_+Y9&Zkf+56B3wm=ysEH>-hUfeQ zzn@)A41tJsb~feUYDmhC_u~@pljN0Fq0rI9Jo2f80`r9c`^oxMWKo<;V~71MhJYdc@bsLQ)hnGNt6Ix7UEYS8n~3k&g2_sQqnUiJYa_R{@lZ z$Wofn-Wk~5{9ln1&n}TPG^(;IC+Ip_HJ@?iA%))YHDZ_87WZU@%r%UCjCUgOj%!!y z?Ek3jrG?cw5|>CYV|rliQdUd5@s#kn&#e^4GdUp{neaNF$geE&;#(()3g1NX#3q+) z69*FMiVMW5RP~#vo99HHep5U(E{b7{MdFx++hhAW%v2Ns7=mX~Dn~iXp7+I9pR8$l z;ESE!QB^SmO>g|@1t$8n`Q>f&Y<{0A86CLi=0UEwslMAF^0a>=CT0HGx~)INL@d}M zosfaj;_d2abo2|%+|Hiym;gBZRzF6(vKNqG!x>hb#~VO)*tO%`6Z1e9Y+pW|&$2hR zp9j*4-_5jS626FZX^^HM#OCnW6^1z z(TG-$iQN)^I|$fw0D(&i1uRrnJluKb2vy7b)nP9lz4Jdm==XPC@P24P&ywWfSAh2K zOOgKcmp@48f6+U*x5C!_#KI)eGx`)@B+~z5D}>zV-^b_^;T3=a-amA^*At*7H`1?7v;3-%j*fU=qtk?%TYiRE!FO* zylRJJ#crz|f7Rv%6zB_>$YTlY@>z5mrIi#r9Iu>S zCAS1zic)u3&Dd#5eC~6~Y99yx>8nOxgExk=NFuA>&xzMXHVej8r7bn5zm|P!@I(r( z%8FEvA&tX>^!9R-0(Z0NVbG;iDPdI|FckYL&WuDlHarHpnA^}Q`V{+veW7o7sl9r6 zT3cQlbdt?}5C`u}O)}3|%U9fKw}+`Ltld4P`>Cw$M=?V9H;cY9)3^TLw_)VLu0X#O z$y#1rtV)gNxJ&aw3~^UjkX92e1ED#0k0eVB7BI0j9<_2Wa@0Bdnh52KroO@EJm%TW z`YA%|GhbTjcKfKWkt+-@D$+hP$D6%6ZG91^UNj>dWPXM{DeZ~6DO^I--kWrj*0|xT zyxaX2iSwA73gvYSmXn2XVDbE3Vq=-bj374R>RQ-zC6D9*Rmn_n!mh(z#i6>8Zdpn> zQL>|}6>9q41t?4$zk~1{AdLK1T8nFchn`8!4_H*kGA(JJ_ zjjnrNeX&>aYbD)y1BwrP?bYNhzdofKMqe%XLtbJ8f zmR%Pu-Cfch(v3*Bbc2*gcQ?{0-QC^Y-Q5BL0wPFD3IZx1=K=iu!uZb_<6J!6;KjT4 z-mBM|Q!>LQ&ecfac>5#h~uu zka(x2{d&-)p{y>D*~zhe<%zC()UudppF|&Iao-I= zHZpPEQ`{nakw^S@`g>qD1iJ#9R_Gs3>*v?@)KJ&_w}<6EDMgiO7HG~r1ou08$rzt>?nvlZ3c-=;A4zUb{gRi!R%b^{IAi0a$en0^0#48ZZb$)n4PG8eTo6O=IWB;*E%C-cJ) zl9D&omN2rS(aMPS8K-1rtnG`q2egXz`GIp4dy8`w9xbTc3!Tl|l=qO8@vR1Hm|!$$ zk>6b`o+U{2 zD{BCq$I##@&=b)I*j@hSDE`}45Z*oie=Jew%-$csU|ZW20MIiVcRZFBw*ip6+yW(j z#{vVEsOhpaoS-&xyz5w4f(i>0x&qu!MwLR-PNYs1LvV1E+1PSDV0IeCSc&Vh zKy}(z|YL?@7993Y-V@PZeIWlmi993pnq1ZS{K1rB6ynqT%bb*pT z_Tk}!io%zVvjvZW_!1QAgV%STWHt59cBTXJBK}d{f0zFLy6Zb`5IaYGVEOMpObJ(B zQbZR-Ie_&M06}f0$r=*n$P&Y7i^BF7S1&#hk_dr5VY3Kinq>)XMfZPlGYIWbGXl-u z6Hw!;Ga(*{84<6&cby88AIF3N5J0 zSDDW@%_o-7;gWpQtn=d8w6GuQ&ai#Ap-)%EdB-pv?rej7yt#;EzJQ6GhSscI{K1Hm zQKrBH5;zhI4N!4JVUCTNwvvvRzR4>H4FO`nlgbg3@y08~L zZp;t~<`bdPr5Yk6Lq5=V?uugL?H0>>UR6m^hJwkZm{=!?*K86bu;^@1sFU1f5xYJj zA&dE8M)8T3QLcgJ1g?a>|5?zZlg;3a9l%w@n>E^?K~s(LQjxdBAdOsqlp#AI?ez ztLLFMDjn?{)nbki-m5L}3_q2w0-vwatBrUsh(W2fD6$@WJ$A;nJzHwOf}iFmAa%m9 za#<668Bz_!2Jy%vK=)-%k;pX_KhFd`_Q!@N)e6|={Vg4C3!E=3OymakI}x4TCzKJ4 zTZAKUn(+1xR@m!|x%WGf?Lp~KN4Vd0&j`JIK|i4PZWWYH*P30ckOUS-&F4wf*;Qqr z$LAMvYwBf@^+*d`JQwDtq+*v8Z6UmaP#b#HJZ%yEa0E>A<6B<0sT*2+p~5AQww=NJ z$!@X%+V(eu-e0<;0;~(_Tj<&u8Yr9CSv%jRFu(O5_t8W9PyXY2sx5AIBdsrIHtq); z?0-vQ89$@U`uPKxiUiB#e;|l)A`tiOrVveb-PK|3n^uylYKn^%)DlK7We!8Y7oeXA z&hIb2g`DNSgPi>XYs{;BS8SK;Y4_XG87s4u_sGY!IQ@Ie`|xeT=rV9NL4UMFKZT`t zmRHopQ2!n*{@xJft312KTHpn*TS#coqwQ}n(=>s+>WWm26%yZh5++e9CQh_rs$Rf} zNH=~s6?e1o18L#Nv#Dy|O7cDU*ch+zB=5z<{{9g^zZd92Zz?A#!rp_Cc*XsP8m&dA zr$|o?KYmUr^(bcJ=83@WO~_PGQL)1I#U@I5fDxphLUOR3eqt57XS=L7^z~Jv)_RM4 zWYeO8gJ?*`0Mj$9lqk$V69%sV6z=`{&vZFSayn482*VtS=iox-L{1pJI%*@Ea)BRI ztNNIf&@E-6J_ZE5z)&olVvb}@SH1XjUo2Ql+ z{W5;=cw`8w8(GqUV%pW!tFWF(#_8MS@KSOnFTS$n>mZTNT_w;IUrv6qe|E>pt4vv+)E=Hf!$a^dhT#kIp#1moG^z zcT?9+NITHoWdYx-?VT$@!~L0G3UO3v#N(~Y=*&9{D^m1gU75DC;F+bOH!6lam8ou( zSGioq3X$`ML)r#?$eKxK~Gx<&?GunlksK0!j2CXsD44Dochk++C2lEB3Y zR|+5!cP|Wfm0{3{_H8sp6^xm4t}^IPw4KLQQnUTYR(_=W`dQ^Gi*%QUD_=6AU{CgX zQ%@q~0p|1ZZbCgW>|Fd*{l^VG4ne8R*NSwZ2l7PRy4buoFpooHpZL_gc}_i@} z&g1xaQixNO2l?zP7$f}zEpG4E8mY`CrhUhUft|M&!MXh!(;u)1M1PzzdH73dx8%9<43|xNP10!Oqhjpw?6(bu6G@@ zm=;=jQFy%z`D9@j1()F?_W2FtSEi8;uA|^8OL~eGy_IYS57Z%rukls}bFpOy7TBq) zl>zf`H$Lof3OxiX@wo(1>!R;a3H#(J@XS^jN|@_LoZ;54=95(Q=_b#Pn+8jV>bc(4 zw&1z1$jOZ4R|$Ql9#kXSDsTJdGZ)_p?K0$lHnf!c1@#mCp=(%p-nK*m!Wwl31@EMF za&2(=o)7wdKN?>{;*^VPDb%;SKDD#)ne{us2(tchj{m2$>dp|}L0){P2Kg&0`#bK| zzKgs6l~&!wpx53xS0R$$89}Z{zX#kvT1A&d`j1o{5lBBR?pq{|Y%x*xvU;}F^@aaI z;PvBRUbLv&C+1R5J5^F_#!kX%a>Z7|aRCBScD7z@3~XR&34ye^Pc8ae=!q5z-h@5AxUpM9uz zUryihY|Ly9kZJxi{Sdl64X(S8oLTySm_Q&HXs8Ts#7y_$qr9tr*v|Hdy)rK;T2Mon zbrHIi0cfr;WHn^<*#+S!;-)mIoPel&P2A4M^7$-~$i%_~&P+RHJ|-|HOQqoaxe@(C zW3{z36ix7@EvcYhLM$#GK%YodKhO*#RX9j7{f0huj?U`73Voc5Jt0|R@su_fhecoN z@%AgX6<)VG&zrRaZjimty#j%2pIA==)azslH9vh;N^LZ(wz6&2*9lpZ^fGr zz|@gI>6~|BD$LZnB3@~TmZrH!dHmp5-JqHY8Qe9{LNMR~L}D)kimFRaPv|p-Mwcay zc;Ctio17|KP1IgRo{}&oZ1RsoJmllC`r#~uCI z2zFm)GL5O{xNZy)CaQ8rSrPD3?ee^RyNz^F=7hreNY%W`i{=TY{Z(a$sZzO8E@EpxuC|R72C@VF6lwn2nz&);bmmpoI%Oegi26~M+A3Xiog(}Mx_Jff5 z10uU8Vp%>aft#G$)+!>=Y>$guD#m4~cBIb4Py8WO!E@$V+aYqq_9%1S*z+cPvlWN? zv!#(|p(?*|RLQODla)LQ&J%uChP^u%v&HQ7 z8Ijo}7pWL2Dl3vJuOP}4m0fX=4Ko&9m&#E@U;d##abHq)?6$DWkDYlj-4va z@ec~Cl&^WDE;|bIcceGcQLPc4!WT>96IBE|`<|7V$dxh|`KM+H7EUsM&DPA0^f5JH z5_ZNJ(~GDGjY}`stFC{Pbc6gMQkEXS&^liGSRn*aG4wNwBIg>JYY593|K%eC+4sty zU3eP(XKp49p9eOxa;7G6KO%AF3n+wdO4`{)>%bibn5z=0KDYDeraz_JP_>CK(aOEV ze^!~xq|N<)ZfG8Y;p8KGheW?e=#iqWsC#BeYcP?bE&uz3gi(m)vC=5bLAlsZTiP#| zEtiw?5^tzBJO=^;mB`Ww2zJppW^|ktWc}XuGMZMwm6%rHHcaa*6;bIZP?(TnN{0ZTCm@^dCe$H3vJz^OSQ}Nim_=I7Yqo^+g3AwamdmK)U`2?)dBC(VfNq z2Nv5cVmiPHX=nGd4gYQN=+1nPZG7+O<|qR&>dOE%WKPa^gHG*_bxZW5NACI$lMYl% ze`19M3M{vU#`D#foUt|sAS<|?%|HT-Hdu`}jSu;M5rc_M8OTj3l}+!#(!rRZee(g! zwDw2ah5t+2^(#A#bmy|Ff40;AsFtL8DPqZoMEh{_)-( z1(KK%fXsWSYYYU880)qU3}6C%?sA99+QjRsxpz3M+T_}Hz%TnVlftjue=_?eg?&I-YOsXsWb8dkOh`^$KEzNH?mbmX{0tsLdjCvN09UeR!?BWON=B-~2X)S$Q7`y3Kr&YZC~do#3WkqbNaozIt30L^1DooHCi$w_N4_ zq%*xD$gqs*!WFM+4kkiY$L?Iu?P?8;=p*DJ2-+JW#)h(ApZFC za`>;GgrJ?BuIv4iaEx2B126{yZ)B)JHOw_FKWdfN%N%>F?7{9!gCW#_8tbtaJnYbFW}uW3$9}>_E37u(sHCMO8FE%NRtkJ53S|)RjGEEI0<2 za^UPOSP9dd#UH&GEqK+oP(K#sDNK)jtGx{SAFWUq&mgF*;~JOUFn{~va#r) zsn*?8d>5h!TV^ zKlP@fel1>nM#m^o%xoZGdZEQAZnyZUo^%i+I1mTXtffa*@jO=$aj+h3i7jVm?{IZU z!d=O6WCgi)Ud6Egr6|8&8$YJ8;MuZnk?A*1xqKx8ZiOt#LM$$Iub3i5vzLkkM4~0i zV;{>ND&^PmXRyPmP_qkB19PM_YGaZq@7we=0e^jOEg$TxcKZE zS9NL=MfFk>SvC7|`~q*8)IJ{v`8h}`+LA8=Gq`9lZy#AO?*Mvm{IRm$k_%<^whKu$ zL0jAcZCkr6)K$Oib_EO7mk9I!hu4v}(#n_D7qLca;y@8@-ou%`|%{B2cQ} z+RbXL2zH>JuVGs{ajopu@O4vPIZj<1;Xu8;_FdzT2?fb7ebbMG;(KhZ zd=DbRV6iu_U|^MHrL@gazly9!%1BG1YmZE>lqhh%nsK;_bf`FD!6>OMt3#ePAlYl z=9mVfU}3BoD`4iUx~lMGN;OpFY$-Gb3wGe7nCas3DO3Wo^D-f>T59rNbC^-RLK`F! zt*!hVKpm#>Ell^YXdaE4ygDr~kWE<8xflMuM`kLLuv1&b_QX)9zS_P`;rbR5s~H0A zw5u?0`eF|bS8kD%67M8JZ(v5GhQUyMzzd2LO6N%*?!a^uFJG@fw#|;i`i*=H4%gQ^ zJ1>aoUz`}z@dvBw+sLeq2U9#7JFekfd=cbiU^htOUd*tB_0%I3yZK?RRuKxdu;^9e zhRRavLtIh?JxQ+m!+Pq}7^6nI^silt1lb0${`vL;2PJO{u%7yUtubb9nDzFrNJt_cVy@oC?%_BmG51UG%D2-HPqtarxUTr6wuR-o2gx<`SFq2| zlBEr(wpcCXDlQARUmrg_2K#h9lTz5(1x1e->Y$NRSg+vFag118X~X!USdF0jFe8gM z`iiH=ikLO98l@pHwR(XI_9md3k&G@>i_XbBWaWUG{YZxuYpI9B(Q!U}O&ejG&q?o; zNP5@a8Lr_Gfl6JmYVYKXr(8Jv22RxwukMC>vZ}NuSOFC_ z|Dy`C{PG3<=q~+uioeTk??c3YkY)eWUi)2=i*%dhLVfSCZF$#$spQ?Z*zjYeB+=~! z&>}>4^P7uZDf+_@XmC?r@j;AL8yTR8atw9yFxJE9`P2kb3ceLcWVy?4nGlk^J9Ld# zbwIv^#QMNL?71)Vax4#I<^lo|{!s~kT@w2qCf_;MUj>V@cfn%*Pr>3n+3A?UU`|fo z$Ug!{0Hl;Ii{*Px|CX2_4B`E5F@?N++NnMK$*JP0Bryw+yz?zMs)HjM80bLhsb+!W z_#^;HJBa#y$fyMQ^yHRq=5}W3_o@1?YZSMv9{}?^Fp@2^ntp46~ZfqvN+AcT+F($TrUJl(kPBVpCDAoLIVc@2is>+z#Dc5>;vTO5IsuNBt+huI_ySP8w-e1kYRh0 zVbih6a*{C%!a8esKj% zI10rGVA=jQ;P@se;$S;a!2A@k5#-kp*d19XC?u#Tx5q!Kl5&j0?`|{WW8nL}srw&O zA-7f=z?wGw{fOqDra}PIJzLe6Gj_{!`HQI#Ffk?;nEYFZ_3v>IllogPHMjRXBT)l_ zSxH?uHp?n&{riN3K4lj40uCp(0O6X!Dp&}xfqttSN5!Jtx56U)@mh(2|M7Dx7uYEI z2RNoj%w5AKaFSdmw!m~T5W}Q7&Q4~8f>xE7e4e~V(S~$MEvGe@)wGa>16Pi;o3+{- z6Ahlw`=wBtts(_M@Ee1P8?SBt^Nr8<zmqw!v3+-XCQ>wPAUUB5`7DS&RC7Xrd(asCr(Sa7d z^v?_W&|lOhhePLi)=m(8^hycP)M{s#ONCIa=CWYjlGfhXaD}+~mu=R`*^+YkP8JzJ zaHyn9wvpg%w|C?zo+Y@>t;2@H&c3>e5!oh{`TX>?%BFhKzyj7JG=wiDj&bl9bQ6q` z{VI7(Fl@M5MzvTn23t(%AWTLgi;AJ0m=5y0iq5Nd+vl|Io)|N9ty*#k&oQ1(ttQSq zm1k9SL!A*X(Cc6M*0Ay96>vW-Zyf=1(2a&988eFSxi`UC?->2Kmm#yjv6u?8f69&K_W7R#y)*2?jTTlXb zGt!wv-0%0oxdOj^UIE7PUr>QKko}J>o?lyy??I5r-MGMA_;Bxa0wUXitwdmX>Fkjw zt~Mwtn`Uv4h!7hZT8_foXY)peV+CM)UMDGG&55Uj% z*uaBMk-=AcY!a-+^ni>bxB$(xVLxW}AqLDDQ8Pj$q4Go26m>5>=?@FTo&}ra1E{#w zP2<;ewC|kJsLq8<9Nk()Rln(JHo(5r2=pJ}3Px-##T44^Wd0EO(i4N^sB-5WIlor+ zzEXc7eo5EeAa97-m!Jwjg+TwPWWP&j9ZamhH#)+V0Wur`48A3y(fptx6#-F(MPCgC z`RsZ%hII$A*=Qu>&v4HA`rEJaW--o>D#HJr^Tw1c>8LGAwx$jucpjRcSxBC#GDzD^k84)v49nm&Nn?o zt*RkP8KaL+G3tJ>fDSePA)pu7;)YS8iRTbXJ$ck9m*pHe&rU-JKCTtOgYiHreZeH# zwYs6th5wo6i|{i+w6CmFh&W)wWeCVg(s7sp$&`)TbMd@UYuQ}rOVSF(%GI&d%x!*ixTXq&|V)*!znl@e2-C~ol!kG+oh#TX8$Iwb8T-u zq0WQtAu|3Zhm{fL(&~gHX5Knz*>%8Lv?&X$$NHsP0ka?Nw_}4W0?QX`UP*j zT-;#78ezF};e#x86DW^4*v9KV$cZ{1h8$=;+?Td_X3y%bS1upoQCk#(ock^R+QGp$ zCSV!VCj*Kd&o22`VQ0b=4I86{)`dXA_CV_S*Q@UbBwm z0G3TXM~`bUZR)Fd7~DlJNB08Utnj0 zY2*zcNhK{7>4+s_*hWHV-PN^#5Yw#QaDIU2XDjDMN_t}jeMVJ1U-WgxW^%NXsM{4~ z-4=>a%xuyri}yh+KQcTY9ct0#!-1LgBv)gyYTBW0QdRYyZNlYfs$+xnuwTl8R7}?Qvj5SLGPgoApYG?U~u2ue96C>8{D1r(O0ul@R zCwI;LYY(PtVFYv_3=MutHGdoD-A5`jKSl5!@A}f}fKJ40+)p{@e@Bz%ejZH%uMNCy zFaMZprn;MJ_9F$C4+Mq4_CX;BVq{>J)%ObmLYc-A4kw2%=645vvv&=X00>tDe7}!Y zew}9ih|5GR3@r_<9KM%)VwmN6&@v9-3P)9>cIM{PnLyux0brN z+_V(-X1M!JH_>V&%ZjR{X%TfWf%d!Bqt@-TrBAoa5dz4Tm~d-03>g6cZsD|t>(P*U zQKZ&9yy(Mm_$PegkCYWC*^~}HSWRGO8$$CJ9W>8(AS6+kq>o~xbCSY9z10*t8)(o% z<@*w2)8dN|nMgy5`daC_Tb)iR!-bM|mL8|T**_M4Mo6^B#N^Xu|3s-RBH2hUZFY1p z8cGD$+g;ohjRxyBCag#vbw=YD$Bls-JVV^c=`HDPyDb11bTspVxG}?EWwNsZ1%^T- za-Cg| zzdzbv&l}48q~i9!)orW0I>gWOhQH8lz5gop{k-A-^9pXg5%#T?LxaOGfvO9{3&h;# zX7|+0gJM-+QEU%l*w9PZ?k6Ui95w@r08M}YM{UOi{(2X#1HDxfMj=yU2`dLfY(7_lw`BEXcC1@_M5VF_H|xj=vCBHjKXo@o5oYV3oh+N z7(4b|V2mS$+xd+aZTZcYi^)!qRff;%;u1F3{%O%Q!aG%3_0r?{ zfu_U~QdPL9sZB=BI9$99Db347<#Rm7BJR_*h_KUxXHHVS;R8I*n6MkFwGr!Uepq;W zGO%__9!qxgEq?H3yD-mYdEUx{fIlFHe{A%O)*DT89zH6vJRFQpNY;1EDQBYOZAn3V z#0hb4EMya?6dK(s?rCuCz*bsGf2#c8m=u}D8+p9-9In|$ty(nDPgNH zz%BQI5OvHfl_KjMXL;oadsuYZX#2XEcwZs&6LpHLiITa&a~-%AfLk-^sD5F=@vLDD zW%M=Tb6*xl@x%wB9|z4`H+T&&O|L?Hm55H&4QCuSaz-LaQa#e^vmfYutI$OY`C<$< z>L5(@!ipWA0QthehDS$Y-xlsmChu4-|2Qw}6$lwk_Z03_AafVoN%Y%>F%rY%W^C@w zYOJ&;xqEANP>HEyLyBZsDxo##uO$cRoXNhW?=3-nBxB{SDpxQlPlB>^K~|WNXrShW zUvHr#$bmRWdC+2!i#f*QFUjA67$zL)7^g(%M5~_`*oS1KU95W4w=)AbD(^&>7`}l| zh9tpcFb|e88~TpBpp9p1cpmi##_{lk^sMB;?82FcUH4b{52~-yH>b(YDRs6Qwo`(` zsahiG2^R>n*YhuTL@tEroZ1?wx=-S(JPCmr??l_jy1#I4Q03#ddr0gjtDyaM1g6LsQjue{v^r#5L)=W-!L?QCMx+w8FgS z=)1I8vP`DF)oD`i11(Of!8DI)sAyt4C`-1H;+kPQ8FZ{+7E-~^vD(HBogrJCSD!Js zMJ}nquDnEUDkBYQq(ACG#R$zg5J;c6%jaVkUnr0W5FYd9I&uGLdXrc%8&YP!TPIN=H z@XzfXpM4H=^L*FitaaW_Oz5+MDb+9ig<98R%GfcKpK8pzyUglKqJJ`2rm!FbR+`Nl zWSvRl(pDEw*`7IO!oB30=CeoQoqlfAM9iRR-|n)Oi04BR47UsnlwD=106whB=}o`koXI;c z`OL!Yy6sQGa{L#OA9mkDH~HF2$UZhseskH{d70A6dOF$Z^$illdF>K(N8jd){A1Ov z4R@w|!sn4w=`v~wlaf1t2J5-7?)5|0&Y&rXt*SV!=6+ZBrFjt>tV zqrir+d&Bn4I=>bH3cmTk;={002Iwdgwk+-orH3sG3T&a!OdL8W5+4JHM?+RIp{jlJ z;p-=yXA44B5***6gvdwFo$o+63d&$Q7|X|-V&!12|_ zRsVIc+3dyP$#u-9i1fauL=lcu*@Dpi%^n8I2DLfmXP8n+rtU`2r7>(YJYlNLqA|zmb2tuKR#$28qFL0h6(>y}oOCB4Og#bI&z_9AU@bmfXIi0}VbU5Z- zCv(;N0?v~ZtwD&NW?`Kz!hg|V`RPColS=!CA?xSFRAUh9)NV~!a;TEb5-A)UjNLHy zN@yWUnUFZ*l+m`aS@Cnv@*RatR~HUrezLG- zkdPPldPT*RV?Ndjv;m=TURuuV5dzsYo1M`L!D54By^c&Z#>O{ocGj9Z`TWanqQ7iP={U5 zwbwRq!-S%}f0B^H&fV};Yd0#4On*CCO{Z+>=Y$>JII`i4d*+)f=QEn*V zGW~q3A5=qP>Lw4luPQlN%fe=E?9bJ?d^Dq{ScTF+TAe`_Mya(%a-j-&a{*->=CY0= zqF|1_?ZE_=d)^N_a12Xgzx*m`r`Wc*a9}e7HsgsqX+(*r9P zx*h}z&}d=ZFQbU7M1%REE?`!8eH%rN6JS<6T)blrD~t09_NTPZ)j#y9ic6(?#)?Rv zXdR+A=fP-)tmeaNr>vIuq{KDCA?LRtlu5Y~bwl}BN?IC`Z1<``Q(h!exw!gX1g-Lt zx|n|1KtZq*DDFjiS)i=tL$TjNZC3F)?mit9_{% zE3-W9ldlGwX4ac2OC%GKQZl`~huDa<=3EW@aU)R$I?6sIj1Rsk7G{U-;l2HE&JKH6 zugqCkuKA)d|Fe+q9>iPIR>tuiX|+O2*BVZ}A=jru$SJ1`eNUMC1c};<{4orXUzr9@ zU9#-sn6e;08LpA@Oj<#T)in!@A`7c*C!WtOBxSpa&G=UN0;-mTS7b+~=OZ%7qnBSi zBX|Rs!LZ2iFUqZUiN+1fuCjyWZqu1AFP8l%Af18!W2Q**uOMFLe(UGIvHag1xcjyA z`%UZRz8D0LchfPq?SsNGhsm~>*-zgQFhHw()B4&RJpS*9db7L(sl?M%$Z(~l%svy- z2_{(~#wZCS^xA-^!9J1jyc?0{BJ&FhEI{sgjG|x;1qqcU1@xH^gM1i3PTu&?2@;RP zpuJk0=&Fte1yjRm`T=gWnz+?Z56mkLb|J@a`Ei8@+k%Tw-R04tBw>@2fb0pt3H?6V z!~WOl2$?!4nHoC%L}GlO&}H8hYwixEa4cqZY_{fmQ>Ds9R!_U7!%I=s%ntT{BPYcL zBG>5dX1G!m?-q;BWu)jLz##}&0+<*O{sNl|_5tq2FiONbv2b7HrbPok zx*Pa@FV+vzf;(-#r7Q-3yZ+bJ^WCMb{Xe9sL5#^$qd;^gQ^~(e$IVDg0q(WFur*UvZ*w{!$?9ooA&q#9SZpGIGZW}VlrvMyi zpeGPV89@Y_+~PzHfq(+QDfdmqrhFV=E8=z;PQEu8`;mad{X*^*+*hSG;4no0c+Wou zXzvb0(c00-tN6$d0K7K=UdDEdG9$4QR5X;XgA~3n zI8!*36b?{+Yc2lWIxJ)2NeEcI^su2MVW52hdesOJ0nBx}aZ|OkZ^BHFr)? zDf!g7Dcu?Vbh=b(RyTab(%v!c2#xr)2fI7FN4-1ZC5;DxLAdlWyFvkRzo<>}2@*O1 z35aKh=S!QHPwLRM9uFk>27CJ^`I-wtD#2O#V@T6B71JiE*euC26%wQFeu)XeBIRAz z>-#KN=E%I&q=$Mlb)A z-h)@Mr?FIOA8@2wN-jHegOqKeI6uu3PI=`tatODtu9`fcz6ej?v1iqK(}Km_-y6`| z+04?xFR5wIV6H|k_i>-w))`BY%A{y8M#i$@4J^H;e|8UJ#h7OFv*4E~x zh5#SAss8s_Sxb2tDWJsXF*8SLsifJtOB8h;7h4#FA~Yo+E;&os7T5HQjokpg0@5qN z<@A;vJGj;~`@w_23nM4Km9fdA`A6RH_?jjtvI$?foN0^S3KS;_$*QOaIm6TURDGj4 z{V*&;l&EMTG>`0S^WxFPdXf#+jpiQei={ep8KIutIjPzmF3BqwPduYqCbEUZ9J&&r z=cp;`!(mf!vqDY+I{<$EQk4(5c`p+Ff(d%syz!YTgFDGa2t|6NGs|J^(30yTjY^K5 zwqfuGCm7mo!O^?p76x4NCi4qA`&px|?Oc*fm2#Oj3+HbFi70ytANNJ;-fa&P!G{EW z0u*2RkBa{zue?1x3E&?=0|NjG{X1WCxY9HGX#tFOc+)Rt)$%2n<#R^@rJuj}uOl!; z7*Y0wh4Br|ps6mPJz{^Ov1ffEn3?wRwo+}^21`Q0HXN6Xa>%=#;db<9^QiNk7sx6O z&$vK{z^1onHe$DdaBt{2u(yy-udp=DK={hBHx3JUsXbpKu7{Dm*@?A-2@6>1 zWb^6?q)(lOo1DO|8d<_iHjFu9aCI=l!?wpP6pxBnt>4@7qdc@Nq>yzO%`)=Vk!>vN zC1EcRM51tDD9|OPyws|(VTl~)s+2YtmjTapJO12`>yuQ5Fc^RV#R^B3{V{a8Q2af{QT0)q#WO%YrQ4k&lk1AQj^3KU&2XcxouH%^BWba(wJFJQObWh^L2L;N)L9!&RD`F z#JF@9kr8Q7_W0tRdMK`LI?k1gSv1E7TX+7tb_Q{go%aJ2J8RVw9V+jY;Nq%?0PZDU z;m4KT7U?hiUxb}o)FhZrm|x_WLEH8l((&21HoRUiQek%*eM7#YV*At&&zo<(*7v50 zhR@}Kd1S2;tpm2>>4#3@8}wyltlk#n2Oga9-wyTrA@+s98lt`9(W>mg8j`(L(5lKI z_VvJ=U>isv6F)ZkDzNM1C#XFoQMr26a`@M9n@YGGJg5Rj|0F^0XGZmfVYFg(_2_U6 z_I!-XZYjS*bVheN)sY?mXlY{t#r5pPcE&095no0lw>K6X5}lCYCXst$ye(Cmk;g`c zQSJhQySBybgpbTaujHGks2vFWBnA@IQaM;BIYwn%=DeC9GC^_1_%9AH<0%)K9Or$; z?2ml5oUREh+_hVB-$*VuI9wJsF9v>D5zLSeNfK!7ef3BXvj%UidSgU3nLt6*mD&OK zDLEr5F+VApnra=r5(C(2PEU#Gc2Lh9h*&hw;|ER2lrOo$pkmVh9 zEs96!0!L@7%+33KjRm!$H5I;fsUMGA zi9~vt&(rQg5!%+rsY?gEe*+KilF2nm`2yl?44On@L}?}yh_466;1oBfcecHfF(Lsn z`?QET{9`dU_{Tm0c7A&c-Ea8C9(=w7B<$cG-XjH08s?Afj(@#GaR&z*;2By006j|9 z`sRiXf1kOd+^w6zNSmh&FSoodnxi2lRAPMW8UmvT0Um$_x1x_LX|_y1OnS!eIt5^V z0ag<2IiJbXR{?_^>B;G?N2hz&;9ZX+=#*io>~CH)pAqs;sxu}_L>VcgtIe~SZ9?Th=a&FDhVg|?B zj@1NnnyIeb^Qxd}xX6_@f=vlq zobCem;=91TZ5Hi%^=e~(7Hx9b7r(J@Bjzec@_zQK%KaZ{iu}XohwRnlnAsV(z!Wpk zp@MS&G+!71RtRA8v4!1Y^FiDt93a->t@^;v@dLi!$0$GI>pOdun-!?i2V+la$Ya!{*JG{Oklf?ADs(Eio=x@~ zLLQ3z@aa&pf!ysW$hx}uWb^h)du06cZx=`KAfK@(YNMuC2UxEkwVR=<9@J?%4mL<6 zDhy5tiTOeLsJB?EUdUyVWC^}l)xaIA&rxMZtO=Z{x&$XTp~98MoA~A(JZSi~ChZ+J zp)DQ~Qz#aSE&1%e-2kL4*RXeviAf9-leSUHw?x-{9EH%WF@BR{Jnp{7{4xIjdL zOP3Q$tox+y3BKpDbaOW(*0=;rKAxwRWe#4hrDwy!z${li^^!oe9nWa|I#1qOxVj6X zYE+<8Q>bXjR!`-C?@ptP4d)jm)*%GNZsF9m62=#l&J4L@T?0$G(u3(025!m>F`D~|Hl*4jK_kG0s z!U%{5i#m_urR!h3!joC7u)@QVrNWxBMQy=rF3rcVJ_T-&qb9%L~2clC2x$Hxn;BI zMSZ|ny_E$b1v*g9S#mv&devTqK-*+19JJQ8S_tuoY-2VkEVZ($JP5fWR`Lc_r?O<+ zigujkvz|L|7nbd&(fr&uA8z59*5j=vQyUt@70IA2!et^|YNF9=938`=hwSrcRgLIu z?N5;`5t~XXX{} zGOLQ<)}w0yW>sZlK0``Gn0p@)x{ic zX*zR?sRz{KcE{vKSV-JLm&~j|uH5o&my{$!9Qa~m(+ah@{vAi;;)JE7!z7=|;XZUZ zOZFeFiC}Ihv40ZovH0e)Yq7OT6(`#}`F{7ol{85O_)ssus4>k+lLKUnPLY|kp28p* z7x?KktoO~GF9dsdM&%ATC|6_R9aBW6-TC8FTlL^J;?l-{r8| zqj>)BqxgRrW$=Brc9RZ>GyX?`f3Q^C`ls*C>3_^`4F4sm$M#iQ8vr->ZxLae9Be%8 zoM?ppF>HT}Ay`I3#mxAO|F^pbq4xlU0KVXm4hSeEaVX$wzoVlAxB4%1bdh+Y`%C>M ziUFDk$T#{&8GjW0Ze>(Z{H)3^R5wIJIQ2D(UV_!pbyz(}E%M+H-aH zsk-7_doSgg<|P>^yp$?r=fnN9$J@(e?l&L5V09s7m?e=I$Q{79uEKRz@gMWU%sVeO zygRKy{Af%3)!mJk=K-#AkGuE&qE(^1Ewr)!P^s8;p6Ei6Os@jDNV#OLx+#hg?UTWm zZ?-%Sn)FaP-bqWL(AKv`?0t5FpfKiu{UCUh9z+5#@^lM;IjiMk2q`u%5{)JtJ+>-T zV^8JMe}E{05-u1kG2$Iq)b^GY#gFi%FXUEpRco0nll@j4(t1l3PeWrnA@Zg3G`j(($Wem9?L$ zzr23$6S*iyFt3UySuwVx>3$17Cq6;Bn9?c0D0*7T zUxV^6lFBGBV^%`^MomTa3FUfhC=uEfO-5w%`gzyq6JGrO27gF&V8that<2P+n56sll9EgFhm_(}p@fzKpH|l9 zSI(?gZTK|Zy1Hd26WMM7v!9EGi0RGUlw$9JAT_j^Pg)x}aWS>>dU<|(y+w(aY~!zc zL-L5x0Jd1s9?P>YFeq1CKt(tyn_0zA@wH-6gq&*zw%@oql8|m$~IH>xk%MS}|p!G_v)nr#J_Q@$c< zI;D2Lal|r8q8#Bg3XK%d=dSN@HKc2ds@-}@{-`v{OiOIVjgG3?^TC>lfDIl&$NJ9eJ#8$ktbsBpCv+f*!co@z<}`S zE&*o;@73=B&tF0ef22hRKn(h&{^S_LZ{EX)5V%P)y=1~N^KP;o6VdK)c!v}c8koNd zT}DHTgwP^it?$Ep7Bn8f-lceEnSc;wy|*Lt&Zz_U_R{?=s7v5k4-r?<4uJrvBgUS% zM1iq@CDX%~9>ROW6sUR_bo`Pv6M-ulxzH?xWBzk#n_LfS?j@Jc*}i1mt74v{h{FC& zJs*=8zJ(ErRSxh!;&bnBe6c0IBcs!FfRfqEB!NE&ry`U*6@d=%{P)l3`yGte~!g?z1rSe<#|=xJ`htBEq2YwvV{CnyGoo{MXgI zC!bfIGbvMgW2Ayugr4V?&Dg^|)gq@2pYiuzbQSTp@C`H8wK*sVG;11LYd@quOdLNw zd^=(TYV#9+Ee|WM#q-H9v{aMxz)Qil(fQDx&|LFEdg$AD*GZ1uS5V$pXrS%^Dyy;3 z&1L&jur<~JD2Ftlqfd%&^S+Rr)5DuKH9%kvF^R6Ow4F%ZX9WzQG7fcqJKW(5r*+HnhSrS6D z#zaV#_+|1CVd=&Kj!~2{9-^KN$Rhb*gEr_Uz+YSWi9yv?4ovEW?8P;ryn069K~<}u zT^TD=S)f?A-oh0Qf?p%BZhw`e;C^i>*8)a`VL~jOD()R#g1e;U*8=6PkRY8Rj-)QD z39%Ba5uUGM1Jt;SC-tzI^Him#RlODSww?Z(yNMS(^3ZTo{}6bdt1KZ@Haf`{Pk|C9 z{SxdrHMwhmw%ZR0XPP%B3+o#b)>k3!B3GkxbXo156SKGXFNc%2@&`H}07^9dcKGQR zge$IVr}Pg+n79`bN6?RMaa37;@UzAyV1SZEDFXu-a%i$(9=6J$8$s|^3FRwd>jG+I zbRHjgL!5A$Yz(#QF@q=T$}isrkFb5TELKDjlCXC8+10U%sQgB+c56P?Uq@Wl!-dO+ z>;Xs8Zz6Q(n2q3X_wQ~)(GoTn)iHhx(6j}zlTZmz+?$TSdv7o*oK}U0OrEQD<AHN}DI9H$ZzQaI&!&;usEm@0k) zec?(}XsI~6otbGpTrWp37MOOKnOEDfJfpcSXrdHP^G@|iiD+hxb_BJzBq%3#-wBU0XGFw2+T974^j^V+nbkCk6$Q$5N)$n5cI zTsMnYE||+3M)mk8^+(=5Qj$ova@AXqdRC%I$8x0(7dV4*A_-L`q6N>0;uRR(lWA4o-8GGih zHGOWTq5#_`*-k6huymRz=~tpaP!%6a=RS3LLlDDR3sufca^f=I7$p&Hs`DTn?cO2H z$6~o!1Wc8TB?k){oQEJ1I&-|H_;4Z(BDlWM-?^JoK;oW1hZKz+Z4nq z2ZyRqi0fu-G0^h2-U1g%y2RUb*9CxWMOU(xj3IRm!T;r0Y_myq`K~xJw=W{8^{zH8BFkE=L|N>U@cT zGv^p#so0oG%L$d4j6u0YGN!L>tTnk?s4K<)@NGGSZ zo$2%6nVCTHWXwSh%|u%=b{UH& zpG#+ix8P_xh}~s&$lB_H%AXqK3}^y1B?yiv#~qtu`K)>>z-oXSk%w@b()muizk^-! z6`~Nbn}vMR3lVJ$h!#yAQj9Hr3^ze;fY?jJOrRF&fNQc`8vcYQo=mLybmUXklXro$ zf9X;u&dxI&A-F}!HR@0WGxq?@OMDLJ?e0ehPO>0nn6*G#{UE>FRpxM*P; zAy)Rvteokm+wiVny3;ZsU0v{A|%YlK_6g`$&bKabUb4YPPVhZqJKSwpf8ShtD^z6bV|iPMng62;Os*jM_L{ z|CPJ{2(Pc;hZvVF(0hu$;}zQsR`Y)OjOGk`BO~X>yUjCRpeo>xutNx{?78nv`weq1 zr9-sGuXyZ@_@cTp#M$TSslNq_l#{}yV09_g?Yq$C1-~YyukY8QZGb9Qzah*f^f+Ca zuZ^{f=d0YWS3|6!=LUrsLl{zLY~zUSavAoB{tE0=%P5?O6ZF-OGx06FV4~0RR)d7l zrii#B$cVD%n4D6hT**>S_v$X*otnnDtxt|mXxiclqY8p5R#6lj`U#lHG}Q+oL_lwj z$Fn@oI{ItP6gFO6adf@?LN^~pdFLInW zulLGvSuo%~O`o++G}=_`NiA*qKyQu^GA5Bwcwqbl7XBE;cBjNZX;@;_D*}6nYLn$v3^`7VmWt{m}>C>Vq zfXS+5vxw}p7?1Q9J1w>hD48u&za-2YZiz2;pjqawbn;{_Q0Z7w_b(b+$Ft!8!zv)4 z``>o63I8`y$v8ULI65de*ctxmRuUOC4)A0G%mV`E`WG6^j_{kN17n9AGyEXkcvKB{*zU41nt0eB`~K`{Ruv3~4WWCq;eOpB{`r*t z8b1Ip!jXC59WIQuK`)7gkq>NZ5hFq^WlkGi;@qnMtpf{ndzZw|OIJ6pTVjdMEqN55 z>**lp)p0%<P3$xN1=J4oQ=JLsfj3GZ@sNasCV!9v`8_4=N#<@9LkZ3gt#L>hTNqC{ z_Xt0i29sJlMYXUma1E2HY8@@o-yOn zFQ%QAzL#_q1i7?psBC?K)DfY!`pCItg3q3vltLEzoR^BU4u(6=+=7VNmAFdAi5JR{0*;w1WF}O4byly?WX$RmF1M|%ZW`X5Cmg1L`2;!!p|cTZ13S5aL!LX` zXo2}9ks`{-P_C%#%~n$$JQ@;_H}7>F5xZg3JT~;CQ#l4k83|B*>|pAab5vVj=0uYi zyPEqjfoCNTe{EBfBR8UxDMFaCUQNS>)+SR9iK9v-UF9+pIkTQFW14KJ;Ez`UH7DfX z5<}qw+HCZ*cIiG^Q2D11i&^23dyst1aT_1 z(lwwRuH*G>vT@3tYs_2FrIF(cg-y zlb+Ebn34632Ht4N|J?7re0i99*!(>i#WJI|J+4NE35f$U$HqVu&2qoCa1`SooplpG);%`B1_=H3 zhWzqO68wo7p2r&PjCA$?hxhvvBmAck@CQbCCPL@d_5I-&3S8yzx4!!SSHHs__)m!}{l4Q4cfdW40DS(v7V%5SeZ~axh7NYF|Ju^{X@C0V zFSHXK7w4Bf7ndvkYg0qF%I|;rHvTDq1`Yq;8#FHx=D*IEqZ5PHLWrt@rn^ZJ#>i*o z&h7X;w(Tg!i0ORKih#`k2u|^rg!U7NgqWD<9U2&HK~P-`%SeMYCp`Ns#RG$>`o4Ic zJ{v6w^sCi3JnJt}1Buxai`8aJT+yEk6g>Da6UP|oX@e&2>Tii8>#qSNB6m>^{%nv$ zuAm|A0oE%Du>b$QX1`p%e~66#VN~F~fWyDqdw(!01``qhKTPirHihQjcAfLtJPcBm zndv<*dp!jc19>eK10{LlzsoSC2m1otl!Rh|DM0(m`C2i35hx&@O^5jDKlu78nR9|J z3Pb!cnZKPvH}x#7Q}EmK@C!-wIr6jq67&<}w5(_8QG%jpt=7d=mQ+n2Fm}_8L=_3P z3L#A^5W-Pd^Py>%64O)0%&R1JEsuF^fmK8`&q43yLUw7HC@orRG^I3ktn@Q3s-P_)bAE(EuCZXhy?K%V#hw^) z^RB<3%XbnLn4k44{|JV5Yf@A6kwRPZcH3uwqQX!{r>JuhWPZVF!F8wot;byAS+L@T z*VxSdIgpL=lnki1%P0fw_9A0P=!AtwU?82%J410*sbr@imBaRS{#ecDGkxzlw0Y-!L*v_CcinZ3Dl~tVu5Kj z(><~|kul{*P#B88ZohbqE8UVlx8+rIFy=?&j^EK2a9D3fCc&uiEmI3Ti5_ z5~xM=EC=MPXG|vzqK@dSV{GJ&e`ULS6bsvY&^m zC)?26@Y2M#b7u~z1=+GL6KQSwK5A<`ECRIY^UXAWGQuZ|k7|Z(C6L=D8Fi#)WsB31 zRQiaT+(nw|G*TWoNI?~R=+hn-?;zU?CL(KYf}pNCmB@yzDht+4;s-myLMxAX!%8r^ zlP_q)j{|MKYSo)sj;w@5&Fdd$@+ZBs*9&fsG}Zz2hslMf&&K#465-e{Q6vy4AgzkPe2$KC}M3d-w)ADH5(dC*&_ zCqaES(dK$KKJoP82iE4h2tI_c)RC=k23 zj<2I1T*VSZEze6l`~E4tAE&?I9J)$88wCT%3eK_*BetVb8Z~ej-Wm~} zpVVhc?c%3?rCQe&q1gAzL4#2hH(>}v*?Kz8Clh44Q?D`Z3SmARzO|thZ7mkjnN-~= zG$T(unKWPhEPyQ z-VQ}0+(6>d6}f@PD9CdAAB>j37QdH4)p7&X&iA0Tzq>@bjeS(gHYIBb`0;!g?|)Qp zJ_{eS{q|!2f`kCo;-7D|U%Ef_3NNS8^Qg&@-qM5;Wkf_mf}b)uBPPZ#rj%8QM#)S` z5Wd|qp3rvh7{cAZr*kXVCYzk(^&^lMik=fgBr+*Dp{{9rmMfFBQI>P(kNdB1UG^3b z=U~bcd+urq24>b#@Y?AK2F~wGl?6VA7AqZ@&Z&p_S?fJn zYS+q~)ml}NW*u>DRHB%UttN~Sm2r)PyRAT{*~!tEMWZ^Uq2!Z8ixXn!C3~4>@N7-c zNvLUr6)bFlIGOv~6KD&`Ldw^p$c6?PjQBr_$G|F{$Ubj!-I8ZKeN1}e+9c7QkTxS5 zPSrAGo@1DRDebMPhe;M#&rpfmnF!#7s^+T;&p8Lz_33P8x zzd_n&X4)@odEzbDgKBr{D^PP3kn?cr;lo7H+6bk@B{vP_q^pkPh-*(%dyZ6VG--8- z6E88IqR?A|wQ{mpBU3lAWjQbJf2Tg=?&>XZEmNhAKt~(Y=qDyqcV2*?qdwE$@P75G zSLgA?_4bN!0Qw#f%{Bq7segx5zi>`ut?e9?tN<^5eUsn%vHfHc{TwuV=BxTV=EhC6 z<<9keig+G1{1uWyHP!sA#WlV854L{cPbvK!lm0J%>KT#()Q|vNqL}W#%xnQB24KF- z$T3Fq&%=a>aFn*>HtdFbJU7#I@iw1EOb@HH%jO(36U{gFi^DUs&8@80jTcg_d~Fu1w1+e(;v zOIi`+7o$FwB_jnFuiy@2Rev`~AHG9la&rkVqfL?K;~zjw#08mUFH0YzxJu$P-a3pV zQ5xXSi8XLcm{IMe`6Z`z#G!qzEezA(2S>cZzE4}98 zE>MusC)tWY(vz<^Nod9q$zTT*!%%OuXyu!`sx*DOG=KOdz#wzwojsLH$0Y64r@1PpkjgTdJ*pvCjepjmb#9Q{wN!8F1;i^Nsf zh)YOs;Po!7@fwhP*CUFXv3%FVx~xQW%xwmP`#sbbbhrf$w3aa9f)|POI=>;NKyz&B z?gv-l^$_D9UC1uP%PNlzj_j@ayx!SW zM}2zX2?PnDCDs6P1t;Y1uK6!R0)Vc!l>xx1_U8*q#^za(`OkT(muCh>V03GR7N@o4 z@&E=tC@W6`1BJisJR_wg6AI!Xg&4IhYT$z6dMQ{SP$!J7Zy)$GesRHlUml4-G!r|i z-^t@;xwm+R&kNkvB?bi^lzDY-zZ7Dyay~gP{jYbvPbS-xeNI<%g`zU{ejEU>)MPOVd{ z%K&h@-zAQvcbsS(*7yn$lKpM5NhWx z822=b+=uBxR_ks8>bBOD0|D(CpT^7YpuLam%Qnyp$=Vaafkjb+-g2{ zzDE9PerrDWjOWa|8Q?F7Ul>X*SXPyX@I*xBO%-(|f;TTD>2_ZV!ITvr?-u~+Andp0 zEwcZLjK5%te`&=0oL=}Fuaw{eK!$j(PxBA0?q6pZN`L9UR2yWk#3?#xMZkW=;(?s! zYkoH1k;2bdP_1QP1lWc#`2Z15Q7J>PA|SuScM9!$ay!6xEc$JHC;j`ckhTU)3p*Gp zT8moS|GRAS&y@Dlt@wox{FwbX6E_#*5&gLHKg7}8=Y*yh@c$s670(jrJd%G!qH!IGMjJ@7ib4hVlTDDtXno*7N=KBE(0j#HyW)-@Do z&$OyjlCi6Vu2&u9tcXNa#?(TPzMbQQlWBVDJ?z}yO%^noAn0S*USk;PW74t!P?V49 z7upbaQNx(dpD3ayG0(=Whm?|uZOgSfwzuYi;RM+Y%DrgeEuC2{qkh~hbU<{1K?rsp+Iagq4HayDI&C0=nCoW zj3}ADVybpX+dxv0vcv+3(-UCfNr%Dj3TDij$+pvU?C>TtCiDLKaPtHV#Ac%e9LVpC z*e;yMJS==ly4apE zTX7p}syJXj`hQ#Z{UtK->)AWl0cNTGksBSU@CS}Vf$rZpYfwjZ(yb>RUc_;i{MIo7 zAT2UXKh(V`B5KvD7kW3_?_0v4-EeJBH5cB3=@0440Y49gAew=NnvO;j3SKg+=@ztj3-InsTp@+<+hxkAy15FMZFQ zHLAwYv|b%3FIT@La=~2R!J*+V37agcG0CRmVDZH9*8p2+A3^n+sF?JatO<-ZRQh6~ za8YZC0cW<#_@OIphPsU!r*V}n7He)xUkuI^WR#nvvpJ3|vj3a<55g_WP&$c}C4GoI$2IUr(L;*^`bK6- z@h!Lk+?@MPq_>&hrx78(9@pgg0W8jaxYrNKTW5;pXq}jInsLaH!lh1l@puh2nU+;P zW$HRrKWu!SClor6)7ctJ4^vwMJE!h`N5_9Tij7ea$e8vPNzo8+{pWdR5tVZerY0ky?38l!^H>}v4j`3xO~lNOVwTlcS_X(v#DoORI+(i z*|5EtPcD1q;EoZ}h1+xlO8K21vk4t&7$&HN*2TN27{#K;f1B1|dz)Ss8n1g7h~o2C zWS6%fW-wWB!hxOj2HbpL;PukBE#sE6vY=qN~e!y-Qhs}Ra!s0MbWOXyj* zS3}BL!M|>A4X6%@rvKc*+4~XX=im%m(u5Z@Am`uwmWlBTkMvgx#vhL(Cm$aBALy-u50rkC}HcoZ4n4h8nE`%z-FKasFkt9%J zNqYk)mNM=G6c5JQw+ks#?<7KP_fQWU27}9-PFDNol~gE;mj+kIGfU_F?6XCLkkzSIX5wVg}M^DK1RCIlrb;91bTsup(4OmKzAidKC%m` zqtn>3*T^@wiG#9K2P8bj(PBsuTU=Z%B3%=Hc|u_%wFwbqjhKG($oRw{o6c|8pio=S zy0#tMNiOI|j;P#3@y2;QBdzaYaU6!s4LTQxnJl2Xq|6zP zOIqPKN2rr7A8SVFyH1oO{aFpoTyG(?n`L|RE0U;GSVkT+2{BS*9`cb>`joH8*A|%L zO7SUgwTP>}+`V#^bIMEVT*ZUasE;y_jJoEeS`B&#>{?hFzB8G)m(H0AT`ca6?cE{* zko{&g5^}GnR~5CC9L$`h%CG9?mhi`EMcycyF^BCDX%CE0dk%8SMHNg7K^=b&#)SHK z|4`GC`C6L7yamIFaq&oTQMq1Vy}E%DhgwL~I#~|u(&qrx8~Gl!J=*!vgde2voF>rP zbZATA^#{le@&@moF?gU?CLw=l+bya!z9Gm(%;*8L; z0=&UkHzbKe(+rRg{S+}<_#cP#&-KQN&$>rLd}FszkAtN(`Pv{!x#~P;%m=-elO-XH z&f(hNbn)+x1%0%9sf0Brbc@A)vOW(IUV+g9E}k>=@1Vvn73F_UXG$;pAnw(CF=RKw zYk`ll***%i+ppyj<>%3KOXP{fzfG|%YJ)cpTNzmUMDGA+{Xq{ZKgmyLH#MUacbZ6L zGB#Qm+4S!G0pt?O<{H89ChP6{jIgazd2{v-_Lx&l6{p(yA>z@h4WULE0aW(NLw$x% z8((`=&M+92A3_LQiMh1}Ap*rBhzG0mPDF@0%G>U+J(7d1wi**)8<^V_4@%j_sw@(N z3+N>k{G@^!xaqcZMd2KlRtkI(*ksnyU==@&8>Qr5bvR@S<7CKQ@_~00GmSY4Vnr3J z>`*{`TJzxyQ&3r`cG6h;wtty)Spa#ZYLIfWR9B`IFw!Cqc`6?WPF-P^9DS*3sCtyf zgJLY;g^F)b44Y_ZZllq_T4UyO!RWRnFr>sXtyX0LP#OD_kYQ;G-#ETENF@9q@Lf}H zqh{0;E^Q=~jw>y0_mH_g%uD5Kn4o*q;({4<8i;cm>|!J-Hc-jL=MhUo8+5qJPz2XC z%b^%FW>haL>gYlYQ@QpDj{PGb^bK9v1A&vbBh%E8!b+FDnJ!v$ha%Gc;Z~yzN>YR@ zaUqqXEN}B`l4iQC{3>%J-R85gspUU>cqB`<40M!L`fMD?bG-J?>y|g-+&0 zt7)RS5+vMtb+W*PAQuZt-^vSP(|RCRRGHuMBJmXR?LvoyIy`uqWEMP?qf{iBkh=r6#E(4htG-K^@w<;xS1?uR>&ZDE zY4d(m^miVg2K1)u2W@?^F41K}UNw%<%{!%OH8)q3C@z*b+ z1c+&{Xu8HjXU*732l)czcW3RcKz-x0u`UI$Y*dsyJ$eycS@woIp{)!m7i$q$8?yIr5m8=o;YorZ+R+rfqqqs=xv6*UYC2A;#qgbi z?CW)q;0GO#?NFkZ;>(L)NW-Qcv|qFf!GW zsB6FCs3P@UMvasOjiHjoB>mT3i@ANw_Wbgw0i+=7XT*#{u&%-aK+KN6Ma%?$e+B>C z0Wqup=5$5#%e;(-BnSWlqbj1%xzU@p+gt`P$j#+HZvkDFxSC@@9h_F=1)FIuIr0l( z#a5k4?$Z`ot2N`sOv~f)E8rH5AATv-b``?+}}bF-vurU$-NbdY;^OoI|Dql%IR5I8TL#D^N^r zd1N-p4aUPkN69eC8*o)HnRsqY2;QO9>N`S$zmCtEy#m{`X(vE}8a&&lD>!qx$|ohwXJsX4EDzu^n2JsnhQ2=snx$aiS!YP0JMmjLkFA_YAv>1oDj z)lkxo z!Y;Ruf5(`Ckm0%gkGhyGNMLpT@ZfoWYJLY$PC=8v2kqIbb(8aDp%sm=qC%$3Om$aC z4y=fTkG5H$ezFO;2%>4F(QQ)aMQAH_VOD@;NYxEs(9Oa^w@po@GF=MYcBqe9tph|6=D_KqYhErsh9bT_8^D{YAkunEnlFgM&)kF7<7q-(! z-=wK66}zUy5TU!h%(3idMUL&<@WTpjOgEJnmTEc~tD3Bgj_g2(IGz@-!ETLFvl~po^gZyT(m56!r zQq@UEcfK21JwTdBircU1$Zb2LmktW@^5gLKrf9%*>L2sUKo;ES_b+x7`I4$>Zs@SFLR~ z_xbW1E<)c5sJ7ngRt#XXSWVfFXLv8U70}Qhl^CUeo~RxGInp&Z-DLeL@%Xb9UbGCu z3lCV=jo+><@!wCYlAVR1p}ir%=E~yPqY+SGcK9DI*3Syt@}CT*?^C%r$#Xk%xnq49 zW2JKmTXB7Hf66h&{Zb=jO&@C;L*f(;asilhTfAsZwy+e2kTZl;naslK8|c_h$cXLf z=@@N&($z8C(lgLmn1a=(*8yS#Xc8hqs$nkqki2Lza`-Tp{mRrTb1F#%{Ekb&=l}O9 zGIU`6;{^RpTL+-73c`<2zFj}`uIr9zdNubI?IE~+?m(YZ2niPVkg2M$rm7JnXV_!> zEACX6bI?Z${j)G?XgnkL!q(E3mb>q}H*j6F3$TJ1Ng9t?$@x>H;XItdk-{=AS@U07 zAoO4#vXAYS-zXi?=$eB<1r@x{M|}NGZ!hnSu>@;8d5e8|l4Bf%*mU3LqSJ=1W`prf; z(>8gI9??d28cQ3g^L}B<`Bu8vkdM}mZ53Xl)W%vhLXXXdqf}G6O;!cG!jsAV-H4c7 z%uQ;#f-hDs!n&Q{MiQMq2(~66qfjJ5FNzU->~VNZ&x+Y!YD{03;w?8yWEJ`QShMgS z3np@^!X%37P;wp1qSp+3+sMy(@akQgpgrJ}=KnUXqW=A){>+1azG*d_R|OHWZb&D_ z#iVALO)2{m!ZVR1b7YGn32oK&%*>EEfqRr<7faP$_lPURN38+inmsu93D6x6UQT>7 zn)K;2^MPRUL&t-WlabS&_m6J};6NT=fDu2i1$=6mMCiP>8J2nSgad+iTYk(~(6dx0 zwS$U6MF+qt+06QGt@PZ`#Z2i>9 zEERA|Y8}U3)?ngy0;6|XB@TU#@yi@dK69A4@W@NoiUwI)R$nB`SVze@nnbtK&YZ@w z=&#tEOjeLLaWs4821ZRAKyy_L!fdG|?D<5{ zlu)I=fi*u0eQ6RNpp~Wxp=A27pz%x#^;+QvpH8xQ9 zN~3W3IFM_%p30QD-Lk-p6C?&0~G%O9%nW8b^%f4MsQ1!2c&TnyQr%=oOy_Nq;+R{s?|MBqpueu#Z?L$IL*uYMbGBs zu)=&akbl(PYjyZLKicg$LTy63kh@HtKEjQ9``#m;n*m8n^cQK%3- z%obN09`Q;ZWE!djLrnaYm^F!93$V3Y`}-?lVxgz&s>XdC>t4=U)vxgI)Z^VFRmf$o z_OEYgj|cS5_(|)g=#M;`5`AufJut9tWv8unKd!6EyOiMXZiL6Bnaz-^mR%L_1hyVD z)})c#sQb-@pD!!6iIxz}A?IrcOva0P#)_KJh0b~9`mx5%9TLc;pJjeP_5BuF^OaFd zIXLv~QXes|nVzWZVHrvOD=|@;`?pT+JbeMXQU13$8NGHw2~W&{X}?0Zhb7PA z(?$ZFYCOk1-3CZJFY!Jc&!K!Xz6YnFJy;x4?|C8kG`?GxbOP`) zEZ~2acz!9$J&%K0=-S&$TI>GR+9^6kaN(O^PEX06`bKCK_g-Q zsuzLj9BgEpO3JAa=v^Q~#&Zw)C^wL5DPg=y%e-RH%4C1aaks`qE-=#;+d*Wz3p9hs!bDt&5RA9<0_>7Nhls0xiNT45Ry# z`p~;(X<5e&wlP?3V>G!9J2=9RU!%H82Z7UjzzRpJYRo0u+NG7c{?KeU z^1h$k(E4Q6(f^4D*_QKSIp}l17b*M+b<69hVOCzNQR!k4fS6?oVaf{E#d0;QKCQ)? z?1=HU^#p=rr3nHB@8J|jFQ*YTli3?)b==~(YzKr(f{GX&(oLOC#H>hCzXIR+bycf= zOFWE1@$stu62%V?zD!Y<>XurVrC^e3dhT;SBsIcXnEY1MOh@VM;7xZl z;Ph0aza%?$w~rI5PB<@E%lCgO7OvQjmsdz{^Xx+^{k9d!Q^qlEzC6}~&t&%PR@Dv# zI!6Y$Tf%rNe)jGiQ~g3bxBu5ZHyoj{v$tvc$49K_adzu|k+yVsk_n**b3vzJYdUMe zExmIJigza&ZmUiCPZDOV=|p_hx1b7}(+|tV7&Z(r=C={R=t0ZLSN$yC!hkh;&yOF@ z*IXC&ZR=qs9V$?V8fl&24D0Q*B57DOMDwU9bF-p+0@Iu3QKw{c;1SmbaNnh4te~Cl zWR=zxwHISm4v!LNs=D|D2gN1YHv5S*qjCl58>oFYD%m$E(Pa@S2_ScIdwu(+Nc!=G zMG208iTGR^sQqne;1@~P=Y(tz5cIKk_=AF=HT7q6EliOD(uM!x7TRL&`_k(vRilAa z%Fkx6QFB-`%kFpreF;Pb>uB}jleAC|+rW#l$ke3gGT%=kIjli6%QFX^r zL`*{B?xyZhjdUey|D=DR(AI-OY{jITslo=U{*Ewky9EE7WE@sHP@ZFQR#6H(s3G5m zCtmp6r0=7`aihpcoO~WvKQ=>`zAd=}?ahufd7&aX)?mk2T`H}&z1FU+MO*9QPNM?N zW}!ze?X?a}X)#be@aktQ+e~&6D+IPs=MarP%bnL3v=?|6JQu*W$@ek$Ax$D4k{$vc z;vTn?_nt56HkNt!9a;d?^!c}_=@-VxAD#byib0Xlozj2@)Ig{CY*3Iq0jxy`RJ~RY zh(xJ)ajrriA2=xNka+nBMNRBU?rnvRfZi6c3q`=JvQh|!o4=>Gm-FWO-Q)o}K*9K- z7*QHf8wn?AoK7iF{?fm0$vBeA5UPi{2w)Ol1U+bwFuxLj<|N^Aj3-TC;)oO(9SEEnY-V*v(Pa`#rxG9;yemKvt~zQQt6r9|j!?Lu-z!Mt zaCYKEYIgFQh$+jt5r&MrMtMaKbqpi5;N)#k>PWu`fACbi>#0}GpDy?4p(fOT zC=Y!yN%JgtSq+WLy}@tZdpWI{rFNFdz;9Y*fw$-daWuGOar@i83mp$%lDYImVGTyOfA^6e@jvHZQt*f*V zAo6VS`!c~`BdNE@6vF8lyKDyUFKXq7`l|qzSt|Nw$bksxz2^bfI5oLGmXJ$@K8axE zZ*(+3lo6{+edfW+qfR;_+5;?JwNfwR-KrSjZP5=PG5jo43RveJ7yve_{I{f|UrGso zllTT?1qXok*`Gv~|4jG%9P9e4l;9~tu$>YopP;UJobf>=E+sWtz3;_h9!NPZJ|(&G z>_b9gn&#i!<-5vrFb9UZb}~N1jr4bobq)6dJQ@bFyMPjOfq;bxAVTRGt3cKK_yBUB z^_jl<#HzqQUH9Z`%u=9Gv*CA9UdsD4^)2r&K>sY{ED^^NsSeKrVf0aQEqBwwgfowYK2 zdVnu#``a)33sp)MfG?e`?F{}VLiLvb?0;6@>t(j;FRIjcpT3=)%g0=l!5Khxye)3* zQ(xSl8j8SGx&K(ofw28gDaWy{_Mf@G5TYrZ-1Q`N?Da!*3~Y(9{DSY06?g>^$N2f; znVIu4F<~)%gz0^Nm}2@zx*(o~75R(V|19wEfnvC1&v@{qA&N3FSow@x`1Mx}Gd!d1 zSCEsf*kOZ!Rlx(C%zrQY{1-`B>}TYtP}~GqFC%OmeXJ{Zl$S*j5{d;e6B6ntQs;bY zRPLwfVKWd+jANO?OgUWd=N%9KHJ6Epo#&ef$0>_xI_o%GZ%Xpo>D@`AyR-YZgEIi= zt^yGPCjw*qRwrgpw%dF{qvVU>Tb(qRZA98wT|3EK$>-N4xTsNQ=4dvH>rWYDLEMr^ z&7@Hj^rS`rhGgDSa^(mzeca;?Qk`2rI)f0n4VzCOrNgLkD4x_@k)GH_Q1}7gtbD?8 z)By#9oc@Ha%EQ3UZAllQ7+#hmN`zZ2h2ne{N&!#h$GrC}x>*^yB69WBU>NFHfDzNk z#e(sxb+cjbK-Xgo3;bZ+R_0VKlk-x;qen<=I&7Un$OtXO!oLL}UGh)J=C*JTi67 z(5V89(?quSi~IQL(oo|>j(BFN%U72eb#tpKXVop2A8>l6Vph%M;yNiBfp&6AtG9fP zEO201Mq7v>!jwm-@s~l7p&MYsJTlI16*mi2r`2D{)bNrRWKf6@UV*Sz~s-$uy@q=d)2h$0f`aO0The&CBDFvn8Ug+|}Xg%7{hRmfS2AUQ?Syj5}}CAm^+ zLQ|i|(L5W>ea~f~?Po}u27_cF=SL$}g^hGv2-Zs4ZD+&j;5{1G#EEoV3D!#9txU4y z33UsEck3)-3||)aeLEj2QX~G8J5Ep}s;vEbZ=X9#T1kJwCSS+@;q9%WvRvD?QR(gm zLApV@ySuxjLqfW{Te`bjy1S)8O1hCQ0VUT1I>Y&X)Aw6z{o~(w#&E+8uKVmdj-J?h zdw$T)nrA$G^|EXDV?g541ob;>`Niq|u|OgRz^^p=gMcdPIjs+T%%+Kl);Q~y?i?;? zB%swYlM-T;7Q?5v=_wH?&Pwo?ai_#+X0TZY`6k!T7!V_1mMUekFW|Yez#Bn_}G$wT9U!@3NZ-VvPz+wHq>^uq4{z8k#}&Np0S==Kze2rDs^M}}P5#Pb z;x_+&lv8YwinwxP1I@11Um1O#I{T$SF2Oge8iA3-><&OQHdiltT=BH1mN5CfryCv(YO` ztq6yK4ACQk>KDp^aa5KOtEvZwCvK00(N1nW1#&0fOsk(Q$zowoXT0#T+xvQX^c}1d zs2})SoU>4?seZrV6BD?^u?jpE z;;5Lh>93XJ(M2 zLMRR}WiO$~#3L*Sk54M@h4s)=K^Xy@KH=g_V)p5J&VIcWTkKU4$n_6& zdWuE{=p{>%0MUH>ZE^5RIrb-)F`!EL*NgEV^OmMRa*MyXizo13{d%FJSDEr3N8|r9 z5joNG-Om3Hu-`Idk%Ux$mi-#ZLLFC4gUsfVs!lE%&Eg4$02?=PYr?b-WA34R zG^$@0R=nc+!2rQq%2}A4dAV(VgxVjt8t*&~PoKnn`P*;uOCI`TNTXzCX$08Z|1Yxt zD-V6XGK+~CS(?6^`p3#Xdu0wl!=GUva;AJ^rcnXN*4QH8e@qs^<>6jcE<9zb_khcV zrxS!xIuUU6-Mcs?T5w}<89Z^W<@3^CBWF+iGV^(6k#( zmko0P&^y8ea+Pw{uVUnK_Si|F6jnb5{Dj_-p{)<0VWHb)SmjM*{C@NB4b(bP5Di)I zqRXAZ;n@F1PVGH^En7ByhBIXxHLi2Pa82!?-1xv1C_=Y)w)46zYpY?@V!9i6KADB6 zU-%`1QW-td!adsr<9D%Ff$hVh+C&Po3W#$TeP5e!T$ClPkJShSsd{2nDl8VAeDR^? ztO^nsp|sx$_OaxL^;Jwnv|#CxgUNrGqiq0`%}{U}=i-}b1!%%6H~J&i^>Vz}!cNMO z`@#P1JGsU6oZpk)Fmor=f~*Ifox%n(EZ=rBwDqc2av`y?f!kCA--|_r_e(S&r`MaB z)MCi2X15W1SBhg))9HeL8c9HX+zO zB$U(#rWbf!vfYNPAl<94zHpBb+0@_#Y+zerO4sFi;F)f_!z(n79Hxqqfw_JurE2O>p8fN;|7y2#8*BB zLEuTZJ`PDSR&|rsn}{bEcZ9VdhW0Uvm!u(@vzKkF9go*jSDP0{xO@l@EYPq=>|SdX z$P4MgY|zTof$olE7N}U*6q?p(jhhEeNoIkzZzzi)U{wm;`s7{)vUd9fNT89#VWshX zVYC^J1q(so)aG4XAu?($;M%_( zGhF)YVjwxVHgBSzR**`0XaYCF3rf(45~RZr%e ziflES7dAe}FXzfG{1^qv{DU)WwXcf=Q?5boWI>U*mvJ@Ohj~|VFm1N^F>CGs0CY@R z73Ev3(n%9?$;8Q-Vgm>;CMmwGkOcK$Zo*qrMPuO~J1eBCA;$awWsCl85=HxWh5O}( zsn4mc)B`GMwO(WL`S2s*8JBrvQQw<`&k$eA*RARVEO z7GW+e%K2gO27udnk&yf%pfhLum<%y#+HyFDqfq1{-OK%E(4DvKqG<2%+6D1-bkR43 zf#sQiv@u-3~-NLni+ zn#=cX$(y}tb}WL@HYC&a>8!0~Z1v>t;nIZ=cUIlG(3f#`4U@GTpIGHls!nC9NuLRCx#U3ZB6c| z%c%Po;;t=$rF7^Pc>ov~?Lc-xwd{hH49L7~Nq5~M=<^a3^ zML|O_ylZ>_0w6+;0K6hxo~lv*_-W|otzB^|`0I*Y{EVPWB#IopP13x?)3^8(Ovzjp zS0j1{q*gc{R*Qn9eg$)<{fyr^(eKwkufW?8ox(ec(17{?x1JD%kVosr(l6(PPqlfy zLPSb+TufcoWfBng9?e!61L<2l4-Id{2N^Pt&9y zRAqlQ86#9&>=uPky+Wm>mb4t~qVisD+iP@cZQDYTpD(E7lvW?ItkYGru>p%hC&2DG z`C@$w!+KZ)InBmgsem6&O(J0Ycyk@O%6WAZ_V}O`&g!`SES%ASDjtWWRByXxSujw>S zpb4@VWs1kH&J+-X|1=Cr->h=>j+@|DwisO(DLS#VS8lWF=ext;YFpFqNNVP7iYr-Rp%gv zZPG--ecBtcEHqmvA>w=+q>EjZQ<@Yg2rKGKm^hy&oaR3pV<{TX3^mI>y_oVzIi;W^ z548C+L0yHgg@?)p;&O~`yrhP|y>y|t1(a36-WOx(@>1%)!J=hC?O~QznZ#Z2+t{QR zmC_nA8*?lhgfhvi#%UWNk$ZNEGa2VI(zkNuGr`f2Y7@<$S>B50P43pE8AN$19 zw{?KSZxgY%DYSOLCtx$P+D6h8w1tBs#J(#gU0HVJ6Ldk&SZ}eV$MT}?(ovUubrD|D zyc&)Fs;xRz5Szv99p8XMVkG#$SBmD+5ywsX?1#^m$u3bnBz8IDOzjTV_57H>%?`X5irI(kA=c-0G$X5Au6pq3XtV=7b^ezTq*Nl;|sE6VI3$oqbf$HEPBk@O4z#Qlx%C?Yc{f3`+3%0 zyRfM&6Z0{v*oO2}`C6dkX14Hm3a-c~AeeeFIQA6A7uRDivtYfyw_yTf!wlgbUT#V9 zkIqTy@RLkA+INczGSNli-Ohe7er`v>6K3s~IZUq;a-^aMH;$_&%07nVspE~jp$WW# zcv|4y0NP5kwhP)yw5APo0`;xlI}_s+2G~=+^EK4BNbfi3r&Pe6%AFsezBvGO5Uf>u zUxT@;c3y+t6?m^ApDqGd;E&~h!@bIUxze{PToo+hyJ&CTj4qsS z-%-AyKB~x9cjtdI+HeYPSLE^@*Po%xkgCJKM?ZjHyKu3BI29I&A1>MYt`lVExBb~S z+<|18Zh1p{4*@^=1eqx-IXk|fRx+zwJ}}{)ddo9J5O2J3)G&9nQJm3=1Jl&ve1y2N zf~+!|1UawGE-Rhj%Lvp3Cf1Hdz80BvO20avR^cesEj@lNRZzkC6UoZhD zp|+WTTn}LCMJ(qFRhkSH;`%!3P+%N-5YnpD$$IueR*VbKOGDiln|Ekc5Xy5tbQ@oC z8*4Inyt&^bdtuQThP(wif?Hbn_EVlrjcB>z+sno)9}W_7#H45nLFUVym38_VIu4O6 z%G_{PCs-@R%ZV(|{)G`knV?R011BX}mHiCZh=lV=6AY+#Zi#6eb}#=HGo zks$cZ0&QP2;2M+d7B_xyR@P=gV>Nl0kq%?V$V;7;CC~ z;v%O-9Re6g+K7Ch^_`juuy2=a^D1a>T+zc($tp1`P%OiFN>ZZ2X^G{NXc?I<@)3$j zK*h9$rNhCh=Dl{?-lk0BXMt`{sEvj#MEl&zSt#gVu{Z_zkZ*Z+vej(o(aTj8f7E4>#NP3M-;yuXr6y=tS`#Sd*-zc+w+GKXd~Z z`DM>0ne0bU-z)dFMJQmMf;t?p2#xj6fyUn5q^?q|$^&&#U8#;Jdq1#%m9NUFhQ04y zi1H|W7e%w#0lN8($;U}q%dQb!wL|bbPVg(FOdMF54G*Bq0$_Y`U=sx&3bfMVPIqKy zdNj3Q5R>eL7olX6DdBu}#aZr{_E5C9#!}z0?Y2rYQ-cDWX&?K>X}T45+Kn1xOkV;J zt0>FTKCEjD(UBUFf|m4LO3|{e85aa>Gp#?ksLZT)bqu;>#w22`+qca$7+Rd=r z9Siq*{Qe!Lld|4{7;{Hv#IELxt^5*mz-P#j8jx|0?Htz~P7bC(C}C@<2KgmUj`f6z zXyc^NDUGk(Z{{;_7z|&IGo*XGMuaUJiejr^l)?$Ma_hUU?{RW51*?DEn$;UcyI4U( z3H#A~J&ND$V8#VqTno1kEnHyaVdrFOLgXLwS|_;-q) zktly)2Xi3>L)=7F5h?C9^oH?b`n{+yjZysjyU6pUZ62^t;8=^odifniW=?m(e zLD~&+7xoyYq?m$E_bqCOFo8U0n1}0s0gmDGha44aLI`vnB|$>i&5~3 zJY=Q;qZscFF_Y{5+mc1aTA z(1Dc2bW19spsMOYC_hy~Rh{!U%rC$z2LG{@kmMa{WTb2Gf;}bO2ZVeK3fXAQx2Eyg z4@5Vn-e&@={0i{w*jSUvBGQ@?LInyDo@r#$ z_T>{zV0lG!@XL}uu^f?aHZ*ceJB@HObgjBL^geb znZ2CSCQ<3_(nCfPO^bIjn9B6z6g~VBcAm5EIz+P*+TDhBEq5iQ&?4WF=~ozKC7{n@ z?N{-ETX}us#|$Ofqp0W!&~3b}5;8g68xVV)cRuCoqqPq!oY;IJ>M|JOA|`WqzX7W5 zcqYq-zTm&#M^K@>&JbrbE2>55OA^wO~nhNhWa&ho#1rPtoHW zV&^4^5A#X(i4F3J_jzJr1RwmQpeUrUXw-KF^F9h#_t1E6#2V8 zJ&t$^)*pR(VDT90GQjipeyfHQfByhKp8VH}p5Qx+Cm8TQE7^dk=QF*)H)Lj?66)O@ z0CP$bBPhv2C2dL;@H{bC3sQChzs;;(e&5wzIZ|S9&lkMVHc&nxkdnJKCmzQ=58vF~ zASydYf{3i$sa_eH4hGs}EJe3v5h@xL+t!TL74)8e3?j3h_9h`w&OS8w#yW?Q#GE$N zlLSpt=NdDY0(v896sHZ<*mbASskuuLv8Hbh`w9epmi6VxY1YqB(IuyWezSzWs!ig-3ZXYs%H8r6|nb>Up5k!%T*y_jO=^5NAGfekq zd*4+m%SQ%i+5+JB@Am#n+*ei*S9AgFfjR$cW0>H1AL&nM?E4A)@wK7Wm|p0Ac7}bQ zcai>1Y3dgkh#Q1g!564TFMwF^!_cIvL0o+KQo#OB5GoR5ERwjRw-z9A z0c0kEKib;}L^%*78kx!eLOaq0PDuu_kO%zPKvTJeMZW;Fuj{v;?U%J`5i<)T89hrQ zX+7(IMuQ)CUD1C;1CNH0G^LK-C8gC~;Gf9YQhyHye!8x2L+m_t#NXiiWeuY3A=o|$K9Vs@ar}gYaa3sKFi0uO=jVB4q%+S=9Xr8sl{rEtI z`wAaBB=bHu{3IScnolHlr~Olg+i}y$%Boj;CeVCupf6VU0s*J~<%HzERd+XDnA^!F zc}TPTX#(7xZW$lxNMW9Lz`ZNuOE}aKWC@IrM>52%S)B_Iz2#&=OB7q*n^3yBCC>Ts z`c*av=|s8j&S6S*lW=zvvh|P(qZSv{obuy}*t+u@_TY;}E6BbP*J&GnQd3G=MvR#zQ(!42=v5VWpGn zGVtx+NQ!8g#PHOfH8Q`=gm1IbZ>ab_jVw)B9DP6TKWfgw@J>&4vNR_B{#hsOuL!}WXt3_nneavc0@9N9Eqv|B+&RkM`PxWxW*A*kt zKAdUHG)pZ`KYMdsByNu>@lQjww&jnB-fbR@65)+=cA=eqUYkB zmC7P!P|DI!n94TzMT#I5xzNeTomRwW)e8yio$})qx!fO^H&xGwH!+&H&WbPwIr=`m z$+Cm*l9JT)de)UsFT7Dc1GGE%xAV4N7Da!u9{(>;-Tqt@z5hXZ%=Mp`ZhDn5|FHt` zyzB4_ZvOwgr}+OCqtw}aobzc1V(7Pa@ypmq(a`$eW9*N8%s+P^?$_dc{}EULI}m&_ z`o?&Fr#kjg7i0{N_UZd2s=|?HYQ?3f#X!eR1_M*9*_MmR(2#!|8K*KfSu-$11jk8F z{&2E~kfP77|8#eheb8tsEo7KKp~ zkCYSqV>=wD#l*X2u zXQpgx#OZrnLVTtz{R(GXo@uo9`cRiRJ^d@lcRF4IkjG$=Yq^s`a1MLsg=A^hftr`G zqj2LNZaXp|C;i53)5%Ls{9`9W%Uxzs6qEK8R_O~>)MIV=*;eG=F*B_1Ba}X-An2f^ zv-=^6`ZEqBG2z)&4OKH?KwJ~~s*=kP+~#uewA#Ka7A)pK7S})80C78kH^uL6*OgYq z9i&-L=vA1wL2~}8G8x2BP2+-}E+g#1iOTZShI-slPlf6Y1 zSubbJ$6ZbO4;ro$RbOzbF-GaDSzT~iiD%QKCP>tM2HZ0*00>{A^vL^--VY}@Oqs%n z;$WJn-Apn~_t3TPN~oSN=8c|%3GVPQ3&Wd9$#n50Kxzui#rL!kq3s*2puyT1H$BkU z6@aMLJ7U=eT}PhQl^U964Oa3Xawp;zyE5owF6oiGNH|#CmtZK0KHV>OjBJo9ZIIuha_0XT<^LNmTJtZ9+96v20M8gDDUWd2bLg|4-fy3@* zhd^o`9;UuoN&Wl`QAzgYh8(HcfIT)^p0;_U;Fz>#OoCB?XUJb=OksBNvPTULm!H@+ zj0{^*k6(PFJux}VBeG!@WuUvDyg`Pl1+uqKFASf@)P^m?J7h4aGe zcHDkt<&6%|OM?NS&}`SycTMH~^@|x!M8fZ>jv-ftT;(~p-)=!?5-i3^?4$e1H-N+L z)w3eIU=E^1@h7Yotw?JfnU7;c7+x*eZJ)LyImeL-48+2=z>w0nei=EPNX}MiNSMnb z4KZR1|E#TJpQBTt(d_vCJ&p>Y@nGf>T%VexthAI8CM5wrcZ(g1DyFT+9(hF}KLP@8 zf~jX9t!m`*T)UFY%P&JAIs&y{>K+DzNa-`Ch_5`8K_jmBGan4SJ>+m8GpN%U*54{9 z6{JsQusin;DMEtU@{r<)yPyS#>Eymf+cKWQ4vkg{4_7>-pOR1``@oR?3Dr`Uv9*=C zFyfs(+M?u_h1Rk&W%O51v4U#PRzV)1T3Wx&uzq1=RC0RvOpt8%dxm6%pJNO*$xj9O z(!k4EhipdT-U;Q9#V`U1IR%9BuWneXf=rPIA`c0+|DrLq8E~{1Fe6XsA5OMANwceX z?!UfpT$cu*CzNn=VYXxuJYL6uxDqr}=C1Vb-4e91C8@F1=2ni%mB;Dg({#Z_ff z!eE>St$x?k*T)GQ>Z-!sH;`>v37n^A1;ikSAEiQ)HiIhyMkMF_C~P9wWjQ-Y98x35rp0x_VSD!w7L*WuBCPGg& zp!)@Ev&%}C-~Kbv*eh; zD}+I>Ye*+OJZMPTwHDt+;rD92!dn1J`n92eJo~iTJKj7r@;7?=!4B^-EM-pxwQS?w%Vh(O{BtFUS(=7)|az2Bp_7)u2-wg`XQN<{@YtUqHcp!#(Fd8*|Q zEe$vnL=0Rt^8r=?1w!gTMnPBu1E6As2ckeB5%w2hDC+eDNtaqOpJ#HJawR#RLVU{& z|D<4G2A~Nz9J?4ZG`_msy@2T?a6}dJA5rs~GB2<;$6a*IAP+{WZXcf*DE)(9+Hsdx;Ig#1QHdLGi;n9-)KV#eVpnjIhY!QQh) z@ii6l#=1N!n{3rosElB#j$LT>F>D*{eL^Z|omon^6=w4$q-YmlQ>9SkxQlUq`}5!( ztba8tJ`c%vMQ0QR_u;Bbm9&*;&x`jlto4XjplA08)Ux!d-tmYDxoih5+-XobB(8At zl;<$&Kz(4;LCkRiQs+r`$dwLOG{_iqp12Q%pRLYUcxWG=IgD6=nb4k&k>h^bd;Fy! zcoq+_l8g1v?7=}{Rdzual{+)Pwr`9+DLwc$U&_qEfae=1J*G&t2&SEFTZG@MRJ{;g}5v>I=P~2 z-f2t;_0*TYihCU1HTS~1E9r9f#(MwjT{YIl@K#}5_fEMitm{bhS9V9xFO)2LbcdrV zGl5smS{YP!tU}FJeb`^M7c-sVduF}%BrN7UN))8$99kcS&LW}OfX2& zfr4BxsIlCOnlgh{IH;~V=mlkj{%t{MN}ZvXM!f%Off?_SfE+L_MAA!7v-M>WZg(Tc zY*>a?eFyy=hikDZ{9EdL=r`<-jG@J_j8<}YK#o|<%kZn5&L3-f^_&CdW|p3T@Orf} zd#?f7WB1#j_8$w@M*nT8JminG`RAzQpPfXD|7$y@E~qVE69CSs@3$G%FRj1-IN15C z9gpf6^wuw}KM*^83Fzl$pO&I&R3WqPuDpW63;KQyM%W@Q zZnPqCAn7Jje@%^;pmIO!Ff1&8 zrpo!;5Q5-ECdVu@zFQv=iuF%mwuEBrn(}Y0Jk=?yvQfakG6@A4$iUO(0Zu&UF|oX1 z!4Y*qz(ACroApBNN6H1jM z226lNQYFqG1B`IaWI4c4yR7YG4E6{(VKv-%LUJ~0ZP89xu2*!7bu74kqLEE*`PA{~ z`3U4aSDE3D>C>cm6aSVYb^$NeBygs9KSn*%ES7|TAOE0RyQHD+eT3p{94IMk)7Un; zk8_i)5dPViX%%cQ0XG;5ow#n3R*RNWBKq7S&dg>?W?|@?cbYU|P*v-Y#EVkLlXygO zj>YLBB=WbUkMT@b(# z(1^In*s$TdDMv(pl(%o#!onSlM<||Yj1rp-^d;D?45d0@Q)$5A2^=yovrqosD44sRC`->ep<9#h72)y!b8HnDbkU+wNjq*~k38uJ;KutjmE6Tpf%I!X?vA zu#19ka(79|+6v5el#cgpW0nZ(6anZRA7rW0^`bn3ve_9^emC{ zOP@>7AtW`l@IH_-{x|r&Is$J3Kj%kV0L!i?Hv_M}-xe#|jaJhjo`pF)C`}_cMIJwW zTdq7(#IdLPEzu*SPhfr_3En055b+1XtPRhZX$Bx6fPwtqS+Ci<*8(o~Mgk7T#zwaM zb^v|<@z0;cP9A?AEOr5_Y!PC7SZg!t8H(@k9R?Q=*ys*u0q&c|N7RsVCX=?$CZz>X zU<|PhB!Jgi$Lx$GpJcK>rg?gJxdXFxX9I`GH8SFb+s^IBkBdgS@K`jAb|q`?aagG- zA`<4gM1PRWfDSuFGmpD?sIDtp}bS12mIM7D8jvi$yx@{zM_RA+dv zKenzQQB6`M=&aF#4Wl#H0Zs2TP$O7C4x6 zacuT^QKm@GymN_a$_K?nI%t?TVYg3AZ@|97`A% z`rO~Rd3L7}4Q$AL<2{$asKq0Usu z6AsufrZ$v<{#~y+5Hgj=D5IQ#zQcQDod&X@nwqy(_K7=_xo18}Zq6SI%YxSrH>Wu=+*-MpfP_EQS>WeIq_*_y`CYoeo%Wq0s^1jfR?}n zHgF2FFsPF)0oIfsXT<5XZ%Oi3J{lg6IPENPUYvcuf?q?0LqqQQn0~2Sx4UF{t>W`Z zQ>HL-?sA}^0>eLbl215r{TuJHH-TIKE*G0gQL-PXOQFkXRFkzO;H<3`9!xz@q`F?# zhJ=>oD z?vyCu$lJsvJ0Z%{Q5^7yN7P&qK>XP*ITPs%3*1Nxr}W}8{oqq_Fz-uSEr<(l|56?x zCjMB@kSj_fBQYj#i?BAr>u@?$Q~C_eO(|#5Rz9j+WqnyBMg=v30LxrVgDGsPzNEV# zzyOVEUftx}px04R4bAOiMjvfk8+w&OZ`>@*{_4C~FNB`xx94)|161STQ!B6E7$GD0MYj4}8p%g(s1A9 zR}bQwFKOZYrgf0B+RbT<-)O_z>6;D3C;<#XAJ>`~I9(A5Sq#OZu!!>|BrU-^5o6W^ z-V+>nX26)YhRp3_S*8=@7dfcr8j?<6A&BKih+)i@nQI>~-L!plkJ1ghVQJQud=*WR zUoeZ=tJ#i(R@W`5jMv+hBw?0ceUlTepe>kR@4`E=Fx~r34b7ma!9;Z_3d~?VRD>Z2 z_n2z^Wytu-n!{UEP2idcoKxx9Kdj&+Eaaw8z6XudvVx$VsRnAN75Okb@p%gGe`jFjf0dvB$ zaAUaYROb0XNm2{j-7S;Rx`-2O>SmDCw-^UfUp+9MO&Z^t15g}~xqC=l$6H4USuW65 zY}f|mRo%Jl{NFtFI`rSXlPdy9fBU!6|10bLhmrmnH~(;=zr@WAFs0Tv8Z2c1#0EZA zL}X+P>LoN&=?LKLzFwy(A&j>h&vijPK1|50H5qyrhVN)MV{% zliy!xQ`qierV<=xfG{dtaA>Q{!50_=&3S>CrxI4Fg;2~(Fp|EYy~s_pRVx>;LM$}q zhRXN7(SFw zXNH|Fa(%V_E>tKim4$kkUfVHm<|{UTJ355=r&2;?wA7_nwr}GR)*H6wZ&34U-JCpf zN4M!0n<^oU7tKBU5*K}5W#qAbffO}}4UWbk9FM3r=rqq|K}X1)hHO}pL+f{DPH&n_hIlf-3346pu=#LYjf{mCi+5jUg%7B{`E-inE- zHCoS2#7yf-W+k1<(AwwzK;$2jrUIr&Pu&?ia@rYLy1l=6ny&(Ua`tyq-bLJ17>;}8 zFIS1NA)F^P)V$$SPafGix&j-qS~cS&V9vjpT@2Al^V)wzdaV)LaLa*w5E=WUM%bnd zDtTBjt0RCSjcY+>Iz$}G;X6f;4_S` zl7{V8HfB>>2;)a*LHI9bBbO`OH4GNH$XJ`G;DhWWHS6>BpbR)#laHX)|yMw zEy~p*SER^yq)`i!(QNo*cjUcgn@Zp$V3G%CW2t~6<1(*@n=9N-#={nC$W#n{Y7PzI z^p&RIH<33USg*V=$%zc~a^{7jC&bLb1u`8XSKbUxG?JsROdSpu@so+pbMHeeAP$Yk ztL%X3&G4p8<}7j$pt?;Km*se;Kw#iyuPuJPu@FI2v+nAB^~uqnro+KGEQl88MD&ab zDWfA^u*>l)mfpa)%?%MQHrgJ1;x%D-ev3XvY-Q3!uy(&SW%utv2^oxvp?Wkft@wXSq_O0s(WVL^~#|2h|<{e_YN zynQvo!)1m+)+%hu-2Rw>Jur>oMpi^|LKFDKt@)B^RvrZc4!Yt}GhrmXhbOZNyH=Ti(g-WbK_)**@g zJ@10u{I9KZ^X;uZPCMPL%iGt`Fo~5xh1<~Xkw>=MtWTD$Eeo`@3-IM=fHRYS?_m5@ z?gJD@%t+7r?-BfGDjf3@cxSH$BU)-eJID1Q?4z?%Ixfw z0EWB5L&m(f%cR9i@O$T0x4tcP7b5pfCjw^~rq$bVFTpP(oxWJbTO{XLs>4Sf@f_D# ze&{Q$J`TNeS%;KhZUL1Vj(k^X$_`~e7s`J|A~NG;+T0y=-0*fIxMs4!?rv#)mr!=9 z`$ZJolV4>UBljP|k zV&RX-q*9>BRg4R0SLl^mz{3L!aEeKhbi#C(Bt=vcXE##O4xi_u(1@h4^lPFs7Q7SL zM-begc4>&|P{NQ3;J-3ep>mE(o$Bkmd^;r26nD-nZF{8)I{a#qRRdvOsq^bO1j`K@ zEAqRKW8a?3pL;qW&@6zk#eXa8zxtRzg)L(7PVZ+{{im#d0!4(Gnb*$L>ulUhECgsb zDS*BP1@T?$4yX`tixabyNDcKMLs}+(&Z%u=Pz1xJ5r|CyKoJ+?;^&w5XHdEri`c}0 zO`N-3#dTUA9EZ~DXTH9CEON5z;lxG_R1h-o*Rxo)YoRgifkZq-?eCr?xej&DNR2M|gs!_l6b= zXsP_|+dRvop=f!gny~JlQcRYPLl)OBvkpTG?1&&F>fAtgq^asw=#K0g4dBU&!8Ddz z-f`+<&KxlH?ip{KY!{te*hQ0>ogqMCZ*^8?8vw@=E=)xa5UWtc5vYXFq8WTGlUFKG z+p1Acp5DZGr6`?RV}wpe+6vDCzFgt_6U`;*di_i8ZJB#xT6Hasd|J-rFa zti@JMX$%z!6ieT!J@$Ric4qt%{yc-d`m%PJ3J^2@Z^it-Dx!X-X#ZM7`R{`p2mpt` zIKk0Wfoo2oqpW-kuwwcFtHo(HBOuWh`*A7xWTeSy=NZb9LW2P`FxKs2@~}B_jyWOQ zlDa@~@dRR%a~vUebTBH~fbBungl=p6`G%+OhV8A3*4_0O;(^=5F(pBXk_H{6jJm@dym{5(7=v4&7i z^sHnCbJjo;Bi~&pO)oaUhF)lfV_&+5C6pIdUL`9^uGsB?3s8RuZQG~tApIJqm z&L%*ak;@!VL~SUJI5Mi?y6t6b^R%@g)kuuwjZvlWs!8@i$cz3U3Dwo-@%ryY)PGpx zUvXREr!@ljjh>UKe3}^z#8U`Fr8{+008c1dzff~@uRkaXMsu^kBsMi7&_svB!Sq|l-%)sLM^@I8yKZlAUrndU3}7-D1;c)Z975z} zq4~t47gg)p=Kc|XzpXx-uQLZ4$_8A$WtKZHJh!^ho$m* z$>o)JQY05`oy(0TPAr!r=Y5;Emw%AcCN&9dwA`wN-o`>*?7*0q43C){FDDIZDx5AFUu8 zfRD!aKwACnoYziA-fz&gXpn@K#*f(;n{>!B)~p^@oS%4k-NUV+agFFn^&H~03?$$V zYggdGkL*{@F}A&&!Y+_~!Ja%rM@DM7b4We6bkB1!UvK$#utFn}S?v>@9@F0E5|-fx zraW`2ximiLSPt6><}J{nYzpH=t01_M=I!KkpTL+&>UaHd)j4`xTME4(?=P9DG2{3@ zW|Aod7`ZR*%Vk{zhDM*j-}WNy87F!57%nFmyaI0woQ@QqDG0ZXf4B9N zelufD&aw7ASb<`OT4onQZG7Vf+{4(HbuIP7bp$l#TZ+RV9fs2}3pyy4stWcy7j)|t z9Cf&|FDgjTCRQBUvQjNqM)la_85YDzYK5UBhOl7hNiab0 zIw&@%-mep1gkX#C&NOa*kLO#LPCOyiSQW{#UP}y*$lJCI{we`YG1AjZ=?*LwfKxvV z9Dw7~ZJT4r6eD38j2wrmpw=6r%;tNl85CO7B50GWfaZ{rP1&6sBQHytOFJZ|P>}Qr z6#5|P{VY;IFqhlDH&_kIL}g*FFFQ}QgBFxXBs>x3rNfB6jLlGL+WJ9bVB+`q$#7X~ z*#Q!%vq>iobic`K4q6B(&uRHBD4A6@1`x8PIU691?_X4Ljbug}_V8=ECWwIM@FcN9 zY|jZaBb2QzNj#!A3ce&}BbbDFvWLee7RpEO*cx8MqjG!cZy&o5=ccCOsmj~TzTQmK^8}lhI&3UIvS_?F0y#r^}8@Rm=vcp?b=obDI>sz30=sW2> zFY-gtyQSEB%uGl(5X-&QxQD{-m2Q)6&&b#QZ4oqkUKIBq{O_?>A#Z7tDi^O!$Ywj;x=Lg^8quOO^{R-1=gH*a)vkB2GIA<;8Y(d#k9fx9DF~KoF4bZjkPj?(RG9t5k$IE zDen(st9$>q`;2?e9pgTn2L}(nz*yfk*PNf4v{0335x9PzKF&kJ@He16{{q*EdLj>X zX9u33xAs8H0rT!O%>UV!uU#TqQ9_L^plG2%|7j%nt#Cq@38rLA-dQGy;LTp{68$C=j|$Kf(sgN74@al~THtD=E@E z4Z%o(C@d`1Qequ3{6Oz)(QIDI#o1bn9yDbiqyg6gL5vqMID7mQ3T`$`4DxTC?Qit$T-J(J#9a>2=hG(4%PX2ZzGz16NVl^e~`P zG;~F%Av~LprhCI{$(ca6twv)o+zcc}U&X;=mDd8UArnOxw!iF3!M{Ga89vLHxKdf@ zzK_bMByepZsZxKbs~>O|up2gc-zI8>1(8fVfRR_r8aCjbn4TeW|N3^k^&nb+Ml8C) z50E}39NZguv7*P1cBH#*M@h9R>_t5dW;E>jp^zn9XBqtk?d}MT+d0`{|Mto$f#xae zemLr$4r0S(An0ca#OG&8y^0#_UTr7AeT4%+OyYWAEWpnsp7=icITS#5@FdnUe>@W2Bwk|0Xczk!yf-w@UPTqJLP zL%r4QzO;Sb38nRkm7@EtJ4aa6lXq8@1k3lmR_bx6SjP`v?-J(3M;lN8Oe+3Iit!&k z-p~8=qsRM^BtIT6M)fg|qkFCj4pFI`kz}J60RaJp+J0tS*R;X{0GMTbC7K?dc*UO1 zqL4x#5*;o#t^pRaZf#%hW45zN3FxEkN#DF#t)wcjGuyLVtHf+X`Ym*0Bb*+~{|4yoAq# zPc2&SD-$|i&~)BvKaQ!X0s;nsfC{A7-@M;b3Gm^ND%yM>0qk*6SA$YiEHiif#v=T- zdz9S=pC<(TQ^V^Q9hL%ky`aO~Tu7vh49N@!RQh6&6uA`yVm7_40i_bWv!P4#%Dq~C zr*w50oyG9+3);1@sSb>F)f-H$L%jWB_=tlM^eBU#drWzB7fZY5d zsI}l{9v$eoSQ+;+;oF8fY7Ky**L*k1_Qh^&;1IAs*AqlVh}fSiU>)QkEP=9%+9bYt zqI}Nbg+FW8`vuR2B>jH36q0(3JjvUN0qi!TJ*WZXF8XDrfYRcL>Jk%wX{b}l=6oY~ z{&zk|NCC0Jpkj7YH6_c$Yc`4$=C6jcBp!retmq|*n>)oV8F*=diPiFDiM{EVI`QPq zSO&U>bc5=-c3PAwhxIZTx-pu>-W*|=uZ&teDSx{+s) z=^ee@Fx5%0ziBnd)3OQ{n3QZbXb7-~N;AR2Ajsf9a?i@kaYG3%F0vEj&|-luR-c@R zfGQC(cpIXmCSXfbwtTq_8q zB1)1G2ZZn!<2M0fW<1Zt=A|SR>PiSP`^vT8Z;99@LEZZ((c+OQbp?iT$P&+uq>+Yi ztE+r;LIsElAl@*65--EQnArs0hs>wLGfaUryjyqu(;lp*H+yzOiABBouaRR%sh1Uspg{kMSf(yVt`>zO+q%EeCWhE z;sWjoZj%KzN$?vIbd63PZ2}=7J=|NI3SKCOig~v9nA?e0U=AIa=N+sVp?YZ7y%1-o za|yneL~J1r1zIiq(iKvzZPd)(ML3k?hT$p-!&v3-_dcKZNC69Rh8L>BuuK22>GAqNIq&_5$_KsnvRYqH^Lz1lDfE~hJVk6#9auQ!IA&)^{KtoW`%bC_X=t1Q+!r(1sS>L40 znFXebCQy*^(SeA+Hi3Lj+REY9qSi;u)v1q#-zEEu2%z_6C*Z(s?8}3Fu08Ki5e|Lh zhN~E~Pce#3sVgcd`Am>f$CnRePhqE$R`{4%kOHa1z0G92vFpyNyRVZ^OqVMzG1gHI z;kL-H2p=K134Mj_ibAIcy)@T=B>t4L$2J6=8}SwTSb+yw9etOwDBbx4Wr@nvZ0V>r z({#bDr0MLq2%TQYu2Iptf8Ev)`mF}8$CHJ7=E}H3idMok$Iih`Ij&|^t7TmyN|kOc z0u`xYrE`?Gy$y-MD-BFXUtK4Lf-g750mXITkHhdkK8>I6;Ezw^dnWkQ8&Cltc(|5V z@<9+3${2_f{=`Hi)EYa*-h8H!2-HHWqKGTT->E{@Je1tjT+S%~RrpzY={RGI=7})t zI3At;(TH&Md{x>;oZ=^=a zOIV8-OxZN4FkH$*FTy_F=lC0>ihenIe`l+6G@%{t3|6zl9cnz{h}%!u|WPd=VEF>VZNOvXwR z5w=w~ku0j`smfqqE=2s*r9y9ueg*w*Pf9{shpoybolB_^jG6bjEkny@1(%CsgvGFP zMoJg1HsqU(36@1i)lLJ`b!>J*tdx*z0i(OG(tx69%I!z0knN8r{oC~L_X6Ors0vt^ ziS*DbZvKKitU4|-4?3&EQEY`|1Q^DS{k)gq1!UeKiq}c&QT!!;+oC#-hS_1eLj5h~({8kK zm?vL8qIHEjo9sFgzA{g%br9yR41F36w3)fWe4vJlZj^{QiH|DWTV1ZB3^9e4PhAlh zKy8oKdnK`Ce~sSDVBi}5=Hr20fJ&tzLod9bS{Jee9T5N%$+c81D?W-oN=dT4@+Qgy zMt45iu?X;oLRX01f>6Y;CKWj13o#l(vfjNeo^TwAUlG-wprJk;j05Vlo@1bui}rb0 z-XbTQ2Y;+$7)NePm7@z_F_>)xR!A;kxL=1@q+Qzt7r0jdNuE#4bRkOHKDqE z9uym-5?n#LxLgm7(CDkd#J?O6nl7IP-}}y6fcLI<)|g z50EUCg)eZoH5jBPJ?$Q~-zKxb=0Dj`92ze&uWT}qO9^A^wVTR!6jk_~sSq5+$bK!^ z2S?yPz6mWU@KR)Dk9HWQK!%NtSl3%P0Rar_gY27&WhHJl4Aw6if$}7F@j5KaBoK;& zpI^I6+Bd!MtPetzL$Q%SjS+9GNyV`8Zd_kw<8TUt^cqWfgISQ6;K4V?ROa572f;R! zU~w%XBB0S?&9d0^LEAYqE9jPy97y>-h*fK%;ti(8jZlubxQH-D-R)#OM)`+;Y)6C9 zPg-4ETP}@*w$J)7m}$H6G8oOT@?J46@3W6Hm0CaRFm=OW&B|YAKGP^Rn_r*)+!3qM z1P!`2Ez^n7)w@pvl+@HSlYn;Aa>Nx$R^M<&?=T&;P~lL&FT;IDCl{;J<;(6Vy-0rx z+Q^`2&VPKr-v+0i)t?=NAO2J>G1F=)@S@p=W#?Wo+7J{t*H+f`p?CAu4)+BzT6VWE z8JUD$Z;rKD=q&i{RF@$gi=QBk&K#1f{c~L$_!dFiP{-#WN`BSZG+-$4e5Eu)Wm858 zi>jp*t2cG^#ai$r+Z0T{Q0a=j7RUw<*W$Dfq1=A@X9bi^XB9R zCH6D@!Ndivi8Q?@Jb7irNhN)qZ{!V*9Ilv!T#J3>^QAnVchB7NkP>6&iOnU;h3mLG z3VhDd2hSQ_!1jOH#$lF3>^Gu~Qdc=xf1XkChK7@GQ9gXz_0wQreeTH|R|}Ot?#+n< z*#DaQ@GjwMA)H}$Z}98wr$P^^a_Qi}))|c)cEe9nf2Favz6*Ly*}dlqTerq;u?pdQ z^%aAK=(va%0u-Vns6Rm&|9EzOsyx3xJMll@462$~V1h`WkPUweL5fv)0k_KNkZk+j zXC5JNcv2SZt*mEhEp0oYuz;ME*bk!2&?dX0hKnodYYUw3I7Qj-Z;!8WpE$`V!pqU# zu6{D!+*2Z~H^CU`l5d5^ z$l@W!iy~h|*`!<_Ube2$tag+vrlwctH!UR#I(A5j)w3rx>oh)2>|J$ib)2>XSIsCa zA7^OtIq_b|a*87Bhl4(^qO86SnxR&uvQsX1<+qGie$6*R4J3)w@X;iz+FTV1RHLbB z>C-r)IeZ+9EC-`nxSTAGA6T5ez6xT`6a0AMu)5Z^x%##MT##lmA{kEe8h!cV$=3n! z^wuAe3&BV$%!iHHF)y$f-}y$!n1&KvG$~}VW9BT53QJb7Fi?HMeeriVYU@ruK7t&h*c92s`r zwM0cPBhP_DUz7R7I5N!ha{fa{wHsvw@KORtNU0Hov`PYfI?NUE<%nL2ug7U(IHbCC zA446Dx--|Z0fF>8RT>TE-74d&7j!y=Bl%d^6znZN|4JR{ROJ5q6Q zx>8qqTwORdssMA&%wF`a$;JtmgXaMb#4=gT=zPkC!V$az8Uas}c;$*~rVWvxAkcLv z>C8dbwmUIs5b9io)VDpRT_dH>5Dr7Zh$hXWiJA6==3a(*T5%*1&SqDISHqU~7}bWowwa!4~qupL+{ zvwh)kKLG;-v8$>hG1bvQM|}1%`ifusWn;aiw+F zqqomRB2mdPLf6GX<6{0Pk+p{zb-2R+P?dzM(cB1VsYlCtWRtjcyKP90`Z+4MHEqW( zkNYNT=U2Y?2*d(1574r`|0DA8n+61s_hW6K|MxlxSRf$<*mnq6zJ!D%9NX;FqCVdM zIPg;hM8xGL>$&#GP^HD#;?tj6Xb%5;5SzjmCR?eVU%XsLFTRSQfs$2o(NL@oh27r0 zSh=TIIv3c!V1p}wT`51Q7Ga3hEq%hjC32;2JuFjCO{N9{Z$h0*I4bz=P@Km4zN?ps z|7Q3w2n$NWF0r3Z|5-eo*b4Lh=mb(u%xFb`v3DQ-?-#$tf$1>+#17gxtB zg0a!AFp_f7UIyrlNDCc}Jw>Qo=xCR{N{Iahlv^EGedtrEseGk%# zXgy@MwWwkg`$P0>YuV$^vlVX z?QraPjs>9K90;O|#kn+UHAw23jmug}{#f(kzKt##pMKM0Ya4x|Am8An5ma=sNtim= zsqQ?399*OV9)1rVqIFd1s+;T{_ZiHjv$iAjUKw+Ff_f?~ksD$PQ4@c5DOVfag;pPi zgb`u)Fkt(fDRdaGGcA^D2}gP3VJ9cz)~87AKOt$bcN2cf-rV#?sh1UFSqp!$5O*paCAB`y%H%GQ40W(_~2Pb6}hZ8}{*J ze08RGg z9;AJ%f726nMP(>j8_Rfv!Km~&OH{!UlI&!EyUcp&~0-z&{5JG5LspMka*nu{=!wiA#~S)m0~{*xCq z5EoYu>E|5V>EkEYYscJAaI%UB31x05-wpO=ZZm2v+0MVjT`C*cE#iDRn+0i3uYh-( z&9W2r3eq^=KyeMC(4xR>J5zh%bwKHBOHX4^((SjU?|JQRTf-%14KIzixST8@DV<*M zPxjLlg-mkR8C)M`df||4yH-;H^^~?19Ixw32-B&j8Z6YP)FEFCj5j5Lvo@~Uv_TmJ zHcb>2TqR+-c+|?@=qBN7zUAV$>TKD1?I#{gfRXbpmyN3(ZQ82NTGT@njC{6= z(9}6JLIEoNs&q;xOzJ>i+u;C=+@y+9q~&|K-nbkaS%Hm9{{+hU5#IMj-oR(8dyPOK zE(*p)?akyDS=R~a4r*mn<@ImpkUpZud*U@PZV~`9QOk%{Ai(d~c%Sft@OmHl9HF0j z3__9}@Ig}OGL6Ps$=3;m4XYYvSwf={N(5Jm!{_(TgY7paO&UQM)Rp@UnbW8@bh=u8 zAm48c!=A17F)Q7sF0W2+Zs>4b?WUTwgC$X~4FOOee5^FaYJ)ntbc=o3z;x~hh zoPmzMw57SrH~#QnoOP%u{<>vpyk%q3 z$LB5^u!-r5&vdpxBu0boFYA~d7cKpL{}MA`^HL_%W5gW3h+mX9c0c0Nb96M7+Bybn z^QRQrkAKxO@QCKi*hhb4@gF^s|Jo}3;!^pchyL+!nmk&^HlUF~-%?>d(mUCh;1Iz? z013QWjS$)I5_ltX3rLfs+$07-+*IlpiFaOH@19_-%lNd*w9Vku?6ubv*9!L)hTVGT z*&Ehdl}3HQNk-6x5^tk?jpk>Wpwoyh_aRZ|s2eMBl&mWmp;(3;s?tuJMGlURhTmrx zkIX^M^aVsfO(^RYTFCl!V@1cC?nCx!qZ2MuhT#`3qI)0kgBb($(MQ@C8C#he-0m_6 zXY#7bJlB}9&T<*2!F-)Z0KHP3OYta+4QsvvuZi%Ls`B21%%18sf0-~bLcWJicxd|4 z`w*zawin5L7`w|eV%9iZ&TqDhWITZzKFVKcyV2A4pY8An!KlWPBJEmD!EQ>6$_8*j zKnxO*sTGv+xHS<>-tZK6u2!5tI*F=4?I6Iv>~(W(Vmu6W^lo*gWbyq-s2X}leJk-P zg;#{j?OLhgrH8cp*@D_@2*gqzI|;fqaUe_}5~+$2bOxkKez2&H2wpiS$>B=x1I1twsJ}Ap57VuKSxi$ zqag*LgvTSU`Be$ODq4afx0fcdHR^6O+RE^CbdZ0QlnO%8fbWJszj>b z*s(Mxj$cYt9zoamowO01{@6+qrUvcwaLQAcdWWIN#*4?LTi@MDjyyJ00C&(43--viU@mP?XnTfUB^_C8^Dr}&*R3Vaal|txT!oIqbmh{i$yRQK5 zq-T#}`0wtdD~dgCfICST;7$U2Jf;gsq^AEC*8P4xzj`_qE%gm-4b82b{-X+g51Iu; z`F*WE+2bv-)7dqtcecNmA+n09uVpB660oj#S)qZ05F|y?P|GkFoA7_$d+195A`|eq zUm1=FutpkY6T;^+6jZ6&5;`lh4>Iky+B4~F4Hg9W!qWd(d;S4w{MEDlc;0{5;%KSj z)CMzvH(;rsf2}why?~~T5`d&XIv4A_bvxM`$HTt4Rh|1#C?$2G9gmg)&P9gvuMP|- z3sAOz-keMGOOCnY6;>r}R~;`d9QG-Ihczo58vP8ld^;cks!At0jU8-vu^t;43ly6E z3@YSQTS(--WW%2$rGYRoHEi^7(A~g&RHkAZNVGIkz`%^zp3?2TB+8JlqSK7-d!g<0 zhYpThH?%FVzWkuXFg4kJ^LeJK8_e#(elN&Uc+jZ(BC6=}m5O)ZY2G_AHFaPFAjnX{ z7>r1Q4%xiI@C6FCL9*EqT5+?GicEVUZId7GK-jH<0-%`iBPW4_pEg5yN2Ac%xKoas z7&30pn+;!3mDc#j$%-;OAXJlsel}{X^-w$@Mw70*e;OlK+BQ*LNo<7pY@yU$@OUyr zmDtes8aq(D)M(>FKl;1JPtZn<$xj_nDXjlEQvHnj{o648tGxcFk#P(#T*39e%X&02 za);nWqqQPYr*h~>@KB>6Ai&_XD5^zc>yz9irw>uifKK7Ae z3ZT1@I!}&lv!_z`_e%vsN9QBdVt?O&fVw#|oHXy3JaLCC^xO%YZRl0S;Dw4Zt+L)y zjnMhR%lA)B*4_O0bH3E`ub>gh7;LQ43`3;orzx(fE)v9rZb9=pcn;dUJ(@%SrI^s_ z$r0K}1;}9VDwI1~P3FBxstBQ9GGf`0^ZJd(aEDw&8WHC@KS@GqCAba6(=UWiU)dmP z;ZNU=bC#Tt@4t8&FRk57Dv(&y69ONo0l{;5(2Z;MgZkk#9OQZ)L; zOP@uSSv?!h9q?C==cHX)DDhY-X#RLkzn6+%EZ{%+sh_6=5aaS7`H#tnW!3dZoaIEn zFR#$~2&o6$*L8vB1HAeH| z-P1@)5;}pTJ&6@vgLLsLx^c0?sqkd*j2*{T^cn^_2y!V~8`_|H*Gf56(ox6UL|;JXd*1EIJe=p-M z713Yw>c&!2r!T(dibpFn5d5F$BZ-cLmVyDlcg7!U`Tts#_)Dq(OO=TGwMrCf02&G` z4(E~@B7l*$hNLCtS*!6z$Fq~H&}x8E-!yH+(CGU5kfr+eo84Iw6utA&?(AS#K1ZkA zrUw=iT)jhet7Xj|=13^d8*hF0cARK)bUA511JSfs(Wh;xiA0}EV4<^g9#?$|_QhY{Hs_e6RD_Dv|*Ld%9!!nC#LwNA5N=VPSA^mSuiJ$!D zUsd7lN+qJoY33Do}yR=!N^2 zJBICx{o4TN3#-hk@y51X^a-tNP@EcoJ6#3~M>umWB z;{B#0hQ@Oo4E;$`qn@IC4GmIP$FaRq#Xx?N}B$pc>nBH1*I*+?P=?nKIVKX zmw0ingMXw!gV;3L#}PhUbr4=)_AG5;%J?A=ld1<&blx(qgs8tBFm!LIGO0Yz({BE7zF|!@G=e){7}L?R{xh@6wXTyr{Bo0sf9c%PjRFf+EFOJ5WDD)smtsgCCUxzDGR{H z2yix)cLp)3R6Lf?ziy_HSff~)zN^$W`!=_iVcXY1{DTN@5dIhA7Bu9c1BG(zr5d%% zXI?Wd7M@bW46 zhobpr@7}--wAL-Whf*!GuhbTa)7i$gc}28n-%O;(N)*fJs=REhrFQtxUogD^<54S@ zR%+Y?E;pB#ld1%poIH2Ilh624S~G_in9h!47}I(P?zqv3Ffct7hX|3*Z99L&KYY0| zrPIXl2F27P@KuOiF_o14!zw?Ny*T;Vd}czjELu2%`zt}L;(i!KqDvx>h*PWrxlbnyU&q;payy5c=grCe!sM_Y=#c zD#xM3^(@lEn5OjYI&;zEKlh2FH1g2c-vT8=`L}bqs+v=$CvXssP-Wza${Le@koLbY<^6>< zeVg(KzEu6sL*6&6>Hp}Em*siq9|$NeX@6`Ce*e?{$F}q@Do$Mbo8P_%fG@3sC?Ku* zhkeyeL4T*>Ad6%HRNN`IN%nIln|0U|Vf5|A5Pu}g$>rU9DWlQG`>&h5Ljjw;v#j-& zF@-sYxX8I13|;1T6MgLp46mECG?lX8=m}@I@kK^RbQ)16*ZpXnOfM;~LnCMSk$b>+ z8!MI!vFNv$3dg~Vwbm8QyLm*6gS5jVVZUgBmt>1}H`c0==qS?6@|jn~skqG>g{@bS zo3JY9Pn2I<;y&nhr!3d5?y}|&#b20KibXbW2+j(Y?ZmC+Jd7io6i@YTUJNSa*Bvys zO>BV44mH+*84j6wjeIDJB81U{UF@6^qYV|&MBQE{WdLirvS};hgci*eaLB|DLxR*8 zyvuu8AUQ7JiF{ zNUy9V%Qc8L98EpWuzO&*fB1X{Y#jsw0nGnV$!**eWU6=u7dwaR=sIkoXr--EDBP`3 zJcy3+bJY`FxF*ejk8dI|grV&Ew%YBb&>+PM`3`BjM=4iCc)MGmAn1K_8I6n5h|nhK zHxl(o{Q&>c%^vad5MM4Ux+3Wd1k6t4>CGLRkrqhB^=Nc5>*+O%@&&;md zM$8x_5Q#(u!3bTCJB=XVYh~?VHXN4eG|UAgf|Q1eIgbpJwQkq-RpGo*UaLHhu*-5D zbNH44(@O)N{NGUMzgDQ9&+ZQdJbEb{KsN<^ndwAI48g)Ov_|W(Q-{@XVd~Wfv%(`H zlA=eoQ_j?euABEAXo(?lT~Bmge?&NHEq0&O9rzveJUm>!t-U%r<_2hfor6&!iTG|? zKMx$R)-AEMLX}QgzpQORe0Mu~k?ov`CtUcV*o-eyh_G`NuV+26;(XBY;62kikGSH_ zwx7manhJ6MydpqsL#h^$;HmXAtCS!DyHnP+4erWcbTwm1?@h(qUEf&d#<&e4jf!3< z6-B!H`gk_c*hz;N|Zc#+jJ5O5}&G zz&^Jd1_NF4(sP?-t$O$V%yANas-5#W$5IkJhC6EI%Cfy-+D>Y#Mu`42-j^3qdH#STU+jBKcCV{KTn}+U)%%X;fXLmrQYyuBH+={ZiiUMPb(=vj9 z{Frw%om8jpSTmmsGTUDWhFhK&b-OJ@y4>>&WF9x1LQlw9+X*W7k4F`v?+>;h9wT^! zsaiZQF{;A4Zcd=xU4xQ46;GXOe=tnHW7By?A)%%xnXczc+{$Rv(7DMpyGY*!f24n9 z>-600gO(wu=Ld-^xQI!&qEzeE4~a8u;+tf>I{T2)@jj3jDl%a)=e@|G#N~M#MzSW~ zR?xw+;_N;~(U<)35&s8W`AgmS-nadTpU9#DD1#fpkpX=hO4Xy>T8Wuo84}#NeW?Z1QPSTYP#$`F}M<|Vz!>Cc^ zyx`aGmnaOR^^+b6H_4zADbA0xMDKoHV$zL=hY{$9<}1<8Tjl!7sb#+3u1oHn1vAv% z+xYVP| zeQ`(=9uGL-Kc^A=)|x*ijQpY}`a5Jj9v=mOtO?#9S5-tl>I@R$QXa$hvPvMRM4>0a zLVithE2C1u82rlv^;KVj9?nJ&bt!yGxv1A?u{PhiAFi?PWZ0F(xog)CRm(UW*=pSz z?lq8!mcP)V7x`9mNC_XmfR{Jk8xwW~uE;A6ojP{6AANq)g3&7Bif-R7AeHG{gvdP_ zxu?eJc?k>72&!<&XjKm$`iR?&8$*Vrp1nLLWwIhGUe+s$AgLAm8% zWc~79tEHq{M;ZWXT?Nbsf{Y~U8{jU3Z89F!2N8$hBbynal{lMP4C&y@WhFZKtZo$! z2Gmpn?*%A5M4cXRI#R{^Pa>I9!^Wc(b3wb9Dmow(*|C7hw|fw2Gs8gXDy|YyPtND? zF+XBPVXPIJ&8+aPQ4fV{f>5^@yu8}+{3~q_DlVwB)35P+FSt@^A3ad7|JZ>1>udhY znf)m1KgKDOM-5odbLU55QyD;PX5v4_x&ZZX6PU2@rS}2fiOs#`8PgxcrX_&bM7+?xrJw9S*^v=KK}RC{i`Y!&f}k7h{zhyT zQv!(1?BUglPmjbVh(7#T^9IAZ6&U`*=8AgH;zjFb z_1M|tYYzPNH3v0+`uLh}KZ?LiNVr_hjbJFUk+c{zv#ysfReJR%&e*RWY?zU78^XV7 zfpU2=rSbts|7Q`{zdq~lNQ*zIB60=u25N`1D{5EQP3+0K$O)CckCfuSzY74M<+kagEm3 z7T^cR7Q!&*M)7%zCwVdIh%OTDtC((jLLRbXgu`jmhrlC@n%Pg$hXPon$OUXvl3 zdk6(Un?D$x#f;S%Rsh#^xsi;0;&O72KU2-U2w#Dh3f%A*gZKOjoaCHY@c#G6fd}aB z|8hP4J^$&S7S*rinJipj z6D>L7rh2uSs=&!&@2LG0H{WnALt=PAs}$Wb-8TG)d(EXsiqW(CI-V@im(R+U*7+)??Gc!EK z$aZTyej&O-7z0w$jYKh+4$=wXV+pgUVhji0w)u|@u;#7!Sirf7ucaZK5zPCZ>dLkI zd?57ZW5{9a(<02*2ZY5?K`ZVU0$C9>McD@QGW!TUy zfCRs-IHjqY1ivhPXQ3?CHiM{NT}e`$FoX*ff)oLP`XlK8R97*5;B0tF-f}o;2!SeV zm8yJatQbm{BBCF^PN~6;qAf#yfS6pZV~l_$qi^XYuU>7H36`4%UriRdmrFqn6d@taxL|Dbw9> z%cNZ93;wj%?)?Wej5SQks3jN}InaX+`~{SK7Kb7%W(xV_G!}74qOG-MOUX+Pr6GFz zhQ2Vokz&_a&efigw=J9cVz-NiLgJl4i&>P%*pWp95!@e}DrzH8#tcQ6jS=aF%1<#u z9hI!k=O+f;(^FxbfUI;d5O7HQbrP>}$W%^T1wr3v9S8g1Lk0RNZ-f*;#@hrQ*Ah8a zF zMp+1Ay;7`Ezjf>?n&xH71xaMCY=|o%V?ri#T*Tx#;x6t9PE!_k^t_-bWWxBdxHE+; zW>nj)`4eAkO4o3M?)@DWeh2HN(zWnUhoscahiJX`r+(b&x&H3UyV6G|eX0fTL{Kri z6kt&d8TcuO4Z)PHFYg|*UvTA+2X0dOqHDlvvMj~zTYA}XqG7kocs=Kw*M-f$(r%;` zsvW$o)yTd(xm(SwCavTD(mk#rLi+yd^L;v9Q=YDn=kW#(Z38b|`KRPiEB1Kq9*;Su zbx?dywD*Geo>=ek@wK2&=x0aE6}!V|;$Gc=>>};IXwyf*Y}4;g=su4rn1_-W4*u-e zzU>ds0c))k^a{)weE%lq z`TpenQ_S-tYM7A-z|f;mFH0JWnnp&~{im2`;!(`A0ub}0vs*UTLmsT!zN~F6U(0CZ z0B8A-6#~_@>(zwMf7O}9-a*Vif<@BLKB68l9A~!hE!mQuF}fBc1k;B1)M&IDC4Gcj zr_?eK---&AXai^3jX}E%%dI*z%t(i0q1199Xhx*q=;>SRF_a>6 z=3_L*?Rqq(J=b_r24~yvdBh|gp4Hd;KMbbONcucmes2|uY2s#8L zTf#(hzR`4bqteX_A}dp#_5vhZMs$XsKtH0q>^jk8|1IYE&6fXoOwzUhDbKgj&_YI1 z9I(mJBPRE=soK(_(hV#EO^0s*N{49_k1=e#7I9scIT?gs-urjO&Tt%`K<;EWHu<4< zsE1M(t_`;iJ>A<{K^nS~fc(do1Oxk}1@@#f^jrFwZ47w`?L%%oV$JV+K2U3k`*1=Z z;TWDTy?2$`3G{m2=cj~5nXrB!Y$!GB76tAiD5Gg5IBq#9Y3}`=)tF~2rw#<=o}e+6wSP%~?I6aL(Y9 zXg>kE?G+0!j3+lVl2&G64+}8O!-L%6=6~qRecf^{Ya~=%V}Mha*wZh=IT}Y%$HTGp!)Did&zJQsLrnCN`0wOP(DP=%_iY21Om=SU%>vcoh`# zbG9=L^Rk24zLwA(g8nRD`m-SBqJ{rh;H-7&aOs8g8ma zMc7(?65_`JJFZSa1B_}ep4jQY+S;KlOUO8ZRYU|C#`$r)Aw3vc}c zN-J5eNnF+ft%vwTB3bY5=imd_2H2GuYSE2sB46=_1JO^U<7kL&Zl$;&nv|a5AAJsY zU;{DMLtU(}u6p4$Y$duG5$1i$6gTl><{ z0fJMTAr;LkdbA|mU!XR1e9KYY&K0BvmYPc4{rvFRX!KheHpl@*5S-)D<%?F+B*)s* z19a#wTfNqMmgiDVK6foy+TJoZ!n1e+u#!U;;ovTZ_90D5ZA6rehvD#neuBvK*?uFt zizt1;q>(G-3(VkbWgJK_OS9l_u;2Aztmr98mt=!Xp;!Q5pdDT^eA0U#9Wj(tzK3@LzC| zANBLQq10rGLY5S1Ge2l~GFwTZ1(}yxDaZJ)d@RZTIUg&!_3puKbivN?{Ce%}+LQQG zF7F_}13>+Rgzh4bm3YI3d8j5?j~GdOkrAa$kJB$XTZqbB)xRHw-iK@O%1WPG#Et zOD)pGb1Y-Xs%2iMVs}`LiZX4;IhW%y;5c!4cA?ge)H=z}>do(M)$LD}x`WlJ2B-8{ z#jHZhZ>U@mMJ7oFTXmAfWl{!(0oC&Y)){tX97gmYo5&wfJ%9Azfa>|T9vtTO5WKwM zkhJ&iw1GQ4^Y*n?Mp>%q@C=lOo^!E+yb@Z4W|@X?<= z_&OJDg%ln2?e`uW1ki)K;Cmvy2Q=ac?|JdHAWjefu=uwg{0`8An*n-ou>CguaX=4_ zSTGMRF&y$)seRiIJ{C9?c_RTRy^{jS6I)xc;YL!Xj$WE|_5Le1oY9?}{og(KzgEwm zpwnN~^M|bY@A6AN2N3-KxAM#MHW*3|rVRDfcHHJskHUf`KT7^v+?3JC<{E7F23=$0 z5C4<=QiN&ae^Gv!^C-Wx{{O4|atTfn^}pqp|2ilA+C2V);{E?}*9YbQ-SzQ*VAluf zr!Nctz3by2?9DHz(?8(B+27flhRR?F2qJ2GrYz!FyvGE)pDQ0$7k%=wBqm4GZqwN8 zz6q;RH-ZSeWZaO(vY7y{LM>IxsxSN1(o{z~juV@HfGLLIJgbvXxL3y`d(&VL`BvkR zy(!`C00Ut;a>JMVLe8K;8k03uKd@xHOnIO;YXqfgwihMxiHIUdbPh$yh%t2}LMct~ z4KF>0)5Uc@*GlhBp6e_$1NKp%?9@qcWpb|Ndyne@M30c%20e;?jo`I9&hta5@fRj8 z5Po3fq|so|jhQc}GYJFr$cdj4O5?WDma!=s?16c##^%DBx8Y+!PABq6LFyxz_dMkw z)9yHp;wea)NY!}@KQ&izhoQtnH;|hU6i3?6Jw$m(p~K#r`*bOoj;({dD81RtR!LTU z1Tx`*`Z5TaFrRU)lBMrP%pLCKhp+ae@Mj0w|IOa~D}?{E7yWTh|G>$&WA^`Vaq_!b zU`i~hQdGy?$E^&lq(|ia@O!~~$#A(7K^0EP8`cu@E(Yw5C&|{CdE^&%eC69xr3m^5 z#WI-)NM&Q<+%!HiN>P0<>!h5oz@K#z9giJW3eL}6O#LS(Z;=TL{*9A=5q|TXlQ#fx z^7sFjlmCm8-{d2H`rn*9{jbQFp0SRlrGdE}4ZpdS-D5BSz;9$=YwKYB?<-Khsg%-w zsFdzEL%UmArc-r2wo~smrjZK7#sCZCv$H3C5Pp^8m%hY$LvbF>5OQ{YCjO?QY5gS{ z`n);)IlcG+8hRoVV;35_O6s}1Tq9Z{I;#ts3i>=668dX;D7?(S~s?(POjDd~{zF6j^?1d9|U-V^jHFXX5Q5?BZBQHDb9B_-#X{fTE@JO+#l3==(h=LUX6YD)yk|DY8b^ zh9EZSFUQGl!}`8{FTu_c9CK{rrhRH0a<2v^@lYJ$ScpN)^CF@ zOV@Mk8(~ZC6_)C^!s^}Z?gBw@z#ghcX?H$xwMq5S(fIsSkS+{T9Mn3g)40I6mR1+H!e92XewqR}8sj z-qtc!(J>78J8cnf7w&s(Zxs}gZ9^s#Clz#|(lb;o7;YOS&C@f`S(pZa{>irUqQIV> zj?wmzu8N_Go}2;92%XOd5y1bGpO-S;(NS8L>1#lw3J!7muqWv{gA+jVzPwjve9%w- zEbslP$|7c#Mv^uL7C$aHFiuJWiyyuJT1GnqJ)b4Aa#Ga+LH}tkw9FHJ|3F$lXoBEn z(*2kSE#tRiB5B@5PZr}R1bO**758f6O@-#1^;}b~ZLY?L4=%2bj?jFFn4s(fzD2gi zTjg7EVv8FnZY|Qm(H2TLr$_A&jvuuI2=r^0F&wIv^5qB&G{~Q8C0)))NwP&$R2wA6ijO=(N~`F; zRwPR>a^;+>Zstixz)TG~-uPvdV+6Rz6J#kZcN6z+SZ8aa1B_+Romu!bhrJA{c8r4JpY>j*KY@J4} zJnT&|cg=DFjdyx=-Sa9ZORn+MYYv0-dH1d`hdvvJbT6~=qmcj{UQE4YEsyf8Eb@}) z3uoi|dLyj!&-GA#(5R|AU!tdh5Z(KGq?qr$=RZw0=#~Fs$bNm^m;cgkuZEEf#q5hM z%Rj7k+{gtN$Z#vt`DgkD#`2?=!xZ;VzYT7YHsVZEnA@{Fu9mc@ zj9G2~urm94=xYZt`ysn@|wN-qmxS!3DX5iAyOufOZr@gOMSOg&ChZhKDNya z2wwExya^1AY~???``7W3X$?5BXU<_8TnVyv!)7;TVGO%HuQI^%PO-&7vv%vQWY4{L z{lU6(t(%x|K~q|S&_+B0)??~}M6%ci0DI5m6ZR`9pIgFww{BTbgHjLlmbk+F1kap=A#jy8N(O=XN&X+)yx z3ig>~J@wO(R~xuxEQKWCd|^4ld2YXyd92#88DY&%tHu`f;>5P{D^j@&EWIB4 zdwtFPXu@T53V#@opW7Sbz&Z^u&CCYaZCH#U=&?NWL!ml;93;D@M^K#gga~4AJ9N(g z<;SvD0&HK68$VZe?=!)_Til=V%n#d_8UK@$Ou{m&{*tv!s_k_6z0UmT7XSErs16Wrd(Hc;x*`f9<{--=H9&MBG66W zqvYo~r#C=Fd`eQighGXAv9XI|VI#+fQ3MEkXHJN<#XLzlKVfcsES0P>ZGJKkB)v3c zzBDgp))Y~nJ{3Vy;md8M4e>pV>*7|=ar3r(96)b%?p|&v?VT6MZ(v|#>-gU}>&Smw zv;M8E8NWE6nbw4nR>wE62xN@B(YJOCx158F9yA(;k&KL)o1UzZxSAOCWk{^=C@JI9 z+McLbUo}C-h*;lVc3zUiaNktl_+Z~e-$?#gaPn@j2N8S#Bt1i2=tIa(&xa3{D?R|R zu{vSVZ-osXj%bJliE{r;k-MWZeg`*e15(-FB1t`W>pcK2M*zEYGx;L3u52-KeEHt-jlen* z5lzTDKYWBAjXYogKBWo#VZV>xhZ5f?W(Vl|z5V{j{?I?|w*n|2G5V+RE>yIV0gYYv z{>Y-t!lEs-B?T#@XJG2pjn*8~p+5rTAnZZEoT*E$pj#?zgSeDQ+eMSS(EWN4&5-4+ zmAfx$Y#G10y2G`@zLVv!xc1!p>Os{bVSxy}D_L%3qvzMX|iSTxNIaC+j-JU*}d#WF?xm1Y^6~BmV(saVyA(_a))qA zGx^KFZh?gFY2nDjJcnw)!8|=o{rKFNr9H3K(`ssuH}z5QnM>kVG=h1Cdt8xheGCKo zDPU!TQbC29?ZJ}839y3S&dDNK1NBm)0xW==S#WL%RK9`ydxkxMl~slNEH2oE+35cL z=G_xiQo#gS!^srgrF!py6v5$PczR?=xmI$Ewt~zS_J!`E{hz1|&Bu#VOHCItHni-X z6P4DuiFLfaYOg7o$j_!zd$Eet?4+MGYAitqbU95-`s`D%=_ae?Zw>in;Q4^9_!BcT zzkO}HRb<8v@^mfh_e@g2xVb)be%&o=Ac704^A@Vx+MTO?rYr~ZGp7)Cnr7Zte22j7C*rLk=a<2=Q92<*E^JLTA>)>r#udmV^KF>|(4%ovjz561gX%Hy_}T zRzxIi;aq1MbW+F2#ok-%y#M(Yw2?+5?`Z~2OhSUbPZ|Ev1OAsX+`8kNeC!`uAE_`b z-pz-?ZJ?1~%~N`E*(Y^Cir-jDP6;cV%hM6q!i2GJngWxmdZ4o>Zo2{fRqm}6Ci8@P zGr;6y+fIf@YSa0J`!!fqxDCfkOWJdVoRnt;4 zzEzL0IAC#DO9w-OHxv*;%dJ!Nsx^|6FoMnkP$qc<#}+~B+wiEO(+Bj*0T4t$BK~6a zu1x~L-bJ2I-25h*sM-a~lzZw?Pg~t{kasWz<#wr7QPPaJwBuR}KSsBDl@55Uz1O=m z(D*RhpnxKt^~HJlspKdI?RWQC4&k*}sg_mOoGtv*?ZMh%f3~@YPteP8Ro+vLwjJv~ z-vdHl_G9F@4JsWz< zv6qNG1jXJ-5W)%=7zNCEUhC?7lo{gFQ}W^E+}zA<=opQfRB;M$;tWSeVG9_I7#IPa z;=YvJmm3Tbz&N&%iQ@+xAeV>{qUM`r_<$oV(-&f36Y@~ihY3wJ09q};_Xp@A>8NYg z01_AZ-f;A8Hy~wXrEg^KU}|P7VdVBRL6wt|0R^EMiAk`2eqVh_`&{YQ3&|coG|&%$ zCLD_NZ>Z7I%RPv*-tQkjG<@5Mw;s*VP7{Exum6}cm6h>RTdTL%bI%8C{kg%+L7R4; zQND_sXGcFM6f(Tvq{j)FkJvg;Zgsasr%a`QotgLq-{(gLJeMdjwC|0vVEPV})(FlE z!GvI`$V0O5N}U>Xn-SKjKe$cG*tujzNd_e422;396x}5a^SQ*zX>COi# zW@%|;qG$Qj3_Y{AakBj-NBAog`GJtM{rjQ*7_fnD0$6J!fBmYXj*z`Bhxm`c3#Ob5 z6nNnj%~g}PF|jgNLcRnATmQ#Vmy<-e!A&Sq3;KR9^FIoZe_CH5Jx4tgdp)av*xo`V zEl@Cm?)?Z03rmm>@?4SMH!?SKZD<>*BYFgk5j5RO#pHt?ig?SbV1jEg5k8D~TRtC<;L z6oLpcdKc=0@=`jCC-EhZSghWSF!bnn$qOsJPudfr@1#>ki!G8pCIX%hbHkKO98Ss8 zY%=rCMb=u{3Cx4SI#Mi+Vu4DzJn`wT zP5!NRHLpL7sk>OsBU)22W(I0~-+$yw!$v{YLak;CcUWyuE-Tt*l=2?Q$>8!uJuOAH zUTIHKp?&vLp^w?d*3SkMhIyJTm9c@*NGW~5?$c{{&2$G88H_$oOpz}c>WkLztx3{5 zsJFY0j?o3sFGC1}_&F5Fb|c3ix`OvUP=4Em7E+#fiSYFI=mp>q9b<9_hq7v$G{c^~ zH_-8#I{|UkdN6y5i!d$Dt0zoYg`inb!x7ee5f&Z7ci@ww(@~lN&zp_G8}`pQ!9Ngw zXhv1*vd4-ODuq|$Z-!UvT>-PN#K-3JR>L)OIlReJGv5dSDz@(QciI*=~8Jeqe6mzA~k9EO9gp5`YgMD`z%EMl2D32eHIG1@K2Y;!3X<4 zb6L&7f4Zz@&>G7-U6x_$TIzpxS$Cg^pq{mX5y(s$f;`qQw(+J;0CHVIJ88)ev0n3) zdopP(gi2K*NOWGsX}%q@Cu$7wPD<3h4b?~k8D~@3vp?;_>xOa(M$>VBNsL_VOL(S? z>Ov1?K`|y)7yo@*d1zrtgs~^Uj*N3|(b8YGcFE)P5CoqLm7Z7#Fs0)G>?RfCh`Mw` zASp-zj~8W4TM%ma@}qnWzX)AV!hF5$4C%-Yg1JdZ?=KVF4Jj&^IyoBJxLDug54gks zi5W>-)z=`WBNz!sjWU-DSlIfM9t+Bj1&(TQ#=|S`F`XHu1bK2j<6-Cm0-AO zs7+yPHO^3msnbaHg13sZsc3c8Udv-s6`xr0d%Tk7P+MKIBFoXx{&fgKB|O$^0?4CY zUxcEU6EF`V`a%#4g6jFn%vTWoOs5OR`CfVIx_*NGdb`0yOu*hd2_$&+y*}Y?KPYV@ z_&=-^+~Egbd+vDRQ#FBH-&1_%rzDI|S8iM(SdWQ`uAX5G^!}jOh{T(-kwGyjnGqOT zF>0|uDt$xU+QE@w>S_Z+-MI-M=uf*b8L@Zzy2k5Udb&os2C{}=Lv%i1LMjq!S3I^V)~Pb%p8b=wR>U@k?RsS6j`OvIg+Iyx^%1UPE-yE70X z`#1$!4;QyWCiV#V!@x_Sor=xd5Ng8Q;UNaMLQnG%e}IFZM#;c#9RK~V`|fD`W@7E# z$P#y08%U860!&7;A7W+mS^6z%f`CwcJu=u+3F}a@ev!`zI>X{spTRxJ>BTlAPewg& z71m8ka@Zw-ZOm&S(PU{Y zRm8l#1JRH-b&1%B4+V)u>G_Xx;F+z^1m-4+4e(QWC!ae$@V;TF(hbWt#egI&zV})g zK|lR>-XU#ceIxAOGR$8t_t&Uy-9w|XjX5+P36xdB*jA5-ke{|*c9W`MP7>m zB?cbHFfk>FI%BGo?DC5I@Ub2g9b+2ZJGL%vG(}9$lLBZ27)o z3EsM)wh=Uuwf_`HJwE7*q{grqZad@i_jX+?HvMhLik|@|`Dvz{@Xt2c`=xUwO;MpQ z+(bdmE_eY&yjHCmb(d{BKbfXz;F9$yonSS;#9mPqEJG$829^|pl19IZgx z7V{cM_cjT5Dba4Q20F8_dy}%ejo-~&9ZS$+0FcxFqjvbqbNR#Q-|B}9zVl>P#X*k< z3S_51)$^Wbnp&$5wfz3H`Y2Da34>X1K4n4U8fW6IuewGguZWr2l zSpb7#vRx+ zAQY3+-nx>?dSq9R+$tD=8d{@?XHA#g|L1ki`yJF=HrUN zX)vB{`@v84m)soZ&J=+LDc{Rq*?R!9yEcOtY80i0UCpIrdZ$?4?*P50duseJs1@nM zVY?+&Q+B2iL-kn8ub){5CAQlS`eF_=#;Xo)Di|~aKU6V~ByrA0222t*D4V0fi$QC$ z8B}6T6XRJtGE+K*7ATU&$b>46b;gkDtcb4;)~hQn9u&5JT~KT5F8m#W!oIYK#!3ce z!IZnUxKO}azW7KecZWyY=mW7!_1?a{CmK*G(W#(KK8+J&nyI$>`IpnLv&UwIuGv&B z5;W<@^jz+SeDB4xChM8sqk-3B)PI_*F3fzzA|qzGY<&$;jESNH#q(hfdj+C-7Qo%L zkg1b$t%hW-D&(}KO=uW^`(5talh1yZxY|<-WaEb^?^X=jx`vQd%Urn=nL+bZ7O~0` z8+p3m-35Hp0}g1@s5M+U_1vH@ZdbTUY_;k&gS27mUfkyHD#VYf+0Q8G7hU+(bly>g z_`!rR0lfKVDvVx^Sv>#0R7?FJ#@*}(deirh6TaII{#7vk6@mOqwjXteJ5Z^=>cqE> z;kT$1aS_Zd9pvAI2R?(p;3p1W%p3TL55jlIHwAT9R3xYH0Eo?pOBU1rpr8r;M~S8O zWB=zHpWg}kexK|U-KpXC0B_Q_z}ugLME@c(-QsP4;M=+pSUK@+-H4Zhin%Eu(>F4f zA63CX)?8m)UtXFr3>;fEF$m2lDTe|oZEyfo4DSKe!pFdV1ZEh8`F}@PgyRY;y?(XzXASAr$$0kZA~1> z{||f2N|9l<{r!fYq%4XI1Ps?&7V2&a*~N`4&b{qOe3@xgH_L9%j=E81;@ZuIi~iSW=r{u`+ZhgD4bnN@^(XZO zpI0Fv30zb|2E+6`i+{OXRpV|m{bc4^T*vsW|3WQjv+^rCYzvGoxQ3mKPnQ`Ev@aT7 zUte56t%H4s)dxOpcGpn}q)^&aMDx>lsqXX|c5^0H;B=YP<=e8E_-2Ghoi8819|4wS zt>dH|7MYf{D{LIFg|%D6M>yz1)p3ePcA*1{B0ceN5nUT>_pm2-xw91`?A22~E3g%3P82eK-J3)Af96DTj= zhj&_yCv+)Qja5D23$dF)7baz9$joA+7f#<;F(O)4fQ~b7`C$7dvvzkgv^D?Sha%Y{ zQm+zE@H4+qnNIc)dzlRLXw*boRyRiTyE(lSjZ|5Irr9Y<%*&Bvwi2u>-XYtR$2$@D zb6aFfZ@u3(G@EL4SDy{d4#a89Uh5~kNaRsI=8>b~U#u8LJa8*2#FR(p?%(KA&^f!v z2Nt~*>9q`{g4Eozt)zut!IVZ5v_8fSAdSxDnofvbd!~*F9A}*GXe)kWR0Pv1qAY8u z8V&hP?2KVx!&^TXcQZr}9Cl?5gLqf`sJmf6y^vXCU*HQg!dRu~OXN_+-m8+`@M>SF!$`%g+@iiy?$0N#qOs5B3CBBD zA01@IUZxz7xww?D*CVG>Il}Ta`e~cJd)pzc}&5&r@Q%z7F7a`{6GueJ8CM2 z`v(_?Z7^_%&oM3IltpP1O8E|U)*#nT17 z+JxSGU-K%FELBV`*5SK{*ph~Hp~@UF0E2Wz3Qpm3=A0rRQ%Ts105s1`uvK25P{iL@h~6L^StX_upg?sP7)q^GrF)I^!?t@{x10b zjk*>lXxU8Zg0^cz$2{s|VOdT%uV-haNI4$Dk`T51;%69!__k2YEL*psh~xv&x7^l= z^i)?p=MTXQS?vQ4KOj9>O5ow%dF~CW^iEveQqXoxL8RkHGLa>@P4zEQ@!;Q}O6R}_ z@SxatXioAg|6O`sVIG-R*{`#AKSm-Nm zR#{n+nLNIz{Sy=1uAv!Q%Q9XVzB@;SZ`U24vdtJxw3$6sTodOw|Vqw&fp<9}b4` z8{*HH!~=6xUgZwZb)O?Vs_Ad*SVo6)dz%^*@0eW037x&qmFty1ICh={G1@G6%bTdjC!yxt(Tqb)^7b}_;r}T*P+h}q1p8@o5T3~Ph57ILMsQX^o-IY^88!KB&qZ>Y_sGhZ<yR_wZ+5q@1zKC^`+@^H*BWM~FOPRby@+UvQwWi21`Q28BeY?{lNvb!4B_*4H!vofWPIOCbn~J}sT9;A zo@dnh&M5+x5kL^-0>oj41cE6)WWmqI=`mObJ7mXbT=%qQ3x~diZ&-slWE(*WcQYU4 zf2wph>DtdIl^C?zP0Gg5=tt@j`A6^kt8<2mihA=)Hb7WOat2o&fJ7PaO1V^#OH5Kw z3Z{gqbFJ`?=6OTp&-fv5wKk`t=?e|t&rhzv*CAUdiMuwIJq{1pH0Q7U(faul=6Cc^ z*v>a}cex*-P4fwd$|6qfEM$aV9~^GSBwOPvpfFPqfIl!E z1qeluelA)1n8UEReJb7iT=%UG{p8cMueSxxEa!;G`bMh-_fPEOZe#2+<89BcuD-$R zLOqQOp_goBT*ZPKeg&6k&|TxYLSvck)V{DxoJ&U?Oz_g+$=vWu6cOPkG=qVrY*W-O zJty=dL7S)Sy!3#2JJO{I@1Q2S<3fVyCc27ziFu}OPe`lY7zTjxt_CxW!b|#|*=4MU zM$<13ncgn4Pl;W&*#smPtU~|XO<={>VXNu1gcq!ejKh_T{LT& zdJZ*zEPfWI4n2nNk@7q6V8L-Lc>a{AYr99MC5Do zP`=e?62q_b8v?!F3qR{=Cp7Y_ZeF$Is4-cIr}8#u11`x0;9QO#ppQMmfsL+;B+lab+RvRai9PJH`m>iJwuzM3oO82fJ%P^)FWlx3p z#e6x|%i%pb?(kLz!f%CyV=CfFyKj%B@Iz5n!t-TYhkeW6n7PDfMP!9u$N)Wq&(0(G z8T#pkECMsS8>Pz7KYj&=;KBK@&;WO=byz=1qgWo9$LSn^RLe5du)P0Db__8>n65WX zvZQiHa+9Fw3&OOkj3jajkS_KDeE1T96st>elfQ$(f5FG-(NXTztSlbC#G`W`Bk*uv zZM4sH^3R>ct_x+C<4z?GOSe4gq62az*ZUqKgoN^fhF$5%($hH^ z=t|@R(cK!Fc=fCi+$(f2Wz_BY?ZKvwk&;1gJ4Iw?#o;h!kE*=Q!bb3qV= z8TNG^(lJzG6>)jMuE(5HPN5YdGCPJ~k5xA3+GX0piOjH~(Cti!65PUKW#S+Gz@h7# ziEa56@cSXVO5YcxD;heHY&}1}Ns4@mGmIZ&$bA|XDl#mO?hrOi@(p=rc02G0$xx`5=7Bg68dmXM}B* z7_ca+x!j-OFrJZ`?so0!1z{Tn0gu}CWx&fG9-}YlY*(BjZ>ACLJ-c+@8@2LWann(4 z;g`UORa;`NLcK&=)tPNV0Vj0vY+a|!gIHM+-qSt-t#fa}shOF~*BMd*o7=s}$f$h` zvsKc&BTUpyA1>(vjPVnYJ**RUNU@zx7<2@Kw`z8tc%zG|NFnpP zRy|DaWpWP9XGTw{A6&BM>1++2uE9OdGE=10aZjq z#}gxiMqgR%J#xCj5jvu>>#Qre1(!MI99yY_;=9_;frl(;F*HnasYIq;I0QYYh+#DyH7#vX zpu1R725DhBVZ`~W)UmAx&P@%VfDsjCFv{a*K8X({K8q(h0;kCn{l=fPd z4%k8dr(D8askjzm1~tUOH=*<#4U=Zd=8wfE?3%dfRVKgc=S`>Pc&DUVIujQMbvyWm zg-fjPp?dpZz8_h7>zroJkN!xe{V6w_gXo2wa|a;{Bdgzv4mRYIuX!^f6W6h1(`@ZB zPVB?52HcKNWl_Xzn9q$NJ41@hGRWr4?f3mMU)$iD(hA|SK>1%gQkr^&&a!-sNO{~l zxMOfYubvBASAP~z_$(PT6Q2Wq;;nBqOOhOae`;V-Q}qYS^#&d`qb1Fjt+~ce6nI!O zH1A&DqGO#Z6uzjSlJx*QM85Bsf=sN#u{as<-M4VZ{h=wtj zmMj|bDFq{9m+(^oG=f}(T214#MAF91!2|@U53q?_k`}oTK$vGs9|(@GFt%{IKl=FN zK+b7GYddu6x71@Tu2#?T=F14-ndS@Exb}wyfHZ#;NH{2NoA}UPM)3#;f*nIJ4uxE_f;T*vS;=mgqw5V(R>z=&chm25eZN1kJOD z%kMce2o?}t0@8tB#7}(rEe645h@vE)aL5aZMz;XpiJv&vnq(4qU4nX0QKsM>w=lva zDxF;t30M&wmALIa3`O1AGs3{nFwCzpA+uCdm#<9+C9#g&_>QPQNeXPl&=w?2A`8BO zCF2=&ZpyN;%_Iwp2!A9CzDn0@ueNDHY#&Ck9#H&DaeHvhMv}gj zFKy$fX5@HRMgG^fc?UZG`XX*%2IpvF{dH>kJ0Ivz z`oT}`h0(t#2!C=-c;Q*H_zv=(fcQ1|on7ix&xxZOYYxI_^ZI{sO+YAjN&ETv4Fv&i z3&TC&JhrmD+_{vas!pHQ+-j`rq|FhW>gmb0^5CF_$xUV6h0YSIj#&hgg>zi{ib$Y& zM)^A`0cDYgfM&D0y%0Ju7QYuVm!AsO8d>0p=?s0$NY*ZIGx%-AkpO1fE*>OL1?c;| zN)q2G@eh>*;TM1MU%lj|WEA*OxTlkN$gQ9{ZG;i?Dy^IC1L@7Ow3v{@DSdk)F|^4T zw&nLWP zBB&Y;O&U7Vp_qP2i8wnA8uaZz8pIb1`p(6=W}3gE;p@K4iDF88u2?7AFOFs9IA4S* zzHYR<)MlpWmQhjwDmhldcebv-+eUc@w^pU!}RhjO9pw1C{5<6QZ+RoIi!RUGZbhQxrO}A)rtWq96 zZEJH^#V7Bx3x={r99#H(@K5X39Ujz2uGvK-JixC54$9od+Ga}?mKGWk%KnpTD_{xggaK9BZ?KyG z;Ct?%82zN$zR0-PIsmck)-Do$@jh-A3FRj3l5HACMsU^yxzZ#GZGdwn%x4BTlzsx$Y~0$xBx6l>5yJeN zOXVY|PP9X-xRWg`n&h3klj>Yf-WQ#3MaBc^^-w&^3ck68H#cLeU91rmFcS5R!%Vu? zkn~72Y+@t2dx2;-LVwb3@abYu9y@;G@3`&j5P8kNa6_NFpMdfkbN07>t~&}>y~?-K z!+4gSJW$OE%UOqS)qSelYAZLrC#i?Buei@=l(9iUECG|SB3%Q1j(Uaa)`@|KopmV} zMP?TAO3e2Oj!v_O_1gJq#`Ma?#mOZ!*hm)~3?U?g#`~9)jQ+!mMMLNn>h`OPCW}Rb z7!4JuFRc`+RawOlh+=FZN-4_*3QuTCVPKkJ3Z#S8=Fw)L_Xy~49iPke;<7eyKYg&G z=8r-6OqW&-=&r$>PvDDo+PT#dBrQc!Cyrk~;Is%Ww;L_^6o?Q)isK|R>Oe@BF6rbG zInXMC;af*%Ob{zU+F&8BTAEbYN9$@?4;o5w+)NqpnPy=MmT0N(X37z;3V~Mg58Uf77(mpcSS}4( zDt4&ni&6_VR*M2V9_1b8_4stQ)XA0`lt`$QNqdjbW~gv|>0cB0b|J+uMNMFe&^Ay% z|Ex(+j&?3xA)eXYCYP#xLYifAv_m;;S89KyIlq9MQnoyiXa*cnnEhzu2jK^XaH%)AZkmT-7@0H5EwGjq0!^&xt>F z!xqt_X7ODj7s`PnzCgkBMfb*I+m;~L>SOk^PywyfeGH~Ki%-mT1ojg04dDF!qWh#f z6hx3Mp5X9ok~UGU_UC>$-j`K`#Yb(j{*G90t=X<@k!czbswdB!`5d78(wUHL(OjGo zJYIUPCFA9A!94b24=pDn2yAK2a8^5OF$LS|AmWC>;58gdeBpJDIAo7p;K@?33`xPt z&tuJ{LKvOsfmB>MjrJmOWp9Ll%gG`lE1wSeGj^|C2#3&ADp5)%hu<#2$QuplAI8)T zLK_(lWJu}Z?sKDeSDXG|x7}0T|6S+g%?A2gR@;9!&w^T*FCYDOoJANPX!+lNG0r0C z=QxX%2)^Ju##z8MCKcVVHfBKI@1uv`^7?MZmi(Xc`u>>c@&Az5_pR4E`9Jge?(Sj# zd(QT+3(t)01R*>KL1a$*>UD1=P?r6-^3WQnE#dU_a)ZOpQi_%m*kUd7j%T^Pg7GNY zH7Ck13ik*;dVY2O`nhhqGF~>AEgTyCD|BMGFQjbd!|yclDHXo7s^?{JhO;R87pine zA`14b*Wj`~kl^vwCf_q)GoJX4a|oe}z)n&G>{IDwsiH*>SdeUbHE;5wm%znTM?3Ox z@vVPHNv`T)PY&ZG2`pZQzV7$)6#`0&kDepfic@RgQ4?ixd2bR%-=C%%JJ+1UYh%&U z46SDfjDPBOA5ZAq#j7q7X3(!&%RCK}?pzPiPN&75Y|>{Vm?fC?n^w=ZI$_`Yn6nf!8J=k@Q%@SbJaLu#DM&Mszd$XULt(LV!UB8(@ZtNgJcfBoc(p*aNLa zUatY5oGLKEr^-g>aR}l#Ph)0I;PdcXT*-NL&I!hPt!3Mt}=dG74^#;&m2-xmVpelZ$ zq|y>Kf64I0Ll&mMSz2=ONm4h5m?*O9VdkVuC8jE1WVW1?F<_X&w-!d6@`*qSWqV|) zOp*B;4IBDODYe7?fd^e14;iwewBM`hl<=Z)_^Nek8Dl;`tu*rD$P?<`AmtE0^ySsB zH}EE`BH91OPr}t=4(YIPzFc3T(y8G;Yc-@4T_i_sb+!M}t^AWX@+1lopY}HDh>TYt zaT=bfLc2iHb_{hTYp+t}d(C6EkIk!%23V^RP>~Tu1ifKgv;%XdJ@Wvu&KA_?JT(w| zBAYPO!vZxX(TC5fVyB@7hi8nd^p%bC7UL=_v9nwna~wkfpn)wdnXq)z9-^15~d9y z0RLfwSFrGmXqKcm>H?YToX+W+ng{M~r%Z#5P zWw_lIqF?z?MTKW%K@W9^uOH613_heS5L`9USfTKwFz`yQ}}6VjJD!2nc~| zTm7>sfF>W^7iRJxAR#G90Jg=cc3pfv1Pk($p}~(yC)WB1oxXamM_!-Kn|Z+`5$V|i z498`-W=kb|qbz9P;?w-a(KHlrnu_OYV)En*wFepfpP^rUfBh(zQ9)hF!H+Y`5Yk3% zo53es8-R!NK!J2Ka0pA!z^k(^CXm(dG6xq;yJB&~GVBA1$K_Vg$2vrP$lV6l3H|=I zSJW5EL@mtuGVr$`k{H;>>l%>0f4^7f@3!jyK99e}3_t7B@}tsAdXBY?+PkqvPs+8`c)Z@e)QyJ zY^i;Ied+d~%0H6O9`buvlbxlG*%G&lr;d9rj&tH=1*(YerpSw_cnkc6 zFp-8RFGx5kBMkAEs@38(S`ykIMwLC{)v=lnq$wG}5>KNIqd!RS>q~zMu%H)$3)0qJLS)pXWiQeE^CxMLORK^6AIr!uCnCCZ zVZ)<(pS|)Zxp<^wLZyc5fIkzIFPa^$+q`&P!STk|Q(0Zv;hV1ll$v(*(x5t^o(&mm zoj&h+l>aj_#pm_`&Uk~U&5=_g@yGO?hT`nLJM2jP*ehhJBx8|!=Pi&L9s01tk$aM@ zo05rd{Hhm2NaV{gSGz^4lk}AXuf1`?mXIIdr3g{Pg(j+`srUAm1fK`gNj9NXIJAwc z;*|wo-(=&J4aLkgAXoqR-q|X5Ba8oj6gEFsEkw!4z14g4 zmI5heogak|fZHlXYIQJi3S`8Ye14ci*6DvU`L2=^juyr+s3^HqMQP>J(f%bw2ck2h zDBZzXEA+S$q3tE73!U!AsVJwd^KW4iANTQxI`qh|ccN^Aj;mz_SkWI*qQx^m zTOKBNMZm$GEqeo$X59UZ9hWjp6o@TYqaUTv4%8ou;q*FoD;Caq3xX?#mD3W&)eQo2 zi9ZT1Fro4uhBTtu8$sEi*KABA<|>zrrN!i~dkpQ!AC9p<4;wUBTz(@U?@KzioVZIV zb4CQ~`4x>fYn}OX?rwpaO^g7`TP;M3_>azuN0-*2Z<1QsefCZKVfRX2E}5SJDrA~B zo~pR3H?PmnW{x_kT5`@5=^wRfI%RNAJlG!Y%;hOE%g)sb-G&@3S;VTTOp@*5ibWcj zULv~TlL_@u$uGk98ioh|a+ZRv|{^Rvv z25A*}CfE6cu~ydCtPA6nXOF=e*jzRctdp)5&t8SK*=|_S5N)Okx%qb(mf#r^WezfF zk)*;BvR~LWA_Np=hI?|K^>xYzrG~@iwn$I~odS|u4xfVu3}sGHwvZ*bU&8PMH&e^= z0^H%h7b6Ynp^Kb>mnHX4Uz5-ZbbzDp~%DSqYqzH9;>SN`Mu*EJuluSh%Xd0p_ zF~NS5eo98$9I(F<2)(Tq9L_ZNWk}T+k(jmvl8wCk9o|d6tzr95K4nkVdR)%m!`G>F z)MHX}vTZf!R+~jS@ifJjivh6J`sQW?urlH6s&hFC(ZUbb8$~bR^!FfNyq+3^jjv_i zz`D^#V`Y+XR?y|(-Wz(~O&YzuoWDUvKPd#V_BPIDe{MmkP#Bf&;zQ2}6afDM{beT) zdb7~gjLWu^o*oh&28NUzO~$DuR=8%#QsaS5AsO;x9-qfX%TMxrn1gz>SvZfp7;6WQ zFE>x%`Eb6IGC;n7aM@b)lSn_+BABPEg2-M%>lB)3j}s8#HxSpPVtN%-|Y=ilS#A!B2 z=qVFIqb>2l0kU27iV{nd!(6GtoLG6ufKw?Q`Zq0(X5_OyVn$or-efC87f z_4!#`FVN*WU9WS6&F>}RTNxL%2Fl7$MeRz*sgoujx1a)d3_C(3Sf9lUH-|7Mm>i1; z2wdaH43c)b`&p4PG=GPwX$w%St_?T%{O9FG z$`9Yr54cNa&H76#KJ5qynYE-QmWlJ1`r(rUK5jCZI;H{5$iJyHBWZpG_fBvn^Lp&h zh9EFTMV9J$?dc89)|VBG-93r?=?kA2PC&FK1)`I`HMPG6V(5gqgMp(=ec+cE6LL@U#uWKQ$?&VO$DHaUnQWb+!>0#%5=l&R*z537e{`xSrpD~O}VL;WsYT$|ahxgA> zF<*s71#)aA@uIJqo%8~OQxPdJnl6u$WqXv(XHR5vnM?@B-<^c$nLc`y7XWW+Q6`9^ z^*Jg+8|!+hC?=sbwpw?7%reQgfQqDfgW$S3WcvF{X0BI)G;XZlw5O4`m4nB-qG(rO^$TuoBz4n!f#8LV zyom?N?E`AQP*e`X*Cz;xG=05W^O86nLFJ38I?NN?4#CiLa#gn8*3`39xAu>Z!Mqf; zR0CGCGE*uIw``oL*=;{m&TOFf%jKOrALbVAz(?0bB*3Llj3I$5bY(+_eC5$|Fq#yw zshW{3e4A#A`ey#&oawe)+fiTu1Eo%ram*Bg7Q>GK)3JMfxd(It@St=0JrYHD*BJ?d zsu%Y1Mh>8YrS4pX4~-atgV6{=t>0lRXG~0Ef}q#8ojU@_9;8` zHMMse^4E~r6J?Be20MPL@$TC!ybFrIowvOzJ9p{qQ*>o>u}3YyCincx(GTod`z_|# z1WGlSz&%-WpH8M&eim$0$=v}4!!v!OBE<^zNG|ylCi;i|mI-VMQzsh0X_B(j6&;(z zF>E`3hwQY*(;hF!ITFED`1dZCBrEWg@~{|U(N>?-2OinT<8Aast$bKi!F@r>^|3*b zv!<9q()rsE5rGB0`ctKfYlf6&oRq71HCZc)k5rEzeWFzPI`dW+dw1Tj>S|HG4yTvo zd|Co;sEW^re(B*`A-)DJ3> z$8;-T)AY2m@Z3zND76?PSH>m%DWfD+=a9;hx^OU-h!TP+zDDK1CV$`A+z7qMMiCeY zvotHA(#epCH*kPkg|Im))Vf)JqVhjih`)x!+$e*zp4G2~D(Qd~5{!eKy$bLFb%{}C zaN;PLdeQzvq`wc`6JWOE(442^=W~%^S$0umOff=T@zx4|(Ste7z3AweJuwoeY*_~~ zoomTw@}bra(xQ*Mp~i^GsVVqdTiwEss{__bN^)?7&GSsL5eTNxROS=;^#Ix~tK zy&35hI6f+qUtJGq=W`KbRdXtAq@aB;TDtBnYV(4~PCib~lN{~F1AuuIPc7vFdeuf) z9mb$d8m`Zw=(^eX`3ACP(<#f%!rk+mv$W(&j8~kWwo-mLo#k$S)9O@I2Wl<88qb1L z`p}r(KxJ@}Eseg6Ww8uFFf?=_hX3#dz>ZxgA_2j;-?d=jybwy`0}Br=Oi2&wS=*Fk zHF!~tI*tJMHguZE;|Btt~jLLfJx`zen?w0NnB&A!r zyQI4tkuK@(?nb(iZjf$}MoDRrkoUU4b3E#Oyr1WJ$M}EXlMDxY{nlQ4#awf0zIOGt z@n0*#hZe)~BPcjrFgAYTeuZ!k!!dsCqc;bz8T}u_$4?UA0EFJX&A!Lg?}e!1kkurB z_ADlMBnCxrGX90Pyn1RKa|=v}Vw}l>aPA`%eyw)1UCHPoP0l%l!nDfY(yx@= z=Q%+sa{;2`E{D%QzB4)mFcfc4cs=17CGM$k=;S>~CK^ee`4~@^s^0aox}PDITk)gF z+l#A9Arpf%!$blN-0dANjT===IAPQJKwodu=hY=whj>GFcGXR~}2#s^KL@_4&$x8(S2QS@JemikGEMx|LaaILR`7Qm6^BI;w~= zP5YwL>QRx`_?S2Fz_^n{3tIE}cwpD-i90#g3#yux=6v~rpxkm!uiSc$Kf^Whs+1S} zOP0trNojBxm<1C?<rl*t%s7M#_*NSMW4<_@2sF@E$i59d!A|rkmdFrxn&NuRgHe zF{Iyu1Cw_$1KUSVfW&E307k z`da(Jsr|{&AS4EABO?*1xq@apT`h493AJs{XCk~w4{-kvix}Qz2_xhqQls|oPg4s% z*4*zU>R`%Dh$5lMe4?UT%vWFyFPhc&Xv9fpS+r3fmJlTBhZMu8<=nc>K{dJrD=Nsh zyc&fPR~HniRC!CFe1-@n9;aX!C1eCcT?Hm4PtDmDaf@;Angrrwk&J0Yj%)1~u{WxnI$O0bs0Nv#ljV<1>&;5sonSrTP+8;)vw zc?TD_9|Np8SUW^4R-}h&I9W#RTNomSwx3*&U_I^#Y4~EFbw-_z;a6}A3!0*Wx;m3^ z?Uc|&&s~*BSP(GU;@uhEVi=G=dqCj=k zZ}nWX3$*xb(bCEW3(Zlk0{d<~$+`WNy9906LfsWN&x#gZ{OZJ2D1$2EbHxa7w&0-2N&R^jl3FI;M!o!2=0UJmr4c$_o??Ccz5v?F7If+l697E z1SncT56L&Cs74KxNoTgOc%RgTR(TO0rWOplhgD2~?bFYQFc_A`xv3`9RT1^T%=wX5 z7Vy1r>IVI4%r95re=R4mn0mw?DSgDC?56`6kxR1Jp${F<26SW^f*38JBh&m5sQ+vA z^5Doo{{_BbjsU@XK+{y%&hD?S&=0(s)$bgI+3Qm%?jLVrr-)a&Q)?z#Ht&hUv$Jm= z7OOnI$A&elT@gbBU=tUrm;71rBgdqrh zLBO!QBjdc`MXLZj;(W=_qSZe`QYwin^MS*}YQWFGC$7IvL;k+EfF7}-9Uy}Rpm2W4 z?0=m20sT4h&q>$)iH!-<5;ddMHv#15-?ac_0onk4@7p{33E`9x6c2U~6Lfwf^#R$H z{NHi<>>Eu$`U6e})IIq36aG3RzCWRol_h}7<9oXo*bg`SmG;{(tiuejJ1+cLBDAtd z9p;-?bFOUFZgC#2Epi1-(KRDaFO?HYwCT!RLdLU5y`1u>cw4T%?x6zH;Z@2r8 zme#06_!`{hK2z7{4-VCusXKkGc2{yNi^okD%@*$)Im_8xNE+<@gjD58LSZXk7CKFl zHs;PS)9^xog09M+4^A3sJv#ylnn)7yShkwR;&$7}qE_R&fsho1*LIP5#7{1H)}$PaR5Nv@dlKk zJqkQ*&4pUq|7Dy#uN!iRq1?3?U9l$ZiRiQh?2~}=?Kw%s(QlWg>IN*n++q_cq`~?D z-#)z*=XCE`?Hyo;@9HqbVZe$Byk?H=+U)2#SSARElJc)%8#Xdjnwf>W+LQL|~ptNSAU=*Ba%*h7J1p^CkwW*K?#zW48U35$Ir3(>qTkU7p4E$3%rK zmT{IfmpS9k7LHPR>&6wM+BI@rgtN#;)QByRA4Ip*=a;c06i4AV;yruMYm>QfdH;5z z(qR}N11tk|s1HRdbNflwWaHK`ia zst!F23TH6mbW2#ZLRg=juQURIVXlaN@Axp4N1VX-1H!=YR4o94uR)l%>5e7T;i+F~ zFv-b5-E5xo#Ytr_T->yo;hk#7+;w%=AQ-TgZ7_4-NcG}t&K!KA&+>48<-3Yw1OL)- zXtn=VnN^P&tJ(N77Mp%22*TpASLFx&v5@q&dnayLYI21Jm^S{8=KWJ@B4qeeYO)B( zv5~k_*x|)qiJ5@Xp$Smch&B2VpBF(D)e{mH7D7c{Z7-xu#p!F97f|2%A#o8Mw?iJu zy-`~k;|3P3;JV%-&kDqy$hRX!_imz4=cu}$Ob9Q+J-`8)@v z8YP@?hC#7%fvwH!L6!*JU4LEd4-x@k>NH|{CG!^W&v;!rD>yXHW#9(s#Xd%fSm9uA zVo$JOmrKV+hgx76sTNPi48VbRJW-f-Nzf3Y|1vNx0+Bl!;M`fE7Gla;Dbm25`^?zk z$tgpzVvs`i;gHs}#bWl*`E2~;X&uXG1zo_jDovfV>9xQd@v2;2wq+}>yp9Wcy`g@Q zN~K&pD?%?!saDyeMvZ+nt!djS{TK;brPGE_8l`hHeYUZ7KG~IXEw6h07mfuF-RPa( zxh!SGk{`ILa1(^f?7Tw_sE-ODtC=*fA6O-%JndYSyXm#J?O#r(`bas+>SkrYE&@hB zGAiaf!bd{Vz}rNFD&lN|->6f16Z%@G+;9=0E9H*C#ndxmqi46$Y^wiTWA78!d@BqY ztldhUo5yg0xuXdyLCwpj``m})h<=23v=Lb10dBh50-6-%_&fn`s^GE(wP8iadG&)o zRG%qlvk00S-BOg_9znx^!yv0-2S_CLN99l8S$59}yY=rzIErkWA?6=CdguZ2;|TSd3 z6Va%A9bGP~jrLSM^viWpwMH5hCK2h`yEJoCJ4ScSqC5)bfCUp?Vz~8zh^7h-i5PGq zyhX`cIl&TNjs-t;&54oSd>2in(AKtJPTHIlxK49C zvE{2L{#@!7Ihtzcu4;Rj#_F1kHwyK%-CeF631rrqAsp-66@qI|#oFYZGK9ynw`7~a zwKOC$NY+2kfmHe z1|i;tTuJ~Vr22nUneayL2l*kLBLFAK*Wccr-_vj}2?hQj3H1V2GaE?G(e}rKV*~#6 z@3iK@0{|T4-xHZ1XMCVZSo=G@efZh{!g0Otv_8#KYn2(tr zQy@O3d5kN|&W&C;sNMyc#qw}S4jcv1Nytefa}fyi!o!v+l-n^vnf*a5IBc&vMz2Rq zk5T*W0AvXLs9+PJe97P0EPbRQ=pn2MnF%6|Kqn+aaog=u`JUsGJ{KW<{y?X6LaVXY z1UMemAFseq{ib^Z2wK~?%GdyFn}Bfr@>3mh{}+k;ply&ewKB9g(Fl^1@DnUwu)ItKp6Z8#CNinYCPh#19k0l8^rb+2t z9^u0rbi=C!_97t-guB1XXw$#Gyp8}!P4BN}`9kR0&`SH2DD8?+M;$U9_P!7>Pr4Kz z;&Mr$Bw^B>814YgGCmgiH0SK2@xOz^X8ED~HugL6eIinvb;g30(Zv0}es1z;PimlY^Nz{|+ib zd!T4lV)8hHiQq<`RlB~Mq9%^m;vDi@+}0`7V%ubZ3N|XoGd45oP`D{bQ}eUb3Vey` zJ8i#wIO%Lm4)+4+5<_lwN~Rw3&ZP;|&hooG*wb%%ur8pi>vjDyuY*#$xG~?nFjsOo zKE_^nDeD0rud=;4W0*A7LoLW1Qm$4yG%oVo+M_fvMfGixM!Z_3{*1?hg-*4I)hw&x z`yKn9r4HrV7umF{jNXlYIftkaA!i`o zG@hn1t&Is|rG?$F(jyya5@?qGTa?%9N9e{UOMB|{| z&m;-JJG^EFkZpPx{VkCTetJaK1 zk1yq**r4)}0$h$y-A83U#_$3MNvYW%JBiP>i80?r2l2)*Ub7Lye(oVP!eq_TYF91n zCy?64Gx7`A7R|>t?>rqh9N1#q(+t2{itF%rPYuwuV<}r#8Blyry0_Xe%(PkHHMY+i za1%Kolt<4cP;Y~?p>rky^+8oc+yHjOFM;DAJuP+i;Ie6^f!fDPb zrMRuSihZA?EVA}o=2)-GH{90N~ZD z|9z>D>LCHR&75e79$r#x;QDVb1&MEA0HT1KjhLK~b`zilc1yMQ;m48wtc2Jv=z@Eg!220Ow!+U)lh;E+J!O z;rhcCzvO}3!5s)4d{}-TXO&GgxqMI^=VMYDpk~Sau0=enW$z;iMeh94b0CepvDLY1u#i2A*K53)u1X1bOEen?%7{Vz#jsO zhqh^8BH+M(?)Lq}1abe$-UpVy*DNg~xUE0|Qh_Uvnp6C52!ok5ADPewD~5b3tdb8F zB^*!cp%sbeFC`kBmbdZ3gJG-__3mWOab^1Kmb`L03f+#o0Bz2^}aa=i9*olmyC6zZWA<#OTftuW0#u$@RRZi^i>Xu6tK^iw|Z_v>1 zOd&zJsY@F<;0{6LYuZgaE`0BN;_bM$QgFCD(>qvJHeG1?WAcFWd%W#D|2$vF)$58WTrB67fQ{2X`x>UGK3 z7+U=^JqnA_l0oIi@*l0pTU>Q39W(x+WvVp7dV^jp)q zn9ut#`SMa!m&uZnSKehXaT4bKl1-)7yPxeuo~x+pAu^Q`I~N^v81b(VLK&U6yw6mf z8{Q0oc&b;LFY$VnaabS#eY9@+E#{1}$n4}-mSsXLSI?N<*F|OO)8%y-P`M@+Y16|~ z^)x*F)KFKHSB&kfl8x~;%$`wE<7SEn%Lepyz)P3&TiwX{h_?JmjwmbQ+|6Jb zfkw)w(qtcks?a5q++<&0c6h&Y68|5Jj5fthl3QcKl##@obJ{hq?Z1?9a8IU>rNQ+7vp zSlEFZr3Au8_MWPQxi-{qJv`sQA4#ICD5>0*%d0eN!Z+YJDA}`gEA4%J8@sHBn4{4! z;snifHIR7c@fw7&`Lk%jC+?0+FE@M;LC`~Im^V;Z=P+2PN3s}5=ty6nu`rKB&9BM9 zxn~x7srY4T>+IFXO7o$TC#T+ql0o_g?AS6GB&Hz{2kba97$sKu7V2K%h2rM-=94E? zG*XdU*d+(8>%3?0xS_BuMDSQ!^1Z0gAJvWzA@sVj%PoBF0a1TY*~&KvU{)Rh1t-u7=sU22|LLLl zsWW*WFT|{zbS+E`WC8WkFVQh9ycqy)0bGd{QYl>VtT&im{;_1JsDS=8gajc`!s=cMpW|IGw;O+AT5uOI)`msb{_5>3ywqjpd(AUo9DmCJ; z2#l71?@ZX>6b zK-mbpNLUI8Yu|h)-zEMB`RBLF}D zo1Kk8K@=j0&PbJu5_a<90(zdd!hgVK4tq9_D)T5#d7 zbs|(Sg;K7tu$D*v8d>$D_a_(XY`+1J^#$!_#p74TVD5d-r1p;bOAkNKK!t33vcPo; z8Q$qURk_o}S4@0)_52x;vQ<+jY6m(00OqdWC#R3yLAtaE7daawD1OIwZ*ot!c|&S5 zXm!_k zjT|~1cvRbepg;?3RqZQ~W@0F|wouwCn(~G(5mxowfbx&(MWfwQ<%_RiOl><@cxT;0 zbLkwtWKu@HkpASX2|@Q@`t!+~tCZdu95&^(MYQ?kD0c{y>Z+j@)GZ}nyjidpGZiWcDIRUQ)(zrZEWQ&kTx>6vcSkZgN|GjWLrs#Z?rea0dm zrj>U&M=8<6O=chXbmgg_2S^A}hLP*KGnZHoC+#gnD}&!#--$+Jpi?h|JLJ{^92)PB zx%5vHqWcH|^n!;}@|OVd!?XGCTM9itdA9rCDdf+oBb+jX;?~deLO^Z^Leme_3HgyA z{-O!83eXIhc?7MYCnp^WCHmCul^Jw@TqqndPI96+7PgBQ%#Fk|`4GZlcJC#?rmJ40 zTcel7%GCOL_n9JKxSDAWP#%Zx*8`8)=SwF9wpvQn7qQt{ebBvf8>4d7#`0XTT(Tx! z^CcsTGBH|t4IZyWZS;{)cqxQGsJ|_tj-Y-7+>fq5285s3JMV3$V5skCXZUv)PQk&> zP}lN%$*1_hv!9aR;CCYTE^7=HQvi{NkUq!|+Jpuq-tJADgiMM9l*BN^b6lSA!n+0YHH0E3aAO2C2O5Tc@;%j zCgH4y$VpvwiD(#R=dnb!>LsS_1L!27EG{M?-+-Pbm!pb#F5=QE-yEE)oWxqi(ubMt z>V3fF*Ow#wa+)vlM0}_-wp}2ww=_pS6iPB)NlT&&9W1=w{cbt!N%@-HH8%eF>de?$ z(o{02H-q7@RlcQSdr!22guZ~1C2p0cZNnY!F1q|)yftG6P8E)vqJ}Gwe2wkWLlPVt^o-A3LU@Wg7ML?v*Wh z1r}~Q{c^UvcLtx6m-3E9Ds6zP?b*`QhUvSQ1 zw>DU}4(nNO_Qc!HpxAzyyh5dWfVID_-$|R?G^1rQG@0<}Kt~8$ zZoXlF`vS=(qRkr;;oJLs=}ls>sVd-u*#dH=e}5Byf=b_iu!ly~FE{#^z{nla2B5sg z>i%4PSJQ9_ww_OHV27HpyQ*n}cwijVEo6q|PD|0z0p#6d_H~|IzC8pgjMD-*K9Dh9 zxW;u-(jbUeQ`WTFw93(`ys!H*QA;bcsL^9wP&$Bw+PjvOXWA`oZk0=)=5P}TwIhzb zHRET(v530fIg|QbChG{6Bg%Oe=~;#d(c^)epl>9P9%Qnn++;?9H1)t)!oQ#T_rwPH z1}NGY8mj18nE#d7Sjsd917zsA<=)E88aJz|?y?ru$y?d;BZ0y8l;wzE!w=YnUBA?z zv$$6RTT(rQcn@cf-?iy<*9z+LLM5AYjCc2G8J=q`h51zM5H;Jj;9|@G88ztgr;3Fq zQ+oEyi-dCMpM>M}lg^EE*k+&&XIy!rZu};ahAz z3qwY>+-80aTZeWS+g9%{V`oZ7!3W-FgQtlJ^8h1p{4wDFG>Lw=&!#}CW}vz56Q{pg z+hx)B)R+NxQ3BvmC2Y#QPa1Xx{o^BDND?EF{447C$O5P8Oc8}v#8t@YUq2!kWTy-E zLLsXZbKA~19ZBNlKE1lQ0bP9rj!xsZ?9KR$S%ZBctU|Jk%1Udf)NT&rU1WHH0Fi+} z|FivfGoRpw%N3DH(2OJsf}tv_D*Q{4hoe02HZ zx2Na+E)!4};)7Dka7NC~lY2t8c=&`eqx_4>! zE!b>pX5861?&W7oGuACR0{;=$N4;k=Abu3T@d?d#|W;H*twcdZI z-#?MO6aeo6*l#e`-+f`p{S|SYiUJV_8I2CcI~!uuYD2xw&th&l_G*^v^6`z_x>ZP= z2N>E?*U@%sQd-~P>(}pEAG3?h2EJg&s{|<25anP-ofaB*<&1TTZsqXL0h9@70^~dy z){}@F#93$>Q3g@uTT#+G4H_AwF|3VxDH#jlBIuJal5ic4rFJeUi;ita9ph3G$C}a& zT9^ee7GChNC$i36Eq>D^0z=eOWl*4!Zh)OUYtsVLPvA%&OW(k+UQ4o3xP}Yi@nrn8 z*>{uS)|@wG^fjcj`pjW^`78A_DH7|dbeB~-dGgU}^YDp=iQ1;_A~k32ApOM*rDeU$ z9(ssz;psihg^){O~vcUF*Lj%nzmD&vR$@2LT;6LZMt@n_@(UkRUs1v1q(MLMFVLiDSA0TxA?D_>%UZoQ4iH29~6qNfez#eSjTG!h`&b6 z55-|K+GIMA`U!a6e}58w;&r>fK!Cn7V2o$}%hUJkXKwttCIEEQGlp9%ejOvT{6GJ~ zj-lO1xquS`!Ce1->fehYX=?>XeG}jp{x1jrr5I|vS)JH~V)h`b^?WhT-4+#w37|@)-jtJSeb}Zh{kO0D0o)^_rY; zC}6P4Tj$Nu5c-^mMwT}_2d7b za{GCvkf;!woG8De9;K!!zyEV}2tE_@|8B5=@UmZ_6kv_@Kf3i}H>omzSfxiNp9vlnyinHL`?$aoD!)jqYl543iW%RgOrpBMBE?B!!aC2!%Y-!j zR<_smfEs@6aO&Wok$na<0mA8*9x@3_^O7S=gq#2JmdPqi{L*g-CS2kzOLZfv< z!;-xH40fPLhLuX0*o?00yuA8SXg$7uX$PTCTUxn#Wj@}pjkl(_wv~fOUy8;GWt*nf z_qME8V=uGQhRnu`AD2v6cT!y<@@c6zk(#uBW16G4bSBvt#U2u-_OOUDteu%8eY zHL+Vzt;$Ohp1=a+jP0}Tg81xCvN{j%UbspgHIBP`PP|D~ zzrqQ?J#qMBX7M}b26$KgH@D;$%ncji+P~kA%r`|G|3|#d|M4lbbrfbQ2HX$aKSqq- z^DAIOSqeDL|Epa15gerNyF~*(y$rWr-O+F>0JK%;-x?(j|3ILSJa(g3eU});uh|8u zP+x0=Ha7Jzex0fqULOW%vh}sJ+(dT+@hh41t^|HbR(Y-iglpY+_Y_Sv-J6Q$0Q?mI zm<6PLZ1Mu2?7Q`JAfqk#l6}1&B4Ze#u}cczoLzs61-}pS?;|4s!t#BP9|zzy1q|HW zmC*QQk&uoTL-@J(2Vjv<$dXM&8GP_s&S2qLek9fmZe~u1|yXmgKqNqaMpeQ+qlN z66TNanzK9Rqs*?kVhZM&!V1A|InDxBJ=^Ij%*Dix^GceCSFs*=nXw4PD+PVLA?n@~ z!G>)*_1Nme<|@F zns)Ayz$F5tfIG3pQq$?;K2vfX7fmuPf!Z1!)tw&79 z_kj{+y)0^BV{*;f9HjKd(6#Z$)NYigsBxIDqFdY9VkwJEo6Q$dm4O|yV(brCgzW~|0gu-eZKIE@kjx; z1OWB=Zo}`0cT{sdy=k-KRsNPUB$?-~a>zn-V17RE_$`)QH5T($2G!`dEQkQ12r_AT zq{`LKXVxn%u1uWwEv@%s5lBc7_UGBpN=ht>;f?DTYoH9AR)>rcovG)^ zImL&O+sh#fD8=84dYX(3r9k|DicrM%E^Eu!rx0$^4L+Ooy<0o zm>gPvy?kbtMvTWzTQ&>pF;$z6^{%e&q}WoN{i_m#=0a6g+(6llS+RKhu9X#CGj7gq zvf-e6=W!cn6t;>6G_)T)bD#ll3KTM7w91Q1I#M4{ix55krnx9AaVwSe^d+z`K}1O1 z8+f2=hC9Kb11a7A40p%+%{76s^?MUpSwaDoAL$S}as*aLn}3Ta7zY&RxQs9unb}7G zIZ9q8#y}K;jkAGM3|a~Qk{7>ax8r0#qG~_M0-to=MKmwky6!sVt=lW3SEnC8kG_0l zgUJeagp9?JX_#EmAi8fKLsnNri!~;pBfBVNwuP#Z^f*2a;u1P^s!U9dE0=X7aoCGb z>4lqobmIk*_b1a^Zt80AEz+?JW4kAoJ0vfvh`od6mbOjpmYanLyVIsaNrt1l8@VeR z5y9XT=a2zts>cK-c0&j)<{_zt;Irx$FWd}?;@isp!dMA;7GWN;z(23 zzYzr8sEoy=+7vaDFpi+nW}XSpRc6?I<*+<4v8}AV=oUj9CboiQq4uQExD?CIX6yZrtF-l%BVt|YmWv%Fb0+O*cf z3=51{Wmln^t7@pbMR5HKG1kI_-|EZXjG6%v!RQ1?Q<6F3zDKkfXa~A z5a1)Ro02iB?xxM^tHCdsJw5EVIC!6ENNT7yES)@Mi}j)9BN#d7VH(KZ9C9n=+ypgg z>GrUv483wCM|T1OtMSd5Hwgc0TdB1nDmY}>r$ruEV=fR7Ea{H6{XM!^%%2B#ftLl$VQUxCs z^PP_(d`GvI%yB~sNlK52xF#Al4?CZ6L11YL-vy@_qbW_9bsc|Q;qz!mCHOQkBT(AO z)J=p(rVFoq>3f879LIZkFC6WxY-I&NSUu{6`cobBdmj{ts+F>K`dD<7Yk$U#Lx4kM!U5o7<Rgv9Ra7x%df3pmNn}>zHgTz-V-U2Y`f1 zGE;W*1_X*fk9dDiR{svvV&9>-zm&C>VXZ)h3;$86|#D5!0 z%}Oh7b$qMvHr2rXt9%LM+cL3nl31eUSIch(lbal+u{|v@Ulp0p=ds!f+$rK7j6wzW zC>0(POr}Wb$iIhf9i&$bz~X$4V&K>C>Ai2$%y#yVXAw4eOR&q z;r_=t;c)#r#wN^aiLsAKCr<4+mEgG7|SHd$;$Q~=@3ohrQ7}@58J~{oBTn@d8(`;P!<~-<)0>e>YiIlANh8N8V!8yhQU>xdU;0je@M%k~pR;Un+P$b&O)D zG##hD_Zfx&m*^eUI5HUIv$mJ-i(dv4_lLAv50lyG?(c;uTCCqw) zS{-!i^6ljrQJ1;J)-vs6ul(ZlOEvuL=~{>UPtoW!k9*3M#IT|adq238@ian9KVLo6 zECH?EC0*YzFue)9dJZ0c#ql{eY;^f8VnM&u#sxHOtepHx}-WeR}<<;Gk=f4USflW7b4@C zd6vezv`od+-$RC|;UpYRqp8-D{8H_6U&`FkF$OEPZAuhVL)X_CQICXE%YC?0H-GDf z2(3{!uRtE2&h&_gV}mK=OIYBIL>Xb7_y+Kzvp?pY|Bg`m6~G@BJr2NKVD*gF`cEuS zts78sJlTc#ByzE;Ego8G8gIlG242+*Il)iHq6&wG`mF?>fLX)nqJ`INzO^>VVq7$4 zd++U+CHv9VFW2YSi|}6DXkf!g7O4xEP964c{;2hPXp$=z3r=li7w=#6Hh#X~0^#b= z%-mhjF35E4Vgix#nQCMDY=qPuQPX87Hl4gcv0S<{jR=->q7O?2c3Ny}!Xi<-5cTby z_N1iGy!=SvC$nljW@d5qTJ3qW*g;3uI#;eR8 z#OWwPAz7qJbSswAXV>Mka%Y-?xeK{)AeC4`5JS&|AW(djuu=5(_Zmah`cc?P3wQjN zpKv_(Ik2z_E<|Ciq|*t(UlH;fZ+Cug(9%r2?+eyhve*F#b)F-QN3u_| z6^JAK+(lwEJ;xgCrsG*NxtB6yDN4yPx)V#ysjIjQ!;9(DSnAk$g)0O-vh^i&4Ejp6 zb|xM##YZ$zk0! z_JnCLBtVaT>5o44`*sX4T791}x2o+qqY9(7Ejo)+(Fu1z@*pn~3yl@mR89nddh3Bw zZOO^jr-*SnR6{qXyc3c;1|h!eyb~CWl1blyY}+H)I+kXg-zR5EnP;A}UvO~tIBgzH zax*>|ZSw@6?(~l&*lMU49JI8Qav(-tR4Y=9qh9vy1|Wb#h(B&JqZN(`nGG_c8AH#3 zsHH$RA;3>k$s|c1jnp;?6eVyFNC3TsP?Ny&&rYk8%HBp}XXM%|kSV%2=@u9nGVsP4 z@R2(0?S8}LM}nUY4gSh_hDF{d)9x0%44ZZ*oU-Ea7DY(i3-6c_npLu78;g_=6=JW| zSm3g0bnJ`LoP|?%$C)elNQ>$$Cwj6E*k2W&C?XHpB$Kpvel-x*nhJVBy^Ab1NhVku zLN2$OXOcD#-5(dZYccXVtq%ryPj9UJBJAo_3Ju`&~FE8%I3ZELkeeYQ;fV^vkOP z{g_uJujj2yL1Uv!lgm;vIMm!VzQm&F&3}h0PP-J7>TFM{Vq>8hH=KIKrg7HQyMckX zTGF$2*TFX-P6W~mrzE%w?IAMJs=;hmRI3L%ENQ#cD7-Z}q5whJG#T{b6-j;KY!RzO z7&>^>GYw6eI?M$#evtThHi^DYG1Csvx^lSjpfHUIE03t2i^>&m(kiAsfT|_Y8H`i1 z`a7?oRlCW~XjabY?eDE_ z%A!)P2D#bgrM;UqLzO&$wC@KAW8@LleHtJI=Vq1TrP;+_?1C8v+B_)IUyuyi~WJ+G1RH%4{d zGIhmMY=bNqHhl$l^g&(q?+q$!uaDi^d-kmFQ4|8 z#21oT1k^h$aFk#~I<#)(GGbFydpNT-(Z$t&;*bbIW3->Dnu}8N)|YoL<^y+%MBi%T z61Ggx9x(_X41XTqpPKW`*qYypZU`?~aF-fs+V@zr9J@P~8&$#*1Cv%Sp8=LxU3NaH zq0cTaHKquYnA{urRyFeVxeabDSJ_U~Sb%Qcf^^xbK~Z5zzQV_VF}dnu!;BGQllbUi zypbrg7qg%ljEteNj&m3?GZyTljjywr z$y{{6btY$SlxEU1xRG4^Hr9bb%=dO&3jtbsl2L{(SQkyrwk;@ceWJ-(62!+4@y5{I z$iRnGcXm3Gi)b3pK*hhuB0iC{Ykfd@y9k1~)^NJJJG3`VW|TWO19}G$oW-sMTH9S! zoYB1|@=8=I>B>KIQ|NT|t)ph#HOp=rF2dsN#sVjn4rf{8rQzi}d78q#eQFey9sGB9 znE555OEGUMc3I(GnVOEQ$9pM{T1NRya#l<<@lpo1ob=^+fl{TJ)4FtOT$(o0=zgB4 z!eLQ?mc*!gVMP^Zp2rgzr`~Ac{K_&mft)S4dkm^6Ck_VuiQlai)aaA5)_|JIwH~KW zi7((0hVx!mi^DSQeqcKd@v#Xws%r3^p4uIWC5S9!DXbd?H|=kuH%pf{5s)`)hR@+J zrOTQ7s%B<@MtQ`&l{JI`A2#qtdJ;_;vbe~}Jvy-R=ySf19XzsA$WqRg{*hk6;nWk4 z`8XP!+HcTTK7GDW&m)Zf+8xg@e2;ZEtEl!h^hR zd2}m4c@~m2_OxRN?~Dg?SK0$F86ZKzl{oRWah(D>b*b@dXtSuA16$X)+})Ex_$i zN=Cd|gl2GMBPl!dZG3U_oMd8&-#lw9WF;5`)zEXM?xgOsHV2JB(@pdJfaGF?$`gMy zOun>f<3T*9&$ISMnc0T&$sPCIc4iy0&;`P`nVdFsgH!Iy zaNl=ouwgrEr-;|9W3oo*q?eOF#m2!2rYYe;=^@UOzlc&VNW* z1N5=10n`QV3Y^C;q@bY_$xXjf=8;+vu8+m!6w4hE5ogIufnrdgF7?OlWzH4FdV=p{ zp}z@c;)SW)Q%A}ocS~~TwEobNw*0cKO$%hM%O0A>?;Q2Za9QBDLXUk&?bhd5E^<>( z+)qf~_|=l)Hmp@x`Nt^uxEQd!L>5mIHY6uHJuJMPAr_r+E1BMCR@#$#+q`V;^eSG8 z(o0(<#!y8w4 zTcE7%=@7)*xo->(8v}DBQ{N=mFzP?BA!=8N!R*TfK??KOc?na6J&R~WAz(6QXn_ek zwq~3%OnkfT92xTxmEPtW&mU|F6*ZGWhdahg?*dY=6ApY4*?7#7f=O_k=fziZ;_A*j z5o#@+fCjRGx#foTZ5IBH$6S)o8pBi+pO|9PW_@h8m>XWHP`+H3JCGP$>8Or<%jBvj zHxgqTG$=F15?GN^Q+|8D+a{L_Ca?l15LEw|y#3yT08Sre4ecyV?d|`=cJBka;%AV# zJ7DI%?=_XZG`zn4*M_fJMezF6=0x^zw77dg_xiAbA3zBH??wb*Q@vsW*rT{zjm`#0 zZkdlT{D*yZM_QOlQ$q#=9Wb-U_p4l(z*VmQgscet3t2H8CMul=sIR{Qe*XP_{6z6{ z-%#dvu(mYS2ew`SxB~@88yjmohyRK(S^jCnr=OjlPVEQnWNB4e2f>iaa0tC3*|HeDW8(g&7l+o&5Wvt_& zYr~V`Jyr&=1W?B0->va`wD^G*edsp$e;2-=jIhX2GA~>2@gx67 zq+7)YqzQzLT@B_Z8;>tgm~Ws|V)w>a5T#Pp{^Lx48+bRuU; z;Ljq_w^sUKgvwbW6?IWj^eiD2^L0`6wtTHBYoFvJkvxtt*48#dR&_RG5v>&jKH*5uqlvDe_R(JG``%zkLSOcK zz~Ke{XrAA(F8?qO;9)W~GW~0U^TR|B(dK8Y%Rfy7km?(*8UDNNS@mDd^!?OP_R@N` zw!ni^kobbpr(j{T>o`?1J_9sCnYEb8qPq9 zv@XEUzuzZ9z`y{q6V)Vin2_hQ`k~Ne%0X=9KgM>UWIuJeoG@ z>_af%S+h3QovrDT#un9`I9V%&dK|~L?~Qho#wv$+b!+i7QJV@z<4gAS5@{?@F4~^t z3?LGrDV=Ex#QL7{+NB;3McQbFx9Oy%&9Xvh6m%2qNqp&6>DXFpGxEn@JF4%XG>|ST zf3{L5XmHvuFP=TL*KZ3$RbD~A*lQOvk8TLN$j9WYZlDtTE;1hU_5C8H;F}7GEr3A` z|L7dQ1J{2vJSDBIZGPz*|8S58pxg9Mcj(7vNKD4d)t~S`nQtVh{?}M2z&r>SnE5g9M79_{DQ>Ua~n8EL7Kjbg`2KbfU(&3#+G!O1^#@xqFb zP^1D+TytnIf!W$Ynov0idh)1t z`&e3!2MJZDaMG@%zZA}lQ(CqqrD&9%Y4+LsJO(Y7-ACyz_C>6F;{pms^GsfqY?UU8 zRIBiIryD9Dd{*ULPbGVy`PuraFcjS3020<4I99_qaHJ4l3`JMxXX`@2Fi=-31ZXr> z5Bo2mPyE-pCZV}HQ9&Z0qnV6)J#;dLC^JP7hj9?fY^{%MB{PTBt={ogyLlI{ROME0 z`;Up7#;*3zrD1%;**H=R@G%CvuD&iQ-@4xAMg5iz>oglM`K45cxdwXB^R|4r$TJf^ zey79EfpsGgcc0@Cjz49vT&$|3(cF%LVQBe~YW8(JRcp?0`h^M-lVf1BzzK>uQLa8w zX{hqq~x_JE~RQyL?nmeB+_)n++}Izg8H~fz4q$Nw_WSxn_DF#r4-7(Mh@V}m4trM(h^rL381g$i9MEu z*74OE6D}xNai+I?Kl`PR!V48I7fGKT@92dU&Cb004$QTWRT}2YkgN=WR3ZYM1e!jp zWkewrCejjlF)e+D(upU6Er;iR(2sZEP(+_4hL0I%k5bSNyihLs`Z5qkF#iAJ>>K0z z%(}H3+qP{qYHZtf8e5HR+fJG^Mq}GX89P-UTGuf+8@DDgK10!2`e3pBV?aNjGhR#*;9LTJ`!4>uXk*~y- z>}0|qZ0q=7P6p7O1i%|4^1oG*Bm%3PA||9!E$_+U7c2vymMk@g zQB^8J^cPQQ)dYb-Y|4j9$ZH9J_QdZ_v$IT2e!h!YWPcU1WUoMU64fURs#(-sA!$rl zK0deEJ+jIAdSAK+>wxC#K@SmYM6~dM!4zJkv9V4$BE0u3C%UKz8JT}UzdEw!>BPKX z^&lC5(e16VV&4_K&{EF)V{e&(-|{CV(z6Q52KyS(^9a)~?I#l~pp)VrPJ;g?5|a$HR3-rMtqqI^n&oYr{d#u-N`Jhx#nN0EC|P*jI8eSNb~94 zZEjH);nka9x=H2oTu5WBehOffGAr5~m8sVje@kbZqbs#v=zXQ_>G($Z`d1*wc z4}Vu70w{nCV4VK_rT%l~_b&y!NMFv?#>C-&QbFuEU?K|8AWogTDADZZ4YZ%uXm*$v zf$@*^Kk!Dj=@sXK8dmpW!|?LuO}xeq)kL&sf_2>U-eBCnt9}Mz?B>rWIixXM@I+EOSN;3s<$xs0GE}E_P_AhhavSP+tX_>fxL+KngV8 z@k3Uf6oez`mjr>Q2Ntx+YJ})^!0kj3ldd_Tux&q@#$V6y-AF=S+*lSvS5>5mEK%St zh~BQjFQW8ZRIRa3B=@`eJ#|9Q4afwXgL*QRVGx$no8U7YGa?&(cJe#DvzXXGH%jSO z6~Vky=j8uh0$lz>xD)qtwJ-bidA}9zKYOEp30J_#O2o#=!TqNlXi%P%o8w1)(sfO# z9UWl+5>b}tK0%HT4uDYd2O@?F6NpzqSPeE&500#pdXsd{=RTDX1|gUIP!L+xure2A z@(CoNe%5{Cu7mw?y}q-`=K=H_`2#&}&q(t3rojbhB7)>6Mx=w}sukaMZ=xZc>1~vU|2c zTaTm3=^Kj;WJ9z&#^Ei@=zTYi>({--4w$=)Pn@I<&x5A+oroE|o*yfMfF}ZQ_YHu| zkYXHOXJXQLNz{;Wa_(3mFx z4`kai!gY1-JGzNwksMs_xkmHsEu=300Er_sR>_gWA+G2Xc`6Y@B_yVEW@+8?&KWr=2lWD@pMu{Fq1pQ`5WO`I<)jP zM_oaDAro~Xcs*39TK-gtK;HilYEUevpoCu>!J6lLce*gBz(&f?wY#2`K*O>&s_|pFO{VSL*IC^GWC~e!h z)_5?jW5nOyg0pk#xha__6~o_07N?_?^|h2Y=)Y5Fo<%wgliG3PwnNr`+Ng>6P_Z%ydmHh{ z));&f8Nu!s`N-WCkMh>->Am(WWeE#DB^N!y;3J@T2;C=9xETIgZc4Z;W1hR>Q;){5 z%ed^g%{cyq)Gd>^!Vg^hg|jQj3xIXC`K@*Rojm1j9nIbTCwY3sj#>cZ8T{;q!*Fwp zu8XeGoUXV`e6XsD^Yw}=R6JI%uK=u>xXWE^t;MAdpLi5@b&^p%_GPo zW?U8_GJ^K1rs zbldxuf)PIoqp_=Dk>1`|ky;s_C4o~59XR35*h94glr!|{?GBGdZ$mGNCiuv%B*gmL z3Q890L|GVaz5N*Wj0u-`M}Y^_I!Hh2PA;6v+Hy!4+`@(_-X}b6yXD<_fBf?wq3Yn{ zEYUJRaFM?i-2WCSDZOk12>dfx{VUUP`B7N>`*zf0Up%1FUN{r43@DGVH<5Ny&Lfed zCZ}mm{6N`%^>Z)kEGIE3UAt$ZYhWlhe3TRw#1|S1E7dPG3Fs$I>^zaInq zKdJt|TMS7FT7V@d)SyL!<%yz_27lFN%JAIwS71oC75sDsY`|oA(6XM4An?ZG<}wVz zPf5uTkfPfO2v3xsInAQ^VR`ErK5S$=FPwbx*jqeHP1=$hq4p>%bWW?gk; znyLC>%lf01jcLRBHE*Y3gGyt~{_70g_F`gwL^OypS!)WTg=G&=QFEhyS|7@cuOj|o zMf8`opa#$9qRmaF$ikk?8)-q%W}ls#l{J#44G5kzy}0Uvr7Ug7YRTG_<5|VXvRlWK zMlKKDd6yb$f+n1`o@kC*tF)&trjy7c4?Fww=RHl&BeL=%mNfZgfaYb^_n}Dbv(%|O zSW{?8S00bO;YSh{4;a}(4;m5pY!@Q(MdI>kzd+3qrJWw2a#4OO;^?_BYI7nBpD?h zWvRtJ8fsowA{dh>m^*@m-b@Zt#3r%z+k~aVWFDvP#I}AZN$4meHB!? zQhg!PeFJ@!$L@;2WcoZm7v`3xo@GWKZeY>iU2D1I1`v(HyD(aP%7YiB)jHK5t8IWs zPR27TVntESFzyMTT_7^;2!HapZzRnrjgg6-l$9w8iDo>;apE38F~>9@*$sAsV7b*I zbGF!bLm3^}WXg{AiF@K4lk&;zN9l;vjprKZK|tIPl1FURefR-2>ct0Y9R=0y>DFA-sKq zEuoss#-y(1sK9*-%+U}S9X3V2+>_%1$jsLKbRnXNCY;o zP^eo~JdcfQE>brS|B|*^-mN@650dyfmmb9f3qH`*|-x z6;#T>PP};;GtHF7>}nY+q=wN#hez6Mf{Ij@`x44QG8!%ywwiG6YlX06Hg;SG&AMj5 zZVE7M-M0RL?tOC^JE|u8MCL!xqAR>Jz#t0 zklQZxvW3euP6Y?xsp=HBF74+81Z;zI7#0ziJ54pr0 zQ^~~2E#}fo1mGsm+LwJ$X-=p5MR!2Wpe#G~*u(AvkSR&<3`|%-4_TvQvZt#E*12ph^ zL?`b5r_k|rJl)_b#q#2 z{R>g2>!bxaMax{)GQQMXrN&rU(zf7vw`EZ-wt+VH3gFDDU{8v|Je77ivNQp#k#@TV*cCvGj_;QdVd%-Bmrvw zqV1l+p0)aDXHpqf*#{Nq76m(^%14E5nRG)>1&{=TFYNo-Z(R3I9|0SGTXIPCU3=z2bCRER(USKxlwYL4o; zZ6(M%_OS$4Oa~=-{HRly>J%w?%;rf&P}U=B#}gOcct?d0S2x+vJ)g$qYarVG_BU>B z$HFBt%&7OAms2n>C%U@t4OT$FZ4z3ol2JrY-#>;t+TaH^1CuijcR-XKLgU?QOPucS zE!#FWPPezo;8>o-?@f;)P&w^b?sj&6Aj%HgUr(agAwcv7hdzk8;3oy;Yx|xGr_b1} z2sKbeFS%%1%Et1=kS#I}w1B}1wdjm^*Uf(#V?gJ-5_{0$S&K_nKi$H3UpeZc zd3kw=#<65l*&F$th#umA6|BcR0aFJ2)k?hk%L86%@(J!{WU@IH;w z2+6z%XhFgV!P{BJU@Cj+;i!2v$1RZSyuJ)Wv||K%@L)&N4v)RDqZ@#_IeT8=Z#h*G z)H}H30ho&tP3cd|O$!Dz?CD0_ND3EdLGAI^4Pi>_P`Id+W#Rs{(H;t zKcZtXOaQc3L*^e)iL8HvN+e@oVo!<_5Ehz+Ai{#3OHHvE9~kNy>Kc0m=nk%x!&(uN z|F|5Lyc<~NfD`xte*XVX@VDaLe-94)jPL*L1dmhObNRl2shXWJ|32J51_*u(+j#w4 z2yy`j^!V+o-`ZO^m@Ak{6!B`q$cM-IVTEd7b-jEq1Z2t~c7hq;+ueTq{l808{+TiV z74%g6dA%E^%?qNyyh2Ssmuov0>F3EGvAY}nyohD51 z4$l46(X_KQz|M~cEb0WLYmht3@~0@>Pw@><29_yRem4adYy>bKZ{JSmb!e`Gk zHDuGlOa%0R5m`%pLlF$kEKRk0BVEF$;TYF+6B=vviJJf~I~Qk7!sA_7Xb!J~H#X}Sf(ooG*_uCD&jwqwHVqkA@p(uM69jU=QzBnmB)#GzCg zSpTv3+9qj9)pTF_0WG-KNd5Xk@hC!kM$jbLXr%g^T5Vi#?FM#m?3lnX_q53G%gqyw7v&?<&GsmZghnpMlE_xSKX{5`N zFF}?;-jiGxAd?OS@6QMjNG7RW{UtGP#KxzaO9%y0kw&`UT2;w#vypZjDi+-2mfp*3 zE0B`H(}=d zt3)_~gk@3;IQ0{-NqDXRzBwtnSg~K(x0* z%`V5>O=XMHMrBlMzfFwO0_wX*6bYI_p_k74G*Lin*mxQc^5%Km<<|5LKMa6FH9A03^Simkv=zb zhU(l*rFcpLWlsuv4vR0fi3JIZP6i1p3@%3+DqcOU1SKI&(QT0I!co`mH%k!=MHj0J~Pf%SO56m5}4F+8? zmhgb;FBQ=8scX|mYH0FCFtbw5eJeBauG5&mWAh1=UkiN!E_DRJ&kYEsA{Y?i3(^M` z2}6!PFi5UKV$Fs}G1_WgAUPB#VH$km9vr!wau08>d%uD^J~DGTGB5*{tpg)mzU@w` zUX-Ele*#IfAST;fD_K6s+vpbdu-7PFrB5w}0N2%`LTsfdrw}>=gWTtOmjQEOX`~|`GPHsd}h8_U6 zH7qqIV`7XrJ#{T04i55qw@8bHxjLC_FVRq3=o+|)Gk|6G3Ry}r!dFuLHLH-IuOT)Y zk!q^NDPzzQCKe`EDi*&l)Bzh{&J8>k=Mxr(?{+4k0ysTK1kTS0rk*-58(_e1erv>O z0e}5BFDB+->umQc_xta2{|sRo{x-MuA3@k%{=cy zKov3~#Rpxa-n<)0(N@PP^EM_s0~H;wq*_Q1c_%5W!vR|){27L4=k!VZ-9rCfx+F#q zNxW8=cpA-nR(Fo|G?(_V_&k$oNWj2nERj~{|HmnaLPwe)=JI=^dT zvrZH3Cc zZ0p>x`UPd0)IDG|M>@YDff-BXHsSO_DpR6 ztW4ieT3gS)tl4%xUqg3M-@<7lQu4xNLlhZ2H(l5B9VGb=8_#XIve<47C>jSGD;e!kgAv1GxAdR))bg9s)Tlv`K@c3*-1C!cH*LZqRWA5RxV*Zde ztf+x=o2+!aeCjfak{Yr49EvqzRI+UT2Do-_4)3VarsXERs~mfh-ZkLcu!Tr(iBQ(4G+7VNG#vJpd9IP>GGbz8i7M4wuY8(LpC?kca0C(Ci3XjXjhs!+=5 zm#L~_n$K{-&Z_9gYhB+8Q@fo|dvCm}KSgj$VF_GQ)Dz9$_U=K4Aq)!zSdDDGyR|+e z{Nql_kq<$>a@tJcN7HK>q=6VVvW<0DEvP3XyuS^(f!0>rq;Bc&I6J4BX zEG&VPcra`)1u|AJZLb-!MzBWkB$+7|ZLl*`gh6y3HPc|MksD#0QL338*{)@5zwp^CNA>ff+r*>$myTzttDO2npU)VXB-g}=tvg&}Y#QsJ(8jI4*Y%`x8TD^=ey>Pv|-OCrf9bl*%< zgW>iab`iA=L#_J#W&jo#J1QzNbU1V}92gC>qy$(as;99?$D44~iXk_(=@QkQwvzW& zMW`yM6&l6)-@~nFD&7hyjK_!Lis-3hiDanWVr;92T4oa<)EsjOp4Q)4g#N=} z{BV>oqtbL{e>ls@|8SOO`bNg`{U(s%K>R_Guw(pVBd>nW>}s_7xo82*O89U6#6RQ7 z7beY@FaC+b`6nCXPm|NHHtD(|jEMh9cC|_N?W|y)d@f>_J*B^(-#|~leZs=#9Fe3~ zE``WC`N~jyPQ9!Ve#$zB-OiX^7m#e*V4lw_A7z3%8m;8rhVqAlUJP@y&ab9>D>q*b zHZY#KA$+yY8DXfvlCv>Gf-RK9yrk*!-{F0oP$SP|?uXmC6%Lu;DFJ)3KusDQBS%3t;bEGJI@m^ zsg;{HnNvKTGa>`qb80ceDL+OAQyqMz$s_Tlh?!!UM4J6h0w;_fAyl}Q%dxaQB-TBH z8}A*BU8`QaOzJngR#j-Q4OXtAUGeig8i(D580i^MM1Vra(hd{&Gk3tVY<6FQNC8=p;(m<^_xU-UF!LjGbG5^acK!5CM(l)2V!`%}mE(r9RmpLb_>~8; zxuDQ&&3NT8az^Q~SlqvN3?A%9 zfw-8h=ujg4+}__iU5mIYL=yMuoiC7`R@XOa-B1%O^&{Nq43J?NN)Pfnb{bISCiW_RU+J6ned_ zOK6fP4Ir5RplRV5zsV^HtRe45_9E>-FVIX`z*XdOctxb0d z2PY`iIhrTkeB@cY^0ye?uh!~WkdYoR81 zZ0F-@JNVIOLNfW=u7-Oa!_s(WY+C}tQQ#d{e7)#ay%Q&^KhhV3g%mC5jX2< ztV_GCYS%Q6oK|wP5XZw^h@>;Y&E1l<>1+P04V5{}atuX5kozCA8sXl~fu8|l;s0$J z5BpESIld5am^-;M0I1OvP3(S(%J~l@y4m8W;u_5;K?HnIgwm8uZWZBj{662Qa16N> zCrT|tpFXj(*zP}mzJco^a*>{coRA(*O0l=gIchtn zZ^m>m>>;#LX2=UKUY~ax5U|N_-aKByu`g43PcYA6EO;d@#>GdT+5A)+{e4lS$LqOq zmr~A|RVTig=X4D*Qh?h4#<|`qwHnH~QMyr4HG#;?o+BkMdgbal`~;=^D#SNIdr-kN zUua23{K;?#SJjmd*WU|CBokgR$%GaSKJWV(hOh?IQh+$J;n*z!EO`Wx!xan-($!ph0BO8vwDoHNkIzK?P(IWJY5^J&d^6o6REek3WYBC>a z%5Vcpf~9cW+c-G#Q_Mte+TxHm)JS>gF>11G0+E3P{ppU)`2zw`G+Y}bRK|`nA~TEe zcQM7oNoRtU6ovj6fbDAgBl2WBuplLa1Ls>(b1G@>`ZD}3rc|5kZK79Rt z%#K>}|8t@1o_!OE%GL8k7dND@@Q##I4B*&m$8EPr0WiK46z>xAO2`oqn zM%k}Y+AHB^Ge;Kr=X%MbEkk%qP7I~$r?$0K9l$kEkAU9GGNFy-+s}^d9K>*-V(S1e z?#YTRQKcKS$t!>i`Q0zCBevuR}z4lfW4L2apx9$KLDt#=^ zFFZ7*z#gA)no@i>xstEYQ<<~|LswKA9V?Z{?JwFpUh8aNTw8)Zxf~J_ZC^hx1n%A# zmDjl&yWwULXObC1l`9)vR{XAqZg8gggYE8MfKjDJrCAje{LR?t-W#_?@~X7en)hRj zwU)=p99v`x7!WEQdB@;h0a><)y}5EH#KDrfu$n4W_H>`|=27ToYPAS>K&A3-8V2v7 zPb==11#ZUbbuMntza6=6cv)vgd5b)FkvcY%b4<}4J&I#j^s8k+L&NcJmw&XUT_Hg z{4sunH^l_^+sk(cNX0h5G9iNYe5?T)1gsbeUtwqR5_jY;&SWg`V}wf8ecw3*Xv3&m z6)ej(`Hsot7RigZ!1A>7&a!aFoF{LI?C8cneR7j9*BaI{=-2W2yv`A5#!JMJB>{^p7aRczuWa4d4YzK>eShj9;(tuX2r$t(6rZ z$oK^~5Tx*9M~bKSLz_rHL_Um;Uq)pp3}hJ57iq@$COh^iC@f}cnK!AM?9H)BVK97M zG0f}mU6ti2CiAK2NT~_Z#Djw^yGDZ;mh~cCeo(A*0Bo z1;Gl9pQGLt-`a7LbO}c1*|f|wiV??Z4`cAE`V%cCWY2j8JAHWUip9E*rX-G1#6rKE z+l%hCTWFDCJ`*)ccFIXa-9q0Z5z?jHf|f&Rn6{{Da->W0`aG_Kbbf%Q6Wk*%%Tu`z zVX6;y|NwHe3Ke$%}@n8r~_ja>zzfneBzd^!1L>O zA8#eZ-zjPKE%#f!oj*055K!jQ&~(erH~9jr(u#`Jf3o`~TuL$@FGYc=CL9mNGWesI zKJ@p*d3*j(WxTA+^XlaN>%?#)F>L5)O0yaRQ%u-Q^;lA!14~fp&o%1Ed@p`DE?J>j zA7DFcep_}U{YQxNXTD4Nw{?>S>AE0fq{rHg{ZOq z>ea2OG>!^QA1kY7FQw36)K!l138rGoxLl-%dIb#q*d5LGGSgTJ;+~(rKSFe2c-n0t zuIq+pzZIE@h^k$zAVImFYi1>QGjp9tp@RwqLsd*uzrn@bnwU*CWTSgs%?YrGvt(wz6(`5IC4XQ;TPGMf(-#BWY~Pz=fnR~0(Y+1TRG zuiRH`Wr#lxlJ4?fiig=Prrh3h8Gn+B+9M5>H|mmIL~x6bpb<=3`|b{Te3v<_@qKKq zGBh8=o~%wVc{IB}c}*^A*rpk{Ow)T~F%E4Rr{reRBrrJ$GO3*)8@2-4X~!@ttbhx_ zU-m=?797VH>V^`&w`=J@924CpfivZ*B^z0i?cjLl;iviaR1MOg+SIOQlxBV1i2p(t*6~>;`T57R z*G+C9!AsNn9Uxu!_o0PfjKF_AVh39n^IuC46>3_JE5fL}$5M$LE^lWLk-wO)Ey&`) zCQ3!f5H{%8NhHV%jocU%l#hR`-I?weTEB;TfH%#R8$0hp*c4;R)EN#pw!|}e%UoM{ z<+Z=!IPoRB;rZ)bRVUD<*S$ahtX~6#ldvWHEKf#jNrTV|_63TmWh_ZGHPhs7a5X~O zsly&(s-;~*>l;w&B%Wc$_n)eqbuuy@-&rmz^AO9wt;rjAI;uqh#);vc-34*!!}GSP z)|su>K5`fpzGw)2PLs>xuQbo91~$%959CgSG^P=}w-JOjr|oeSXdJ^o^I#*fqY)@+ zNzulQEFQ|*Tly+IaES+0F}do+#osV5>8uI=!8ee^^i68nwK)=HR$AvNnm%fGrhx*kHBV@gRzo!BwRRyB*ZJ}4lZKg)h7{a7p&chFejwxoA=fE3xL*># z#KeUV*Y)Vku2(`!Ev+R=;K0H{H0e0YY=d0u7+E#9tZMvJVA>bCWo-K_2dyS{Vi7J5 z?;fW{Uh7ZYKCoY@uEbi4<)d43dqc6a)hmygLW)f=#k-m3`U@$9poeLbqq?#r)8BuX zB?pe6oH{(kf1}PFIb{lB87R_`ott{#L$WqyNVRPBRz6F{3b9D8R+30Q&T?1MiRzkL zNwv%+W&;6#xAy)5SJBAhT_Nb~cp((xw{#o0>d;g*t+W)buEO*u2ZOBVBq2pe22hDC zx+v3;T+@=M`%YJ1lrcZIm7LBUnvXHT z5&&lxui%1&0@p#1Da%@SFTmx6>5|5?oiDW}=N$O~e#aqK=`H|jow0r;yjQS-(19kD z#Tob0{D?a}fTy7|B}BJB+MK!7Tz=5N4cSL#^X3zE6Td$NTnARp%EhcAh}CcrrmvQ? zV6#k@3B-04Ea!taYlv;SXU?D{{4`h_#<}LeKKJ^SmQT+%iv$w9)LZ=CW{yZWXnL^f zT$A%`A|KEt=5k?1;_4GyAQvoEikhi25p|`3ra&X{+nF<6GX>2cc%e9R24E%@ zcLs*=AN~fAQvd7Xy6%tuY3YwX;xD|RvpLDX@2kI7cE6izo6GOZ)Tbn#0yyQ1@BMc}`#GkcCIXC(09Y=D%pfjPF*!DAWq+JZnna>B z6mYTuz|X&*jN~607B)9Cadi4$l>8GY=g)(ArHozAZ6p7;p2@zHx|fQCadyk|YSaD2 zc?41yY>N3mkQ@Q1ke1%Rh~iHis#rlf+HG-SA}o=wyI~TXrTYEI*c^obb}wHx05A+p zELc6#3kH?{3zKV|h4l}xrC0HLg7Kz3iF=~)rUQw4-4z)>DL)oRzLB*9&T8~qJ>&dC z8i4yQZ(#lhn}KueXgGlIL&WxL_$>!7zuGsTij0B&CM^5UiUI<5IW_@_tk67%;E!eY zuQz)T&I|eq(fW`;N~MlaO9=NzFF-e8oc&<)nv=t>y_FHg%3ashPfg=V{BZM<^W|++ z*XQ&;@WY@&M%9mM*;W!K6P*LAGJzVDGc?@MWA}nwO`b{WbmUWmwMgw<7vQg!UgX$KRjAzh0f6%)vK* zvk(7x6EBwt7%||-$S3Ac9y9{_?x8NzgtQb5!@(iKysZEczlML_APf?aI&kq+3Z4eg zVN!cInR0SQX1iBtTolRZCHXYa!;~Woa?&FbU{ut@KbeQkj1dJCK#>|u<&9ry0;Wc3 z`O#@Wa9(J&K>b(&d~x&3Kj`9ogTxLvOt(PB2f}AaF7?A|+xOm29x~Wl?qw;R#n1CzjMSgTh)`2F=xw z?~bSJXyn(cl1kjSXy9>OTzQ$sR?gmt{&qHUnoJwa1*fa2yd^^30nna;WD+ZPz#DkB z8A~7+5WaFaSjNpLt1vtF+B@cOs*z@Qhj3rj2=~xyxVvS@D$(1etI-n4)u&I!>EkK} zTui=LXH%OOM)679vYMl4nWrc#NDT-7C_+iE7J_jC6jAxxMCunb%P(d8mHs-4*f?98 zI2Zs{`~D~$$NhneKQ1TaLrI6)Qe9K8)6(4J}s1MUmU8yK0nF+lfmPbp- zbpDDPb(>rU%zq)?tKvJJ-iDEnce~Fk4uKUv0giO=t1g*7j;JDUhbm$21PNl2q)25h z6#LwQB|nk3J3Wl@D0i1O)C0=`VbwWiN_0Z5Mf-Juih9(g5P>d(&vBUmGFTSqpgjFVR1s)21VW-%*b5N!fQfJ(t!y>2=3Y4aThoqAm z$Yqk;N5m2wCr<3^J4l)|52LMWKps_jVLCkre7B3dqozVuAcNX7JLXqs>fCr%-TY~; z;MDIOte9VOEVr}I>Bhp{hJsgNRXP?*+wfvUu6!ST8<#hLRoCwS8piZacUluwEaeX0 z^GA@unLB6q8lVgM-|FJm;L9mUezNZkW?p*| zvXlHLu_BmIg@=W%g@U0hVI;vj|2UR82WdhF*3z)VuHjcU#H*N zo3Fm=P$H+htj4lCeKwpUqj+9Lm*UiB8*BBHZK`i!Y>1%ixgh3aR(d^sxUuDkWpKCu zv;dv0WYOcthf7yi4WH!|%K5ejiL`j=c*ItVS>g+Rhrx~Wg6pP1`?#06O?|#hDXcKz z#Sg}vj}AvFzyRs?{Z_*N4DDn9w5A4T03!F7IOvy5bz;W>gJuBi6aE@tunP#0C~|W8 z@Qg}r18vkOA^{oF76X-0Um@|8sqUdSKgwV)1P|+JY${eW>u-2AINKZbHVATF$=28s z5883uX7f<&Jy}ujtTyl2pG4gUVP2@;5*zgBzc)AC1|!+OwIA~uu67^?CYr>$bh+~D zej5S;fC3PK0V`*mb7w>b>fB}yJDSnpHE-+HCp+?DJtw7TJS{_<{nDBheT40z=EIDb z_j!WM)vT8&=VM}`W`eSb_3hf2vZzk$&+4-iDAsv{hhN`4SU|ncs^yOB=3-66vhB91$~0gssk9Vu*R105UrVZq!{Lxx9c8l(`$rXRTBnDNEeU)^ zXm8~P_n0O5i5g@gBEzf(P!j8J&BQ+y^%F-|$QFPN@=~$(w<1|Z=D*8q^3K&^y;&=#SW0z(+{m_tMczt68BgNuA?`@^B zRgif&c}?=%Wu|>_cWY~fsP=n}hiz~;#QpjTzfM-0e&T8+xu3i0WU0p)8*cAN9GM)g z*kJkQAtivs6sqTK+=_N0WSEsrOf2o2*U5swqSz#uWQCR!YAHFF;2-L+x0F6!dgQn` ztRSz}z%)ymB>;Ed4;+7_lGPTy*DkklF_H`jjhMH{Qyv;-Fd(8mdV>*SQsUlay@%`# zi>e;BMCoH-mfsk*ya5?Auab5Zysh7v5ZEm9#obHp;8HIm0=dxB_U5d?(X_^>Q)e!+ z2sp9CDEgd8)7_W+gm=*+B>Vhr`i0KJ1tD8VKKqlfF6`p0quA9^=O;Xlf>JINI>s#k zgilB!qX8cCu~|lB^%5EHoVnZ}^_C8(vpymLk*&@BBnRvBKynRz0abInw%CF#lgsD* zVSZ?aoymGwRw(w^xEl06Z;fJ=;%R4j7Nj}p?Ucw8|MbIL^6ARB)G@-y?X0*@Da_&{ zt5z^PRm$VyR<6Z49YOfqRf#i;JZ|gP^SA`on{?<}I9UqsdYZ{-Lr^Oy=b9K6eC8Ei z$-M-t^94v}+kiXM2JyS>=AV7b|8Vnv+DaZd0IZZ(N}-I_^5uLH2#nGQGLw_!e379M ze_3CbDK-qA19BpV_<07VzTnYIVT@>ktXf2!i|_k-Ypa=$w>96ZF(#-jq~g0Hh5n@V zIkJ_Kd&v|mH8c!&G-AMb%k+mH%=Q`w=xH)(7cP3hDxU_Hw`!v(N(;=yCweGv)>d-R z55)5z_e(g$!g4dzGEfxLCM&6ZNkN%Bm<#iKBRGO`I9Z3Q;ZE4&-t`S8D0(~2#ZtQu z9N&rar~hHVx9V}&HRP*_RA{?*&3TD z**ZHI{n5h>EfpIJ9j0l;rMmkFRh!@|VE?tPh zt`#a+V2yGZy?57MCi;YEzz=ggaLpY|j#fCP_GJ3VmDm@uezbZ6SAJ}D*DCMcd>73?((sC(8 z-xb_h)VPc$o-2PIrTg7-o}WVHt+g?zY%&-Et9PO%*PPi_Bz3II5G&8?_~2Ax`ATIq z&GBh2*NfrvQmP~h`7+jpbWq6snm7~=o#Aq^+L9KT!(m>mOH(Q<)FrEN3nG)ACLhO5 z9%&GI*^q#>nXUqOh*N0PoM7%O-iD;AY!9ajz@Rz@_WFYVyUJ3n!A%~b`|WD~$Mdy4 zt>h1z*l)h`Z}X5s1}DJS8RM<*4Wj1IbrhNP9Z=gtw4&sU70L*=1*s=Lw}(k&9`jxj zG2qz&pU!Q+3VBu+mWQ>Zsz>Ai_Wm(pjb{Q)`vTW8_gk$|{G$}{&&cmj48w#U`0>FT z5}8dBv&geEf?rQ4;2{8;cCQskHE$68#L2|kuZ=TRT2w5=KB9DY=2MWuKfLlrHMCM3 z4O>L5HjZ(A-{Id1`LrYVi6l8Q6p1 z^fvHaWR#Wb(ur3as;oF=V-Za+d^hvP2DM?7iKQRcO?xRWqz@Z`rB)upn!yKq(W&Tm zzxVl}fM==SmJ}qugOaH9r3>QAKE){pnmpT05Zrq$@i(ziQ@U|Sp1w-4z*RAcS)x*9m4M)@2 zGqr)TEp~$>Zy=d(zRt2iqDjH){6FU2Dz56TiyBorrAxXSrMtVkbJHEtEgjNbQqtWm z(%mK9-GUMVayA%G_&$EW@0^=+u`j%m|5|g+7<0@qIn%BdZBFLzIy=2jM<8r2Z%So~ z+jWomM=rV?uUOz3dW<)2gDbN3cTEA5pS=(&;aeGk)6q;l{06vYTn#IxXA^Whx+fgr zFx5n?>RJX8X3=*gTT}p-%BZ$M_slwlI||MwO37BZ7SO6{tH+en6LCK9mfM>Kt2}r) zsCD}0q(oP_2Vib-zIZ$Qvhi~C@Z1{`=!$Dj`teI?U6&OZ(L>e%1V{;Uodeh7tkp+R z(%0%A0v`sly8oz=LHL_pi8=ya85$YN>YD?bzTbnQRpfi?j)zTf0k0(oY`S~8(A5~| zebf;3`Stnst&w4|grQ;bK+=oeQhl#=d-xy=NEa@5I4^h8U-Y89#^V8dm!W7RON`|AxzT}NI zefx}G?6niS8Wtnh*thW>&WC~U#As_mAvrbfu4Uwa&zEx<+}z3m*#_)+q!kV0hnrg@ zQ$O-^+S9M>-@uozXzgYya5Km50&e^c5vd9oR5oVUO03(dMC1DR78DvDrH~PBR~jBL z8<{@_x?e2mUx7~9`jwFZP?`P}Kp(gk{y~-QKdaO4dfDGu(m$)yyRnw+smJQ> zj7-VwJ9Oon$sSh(Jcd2s@4rFf-z)U*HK(QG52oFJp27dD(0{@IE44)IwV5Q0ypccP zK9+}S`yX)Mf7j-IV;EWramk6+@CpS1!Z_k2B=0CbaM4qeqm`%$fCixgm7>QURzN?k zdd&jzAj^*^#t34jQhEf3gWV3pH=!jqA(b?-C^j*aG{M#22wX$(5K>p3a8=a<4@3Qr zcJYg&`O7Z;QHwm3Bt|Yj-co7o4*>xtGerZ7QVnk;Ayfs{?ttP@g4%4kvG_Ml5*vDo z3qp*AQTXn%AVp%yKDR_ozARChG{?OA(@-F)yoj(gcCbKSvVBlo0J z(H06w?RL66E=NO zp1fufzapU!j{(Ea3%C6ep8=5~cM;t3>6^~&r=5@LHOY;kW!}IGl?FDv{@cobkGSI2 zP5?_Y!~b*7>$@oa&qwY#+EUe(HiY_H>x)v!sP8Nc&XOhBHJQ{2IQ{TE1rP>DGjdH? zs0B9!m&OGLlr0E@%YM$Icf=mzy7#r6R5;mnZ-yX1L#-=XNPr>qY!D^(l|p+cDU+=j zJq5!PE8{0m(FtHpiGRS>#J^zcCnUoGB*Xrc!{H>uVU)vunyjFY2JWluo$+AcntwF# z-!pvRA&3ABfGE=s8P53FC2Qc)nt)LfYbmc3mN5ZJUed9I8jMXCpA-rZDk?O@(#>G^ zkLrz@jZTI(L}x0t0bSq-ZGwb7Ash1{inXn$ZqBXjjP5Nrmn$c{PjohNBX9s49XKh& zd}^S&Me^s>n7GLaXSdPM!Yeo;IPxr5Wk-OMrceQO4!Qe?Jj|^$1I%Bmm{GXCyw5s> z=GDNLd_Is^wlseuGWP6!It5{*KDZ-*^NL>{ktAzkrNcn2lu<~@B~ZUeoy zADk^C^LG;Ir6?8zaGQM?v?URBjQU?JD!)0UBVJQM<~T-js%m=sJkIpO6j1A`S#HI- z_$7|SlErvUEkF*y#1c`#Vie1bSX5^lU_)ic!DgQ$?84}d>DyY-K?aAnlagv^7kB3( zH9IQC?G%(p>>e%95f|T3^CE}~ae2Ayf`pc4WGC1e+s7XP3zFm783C6OYWuT7HUqkh8Ty<hqFw*WCU?*>W5aI?Rg+ugw0toBqp zE5e#$U=K!RoBdl8W;|xR#0&4Wkx}}n4cp`uv~M$PEjWISOln;)Dm!gd-trWJy!u7x z^5A%hcC6d47#B72G-8SXxR>viO{k|&pJ2lpAXFyHdDrmWL8mXjp6_6EIu9+1v~tIr zyhgnPS%4mXD2c45OeUEuDtIb7%TL^|M62DN6MupmGE1BS8jHSTyH($!Rpz&^j(#C1w z$^|eZ0Fyx1li@>mcW+m4+hAM_cmeOCZK@7%%Jp<_G~BC5UqdAtpTZ27K3cqwWpnE@>A)dr;scYXfc-fS96OqJle)F?aZ zrr>n9_`&M!^0qN#jSkLpYVlMXp<5&o9rs-=)j`2;BzBCqvnAQox)Fx8p1tvY<2?zr zv^fc;<0dfs1@ay55zJejF34HioS6H;1BrUtWRm)ejLHk8(JeMhF@QZJyd|BuCUd)! zN^ol%_juIR3ii|l7XV~#KEtD$0N zKggq`ckz>Pm0gvq%zNBYu*Ld!b|@l|oE|%%UogQ3XsNk5^6EzqfQJJpg48>>j=|eQ zlJ`X=5XQL^cwwaKid>QDeZ%#@tp`dSuRZj_7-N!S>TqQszmaP zU-hA3>1M2LBirb|Tcy>8*M>hY)uXj6Gt`_-2Qc-{&#D`K)~R^bM2-1fw0kByvhz9c zki~$`=f9ur@2Tr|$0KC}Fnkp6{MAPJ{&;g01|LLZxf4G^WuM7;kkf@dMVHZP@U3Wv zMO5Bwc3oo?ljplaH5-y`g7&aBNtsTp{G=8%vDU6RAdGgY#C`-#K z3|2KlE1rtKS!~*K6WYHr#y>z=fbAqv@!3aZRUYX4;-pc=To1q^JfVdg$^;%EH(127 za6?MT-2xXO>(YDP;|)M{cMVj3N}QJR!q9nx31HB4bQ^`Cnx~&GtHDK(u^vk~tqpGF zu;4lm35Ax1(7&NyKumA0%i;Bt>~3e0mDLv=&lR>mm#a#X;LDWzH8U{~haBPzaj8VF%bx9WqKUvoxzzuJ|KNzU*lUDLfEOtB$8mw*`38@2Mt{AP-`L90l@EIY0=>!2 zCKKx9Cqd^BV>3k~OR4#FXJYJ7A{PluP#lL$qgcI%6(gdp-^PVo6=OFM zhxD6LE(tUDfMzM!zCkEuYQ>2*P+jm-2SP0q8KxF2Q+`dbQ9}L@-Z%c9PH}N|0D~&+ z>~75(a6zrR@O;8~W1F3FopDdqZ0@d3EW>>iD+qk9a?X0#II+#?@HUp&J<$kp{J?sp zPn&5h>++%(@+uq`{mFChfX@Bwr?AoyG&L37^BX1I8rZGbcfR`2mIgti9mjDLJ664YzH4^+Lm%bFagger1xkq zxgs$DM|enwauI_ zp&b!!p$yi(h$r4Vg$&2$Plg%PcBBx1uF-boQIz;~T0gH(6X>H7O){#T$bw!pIu=rh z@Plwc)l|&+vNL3Rvg0b4&(M>k)!-_NEMRcuOY*V^M-iECNhl=?00>IH@+CnFg{HGO z2apFv!_7+;s@hH5y=fD&v146{hhgh?*S7A)nsnW69x$9t@#MJ00?e0%lR-}f=b$j= zE#|83yfd8HAUvPFWxIp4OL-m>OdwoOa^#p3&7WY+-l5O4vy0M*aD`yh@ijOtv(SJz z(-;cCM11Jkwa~%xe#Zd(kfzJ2k~Nn%A_kfW<;7R@)9<3rt_f*i5727wAMN?~;^wh^ z@i$Q1GwP=#>3q&iL3kaN%V~-WP$gchOH$T16YDtn%fVY61`t#w8(eg`#C!(|TSx8Pnhd!?02)&I_kvhE1TRy=G>8YlO9B9&N&s{P6 z2oZ9j{l-eOiOxaNVH1MMS;W}d*^mmO^8F2VJam{h8$W*?&|<*4fjyN7b0M7D9dRy) z4zKcKaVXJv2|#klhg(2OjBU+h@b~P!tAEz6pw4^d|DG56LoIY^5}KX*`y$u8?X^pT z1XO<=?$IGUk4q7wKANaTG2&XFuG<$A1K(e1z{JFsm;JEkB64u%T;9?|MOq7)ZE%HNg%lbLXhARh#qqL8#s z6J@#IFJ0p(rQ;nohhp>t^C*6d1$6jg=5-9UlzRn`ku;9IER3Jo5& zSvro^$#7tPub3Ng_0B|%PSCjW-JT`dUHVy2Am?XyC@R)I!X8DtKo{VIpJFxK$E`A7 z&%oQJRJkaVzHhkvDB$#P`?sxf5NNqC1R_yMi@};D@(uZ3_w8Zpm!Bp^vSL)!gwM7Vf#1#NnlyLpJj^IcdnC1biTTTgscf{$Gf0X)D(Q^QtP-zB zRt_J3qYVIfW2Jw*vELsFP(R2C;9vx-1O8p-d>2j%`DdN;Kz8klQ38S>KWMI&57kVo zw}OiKD`-woVDUmwgqNwGIRI2h9O_D|n92t3D{YaJ#SnoIc_9L!vvb?B9@EtlQ_+<+ zp`-#q@#J|&UmILk2_H>=+eq8f9CjaMDL5?x*T<|I{1|okf$W+K{QX}!?FRtUNC99C z9LV^Q04favaSc>%6mq**vRt1hxqMjx==o0r;IVyyRzp-EfR@m-Hy|MrA+N7`kz;-z z0j67Rp6~Fu7z<{YX_cT_d0fILJXVY(xa}p3+e;}0=p$~SQ0&UvLNN*ewKFU zU3+A!f-9Vkfr}>+8-54RM=yF4ES#m*ILmMcO6RpcFY&1zzh-PknVXS=x z&d{j#D^YG@3<&Pkj!h4-J9Cd1TzR|ev($JcmM&(Lj$cc8pci1*kgaeo zJ8HC!HGN0xuq6)UiPEJEsab7d>JQHeYOJ^3gI2axz`Ml|e1K0GR}}Jos{;QVD?IlO zU#$@e8o7+hmhc${w2rbK?K2FhGD=(eXR30&&!esVB|iHHcGbF~f?sg!FQruvFqLhn zbWxMI)GJQMlyIu*FAbj-lDc3Qno||~xX-2~5+>tzdUEx3;ce?_y2OQWM?5RV!vj6i z78MlbTRTDm1XyI^oNx*uC)VV%w1K_PK3Z|@im#T^IQKH3) zOI8-#`?0$R22KLc1$UImI%(z89UGW-*5WyBwwupxd}+4mUTx^&GFJK_SbYfz!9#G ztRL>5u(cHv;dIRBvR$tH5WgD!4D zC9ai>Lqrz){y@z)T?9C9u--?@7qb^r;Sc+xVXIzpjV3Zy^!eATCtR;PtAA#1zfk-p zHt2O;&6*}j=V+A4#T^Q^_Br8nm#2O)-68`${bKmww&VUNM#6G%d9i%yN+IFMYfE!( z7$FID4lU&!?zfD1JJcieWk20#L#hD=I&kH0S~S+8U9=YO10Z=(1fY$SlC-2%25+%n zg^Lmwd|F%^&%%d3UMJiyoI|DdkbSFi+Sk$7p~cl>9-52^@lG5BzC@itZB4?(H@}`X zUk&uYz5-sxdh!rJ9dr&iYX4GGluK5UbzjuEGqkm^R z0Vn+)q#uA&ncpkeAMWZWE$vC}>(`l?`cqxul-6pEMfCIyBtHH?u5b?np`b)ijUV&_ zMnLws`h@Lnd_q9gY256@`M7cC`wBa1oP$23wBcRGBiA8~Cap3zVpTC?ak?~4`uxRl zc>+_g=cyc%%co{}FZn;EaB3|hEMT&#>E4Vx*x=G?-xZXfe25u;@;#k1O>3r8R4$7VL%N`?zC*Pl;*_VW zrOep%w9OFw`};gsA7`heF-{$+y%#K1mP@IbN8(hCwKH4}hsw6)2w)r;FDysm*37;J zZakY*O~}ENj5n1SlQ=|Ekxmm#?(iPimlTwL@A&0o*#7($r-Y49TQ8@Dn&diJQGswn znN0Qwj%&CYZgX-8(yWz<`|PM8ZOtUjJ+d%&+uHL%(pe-9tn{nL*W5Ek1Mz^AYyGiC z{U5RNUpu=Ue~i$Ab_;-mJ>^Hj#|E`-dKExV--U_tj*NtE5#9*IFSony>MNCYa>FU; zEyc!>TsI_Ba(bgZ5LS@d{?3M}bLhgP0`(e{)>Si*g+SO2I1QY*%stp0!+cd_VV`f3 z?hMfZ<3RHg)ypEHcky6fi~&_yu*q1{C1&9)+S#(bqT&TE7S7AK{d~nvr&aO%kCs{t zrnL3ca9z>j!~rydEqHj?D!OVP2fjr*A&Z!WzjK!i1Ccm9pm?d|EftLH#fa&^jx(ol z1y|c=(=(kKP7OnA-LrVH14kxMHG1cTsnyL*c#;k^auv0&|Nhf`HflUnP(tW{oKx45 zgW+JU6+oKd*rU)yDD|xG1y%!!jTJU32t7&WhcSlqKc+Z@ztwR6pniUTVDSpW4}FerGj{7_@RXFaae?SCR(3EH>urTl zA^vzY0luh(kZuekGj?c)dgat#WpH+(LqH!I9ma1B?P!{zbd8;NZc?@Hzus+-zs7Je z<})yTyMW}exQ?#y3}WOOCB7{G#A8^1>uGl-Fn31e4ER77*$*-l2i;Tsuvms^ zbfCv4yJE9wcby!osmm8%$~GsEsv2qZH_^jxyYuI}Q@XJ7aK>U4C}WXD#4Pe0QB@hO z@^sE*?=WeZuZB(~mXIPz?HH-0ib}75?75AP@66)K;s#&%tOszd8*1mPPlGa)j5(Q4 z@3c~j^p_hVEn-3PjB>QxxQyUl%gJIn-Q!)7T(BYfxiCNrvPIye$dEz z&)-a@9BzKS%9&7x%!f8uFu4Y=aWG{~(gsnAsT}U9Sdhx76kzU`v&}~9*BoD*Ai`W3 z_(eUZ1f|nzG5JeQ=w>DL^t@Q@=kA#$50zMrRAFD*Me3pP4i)nltALm~jlE(4ZZS$z zSQt(hwM?CE;zMIs344TECB1}nqYrXbA-ylFxk=}G_|22Z8)2>{svOe=vD|@r>i;rGcOUq9<%O2$3(rl_UM9F*n2)IJnx^lw8e))bq@C>VUb3rDym-L=ZY@8 zqHx9jfLTVr&Ex$3Sg1e_lYwxOB}aL`C8A-E5l1Ni)hnE^XwMTOcMZ-JS)N28c=y}rA6S9n}j_CAIrp~)(u972gns6VxV6gDoonsK;wdVQrJC&SjMRx7Z8$UX6rO@fruhg;KLIzoJ$Cyj!t%WZrLE^R zhG66}ShR`O@jB|EVfu#`u%AXV%P7Rwfg9FOGhI-Lda1?8gk)HvaL$5hl-Y7=d_j~$ z*%nsO?OJ`bRvB#XAG=qM1C?IpKu59sM@R8HjTBe}J)*~dU7NC|BCu@uRu>m2$$#wJ z4J!aEpv)(a7*MAlfMm>ZM!?9CMMEkjo@6)}{GlJx^HmR|_iNsPPlnC#W~m7iLFt=^ z&aL(iQ-{6FlNkhb8WG= zBdRk>36?O{bgkdOt>rj&agO<3P-q|lf?qM(Bze4nB{B%^bt+@4>R=hV-REa$Rorln z&mz8K?i~#PBu4~V2kuFXK~ifDy|qL=Lw}#1=BfwJ4aXQi8<{t3KLcL>r4xkQ2|**TZC2@6nB@2MQUW z&E*->il``cR`EXS$?-!kD0f(+!Y!>m>qa?GWVb>eHLX~rDV#r2C$`zoHdXZ7K3JPE zzblEg^6rHeS zJyxjy%6;@@nHU^(r6%f*Fh5&aMkB1OVr-`WU~jVa%2%F3^%e7-)=G_nXEj`Iikt~v zBpDYDn!NAm7OIkqERQKWXO;c2su}nKt;>0e^fFTCQ(`W;7mywJ6~cHfzqG}8D|f%{s8B5ujW7DC`pw@9S@ z;_Ie5FGLPbS5#alru^*7e)&SI@(HO`r}*t>WW`L*Yk@8qOoUvSmy}#_x06ZH40+2N z5+nLD1ENW)QdV)RAi_78Wfzp6l+2eLnn`%u1`6r)Dcd|MDeXb%Hj)w8Bwp_z&z270 z>hq$Wf$LD^49&iSz1dT#6v zTQw9nMf7i=I`{u0Q2l?$&MJe~!psLIDO-O;HAsI;W8`cs%?w;gezmrK@I?P=Ov^k@ zYG423%kN&_rVVXM#J}#!?pmCRnabAxf!k#NV>}sev<29F-%0CQUsuW`aso~&TawW; z*b)xu8yM;t>KVU&0-RGO=6Xk?|FZlX+^QjiJJqzXtg(GNG_0#c0<59z{h$?=(Zl7J;K z5K}*)gQdYwO|fR+WMtn-XJ@oO`K}CQ;zC6z(5Fk0C^3h=-!_p3P-k(J#+3+0QsEX- z4U=iS-V-Qzwzj-ycc7GzN`5pyu6|Uy=;f_q#qzw?ym^_64E4Fae#gF9U1_q&^pvB@ zs(e5cmy+Y~SQ>`EY31h##Nw14BJd6g2s;v}5J3c4;!rIJEE4F#2wRbDDD3WuTM4|5 zc}jPQ1sXb&M#-`Yt)&XwZaMI^@X^mK3$JK~ca;))&<(p4+&YjFw4uL5m3hhwuPl|& zt~~>ICpcTyL6~30FVnluA4&K5M}DlV#6;GY>OcqBBxB4myr{JYfR_|}tY;v-s#+u8 zTJA^^p4DiXsRZHIH+P@i861c-Hp=1tb$m=#X#51EN>!JMd^3rV^TA#46*b$FX8)^p zSwm4<7}kpYPIg`nffWx+cverE193a-pi<&UDCcae>I0HA{R5Q2`XlgX+Ghz;ENq7%%6!aCx!X(vy`fcQd2@2Gv#1D%VvU&A zP_=lV;qOlsWo;qv;mhVlWK(H(=5@urfvy0A zRY9zLT4C*|F+;cc^S8+hQjgMJY3pqwfwpXlvPIZuSM+1XbB^yI@hEK8Uo1jebrMZ& z^l7{ zgc8|}8_sddh}sFOXZUH?LA0=FN(QCEp<)NcF2YpQ!e%u-#yDoBYasHX4m{klsifHH+ylMaufnZ4;Y8gW26oHV3$0rH+&L{nyb*lA1MkN4v z(hPXYEultf#HFfh!PP)mBHFl_Lkk2)^NR?g)I&Tl%cX&n&Txj63>8m*aH^mFjZ^)= zrrw?4f@_g8;~^M^%1Op#eZ7VGm;!89Zwdf4SDvT<59+@=G{2keUqlakAm_^TdoB|>X3J1OuKEaG_6FD!gsg>N+2E!OHkN)B&QJ`2@0p4uvoyNwiYK~ z7e>k=BGl!bL`+KhW~~ay68M&3A_#DB4;4y9xCr93l2IraFW)HT3~$`^ad0ng$wFZp z|4bq?zh*$m8jCy3nAg%sy!W7GK#6jxHH6PwkhQT!xu1Gup+Wejz{pqe^uiMN+vw}? zjLv!j);nDGQQ#Nf1AqT*a=5>p$-~A+dk28kPvzjK z?}Vaz$@#pvC(>qneJK@S5P1X%RRqc)l)*m3@G9$6(gb!HrU%#)vI9Al79*DH2yGU#_=zh5 zN1Zh0OXw!;gyE>c`w%G51$AdKHHnQkFW1yJ#MmtTu{DsJkOtpXnN9C2NRQ&fqVM?2 zbKgxAbMMG3MHRkajP~CLeSRZxuKL9mWGmN6^Uhk-2vi%beyYC+YK-SA-wEy((V<>_ zj}cisvs>{T-dF78fOd{aU5mQNHRMT^Stv+su1~NJ!RaK|aPomrgz`sM_&c5=X!Od# z%-GBT*kAts!mXkod3b^M*&|P~v$cdgo~jLpqET`XfDf2)#JJ&n z4nl!>%V#Ea%oD9*Zc@@_RD9P^`pGcQ zgJ3<&fpnu15J1c1QxXoJx*1SU7VhVGB?ac8%uZ;x3wbIZyrV}$UP-w+SiLgT;+np6 z6V&Yeq}5=_mtTz?gIj)2Vy8nDI4i59GaYainVZlG#kJxqPVr&L%mJ0~Lw*g+1@yU7 zsjLn3k;-$Q@|qii1BCY5J!Ye)>{6)ofgpq?K}XrtetroDpEj#m03*xK<59?xm8X~Z zOhu8MCTYxHyyzE%2}+DO1RI#th9<&RkFY*kC)duC33oM$vtOi>;PKY?+fh<5`}c zG9l|S!@zBDRK3r9j|XuzL{78N8RLT9i;9HB4+;Bc>FyA|BG+=-5?x)YT{T)C<Hp{3@6O2L?g$e0ojX;5klCX|ykA&$LDmM*es(dP?eyptV zrU6t9f6wyNE~>+uW7@36kYnKJz6JAa0dfSaf47QeI9^Rm;N(uauWhS)FXiTjnki%A zdJ}6Le++aHC;-9?*?0QY3uqZ#vK{^o@L6S>#y8MV!*V>b&mDvr!rc20lk+|~DfU?44OK`w5C0EwA|$4R`l+78=NDnOQ^CcV+AmE zI>~34d`_>1xJY<;``AaEXc=pw2A;j%A73NEZ=s0a(ZTd5j`jWE{{nHoCx-u$+v}Z( z`2}7*;y3h4u1Pq5n=1$e&J{@ieXamDFX}-|D^b#%U*7zczPLFIv7e!wnU1)zwYi$H zow0&Uk%5kmm$<&Tv6l}0m1IBpJj z2v)$O`tOL%^4l@}7}WZ`ukxQ+_4mO5oVDJB#|qk^RC5|MR52qoiN{*Ga|w#0vj~laf}fKVpWXX+W{V zE}Y)%&l8JNEyxWVe=A3f;fG&}K%np3#wpQ37(>Y5K>*j^Jyt3H^gqVlQUDK{j<~>r z1I+NL@_)^67EHiB+D=!rcWoK)AU1%%|F)gq=K+4Ua!CH-w>{4Fet&MIijtBb@~Gb; z%H-R##UfMI?s@B42drmm7AR zfkyi#!*!;V@bn!Ld=M{y7^0YD5mlB(iML^dWZVl+Imuax@=v7YMsL`+Ccp_54s=3D zI+7w#?(nvN$wY~rqSlXAKVQj|+&6G{)tacd%4-@kCq{kD|m^en#0sJa)RT>i#P zvA~W#{Z%FEA`Bp652eu2mP# z2T^qiVj)31$y;`lc4cfZY^u@-x_O2kN0jZk3Up)nIZC#TMGI2PSu36k3fbqd6MjAX zme(HHw@FM1&(}T3X9wJ%5SQHf&hU1QHX!i1d3~0a4 zaQ}7V0DF69n^%T^QER?mdbqr_WGAo(JINAqS20sJQ?A%9s1OC*6#^EHQK^@;+Mcf8 z+!dG7XRQ1+$ zyc3{&HgAo}9aOcFkcG^>732eygk(xUSZb>-w}zC$9D@#5CX3yyqh4~)@+aBt^;#`P z@ilhBJxGbN>uBvG4EJ~n0pnkT6*QV;Ej{QM_ZhT&E`=72J2>5w8?_wm1OO%PydsShx)5CgI{fvQjczC1@cZVO-`>-lckiphkF7>W{<5;?V6 z9K*6qyh08t2Y-|>ZSJsrS>)729b91(a#IvM$igxX(3*6)4S#-le-68fBxw1p&E#l<#~T9vb#C0;bywQ;L{FH=xQh9Vcl4k%hEs;CRhShV1jOrjeZEuITE*qVJ^rRr~`m}Ps335?J4Tq(Bi>7gP2+J_j08F(RxM6j`EQNJHw*~pU!pDgSqjYme z!1XyEV7QX$T_sa>Zxn5+BYhZLpvYJxAW&-j?Fh5KBC}->c9EWoTpSyDPDR(tmT#$4 zGC0Fbmf-K;>NoqIbXO2T+xkSo^k5weVdy5+=DAHRds3*7(yM4ys?Iee zw>SWz4xc7t3)2E=RWX{N)XE0p2;({&!xuV?DNs8lO0kCxiojGgkSz=HnBk6@XeX`! z$kyz5fB=sdg?Vdo?`MmxbNr=rk{^n z?Hl~bIrUPA(#e(uHs8e}5hmt9euYkqZO5Wl*1|b68)KaUt^opMKHOgW3~1&O+#ErW zut&~g&lKG4eWoEhV-UQ%h*Uo_WxiosW2b}Gy?TDgC@qye|R_BwG;<;t5I5$B$E zAhh{-q?$7W-YRBCQXQcLFQ}$7;+wvT0jCJvVj(SkiAUCrPk9x%CJ)jyQmj~u$C@&)7EFpf;#x1lq*o1UW-zPC3%kb!kQ`2-(-o<0cZT_*5@l zJ4QAz*n)=R)Br6c?JkNtpBV{eDg{V%H8k-`3>ltXUcu_p+)GYK$`q( z&??8T=!V!7w~sjaq_!f!5g4mu5dM^*{aP*itDXPTeE~DHpA^_%Y3sj>qVJvU(tl>F zCsPBfF}K-D@xZoz%+!PQcFV8K^+%KY>yIWkO(u*8#NT?{Q@}1bu*pq-7|6f?Wk8=0 z9_d_Vg|+$Z^_7P^q^%Dq+S3lR6&D63Q3tJsIN~FbFbDP;;p-76T*@YC zfaLl3A*Oy3)x}t0)N~+VOBuQK-4p4iPW*5%|tdKM}eEoxQ_C4y{{D+kKPBt*N!met8 z$tL?tV6sUC{c&4q()qchF`UV&)476+3|bu(QH$txoH6$4SgdN7 z&Z?&lTf1J&-4hlQv-a+qI0W}K63w%TJy+y~jteQGY7+7{iwa)pmqdw56@L0`q1qQ0 zv&b2j@>h>28teP|jaR^E>j3&Ell?WdirYs2cIwH}+Xxf?BG6}4 z{W#-lX2ZtO1x#B?nIf3C?sQ`WpS@B12T}?9BC}-);^g9X45?4$#op*QmA2Khb^w0=NDUF z_ORNpnx4^gjB~ZXz84x+Ksg_1Rw#a*DDnk_nK6{KWz16LS*X7VgtkA&Sy{e4vjHS& z$Jz@pb=)kbFvlTcfh?e+0BY}`rZWFiO=UI;6!YkHdt($?MHT3*IeaOGp16$w42lbA zYeZ3w%_$1sdq&>0+iAX&*aduO#pFbvE)Jp^p5Q8v{`zUm8zdDE8!N`l((XLe2Wk;r!2}xIy%<#AhZ9P38eVYvd>-dS*(xk%e zS@kYYFH_aTa3d~z^I255_F=qMO*bc^B(n3E>m&OV<-Og>3*a44{4tUKp9t?GcacQE z(aiGKu9#ZIN5w|&$(|mblIgErL=MqTlkwETUD|@*1I^{fVVE1t<{e=Xi z_FkR8O$Pz$SLU+P`RU0w5w=W(wbb!b?*2K-Jj9sH<)jQ^L~lF66#OkUcV%fiLX~+! zGO7jpaF#jNH6&%h$UigLja({FlzzWB8)%;Ye($QPHSV?-A zL$cy7X>IU%m1o!=YI?4}h3~7u`blnAUeb?>hW;{sW^{h@tfA2CyyUP`o<%w!CaC>?r_}o{#|) zGJL`GL|Q)@a(h4c!`pKtYL|O&+VUb5x*YO-`|i-yE(9#pC)ZEp;kLD zD2pfjIZjcQ(pL;2dzDc4bc$4{1Gc4}aC$*Eq7a8M`e%&~ClL>Y6VPkm;i@CsEM4fw9!Wz02 zUX-3o@J8=)HUdOE+cHLT!q-7#^azo`i-*kay?Y1Q=FQ*MkNwFV{0ihh`|UoCs_SXC zh&@1qf7Z+XL$Uu~iVxwk{6J?6m!@>2QA&j7;RAWlp3dd^nFI#iqg_MLtdQ1HHB0w= z71SfH;iz2^++K_fU>wu397+C~xd#NjU3Ne|>ewS+2-f<#e{W>cu5h6gLpV~qN zM7tv=%Y-4)Z-aeH48@rK0JyJ@Nj%zn&wsju_tw^C%?9e2ZdBchQ9VHmhOMVrTlRGR z*dBWD9s@a#Rxy=tH}e_8{e|8~s18Gf1b$CAOGrUQ(Yo_TC+r_WG*<;Y4(UHS;oo7u z2axOg-jZK{-~V1<@*N=kC+zpPWevYL2fc=f{UdE1eFRTb(qfYm%T6-l;#0JMqncVu zDZp(F*;#vjbSA@nZQ!gqNpF2(qxmtjAm}>#+OX1+(-YMcG~x#O+KRHUkU^#j0Vw(b zX4$xTh(Mj5F(e@D2jxHr+{gfm0?HZH3xc|%w+d2~gxTO@3H1i@G2_a})w+LBulsX@ z_ji8ecWG~N>woWE_%WnYuk^5Y0gXvy35``7_*PHjnc5p(+GQ0(kPTy6LgR*gi-r9; zrStX-Dx4rS+5NE?2#gY%xU`I1BWac-sNA z0OH79;SN@-k;XzJqX;|hCs-v+M5>JvZC<#=wVDvY)92qfRrH|M%fLQ@u=6A~F1(Ik zog@Cr_YGI9LAWHs)*fXA{e5@^bDW6U_|UK=ji&73fY!pI@&rWkM`#NRvO$^3I{CNt zd4X@)_f8+%zdDnZZ9G7WEc#gjxlJ-1i`Gq71sr9gooycD+$z?*5li*^9%P*F5P1B#zWeDTq%=><*ZN8Y1Rm?c8Z z#iOFN$w^3u+Ptedp$f9q*(+f^C!c`kykOIqR%0kyFA?t3;^ugTTu^x-eTZa^?O^>y zs=>S>N)sJXf}S-!#g0Jhc2q_Q{kq>%90HbOjiC&kfwOq7R(tJ+SLve$@&q^Y6j73! zW%)u4cKFI}=?4eP`MT+nwspUG!Nk5#`3MY4!3D_ptud z-Q?d8T2eg*?Q;-Ixeab8hp-_SW&tm;b=Zy>sv@=E`rp0of@y!6flTo#&%e`Vkr-IO z0-G%9@FCF;ES$wZUefOphY!-1_BNJIMuvZJa(>{Y4{FbRz>Tf3Ga?IaHl-iKeMzi+ zVO5d%n~+0cbkH4{dnzMxLdXnqd4Mkm`e6uBBCX3@nt7aWJL>*sXR+^K;T-lgJk8!1 z)L>#sXGs(%t51~nK_9HkZZob|-Kbw3l;D~>$C>|J&Iuq7Vr1%{r=cLF8=W6zUG>9&Y5G5nL|+ytN$H5LY}I62nRZR z>>^tv^ktLJ`!^r5Re~d!vah6TKNP(=kEeE(&|tzcKb-Hgk$3|Y!@s(svZB>4dPM>ZiQ;8TJiWxA*#H9sxgmI^CY8ysYJ+;!Nz%rrm>170 zle&)J@4uul%C(CV@Joh1TAlnE|NiPI{<;GGUPb>1{(t9(|05@!vhsl+ew#JX5;L@@ z(!ledUgIM|PeLAcl8Pp}P5-M}Ui3$dOfA6J^7!t~Klwfi&IUlfJTRmByBY8vsCUP| zfeE+16M1PvM*mrBVD#r&gXjNSYYn#aO*2A(ZPOSh z3WZt1_*n>Otu|qp6!1eW%wJANzIY{FUVZ-tZWmVK2bIl-9N7iGvD*3SYpmDiMS9&) zuZYDiWNiXWjlw+I{MR@?3_|?r$RLOP)bA4THGbgPbuzm$>?dkP+3YXIpv=WTN1W$7 zoZ%8$XwnM3-Gw7198^+XeAC8l0=hO^Q$C}qg_?;p;MqLRQHznaURu+c>ceid-*|XZ@zvKH_Oii_I}*Uo?kU4t)~*7QyYy+?nJAL6@NC zYeVNU)OO*r+*2#jKB+oOg65YS%lZ200d5BbJTC`mq4Xtzp>Thb$~j{jCHkC3f`e#+ z)MRE9p%gC*I9Dx0BG(&RbZM!#AqfI^^|$2~W<<`KZ@mq`BbeT;$0)^XsG7;CzL!dm z^2HWo_IqC`;kHw?&n2r$8gnVJQbFse&w>wCLl>`h9+qmyhA*OwPj?OqzVne#*-tNz zHNIOLOZa_vTSvdop#8*!I|rork@ZQt%8veU;C!%9Ki7*=$ey|k7Vw5c-@9lBW{K`43)eey=zik- zcwVxen@_BSx_h-oSd4j05(JVTsI1?PsX>>zrzl(mR7*O$SbmaYQAtc5kger-fgQeG zj;N%`H*c{bCCqUYaP<*jwtSC*H2xTR@@l0%vfU&#*hTTJh~FUidX1r z#=fd6D3^UO;C8)PgM43fFMj*Xuz8kbU&Jha`_xzuyTuAt4rfHKAE;$Z%YbZ{bLOAC zolOwLVj}KjgSs^~`FfDxnm)065o0^t{^r>wt=+L;XFdwTV0h_K<@=rECB32UYw-J9 zNQ3aO@Sgts_zdNrrO59eghW{1PT#=X%G~L%1+xz;Ffe$#>z3+h(2CTaxeCYWj)jHM zm*wT{3mei0!jVitGR0NBP^ud~OvtAKO`qrSG&+M7UIpZgi<@@BJ1Dh3)za1yzVV`=ak^0k?>4hS-BK0|&{}udLdn)TRh?PgQmfsk!dvS; z--4bE*O@0DQU%0F*~S_dSCe-^iFGm*>%&aKX8Y4i=24-CFlsNehhzb;)bo>2#C2VBlR*33}1@(6uErG@RS-#=E*^ABg%Ynf6sI9Q*oTTHe-Q z7L_1%TfJC3m{TdbA#GxCh*5Qz7)T(svb9_*auvRCm~;r<2@GUVvlWnmc>Tq}%5upp8fN`^8%?M_5jj2iUMkW;)n3zMrJqRhDS%`}Fk zZ@pmBm7HEUW>pL8U%B^Ov+=O;m%v!v{3!VHC%XGL&y@r2`WA9?GX6Pc=M^O{EhLEA zJ33WJe`jRjLt;jmZJj6D3^l=KtDLhcq`vOaZ7I^1gh|}4{6-Uk_UegO(N0?kDg-OT z#n8}~46s+r{JJYo(z4fxg*h@pJ;tk;v@tiQ)2W#O*IloJoF-?z_dm{Cz(b1`EenVFTf*!V>^cwuAYCs5aKK~2Mg?3Ed ze41{0ZfrHfuNsczK%EoYx6Rsbip_zM{N^EWIC?dAlL7C=R{;usFTGxHlB7Y|If1!c@gE4+j=)L}Gi~Vi~Ru$3zk3+8in--CY^kTe4N#;>~sp!{R0*Ls6Jl(`uJZCqT!1f(R0sE`3#V4xH_5=4pE=bX1>BP{6y zRRO%k6e~TTY7#Wxp76ogn|^9p_op3X=8N>;`D>+D2Q%dJ?g5DQjVXzSR)vyMi&j!k zQ7}lh?wC%V!}?PE6!b1t_zBoog}HN6hT30+Zy{>3AejCv$Jh98hFi)PO9q&YF9 znEeTh`p3cD%F;ft3Wn-jjQV?Te5V-ID)U03awF3zr&znH>BF$lhRNOmPc#sUa}=+Z z@KE8?T^CxQ;``cwE?Z{au5J;p97eis%=tPre^(>GnfWXn=Bl&|SAN^Ji!*Y>`8r9r zL>avWX-Q#6fHrt)9k0>3Cp4Udb=h(S0hJwBD4oxQed6Q3Y!n&|O-Ht)qHmd2OxqF* zvlx422@XjO zN*nlNtreMBxIU<2ZKe24BQrDdbX>K!vVRXbLre|z`3|LJn3V9MxZ-Jb6(AivT>m0v zquG_G4BNn1rNFtWFo^fmTSz`7s<7kb{Us2qJnebE#Dn+$a-L4u!OhOe7Ko=>n>(4i z{H1#pd%w2}BX}h{WT{SBLm(^-9HffY45F;4?1RgT!QhMuYesDP6isSM%AhlW37`B; z(41)30|0-=ok3c%O%z5=tJ}5b=^^_{OZD~b%(nCsMGWL%s4e)x!cB=%&0QAD0~--b z7y0?VMw5f0>GE_nQV!_gpnP2$9Fa4z?bm1%P39$%tu=-u&eZ}8nOC-n7=9}sYYlYi zH>ZZ=*klDzir?0$PlPX)XKW7!wUifB%touRg1X7qOWB@SMCcKz%jCh9^-#Nu4Qe&| zM-L;q$`B_jK6}gBS=3szHDn-lP;u=hE4$^)TV^_&$H%KIL;t0;IL8K=rUjRy0jJ`l zB|y{T4ICQm0SZU$`h_Yc9X%8orHx@&2W~yBpWbJA4U^^C zzq<$*>MTNsmwD$VKloLyRGh()SuEq-?Ke;ZfGo!d5=VE9?~6iTPLNYNkY}LJmp~K17h}QSLO~6H z3W2J{x7o^$3Fq5}LusmCjlc=Yqef;GeYzc(9q+C&=k!Qord3CHR=yA=P#BQ z5qI<_=N$v-%Q!Mg50V-MJP&dY?G6#6@uLiYfsto;V2cwJ2NhfV2Jz|kU|Wm?jUC2z@`CBe7_05 z3C41mA?p{*xCKbckP~}q9$2DRL~Dlzl*|B*FW&bHYGQusplkTDK!W`cybwNQZ1)EK z#J9lb-?NN=K!qNbDEz{s0Z|VP>fk%cdcd?8HB?3`tFFTdDq409l)ph|Ks`oZ6X_hS zB-L5jeH9MkNnu|X59OEhteLrbW%Q=o^FaVuU?oI+Hl1WtQpJIb+KDx?+`3@$(yYXb zLdXZCx+grh^cuPlE!(jOP#ytYCg>`yAbj1SQ&YJtjEyVQVe%I4<;J9pqa+8GHX9C% zmL$3LaPcsT^(V4zq8VdK9{4Yxz1eRx>@G!SUrcXn-@^26<(aQgWcEBlj!kDMg z8bL-G`JQ(667Uhvh|{i+Hkn3L_hpH7=!W;jO6B?I2BjT?Zql8pcLL?H<3dCf9a{(v z#ZIlF)IZlJt_Y$ zLVgjjlN1y!_~b3qyD1@p5f%L0Ez`OGFRMpyB>Zc-GBYYXusA6?T5Ui=uVw( zNE#i@nB-jiG);qp00rC!H6wVm&KmN+1`mp6HJQVr{g^qJdFiY2YAE8P3BiU{uvwVX z-cUW0Ispq~@{9ODBVAiZyrQYPkLSC0Dpv+x>PS2(iSbl48pnVjUF51D^VbTrG{MAS%nY{_8Ya~JzbCbg% zPDe84)9o)6D^Hg7W<&sEoaiXyfIJVRtE+d{HaigeX#hD93NfX@qW~2qR4yo4j6fGq ze3(t=NcqwHQfNSZ+sRkFwNx+HJ%f?iFPmfJ`V7aAOlj{?;KW1PPTbS!!Pf~eK9GG* zvek!|6jdLD$J=1H1~>XLZ~sO(l$|IvF%m)jOX1_yx{>P6_Y-a?odo5 z=yn&cv~-?cS0VE5HLIaP{85X{ok}0vTtwHG|O!iZB^NLBnf+@ zXv9=yPg`fQ3#o-$m_?|B&Q_lH(6L?;FK}sQ7+=PLR8f2N+-VSD3W-38f{MYA24M{5g=`wJ2MI>x_*w>Q>x6m6;C z(SM*Sp2}?*CmGA2${k4d#RpV?`@3Z*A@J2*L5;6f$|(DF@3a)lewq-9U$PYK<=?0k z2w^cck`hD6IY!rtm+CVu82BK?Zc8+#Q=~;aIB@bhmds{;(IR0Lm4{dBO*^~Z=;&JO zV7<<{zt`S3h*r}E(y=~0VuV>9^y`G+*<}ggbGeh7LO@;j6wm$?0zkz@G8oE zI7-Zw9zq4$eEre;h5&e4f9J=jDoOr2i9ZgYwY;n)kaXvT!m2e{!&*yDpFbwNPg3&QC74N@1!y!SUL)c9Ft>QBfR|hUn`Q}3SzZKanFB9i5<*s49)HIt^S_3 z{d1!f2#;+H`S;-b%CzkWmIxRNSrtXoqS?!1#m4vQp;6h_0BOUnLLoX$!=q``mvF(|wbxI1^E;n3E{^J`^aYe16rc`#s)4yz*O6$Vbnt@h;hvadyOVGOvICkmmNn|l2(t~DV2#@J{rlC6 z6#en4jQ}#X{)rro?rEHADCU#2CA1-z&KejodPXjn%I22$nrxQ^YiRf3Nf0rtoge6U z%#RWl{-h57CXV&z)%nmO1PwSz8dWvph`fAyf&t>HvZy#bfUPFYp{g@8(td-8O?qV&JahprNfr3Li zF`3cbdUKMNfQz7Az%E3mmPr*}NAG(?K6hj_ zdzo2;k@GYhT;JChNW>zWW@Sxcy-{aiPu?d4ElB_N&4_#&jZg!@c|`P&1su6il4c~8$?1U~=n`PhG41Nw$m^n!*zk9T~`54)P~ zi5pC5@|R3kyh%Ja5J2pGtx(CXsJPR);KJQAWu(lOYH^qH!>A(G7L!Cz6O2quS1$VZ zTYOsDKsu22UnuA)xNYzriclEP%C4++y~66M*Gm!PTsmnyN!vRohB54<2>{&q?U@Fp z_@QMtega|QDAM^}-ZZWRJ-6BBksP{=IpA*7+M6}&i8RZ~q!JBr3VVJ^rk*Y7^)%jS z=N6-U>a&~vQ?@ToDFZuv0kQ2-Vp>rdj(ZodTdYs@5!!>KjNAjbq7>s+nK;tk-oT+@ z?{dqcK^D0Q$r(AmnowTsNm;c8-nMK{ISm~~`#XfX;w3z%=8eMFB|X-0p2|v|CH8=Y z6%NI9?zVIB1g4(NvaQXOjnioBspqafX)eVvZ6psL5=dZ^4b}wW~Lja z2%ywtX4zsJu7Y3_bwrh&Y?erd&V ztX}F`-6FHS0kWi4m1gMO37;$j&u*V0UFBX z*lH7wk`1n!S`{x{%hPqS+N$eLn21osdJk!uM@UE!xxRU%+cksb3BJi{S{wDBT;QTa zHrj#wfB#kJ;^ zQ=bKqZhW63aDJ^Jf(lCv%USKzV&jgBTiTD2h54QWc|W#MXeo{G4lEMWWVr=%`C@b% z-4|1ilnZoQx^<$245bwgUn*6b_ZyQMvW}lU^H8l;QK6G0nZ()mG9Hh;@G>VlhOrmt z5~5PNs}4-IYowE}{GtnUw8s;c>c7^-i7I~tMUUOh6oX|`zo2`*;ar(7{q19^4hL=y zx!()yFIOdBL$IeYmK8VqcLXr;JwoYb{g`MIg~28k{S=N;alROLOCb{x~S z|E?OA``W9mg54Jh3!X;k3jtl1JSPvi(ux<7m^Xn^YZH}RLVc9H=KBG`yRgZsApi$gAMHb@-=#X-cNq0(nTYku+=>?)!9yz~|rN>z_oQ zdyB}~K5mfPH}5rG6KI41=JVbufh%$=R#x(lipqTwjd{Z#X-ujC>`KMCN@h3j({zt` ze;GZ6(DO|Rz{z$*G+pbXiIqrBr8ioo7p`tHi`Y`{C(ji+$PzF!>J->%z2iod0@6<~ zQBIbYgB6m3xm}{gdxeom{khkbdz3Jiku>*2u$?ymVN-0Yq0`w&l;mVA=sw@?OkcCn zV4Fu<57vCvP#@({*ymShGxft+v{FCFV?_8dCnb>J)qHP|gGUWQ1pM#sW!k+#{>~=V ziC_e}2CB%mxGamNMiGIlZ=RHKyi_GBD#Wv9R&OKHIWrexSJr0;tJyuWG^qSC%%{Qp zqcgW4dSMxmAqN5x^AZ`kytgM>L^I?QTD=vp4OS&GF#hE;>k8r|;_8ERyukNbe0f($Tk+#1$ zIXUTZeS3Nd@r2#ZxD&*0E1a$f#o;++b|SoS#-!=8fJJT1>T7}CkGxbm+r~`mGFnlj z3bM11^igSYJaSnW4!kNtOpJwielFYQ3pW+hdu`eCOG@=zORWx|&Nbd!bW;YMA=;Nj zu%ZOQpdsmpNxrmQvQr9XFLNf%b4cu3Q_0#ah!~=&!mb6co`4#kkIaduP!3IQv$ItZ z)AE=S5NA>k`2~ZY5U)v<5C>)3TvDZ><%^5vNt~3oc%^c^Fi>2>qHNm zMqpeIIsz^s+u+CuP-yv92u^2YZ1c(IZ$Jzp*j8ZDj`npsTRF{VIuP%NDpALJJJ%c- z^2;AZg8wX^41v4c=tPk%(Tp$RU}iI%rHe< zn0dfS6A|G_$R%XUEL>oBNMH!Yi2-E{cOMo9mf*sU$qq#H$6iXpRRC-((Deo%b9Wos?R3^C-}>zvSS1{E*`4+8F0i{mc_d%$OHap<#Lfe!2QsKc`U5odlm?9UB^qBe%MM&>rA ze+$DwfM$3QLEw}_)nLbp$|9cJM)E6(-&o!t*yTDv2>|Id$$zCg` zEnH-t@@Ld@`{G&PIly`n!~1`UTkM<9XjG}%B$jf|&#$zwGOGDVhLM>!uZfF^Kqq`X zI<7UOfMJ$<5Y>6i?fCQ+Dy=Feyp-yOqMq5e*fVtsnT|p>vQlrNeeXF_wrXb_++HG; z;)dNj0W-g}=s;;)PNj3R5@lnR( z-xo#lFGf<5dHhf}{?--yaj3TmGFLyQ0mtrdh<+kLDZhs8IUa-n8H7G^lJnEEGE$Pq zNBgm|SCMcAL02H(Zb z{tgIK{rgM|66#6SHU$9q0BlmUO z*D6AaC@4{p8}W`dKmGJA4YMznL5Zx1&I!kkE!pxJPyk&Npo+|eAg_E5m+hR5Voe9_ z?D0*)%+R3zkUI>;<+icCpOxtX)ELw`_|=DdV=NmA25e$=d1S z4og4n8C2n&P3*&%We4N#!(i!E#GFw{0(8~E zjvq1}fiBw5=)g0#1$_S9-hcK)9_+0kEva#TQT&(9f!udzE2kg$Vp;UhmV0qksC6w& z>zjI&o-`g&@B>LIWRb@DhGCtl<_U*jE7WLpX2xqypnSJUkd z*%j1&tNu$c*UTxs%-6bOZeos5sk53CDH3dTW_5aAR(D-T5BD(3B*F51%U$--u=eL( zi9bxNrf+3#qz}B1|J%qxe@U+T2_Yc~Dk5YYsc_830#%CFj2PxA2+1;}=Hg-sWb1%* zt@ytLSE&%Ot=7qw+S6^nC(j*j&s;zPmv-GwTav2;3R*+3su zI}JVXVAcvc5frJaa54*=j_j)kn`z0U3+x`J%Fa|S&VtEy--XC%BI3cW=WMGACw9i= zI8}f@X+XQmh+Pa~t^$;~4w#X|2-*sb1*a*AV>ZL>m>~{`Vc9eZ8EYbrgfIITBA(CI zTJR(YAvRqW3|R$=eVz*!;kY%tOixs>zhPMIN|#mJLT4^7K2nsVx2tDX8wY7x1v^n* zyDoe8x#+m9`=zxSpmxGX_!e#V(`i=Y`(k9vP~B-O{4$~G_kx7nB85@7YYo0@*!MAp zws?8ue(*m2(GNoW&mr`Oq=lTV(O--)#e2zH)HKn2R8+yJR7eCeLsk9f3kvM13%rvBkCTE*{GL+1~7n6o0ETk?y=MR=_&>B&T7=1VtC3|Q= z(^bW7R6bn>*RUj;q+l0u#FNdCjNQeuaNPCng&9-ryT~##BhBufd-`#KMKURl$54#v zhAtF?=Bi>j8kS-VD&aX4M566B3Y?0^_`)(nwpUqqP8)c0jaYSc?QA)}x0M`}37g%q z5_V!X8rM-hCG;p#Aam&|eD?%jfhL6C3c(l^e>3`+5uU@wOq~ zd3PhPp#jD}EI_NQ@x)b}`m5rR){?A$0DcF8bCR0i82E|wiM&Ml-S#tIJS;X?A=7ny zPuspuKE7Tg5}Xn@T1aqd{^TQ(dsA@3}r{E)ypX73W_^dgG==4bw#VKdr7 z@VziJaZsG()(eDtm-d5!3F~dP$S_=O+krXrvX_WHrzuC59H%E);9v7WUplVnq~J#} zOAMpdMj4iBMVE7akwQ9LPWdLfJ|;F460akKNsfA4#F+kc*wd%K&8Nj0L^}(;i#UyTqELkf zxE*f3EJ!5?1trz8u}vqxF~d?dd}uNF2>L)OwU7*DJtQb5LZN*^tl3fsQU1E0mk^6j z`s+>&>mVXzVC+C{83v#o)1SYR87({51O+4lsgE~(+!<7)z*M_g)8 z&}Q^Z<|g9Kl+)ZfF16zL3@yw2KwuqC**U%g?V9_jUFrV$%s+C+{b!x)kE#gp4+#{o zDvHvGSyM?#j*ZbojnmXlQSSO#9;N>pxraqH{(E_3S6GXKq3yVkWl7Isa$pG1eKJ}F4FgUS-Uqo6Y~8oKvL-@Cxi@&d?9aQw5n z_`88x|IrbmlM|BDG-9x#G*r@(6Av|`(=-)gk~916-61RDC4x5N|IzsE?AxCc3`AL~ z(*!}98a>e>LQG*NgD9~MN}XY(EOrw2tSM`gCm_!Wo|zFx89|_y5nM}=(bW|a| zeL^xEL^2#mISe2f4yPOr&|?2Vwsh#t1ieqao&Vn)llyc~$=JmfxCI`law}|RY-ssc z@AWV7r*848*Jzq0(_bv|6-pP(t`y8)hp`Y&*Z9q{9GmMDIDIxrtQ1zhi*Eyp@bGuw z8@E*Nmsi4SlD=>`Uj_=PGQTqMzPUNa?I2@gl3<9FA5xw?YGB=Yb~#?@`V#B9A~l58 z`?F>NYPmB1)->euC_%46ihuc}-b!2_NP@nJ7KhL@M$F~_h;YfFi|cdAp{=O*u)@ph z4x=aTw1;1{3v;DlHgz(W)+SsREYwtW+PFam6RFoZf(_DS=JYk-p!yE*Y;3HGTR4ze z_zwqB*O`R!yXc7<8 zt;XYGgB1KWMO;33khyDet6Pr6K#;caoa8NRXn?m-GqKeAq=FJ`#iyz}MFS0z^g0ic zS2FtSBQ$tY)1xz6M}c@rbvsED2jVz<9`o;XLe4juyaz3pieu5ctS5J|Jif>`ke0q+ z;2F|KGY;0CwBO;FD-gFHS!E13j*KmAHsX+=MX^Qx%pMZgB(}pX{1U>Q*}ZV4?NgU2 zzJPUSFM(HRMqpS_F-}l$abp%!Cm%#3r*?)~!bQ-T@u>!Z-8lV=kBKikr=T3HVTO^* z#gnkzQ&Jny1a0KA8v~k=OkT)4B3uxE2#W}&yN29If=EIJ6lGsQd}z81~ViBLeJq>KOE8#VC@V*}-%R8?@91h%9ajdj`!-uMIGtQQ?%y9LS)r0u7 zr?HzPmf~q5;1~rhqB`9+rp6w29~g8>OWdW)+j8o&S)78?+-3XRg8N&WT8L+~Hk(S2 zR4vQWV@ld+;;CVg%IYQw)KpTUORt;zO(d5RB`*onbaG;TC{#j7;nP_KG1rh zhS5oZVM5x&(1%F%Eyh*qR=H}63%5C4ePS5O+*TTj2sQY_S_F8sa8h?nAVUaLNHa1K z)N#89a!yjXPzQ}D2G)|_l0Q88xibY}5X(Wz8prz&`?vrM zro=Zzt=yF|>=oLKc}E9`tvwd_7#q|U@+$9O*A<<(f-R%XB9Cj%(iic2*0brh^w4gnCmt))A z2C(C<{ve+b2ZEJo_hwoasg-m~ew{iAFZH<`qocnY!Y2@f=R6YNyc%bEoEx2C-vAOA zhPsnrhBRjGcHyG32!N`bbiJ?D+iw2#)%eyC4x4jf$zL~>7uyjeH zr>vUatCaaY%F+3g!Tcl9{aIB17DK({o8h|{V0nbITY86}q`9-?WWu4yNTQ;+DuY;j zL26a8blcx|+{-q^fmHcIYHgpUAM~BNKr#pniu#Q$g~mcLkw&Hrvqnj!>KRRHCmooT zZs?k$!)M=SaKCm%8B*gWh3i~PI{id@8>N8#GEWMQ+Flbo3>%6q6|wukBTL+6+yQqA))V%3D}B)PqaXI9eB42dlDK zIXLHyNY=3%p!nPU5$>e(lIsOtGKBwcFPWeC&M$)CPl`7{e(=5&<0ZBQ7wMT9sHC>B zFwhp1h-xtF2+XrslpDwkr!2!P0RP?}R4$|a4a7U{_&FjPq5ks==aI&Xp&z9fPGM!Q z9?uaHdq@{_{6~~YB&pP;I%gkDsS0wHL~1@n%_4mm```hra|8h4i^R5%aKVnb%=saj z?gg|?Wz|AUIeO3JIk*&RKjR9YTkO9Urv=NDGr<`79!BHS!#ii`ZX@93Q`yiG#b{); zd!-#B#jr@1TvWkipWBsfb0wF_!@^dLX$!#{EeacigFLHGL3_t$Fa^jrwq~p{51QSO zfFTWzow|D2P75E@wzW<-a~pA_vqbI~jHW~1bQhJRSc@^iRaqO;HmJZ>!c2{Kq2tI_ zmJOOihy=(i(I+4-&Sdw)?-&>G9dK#BNOr5*4at7&rtFC^| zqO*AM@{^T&A7>94X&nc?KJ=qL{wEFp*YW=g%l@Vl;q zvx_HL{QBn(^~J(4fIQy<6(006GQn%D42Dh;xYk#9_RuiGbPZTY7%s2m^qR(F;`Oss zMDZZ}gL!4!V2Yt|N`hm>RIG{wZ5pk5HMAMiub?hL-pET;BS6qkPGoE|!I zxs28;P1Mtn*40Q;o>v*&J9W3<`T&Y$3zebV#{la`?ehrE`_n!@*G~Ne9OD!nCj?M~ zMuntkM8V&vme#42$rj7$I(ho81(}PRC}4itafGE_f+v&F;5w-|>&JXhbL>k^8pDV| z#&Oe&9ey>++1Nan+1_^ds6Ya`UrN5BsGf)Q88 zyehg;rQ3xS2J1GQx{Tp4S4BQiLpw4yh8$K+YQcaS$*<)}6J#i_qHW00&|)XY+#+>! zdqF}~PEYf}vM))qP(Ko=fL!v`z_hx)%hFQgePvlM^>z#_Rkp3E;b(8!o}3pLY$1zV zbp7IK7`ot%LAkH?k5!OIhUKM+V{`$qt;rdb@{!hqm{G%l`qWODQj8Pa6V*;FzI(wK z^95;58=CTgDQ~K@R5U`LUMyl{lqJoV66MEkyhE##Ajq?f{-(niElquO9JV$7?stQ_x4HKsvU95vY6Ff39_p(+Z;?k{0qNL6RY{B@4jL8H74z|G<~liJ;invc70 zqA=fiD?){zdv3Pnf3=**d1i|~wlWTW%1} z%>L}I%)j+(`UwhPiDmTzd!+);f7EsEa|TF0z~hz$eEuB`cqAPC_Hw@(D}QZ$oh%4_ zuc_7QcA8U0aNk&wKms;af|h5T%<2my=d7e}9~vu9fV9nzh)2l4b)#*`z{ZNngZQNO zYKJhuj!Bss%?O7UP)9G=^Zuz9Bbad^G1^|$yJ9zOGX(hTR>D52WN-v|<_Mb3){mie z>VfX{>_i;5PD6a3XKivo630Fn<)F|>F?KqAq0WFUjR7Du4>!fjp~Z+K9rD&^FXNt&KuD_PJsWc?EHvP}{UN!#LCDM5Xgy`$H&`xJ^K;?&dNf= zhyx?@IKV^$`*3?gr5?7=$LjrXj$ByoWO#WuDtnf5 z39d7@X5B&$32|woM4wK1Vnku5toC=~+{MK#9YX3{pU>CxmQN9zVu(w?aGi>x-#_9CpfgLDr*kE+49ALY6MO z4#6_-Qv}LzY|3t+dtgI6b|(L4JWABn&fLNH@1&#u1f3ti}dq{U2pO{DKmSAY!lw2Q5J# z3B~KM51mgeq5{Yf0fcJ#9ZblB?;5b#)=li@0L`(eZshc5161_DjA`JVX?19-F`1C+ ztko+YpNq3I8SlHx%V$sO)@ng`!MEhi(@i{0rg`YFFk{__lzAvTX_O)}7(01ZeEC38 z1e0WOsZY;0;*z_3K|rNpI705iR8+o0BVx>M!lQeDBky)UDTcN&m6F+i>q)?n#?Ssj z)o!L!TOI1{tCHtwT(xeTmRfXe>Lc@A*5Mrrp<3{0tdU5wVVkqODk_)DrI$o|NoX?* zbI(e41{;mpU|Sg&L7&PX@5oA@T5$#ASBgnC;0b^5MfKyX;A{>n}`x?LXjFv zti_9KEyD6vYVVPx@CREY52@2Qh zV~8DTA%u5f@R5&C1dM*4!e{u7yO9ZwY!=t?gfI5BnQ-AM6;^84jDIC#4f3U2TM*-< z&Pn9c6~+=$4iu!8a-=lTPPHMp+96qOH)Ndl&o9X zwP3Ikta-jGqdNoM1BAX-j5BveODer)_ch zIojQ11}I0ck>_&FS9>=~nki8W$`KRSfz<=YdsM^aB>+9R(F5u>m{G`2vImrfI@c$u zdLNe(h74gQA&jEQWmNswlj}Z)L{tPBN_N?hlDhf3SOngT@+a(DY;v`QzUWe8+Uv1C ze>?K3`QW6^5w|liH!kIFE-3U>;BZZsu%m%9w&5OMy^|0ED02vB;O2mtW}Y|&16HFT z1;U&wd*HrXmaJJD2MXL;sAX~fw*1GP;xmsrlWH}ng^KlPV=_J@ml)^}xtFsgXssj` zq$W<$neGJi;OM-~yC-q+m#Zr0I?~_*t;A)e9TjD!-lX%;jabv2-EUS?gFCC!)?53V zk;MZH&-eIS8sYpfQKLGwbg?~kaC}8|k@{e70Y!~b1NJoUK1L0O+np9$*p~z{J?}~o zqmHk9ePQ^8PmglCmx-_7GyR&Q5ExLt>MdZr?_qc|Yr=%34R}MneH6obq)2<%Q~y77 zlBWK#QGx{I5XOD}{XPmV`N+#kUrWJAjxi8YYHXxe-9I!)Q)OtRH$4Um{A)iVFS%); zXR^AXuLm3|GeVp?0>O^I&z}lqmdY@M09>US=f4#lj>^bmc&V7~HF34+FPP zfEs~VgU9R(WDrD|fKR;DT)^aD^GEZ|YmCZEX2@?mmOdqrWX}C-(A?9vNUIxoDOo;R z!2VmK_P>ZTzhQjoN`q2hKo#eR(9&Z}z;Rg-g<=%1TNGR)4UB;ZA;Bl>#c+G4Ik?!+ z$o7fY)lMM&uqT7`eZ7BSM)BvvlHJ|H?GW)N*h#OVh~B2XkzQjn9-A0gZ1DT|o_BVM z^W@TwU?|y#EZ|u&ZXR^Eqzy$*Q?ri)9oTwSYUMZC5c(-%&14T-@LAtxUySux) zyF*Z5(cPWW0@5KR-Ho(#NGSr+u^0G$-&^Xx|9_wCgJ(E~i-YI6?pgPYYeG;W8+&57 z*bxNU5de3oaJD{GQuSg|4r76*jPTpx9rB+CD32Yc|Hya!8JY1vT?d2ytpImWDqu2m z;qf!A8zZ;8e{|iI{n2$-KC^`)4tWKftej}wmd-NwA9J;qh)WSVatawB%G37*;J=uxZj!ONz&#%~~wM*ASm=fXf~sW4|t7alYQj z6jUOIq$kY5i2{;Pz)pcaf!2?4IJ6FgMEkeu@$Z?FpWmi`q<5Yi%42#*P8N=+pa2{u z@r0zFvH~zA#{o{H<`03AucT}yz$s#keQ3!WHl$PkR+`rHH9y)0H)paPis^dL*V~sD z%RCl458a>mUOUXQ#1Xx0#UN4oUcjc>&|aafyl0*D3O>)rZnBX_xMc_+q=}#4yYBi{ zfc{-!A#^jzQuTMHJUuRjH`Cbj_2Bc0Uk1KNqL;^P>u4{?H=Z}kG49(-?8Nm7KXVyC ztwDd~RZa6fZPRL9Gu}}%Ek3g>51Z)K^-?^TT}!mZ2E36#w#Rxyu=-b@j)Rjr57aKe zDV3VRr;xBlfWox20$jMN{aE?!^6U)%WwLw?R7R4iafu|*rEm*VD$H970IntzxD8^x zzj=}R#MrR|P&kxjwhMWsRlK{~%|%vG5vE81ed(8im)HtiE`7yN3OEg@&C$e5PQ>rP zQ|`QY);5#9@~9*#$zJBJB+N3bPTyH%_hG{{VV{2($GvX^2{iDH-X$NG#)Xe|F}OFn zcL1Tye+`%HX?yJM1c%`zipz3FQIHHq-CsSRj7p!dre0JgR*EvD39l`!PHhDL)%;6^ z3CUD1d4n)L&N_P)-n5{s$@3PLvu{w3S0C6Ax!XRVWGw#Hv5@^-r9>WE(}7)ZX8*kq zXDQ3cJWh8l*taw^EM9w|Aqv|d9*8M6pcRBd!Aig2^$J^RDzdF5%fPtP$_9Vht;G3O znWhdsU4%IyjpHj{{1f{^|Gb+a)8Y54)Rs~x3GH+W4z$H4yhYFiOJul0u#CLxk7zFF z%^DuQ$k@TcGSpU!aHH=#EPL4IUJ^!5l+HC7QDzAQ8(W&@D?b+te$z28!?sg>nANK! zeAR6jko^JkP<{%PY)g@zBnC#LGFxs1gF0SX7b?MN*ayp*L^*i+>RMD*9p#9vokv`} z&z>TzR>$}RcLoyyBP~N&4bHTn3CpU}v4z&`Ef?bDX1|ROT#`YtUJh>dNYTOd1C}XN zGGGjO@w-%R8=^O=DUE~@K7^(tWi6GCP*^^;7)I7r_lt6Vi>$N3*(&~zn!S)>80@7r zK}T3gct5Bb_&ZTpg@K1M^4oO9uiE0CYX3$q|4Hg6C4N$vRs`}>i}b&bvWG*8We^fH zeaVS@Y=fFsDBNv1_#V0Jg&ZEbgt$b5@D}0;ejkJ=$+ty;Az3B^H z-*Kyshs&4HhRAP;wV{H~4@r2mT*5;>#(QMaa;q^kH&@#4;Vkow6D~Mi$sRRi}QOk5KvA<|5Tw^^s+zi`1Qt=Q-2G zP~56^Gzn@N{Ft2?Au5jKbSYpe5kb$H!q@2+NVT;(oD$<$*IaOroN!K<_S=kI zMyvxyk==Z8-QXdENFm@Md!F4K-Frf1w5CX z_l#~GT^}Iu$1^YQS@kdP@wKxRqg>-lVQGEAxV}-09&geN98w!3ptm9fzj~VO zy;F9@+ySag;BV77zqmL(4WRtlTJ*!uC8<6oFpi*^X#7KUxAUP&VsooPbB&D?!SR)q zV6_kTrr9%Ud?w(SYY1;zW3yN6WDP}4Z3CGLl0r&tDVY6IYS_?^mmx^p zZ%2Ouem#{Y0{Sgq#Z2mRpufCA|b(jJL!C%8-?pniITeL zU@K{deLxDP9@(CuzKJ5)K}nUh&~ApO-uL#;Ak$$?Xx0J+gQEA!9$(I4_D^GH+-iu4 zV!VW|N8+J`y^-i2K|-O`E6_G%>o)@zUu?z;s5l8-sDvIg!E8eek`|@L7v(-J%_XQyip_<#DGOAn9pCW;#Da(y0t$-#r!Wdh{Z zc@@?<8qOR$Cu+qQ95Gy-b!B_l8Lm&rwRY>zjI>rvYdrK#%~g-`O|+myAT{l_<13cE zn1{W-UzAqmv~@_aIw{+DzGI)-r5G2eY4XP#Igc!u-crk48Oejx0Z*=M@n8QaLLc#I ztw!Zr6nA!8pnV&1XFECLY82gqoEKS~68L%1?ls_1_U;s#i~D&tpc?+=4GFxuX;%W+5EHEvudD8(OUU zDUw9HBapyi#_<5hHEUu(TQGZ42rF#KtA?kHznFLigfAwk3-+tQ%_bJ)vbjQ!^^Ez;$; z7biV&CmRFMQDE_3hX`j%;SM)*#--EpX1laMjJ#rIxqqU)dFN^O+q>@$b<>6yENChCV~xa<6GGhBki z`Xn?zk9b@Lw=a^r=`{2r2cKC)@~~VzA-odj6h(uGRwvfK(`#rG(*q7D@tIo(-3R!r z$zx|HV?z^VGT8WzK#wjwYco@9j)?ZWJ{)o8S9R^--)V7E|`%E8)kI6?(3Y5L}H2&mL?WIpBH2f7G}w< zjzZjHHf;E?E5)uiF&SiNzx4DJ_;mK!)i&C6k3Lw!(lp%2r_9|rHBb68kKelJN-n9p z&?@+60|?*=7&d) zHoe3vqXU`nl(}x7L~DlE7z`FDT3WvqEg*5+&oax8QRd%@UjImARK)+mCS$i)V0DnA z{!IJ6F8P)w*aR8tg|FEj~Q{<0z=iZlJ_{VnWi%Q)Dj;s&`K89RGPYWLyDeS2Eg z0&v7-nC7)zIi)0$t^O2FS+i`1JDgwf-pIPPNUF-v4W2c&-jLm{Wo|8v{d{r&X=mSD zqKP?ENcs`s{S3;0Pq5jsFKDUq5fUkmdx{yM&?pf^TCS$mRiUi)_d0eDxVIV?fWqT@ zuhnXYy`aIDsyF0j`IlS88|ouuGa34&HxE?k5^oyY{Q634bna;v@Ha`wI;{(_eUOB- zKWC_?z~3%8pp+P!XvP>)@cTMbfHxPB`FV5~R1WJxM1Z$+ymgh-6Cq%WhZloMhHAK< zO7^r8d2WNW*>$739wtFvPMqJW8K$XHZ&8r*(m#ZSC^K}!mUk?u3awX#C^LLx4=K6- z8=N^9FP>{QVa&7PH;iKiA+JY`{EYRL<^xhqgf0sMnTL$^l0QDx)7}t^XF31_RHWbD z8o2+r=Siw;_LsOdN)84%p$wq7XKi@zxQ@Im&F&qr(Up|Hc3;oWN>&grsuZ*HI3&na zLE&g<{;l)4OALeVpJojOp!QEUNo=?nI zi_&M{eMi%=d}VG*PFSQU{!%h-74CQpbNLuRR?nl8X&(RVct(<~~GMa67BhX7VlK!+hBqa)||6F0xG z2Sx_IkhDl==ooFZ7|+fe9XBvgct%S|kso1bwY1EU5UsXk^YK%l>8N${AZ?p%>X)1F zg%XE!`&zPBC0Z@^ZB`1E>GEyrHL}H45y!}9CwuVIE7C*fE74E_owwVqBOcKfM2cBv)f69&(MQK|3810$2!Q~n>X|2Lqw1Y_-+&;|e>Mk|(DKO#GyJfbV z8Iwu*+8@s%^=F~3(UKI(tcTL2L!_BI4aqyyX{oN?3bW~`vb7}|)moj@Xw%Co`)C!h zOgmI2`V#8d%pARMktOWeKnFEwXtshN3>HL6as=amzO@=hiQ0Z>1s}EhcvO*y@(#Sz zLo*;$5JU*FkrW&YfVrHEWQ=6)s3Dx{-?Nqt9wvks*aX0bY=bi=JtO|`1z)l$SP}{} zpEb_6w%URVe7O2j?HsSmgf=vlA~bVp+<#M>2PJ!rN@&8iek4%a<>ED=liyr#Mt>9B}9V_&z0jodvT^f*~N{G4&ff*`QNu7YhoE!Kr6y~ zW1p}dmTp5&nBZ4|Mh&2-g{g@7TLxPoesp7WFD=*abPZ1H^mC#~eiMAO_76 z&^y5V);lo$UXT7Lc>KdR{F&kVF)VTP?+oALsQjNpAzS}Uba(#$C((VO&NlwYz~=PZ zOx|yb0FPeupEcS)5&F>*^NS+DV@ph|W@2iFcD%Og$R9H^>HqD9(FKmt^bHV3BDswX zj?2i&4oLxv0&?ri@Yqz+0Lx1Sb7>gyQIc@Hgzo!(GahekQUoj0KCEf_|u)J>#pSqMo4PBEvI zNf#Y;2v7aB=b5}Dt|tgS4ATl{6wV)i<6%0O=R}%WNzvRLI7?=yNBVi-2v+7~cV(?Ul)jweAOa1&Nj_Do z0*wG5XR#BzL{N$re21xkH3z3bRW_z;z;Pz-ZGwfsT;T5Dw^M9AtaCD}6!i=~vu&Y!e7GIk3bI*Cd;e}i z58nshi38bH;=3s8x~T}+4zk5h1xb_Iw)cWpJo$*-DAWKA;K*Z(S-@*tbyYzzK2)}# z1I@xftjuQ>cLdt~6-{NY3ZiVSP#bFtfIFR~JgP*Vqndc2D@XCfnXDS`Wbf;|Z}5pa z2SH@1mzW=(InT4OhG#|9HYH1Wz_y8TibW3Tc(gRb4Ng*z8wz-Sn<4l`sp!Ai&i_e; z>VIxz9_whpaif3eP{#j3hsge}LpBDovoC@A^T^QnYaQYQ{`!-?jmNM0qq_-6nxkdr z`qVi0OEdbTh2_mpzwnQds{IrLlr(LW#|FB8w6R1R5d3e)s{RjcECol2qNTu(J^d{l zzi1zn6%|tavYZ?*wVCCDXBUpeV3i;Tgq{(t3TjiVF8VepGRJL*!H<^h<}~BL(3+iy zhAvQ2LLt6TADR{FPPikorl-S4b08HW9dMeSm<}#{NOydqp*9RQ6AaEm7|0&&`Q7HLVRV}f0-?+F& zO}h%t!0Ob!Q~}f?n7R>fLwN~^XPMu47IC&n`m^wC)v8+p_XNJ=Yi!tu(RtHobyVFN zo!bmXJJrl_%x8oVJgU;R{$3gs&=Eae>wYbC|8vjOJjWjBy=T$MttEj?mqw@c#Ig+6o|I+2fpN$b~57SCB`D1ZcK zW+jn*F>q=;XQHs^tV<<%V-u%A@-zeDw|r?>*KfY@(n!|9jkuaK!JP|A9CJo>EayLW zaN6NA+J;B89tGQr%jR&kWM8t(Gad>LTd>hRM!!mz*`ujU2=%;C%-NcIO|z=IFG;<6 z{S~hT!A3fa&RQ>&bBA9Hp)u|iizCFfiev|Omi5A7u1<`*xX;lJ7{ymCK`&0aEqfxI z!wTTlKhgRVNjpnscP@8&o6(-5YIc4479tPphEx;etJ3kUPQL1{t zwJT_R)3X@T&xFEZ20~yOa%ri336W6zgIU>w6v@PMf{&{3mhBI|*or(PAfA~1XFibD zj*4vF)Wzp3m&;fiOYO}QySnoL8In;d_oke^XV;ltsdg}xuG!0>3cEvmbktBL+4D{? z+A+pg!;81gDA5!L2qG_KxRvc#L|GP0g6Hkqh~qx*0ZaUGMWEf1ffd{8JTGP1^8Qwl#BCG_sob_W5)Iq|oyn)K%){THY9L#%^TINgo8+e{ z;UNtHOKE{jVJ1mOYTG(Qu|%{45tUUUd#<49-)$uzGvy1W!sgr!}U>jDlRPEYok%VYgXYW+@kgq!HDfmga#ug zvgxgwOq?v%&%g^;zsiq~+D?gf>~`t93w9q00lbs}RLtw@s6#_EEPuxp$JU*te&shj z|Aj-Mfn?h!&%XuyX8)=_^8it8St4bZZyy;Wfj@ZTPX3eH7|+5c7d$Nz`#UCrRBTOR z+eq?P$2NGy-}~&YU)p6AI1`{qziC!`H;g#3HdI=NV&t2-?YHKkCIVSHBLPU7oJqI# zCf)~UX1kmo-o<;EVyHyTM3z#}PL8>4hwj{Zfg2758#s!&IWTB|6;EKcggzF;CVk%X z0kvz&(B+2kMZyLtTZz_pUMy8z?U^f#cznj<&o;zR?6N^McNV zCaw>jx81bW&Te$LZx?Ii;nA%XC+Iel0mZKJx0$WqWGerNrAYrGg34xpaG(BX1?_ZE zR8h5dl(#YxZ$ZG;R_R9Pnh+%vo#(eYx&9h5a6FDyn_qg;6ysok02*lt+Be&CDqRU;aKC#TQ8dD{3 zz^4Z=!n#)yulYhnn&G9YAth)Tq#9}U`rARG0x3LWN}>bN>w+4rt4%G!?1WSY_d08! z4wU(LK7Am+^>~E+Iqan|2GD^O{`P81{0nVYmi=qCEGS{=@d6n9KxT!@lQCO|gg_T0 z>`#uXjIf=kXsuh!CbvPo1g@nkN)DhdDWH^!yH+=(7bHZQ<9&|!0hQ340|O0whNGk7 zdk0G`%L>El>MPKy*Wtlna4O>gDMIb5_D5&jfuCN!{e-i1q}@D=aJ{4l?-Z=GJrDCf z!>hREG?Pf}UASAnyG&*62&3M;0RZ&Kz~#2+NNv_ezZV@rWU;|-6Z);H^KfPTy7$MT zHfuEvQ(cjnxvX@@WHM7*iO{@G8aBS`+}E9TS&NWr#yU9iE+1(UIF#Pa1}(FyyHM+Q zTP0H}B~a(f9Ty#OMk=tV`BI#EZd{H8#or11>Z%Z4*?bH{88rPOddCZ=PuD^iay_S=V0A+ zmKfZzoP9FZ`TS<>;bFcQB(jWTBh+DVY0;YV zzz47WB5Ty1ael8JYvh zRUGw&*h>kE*Ydf}^pq1hLi&KY<p$usqyMl1Uoa7l2hh!vDV=oSx{@VonSPgpaJMizi?s~&| zsooJSB7xCj%MozJR+v+<&`QU1#?1HfTV$(yyM6jOp9g@%{w^u zGsg1LneC@&9M0(7&N0wz8U5B<68%Dd{wT2gaFxEwatce2t`dM5pu>-yOIIj390LD5 zhZEV!vWG~yKwa*mh>vzAnU?9Hp~GUA!v+XN0sb}E^&4vQEKa!u*5tzlFP78uQO~EI z{SU~xuv}f&L6_vMqSv1^_iV;fs?W=AuLxb2g#D{h$-#+jy}pjq7rdiGgWg6{i<^tB zM)7}-Y~fFeMnkQ74XE0fd6;E$E$^DGzDZLo5tq{v#y@4Jod>j<7``R@UVMPSl8EQg z8gJ;*W%XG?&KSJr|K4A%_-BC7G8npK~EFU|23WhlEpkH8Yt7(7_hMws6 z_kVfOWvfGK_lEzYu8E*To3}8P3Pr|p{-&RA|NI`JfqPweS5FsBz(tPGTbFHEy4oE` zwW2|27SMP zO(>JN;au{p1tXZb5|UVo6wxTBO2BN%y#{PmHkIH6W@#<&l&3pFN7$dkBDsz0Jb8X+ zehim4*A?*;DSORIz?QapbTSM28#jYtTpU@TQJTWIBK{DYYV)mKjs?WqH@t!Ki-|nh zn-C-nQQhu*V(j9vbMv^L=Z#%)94-^hTC;jac0aj-0Qmgy=3^dBt#-lSrPEj^MhIT*me%#;rYY)5i)Q$B)~#^S8Fd{WL~f7QdyEfy>S&g;8nJn zZciz-Omg_^s?+h$Kx)|I`9RNvrP$GrYoQBdgUMtE^DlCpEE&El~`EWBJ2tnNN;y^6iA8YE<8bUZPDoVJb-S4knTScX|7s;6BaP#&F|EsJbbuJ*ucYJ(u5D1*DbVn!IxOiPrnp&0ob232J$HL)sT{c9RU=4SfwITbSA}2Ysg2G}ue*k8kE4DCqFXdeZN+KZ!&hcnB06w`vo{ zEy*045VWqkIP@3rrVOBV7gpzxxL7Ye!@ToPDRQ0;J_ zS)hdrTMic%RCh1}ZOQA^Y4}k5nZ)D>viQZm7k7OkPtoZoLTTueTfc-aw?dfXQTIV- z%Nz*~%BcD}oaaA%(+5M1^T9M9g0u>tZ=Sfo8z9tNRiH~QJYAp<1y`*|r`G>2{)44t z%v`iVFlK!N!!2FLonp6omE|x(D_rjjuzSvg@DQ`mkiswv&Jkwim>j7__f%aTDkOgu zy^83bz$qiAy(YT(6FfH>ixLtE4Q}wF1e;Q8A-pQMiZu!M;bO@`=1F9VB6QF>QpNYG zx0UWO+%h-3Z)R7h?scq zh_k&pzC{-!+!ORQ61AeXzS#8>eDH951s>fc2!gl<9J~^?M2a5F-TYh*(tWuc;XuMX z74|Bj@5B>(c+(13D&Cc1Yl1X0QK)!pVvkoV$G?{OhQ$jeJ-~(e=G5^S2UktUXJq=q zgkmG{on2;1DnIk-K^I3dw!LimsgJJ`Dz~W~xD(B+Rxfi-9PSmO8c$|CX@LK%%g5du z=C*)dVHln|YJ`6Zyiq=U#(M~}JgPl#tT?#6j$C7kkHJ#ae=HiV#!{s%-sh$nZ#;ag z8qOEEt6AEyPzE>!)h9plX@{JLDaW6GCv`Z-;yw9VLwWU`%hv1&@`IfC>PnY59F1$w ztLGUgJU=FT8uJk0>wspL5&m~MvtQh4Rh`{jT!rjSEdN6T{og&BRtZHFYz=A(0c&C? z410yoOQEcy!(qaq_zIWU>`S3Zaq=7rDLMlY*F?fHSgk)oE_aU|-mw)>KITNcGyf*9>2)ljFH28!cu zC9fFQi6)id%8<409d!B&IZsqIR_%#NQq>CDWf~-}KpCtEM$Fp){esOjLyDLBu_LdC zUrO^2E+U=N-3YiKVV6z0jNkgm&tKDOe`$T~^F>3ZYmDIXf)`LJJ?^QGM$UXLMu}Qq zW)>3+cpr(Oc_>s7afmrIt)$YJr=LY!Nx=K&K9R!oWHG+{E|JI5s4Z5`Olkp!4_5DsnW!C7NGN(Ba;V)Nxx25vi~APa|20-EKgp67p7 z0o-DRWV#uFd`0hc=IrdnXN&!s4t(^nu1;C_0+j@ zH_*rOuG~DVJdj;o-(P||MwuWYtXp?xYc*|2RR(!MqgKjcmeOv9Axn$1M@3EDMq8ct zz|YAb%5~))4yDR=FNFk|@zp`4xalt;0A^(+jdlRjYek2HQ3JDm^8FV8d0OQ`*-EbU z*6a+q9kRv98IrI0{(gw~FNH}chwc(HUZpysL>}}bkGV_sf(K-nN-x?(s?RJAS1hwr zvuh8yCR|p?J3aFuYtg&;RvCrA=r~cG7D#_?i@R8+Qj*|twxU=LdV16xZ>6%*zcy~B zY3vuob*9bqoU@#^p&mKf-SYA&nbS1HzJ>|J{_$r0YwZ8M3-ZYa0vFKz67;AiK4G-X zl)44%x4?$;?_dSUz@@Qh$ORNainQLx4Sj`jrO@O$oex_=3@}fO!r#m?gte(L=SOx% zGtw?j9+~XdpjtpNI&p?5_AIDzi{t#xMUt!^uJ_A_=clF0=*_4J64kB96^U47ZzTJC zA2#eugz46h&M{JH9SJ%6m2me^g=<~xS*w|y{5?cUToZh@yZW5*K-~g94Gzm2SlO>1 zMsv^*t9C1)&~$YsUXK%(zlAqtAJ~+I^5NNcqLtt^YQZe8GhX{tBTT`UCGM0nksh3u zEyb3~@Iv_oAd7o;;scR^9lzTBO@LBv-&eAGYi8}pk9UYo4g&;TFzT?}62^6(>(`uH zI-1C5ce!o~*Vrehoo31y9lElea_IVm8;x3MDq{g>XFv?nf$t*tr=rq4GZ8t(ti+F{}`be zJDZ7r-IL$53>=YR1CGe3s)WNTC-`4?!YKPgLV{h*{&(pr6l)@IF>w$0lS;cq`$BjC z6*dO={93I3T@e4cqw#_u1{o{DOs)0No3~@-jD?WA=GUe|5q9Y1VHc{YXmoNYkJ#wo zN-$grVR7)l-BvlLk_ODGX;%%8p4pIT$tn@mJ%HKssR>^o=(EAVZ_vGv`PON_Y|KkM z@jQ=zxd~~Zm+XZO)usbfq3(vRih(|b###Dij92ZI=3w)sKRYomp%7N7J|6Fel!x3X zbhgm71lTC-!Ba&*#%*o73kb{aS#SQWaeskESw-j%Y($)0{|ir4Y=?X|BT}Ehi$z7z zydVgDkVz_3R8#;01Sx3fmr6J2O6BJZDdFwdV2B??i0G5zFfprKue0QHI&My{zTZDv z!&pF9Ihf@-KAS9{H#M7Fh%#g2L}9<)~pwD)aN<&|)Q}P>cC<*k`qhUAA~gwm(un zwr^BNQ#y9DxAcxQ{;0I#Gs(mueUZMaR5P5OVb4zb9(VAD9d~BfdTwhhoh?V@47xUA z%F3X`PQNCMDj483_t4KwO#9#;A)e}Q^H#6Vttx4?gCF&C6r+|Jzvz)kkzP00Ekd4w zBQMm&z0tH-2xnabIrs}Me=6c%HdUvi4Wes^x64D! z5(yJJHZ%x@Ew9p~^0*cOn-72v0lY3loK;bAITSt()Ud(1buU-BT&DH4G6X5E&w#hh zbyZkhN>uNeny)`YlTTCcpm+NOSlK1>k!cr zUR1xDozmqig*(8z!u1L?bLg7mlHxP&O_wdfLj$+o>x-LN$*@B>#CfJcZAFT=9R+bc zYK7qKMPO=%96fS-{cuj8g~R+S5V~t(yWMa{&kl+i&q91OCO|TRi@S&(D4KKQ_qx z#b>7&O8n`x^Zz#Y`cJ3*vQKbEs}|Vi#mva^8iZs*5jdHOg!**6+P>j&ki$mcsfPfgF4)`@k_Q$)#9DYH*w7~$HPBfz{ z$~vd?w2iFYG%nm%=O8Oe@W@E|8qOp^+mtLrM}Vp5(Ui#f@V#=rL5#5Q;8s{Ci4y(% zu$gL126fzKqzk~c!H0KApzGTL?-9L9%-)zXTbQVo3Eb#`!b5GxsOnJEXAF~W^4g1) z^d445uefJf&qhyp+C*G7Wtg_TK}v7ge>;eK6KI_ zyC%=1r~5~N2t5`;evQ&^4;hHke{IA+1G8Tq@?Gw)54jRJyu5mwIF&gC49%b)rF0M&Yhag@06eTP zX(*WkEv?$x?5kVv2N1`gX%P6}VJ?GjRisK*ReiwDBkakAqW%q|Kn2Snz(%ngE z$F2F~w??1MP2;W8Wt?srXwj&;9cK?>_I+XP&DRyptMyXi@EPlH+wL#l-A@iT-Aj;N zZH}InFO=l6CJE0TEHBNENX~6(7D9-0%)P?1^QKQB&0Lb({}9|=W%kzU0QZ?YT|;>z zbyy#DC^%6^iVeom*!9|23!O3M^3P?RQqD^CAzt^B*qc)I5PLF@Ua zME&R$E&O{M*x$@X|Brb7k8uC}-z-NmFx&_EL!3!s!lrV6SE+o)phE?h$F>XfcC1FWh2utM)T%K`T_ zt0jn8^1_bP=X|Qfsz`akoVt3vz(}mvFnR(!NMh0R-s0}*wmrgWb>9nw2KKiH|L;)D z#nH@!;cvjG0RQKo9)sxVmY4MRqu&UaG4)L`?0=m)c``^uYWhMPcJMcB5q}7Yx>WF{c(LS z{mC0@STv5zWTO3{%P;?Oo+Mxj-qz5XLXPHY)FfcF!9^4}Bw(?fAfSjHM`r~bZ@!U_KwNn^{d1i#h=W+Y;{#E$%Dn%Cd+8ScAL2*j6 z2P^}Vo{39JhhAwdPY^^h4{|c61K<_tB2(q!TkEH1tV(E%P~VeyrG4IIimdG=w5?M0 zf4P7h${7%}PgL(rr1Iy?Lz9}D@;LhTvJjUpmQ?c<=zANF;U(u&bYaN`zSU_w;g7g} zT}9l-FB{E9p}wuS=P`#8WdsUFBe95RH%Z5EhAJ{u7*JRnl6eFWuwX(c^G>%WVZrx_ zZibIQ7$KifwvGe)(DPkfyPqbB__9eW2Y}$<|5pC~T_bt|=&zB{pOWXMAg2JdX1?8X z!p{mhHlrM=bb*UTM2P#ql-|Vk_)sO(6xc$4Lb=rNCjR!=XoB2O-_H$X@o9~b+POHp z16zaS^M^62I`L?i<&Re3#&wO z0F8sD-|IE))m7M-8@X~VoHL`C`O2kT7BtJng_?{E8bM!Iz-dr9l%6h{bFgW(a88i> z)w^JpM>lZaPRj5&d!_$>LG7=1@jp@f)5HBRbK5`BhDS3uRggJi`efxm{;+aJf6zf3kA>)f77mK)l-iFL(hj=l}JWf8yn<$Y%qL!F@O9$|gm5s$u;d zix#Mpq{2hR6cv#UIa1bZP#BCH&~G)WQD}kd+)CC~ocH9Po8z;59mPrAT)hWbL$>n= zUANDhl_tlnjBLP3yLF@t2`rtoG4txlNW+0jgrZ}(Rdyn!_zH_qAs93mwEQtVnmf^%< znYHft#4WHf6Xv`P#O`r-_^(aazeA2E4ONs8QQ>^rg=l694A1|B&o1hZ-OVPltoM0P zv+VKn1t{RX!js~#M205l8_2}iWZA$j=On}Rr;*hH#WM{1i=B)tpY|_^Ab6^-lz`bq zzUFfw&wk2Si<_z!*?c+CnO`{1+-a)Q!)v?K5t1fuH}4vd>->-)odpNdhx6(QOGtJg znFn6P1&LcSrjkkFaGcpmhzotbFn+rZo3`^U+lnp(z-yDBSLa5SXRqB6VHv>5$4{+r z3$e=GVXfE%QX$8&RT)OI)AxM*_82sriou2A3ydC$x){~uJyYvb1k&~JQFjK2milke z`gaTd6IxRC?vLx${s8KilL$Wsy8gl7`xJ+ax7PGzj-WlNC*fQ@F;{&qDT_c%mVZ#3 z5WHHOkF~zFlCeBvBBI9dzz6e$v=lAl{(%qWd00RXyOEg_Kh*nSljCn;`bD7jX!d`ik$>8KYY1@pzKpPt4KsyoQc`P9BtmSd)^}#gDQn4f zI-n0Q3gq~Y$)U}Ly=qzJQ|7NG@m%+J_#n$~NEC^d=|74O0s>iQ-6;~-o}bv=Ut%9b z)$p!=T4n-e6Q=N}OoZMZ?vDqfnIP0n*@{5RW10|OA`-fuUcM+iEPgq)KCg+ugYZ+HL1#sNH7)C_$9@DsGT&yJN?%RO;5`OUBM?l1% zg=75F>?nG!-v!uL94%yR%NNeUTUEk0!Y#a|>rdTIh~0eQYe3u#e~a5M+@+$5%1@$+ zsJJJ08N8Y&_$-d$+l^_Y6cZDlS3oKfvWPN?)T9qxhO%5S+oIpg)s2bbI6(IjU3*RkkmW>s9 zUx7_ml)@rI)*j#0{hE^+mY&w=?UGKbpe1L^q=>xVnhe3_v4?cc>r?)#vZk$0K?`k3 z+rR>Up154>eP@Z2Mb|dm7KyX)?cL^}s(@sUIi`)w)j7ZyZLLY(Pms-UPR0}31g*(^KgH?`JY@IYEWud&4PN0C(G!-NR< zdcbZ=luyKQtqFdTAYI32LvvFhTk zHu#rb4hjwco1C2N8TzabSkP1f^q*2gS+=@I@>tFfBkl#8rbOdAuiv!uosqk~$G>AV z3iTLYWD7nTd*#iJ6`yGE?yJ@0d`!<5|8}dHeYnzOp0oaTUQ@<0^_X;Axk^!NI0yt( zs=^)4sW@sEQ{ws$aZ##4fh1zdbVn+c?(I2?N&W)o>FNw%U~h3{2AI(Jh+=#dWVh#3 zu%y)vJn+~{1BE0fDogx7uWHP25?QcXu${)jUyl(=sMWeEBUmRbpq>DT^F&iAX!(PQ z#7*c9&On_aIjc`2lg5v+XWcZLsXH)zpiF+W8URTkefWXmj`Z78AqSq@&u(Y7wpPG3 zNG2j~&hCF~wycN+)e`l zc7MNCt-74%l!Xm;|9C%w=-$d>O#&Su+Sc^a0`Yk+#Ehe*Sy%o-kzT|MAsgcAdTSD7 zkcLGSSImLtTgSk}IP1fDWB76g(^0bWpr{~QR2>#s71>v%nm9|RyVSu?&cUh3ERG5Y ze(Z0-C;SEYB8m>c{MV1GvG1SbeykO2vpLrxI38gc<+_DX+GwCt?nk|FxSddy zdy_{U%&7DkJhza;ZYu)1IT$=9cz-%u+lALwW=~#tVmx>NH?ch3czky zznt~};FiTFe@9AE7k(j~@cz7>k>E;;^loQ|?+|vW>{6gB`iwrGI`So|^+p4=d^4-J z#2ptvMuZ;bLXv#C(-sU;i1d@sePWqvKaPUW+lm zbf{+69hUQ~x0BzzxZ}FydJ@$%J>ze}csI8tCn3uKZ5!-#v(mzC6vRX^P+w;mzovRS zA7+L+B1s`|?cE!k0oi@N2}g4caJQ@Vk9t%Y&(3vjb8<; zj58oFqQ*9(#yVpslUFp<$3Mw}t#@D7TMBc1ns3p;9ooqBoljJ$>he=y z_|RI<(5A_X>cR?i@>YT9hXBW?5-*iOsojk(m`*b|YFly)2y{R+K2vH2eBt#Ady^zT zYi7yQKFsfSKBefoddMw(hfYF@ffLg*^1Bzo!wbfLX07q^# z*0dIyAv4=ddd|?L?KgU5UC+kJ-=LPMnK7)cx8-Rge4AvjedrCqh_+eIhxr&kmtOCY z%oq9KAx$vH@hI2BJqjd`wSQkAn!mpN{lcdF?Z)?Kg5gI(@Mr0^r;E$z4~~W8aj6lR zxeJ9MX*qf$AhWWmq510{yso%LMIqwAcajG_zkVkY;IBV(GCxv);>>pcF?9+GU5r4I zNc*a1`2jG*VPPxm3^KC3M!b@wS^=FU-w2D}e^jaw7z&5>BS-XR{F(~5?nV&l7Ni>i1?0cLeU5SN-sgQk-EkdbeRB-f zn!lOPeCC|XK_Em61wJ!3^Sc&zzCN$Lf!TYbp`!HN#Is8h811;X47Up4$DJmZa3=-3 zoG?;{5tZwR38O%Y-Pnw?=nW8<-(o{W8sRxP2*%cH--$|coohgGs*chtkiMr;vDLI? ziwG;hU@zvjH|haqwWKgtx8-Ac3qo4ALiK%|v78Foqscz%(x|82KW~yj-O5J zA{1p%wlx#ql_|?ue&4_?WGl%%JAj#c+-iJ0n^58W*yCJ zavf)rS;{q4eeD(R{c|xVA*{~C2hb0zfAoDs|NI_*4T=G-1WST2U}V@e+gR$@9Kx5l zpEn)8D$b(Bqeg@F_uuHzS_xiFbg5ibu9?~v0604Q?hvFdYOfMQkdfHbucm^XoqW76 zu4;%k5aGxUBt`^>E>ml#>QWBWv*3e8%|2}^=ZNklMoaI6wYR75EkH9vLX_`9Mj*X({v`tQL+H z@7*;Jj}Ck}Af8za#lX4b>{eXJn{6qV+JJof<2WX+O4k|Oh%xOO7)(Kyi{qB&+T!v` zdsLxh`9}s^Im9}UeF+v4_PK4hQ321g?CzGS8$l?(m5-;?keItQXkY~j%su)@GpbkZ zh?WxO>Y1+z1KY1fq(B6@rtg!&Nu9%KgN}s3uOQ$FLhWFLNNOrM zM`?h41Py-XnB;9<^Dh9T75|UY`cG=>v$Xz#TYf79{uXrkvHl_8e?UclfG&y8UB6iX z(9_9$FE9`^P3=LqO0$Zj`PzHVv3CO8{pu3 zl@#HZ>X#7Wm*f`}C!pL1VXgdxs`}bXD46QDHJV}s5P`@;fI!l}(BMzvkH;NG2AzrI zPgAkt0vQsm0gh!xk7q_MWBzey3IF&zeJwyJXMoS&`^UfO=>T#OfZP6?#zX9sEC5*_ z?6UB?C?+Z)aK9Aom<`AxAvK>xkRge;r*l!1l$07Z>^Hl}IoIFnfjG;J{7{6)Y|Y5U zbvg0f)b;t;5>CDiKe4*fZci=x5v`G4<(B$xQ3<)y|z z$gYl-&l7b_a%%8qUbc(pjU2%T=IG!drLpZtrRI}fr=ETh8o(PO3-c5vcU|p<_i>SY z&ovhs%N29d3M%+9(9h7ZER{T0oZPv7v_tka&n#9_uF;S%E~?<7(W@A(Te%FtfrhpM z@G*ytcjz&fAmWigE`00I#{+9%TU9mS5}aaI_45E^za+L#&a4%S|lDb zywWl-5!?hsE5wkOg=zEy?U^@T^{J;1Coj8U+g?xxmWy1Zm9P|Jm#@CltY%k9*ne1< zSmf30*p3?s2g2KIm+mAXRr|CHRvayVXqCT;YkI&s-pO@`Auyuk=8iM>Rq5t(8NKy(lYG%aTgwLZhf*~7x3TaJ%tf zr2QtuRetz<1EeHsdxRHzH5dKmz%thx5Np7ee=p*P0+q>g=K2$jofw?*dV%U{rp%g8 z)&zn;+3#unjWV%ZeAu=Yz)BGESiY<+NC(0u;ER<7uAVxihkwm6n(SH|he{$&*L0I+ zhp!Iz&RdnwRCl6q=v&-;J-e5@ku7`D8jZw?U6Lz79u#D~@C9nwprNx(dWCuum@Afu zI}vgC@oTST$=Djg9O4z&*j=^x_!&na+7i_}3UPnDj*9k4eBB#0_~)t+@)%9>6d=Wa z?tT0Xeh-l1|Lh8Urk)nUAV8cwGUIDmb>RzY()9$eA%^>df)e|!HSfn3F$CE6yR(h%ONX~d;k`LjXxZKiCjQ5Ubg z3HU&Yk_Kv~Z=~09Av;P+S)Y;bMXShE4lXFDcj3;Yq2alrFcv)iAsY`p)}l4bdp@B| z{_Tx$o9?UltghU1XfNt!-`cyk%X`+XG)V<>8E-3HV$@G_HlGjk`FRuB90G(G@sFzb z_fh#jH8Cho=Bc6xUbk2(YEseS>rTjV7w-U!#1ok#Kta+#Zn?+|IZN@5x@w*AdAtV* z5q~2FiH(6rT~T`>Gt*}+)x+S~n`RiSiw4of9Rjya^_o9}6s{FfO-HiO)c!BMO|j&-}D!<*rfa%2rM1F&Qj zfwHKZ_JG0VJ-1%|s0DNQA63_G_wH)awbSDDHoaP@>%fIQLKi|Eu zHL^4QkKU6U;D9N>fi`?pd=w;^go~dmq=gg2fkd}OieqPKw4h9!jlWgRAb|rc*m+eH z1!6$9nCjETW{3ZD#Pp>I2y||zV@y>&`Whkh_Q>LC;O@BA#5Mg@lTrQqGy!bDQgX4kw{vv z3pashCP&nd9H<&X0qBpl zp+;(@0*R7xv5HW}g@l+QUw6VJI7;=E8qU)F%NByksT?euUri3MUonw00tqF&00k`C z(V2T><3T`j5Kzla%;Fo^O<;5GuKuPwxgs%$P(ppEV_L)8^k}i;LcA<#q4YzyjYnJD+Gib9z!e)!+ zZjR!Sw1*H-r2#)8UVvJAm<6c-y0gt?Q?wrH)L#|M87gu)s}i zZ#_N4czUezK69#@>Iv8Qj@?8T4loq)-!858rjSYjUi{zxes13U@wl>fw#tqMfV6dK*YhbIdQot+-TOpkT5wZvSv+t6yI2%l0T#c8f+Ngh|69*1kyMZUIf9@A z_5RxOSpvyIGVxN-x|!I>y!(s(f(+#v3e8&?0TpYZ#3c5{Wu#q0oNt&Ym~V1NfPewV zS?N*yNVou$u>wp#=JGjL@aQOgFair&5(`pk3tJKkQ)vr45(_kG3*GzR%T2Zn{H{%4 z@tKN}8JK4yxdu;i-UrC5{Wl}|Q;wK`|M3Hh`5{L&14mm6TeClTSPIYnW%Cz#WuNuu zwU4(uKNGMNjG_MRTYeD`EI<}c5rsHYsr)$gu#rhrzvxSw$t4=hC zRnmYVLqQGsUKv2p19%ybv=^W)Z>Ry!K`;Wh4Fzn0Mley*Xi6R-kxhsU8EMY(hf2-`VVAJIcrA)m$!3RT9%GF?hM6sZB67kS7jJtOyTID7CKm#tCeK|pOo zmmF#9ea^~KXi%X&8`G9aYsylm@M9@|?@VPC}uME${8_Tuh zAe36oO2EMbd6RP=H17&k)fW6#`&xeE8jREEAcxK^P)4MzDL3DNU_kH);Q>^Wa*rxW zN;v2Md4GEedDc)0FW+~!%j%czvb5r-^nxg_sPRuJ$`Ns48ut>%m(Z$|+~9P8Zw!&5 zx!xk3rFGLd`0Ju<0&5_yhu}^PSh3cmWS?a8Z_SSR*cB0c9+FMb8ob=o*pKZ_AT$Z9 z@~EZGEw7RCn`f=b&DLd?-yVTS{Z5M|RuSgb9k}R)SL`z1_r7^x7IvOtDJ!J4$niAA z?-DVZ6*WMr8rt_65B$z;zZ4;j$(xPR1Um=Ll&*Y<5d*8R`z;C*}Y~+UvWBP#i8e3T>#-p zZpYPqCh;ykIxsR(>xv&nb`N*iM{-A-3sa+j#b!vZo~|pcxWzUZSQiu})RKHvhqS0F zj^rq*x=x|tQ*EwGF03{TkK_U65r&dO9*1-!Zj3&PRLZYHRIM*Za7Xx6frzEB%j!&& zh_7b~=_?o<$wm2$lk$EmCkB!QP{OdmYngK+!>KS_hd?=|O*_W>`xnzwOoxx5(VN1E z6I&lJPHU&v-%)a@vMd!_`Xh5~marQjuc%Lp%Yi;VC$ZkI^Fp3BkX^$4ie3E~Pkv&_ zKjMip03fk*asDrXIQ7@S5<9*!dq0Ep?|||gVK`7w|4LLLS^mG}sl@;Lc`7#WYw1sb z09*EtA^6X{|2dB_cpmImw6nH0G%&LIFXH<(@6UctV)~zwm-d|djEsW*ZR_VGCiVv_ z6esxLDZ^>O`Xx>SZUX*CSpF-KLHyrOWDMy0za0Ri*z}ted;UlWQGZQjgaITp6UQHs zHcH{gNRCiguKcLby^zyrm=YWgG*VI|w6Z-p*?h{dLQQ~C+4Vd-U^y;IuLrp@B82y1 z=HmHL)x(#EbEplRViYaVzC=0?<#vZzq;G&!8a<4Ga zeap9Dzj;YA!@@I<{9p)K^~kq@d|1)7k23$6jhp3KVJR=o!V5(fOLrgEHeiA1%0vDjqIUx`%(URystfVPX$e z>c$kSb|n<#BrKJvxvp%#ekzb~=GP=hsJH!VI=`H{EK%Kmzq~|$Q|z8O5ZJvHcTXC% zQEtQxZ>e(Qj$j&xIBanw-fY#*$6dFS+Z|~)BFl7T(@a&PO+FVKADUL+aoJ&m8`883 zt|9%hq9FhA5^B6m{neBcwZvSi;CVuKqG@q%p@4+GCfSjPZ;6BwLAm(Hs3S}7g3qP? zknK@1M_gHvBzF!UQSI#agdM1WFFE5@E7fh@(c$`iDM;;v@fv(@H26YA!H>U4{$4vg zLA9XFiGibpQ+YUYmFC^lDs-F|tph~v5&p{x$EeRF<5UK%WIl^EQr`~LAKU^dIL##R)mowLINOWL#TR1Y77E5s64F7^gQXCukhYdYoMIQIz0Crd@U z4Qr~BJG>oQ-5IVFYu~-QVE&kOVO8XqJ)Fa9pV1NyAEj9aJr4~_B$45nXhtH-BU|vc zD$ClwVG^P-=9FBUw=zZ_sdh6{nTtBllw^Urz*NQ67$M~`bItj~NgE^1Z3BuHSLLz8 z#EE)Ars~)VOT?8-y4p48Tmg^`{j6EQ+WYzx5-us#;4CF!Q~I%Cj&TOY7%)*sbz@^F z57Fe>-eJl)42>ZVQQ8e6V(gawVH0hGZOSSJM_e|H)-V}S+o-r@a(cynT+x#)JmQ=4 zH;5qcn2T8Hm&Dwr+fWZZ(eY+RH(zk*Fg(JJnf(rW3%Ky(alf(nsVx-la>qfLMBsZ; zojtDwK>9jL@U$d&8SI||3&w8>YT#;O|C1E+v#!H?u2XV)sNgp4?VytkhpzXj*Lu<@~PSS#QfDiNUEfb{bJ zfqg7uV7?IrOqC+PCj@{a{JdPTL%;4+X) zScrDWmphDgCG_f53{9&}$T$OESTqz_uLDB$))XDS!lulh`s*zN;0J7NQ{c5ysSYfB% zB}+Ei6D(YWvpjJbr5>W1yrVx9Q$6po+4>>*tx~Jt&@gozw0am>q%ndhLthq|k(GLO zxk@d=O&Em@kIdeZ;MHfrE3^YAi+WqrHrl>xqO-|IgCG3FvwR&%C4e);_{Zvv;MX_# zcfUf$#MuDwKn6b^$RvJ55zuuD_5y_^7$zd$^6f(=lf#<^QK8m!D7}~qELEnLH8kD2 zu*3s2a7XJvL*QiuDpQ-&*bPdlIv{k(1JNjqQZ-8>9tZe z=g$(bQE*dO=ooRHq%rB93m2^_2J*><2)s{veH0}$p9Hh;MxgK%s#Ly2%vmTaKiyA& zXTMN3qb);#s}HX~;*1wGz*HN{qaIXE$(_F-H%_8tE>zfmIEhaB%XC#;Wd9^nISaqCXy+b(P^F+%{Z;}sN!j8qRC61 z{&#fQ@=9VxONzjpmMPr+rNCkfYW+$~E#y0Od@hd63_R#EVphm7>^UkqK5=UXAd&^m zEIM<}A|JTYsw~@*XGFdQ9lR%~lOmB@CynD-m={mau$URS!Z96I2*&9P6P0D!ralJ# zaRH8<2g~h=Q;qzOuZ92XYXQR7(;NMlq-o@*li95 zdTP%7bJmIWhs2aU?Ei8*KfNjKvp4noMNrwXqyEYOUz%e6nP03V-g&5Uo9;?5gL%nPw%Cw#iwOy8c+P3sx8-enyQu6 z51GM%$snM3Mq1dAtNTL%-?SO<`RPCZOkPla{Vh*F|C?VaWG^JtJ^~LA_#7bmvw`tcwS$Go7(Sq?b|OUx14jPp)Xk zeThyiJA{QB8Y57(1SHp9f@i8FQ3Y#@>$oUb03pnlW&2cog29t?2WbddN0@P-uxwb7 z*l;|a8F0?`Y71|u!yr37p@O3EU~>D_%9iX@I80yr%hsL6@&l{zbP$~Wfntxl)6Ys? zWwE!2ddpemHLYWJ-Z}ZJ%&sydL_^WqSle?bwCAl1D>jh@(b_I5C8^FsmAlDCALwdV z#H~^tgRmpl(4jgijgYx$_{p5GaOSe_Mt;krXwxoe%wuW}D`0zlqoVN;0NWS#u&g5GiNNw-MnCRH)1ttaT7AaRTe7)m2leSXg5cXJ6)YS+zksblR@t?w5kLc*IDK; zaSc|oqoyr-p7B+bz9E+ZRqW@gsR+#@XeJK5ZI!l!nd9M?Sf_Egc$M5%r5d=LB3YlL z=Cr-LS~Zg_IU57`<~?Yltwl60Q=mn2Mw$v?=w2BeAHF>{KYJYH^s^Rp`gTD)l{2;y zn@XBbAp!3bq^+M5E2WOhs632X#bsO&iyevT7!f9TLVtYZ^jiGQ^L#|@HdquEK(zG# zSa$tZH%JN#3jOpWK678akX29y&)GgzoPx8pax8TrGSL`1L_(q4EWa+?aZ?7!6E>l~XTA5NYZx2sTr+^ni`5s!v z1A065LH19+auvUWxD)ajDSW`>^TyjAJJ`P(H+FM3b;!nF#M?{CJ-H^2x$4FaC*dKF z{=Q4VgLj({r%s8KfBeF2AxzX{TJCk9Rv#36olsn59i^2N^NGAqSPgO^pze#4XOAR7BNIGMVu)sd9 z;JkB$DcLQVz~(b|viCxs?R0VMn0zD+ba>oQDET(S1*Srfx9AJvD*5jBk%9iED2$>g z(3m2TxX>bzhJ!ND1CdCBmC&yu6-7036BPy*D&+^s&7>(4nJ6*5P$@BzB7LBfA}I%b zgD6E=jC6C;6#Ce6hW*H7J;VEaCurOlCndz}GW2l%J(=g;Hm>JSA zrzn}3G%@JN8|XDL=_nc)moTcy8yJ=_tEn28I5F%foas3+PsyDb+b~WkoEhfmdF9pn z)W>ec4QPyTKOqOXM1F~!LY*V-meQki{&Ydm-ja6mb!1$Sx+7){@fB|7V~5I~K*5Xr z)YR2_rz>C$jn7^TO)Yk6!E?#qt%ioj1x*>5hUk((_V)**z2Vmb<0e&3cdRiPr-(V# z-Yo~*;_-bu?`wU#bTOO!8J+R!;d@{`bH~++wx@-m>tj5G4*J^RxsDeT@=KmL6;+Yj zQVYGE9(9{|?@V8nTktNAn)6-lqAu=D6XwPRHoooNMN>XI0e}SN3-m z*!NT5+5&2qlHJQM@hbyvF7P)bP<3{AqN0lJGjoQ>_E4=ykygm<>%a&ByU-EPtYIO+ zK?6KJR$|T7>EI*7n)Y|%mPM*25nqYqbCP2r7dls&7w?%?3O9!ix@7IKPSa-6r6HI& z`uQn{D2XQD&KN#dz8AEArfk&7*C7rr(Z zmDiW&=8~`%y63Y>%}M!9zBx2HjCZaw?^B+fOZpzu>UZQtEBnm!3(TvwQtANgRplmu zVVSS6y|$G4^czLYl~{T2+c1JuZHu=tNGJpX7$mEDWWyO-g5u2pg!grQe?|S8kUZET z@*waJi9`V!lC?cJh5h<*ik9|lh2tB#lC3=;iO>Nd6iMJQ3S}@^1A>8eO$&TN6mxZ`pWYjE=KU#AIRnyhdgy;^h>pCu5WYjLF?YWE~ z=Sf|OSPn0{uznoV`&85X4W?7e>$^JN^0|pKr+0;ZT=5}{?^iG?r>{D)Ut)eN#M(sp z5H$fP(%-)PHQ4@{jFJ4Bi~&;df461-OFrKETblW=PVDbVxq>l^J;i?mE^~MRZO6&K z+K$h+x?%-gsJ9kWED;K4kPDQ7H7x!;DZ79|b6=E0*+e)hnXzOO=EMN^022<={oWYp z1suUkjPSoBbQUqQ#WOP%F~i3*zbs;=^X>b3hCLaxZvTSBLRHz~#~Hz!P`1@ofH3m^ zF@XM=hyPMt#_+)T^CJYUhqi_C)xLKJD=De4Zlou~3dq%S5F!YLjNntNKLf%WZAmLB z`5?W-P#K@6p^ir5+iOKf_S7Q)sfW9H99+fb?Oz}}FsRg0fV>wMs4t||{ zxS8cyW*YhhVtqTOU(TjN+P8w>wi)TtvV%4v@HD=HAlFnNx2G0q7l&AFE8xeI05XWb zPt34?)s-Kht-v$z{Ubs9S&97E12X+D74dls*y%D$H1yn}{|nlArse*%(uEjAP0~`q z($myI!V>Wb-7&@Z_YM#m09fvXJ&1{S1<;AetyY675X=18KBVWGSWZ3UeNpJ z5xC&ZDFjPRUrj*}Z9zs8LqiY-0x%W%(wa1V|MD%gWs#jZj20kT=r1HHJ&Yi_)Lp*L z!I#g#GKv@uHq2_RJ94W}=5}BD*7vrJPz+C*3`m`wfRI{hT%jxD0^xOH9&<_6bbqW9Tb>$uH z>;cP)J$`a#ZRFm`0xKZ!fKW%YZ!2hOK(T6RNLbe}FiZyq3YLwXK)$8E>0KQo^-V?% z1HGr_|$Uek36lv44&=J*Snc35s)9mKpC^+-co$-`aIOshE zmZAyT^qBWREtztpCR6Usy;_=k@x)fvdvW%N%r$o#*xb+V?>U|=9 zUzAq(>-mvrPEYV+9;s4u`tER1)f}>eUQE)R@d}j?S z{6IfHUcw}>(z!HV_oEt9zHyz%ay?0$i=3mRSrWI+r5!|^eBqq*e+elf^D{^H*N-KRF8le2-%zm5{c zNyq_^&!I=99BOFWH+Q}iy6heR;ImaflGKvj9oxP;ZAOsmtdw~=Aq;}=4gTn@sd|N! z1!LyT+UdjkjIVcR2MBw=FA{j)76|^C<9nx3Hdiswc(*o*eoRNswYN=5RgM%G62$2`op;`@7T!%5&9mi zhQS!7WQqW51g8{24^=X`yaFNosBhdjg!U>Uj&DO&PrC_&no9Xj^IOw$RpR91iO7WF z3^pnKcIAv7ripy|%M(w(6Qz89dZ>Pyj(Q4DpOe@w>xcP5=P`N680STI1ewxLra}$e z*{Nnwr6rLv_6fS*Y^Zh8RXxqC%s-h)5+P{0&ryOgYVBq9pq{ z#z{(x%=)*aC#0WdIVCu~)2jjsuAxDJT&3ZnS34$hLwebxc1Mr)i8&IOmIed#ZiJY0 z?!>$GV}^b~xRl`fx#Q<66tv3iv> z`~BCXsbi5yoRezRtSZIDsB(288s>;gUw4CUOkV-#hFVMO1cV{gaaO!dR`9U=Qphs< z#YadFTQj};+0@tLhek&MzuN2{6(8qUxd7scyosZYg_9FtkNcli{$sMG_NSHeXTO=v zTN&Tl`WJ^&BUIbc(L%vgqOeoR(7}{Z5Q-QiUB*<`Gz^zGpd=Vx-QxFQ6=IMGCtpcQ zbPy&GGI$Uw5NzTAPPCwf21X1Ufx1%(CQpP&(imv}UOYeMtk$4Ax4g)laA*cb;~YdVQJgzd(lK}E_vu199N zWuR|@iZCKmAnclc6I4~ZbT>)(id@4T4O;NEzR#jZH#?ilp_(0%WyDxdm=YayYdB@@ zoy1Z_CA?UPEjOF7MKXKf^lTPNhbiDlxJ^2f5_)=$$GwUV=BvQTY)>x1>OBS&IIbXm zazcCwZrxyDsInGgKQ;L=hgq=v-186%V7Vtr)RIWx14v;&3jg@xzqvXkXF!9;20&B% zA&V$g3#TPjln!`tdz^qM3BfkfRU{6b6`K7mTVXUfb#N_Ut{$8HdiPhO!${LJOAj)~ z(szyc7l7MFoE@6x!jneQ^)s{8pKzdry2o%G3x3?r()7JZ$YzUE}5bW=Jd zn|h3%%dbzTE)A z!z^Rr29cI`GfVqohD1IdclomP7+;Y}--8+oQrQjFL@!5ei`+#;h9I-MY%Re=WFF#p zGH21&88R_xD17CRGC;JW6mZn6%1W}ixDkR&QfvA^$Hc3qoLgWXy6tQMn#)LZqdwqG z>n1iH4B13V4CYF6APxpFuhWh9qC!fT zF6tC>Xx~Q4^8$NVd_q{pVR#*r#UgDA>vGwQAvRYw^a-pKlaqP~F72{BB$&-ed0L)3 zAbPR$5M%t3-e_+wdppeYG_80X>YiN)tJPY5Ss%@>T%0$rD(VHjtxTE%xRY@~JmXPV8!(M1wTEA{si^-kDIP{maTz*=JH>bM+#e;^hU7gVHS=rS*x(GiEgxwv)X6PnaZ{88j;XVZ=Ml~ z=(QJ#7x$+~8ycb&M18W?5>*iPQWTfG+V4^2hInBA1XrIL(E;za*ot08621r%Qkv{w zkCSP9+~aV)Vk&kz6}6_v?U|i$9cKi)A7+utEBVgYa~i}f)G4gF{*+zy{z!whqf{ZR zsmy3>a(}_FHuz(If)GQ3^kt;tXcE%9mO{9EVy5XX?!HvM44K=(Ad=d11 z;H_Y>)){JuH|#p3j`tYhI#kDcVA~sR6a)=<7cG927Z&!z(eL+(1$K+*X=wcFsY-H- zIBpjMSSKG*_BWatiAYu=s9y8m=iA`JfvQ6BZQ5~Os0q%XK^F?K1&A1;ePuHEvO&+J zN{d=Pra5w^7!HZ+2nk}XB$a5b%GFq(8w>3HumGsDC0E;#Z`S?uJ@M~f= z0|lVi7rzzPe%p4-IR8@oRNX$Wq@9|UTBYg8{R57vs8YXL6{Vv08>ZH@l z^~?9Z$5WsU+V;sF$bgS*_jbCG-!H=7^xg7F9_fN>(DR=LayM)<&p@VZ)Qxk4M<$XC|leJlEZhyAi{D^C;VLYaC4B z0+LLp-ljZuM`<_Me7FIjMsGYf=QsUY>{G*S+EB;~FBhM|#Cl@WGA6W!s2CVW8`PQY zpupJTJvfyzn4pb?GF|oMP^y?qc(?UaVrxT8Z6|}%4hBSnL%T6n1SVCQKNnFXguKcu z%4@^wifZwh4hpXx#6|3&8TWxmwfL5@kO}&2_dK*Z;E9GUL#<(4LXKn*GkcefTB)tQ z(=-J^hk7y{oMf+FH}?|cYRmy%fZb)mvy==Oycm@pc3 zh;##ZtO2j7L)=R=C|ZRMMiw*FqU098Ulo-Mak-Ov@T~S4n3;2RpkOubay5=4Jd7da z%GPk#w78sC!i-cNGn!S{8^|{?eLBf>7SUeLN9A6IxyYUq`I2&&U4{j}yjbpq&4+#K zKjm?MztSfs1xKrIg`<^!%jai|R0NqCj45ckiA3l`FE0+u=>pYTW|-}ahR`aOtN@4&vNddbg~CrO$9H{`DfoCfhj&3Fe;)TX zD;BVLDd1jsSm!o1RxgtK@QjM^CP#P}e1&ZL1vkkyqBW9YaQLRd$FsBA&CO&5zAnTI zF7-g`K4d}58X@u3g`MIWDRGdrLCI265KU3Kvc&)&BR9Cnr5ulNa1Ay_^o`W%hm+|NaJC`PMOX86Oij{T9a3v9P-R*s1GlyVWydpf**-LJzAoA zgFdAd-l31EU4Z0zANtn>>rZF!TOz4w=O$q+ZDDHS3@D|3q!upmT6RbRfGX+(*!4`K zVhxI9<#itLfT2njfed!rU{s$G!0BA&^V^um60pHM#h~Jv&(`7ZWoA&CaONM8UjO_;t#_ZnFi_l zwbmVgEjemZ4W8cCNmPS`0uAguLMN)aT;z3KDjqh8P`wGfmhzUGul#o;>3MS z+Zh%~uwte416G@lzdI2}y$h^_^_Vy!D48bK7YJJ|F)TSK<>GlK(Jv=Mhys>%4u^fI zTKL=J6toHWe$)qA#i08Xm!xKHBnE0ja9PO4WNc`fvR&Efsr%P2Y7gZt>ZcvR`?AJ7 zztd%8tGLrOca2TT8&0v-;D4G2qNnmwJ+C;>h+5u&=Cg0=8`^TK>Aqe!nKc{l8gxV8 zLP?~pb@zMqVvP5N!V4jHnfs*+dhUzB6pi!bR4K+IU2| zc=}CL=Pls8Hqiw!Up62<^f2-^MgesVRjX{9=<*#9V z0T*Y$888b^gQtsBPjkKh1@B$`rL4jKYdzx7Onl^h-gsI66MJ<7u)q14xrz|-WBf)V zLeE!MT)|M+!PHV0N*nWMsq>8R{SUPbpaNP*{NG1{adhg8Zvay3{0#~IQ?9?`jLwcO zM*kvU#`4$#XhuQnDfl3p)o-v1=quHcn>whMu{ z#H@v(WfXi*pA5LGGfnAF{cK2pJ!FBF)ljNG?I&k*!UZK>5s#@`8zFw$QDx zd~_9Irne8)qK^WKQ;}m2xa&#pUJvCDK0#!^kCXo?pZ}33{r_v;>pywYe?RO6S8n-# zh$G#yl*s!TAi>``(tk>j?LREn*~AR6Cfoyn&Nw+c8UVJ8san`sKU?sBvEIJltv7!5 zDsMbq5->Nn6`$7+Sh`;`exLDV#lH{GX{7%jwP3x@1@;6DR0!LRa_cQSD? zwiB|mcCoQlaWXLbD=7QKPs=UIqYQRg`8BEI=4}b%q&s0NlYQGj?iWupwW=7954X7P z<~)J~9~JEhe6;L?m`G0LIgQbDwXU27N_;R<5`$h=oEQMHHk5f&y z=W&H1JCSb7y56-!thCab9M++|SAhfN|8 z|H8{=OBEY(&qcQz4`rl~SW`v;BWnPgxjIR)tJvQ&IH_S9%r zZhQCD)|D)G_NbxbdL#7B*v=s+Vxik6bm*XfjkvgBDuF8WtI~|`cI-~??Yt`UlB*+> z-%%2VrvPR37(sD^`1J&X`uPoSgn=S5T;C`Q;#@k|tLNcXWlX;R0#(;~FFoYY-c5x^ zw_hsDf%z4rnTjxk+i&mcZn9+Yj+rR7_(7FdyKO>1;hmX;QNpEP$f%hAgV*5rlf;d67Jk^A>GACiNHGpsv3!(@t3WDs%JZ?2b&6Ve#miH3PjL z4pD&2A2uYKfXk#LcGl?yp3o||%3{2;To*XnCO!cVv#J1%4F|13>-J=R;|!Fl4wQZm zFS&w2RfLOaG|`Z6R3O8}I#}cpbu^!If#W4%&}?#$)Vi~iIS!j814`6%#*Jb5%GQgoB_Q`dSW0KYXW-r zJ~Al?xaj-^m1|%jmE;)GcPbNjEoNHYJ2A}DV=NQXe7fRnr_P)EmR$fN?-;8a&((t( z!C1D^seIeVRg%R_|6S+jEEw4Jiy^!i$R0%mSL$Xx#np367v_&;)9>HeJjmO%e}r=U z;>DB*HPgJa`pNW@x=oX`zcR+Y@}W&*`Tne>9ptvwiE4f2d>Ks=IGRd_PXlHPtpEMH zR+AvfDa;m-*V%8VP`E(jmd^5N2(Tb}>H%o2bu4uyN};C8j2Mxi6P~M zLTzAjCwDU;U~H2>!U%)Qk%WfUcDX<~P!IMPq^hzvXVe}~yXUf3Z?b27dKH5X8kQ&ugCRASmBvG`h7?#C{|$e-^H9 zcWpgU%U$hlSJxF2bRxhE?(^0Zdl8iDF^I~^^7Jjd>%NKORjw#Jqcs>%qqlj``|xqn zx}(8TM!^Rpy!TF0iEB!xdWT%0soujnL=Jw+K#n9&T5b-s2y{^kr1}*u$QPoBkB^>VX|7&#ankzVuV^hvt0cExE|086symK#oFnp zs-Hr~bPSyCq)OCkP!CMfvgEPlkanP#`2=j4onr*{=YOyYygwd`qXKk&_%~huQ^N>; z)pa2QYik2TYm+~Kk3#i*Hvr+R3#9O+Vsf3beF!i`jsl8?VwsE}3k!-lv>~EHn)HXB z5$TjvAeVJEP&bhQAHAvba{POc`+V+BHapY!l{-_?;_Hlt)b)qeo0E4pt0v#3x?VrP z0(ou3;Hl?z7u6qlupDPF&2W6ApVbheYAq}O$o%2hj}}bT%Tb7>e4n`9tdUXZomOM? zlBP~$qhv{8H>XzlL3H_|7}klxM^!7VyQ=Ow5dAoCP8yxQf? z6&Rx^d#2uUxx4-c(yTB-eubr*m|)+^(zG0HRx22Hlnq)Im=(G)o1i`!(~P}WZc;=i zX6V3+rfEq7s)N3|2>ML3j4B>>JQC}_&xal;IlYDLpf6YwiJg3)G#JFPsku5gI_`xE#wyDqtyXP8<}7AL6`fi%a6hV3 z*d3hg#OlJ>OX^EIba{SOT2aGQeUT3r2)BjzSzR==c#&0ooPkt#GXhtw@*^q+365MW zq8WO#zp!9;WIY3_&vmY{Kqyv~Z2^4wmq_QZ&UjrGm1YB`fCzPyz~C;h5zMkrkw+L4 zk)v-vzsR2XjH3R*RUG`Q?I_k9wJY+Fw}ULvBoqVuSc*;gOXv!l1TO+&Yb!2jDZYt{ z64&5hs?UEid>p|gAw8NZXLOI88RC_BRC|7jkoGm9L7@kF>LOOMew z!(npYDNRIJbks?)>w~VUtEeZWnP!cMJWI2f<(B#vP6L~`f$z$!_GKlkLUAuc<~igM zzL4qmyqnWD2>PHJ7mVE4kGoq&m3ok(H0Lt-VOBF^*_ld*{t#A;ejrM3hhtUwIEX)+ zi;>)OI=CS@bq^-ao`Z#ump6$CB88#VW6pT2Vh9|~HiBz2u}GC!>!_ZNLwm+EzT^Om zR`QE}$aKWaTUc5c8IzeJeB zNWj6p+l@9Svbpvm>cd-qkRv;I=t9(YYB%a9kKHhOO(d@WHNdapv&3LP$N6q_Dmq&3 zzFvIXfCV@@*N3}0 z8z05U*XPS#1vSS|uy!!#oh~a;{Y4+`Ke(>TxVkn2r?J7{P-SszM{?CZ$_}a<`j@aK z%{3mMBy4BJp5Gp7Fd?XD5Txx|aq?b!S2p;S70?V$VJ#9!o;T2^)Gd+0;*g20#}<9e zYiyhx*WHOnuUsYm071?x`BAK>*kjYE>(hbYjB9J?F(-LD%^m)pIp91x?T42xGUJpw z9Ob>>gAWnfLhW-X+x`Nn-S|r+NMB2Ecp5g3^T-71USByRz#ORZ`xPG5!vLYRsZaRn zUe69?wJogg;MD;WKGYx)mg}HzR)oMpVg?=})*-SIZiBZV60-G7K(>O} zniNALw!q#_nO^UkPHDY)oU(*$BC52h!6l@?5FLhF2#eLR=URM#>y_w>NAo%{UQh1U zk*>o&5nb`phZj5v>VRB?xC=Xm2tCF$yn_ro7VwWm+UE6NiHT(xCL)3G2*e?xis=J^ z^gw`yOnnoAph$9v6D$#kl|(Zehl-3JxO4MT=_0Xa^vjlvxs`{4{jaI*Uo zqyiM;U3|0wQEt29xlH#ejj3z`z zP`K7h+SW^0$K9y}?RNf)FGQQv;ul{e==8FQzJ6mKnKu*fMr-i(fD z`;~htK{dg)iaRV}bwc`g@b<7+sWUV|TI5Mo_jGfENv<;1(>n6WrZB zxI4k!-3jg%+%4FhBx|p|lXK3x_p7@1$M@r{npJaF!P}2?_vr31qNw{<heJjLT=xvknRR=f|AxzNSX&U#}oMWs>VopD+W}Pk(zpu1@I_fro*paQ6wVjGo zP*9~R0{4uGNvMnUJTc7sz)A45IOy2!P(5`jPJH*1yRa0oC|(%s%^M*=f71UP^dSAG zOHwd0{xj_Q#mSTLci8o1hWW2>OYA?wEh1nq!0-g1cxx_Z#9#a$LloM-7zSDXo3XUz zD*(Sw12z#b*#uwG#?U*2SP4l+yDJZ5=+bEE0CJ#|5zMsYj6^jB4UpPpEa^ble8niC zG&`iwP|Mn*(&Nh1ume;-|6T~P5Odw)2^fQ49IkKPqUknNF;>34Kf=e2+I?5!cYqP5HSdU<*VUdQ1CvxOOzJRCZ3{?MOppsMxhb|fZYR2vvHpvf9b zbLzyspp4TW>jj&J`746mqS6peM2nZmf&D-R#j+eMb{+1CuupI!YO`Thb^ouv>ENo zd|s@zAnz>ncn5HRNZ9rJYkjP4b>rM6r|Qi*#jEOhLS>vZi0*I4o^M5Xl@ph`a@vF= zN{oG`a8|^v=&Z28TuhsIH$$89*f}EgcsLE(pU7-kH_B0!C(-L_XGV5ln$?#*2~&Y> zSw!SNhjWO^HZG@pXPpRbXtns*WJ8n0P4GSx(#e>42J})1U84pamU+A2ybvs9P#%_P z5-QJt*WrFb!ClCMBU4;h0(c`hl;M5cl)PuFlEP)5x6Xt8)&p{{#ByeXg+XzmLCTcK zqCHF{$^PUJL`Tdp(k%et=> zU~0Pu>@n0NceZp4m&&wvecODy(;iqi=PcOD{G^oK)-C4;)yX+@eg@}1^pimA)% zHAS(7kG0_i1dyVD6Z`Me`X}~5`k$v2fLbcLSlR123)|XS+x~B$4*$PT@H$`S`cO+u z57b%KtxQ)ADrrMt=mbP8Gn0|F++s=lHi7D;dGRhiLxn(QNydwLISM zr9Be=b>pf1$Bp-@LsvE@PXQBi@aE;L&85+J-O*Z02n z%|dxFWNR(g<)IU!s?_I*lR5l}Z*Xo1ugrO$WT$IOZ=TbPZRy8$vCHh_ zI|s&R#WM6Q6{@&`!4o0&n_Qah+BG^B9QSh3r>kS7^7>6Ja~(^DBy*e>j%0}&Ra|Ll zDPB;0$75Utm@Du7*qr9}2$XbKPLlm}Qj*ZL?CmN#M zPOiYmw;euisqU~d6i-0A7==JGc`et^m|Hh56W%`R|Gopys6`HUbY?;7#A$4q!)bT# z_7JNBwj36leg^H)SM$8tI{eYb_)Eux8c`;A21_!HUkOG?8w59t2|IHjoZ!y$G^!*? zH$JPJ@%N(?DZDz!7HMNe)WHse?Wn<=1-$dreGN){*l}PQLk0y-2 zzmUz}NEG*L40!J!Das(lhcAS^B)7)%oMDT9#cj*YCbnrrf&pdZp1gSnS@n!cxtPDT zol!c#$Ei{x;^pQ?I18o>x+p0`$^K0Yl_h-UQ+70%j9qR~G}>#t)@}*)+vlIhqDJh^{_9fg{p0!k4T5=XBG=cmGx~j8xhxsn8Cw+fv&jkyI%-K{ zkIYdIE8{2v{d&@yf>^^$qQPp}YF}8$oRvwl^EHHbHyhYX<>LQ|Ru z?4t+a__=z>32|9bKM=nfu)S$6M^RBnL49*z#u!vUn85yagi<(pxxGVRb#eZr6X@IG zEh-A;vBSNR!LHU=iqX4;8Sm?BGlV)8IBhQ46czOm)ep?+FcSMf;34@$77-ye3)$x( zr+u{7Eu^OE7>xadnwmva*PM1*?=G3BV9xTm{*~6 zS*Dyz!sDq!*?dYqd;&G{iSWm~deJO7lB^%k0_4HHSFq&dQR`&)*T?v|Cdp27hq!~f zs#BF&(8jU-6P^T{`!D&l{ktzeK5W=D@ak_6m-$}5L(isgfP27&$L3u_TFpGW^R=?X zb!>*{_Z3c3ijLQ3Uqf)LAK%X5ZCJ(+OWHwHYmS|-!gfbi!H#_k+!Amo;6#vW8W|Hm z_*nq?N-4^2en5i%@JC7=Rj?W}?)(gvo!)In<(qu9B;45qai*NS-VJg`7p#p zeLO%=8;JdSd-3f%>MHtx?bG?UaV0(QOzGH=rKRTm$d%`G-*=eRk980w1>AECVURat z`uk1lPL+rxZbsR@te+z@rYBwcFTf?Vu=9*;S#f``#m0oX>(bN+^W!IC!W@wzCU>Fr zGi>%starZXH& z{n~)76Eo8B>?8RGf#nLOIsb|8tSz@QA#j#eF#NT9RpQmA9Rt?Z+8Z5*M9Q{<+!5v*yhxQc}uZ5Tf!q4+d zA)fC&R2$J&i!hD-)^6c@S&!7&4Y~fpW7p3e53~IIjIi*av>$Rbz)z)BEr!@yPP*Ri zbK(-0+;EpnnX)L=C}6Qk>~LG`u_}N2oC@-(lW?iVdk3PD9Jhq5 z@RSv4KXFl8k=5KeV?JA@72-62b7*Haf!*DL=pfc-bPSEC5gMWLV{e<%qZIm#?c!2p zG{-60(|T|{eHYW(ta+u1qN?gg${-MfF^FYOd4K&`scuBj1F)|Qn*kA^dinC<#oS|D zE(=+inv8Cw-ch5vDm!1`0#8MHp^G%bX!!>*_YKU4Le|Q+h#=!JdnSST(bm_EDK&Ly z@((aSU@Ob=)1J$f^sUbtb3o?che`1^E(v;+8M62kAi$1Q zr%IvMA!o?Hd_-2}{LN(kRvj&=rmdIsAXX~87bPrsn5r1704rBZZq5jc*gCL$KknVL zxkJS+WFO=gE%`5-OFEmCdUQ$QGa9o5M(I}=+-#^N-}(>d*jLL+O~*><3X4?p6NV|} zqlA+^wJd)*Wg>bFZNDfY_J(+|Y&u@9)jH>arP zcTrH=&T_yxUX+Sz=EQKedkR{Xe%s~XT5)3N-Z%CgkGajdDUgMvJk4ckFwGV`Iq1Gf zmDRb?G`zq@*XEcszTtMpo^FQ~u2%4FiKS3ou1NTV+Y~koq}_2+-Bp+Ua;ds5v2m?{k%rCGPX~1x}ST2GcP2X zhdRxf=mP_r?M^*(NA(3CMhy3se?b`yrKTe-mU9ax#la%=6_9gm$^ z8RE}TC%2y_evb;0;aq-sMCY^6z}2sx=q0|W1yR%lH}-w1#x|0*ys|{irX&)B>2dn4 zm#R{#r&N~i5`QdvRI)=@6RxbW&Kno>A6-5lndVa#&$=daBU!9l>UJetreGJJlbn%Zj^G zO&U~_C30Jwl{3m{039eVlEyF#LY!^xI}a8DLritx3k^XXlY#VrWut+WfMtV$L)gZ- zs0WzFwJ1QkKM}=-aUmkOYB-Pzd+#o|sz0C!dk-YoHW5{idEqG7HV{R}x{VXiG9BfF zd0`3TG7#m2bzup6?-=0jCfMdnur?WWi*b<-b3e8nETHJOXUoi-qzbt}KLD=wJG^S8QR#gO%Ehyow@HPmC_+4hpY2tIs`*-^iLgfP6 zZ-eB7j1j94KOyJ^jSwgZmZXUG2ydeh79gG@6cKF_A$`GQMd0ui3lf|0=>Zdu8U-Q@ z4WcHP652Kw!VMbmMR1`fgy-LWCxja^(2dZD79B`*0U?ANJdlIn!b}*+zg-o?4VV6~ zh3EoAC@b{D4Y|OLxxft?T|jujER+#3z=YsJN;odCy%59=9=%6+!7Y>#IRK5|LO@6- zu-zNf0ur4_c)=*76EQ%A;6g%JA+S9g)B=`m7TtmtJx6fiDpW4G?JBhTc>oL11(}cy z|H2r+HZ!1!=z>LPExL_k>a`kdvFbk%9@K&reT#pgBV;9z(;nHfhL6X`iYK%!803x- z9T^q*Zrfmc3+x`GaREP*IFoUp0P!A%FjJVv3od#*=ic4heG>nJ0P6>lZK@!5)aZ)n z3ao7`)3G(;HO7JZNp*MdorY7w)Kh{B4$YYSF(q7b|OlhRXpB!2^{4nT7ocZTvo7ATK5BVE;FHn^Ek7 z0svkMcU*m}%p$w%CC_C3^XH z!s8j0wPgMxMm1knZpdYFjonhhu~b4~it>=3)I^6-)(Vj8yOOXhC7Cn@Sx#65Y6O+L zIhxIE)KEvi^a=*Vdw!y!jcmE%r_fdrJ)#doYfqRyF3|!=+>srouu$Z6c}@`ekcuSX zK;aB(S_Y8lV_M7z=cq(Dccm&2ADn?&Gf-cVfmErYKk^ZajA6ReOvCtiH>8Dp71M6m z>B~696Yhy!<*PSg{qEy~EV)uh8I?FiRTOG%jwmYMQPhsz7e0OcaT6k*Nx%pnW~rjY zfVznR#*Ws6N!*!^2jLiF8{|ptcKS@n(uRIF}fp)fq9y8PS_6|RYN32 zKPiKNDD@G>N@##l1)}kDs9)(O5<%i8|EQ7%kpYKg{B2SzMB4`# zb;0N;hh>6o+7m=uJa~xnv#2OhXMmg{H;Lia$T4@foq*0d2|929o$lg^dGK7CCrtFo9-CFqqQK*%D;%ndmKJ zVIj$f34TuO4&uQ{M9b|CQwTPi# z$HczCqh{;se%ljpQ!>-tD{#~j(^#M7fDZ>4h;8lh+ zp(EWqr`PGGLdRQOsxz6ba`f{!{LpdiHsv#vbE#Wi{1>>#%?6AP0gOZ-cGN!GH?j1q zVvdQi?b_nyE$=$^m9>1E0ws0KC@yxZz?fB&&km}jO?!VVPMoVnA8K8`uLoTsKWezJ z3iIH<_53+)p!V%8nJ)lS2>wTS=QjrHU)cS>2Y0o@o2>xiRRJ%tRC7S)3z*0lj0~X4 z#X~-RJ)dW?QoY}ZL=z!(D>6(JDFpKJ;T3l=@cXE7a`LV@c|M%J?4bk3)X~82xZ z2W~#m%iJ?akm;v4R68PcvNSqC!RrHDE}qNXzPnKHd(kZ5D((LwR9P zRJ~ESpjq`N7p&PBdpiwiv4zYq!WodekZcR}1>MI;Y05;V0^XS5@z~1OOtn z{;|421o*|@^B4kp_6DZPHim%tu0MADzd=&SpOjh)e}kk2Ju%y16FzZ0F-pJV$?^>` zuSFh|e>b`MCIII7#9x8bzr?3l@`Frj3yd-TYLh z8lV(l47nIajzvbS^Nt3Hd6BG&oCkH#!g{eWbVd--=gn0MrNo zQUm}s0)QZa4xoOO|EhsSl+TRkx$<~-jMi~#%m4U{CJ=U-eFO>(|Ckh7!fb}>2u`%Q~=ciy~=U`#4X!KX(Y~C-xtACBOI01FInq=uM zOfGv2ECf*BJW>D^67P<^$y$2uJZaGEikL>tqO#+y1(m(ncU^?mTOC0%K74xt#H3Xs zS4n|WkkzB3ljG5)R^+}lGR@1>myuK#rpwjl%TcFg8=^Ny%5jeDvfiu62jUI`Z5nu# z^v%Uw!n?JCp+G#ebIJyu9L$2%k0-J^>QY$c9Y*4;7Nyc>lYv$Y za`I-flB?YHIOWBtz8FU3Np(9abtfxaQ*z9NJv_eo})B5xpqd>?gr7ym+wYnM+_`;xzQHC%T>4<{Wq-;H%4H%61sl{ZN$R*;b z%C~$RU3N#i0k!wcR3AerY45tc!`g?0XVo!^ug~N27h-ycin}SHj>wf@MKui-Q_42N zAiL>tX0PLbp0Yf?^}&R)oO@*DqoUhzQ+!KTxmR%m2LA+Z$4cEKX)1EE3)9Tzy5bCv zo_MAf+;_~k0ZJ}4ZzL_)&g6hdCyGBik`-2^!vFU#M%l9Fy{m*3mRJlq%VWag+3r<$znQleeMvzosEx;Nx%JwnJO4BL}ogH`O5hmy2yjT1`Ss0fUVixEp1N8qW&(TWU&lq1C*?BTT#0lsh{6R!$Z+i$=t6 z&@`L3Ay^&DYiw#3WBNBfOW!FD-UHqOf#;zNE zJ~8_tG0)?~nD&%F2}c?)MJ_QL*}z0Tl})L@T+e=BNKoY639o-}FYbbe&7JPmj8&hW z9R}k;v8<5JQ_9S!dZXvg$f1m|eSr{LMIv%S9&O+y>!}j~)J-3*mVuMjto`!KUTo+) zRjV#G=@7ngVQHm|f_EtNdS1uHTtDK9nR2o<0BBcRADlUTbt7a&6Aw7@>HyCn<3?g1 z(VlTX-dM%0Apus~DwtgW0t@e6%0MLYWB6476Ky*fccBmtgYvy_S?$YtSm`60G3&_DNiXEj4MwLd0f<>UN#IgZvFtH>~q1qm*|kOk!E9&zM-{V-52nY^CVo$M##51w}{O> z`2lAn`Y0Y*-AVi!?l|6KK!!(=8Qx$Wxo-oIHO- zMLoBT|EJ!gyBDRHhJ!MDnsC`Boq8f;k`}rHMWa$@Rc-mB-NNrz_V;4@Z+5`<&!QEA z3)ml<E(5`qzID!={ zqI5(a*x=R*a9MoDnF#hWAb!hNhq$z&@BmcQDsFx&c08)ktZHr@y{MVz_(A(2AI&|c z5_Zs$nC9*jj@ZeEOLCi5s0R6jGP=2Qg~S$7i#l3zT_O0$XPB7rjW5yytQ)Z{d_#fI z38>)r+s_@X_qVq;c#me?H#;3Kr|WGt@6Bd(8rp?!I)RC+@!-S^F+_+j_=rbK@rZLA zyL^M-@ub|7@Oh<>@bZJ;r+Wf(dIAl40^!vI;o%YSjDz6&gW)Uic}I}&jOR84U1mVG ziDSs>Z|Sk4#omS>QFIa$C?X}3dbS}&AlZgFU$Yay#}6oPd+>xsVG7{N1WDZRN{S_i z6(e-%$`D>|JJ2CyN4v;$5D{m`CZh-U;lGQGA`vJj{YE2TA%Lyl3Pna@3ne3Ih*=&z zK(rx`jk^_qtW>d7OEQKfJyBBE$>ACbr#uhN!=hgNSBjPvah@cE?_2gIsk68GPg~i*!K| zeB>*Oe1RE!6gZA_!4d3^Yel*ZjdV}w9vnp{X^7e;FrZ3ei`FJGFh_C$dq+yJ7Bf)4 z!R6BX{cYBOH;6t6t;7Ez#jJp0Ib+Spg>9?SK5UypF(E$w&GpRmWf*=kVl?|#-+EEL%xpha1H@|qLQ;R^4u;DA*J#o>28jM&O1T|MRs9_O z%KNRj{inhHtq1>K)xQ2W7VG_2s`aXg_n(Z;f11qb|C-5M^c7?%|6el8J^RU?t^;;h z{%=P6^911le(`s1`q~koWb0sM@N>B9*HQ9_;F0a72MAq$OkuCh%Cpzi*QKIPPU54k z6gqgr3`DWSF9ksvVbdLWCrvFS2J`sF6J-;d(l1H_-gA81&go)r?g9L>HVmqUUpSWM zy0ar&cx1!w%xbD+`S1{VEoAox4i3!B8kRf?h)z$lp&y?SB4Vf|V~&{w9x8_%z;RUw z@4h3nM0cmY$JsI-kCR3$n5%Q$4lP=>2 zDnjpY7l53<$=08Np}MFusgU3k$54>Lfzm$TCfDCcR)!g3i(d~b2an0_%QKV7?$g#a zYzG`Gwjst4oBKfPciywH?J^r(CZ)|X?*#9;O%3{O$GjNVNT|8nCy~Icc_b$f0H0lA zmM5cJ$_NhTU?|@a6{>l;Q6XV~2A36@&Fm#<2C1(Hf}=1ZngofVym6)0^t>ayv@K!Q zD7O-<3q3-=Dvahyy-qmqErX4G=l$_{^S4WCjUGA|Gn?UC}!Apnh!zP z4aqm`Q^q`B7ZW7p%@CDJDS4`YNf@v^zVgwcglIB7Zg8@Ehxq^5Zz}! z*k4H3Fp$pCNjwox%XF9*3=3jew~NMc4(0&QZ{D~hoOPS(AXgF`r;d;a;$WsItbRCz zY0eB4z@zccEwjH!L1xZ_g_O2e2Q#lEU<$BjrV>JB$?QNpI7+O_w|iUWGT>cX)TK`D zHSw|_%1+Qr(P*dCIy`|{v^Dn_vfIZXQ#7MzFRn=K5PR(=7+u?|aGf1?kZ+sPPZ{2e zd_SXvq#8RkSWpvp{mqA#r)3#($uGEZS(C z@tQ*y+|DhMiyk6bo{N#x%Vi=row+tqxR!GCjJ=7a%>g1ho+gYZQT!7x6GQffp-xJB~e_HAEo#%Z*u8 z1J4c5&c340f@uUqvdsDr5Cj!#^#G#naon0Yb<@3oblOK8SMw?Jh!FZJR%IdhNa6%VfIwB{&r593>i}w-w~I3ro>geXelF z%hn4$$F<8C3DdoZEtA2xjjI_!l1Z-=<|t-)k`z8SRfAol?lm06VdIt^#0&+vLk-2S zI=66y@3sfUG#qn|9UE!7KtMkX4BG1$67;3@mttM_;s+q%!5zoKB`P?>QRHH+h=w#^ z2E0Sfpq^fPzi>G+S!H85ydTUUIP1J7!%AeYkQR!;niEXOFPZ)Y!EC_0$Vraj01Dc$ zBMfukx*(Z%>@h&n-NBi-sk*W9`;&Y-U5hby8Of1O|22(Sql{gZv?6FXQLiVZ1SQr} z=Uw}%c`R+qCwQ>sE$ziCG;OUWTtP+oW?ZUjGK#qkv5-}tBu10K<;(qaw|tM(ZsK%& z^An{>^lR{}2x?wDr(SxooxLhSYxQh7Kg_(LCa5`Vm*XM?F4Fn4d6Mn8AHHwrL&|VBcgU2le?7e^Na# z>6Kw@^iGl4*vU(G-wgv{eFsB^>=PuFVvB(47h|T{5JkmW2_k6v2Ueqx@{^$Im<3;} znbhV6DP5I%MPTx_Ocf)|*-NfJ$qWy%N0wm>_spZ~qw7=0PiW74$Ds9h%b#M<>YT-p zB%5ay{*dzkGg|(U5u@-U)6r%?9W>h~s(s2Qhasz+=o#T7xF>Y87Rfmel;@w0#iq*? z!x#`biTtC$EWy7V%g+rf2w>y{NU|B(iUS@!d+Wc37qp|KWdISB|5_~tB#pPguxu~r zl(I_cJYrLj-}i{tR5$|VZT$WsS5`Fa&w>Pf(V$4shgk2&!`4RTZu`kTb5RSxK-6=6 zRV~`_m9AkkQqo)4wvDrt3i?ccjBK7aY~Q-@Nly?P(b&seg)L<^-&o+R!BYp3oTx`V zN3*2XL*AiZ@E*}`@}rT4BnGLZIHdUwt==SNw?;N!D6GJhmGcJ{Z7RKC);Uey0fU(4 z>;}V!4x_wQ>N49dp_%wqR~kyM5)pqp(Im3rf*0TAVeF}n`Ka)a zpnBi=%bCj&y91Yq&n)RQ9%Dld{g--xW{WEjJ?}uN&)=2N;?{@T1 zkbV{F@EEgdk~Uowm;xh@LNjeH^0VDU@e=|L6hq`eL4}k#>4Vi&VZCq#ek6mt^6T-& z>xdKxONSN5Kk9t7qg805XZtp;YeKRS%j+25-+zlg3J|oA%P|4_FWR=Bi zsq_%p;9)^gcAi)3W+`QeBP!{gfLQWvpLQJdKs=mbXEi!Qw!&-6Z5s6RfG+o((8n&J zHY(IAB$mfB;K=6cjK*kkW08qeCJof`%9vQC2a(VJ8kLJ2=I645qB%{ttm}H(u!{(5 z%!yr0CRR|TxuMlsAflLEer&@=9al+!6?gV^s=EzKRcPgunpkHZg2W?E(wJ0+6BzYe z$Ubzl>={2nKYtD1P-PgeLFSBNlyBlAq6h2lCw(?<@x(>XCF>WO?zJ2oH~S%bD}oNn z1t`llKgyJ|;~2;yMB8*~B2C^O0oPPgZTNKa48GEdb2@gSDWOI$7ZnSm&E8KOv?+A`4;VtzdX;GK^eK|Nrh8)`h zhcyY;Jl|Tke|D1V;38kgK|6zc8U9F=Tay;}Gyaz0t{piCI1TZC^xy!H;8zy&^Bf9U z1LU0noM%6Mx16<|*(=%1F9%{7(F_G(NfACx>S1AML#RcptqfvSQ3;V2LZB`^Lazpl zwD=n$dJRido&i6Se?sj9mtjaucH8~bnojqo&y@a^O?2%t8WEf+<)e{)MzBAMS@pL@ zW(6v+#0gKq52RV_@e(PRoxxyOK3IoBAU5lPX9x(KlLrPWCR|oO#!+K;eBl!%f~jR( zGD6d`1Wcd$G0pvcREVBs(7IOQtt0yRv})B3SS`4Id}Ec;2{V?g)> z_#mbBF)N9Pv7-V(LLz`FiP}nFW8%#x2DKoADv42C06eLFI1&BZx`x(fYe(a?)dHqB z4{A=j2z7z_)IcA%@p z9#Ovp;$Os5^Am+MkA;_9fzgXn%e9n2XrSKm^V@9DvIt5ABU|K81=?m&b^61v3kJtB zM5{>|GrXi-j;7f?-#@y(ys-(=hK1rcF@L`xD1+|qd?LTr2qh5d_I6s1xKQ%@(g==@ zO#W2_a$E%W?zw?awi&FIUl?$piaeiiU*$QPfF_Eo6^fWFIUxlWH|JHY&%B}^HrCgM6Tmz(L1y}5E!gdNu|Xm7 zMIwX;!a68{R)$hSe@R z9ft)?VA)FwL$-UIq==bu4%%W-$WUfTdYTp1{D}P=s++PYyyiUr4%TZzj(iYAZ2(v) zs^2ocKSO%l-!24zGMnB144VCd2!nq@Kru5RNKc=8vN!(#%k(NOUTf;ST0YUx-5?*Fh7EaUE;RwIdkxQZoQZV9JHkj zvCS8VPL#LM%`BLk0d~G_C1Rej!lgiH&u_fq*qwUdg|NUA*qE$WHCGRpE}=gITY#TI za4|Vl==a0Z@@6h!#qWbIy+IWyF=RB#KR+|?GY~DrG0RzD=sdllg^0K3-2ij6=R7t<4&*xbx*^kzl>6tUXWH_Pw;zcHB}(NQMsK1J@t^DqKNBSY@1qqYEQTbSaVrf&^Acg)5U1;@Cp?`xKH zs(7~))A6*>&?0ylw@uO*+2-Q>a9}xg=uz_RsCYiIQ?IHYotB!x6;B?sC$QOC0?7C4 zB<);J<;zu^u$NFrkFvt%V5-z1nKd&MR`W9HCRaibXw~i`R=g~6)o8V(gO^n0!r)y6azFx@b=>cJfWFSk{%eT8q3H!hX|OGicenx%h>ZGClHd|TI+rgw-m_c>^)Jp^r#Y^4>h*pG1aO&++s85YJR z^fsOTgo;Q-7ZC<*qaQ4FUOw7)(wCc0NX_nv%rF&a`Du4Qxx7`hW-{RbSwjE+hs#LX z$kxQ@Z%_PdXNAlB1PXbkf&4EJP~v*<$gOO)pbYdOLP_6=OKCM=?dMWZC@PkNybS)7 z@qFtUcV1V-jS^gw^uWHiY{$#Hw)!^hi)AN*Y2=QSqxfi%Tao^U>m2$x6rn`{nJ*dH zSu>uu2Uevb#B%Jg_IxHlG<*8NI*Qn)?Q@NYmEf1rO|mjlG;!as0~j-kL8+q-MKh}P zvK9DomETT_)7^yx#EA8dm~p1B@diH}_j#yG`{d1MlxtPz?a>4fx?SafOBWSU$!+>e zn%j=03igjim{ciF@+m&fcQdH@Y{xeY=ez+%ljX<=scigcV`4Lk*P8tpqX23?zwzGt zqZX*DAU9p*4=CeOy>ObQKD3pS0Nq)?=r3zoH_w9R+1E_o_i=g;>~}^ErpPap92Q2AfUnYEe0U#QM6qnE{u%PjFB^qCwdF_Y#_0PV;^gVM4lrm=&1 zD^cfWLl6>t!Y`1XCl1B7uAGBdg)G`p3I>Ls2rN$e8s5x42&;Khe#>_0(aiMxaJrBA z=0>*w2F!csqpRd$%*x=8Nxm~$F0_rPA;!4X%4z3$J-s0arG3-wwfe$1Y8VJ=j#1*N z0{(VST0z_^tP@c0sptlM5K4vZtk4K9TuEKyOmHpSd0m08P^=?}^f)9{n*b&)LkBK> z#uZyXTo2Mz_W_bI$%v(!s4a!24Kd5fS)(z|xl*e5Pjp-g(;S#J_lUQy)E3Myi5p2w zFU2H;w2ct&wnPURluAH4zQL3DD@r`%~&D_SHs ztk>$9JZzf17VZdH84A787IE05e^R+?;?rM{=xQa7`pfx!FARW+aD7e!dlFrlAz; z6G&!3wXoV$lCtiw;sUzbWKvO;a?6~pF>xTXc{^hrZ#?21)LQtf+n4*N zA7GV%#|X>;+c;jEpcENKSr*9&r5cu)0-yEzfLWbJ1deZHW{Nl`Ki(Dx9CP}tE&33+ zYc;hnnD3F9z?60&FliOgG!oG@tRQlx1GBIQtu*a9iZg;7TJ>kKPXgL&U>3jfFSPBb zU3}&r-=V_*3Rprw{4OTK5RS=W1ihNg`+SC<2IjC0GmF9MPu+|o3l*M#DWFu;6tTY} zN*r_{I85z?N^fX;Uwlh;tHlZptdP62S=DVB6E~(TN<+R|fkB$uvZ6HAvV$s%#?cvd zK!cO<#dAMnC?T)s@$|b&=sby?y(>RRlrTi>5OuYbpkG@)x$2GZ6NX@#z8|iOfQwHX z5(;MT`WTt<`-y9=*?tDPf;mC65m*At&qzt4eWIU$%q2qG@2Nxm<?eA_t}_Rp2w2_Ce?062zXf~>0)Jny zO0Naezv#srBK``|VM4vgjQ1V+6sow`0u@NP zQluLz_I(D@rdkjbS5Y4%#-D?Lyq;br}#IS=r}#NKzuu340FUk10ZHoh?-@d(^)vHgnAfd@{|4(KEk z>y$dVcKZ#nvrx!FwA$$8=a>rH7%!+iRLVoIcahEOS*aqAQhj}I-iR*JUJ|ozF&H>Q zywlTt-!{iq!^Cy^u(yTWK_Wx54UwL#7L<_yVE8ZjnJRzP(jZ4T zLQM!_K3I`5wk@WKgD5+mQH75rM2;0g8k(MsY*F@OBAcgMa;ks`7dwy}ttocaf7a4RUvY55#) zl@qQ#A4tT!(xwBli(SG$!{liHIL6nb5&Q)d=LUMOG<{ET+X3Ar-J%QUp`$^ivBHj| zoWpgaLfr*6FkdgXYJ<6PH%#Cb=cXiUfhd7Kna=>bI5CWoa<2S%&uPV(Pb zvt)TGd|-OIdIG)ivk~g)sd6L|gYhIYLGS>DXmSS2uYD9L!T!wq_fO*_JcF0RTgacK zOH;%ULlTbyIDFQiOjLt9xK5!~ONaf}81)cDh*pg~hdH?0w_*7)=5O3(j}Rzt#E-dd z4?v;S1kXC+eS=GMOYDW{i&dpF1mCGcV{Sv3aWTs-evL%=v?nDayqbP5 zl*ly|Vcpm^?rWavz}aG;AH9B+Jl4agr#&pbI^m}edhw0OotlFYBWf*Q3w1jUie?8K zW>pj@hW&-9F87mIxgv&);eJJRbY@N%<@{X;G}PGDCPP^JMr8y&o5vSOP$MPg;G*1% zeIfnA7|fA27x>|10g4rp(!xq5_*BKD^Wf28Cz&y5wV3dMwx7^BB$gFX9$>j4{*h|s z@7A54?pVOg(ClAH*63@A$A6sIY~``edrAQ+&MVD=5UtcF3W?1>8YWsH7F1m*)=(@T zs;;tM*@XXq(KXt1?CGR2qw)6n{^5}Ab7CRZ0D_XtJjF*bPf{#P z21GDh5KVcDv1PLyF3t@D@k%!_H=Nz8L*HZK&}T9td4s2T8-I7{N`uA3Ii7?zn*wQ#L*#90>n`X4 z{SrTJ0Nskn9s#Xl!Ipxyz-+sRG8m7m+{Rvzr)jS ziwP^KSy5hE-sS8J))hyWu6OmYf)42ZtOAr$!jx+)+Jr<0(?1;XzbO00@H(_D+Qzoc z#y*Jn|trC->iZLiB!xhv(t~>=1yj_+8iYzbmBMr09c7P?9b74`zz^iesOSckEr{YO`5 zyh=846{?qS`D%ildyD60>70NcXq%HqS&&G9ui&s@a>Y!S-FvBMJ+~x|tcK1Z)w7_@ z$8#`5JDA2_He9ZCm-w+yoD1rn6F3=b%ibq;MmZHpA-4TMvEEDQV;X2g$T?V+r?qwB&djg{ZBjaT4+E&BXoePzFoAD`R_AJ+{gK)O(@eH3h0jI$PumB+Q4 zmmqG#G76cnAw}w;$va_4-}Rzj!2o`QsUs~4woXbl$t|9Td-<@DS)*#sWY<3gs+2LU z2zgN3V0sLa1&#bcX8s%^Mj~7x?jzN(WsdR?8Vu46^1ijj!6!|+zN&cV=h+acevnkw$NE8@?K=hPU zKSP@HAw@B>0`SUt7Ao>pC?&!v@FyZX>_s5}cIqVUN@fVn8W$iqhtP3$UGbaU zX4QW?=jZnW>SnV3DS+WWj>KEc*&`=v8>s4@ZJ8OO`8gjV0d#O`r%H!k-!u~GNOy+| zqZ*Pl=>*^3xTmDfS3+Qmu<%o6cbbxO5%$7@wq}~P`c=%XW6&3h6~R_beg>AY1s4L( zaQ=Ic4sH%Zw0MMI?Pdgo^lu0qBk5|iSm+q*(^s150RoCEEz90jk1=QCXG>bB3U5yErP29mH;{83<8His@m;B>o=n zAFFi>))PiBl3vr3Sc>gzF4B@^T!-bMqNsK<49gnOTwV6sWr~0@(G0GND2=>UeTg#Z zbGEAI*n)hyo5N2=o0oCE*FO}fWGcec?q zZP`bw9+dtLxt1A6$!&v)K7D1W#%E1T$$T& z6r0vJE5&kNL-_|7ZnGZ>)FwQ-5RXvA!l7}s#`%e(@)h&2b4oo;aSNkE7J0mIoe27D zC!N zbbf+A4m63yk^BA$!H@Bx9U^zO1zB4;lK<0f`}gf_UxG8}T_6HEPzP*qgWtX-T8SlMyHh zvO~jFqbAIZb(*awT2Uu$+H4S4*>(Nuv9#TA=_h3C33+RbNN67YG&E8sZhI?dgTrSd zCem?FfaNlc6Rr2%`#b~8b4x=V zg}!$G${#NWCGo29XjZ=eJm;^!+UNK4dj|iQdeH&UM_oI7!l^E}i}{&?8^hx;u9!u^ zyQdMv6F3UjMFg9oE2;Mt2R!D(<1nFLVVfZut_GzbPzt8X2D8zTLzkXiUW#uQ60}~S zcdj>9!S%6OSs$-KQfT_92t#G0!3Ph2Mk)wkgjf^3ujD;0Fs;QJ>>JBac^e|D^6@Df zT1wKbH~EEK8Zi}!ThU&;dAt5O5<4!LRB;r^TO}r%49gj~SAuwOEeCk04@tH$Qq1Q4 zk(Zr5bX*)RCh#7Sd*!@hGmTLrP6quhgqR(=+Owu5QexQj{m^A(;y=F6X}7pikx~{g z@g}9_bI+yRneXY0H>uV)nxGwrEvSKW+u9gxjW9^CuDiT)(+9_V_KqJXqhbi$2SNbf zG0)`WFH%I*8{)avk+m8&a|bRAx}ciFd4{^CnY9g66SLacCZ~C22tceJw4WSoHe9ZC zut3rc{0Uh-gU4m2?2L0JV$KUqJyb=~WB{C7_k_C^Bo(!Ppn-Nan8rMG*7H1m)r4Mi zs_9dKif>#HdOQc2lW|nUGACb%^Bx|6TWk3uT{}-=aUy! zndh~*s=^|L>kK}5<{nxt)64ddt?HvgYRjT z!F8~UwMe6EwP>SF!s%OglS#5hs|RPenO@9lQCLl}fi+2w98WkqZ(yL5nYLdP;D!zV z*l_thOuu!1f2V=?#4!FMwFl=WvQXwxf@v|6-7E#zNOYMztUN$91=*l zIs~R_)Z3dM10g0)2U@+PRDEkAYzETvj#TMx#8L0z*St6+15<9Vvc=MLY3)y?j-hE9q%hDYUFXlw*?^y zHxZpws)FNtde$P&8iaf|t7 z)-GlIb&}6E-IK2XOV|LM=Klr*Nq@7I-x3~W4;w=}>%WoJV3iNbD2%9lYuq-1ahV#T zf&=LEKY=#|OtbRgnZeS(MIqdwE^71^uCz&F9ozj7%+0#&A=r*}px)RC{z}aQ+CYeq8WMNma|1%He-Y5sclNM-))T87jCY` zkBhIYZbG!%ea)%0oAYTeZjNRTHw_B%Kow`+EU4Zt!-24V1XTG0Jn2|+EPSEmrddWP zX%vP5><{?yl<)pE1(?-~ys7qWc_5!NRlaZ%MSZss(mp;K{k-E20gd^Eq>#9GAZu)2 zYQq-sy;T9S9u2i&G03skTE&RUc3H@$6AhQB@cJvjcbE~`I7DJr1{uY)hxA@ZAfKFN>X zB!Y0u%kyq1;3nD?{BkyEbUkBiU(Q<>ih?D3-Fn6}6A!nDx)VN_qCC9F)hQpm2Iu9U zhC7HJi0rZ5$*{zXwVr^Fzrur%Ngo?AD<-{)&W9rUbY@Q=Jv(^( zcy-ed-Jt+-YX+L-`qK&bMEcILb{qD2l}H=Dfi#~Q!kscEjAyo*xn-Wa29(1ew2&y0 zAO=l)$7|pfxC$^eZZA{)67W@inqOAF|44+N7d%y;DW4pecH8YpoPqAsc3p60jDuX1 za5V$>@cSe#$rn{Ti9Q@fzz7wF>K-JtG>OZ8BnU)y(i zsi$ownC9dNtWVuK&$Vw{Q@UPWcIDqK`}gsTBWZXUeW@?w^Ep?~Op*T(xYN3SC`fG2 zX*#F|ocfR=yn$jB=Bp(T>%CUWMz)CUpTNzNAbpdilO`|I@}&v_TUq8!gy{D= ztZlVM7J3$GV$4BfZDkfzX2Ndh`@#7~*b=xFj*7~3penM4EX`#kBVE2Ue-;mu zHKY#CZ>4cn(cxr@HfK{RFSodxk=dp6&#GcssFEXW@3Ly*2K^yhqJdPZqM`?%tC~ zLTQAc$?iV+#T~zh^cjJF5%aOziBlOkds(cLZYuR^LuSm^x(evlDHB%3N;du5E;5z+ zhH=EtI@ubt1J=W39Q!(?ucDL0rV@wcUG>&OT&_pU3nccURUI9e$UeNs?D;XSvN?;h zR1mwkwP$78>6?!!3|aA(eoH2buSNzdjzvFlN_D14L0X(Ys^S@qlyD~na(8Vvc_cvKI$VZtpJJ6#{f?}J8qUhXl*T5mxiSC1&i znx6TeuD%oyuJ`a5e^L%OoF0^`Xrsep!yUV#&~3qJ!JcdKWN?T(# zJR1*d1<{+jcogHfwF_p1xxn+L--evu?g{z;d4p=xC0i1DA;G}wU9}An{{b%taszuB zwUu%jxs5kiCq5IJ|A%e59@#qcbWj#Nc-JJ7S#QoK)bPeisAis>Iyc|Y=b9|K7c-2# zcdxzyz5KthCB^oUHhJ1h?aGrJ_Lvd|XXPgW^2gN(K3d~ff8mL=3% zE~ZXdqfG{m79x%jDWQ`lZEPcE{IsANo}^ZfY*A?|0c)9@8mBcO32WiX znSQ1%zSJfEoZWLY_JEl0=d|g;r!0mg5=jE}85|^}xSFQ&V4tDqXk@hv#W^cOj+?%K zh)R!R$nCA2-!9k+;1x#q>HMU$U-M-T$Cl-ea99(a2ofxskuGlgMD2Z^sS5~)w*Lp$T;Nz%N1e0F}@+bDZarZLoAb7 z`cT?XI(eGYcp}nJ=?iDwkrA0yB*#tZsV8Ik^w`RVa^B*ahtMjQ$IiAV%!gII zg;`7S=o;Mh0Urm+I;EU|{k0(1A_t z1bmMIV(^rCx%o4B2QXV>Eis$nj7XdW%?TY{se+^vTCBepJRz4mAv)7nTzZw`&7I56OmP)P)sWIl*4^4e`$;& z1hse2patP%v_3JC2{Pp*COZsUm&MDzUZ)~Ai4!pKOvIpFg`W}68!~5M8ihLuNJGj0 zn5d%vmZ<(GB+B611RWn>8JzOx5apqLL89!`dBho4fnov@m4Y8cif zB~OO`1oT3&+n^#^5_;;q<@IRlYW7C1!qs0B3Q#zT5LaY%)Gs^C@kJaII>vDcS}WCM zYo9fBj;O)RA1&9Ft_&*35t)leFNPY>^Vzu6#zG7#72c_C+BA>E*O8te_kHv#SuqD^7dM-*0-n0< z^7vK=W=&#a`+d}BsK(bw*u*T%8_Sz$Ygt^=!}Of#PF#Ev+*EQqc0(65bEEIkKVo<_ z_YkSabKtC3V4}QX-V0gKOd!ZgtO=gCOzmrY*6wpDs^adweeY$1oH7(@#_nz53TxmqpTR}sG!mlyCN+ly791DIdV7z_P?G5~OcY=11=e(%2j-y?X@ zv9bUPD{M&awb4*zxtid)5ZKyS4i9Aj4Jz~|=y?J6e6kC=X~A7H51Qu%#9cwZ1tl6! zI-<}I(vA+jtuguS0AXQq4v!`~Huc-8`vxd_HSxL8g`zz2y{;26RuzQm&uER{uBjtn@~1;cc#NXtX5YJAPb9IVOW~P(_kbq)^j_ z)M?3F&69;HB}19* zkopg?Z>mMs1^ZMU=9G_W!a;F2ipm;z&kYNS7*fJfaaZ+KOft_R+UQS?Le^U~ur2}| zRP4YaYmHSk1HlQd*{KRX?F{`?(U*M5r({G*-rXf*n~lUQ6K)NXpz|3EYy7x1sjwga zVUc`pkT_PbEX0`N{svl<&up`#0B(2nk8hvoHxKsjMCA86JMmYy>sNPNcHVt-V%L}%1?j;5N=X#4E7AJLFu038Ns2eSmkwTUzurgW!C zH#1xB=f|ljy>~f=Q$pbe-_vp()gz{6eMXAh@dk|Oyv%k5QAyELFps$qFYNa^@o*#a z8fwP%trlX}bHaS^@AU2n5z*B!v9G+z!-Vo+L-r4SkH#=yO+G)z7?h&mg{vmj*2Vyu zm~`Aa6WJ2{_U$uq5MR^bxqKQ~#Dvar9r+a&$XxS3-Gp9Y_F)$x^osnjmk_t(KD8B0 zOxpV3eCLN5Iq8meHBRe1$BXs2Bk?{#GyfY6WJyz*%APE$RIJc~@k_gy=Tzj^*0?>; zg|A*jeE65ljncF24^eWGBb<`iwfuaz@>R^dB-9G|^70qC(}i*vO=Z(Ej&qu*Dzs}V zDz5{f+EPfNc(FsE%k`m2wASP>bM+P@7}c-~{rlyzgDGW|?mU8%DKnU zb4)ZpE(5(+6aqv4!bH0|Q!{&ueM&bwYF>Hr(*5985?g0Q*`CxWZLG(zraIqPagsqN z3;9^Qgie>IxV=IdTf}n=D_hVUPOWSwtQXs$Nm2=XQiiog)m@cd`yFfQvn!5U)UwVxv%&2SW-Xhm>@o-si(%{q$9Zy>9505vk}l=`4*f63n)6+U?iU65 z;g6W-KiU{?9n`;QHUDE=(I@^bUWS-a79}Hyf{9#4ez+9kaqo4Hb2m5qD!ALTrnRUv zYwgmG=$ixqSfB9A&qmdQ0o^Z?&5cYlpL27c-cB82yvq{Y2tf7sjDuFJFDltQxa z+9(R}On|}&9F@?BBU6xB6&ig$m@ta4jxOzkGmY zJG>n1@A#NEK0-i61|6IPqPXmiS5FJK7BUMf{cL0sU6pUZjja~Ek!&sBXNlc}0731> zF@F@Z?Vc0g9Mto6eHyU-{FVUU;Pgk|@cVEAV6&x(t+9clkc)-2@xP`!RAVMA0h*}* z&tUnq^byC6Zb4S93bkhtG9R%--vO=a0GW6P{A=TN?W*b|5l{r>9p>$0Oq&AOiNHoruOB(qM1+U8vS^Eq0DNrpG zE!#3WEs8G~BdQtW;Cc0%_dSjdkWZ@iTjVOHwGltF^x?(5ghphAHABN)QCwIcRkP2W z(aXc8ablYM+z7s*f(&kc1Am|>=$#zZN%lF-W!Fd_kxV4dOx76Nm2covcnY;uY>r(0 zblcJQc2r5GI|7>kCrR|jK>2$LpS{#SGM(mWHA@yp)kM*G&rGl0N%1=G#h#s=Fv zBSRBhy)X6HEM%2l;y*hQ2^Tp%vZ7s5>UYJFD4#Kn5*e(r+fK9S$fIFVI!mDzWOVyb zeXmO%pP_4#7%l^BCsOlpsezm|vExgTkfe}0m7eA_ySA<{47LekK#ppmF`ik)z84S! z10=Nc^JN6Qmy1<<)kL9pUq3-GMuaD6p@}< zwCfDT4Brqd)A&-tX8Bn+30O92GHp&tG5 zV5xtLPyb{f#{a{OWdBM>6cBlp2^gDZ_`KUy%^l*StF%B%p$8)Ld!B8+%qOLdPKaDD zY2N{+891PbQjCqXVckpth4N7LUtJT98U-TUsrhn8&8}Ln9_tQ={)gJv!l;ZIHV~u% zCnJM&1$iMKG?|U|OBwm)UaFmo)K76@C337=;yq!>2E9t{%!FA@p?*}JNd_AnmFdNz zC--L(PG1|uH(3;Lv1D5&!LH?`mN?}l=88i%>&a!g4NZ`U@@CFx=37@NuGeQE}Jaj?}<7q9Ew7j?2 zt7g`jl#7ux7NuKBnQN#4C#}xz{2rhNR{4pnDe=qI*87j*gr^GH2P>lc7?-4VUX$GfjlV=&NaIvSVXaLo^x_e zId$e-uiet?0d)vX2>9#gMugWScPO|jmoA^@Qgd2Ii_(Bg4bo*QD0XlTz$QVCwNW7M z4D%i3j`}k($ZO1K^4GO9-H2}MMfegz?aR$s5wNbo8+-=z%&^-coNC-=T~;4smUds-1G^D?er70CEW|<;sj(!XA=+v(D99C*1xulC)avKUq-{-D zsaa*~EjfGGa#+sC%Az_<^+MAWk0KlrOPH3d>_k6sZ|c(|IB==hZ958yYLe@=sl9&T z*JDi>MKRN^MU-abNs>gB*`wjj6=cYc^!KiQqL6{*A+LB%T7@I8xMm=clLQ@u6UJ%= zjwel!Zi4#oO3ItZBwE|!iMDcZrz2go_i9RursSpk$kP5UQZtfETB1wzA?SURNz)pE zOIg2R)jbIA8nLDO;h$al@)t>; zt&h?!PGV_#$-0UsZFj(^_}?nyF+D5re!w%~`{OhD-66`k*ch5P{%3t$siG+l7=y`~ z5R?Fha%=INcH~H6`*MV)1r$Rg8Pfdux0$=5T6DuM0>Yi_H*`n8B4QcZ@SqSEJRY-9se0&X&c58XO52#Af^w z`Ka3ZJe5t#OK&t;sZrvi%C!14>s$iscL6mUY%vGIII8nXv>R&fHT8I2>WE^EbI72g z6Ci&H!Rk5CAfg2bC<$WUlj1uXRS#X&MeNq>0%fiGANW%cV+sv}Z9d*Ia7*VZB?^t5 z<(UyhM_PQ;hKLe5BO#J_2EgS?>V@hqsRIvXZOKTO$q^eXEq-%LddU&&9@%9L9*K^M zo7t~Nk<6kcEawH=IB66B6$va9CL;z}{U@yqbQygK#@6zD%?80}JlQXMATAR6%Y|y} z=<)C?4exR0%Pxp2cQ(k1tQY)FYBSz9Tdyh2YpYg|P)$GtA>`NXT7E~kwC;##a>C38 zTVp6uYd?YAC=!ddR5LqTZLKKz5igaEEW;+hBEM0Dbi^A!fpWuoDYt#QEZntPH;T1! zHL8VHS=tt|Ly~YV@EO&qZ~BzkyC#;b5=Fwuikla!!d|*lA;WdawyuRTVJM0tS}dXKEbB=m{YhrU3=+MEWrTDbG!)rCrrX_o?b9>&Udtny5XDfvQZg zR^E-pp9S1W-LMP{zcQ$ihL-F>_>}p}BMl~;SMpb^p#lqwi`bjV32ME^ewE)$vmM97fZ64qb|YLX^(Vc zXINV6a694536+$0n?lO7Uok=Dkb-0)Zc}-yMmsV3YGb=$27z4HzU>45I8iulj4WVB zihK~aW54ss6lkAPC10w3ZdSN~#Kr^`hVUih^`zJmfrdIn{L) zbX9bfbYplWUCe51C;i=^%R#CkU&L%(7;}!0(bUAAsNZi;t+Ya z!$0_QNo7n#`EN}G5_BV&c;hJPTW{x$`1(|L-L5un@#pHjvxiWJ4uUieaTcOB%8VRk z&bH5X1+!xQ;BNyA#ZFd|r>@&3yx6w_=|Ar+y4GO5IOGg$VBpIT+1vtK$tbk$i|CN=oo+l&T(uYR}#p&$LRAtXOj zdZ3NebyuOmd3R6=3A0MJW>o3WbzBZ{+AAMm7u<~=!_e8x(Mb-bQb?f$=^E$8+i|#) z7J5rW$La6Ay+c|^`Z*qfh~ysfei>y-NX`-e9#rmqE)fP#RYJY-ej~Vder*5CTkHz3ra;D{cGtegOP8 zQPcf5#e&&{aop$a`TV-^J(a_!j)w8;+5G;5@h6_Q^|NnEr@l44S^XW(J~f2@u_vG; z1VM=DFYyAc|D|0}5iH7?AR!^9==-KtISmU?_5VZ%j;Ie@2T(WtNXi{Y4q2G~k)?dm z6+9+dAB@n#mej&j#RB{-JvqyOlB)pxz
we=|(}DJ$NNK-R*^2{7^VSAL>yVeD-F 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 OPJd?&sJ}XY3$Xt6 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

PXf(LYN2t!B0) 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 + requiredJavaVersion="21"> @@ -219,7 +219,7 @@ + url="http://download.eclipse.org/releases/2024-06"/> diff --git a/sandbox_oomph/sandboxproject.setup b/sandbox_oomph/sandboxproject.setup index eafa0e0f..9df8a34f 100644 --- a/sandbox_oomph/sandboxproject.setup +++ b/sandbox_oomph/sandboxproject.setup @@ -62,8 +62,8 @@ label="Git Clone location"/> + version="JavaSE-21" + location="${jre.location-21}"> Define the JRE needed to compile and run the Java projects of ${scope.project.label} The dynamic working sets for ${scope.project.label} - - - - diff --git a/sandbox_test_commons/src/org/sandbox/jdt/ui/tests/quickfix/rules/AbstractEclipseJava.java b/sandbox_test_commons/src/org/sandbox/jdt/ui/tests/quickfix/rules/AbstractEclipseJava.java index 6f20daf7..1c196cac 100644 --- a/sandbox_test_commons/src/org/sandbox/jdt/ui/tests/quickfix/rules/AbstractEclipseJava.java +++ b/sandbox_test_commons/src/org/sandbox/jdt/ui/tests/quickfix/rules/AbstractEclipseJava.java @@ -78,8 +78,9 @@ public class AbstractEclipseJava implements AfterEachCallback, BeforeEachCallbac private final String testresources_stubs; private final String compliance; private static final String TEST_SETUP_PROJECT= "TestSetupProject"; //$NON-NLS-1$ - private IPackageFragmentRoot fSourceFolder; + private IPackageFragmentRoot fSourceFolder; private CustomProfile fProfile; + public IJavaProject javaProject; public AbstractEclipseJava(String stubs, String compilerversion) { this.testresources_stubs= stubs; @@ -88,7 +89,7 @@ public AbstractEclipseJava(String stubs, String compilerversion) { @Override public void beforeEach(ExtensionContext context) throws CoreException { - IJavaProject javaProject= createJavaProject(TEST_SETUP_PROJECT, "bin"); //$NON-NLS-1$ + javaProject= createJavaProject(TEST_SETUP_PROJECT, "bin"); //$NON-NLS-1$ javaProject.setRawClasspath(getDefaultClasspath(), null); Map options= javaProject.getOptions(false); JavaCore.setComplianceOptions(compliance, options); @@ -290,6 +291,56 @@ public static IPackageFragmentRoot addSourceContainer(IJavaProject jproject, Str return root; } + /** + * Adds a source container to a IJavaProject. + * @param jproject The parent project + * @param containerName The name of the new source container + * @return The handle to the new source container + * @throws CoreException Creation failed + */ + public static IPackageFragmentRoot addSourceContainer(IJavaProject jproject, String containerName) throws CoreException { + return addSourceContainer(jproject, containerName, new Path[0]); + } + + /** + * Adds a source container to a IJavaProject. + * @param jproject The parent project + * @param containerName The name of the new source container + * @param exclusionFilters Exclusion filters to set + * @return The handle to the new source container + * @throws CoreException Creation failed + */ + public static IPackageFragmentRoot addSourceContainer(IJavaProject jproject, String containerName, IPath[] exclusionFilters) throws CoreException { + return addSourceContainer(jproject, containerName, new Path[0], exclusionFilters); + } + + /** + * Adds a source container to a IJavaProject. + * @param jproject The parent project + * @param containerName The name of the new source container + * @param inclusionFilters Inclusion filters to set + * @param exclusionFilters Exclusion filters to set + * @return The handle to the new source container + * @throws CoreException Creation failed + */ + public static IPackageFragmentRoot addSourceContainer(IJavaProject jproject, String containerName, IPath[] inclusionFilters, IPath[] exclusionFilters) throws CoreException { + return addSourceContainer(jproject, containerName, inclusionFilters, exclusionFilters, null); + } + + /** + * Adds a source container to a IJavaProject. + * @param jproject The parent project + * @param containerName The name of the new source container + * @param inclusionFilters Inclusion filters to set + * @param exclusionFilters Exclusion filters to set + * @param outputLocation The location where class files are written to, null for project output folder + * @return The handle to the new source container + * @throws CoreException Creation failed + */ + public static IPackageFragmentRoot addSourceContainer(IJavaProject jproject, String containerName, IPath[] inclusionFilters, IPath[] exclusionFilters, String outputLocation) throws CoreException { + return addSourceContainer(jproject, containerName, inclusionFilters, exclusionFilters, outputLocation, + new IClasspathAttribute[0]); + } public static void addToClasspath(IJavaProject jproject, IClasspathEntry cpe) throws JavaModelException { IClasspathEntry[] oldEntries= jproject.getRawClasspath(); for (IClasspathEntry oldEntry : oldEntries) { diff --git a/sandbox_web/pom.xml b/sandbox_web/pom.xml index 34117108..653c6fdf 100644 --- a/sandbox_web/pom.xml +++ b/sandbox_web/pom.xml @@ -24,6 +24,10 @@ org.sandbox sandbox_jface_cleanup_feature + + org.sandbox + sandbox_junit_cleanup_feature + org.sandbox sandbox_platform_helper_feature From db54002cf3fecc6f2a8a71c5f15355e29c0da3b0 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Tue, 15 Oct 2024 20:37:40 +0200 Subject: [PATCH 02/58] RunWith implemented --- .../corext/fix/JUnitCleanUpFixCore.java | 6 +- .../corext/fix/helper/RunWithJUnitPlugin.java | 63 +++++++++++++------ .../ui/tests/quickfix/Java8CleanUpTest.java | 10 +-- .../quickfix/rules/AbstractEclipseJava.java | 18 ++++-- 4 files changed, 65 insertions(+), 32 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index 1d2f3586..7578de13 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -43,10 +43,8 @@ public enum JUnitCleanUpFixCore { TEST(new TestJUnitPlugin()), BEFORECLASS(new BeforeClassJUnitPlugin()), AFTERCLASS(new AfterClassJUnitPlugin()), - IGNORE(new IgnoreJUnitPlugin()) -// , -// RUNWITH(new RunWithJUnitPlugin()) - ; + IGNORE(new IgnoreJUnitPlugin()), + RUNWITH(new RunWithJUnitPlugin()); AbstractTool> junitfound; diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java index 2460bdeb..69ec0a7a 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java @@ -41,23 +41,25 @@ */ public class RunWithJUnitPlugin extends AbstractTool> { + private static final String ORG_JUNIT_PLATFORM_SUITE_API_SELECT_CLASSES = "org.junit.platform.suite.api.SelectClasses"; + private static final String SELECT_CLASSES = "SelectClasses"; private static final String ORG_JUNIT_RUNWITH = "org.junit.runner.RunWith"; private static final String ORG_JUNIT_JUPITER_SUITE = "org.junit.platform.suite.api.Suite"; private static final String SUITE = "Suite"; + private static final String ORG_JUNIT_SUITE = "org.junit.runners.Suite"; + private static final String ORG_JUNIT_SUITE_SUITECLASSES = "org.junit.runners.Suite.SuiteClasses"; @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { ReferenceHolder dataholder = new ReferenceHolder<>(); - HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_RUNWITH, compilationUnit, dataholder, nodesprocessed, - (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); - HelperVisitor.callNormalAnnotationVisitor(ORG_JUNIT_RUNWITH, compilationUnit, dataholder, nodesprocessed, - (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); HelperVisitor.callSingleMemberAnnotationVisitor(ORG_JUNIT_RUNWITH, compilationUnit, dataholder, nodesprocessed, - (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + (visited, aholder) -> processFoundNodeRunWith(fixcore, operations, visited, aholder)); + HelperVisitor.callSingleMemberAnnotationVisitor(ORG_JUNIT_SUITE_SUITECLASSES, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNodeSuite(fixcore, operations, visited, aholder)); } - private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + private boolean processFoundNodeRunWith(JUnitCleanUpFixCore fixcore, Set operations, Annotation node, ReferenceHolder dataholder) { JunitHolder mh = new JunitHolder(); @@ -66,20 +68,38 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, if(node instanceof SingleMemberAnnotation mynode) { Expression value = mynode.getValue(); if(value instanceof TypeLiteral myvalue) { - - ITypeBinding typeBinding = myvalue.resolveTypeBinding(); - if (typeBinding != null) { - mh.value = typeBinding.getQualifiedName(); - if (!"org.junit.runners.Suite".equals(mh.value)) { - return false; + ITypeBinding classBinding = myvalue.resolveTypeBinding(); + // Ãœberprüfe, ob der Typ ein generischer Typ ist (Class) + if (classBinding != null && classBinding.isParameterizedType()) { + // Extrahiere den tatsächlichen Typ (T) aus Class + ITypeBinding[] typeArguments = classBinding.getTypeArguments(); + if (typeArguments.length > 0) { + ITypeBinding actualTypeBinding = typeArguments[0]; + // Prüfe, ob es sich um org.junit.runners.Suite handelt + if (ORG_JUNIT_SUITE.equals(actualTypeBinding.getQualifiedName())) { + mh.value=ORG_JUNIT_RUNWITH; + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + } + return false; + } } - dataholder.put(dataholder.size(), mh); - operations.add(fixcore.rewrite(dataholder)); - } } } return false; } + + private boolean processFoundNodeSuite(JUnitCleanUpFixCore fixcore, + Set operations, Annotation node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + mh.minvname = node.getTypeName().getFullyQualifiedName(); + mh.value=ORG_JUNIT_SUITE_SUITECLASSES; + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, @@ -91,16 +111,23 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder options= javaProject.getOptions(false); + setJavaProject(createJavaProject(TEST_SETUP_PROJECT, "bin")); //$NON-NLS-1$ + getJavaProject().setRawClasspath(getDefaultClasspath(), null); + Map options= getJavaProject().getOptions(false); JavaCore.setComplianceOptions(compliance, options); - javaProject.setOptions(options); + getJavaProject().setOptions(options); setfSourceFolder(addSourceContainer(getProject(TEST_SETUP_PROJECT), "src", new Path[0], //$NON-NLS-1$ new Path[0], null, new IClasspathAttribute[0])); Map settings= new HashMap<>(); @@ -522,4 +522,12 @@ public IPackageFragmentRoot getfSourceFolder() { public void setfSourceFolder(IPackageFragmentRoot fSourceFolder) { this.fSourceFolder = fSourceFolder; } + + public IJavaProject getJavaProject() { + return javaProject; + } + + public void setJavaProject(IJavaProject javaProject) { + this.javaProject = javaProject; + } } From b6050e594195bac58c4e40f5456a3c5d0b97b12e Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Wed, 16 Oct 2024 21:31:33 +0200 Subject: [PATCH 03/58] first implementation of Assertions --- .../jdt/internal/common/HelperVisitor.java | 34 +++++ .../jdt/internal/common/LambdaASTVisitor.java | 29 +++-- .../corext/fix/JUnitCleanUpFixCore.java | 4 +- .../fix/helper/AfterClassJUnitPlugin.java | 2 +- .../corext/fix/helper/AfterJUnitPlugin.java | 2 +- .../corext/fix/helper/AssertJUnitPlugin.java | 122 ++++++++++++++++++ .../fix/helper/BeforeClassJUnitPlugin.java | 4 +- .../corext/fix/helper/BeforeJUnitPlugin.java | 4 +- .../corext/fix/helper/IgnoreJUnitPlugin.java | 2 +- .../corext/fix/helper/JunitHolder.java | 12 +- .../corext/fix/helper/RunWithJUnitPlugin.java | 3 +- .../corext/fix/helper/TestJUnitPlugin.java | 4 +- .../ui/tests/quickfix/Java8CleanUpTest.java | 28 +++- 13 files changed, 223 insertions(+), 27 deletions(-) create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java index f77039fe..2ab579ce 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java @@ -736,6 +736,22 @@ public BiPredicate addMethodInvocation(Class typeof, St predicatedata.put(VisitorEnum.MethodInvocation, map); return predicatemap.put(VisitorEnum.MethodInvocation, bs); } + + /** + * @param typeof + * @param methodname + * @param bs + * @return old BiPredicate assigned for nodetype + */ + public BiPredicate addMethodInvocation(String typeof, String methodname, + BiPredicate bs) { + Map map = Map.ofEntries( + new AbstractMap.SimpleEntry<>(METHODNAME, methodname), + new AbstractMap.SimpleEntry<>(TYPEOF, typeof) + ); + predicatedata.put(VisitorEnum.MethodInvocation, map); + return predicatemap.put(VisitorEnum.MethodInvocation, bs); + } /** * * @param bs @@ -4377,6 +4393,24 @@ public static void callMethodInvocationVisitor(Class methodof, String hv.addMethodInvocation(methodof, methodname, bs); hv.build(node); } + + /** + * @param + * @param + * @param methodof + * @param methodname + * @param node + * @param dataholder + * @param nodesprocessed + * @param bs + */ + public static void callMethodInvocationVisitor(String methodof, String methodname, ASTNode node, ReferenceHolder dataholder, Set nodesprocessed, + BiPredicate> bs) { + + HelperVisitor,V,T> hv= new HelperVisitor<>(nodesprocessed, dataholder); + hv.addMethodInvocation(methodof, methodname, bs); + hv.build(node); + } /** * diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java index 9b859291..b024ae03 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java @@ -532,16 +532,21 @@ public boolean visit(MethodInvocation node) { if ((data!= null) && !node.getName().getIdentifier().equals(data)) { return true; } - Class typeof=(Class) map.get(HelperVisitor.TYPEOF); - String[] parameterTypesQualifiedNames=(String[]) map.get(HelperVisitor.PARAMTYPENAMES); - - if(typeof!=null) { + Object object = map.get(HelperVisitor.TYPEOF); + String canonicaltype; + if(object!=null) { + if(object instanceof Class typeof) { + canonicaltype= typeof.getCanonicalName(); + } else { + canonicaltype= (String)object; + } + String[] parameterTypesQualifiedNames=(String[]) map.get(HelperVisitor.PARAMTYPENAMES); if(parameterTypesQualifiedNames==null) { - if (ASTNodes.usesGivenSignature(node, typeof.getCanonicalName(), data)) { + if (ASTNodes.usesGivenSignature(node, canonicaltype, data)) { return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.MethodInvocation))).test(node, this.helperVisitor.dataholder); } } else - if (ASTNodes.usesGivenSignature(node, typeof.getCanonicalName(), data, parameterTypesQualifiedNames)) { + if (ASTNodes.usesGivenSignature(node, canonicaltype, data, parameterTypesQualifiedNames)) { return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.MethodInvocation))).test(node, this.helperVisitor.dataholder); } } @@ -1483,9 +1488,15 @@ public void endVisit(MethodInvocation node) { if ((data!= null) && !node.getName().getIdentifier().equals(data)) { return; } - Class typeof=(Class) map.get(HelperVisitor.TYPEOF); - if(typeof!=null) { - if (!ASTNodes.usesGivenSignature(node, typeof.getCanonicalName(), data)) { + Object object = map.get(HelperVisitor.TYPEOF); + String canonicaltype; + if(object!=null) { + if(object instanceof Class typeof) { + canonicaltype= typeof.getCanonicalName(); + } else { + canonicaltype= (String)object; + } + if (!ASTNodes.usesGivenSignature(node, canonicaltype, data)) { return; } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index 7578de13..233f75f1 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -28,6 +28,7 @@ import org.sandbox.jdt.internal.corext.fix.helper.AbstractTool; import org.sandbox.jdt.internal.corext.fix.helper.AfterClassJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.AfterJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.AssertJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.BeforeClassJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.BeforeJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.IgnoreJUnitPlugin; @@ -44,7 +45,8 @@ public enum JUnitCleanUpFixCore { BEFORECLASS(new BeforeClassJUnitPlugin()), AFTERCLASS(new AfterClassJUnitPlugin()), IGNORE(new IgnoreJUnitPlugin()), - RUNWITH(new RunWithJUnitPlugin()); + RUNWITH(new RunWithJUnitPlugin()), + ASSERT(new AssertJUnitPlugin()); AbstractTool> junitfound; diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java index 9bbc6d2d..12bc918e 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java @@ -68,7 +68,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); - Annotation minv = mh.minv; + Annotation minv = mh.getAnnotation(); MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(AFTER_ALL)); addImport(ORG_JUNIT_JUPITER_API_AFTER_ALL, cuRewrite, ast); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java index 5df733f3..794a0e6b 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java @@ -68,7 +68,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); - Annotation minv = mh.minv; + Annotation minv = mh.getAnnotation(); MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(AFTER_EACH)); addImport(ORG_JUNIT_JUPITER_API_AFTER_EACH, cuRewrite, ast); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java new file mode 100644 index 00000000..2d9b263b --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -0,0 +1,122 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Set; +import java.util.List; +import java.util.Map.Entry; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.Expression; +import org.eclipse.jdt.core.dom.MethodInvocation; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.core.dom.rewrite.ListRewrite; +import org.eclipse.jdt.internal.corext.dom.ASTNodes; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class AssertJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_JUPITER_API_ASSERTIONS = "org.junit.jupiter.api.Assertions"; + private static final String ASSERT_EQUALS = "assertEquals"; + private static final String ORG_JUNIT_ASSERT = "org.junit.Assert"; + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callMethodInvocationVisitor(ORG_JUNIT_ASSERT, ASSERT_EQUALS, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, MethodInvocation node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewrite = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + MethodInvocation minv = mh.getMethodInvocation(); + reorderParameters(minv, rewrite, group); + importRemover.removeImport(ORG_JUNIT_ASSERT); + addImport(ORG_JUNIT_JUPITER_API_ASSERTIONS, cuRewrite, ast); + } + } + + private void reorderParameters(MethodInvocation node, ASTRewrite rewriter, TextEditGroup group) { + List arguments = node.arguments(); + + if (arguments.size() == 3) { + // In JUnit 4: (String message, Object expected, Object actual) + // In JUnit 5: (Object expected, Object actual, String message) + + Expression firstArg = arguments.get(0); // message + Expression secondArg = arguments.get(1); // expected + Expression thirdArg = arguments.get(2); // actual + + // Vertausche die Argumente für die neue Reihenfolge + ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); + listRewrite.replace(firstArg, ASTNodes.createMoveTarget(rewriter,secondArg), group); // Ersetze message durch actual + listRewrite.replace(secondArg, ASTNodes.createMoveTarget(rewriter,thirdArg), group); // Ersetze expected durch actual + listRewrite.replace(thirdArg, ASTNodes.createMoveTarget(rewriter,firstArg), group); // Ersetze actual durch expected + + } +// else if (arguments.size() == 2) { +// // In JUnit 4: (Object expected, Object actual) +// // In JUnit 5 bleibt die Reihenfolge gleich, aber falls sie vertauscht ist, korrigieren wir sie +// +// Expression expectedArg = arguments.get(0); // expected +// Expression actualArg = arguments.get(1); // actual +// +// // Tausche expected und actual nur, wenn es notwendig ist +// ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); +// listRewrite.replace(arguments.get(0), ASTNodes.createMoveTarget(rewriter, actualArg), group); // expected wird durch actual ersetzt +// listRewrite.replace(arguments.get(1), ASTNodes.createMoveTarget(rewriter, expectedArg), group); // actual wird durch expected ersetzt +// } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (!afterRefactoring) { + return """ + ; + """; //$NON-NLS-1$ + } + return """ + ; + """; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java index 30340152..373b6b1b 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java @@ -13,14 +13,12 @@ *******************************************************************************/ package org.sandbox.jdt.internal.corext.fix.helper; -import java.util.HashSet; import java.util.Set; import java.util.Map.Entry; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.Annotation; -import org.eclipse.jdt.core.dom.ClassInstanceCreation; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.MarkerAnnotation; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; @@ -70,7 +68,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); - Annotation minv = mh.minv; + Annotation minv = mh.getAnnotation(); MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(BEFORE_ALL)); addImport(ORG_JUNIT_JUPITER_API_BEFORE_ALL, cuRewrite, ast); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java index 7ac8548f..84b07a92 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java @@ -13,14 +13,12 @@ *******************************************************************************/ package org.sandbox.jdt.internal.corext.fix.helper; -import java.util.HashSet; import java.util.Set; import java.util.Map.Entry; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.Annotation; -import org.eclipse.jdt.core.dom.ClassInstanceCreation; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.MarkerAnnotation; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; @@ -70,7 +68,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); - Annotation minv = mh.minv; + Annotation minv = mh.getAnnotation(); MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(BEFORE_EACH)); addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH, cuRewrite, ast); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java index e215e798..0dd04cf6 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java @@ -77,7 +77,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); - Annotation minv = mh.minv; + Annotation minv = mh.getAnnotation(); Annotation newAnnotation = null; if(minv instanceof SingleMemberAnnotation mynode) { newAnnotation = ast.newSingleMemberAnnotation(); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java index 9da31d0b..4c341fde 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java @@ -4,10 +4,20 @@ import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.MethodInvocation; public class JunitHolder { - public Annotation minv; + public ASTNode minv; public String minvname; public Set nodesprocessed; public String value; + public MethodInvocation method; + + public Annotation getAnnotation() { + return (Annotation)minv; + } + + public MethodInvocation getMethodInvocation() { + return (MethodInvocation)minv; + } } \ No newline at end of file diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java index 69ec0a7a..d11b73a1 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java @@ -22,7 +22,6 @@ import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.ITypeBinding; -import org.eclipse.jdt.core.dom.NormalAnnotation; import org.eclipse.jdt.core.dom.SingleMemberAnnotation; import org.eclipse.jdt.core.dom.TypeLiteral; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; @@ -109,7 +108,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); - Annotation minv = mh.minv; + Annotation minv = mh.getAnnotation(); Annotation newAnnotation = null; SingleMemberAnnotation mynode=(SingleMemberAnnotation) minv; if(ORG_JUNIT_SUITE_SUITECLASSES.equals(mh.value)) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java index ccd70154..5e05e3e4 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java @@ -68,7 +68,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); - Annotation minv = mh.minv; + Annotation minv = mh.getAnnotation(); MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(TEST)); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); @@ -84,7 +84,7 @@ public String getPreview(boolean afterRefactoring) { ; """; //$NON-NLS-1$ } - return """ + return """ ; """; //$NON-NLS-1$ } diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index 1d33cb5c..b650b091 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -111,6 +111,18 @@ public void test() { public void test2() { fail("Not yet implemented"); } + + @Test + public void test3() { + Assert.assertEquals("expected", "actual"); + } + + @Test + public void test4() { + Assert.assertEquals("failuremessage", "expected", "actual"); + int result=5; + Assert.assertEquals(5, result); // expected = 5, actual = result + } } """, //$NON-NLS-1$ @@ -120,6 +132,7 @@ public void test2() { import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; @@ -175,6 +188,18 @@ public void test() { public void test2() { fail("Not yet implemented"); } + + @Test + public void test3() { + Assert.assertEquals("expected", "actual"); + } + + @Test + public void test4() { + Assert.assertEquals("expected", "actual", "failuremessage"); + int result=5; + Assert.assertEquals(5, result); // expected = 5, actual = result + } } """); //$NON-NLS-1$ @@ -187,12 +212,10 @@ public void test2() { } } - // @Disabled @ParameterizedTest @EnumSource(JUnitCleanupCases.class) public void testJUnitCleanupParametrized(JUnitCleanupCases test) throws CoreException { IPackageFragment pack= fRoot.createPackageFragment("test", true, null); -// IPackageFragment pack= context.getfSourceFolder().createPackageFragment("test", false, null); //$NON-NLS-1$ ICompilationUnit cu= pack.createCompilationUnit("Test.java", test.given, false, null); //$NON-NLS-1$ context.enable(MYCleanUpConstants.JUNIT_CLEANUP); context.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu}, new String[] {test.expected}, null); @@ -227,7 +250,6 @@ void m(List strings) { String given; } - // @Disabled @ParameterizedTest @EnumSource(NOJUnitCleanupCases.class) public void testJUnitCleanupdonttouch(NOJUnitCleanupCases test) throws CoreException { From 5d7ce0673d103c30083fd63ec3d7fe449f71c58c Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Thu, 17 Oct 2024 20:52:22 +0200 Subject: [PATCH 04/58] cover more assertions in the implementation --- .../corext/fix/helper/AssertJUnitPlugin.java | 45 ++++++++++++------- .../corext/fix/helper/JunitHolder.java | 1 + .../ui/tests/quickfix/Java8CleanUpTest.java | 16 +++++-- 3 files changed, 42 insertions(+), 20 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index 2d9b263b..3cd48659 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -13,15 +13,16 @@ *******************************************************************************/ package org.sandbox.jdt.internal.corext.fix.helper; -import java.util.Set; import java.util.List; import java.util.Map.Entry; +import java.util.Set; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.MethodInvocation; +import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; import org.eclipse.jdt.core.dom.rewrite.ListRewrite; @@ -39,16 +40,27 @@ */ public class AssertJUnitPlugin extends AbstractTool> { + private static final String ASSERTIONS = "Assertions"; private static final String ORG_JUNIT_JUPITER_API_ASSERTIONS = "org.junit.jupiter.api.Assertions"; private static final String ASSERT_EQUALS = "assertEquals"; + private static final String ASSERT_NOT_EQUALS = "assertNotEquals"; + private static final String ASSERT_ARRAY_EQUALS = "assertArrayEquals"; private static final String ORG_JUNIT_ASSERT = "org.junit.Assert"; + private static final Set twoparam = Set.of(ASSERT_EQUALS, ASSERT_NOT_EQUALS,ASSERT_ARRAY_EQUALS); + private static final Set oneparam = Set.of("assertTrue","assertFalse","assertNull","assertNotNull"); @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { ReferenceHolder dataholder = new ReferenceHolder<>(); - HelperVisitor.callMethodInvocationVisitor(ORG_JUNIT_ASSERT, ASSERT_EQUALS, compilationUnit, dataholder, nodesprocessed, - (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + twoparam.forEach(assertionmethod->{ + HelperVisitor.callMethodInvocationVisitor(ORG_JUNIT_ASSERT, assertionmethod, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + }); + oneparam.forEach(assertionmethod->{ + HelperVisitor.callMethodInvocationVisitor(ORG_JUNIT_ASSERT, assertionmethod, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + }); } private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @@ -56,6 +68,7 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, ReferenceHolder dataholder) { JunitHolder mh = new JunitHolder(); mh.minv = node; + mh.count = node.arguments().size(); dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -71,15 +84,18 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder arguments = node.arguments(); - if (arguments.size() == 3) { + SimpleName name = node.getName(); + if (arguments.size() == 3 && twoparam.contains(name.toString())) { // In JUnit 4: (String message, Object expected, Object actual) // In JUnit 5: (Object expected, Object actual, String message) @@ -92,20 +108,15 @@ private void reorderParameters(MethodInvocation node, ASTRewrite rewriter, TextE listRewrite.replace(firstArg, ASTNodes.createMoveTarget(rewriter,secondArg), group); // Ersetze message durch actual listRewrite.replace(secondArg, ASTNodes.createMoveTarget(rewriter,thirdArg), group); // Ersetze expected durch actual listRewrite.replace(thirdArg, ASTNodes.createMoveTarget(rewriter,firstArg), group); // Ersetze actual durch expected - } -// else if (arguments.size() == 2) { -// // In JUnit 4: (Object expected, Object actual) -// // In JUnit 5 bleibt die Reihenfolge gleich, aber falls sie vertauscht ist, korrigieren wir sie -// -// Expression expectedArg = arguments.get(0); // expected -// Expression actualArg = arguments.get(1); // actual -// -// // Tausche expected und actual nur, wenn es notwendig ist -// ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); -// listRewrite.replace(arguments.get(0), ASTNodes.createMoveTarget(rewriter, actualArg), group); // expected wird durch actual ersetzt -// listRewrite.replace(arguments.get(1), ASTNodes.createMoveTarget(rewriter, expectedArg), group); // actual wird durch expected ersetzt -// } + else if (arguments.size() == 2 && oneparam.contains(name.toString())) { + // In JUnit 4: (Object message, Object actual) + Expression message = arguments.get(0); // message + Expression actualArg = arguments.get(1); // actual + ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); + listRewrite.replace(arguments.get(0), ASTNodes.createMoveTarget(rewriter, actualArg), group); // message wird durch actual ersetzt + listRewrite.replace(arguments.get(1), ASTNodes.createMoveTarget(rewriter, message), group); // actual wird durch message ersetzt + } } @Override diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java index 4c341fde..33e30b2f 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java @@ -12,6 +12,7 @@ public class JunitHolder { public Set nodesprocessed; public String value; public MethodInvocation method; + public int count; public Annotation getAnnotation() { return (Annotation)minv; diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index b650b091..cb2af7dd 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -122,6 +122,11 @@ public void test4() { Assert.assertEquals("failuremessage", "expected", "actual"); int result=5; Assert.assertEquals(5, result); // expected = 5, actual = result + Assert.assertNotEquals("failuremessage",5, result); // expected = 5, actual = result + Assert.assertTrue("failuremessage",false); + Assert.assertFalse("failuremessage",false); + Assert.assertTrue(false); + Assert.assertFalse(false); } } """, //$NON-NLS-1$ @@ -191,14 +196,19 @@ public void test2() { @Test public void test3() { - Assert.assertEquals("expected", "actual"); + Assertions.assertEquals("expected", "actual"); } @Test public void test4() { - Assert.assertEquals("expected", "actual", "failuremessage"); + Assertions.assertEquals("expected", "actual", "failuremessage"); int result=5; - Assert.assertEquals(5, result); // expected = 5, actual = result + Assertions.assertEquals(5, result); // expected = 5, actual = result + Assertions.assertNotEquals(5,result, "failuremessage"); // expected = 5, actual = result + Assertions.assertTrue(false,"failuremessage"); + Assertions.assertFalse(false,"failuremessage"); + Assertions.assertTrue(false); + Assertions.assertFalse(false); } } """); //$NON-NLS-1$ From 48f903c9ecf11e0fc1377bc541b36ad1f926189a Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 18 Oct 2024 20:13:14 +0200 Subject: [PATCH 05/58] implement static imports of assertion methods --- .../jdt/internal/common/HelperVisitor.java | 33 ++++ .../jdt/internal/common/LambdaASTVisitor.java | 11 +- .../corext/fix/helper/AssertJUnitPlugin.java | 88 +++++---- .../corext/fix/helper/JunitHolder.java | 5 + .../ui/tests/quickfix/Java8CleanUpTest.java | 176 +++++++++++++++++- 5 files changed, 270 insertions(+), 43 deletions(-) diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java index 2ab579ce..6a9dbc4c 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java @@ -50,6 +50,10 @@ public class HelperVisitor,V,T> { */ public static final String ANNOTATIONNAME = "annotationname"; //$NON-NLS-1$ + /** + * + */ + public static final String IMPORT = "import"; //$NON-NLS-1$ /** * */ @@ -560,6 +564,18 @@ public BiPredicate addImportDeclaration(BiPredicate addImportDeclaration(String importname, BiPredicate bs) { + predicatedata.put(VisitorEnum.ImportDeclaration, Map.ofEntries( + new AbstractMap.SimpleEntry<>(IMPORT, importname) + )); + return predicatemap.put(VisitorEnum.ImportDeclaration, bs); + } + /** * * @param bs @@ -4086,6 +4102,23 @@ public static void callImportDeclarationVisitor(ASTNode node, ReferenceHo hv.build(node); } + /** + * @param + * @param + * @param importname + * @param node + * @param dataholder + * @param nodesprocessed + * @param bs + */ + public static void callImportDeclarationVisitor(String importname, ASTNode node, ReferenceHolder dataholder, Set nodesprocessed, + BiPredicate> bs) { + + HelperVisitor,V,T> hv= new HelperVisitor<>(nodesprocessed, dataholder); + hv.addImportDeclaration(importname, bs); + hv.build(node); + } + /** * * @param diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java index b024ae03..a80711f4 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java @@ -378,8 +378,15 @@ public boolean visit(IfStatement node) { @Override public boolean visit(ImportDeclaration node) { if (this.helperVisitor.predicatemap.containsKey(VisitorEnum.ImportDeclaration)) { - return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.ImportDeclaration))) - .test(node, this.helperVisitor.dataholder); + Map map=(Map) this.helperVisitor.getSupplierData().get(VisitorEnum.ImportDeclaration); + if(map != null) { + String data=(String) map.get(HelperVisitor.IMPORT); + String fullyQualifiedName = node.getName().getFullyQualifiedName(); + if ((data!= null) && !fullyQualifiedName.equals(data)) { + return true; + } + } + return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.ImportDeclaration))).test(node, this.helperVisitor.dataholder); } return true; } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index 3cd48659..3b6379bf 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -16,11 +16,15 @@ import java.util.List; import java.util.Map.Entry; import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.Expression; +import org.eclipse.jdt.core.dom.ITypeBinding; +import org.eclipse.jdt.core.dom.ImportDeclaration; import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; @@ -42,33 +46,29 @@ public class AssertJUnitPlugin extends AbstractTool twoparam = Set.of(ASSERT_EQUALS, ASSERT_NOT_EQUALS,ASSERT_ARRAY_EQUALS); + private static final Set twoparam = Set.of("assertEquals", "assertNotEquals","assertArrayEquals","assertTrue","assertFalse","assertNull","assertNotNull","fail"); private static final Set oneparam = Set.of("assertTrue","assertFalse","assertNull","assertNotNull"); + private static final Set noparam = Set.of("fail"); + private static final Set allassertionmethods= Stream.of(twoparam,oneparam,noparam).flatMap(Set::stream).collect(Collectors.toSet()); @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { ReferenceHolder dataholder = new ReferenceHolder<>(); - twoparam.forEach(assertionmethod->{ - HelperVisitor.callMethodInvocationVisitor(ORG_JUNIT_ASSERT, assertionmethod, compilationUnit, dataholder, nodesprocessed, - (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); - }); - oneparam.forEach(assertionmethod->{ + allassertionmethods.forEach(assertionmethod->{ HelperVisitor.callMethodInvocationVisitor(ORG_JUNIT_ASSERT, assertionmethod, compilationUnit, dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); }); + HelperVisitor.callImportDeclarationVisitor(ORG_JUNIT_ASSERT, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } private boolean processFoundNode(JUnitCleanUpFixCore fixcore, - Set operations, MethodInvocation node, + Set operations, ASTNode node, ReferenceHolder dataholder) { JunitHolder mh = new JunitHolder(); mh.minv = node; - mh.count = node.arguments().size(); dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -82,43 +82,65 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); - MethodInvocation minv = mh.getMethodInvocation(); - reorderParameters(minv, rewrite, group); - SimpleName newQualifier = ast.newSimpleName(ASSERTIONS); - importRemover.removeImport(ORG_JUNIT_ASSERT); - addImport(ORG_JUNIT_JUPITER_API_ASSERTIONS, cuRewrite, ast); - ASTNodes.replaceButKeepComment(rewrite, minv.getExpression(), newQualifier, group); + if(mh.minv instanceof MethodInvocation) { + MethodInvocation minv = mh.getMethodInvocation(); + reorderParameters(minv, rewrite, group); + SimpleName newQualifier = ast.newSimpleName(ASSERTIONS); + Expression expression = minv.getExpression(); + if(expression!=null) { + ASTNodes.replaceButKeepComment(rewrite, expression, newQualifier, group); + } + } else { + changeImportDeclaration(mh.getImportDeclaration(), importRemover, group); + } + } + } + + public void changeImportDeclaration(ImportDeclaration node, ImportRewrite importRewriter, TextEditGroup group) { + String importName = node.getName().getFullyQualifiedName(); + if (importName.equals(ORG_JUNIT_ASSERT)) { + importRewriter.removeImport(ORG_JUNIT_ASSERT); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_ASSERTIONS); + } + if (node.isStatic() && importName.equals(ORG_JUNIT_ASSERT)) { + importRewriter.removeStaticImport(ORG_JUNIT_ASSERT+".*"); + importRewriter.addStaticImport(ORG_JUNIT_JUPITER_API_ASSERTIONS, "*", false); } } - + private void reorderParameters(MethodInvocation node, ASTRewrite rewriter, TextEditGroup group) { List arguments = node.arguments(); - SimpleName name = node.getName(); if (arguments.size() == 3 && twoparam.contains(name.toString())) { // In JUnit 4: (String message, Object expected, Object actual) // In JUnit 5: (Object expected, Object actual, String message) - - Expression firstArg = arguments.get(0); // message + Expression messageArg = arguments.get(0); // message Expression secondArg = arguments.get(1); // expected Expression thirdArg = arguments.get(2); // actual - - // Vertausche die Argumente für die neue Reihenfolge - ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); - listRewrite.replace(firstArg, ASTNodes.createMoveTarget(rewriter,secondArg), group); // Ersetze message durch actual - listRewrite.replace(secondArg, ASTNodes.createMoveTarget(rewriter,thirdArg), group); // Ersetze expected durch actual - listRewrite.replace(thirdArg, ASTNodes.createMoveTarget(rewriter,firstArg), group); // Ersetze actual durch expected - } - else if (arguments.size() == 2 && oneparam.contains(name.toString())) { + if (isStringType(messageArg)) { + // Vertausche die Argumente für die neue Reihenfolge + ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); + listRewrite.replace(messageArg, ASTNodes.createMoveTarget(rewriter,secondArg), group); // Ersetze message durch actual + listRewrite.replace(secondArg, ASTNodes.createMoveTarget(rewriter,thirdArg), group); // Ersetze expected durch actual + listRewrite.replace(thirdArg, ASTNodes.createMoveTarget(rewriter,messageArg), group); // Ersetze actual durch expected + } + } else if (arguments.size() == 2 && oneparam.contains(name.toString())) { // In JUnit 4: (Object message, Object actual) - Expression message = arguments.get(0); // message + Expression messageArg = arguments.get(0); // message Expression actualArg = arguments.get(1); // actual - ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); - listRewrite.replace(arguments.get(0), ASTNodes.createMoveTarget(rewriter, actualArg), group); // message wird durch actual ersetzt - listRewrite.replace(arguments.get(1), ASTNodes.createMoveTarget(rewriter, message), group); // actual wird durch message ersetzt + if (isStringType(messageArg)) { + ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); + listRewrite.replace(arguments.get(0), ASTNodes.createMoveTarget(rewriter, actualArg), group); // message wird durch actual ersetzt + listRewrite.replace(arguments.get(1), ASTNodes.createMoveTarget(rewriter, messageArg), group); // actual wird durch message ersetzt + } } } + private boolean isStringType(Expression expression) { + ITypeBinding typeBinding = expression.resolveTypeBinding(); + return typeBinding != null && String.class.getCanonicalName().equals(typeBinding.getQualifiedName()); + } + @Override public String getPreview(boolean afterRefactoring) { if (!afterRefactoring) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java index 33e30b2f..680e7061 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java @@ -4,6 +4,7 @@ import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.ImportDeclaration; import org.eclipse.jdt.core.dom.MethodInvocation; public class JunitHolder { @@ -21,4 +22,8 @@ public Annotation getAnnotation() { public MethodInvocation getMethodInvocation() { return (MethodInvocation)minv; } + + public ImportDeclaration getImportDeclaration() { + return (ImportDeclaration)minv; + } } \ No newline at end of file diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index cb2af7dd..8ee3fb54 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -52,7 +52,7 @@ public void setup() throws CoreException { enum JUnitCleanupCases{ PositiveCase(""" package test; -import static org.junit.Assert.*; +import org.junit.Assert; import org.junit.After; import org.junit.AfterClass; @@ -103,13 +103,13 @@ public void tearDown() throws Exception { @Ignore @Test public void test() { - fail("Not yet implemented"); + Assert.fail("Not yet implemented"); } @Ignore("not implemented") @Test public void test2() { - fail("Not yet implemented"); + Assert.fail("Not yet implemented"); } @Test @@ -133,8 +133,6 @@ public void test4() { """ package test; -import static org.junit.Assert.*; - import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; @@ -185,13 +183,13 @@ public void tearDown() throws Exception { @Disabled @Test public void test() { - fail("Not yet implemented"); + Assertions.fail("Not yet implemented"); } @Disabled("not implemented") @Test public void test2() { - fail("Not yet implemented"); + Assertions.fail("Not yet implemented"); } @Test @@ -211,7 +209,169 @@ public void test4() { Assertions.assertFalse(false); } } - """); //$NON-NLS-1$ + """), + StaticImportCase(""" + package test; + import static org.junit.Assert.*; + + import org.junit.After; + import org.junit.AfterClass; + import org.junit.Before; + import org.junit.BeforeClass; + import org.junit.Ignore; + import org.junit.Test; + import org.junit.runner.RunWith; + import org.junit.runners.Suite; + + /** + * + */ + @RunWith(Suite.class) + @Suite.SuiteClasses({ + MyTest.class + }) + public class MyTest { + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @Before + public void setUp() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @After + public void tearDown() throws Exception { + } + + @Ignore + @Test + public void test() { + fail("Not yet implemented"); + } + + @Ignore("not implemented") + @Test + public void test2() { + fail("Not yet implemented"); + } + + @Test + public void test3() { + assertEquals("expected", "actual"); + } + + @Test + public void test4() { + assertEquals("failuremessage", "expected", "actual"); + int result=5; + assertEquals(5, result); // expected = 5, actual = result + assertNotEquals("failuremessage",5, result); // expected = 5, actual = result + assertTrue("failuremessage",false); + assertFalse("failuremessage",false); + assertTrue(false); + assertFalse(false); + } + } + """, //$NON-NLS-1$ + + """ + package test; + import static org.junit.jupiter.api.Assertions.*; + + import org.junit.jupiter.api.AfterAll; + import org.junit.jupiter.api.AfterEach; + import org.junit.jupiter.api.Assertions; + import org.junit.jupiter.api.BeforeAll; + import org.junit.jupiter.api.BeforeEach; + import org.junit.jupiter.api.Disabled; + import org.junit.jupiter.api.Test; + import org.junit.platform.suite.api.SelectClasses; + import org.junit.platform.suite.api.Suite; + + /** + * + */ + @Suite + @SelectClasses({ + MyTest.class + }) + public class MyTest { + + /** + * @throws java.lang.Exception + */ + @BeforeAll + public static void setUpBeforeClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @AfterAll + public static void tearDownAfterClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @BeforeEach + public void setUp() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @AfterEach + public void tearDown() throws Exception { + } + + @Disabled + @Test + public void test() { + fail("Not yet implemented"); + } + + @Disabled("not implemented") + @Test + public void test2() { + fail("Not yet implemented"); + } + + @Test + public void test3() { + assertEquals("expected", "actual"); + } + + @Test + public void test4() { + assertEquals("expected", "actual", "failuremessage"); + int result=5; + assertEquals(5, result); // expected = 5, actual = result + assertNotEquals(5,result, "failuremessage"); // expected = 5, actual = result + assertTrue(false,"failuremessage"); + assertFalse(false,"failuremessage"); + assertTrue(false); + assertFalse(false); + } + } + """); //$NON-NLS-1$ String given; String expected; From 3474f3d33e380846ce2f2cb64d2119f4ef05dca2 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 18 Oct 2024 20:18:30 +0200 Subject: [PATCH 06/58] fix bug in import that causes static and normal import to be added --- .../jdt/internal/corext/fix/helper/AssertJUnitPlugin.java | 7 +++---- .../sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java | 1 - 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index 3b6379bf..b4ff3af6 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -98,13 +98,12 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder Date: Sat, 19 Oct 2024 10:15:29 +0200 Subject: [PATCH 07/58] consider 4 parameter case --- .../jdt/ui/tests/quickfix/MatcherTest.java | 2 +- .../corext/fix/helper/AssertJUnitPlugin.java | 67 +++++++++++-------- 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/MatcherTest.java b/sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/MatcherTest.java index b6aa1159..fc2b4c87 100644 --- a/sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/MatcherTest.java +++ b/sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/MatcherTest.java @@ -23,7 +23,7 @@ public void hui(Collection arr) { coll.add(var); } } - }"""; + }"""; //$NON-NLS-1$ char[] source = code.toCharArray(); parser.setSource(source); Map options = JavaCore.getOptions(); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index b4ff3af6..3c8a0b8b 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -107,48 +107,57 @@ public void changeImportDeclaration(ImportDeclaration node, ImportRewrite import } } - private void reorderParameters(MethodInvocation node, ASTRewrite rewriter, TextEditGroup group) { + private boolean isStringType(Expression expression) { + ITypeBinding typeBinding = expression.resolveTypeBinding(); + return typeBinding != null && String.class.getCanonicalName().equals(typeBinding.getQualifiedName()); + } + + public void reorderParameters(MethodInvocation node, ASTRewrite rewriter, TextEditGroup group) { + String methodName = node.getName().getIdentifier(); List arguments = node.arguments(); - SimpleName name = node.getName(); - if (arguments.size() == 3 && twoparam.contains(name.toString())) { - // In JUnit 4: (String message, Object expected, Object actual) - // In JUnit 5: (Object expected, Object actual, String message) - Expression messageArg = arguments.get(0); // message - Expression secondArg = arguments.get(1); // expected - Expression thirdArg = arguments.get(2); // actual - if (isStringType(messageArg)) { - // Vertausche die Argumente für die neue Reihenfolge - ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); - listRewrite.replace(messageArg, ASTNodes.createMoveTarget(rewriter,secondArg), group); // Ersetze message durch actual - listRewrite.replace(secondArg, ASTNodes.createMoveTarget(rewriter,thirdArg), group); // Ersetze expected durch actual - listRewrite.replace(thirdArg, ASTNodes.createMoveTarget(rewriter,messageArg), group); // Ersetze actual durch expected + switch(arguments.size()) { + case 2: + if (oneparam.contains(methodName)) { + reorderParameters(rewriter,node, 1, 0); } - } else if (arguments.size() == 2 && oneparam.contains(name.toString())) { - // In JUnit 4: (Object message, Object actual) - Expression messageArg = arguments.get(0); // message - Expression actualArg = arguments.get(1); // actual - if (isStringType(messageArg)) { - ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); - listRewrite.replace(arguments.get(0), ASTNodes.createMoveTarget(rewriter, actualArg), group); // message wird durch actual ersetzt - listRewrite.replace(arguments.get(1), ASTNodes.createMoveTarget(rewriter, messageArg), group); // actual wird durch message ersetzt + break; + case 3: + if (twoparam.contains(methodName)) { + reorderParameters(rewriter,node, 1, 2, 0); // expected, actual, message } + break; + case 4: + reorderParameters(rewriter,node, 1, 2, 3, 0); // expected, actual, delta, message + break; } } - private boolean isStringType(Expression expression) { - ITypeBinding typeBinding = expression.resolveTypeBinding(); - return typeBinding != null && String.class.getCanonicalName().equals(typeBinding.getQualifiedName()); + private void reorderParameters(ASTRewrite rewriter,MethodInvocation node, int... order) { + ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); + List arguments = node.arguments(); + Expression[] newArguments = new Expression[arguments.size()]; + for (int i = 0; i < order.length; i++) { + newArguments[i] = (Expression) ASTNode.copySubtree(node.getAST(), arguments.get(order[i])); + } + if(!isStringType(arguments.get(0))) { + return; + } + for (int i = 0; i < arguments.size(); i++) { + listRewrite.replace((ASTNode) arguments.get(i), newArguments[i], null); + } } @Override public String getPreview(boolean afterRefactoring) { if (!afterRefactoring) { - return """ + return +""" ; - """; //$NON-NLS-1$ +"""; //$NON-NLS-1$ } - return """ + return +""" ; - """; //$NON-NLS-1$ +"""; //$NON-NLS-1$ } } From 5b746162cba0cc24b4aa24db62521705f8477670 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sat, 19 Oct 2024 11:45:57 +0200 Subject: [PATCH 08/58] fix explicit static import case --- .../corext/fix/helper/AssertJUnitPlugin.java | 14 +- .../ui/tests/quickfix/Java8CleanUpTest.java | 169 ++++++++++++++++++ 2 files changed, 182 insertions(+), 1 deletion(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index 3c8a0b8b..639ee123 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -60,6 +60,10 @@ public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, HelperVisitor.callMethodInvocationVisitor(ORG_JUNIT_ASSERT, assertionmethod, compilationUnit, dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); }); + allassertionmethods.forEach(assertionmethod->{ + HelperVisitor.callImportDeclarationVisitor(ORG_JUNIT_ASSERT+"."+assertionmethod, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + }); HelperVisitor.callImportDeclarationVisitor(ORG_JUNIT_ASSERT, compilationUnit, dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } @@ -101,9 +105,17 @@ public void changeImportDeclaration(ImportDeclaration node, ImportRewrite import if (node.isStatic() && importName.equals(ORG_JUNIT_ASSERT)) { importRewriter.removeStaticImport(ORG_JUNIT_ASSERT+".*"); importRewriter.addStaticImport(ORG_JUNIT_JUPITER_API_ASSERTIONS, "*", false); - } else if (importName.equals(ORG_JUNIT_ASSERT)) { + return; + } + if (importName.equals(ORG_JUNIT_ASSERT)) { importRewriter.removeImport(ORG_JUNIT_ASSERT); importRewriter.addImport(ORG_JUNIT_JUPITER_API_ASSERTIONS); + return; + } + if (node.isStatic() && importName.startsWith(ORG_JUNIT_ASSERT+".")) { + String methodName = importName.substring((ORG_JUNIT_ASSERT+".").length()); + importRewriter.removeStaticImport(ORG_JUNIT_ASSERT+"." + methodName); + importRewriter.addStaticImport(ORG_JUNIT_JUPITER_API_ASSERTIONS, methodName, false); } } diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index 67f486d0..8cffe5d7 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -304,6 +304,175 @@ public void test4() { import org.junit.platform.suite.api.SelectClasses; import org.junit.platform.suite.api.Suite; + /** + * + */ + @Suite + @SelectClasses({ + MyTest.class + }) + public class MyTest { + + /** + * @throws java.lang.Exception + */ + @BeforeAll + public static void setUpBeforeClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @AfterAll + public static void tearDownAfterClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @BeforeEach + public void setUp() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @AfterEach + public void tearDown() throws Exception { + } + + @Disabled + @Test + public void test() { + fail("Not yet implemented"); + } + + @Disabled("not implemented") + @Test + public void test2() { + fail("Not yet implemented"); + } + + @Test + public void test3() { + assertEquals("expected", "actual"); + } + + @Test + public void test4() { + assertEquals("expected", "actual", "failuremessage"); + int result=5; + assertEquals(5, result); // expected = 5, actual = result + assertNotEquals(5,result, "failuremessage"); // expected = 5, actual = result + assertTrue(false,"failuremessage"); + assertFalse(false,"failuremessage"); + assertTrue(false); + assertFalse(false); + } + } + """), + StaticExplicitImportCase(""" + package test; + import static org.junit.Assert.fail; + import static org.junit.Assert.assertEquals; + import static org.junit.Assert.assertNotEquals; + import static org.junit.Assert.assertTrue; + import static org.junit.Assert.assertFalse; + + import org.junit.After; + import org.junit.AfterClass; + import org.junit.Before; + import org.junit.BeforeClass; + import org.junit.Ignore; + import org.junit.Test; + import org.junit.runner.RunWith; + import org.junit.runners.Suite; + + /** + * + */ + @RunWith(Suite.class) + @Suite.SuiteClasses({ + MyTest.class + }) + public class MyTest { + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @Before + public void setUp() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @After + public void tearDown() throws Exception { + } + + @Ignore + @Test + public void test() { + fail("Not yet implemented"); + } + + @Ignore("not implemented") + @Test + public void test2() { + fail("Not yet implemented"); + } + + @Test + public void test3() { + assertEquals("expected", "actual"); + } + + @Test + public void test4() { + assertEquals("failuremessage", "expected", "actual"); + int result=5; + assertEquals(5, result); // expected = 5, actual = result + assertNotEquals("failuremessage",5, result); // expected = 5, actual = result + assertTrue("failuremessage",false); + assertFalse("failuremessage",false); + assertTrue(false); + assertFalse(false); + } + } + """, //$NON-NLS-1$ + + """ + package test; + import static org.junit.jupiter.api.Assertions.assertEquals; + import static org.junit.jupiter.api.Assertions.assertFalse; + import static org.junit.jupiter.api.Assertions.assertNotEquals; + import static org.junit.jupiter.api.Assertions.assertTrue; + import static org.junit.jupiter.api.Assertions.fail; + + import org.junit.jupiter.api.AfterAll; + import org.junit.jupiter.api.AfterEach; + import org.junit.jupiter.api.BeforeAll; + import org.junit.jupiter.api.BeforeEach; + import org.junit.jupiter.api.Disabled; + import org.junit.jupiter.api.Test; + import org.junit.platform.suite.api.SelectClasses; + import org.junit.platform.suite.api.Suite; + /** * */ From dde7e92d06b63b088f64137200fe9609ec15c501 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sat, 19 Oct 2024 15:23:42 +0200 Subject: [PATCH 09/58] Update .classpath --- sandbox_junit_cleanup/.classpath | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/sandbox_junit_cleanup/.classpath b/sandbox_junit_cleanup/.classpath index 7931ec26..e3a1fc6e 100644 --- a/sandbox_junit_cleanup/.classpath +++ b/sandbox_junit_cleanup/.classpath @@ -2,20 +2,14 @@ - + - - - - - - - - - - - + + + + + From 96c93fabd5d71884d84087c2b79df13fd01980b2 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sat, 19 Oct 2024 17:25:45 +0200 Subject: [PATCH 10/58] fill out preview --- .../corext/fix/JUnitCleanUpFixCore.java | 8 ++++-- .../fix/helper/AfterClassJUnitPlugin.java | 20 +++++++++------ .../corext/fix/helper/AfterJUnitPlugin.java | 20 +++++++++------ .../corext/fix/helper/AssertJUnitPlugin.java | 8 +++--- .../fix/helper/BeforeClassJUnitPlugin.java | 20 +++++++++------ .../corext/fix/helper/BeforeJUnitPlugin.java | 20 +++++++++------ .../corext/fix/helper/IgnoreJUnitPlugin.java | 25 +++++++++++++------ .../corext/fix/helper/RunWithJUnitPlugin.java | 25 +++++++++++-------- .../corext/fix/helper/TestJUnitPlugin.java | 16 ++++++------ 9 files changed, 105 insertions(+), 57 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index 233f75f1..8a017150 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -23,6 +23,7 @@ import org.eclipse.jdt.internal.corext.fix.LinkedProposalModelCore; import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; import org.eclipse.jdt.internal.corext.refactoring.util.TightSourceRangeComputer; +import org.eclipse.jdt.internal.corext.util.Messages; import org.eclipse.text.edits.TextEditGroup; import org.sandbox.jdt.internal.common.ReferenceHolder; import org.sandbox.jdt.internal.corext.fix.helper.AbstractTool; @@ -80,7 +81,10 @@ public CompilationUnitRewriteOperationWithSourceRange rewrite(final ReferenceHol @Override public void rewriteASTInternal(final CompilationUnitRewrite cuRewrite, final LinkedProposalModelCore linkedModel) throws CoreException { - TextEditGroup group= createTextEditGroup(MultiFixMessages.JUnitCleanUp_description, cuRewrite); + TextEditGroup group= createTextEditGroup( + Messages.format(MultiFixMessages.JUnitCleanUp_description, + new Object[] { JUnitCleanUpFixCore.this.toString() }), + cuRewrite); TightSourceRangeComputer rangeComputer; ASTRewrite rewrite= cuRewrite.getASTRewrite(); if (rewrite.getExtendedSourceRangeComputer() instanceof TightSourceRangeComputer) { @@ -88,7 +92,7 @@ public void rewriteASTInternal(final CompilationUnitRewrite cuRewrite, final Lin } else { rangeComputer= new TightSourceRangeComputer(); } - rangeComputer.addTightSourceNode( hit.get(0).minv); + rangeComputer.addTightSourceNode(hit.get(0).minv); rewrite.setTargetSourceRangeComputer(rangeComputer); junitfound.rewrite(JUnitCleanUpFixCore.this, hit, cuRewrite, group); } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java index 12bc918e..b7c04e84 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java @@ -79,13 +79,19 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder Date: Sat, 19 Oct 2024 20:43:26 +0200 Subject: [PATCH 11/58] add skeleton for rule test --- .../jdt/internal/common/HelperVisitor.java | 36 ++++++++++++ .../jdt/internal/common/LambdaASTVisitor.java | 35 +++++++++++- .../corext/fix/JUnitCleanUpFixCore.java | 4 +- .../corext/fix/helper/JunitHolder.java | 5 ++ .../ui/tests/quickfix/Java8CleanUpTest.java | 55 ++++++++++++++++++- 5 files changed, 131 insertions(+), 4 deletions(-) diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java index 6a9dbc4c..59da41a0 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java @@ -54,6 +54,10 @@ public class HelperVisitor,V,T> { * */ public static final String IMPORT = "import"; //$NON-NLS-1$ + /** + * + */ + public static final String SUPERCLASSNAME = "superclassname"; //$NON-NLS-1$ /** * */ @@ -537,6 +541,20 @@ public BiPredicate addFieldDeclaration(BiPredicate addFieldDeclaration(String annotationname, String superclassname, BiPredicate bs) { + predicatedata.put(VisitorEnum.FieldDeclaration, Map.ofEntries( + new AbstractMap.SimpleEntry<>(SUPERCLASSNAME, superclassname), + new AbstractMap.SimpleEntry<>(ANNOTATIONNAME, annotationname) + )); + return predicatemap.put(VisitorEnum.FieldDeclaration, bs); + } + /** * * @param bs @@ -4050,6 +4068,24 @@ public static void callFieldDeclarationVisitor(ASTNode node, ReferenceHol hv.addFieldDeclaration(bs); hv.build(node); } + + /** + * @param + * @param + * @param annotationname + * @param withsuperclass + * @param node + * @param dataholder + * @param nodesprocessed + * @param bs + */ + public static void callFieldDeclarationVisitor(String annotationname, String withsuperclass, ASTNode node, ReferenceHolder dataholder, Set nodesprocessed, + BiPredicate> bs) { + + HelperVisitor,V,T> hv= new HelperVisitor<>(nodesprocessed, dataholder); + hv.addFieldDeclaration(annotationname, withsuperclass, bs); + hv.build(node); + } /** * diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java index a80711f4..34bb1f41 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java @@ -351,12 +351,43 @@ public boolean visit(FieldAccess node) { @Override public boolean visit(FieldDeclaration node) { if (this.helperVisitor.predicatemap.containsKey(VisitorEnum.FieldDeclaration)) { - return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.FieldDeclaration))) - .test(node, this.helperVisitor.dataholder); + Map map=(Map) this.helperVisitor.getSupplierData().get(VisitorEnum.FieldDeclaration); + if(map != null) { + String superclassname=(String) map.get(HelperVisitor.SUPERCLASSNAME); + String annotationclass=(String) map.get(HelperVisitor.ANNOTATIONNAME); + if(superclassname != null && annotationclass != null) { + for (Object modifier : node.modifiers()) { + if (modifier instanceof Annotation annotation) { + ITypeBinding anotbinding = annotation.resolveTypeBinding(); + String annotationName = anotbinding.getQualifiedName(); + if (annotationName.equals(annotationclass)) { + // Feld- oder Klassentyp des @Rule-Felds bestimmen + VariableDeclarationFragment fragment = (VariableDeclarationFragment) node.fragments().get(0); + ITypeBinding binding = fragment.resolveBinding().getType(); + // Prüfen, ob die Klasse von ExternalResource erbt + if (!isExternalResource(binding,superclassname)) { + return true; + } + } + } + } + } + } + return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.FieldDeclaration))).test(node, this.helperVisitor.dataholder); } return true; } + private boolean isExternalResource(ITypeBinding typeBinding, String qualifiedname) { + while (typeBinding != null) { + if (typeBinding.getQualifiedName().equals(qualifiedname)) { + return true; + } + typeBinding = typeBinding.getSuperclass(); + } + return false; + } + @Override public boolean visit(ForStatement node) { if (this.helperVisitor.predicatemap.containsKey(VisitorEnum.ForStatement)) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index 8a017150..799aff0d 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -34,6 +34,7 @@ import org.sandbox.jdt.internal.corext.fix.helper.BeforeJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.IgnoreJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.JunitHolder; +import org.sandbox.jdt.internal.corext.fix.helper.RuleJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.RunWithJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.TestJUnitPlugin; import org.sandbox.jdt.internal.ui.fix.MultiFixMessages; @@ -47,7 +48,8 @@ public enum JUnitCleanUpFixCore { AFTERCLASS(new AfterClassJUnitPlugin()), IGNORE(new IgnoreJUnitPlugin()), RUNWITH(new RunWithJUnitPlugin()), - ASSERT(new AssertJUnitPlugin()); + ASSERT(new AssertJUnitPlugin()), + RULE(new RuleJUnitPlugin()); AbstractTool> junitfound; diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java index 680e7061..9d1138aa 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java @@ -4,6 +4,7 @@ import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.ImportDeclaration; import org.eclipse.jdt.core.dom.MethodInvocation; @@ -26,4 +27,8 @@ public MethodInvocation getMethodInvocation() { public ImportDeclaration getImportDeclaration() { return (ImportDeclaration)minv; } + + public FieldDeclaration getFieldDeclaration() { + return (FieldDeclaration)minv; + } } \ No newline at end of file diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index 8cffe5d7..9bc5b5c0 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -539,6 +539,59 @@ public void test4() { assertFalse(false); } } + """), + Rule(""" + package test; + import org.junit.Test; + import org.junit.Rule; + import org.junit.rules.ExternalResource; + /** + * + */ + public class MyTest { + + @Rule + public ExternalResource er= new ExternalResource() { + @Override + protected void before() throws Throwable { + }; + + @Override + protected void after() { + }; + }; + + @Test + public void test3() { + } + } + """, //$NON-NLS-1$ + +""" +package test; +import org.junit.Rule; +import org.junit.jupiter.api.Test; +import org.junit.rules.ExternalResource; +/** + * + */ +public class MyTest { + + @Rule + public ExternalResource er= new ExternalResource() { + @Override + protected void before() throws Throwable { + }; + + @Override + protected void after() { + }; + }; + + @Test + public void test3() { + } +} """); //$NON-NLS-1$ String given; @@ -554,7 +607,7 @@ public void test4() { @EnumSource(JUnitCleanupCases.class) public void testJUnitCleanupParametrized(JUnitCleanupCases test) throws CoreException { IPackageFragment pack= fRoot.createPackageFragment("test", true, null); - ICompilationUnit cu= pack.createCompilationUnit("Test.java", test.given, false, null); //$NON-NLS-1$ + ICompilationUnit cu= pack.createCompilationUnit("MyTest.java", test.given, false, null); //$NON-NLS-1$ context.enable(MYCleanUpConstants.JUNIT_CLEANUP); context.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu}, new String[] {test.expected}, null); } From 28fb7969da94a4277627a600dccf59fdc800cd06 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sat, 19 Oct 2024 20:43:49 +0200 Subject: [PATCH 12/58] add stub --- .../corext/fix/helper/RuleJUnitPlugin.java | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleJUnitPlugin.java diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleJUnitPlugin.java new file mode 100644 index 00000000..715ce65a --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleJUnitPlugin.java @@ -0,0 +1,215 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Map.Entry; +import java.util.Set; + +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.ASTParser; +import org.eclipse.jdt.core.dom.ASTVisitor; +import org.eclipse.jdt.core.dom.Annotation; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.FieldDeclaration; +import org.eclipse.jdt.core.dom.IMethodBinding; +import org.eclipse.jdt.core.dom.ITypeBinding; +import org.eclipse.jdt.core.dom.MethodDeclaration; +import org.eclipse.jdt.core.dom.TypeDeclaration; +import org.eclipse.jdt.core.dom.VariableDeclarationFragment; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.core.dom.rewrite.ListRewrite; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEdit; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class RuleJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE = "org.junit.rules.ExternalResource"; + private static final String ORG_JUNIT_RULE = "org.junit.Rule"; + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callFieldDeclarationVisitor(ORG_JUNIT_RULE, ORG_JUNIT_RULES_EXTERNAL_RESOURCE, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, FieldDeclaration node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewrite = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + FieldDeclaration minv = mh.getFieldDeclaration(); + for (Object modifier : minv.modifiers()) { + if (modifier instanceof Annotation annotation) { + process(annotation,cuRewrite.getRoot().getJavaElement().getJavaProject(),rewrite,ast); + } + } +// addImport(ORG_JUNIT_JUPITER_API_AFTER_EACH, cuRewrite, ast); +// ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); +// importRemover.removeImport(ORG_JUNIT_AFTER); + } + } + + public void process(Annotation node,IJavaProject jproject,ASTRewrite rewrite,AST ast) { + // Prüfen, ob die Annotation @Rule ist + ITypeBinding annotationBinding = node.resolveTypeBinding(); + if (annotationBinding != null && annotationBinding.getQualifiedName().equals(ORG_JUNIT_RULE)) { + // Finde das Feld oder die Methode, die mit @Rule annotiert ist + ASTNode parent = node.getParent(); + if (parent instanceof FieldDeclaration) { + // Wenn es ein Feld ist, dann ist das der @Rule-Typ + FieldDeclaration field = (FieldDeclaration) parent; + ITypeBinding fieldTypeBinding = ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding().getType(); + // Prüfen, ob der Typ von ExternalResource erbt + if (isExternalResource(fieldTypeBinding)) { + ICompilationUnit externalClassCU = findCompilationUnitForType(fieldTypeBinding.getQualifiedName(),jproject); + if (externalClassCU != null) { + modifyExternalResourceClass(externalClassCU,rewrite,ast); + } + } + } + } + } + + // Prüfen, ob der Typ von ExternalResource erbt + private boolean isExternalResource(ITypeBinding typeBinding) { + while (typeBinding != null) { + if (typeBinding.getQualifiedName().equals(ORG_JUNIT_RULES_EXTERNAL_RESOURCE)) { + return true; + } + typeBinding = typeBinding.getSuperclass(); + } + return false; + } + + // Die CompilationUnit für den Typ finden + private ICompilationUnit findCompilationUnitForType(String qualifiedTypeName, IJavaProject javaProject) { + try { + IType type = javaProject.findType(qualifiedTypeName); + if (type != null) { + return type.getCompilationUnit(); + } + } catch (JavaModelException e) { + e.printStackTrace(); + } + return null; + } + + // Änderungen an der Klasse vornehmen, die von ExternalResource erbt + private void modifyExternalResourceClass(ICompilationUnit cu,ASTRewrite rewriter,AST ast) { + // Erzeuge einen AST für die externe Klasse + ASTParser parser = ASTParser.newParser(AST.JLS_Latest); + parser.setKind(ASTParser.K_COMPILATION_UNIT); + parser.setSource(cu); + parser.setResolveBindings(true); + + CompilationUnit astRoot = (CompilationUnit) parser.createAST(null); + + astRoot.accept(new ASTVisitor() { + @Override + public boolean visit(TypeDeclaration node) { + if (node.getSuperclassType() != null) { + ITypeBinding binding = node.getSuperclassType().resolveBinding(); + + // Prüfen, ob es sich um ExternalResource handelt + if (binding != null && binding.getQualifiedName().equals(ORG_JUNIT_RULES_EXTERNAL_RESOURCE)) { + // Entferne "extends ExternalResource" + rewriter.remove(node.getSuperclassType(), null); + + // Füge "implements BeforeAllCallback, AfterAllCallback" hinzu + AST ast = node.getAST(); + ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); + listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeAllCallback")), null); + listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterAllCallback")), null); + } + } + return super.visit(node); + } + + @Override + public boolean visit(MethodDeclaration node) { + IMethodBinding binding = node.resolveBinding(); + + // Prüfen, ob es sich um "before()" oder "after()" handelt + if (binding.getName().equals("before") && binding.getParameterTypes().length == 0) { + rewriter.set(node, MethodDeclaration.NAME_PROPERTY, node.getAST().newSimpleName("beforeAll"), null); + } else if (binding.getName().equals("after") && binding.getParameterTypes().length == 0) { + rewriter.set(node, MethodDeclaration.NAME_PROPERTY, node.getAST().newSimpleName("afterAll"), null); + } + + return super.visit(node); + } + }); + + // Änderungen anwenden +// applyTextEdit(cu, rewriter.rewriteAST()); + } + + private void applyTextEdit(ICompilationUnit cu, TextEdit edit) { + try { + // Setze die Änderungen (TextEdit) direkt auf die CompilationUnit + cu.applyTextEdit(edit, null); + cu.reconcile(ICompilationUnit.NO_AST, false, null, null); + } catch (JavaModelException e) { + e.printStackTrace(); + } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (afterRefactoring) { + return +""" +@A +public void tearDown() throws Exception { +} +"""; //$NON-NLS-1$ + } + return +""" +@Rule +ExternalResource er=new ExternalResource(){ +} ; +"""; //$NON-NLS-1$ + } +} From 0f3756e3b6f5533387568320adf97cc41e96bea3 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 20 Oct 2024 11:31:12 +0200 Subject: [PATCH 13/58] implement Rule TemporaryFolder --- .../jdt/internal/common/LambdaASTVisitor.java | 10 +- .../corext/fix/JUnitCleanUpFixCore.java | 8 +- ...a => RuleExternalResourceJUnitPlugin.java} | 2 +- .../helper/RuleTemporayFolderJUnitPlugin.java | 146 +++++++++++++ .../fix/helper/RuleTestnameJUnitPlugin.java | 191 ++++++++++++++++++ .../ui/tests/quickfix/Java8CleanUpTest.java | 69 ++++++- 6 files changed, 416 insertions(+), 10 deletions(-) rename sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/{RuleJUnitPlugin.java => RuleExternalResourceJUnitPlugin.java} (98%) create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java index 34bb1f41..3e850357 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java @@ -356,6 +356,7 @@ public boolean visit(FieldDeclaration node) { String superclassname=(String) map.get(HelperVisitor.SUPERCLASSNAME); String annotationclass=(String) map.get(HelperVisitor.ANNOTATIONNAME); if(superclassname != null && annotationclass != null) { + boolean bothmatch=false; for (Object modifier : node.modifiers()) { if (modifier instanceof Annotation annotation) { ITypeBinding anotbinding = annotation.resolveTypeBinding(); @@ -365,12 +366,15 @@ public boolean visit(FieldDeclaration node) { VariableDeclarationFragment fragment = (VariableDeclarationFragment) node.fragments().get(0); ITypeBinding binding = fragment.resolveBinding().getType(); // Prüfen, ob die Klasse von ExternalResource erbt - if (!isExternalResource(binding,superclassname)) { - return true; + if (isExternalResource(binding,superclassname)) { + bothmatch=true; } } } } + if(!bothmatch) { + return true; + } } } return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.FieldDeclaration))).test(node, this.helperVisitor.dataholder); @@ -378,7 +382,7 @@ public boolean visit(FieldDeclaration node) { return true; } - private boolean isExternalResource(ITypeBinding typeBinding, String qualifiedname) { + private static boolean isExternalResource(ITypeBinding typeBinding, String qualifiedname) { while (typeBinding != null) { if (typeBinding.getQualifiedName().equals(qualifiedname)) { return true; diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index 799aff0d..2ee17c50 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -34,7 +34,9 @@ import org.sandbox.jdt.internal.corext.fix.helper.BeforeJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.IgnoreJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.JunitHolder; -import org.sandbox.jdt.internal.corext.fix.helper.RuleJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.RuleExternalResourceJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.RuleTemporayFolderJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.RuleTestnameJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.RunWithJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.TestJUnitPlugin; import org.sandbox.jdt.internal.ui.fix.MultiFixMessages; @@ -49,7 +51,9 @@ public enum JUnitCleanUpFixCore { IGNORE(new IgnoreJUnitPlugin()), RUNWITH(new RunWithJUnitPlugin()), ASSERT(new AssertJUnitPlugin()), - RULE(new RuleJUnitPlugin()); + RULEEXTERNALRESOURCE(new RuleExternalResourceJUnitPlugin()), + RULETESTNAME(new RuleTestnameJUnitPlugin()), + RULETEMPORARYFOLDER(new RuleTemporayFolderJUnitPlugin()); AbstractTool> junitfound; diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java similarity index 98% rename from sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleJUnitPlugin.java rename to sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index 715ce65a..b67a5334 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -47,7 +47,7 @@ * * */ -public class RuleJUnitPlugin extends AbstractTool> { +public class RuleExternalResourceJUnitPlugin extends AbstractTool> { private static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE = "org.junit.rules.ExternalResource"; private static final String ORG_JUNIT_RULE = "org.junit.Rule"; diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java new file mode 100644 index 00000000..25c6715b --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java @@ -0,0 +1,146 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Map.Entry; +import java.util.Set; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.ASTVisitor; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.FieldDeclaration; +import org.eclipse.jdt.core.dom.MarkerAnnotation; +import org.eclipse.jdt.core.dom.MethodDeclaration; +import org.eclipse.jdt.core.dom.MethodInvocation; +import org.eclipse.jdt.core.dom.TypeDeclaration; +import org.eclipse.jdt.core.dom.VariableDeclarationFragment; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class RuleTemporayFolderJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_JUPITER_API_IO_TEMP_DIR = "org.junit.jupiter.api.io.TempDir"; + private static final String ORG_JUNIT_RULES_TEMPORARY_FOLDER = "org.junit.rules.TemporaryFolder"; + private static final String ORG_JUNIT_RULE = "org.junit.Rule"; + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callFieldDeclarationVisitor(ORG_JUNIT_RULE, ORG_JUNIT_RULES_TEMPORARY_FOLDER, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, FieldDeclaration node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewriter = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + FieldDeclaration field = mh.getFieldDeclaration(); + rewriter.remove(field, group); + TypeDeclaration parentClass = (TypeDeclaration) field.getParent(); + + addImport(ORG_JUNIT_JUPITER_API_IO_TEMP_DIR, cuRewrite, ast); + importRemover.removeImport(ORG_JUNIT_RULE); + importRemover.removeImport(ORG_JUNIT_RULES_TEMPORARY_FOLDER); + + VariableDeclarationFragment originalFragment = (VariableDeclarationFragment) field.fragments().get(0); + String originalName = originalFragment.getName().getIdentifier(); + + VariableDeclarationFragment tempDirFragment = ast.newVariableDeclarationFragment(); + tempDirFragment.setName(ast.newSimpleName(originalName)); + + FieldDeclaration tempDirField = ast.newFieldDeclaration(tempDirFragment); + tempDirField.setType(ast.newSimpleType(ast.newName("Path"))); + + MarkerAnnotation tempDirAnnotation = ast.newMarkerAnnotation(); + tempDirAnnotation.setTypeName(ast.newName("TempDir")); + rewriter.getListRewrite(tempDirField, FieldDeclaration.MODIFIERS2_PROPERTY) + .insertFirst(tempDirAnnotation, group); + + rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY) + .insertFirst(tempDirField, group); + + for (MethodDeclaration method : parentClass.getMethods()) { + method.accept(new ASTVisitor() { + @Override + public boolean visit(MethodInvocation node) { + if (node.getName().getIdentifier().equals("newFile")) { + MethodInvocation resolveInvocation = ast.newMethodInvocation(); + resolveInvocation.setExpression(ast.newSimpleName("tempFolder")); + resolveInvocation.setName(ast.newSimpleName("resolve")); + resolveInvocation.arguments().addAll(ASTNode.copySubtrees(ast, node.arguments())); + + MethodInvocation toFileInvocation = ast.newMethodInvocation(); + toFileInvocation.setExpression(resolveInvocation); + toFileInvocation.setName(ast.newSimpleName("toFile")); + + rewriter.replace(node, toFileInvocation, group); + } + return super.visit(node); + } + }); + } + } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (afterRefactoring) { + return +""" + @TempDir + Path tempFolder; + + @Test + public void test3() throws IOException{ + File newFile = tempFolder.resolve("myfile.txt").toFile(); + } +"""; //$NON-NLS-1$ + } + return +""" + @Rule + public TemporaryFolder tempFolder = new TemporaryFolder(); + + @Test + public void test3() throws IOException{ + File newFile = tempFolder.newFile("myfile.txt"); + } ; +"""; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java new file mode 100644 index 00000000..12371328 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java @@ -0,0 +1,191 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Map.Entry; +import java.util.Set; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.ASTVisitor; +import org.eclipse.jdt.core.dom.Assignment; +import org.eclipse.jdt.core.dom.Block; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.ExpressionStatement; +import org.eclipse.jdt.core.dom.FieldAccess; +import org.eclipse.jdt.core.dom.FieldDeclaration; +import org.eclipse.jdt.core.dom.MarkerAnnotation; +import org.eclipse.jdt.core.dom.MethodDeclaration; +import org.eclipse.jdt.core.dom.MethodInvocation; +import org.eclipse.jdt.core.dom.Modifier; +import org.eclipse.jdt.core.dom.PrimitiveType; +import org.eclipse.jdt.core.dom.SimpleName; +import org.eclipse.jdt.core.dom.SingleVariableDeclaration; +import org.eclipse.jdt.core.dom.TypeDeclaration; +import org.eclipse.jdt.core.dom.VariableDeclarationFragment; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.core.dom.rewrite.ListRewrite; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class RuleTestnameJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_JUPITER_API_TEST_INFO = "org.junit.jupiter.api.TestInfo"; + private static final String ORG_JUNIT_RULES_TEST_NAME = "org.junit.rules.TestName"; + private static final String ORG_JUNIT_RULE = "org.junit.Rule"; + private static final String ORG_JUNIT_JUPITER_API_BEFORE_EACH = "org.junit.jupiter.api.BeforeEach"; + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callFieldDeclarationVisitor(ORG_JUNIT_RULE, ORG_JUNIT_RULES_TEST_NAME, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, FieldDeclaration node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewriter = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importRemover = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + FieldDeclaration node = mh.getFieldDeclaration(); + rewriter.remove(node, group); + TypeDeclaration parentClass = (TypeDeclaration) node.getParent(); + addBeforeEachInitMethod(parentClass, rewriter, group); + addTestNameField(parentClass, rewriter, group); + for (MethodDeclaration method : parentClass.getMethods()) { + if (method.getBody() != null) { + method.getBody().accept(new ASTVisitor() { + @Override + public boolean visit(MethodInvocation node) { + if (node.getExpression() != null && node.getExpression().resolveTypeBinding().getQualifiedName().equals("org.junit.rules.TestName")) { + AST ast = node.getAST(); + SimpleName newFieldAccess = ast.newSimpleName("testName"); + rewriter.replace(node, newFieldAccess, group); + } + return super.visit(node); + } + }); + } + } + addImport(ORG_JUNIT_JUPITER_API_TEST_INFO, cuRewrite, ast); + addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH, cuRewrite, ast); + importRemover.removeImport(ORG_JUNIT_RULE); + importRemover.removeImport(ORG_JUNIT_RULES_TEST_NAME); + } + } + + private void addTestNameField(TypeDeclaration parentClass, ASTRewrite rewriter, TextEditGroup group) { + AST ast = parentClass.getAST(); + VariableDeclarationFragment fragment = ast.newVariableDeclarationFragment(); + fragment.setName(ast.newSimpleName("testName")); + + FieldDeclaration fieldDeclaration = ast.newFieldDeclaration(fragment); + fieldDeclaration.setType(ast.newSimpleType(ast.newName("String"))); + fieldDeclaration.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PRIVATE_KEYWORD)); + + ListRewrite listRewrite = rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); + listRewrite.insertFirst(fieldDeclaration, group); + } + + private void addBeforeEachInitMethod(TypeDeclaration parentClass, ASTRewrite rewriter, TextEditGroup group) { + AST ast = parentClass.getAST(); + + MethodDeclaration methodDeclaration = ast.newMethodDeclaration(); + methodDeclaration.setName(ast.newSimpleName("init")); + methodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID)); + + SingleVariableDeclaration param = ast.newSingleVariableDeclaration(); + param.setType(ast.newSimpleType(ast.newName("TestInfo"))); + param.setName(ast.newSimpleName("testInfo")); + methodDeclaration.parameters().add(param); + + Block body = ast.newBlock(); + Assignment assignment = ast.newAssignment(); + FieldAccess fieldAccess = ast.newFieldAccess(); + fieldAccess.setExpression(ast.newThisExpression()); + fieldAccess.setName(ast.newSimpleName("testName")); + assignment.setLeftHandSide(fieldAccess); + + MethodInvocation methodInvocation = ast.newMethodInvocation(); + methodInvocation.setExpression(ast.newSimpleName("testInfo")); + methodInvocation.setName(ast.newSimpleName("getDisplayName")); + + assignment.setRightHandSide(methodInvocation); + + ExpressionStatement statement = ast.newExpressionStatement(assignment); + body.statements().add(statement); + methodDeclaration.setBody(body); + + MarkerAnnotation beforeEachAnnotation = ast.newMarkerAnnotation(); + beforeEachAnnotation.setTypeName(ast.newName("BeforeEach")); + + ListRewrite listRewrite = rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); + listRewrite.insertFirst(methodDeclaration, group); + + listRewrite = rewriter.getListRewrite(methodDeclaration, MethodDeclaration.MODIFIERS2_PROPERTY); + listRewrite.insertFirst(beforeEachAnnotation, group); + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (afterRefactoring) { + return +""" + private String testName; + + @BeforeEach + void init(TestInfo testInfo) { + this.testName = testInfo.getDisplayName(); + } + @Test + public void test(){ + System.out.println("Test name: " + testName); + } +"""; //$NON-NLS-1$ + } + return +""" + @Rule + public TestName tn = new TestName(); + + @Test + public void test(){ + System.out.println("Test name: " + tn.getMethodName()); + } +"""; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index 9bc5b5c0..2156c6fc 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -539,7 +539,7 @@ public void test4() { assertFalse(false); } } - """), + """), Rule(""" package test; import org.junit.Test; @@ -565,8 +565,7 @@ protected void after() { public void test3() { } } - """, //$NON-NLS-1$ - + """, //$NON-NLS-1$ """ package test; import org.junit.Rule; @@ -592,7 +591,69 @@ protected void after() { public void test3() { } } - """); //$NON-NLS-1$ +"""), + TestnameRule( +""" +package test; +import java.io.File; +import java.io.IOException; +import org.junit.Test; +import org.junit.Rule; +import org.junit.rules.TestName; +import org.junit.rules.TemporaryFolder; +/** + * + */ +public class MyTest { + + private static final String SRC= "src"; + + @Rule + public TemporaryFolder tempFolder = new TemporaryFolder(); + + @Rule + public TestName tn = new TestName(); + + @Test + public void test3() throws IOException{ + System.out.println("Test name: " + tn.getMethodName()); + File newFile = tempFolder.newFile("myfile.txt"); + } +} +""", //$NON-NLS-1$ +""" +package test; +import java.io.File; +import java.io.IOException; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.api.io.TempDir; +/** + * + */ +public class MyTest { + + @TempDir + Path tempFolder; + + private String testName; + + @BeforeEach + void init(TestInfo testInfo) { + this.testName = testInfo.getDisplayName(); + } + + private static final String SRC= "src"; + + @Test + public void test3() throws IOException{ + System.out.println("Test name: " + testName); + File newFile = tempFolder.resolve("myfile.txt").toFile(); + } +} +"""); //$NON-NLS-1$ String given; String expected; From d57215319f9a1fb196f71e5e44e5a4a413d314a2 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 20 Oct 2024 17:57:51 +0200 Subject: [PATCH 14/58] add some fixes but ExternalResource still not working --- .../corext/fix/helper/AssertJUnitPlugin.java | 2 + .../RuleExternalResourceJUnitPlugin.java | 165 +++++++++--------- .../fix/helper/RuleTestnameJUnitPlugin.java | 11 +- .../corext/fix/helper/RunWithJUnitPlugin.java | 4 +- .../ui/tests/quickfix/Java8CleanUpTest.java | 104 ++++++++--- 5 files changed, 168 insertions(+), 118 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index 19d77bcc..7beb9ff4 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -141,6 +141,8 @@ public void reorderParameters(MethodInvocation node, ASTRewrite rewriter, TextEd case 4: reorderParameters(rewriter,node, 1, 2, 3, 0); // expected, actual, delta, message break; + default: + break; } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index b67a5334..c467f892 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -16,28 +16,24 @@ import java.util.Map.Entry; import java.util.Set; -import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; -import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.ASTVisitor; import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.FieldDeclaration; -import org.eclipse.jdt.core.dom.IMethodBinding; import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.MethodDeclaration; +import org.eclipse.jdt.core.dom.SingleMemberAnnotation; import org.eclipse.jdt.core.dom.TypeDeclaration; +import org.eclipse.jdt.core.dom.TypeLiteral; import org.eclipse.jdt.core.dom.VariableDeclarationFragment; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; import org.eclipse.jdt.core.dom.rewrite.ListRewrite; import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; -import org.eclipse.text.edits.TextEdit; import org.eclipse.text.edits.TextEditGroup; import org.sandbox.jdt.internal.common.HelperVisitor; import org.sandbox.jdt.internal.common.ReferenceHolder; @@ -49,6 +45,9 @@ */ public class RuleExternalResourceJUnitPlugin extends AbstractTool> { + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK = "org.junit.jupiter.api.extension.BeforeEachCallback"; + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK = "org.junit.jupiter.api.extension.AfterEachCallback"; + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH = "org.junit.jupiter.api.extension.ExtendWith"; private static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE = "org.junit.rules.ExternalResource"; private static final String ORG_JUNIT_RULE = "org.junit.Rule"; @@ -64,6 +63,17 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, FieldDeclaration node, ReferenceHolder dataholder) { JunitHolder mh = new JunitHolder(); + VariableDeclarationFragment fragment = (VariableDeclarationFragment) node.fragments().get(0); + ITypeBinding binding = fragment.resolveBinding().getType(); + if(binding == null) { + return false; + } + if("org.junit.rules.TestName".equals(binding.getQualifiedName())) { + return false; + } + if("org.junit.rules.TemporaryFolder".equals(binding.getQualifiedName())) { + return false; + } mh.minv = node; dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); @@ -75,43 +85,54 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); FieldDeclaration minv = mh.getFieldDeclaration(); for (Object modifier : minv.modifiers()) { if (modifier instanceof Annotation annotation) { - process(annotation,cuRewrite.getRoot().getJavaElement().getJavaProject(),rewrite,ast); + process(annotation,cuRewrite.getRoot().getJavaElement().getJavaProject(),rewrite,ast,group,importrewriter,cuRewrite.getRoot()); } } -// addImport(ORG_JUNIT_JUPITER_API_AFTER_EACH, cuRewrite, ast); -// ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); -// importRemover.removeImport(ORG_JUNIT_AFTER); } } - public void process(Annotation node,IJavaProject jproject,ASTRewrite rewrite,AST ast) { - // Prüfen, ob die Annotation @Rule ist + public void process(Annotation node,IJavaProject jproject,ASTRewrite rewrite,AST ast, TextEditGroup group, ImportRewrite importrewriter, CompilationUnit compilationUnit) { ITypeBinding annotationBinding = node.resolveTypeBinding(); if (annotationBinding != null && annotationBinding.getQualifiedName().equals(ORG_JUNIT_RULE)) { - // Finde das Feld oder die Methode, die mit @Rule annotiert ist ASTNode parent = node.getParent(); if (parent instanceof FieldDeclaration) { - // Wenn es ein Feld ist, dann ist das der @Rule-Typ FieldDeclaration field = (FieldDeclaration) parent; ITypeBinding fieldTypeBinding = ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding().getType(); - // Prüfen, ob der Typ von ExternalResource erbt if (isExternalResource(fieldTypeBinding)) { - ICompilationUnit externalClassCU = findCompilationUnitForType(fieldTypeBinding.getQualifiedName(),jproject); - if (externalClassCU != null) { - modifyExternalResourceClass(externalClassCU,rewrite,ast); + if(!fieldTypeBinding.isAnonymous()) { + rewrite.remove(field, group); + ASTNode parentNode = field.getParent(); + while (parentNode != null && !(parentNode instanceof TypeDeclaration)) { + parentNode = parentNode.getParent(); + } + if (parentNode != null && parentNode instanceof TypeDeclaration) { + TypeDeclaration parentClass = (TypeDeclaration) parentNode; + SingleMemberAnnotation newAnnotation = ast.newSingleMemberAnnotation(); + newAnnotation.setTypeName(ast.newName("ExtendWith")); + final TypeLiteral newTypeLiteral = ast.newTypeLiteral(); + newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(fieldTypeBinding.getName()))); + newAnnotation.setValue(newTypeLiteral); + ListRewrite modifierListRewrite = rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); + modifierListRewrite.insertFirst(newAnnotation, group); + } + modifyExternalResourceClass(field, rewrite,ast, group); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); + importrewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); + importrewriter.removeImport(ORG_JUNIT_RULE); } } } } } - // Prüfen, ob der Typ von ExternalResource erbt private boolean isExternalResource(ITypeBinding typeBinding) { while (typeBinding != null) { if (typeBinding.getQualifiedName().equals(ORG_JUNIT_RULES_EXTERNAL_RESOURCE)) { @@ -122,77 +143,31 @@ private boolean isExternalResource(ITypeBinding typeBinding) { return false; } - // Die CompilationUnit für den Typ finden - private ICompilationUnit findCompilationUnitForType(String qualifiedTypeName, IJavaProject javaProject) { - try { - IType type = javaProject.findType(qualifiedTypeName); - if (type != null) { - return type.getCompilationUnit(); - } - } catch (JavaModelException e) { - e.printStackTrace(); - } - return null; - } - - // Änderungen an der Klasse vornehmen, die von ExternalResource erbt - private void modifyExternalResourceClass(ICompilationUnit cu,ASTRewrite rewriter,AST ast) { - // Erzeuge einen AST für die externe Klasse - ASTParser parser = ASTParser.newParser(AST.JLS_Latest); - parser.setKind(ASTParser.K_COMPILATION_UNIT); - parser.setSource(cu); - parser.setResolveBindings(true); - - CompilationUnit astRoot = (CompilationUnit) parser.createAST(null); - - astRoot.accept(new ASTVisitor() { + private void modifyExternalResourceClass(FieldDeclaration field, ASTRewrite rewriter,AST ast, TextEditGroup group) { + field.getParent().accept(new ASTVisitor() { @Override public boolean visit(TypeDeclaration node) { if (node.getSuperclassType() != null) { ITypeBinding binding = node.getSuperclassType().resolveBinding(); - - // Prüfen, ob es sich um ExternalResource handelt if (binding != null && binding.getQualifiedName().equals(ORG_JUNIT_RULES_EXTERNAL_RESOURCE)) { - // Entferne "extends ExternalResource" - rewriter.remove(node.getSuperclassType(), null); - - // Füge "implements BeforeAllCallback, AfterAllCallback" hinzu + rewriter.remove(node.getSuperclassType(), group); AST ast = node.getAST(); ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); - listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeAllCallback")), null); - listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterAllCallback")), null); + listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeEachCallback")), group); + listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterEachCallback")), group); + for (MethodDeclaration method : node.getMethods()) { + if (method.getName().getIdentifier().equals("before")) { + rewriter.replace(method.getName(), ast.newSimpleName("beforeEach"), group); + } + if (method.getName().getIdentifier().equals("after")) { + rewriter.replace(method.getName(), ast.newSimpleName("afterEach"), group); + } + } } } return super.visit(node); } - - @Override - public boolean visit(MethodDeclaration node) { - IMethodBinding binding = node.resolveBinding(); - - // Prüfen, ob es sich um "before()" oder "after()" handelt - if (binding.getName().equals("before") && binding.getParameterTypes().length == 0) { - rewriter.set(node, MethodDeclaration.NAME_PROPERTY, node.getAST().newSimpleName("beforeAll"), null); - } else if (binding.getName().equals("after") && binding.getParameterTypes().length == 0) { - rewriter.set(node, MethodDeclaration.NAME_PROPERTY, node.getAST().newSimpleName("afterAll"), null); - } - - return super.visit(node); - } }); - - // Änderungen anwenden -// applyTextEdit(cu, rewriter.rewriteAST()); - } - - private void applyTextEdit(ICompilationUnit cu, TextEdit edit) { - try { - // Setze die Änderungen (TextEdit) direkt auf die CompilationUnit - cu.applyTextEdit(edit, null); - cu.reconcile(ICompilationUnit.NO_AST, false, null, null); - } catch (JavaModelException e) { - e.printStackTrace(); - } } @Override @@ -200,16 +175,36 @@ public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { return """ -@A -public void tearDown() throws Exception { -} +ExtendWith(MyTest.MyExternalResource.class) +public class MyTest { + + final class MyExternalResource implements BeforeEachCallback, AfterEachCallback { + @Override + protected void beforeEach() throws Throwable { + } + + @Override + protected void afterEach() { + } + } """; //$NON-NLS-1$ } return """ -@Rule -ExternalResource er=new ExternalResource(){ -} ; +public class MyTest { + + final class MyExternalResource extends ExternalResource { + @Override + protected void before() throws Throwable { + } + + @Override + protected void after() { + } + } + + @Rule + public ExternalResource er= new MyExternalResource(); """; //$NON-NLS-1$ } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java index 12371328..1e4be5fd 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java @@ -25,6 +25,7 @@ import org.eclipse.jdt.core.dom.ExpressionStatement; import org.eclipse.jdt.core.dom.FieldAccess; import org.eclipse.jdt.core.dom.FieldDeclaration; +import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.MarkerAnnotation; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.MethodInvocation; @@ -67,9 +68,13 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, FieldDeclaration node, ReferenceHolder dataholder) { JunitHolder mh = new JunitHolder(); - mh.minv = node; - dataholder.put(dataholder.size(), mh); - operations.add(fixcore.rewrite(dataholder)); + VariableDeclarationFragment fragment = (VariableDeclarationFragment) node.fragments().get(0); + ITypeBinding binding = fragment.resolveBinding().getType(); + if(binding != null && ORG_JUNIT_RULES_TEST_NAME.equals(binding.getQualifiedName())) { + mh.minv = node; + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + } return false; } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java index a63f9a26..176d9581 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java @@ -122,8 +122,8 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder Date: Sun, 20 Oct 2024 19:30:41 +0200 Subject: [PATCH 15/58] fix spotbugs issue --- .../corext/fix/helper/RuleExternalResourceJUnitPlugin.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index c467f892..e5db9e61 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -111,8 +111,9 @@ public void process(Annotation node,IJavaProject jproject,ASTRewrite rewrite,AST while (parentNode != null && !(parentNode instanceof TypeDeclaration)) { parentNode = parentNode.getParent(); } - if (parentNode != null && parentNode instanceof TypeDeclaration) { - TypeDeclaration parentClass = (TypeDeclaration) parentNode; + TypeDeclaration typedecl=(TypeDeclaration) parentNode; + if (typedecl != null) { + TypeDeclaration parentClass = typedecl; SingleMemberAnnotation newAnnotation = ast.newSingleMemberAnnotation(); newAnnotation.setTypeName(ast.newName("ExtendWith")); final TypeLiteral newTypeLiteral = ast.newTypeLiteral(); From 31ab10df190f4d3cbf731e456f5a9e6d659fa5de Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 20 Oct 2024 19:56:25 +0200 Subject: [PATCH 16/58] add rtstubs18 --- .../testresources/rtstubs18.jar | Bin 0 -> 678139 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sandbox_junit_cleanup_test/testresources/rtstubs18.jar diff --git a/sandbox_junit_cleanup_test/testresources/rtstubs18.jar b/sandbox_junit_cleanup_test/testresources/rtstubs18.jar new file mode 100644 index 0000000000000000000000000000000000000000..225d910051ddeae5aff308fbd045bafacfd201ab GIT binary patch literal 678139 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⪚syWm01BgQ956D1zMFg!Jv_P57l|fFK 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

S5pP2LCX&nZ($#~Md|mq*)4Z6cH`}~< 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

335gV;IIPtKvwSD0*4?yAPqQh z6Y%+SH2$^w_Fv}k0X?{vymm z&8@Pha`JVFS=R$3n?JVdL@>n->5!jQ}=C z7LtfkbpJsoM-g9xh`5WB7=_x}09ikvmrb1Arq8s?n0yEA@dun*{K0%~b+TKuOm>&Ciwpg=&5FI+?134AXe1nJii zvws=T{|~0=|M35Rna~|j2tSR;?Ds~*^8+ZtJD`3sBU)*|jP{~rE8m6RSyF^7wLZ|p z4TFsl$af~V^tTaX!2!nFcI|N>x zXpIcnpPs?3;am}bbR382uv2y!kLTGI&n=0-M_lV4S#nDp2r)xKWGZ1cnK5GwOHvY~ z_)AM2N;whK?9Z`Ry~R&U%Q(GFK}N1S_&imGvVuU{)Gu=TY3kiKcv&{Fjf@Gb*$Y(x zm(#4(Y|f(vss6IcpiV(8p5*6T^|?cu9EmWAEDjyxY`cx|)f!|yGVCl>?=kg+z7^bf zUy8g&15w&;2*;hS>ls8H+e=iQ*V->;WmyFOaVd2Nw3Xm1fKu0kIQ}{r_P4$L2v@&B zGhS9o0;oegkPRkE%C&jiVy7f%S6)(r3y`CPyv!ukSdJM9G$i`)7mJ*vEP}{B&|9fI zG%)`5`FabrjU>VV%>M+H&khir3I>(!ZPN3SEzt8DkSm(hjLgp}A`p?J>lR|R2-0bk zNx%6&R#BRlN|AvfkbEmA`r4tsLNgcr#ISME|JYO|Te`tMz_^#X`*SX$;3%4C^C|8+ z;l=Z@oo1!Qg{8$FN*+YJ47STaTh?pOgHsjQM79m7mJdr|L?C+bsmQyZ_K7B>69r`~ zbgr`XvoOX^lttLjWA`=@p7XJP|MIj(G(>3a{+>Ys1)up5fMn}~NdBt2{f*?mC}Kcl zOG$?;kmzzrZ#27RL^aAM=G2O90g8xtwP`m^WJmO|>(kr1J62>zguY*)F$A}N#Bk-h za_|WJJQx9i6T*SP?m!F4#-VB@A4#TLM!x?GQ6^CwRJjW&!`skLd!QOJkm0rN@(Kr1 zS5$(AhSf{e2t6(Hw|#oI8vMnvj-CEzgy@G6&GyL}WZXz%EfgD=*<4pOm)E&T!VK;! zSc9EW{N&k5{9Z-)iiIL_O6A2iyKo^?TB{U-S}aq`kF@WinMqWlT?c>(>4TX3s*3$L zCbITMhGqtOjz1qc440|0?vRD$4vON3si8s!l}LK)Xi!oV6%|#4!CA?J!zI^c= z(^1~o&)~B(o5gGm`7kndAfGz&hNd79A=V5U9Xs}j9p4mjYSZEqDabM;fqID5@~eT2 zx6gG<(AR-IcFdQ#PB#~Ol;8tAYxlbum+T{@?rt+h{x4A7<;Gu2jDX0h5TNxXT&l8s zstBh*q!7-^z{H8tZm`bZ<&L9)tM;lZ{j@3U>38od@+uWL+8V!IUr&_j*2qQNHpp}^ z#B48m^w@;d^5KO?CrvtDc~ZoVe|C?S_tWha05hc18E>Q;={QIaD!3+hM%knBKn z!s{F#)pTVMg;SyH!h@p5iBl0o^^&Rs)}wn^%y9%{y8u`y{#RIj&mTX17n3xxFe;s9 zaaJ}1Bf%%1%hW@rO-qg1zpzES6R}r<*HE}LU{}Arh8?SE3>f0YFVA+n7UxWHsGepDvH?msK8YJjK}v9#%n|szGUF6cb%+16Qn=HVjzMj z+C0o3e+Xc;|4#lMK>qy?g~a%o{jGkV{aNlLu)+f1eU$%_z({4680hF)i4hH@8HoIv z;X5#rj)OV)x&EzyQT#>$tIk!_$OI1E`QX7HEE9gUejreogUBJI@eHRk2v{mS;VQ4F zszxHgKmZ|}<;yH}vp+ySY;jlFMY(vyNBNG-*Jw%KSl1+IesXn`&YK{EiP(Q-#66iC zT;*dbIV(He#Z<3SKQf)t(g}l5>{!d3IML#FgIWV@$l|I5c*>OPoh*Dq(V0ORw2m^q zTQ(==cb&QO$gRd5gM{L?uV^*5rs&a*+o#Y`*PT4~&YYhzZZ(1NT8C}PiQ_ZN%H(8n z<16Jmjmx_$F3U;p(s<}-`q$}~dxX?Z50DmxwANKHnP(^=d6!#^? z)K6XX_eSxnE*km|U6gbTr?B7U=1;ISOXhBPwcEwMi8X70RScIZX{Q09hW{mKxh%Jn_BK80wiTnBZf#=zN!Twa*$`S%y~) z@jy9!tLVdZmrjqMpJ&{u#OM#&!msmO}|NJs3( zbq^QIg5~4Cepg6BL%~47iuj!c;%?L$ST6)A3DgY-arIu>E(}z&_e;N2 zD5)%I~_A1Rp!Ig0@qVFr-1Y(>Fcni%#;1l_|r( z-~T{B1w*ayWGj$K29ihRDRJ%!_Ik$)=_JzXNguxz4niqUXAWe-^;%v?nf~OSws`-m zMD=EmPbwN}TS0^)sXelYc*cBAJ-s*zl3flBjF|9*zN~^w*$J(}dFTW^@dp+yTp>RC z{EL1ewth2o5jVD~DpVDk|3yD`Va1m+ ztZ5n~gR;%{EdJAfbp8fq@CM-ypHBcep|IXTY1RgPzN7h=A26rR#r8 zoxM5+tL!A~@vpQ7rrPOxN(P$bCHE8$K5R6NU>z6?K@QsVn5&d3jN4N9=Nb10A`nZ~ zn@Ovtw;(%gmSRfkaX3_<@=Sntd_0H1@g!OZWc(IS>-G#01bkC2DU}EdcOy&g9O~#k zM-03fz`r97wGSTk52_PD9DY;5g-7v8bm}7XWQH=BT`Op%FUC3yX}4ZiYw?so=F8*# zdB-S;i~0&h^C9^aK5T+8OS3MGRpg4;?6^>)LMDw9Q;nvQApc3yFze?X8G89d2VH=!Yr~+x1A0r;I9|4H!;XsU!F6$lyJzWKhn7~ z7k_+r^3MQ%l@GehA4-*f$JD=*&9zvV`kbojJm4qdB9(|J0e#ug|!WL25rln%PF(;uNvHn7LvWp+i>sTz$X2~csDbS z`XC&Cpk#_R{|3Y;^1kOGa(Mp29hDVLSs(pA`-W#h`hs6csdf%LxWXnXHX`_G|#z&Rx&p-#+LPJ5QEdST)AMjIVq~9O}QhqtQr?m?9$y6LD?yE;gEA zs(U?aG?v)}ipJ(R6!w*api{X%8Y!2!@8*+shwX6Rc0S&lXNU`>Vc`pd;o?d~TmBpj zg!S=AoH`KC>IFyV`Zkq??Y9viMLr0e1u^23YL!A4&AB@%O<4}JIj!A$n(W%S`CSTn z_=dqBI@I?R{oly^N5uSdhx(qN-|3it>QMi!V$%Ge=jgxC^Z)8l$NlI~6VP`89qP0E ze^D{<-%zn79ml@A4)tBb=g*<^4`SPI*r!osE09BAds@#6Yj@W+*76L}8`;$m8zG+v zjBR)(RHvn>RH?M9-1mHr)ls{^1;3EAwk7tSI7842%!-E7b5_Ef*wf_Ik1Caklr)n+ zjn{UM3kT0uk&h|v()bL=J>$>HmHvUH4_17;Y0#_VSrC{B5mL9K=SScbpd9<{ksLGB zOqJ*U?VKv=I2X!>`ebfdiY036lti#zaPN(inVrwwM)eOgzyxtcqTI5f22B@>u+&Lc z)BWm-y9+>@0T3V{!OW!%+5teYAM}tvL1ksg zi%|6y8;lpM#N?zQaeQrIeV_x{M5@f5wRpC2#4c8@v}DJKTVzhxvSx{)r?R7w ztKels!N5s$t1QDvxv#v1_Y%Z!H&Jn7!AsLpQ6Ee*nRqv#z58gr9=j%fTr&%J;)pnW z7CKN+12;h|TAZ-4)nQeU4r5t}{x}v;>_cl#!5Zi}c^9W32sE)xRrSQk5br&k(%j^}V^hWG z@vJLzj+3?r;hW43%^rqIwS)3115K2oFOqPQl#f}pDqJ|f`A1VqERO6+^FzjVI|=}L zIGt8G)Hku2UJusK&tsw3DiBsx?W$hRNMa-jR#E@7+QA1_JF%A*2<};=EXhsihEB0^xV-Ax7UzpX9M#511-D1*1Ql+IO zm`~eLC13kX@E{z-c+G>TAotLfyEbj9EY2x)Ga-JGBC~;Hn|F!6Pzfo<>vm{i<&Yur zbrxXDo;e_p7kzD4aV2;m%ODH8{ke$ntKG%s^HxtkK6e$MTqCf(PbZ;rBW8;LT(J+r z^@jo%7&5s-?AO@#A71gJar|G8M*h|H^SI5UzGD@izBg}7EKU9Ow8{OWkx`EKqi-7e z_P~9{D1w4@KU#~=`ItRF-vLpTSC1R$YpXy+0zsUvgsSS8(hZ{M>chuWOi_tRPQ^-4 zOG}Q6-AzhN)QN$#Hvm*Y?ig^kqDf>2?h|qOe-6fNKL%*W-JM1Q{k2E>kfE_YFfaTJ z-(h0hV^d0v^0epwn`-~ykpMP7>i=KS`Ns?ncBpE8l{}&_Fm*Df>xEaC))h|d;+Yn3 zw@n$n76H(LfLElA4>}3J=VKiR-*~v zEFdw7pr@E4`D`P(O{b#LvHzhv8CyrvLVhs##g^l9E2xvsXK%04&6?1Ar7Dt@oAj~$HXs^#ajUlQn;eGYK!_6Ltn z2>k7D+TQ;NsPXbYDd%F(r5axeq_4LBSNzAvhC%|u*;(Z3+^&lSi*HG+>F3XzxL+MX zoac6lS%xeutZ5s68czLY%(ud)z4{2pU@=f+4mZSPomBLRHQ)Gqxol?}!g+=F^b?}N zvV#~tW1!y}x#Hdv#D#@%Or;O5)*5g6$hIhe(nunS33l%|GTKUS<7Km$UvyT^Cuxz^ zn83IOSIjjKFFS$Kv5YyzVSgRBb~%|t>(h$vWAjGm33`$&>gF>J;;vGhEa8`ME*kwoJFtm>j_73IA zH;UYjhT-G@w-u$Twx&1kh!Qv|7_}2=+HYw)7!5c~oQATWrKx92qgtpwb6_pl{V**x z#ZeGz{W$Z^0za!_b+ZA1nh5kE3;cr+duM_Fw^q&RZ(21!W|jXM_rd?!tFe2aSCjaE z>eXbpkra!V1@{-vScbud!4ARVw?Wp#0V5b)`nnJ?mi#GxKgW1NUo$Oc0|wUhpb7p# z8Tg&&h5syl6c&5V=Sv|FZC*xcayMk_!uTSPPp$P2GFuNO7%EJJ&v{M%D1DZ~!9_rw z=8c@sTHI`sJnna|2WJGKtvim$;KYgMx7SPs%Qe7(i#t?d(HORq(s9>7wS*+R&3KaA zuSwb?lxVx8>VD!x;>ef}LFLOH`aZdnTf;V=dL%dez;|u6IN4YME#?TJM`ip_Teww? zulcpX_-&+wDk9Wpy&H0^)$jY4cx+AA9_G$P5bINX^(X9Di3>%NE2a46D-TbXzkfBBM`5zyRBq3LfObhN^aX2$B=u_`nj-}5 z7xvdki;?B0L*B$&pnG~hBU$OH1H;y^Wp#M=DZ}9%Q>M=0vq!XchPfTKj3{&+V&Ng_ zo+U!SMDNlt2sWA!6-1XHd|K~{Y+ztEWzXh${Ce5-QPYldf&^?h8OvBl9&*2|jl+TS zI~gM`NzqM1aS@vy#RCKB%jby%UwliAmJh_`4}BpHINWwB3cf*#S~n3JER!N8*9JtK zS5Mu}oQkojz8PG`5us9uo)X1Wzc72XOk2UDy=&HjG1}cc;no^fyCJ=XeanvgYnVQ9MJ|TwI@y?SaW&XWUC#l%TguE zZ_`?~6kxfYNLHgvw$ZA?46T6pff%nW_dZ@u4i#FvZ#|fhc#;YNUkJy8&i-q`X|88a zC$48N0BgXOh!sJ1}R20KVom!91Q+v|aofSgn>Qa-@7r$U{Dk2aVTE z(-=U*3bi9#VzVW7vD?q2h5qHP2aI2|Om4`C2RtdHi z92G4ko}JlOX8%^v70YZq%PMim_JCn(9i)*)GbyVIWf4BDRl8CqE>@<4%oXIE_V42; zmM4~I`l+_(T<#E@Fen1aWf1{m14j2g1WhR+2g38EJK(o-fxN`!teZkl`oq zN=uZmg1ADGT*TBNh&kcYNrUlRwvD{9N|(He*A_a^e?x%WAU%P!e&2!k8jaPt4cKWM z0N$VTH1;o+{1Z4)Gt0kbK4Mm-kp)nCTB~Wa$nzIwe7&K&`OL!mwO^}Py?Ct_6N5%) z-nhWE{G@Pj@iB(Ym>S(M5lw$?m_~ za8B49EC+h13AU0A2{*;x*w>SHX#N4WG&&xVYWX_%%xCq=)xKu+6lzNv63+kN6%R7` zvJDcNMj>c^{5+B2Zn%v9{?)ok16YUsW0*cf`|=lWW=x)1imcqeqfX>Ts}Gs%uOMPdC$unTYbf$wNbP4c zEngTlGU=>7%X}0e=L9Hd;2U!9kaGhM_`wbWAh|!w0DH{yTy1sfUYl$+;ck(E5xmN& zVJ!4FFUJ*Qu}98QYbE)hK3VZK9BZe_k44Z3?#(AuUk~2hejG+}luBP}J-QYHGRx#c z2?vUr#zf#telxuo>NjLACFrvgpO%uq+CFK69f>kMm!LoR>c!S^gz?fxm{UmU&j&*% zyLj1iTgXHvxKPiJVTH1t2}NpLsAVwTH? zRYL56Q^jPp7?HSh+?i0E;9QY6c2=ON5?TpLnDJgkG?s;wT#CtwFXrdktv6Veb3i@s zi!5t@=`DWX`zU%a@8JK=TmQH($NGL^x%fXcrmTz5<4xBuE2B{^N`^qLi-thnaT9^2 zN*QY#2jkvf4aWeKYzI$qN_5}>O)_}k@;CPV@UrTwJFeqtD<)^G-3UCf=|>1E3jw^a z`B;rVoEsH!ui)3f#m{b#=sjJKduFN z$V=c+Rf%Rl*Z3^(7GEf@vBUIR^V0~^ zD3?Gzw+}S)S|qN^Xs}Esz`D#4gh6y`jE#J2g*=2#O)OGl%o$)zQrfwkYTDtn))}mo z?&Xr=MFYW0b!Vm3t`7b-qM1O*PUR?k`I1bcMWn`o{Klz;XeX6W-cIND^oWdtp~Mmd zMj~*LskocUZjq4v7W49&O>ng?48fU7qO<%hFQzG_(YXpOF=JpH39qTv{V`PZjd-$TI{fe9YDJbSb?+!B`F_zqhKDi9oh(3k)Cs0hk z7VtSndz8wJi%QOb>cCUkW`;m3SdG4O6LrveDNB)o(Q`q9iL+-sqA$4S(y8&!kaS$~`rGEo zXWTXha{_z+^avdBXpUu6T(j ztR_U=rTW-jeJgp5S{5(M&p(&`8b(h$6IdI+ZpNW>Fl2YG^>NC(QYF%BM_~aUMI$nJ zmus2H4*}c1#KlP_P3IaxFhD4Efb%*FdB*^L@A$LJ0Y6Fdv^6mjT31;2&bVs?{OnAz zTte>|dT&9q4=938=Q-3n%5$5(Wi{55VI!(| zJ&VI5Qzn&BKvEX+nFRK}i%Jw%rG0k|n)AUR@^7vr;OJ;?rtjovvB*?TZPerti(c0zD$oc1`ZEP2wdXYvZ+{F-F& z)u&#Dk*MGZ$CefA+NzerLomZ>770s?y3M-q1R5-~PTz}FNtVDe8djR&d2`I(`gbdp zIGy&IpPVLjU+feZFIp=&WK0TaAtzvSz{b{PC--m)Ex3xHcPv&=Seo=z)^L&}^RW6G zaiy4u`}Dg|%iiggCm)=8IK+F9(f;aJH&;I!?>1Bm<0EB&_6kCF%*(-=h~b*pCgd8uOyGXCsLEey>e`O<%57223>fLGFR~uRQP{GyRbX;+5`q z_wo#?WChfX!S6ws$Io~xO{t3r7;{QK!>Hn=pM>a5eBxqC4<-r1be`%y_V**`@>x*C zm>+zWmmCfnOk560y>4zUpRRGNyntlbcfNRy9#oKn)}%?7kyKDo6Ieh`ER4Zwsko(H zc>aDG)k;AyjKC@WBm$ne3zPNDYnIwKP%H9Jgx>W+!0tUoZyky^( z3xVvCLnTO`wooiby*Hi-iUH?Bqc8n9<7fmLKG3l2gPx^YDKUMO`j^Vayo)5-m)D49 zc?%xHA3}^Jnd@8X_CY&$~7IA{DoIUlZLyV>?O zS_H&ZQVxxuzP3t7Glz%un68ttdbVAv+4ejJl!jq^*Fjpnb_-bihd@+{@{Z8@*hb5OjJo^yn;ufCR=AB8i01_5XE zQQq^>Jo;cRed*=caB}%JLZoq8FK=3o(5GPdPiAeqnNQC7aw3UNrqYzTdtk7bm|ux~ zzMxEKv)E9II=`>7F1^E@ya8L*f_RA2{JYAM)ibbQq^JK$X=Hy;8X<{#7$xYAVGI^L zbvlx+)E;2r1hIYlRS5RvLRmriW&Kyf4j*6~j!_b3$-8AJ)#F)pwbyMZi8nSZ7?!_4 z39r&uIa0N_67H0ei#=0zlu9U1DWidAVR)J1j6|?cv zuCS&EL&54d+OkgNVo1b^*!-W4A|K_gbOwguq(>jrDQ{NmlVj`XL) zsOaL^0sIsw(8S&!APJ7gR)Br){qlO75V`$Zp%LE8F>B})pR;Viu)UbpOBs(wXK%-(P3F7(- zVp9-eSU9=x#-p1OiQ2fm9vR5Mp|aMe!D!LMseR>{bCSR_MF}kH!DuNmddye}uZV%& z1_f~Xhd;SQFxOraNp8CZJcSZKFrDsipu!SOJ}(xgh_gI*{onev$2d<+jc0D1 z55wO)@`~FOb4CUGu4^JaI-gq2=3-<0W%E=0q3~Dly369A@%@b3aXQD%EVa3lT)|-* z_jmR0Tv_xmPZj8Lqo>Bdb}sw2w2)ylwRH&|KMF*s zZPZiGvF0*bryqdqti(NcQ^QamM?Q6`4%ss8rcDi0qkLJQRsPCYWDTu0XRl%T8M;L7Kw`5cYb6$q!Z22NbqScHnF4IhuRw!Su*mJU0#= z=aBY@6PtP>eJ!rF!JIXPDy^1ZVK+eGls;*ekH&77Z*7mIxXW5dkPn>}7~eQ(CR}`# zCK~^;&rGtoH|>i!&lYpV6jC8neuhJe;_j0|iu{nY0*X%Z*$8zj%x<53`jix%N;uJ8 zE0Lb$&ky+l-f(~CVgjOuCiH+YjOo`zsj#V$|EeV4-* zmod2VTU+BCxyg8047uRc^$Ih!^(Z~Lq^?F$nK%8rj9sI4RxeDxr>Cdv_I{dp6-QH^ zg*+%L8urm~#%d=hy`!I2$xyA1X#Qv%)zGm~4`+W6_y?A3MhvhTRhf9+;~%omaP|fK zjENdnFUfC}pxA_Li+5Z&kv!T=rPI#e8#qs6NA`v#cYh<0Vd~El942;1`QrVt>|@%; z$&`kV0>eTnK`fD`c+=bk9B9#j_RMnrG2N|ry2(NaR!eF*M0J1(XPNIsjUm(FjzvY6kf>ib`p_fx1E_V*c|@axvqw`g|rii6LDZ^ zu6H1V_am;cmq1e<9Grd_u7D%U9gaK`=*o*b_?h8FasOOh)7jl`ngbl?2{7eBQ1L9^c>_~o#`WWp!^gC}s@w0^r`V5DjzoiCeWqb916aBB)Sr$7?pti~ zptc}xat6t})5l%>|Mocl$#3plzp`+q6>k z5iS}ebNHs&4HT-cU6Yf0%X0hcFSMzyLkCp}Z*n6$371xiBv2uj5TrXsM8%!T9$~tT z8j-1NK)WE}_Q(+pCJzcX*6)?@2&Ks8e}*0q85@N=o7_I{6xS@FdS?c&ansnd&nq9e zbld|*sp7n0#M=BYI6as+`#^3|6sWD>3C?6^9Q7EtpKzK<`QjqC6T?SriNq zWaeOO*voWS8gV@8E5lBY80gVgoqM{fPn(8&NmCM5^s1-$a|A{2hpV|!-nuGZ2u35f zVRjWO1<|UyWo!-s-`5JF#mU`I)`7X%u09kWR7uWb$q`!+F7G!;htxNutj9g0XeJ!) zlHEUFI z4o|+n?zNUV(VxSmP*yTkMom!)Fn&6dcVS*hJFMc@ByTCSeuB4@s1F}ECu9~VML`D< ziNqUwQMYCXJBgI^*vag@mB<+x^gac5?7=t9@#;X3SJ~V1aQosd`xLHHPY&}pnw#ZK z-zVrF-S6!nN{ZdH0YVKK0@QaqT zjMw+?XSk2*bQJIJsxgEUUpm@ zoIV`o)0Vr+*hcvuv*%g$;X&S-)trJ(6Vo@%nwOH&QYHyneBN1}BStGx9^Bo1Qx(nt zWJp;S6lWHN+Hra3?>FAPPgu=A9(r0L+P7^&34&7-N@rz1_4v@k0*VaRR>TPw<3zk_Cg> zxSxIlbsoaSB2zDy8aX8Xg46CHgULiM(*KbsGK8G}azCy zie86uAfcn%#cj#ZOI>7}6n_~+aa&Nsq)sQOL!HM17^8(7;*=Ey8v%;$6sU9s8~KXv zZj==pyU^5|BT7qZZEV4aUpQ_Ai01~tl#|+yQaVp@aND^r=A_=m@3~gRxHz@(+$dxGVwfJc$tCE{kZBhPso_D~2PwC*mSL!pf;me=4h0HN z+mND;iif?mc^dCO^r?gIeGqm9B?0EuQR!G(mkU(mjr2A1R~GB-ajus(R^FB2o@1ao z{j<_vk(Q(fZ`fZxwRZ7ayqaByxtrCSgC= z6pwEA!w}{2xk}Zy{a?g3U8^s0Cdd_hr|S(IECLc{cbt5MKq%79kovl-;VS}@9{c(S zV{+?0MIjVp)Vg4T8l2jxJy9+wX0nBbKTx!d#ka$RX05C!&>S=KSxvbANsD4WPJP$<09;0 z_6Ay?Y-0lTKu2G>O-QXR%{w5;JIm_{POQ(+iG?iZ-sJCxYpumc)ihlBNN8+_yHD-SGJk6XFD7Z#fBU9NBe$K8Ce5d2kH{Aq2XX4Zx> zwhliNOLWWKV7e$@A)lEb1r0qtV;!}gE}}&_|<9AYB0KWRxm; zoo>r%A`_FfXV;!DGlnID2f2VgA2x5=zMJbu>ytcz?%bOJ710|RyOznT?>6v6sv|%` zclktBR_#L={+FDSwL{N}R)GzXXpO?Y*G}(%+TgPcJVBHspiN~gYj8G0--*Sf-nl=USlX) zdUEo6vm_MzY!1KPTfA412{n(6D5KF$*`tL&tn+RR8vPkWp->FJA*>66*N|(sAdU+7 z$+(ZsOfW}?lpfF3_BZ2~YP|McCu{_K9-!MwIzov6Yz15wgtsf)vfL^pO5K%NezXM0FS1Swy>**KTWrdBN6^3_3_ zRm=NPS|NT*9jp$|wVC4&QU+@KIv}CoMMPG9my8c)+ys3)w+kgu>UYaqk+ar(kfHs$@JzSb}pS;4?LU$NzjCG;+lpz&@FfZ=4wI7bn zn!ZuxR@8g-L?qrJ*<|+Zl=YrMw>2PpkoB#7tzH5;`C!%80o@j-H~*1D-q9h^z$M85 zd?iTcxlD~GWt&}22rfHj>YmYk6VVe7mT|lf8zXANzEuQu#w-6B;(EmUr=``TAC;j1 ztPJ{(2`c{I@}0jdO~Kg6+0gjk@4G?ucghpTJMFKaL0*+;>c){!TCEpQL7j?7ABs%j zyx3NP)xzFre?q7Swxzky3kd-MPyI;VKTeEsVpQ0eXU@8P$#cKrc#f@knbo!K^{$(! z7&+&Q-svzmYni+m*PIu+nn~4CBW!Nu+|`pvvPiY`cI2T;S;Y%c84_XgywyCcCAdla zC=^JY^LaOAA9OsbKI|R>vd5lOnKcgK0oB(_r-sL_4gDP#!DYv?WfwzN3h*|Qi^5$^ z9}IUN4RcvD*7EEi0ogHCgm{DXign!BX)JfOST`}@ZHpJ0)CW{zhY%#wxN9A< zOD6I5ux8+U?l_}$VPl3)Y!B9?tGE=vo7XUGDV2@EQrm~!T=)Zok$ZJVHV}?wxjop0 z8@eXX^{gnq}A>*)f-vpMwj3t#$_a7hmtWuCPgL$-nBMh2Yxg`ko`0zS2yt@pfn zIT;73TES0npv$4EYCYm>X0!`wxDDd`P}+(jk%wp?qsBSj+*T^Yg&(fJrCV&2mEa%`$pJF+pP|%iCKvD%`{Nm zAlVVxZ;*Zrx{k0v-831>SEI}>MxT~JS|8dmMZXfpmsf&CN8{yk&*%k~xj zivX9Qw(K$^ip&!ihT{lv0~8;KszAOFpl8-XqM~RO6rV3E;|ak`!5qrtf^0OBuv58* z)T+W)IO%x+c9W;ZL$v5eJsBQvMB`EKIdQVcROc)@>V5wDi1rSbpAJS5gcj$h>-f>f zG}&$5v3PB4{)H5V31s3)K(VRy@#vMn+Ra=XK`r?}VOks0i75IAy-*AXXl!xxsehu| z!Y$BxSC_rsy51=Y)d6MX8z@jp>r{i2?Z!tSOAB1dkAiX*a|qh z_*5Osh6G6`0mw2*LEV*8Q5l-*J*adc9~h6mD{yX<*dGE3O3;oC$Ct=g2~bGJpVd*8 zj}XZv#MPBZ!Us4uuR(|%%ng-_JgqJ7^w#sQD8TF!I`RExR1gtHSVRw|aTMy^OBb*O7YF!RT z9eK*=rQd}pMa2+b?rSaE@c>KI)SD`!T%>Yymex|tyKpa&+VPclSl$0<>r?E3Zy% zmYas;n<=`fDDO|Q9>cjQ*5FrPWGRVMpE37LItN?BV zJsPn_YECgjOlIdZs^GLfs^*dMaGA2dAp%0HZCM==6xqm$_Bc^PyrVK7=ntU#EO^Qq zDot(qO_SW=TQ8O+5!VQb0VPJ_8MgA1)42Qg=$WxS&lVRLR&1Z`qF;n7Jzvq1DMl-W zbFv-v`<`J`un@E_=VKD{`)m~yD=nf-Cc-dG$@A6fGWFdu-act3-Byc*66!p)0b|N| zH&2B=E@(4XZ3Lv$>F2sb?73o`zC|0*H57bC|u_VW(qJQMIds?i^Aco^V6nPFkG^lkuwr)x_kSrPtQ#jF=9Cu&!)W z?4nA372+S3Wf+%sF*(N%rmXu|E_#a1)EkTHWSlNv*!wl+xty?0kDas|s{)54(JF0O z^f_!K<$@2K?shEEq`2KagOl;h7kvNN^$-%Gs-Eyo6*1??Aw^uT)L7Fs4sii7z9i?J zIe)=o*gUr9Q0T0+Ji7}o*p`06_mqdXP}Z||J^Zh2Yk>hCnyk+A1vZ!$IS&@n1N>ZY zRSF>03tOhB?`*#6z1xE~hL`D~=r7uY9x_Fk?Bj@>Bzk?vyYoQQkJkqpNk`a;eDnsf zHFiNU1QlG>ZHnz3`9P_)?TT=TW|y&z72K8H&BkH!qb_>;fvUf06Lv@{_*~Qu_ssq? z-sL>PGYt2;i{+r_d$C}=KBUMb&-PyXo*~SkbwZthb9S$zZNedveq*)m2aK&-@K@Z- zCr(zqxVKl}ElChtk&CF0yAPmSS-t4Xn6sCZ-7sbbTv7ISY$C6B%g|QasZkC(k`6jO zlia33`_UgKvXbk9=7TbDyD~AwAL+_c;^|Ii9|4aacpZ1;9=oLb{1g z0n=CW1WXA%Czp)B{R|egQ9AVY00aYmls^F`$v*`PzX6k2(AnI|=wC(BU!$r3(O_pp zyg>L~qWtVHzP-V{FwDe~K2*^pp=vj1Pr=w6raNMtVX3}9hgB_we1+*L&Rk4wP4Jq| z@v3a!RenRG2QOl3iI$BKtBKn!iFGv9O1WMp3>8X%WQJG`MV8`m#wBG!*#RQm+!6bs zbbud)c-kB?5eiU4ErbTTO-FKXyw~Jyb|qHZHY+vO$qyZAJXh@rgcj<()kOqsS_JMj zPB1~TAI?XpOS3_AIQ^avea-Gt5j$dfTQ&CiUg*uF<9y0}_-TJTab)R}M%iqHabk&d zw%EaZJX!F0k1N@;-)D{XjSuHCdSNjG!`-YNTxNCm0iUMymp6;$4cs@|R&H@yslL93 zdVUdVG=}X(h?F@-`gz&b0^@JqNfDq(45;h<6#xD!1^Z74{&yqc zzt$dZ#pcfTYrW{vqi99PsmE%>tHtUnjsIHt_f94G=gPnHtoVdfEkK{ZBrYXM-C$_A zyFBOT?A%s*R_y3N_jvb6U-xMDV0QPrc>Q zLcMOST?m6LPW6)Zd67nIMXWr%szHYb&;*M1=oFE5CfF0Y>Oy|tVia^lvJ7mUxr2IY z(_J$x2ALAKkF%I=QVDI2nIm`GNR^@>?hBmpBBeyA zD)~sdC9FM;K^-6fYg~l$p?*1Tr6{&k4K4sx=mV9CIxKWjr0&jjG9^pI;L~Jh%MWFh zTJ8t?LT^3>;nnJGz~W#i&WtWfX-E93%y~_(qblFC63#jq0pZ)#1Ga)t?FCf-ge{z)=}3R4yW%W+D5t#QT!72WN=~u z!Qhe#VOT`SZHOBF3b0r(a1Lr`lb@5VCV*S}zqH{0+}Q7`NQTO>3lbYVE=LF&5@t3{ z2XQ?Jc(u9Y>Jw<2&w_+xxZe!BITQu5F-@EA?U{>enhABQiV^wW#Wp4Q`V;gf|#IWOFZEUoZKU zRUFxhD^E^URc4w>C@(|iH6!t>GcA-5YPH1dcV5bCo6iD+SbwY!({pYZE#lA<&WO$z z8ffY)b*P5gopff(!1qZbg-k^h2?v4s<}m=Nj&nOO*m?GFf)w%$>KNhFoN)>)m_AZ) z7+&)ZeMS2!itEhj+QWmPKfj*+y$U3ebm0{Y$WbF__fs-m2b+J}-qQ`bOzIdI3^y8W z5Ncs>=%P52`u3%Qr4h;lyPN;~6>->7Ea~-tgLT@-MVPSV>9=dENHPgTgOUN+wEmLI z%Qo~11t4#wPh^#ANT#J8ZOIx)uJN+itt1?wjp1Djmv#u=G8h{ryr00w(=aakK0G4U z4Lb-e;z7In6P$0#=*TKzB2$%W_iO)f6|oiwpngY%Z^u)Zt6-Z>3>C;Zw5&Az+{Pf` z=S{6_rCAn_J+Du;P5X&6Z3QlW+o63=PjX^Puf71jIaMjqP}_9xn7}16R(5&krh2I_s6N;EjWd+i=>SFuvb|1lDf27(c)|aD_1};3~7tV0FJe z&)y~HSr>j9DQ7*_k<|`P40ViYtH^o*Lw`P{)LU` zktDqf)VA#Q6LTljH6+?bZSOsEC!8uWtwlTJJhDy@Ndz16n!jd@C({1dg^z}=4;;$c z_lFoAy1pSuJ|8(0uRuAg5M8rpg>6-hbIXYJZkzy=V$mnhuxn+{$TrOLp448<*%(D% z=LP;((#U=IU0t8&l4_9k9NE+p-a&nGs_tjwy)yIY0uCe@3qU61;KVi}nsl5v|gS1ar1OA0mX6dIiR~c)%qv{`>xP zLI@OIcM#*myB^W7*l#i(`(A)qxtY6P>~4rVXEP8mp&!B##CO1k*ka*11aKuxR>qYRx9TK$}1N+tmzVLWQ z+p*n&vMu>W#YKzkdCt5VpI4LLaKLa9#brC~d!!Fa^n*9=rZ4gJC0Fp_loJgxXudtD z#Y(`OL3Yux)Unt!Ydvt!2sb9K`&Y2{N|MA=?n#KK9OOb;L!BXL8EKTRUDd2Ao8~)G zshb?sLV8lf>foy4Q?4wWuKeee zcO>yOv^k-lzgIK#lp;7Xt1v5WYz0`&^4kmiCouahZ1DIWZp2@K*_UzO+4S*trKs6--+!wbD^Z{zf z=wAXE0lJm&z%anmC;W-{(I3LhtW7r-z?Hi}iBr&YK7`gqOWBB)w z6tE7%*5NNgNQTl^*=2t8bQ$q*q3j%fsYlC4bBG%~_YlgY)G;w_ zk?GD^W$Bc+-@p!plwY=pNg;InPW-yG&&NMAwS9kmxqpKDLRV}_PH(l^!ly+Pn`wJv zG`xBqh=fLV1%xf5r;9 zestdX(;!&c`FmnGZ4CdtU7rdwYsQ1fd4$Sv!HEsE3L=jspT&;{8Wo9)!|-_JOxO|E zwnS5jI{4vU7VFzNi{tfVS&cX1(?61pn`7qechv9wodTaMD6Y;k)>#9jSHJ89%P8nN z_T%mA?v8RY7lCtC>Rtj*VHhiCu#7B%NWoZ=eRh=GNHHe^>D-OLdQ#lUIQZBBk!zV1 zMVM7glr_*j`_0r4Gv6(p=q_HE%l0BiO5~=5cCHYfoBMWEC+eQrN=8e{ycKhep*-IJ z-30Gr8}u=TH=z(kB_=Pul~D%4s+r$=ULRVX8$6tVS7R~92$L`+jJfGey74u*_bB5C z#gf}Vdxi@@K9DaQPbqq+h~r@(is{|629Hi&Fmy<-vA$j5C?wt(Rfw;apx!99@z2WT zB+s`>yr(oB^9ReMYX)uQhCxTTbN5R3V?Ta@+H<#8<__Sk#Q(AL`;YC)e>F4yvqmmL zS<@C#9zGKo3LLavoKD9=lcqHr<@~##I5b@Y3C;TxKe|0+*y__-DVIr$ExaocBu{z( zK>_$#evo6V_6s$&-1vCPd7ABBy87!cVohd`4hRqk>%<{gYEyIWo{SCs(pVR-kRPj? zUn&|xG`Nu{g^aePMqm$fCf#x3pn6&P{SV6RaeVkQ#s<3Z(@|t|N;UL;?on8E5dww3Mm6QXr7E=inyblbMLc54mE%mxl`9 zB#b)-4B-76*z@&p62=y1$l;rDgW&xk+OLY)rcSUcFffJyux}QnLvJeWaYZe-o^w9_ zCDLNC3DM>dMRXZty0))Gp(2itgUeJVa-V=>xp?!u*4&wMT=;HEDtf1nnl}*S!(g9% zy~T}TL`vf56bso3id$>A85gx7jy^Gh&QzKb4q@z`w@EM5FULZL-!l%oztotJ!s?&6VM27Z6^w zfv+cWQGl&+xR+h`^kyq>- zZ70SOh!?(S+7!s#H0dqh+UBisRr_^rh#L^&Z%tLXWH1|%PWT#{f}9b`b?;*AY|P6) z?4;#g;||-%exHz7VBHF;*g?&1IhVVB=b{aeEO{8<@L=DkhKtfV8p_;-;P!C_%c}Nl zqV_3zxM%n0yH~k0FuC2NX@CC3Y!}?QWc}IGv-l&ko&29tUj<_mV+Ug!L*sw>kKdl7 zAZgWMSr~a}a!J;zNJ0bH+6Of?-fKZNOw%l zMhjvp4hwRuOB}jp6+B7{FhiGSKa^HtSYRrECz3TEy$9?;djd%lv9kxV3{#L^UPXV})Ii4Cs#ZsKopDD*9gHHmMa9aS{}+ulu(dj2Oa$ zMxQZ2(5?cyA6m0Aj3Ob$)rxDDdp<>4vNKATh3(gdZ72l8%D|9T)#M5EEM^vNbA#iG zPKYC!P9ra>jJ0cNKG#fJr+yq(tfhm4=MF|*y`XLOGAg+phB>aaSF^xw|A^A2wF#*Z zN0ouPZZ^h{(nHE+vRaM69f|DX%iYEiF!P%f2uD0(eYk>a)?-20}k9K3zh{f}xHx0#}fdg7vw?o=} zx~o(r_iZ177Cu-}qh~H+8|0+I(5v)y83{d(SkWC0B4WxT=+T;IWPV9UP~zwN*$H6A zOF0#b>{2>)P1CQ;fqA?(L+usU6rT?2x!elNV60)nHbj}2Y0~N|K3j{Fr_I-a{pn37Dvm8?^Rw_&V5S&WH`>D9w5WfUG@CoD8VI>%?MfG&={EgGn%&hhy z@;=K{0?nZaA54v*%~5eTI@R{>kTTy-1Dxq1WVl`T2V|)!Oog&yy&^eKm-Q@I3>vg& z!O!9Oravr)%(DnV?O;70*mNL6OO7cQ>&}GJuPtq&jotaColcn8Xl3Vlz1D!fOTT)k z+;~pEkdb1$@pVbtpXF59rsvLN(9(+$T4jSj+-{J8G=VIMZ&0XZl==x*JR9jU*+I#V zBXE2nxeoYx={b(Bq>CgL6MyVM9@rGmy z9Qrs*vup|$^qxt#TxJh)ws;E42S+Fy#XX@9ioRU&En|ATzEKp8Q9UbY$zgK-$#N9e zUt*34xO1gb7)RiV1{lG4{UD81a7=ny25VGtuh?Nn1W>+{D;Tm@_Hw@J-r(^0z;M1^ zUp(yC;$8>5Q$*8a-J~#XME7b0O~x_%SU8gGgYyu}NF%E4k}Z=0Ypg(Ef|e=2M-@0h z`&lN%7M;_hS}w&FgL55%e!b6;GYO)Jc5z+eKnvwuoX@o;U9~P{%QE@}bRUxH_dq?q z5)JInZJ`Z+tTz+>6I}kTN-3J@+x^9W2#8$=@EVbax{@l7;V2`0ga-9|i!}wfB6yt% z4$6&ctRRe~F!AaqIHei|8zYV05+cEZMYrm_<1g2wrUvkj#}4<`&N=oy&N}$KJ$b+` zkfTVX5q4nP4JXls1%?j9c-D_GVc{mo&WDqt@sl@0BheaRsIZ+N;(3k}8cgRXQF}r? zwL2vS=9XTU_Z-^<21>Q7PPKgRYS&!#HIvw_=P=ujv9W!h(0&gG%-)Yr z70r+LNz2=NqlvK2eLx}ME3G}+Z4`)HC3-#kNYa-eOebzaSJq6OL)Vwi$8~pa9gsF- zGP58Z=7UF&0`JDL`KEQoCaD`G&>y4&ry?$B?;;eiciAba3u{jfN*D#^Syr;$nBv#u zP1ax8;MqJC*+q^(uCW;*V4<*4MPSuoTZn^<54lM6{oRIS!mBr$x4_khWFo6i((&H{ zR5K0EDb85MIvAT`J7c&8jsp05FwX{kSvWzEj6{dqsz6^>XzFm=dZ#hIv+)hN<6zbB z3XLIQ&M{9-RzCvo2ny+4d@or4S-E5FqL~K*IN-WJl9~Q77FDzZuxX40olO9K__yzk zQ2aF{#dEyk0Z|~MDQS*HOCxK}kaQ)OD^3EbP%6$1av56`(I%m-z*RdR?1hZTO>o%_ zb|D{JlVOFpg-or^mFZ}*H|}~je~!oZK7E52I6{9v)_W_EuA*~OLiK_wkEPnm{&n!& zB_K^8R^L0&VTr&m%^@|_WC2&PtC+Ei0?QvZ zr@c*ljO7h!hJ$Sr1@y)#1oO4-tVx|xJ4R2Q8Cn!{#a};~4Tfr`88OhKAs=GnL`pC?u&88p06Li8fQ6jpr)K0_{f`V>Jg^1BpF=7^#+Z zO^;@N6e3Zd!O&u}I;6KcVn`KoQ|F1sNyRwJXr(Ozs=6^5SEHC)&e5hFnAkYbwNJ=a zOUTU&N%ic}p4J296Xi6rIVcE0j>ySsUasLMkrtb7i`3lT0~KOW=`|x7703c(Q=lA* z5hg5bF%K1BKU%aA@|9h&3!OHXn6LGy$NjOR8`7R{H-&XGWNjnkJcB9JzmgFYk@})l z(v>-n9QjF?))9?rDXX~r- zSd?_kjFP@{wWq*?94LnOb>{3LFjlae+yft~6Q2+bKv#Oc!)q3@3D98$tSYMm2S*TS z5Uu1%$Mk0Co1ltXo*YNlh4Bnf3@Yn2M}dW2eJq$NoaRogGQb0)e6E2sRovv140SA? zHj6XQ+z^+K+@_GzFNS#4-o(f(yFhbfNBD8|i_YCz2}7$6u++Xk5_A3;`^;@DiRDaw zmYRPXs`W>J&?KN7k2akg4V-XBYo?=b6&=Ix%#olSKIk(<0*#%c%(us5yR%` z>!bvl4ne_Y^!6e<@#dw9M4qHh8+EXzcH{XfYcX+Y^`%d8!KP7ca{kxqH6Fy`b=`w* zPZkh|xs?kKok-7GCqW~jJ@}uV0`K1f{Aw6`cYGFI+ziv}WDRUIqt_8(;q^gCzKTps zgw|x!NA0A8^TMWedjerKlgQdpI)>{p^fF7l{i@9~5(Nz%06c>CA8Ygf+&24pZ$f7J zKi~OpfyLj~=d92JC{)0E8j>-{Vq=oSXCs5>D~l`d_Ld08d_2fOQ6SF7ZqAPAfcfxg zW>EIAM28(8B&c-XOKDD>OW=KY!Dabg2OE>uTG!i|7x2QMCe#Q0YprMG2>l(f2zpHM z%L@C0vM`G$=?6)7j~9KmXjDdj1!-viBNon8$3sz62md)Iw|&c8;+>Ay0!e&9H@<{U zp=!97OvEX>?pR6Avd7nhZS(!HDcP{cmcpv%ViC1Uo*BpEo(#;CYQ(V^L+>*&T z$n^sCzBfi%!|QNX(~Atd7*DE7mwSHytVkI}e-61jiVq*Nt_pTF^f55z#^4fyj$BLC zD=L|FNxzo^*Ft~SryxWd)Tri255h9a2?Cq0Z9QD|?V{fD*qq|!`rI21>+rLJBKrr>2y2EKGen-Qf|!br?+@=T=!@A4cNa_1u>R2!x<>anh;ZCTj4&dz)Ve_E>!d)*wv)XpaH^<6)T8s)jX4?} zEOE^6Bu%k^Yw9d;tYQ-@9dBS;hr3@D2cfT6HWh&H&+GW65Mk+sbw_ z2#KnHy82Bn9LvMUKGi2AmJ1eQmllp&hGvPJew_~VV? zo7IQM25Q02cQY&a&aICJjPi>Ys!TY!`NUY`_= z!V3P5ES0upl3)yC?8Q@>!U}Y+owLUbc z=(0rlMDK5il+q(sQp{v|;|&xR<} z;YpBc<9j63P*DXNDC*4`wU;6fG7s9#w9f=9$lv{!6C-doGwpQMnofR=69g3G=%)fc zvD+U%F~L8EhQHwvpz-`KbmWoyg^pKK@j%9ANs`jg##gU<&)4^I=IsbrVZAtXETSxt zfJ0mhe3R4;`#Phe+#UfDHf0Gx>R(3GaO}LBDhtIr#%2BF$LO!7lHl&_Z>PP&4WD>? z_3(j8xk7p`g#J7egmAwP zyKKnaP6L-N3C%I_K{6bp&mj&@yNX_~jkjm4J_Yf4zi%H(1oivah0K=A6X{otGeAVq z*%SqITQSuJ?-TpF`4NU18GOzk6_Um5ev+;LO_LlU@jC2D*BK}01kQF21b-IRapVc) zi5#6AAxbQEcc+fCZ3u7jhi>G3+c=#w5K6yxuflae<}#W8Ae3HVLLrK~kZz)W?on?K zbdQxy)&l-`3ji9)Gsgt7lNY$Z0iZFfdIMs2gdW+RUMXw$R!y|#CT>d+m7H5nXFytt z#prHOh=v-8^6h;GHJC_wv#XzSW_rc69^p-P-0+&mTFn!8g7?jhfos4SS;0;*S}1vJ zOaM$`s-}P)Bb|>N>*2@ZYhUR`!sYfgB#$)R1RsZ3#|;PW5$U{MuNWdf&z4)LDh;Qg z#jI~xmAV^Ud(w3&ocAC!2Bg69sHL0Ekje{|!}Q)}#Xo$Sn&S-`oJwbw9)p^?E+@M4 zd*Yf|W)~+Ngw@3I^y;3StrAbfen!A7zC2RpfR9i1$A|OJHT>TX=Wnj@-;qT#1?XsZ zsDJ-QQaURE>O)`T5}|^L=AH@#1+W3uw}H`LaqqrpadG@#k;VS}6Br<}fC5Ao4erX* zZKa9d8#JtU${8o;XLj>1!!)4!{ijqEsp?{91~ign@d>oB+bO=0X`QM_*-EOih`M;W z8J4dfBt{q4&eBD~N0G5PHe#W*nR42rKCs(nG81GdQ{|=GV(_6p`P6RdCAW1Y-ggze z`HzA3ff+ib&5vqWL%d}1KCJr_2_Fd9g&{P>8FZ768}bH)%k`4l*>=i;s%@|){#3y?S0Ds}^W*(X@xj+r{6^Szx2W@{HIM5(&$rKB z@7V|Bu@M5dA-wl)Th5!EC$k`4)y}!Da#lL`0hKDbm5`KZB7~rcXoz~+q;2<4>=}%IF4Z{dHkqyOSs~t*iQlnXAxVLUdD#tuc zDLuB#X}NV51g=>6WM(*z%iolU4lsS2UWKr9Y-sk_=<<>48pn9#TPh_e;b{Ut7eBnV`9<>dW8=id38VtNcsV9m-uabS|B>Dq<4&HL@81^D9qISso1Et5S3=gcr1r#^GcR&L#S*|o`=5+EuB zMo}L|7-gV>x0uDqOqWP%1MQV;ba}`y_RnSORH)<4c_oQ!ld8Udi9wulB7}&rQu(y6 zcfNdaq1QC@EI6;~HA_U@l$p}vENsRLTqtU;QOS2_gg`n9D_IOb{{4FlOfMA}st)`W znZphhX(O*?Cq;r-ajRepBe?KR)ST+0BW0hsd(A^K4CH(QANv=JEdmrQJc~`3oGWlU z6$fH6lAW48JqTNfhI;xQ!!|z~tJm$BmX4x|lXoUfeH@&?1v~k8!SwMt0Wx=K6dPfm zKSN`Smrt^=6UC`!&gVvkmVKQZdN7(sJha1 z+;dH7y?;0NQ9>X-@W?fT|5}U1D7lMS>9wDNmQ0O@qhWTfb7+)C1!nvMce19K-!afR zIF{L-Rb!XWC(tLppU*dKm*J!eU;^ZSgg(4~G65wAbGuLG4u92>{?o4g&7&Lnf3<6) zbH{zJ#&eba8f16+|1gw~k=#uf4t>I(i63nOGF`5*jKR+8i$ed?dcnZ&P9VX&0Dm+b z@cZA^jQ>wZQ3Nz#jsG*2_5VD}e@Pqu)q37|&W)W#e)Bc>>oA}H|31t&hqh2}z+a8{ z<6#K?=`c#h4%X&2`c`swzp*qxz6Zd1fX|>22So`{rNbR7L6d9j@#_&6v=Z`Q%Zqd# zQTT2=rfPq2(gSyq7cK-!jJl2MVshV+a&PiW&hFhr&bBYnhEurX4HQ)ZUtOTxR*?}Y zqZo=g+7S>ZiGY6Q<2CaDM(5iyy<|Dx$2@^N@8Z zUsC6B>>N|`D8DI$e@GxC(K}FH9#Dvj3th!6nvwlqew)B1X zykP_W%TeY-f=*6a;g?yuLZj{Sjk6OmoN zENC9OI*1hT7`Xn3hkw@){L7cg+8P=E#VBo1{xw(TnMTKEj;WCix}?wvNeoJX&8|-c z778DeORNBudz$0WN9thwJ*Mukia$6Dh>RFkE9L=E1gmqNX2lYF878PZc6%~ea~*uT zU#|izHQs9R0qL90@ia<$nzkR~Idpt-Y&rAX;sK@zeEhb*l&ffijeV79G^`eBXB0r7 zPVK2DZjHzuL|p5ZAEQsNk$D^_-lfJRwCdEl;tb+Fv`Tyb6`@;Y-kJE``tWh@Z1~zm zw?2P6#6fwu$-+8uf)Pw24SJELh{$U3o}&-1tVOq?t26^upY_{E zDCuptZbclItZxGvgLyx+5W|j=e8`v0?Z@L%2!PTZ64StAY1smD0tSb$QM-_NzbXZ7 zjyg&EUI=X8gfcl?F~xM!SPX8hws4cAsVs!|_AQ*&(QZdsG%tRU**dLQ`&L`5_s&&o}HiA@0<7)nicAQK7(w5mV@LChEum`f+G^ISduj_#grt4PY$j zvbgw}2v)TX&;tdbi!nk3Et7gSvnKw;7#Z8={&6_aVf{pYHw`j+v|dOMNl=eFZGFgQ zRQ)|7=_?SE_wz*KFfe7P2W(=V4Jf6jL!=EPZ0L^od`-811bt$Tn+((SbUpQn^PJIf&Iq-ahD&8Lp^AuE}aG)QL4t`FkNh4oiHHd91FgYhGUja-4S_7 zeM)x=2)=N|t%hN}7BQD2ik)t)-VcR8q~7);tKTmh2>dqfChHn&;+gOgMjpp#Do9r0 z-S6xrKpERp)}Tcq$~7dbFP!{LMNk}9b($CGrk-%Zj*Fo|Jy3h}Xy6w?SLL z&#!P2h_VCUZve^6ey9%#K~0vv&89Gpdax0aW(`S6^gYpqqw&3fA-B;kwWiY9$w^{T zk*(6y7SZIfAflQaeHn$sS)QvMkagW=2(Hgih$sr#NNMblNkyg9ZeeTd(p&iDLWMKa z0K>p|KYCP=SWr-Go&eDNsgpbJ4bTWDh>7Rm8Zq9dIVAmAQ}tM7HIbtuDn{2*wW{1F4nD6lz23~ z8VhX}nk2-RsSF2oK9<*4DsiJz@G(;xun=20Ev_56awv#gagI%j#<7Aq`*6N5xQe44gQ21ww-4Yj=TU z6G`t>esaCVo5$exBi+$F3JU2yZ0!cGXk~_0H|t^bDWEPf?U@+PJ3&V>YFc$n3RN){o<~Jx{*JqXop#Fp3Mw)&F+mh zad2B_C%f%&;YH0Cbq%*6)Zx{$A<~?0|DM*e-Qa>!Yvv)Q=eWA~@&h$Sd&wp0O5`ck zTj)iNP8V>NS-a(hBDwkV_&8q>9rIcrTSG4$jF<6+W#7}_M$-lUT2c6Q=;a%i-`K^+ zZ6Y-R+4rT@q0g9+`v`NokvL&rg(DyP+EO3vSQERO7 zQ}At}yd(3BS}`jYj5d-=XMNVPp}1-Tksp_g6us3TCh{JzS%M8m?^dKaibj*O4R(wD z4%*=iq8x2nkO2rp`UrjiL!hPrTqw<+)U*>N*6CNp&b%)~zUCM!r+tq4Hm0`{=1hD| z3!(bW6{B`cX;2Hc>Pt0yW@NcL2qsj{^H_bws}O*QIN@zEZp zKwkxiuTNx>Usc_;7CP{PlZZvWj?mp9(~O^=Ob^aV*loJxll1AU$%nT3H`_tn5#c(c zXo?t;4+S@}+qY^L$jv#QSq%&FJnO2%%pI8HafBxXkJ}83w3;V>+Q(}}PchW9A0 zJY*(>7BM!`Brce1CUS3;W%YN(O)4^;sZJZp{X_?M{RArJ0oqPt z*0*6?2)AO<7)=<`PwGr*4&Z|$V+;}QbDNRSohD3La4D@^XQU%n^6_6W-BKqLmASO0 zdxyk1Di>CbZgmt{6z2n^>yX}7!hjCNAxQW_>++qOq%N2Z9vZ4w?0ox?W^vo@#9qZnGLWF$IAgi7 zTG3VT+^R#DQDGxTwY$lcInbIE2Sd^R9FJlaV?vBEb|$_B#1rfghgEDH86Z~1T=9Y4 zSH3lqh?^pYBk=($CCTii;386v8%qxRI%J!dVM+!&X)ceSSU@C!A9-M7z69 z@`Ok0CPP;NkPuPo@xk|2Zg{T0mijV9U=+NtXsH_1HE&w3hwspHh>mvb(ihEU4uMIY zu%3Zb3xjJ0_wa^?>{cQgK7iwSEMR=9ayl;nTU8X;egMh(5eiH*aD#_?hrz2VdL;tw zg6Bq}5`1}2f|}q0cR{b01ii?^FRvazLj5$Sd&w~ZZ;E2MdKa?Jb5e$Wa*SS%9GB$) zeFyVBucl7qXc`6%>%O|DMRmcdPt(g$+WmsQXZ& zq{-K|=uwQj@ED}Rt5*>lx4-y@VH3Yy9>4*DMEQJ40v5=6hm6fp}U^MP` zAk?5d2FM$cJN)!6VLI2%eC1c1wk0u9(vp*-^}b}3)u3W46z0#QK0v&NQq9w@q&~2{ zez}yLDg`ePB_=p+aXjlNa**$+<5cEF;{lcZj1hZD!DyxK@TV`nYq z!|oH`Wh1YnDuo6UjwB9QHCLN_2tRzX6Pg8Tfy<_4;@EH{JB);0Qq5UZxt|PDyJ=OS zF^s1-ip~OEb*PTa0>5yQ=``+?232*)HgdZ?JUv&c%VWOq6>6~HM}>}gIwxB};-NTb zaxGTCeGad>VR}ee^eTs2m%x<^dtZ|F-Iy$f>TFJ+C8u=rI6TPox&u{VSb5(>vdYP+ zt;(Cu^f^+UCCHhJp!Vsum_HBCTSU1QI0j0W+1!i4e*E5;wgFg9RKX+Hs%_-xDMu(H zTz9AGsIE^q{qiPFY)v4Yp+=Opk zm-Y8ac%MtfNU>ZSc>?L2ZcbeHse+m(y^}WkO(y4&@J(K^K*G+H>FNN zF3YoNWa8SdR9B^E5MdDzE))HcbqT1f{MU-HzcP(~o5|1G?N3=1V+V6bCv(GpY1+iC z+D?B&AIz!)3aGRJ4`tk&?}rFiPdY&HuSO1!_)P2+4NoUM5UMT7V6EQk&9XRv8WA@C zDnEEXE1G01m5=86bi@6av47+FbUi=s_>Qic%pf4g$qXA~biB!G;97eonfz$B@oNm9 z^Ysx~AB$+`p+=@{1UCXgU_-Yp)`XflXB~uJz6+N{*Sw_*Ec$50+mJFk;)`t4yxCnU zOrUdx0Qjli!&$=jshfG|vahmT8F(j6KV&lW?@t|0T%C%X`nlx~2TEYp&D<6>&RY-MqQ_TEc{Zjc(AGwz)Q zC$)?;Z0$KCg((q?XvyUFa|w}O&-(y*BPD#KzGnWV6#YAU)dv)U1F;<*oM0a+$!_2{P|GG(juUUWgF8Sod{h6C{l<3N{9qD3Q$9hV+$pdZ zu6o;UCSyZqkXDxju8)bk%GCQ;k}I~OEBsSDi41^J|2tdz$I{lnP46#TTUD3&1Yr7l zN^WsVTu*%yqzJfzkzLZ06nekxPs|#?EQ@2+LUW=d<{WP*C7KAC69f|k>VaBq(1-V> z&(~3{I$(x}>lHYNuUnrvacJ8llQ~v9E>^~1GUNWNjLVA{2cGk06KAI z`KiAC7(K#ixyHF7WkNF|P{)zFEyEuIRQ4mk5YzGDbcH8lc6Uv>KITLz(00kdF{JcP zg|;W=puWWiL_298jG-$(^u!W=R^=0tmebUmW2XV@2FySkQ?xMlfN~&3lsp@YNXui$ z&zXu$15b}e*D26wxk(&FrHgYX7J7H-sbtCckUH@sp@h9SWoGpu!21dWJ{24ITHl{DO;m59v{%aySBIUlw-$(z zBRn_)WWX;gQ7sLW+?%GT<-6cwu5ZN=MG~^CEGkg7Z?Sq|90uNqu!w1eAJ2OgDj+*G z(LSr9Cc44TuP{;^U0Wo8LpxZc;LqNcYa}i`8e7Z@e&tgc|Iyk~c6PYuIfxUBXJ!#> zfA2pylBxvjESq0{ES}v1l9OosId6*dyUcg$c_*_HZJd*n+_=z0-JXy_eH(1@>Rzfb z&98|jmWTu91X}(*X2udqP;5FDZjt6NXCSr~S?>Nt%QkU#Rko=+?7B!Q^%gM#ix&2M z3BkZ(iXwh-i|!d(OPQJ5ov^kd$ZBF&Zh5tmOEK{mF^1y$0nEq8#5*UN z%M;}Y%@3n+gk;Fx%`xSzPFYv1RnVLI@AlLr8&h-MB2-9%X=z3dac@s)uS;mIJ6qoH zm*&GNA|fo&OMm4hZ*VHfGlq+i6b}TO90@5Px0)Bp^I+>8?cc(5rEDZl;-8J~M}F>b z(iQw(j`^7gQWJLe|4{Z$fq8Dt`*0hpjcwbuZQG4)Cymj#v2ELpZ6|GPCymv9PujiT z_w7c1-~Zt0Nlv=f+;h#WnQN}8D4CsBDW;!s`fT5hGS&w~xCaD=@0ty?~E41yv;T z$NMk}sXh54e1i*1;6~aRb(6ad?-X)ABf|Q?M+ayx;4aN?vL3XPpH_k`s`=qijT38M zkF{{V7x%x-^T8&^4W1tXyL&$IzviqehB8Z&fvrQ^Bq`?D=Vs_+2-KCVSr}`(t;9YJ z3!iSmtp~ZaE$tLC$-Z#GYi5ga`xdl?3|s z62gytNM9y9NfdpTK43zeZHz98anu!e7lx~g&IH}K4EBZ^g#xxx1k?5%(tupWWiL>cd>~UFcK}WhwA%xmig?mPGC>yP1Q?=|_cdje|$7U&mSmk0^`SpV&52h|$EC z?on(`I8|iW;3cJMar=<TmlzV{XfTr0-aRAP_U-nnpni=bsZJW_K_yOF5+YI?BBdV3J& zsW?$Mha+hpP$YWHE0a~0ek+GStLa9x!jC6R-HgPanPWDTKL)A5UF7ckDkzQ|QHve4 z-2#X@bcw2wXb1^wNa#su6FDI4uWWu z9B_pu)=fJRxy0hgBy?TjX3+RzmBQlS53X?2?{kB_59n74Wl8CzFqj-JMsxWX#VK2W zV{-FILX4OgODoYdnRV$d$})Kk3Len5aD(K7laq#~X4!-8(ay#UPCY7Jf?~YGYWJ!q z_ZYoBuNJ5jSRXomq<*q^kivd|)X(L&T@JE;O8o$x-hZkv2gqBfRq>`qixs`9a;>87$E)4H^T)P_RWRbF)%SqB$eRd4JNT)TB^+_V+MY3ek zo-0X1L=h^xeYVWMnrZ2%X7z=y=Z@WVwT-N7oK6N-bBKdy))$Nb7TI&daDD&5I;}~` zQCA>%Xq)Nub(ffcoi!bL}8>3#AT{%HGbiI;Vd~@Xj8e1h+cz_4K>8f^=3zs z{K=Lic6yAME+!uPvgcSn;hE3tu;-#~ZH(wFv@58`>|>0rx6Llbr(CzEPnT!9KER#a zdMHQ`R9v~Dby(u3@q*}d%e0&V4OfGH=sraf!LiL10s~#wu|4{M4UD~pF1qq>Q!AvO z&xmTplM{z-GV2$w-sH*(;%hWlPC@?2Yaf zKpz1V8=)ql;`rk0p5v$!uenFlYf|pR=vZVIK)$T09W`v_WY7#b$XP~uk3I?&owN)| z@90X#9zY zNa=fY?|=)J#QJ1Bsqd@NO#EDrmo0i(}v_zy|TURbu*srl#DEna}R0}&O%hctd3@qoO^)y*@n1|#1&Qo z8As+o@q?=vwRrw?2PQ%j%SKKB>zI7LK;H#RyoA?C<>aJ~0#1ermqa(}@lMl-u*pa8 zY^AXNixfWojQouv?&6feBi&0TtTRrKgjlTtjTy_&KG{(E^r4uwrv;j&h9zBZYH=u} zoc0;<>5k!I?VS8JV~3)nGuZrG!=>l`bv`chS1-YdN`Ao8fj)Jful-m>K#! zOR?=Lb9w4m88sK}tp*jJ^G;plC~C`iqXEirYs!f1?ArS!UP+?WL8U#5N5yY;zI&B> zNF{|7KeJe)xIMFUDjJ&O%B=G2GS#2nXDdifU4xdSbo!?6Bp8h(pB)StJ5K96HcKez z-?+d*kHRMnwTSja2cqbC(d?8=`3)d8wjnY}mEeD4;OEL#geLQa4h4bMvgE&S5q3(3 z*Ws={+xSkUqkp!3J?l4+HSvoKq>ly+dpw5tiKd2aXqE~sLJv@s6X}G8*8n954kCSZ7qlsgO~0OKaP1d zFp9|=22hm-&oqA;UEc%yMCYxG(FThgp?oK?MZpE27h+^CjCz}c9aUA>0kZ()4s6!( zzhYxe5SDxbx>q!WY?ve+yMe$kWMMFV#J2iO-hkiB~T&>h}0Z| zGP{!W?jvqikz}ynjCjqM5>s~(spi9vYl_>3-jh80;2Lr3OxI8A_$6JE-H&lV&`&Ij zK)}Jk>4AhT)W0hSOXB%4LVvE$jZ*-C&zF^Q|DJ0Q{1d>wwB3K9^#=k(U6%p8bV0v2 z+4trtQ6y$Od06Xk_mf}3qcvtF@JfpVVxbGE)jJ{PP22N^aSz#>ccXD9agmKIU(nnEtw z(fW2U7*wqfFSEDvJnuch`mLO3ag6UfTm;Jo(OLV~RNy%}@2oWYtZsf;^F~|g!TF~I z1mi6Biz5N|i!UDaNK1~A)!p{V*l-LHSw5=rBzTs4M>De$y`yMjIo))R9vvF#%Hg2i zZx^h)G_PW`y5}AV`dDQo&W?=Zo*tzw>_o-(CjQBgzO&0DW_ifYiJRT20Pxe77gL*(Y>=&v zFC9%7Am&3Zjr=|qNevP|?0l9|+hiU4E}W7Z0i!VZl_n5*o2{bX;yn%=_i!LbAD;H!bvW#1GJah1@%{#M zj$*@R4` zh1E1FWwbEq!Xrp*ilM6HK4s1FVaTqwtLz-fUM%3jgz~N)3v8-ODnb=yr-PR7rHjd^f_MVam>cbWDcwqRaO=R$cU^H zSZmWc6Ezk^jO8gOq)`Z*Af_i{S(tZ@8|1-e{RoJ&+-owYmE(FUnrGkFHi%A;92)k- zl^ulP2HzVd>JvIyKjI3yL&WMZ;R<8X?k^Sen54^kyKacsm}1!{!C0s_VJA-v3}1xl zb3wu|hmCC$n!?&W z@bLW#s(|v$bIDy{>>47R6Lg##FeJ?WNN<3%CEm>?jb_+AnIY+#aNI0)?@&f`Pa$lf z_UQz_c%{>L^vwaaX6l zR+|2ioB9J-{!r!v0L=gLd%fgGUUr0*>8PbBD+yhYfD43Y+-$zt;%|$FV?PJ2Wr*#w z6T9gea9am{A~U2_M}BwC!2D53bxz60v!n9WmrcJ7_=;Wg;%=@F(n-dlDmEK41|=S_ zZk7cc2NAkBsBZ6=awSYFnnjk>*&=rz*bQeP62DW>9R`fQHA48jfNST6i)<-y`(V7C z@VI*e*+rD09={U`b2zmo^~?=ql+haDt8lSOUlR}LiwIgcG0;&+I}Nkp*QK+7&_qC7 zuYDcY!nS<=Fy(B9!k%X+0E**TWf}Pn@%7v7-3?nW7F(i4VP&)d(|MqcM>b^3p;o?r zH{T!Expyh_`5J)2Prt?Ke;gzF%XR*TG3q7%W2N)A0)=@fiXvC~ULm&qVpJPutaTxQ z?M_50I+nf`lF#$Om+Qdia{XpjeqD1T-khmtCdST>_upQx<0L}i=vPhIa8P|EdQcYzBFRlLQRGmTeTx?&Q~k;0%v8f!ceQ)kHHM1w<d^pa?B@x14;7?V|Fd2B{pK&ju1gdfuW&rc?#W_Tz}aF`gH@aw?5JG*gXm-?&A_^E zr;xcmwg?4&K={cu3(*Pqb_2M~qu*X8{%?Zbe=hOQm{L^AL7` z1j6Jf*#+@@QVny%lHGwF6x{^`JNA8|s-zbL5w=QFjqcdT-_wsB2qztHK_YG-zJ;Rg?nvZoeaSl0kTaIen&47!9r3kLV83s zC3=^&=etNyEiRWGkLhFFD(rpzr4i$dAU93!2nEj8p4mPo%4-BbmZn%x*h(}lkziW% zv})vZvUe?!oGW6(mmzOFBRVf)cuH(yLNYDYE|uyhTJ_yb8nlU|f4{LaT{30lH0IJj zrput$QM>sui10cv&JG-KuP=cA@2Lc!ob~sP){lGr733onM*#DUNZhQ^Y#Z8S6A7aE zG_k@vZ_2QQ1t7)v;qin^l#H13KI(0U=U$-o%Hl89tOGyDhgcvYfWyqjI+^UId7L(1 z-rc%>f2D`|88E$A4sAz%JlT|ijYcgz!E^I{IFmFz1vkTOx|>KJf7eyO>EvTA^b!kT zvJv;pD8syQ593w=p)9fzR_HOUO3^a>E?urZ;)t^KuoUlD{3OmB5lXtTGysyB^wdj? z_PcpF6*s06MRotXcy73_R-b&dRr^WHP&93Zu0v8;Qvw6^y~|x4<5Z%F-+~(!&fd9} zVs&Ru7!8wKQ+&@&SN&?PYhfonh;o##5|P+4%`_pbEAly&U@Ba2RL?iH|H#mBwVZ>i z`>ST7*&80go*BzIggoOlhlttkJNMZMlV_F1b17}|;?fKVAape~%+@lq5)>AQkz%aX zGI$Gz@c1IxB$=ymmo&OApM*8Zgxo+b2C{Q1e{v~@w1|OMEBFtKjI>j5DPjT+Nw~(e zy>aY1W5NzC*tQ*dcF{Qc$@G?xx`=4RRj6}DWwu||Yf9Ay8nt}Y*S3;&n&K(Bemo-l zHDOa<<{O`W>sA#1YX1Mm`v1;xy+ryK?`oXZDJ8q>j3?=J#4oj8)YsY{&Wi!nr5gk| zSM*iaK=nBw()UJKFeLHQm%N zS(D!QVboW^J)Ht>^WPomAIIVTa3ncTi{cxfyfZ`;J?L6>Yh|=CzCAg9 z?)k*|Y7tb>AILXC(p_-O_uP{aA#IAX7CWQ1T;?pqLp9^vItk1HB*B0+6U?jD!Fi}f zz~2oh{)-;a&i?W($d*z-T4#g2RRnhWg#yP1;jDev=l5Z+MT0|SA#rVQpIX_oVR0Nz6|dk~7{`5?2RZwGwhwDtM<0d&P$~QL zvV`UV4LteW%5t6|f%hqp$nH34W2s827yFSbUhWZdN5UIQc+ws^;cHSDdq%^Yn87!t z^y(%&F5D_mkG*e!`cru#2vE$b;?4HSTc`9$XIf-h)JMogk8Ob_&OIVwgCZ;6gK^{# zL;q6K3J_@q}X0g)}IfAzAS-3Z7L&U=U;i9#lMNdEg=nVYZ@%?|?n)9>j{4bKt zp?@1S(W6uTL#H`mOng*w;Z}B7LYhYZonGzG=m=G{;XA$gNf^MtcH^?*I|h2j>)ZNz zMtX*Hdas7*0E&OWh-v{bzSx6^Ak*P|Dasa{zyl&xKwtoG0EdW4zJB8d@Qx3F-@kju zKNc$h3EQv4!3b3=RYXxF?;sEXJO%zb<>D{{X#vf;GiGuWxaEAk==bGC^@2&gT}G@c zE4JIbS83m3Zqgq5GG<`80nEYcD;ein%gu2xwxRK*z2=E8&9~#}L#f{ZdlEWL7AN%H z>zilder--59b;c`0O3tyq_PoY2_&bE;ZM5ocY+ky=ly581FSGGluz>;-vf8E}}+JY?Yl7|5ZdD<|(KYbA9lsMA|D)eDT3S3_OEKf<`fk#Bc+~hW`FB;zF zUnr6HyjX)cyI~eC14EvJ2x0R`VFTgej47N_s(R@Taawz9n@1=%%?2mzT*ewO(qWu2 zL9B5Q2lc{RT~6jJ$T>)6>`3GRB*N2W+FqQVJ~r#YmSWK@!jWi>b?Kn|#Y6nnhQ9P% z2}UuUaCfz~JZ32kO=lyQ%n zOFiOz6Oc=Bt)N9MG9>6^Hf?OslzVCJAMh^1BWJDcpa5&@K zmPf4L*NK$Caa%5#0_khZR^QG!KE)OhDDY@ro-;OYFoQxiX1xyx2QH2h^2Zfbk87_- zIN^i&6wfOACAquD#o}Xwj8E`Yn_(qVp)}86k$-jo%i4FMJs&8no-Exousj8S!49F&HQehOpwUo|sD3Ua@_3 zJUc96RU=a84bo8|7KvTL7fbtKE@Z12QFbn+g1r_>M)O;Tw}@;#=N{_m-vMKQT{~T$ zID4_;hNS766}MqV5XNJNv{jqXkDaxVm=~g9X5};aa^K*>VQTj_(vYEx1=UsuTp@>P zhVl42j!{pO`s>5sN#?!|*Ne+Afsm!l8&vQiyhZq?3w9RJJ2TW<9nFS=pxEAP7td)g z1mC|u6!-d(va<-MZjrsMv~RV?joSG&s^CBYQ`)T^xdHEFpmu-!q_;*-bC`w3Bf8dt z0q(j;QF_!4U42)bMQUHL#!1w9HA-sF7(~Khw>7a|Cehv3Vid!xkwbvC@0<>0y9YX- z?tYe?XK1B6vZ4>j;zCpTbza>2_zUTfH+O0`6R%PSu*+8()g}!-s2xVA?e7tsn%7o^ z$J0Ho1*SQo?s=fK-(=sI1KkJ$H6*}gUV|LtP+Tk?fR;>0yuyU7>e{6Ia@ILl#YO_` znzUZNfObqra)BqZKJfO5PDPKDfX;V-9!S=6k5k_}On0B1pD+@mR}RIAOL5|-)RbG{ z(C1V@=>!<={~79pUKnB4hK~P{-u>%HUGiTs+beN&Gj_CX8{xl0bz%PxQm$aYU|BH0 z5OfT5zQSnei@sd^cw-QG>h%qbww552dM^h6huA*{ zOWHq3Z$Aq_zruGq0KPGW(b@$O1WdyMr_E2G^QU9qGtaxEB7p+2AVI{+#h0)JK+3cp z_piJue1iIP$9QG>X`kKu{B8+%=OX!Ct>yHJe$7 zhF*$$XP|A;IbYsZOY=NeV9ERp(?GHz0AHGb7`;H3fcjL?pY@C4GF{I#M7hQuc#o}k z%Cxp#Q@kc`KFeq0p7;dyqIykgL8w->r7>RP!P)KXp_K+|w1&FZ`S-6hay2Wenk|;{ zPp$k@gEKyE0=2h(9WpxN3n%csRL`UDr^7rZG)U?TgKAHJKATYV<^+0MKl7#;HTP^< z%gd;;Mmiknly#<(rjE1VmH*`jBvG+yYvtQa1}f8cs_mKj zVIA{2W_#X%Wt?F_n&E_+DV1lFuX1Omd_Alw3r4C+Vou~76CiK2O*m4H65IyQwLuFXE7Vd^Wr^A65Fy%s{t74&^Vr~eNQqmBI#QGEwfb!&Un1Vaw$CIbc zJy*4Ce)F*xqlaw>d&<4C`HM0S=G&eV9)25Fev9i7zrSAZ<$MBch2JLuni;-Vfjz zfgy$w|Hv(q)A_x%9F8$T<^RVGI-^J)dSb3}HA@pg!@G0d`$DX`trb^u-mV~uXK zmt8KeT67QS%|`^M;T4mnY+kE8{>R~bIhn5{M)drdNa;EbSK@{sf`f7v5V>rk3m*bV zkr@UMeDEHDR#Y)6?|Px#HD zbYOd7uk}^!#-cvqbT#`H58kCFMfO^6ywUX_iR+oI3B~$Mg-k5L8PzOiiDLs+C4}p& z>ffG!p%Bu$?-=QU#_JBPR)B|O!_f>rWq@qW*5i;0*Qtz88)BwX zdem60RbsVQF~JcYYUZadWw-0nKK1~zH$>Omro~0swT*Z@J$8IJ~WBY4$&R>e6F>JamJ; zZ>aDIonx%MTAU4}{LF+A5*h$P*o(Gh9A?OGxa2k@z7og8hQ{-E0YK^=)115l>` z()HVgW`-qmDpp6Z`xMTING`~z$bo#>&|T81)g){PA17s$JSkBLn$BN)l3mE)Y1C6Y z=^2mjc;C_myM1@{0=5mY0*2~2jd0mxFJ8~S97G(5@S8;ZR+Sh=guG|4@6iax6lC0g zvBQ@%#+YL8wPq2qmqMQFoT$_=kHx=CKR$$c8bkSLNs9eway+}AOU?nul+a^RSL`0r zN;;s<1|svtXC~io%?bldv;EsL;jizv7t?5%*@|2L#VCO>6M*^mHPKqw%JJ8*c| zFJbg%25tIWVr+46+)1vJiqw=9^ZD5y_%p>3xszRAtg=<71oYY<_2hW`>FXHl=d;WS z+E>Ag%vtnGr)i=C7-Spj6Wxt8fi{vpS>wu?oUmYyL5EEGBbXENZM=c`Xv2&G5g9OX zgvy=K90&?UhC#7Qk!(}7Bp`?N&|vLTN9QmIYUACV2t8e%&T(;ZPB!V@o$+&MePYC) zcMjuVl@&|AAvQArWUdV5%g3Y5-fEvx^7FhYqemJz8Sh8V(W*o}SEJPrlAi8`oM^sr zjjJBwQa_?Y+no!w5)EC~xkDONDesF8XF~f*V;A<_O>Z&E!avxN|;}|&EB|uhfLS`0`@fz!EoNjizOyOL}=uD*i?4qU=vRqoW zy?o$&<}3#biX^d)fjOe41G!fig}%pIW(+>bPyI^wKAIfPa-lYOmbucSfj^p2s8K;o zt^hki{?^6Nf63)u>?o)p$jI>1r<|g?WPs=aYGyR8NYTP@hHdVe?M(7E7_hCR;h~}6 zG#L~yYFem3+6Z2xuo+TZFKk4+WjJBP6shmY-rpUUCn|4YUllIKLx8j(w$GN-k*H1> z7u2L4Z>td?nR-MY8I)C=kuX&uDEqei+<0JcQ4Ndw9yXJQx5E_?1$+6@rM@lpg=$EN zE~2M35wr>wpLPIC{!+l5DV)Z>B3tpa6PR3bHKd>sDZ<2inZQmx2sPXP?vaCbD5|;l zHQPqWonUM{>4nZ-Ne_iuZZ0d6&PDrq!2P5HZt>qM8NaF>yxgFW(NB>2d5K=JKLkI6Owya| z9Ly!MsDtgPq7wvP*@Z^iR~5%#s@hGL><}@waG)H0#m zBUpOgOZ72!UI2)`d;@-UwxRtN1jxcKIx094eJJvf$C7|7;)2a#| z?p)IF_p=Ge(A&0;hg8n+yGI+8H?JNfc8=fY|{ta_`mz$l-=4YC^LveMlc zt*JovVpSSUiRfon#d^WvOqD~hXa!iHck*%|Je&G{rOH_ilq-x3e zSne!_NYXi?b{eAv708kAIBtjoMepLieLz`f38@O82$pySdCgFGnMPyVGI)ScIFhEb z;TSkmn$|&IxL~Inn0n^}O;|d`-kYvlb%WS#Qx{f1Nu@P_2`T0334SWl6!57Gw^iU4 zK};-X%yGfE<;a`sfcXj!n;Rx$LUd>UmB6k?FU~+PB`Al!M@?q~s4ODYNVN$hiS4nQ zU#LSF*yrMBXOt?`a|UC9!2}K9pM}Y@jrBx?SBlcm^{kfxI4*Wd(9XzF$UEAi|c1!`bvw2|{43y0fLVmWSSGP*RI~p@zJ+ntW zZD0)yJO^9L6Ks+6^Ktbx$J>V{@*Qyb7-6&_<{Xc-SXB=ttgqf8W~qw9V2%rn*~Jx z?hDRfYrpmS2*4Pn-y-#|{e&MlqwlB>*x+NO?z zLf{V$-Vzk3z>L78u)vhSn1udCL9hb4w&L=}IxY3aX#NDia^QgC!fSQDc)r-b)`g>) zP-B@8OPGFc@?#VPUP%U^>Nw!{@2L7~8}j9}q8j3IfB&Q-q5)~299-Z;o>@izd`Z0@ zlz?{r3dpQ>U!Xh@o)S_^Q7N3wg@l!$d+w%YGr|wXJX@%erc~!jak z(0l&HW@sEB)+zISp3*_?qes*gA<@u|>1vo$P^s=yE(Zee9=;LR1j4v(HX^3+J@vEc z&ud3;WrEBK4{VGD%V_;N`qW0cb zI8rLoQc11cj)b_Jr9I~X=$$qYWpiG#;Jm#!VX)To!WD_hk6ktc`|zQ!!TrAo9s!gmEx2Bul?;^l0-QH1a@`!$y{3 zkrUR=nyx?5km_H^g?4sb`AEIiI7U%vX~pnG-YYjqLqruQ;&n1GM z9f!Z>0MJQZyvw}I65{uq_fhg&+e^OA{ijBmA}ZJ(u9TB*-zqq#2ix@>X`~Az1#24n zvpYcXg}H(fd4oiPI&gwlS{RUUqhVs-t$`NcAV0ELJ<8i7ksA)ajR;vwp3C#MGeAm7vrDX-hk zOnT&OTz+YTP^zpUm{|ad-+zaPCBh5SO;%zHP z3WO@#_WAJ=uX#DX4`O{|E5~QK+cWa)(uGNy8p{*0VpdY=KPl=<6y z?^m_Ims=DxH8Qj?diS^2k5l9y*tEUSui;aYRpFS}6bcP^kfH>}`9XI@lul}0Ewez5 zMTAV`Wl?qo0#rgmXDl#FdRvqB+54HS~w7T=L|=J^Q@gciGamkwz4AkQW%Hl(90*Pi>NUlDQ@~j56 z(R0px{ebS_z?>=9L=g*%392&BRgTBcoLVwX;|UIMzX!j)Lvn2BNwJU$fhK`Ltz95Ez8!jjM?7w%of#0tG zJO|H!N?mO8JZ&YqJX(9mTUU$pHFdIr?TM{^hnUk}CoRb4C3kqewzu)}Mrr=-ef}Nf zf83{olht1nhM%kCs((!w_QGekk2j~a{?PK%`bEo6(~MujK%4@QBLo$`qzbJfbstHS z`eHIP5E7CUq2dhZC$9|N=}}8i%TT|*>|R7ee-8r&r}r9T6tMWW^Hsr87ZW%zY0|F2 zIvDxuA6*ElM(@)wz?pIZzkkmV{{D^p`R@9gBgV)4QN1%OjV~oDaz%BLUsOVLK|^&F zHy6{2Zkkk%$44ixBkx1Y6i1~A|GC*PgFKOsZ#nxJVvuFB{G?;%k#PjxmfJ=k=N<34hsR@c@roV8S7M_e)yL+K%aH&SRsatLW_TOQEdL6v?v{ znLA!yH9YTOjkvJ=Su_;tKge*dxqQoDJUIFcV08jpqD`VTRGesjhRQ!L1E;T%!CI)z zXFLtCM;dlucRt1hPRp*~+R!xVe(XnQ@ER~GYWP@-L8KK(WV%A)?@bmYfJ1+rdLnMj zRZdTx@6_zo)fx5N@lh1456GU3ezu@j=Zc1-Al$+iM> z3Lp112N8w4p3Y7vK_i8wLr(;-o?{lx;RS7u9X&o$o07VWJ@7c=D_)E&>;-85*DU-{ z&u=l()lQWEwPm89cbwMw!x$f}#_QfTbTo=MEOwYxcAkY%UmR#zEds-fSS ziV)zV|Lq0-nWz8F1FfR?B>~mhfIVij-0I?G4J%OC_Iw?n!*T-C=$b4tDE3+Z0LMTv zDS;N`3s$!aBG+^9yWHMH5eW+qHD}k$leVQFWkAtIW;udm?uQ9L|3QDdEvR?~H^c(I z(9o%r;eZ!?5;EOQs24V-@*Rsmd>tM%#MlS7*>*cvSoh=McS2dOyGBvJ=w{pmjsWvl zeIddj=T*tTjmYmG<14}nwkwi>uxb^9K{PSemUZNg@zAfxNljb>vnmRsfLlfV!>gmh&<^pi zEjG`|bIze(Y@p|6ioyu60qAd2_`f6JpDFy`><}L#Eej~f2CbPvBZCM(b=yoqyYeFf zDtZ{w=3-ng_1G?Ab?wguNQO_+?&t3|yKvW|7-Ud|XE7WN=55Q*xTvqgq<8vo`4T`v8>!rQzD3Ph=cdWd}Yni&+} zh_}G~OEiTNt|0ah2UZ6|romP6#Xd>5OV-cEdrGnp^BF!gHFWeTJ#07Q>xkobwbDyvS^C9jjS=+cyL40vVaz0MEzhuoa z{Smt@e~I1ydF6iyN;F1`w*OzY*E%3*zmUM>^j;ii z4PW;DXT1J!nZEfRfCI6=jn{wAK{U*41pzZkf2b+_wP^8c4)R3Sv?rHjy7k~d*U2U5DZ*OU zJGL|$Q9BiosI7pI#m`Fc!33fMHUpz}UtR&|h3P0;2Xpts`nzY}pD*u)g%%v+a{>ea zVv46`z@O%(cr>`jtgf#bt=Dc_ym^Ilp^UoMICXB7YcoHOq3Yt#)m>}ctKjeGWIJkA zdZhC+icj@W=WYa0E3;BT1}VpN0-uH{aPx8@bM9Y%(9 zSB{F>m7seg>8BjR(I)IH&d!xh$v@oIZmqNlmoAzB1`eHQADxf&PUgNczptE3VZpGAMe<_g3G zDKj%WIdcr-3dRMU0X*T4+WBFf_?&?adfZpFvvi&LoWm8k4RRI8#^0s0b)Ea1=k8S+ zIIdq*=fFDRIr$w-neRjw>iUS!?%t2}9wuu%g}MNr(gJjR|2=Oc_^q*6nEvWlKh?Vb zhmP~ZuU@{!w$0eywpas3#6NuN|A~$R`u~HD6Px<^(HHRF{XHG$A012B+R@(aj|z^$ zlJyLLq`gHYGfhI|=-Xgv>m&okILMx~=E%+cPw$w(Vqq=gQ<;bkwn3m3fB;UMEI z;dnjQXD$xTJ+JKC!K!4rI!{`p1X2NP;-L8ClAQ;f#&NB2x#OEi9;am(%gk&Jc`VIS z(1|I#PC0XzRosrFp|nlR0f%1AAm%Mwm2yg;fm)Z;0hs#)-gV?{TQ79xGP-RTNSnTc z&?6y&mEFx;=A51~jInpx5)jS%>p zAl6myu}I1+Is?^=!_wr&lIEdyv@iq;Qeq9OD_nOlS=g}*-)dWa+aoGJD3lh77;+-K&pf|=-o@hMCBc9i-e(a^B@#oMG- z-&A_ld|4hEmKZBN2a1`vvM1`@hH0ZlhIfsOO`HeBX9bG43>4N|-_oQ~6S+Hk`eL>_ z`o9oz$$aGYjo}#Do$U^=B<*=$=$hajyNBL_iq1-R!5|#$^Ac##$^@Dp08TOWTc`Nv zZ^+*MPpP~A8=Mz%a-Il&ID%c(PjEKT5jU6DF?g#M8{<1h!bn@&8yUl|)B~PP)|5xa zNV}rJ7#`!>$IeR}|G_ue_hYbcyzhq?Uv)voaQ>LrgL(CWx$%E7wZvw zf5uM)9AV(Mhx~hC4-kJu%q;&LFHrn3{>yF1X@{6Hc?D|a#{02A4+S|@C0@=vPfT7> zJ`NO<>5X90aI(-18vmzI(6VSXKqnq)bJ=Y`e7`%R*^V285F0uh=Ot7AQ z(C?$^a*`9xaoT(7#~le7Rr>U0z0m{8BgL7zAq5RF#)~pUN*olES_hr|2!i}N|sHq;VVky!rhlK|#oxaDbp{uSA=VC!0HHd3lMkRK4T=6$|R7>KZ zVz#uLXgN>%wpu4gtAxbLYsU+>TzoaZSjV`<@PTny5fr7imO7g<-C2`ttV)N9xRjm> zen5HoJBK~*)Mt&a9q_3PmvQRKD{_d+=QsNt;`V0y?o_@+ma%LbRw2KpvEYheeTg zEo=`a<~X)~rq%P0aTjt0lg_CDSp}SFi-~ap~R#v&_OqUu2GIG77y2XV7Kz zx&mh(gJ*DeA1NGGV}voH3**eBNN%dxFUiGb#G#E98c#QKAuhIwtMF-s@xs{pYmbZV zO;Nz3Nu4Wd%mI z%K-Dk1Pt)mKYdI90zxvY%$5us6vvCfO@E6~GNvz#Y2_?GjvAwy`=dP9C{8BR9b0~J zhdH#yo2mQCdP=-XuqiDy{$4ENmOp%PeMY=!o99jVa1wpgtFkTP~)KdZ-R#94Hk05=T-fbIW{N59;esFAgiJ%HBq?q|Rb{5e(CP8j7! zmgNW4f2Rhg=Cl<#Cr1I8z8vN=P>ar%5)(Ij10&=;7KpnpihgEFK$Fsx#JD%!9L3m- zn`v|Q$`%|I;~2hZ{66T@Ar}ncP(E&;yJ&#HP=1nmG?AQA3(mQ10q4i&^E@y!Al23d z-uSCT1TibuDio06>;A!IquZTnSQBZWA@WE(xf0gR*>F^96oNQPAY>P82_O8RZ^M}& z2CTsKl9cn{TO-NQi@Pj3tiahRwI?6sWELGJgnDkZXUq}Bc$1I2_+wAx6AkoQKr69Vf&%|E}*EjwD=%Cy#q!icK#Kjv8VrzFzg3wmq*J?|=~ z^R^)=>68cg)Z1dLDx=tCMIjpu2}E0X~4 zHvu9`PHehXY?rT>1G=W35xt(`15)$qbZqXWQQeL1Tqz)2CL%7Bb}ars*4{EK>uz}i zMLHh3yHmP5rKLNi8>CA>x&)+4x=XsdOG-exTS8R2&jadyV=Mcd|8+h*mml!MZ_Qfk zo_l8QnRSXPY?=Rjz(2@@p1s+4Z(`RE!e(^Mk^3$5*|1}$uAV|?#H|p<$W93gqlE5@ z@qCTvSnT2?32`T=*ZkPX(D~zZljQnIV0I&-FKC6r5E|=CIK&Xu>LI-zJkjO$tkM1P z4tn%>Gyl$DipCBvo$L*b$%LF7&5Uh;lTaU^LfP%tGs|&G%fN}KXtyJ0!ziA}mGUr%;ehzKD5P{6-3quST5FAsw&Z>NH@!WkcU0>wH3Pvmh{u`v%Pq?{ zBQEYEHz!x~=-z6sg$6$I{FQPC42{DV{dJzE-6vpM;k`ELo8c9ANp{Phq4rV-V3d%F zX$Md*$F{&)I{NzjpS3LRVwn`%3C`GzWUCR=;#^(HRM|KVIZJ1V?b$Lcvn2Wd`aGRQglR^LTo71QPVygg7uK|!rHyL znA;sAVXEOvtJj{pW0QfP*)G&H_^9G3RjW>@zPLrM+ZLz)o!cUOthsT ze2nqm1k@kA)e$SWsnSUu9Vv~Rcs`PZyJ4CZN+*1(3NL*5I&Ln)EQh4jTk*pn1sF*Y zbKaD(OONccZZZs@L}e$u{rl`K!fx&%6{b43I5)@{$rJVPTO^4j66+HZr4r3;^(&kd zjYv|=-ICxE<}%H>xn{vr24Wv4D}Vo#a#ENi>M8fb*m0FI8mF_^aA~XfQDH9xIT0_h z{+Qqa);Rj8I~Z=bm{#Z|2(-=8m0)b)hWML@p{Kd}K~5mR%lLSE>MyD8KQ832^YsHg z>RbiT!C52{vEED_aEGj7Sy+;s5UQvrMYO|}^^P1(IwWO3!fjJE5*&#z z%!BHQ!$ZfsquXznkRbVy33?%d?h<{+xzD*cz|oUCKH!_+M&vTWT!R~YvD3)crmJ%o z$%BUR1+Qc|MAYAWCD}guIT%?2L;3`J9zDMI6AP%&B4ZjpDiaeEvh;OlsiVcbL_lNm zV4*E7nc`9R#YYHXyWQX?>%vOS{gp1u1F^b^(?Z6wtB_StlLpoK*$Zm4d??Uw3(PCM zCZx&6O=}Izx73_JNBCVLH%(i?qgQoXgC<>euJunUCbbLtFnz*rW@<|;-nH_7`>u76 zL7=+0prKG@Z(6-hOr_O&m84F6LBCUGXoZUI+NT;`M~MPjDzzz3+fpylEZo7wt;e_) zoC~z?u8_p5x4B9X1TK`+TZU3!T(TTsV;Ydh4nXD&U;B(wvf_n4#rqmC#fO`24>L^? z(|v(-09m9cw_;chqxB`$Ip2E5?grpY4E8EG(C%GN#p|S7@O#9C+L_po1%k)rqlioN z7=Zjtr3A?H$pPn!c#^KHal|K5SqN1(_C|z0gGGI2&m{x+WG~wvZ9HxJ>e+2_fIvH; zaf)^KT3C%2QU8q^lp8 z40Jh;xXI5@II=Ik7`a6xV^y7tf6m#|mVx3okvl4tk@#X)O8Cv_7y-w;J|MVBcca{w*o?E6eXS&?=XlgI~TF?~2xJPHh`& z`@C@10nMZ+BUYnqC=g~L+3#OQHc=~2_QrZO(HzK!@4+DK4_9j@oMI04NppQ*< zWf!G;to&f-Dz!P^#hfL>afK>FG@ykD=CkH1*xh`07jr}E$B=a}qxH$Y(ND!FVbe{s zP$@qV+HQdxp1A!=s%M+MkZ6<8&2@rE0jk#a)H<{%ydgC@%E(L>Z$o34=6bcPvyEML z>Cho3wW@S?{Tt!&H&myrp-Qj#{gkAIcB;dH{C@D$RxY7XYo9OMzJiK0bWeO#Vo5_@ zTfoz07|hwWtctOM&)M0C+Ze#{^ff)yPtyvfJf8rK+WhFL{59tLPlmmZwe0^#RQVoQ zQ|*Sm>27Ymj_$tKT;2F)U2jaTtqnChde#l4Op@G3nV^vX9xymkKSqfbum1`%@1y4u zB1+@}zWN+!vrwS$>fg#N%pZa+pdKr-0|Ycouz#=}lI%XUNi+=p?`E&C%J+?_z%x}3 z{Qdb%{TlxBr=^R$w6?V}{+;#=;X!*=^VqVtuNQn%lq0DgmJA~C-b4`oIYSN8H70= z{~62A$L@UB!2JDzE4!DP{dslVz`x$72mZ7=B_~_kho|p^{uANc)0SUA6eV!4nCV#- zdUGL%jfExelj%z>T_-EyC`cop`vk_xenM%JrY5_)a7WD$IG`sJX*+=NnL+u<$l0q= z%B#JrbyPvZd{{02Tg9@IS2^#UbYHDo#bVNLRTBcu-zXS* zWW9lS^-Y)KEC{=7=8~~V@co80FPS!b71JvrQJC2)DD0-89NZ@=*WY7#d8Kw$sy3H$ zRj_=v{Rn)@>5A!=1;0naHVNs=ot8SDiWXA`+j)!N1%%p#p*ng$h!-OX?trNp5RleK zk?FU*@NdZUA3MuE$QXawH?rma3HpH10E{C!9!ACtP!R|eMT}b6xE=YzF&cP@f|z%@ zDy51%QYoRWIADnFBE&Wrok$@aQx&5w5$~@~Zoa{+Jh2YI@4S(EdHgElhk+wa=(l(| zoUxz3VRcH{?%||+ubnAm78gSFaqaE)(}-T zawpK3`uZ&zN5uofysI?HsPy7BCs8Bu`{b{b4iQmwt4=<$8~fmVoHr7zFESN5^$kU- zyh3EQ3kj(ME&962g~Kno=j6HZu}Aa*Lie~4ytA|YthD>$`Nd>%oKi$k`cI~9DRO2;^NS&4f^FN>#t!=O`h{k4`-lg~z6@?Pk;lz& zUT2JzGHgRlK0@{@(s?P@P_gB+o@K*G)#yRQi~p2t)T(7xSE5NX%4ywq1TXhfSu`#` zZ-4}S(C4D3hMR_%D$l?n`y7G>o;#3TNr;&v3~V>7Om;Oa-u3{@W>E}FbFebU!rc>m z*i4z~t66SJRhknjb{InVm{+hvwmzRhG75IN41s7?u?>Gd)Fn?|sKE<(G6MFhR_&c9 z_InfB=!Q)x$(q2q8{Z4%iNJuQJ%oA((F^#Lw<$1CqIZq{`ywH4P1Y;+{gL< z7LAl1;we>Qdx!sMegmT9q`{bgSY)<$x$J&S^obxe4WnC2&X*5bMY;*2Td9#JHrA?g z-{j4W1;I6l7nR+VuZsHD$gj~C!>>fXf4ewESi$Lg!VazGP$OTKSvlplSyQDS-<0@9 zcwU2(zG`SQEvDk>Q6gmurZBh}lBUWFvsn4J6I^}#?HHLYtv8#lN2D;r0nFs6+?WY| zD#skDjs7y{lzHNu*l|;Pv6PKtN?n%ezP8*2!@x&w4H;TeFWr}I2dBh8gh5z58|~s> zElI<#z;tAjIwLgN35!Soh0M+m+WDfZJ-Vl5qob`#YCFD%0{yNs`8z3D8IE3);!IQv zU7XIx4!GcoAWuAHN?=B247BwjSS8iXFM|P^d*IPK!|^}N{qxQMnUkoEv$_3C8*5I zHqV(UKmYR56YaGbkvFRb9ctI)D~dE-GI>VwW^uulLq<3Y)?WGcapvR+!oWToKx>b0 zN{rcUHByNFPHyKAoTUPD7{zu}j55UsKWql!K%11@=yy_ZfyK*b(;wd&TCv6f?$Q<_ zrPBw83aHayhZze!lPS(sQD%t0vVWj+Iz`+x@&~{qZFS1t2zrid=i`o_)F_XVycm_= zlj?-@Uu?t3GLgl>ep=}*Cs;z08Z4eEZIPEb7T;?VTQ5P*n;#xg$KJ>fKMw%#l&6cA z)dsO|5*X7tQXOVNT_t-0v={n(-iVyjN7(MHA@@$LJ*XJM_*p}N(yssUYUnQ&!=DiB zfn)u!eof@)eTdiFwmbM;PVi$4B`SjJZqGac3u-o8h?i#y*7Y=6c z>cF8CxmeUP(3^SY?7KpsMRmbFL__#Nx6n($qM(clFmL9edTo8#ylV*8H1kwN_hGio zE2oh=M&Kr_K1y_1{>PR0HM;)a?nD{*qAMeo*FxS0_NfY{*530mBnfKhO^~%p3xj0$ zL{`>kV+c*Tg(_}R2mN+=oo%ZlPh=(V&YuJ?`@5$4SHqX!qy!sXgfI7v9(m2&p00mT z0~xg)74=&kFn7g>xRIAK7AB27Mtx6`mM4sG)8b{}h?S()6Fp9k7s%Gs^Hu~D??lec zNSl_CH$_|-nX#Jk1D{*(*W<6CxNzlTQW5p6JODTy;(%FWGxt>jqU>T|LBi+dXuUMA1>p%$3wAPlHPV$5Z^CT|wIBujlhqV9*{1*tGP6S_#CR^AJXi!*ilG zJ<1XG{)~@VtL;4`EktjOKI&x0NgvnAvSc@$?69cvcX&<8X^Vkb8gW4D=@*libnwR~ zKE-UeTCt#3I|Kmjc6+iqWec=(q2p#tw9ScP?lp%vL>w#6c3Y`kL8_+px>(#Y5vU2Q{pl`R7(xFe{o{PmrgcD|K)j7fu0A92`xab=s>;rX12kZO_Uh- zqo^p=xK1V`I=CGwPXd!ua_sZGpT39bXhNaHm-XGo#)j9K|J8kNYX!iE$QC%!pdMmM zA3Lt9UWonzhcBBfie}A6R)tgXsd=?#WF>(!cB2Nw+khiVM2BRJz*DthBhf(pzQbjv z>V7P1P-0YAY;NRPK}()cYD01WUz@;)eqkI_dNe*GYd*7LXI>!I$m`1l%5@T(CC^Ne zP%d;%T>~gJ1p5um_w#@^=?bn-4@kQL?l{)Aj3q6HOe(JqXzt!!)VE`fmKsKpwHdk2 zxhk){dG}HYPgPuenMTpC10H3zsHtN5qaeFi*}~bF<87;hr5Tr}cb8P1!(yQ$=J`XK z$)}L92oGrY#~*L_t8`@re5R4X8Yn}uV)z}aiqTO5Y9|7ha|zA66lu)j5Fu#Hv?3K- zYtV&CG^rU414o`Qq^N@inkzk5tiBt7qr+t6WY%?CeQUq4*h|bkbGnscI{I#+>hR0$ zwUaY~9)T!~4tO0xHR*w2V^-4DXA5h!vYa^0MVdYG#mewx>JB-i)#P}xms7>ys|gnd zUNQr1NyJ!mwTF=>{VZu7Q!%4%-`(U|R|YWoE}|)4Q0$DnJg|yLmCfp0>$!qF0w3Nu8Xq1Bo(VMx^mnVYEKCJ# z{_dGz^x==zK}2a1&Pz@&rQc5?B3j00AEL;2(eLl(8SY~@iZX62?p*Q=D;}RYEz<7I zZah6T4Q$C(aoTFpf4LKm$o9qwn!r4+(WZ)yA{swDp(3;oWePfrKm@loTa9|^n}5v| zt+ZvVWe~h?tV{Ai9hCd*00zAV%~!D4ZoK(dLmASt#o1g7quXe1XwVq9_L*6;&Zn>O z83-WSwn8gjTF5RMU<}_XjX2@xkvApl=kFQHDe2;`B*5w^*cvIg+>^qY>8NS6O za(O|o>N&A zg!pHP&5o17Sy?AT)FvuKFrA4GE%&4sHsyP5;ho7!$snZbWs*Z1B1@MNb!MFhdpKKu zu(mk+)~>YviGG=~F5X({Lro!Hcc|8zs`bsT-sD6j4v#_ywm$gTWBAmykCW-x-(7ci z4Xuis6Bfi3^IcEzzodXO_`~D2JbwK2hGaOzmCP^!3o)bTtQBwA zUmR_o)OfmixygoeGO{m~sm|vPo(CU@V`!Js9Ml=~)a*D*TzOOGZYb?7Jpn;ign_yNjFz zB--?aGpk71yVobU=Bu74FAsvH7DKZWX@@UwUbG0&@ur$6ljgadpm%TP) zy%Nb?y`vd6GiPFCt-zMKZ1AiOCe4CG2%hIGIS)R^N)46sevq?w@+Od-0c}P6D5?6( z1^&&NDmIojFI{YaIxTZYxBrnkJo%AByKm0CSpbS4@ovVN_nWW3^G-KM4@FD;Q=LK` zX%IY@p_t)eL!+Jcmq6t~c|-pn5eiVMf^EkCpN`Id<_!hW1?||0h99IU6n{xme)Mln ziZE;5C)JvPzdt9|{$lfgTeGp1@qGxzAoJ45+{FA>9y&Z`@g8G)Mw4qLCvw4+(Rvu3 zS-;U#K&wHgB9|bmo{1fKmQEvR7lK&-0?=~ zI~3g(Udi8(Tb<6=B!2Z!;RJI?q0dg+Qq6V;wi}mW3GN8)Z^6C2~*&T z&c>cjSqk>k)^d7l-+ZLlLU9jN^FO^qA7h>k6fAkJ3TB52nvFtf8}0m5EIumis+di; zY<|}YBgKkTa!CorjtsB^FeP_{^jmHA?}#+2r;0LS#I8i45D8tad=@Iiyg^RZ1=8gd z@+6S8OD2T1i>S*wLK#bW&wqx{LP0DS=9t@ee)kG@p5YYS{t8#!^E>a%4th!( zfXf5DktX-@x!x9o=O{q|C%g&_<}t6$mr<&^cRV}+uLEw~FRv3@rcCl@=MNxbzs);- z17RD&*vj9*VZ8)EZHZq*f#kU7h~*4O3`;0Q4N5?f$cS@e6{3GeDt7WcOm+@c`htv? z>nRR`EDpH7Iz{dzqlg<7}3iM`)W>p7C+Rlir-omzKSF-MuwyaJ5E74MS6`l(M>4evpIwfMa$aBe6 zL;6v#-VS0uO9Dky(WrUIou=<53!DO>BmYq_{w;j`x=Ql;hL*sRj_8k@^&>p?RA{D zvqT1wTTN#nUkpW?k{*ca3Lp7y6W+Qp{So$MiWwLPeV354F;l=pY%=<_6X^~JQ2UQE z@W1M1zX7THJpVt;8mIU(XZqGR^!wNMa5Cx{^o>k*K6d1AK^0Q!`Qnptz zoWT7o@pwo$MZ(W(BMp4pLkoRZeS5edDV?nlT#z;VuQ%jsHwLS2eBO+Uh49lD3h*LU zaB*ufj%J`SiFeQ25aJKgGjsM&zO8YCJb6BaKfNICr`i0q^ch?{7M^M4p$NUGT*f?w zLbs{>$rx)KDb$n3fw(7rQa1(YZ5*t^b9Bgwkbc7AuA%SbWA^uPSFdwUwCKX&>@{-X z=CQCcn=Lc7Y3M7G3!gJdYLOf~g9jkIRz?jl5{-897l`E?@8-nIawbD8n46Dq9#g<0UpmSTCjk@djs%=ZsTH4Dc0h+Z3Git?r$Rk*vP8vA)4C4dh<}R@sNL)X!?%-(2cs%H+ai zGs;c-cz4QB_0S|*Tld0bcTS4(4|R8>d$9doPRZm3iZdjz?gWvNS1)Xq(R)0Jf<}ss zjmF06X=?#aT>*(R+}{r9E)k?;0ex?3x&l&(^^lRwc0YIb03OJmN4@5w2lD4(ls32d zsS^v2)p3|t1~zP~RBXOA)Urbn5umE}r*PI9A4k-*8mB56hvtd4>5 z{WUDE`#WenE(zTAth?+m7fln63+L1JnYntkFAi|=Ce+FKG~~^hS5|i@JbPN z4VlFH93@0!^5wjvFSV?v&$tiDC8Nemr=2w|<7Gy<*j=oa;pXC}^OP)0C+g+W@;+6v z<9%09gkJ^@vZX8D)GUVQW?kp4Ow9}9G?9)jy>euK+Ev4TP%HOg)|;V@r*vEKI_2rh zO8g!-S##i{U@yz6Wb0Dem#w0{Z7k7J^0XPVvE#c}1W?APlBvuClm0EMm5`nl&7$O$ z1F6C!VDQ@z{JoU1UNRa|Z^C2f!MpsH^vZVQ>&7=)s3HZKA^cWZp7;^>lv70-NU&&Q zNU#`T@niNg8ex~h8DWEW$vo+ZG(1-%>Wefzmm(UK*E`qDXxC#dfldTW0BYM=MWXa& zGWr?2R$zx1hnQKxO|ZAHJbbtUQADIO{K*7rAo$yZuy;7+M5cMFuNJ#RG)nuF&z3TI zu*9I`ns}lXboNAVbZBPZ*xXT(Xt`DJ>a#GP6X1ghm@)Q+dU$Y#okDm$OQ0xwWjn^V zh5jg1j^!mW`<4E~#tKq9xmF}lq;4-pjd!dg@?NG-ti7o<{c3NZs>@wvUx&ZdUG?>s%O@L> zu8)l@C(2BTm5;LRiL_PeRFvvugL#oix(qK_Hx%`)Hiu`c-%U;N({t$}NlkW^=r59$ zLnS#Xl4ml+15wBALz0>a$Kgo{$_dr_7-VkI$$8YDGr4XkD+tzwkz{)k5j&rS1rR;& zEdb9%UbjHXGth<;j)}L49GkO7(QKBEj!+;S=&l!!4zG|RG2kR?z}h3bz;cQf2E6SK z`^M-Ru)fj0jc4p8nHNas-ua8nFN{M=U5B7Rqe+3La&-shTi zN*`}E^}C1kNb)$zl? z@QSI2A>oh~YkzC5Li!}Ah^4IAQ#-2H?g??r!pn^1(HWHB@k?mPn2g z0x!buF$aVK!UV;AKv*Jseo7UHAt}l^-(jpfLq>$_p$np7yJmd%5KKmvU}3WH9{lFp zQ$E0SZ%ZiX`FRuBuRzPS{okFuEKtY^tnd5{Qx$(m5x+>8f1qJzPcnQr5rS(>H9{DI zTnR|vk3_fFCo1GO3y^Az9TC*nc>P_!GKdZbGyNtz>}-h*n~5cp;a-e*G2$}H)pqC6 z2J#gkM?QqKfsksrEj{4kYg6blX?GL7*TlyGEe-F2z{6_jPU?F%rB(nG{Q$MVHl#QKyKLJ7k()zW9N&zI`mL(xwQWgGHp&<0y_g`a5$cDGxj zqku7keV{RdM1%ZNAdh7F+C_zo@twCfmqiyY;|rUhc~@y^0-oD3d?YhB>%l&i4?$mbKA0%hvScY~lCZP|ed)_e^r zMHA}!{Huqe$*2pY-}gJmveUo_>568X75}bQ>91?)dxMVb&VxsM0X@p`!@*3S8$xke86-bKb+@TTzQQoj~Y|UhI^6?zo2=O*S*(~?@ zg{hc_d%cWpSV9J*?hxRQ-D}dv?)5!E`9awKA}6{Jmv{D0m)8@>Nq+GWlwjDu@ewBf z0tYbz1zQV!a|>O2;4}u@$hbtMp?;#GRlm{+O_orgo`$r7vkTkoA=J;KBn5kE@1+Yf zCZ$#&W^NST9|%?hW({cpW}uoundnn$Xu6^Y(hwcv1NYp4cj2QAQ@Us_%9hq!pFV$ zT(KUL(O4Ks{7gGnw&h3I4(#P;VS}o)cC3}V89u(=5->H*Z}Yl4hXLU!kMX01yoC|i zT)s(sleV0Y-Zg``UQP&ma0pAxHXVhgLqMs|f%8nW2v6In+$dCx?Mj?-m2z0`a&m~p z>=m7wVMW{&8r-@F;JeTysx~E!QF)xuvNOu$r& z$n>y#P%Mu?G{DIWfNm;6Zd^d%U<^<(6^R2JP07a$C|D^?rr@*L4{3;##%tq>c4>Sh z>M2oS4M1m2g&0<*)KokU(;uBJPnZ+6rHz9}=6vd_%mVhF1a&>!<;z*N(6pL?v9P&C zaq6m?hu$GYigq|lYmyfsHF?}#GA;tmV7V2`r095=6w{dY^|r;1J-QvQ!3lDc$>p?D zq^e@AC~%@?i}BZv&o?7er3bVllf?5Xp@`Vcw^y;K_&r`vaX9O8)97if8(-*cRE=#y9H?^m-8w%nO1AN?lPe5X6w_NWu=oHOhWD{nQx|`gX`~ z6yI4~Wv@YJgA%&SBI`yD6I!i*3|E(=nDd4K-mr*AJ?F1!JgyAC@tpq*-;{nlvXW~J z3Nh%Ci8i?1p^Df_6lw6(0?kek9wMp$%H~arzvu|}iA~XIncWK1vABw-vm)yLSgc=5 z8pn~z(!Q(LO=}Zn7T6r!1bFs=)@|yYt#Ij_EG6u-onU!Kf94UpJK70pu_H-kft~$b z)pJ4Vuv6HDWW}geG4K-!bJR1Bu7Yl-JySKtxw?HZAN>`3l)J*Pbt-4G75fNUL(DMFN_(>2Ho+*dqMKK zh^+O*HMseyDye|^bgL1oTi1yUzK0kC?UnyWW+V7OI?_++_~+?qWs&L-rxOE z6sCU+k5u*T&F{m+f1H(n19JGE0Qsi8J8S4ZNK}JPf8b6aIXGD}_XUIVtPH#6XY6WxTo%BTgd zm*Y`R^k_=yrzQT0%&|Y_MwluHqJe+AT92?T|A-_*`%P>u6Gnz^A)%2tpf*tx=`I=S zwYR_^r?s5{E%l=AoGH)INR{=(!`w)-E>UEA0FEL5HeAo@l7wCUXs3cdsrD*_6bC=z zz8X*BrRa>2Jlvc0xg}fL5^o_df+f?hu7&TV6>IJeELa-4Gmeek@)8VrbY#R4PfdQx zGuK|{909#dr{(9v>My@U3z~uI0F{agIuN594#%H*!|sONT)9jYT%uw zV=s>O3zf&e$+9P~u9vkP$~1p|*OxKD^d$!D7~K+aAQu!25*LX;>)dic)j=0-e+!eRf;iH!w=Tog#QN0r;0F z<2M+0pQe)6w+C_w;8^T`9O8gTAq${PUi7u)+OzPiEl`bmdEaA-mCncjA{(@T4bapI zEKPTJVY#nTXw`-F0U^I_U}NNv#~SC7}blz=cKZ&$kvTS#iBD4 zOA?lwUTD(f8+_lOFvVIC%7}YvYWS@xFVb9etDT-m;UbH-n5ST5Yq=1HjkNcqxjH8BKUCfWiQ z{qurM#?WEZsOr}3leEa?%ut*O?g^B%i{*YU+lM-@2L!s=|9*7-(X0P2D)NJi#YOVL zK6G>848Il7TO~G#>m3B|(3NL3Yw0DodhSdfu{QglKH!)Wg-bOsaXn%>O1xTk2V)c- z74qvCJx_Y!n^Me5bu7E#(=SSl2BDP8Y8S2f-pvaIAsKKJ>eY2*O@U%yt0ctWt-pe3 z>O{l}{uw<^G1qDBJx=GABng7aY;XF_t|{HyXh&=>-D`_ZtpQ~_?zrAA|rViF4b&_#`qv#A7lii0S(9d@yd;_xM2|96Ub4 z_|b%#sH?G|ljDCuI=;)|Se6Bl7Py^xgJz&kj+IMkHN7Nnw8$IdbiKUl1W*W1x z_CAm}itnC7lI&vj(;gxmXVAh2j!*lbXIeRE<{TkpN3s|C^h>rFd77aJq#NSNuo9*K zE+1roL7~k8DP4{hCZCSU3adY+Ej~3)kr!zS-Xx`a#K3&wrc(4!@SmUwsQcZt_U>Wyp?=!b4(Y<{_} z=7=;NtQ{ft*ZI&d+L$YA8)fK8EBUX@;j)k8h@jb~NdSO(n{49i(r&mpXurkfUPGy* zkzjrZ>O>z_`~s1_t#)30IOSZus9gZ9kca;)cv?31%Wt5x?_7FXi(!^QcX_l%UW=@bM6ERRK_HD)Fh2L8&g z&a&XOM(o;a4>p!adGZ)4#C*%5EkF5C#p4PF2X*& zXFniTwaTXT5!F(fm|E%`#z-7}Z?-VQis_|8#oBW;UHkato4J?jt2F}WX3%d4Kf87fZyGn&`L&0< z0c@IDwvKF_Oi|udupnM;S&erGIawq;@twjiPg&{Gc%NkctFdoD*O!%SWSJKllPgtXTplC*+a{A zj!>kf-Y8;YYcrzFm|d+@!}Yip^h`NV37#=AGlDTa9h(jl6ewr01#wFeBtQkj1p8qJ z$hrc{5}+OK=T-jsGy#)Q|DC&Y1bStLAGgie=%JGI&k4-|VLwG~$~Cc?U%^pOUJoqJ zAmdgPr_OLJ^v7A`(yzY%sdAe@VUHd$Fp(X(7+H5~0^8}T(MM{uyjvj@T?u+x5faag zbXgr|P_)Jwx@q5QV6WZ(URA-Yi|n}4XEA|DT?CzmkAzig=`}O)(s2eKWujp%-iACa zDPoZPD?fuW6(Zi63G*Qx$s1Cba8;frLMJ2+O2e-SK|S*(D#q4dYq%XnSEDJQ$zuh) z0vO2AQk4)N+NZy#pUT_|0K^_O4apx(Bm45+DF4oWI6oYV`%yc)CdV zMAS3V-q}wCqWDB%B|SDSS-W$j{hnm&5K1JxG*M9SLY9Xo1!F;~V*WXqs!uR$Mh*B8 zuE5`)cks7bg@+xy|Hyyv;P-I@_g*isco7NHcKHl_;j12RFcXsyobVwpQ^vuA@~gZ3%IWNLMF>w%QVohs4sB+#V3oY%fhL z6h?c2;!tBaos|FAO%wHJj5gqlV{uMsj$0q=kg8OU`3S#ozawS#lKvoOub;(7SuI(Xoq`@`_(1 zpXHrc#pj)k$Hr^uyPtT;eB(vwFVq4a&76+Y&VCtT!bGOWLbv7u^4Y9k&Y7+Vk4fZ7<`6!j`2p&qe;5Hc7l zDo8KU72FN2H@Gi~QZL#S)(yub*feTe+iROx3{PCwTXc>5vgR7%-kr1{zeL*wo^S)` z$Bxf$+0(=E`RPmUPtpHyB>!EGyg&0lWj@VFMDzdlB7Dk)zsb-8-H5ZaVBVDp2KpwZ z#{UOrvLOw0CicufoQd?kGr7bAIui$_BPlHGdxx^n@!(LN{GS}k+4J|zyTB_L|0r7g zR&@4Y$NxN+dvD3#gU04>LF2|dYiMC8dZ=;|iRg#_1<66m8u`&-nCb(Z&-0|oIg);P z=ze%n1`e>9kjTUst{RU&yQ98^|4}*x4_bKUkcDiHUqm!D<=)aAc=uFg>v&;@+7WH{-hrA zsW3oFN783O^jy)xFu)cTtW~uq^sJG!DZC@n14@E=_CY(c@_<1__Q7m0G1)Q!PxAe- zPkioLo)28t`J*eR`s2#g%&m+J_3a=0-oJN?{sH21f4}&zLn*Nv-C40nL_t5-kB~L= zkIl0A=lZ8ZqbHkV4f3zYo6*D|(Shq1zI@23;P^?yDZXi+^N#=N;lDi>gsQmDnBeuo zWMTivW)C>&%-+u|oPKnjzs)c{?C|~O{+&^WE8GuIN8`nutM-U5!|#ZGu8}CA0^?Lf zm1RK+Nd_6CURbP$*;lwy=CpJFe6ubJg(8yQvPS-^!x1mS^kO#erzxCfj47iR(QOyh zY9V)7hEbQNp2XLYgQ=`yxKQ(eMPZeYFX`JPl?a-EgqkJX-0Dr$Zm{>vmf!oCIYY|p z6ng-er5u-wrDNa#x^KxxtcIKp;sQEghf$e)>$6sZEdZ@j4zkYOLN-NmK>jjCE@Stw8Tpjbv z^6JLT$Jdgp5umKmEI;ezckArO)xY&aLHtO5f?SBp3HhT9i?;s`3Lbdpj~>1Ef9c@= zmfmcrUpMDpR@i z++P2gU7OpQC7nHXh9qYdYLkx!b&dMBA~`b|e>8Wg`j9m+j%lfWN4&c}tYcp~#e>FzOZXNTXlwe_X<-jmPPKEGKjyCa&vP?1T=UrNPWe+$Lsbz0vK076 zmXtZ}61*J}pX#OGcvgoYJpZ(Ob=w0Kv4k&}=Lta6QF_H$$XFH;u%j|l*d@Fk{polM z%jzNbDUQ3ua6hen?@{CaR#Ea`+`r=b`*Zv=`SI($F41z(@1vAoSA@Fs87R8->fMSz z7JO@+l+;nwtXd>#{y}g?VxuF2$p}ur4v(C@duiI%D!~6l+W;ve&z7A9u4*zw(vWXd zm+GU}iP)uyq{8YjYbIsy{jueOEHY{{$;p0IhSzDk zQ~%jtJu^16(zpK+r~SAG0gdz6WsK2h)+! z!&2-|FD(dwgEFPA#}~EW2!tg}yjU0o+FmS!e6c0|h+4n2<8qUkaw-=0DKsTC{bf#` zGAF)S%|=kSPrLE=n%eDYcyxs|i4_xp8(~Y>4LGTK!Mwes>}U@(tcczt{9sKLr_z)? zKu;2bwu;uvx!9JCTKdm&?EW;4Mwf};6FKFYD@CL#sPB~=wDJS3^uwnsVDLQK3|;GQ z+V+^XA;2#^5ZpfUmyy|pRjUTZ9C(JZsE%qJ=!0B8z=xthg48l_mpvXm>VG!c{RaQ4 zo&4L$|9C{;4^AG52svIo7T9neGx#%_gHqV~TQnD@<05aNX`ygm#_q=wgBMm_3X>a>K^}=-fi&_JdzrW4KEg+WdHAN`17H;|I)t%M*)+TO1LUmP+#xZ6NWdD5T11A*3?$3(AP+a z7Q>6imkSyVtl30Y0!MG;U;&=Qcz;jzP^e?E7VnE#mllX!KT1hSVwR2LxY%|XsWKg< zyVyH?@d7Nd?=1yAcD=hi&-)wJ`I4GbQ^dEYyTh|zX6-y{pA+JSPo;$v_yDGlrS_)= zGM_liI^oaLVApS5-yOMueca5j!VSLID^+7hqK@BT*{#oI3+-&&R9G%r*PO(8VfXX{ z0=jsyja@+2M!b4%=(>E|rkkoBQH22}-iN9}B9m8X(qM_3dLK%^%ZCJsn&#@cO`6+i z1i)K{LrTofJ7+4^PR=mZHQO9XKh4dOmPTSFojCd>q43(q`PPD%GoQ(d=ORjnXHwPpy_BN5#@J!hQj5gzXn5<0I6IWGJl{%rx{BA`qKPOogZqOCKDRG)$pa4KzE9sh0!P zFwCwO)yJ;;Vm__iSX+|V7lu1d%(Qrs)5;My->GK!t(ml(<#3F9UwimKA>3Q)fI~a8 zEOWuM`CFh=)r)GZGs?&4{bFhA0RetGb|U|4i7zpJmo^+PJfxMP-p(r@*{0(pzWy*P ztHWCb%?;YOGyWuvFk`I5iTmOX=iBgMRH@$h%l$fw#Ta($k;T_e4BD(dJ=f!S2QL1% z==Rcv9uQBYluU(96-}i~HS@=2^I5X1UgS@5Wv~=G$ZtoE=%;d}l5&eXMSRBFj$QZQ zGV5hZUgoKnI(m)Cc>64NPOteKUM#W&!!2ZQ)J}T!rl2#Y)A6~!*s5QBCw>5;OaNEF zTNKzM*z|tgMZVloqq489|!7CD)=@2S9`HO=5yeF)MhhP+-;#m}|LWV?;dM*-iD4HiRUg&e^ge(Dn zabgi=Do9}~B_ol2c|f4+b0)N`ErGr-3?9z)-LDf{j&gWV6wby|(i*;_oap-a&E-w#vzt6uY<^!%BC z3j}T%?SfR^JhBufewQXf5E5)(D_Y3ZpHywGx?Z9!^$A(SWT$`=o}x-)fj{W2=_5`iiXhomH8Fpi^^wQ z@MdDX=*pkSMG!49YI`Q(4{N`D7GPtT(bvN48_J8=M&d-Y%yeC<-4cL6_xYH>v50n% z6$?{L6Va8`NM%$wLlW(jRGt`zj$&3=maG9zU#oWYCOMPvJf{COUKjbw=L|RevE&$i z8$IW+D80$Dbp69Zh-7ENiW>|9tMZYT`?y%0PkM<#gU;V#RZ7!pKA)BW2Xg* zi2m#@e_J_w*o>dW^n0lOxdog*qon`df|F?J4g=u~30X*5$pIOoceKXRmAKI|-)eYa z9vEWEGdeTAozCw}%h%`5&brHKFF^DFeUOgOVXBTYg!^Hkxv3vwjh)}Snp|OjNRsE! z&S5I6kKXJCIUqbI_euKzp+?|S$`%S^Hr;=g3AY8}xP#1D;Y)Eqy6;?J5Mqxr7Iv;E zuaW>@DRG-gcCm4-2_NM&Xp#z!deor#$~DbCQK$EGL(j1R8;ReNrEF! zCze@XrRQ5n0X?h+O}tnoJt{_3r7$Sz3EQy6b=T~vpnw9)G1zOIi!)SCC~Yj(d@#)_ zsuK7T1O=EPuW#TyZ|TOWuYwP1zv}rpwHm%?M>>@cg5F=})9WW_c^K6LL z|KB#@=RJsv(vb!g0(NF=w2cq(!#5UvseTs_>5nF4P=*q%^NrqMQb=q{V>UI;OH~I# z=NRl#;iHBcgjSQSUSg61L7D^S5%6IJh>XA^JV4;C|L8^WXL~mG{3VHclY(4J&C*2J zT*6$O6Jw&9?P&*zL+@oKqj!puiv|)ZMV^7jVBa8eA{j{hXhj;vL#!(H%^8tJ7K7WH zN&78Jph_p9YI%Ax-)MYB=c- zUKB}!X4StcY1@*?e(fWS0FiHO5|@hz&Z z57S#VMI;W4fjhYH=nnq28u&L%yC*&WyhY)_fkmJ~SV6C=Zlzg13}$F8PSMW`NhpHD zAo|4ahvpNh;u{&I>NuO`wyLE1B6xc9D<6Nch<@(__hG2{uwY#zbIiqc+=`9);i&)BQ}i=1(154dUod=YSVKv$ z+A64&47)OnLRRf9_1mTk6qy5q^4wCDPuM3lCC>!ZrpZ{~&7y860l6qu^=yu=T2gAW z3ZdSawP_uL8L&c^;E1GQ8qK3w|vImAyCOs-^Rw+{{La`t)lwg zlC9C;?(PsQxVyVM1PGAe?i$=3g1ZC{1lQp1?(Xgq-0vT&`iS#=TGXdti(V zp2%;lRW)l?)tsz{VS+MGVF;1DZ!7R-q5?OtRJ9U@7I*B?Fo4%#qzNG?udwmB{Y-UgE zk~}sAg$heS-^X|Ii9u-+Qh$EBHM4yujK5-{z1MWfmU^tUN4G$X@Dg6ifC%aqSD!Ei z2>5_Q&07Unqsv(&sp5lhCgF_GGpOwI_Auy1l~v^jamz#j8tOU^<3Sc*nPEONtzv}( zX0zN?ae`2`4Wy%3V)26dDM)K$fcaCfK=7j4aD&8OXBQ##T`>`1+lu;+FE!uT)K^Bnnvl{!4QokBg~UPegmagncoD-V-MJ%mG3TQ3R%|Ys z6{P9NJ{t45ZT6Ckc3V7z1}>FcN;NE-8U1u4ounE*>^jY|ftmxmm`lv-NdCS!hHCfJ zo8!iU=P_w1Hv8h@Ps%z7rOPBw4v4d{*K{Q&Zj!Auy@HaiSrX0i(S1u?S%*(wuU>s*2R>qS#O^&v39pDnLDJ<-5Ca@=2Eq5eB(0?H^w0$) z`g3+3JDyK=0R}gZJ3Dl5)cmV$f{=O-C*XO?H206xWm?)asUjDvDI4c()i2AsOdE%C z=_0?N^j>~Da?ya^@7>_`zA)4oSf+UIWaen|jbA%2|9kd&#HIUouLE!}^vZcYEGRL( zB8{HDxv#6{_8DtTF;Y-VH?IVyw>>m+r1Tr_0@Sc}Oz*;^k0L6J@d8AbL`&MAj8`QW zq86_q8-t-`srj>vq_8|k{7<`F2>Lvl?Lfp;qz>k+C1UVcVxw1OXq_Qc?}n9&u}GQn z6SmqWtI~vxcZ62!L2IO|DS5(z2kQjuJsA(JU<44L%v1K;AL!vLcBo7Mwt?+rcAAuG zzO5Qc78qFFz2p44-?|m#KP54BBW=^^<37h$`R|Pi-rOj*nJgI?g>AB5tq^k%Ihwli z+Wc6Px0$}OkAj&?N70=hP_E*E7=+SiPRg>Wz{c(#>G!go9}~WKxTBQRp14`P?Wk4b z787-PZdCA?qLSZ78MvmzjtGUD>_&Gsr&opN?n}{up0RXIrz^MvvO-bgiO%6PuJ$`A zb4<~TkQ_C=6|4~LLh$P_m9C27?;C@607;#4E6tuT&eD8`ekiHq1c!cFgw<9V-CD$H zeaiX8iJ=yhBB-zfk{AWEE`Y&jM*kQh$99uT+5_ZLanN8;L}em5{L;W^HN?rhP4Kh6YQW??YAUnkjgjLEa$DQ+df>JMA=D2 z-hFK-L)2J_25MtrQwe*9U)z})^BC@NSLiUGh+J-8{iHa)^l+pCf)EbW?+S?jY4-dh z?1Ya3Oo90kAx`I5Eu<|TJAK)BAjhO=!9wBu-`0UqOF(^&w&0AVS&)%%l=`O%&SzTa zrGoQ(z`AkTsl6_Pl4c4nMF*bP)ah8nan0@S z*EzyP6TYuLJ=sqgBdgqulA&N^S%@gXLb;4X)xFAX8TV=3Y(iE^Mil7&88@@k3F;*_ z*hXY>3~h~s0#V^;2?19vvmdwV9I^;u18hzweWfx+e11;0Qt}16q}1zu4>R4^2D?h9 zlIQ&qbfj9_q*J|e2w}hKWg6H@v_wqe`twyXQ^S_%jue1hfPaf!xc+S|{ijsjzpkeL zOak&UFTRwi7BStEcVpRXO$7;>l;}#p0=6(}(b0wGVbd{S7J#>q=_bhj)vqvJkiJMZ~B7o!1m5&b5W?I;*O zuu^ZZ%qYs>skus8L4h;T*1|*HC8%O~J6Kf-U95f4*5hBzb0f{SL?vFW+@!U1=e5B9 z$wF1d_xugL)3umMgXBr~7=pJ=eH?O#O^b?dE+T_0(M{&tib$zqg|@>`xYoRKoN_Xa z(pj_CZtbm;2CiET@PC32TSqG*KD0WcX(RZq@@q3$R{OSypVXtPImTM6+6 z{o%4u7%YC0qiY0~to7Y1Zlu8#qL6O7`#)=B+b!DBEXGumqc`vvv%Y6_c@Q zjWgr=&M~t=+khUld7BRCp#D%7f9GQ_Quw{0y4ypk_{bD8&rERg+|3v-hIN2ge78H( zKS>J8CsQ;nA`BIFKwHEkS>5z)P=a$m39JAo7?e2Kn>JzS03Fb_>cI>JzcBq;@dt5& zNV!>-qbzA_?XTB#GbD2MWhhRMyF?+&L={NuvBDGqUojU4*Uewhyv4S zj?15$&ZIXNV>Q1o5#*~VQ1!!C&%8%hGMYp*(42K`YI~k{eUx9xWtDAs2xvO+#z&?e?~{<-u$E=rd%BGa3&uD_w-CaamVxDgYD4y@1d($H^!RMlji%!Bu5;5c zL3g{+78LsTxEEq3P+;i+MpQpFD;;KZMSD_AAD29ELCxH`;(a9(<}KFQ17@Ese+&>v z+GZ@!TEviL!jsq9-Ux3B((|dM639$eC+F?Yd%&ZA=EGXoLT(E)rhH)UAJL@;k3qzM z3ycUmk2-LJJ=0^n$5T|lfGcqWJ3|^I`FbECBf*N^E8C&cHw>7B^LWC%TW4r2bUx$R z7KOA!F(hTeXkYYMh^|9vU-Wm4PD+q|00!g=(sRPjb3}ZJZ5zl+NUT0;|IPmP3jK7y z&*|+g(Xo^9HL>|GZUxYv``{$W9*c`8WFy!m z!V42+l%M9Y3kYMmzfC0nvaS4DhW*(w_@jXS;{}DsXqhe0qXtAQ=BVFA(V9(^+?zIp zN5cnLNz%n5_RhnK3Sq2A7PiTwM18j-(HqctR9%?T#<&N%SI`ra)kR;(WW-cIalS}b zt$5ryDP4JE4P6SOjl|xZi*h&QSb#aF$Dv<>M|nKo#1)}s%W!z^MYZ=8jZiEjd5F{P zuui%(aRT)Hfu{8oVVNS&9!hT-aWgoT{Gu0k5purr!o2zZ<=$O9oU)9sNMHo0O6JID z_WXgUu1S_V7cYTb7r9zpYRSi-tg;q7CQcceY>^LdPp1cqXA07^34vWhZIatuDYQhv zywjAoWOWuL6&)>eN+He3FCzpE6034C4SILjCPz-6RwYAd8zdeD17>Ig)FYr(6;Fa& zyDFOGfF_8!n|sK38-98&r3ifbx#nhMS1bhaX)lO$jEX}3Uh||`>iR_AINUyil)wzn zSEm^~Z{Z|B@XSWJy~7lm2u(#Z#H)30FtR)A=+?H?$4d`_{DRxh0Vt z+UZ#IBPRyiQyA7>8)WYh&UkfCkw5-&P2r7mM1OHj+4;{Gh+c2jpGoq+?tJ~pbN(Ya zPXCb{3F}a)$xuT!(aT6kRp)Y~=AsYdhw^TI09ekK(0rB~0&zL+zofI0!e*6t9Wlf9 zMlbAcmwvGbVBvU6s!G)|E~Ri69+%5EU}pANCtFcja87!9+>~jrW6o|fJ`+Qd^e8sd z)j5uV{hFDHA7dGj)&=$>rE17RHzYVdnUhW7GwE|=sfdp6Enl@sV?wxf6lkb3Jsjq6 zw5Ymza7|o-ZeDE7qGYjYz}XMVXNo(VY#4=^=;@px!|ZUh0cEy4#3Xta2J!KwpA|&+ zJDxI+c`g#DVwKD;sq7dT(xdp2xkEl>axF+i#P+41tWO(>?dfNm0x^;C6&jj)fXUe( zUssP%c8zRM0hw|9x7qPOA(sDSR$?sx`_BMo1t!;LO8^uI2#7#KURK687!g^}R4_l& z#B3#ctA4uc;G^9SvHc(8s$|WlAUBy|l}*c6Sl7wSGby)2p3huqORr9yUbv020zUj# z$;+ehTk;A&ur0$m-V@g8ZQ)I83#QvC6xx23n&A>}Bk^t;`<%p<41a(s0tTA*rFQja zVyiHj1}VLB2pSVT(1eM2JF54Vw7{OfEr#mMV0<8SD(!iF2IDEFsXk?{BfWdJedy$q zU@@7&RmA+tY5%az*aJEE@ZHR+ZanVKIM=eKe$r;by>GL`7ax z>J7PIZM5WZ$moKg-0@^)vz&G_c`Sy2Z>yr*rnLCBdmiiba7~BGzKzS)s_PlL9uk^e zsg<7i{$t7YEi{|WKJ+I=BB(=HLk(85?*XU^6Z7WqA&2)8ktcYDKvKkpHn4UpUh0h6@owu>0JYi>rHCcq0~dO zZW+Qf-%AQ3XEX{*00bKT-=?ttEgJu`xAl*J^A{Tb4)*_hG~TtQl=a`E@qf7``kNsC zCyG#%k^}5JKE(&3fr73qUUU*OG$FzZiU*mjdkYIj6;hNDg&IiB)7({F{9y+V4;HM5 zEMA$EmUL3SkoLOUi?+!kj9Jn%J?JuKA@$`Vm}#@-m`dkhsQH_wSq5y1T&*(C8q`*; z3LHbgVQPi;;&qQ(2J;~Us-U1-+tjle{o#~9>i0H8ns^u3at%Rpq%Hwy>?^GGN{;BY zlG*t@b+h8Hx$mJ9Fp={xC8Ta?jozIQE?CS+F2N%ea(S_FqB|0SqZh2!Bm9)$9EsLZ zJX!PuTfi|5w>Bx<`H8f@DeYt)>E65{MM~zjytmLuk(*6Tio3_49PcvyJzq}CsFg=9 z(tA(t+n2(dQF}M1R@cQ#NQD%>41@cNZ*(0!>VagOq65as-FhsJV9AglY?6mD-I-xx zN#6}9=%a3IIgzY*WyA_%Bk3CxwCTJV00oY%oIxXNXy1IF*h>K0G4?)f<(NVCU0#8! zecJGZ~$Zw+21bq{mbp5*Hit~EB@Ds`yUO;s`6hw;^KXxgukfG4>d>f zHRg^&6%_6?ay~E1D#+w2Fdyi&)BeH%zWomCUpePAz0&$gE& z&Or%fj=>a{R!9;?ZQpg%_N`X!;PK5PkEQ4JbvYr^(dJPU!`UC*=LboKrFGHSx;D6G z)>x!&} zSfAvJI|1r%d4_+vS6M4+U?Ow8Rr2;m#Y;x~?RRbL5G;R$TkZdu?cg&0;nPYaJ*_n_dg0&F`)B1aPynDqA- zx7q=1%L{m47eP&U3hJFqonRs!DDi+wN#f-rpZn&Wl<*Y_X`T6wx_Cf1~b$+$phsKq@eZ9$23)=hYWSPbXeVRJA$O_U6>3y6bei ztL25`v#%Y*Z)Uwjp~$$^4x`)|PdOy&JyJzu?~`;FS9o@n)O{B4CmnpkfB53V#X%Un zO-b!$Zo5YaPqTxC4uum6g^CIpx;&?toWB2JG~o*!gNLl7wcXYOTm)v{lC7FE1Z<#Y zCT%IzR}Tfn&MWJ0k_9Q11HnW#;HOMRKRwJeiaScLl*|vamBb#C8$L-)R_2;kBl*v0yc!Ll&;h{l#`S)h?!Ck{?;5Co!txP%9Q*P5YTu9N)M@~&rQ{orVT91R#`DM~*eJ%Q_8p~Uv zAD8IGPJC!3EZU}LMX5o?ry?yiAZ@j=QdD=>_^@-*MCN(Avm+td(v~kDTJ02N%{Xqa znKy-D6NsDmpR#iA7@7koe0JBImSG|`m#PY(qiC=pl&d_SjL5)f;E&L5$P+JGeKj&l zIUc$fy(LChl98pcsJV*Ri#Utgs@kv;yY4vO%e88`HAC2KKkyFXxV?b^C#XLcJDpv9 zOO53QECwogTQ35aR zZos?(%fw&>)}(LdYWQL#nqnNmfZy}g_bhr^POg`8k`cR-K%yD3v78VK;POy}+h zBaMS@?w)SI`K#=3zH4r}BZo#4YGlCM?kK=6O z9=iUD!4xya-W@55_5IUWzybY&Ms%ThI}Jkkpgs>vqvx8R&Jk?M-6aL`s z`op)|T;z7mFKZFZ)*rpvta;Y#o^cJYLo zY2qgF0;G$N8TAQ*Xo!4uu{budzE^+L{Sbm5h_bf#9vB^uz zxQO9cRFw*y;E`tP6bH>b!zhm=q-U^^lEDE3A}1V0(u6W%D3IUP3$;FqQUXZ~IJFcz zzPy75X|{75n)&x5`<&BuD5@DmZ=D%?$vU##y&Ze17(dvtoy@vwypgB}1-ZYl$Y^W} zvj_tZ=?CZ1)Q(d@^KGI{bhrw7IW@m!C2uC>Uo&$mJ=tI{$JYGYWBbo=(4Pr7cENIj zA2GlvhM9=SgeX>sqXsvIu#8_NN*uKhn3(qMRR3PhJiAm?7x~;lej}PDAqnm0H~7#D zX5XmB*okTkih1sb_@0mZ&+kV@KE1JqEJoghA9;WoZU-e8b9Q zzD=(h=G^O#fg6{>zbfM5!wV(CPh&&m&wtc(CO~i*K(5!s#t1p-sz}(!m!8TfRRt9b z;kK=a1Qy2cG20_v-l0WXe=}$N1qyXprvQ30^SwW#azDQ|z#dSZ#JZ`x=$%ps9BMRO zHO0L!vBqxvYP!^_Ui9e*wwkVn#;nyh@w{703qls=g`v+9Q+11|F(1C}!Ol20k~skx z*q@u)i5PsxO~Lj!8&j~7X(nNucdpA!{izt*6lT)8*D1=kjqPnmnf+}BizKczZ8pKC zyGWd5`0ij>%Lc0n&k$MVcz+*M23tN53LO#i(dYy%d2A!4sJ@@<=wgMIDw(4E*f!XK zCeQb$T5c%I)m;=-ZO106W!!OnddAOh2sTa_-<82w_)e+O18@gm->zH(x8;G*K~u9D z3Iu^lS`HQ9tp%UZrPK$--;0inLUi{b;c9#K>m`tuQKg`MA${m?BW;AK@YdO66t&b2 zTU9f8^fC=~3p}zSr0dgct0Ou1u4`9dj#onA$Y%Hh>Oo#8+sf4kYf7^ zdK-RGWv~ft(EW2p;v?E15V!JRw(_>y6$5u$c|fJynR9mr&``?@p7?;`ddL8{i(TNq z>wWwO-R?gkNqE#hMUn=z#XVYw7@2ZysZ4Pjr81IgDuKKs`MjK%Na>K~xDrqdUM~dF z^qgvWr7`}*L5@$&=S=4>9&H%`F~G3kcKtgKW43k4YD`wtnpETC)wmqzT4SC+yZ8eX zT?LxF4xjg=0^F1+3p8M{Dmk@#KcajT1n*+B?PXFPw4~OkwG32Z7!Sv!=CsYK{Q@ii zUui|&HO_stOtD81kka+ljDdNmCfXx4t6U(BmO=TM_0lz*(qFsQYF^bu%u1*@F8;|@ zQigHD3w=-SNZf=&>VuGKRoqYJnb^1b`857+Dpe1yIKlL>0GSlG6__eau8*i;o&2Cg zNI8Q;bvR=b>AB|*!l90UQ75jnK)|SzYQRk&AQTSYFXm;)Vsr%q%#bX0*43sI^)@V{Ad{vuw z;@P~+6RT%$$Euy*-OgrqYO6OIh*IP2nwf6pH)YGPcAl06Zd#98MluB`^tknhz&Uo- zt6x5QmI|#;W=r9f49zNyqe+C|UT}}7YD%nxVkT3`G(+tR?8*tFN|@?)39JT6O4IPc zleeSm2!l$Xqb~;Up;%SKKV^|l?BehYU{+hhV3S723GrePHHBVqX2*=F*WS0Txk8id zF*4(hX$cwlnk-<3qfNm%M(a+gV1zg24syCm0t3=O>Xm;hsp;#hLoewhewkDo{q6Dn zryR$h2lx+O>7R&fnEy*;>+y>f{`W-ozuaVbEq(tWAO5JGid9~-Z5mA#(dY%RpDo4K z{CE&Vi!x*^v_iC3B=QG}{J4}?OT2>MeqO|q~2tCO8LhOn|RYksolByQxdjJLGVw{ zK&JP5x6N_*^_gpMo}a&iZYX5zR&^x^Gm25XgRrF7?NoP<=eI}9qL06+R}gdoWu~*o zYJk?VEbG(efg9GreXfqwOl#c1lbl=tZ8=*foty<$7tDUYXu*)5%d1xJQPt_>))J5g zPH7sy<0-;TYpG%kb7>+u)7iayKZ{-3sqA^e^tLIkd49tWN2!)HDlPHNfJ+Tca()b# zE+Vy7se!MaGNmYwj9?n(_h&uVy!cLXIR^?bMI2h0T(Qb*mRzs4?i<5Uwu7%mv@^L0 zZQv6fYYxJzxbJl2(fIOu2YG#A8G?6Cx|lVp`D~msSNz7S9X6l1B+fJzNe2bzpLkRC zT33N*jiP81)e}Kn$MjbfNh+zqLc$6EuRj4jw0d{8doKj$XKe1Mv2Ve_M3@M=Z=A zh1Xx(x4)FJ|4*rn@#sNZ_nw^f=&a7o7b&61vcdJi=!ds30Ofzh$rL8WvN`>2gZNp1 zlz^FW00UzgI|vIvEa8_bQyBvzWW0B*%XVB2I@&j~1pVzD2F4qc8*McOU}hBpb*x@& zvog*g#^)UB48Ll!Jb?6qk+q@AM_maM1xjLHps|2JP=MAGC{T6J9H_buHjbCbApC@R zs*WBAGmf!;8cXO~5cm zza+yhjf7#30er_KAfEpF>5cz!0s9a9BJ)zf_B>ZM=O#5_+ZRe1Cp3u*h7c0r0S4~R zM@j$1y!N1}Pq92m$05K5!1LT_`~2V$gdeVl0~2;f$>^9nsf3t(dl1KNCM?!^=&5qV z${!a&_+2cs2YoEfNhD|yB%(5#5cb|3TjUA0&*7;CvX$&)Kehg{A{z{%lsX{IyEP~7d<=(DE zes%PCxYHyF-JS*sU-{dD&ai{&(Jc!Ko~?KNh>Vl*oJK0lkF7Xo^r)LZhyhr&tEUD7 zjF@*-Kpd2U$*w1S7hW#L#3S3eaN?-yXjl)=CJ8Wu_5!E-zjbF_nYnNSm!jD#dvyEZ|g zeAc4Y0dhrBj_lPESnmf#3O@>aEA7$3L;8;Uo#Echbr1O)&9-uAXrD@6{Pn2evZ)D~ z2C2kjoBj(f|WGBlv!i+5ZU*TrA>>zMU?F*f@xyLYKl6C6RbV=a9>~ zp&1uCKbzTXLn3Oe7_z6~_k4bC20EhD`?Jn%%(mP%z@l#P4AzpXO|8c)N#0!;HbO4Y zMwQ#^R*NO(RE+DPK$#amQhTSw0RB2li#xP#9ZLFo0JiMR&vh*>(5&vK)+|H1ZrQrV zNR^)wq8#ka3fa4-iMOUI%3$Sh%kyZLi5}74VCw_Fqq>4N2U9!7P#Qh(>yt^efQpH@ zMa_}ktR&V6fw@7&IGqc>J(Ni5HTu+!+vx_ME4^vQoZwCHQcI{*ZP0rF4pr>8wZ#9n zYxZZAtN5zT>OPkG018a*o?uThfg3Mo%*BU?_Ph;|9cVs*!_?J3su^JpH z(ztov`SwuC%(0tWa}!8@Rt{0OH46*Ic8q0`ZPv&k!w-8oC@Cv=t*u1jDS%029&!zC zVtfxoJ6gY^DK;`JSj%O@xg+})aV}9;h8SpFmysr=dlS0QccL75aG^#`EP4{ld@5gd z$I8*Nj!4ZL=>XZfrUJ*Nrv2iN!Gf@R>51Y>&hSRHi-OH71*&&i$n-VF9}f6eLTL+#;{C^-r;v4)U#y;0%Q`!;R?Z3I*VI7vL%s_FWW%)#b51JS3bjDksz%Lhjr3 z;M>fgG3W0L?bKx7)Ec=C2O-pMAZH(cs^SY-qc$~*OFpidFE%W7_#~C;%Ni&fUBfAW za0F{$(jS6~)wS70#Yo5h#vn=v*4ZUOhc06a1gL+`u9w0uRkt_zagF})x$s*DiJS;S--mwAO1~1vF z*6c<*Q45$^mVg?8aTdGi&D)dLeSF>GV2aM(R;<*d^aM4<53&8d84|OTk#Ed~A_+5^ z*;5Fqq|brNg64FvLzpnly$nH$%PI{O^xp)4fnNSFHTfb3sfO$;}Az3Rznn!kkQO`bKW+b`d*{^R0$_h7 z-%U}SBj{_)egx=yt+2%`MU4D#dQ+jI*)9OFtKX5;0P2X1&x%eEMEqlFGl>X^(5?qa^e)>tC< zUi%Rz!Mn+d+Z1zRClrj04GwMl40by+$*2&wT~^WM=;hsOQPW+2T~oH{;u+eEyzTI_ z1^(VVj|@ViY3j_HVj;b5eS~z5HdBR`W>?$=w$mfCy7l9GVYpk93>qggl^k1d91t4t zMT9Sz{Kr*Tb`tA)ZiRP5%#fS9K?q5$;QHDyun%aAH;domiaEaWESQ9Wpv zrmK}xLCEM&!N`xn(%xkl!svJxOf*FnX)r!|IZWs3oAu2j-O72io&jY=-OLdfaQ|Q~ zBaCJ-8F6<>zfavsPrbh%xkh<2@R>;0Pe(^=VWK$)Z@_e6Po{A0U^g$DBf#MM1=ahi zWLm^EJmAVy{bVZ^6n0x^h~HP7R~Ku-02kVecSqL}Z8wXcBmRctf;a z$e&X*VA=BekdRD4G)oj_cxf&uat~Akh>VAlBXdU_J6a^6C%wbz)5m+PLX^A@3I^Q# zg2Jix5T-{9UzQaj0Y-u2^;#A!CP&9iBoGK6ZfmpI(xlg-KY=YXj$JC<4n{WR@CC2o zL5owVb?ODg31o)X7%n6|Q+ypEzLfrsO`~MzqGfsz2(x!sCOXa7r4x|cPXRVD*-*l_ zgkIiG?_>a%{No(vGL^_hB<+$k8PoeCpWDHNTkV^WXbb~a`Q%4?LZVY^sKSE5LFt zsnk%YUHYb1kU!+0V4bXIh^-OAtaKqhTH;^RZu^y5$_m0>H!X6f#lVQ&C7Ly&MU#h9 zJEjx4iRbRl{&cz@uHE;@+olwvlTaO|vY$vWQidJ*^x6W- z>-Si;2LQ1*za6Xl%je?X-RA!qq;%}eeqC#Kc^NrD2E^32@&sA!-q~yjwgC5fV*Jj? zMCP+MYt77X&T0#r)gw0xufkQ`G?9pW2uqfRPDVyMFT?+>ECI+gK-HN>E(#Q&7*ksG zLot`Zif9i$nFFPeU1GsCt%L{^Vjji#?{Uncg;iH|Ls<)K`$4Ue>$e41NOz34iujQ% z#@pnF#Z>P`n?MH66f=gB2DZw14{HrbFPzYFpH$m6G5T@Hj#gZ) z4hpg{En?YMKK=Yg0o*}Qb9xIb_P}{)5lR!yE?V=QpN^P)uA5i(_JqjktIjA5?`vc* z=MUuG1ANLafavh=s}bD4g?9jsHIUOa1xP9V`ea&>Z2*&5R1qsQOaU-Z&`AQXDf7iT z0E!)zAnf$hGDufrtYSy)_)&KX^6+ls0I|Ez{(Rom^5o!P)Yb( zbfWPFUw)9!4CzpDpb!5N17Ebu+KGyH7R!Vh!~Ufh)Rg|?-sjKct2Dj5187iH@bq<@ z<>lirtdoPu7xJY);z^^ayocNJ!@dF?7B8M`SJm|Ih6mbt8=Ar>wwGE5w@n+qZAj{+ zwn-Z1A;VG}^lqAKv7xKT?Pr2rHsGe8kKT5+Qq*7!)kC?PjZU8+IwO5QP0GrccAcD( z1R`du_f1NA`E5mk|F;jX3`nK&wpNZN`hS)Y z4qs%<04X(KC3tKy;?Cw>{^zs2rp@4vj;ubo++j@(E0(JA;uc}VsF)NBSNb+ zvD=3vlXoHpdp~zmkDiH&Fp|QGZa9w>il0DPW(Y~_e*N~%{|;sTkJDq2&QO&1jCR(=o^O;N$%3oox7`a^BT>0{gHZm zlbzEbQ_k>M{^c_B83nk813dJ^@SZC%C=xCUipWCHsF13rmWDHF!b^eg^{s*i)`#Qh zN{O5gnv?~fAdA!9+k`L}M0b4$YJa3tO>6Os4&r z!VlqYErLCp(9~bia9G+d41`^Ez5vg`<>qTS;;oS5U!i!{*^O_9vw*`iCQ3XZ5P3^f z7Ce;8Ci56@1)!eT#*YoSQPLBeH0GZ4#&xo3GDHNI((`#2)}kZXnS(9(-5~2ICE^DS zX~+A+JfyErTmluPBsRP;OCPu;pc?C`_wRx!i!XEY#OoE5o8u*1Al#t-+U_!ihJ8A;E0m0ZGIr>we@}C_-5=Q;F(waHebE{ z`;E2NvD63Xbp8!<#abvKE1>o~&xpha#)*du%1l(fVX3HsAd0q@fL0F#GpzZ@j$;W6 zPYX{i>k-P!PmqZbKxc1i>#`JRT7O+Zsl!7lTS+4I-gkAE z)s4~7Dk^;o_1@Ly6_M|M79K1;`Er^BKOznmw zn5k5nl0y2)*9xzSPqD#b2qQoOBU`Scdox+4fC|n{Tot^}Hhr&~WZfrY5l9kbUAJmz zt>Kg69oU8kg%AD_+==uvmN@LOL?q?~1Ekch-l`rwaT^4Nt1ICe_5(g7 zc-uPGlwYOloK(Gaxvm zE~mH*NTJLhR0Eds49q2hHo&|!te7vBY~5WG2*;c7w>t6^YIKvBcnxNGgBzi@h}*KI z7OX|JfTNL-KZ}%&9;JWZ8!|j>{QRva;HsziJyo7%HFlMMuIJ=g=mfd0>Jll1Ub3jK zssXb|BN=9MYs{DP@{@7gG(7L+CTkk7Ib&eudW*gC+?n`jntSs-y>Y%y(TFFl#A}C( z31g7h=2jp__a~sNO9W_$+VTj(KplucB>3zm+-~+TE)HqyL{tuGo7$6g#C60or^CF* zb-8{)903)(Duyi6CX29wYB9-$Axru#V!s-NQI^;}JjGVbsst(n#tKnRtBN_w1GJoOrQg zKL712`fGsX7wQwWvULJHB7lqFpRr#?#}Z)4{09kFt@5jcIc9x_v!TKdgfy8+)vOG* zGK(wvw$EOC5SHLZ+g6<}JEul!0gCJi!qdmI72yt$0on*wBN)@;9jeT!m{y~Ym($Nv zcer;J7hFA`Z*O5*k!_K6Vb5J3c=+UTCnhZnhN`aWa!o}q!PIA%wTkR~RsBhc+UO4j z(b8~K4D?*(lyRY&U?&88^mJe!x!QgtDT1>1L{gin_;NW&(RZ#C#pJS;VkIkSCk}{q z_ow&`DF$eWKbC;GC+e8(WDsqV}K6<}u~zN?2>1Z||UQ=`RLw-2omtUnSv2<^l? z(c71sjSmVbZY(%s9=K+aAPkgVp{LM+6JMXbC#lX}SFHU#it!jtoM_4pVfLm6ToWT~b1F<~H=`lq4hxr)zcSrxARZT zPTKJrFj?^?j!BHQ^Z{Mg@%-lG4UJuq%Uc1G@uIF<=K33rWbAoc{=9qeDOMtAjW-wjifed6z}QHFGS4Kl#ate&Zj@pE6-P`D%$Ha)iTSiiOqP z?!vnNg?xA78D-MuHrpRQYSemSQpv+LGj}g1M0O*))5D23U1$4v9!YVsGJEDo3!AFm zWa8TuXG?PK>YPuz8=y?f?&=T(Hh*r&?yY3hss`LeX~#HA^M(9EW#eT zPb}=kRh_#S+V~*0;-KGWtLz;i={MP@W*iDV;{?Liuv+iGpk+;gX(9mk8QaYl@f@KQ1^L3aTF}GA|vCoT!MT}cMi$iy4Cp$ zJ_?S}QlOX;>UC>$W;)+~t&G6niJ372V9Jr{7ICt1TZp(=Mg{~WT;JogV~FxWUZZAq z(L)-S_@$pO%n5Gu3Z|@8g~T_@bF*>M701n=E59Q(lw`a}y>Ob|9Oux(>o}voUrTZ^ z0inj?VeGu_(uDc+;d}j}ANE(H%T__Njl#8?iac7#t0mH;Nw-N3raDL^T=z2-yXiLQ ziMLYz7rUx0RO3R>Y4n;#2VCTHE%#s8Mx}%Dxu!nMD?{z%gqDq1|4g`oePp?mFbE)P zqN&%4p+(Y3X-sSc=iEHW2(`|{cPvy(+tcIsgvfM3fH=BAdBLalhNw-%0AT<0+luP% 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%0Dc>VwT&IH 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 literal 0 HcmV?d00001 From 6a9cdd51d352559c84532f91c4411f79940a8cbf Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Mon, 21 Oct 2024 21:23:54 +0200 Subject: [PATCH 17/58] add ExtensionContext --- .../jdt/internal/common/HelperVisitor.java | 28 +++ .../jdt/internal/common/LambdaASTVisitor.java | 17 +- .../corext/fix/JUnitCleanUpFixCore.java | 4 +- .../helper/ExternalResourceJUnitPlugin.java | 210 ++++++++++++++++++ .../corext/fix/helper/JunitHolder.java | 5 + .../RuleExternalResourceJUnitPlugin.java | 92 +++++--- .../fix/helper/RuleTestnameJUnitPlugin.java | 5 +- .../ui/tests/quickfix/Java8CleanUpTest.java | 9 +- 8 files changed, 325 insertions(+), 45 deletions(-) create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java index 59da41a0..aa3e2e26 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java @@ -1190,6 +1190,17 @@ public BiPredicate addTypeDeclaration(BiPredicate addTypeDeclaration(String derivedfrom, BiPredicate bs) { + predicatedata.put(VisitorEnum.TypeDeclaration, Map.ofEntries( + new AbstractMap.SimpleEntry<>(SUPERCLASSNAME, derivedfrom) + )); + return predicatemap.put(VisitorEnum.TypeDeclaration, bs); + } /** * * @param bs @@ -5215,6 +5226,23 @@ public static void callTypeDeclarationVisitor(ASTNode node, ReferenceHold hv.build(node); } + /** + * @param + * @param + * @param derivedfrom + * @param node + * @param dataholder + * @param nodesprocessed + * @param bs + */ + public static void callTypeDeclarationVisitor(String derivedfrom, ASTNode node, ReferenceHolder dataholder, Set nodesprocessed, + BiPredicate> bs) { + + HelperVisitor,V,T> hv= new HelperVisitor<>(nodesprocessed, dataholder); + hv.addTypeDeclaration(derivedfrom, bs); + hv.build(node); + } + /** * * @param diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java index 3e850357..ef6343ca 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java @@ -996,8 +996,21 @@ public boolean visit(TryStatement node) { @Override public boolean visit(TypeDeclaration node) { if (this.helperVisitor.predicatemap.containsKey(VisitorEnum.TypeDeclaration)) { - return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.TypeDeclaration))) - .test(node, this.helperVisitor.dataholder); + Map map=(Map) this.helperVisitor.getSupplierData().get(VisitorEnum.TypeDeclaration); + if(map != null) { + String superclassname=(String) map.get(HelperVisitor.SUPERCLASSNAME); + if(superclassname != null) { + boolean bothmatch=false; + ITypeBinding binding = node.resolveBinding(); + if (isExternalResource(binding,superclassname)) { + bothmatch=true; + } + if(!bothmatch) { + return true; + } + } + } + return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.TypeDeclaration))).test(node, this.helperVisitor.dataholder); } return true; } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index 2ee17c50..39bcd82d 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -32,6 +32,7 @@ import org.sandbox.jdt.internal.corext.fix.helper.AssertJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.BeforeClassJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.BeforeJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.ExternalResourceJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.IgnoreJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.JunitHolder; import org.sandbox.jdt.internal.corext.fix.helper.RuleExternalResourceJUnitPlugin; @@ -53,7 +54,8 @@ public enum JUnitCleanUpFixCore { ASSERT(new AssertJUnitPlugin()), RULEEXTERNALRESOURCE(new RuleExternalResourceJUnitPlugin()), RULETESTNAME(new RuleTestnameJUnitPlugin()), - RULETEMPORARYFOLDER(new RuleTemporayFolderJUnitPlugin()); + RULETEMPORARYFOLDER(new RuleTemporayFolderJUnitPlugin()), + EXTERNALRESOURCE(new ExternalResourceJUnitPlugin()); AbstractTool> junitfound; diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java new file mode 100644 index 00000000..35727da6 --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java @@ -0,0 +1,210 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Map.Entry; +import java.util.Set; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.ITypeBinding; +import org.eclipse.jdt.core.dom.MethodDeclaration; +import org.eclipse.jdt.core.dom.SingleVariableDeclaration; +import org.eclipse.jdt.core.dom.TypeDeclaration; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.core.dom.rewrite.ListRewrite; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class ExternalResourceJUnitPlugin extends AbstractTool> { + + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT = "org.junit.jupiter.api.extension.ExtensionContext"; + private static final String ORG_JUNIT_RULE = "org.junit.Rule"; + private static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE = "org.junit.rules.ExternalResource"; + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK = "org.junit.jupiter.api.extension.BeforeEachCallback"; + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK = "org.junit.jupiter.api.extension.AfterEachCallback"; + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH = "org.junit.jupiter.api.extension.ExtendWith"; + + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder = new ReferenceHolder<>(); + HelperVisitor.callTypeDeclarationVisitor(ORG_JUNIT_RULES_EXTERNAL_RESOURCE,compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, TypeDeclaration node, + ReferenceHolder dataholder) { + JunitHolder mh = new JunitHolder(); + mh.minv = node; + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewriter = cuRewrite.getASTRewrite(); + AST ast = cuRewrite.getRoot().getAST(); + ImportRewrite importrewriter = cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh = entry.getValue(); + TypeDeclaration node = mh.getTypeDeclaration(); + modifyExternalResourceClass(node,rewriter,ast,group); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); + importrewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); + importrewriter.removeImport(ORG_JUNIT_RULE); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT); + } + } + + private void modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter,AST ast, TextEditGroup group) { + ITypeBinding binding = node.resolveBinding(); + if (isExternalResource(binding)&& hasDefaultConstructorOrNoConstructor(node)) { + if(isDirect(binding)) { + rewriter.remove(node.getSuperclassType(), group); + } + ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); + listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeEachCallback")), group); + listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterEachCallback")), group); + for (MethodDeclaration method : node.getMethods()) { + if (method.getName().getIdentifier().equals("before")) { + rewriter.replace(method.getName(), ast.newSimpleName("beforeEach"), group); + extracted(rewriter, ast, method, group); + } + if (method.getName().getIdentifier().equals("after")) { + rewriter.replace(method.getName(), ast.newSimpleName("afterEach"), group); + extracted(rewriter, ast, method, group); + } + } + } + } + + private boolean isDirect(ITypeBinding fieldTypeBinding) { + ITypeBinding binding =fieldTypeBinding; + ITypeBinding superClass = binding.getSuperclass(); + + boolean isDirectlyExtendingExternalResource = false; + boolean isIndirectlyExtendingExternalResource = false; + + // Prüfen, ob die Klasse direkt oder indirekt von ExternalResource erbt + while (superClass != null) { + if (superClass.getQualifiedName().equals("org.junit.rules.ExternalResource")) { + if (binding.getSuperclass().getQualifiedName().equals("org.junit.rules.ExternalResource")) { + isDirectlyExtendingExternalResource = true; + } else { + isIndirectlyExtendingExternalResource = true; + } + break; + } + superClass = superClass.getSuperclass(); + } + return isDirectlyExtendingExternalResource; + } + + private void extracted(ASTRewrite rewriter, AST ast, MethodDeclaration method, TextEditGroup group) { + ListRewrite listRewrite; + boolean hasExtensionContext = false; + for (Object param : method.parameters()) { + if (param instanceof SingleVariableDeclaration) { + SingleVariableDeclaration variable = (SingleVariableDeclaration) param; + if (variable.getType().toString().equals("ExtensionContext")) { + hasExtensionContext = true; + break; + } + } + } + + if (!hasExtensionContext) { + // Adding the ExtensionContext parameter to the method + + SingleVariableDeclaration newParam = ast.newSingleVariableDeclaration(); + newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); + newParam.setName(ast.newSimpleName("context")); + + listRewrite = rewriter.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY); + listRewrite.insertLast(newParam, group); + } + } + + private boolean hasDefaultConstructorOrNoConstructor(TypeDeclaration classNode) { + boolean hasConstructor = false; + for (Object bodyDecl : classNode.bodyDeclarations()) { + if (bodyDecl instanceof MethodDeclaration) { + MethodDeclaration method = (MethodDeclaration) bodyDecl; + if (method.isConstructor()) { + hasConstructor = true; + if (method.parameters().isEmpty() && method.getBody() != null && method.getBody().statements().isEmpty()) { + return true; + } + } + } + } + return !hasConstructor; + } + + private boolean isExternalResource(ITypeBinding typeBinding) { + while (typeBinding != null) { + if (typeBinding.getQualifiedName().equals(ORG_JUNIT_RULES_EXTERNAL_RESOURCE)) { + return true; + } + typeBinding = typeBinding.getSuperclass(); + } + return false; + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (afterRefactoring) { + return +""" + private String testName; + + @BeforeEach + void init(TestInfo testInfo) { + this.testName = testInfo.getDisplayName(); + } + @Test + public void test(){ + System.out.println("Test name: " + testName); + } +"""; //$NON-NLS-1$ + } + return +""" + @Rule + public TestName tn = new TestName(); + + @Test + public void test(){ + System.out.println("Test name: " + tn.getMethodName()); + } +"""; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java index 9d1138aa..95a66f18 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JunitHolder.java @@ -7,6 +7,7 @@ import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.ImportDeclaration; import org.eclipse.jdt.core.dom.MethodInvocation; +import org.eclipse.jdt.core.dom.TypeDeclaration; public class JunitHolder { public ASTNode minv; @@ -31,4 +32,8 @@ public ImportDeclaration getImportDeclaration() { public FieldDeclaration getFieldDeclaration() { return (FieldDeclaration)minv; } + + public TypeDeclaration getTypeDeclaration() { + return (TypeDeclaration)minv; + } } \ No newline at end of file diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index e5db9e61..5671fa19 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -105,35 +105,42 @@ public void process(Annotation node,IJavaProject jproject,ASTRewrite rewrite,AST FieldDeclaration field = (FieldDeclaration) parent; ITypeBinding fieldTypeBinding = ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding().getType(); if (isExternalResource(fieldTypeBinding)) { - if(!fieldTypeBinding.isAnonymous()) { +// if(!fieldTypeBinding.isAnonymous()) { + if (isDirect(fieldTypeBinding)) { rewrite.remove(field, group); - ASTNode parentNode = field.getParent(); - while (parentNode != null && !(parentNode instanceof TypeDeclaration)) { - parentNode = parentNode.getParent(); - } - TypeDeclaration typedecl=(TypeDeclaration) parentNode; - if (typedecl != null) { - TypeDeclaration parentClass = typedecl; - SingleMemberAnnotation newAnnotation = ast.newSingleMemberAnnotation(); - newAnnotation.setTypeName(ast.newName("ExtendWith")); - final TypeLiteral newTypeLiteral = ast.newTypeLiteral(); - newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(fieldTypeBinding.getName()))); - newAnnotation.setValue(newTypeLiteral); - ListRewrite modifierListRewrite = rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); - modifierListRewrite.insertFirst(newAnnotation, group); - } - modifyExternalResourceClass(field, rewrite,ast, group); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); - importrewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); importrewriter.removeImport(ORG_JUNIT_RULE); } + ASTNode parentNode = field.getParent(); + while (parentNode != null && !(parentNode instanceof TypeDeclaration)) { + parentNode = parentNode.getParent(); + } + TypeDeclaration typedecl=(TypeDeclaration) parentNode; + if (typedecl != null) { + TypeDeclaration parentClass = typedecl; + SingleMemberAnnotation newAnnotation = ast.newSingleMemberAnnotation(); + newAnnotation.setTypeName(ast.newName("ExtendWith")); + final TypeLiteral newTypeLiteral = ast.newTypeLiteral(); + newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(fieldTypeBinding.getName()))); + newAnnotation.setValue(newTypeLiteral); + ListRewrite modifierListRewrite = rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); + modifierListRewrite.insertFirst(newAnnotation, group); + } + // modifyExternalResourceClass(field, rewrite,ast, group); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); + importrewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); +// } } } } } + private boolean isDirect(ITypeBinding fieldTypeBinding) { + + return fieldTypeBinding.getQualifiedName().equals("org.junit.rules.ExternalResource"); + } + private boolean isExternalResource(ITypeBinding typeBinding) { while (typeBinding != null) { if (typeBinding.getQualifiedName().equals(ORG_JUNIT_RULES_EXTERNAL_RESOURCE)) { @@ -148,21 +155,18 @@ private void modifyExternalResourceClass(FieldDeclaration field, ASTRewrite rewr field.getParent().accept(new ASTVisitor() { @Override public boolean visit(TypeDeclaration node) { - if (node.getSuperclassType() != null) { - ITypeBinding binding = node.getSuperclassType().resolveBinding(); - if (binding != null && binding.getQualifiedName().equals(ORG_JUNIT_RULES_EXTERNAL_RESOURCE)) { - rewriter.remove(node.getSuperclassType(), group); - AST ast = node.getAST(); - ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); - listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeEachCallback")), group); - listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterEachCallback")), group); - for (MethodDeclaration method : node.getMethods()) { - if (method.getName().getIdentifier().equals("before")) { - rewriter.replace(method.getName(), ast.newSimpleName("beforeEach"), group); - } - if (method.getName().getIdentifier().equals("after")) { - rewriter.replace(method.getName(), ast.newSimpleName("afterEach"), group); - } + ITypeBinding binding = node.resolveBinding(); + if (isExternalResource(binding)&& hasDefaultConstructorOrNoConstructor(node)) { + rewriter.remove(node.getSuperclassType(), group); + ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); + listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeEachCallback")), group); + listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterEachCallback")), group); + for (MethodDeclaration method : node.getMethods()) { + if (method.getName().getIdentifier().equals("before")) { + rewriter.replace(method.getName(), ast.newSimpleName("beforeEach"), group); + } + if (method.getName().getIdentifier().equals("after")) { + rewriter.replace(method.getName(), ast.newSimpleName("afterEach"), group); } } } @@ -171,6 +175,22 @@ public boolean visit(TypeDeclaration node) { }); } + private boolean hasDefaultConstructorOrNoConstructor(TypeDeclaration classNode) { + boolean hasConstructor = false; + for (Object bodyDecl : classNode.bodyDeclarations()) { + if (bodyDecl instanceof MethodDeclaration) { + MethodDeclaration method = (MethodDeclaration) bodyDecl; + if (method.isConstructor()) { + hasConstructor = true; + if (method.parameters().isEmpty() && method.getBody() != null && method.getBody().statements().isEmpty()) { + return true; + } + } + } + } + return !hasConstructor; + } + @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java index 1e4be5fd..04fdbfc8 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java @@ -97,7 +97,6 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder Date: Tue, 22 Oct 2024 21:45:38 +0200 Subject: [PATCH 18/58] more fixes to ExternalResource --- .../fix/UseExplicitEncodingFixCore.java | 6 +- .../corext/fix/JUnitCleanUpFixCore.java | 4 +- .../fix/helper/AfterClassJUnitPlugin.java | 11 +- .../corext/fix/helper/AfterJUnitPlugin.java | 11 +- .../corext/fix/helper/AssertJUnitPlugin.java | 19 +- .../fix/helper/BeforeClassJUnitPlugin.java | 11 +- .../corext/fix/helper/BeforeJUnitPlugin.java | 11 +- .../helper/ExternalResourceJUnitPlugin.java | 42 ++-- .../corext/fix/helper/IgnoreJUnitPlugin.java | 11 +- .../RuleExternalResourceJUnitPlugin.java | 82 ++++++- .../helper/RuleTemporayFolderJUnitPlugin.java | 5 + .../fix/helper/RuleTestnameJUnitPlugin.java | 15 +- .../corext/fix/helper/RunWithJUnitPlugin.java | 20 +- .../corext/fix/helper/TestJUnitPlugin.java | 11 +- .../jdt/internal/ui/fix/JUnitCleanUpCore.java | 1 - .../cleanup/SandboxCodeTabPage.java | 4 +- .../ui/tests/quickfix/Java8CleanUpTest.java | 212 +++++++++++++++++- 17 files changed, 392 insertions(+), 84 deletions(-) diff --git a/sandbox_encoding_quickfix/src/org/sandbox/jdt/internal/corext/fix/UseExplicitEncodingFixCore.java b/sandbox_encoding_quickfix/src/org/sandbox/jdt/internal/corext/fix/UseExplicitEncodingFixCore.java index 495d1880..e83a5824 100644 --- a/sandbox_encoding_quickfix/src/org/sandbox/jdt/internal/corext/fix/UseExplicitEncodingFixCore.java +++ b/sandbox_encoding_quickfix/src/org/sandbox/jdt/internal/corext/fix/UseExplicitEncodingFixCore.java @@ -16,19 +16,15 @@ import java.util.Set; import org.eclipse.core.runtime.CoreException; - -import org.eclipse.text.edits.TextEditGroup; - import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.rewrite.TargetSourceRangeComputer; - import org.eclipse.jdt.internal.corext.dom.ASTNodes; -import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperation; import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; import org.eclipse.jdt.internal.corext.fix.LinkedProposalModelCore; import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; import org.eclipse.jdt.internal.corext.util.Messages; +import org.eclipse.text.edits.TextEditGroup; import org.sandbox.jdt.internal.common.ReferenceHolder; import org.sandbox.jdt.internal.corext.fix.helper.AbstractExplicitEncoding; import org.sandbox.jdt.internal.corext.fix.helper.AbstractExplicitEncoding.ChangeBehavior; diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index 39bcd82d..c9aa2d20 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -60,8 +60,8 @@ public enum JUnitCleanUpFixCore { AbstractTool> junitfound; @SuppressWarnings("unchecked") - JUnitCleanUpFixCore(AbstractTool> xmlsimplify) { - this.junitfound= (AbstractTool>) xmlsimplify; + JUnitCleanUpFixCore(AbstractTool> junitprocess) { + this.junitfound= (AbstractTool>) junitprocess; } public String getPreview(boolean i) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java index b7c04e84..628b9584 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java @@ -65,15 +65,15 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); Annotation minv = mh.getAnnotation(); MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(AFTER_ALL)); - addImport(ORG_JUNIT_JUPITER_API_AFTER_ALL, cuRewrite, ast); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_AFTER_ALL); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); - importRemover.removeImport(ORG_JUNIT_AFTERCLASS); + importRewriter.removeImport(ORG_JUNIT_AFTERCLASS); } } @@ -94,4 +94,9 @@ public static void tearDownAfterClass() throws Exception { } ; """; //$NON-NLS-1$ } + + @Override + public String toString() { + return "AfterClass"; //$NON-NLS-1$ + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java index 242efd6e..c1a77aa9 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java @@ -65,15 +65,15 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); Annotation minv = mh.getAnnotation(); MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(AFTER_EACH)); - addImport(ORG_JUNIT_JUPITER_API_AFTER_EACH, cuRewrite, ast); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_AFTER_EACH); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); - importRemover.removeImport(ORG_JUNIT_AFTER); + importRewriter.removeImport(ORG_JUNIT_AFTER); } } @@ -94,4 +94,9 @@ public void tearDown() throws Exception { } ; """; //$NON-NLS-1$ } + + @Override + public String toString() { + return "After"; //$NON-NLS-1$ + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index 7beb9ff4..6075a0ef 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -83,7 +83,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); if(mh.minv instanceof MethodInvocation) { @@ -95,7 +95,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder arguments = node.arguments(); Expression[] newArguments = new Expression[arguments.size()]; @@ -157,7 +157,7 @@ private void reorderParameters(ASTRewrite rewriter,MethodInvocation node, int... return; } for (int i = 0; i < arguments.size(); i++) { - listRewrite.replace((ASTNode) arguments.get(i), newArguments[i], null); + listRewrite.replace((ASTNode) arguments.get(i), newArguments[i], group); } } @@ -176,4 +176,9 @@ public String getPreview(boolean afterRefactoring) { Assert.assertTrue("failuremessage",false); """; //$NON-NLS-1$ } + + @Override + public String toString() { + return "Assert"; //$NON-NLS-1$ + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java index 09737a3a..c39ae311 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java @@ -65,15 +65,15 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); Annotation minv = mh.getAnnotation(); MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(BEFORE_ALL)); - addImport(ORG_JUNIT_JUPITER_API_BEFORE_ALL, cuRewrite, ast); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_BEFORE_ALL); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); - importRemover.removeImport(ORG_JUNIT_BEFORECLASS); + importRewriter.removeImport(ORG_JUNIT_BEFORECLASS); } } @@ -94,4 +94,9 @@ public static void setUpBeforeClass() throws Exception { } """; //$NON-NLS-1$ } + + @Override + public String toString() { + return "BeforeClass"; //$NON-NLS-1$ + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java index b6c3b6b8..37109587 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java @@ -65,15 +65,15 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); Annotation minv = mh.getAnnotation(); MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(BEFORE_EACH)); - addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH, cuRewrite, ast); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); - importRemover.removeImport(ORG_JUNIT_BEFORE); + importRewriter.removeImport(ORG_JUNIT_BEFORE); } } @@ -94,4 +94,9 @@ public static void setUp() throws Exception { } """; //$NON-NLS-1$ } + + @Override + public String toString() { + return "Before"; //$NON-NLS-1$ + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java index 35727da6..a710cd80 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java @@ -44,9 +44,6 @@ public class ExternalResourceJUnitPlugin extends AbstractTool operations, Set nodesprocessed) { @@ -74,36 +71,39 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); TypeDeclaration node = mh.getTypeDeclaration(); - modifyExternalResourceClass(node,rewriter,ast,group); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); - importrewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); + if(modifyExternalResourceClass(node,rewriter,ast,group,importrewriter)) { importrewriter.removeImport(ORG_JUNIT_RULE); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT); + } } } - private void modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter,AST ast, TextEditGroup group) { + private boolean modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter,AST ast, TextEditGroup group, ImportRewrite importrewriter) { ITypeBinding binding = node.resolveBinding(); + if(binding.isAnonymous()) { + return false; + } if (isExternalResource(binding)&& hasDefaultConstructorOrNoConstructor(node)) { if(isDirect(binding)) { - rewriter.remove(node.getSuperclassType(), group); + rewriter.remove(node.getSuperclassType(), group); + importrewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); + ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); + listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeEachCallback")), group); + listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterEachCallback")), group); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); } - ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); - listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeEachCallback")), group); - listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterEachCallback")), group); for (MethodDeclaration method : node.getMethods()) { if (method.getName().getIdentifier().equals("before")) { rewriter.replace(method.getName(), ast.newSimpleName("beforeEach"), group); - extracted(rewriter, ast, method, group); + extracted(rewriter, ast, method, group,importrewriter); } if (method.getName().getIdentifier().equals("after")) { rewriter.replace(method.getName(), ast.newSimpleName("afterEach"), group); - extracted(rewriter, ast, method, group); + extracted(rewriter, ast, method, group,importrewriter); } } } + return true; } private boolean isDirect(ITypeBinding fieldTypeBinding) { @@ -128,7 +128,7 @@ private boolean isDirect(ITypeBinding fieldTypeBinding) { return isDirectlyExtendingExternalResource; } - private void extracted(ASTRewrite rewriter, AST ast, MethodDeclaration method, TextEditGroup group) { + private void extracted(ASTRewrite rewriter, AST ast, MethodDeclaration method, TextEditGroup group, ImportRewrite importrewriter) { ListRewrite listRewrite; boolean hasExtensionContext = false; for (Object param : method.parameters()) { @@ -142,14 +142,13 @@ private void extracted(ASTRewrite rewriter, AST ast, MethodDeclaration method, T } if (!hasExtensionContext) { - // Adding the ExtensionContext parameter to the method - SingleVariableDeclaration newParam = ast.newSingleVariableDeclaration(); newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); newParam.setName(ast.newSimpleName("context")); listRewrite = rewriter.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY); listRewrite.insertLast(newParam, group); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT); } } @@ -207,4 +206,9 @@ public void test(){ } """; //$NON-NLS-1$ } + + @Override + public String toString() { + return "ExternalResource"; //$NON-NLS-1$ + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java index fd1220b8..99dcd2b7 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java @@ -75,7 +75,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); Annotation minv = mh.getAnnotation(); @@ -87,9 +87,9 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { @@ -91,13 +113,47 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); FieldDeclaration node = mh.getFieldDeclaration(); @@ -105,10 +105,10 @@ public boolean visit(MethodInvocation node) { }); } } - importRemover.addImport(ORG_JUNIT_JUPITER_API_TEST_INFO); - importRemover.addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH); - importRemover.removeImport(ORG_JUNIT_RULE); - importRemover.removeImport(ORG_JUNIT_RULES_TEST_NAME); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_TEST_INFO); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH); + importrewriter.removeImport(ORG_JUNIT_RULE); + importrewriter.removeImport(ORG_JUNIT_RULES_TEST_NAME); } } @@ -192,4 +192,9 @@ public void test(){ } """; //$NON-NLS-1$ } + + @Override + public String toString() { + return "RuleTestname"; //$NON-NLS-1$ + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java index 176d9581..66cecc2c 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java @@ -68,13 +68,10 @@ private boolean processFoundNodeRunWith(JUnitCleanUpFixCore fixcore, Expression value = mynode.getValue(); if(value instanceof TypeLiteral myvalue) { ITypeBinding classBinding = myvalue.resolveTypeBinding(); - // Überprüfe, ob der Typ ein generischer Typ ist (Class) if (classBinding != null && classBinding.isParameterizedType()) { - // Extrahiere den tatsächlichen Typ (T) aus Class ITypeBinding[] typeArguments = classBinding.getTypeArguments(); if (typeArguments.length > 0) { ITypeBinding actualTypeBinding = typeArguments[0]; - // Prüfe, ob es sich um org.junit.runners.Suite handelt if (ORG_JUNIT_SUITE.equals(actualTypeBinding.getQualifiedName())) { mh.value=ORG_JUNIT_RUNWITH; dataholder.put(dataholder.size(), mh); @@ -87,7 +84,7 @@ private boolean processFoundNodeRunWith(JUnitCleanUpFixCore fixcore, } return false; } - + private boolean processFoundNodeSuite(JUnitCleanUpFixCore fixcore, Set operations, Annotation node, ReferenceHolder dataholder) { @@ -105,7 +102,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); Annotation minv = mh.getAnnotation(); @@ -115,15 +112,15 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh = entry.getValue(); Annotation minv = mh.getAnnotation(); MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(TEST)); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); - importRemover.removeImport(ORG_JUNIT_TEST); - addImport(ORG_JUNIT_JUPITER_TEST, cuRewrite, ast); + importrewriter.removeImport(ORG_JUNIT_TEST); + importrewriter.addImport(ORG_JUNIT_JUPITER_TEST); } } @@ -90,4 +90,9 @@ public String getPreview(boolean afterRefactoring) { import org.junit.Test; """; //$NON-NLS-1$ } + + @Override + public String toString() { + return "Test"; //$NON-NLS-1$ + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java index c0c0e80f..eaecb71d 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java @@ -101,7 +101,6 @@ public String getPreview() { private EnumSet computeFixSet() { EnumSet fixSet= EnumSet.noneOf(JUnitCleanUpFixCore.class); - if (isEnabled(JUNIT_CLEANUP)) { fixSet= EnumSet.allOf(JUnitCleanUpFixCore.class); } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java index b5ad350b..ceaebeca 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java @@ -40,10 +40,10 @@ protected AbstractCleanUp[] createPreviewCleanUps(Map values) { @Override protected void doCreatePreferences(Composite composite, int numColumns) { Group java1d8Group= createGroup(numColumns, composite, CleanUpMessages.JavaFeatureTabPage_GroupName_Java1d8); - final CheckboxPreference xmlsimplify= createCheckboxPref(java1d8Group, numColumns, + final CheckboxPreference junitcb= createCheckboxPref(java1d8Group, numColumns, CleanUpMessages.JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP, MYCleanUpConstants.JUNIT_CLEANUP, FALSE_TRUE); intent(java1d8Group); - registerPreference(xmlsimplify); + registerPreference(junitcb); } } \ No newline at end of file diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index 59ceff7f..2ef33d96 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -23,6 +23,7 @@ import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaCore; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; @@ -569,16 +570,25 @@ public void test3() { """, //$NON-NLS-1$ """ package test; +import org.junit.Rule; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.AfterEachCallback; -import org.junit.jupiter.api.extension.BeforeEachCallback; -import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.rules.ExternalResource; /** * */ -@ExtendWith(ExternalResource.class) public class MyTest { + @Rule + public ExternalResource er= new ExternalResource() { + @Override + protected void before() throws Throwable { + }; + + @Override + protected void after() { + }; + }; + @Test public void test3() { } @@ -624,7 +634,7 @@ public void test3() { /** * */ -@ExtendWith(ExternalResource.class) +@ExtendWith(MyExternalResource.class) public class MyTest { final class MyExternalResource implements BeforeEachCallback, AfterEachCallback { @@ -761,4 +771,196 @@ public void testJUnitCleanupdonttouch(NOJUnitCleanupCases test) throws CoreExcep context.enable(MYCleanUpConstants.JUNIT_CLEANUP); context.assertRefactoringHasNoChange(new ICompilationUnit[] { cu }); } + + @Test + public void testJUnitCleanupTwoFiles() throws CoreException { + IPackageFragment pack= fRoot.createPackageFragment("test", true, null); + ICompilationUnit cu= pack.createCompilationUnit("MyTest.java", +""" +package test; +import org.junit.Test; +import org.junit.Rule; +import org.junit.rules.ExternalResource; +/** + * + */ +public class MyTest { + + @Rule + public ExternalResource er= new MyExternalResource(); + + @Test + public void test3() { + } +} +""", false, null); //$NON-NLS-1$ + ICompilationUnit cu2= pack.createCompilationUnit("MyExternalResource.java", +""" +package test; +import org.junit.Test; +import org.junit.Rule; +import org.junit.rules.ExternalResource; +/** + * + */ +public class MyExternalResource extends ExternalResource { + @Override + protected void before() throws Throwable { + int i=4; + } + + @Override + protected void after() { + } +} +""", false, null); //$NON-NLS-1$ + context.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu,cu2}, new String[] { +""" +package test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +/** + * + */ +@ExtendWith(MyExternalResource.class) +public class MyTest { + + @Test + public void test3() { + } +} +""" +, +""" +package test; +import org.junit.Test; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; +/** + * + */ +public class MyExternalResource implements BeforeEachCallback, AfterEachCallback { + @Override + protected void beforeEach(ExtensionContext context) throws Throwable { + int i=4; + } + + @Override + protected void afterEach(ExtensionContext context) { + } +} +""" +}, null); + } + + @Test + public void testJUnitCleanupThreeFiles() throws CoreException { + IPackageFragment pack= fRoot.createPackageFragment("test", true, null); + ICompilationUnit cu= pack.createCompilationUnit("MyTest.java", +""" +package test; +import org.junit.Test; +import org.junit.Rule; +import org.junit.rules.ExternalResource; +import test.MyExternalResource; + +public class MyTest { + + @Rule + public ExternalResource er= new MyExternalResource(); + + @Test + public void test3() { + } +} +""", false, null); //$NON-NLS-1$ + ICompilationUnit cu2= pack.createCompilationUnit("MyExternalResource.java", +""" +package test; +import test.MyExternalResource2; + +public class MyExternalResource extends MyExternalResource2 { + @Override + protected void before() throws Throwable { + int i=4; + } + + @Override + protected void after() { + } +} +""", false, null); //$NON-NLS-1$ + + ICompilationUnit cu3= pack.createCompilationUnit("MyExternalResource2.java", +""" +package test; +import org.junit.rules.ExternalResource; + +public class MyExternalResource2 extends ExternalResource { + @Override + protected void before() throws Throwable { + int i=4; + } + + @Override + protected void after() { + } +} +""", false, null); //$NON-NLS-1$ + context.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu,cu2,cu3}, new String[] { +""" +package test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; + +import test.MyExternalResource; + +@ExtendWith(MyExternalResource.class) +public class MyTest { + + @Test + public void test3() { + } +} +""" +, +""" +package test; +import org.junit.jupiter.api.extension.ExtensionContext; + +import test.MyExternalResource2; + +public class MyExternalResource extends MyExternalResource2 { + @Override + protected void beforeEach(ExtensionContext context) throws Throwable { + int i=4; + } + + @Override + protected void afterEach(ExtensionContext context) { + } +} +""", +""" +package test; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; + +public class MyExternalResource2 implements BeforeEachCallback, AfterEachCallback { + @Override + protected void beforeEach(ExtensionContext context) throws Throwable { + int i=4; + } + + @Override + protected void afterEach(ExtensionContext context) { + } +} +""" +}, null); + } } From 932d5378829b05d2597e7275a953b3b01d9397a6 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Wed, 23 Oct 2024 19:17:51 +0200 Subject: [PATCH 19/58] cleanup code --- .../helper/ExternalResourceJUnitPlugin.java | 123 ++++++------- .../RuleExternalResourceJUnitPlugin.java | 165 +++++++----------- 2 files changed, 119 insertions(+), 169 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java index a710cd80..6b939446 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java @@ -13,7 +13,6 @@ *******************************************************************************/ package org.sandbox.jdt.internal.corext.fix.helper; -import java.util.Map.Entry; import java.util.Set; import org.eclipse.jdt.core.dom.AST; @@ -67,91 +66,85 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - TypeDeclaration node = mh.getTypeDeclaration(); - if(modifyExternalResourceClass(node,rewriter,ast,group,importrewriter)) { - importrewriter.removeImport(ORG_JUNIT_RULE); + ImportRewrite importRewriter = cuRewrite.getImportRewrite(); + + hit.values().forEach(holder -> { + TypeDeclaration node = holder.getTypeDeclaration(); + if (modifyExternalResourceClass(node, rewriter, ast, group, importRewriter)) { + importRewriter.removeImport(ORG_JUNIT_RULE); } - } + }); } - private boolean modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter,AST ast, TextEditGroup group, ImportRewrite importrewriter) { + private boolean modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, + TextEditGroup group, ImportRewrite importRewriter) { ITypeBinding binding = node.resolveBinding(); - if(binding.isAnonymous()) { + + if (binding.isAnonymous() || !isExternalResource(binding) || !hasDefaultConstructorOrNoConstructor(node)) { return false; } - if (isExternalResource(binding)&& hasDefaultConstructorOrNoConstructor(node)) { - if(isDirect(binding)) { - rewriter.remove(node.getSuperclassType(), group); - importrewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); - ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); - listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeEachCallback")), group); - listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterEachCallback")), group); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); - } - for (MethodDeclaration method : node.getMethods()) { - if (method.getName().getIdentifier().equals("before")) { - rewriter.replace(method.getName(), ast.newSimpleName("beforeEach"), group); - extracted(rewriter, ast, method, group,importrewriter); - } - if (method.getName().getIdentifier().equals("after")) { - rewriter.replace(method.getName(), ast.newSimpleName("afterEach"), group); - extracted(rewriter, ast, method, group,importrewriter); - } + + if (isDirectlyExtendingExternalResource(binding)) { + refactorToImplementCallbacks(node, rewriter, ast, group, importRewriter); + } + + for (MethodDeclaration method : node.getMethods()) { + if (isLifecycleMethod(method, "before")) { + refactorMethod(rewriter, ast, method, "beforeEach", group, importRewriter); + } else if (isLifecycleMethod(method, "after")) { + refactorMethod(rewriter, ast, method, "afterEach", group, importRewriter); } } return true; } - private boolean isDirect(ITypeBinding fieldTypeBinding) { - ITypeBinding binding =fieldTypeBinding; - ITypeBinding superClass = binding.getSuperclass(); + private void refactorToImplementCallbacks(TypeDeclaration node, ASTRewrite rewriter, AST ast, + TextEditGroup group, ImportRewrite importRewriter) { + rewriter.remove(node.getSuperclassType(), group); + importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); - boolean isDirectlyExtendingExternalResource = false; - boolean isIndirectlyExtendingExternalResource = false; + ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); + addInterfaceCallback(listRewrite, ast, "BeforeEachCallback", group); + addInterfaceCallback(listRewrite, ast, "AfterEachCallback", group); - // Prüfen, ob die Klasse direkt oder indirekt von ExternalResource erbt - while (superClass != null) { - if (superClass.getQualifiedName().equals("org.junit.rules.ExternalResource")) { - if (binding.getSuperclass().getQualifiedName().equals("org.junit.rules.ExternalResource")) { - isDirectlyExtendingExternalResource = true; - } else { - isIndirectlyExtendingExternalResource = true; - } - break; - } - superClass = superClass.getSuperclass(); - } - return isDirectlyExtendingExternalResource; - } - - private void extracted(ASTRewrite rewriter, AST ast, MethodDeclaration method, TextEditGroup group, ImportRewrite importrewriter) { - ListRewrite listRewrite; - boolean hasExtensionContext = false; - for (Object param : method.parameters()) { - if (param instanceof SingleVariableDeclaration) { - SingleVariableDeclaration variable = (SingleVariableDeclaration) param; - if (variable.getType().toString().equals("ExtensionContext")) { - hasExtensionContext = true; - break; - } - } - } + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); + } + + private void addInterfaceCallback(ListRewrite listRewrite, AST ast, String callbackName, TextEditGroup group) { + listRewrite.insertLast(ast.newSimpleType(ast.newName(callbackName)), group); + } + + private boolean isLifecycleMethod(MethodDeclaration method, String methodName) { + return method.getName().getIdentifier().equals(methodName); + } + + private void refactorMethod(ASTRewrite rewriter, AST ast, MethodDeclaration method, String newMethodName, + TextEditGroup group, ImportRewrite importRewriter) { + rewriter.replace(method.getName(), ast.newSimpleName(newMethodName), group); + ensureExtensionContextParameter(rewriter, ast, method, group, importRewriter); + } + + private void ensureExtensionContextParameter(ASTRewrite rewriter, AST ast, MethodDeclaration method, + TextEditGroup group, ImportRewrite importRewriter) { + boolean hasExtensionContext = method.parameters().stream() + .anyMatch(param -> param instanceof SingleVariableDeclaration && + ((SingleVariableDeclaration) param).getType().toString().equals("ExtensionContext")); if (!hasExtensionContext) { SingleVariableDeclaration newParam = ast.newSingleVariableDeclaration(); newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); newParam.setName(ast.newSimpleName("context")); - listRewrite = rewriter.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY); - listRewrite.insertLast(newParam, group); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT); + rewriter.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY).insertLast(newParam, group); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT); } } + private boolean isDirectlyExtendingExternalResource(ITypeBinding binding) { + return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(binding.getSuperclass().getQualifiedName()); + } + private boolean hasDefaultConstructorOrNoConstructor(TypeDeclaration classNode) { boolean hasConstructor = false; for (Object bodyDecl : classNode.bodyDeclarations()) { @@ -170,7 +163,7 @@ private boolean hasDefaultConstructorOrNoConstructor(TypeDeclaration classNode) private boolean isExternalResource(ITypeBinding typeBinding) { while (typeBinding != null) { - if (typeBinding.getQualifiedName().equals(ORG_JUNIT_RULES_EXTERNAL_RESOURCE)) { + if (ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(typeBinding.getQualifiedName())) { return true; } typeBinding = typeBinding.getSuperclass(); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index 09b55279..b2d8b278 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -13,13 +13,11 @@ *******************************************************************************/ package org.sandbox.jdt.internal.corext.fix.helper; -import java.util.Map.Entry; import java.util.Set; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; -import org.eclipse.jdt.core.dom.ASTVisitor; import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.AnonymousClassDeclaration; import org.eclipse.jdt.core.dom.ClassInstanceCreation; @@ -27,7 +25,6 @@ import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.ITypeBinding; -import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.QualifiedType; import org.eclipse.jdt.core.dom.SimpleType; import org.eclipse.jdt.core.dom.SingleMemberAnnotation; @@ -51,8 +48,6 @@ */ public class RuleExternalResourceJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK = "org.junit.jupiter.api.extension.BeforeEachCallback"; - private static final String ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK = "org.junit.jupiter.api.extension.AfterEachCallback"; private static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH = "org.junit.jupiter.api.extension.ExtendWith"; private static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE = "org.junit.rules.ExternalResource"; private static final String ORG_JUNIT_RULE = "org.junit.Rule"; @@ -103,20 +98,21 @@ public boolean isAnonymousClass(VariableDeclarationFragment fragmentObj) { } @Override - public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, - final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + public void rewrite(JUnitCleanUpFixCore upp, ReferenceHolder hit, + CompilationUnitRewrite cuRewrite, TextEditGroup group) { ASTRewrite rewrite = cuRewrite.getASTRewrite(); AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importrewriter = cuRewrite.getImportRewrite(); - for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - FieldDeclaration minv = mh.getFieldDeclaration(); - for (Object modifier : minv.modifiers()) { - if (modifier instanceof Annotation annotation) { - process(annotation,cuRewrite.getRoot().getJavaElement().getJavaProject(),rewrite,ast,group,importrewriter,cuRewrite.getRoot(),extractClassNameFromField(minv)); - } - } - } + ImportRewrite importRewriter = cuRewrite.getImportRewrite(); + + hit.values().forEach(mh -> { + FieldDeclaration field = mh.getFieldDeclaration(); + field.modifiers().stream() + .filter(modifier -> modifier instanceof Annotation) + .map(modifier -> (Annotation) modifier) + .forEach(annotation -> process((Annotation) annotation, cuRewrite.getRoot().getJavaElement().getJavaProject(), + rewrite, ast, group, importRewriter, cuRewrite.getRoot(), + extractClassNameFromField(field))); + }); } public String extractClassNameFromField(FieldDeclaration field) { @@ -138,65 +134,68 @@ public String extractClassNameFromField(FieldDeclaration field) { } private String extractQualifiedTypeName(QualifiedType qualifiedType) { - StringBuilder fullClassName = new StringBuilder(); - appendQualifiedType(fullClassName, qualifiedType); + StringBuilder fullClassName = new StringBuilder(qualifiedType.getName().getFullyQualifiedName()); + for (Type qualifier = qualifiedType.getQualifier(); + qualifier instanceof QualifiedType; + qualifier = ((QualifiedType) qualifier).getQualifier()) { + fullClassName.insert(0, "."); + fullClassName.insert(0, ((QualifiedType) qualifier).getName().getFullyQualifiedName()); + } return fullClassName.toString(); } - private void appendQualifiedType(StringBuilder builder, QualifiedType qualifiedType) { - builder.insert(0, qualifiedType.getName().getFullyQualifiedName()); - if (qualifiedType.getQualifier() instanceof QualifiedType) { - builder.insert(0, "."); - appendQualifiedType(builder, (QualifiedType) qualifiedType.getQualifier()); - } else if (qualifiedType.getQualifier() instanceof SimpleType) { - builder.insert(0, ((SimpleType) qualifiedType.getQualifier()).getName().getFullyQualifiedName() + "."); + public void process(Annotation node, IJavaProject jproject, ASTRewrite rewrite, AST ast, TextEditGroup group, + ImportRewrite importRewriter, CompilationUnit cu, String className) { + if (!ORG_JUNIT_RULE.equals(node.resolveTypeBinding().getQualifiedName())) { + return; + } + + FieldDeclaration field = (FieldDeclaration) node.getParent(); + ITypeBinding fieldTypeBinding = ((VariableDeclarationFragment) field.fragments().get(0)) + .resolveBinding().getType(); + if (!isExternalResource(fieldTypeBinding) || fieldTypeBinding.isAnonymous()) { + return; } + + if (isDirect(fieldTypeBinding)) { + rewrite.remove(field, group); + importRewriter.removeImport(ORG_JUNIT_RULE); + } + + addExtendWithAnnotation(rewrite, ast, group, importRewriter, className, field); + importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); } - public void process(Annotation node,IJavaProject jproject,ASTRewrite rewrite,AST ast, TextEditGroup group, ImportRewrite importrewriter, CompilationUnit compilationUnit, String klassenname) { - ITypeBinding annotationBinding = node.resolveTypeBinding(); - if (annotationBinding != null && annotationBinding.getQualifiedName().equals(ORG_JUNIT_RULE)) { - ASTNode parent = node.getParent(); - if (parent instanceof FieldDeclaration) { - FieldDeclaration field = (FieldDeclaration) parent; - ITypeBinding fieldTypeBinding = ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding().getType(); - if (isExternalResource(fieldTypeBinding)) { - if(!fieldTypeBinding.isAnonymous()) { - if (isDirect(fieldTypeBinding)) { - rewrite.remove(field, group); - importrewriter.removeImport(ORG_JUNIT_RULE); - } - ASTNode parentNode = field.getParent(); - while (parentNode != null && !(parentNode instanceof TypeDeclaration)) { - parentNode = parentNode.getParent(); - } - TypeDeclaration typedecl=(TypeDeclaration) parentNode; - if (typedecl != null) { - TypeDeclaration parentClass = typedecl; - SingleMemberAnnotation newAnnotation = ast.newSingleMemberAnnotation(); - newAnnotation.setTypeName(ast.newName("ExtendWith")); - final TypeLiteral newTypeLiteral = ast.newTypeLiteral(); - newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(klassenname))); - newAnnotation.setValue(newTypeLiteral); - ListRewrite modifierListRewrite = rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); - modifierListRewrite.insertFirst(newAnnotation, group); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); - } - // modifyExternalResourceClass(field, rewrite,ast, group); - importrewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); - } - } - } + private void addExtendWithAnnotation(ASTRewrite rewrite, AST ast, TextEditGroup group, + ImportRewrite importRewriter, String className, FieldDeclaration field) { + TypeDeclaration parentClass = (TypeDeclaration) getParentTypeDeclaration(field); + if (parentClass == null) return; + + SingleMemberAnnotation newAnnotation = ast.newSingleMemberAnnotation(); + newAnnotation.setTypeName(ast.newName("ExtendWith")); + final TypeLiteral newTypeLiteral = ast.newTypeLiteral(); + newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className))); + newAnnotation.setValue(newTypeLiteral); + ListRewrite modifierListRewrite = rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); + modifierListRewrite.insertFirst(newAnnotation, group); + + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); + } + + private TypeDeclaration getParentTypeDeclaration(ASTNode node) { + while (node != null && !(node instanceof TypeDeclaration)) { + node = node.getParent(); } + return (TypeDeclaration) node; } private boolean isDirect(ITypeBinding fieldTypeBinding) { - return fieldTypeBinding.getQualifiedName().equals("org.junit.rules.ExternalResource"); + return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(fieldTypeBinding.getQualifiedName()); } private boolean isExternalResource(ITypeBinding typeBinding) { while (typeBinding != null) { - if (typeBinding.getQualifiedName().equals(ORG_JUNIT_RULES_EXTERNAL_RESOURCE)) { + if (ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(typeBinding.getQualifiedName())) { return true; } typeBinding = typeBinding.getSuperclass(); @@ -204,48 +203,6 @@ private boolean isExternalResource(ITypeBinding typeBinding) { return false; } - private void modifyExternalResourceClass(FieldDeclaration field, ASTRewrite rewriter,AST ast, TextEditGroup group,ImportRewrite importrewriter) { - field.getParent().accept(new ASTVisitor() { - @Override - public boolean visit(TypeDeclaration node) { - ITypeBinding binding = node.resolveBinding(); - if (isExternalResource(binding)&& hasDefaultConstructorOrNoConstructor(node)) { - rewriter.remove(node.getSuperclassType(), group); - ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); - listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeEachCallback")), group); - listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterEachCallback")), group); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); - for (MethodDeclaration method : node.getMethods()) { - if (method.getName().getIdentifier().equals("before")) { - rewriter.replace(method.getName(), ast.newSimpleName("beforeEach"), group); - } - if (method.getName().getIdentifier().equals("after")) { - rewriter.replace(method.getName(), ast.newSimpleName("afterEach"), group); - } - } - } - return super.visit(node); - } - }); - } - - private boolean hasDefaultConstructorOrNoConstructor(TypeDeclaration classNode) { - boolean hasConstructor = false; - for (Object bodyDecl : classNode.bodyDeclarations()) { - if (bodyDecl instanceof MethodDeclaration) { - MethodDeclaration method = (MethodDeclaration) bodyDecl; - if (method.isConstructor()) { - hasConstructor = true; - if (method.parameters().isEmpty() && method.getBody() != null && method.getBody().statements().isEmpty()) { - return true; - } - } - } - } - return !hasConstructor; - } - @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { From 94cda281c738f4c61a4f7135ea435910f213323c Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Wed, 23 Oct 2024 19:35:12 +0200 Subject: [PATCH 20/58] more cleanup --- .../corext/fix/helper/AbstractTool.java | 80 +++++++++++++++++++ .../fix/helper/AfterClassJUnitPlugin.java | 4 - .../corext/fix/helper/AfterJUnitPlugin.java | 4 - .../corext/fix/helper/AssertJUnitPlugin.java | 3 - .../fix/helper/BeforeClassJUnitPlugin.java | 4 - .../corext/fix/helper/BeforeJUnitPlugin.java | 4 - .../helper/ExternalResourceJUnitPlugin.java | 31 ------- .../corext/fix/helper/IgnoreJUnitPlugin.java | 4 - .../RuleExternalResourceJUnitPlugin.java | 25 ------ .../helper/RuleTemporayFolderJUnitPlugin.java | 3 - .../fix/helper/RuleTestnameJUnitPlugin.java | 5 -- .../corext/fix/helper/RunWithJUnitPlugin.java | 8 -- .../corext/fix/helper/TestJUnitPlugin.java | 4 - 13 files changed, 80 insertions(+), 99 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index 668a66a7..9d071a7c 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -20,7 +20,11 @@ import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.ITypeBinding; +import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.Name; +import org.eclipse.jdt.core.dom.QualifiedType; +import org.eclipse.jdt.core.dom.Type; +import org.eclipse.jdt.core.dom.TypeDeclaration; import org.eclipse.jdt.internal.corext.dom.AbortSearchException; import org.eclipse.jdt.internal.corext.dom.ScopeAnalyzer; import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; @@ -33,6 +37,45 @@ */ public abstract class AbstractTool { + protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT = "org.junit.jupiter.api.extension.ExtensionContext"; + protected static final String ORG_JUNIT_RULE = "org.junit.Rule"; + protected static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE = "org.junit.rules.ExternalResource"; + protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK = "org.junit.jupiter.api.extension.BeforeEachCallback"; + protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK = "org.junit.jupiter.api.extension.AfterEachCallback"; + protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH = "org.junit.jupiter.api.extension.ExtendWith"; + protected static final String ORG_JUNIT_AFTER = "org.junit.After"; + protected static final String ORG_JUNIT_JUPITER_API_AFTER_EACH = "org.junit.jupiter.api.AfterEach"; + protected static final String AFTER_EACH = "AfterEach"; + protected static final String ORG_JUNIT_BEFORE = "org.junit.Before"; + protected static final String BEFORE_EACH = "BeforeEach"; + protected static final String ORG_JUNIT_AFTERCLASS = "org.junit.AfterClass"; + protected static final String ORG_JUNIT_JUPITER_API_AFTER_ALL = "org.junit.jupiter.api.AfterAll"; + protected static final String AFTER_ALL = "AfterAll"; + protected static final String ASSERTIONS = "Assertions"; + protected static final String ORG_JUNIT_JUPITER_API_ASSERTIONS = "org.junit.jupiter.api.Assertions"; + protected static final String ORG_JUNIT_ASSERT = "org.junit.Assert"; + protected static final String ORG_JUNIT_BEFORECLASS = "org.junit.BeforeClass"; + protected static final String ORG_JUNIT_JUPITER_API_BEFORE_ALL = "org.junit.jupiter.api.BeforeAll"; + protected static final String BEFORE_ALL = "BeforeAll"; + protected static final String ORG_JUNIT_IGNORE = "org.junit.Ignore"; + protected static final String ORG_JUNIT_JUPITER_DISABLED = "org.junit.jupiter.api.Disabled"; + protected static final String DISABLED = "Disabled"; + protected static final String ORG_JUNIT_JUPITER_API_IO_TEMP_DIR = "org.junit.jupiter.api.io.TempDir"; + protected static final String ORG_JUNIT_RULES_TEMPORARY_FOLDER = "org.junit.rules.TemporaryFolder"; + protected static final String ORG_JUNIT_JUPITER_API_TEST_INFO = "org.junit.jupiter.api.TestInfo"; + protected static final String ORG_JUNIT_RULES_TEST_NAME = "org.junit.rules.TestName"; + protected static final String ORG_JUNIT_JUPITER_API_BEFORE_EACH = "org.junit.jupiter.api.BeforeEach"; + protected static final String ORG_JUNIT_PLATFORM_SUITE_API_SELECT_CLASSES = "org.junit.platform.suite.api.SelectClasses"; + protected static final String SELECT_CLASSES = "SelectClasses"; + protected static final String ORG_JUNIT_RUNWITH = "org.junit.runner.RunWith"; + protected static final String ORG_JUNIT_JUPITER_SUITE = "org.junit.platform.suite.api.Suite"; + protected static final String SUITE = "Suite"; + protected static final String ORG_JUNIT_SUITE = "org.junit.runners.Suite"; + protected static final String ORG_JUNIT_SUITE_SUITECLASSES = "org.junit.runners.Suite.SuiteClasses"; + protected static final String ORG_JUNIT_TEST = "org.junit.Test"; + protected static final String ORG_JUNIT_JUPITER_TEST = "org.junit.jupiter.api.Test"; + protected static final String TEST = "Test"; + protected static boolean isOfType(ITypeBinding typeBinding, String typename) { if (typeBinding == null) { throw new AbortSearchException(); @@ -66,6 +109,43 @@ protected Name addImport(String typeName, final CompilationUnitRewrite cuRewrite public abstract String getPreview(boolean afterRefactoring); + protected boolean hasDefaultConstructorOrNoConstructor(TypeDeclaration classNode) { + boolean hasConstructor = false; + for (Object bodyDecl : classNode.bodyDeclarations()) { + if (bodyDecl instanceof MethodDeclaration) { + MethodDeclaration method = (MethodDeclaration) bodyDecl; + if (method.isConstructor()) { + hasConstructor = true; + if (method.parameters().isEmpty() && method.getBody() != null && method.getBody().statements().isEmpty()) { + return true; + } + } + } + } + return !hasConstructor; + } + + protected boolean isExternalResource(ITypeBinding typeBinding) { + while (typeBinding != null) { + if (ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(typeBinding.getQualifiedName())) { + return true; + } + typeBinding = typeBinding.getSuperclass(); + } + return false; + } + + protected String extractQualifiedTypeName(QualifiedType qualifiedType) { + StringBuilder fullClassName = new StringBuilder(qualifiedType.getName().getFullyQualifiedName()); + for (Type qualifier = qualifiedType.getQualifier(); + qualifier instanceof QualifiedType; + qualifier = ((QualifiedType) qualifier).getQualifier()) { + fullClassName.insert(0, "."); + fullClassName.insert(0, ((QualifiedType) qualifier).getName().getFullyQualifiedName()); + } + return fullClassName.toString(); + } + public static Collection getUsedVariableNames(ASTNode node) { CompilationUnit root= (CompilationUnit) node.getRoot(); return new ScopeAnalyzer(root).getUsedVariableNames(node.getStartPosition(), node.getLength()); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java index 628b9584..cec028c9 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java @@ -37,10 +37,6 @@ */ public class AfterClassJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_AFTERCLASS = "org.junit.AfterClass"; - private static final String ORG_JUNIT_JUPITER_API_AFTER_ALL = "org.junit.jupiter.api.AfterAll"; - private static final String AFTER_ALL = "AfterAll"; - @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java index c1a77aa9..47e5d7f3 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterJUnitPlugin.java @@ -37,10 +37,6 @@ */ public class AfterJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_AFTER = "org.junit.After"; - private static final String ORG_JUNIT_JUPITER_API_AFTER_EACH = "org.junit.jupiter.api.AfterEach"; - private static final String AFTER_EACH = "AfterEach"; - @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index 6075a0ef..e5689d1f 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -44,9 +44,6 @@ */ public class AssertJUnitPlugin extends AbstractTool> { - private static final String ASSERTIONS = "Assertions"; - private static final String ORG_JUNIT_JUPITER_API_ASSERTIONS = "org.junit.jupiter.api.Assertions"; - private static final String ORG_JUNIT_ASSERT = "org.junit.Assert"; private static final Set twoparam = Set.of("assertEquals", "assertNotEquals","assertArrayEquals","assertTrue","assertFalse","assertNull","assertNotNull","fail"); private static final Set oneparam = Set.of("assertTrue","assertFalse","assertNull","assertNotNull"); private static final Set noparam = Set.of("fail"); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java index c39ae311..3be359c5 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java @@ -37,10 +37,6 @@ */ public class BeforeClassJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_BEFORECLASS = "org.junit.BeforeClass"; - private static final String ORG_JUNIT_JUPITER_API_BEFORE_ALL = "org.junit.jupiter.api.BeforeAll"; - private static final String BEFORE_ALL = "BeforeAll"; - @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java index 37109587..bdc1af5c 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeJUnitPlugin.java @@ -37,10 +37,6 @@ */ public class BeforeJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_BEFORE = "org.junit.Before"; - private static final String ORG_JUNIT_JUPITER_API_BEFORE_EACH = "org.junit.jupiter.api.BeforeEach"; - private static final String BEFORE_EACH = "BeforeEach"; - @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java index 6b939446..ff940893 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java @@ -38,11 +38,6 @@ */ public class ExternalResourceJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT = "org.junit.jupiter.api.extension.ExtensionContext"; - private static final String ORG_JUNIT_RULE = "org.junit.Rule"; - private static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE = "org.junit.rules.ExternalResource"; - private static final String ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK = "org.junit.jupiter.api.extension.BeforeEachCallback"; - private static final String ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK = "org.junit.jupiter.api.extension.AfterEachCallback"; @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { @@ -145,32 +140,6 @@ private boolean isDirectlyExtendingExternalResource(ITypeBinding binding) { return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(binding.getSuperclass().getQualifiedName()); } - private boolean hasDefaultConstructorOrNoConstructor(TypeDeclaration classNode) { - boolean hasConstructor = false; - for (Object bodyDecl : classNode.bodyDeclarations()) { - if (bodyDecl instanceof MethodDeclaration) { - MethodDeclaration method = (MethodDeclaration) bodyDecl; - if (method.isConstructor()) { - hasConstructor = true; - if (method.parameters().isEmpty() && method.getBody() != null && method.getBody().statements().isEmpty()) { - return true; - } - } - } - } - return !hasConstructor; - } - - private boolean isExternalResource(ITypeBinding typeBinding) { - while (typeBinding != null) { - if (ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(typeBinding.getQualifiedName())) { - return true; - } - typeBinding = typeBinding.getSuperclass(); - } - return false; - } - @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java index 99dcd2b7..9b8e0e5c 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java @@ -39,10 +39,6 @@ */ public class IgnoreJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_IGNORE = "org.junit.Ignore"; - private static final String ORG_JUNIT_JUPITER_DISABLED = "org.junit.jupiter.api.Disabled"; - private static final String DISABLED = "Disabled"; - @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index b2d8b278..19b4d41a 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -48,10 +48,6 @@ */ public class RuleExternalResourceJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH = "org.junit.jupiter.api.extension.ExtendWith"; - private static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE = "org.junit.rules.ExternalResource"; - private static final String ORG_JUNIT_RULE = "org.junit.Rule"; - @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { @@ -133,17 +129,6 @@ public String extractClassNameFromField(FieldDeclaration field) { return null; } - private String extractQualifiedTypeName(QualifiedType qualifiedType) { - StringBuilder fullClassName = new StringBuilder(qualifiedType.getName().getFullyQualifiedName()); - for (Type qualifier = qualifiedType.getQualifier(); - qualifier instanceof QualifiedType; - qualifier = ((QualifiedType) qualifier).getQualifier()) { - fullClassName.insert(0, "."); - fullClassName.insert(0, ((QualifiedType) qualifier).getName().getFullyQualifiedName()); - } - return fullClassName.toString(); - } - public void process(Annotation node, IJavaProject jproject, ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewriter, CompilationUnit cu, String className) { if (!ORG_JUNIT_RULE.equals(node.resolveTypeBinding().getQualifiedName())) { @@ -193,16 +178,6 @@ private boolean isDirect(ITypeBinding fieldTypeBinding) { return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(fieldTypeBinding.getQualifiedName()); } - private boolean isExternalResource(ITypeBinding typeBinding) { - while (typeBinding != null) { - if (ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(typeBinding.getQualifiedName())) { - return true; - } - typeBinding = typeBinding.getSuperclass(); - } - return false; - } - @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java index 25043014..46d40ad1 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java @@ -41,9 +41,6 @@ */ public class RuleTemporayFolderJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_JUPITER_API_IO_TEMP_DIR = "org.junit.jupiter.api.io.TempDir"; - private static final String ORG_JUNIT_RULES_TEMPORARY_FOLDER = "org.junit.rules.TemporaryFolder"; - private static final String ORG_JUNIT_RULE = "org.junit.Rule"; @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java index 02728bc4..5df18618 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java @@ -51,11 +51,6 @@ */ public class RuleTestnameJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_JUPITER_API_TEST_INFO = "org.junit.jupiter.api.TestInfo"; - private static final String ORG_JUNIT_RULES_TEST_NAME = "org.junit.rules.TestName"; - private static final String ORG_JUNIT_RULE = "org.junit.Rule"; - private static final String ORG_JUNIT_JUPITER_API_BEFORE_EACH = "org.junit.jupiter.api.BeforeEach"; - @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java index 66cecc2c..0eee1abc 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java @@ -40,14 +40,6 @@ */ public class RunWithJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_PLATFORM_SUITE_API_SELECT_CLASSES = "org.junit.platform.suite.api.SelectClasses"; - private static final String SELECT_CLASSES = "SelectClasses"; - private static final String ORG_JUNIT_RUNWITH = "org.junit.runner.RunWith"; - private static final String ORG_JUNIT_JUPITER_SUITE = "org.junit.platform.suite.api.Suite"; - private static final String SUITE = "Suite"; - private static final String ORG_JUNIT_SUITE = "org.junit.runners.Suite"; - private static final String ORG_JUNIT_SUITE_SUITECLASSES = "org.junit.runners.Suite.SuiteClasses"; - @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java index 37c88a8e..421d93fb 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/TestJUnitPlugin.java @@ -37,10 +37,6 @@ */ public class TestJUnitPlugin extends AbstractTool> { - private static final String ORG_JUNIT_TEST = "org.junit.Test"; - private static final String ORG_JUNIT_JUPITER_TEST = "org.junit.jupiter.api.Test"; - private static final String TEST = "Test"; - @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { From 1e76a032c8ee7f2fd4efa40e11cbf1bdc93b7bb7 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Wed, 23 Oct 2024 19:47:47 +0200 Subject: [PATCH 21/58] only formatting --- .../corext/fix/JUnitCleanUpFixCore.java | 27 ++-- .../corext/fix/helper/AbstractTool.java | 95 +++++------ .../fix/helper/AfterClassJUnitPlugin.java | 46 +++--- .../corext/fix/helper/AfterJUnitPlugin.java | 46 +++--- .../corext/fix/helper/AssertJUnitPlugin.java | 111 ++++++------- .../fix/helper/BeforeClassJUnitPlugin.java | 46 +++--- .../corext/fix/helper/BeforeJUnitPlugin.java | 46 +++--- .../helper/ExternalResourceJUnitPlugin.java | 84 +++++----- .../corext/fix/helper/IgnoreJUnitPlugin.java | 68 ++++---- .../corext/fix/helper/JunitHolder.java | 12 +- .../RuleExternalResourceJUnitPlugin.java | 153 +++++++++--------- .../helper/RuleTemporayFolderJUnitPlugin.java | 85 +++++----- .../fix/helper/RuleTestnameJUnitPlugin.java | 108 ++++++------- .../corext/fix/helper/RunWithJUnitPlugin.java | 85 +++++----- .../corext/fix/helper/TestJUnitPlugin.java | 38 +++-- .../jdt/internal/ui/fix/JUnitCleanUpCore.java | 7 +- .../cleanup/SandboxCodeTabPage.java | 4 +- 17 files changed, 515 insertions(+), 546 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index c9aa2d20..6c2c0cd9 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -44,18 +44,11 @@ public enum JUnitCleanUpFixCore { - BEFORE(new BeforeJUnitPlugin()), - AFTER(new AfterJUnitPlugin()), - TEST(new TestJUnitPlugin()), - BEFORECLASS(new BeforeClassJUnitPlugin()), - AFTERCLASS(new AfterClassJUnitPlugin()), - IGNORE(new IgnoreJUnitPlugin()), - RUNWITH(new RunWithJUnitPlugin()), - ASSERT(new AssertJUnitPlugin()), - RULEEXTERNALRESOURCE(new RuleExternalResourceJUnitPlugin()), - RULETESTNAME(new RuleTestnameJUnitPlugin()), - RULETEMPORARYFOLDER(new RuleTemporayFolderJUnitPlugin()), - EXTERNALRESOURCE(new ExternalResourceJUnitPlugin()); + BEFORE(new BeforeJUnitPlugin()), AFTER(new AfterJUnitPlugin()), TEST(new TestJUnitPlugin()), + BEFORECLASS(new BeforeClassJUnitPlugin()), AFTERCLASS(new AfterClassJUnitPlugin()), IGNORE(new IgnoreJUnitPlugin()), + RUNWITH(new RunWithJUnitPlugin()), ASSERT(new AssertJUnitPlugin()), + RULEEXTERNALRESOURCE(new RuleExternalResourceJUnitPlugin()), RULETESTNAME(new RuleTestnameJUnitPlugin()), + RULETEMPORARYFOLDER(new RuleTemporayFolderJUnitPlugin()), EXTERNALRESOURCE(new ExternalResourceJUnitPlugin()); AbstractTool> junitfound; @@ -87,12 +80,10 @@ public void findOperations(final CompilationUnit compilationUnit, public CompilationUnitRewriteOperationWithSourceRange rewrite(final ReferenceHolder hit) { return new CompilationUnitRewriteOperationWithSourceRange() { @Override - public void rewriteASTInternal(final CompilationUnitRewrite cuRewrite, final LinkedProposalModelCore linkedModel) - throws CoreException { - TextEditGroup group= createTextEditGroup( - Messages.format(MultiFixMessages.JUnitCleanUp_description, - new Object[] { JUnitCleanUpFixCore.this.toString() }), - cuRewrite); + public void rewriteASTInternal(final CompilationUnitRewrite cuRewrite, + final LinkedProposalModelCore linkedModel) throws CoreException { + TextEditGroup group= createTextEditGroup(Messages.format(MultiFixMessages.JUnitCleanUp_description, + new Object[] { JUnitCleanUpFixCore.this.toString() }), cuRewrite); TightSourceRangeComputer rangeComputer; ASTRewrite rewrite= cuRewrite.getASTRewrite(); if (rewrite.getExtendedSourceRangeComputer() instanceof TightSourceRangeComputer) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index 9d071a7c..e8c582de 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -37,44 +37,44 @@ */ public abstract class AbstractTool { - protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT = "org.junit.jupiter.api.extension.ExtensionContext"; - protected static final String ORG_JUNIT_RULE = "org.junit.Rule"; - protected static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE = "org.junit.rules.ExternalResource"; - protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK = "org.junit.jupiter.api.extension.BeforeEachCallback"; - protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK = "org.junit.jupiter.api.extension.AfterEachCallback"; - protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH = "org.junit.jupiter.api.extension.ExtendWith"; - protected static final String ORG_JUNIT_AFTER = "org.junit.After"; - protected static final String ORG_JUNIT_JUPITER_API_AFTER_EACH = "org.junit.jupiter.api.AfterEach"; - protected static final String AFTER_EACH = "AfterEach"; - protected static final String ORG_JUNIT_BEFORE = "org.junit.Before"; - protected static final String BEFORE_EACH = "BeforeEach"; - protected static final String ORG_JUNIT_AFTERCLASS = "org.junit.AfterClass"; - protected static final String ORG_JUNIT_JUPITER_API_AFTER_ALL = "org.junit.jupiter.api.AfterAll"; - protected static final String AFTER_ALL = "AfterAll"; - protected static final String ASSERTIONS = "Assertions"; - protected static final String ORG_JUNIT_JUPITER_API_ASSERTIONS = "org.junit.jupiter.api.Assertions"; - protected static final String ORG_JUNIT_ASSERT = "org.junit.Assert"; - protected static final String ORG_JUNIT_BEFORECLASS = "org.junit.BeforeClass"; - protected static final String ORG_JUNIT_JUPITER_API_BEFORE_ALL = "org.junit.jupiter.api.BeforeAll"; - protected static final String BEFORE_ALL = "BeforeAll"; - protected static final String ORG_JUNIT_IGNORE = "org.junit.Ignore"; - protected static final String ORG_JUNIT_JUPITER_DISABLED = "org.junit.jupiter.api.Disabled"; - protected static final String DISABLED = "Disabled"; - protected static final String ORG_JUNIT_JUPITER_API_IO_TEMP_DIR = "org.junit.jupiter.api.io.TempDir"; - protected static final String ORG_JUNIT_RULES_TEMPORARY_FOLDER = "org.junit.rules.TemporaryFolder"; - protected static final String ORG_JUNIT_JUPITER_API_TEST_INFO = "org.junit.jupiter.api.TestInfo"; - protected static final String ORG_JUNIT_RULES_TEST_NAME = "org.junit.rules.TestName"; - protected static final String ORG_JUNIT_JUPITER_API_BEFORE_EACH = "org.junit.jupiter.api.BeforeEach"; - protected static final String ORG_JUNIT_PLATFORM_SUITE_API_SELECT_CLASSES = "org.junit.platform.suite.api.SelectClasses"; - protected static final String SELECT_CLASSES = "SelectClasses"; - protected static final String ORG_JUNIT_RUNWITH = "org.junit.runner.RunWith"; - protected static final String ORG_JUNIT_JUPITER_SUITE = "org.junit.platform.suite.api.Suite"; - protected static final String SUITE = "Suite"; - protected static final String ORG_JUNIT_SUITE = "org.junit.runners.Suite"; - protected static final String ORG_JUNIT_SUITE_SUITECLASSES = "org.junit.runners.Suite.SuiteClasses"; - protected static final String ORG_JUNIT_TEST = "org.junit.Test"; - protected static final String ORG_JUNIT_JUPITER_TEST = "org.junit.jupiter.api.Test"; - protected static final String TEST = "Test"; + protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT= "org.junit.jupiter.api.extension.ExtensionContext"; + protected static final String ORG_JUNIT_RULE= "org.junit.Rule"; + protected static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE= "org.junit.rules.ExternalResource"; + protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK= "org.junit.jupiter.api.extension.BeforeEachCallback"; + protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK= "org.junit.jupiter.api.extension.AfterEachCallback"; + protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH= "org.junit.jupiter.api.extension.ExtendWith"; + protected static final String ORG_JUNIT_AFTER= "org.junit.After"; + protected static final String ORG_JUNIT_JUPITER_API_AFTER_EACH= "org.junit.jupiter.api.AfterEach"; + protected static final String AFTER_EACH= "AfterEach"; + protected static final String ORG_JUNIT_BEFORE= "org.junit.Before"; + protected static final String BEFORE_EACH= "BeforeEach"; + protected static final String ORG_JUNIT_AFTERCLASS= "org.junit.AfterClass"; + protected static final String ORG_JUNIT_JUPITER_API_AFTER_ALL= "org.junit.jupiter.api.AfterAll"; + protected static final String AFTER_ALL= "AfterAll"; + protected static final String ASSERTIONS= "Assertions"; + protected static final String ORG_JUNIT_JUPITER_API_ASSERTIONS= "org.junit.jupiter.api.Assertions"; + protected static final String ORG_JUNIT_ASSERT= "org.junit.Assert"; + protected static final String ORG_JUNIT_BEFORECLASS= "org.junit.BeforeClass"; + protected static final String ORG_JUNIT_JUPITER_API_BEFORE_ALL= "org.junit.jupiter.api.BeforeAll"; + protected static final String BEFORE_ALL= "BeforeAll"; + protected static final String ORG_JUNIT_IGNORE= "org.junit.Ignore"; + protected static final String ORG_JUNIT_JUPITER_DISABLED= "org.junit.jupiter.api.Disabled"; + protected static final String DISABLED= "Disabled"; + protected static final String ORG_JUNIT_JUPITER_API_IO_TEMP_DIR= "org.junit.jupiter.api.io.TempDir"; + protected static final String ORG_JUNIT_RULES_TEMPORARY_FOLDER= "org.junit.rules.TemporaryFolder"; + protected static final String ORG_JUNIT_JUPITER_API_TEST_INFO= "org.junit.jupiter.api.TestInfo"; + protected static final String ORG_JUNIT_RULES_TEST_NAME= "org.junit.rules.TestName"; + protected static final String ORG_JUNIT_JUPITER_API_BEFORE_EACH= "org.junit.jupiter.api.BeforeEach"; + protected static final String ORG_JUNIT_PLATFORM_SUITE_API_SELECT_CLASSES= "org.junit.platform.suite.api.SelectClasses"; + protected static final String SELECT_CLASSES= "SelectClasses"; + protected static final String ORG_JUNIT_RUNWITH= "org.junit.runner.RunWith"; + protected static final String ORG_JUNIT_JUPITER_SUITE= "org.junit.platform.suite.api.Suite"; + protected static final String SUITE= "Suite"; + protected static final String ORG_JUNIT_SUITE= "org.junit.runners.Suite"; + protected static final String ORG_JUNIT_SUITE_SUITECLASSES= "org.junit.runners.Suite.SuiteClasses"; + protected static final String ORG_JUNIT_TEST= "org.junit.Test"; + protected static final String ORG_JUNIT_JUPITER_TEST= "org.junit.jupiter.api.Test"; + protected static final String TEST= "Test"; protected static boolean isOfType(ITypeBinding typeBinding, String typename) { if (typeBinding == null) { @@ -110,13 +110,14 @@ protected Name addImport(String typeName, final CompilationUnitRewrite cuRewrite public abstract String getPreview(boolean afterRefactoring); protected boolean hasDefaultConstructorOrNoConstructor(TypeDeclaration classNode) { - boolean hasConstructor = false; + boolean hasConstructor= false; for (Object bodyDecl : classNode.bodyDeclarations()) { if (bodyDecl instanceof MethodDeclaration) { - MethodDeclaration method = (MethodDeclaration) bodyDecl; + MethodDeclaration method= (MethodDeclaration) bodyDecl; if (method.isConstructor()) { - hasConstructor = true; - if (method.parameters().isEmpty() && method.getBody() != null && method.getBody().statements().isEmpty()) { + hasConstructor= true; + if (method.parameters().isEmpty() && method.getBody() != null + && method.getBody().statements().isEmpty()) { return true; } } @@ -130,16 +131,16 @@ protected boolean isExternalResource(ITypeBinding typeBinding) { if (ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(typeBinding.getQualifiedName())) { return true; } - typeBinding = typeBinding.getSuperclass(); + typeBinding= typeBinding.getSuperclass(); } return false; } protected String extractQualifiedTypeName(QualifiedType qualifiedType) { - StringBuilder fullClassName = new StringBuilder(qualifiedType.getName().getFullyQualifiedName()); - for (Type qualifier = qualifiedType.getQualifier(); - qualifier instanceof QualifiedType; - qualifier = ((QualifiedType) qualifier).getQualifier()) { + StringBuilder fullClassName= new StringBuilder(qualifiedType.getName().getFullyQualifiedName()); + for (Type qualifier= qualifiedType + .getQualifier(); qualifier instanceof QualifiedType; qualifier= ((QualifiedType) qualifier) + .getQualifier()) { fullClassName.insert(0, "."); fullClassName.insert(0, ((QualifiedType) qualifier).getName().getFullyQualifiedName()); } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java index cec028c9..20f29bf2 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java @@ -13,8 +13,8 @@ *******************************************************************************/ package org.sandbox.jdt.internal.corext.fix.helper; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; @@ -33,14 +33,14 @@ /** * - * + * */ public class AfterClassJUnitPlugin extends AbstractTool> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); + ReferenceHolder dataholder= new ReferenceHolder<>(); HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_AFTERCLASS, compilationUnit, dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } @@ -48,9 +48,9 @@ public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, MarkerAnnotation node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; - mh.minvname = node.getTypeName().getFullyQualifiedName(); + JunitHolder mh= new JunitHolder(); + mh.minv= node; + mh.minvname= node.getTypeName().getFullyQualifiedName(); dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -59,13 +59,13 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewrite = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importRewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importRewriter= cuRewrite.getImportRewrite(); for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - Annotation minv = mh.getAnnotation(); - MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); + JunitHolder mh= entry.getValue(); + Annotation minv= mh.getAnnotation(); + MarkerAnnotation newAnnotation= ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(AFTER_ALL)); importRewriter.addImport(ORG_JUNIT_JUPITER_API_AFTER_ALL); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); @@ -76,19 +76,17 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); + ReferenceHolder dataholder= new ReferenceHolder<>(); HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_AFTER, compilationUnit, dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } @@ -48,9 +48,9 @@ public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, MarkerAnnotation node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; - mh.minvname = node.getTypeName().getFullyQualifiedName(); + JunitHolder mh= new JunitHolder(); + mh.minv= node; + mh.minvname= node.getTypeName().getFullyQualifiedName(); dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -59,13 +59,13 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewrite = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importRewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importRewriter= cuRewrite.getImportRewrite(); for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - Annotation minv = mh.getAnnotation(); - MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); + JunitHolder mh= entry.getValue(); + Annotation minv= mh.getAnnotation(); + MarkerAnnotation newAnnotation= ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(AFTER_EACH)); importRewriter.addImport(ORG_JUNIT_JUPITER_API_AFTER_EACH); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); @@ -76,19 +76,17 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder> { - private static final Set twoparam = Set.of("assertEquals", "assertNotEquals","assertArrayEquals","assertTrue","assertFalse","assertNull","assertNotNull","fail"); - private static final Set oneparam = Set.of("assertTrue","assertFalse","assertNull","assertNotNull"); - private static final Set noparam = Set.of("fail"); - private static final Set allassertionmethods= Stream.of(twoparam,oneparam,noparam).flatMap(Set::stream).collect(Collectors.toSet()); + private static final Set twoparam= Set.of("assertEquals", "assertNotEquals", "assertArrayEquals", + "assertTrue", "assertFalse", "assertNull", "assertNotNull", "fail"); + private static final Set oneparam= Set.of("assertTrue", "assertFalse", "assertNull", "assertNotNull"); + private static final Set noparam= Set.of("fail"); + private static final Set allassertionmethods= Stream.of(twoparam, oneparam, noparam).flatMap(Set::stream) + .collect(Collectors.toSet()); @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); - allassertionmethods.forEach(assertionmethod->{ - HelperVisitor.callMethodInvocationVisitor(ORG_JUNIT_ASSERT, assertionmethod, compilationUnit, dataholder, nodesprocessed, - (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + ReferenceHolder dataholder= new ReferenceHolder<>(); + allassertionmethods.forEach(assertionmethod -> { + HelperVisitor.callMethodInvocationVisitor(ORG_JUNIT_ASSERT, assertionmethod, compilationUnit, dataholder, + nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); }); - allassertionmethods.forEach(assertionmethod->{ - HelperVisitor.callImportDeclarationVisitor(ORG_JUNIT_ASSERT+"."+assertionmethod, compilationUnit, dataholder, nodesprocessed, + allassertionmethods.forEach(assertionmethod -> { + HelperVisitor.callImportDeclarationVisitor(ORG_JUNIT_ASSERT + "." + assertionmethod, compilationUnit, + dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); }); HelperVisitor.callImportDeclarationVisitor(ORG_JUNIT_ASSERT, compilationUnit, dataholder, nodesprocessed, @@ -68,8 +71,8 @@ public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, ASTNode node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; + JunitHolder mh= new JunitHolder(); + mh.minv= node; dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -78,17 +81,17 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewrite = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importRewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importRewriter= cuRewrite.getImportRewrite(); for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - if(mh.minv instanceof MethodInvocation) { - MethodInvocation minv = mh.getMethodInvocation(); + JunitHolder mh= entry.getValue(); + if (mh.minv instanceof MethodInvocation) { + MethodInvocation minv= mh.getMethodInvocation(); reorderParameters(minv, rewrite, group); - SimpleName newQualifier = ast.newSimpleName(ASSERTIONS); - Expression expression = minv.getExpression(); - if(expression!=null) { + SimpleName newQualifier= ast.newSimpleName(ASSERTIONS); + Expression expression= minv.getExpression(); + if (expression != null) { ASTNodes.replaceButKeepComment(rewrite, expression, newQualifier, group); } } else { @@ -98,80 +101,78 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder arguments = node.arguments(); - switch(arguments.size()) { + String methodName= node.getName().getIdentifier(); + List arguments= node.arguments(); + switch (arguments.size()) { case 2: if (oneparam.contains(methodName)) { - reorderParameters(rewriter,node,group, 1, 0); + reorderParameters(rewriter, node, group, 1, 0); } break; case 3: if (twoparam.contains(methodName)) { - reorderParameters(rewriter,node,group, 1, 2, 0); // expected, actual, message + reorderParameters(rewriter, node, group, 1, 2, 0); // expected, actual, message } break; case 4: - reorderParameters(rewriter,node,group, 1, 2, 3, 0); // expected, actual, delta, message + reorderParameters(rewriter, node, group, 1, 2, 3, 0); // expected, actual, delta, message break; default: break; } } - private void reorderParameters(ASTRewrite rewriter,MethodInvocation node,TextEditGroup group, int... order) { - ListRewrite listRewrite = rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); - List arguments = node.arguments(); - Expression[] newArguments = new Expression[arguments.size()]; - for (int i = 0; i < order.length; i++) { - newArguments[i] = (Expression) ASTNode.copySubtree(node.getAST(), arguments.get(order[i])); + private void reorderParameters(ASTRewrite rewriter, MethodInvocation node, TextEditGroup group, int... order) { + ListRewrite listRewrite= rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); + List arguments= node.arguments(); + Expression[] newArguments= new Expression[arguments.size()]; + for (int i= 0; i < order.length; i++) { + newArguments[i]= (Expression) ASTNode.copySubtree(node.getAST(), arguments.get(order[i])); } - if(!isStringType(arguments.get(0))) { + if (!isStringType(arguments.get(0))) { return; } - for (int i = 0; i < arguments.size(); i++) { - listRewrite.replace((ASTNode) arguments.get(i), newArguments[i], group); + for (int i= 0; i < arguments.size(); i++) { + listRewrite.replace(arguments.get(i), newArguments[i], group); } } @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { - return -""" -Assertions.assertNotEquals(5,result, "failuremessage"); // expected = 5, actual = result -Assertions.assertTrue(false,"failuremessage"); -"""; //$NON-NLS-1$ + return """ + Assertions.assertNotEquals(5,result, "failuremessage"); // expected = 5, actual = result + Assertions.assertTrue(false,"failuremessage"); + """; //$NON-NLS-1$ } - return -""" -Assert.assertNotEquals("failuremessage",5, result); // expected = 5, actual = result -Assert.assertTrue("failuremessage",false); -"""; //$NON-NLS-1$ + return """ + Assert.assertNotEquals("failuremessage",5, result); // expected = 5, actual = result + Assert.assertTrue("failuremessage",false); + """; //$NON-NLS-1$ } @Override diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java index 3be359c5..0adeb906 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/BeforeClassJUnitPlugin.java @@ -13,8 +13,8 @@ *******************************************************************************/ package org.sandbox.jdt.internal.corext.fix.helper; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; @@ -33,14 +33,14 @@ /** * - * + * */ public class BeforeClassJUnitPlugin extends AbstractTool> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); + ReferenceHolder dataholder= new ReferenceHolder<>(); HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_BEFORECLASS, compilationUnit, dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } @@ -48,9 +48,9 @@ public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, MarkerAnnotation node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; - mh.minvname = node.getTypeName().getFullyQualifiedName(); + JunitHolder mh= new JunitHolder(); + mh.minv= node; + mh.minvname= node.getTypeName().getFullyQualifiedName(); dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -59,13 +59,13 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewrite = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importRewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importRewriter= cuRewrite.getImportRewrite(); for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - Annotation minv = mh.getAnnotation(); - MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); + JunitHolder mh= entry.getValue(); + Annotation minv= mh.getAnnotation(); + MarkerAnnotation newAnnotation= ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(BEFORE_ALL)); importRewriter.addImport(ORG_JUNIT_JUPITER_API_BEFORE_ALL); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); @@ -76,19 +76,17 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); + ReferenceHolder dataholder= new ReferenceHolder<>(); HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_BEFORE, compilationUnit, dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } @@ -48,9 +48,9 @@ public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, MarkerAnnotation node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; - mh.minvname = node.getTypeName().getFullyQualifiedName(); + JunitHolder mh= new JunitHolder(); + mh.minv= node; + mh.minvname= node.getTypeName().getFullyQualifiedName(); dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -59,13 +59,13 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewrite = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importRewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importRewriter= cuRewrite.getImportRewrite(); for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - Annotation minv = mh.getAnnotation(); - MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); + JunitHolder mh= entry.getValue(); + Annotation minv= mh.getAnnotation(); + MarkerAnnotation newAnnotation= ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(BEFORE_EACH)); importRewriter.addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); @@ -76,19 +76,17 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); - HelperVisitor.callTypeDeclarationVisitor(ORG_JUNIT_RULES_EXTERNAL_RESOURCE,compilationUnit, dataholder, nodesprocessed, - (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + ReferenceHolder dataholder= new ReferenceHolder<>(); + HelperVisitor.callTypeDeclarationVisitor(ORG_JUNIT_RULES_EXTERNAL_RESOURCE, compilationUnit, dataholder, + nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, TypeDeclaration node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; + JunitHolder mh= new JunitHolder(); + mh.minv= node; dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -59,21 +59,21 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewriter = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importRewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewriter= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importRewriter= cuRewrite.getImportRewrite(); hit.values().forEach(holder -> { - TypeDeclaration node = holder.getTypeDeclaration(); + TypeDeclaration node= holder.getTypeDeclaration(); if (modifyExternalResourceClass(node, rewriter, ast, group, importRewriter)) { importRewriter.removeImport(ORG_JUNIT_RULE); } }); } - private boolean modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, - TextEditGroup group, ImportRewrite importRewriter) { - ITypeBinding binding = node.resolveBinding(); + private boolean modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, + ImportRewrite importRewriter) { + ITypeBinding binding= node.resolveBinding(); if (binding.isAnonymous() || !isExternalResource(binding) || !hasDefaultConstructorOrNoConstructor(node)) { return false; @@ -93,12 +93,12 @@ private boolean modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rew return true; } - private void refactorToImplementCallbacks(TypeDeclaration node, ASTRewrite rewriter, AST ast, - TextEditGroup group, ImportRewrite importRewriter) { + private void refactorToImplementCallbacks(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, + ImportRewrite importRewriter) { rewriter.remove(node.getSuperclassType(), group); importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); - ListRewrite listRewrite = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); + ListRewrite listRewrite= rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); addInterfaceCallback(listRewrite, ast, "BeforeEachCallback", group); addInterfaceCallback(listRewrite, ast, "AfterEachCallback", group); @@ -122,12 +122,12 @@ private void refactorMethod(ASTRewrite rewriter, AST ast, MethodDeclaration meth private void ensureExtensionContextParameter(ASTRewrite rewriter, AST ast, MethodDeclaration method, TextEditGroup group, ImportRewrite importRewriter) { - boolean hasExtensionContext = method.parameters().stream() - .anyMatch(param -> param instanceof SingleVariableDeclaration && - ((SingleVariableDeclaration) param).getType().toString().equals("ExtensionContext")); + boolean hasExtensionContext= method.parameters().stream() + .anyMatch(param -> param instanceof SingleVariableDeclaration + && ((SingleVariableDeclaration) param).getType().toString().equals("ExtensionContext")); if (!hasExtensionContext) { - SingleVariableDeclaration newParam = ast.newSingleVariableDeclaration(); + SingleVariableDeclaration newParam= ast.newSingleVariableDeclaration(); newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); newParam.setName(ast.newSimpleName("context")); @@ -143,30 +143,28 @@ private boolean isDirectlyExtendingExternalResource(ITypeBinding binding) { @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { - return -""" - private String testName; - - @BeforeEach - void init(TestInfo testInfo) { - this.testName = testInfo.getDisplayName(); - } - @Test - public void test(){ - System.out.println("Test name: " + testName); - } -"""; //$NON-NLS-1$ + return """ + private String testName; + + @BeforeEach + void init(TestInfo testInfo) { + this.testName = testInfo.getDisplayName(); + } + @Test + public void test(){ + System.out.println("Test name: " + testName); + } + """; //$NON-NLS-1$ } - return -""" - @Rule - public TestName tn = new TestName(); - - @Test - public void test(){ - System.out.println("Test name: " + tn.getMethodName()); - } -"""; //$NON-NLS-1$ + return """ + @Rule + public TestName tn = new TestName(); + + @Test + public void test(){ + System.out.println("Test name: " + tn.getMethodName()); + } + """; //$NON-NLS-1$ } @Override diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java index 9b8e0e5c..5716ce90 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java @@ -14,7 +14,6 @@ package org.sandbox.jdt.internal.corext.fix.helper; import java.util.Map.Entry; - import java.util.Set; import org.eclipse.jdt.core.dom.AST; @@ -35,14 +34,14 @@ /** * - * + * */ public class IgnoreJUnitPlugin extends AbstractTool> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); + ReferenceHolder dataholder= new ReferenceHolder<>(); HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_IGNORE, compilationUnit, dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); HelperVisitor.callNormalAnnotationVisitor(ORG_JUNIT_IGNORE, compilationUnit, dataholder, nodesprocessed, @@ -54,12 +53,12 @@ public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, Annotation node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; - mh.minvname = node.getTypeName().getFullyQualifiedName(); - if(node instanceof SingleMemberAnnotation mynode) { - Expression value = mynode.getValue(); - mh.value=value.toString(); + JunitHolder mh= new JunitHolder(); + mh.minv= node; + mh.minvname= node.getTypeName().getFullyQualifiedName(); + if (node instanceof SingleMemberAnnotation mynode) { + Expression value= mynode.getValue(); + mh.value= value.toString(); } dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); @@ -69,18 +68,19 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewrite = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importRewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importRewriter= cuRewrite.getImportRewrite(); for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - Annotation minv = mh.getAnnotation(); - Annotation newAnnotation = null; - if(minv instanceof SingleMemberAnnotation mynode) { - newAnnotation = ast.newSingleMemberAnnotation(); - ((SingleMemberAnnotation)newAnnotation).setValue(ASTNodes.createMoveTarget(rewrite, mynode.getValue())); + JunitHolder mh= entry.getValue(); + Annotation minv= mh.getAnnotation(); + Annotation newAnnotation= null; + if (minv instanceof SingleMemberAnnotation mynode) { + newAnnotation= ast.newSingleMemberAnnotation(); + ((SingleMemberAnnotation) newAnnotation) + .setValue(ASTNodes.createMoveTarget(rewrite, mynode.getValue())); } else { - newAnnotation = ast.newMarkerAnnotation(); + newAnnotation= ast.newMarkerAnnotation(); } newAnnotation.setTypeName(ast.newSimpleName(DISABLED)); importRewriter.addImport(ORG_JUNIT_JUPITER_DISABLED); @@ -92,23 +92,21 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); - HelperVisitor.callFieldDeclarationVisitor(ORG_JUNIT_RULE, ORG_JUNIT_RULES_EXTERNAL_RESOURCE, compilationUnit, dataholder, nodesprocessed, + ReferenceHolder dataholder= new ReferenceHolder<>(); + HelperVisitor.callFieldDeclarationVisitor(ORG_JUNIT_RULE, ORG_JUNIT_RULES_EXTERNAL_RESOURCE, compilationUnit, + dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, FieldDeclaration node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - VariableDeclarationFragment fragment = (VariableDeclarationFragment) node.fragments().get(0); - ITypeBinding binding = fragment.resolveBinding().getType(); - if(isAnonymousClass(fragment)) { - return false; - } - if(binding == null) { - return false; - } - if("org.junit.rules.TestName".equals(binding.getQualifiedName())) { + JunitHolder mh= new JunitHolder(); + VariableDeclarationFragment fragment= (VariableDeclarationFragment) node.fragments().get(0); + ITypeBinding binding= fragment.resolveBinding().getType(); + if (isAnonymousClass(fragment) || (binding == null) + || "org.junit.rules.TestName".equals(binding.getQualifiedName()) + || "org.junit.rules.TemporaryFolder".equals(binding.getQualifiedName())) { return false; } - if("org.junit.rules.TemporaryFolder".equals(binding.getQualifiedName())) { - return false; - } - mh.minv = node; + mh.minv= node; dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; } public boolean isAnonymousClass(VariableDeclarationFragment fragmentObj) { - VariableDeclarationFragment fragment = (VariableDeclarationFragment) fragmentObj; - Expression initializer = fragment.getInitializer(); + VariableDeclarationFragment fragment= fragmentObj; + Expression initializer= fragment.getInitializer(); if (initializer instanceof ClassInstanceCreation) { - ClassInstanceCreation classInstanceCreation = (ClassInstanceCreation) initializer; - AnonymousClassDeclaration anonymousClassDeclaration = classInstanceCreation.getAnonymousClassDeclaration(); + ClassInstanceCreation classInstanceCreation= (ClassInstanceCreation) initializer; + AnonymousClassDeclaration anonymousClassDeclaration= classInstanceCreation.getAnonymousClassDeclaration(); if (anonymousClassDeclaration != null) { return true; } @@ -96,30 +90,29 @@ public boolean isAnonymousClass(VariableDeclarationFragment fragmentObj) { @Override public void rewrite(JUnitCleanUpFixCore upp, ReferenceHolder hit, CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewrite = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importRewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importRewriter= cuRewrite.getImportRewrite(); hit.values().forEach(mh -> { - FieldDeclaration field = mh.getFieldDeclaration(); - field.modifiers().stream() - .filter(modifier -> modifier instanceof Annotation) - .map(modifier -> (Annotation) modifier) - .forEach(annotation -> process((Annotation) annotation, cuRewrite.getRoot().getJavaElement().getJavaProject(), - rewrite, ast, group, importRewriter, cuRewrite.getRoot(), - extractClassNameFromField(field))); + FieldDeclaration field= mh.getFieldDeclaration(); + field.modifiers().stream().filter(modifier -> modifier instanceof Annotation) + .map(modifier -> (Annotation) modifier) + .forEach(annotation -> process((Annotation) annotation, + cuRewrite.getRoot().getJavaElement().getJavaProject(), rewrite, ast, group, importRewriter, + cuRewrite.getRoot(), extractClassNameFromField(field))); }); } public String extractClassNameFromField(FieldDeclaration field) { for (Object fragmentObj : field.fragments()) { - VariableDeclarationFragment fragment = (VariableDeclarationFragment) fragmentObj; - Expression initializer = fragment.getInitializer(); + VariableDeclarationFragment fragment= (VariableDeclarationFragment) fragmentObj; + Expression initializer= fragment.getInitializer(); if (initializer instanceof ClassInstanceCreation) { - ClassInstanceCreation creation = (ClassInstanceCreation) initializer; - Type createdType = creation.getType(); + ClassInstanceCreation creation= (ClassInstanceCreation) initializer; + Type createdType= creation.getType(); if (createdType instanceof QualifiedType) { - QualifiedType qualifiedType = (QualifiedType) createdType; + QualifiedType qualifiedType= (QualifiedType) createdType; return extractQualifiedTypeName(qualifiedType); } else if (createdType instanceof SimpleType) { return ((SimpleType) createdType).getName().getFullyQualifiedName(); @@ -135,9 +128,9 @@ public void process(Annotation node, IJavaProject jproject, ASTRewrite rewrite, return; } - FieldDeclaration field = (FieldDeclaration) node.getParent(); - ITypeBinding fieldTypeBinding = ((VariableDeclarationFragment) field.fragments().get(0)) - .resolveBinding().getType(); + FieldDeclaration field= (FieldDeclaration) node.getParent(); + ITypeBinding fieldTypeBinding= ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding() + .getType(); if (!isExternalResource(fieldTypeBinding) || fieldTypeBinding.isAnonymous()) { return; } @@ -151,17 +144,19 @@ public void process(Annotation node, IJavaProject jproject, ASTRewrite rewrite, importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); } - private void addExtendWithAnnotation(ASTRewrite rewrite, AST ast, TextEditGroup group, - ImportRewrite importRewriter, String className, FieldDeclaration field) { - TypeDeclaration parentClass = (TypeDeclaration) getParentTypeDeclaration(field); - if (parentClass == null) return; + private void addExtendWithAnnotation(ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewriter, + String className, FieldDeclaration field) { + TypeDeclaration parentClass= getParentTypeDeclaration(field); + if (parentClass == null) { + return; + } - SingleMemberAnnotation newAnnotation = ast.newSingleMemberAnnotation(); - newAnnotation.setTypeName(ast.newName("ExtendWith")); - final TypeLiteral newTypeLiteral = ast.newTypeLiteral(); + SingleMemberAnnotation newAnnotation= ast.newSingleMemberAnnotation(); + newAnnotation.setTypeName(ast.newName("ExtendWith")); + final TypeLiteral newTypeLiteral= ast.newTypeLiteral(); newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className))); newAnnotation.setValue(newTypeLiteral); - ListRewrite modifierListRewrite = rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); + ListRewrite modifierListRewrite= rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); modifierListRewrite.insertFirst(newAnnotation, group); importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); @@ -169,7 +164,7 @@ private void addExtendWithAnnotation(ASTRewrite rewrite, AST ast, TextEditGroup private TypeDeclaration getParentTypeDeclaration(ASTNode node) { while (node != null && !(node instanceof TypeDeclaration)) { - node = node.getParent(); + node= node.getParent(); } return (TypeDeclaration) node; } @@ -181,39 +176,37 @@ private boolean isDirect(ITypeBinding fieldTypeBinding) { @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { - return -""" -ExtendWith(MyTest.MyExternalResource.class) -public class MyTest { - - final class MyExternalResource implements BeforeEachCallback, AfterEachCallback { - @Override - protected void beforeEach() throws Throwable { + return """ + ExtendWith(MyTest.MyExternalResource.class) + public class MyTest { + + final class MyExternalResource implements BeforeEachCallback, AfterEachCallback { + @Override + protected void beforeEach() throws Throwable { + } + + @Override + protected void afterEach() { + } + } + """; //$NON-NLS-1$ } - - @Override - protected void afterEach() { - } - } -"""; //$NON-NLS-1$ - } - return -""" -public class MyTest { - - final class MyExternalResource extends ExternalResource { - @Override - protected void before() throws Throwable { - } - - @Override - protected void after() { - } - } - - @Rule - public ExternalResource er= new MyExternalResource(); -"""; //$NON-NLS-1$ + return """ + public class MyTest { + + final class MyExternalResource extends ExternalResource { + @Override + protected void before() throws Throwable { + } + + @Override + protected void after() { + } + } + + @Rule + public ExternalResource er= new MyExternalResource(); + """; //$NON-NLS-1$ } @Override diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java index 46d40ad1..7a3fcf93 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTemporayFolderJUnitPlugin.java @@ -37,23 +37,24 @@ /** * - * + * */ public class RuleTemporayFolderJUnitPlugin extends AbstractTool> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); - HelperVisitor.callFieldDeclarationVisitor(ORG_JUNIT_RULE, ORG_JUNIT_RULES_TEMPORARY_FOLDER, compilationUnit, dataholder, nodesprocessed, + ReferenceHolder dataholder= new ReferenceHolder<>(); + HelperVisitor.callFieldDeclarationVisitor(ORG_JUNIT_RULE, ORG_JUNIT_RULES_TEMPORARY_FOLDER, compilationUnit, + dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, FieldDeclaration node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; + JunitHolder mh= new JunitHolder(); + mh.minv= node; dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -62,47 +63,47 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewriter = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importRemover = cuRewrite.getImportRewrite(); + ASTRewrite rewriter= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importRemover= cuRewrite.getImportRewrite(); for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - FieldDeclaration field = mh.getFieldDeclaration(); + JunitHolder mh= entry.getValue(); + FieldDeclaration field= mh.getFieldDeclaration(); rewriter.remove(field, group); - TypeDeclaration parentClass = (TypeDeclaration) field.getParent(); + TypeDeclaration parentClass= (TypeDeclaration) field.getParent(); addImport(ORG_JUNIT_JUPITER_API_IO_TEMP_DIR, cuRewrite, ast); importRemover.removeImport(ORG_JUNIT_RULE); importRemover.removeImport(ORG_JUNIT_RULES_TEMPORARY_FOLDER); - VariableDeclarationFragment originalFragment = (VariableDeclarationFragment) field.fragments().get(0); - String originalName = originalFragment.getName().getIdentifier(); + VariableDeclarationFragment originalFragment= (VariableDeclarationFragment) field.fragments().get(0); + String originalName= originalFragment.getName().getIdentifier(); - VariableDeclarationFragment tempDirFragment = ast.newVariableDeclarationFragment(); - tempDirFragment.setName(ast.newSimpleName(originalName)); + VariableDeclarationFragment tempDirFragment= ast.newVariableDeclarationFragment(); + tempDirFragment.setName(ast.newSimpleName(originalName)); - FieldDeclaration tempDirField = ast.newFieldDeclaration(tempDirFragment); + FieldDeclaration tempDirField= ast.newFieldDeclaration(tempDirFragment); tempDirField.setType(ast.newSimpleType(ast.newName("Path"))); - MarkerAnnotation tempDirAnnotation = ast.newMarkerAnnotation(); + MarkerAnnotation tempDirAnnotation= ast.newMarkerAnnotation(); tempDirAnnotation.setTypeName(ast.newName("TempDir")); - rewriter.getListRewrite(tempDirField, FieldDeclaration.MODIFIERS2_PROPERTY) - .insertFirst(tempDirAnnotation, group); + rewriter.getListRewrite(tempDirField, FieldDeclaration.MODIFIERS2_PROPERTY).insertFirst(tempDirAnnotation, + group); - rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY) - .insertFirst(tempDirField, group); + rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY).insertFirst(tempDirField, + group); for (MethodDeclaration method : parentClass.getMethods()) { method.accept(new ASTVisitor() { @Override public boolean visit(MethodInvocation node) { if (node.getName().getIdentifier().equals("newFile")) { - MethodInvocation resolveInvocation = ast.newMethodInvocation(); + MethodInvocation resolveInvocation= ast.newMethodInvocation(); resolveInvocation.setExpression(ast.newSimpleName("tempFolder")); resolveInvocation.setName(ast.newSimpleName("resolve")); resolveInvocation.arguments().addAll(ASTNode.copySubtrees(ast, node.arguments())); - MethodInvocation toFileInvocation = ast.newMethodInvocation(); + MethodInvocation toFileInvocation= ast.newMethodInvocation(); toFileInvocation.setExpression(resolveInvocation); toFileInvocation.setName(ast.newSimpleName("toFile")); @@ -118,27 +119,25 @@ public boolean visit(MethodInvocation node) { @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { - return -""" - @TempDir - Path tempFolder; - - @Test - public void test3() throws IOException{ - File newFile = tempFolder.resolve("myfile.txt").toFile(); - } -"""; //$NON-NLS-1$ + return """ + @TempDir + Path tempFolder; + + @Test + public void test3() throws IOException{ + File newFile = tempFolder.resolve("myfile.txt").toFile(); + } + """; //$NON-NLS-1$ } - return -""" - @Rule - public TemporaryFolder tempFolder = new TemporaryFolder(); - - @Test - public void test3() throws IOException{ - File newFile = tempFolder.newFile("myfile.txt"); - } ; -"""; //$NON-NLS-1$ + return """ + @Rule + public TemporaryFolder tempFolder = new TemporaryFolder(); + + @Test + public void test3() throws IOException{ + File newFile = tempFolder.newFile("myfile.txt"); + } ; + """; //$NON-NLS-1$ } @Override diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java index 5df18618..85095ba8 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java @@ -47,26 +47,27 @@ /** * - * + * */ public class RuleTestnameJUnitPlugin extends AbstractTool> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); - HelperVisitor.callFieldDeclarationVisitor(ORG_JUNIT_RULE, ORG_JUNIT_RULES_TEST_NAME, compilationUnit, dataholder, nodesprocessed, + ReferenceHolder dataholder= new ReferenceHolder<>(); + HelperVisitor.callFieldDeclarationVisitor(ORG_JUNIT_RULE, ORG_JUNIT_RULES_TEST_NAME, compilationUnit, + dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, FieldDeclaration node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - VariableDeclarationFragment fragment = (VariableDeclarationFragment) node.fragments().get(0); - ITypeBinding binding = fragment.resolveBinding().getType(); - if(binding != null && ORG_JUNIT_RULES_TEST_NAME.equals(binding.getQualifiedName())) { - mh.minv = node; + JunitHolder mh= new JunitHolder(); + VariableDeclarationFragment fragment= (VariableDeclarationFragment) node.fragments().get(0); + ITypeBinding binding= fragment.resolveBinding().getType(); + if (binding != null && ORG_JUNIT_RULES_TEST_NAME.equals(binding.getQualifiedName())) { + mh.minv= node; dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); } @@ -76,14 +77,14 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewriter = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importrewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewriter= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importrewriter= cuRewrite.getImportRewrite(); for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - FieldDeclaration node = mh.getFieldDeclaration(); + JunitHolder mh= entry.getValue(); + FieldDeclaration node= mh.getFieldDeclaration(); rewriter.remove(node, group); - TypeDeclaration parentClass = (TypeDeclaration) node.getParent(); + TypeDeclaration parentClass= (TypeDeclaration) node.getParent(); addBeforeEachInitMethod(parentClass, rewriter, group); addTestNameField(parentClass, rewriter, group); for (MethodDeclaration method : parentClass.getMethods()) { @@ -91,8 +92,9 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); + ReferenceHolder dataholder= new ReferenceHolder<>(); HelperVisitor.callSingleMemberAnnotationVisitor(ORG_JUNIT_RUNWITH, compilationUnit, dataholder, nodesprocessed, (visited, aholder) -> processFoundNodeRunWith(fixcore, operations, visited, aholder)); - HelperVisitor.callSingleMemberAnnotationVisitor(ORG_JUNIT_SUITE_SUITECLASSES, compilationUnit, dataholder, nodesprocessed, - (visited, aholder) -> processFoundNodeSuite(fixcore, operations, visited, aholder)); + HelperVisitor.callSingleMemberAnnotationVisitor(ORG_JUNIT_SUITE_SUITECLASSES, compilationUnit, dataholder, + nodesprocessed, (visited, aholder) -> processFoundNodeSuite(fixcore, operations, visited, aholder)); } private boolean processFoundNodeRunWith(JUnitCleanUpFixCore fixcore, Set operations, Annotation node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; - mh.minvname = node.getTypeName().getFullyQualifiedName(); - if(node instanceof SingleMemberAnnotation mynode) { - Expression value = mynode.getValue(); - if(value instanceof TypeLiteral myvalue) { - ITypeBinding classBinding = myvalue.resolveTypeBinding(); + JunitHolder mh= new JunitHolder(); + mh.minv= node; + mh.minvname= node.getTypeName().getFullyQualifiedName(); + if (node instanceof SingleMemberAnnotation mynode) { + Expression value= mynode.getValue(); + if (value instanceof TypeLiteral myvalue) { + ITypeBinding classBinding= myvalue.resolveTypeBinding(); if (classBinding != null && classBinding.isParameterizedType()) { - ITypeBinding[] typeArguments = classBinding.getTypeArguments(); + ITypeBinding[] typeArguments= classBinding.getTypeArguments(); if (typeArguments.length > 0) { - ITypeBinding actualTypeBinding = typeArguments[0]; + ITypeBinding actualTypeBinding= typeArguments[0]; if (ORG_JUNIT_SUITE.equals(actualTypeBinding.getQualifiedName())) { - mh.value=ORG_JUNIT_RUNWITH; + mh.value= ORG_JUNIT_RUNWITH; dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); } @@ -80,10 +80,10 @@ private boolean processFoundNodeRunWith(JUnitCleanUpFixCore fixcore, private boolean processFoundNodeSuite(JUnitCleanUpFixCore fixcore, Set operations, Annotation node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; - mh.minvname = node.getTypeName().getFullyQualifiedName(); - mh.value=ORG_JUNIT_SUITE_SUITECLASSES; + JunitHolder mh= new JunitHolder(); + mh.minv= node; + mh.minvname= node.getTypeName().getFullyQualifiedName(); + mh.value= ORG_JUNIT_SUITE_SUITECLASSES; dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -92,21 +92,22 @@ private boolean processFoundNodeSuite(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewrite = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importrewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importrewriter= cuRewrite.getImportRewrite(); for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - Annotation minv = mh.getAnnotation(); - Annotation newAnnotation = null; - SingleMemberAnnotation mynode=(SingleMemberAnnotation) minv; - if(ORG_JUNIT_SUITE_SUITECLASSES.equals(mh.value)) { - newAnnotation = ast.newSingleMemberAnnotation(); - ((SingleMemberAnnotation)newAnnotation).setValue(ASTNodes.createMoveTarget(rewrite, mynode.getValue())); + JunitHolder mh= entry.getValue(); + Annotation minv= mh.getAnnotation(); + Annotation newAnnotation= null; + SingleMemberAnnotation mynode= (SingleMemberAnnotation) minv; + if (ORG_JUNIT_SUITE_SUITECLASSES.equals(mh.value)) { + newAnnotation= ast.newSingleMemberAnnotation(); + ((SingleMemberAnnotation) newAnnotation) + .setValue(ASTNodes.createMoveTarget(rewrite, mynode.getValue())); newAnnotation.setTypeName(ast.newSimpleName(SELECT_CLASSES)); importrewriter.addImport(ORG_JUNIT_PLATFORM_SUITE_API_SELECT_CLASSES); } else { - newAnnotation = ast.newMarkerAnnotation(); + newAnnotation= ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(SUITE)); importrewriter.addImport(ORG_JUNIT_JUPITER_SUITE); } @@ -119,21 +120,19 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder> { @Override public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { - ReferenceHolder dataholder = new ReferenceHolder<>(); + ReferenceHolder dataholder= new ReferenceHolder<>(); HelperVisitor.callMarkerAnnotationVisitor(ORG_JUNIT_TEST, compilationUnit, dataholder, nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); } @@ -48,9 +48,9 @@ public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, MarkerAnnotation node, ReferenceHolder dataholder) { - JunitHolder mh = new JunitHolder(); - mh.minv = node; - mh.minvname = node.getTypeName().getFullyQualifiedName(); + JunitHolder mh= new JunitHolder(); + mh.minv= node; + mh.minvname= node.getTypeName().getFullyQualifiedName(); dataholder.put(dataholder.size(), mh); operations.add(fixcore.rewrite(dataholder)); return false; @@ -59,13 +59,13 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, @Override public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, final CompilationUnitRewrite cuRewrite, TextEditGroup group) { - ASTRewrite rewrite = cuRewrite.getASTRewrite(); - AST ast = cuRewrite.getRoot().getAST(); - ImportRewrite importrewriter = cuRewrite.getImportRewrite(); + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importrewriter= cuRewrite.getImportRewrite(); for (Entry entry : hit.entrySet()) { - JunitHolder mh = entry.getValue(); - Annotation minv = mh.getAnnotation(); - MarkerAnnotation newAnnotation = ast.newMarkerAnnotation(); + JunitHolder mh= entry.getValue(); + Annotation minv= mh.getAnnotation(); + MarkerAnnotation newAnnotation= ast.newMarkerAnnotation(); newAnnotation.setTypeName(ast.newSimpleName(TEST)); ASTNodes.replaceButKeepComment(rewrite, minv, newAnnotation, group); importrewriter.removeImport(ORG_JUNIT_TEST); @@ -76,15 +76,13 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder options) { super(options); } + /** * */ @@ -84,8 +85,7 @@ public String[] getStepDescriptions() { List result= new ArrayList<>(); if (isEnabled(JUNIT_CLEANUP)) { result.add(Messages.format(JUnitCleanUp_description, new Object[] { String.join(",", //$NON-NLS-1$ - computeFixSet().stream().map(JUnitCleanUpFixCore::toString) - .collect(Collectors.toList())) })); + computeFixSet().stream().map(JUnitCleanUpFixCore::toString).collect(Collectors.toList())) })); } return result.toArray(new String[0]); } @@ -94,8 +94,7 @@ public String[] getStepDescriptions() { public String getPreview() { StringBuilder sb= new StringBuilder(); EnumSet computeFixSet= computeFixSet(); - EnumSet.allOf(JUnitCleanUpFixCore.class) - .forEach(e -> sb.append(e.getPreview(computeFixSet.contains(e)))); + EnumSet.allOf(JUnitCleanUpFixCore.class).forEach(e -> sb.append(e.getPreview(computeFixSet.contains(e)))); return sb.toString(); } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java index ceaebeca..0e9216d7 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java @@ -41,8 +41,8 @@ protected AbstractCleanUp[] createPreviewCleanUps(Map values) { protected void doCreatePreferences(Composite composite, int numColumns) { Group java1d8Group= createGroup(numColumns, composite, CleanUpMessages.JavaFeatureTabPage_GroupName_Java1d8); final CheckboxPreference junitcb= createCheckboxPref(java1d8Group, numColumns, - CleanUpMessages.JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP, - MYCleanUpConstants.JUNIT_CLEANUP, FALSE_TRUE); + CleanUpMessages.JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP, MYCleanUpConstants.JUNIT_CLEANUP, + FALSE_TRUE); intent(java1d8Group); registerPreference(junitcb); } From 71c7c9ae588ba180e66dcd1d986443df34f0af2e Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Wed, 23 Oct 2024 19:53:07 +0200 Subject: [PATCH 22/58] pull methods up --- .../corext/fix/helper/AbstractTool.java | 48 +++++++++++++++++++ .../helper/ExternalResourceJUnitPlugin.java | 4 -- .../RuleExternalResourceJUnitPlugin.java | 44 ----------------- 3 files changed, 48 insertions(+), 48 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index e8c582de..a29f1034 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -18,13 +18,19 @@ import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.AnonymousClassDeclaration; +import org.eclipse.jdt.core.dom.ClassInstanceCreation; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.Expression; +import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.Name; import org.eclipse.jdt.core.dom.QualifiedType; +import org.eclipse.jdt.core.dom.SimpleType; import org.eclipse.jdt.core.dom.Type; import org.eclipse.jdt.core.dom.TypeDeclaration; +import org.eclipse.jdt.core.dom.VariableDeclarationFragment; import org.eclipse.jdt.internal.corext.dom.AbortSearchException; import org.eclipse.jdt.internal.corext.dom.ScopeAnalyzer; import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; @@ -147,6 +153,48 @@ protected String extractQualifiedTypeName(QualifiedType qualifiedType) { return fullClassName.toString(); } + public boolean isAnonymousClass(VariableDeclarationFragment fragmentObj) { + VariableDeclarationFragment fragment= fragmentObj; + Expression initializer= fragment.getInitializer(); + if (initializer instanceof ClassInstanceCreation) { + ClassInstanceCreation classInstanceCreation= (ClassInstanceCreation) initializer; + AnonymousClassDeclaration anonymousClassDeclaration= classInstanceCreation.getAnonymousClassDeclaration(); + if (anonymousClassDeclaration != null) { + return true; + } + } + return false; + } + + public String extractClassNameFromField(FieldDeclaration field) { + for (Object fragmentObj : field.fragments()) { + VariableDeclarationFragment fragment= (VariableDeclarationFragment) fragmentObj; + Expression initializer= fragment.getInitializer(); + if (initializer instanceof ClassInstanceCreation) { + ClassInstanceCreation creation= (ClassInstanceCreation) initializer; + Type createdType= creation.getType(); + if (createdType instanceof QualifiedType) { + QualifiedType qualifiedType= (QualifiedType) createdType; + return extractQualifiedTypeName(qualifiedType); + } else if (createdType instanceof SimpleType) { + return ((SimpleType) createdType).getName().getFullyQualifiedName(); + } + } + } + return null; + } + + protected TypeDeclaration getParentTypeDeclaration(ASTNode node) { + while (node != null && !(node instanceof TypeDeclaration)) { + node= node.getParent(); + } + return (TypeDeclaration) node; + } + + protected boolean isDirectlyExtendingExternalResource(ITypeBinding binding) { + return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(binding.getSuperclass().getQualifiedName()); + } + public static Collection getUsedVariableNames(ASTNode node) { CompilationUnit root= (CompilationUnit) node.getRoot(); return new ScopeAnalyzer(root).getUsedVariableNames(node.getStartPosition(), node.getLength()); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java index a006305d..3b13362d 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java @@ -136,10 +136,6 @@ private void ensureExtensionContextParameter(ASTRewrite rewriter, AST ast, Metho } } - private boolean isDirectlyExtendingExternalResource(ITypeBinding binding) { - return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(binding.getSuperclass().getQualifiedName()); - } - @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index 043f1469..050e35a3 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -19,16 +19,10 @@ import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.Annotation; -import org.eclipse.jdt.core.dom.AnonymousClassDeclaration; -import org.eclipse.jdt.core.dom.ClassInstanceCreation; import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.ITypeBinding; -import org.eclipse.jdt.core.dom.QualifiedType; -import org.eclipse.jdt.core.dom.SimpleType; import org.eclipse.jdt.core.dom.SingleMemberAnnotation; -import org.eclipse.jdt.core.dom.Type; import org.eclipse.jdt.core.dom.TypeDeclaration; import org.eclipse.jdt.core.dom.TypeLiteral; import org.eclipse.jdt.core.dom.VariableDeclarationFragment; @@ -74,19 +68,6 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, return false; } - public boolean isAnonymousClass(VariableDeclarationFragment fragmentObj) { - VariableDeclarationFragment fragment= fragmentObj; - Expression initializer= fragment.getInitializer(); - if (initializer instanceof ClassInstanceCreation) { - ClassInstanceCreation classInstanceCreation= (ClassInstanceCreation) initializer; - AnonymousClassDeclaration anonymousClassDeclaration= classInstanceCreation.getAnonymousClassDeclaration(); - if (anonymousClassDeclaration != null) { - return true; - } - } - return false; - } - @Override public void rewrite(JUnitCleanUpFixCore upp, ReferenceHolder hit, CompilationUnitRewrite cuRewrite, TextEditGroup group) { @@ -104,24 +85,6 @@ public void rewrite(JUnitCleanUpFixCore upp, ReferenceHolder Date: Wed, 23 Oct 2024 20:13:52 +0200 Subject: [PATCH 23/58] use toString() --- .../jdt/internal/corext/fix/UseExplicitEncodingFixCore.java | 5 +++++ .../sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/sandbox_encoding_quickfix/src/org/sandbox/jdt/internal/corext/fix/UseExplicitEncodingFixCore.java b/sandbox_encoding_quickfix/src/org/sandbox/jdt/internal/corext/fix/UseExplicitEncodingFixCore.java index e83a5824..e00dd585 100644 --- a/sandbox_encoding_quickfix/src/org/sandbox/jdt/internal/corext/fix/UseExplicitEncodingFixCore.java +++ b/sandbox_encoding_quickfix/src/org/sandbox/jdt/internal/corext/fix/UseExplicitEncodingFixCore.java @@ -109,4 +109,9 @@ public SourceRange computeSourceRange(final ASTNode nodeWithComment) { return super.computeSourceRange(nodeWithComment); } }; + + @Override + public String toString() { + return explicitencoding.toString(); + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index 6c2c0cd9..459e2054 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -97,4 +97,9 @@ public void rewriteASTInternal(final CompilationUnitRewrite cuRewrite, } }; } + + @Override + public String toString() { + return junitfound.toString(); + } } From 7997928709c3419123825ee1d70a10f0c09582cd Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Thu, 24 Oct 2024 20:49:58 +0200 Subject: [PATCH 24/58] add test for already junit5 case --- .../jdt/internal/common/HelperVisitor.java | 37 +++++++++++++++++++ .../jdt/internal/common/LambdaASTVisitor.java | 28 ++++++++++++-- sandbox_junit_cleanup_test/pom.xml | 2 +- .../ui/tests/quickfix/Java8CleanUpTest.java | 32 ++++++++++++++++ 4 files changed, 94 insertions(+), 5 deletions(-) diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java index aa3e2e26..5bc27046 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/HelperVisitor.java @@ -786,6 +786,24 @@ public BiPredicate addMethodInvocation(String typeof, Stri predicatedata.put(VisitorEnum.MethodInvocation, map); return predicatemap.put(VisitorEnum.MethodInvocation, bs); } + + /** + * @param typeof + * @param methodname + * @param bs + * @param params + * @return + */ + public BiPredicate addMethodInvocation(String typeof, String methodname, + BiPredicate bs, String[] params) { + Map map = Map.ofEntries( + new AbstractMap.SimpleEntry<>(PARAMTYPENAMES, params), + new AbstractMap.SimpleEntry<>(METHODNAME, methodname), + new AbstractMap.SimpleEntry<>(TYPEOF, typeof) + ); + predicatedata.put(VisitorEnum.MethodInvocation, map); + return predicatemap.put(VisitorEnum.MethodInvocation, bs); + } /** * * @param bs @@ -4492,6 +4510,25 @@ public static void callMethodInvocationVisitor(String methodof, String me hv.build(node); } + /** + * @param + * @param + * @param methodof + * @param methodname + * @param node + * @param dataholder + * @param nodesprocessed + * @param bs + * @param params + */ + public static void callMethodInvocationVisitor(String methodof, String methodname, ASTNode node, ReferenceHolder dataholder, Set nodesprocessed, + BiPredicate> bs, String[] params) { + + HelperVisitor,V,T> hv= new HelperVisitor<>(nodesprocessed, dataholder); + hv.addMethodInvocation(methodof, methodname, bs, params); + hv.build(node); + } + /** * * @param diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java index ef6343ca..d100e07a 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java @@ -584,12 +584,12 @@ public boolean visit(MethodInvocation node) { } String[] parameterTypesQualifiedNames=(String[]) map.get(HelperVisitor.PARAMTYPENAMES); if(parameterTypesQualifiedNames==null) { - if (ASTNodes.usesGivenSignature(node, canonicaltype, data)) { - return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.MethodInvocation))).test(node, this.helperVisitor.dataholder); + if (!usesGivenSignature(node, canonicaltype, data)) { + return true; } } else - if (ASTNodes.usesGivenSignature(node, canonicaltype, data, parameterTypesQualifiedNames)) { - return ((BiPredicate) (this.helperVisitor.predicatemap.get(VisitorEnum.MethodInvocation))).test(node, this.helperVisitor.dataholder); + if (!ASTNodes.usesGivenSignature(node, canonicaltype, data, parameterTypesQualifiedNames)) { + return true; } } } @@ -598,6 +598,26 @@ public boolean visit(MethodInvocation node) { return true; } + private boolean usesGivenSignature(MethodInvocation node, String canonicaltype, String methodName) { + IMethodBinding methodBinding= node.resolveMethodBinding(); + if(methodBinding==null) { + if(!methodName.equals(node.getName().getIdentifier())){ + return false; + } + } else { + if(!methodName.equals(methodBinding.getName())){ + return false; + } + ITypeBinding declaringClass= methodBinding.getDeclaringClass(); + String name= declaringClass.getQualifiedName(); + if(canonicaltype.equals(name)){ + return true; + } + } + + return false; + } + @Override public boolean visit(Modifier node) { if (this.helperVisitor.predicatemap.containsKey(VisitorEnum.Modifier)) { diff --git a/sandbox_junit_cleanup_test/pom.xml b/sandbox_junit_cleanup_test/pom.xml index 57e98bcb..2406be92 100644 --- a/sandbox_junit_cleanup_test/pom.xml +++ b/sandbox_junit_cleanup_test/pom.xml @@ -15,7 +15,7 @@ org.sandbox sandbox_junit_cleanup - + src diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index 2ef33d96..ff751df5 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -211,6 +211,38 @@ public void test4() { } } """), + AlreadyJunit5Case(""" + package test; + import static org.junit.jupiter.api.Assertions.assertEquals; + + import org.junit.jupiter.api.Test; + /** + * + */ + public class MyTest { + + @Test + public void test3() { + assertEquals("expected", "actual"); + } + } + """, //$NON-NLS-1$ +""" +package test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; +/** + * + */ +public class MyTest { + + @Test + public void test3() { + assertEquals("expected", "actual"); + } +} +"""), StaticImportCase(""" package test; import static org.junit.Assert.*; From 012362d2c2ed629d7546bd3c88897eb27b6b32f9 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 25 Oct 2024 18:39:00 +0200 Subject: [PATCH 25/58] Add support for Assume --- .../corext/fix/JUnitCleanUpFixCore.java | 19 ++- .../corext/fix/helper/AbstractTool.java | 48 +++++++ .../corext/fix/helper/AssertJUnitPlugin.java | 51 +------ .../corext/fix/helper/AssumeJUnitPlugin.java | 135 ++++++++++++++++++ .../ui/tests/quickfix/Java8CleanUpTest.java | 64 ++++++--- 5 files changed, 243 insertions(+), 74 deletions(-) create mode 100644 sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssumeJUnitPlugin.java diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index 459e2054..16a1a31c 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -30,6 +30,7 @@ import org.sandbox.jdt.internal.corext.fix.helper.AfterClassJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.AfterJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.AssertJUnitPlugin; +import org.sandbox.jdt.internal.corext.fix.helper.AssumeJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.BeforeClassJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.BeforeJUnitPlugin; import org.sandbox.jdt.internal.corext.fix.helper.ExternalResourceJUnitPlugin; @@ -44,11 +45,19 @@ public enum JUnitCleanUpFixCore { - BEFORE(new BeforeJUnitPlugin()), AFTER(new AfterJUnitPlugin()), TEST(new TestJUnitPlugin()), - BEFORECLASS(new BeforeClassJUnitPlugin()), AFTERCLASS(new AfterClassJUnitPlugin()), IGNORE(new IgnoreJUnitPlugin()), - RUNWITH(new RunWithJUnitPlugin()), ASSERT(new AssertJUnitPlugin()), - RULEEXTERNALRESOURCE(new RuleExternalResourceJUnitPlugin()), RULETESTNAME(new RuleTestnameJUnitPlugin()), - RULETEMPORARYFOLDER(new RuleTemporayFolderJUnitPlugin()), EXTERNALRESOURCE(new ExternalResourceJUnitPlugin()); + BEFORE(new BeforeJUnitPlugin()), + AFTER(new AfterJUnitPlugin()), + TEST(new TestJUnitPlugin()), + BEFORECLASS(new BeforeClassJUnitPlugin()), + AFTERCLASS(new AfterClassJUnitPlugin()), + IGNORE(new IgnoreJUnitPlugin()), + RUNWITH(new RunWithJUnitPlugin()), + ASSERT(new AssertJUnitPlugin()), + ASSUME(new AssumeJUnitPlugin()), + RULEEXTERNALRESOURCE(new RuleExternalResourceJUnitPlugin()), + RULETESTNAME(new RuleTestnameJUnitPlugin()), + RULETEMPORARYFOLDER(new RuleTemporayFolderJUnitPlugin()), + EXTERNALRESOURCE(new ExternalResourceJUnitPlugin()); AbstractTool> junitfound; diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index a29f1034..459c55a7 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -14,6 +14,7 @@ package org.sandbox.jdt.internal.corext.fix.helper; import java.util.Collection; +import java.util.List; import java.util.Set; import org.eclipse.jdt.core.dom.AST; @@ -25,12 +26,15 @@ import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.MethodDeclaration; +import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.core.dom.Name; import org.eclipse.jdt.core.dom.QualifiedType; import org.eclipse.jdt.core.dom.SimpleType; import org.eclipse.jdt.core.dom.Type; import org.eclipse.jdt.core.dom.TypeDeclaration; import org.eclipse.jdt.core.dom.VariableDeclarationFragment; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ListRewrite; import org.eclipse.jdt.internal.corext.dom.AbortSearchException; import org.eclipse.jdt.internal.corext.dom.ScopeAnalyzer; import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; @@ -81,6 +85,8 @@ public abstract class AbstractTool { protected static final String ORG_JUNIT_TEST= "org.junit.Test"; protected static final String ORG_JUNIT_JUPITER_TEST= "org.junit.jupiter.api.Test"; protected static final String TEST= "Test"; + protected static final String ORG_JUNIT_JUPITER_API_ASSUMPTIONS= "org.junit.jupiter.api.Assumptions"; + protected static final String ORG_JUNIT_ASSUME= "org.junit.Assume"; protected static boolean isOfType(ITypeBinding typeBinding, String typename) { if (typeBinding == null) { @@ -195,6 +201,48 @@ protected boolean isDirectlyExtendingExternalResource(ITypeBinding binding) { return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(binding.getSuperclass().getQualifiedName()); } + private boolean isStringType(Expression expression) { + ITypeBinding typeBinding= expression.resolveTypeBinding(); + return typeBinding != null && String.class.getCanonicalName().equals(typeBinding.getQualifiedName()); + } + + public void reorderParameters(MethodInvocation node, ASTRewrite rewriter, TextEditGroup group, Set oneparam, Set twoparam) { + String methodName= node.getName().getIdentifier(); + List arguments= node.arguments(); + switch (arguments.size()) { + case 2: + if (oneparam.contains(methodName)) { + reorderParameters(rewriter, node, group, 1, 0); + } + break; + case 3: + if (twoparam.contains(methodName)) { + reorderParameters(rewriter, node, group, 1, 2, 0); // expected, actual, message + } + break; + case 4: + reorderParameters(rewriter, node, group, 1, 2, 3, 0); // expected, actual, delta, message + break; + default: + break; + } + } + + private void reorderParameters(ASTRewrite rewriter, MethodInvocation node, TextEditGroup group, int... order) { + ListRewrite listRewrite= rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); + List arguments= node.arguments(); + Expression[] newArguments= new Expression[arguments.size()]; + for (int i= 0; i < order.length; i++) { + newArguments[i]= (Expression) ASTNode.copySubtree(node.getAST(), arguments.get(order[i])); + } + if (!isStringType(arguments.get(0))) { + return; + } + for (int i= 0; i < arguments.size(); i++) { + listRewrite.replace(arguments.get(i), newArguments[i], group); + } + } + public static Collection getUsedVariableNames(ASTNode node) { CompilationUnit root= (CompilationUnit) node.getRoot(); return new ScopeAnalyzer(root).getUsedVariableNames(node.getStartPosition(), node.getLength()); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index 3c87d702..8f72cbd8 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -13,7 +13,6 @@ *******************************************************************************/ package org.sandbox.jdt.internal.corext.fix.helper; -import java.util.List; import java.util.Map.Entry; import java.util.Set; import java.util.stream.Collectors; @@ -23,13 +22,11 @@ import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.Expression; -import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.ImportDeclaration; import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; -import org.eclipse.jdt.core.dom.rewrite.ListRewrite; import org.eclipse.jdt.internal.corext.dom.ASTNodes; import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; @@ -44,9 +41,9 @@ */ public class AssertJUnitPlugin extends AbstractTool> { - private static final Set twoparam= Set.of("assertEquals", "assertNotEquals", "assertArrayEquals", + static final Set twoparam= Set.of("assertEquals", "assertNotEquals", "assertArrayEquals", "assertTrue", "assertFalse", "assertNull", "assertNotNull", "fail"); - private static final Set oneparam= Set.of("assertTrue", "assertFalse", "assertNull", "assertNotNull"); + static final Set oneparam= Set.of("assertTrue", "assertFalse", "assertNull", "assertNotNull"); private static final Set noparam= Set.of("fail"); private static final Set allassertionmethods= Stream.of(twoparam, oneparam, noparam).flatMap(Set::stream) .collect(Collectors.toSet()); @@ -88,7 +85,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder arguments= node.arguments(); - switch (arguments.size()) { - case 2: - if (oneparam.contains(methodName)) { - reorderParameters(rewriter, node, group, 1, 0); - } - break; - case 3: - if (twoparam.contains(methodName)) { - reorderParameters(rewriter, node, group, 1, 2, 0); // expected, actual, message - } - break; - case 4: - reorderParameters(rewriter, node, group, 1, 2, 3, 0); // expected, actual, delta, message - break; - default: - break; - } - } - - private void reorderParameters(ASTRewrite rewriter, MethodInvocation node, TextEditGroup group, int... order) { - ListRewrite listRewrite= rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); - List arguments= node.arguments(); - Expression[] newArguments= new Expression[arguments.size()]; - for (int i= 0; i < order.length; i++) { - newArguments[i]= (Expression) ASTNode.copySubtree(node.getAST(), arguments.get(order[i])); - } - if (!isStringType(arguments.get(0))) { - return; - } - for (int i= 0; i < arguments.size(); i++) { - listRewrite.replace(arguments.get(i), newArguments[i], group); - } - } - @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssumeJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssumeJUnitPlugin.java new file mode 100644 index 00000000..b0d29b4c --- /dev/null +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssumeJUnitPlugin.java @@ -0,0 +1,135 @@ +/******************************************************************************* + * Copyright (c) 2021 Carsten Hammer. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Carsten Hammer + *******************************************************************************/ +package org.sandbox.jdt.internal.corext.fix.helper; + +import java.util.Map.Entry; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.Expression; +import org.eclipse.jdt.core.dom.ImportDeclaration; +import org.eclipse.jdt.core.dom.MethodInvocation; +import org.eclipse.jdt.core.dom.SimpleName; +import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.internal.corext.dom.ASTNodes; +import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; +import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; +import org.eclipse.text.edits.TextEditGroup; +import org.sandbox.jdt.internal.common.HelperVisitor; +import org.sandbox.jdt.internal.common.ReferenceHolder; +import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; + +/** + * + * + */ +public class AssumeJUnitPlugin extends AbstractTool> { + + private static final Set twoparam= Set.of("assumeTrue", "assumeFalse", "assumeNotNull"); + private static final Set oneparam= Set.of("assumeTrue", "assumeFalse", "assumeNotNull"); + private static final Set allassumemethods= Stream.of(twoparam, oneparam).flatMap(Set::stream) + .collect(Collectors.toSet()); + + @Override + public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed) { + ReferenceHolder dataholder= new ReferenceHolder<>(); + allassumemethods.forEach(assertionmethod -> { + HelperVisitor.callMethodInvocationVisitor(ORG_JUNIT_ASSUME, assertionmethod, compilationUnit, dataholder, + nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + }); + allassumemethods.forEach(assertionmethod -> { + HelperVisitor.callImportDeclarationVisitor(ORG_JUNIT_ASSUME + "." + assertionmethod, compilationUnit, + dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + }); + HelperVisitor.callImportDeclarationVisitor(ORG_JUNIT_ASSUME, compilationUnit, dataholder, nodesprocessed, + (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + } + + private boolean processFoundNode(JUnitCleanUpFixCore fixcore, + Set operations, ASTNode node, + ReferenceHolder dataholder) { + JunitHolder mh= new JunitHolder(); + mh.minv= node; + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + return false; + } + + @Override + public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder hit, + final CompilationUnitRewrite cuRewrite, TextEditGroup group) { + ASTRewrite rewrite= cuRewrite.getASTRewrite(); + AST ast= cuRewrite.getRoot().getAST(); + ImportRewrite importRewriter= cuRewrite.getImportRewrite(); + for (Entry entry : hit.entrySet()) { + JunitHolder mh= entry.getValue(); + if (mh.minv instanceof MethodInvocation) { + MethodInvocation minv= mh.getMethodInvocation(); + reorderParameters(minv, rewrite, group, oneparam, twoparam); + SimpleName newQualifier= ast.newSimpleName("Assumptions"); + Expression expression= minv.getExpression(); + if (expression != null) { + ASTNodes.replaceButKeepComment(rewrite, expression, newQualifier, group); + } + } else { + changeImportDeclaration(mh.getImportDeclaration(), importRewriter, group); + } + } + } + + public void changeImportDeclaration(ImportDeclaration node, ImportRewrite importRewriter, TextEditGroup group) { + String importName= node.getName().getFullyQualifiedName(); + if (node.isStatic() && importName.equals(ORG_JUNIT_ASSUME)) { + importRewriter.removeStaticImport(ORG_JUNIT_ASSUME + ".*"); + importRewriter.addStaticImport(ORG_JUNIT_JUPITER_API_ASSUMPTIONS, "*", false); + return; + } + if (importName.equals(ORG_JUNIT_ASSUME)) { + importRewriter.removeImport(ORG_JUNIT_ASSUME); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_ASSUMPTIONS); + return; + } + if (node.isStatic() && importName.startsWith(ORG_JUNIT_ASSUME + ".")) { + String methodName= importName.substring((ORG_JUNIT_ASSUME + ".").length()); + importRewriter.removeStaticImport(ORG_JUNIT_ASSUME + "." + methodName); + importRewriter.addStaticImport(ORG_JUNIT_JUPITER_API_ASSUMPTIONS, methodName, false); + } + } + + @Override + public String getPreview(boolean afterRefactoring) { + if (afterRefactoring) { + return """ + Assumptions.assumeNotNull(object,"failuremessage"); + Assumptions.assertTrue(condition,"failuremessage"); + """; //$NON-NLS-1$ + } + return """ + Assume.assumeNotNull("failuremessage", object); + Assume.assertTrue("failuremessage",condition); + """; //$NON-NLS-1$ + } + + @Override + public String toString() { + return "Assume"; //$NON-NLS-1$ + } +} diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index ff751df5..e029a150 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -36,11 +36,17 @@ public class Java8CleanUpTest { @RegisterExtension AbstractEclipseJava context= new EclipseJava8(); - + + @RegisterExtension + AbstractEclipseJava context2= new EclipseJava8(); + public static final String JUNIT_CONTAINER_ID= "org.eclipse.jdt.junit.JUNIT_CONTAINER"; //$NON-NLS-1$ public final static IPath JUNIT4_CONTAINER_PATH= new Path(JUNIT_CONTAINER_ID).append("4"); //$NON-NLS-1$ - + public final static IPath JUNIT5_CONTAINER_PATH= new Path(JUNIT_CONTAINER_ID).append("5"); //$NON-NLS-1$ + IPackageFragmentRoot fRoot; + IPackageFragmentRoot fRoot2; + @BeforeEach public void setup() throws CoreException { IJavaProject fProject = context.getJavaProject(); @@ -48,6 +54,12 @@ public void setup() throws CoreException { IClasspathEntry cpe= JavaCore.newContainerEntry(JUNIT4_CONTAINER_PATH); AbstractEclipseJava.addToClasspath(fProject, cpe); fRoot = AbstractEclipseJava.addSourceContainer(fProject, "src"); + + IJavaProject fProject2 = context.getJavaProject(); + fProject2.setRawClasspath(context.getDefaultClasspath(), null); + IClasspathEntry cpe2= JavaCore.newContainerEntry(JUNIT5_CONTAINER_PATH); + AbstractEclipseJava.addToClasspath(fProject2, cpe2); + fRoot2 = AbstractEclipseJava.addSourceContainer(fProject2, "src"); } enum JUnitCleanupCases{ @@ -63,6 +75,8 @@ enum JUnitCleanupCases{ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import org.junit.Assume; +import static org.junit.Assume.assumeTrue; /** * @@ -115,6 +129,9 @@ public void test2() { @Test public void test3() { + boolean condition=true; + Assume.assumeFalse("Bedingung nicht erfüllt", condition); + assumeTrue("Bedingung nicht erfüllt", condition); Assert.assertEquals("expected", "actual"); } @@ -134,9 +151,12 @@ public void test4() { """ package test; +import static org.junit.jupiter.api.Assumptions.assumeTrue; + import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; @@ -195,6 +215,9 @@ public void test2() { @Test public void test3() { + boolean condition=true; + Assumptions.assumeFalse(condition, "Bedingung nicht erfüllt"); + assumeTrue(condition, "Bedingung nicht erfüllt"); Assertions.assertEquals("expected", "actual"); } @@ -770,21 +793,20 @@ enum NOJUnitCleanupCases { NOCase( """ - package test; - import java.util.*; - public class Test { - void m(List strings) { - Iterator it = strings.iterator(); - while (it.hasNext()) { - String s = (String) it.next(); - if (s.isEmpty()) { - it.remove(); - } else { - System.out.println(s); - } - } - } + package test; + import static org.junit.jupiter.api.Assertions.assertEquals; + + import org.junit.jupiter.api.Test; + /** + * + */ + public class MyTest { + + @Test + public void test3() { + assertEquals("expected", "actual"); } + } """) //$NON-NLS-1$ ; @@ -798,12 +820,12 @@ void m(List strings) { @ParameterizedTest @EnumSource(NOJUnitCleanupCases.class) public void testJUnitCleanupdonttouch(NOJUnitCleanupCases test) throws CoreException { - IPackageFragment pack= context.getfSourceFolder().createPackageFragment("test", false, null); //$NON-NLS-1$ - ICompilationUnit cu= pack.createCompilationUnit("Test.java",test.given,false, null); //$NON-NLS-1$ - context.enable(MYCleanUpConstants.JUNIT_CLEANUP); - context.assertRefactoringHasNoChange(new ICompilationUnit[] { cu }); + IPackageFragment pack= fRoot2.createPackageFragment("test", true, null); + ICompilationUnit cu= pack.createCompilationUnit("MyTest.java",test.given,false, null); //$NON-NLS-1$ + context2.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context2.assertRefactoringHasNoChange(new ICompilationUnit[] { cu }); } - + @Test public void testJUnitCleanupTwoFiles() throws CoreException { IPackageFragment pack= fRoot.createPackageFragment("test", true, null); From 279dd51cebb0dd878c3a88db6987560877dd8e09 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sat, 26 Oct 2024 09:38:06 +0200 Subject: [PATCH 26/58] add support for super calls --- .../corext/fix/helper/AbstractTool.java | 291 ++++++++++++++++++ .../helper/ExternalResourceJUnitPlugin.java | 69 ----- .../RuleExternalResourceJUnitPlugin.java | 56 +--- .../ui/tests/quickfix/Java8CleanUpTest.java | 39 ++- 4 files changed, 314 insertions(+), 141 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index 459c55a7..0133f0e2 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -17,23 +17,37 @@ import java.util.List; import java.util.Set; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.ASTParser; +import org.eclipse.jdt.core.dom.ASTVisitor; +import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.AnonymousClassDeclaration; +import org.eclipse.jdt.core.dom.BodyDeclaration; import org.eclipse.jdt.core.dom.ClassInstanceCreation; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.ITypeBinding; +import org.eclipse.jdt.core.dom.MarkerAnnotation; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.core.dom.Name; import org.eclipse.jdt.core.dom.QualifiedType; import org.eclipse.jdt.core.dom.SimpleType; +import org.eclipse.jdt.core.dom.SingleMemberAnnotation; +import org.eclipse.jdt.core.dom.SingleVariableDeclaration; +import org.eclipse.jdt.core.dom.SuperMethodInvocation; import org.eclipse.jdt.core.dom.Type; import org.eclipse.jdt.core.dom.TypeDeclaration; +import org.eclipse.jdt.core.dom.TypeLiteral; import org.eclipse.jdt.core.dom.VariableDeclarationFragment; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; +import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; import org.eclipse.jdt.core.dom.rewrite.ListRewrite; import org.eclipse.jdt.internal.corext.dom.AbortSearchException; import org.eclipse.jdt.internal.corext.dom.ScopeAnalyzer; @@ -243,6 +257,283 @@ private void reorderParameters(ASTRewrite rewriter, MethodInvocation node, TextE } } + protected boolean isDirect(ITypeBinding fieldTypeBinding) { + return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(fieldTypeBinding.getQualifiedName()); + } + + protected void addExtendWithAnnotation(ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewriter, String className, + FieldDeclaration field) { + TypeDeclaration parentClass= getParentTypeDeclaration(field); + if (parentClass == null) { + return; + } + + SingleMemberAnnotation newAnnotation= ast.newSingleMemberAnnotation(); + newAnnotation.setTypeName(ast.newName("ExtendWith")); + final TypeLiteral newTypeLiteral= ast.newTypeLiteral(); + newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className))); + newAnnotation.setValue(newTypeLiteral); + ListRewrite modifierListRewrite= rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); + modifierListRewrite.insertFirst(newAnnotation, group); + + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); + } + + public void migrateRuleToRegisterExtensionAndAdaptHierarchy(TypeDeclaration testClass, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, + TextEditGroup group) { + // 1. Migriere das @Rule-Feld zu @RegisterExtension in der Testklasse + for (FieldDeclaration field : testClass.getFields()) { + if (isAnnotatedWithRule(field) && isExternalResource(field)) { + removeRuleAnnotation(field, rewrite, group,importRewrite); + addRegisterExtensionAnnotation(field, rewrite, ast, importRewrite, group); + importRewrite.addImport("org.junit.jupiter.api.extension.RegisterExtension"); + + // Hole den Typ des Feldes und beginne die Anpassung der Vererbungskette + ITypeBinding fieldType = ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding().getType(); + adaptExternalResourceHierarchy(fieldType, rewrite, ast, importRewrite, group); + } + } + } + + private void adaptExternalResourceHierarchy(ITypeBinding typeBinding, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, TextEditGroup group) { + if (typeBinding == null) return; + + // Iteriere durch die Vererbungshierarchie und passe jede Klasse an + while (typeBinding != null && isExternalResource(typeBinding)) { + IType type = (IType) typeBinding.getJavaElement(); + TypeDeclaration typeDecl = findTypeDeclaration(typeBinding.getJavaElement().getJavaProject(), type.getElementName()); + + // Entferne `extends ExternalResource` und füge JUnit 5 Extensions hinzu + if (typeDecl != null) { + + removeSuperclassType(typeDecl, rewrite, group); + addBeforeAndAfterEachCallbacks(typeDecl, rewrite, ast, importRewrite, group); + updateLifecycleMethods(typeDecl, rewrite, ast, group, importRewrite); + importRewrite.addImport("org.junit.jupiter.api.extension.BeforeEachCallback"); + importRewrite.addImport("org.junit.jupiter.api.extension.AfterEachCallback"); + } + typeBinding = typeBinding.getSuperclass(); + } + } + + public TypeDeclaration findTypeDeclaration(IJavaProject javaProject, String fullyQualifiedTypeName) { + try { + IType type = javaProject.findType(fullyQualifiedTypeName); + if (type != null && type.exists()) { + CompilationUnit unit = parseCompilationUnit(type.getCompilationUnit()); + return (TypeDeclaration) unit.types().get(0); + } + } catch (JavaModelException e) { + e.printStackTrace(); + } + return null; + } + + private CompilationUnit parseCompilationUnit(ICompilationUnit iCompilationUnit) { + ASTParser parser = ASTParser.newParser(AST.JLS_Latest); + parser.setKind(ASTParser.K_COMPILATION_UNIT); + parser.setSource(iCompilationUnit); + parser.setResolveBindings(true); + return (CompilationUnit) parser.createAST(null); + } + + private void adaptSuperBeforeCalls(String vorher, String nachher, MethodDeclaration method, ASTRewrite rewriter, AST ast, + TextEditGroup group) { + method.accept(new ASTVisitor() { + @Override + public boolean visit(SuperMethodInvocation node) { + // Prüfen, ob es sich um `super.before()` handelt + if (vorher.equals(node.getName().getIdentifier())) { + // Ersetzen durch `super.beforeEach()` + rewriter.replace(node.getName(), ast.newSimpleName(nachher), group); + } + return super.visit(node); + } + }); + } + + private void removeRuleAnnotation(BodyDeclaration declaration, ASTRewrite rewriter, TextEditGroup group, ImportRewrite importRewriter) { + List modifiers = declaration.modifiers(); + for (Object modifier : modifiers) { + if (modifier instanceof Annotation) { + Annotation annotation = (Annotation) modifier; + ITypeBinding binding = annotation.resolveTypeBinding(); + if (binding != null && binding.getQualifiedName().equals("org.junit.Rule")) { + rewriter.remove(annotation, group); + importRewriter.removeImport("org.junit.Rule"); + break; // Sobald die Annotation entfernt ist, kann die Schleife beendet werden. + } + } + } + } + + private void addRegisterExtensionAnnotation(FieldDeclaration field, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, TextEditGroup group) { + MarkerAnnotation registerExtensionAnnotation = ast.newMarkerAnnotation(); + registerExtensionAnnotation.setTypeName(ast.newName("RegisterExtension")); + rewrite.getListRewrite(field, FieldDeclaration.MODIFIERS2_PROPERTY).insertFirst(registerExtensionAnnotation, group); + } + + public void process(Annotation node, IJavaProject jproject, ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewriter, CompilationUnit cu, + String className) { + if (!ORG_JUNIT_RULE.equals(node.resolveTypeBinding().getQualifiedName())) { + return; + } + + FieldDeclaration field= (FieldDeclaration) node.getParent(); + ITypeBinding fieldTypeBinding= ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding() + .getType(); + if (!isExternalResource(fieldTypeBinding) || fieldTypeBinding.isAnonymous()) { + return; + } + + if (isDirect(fieldTypeBinding)) { + rewrite.remove(field, group); + importRewriter.removeImport(ORG_JUNIT_RULE); + } + + addExtendWithAnnotation(rewrite, ast, group, importRewriter, className, field); + importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); + } + + private boolean isAnnotatedWithRule(BodyDeclaration declaration) { + for (Object modifier : declaration.modifiers()) { + if (modifier instanceof Annotation) { + Annotation annotation = (Annotation) modifier; + ITypeBinding binding = annotation.resolveTypeBinding(); + if (binding != null && ORG_JUNIT_RULE.equals(binding.getQualifiedName())) { + return true; + } + } + } + return false; + } + + private boolean isExternalResource(FieldDeclaration field) { + VariableDeclarationFragment fragment = (VariableDeclarationFragment) field.fragments().get(0); + ITypeBinding binding = fragment.resolveBinding().getType(); + return isExternalResource(binding); + } + + private void removeSuperclassType(TypeDeclaration typeDecl, ASTRewrite rewrite, TextEditGroup group) { + if (typeDecl.getSuperclassType() != null) { + rewrite.remove(typeDecl.getSuperclassType(), group); + } + } + + private void addBeforeAndAfterEachCallbacks(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, TextEditGroup group) { + ListRewrite listRewrite = rewrite.getListRewrite(typeDecl, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); + listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeEachCallback")), group); + listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterEachCallback")), group); + } + + private void updateLifecycleMethods(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewrite) { + for (MethodDeclaration method : typeDecl.getMethods()) { + if (method.getName().getIdentifier().equals("before")) { + removeThrowsThrowable(method, rewrite, group); + adaptSuperBeforeCalls("before","beforeEach",method, rewrite, ast, group); + rewrite.replace(method.getName(), ast.newSimpleName("beforeEach"), group); + ensureExtensionContextParameter(method, rewrite, ast, group, importRewrite); + } else if (method.getName().getIdentifier().equals("after")) { + adaptSuperBeforeCalls("after","afterEach",method, rewrite, ast, group); + rewrite.replace(method.getName(), ast.newSimpleName("afterEach"), group); + ensureExtensionContextParameter(method, rewrite, ast, group, importRewrite); + } + } + } + + private void removeThrowsThrowable(MethodDeclaration method, ASTRewrite rewriter, TextEditGroup group) { + List thrownExceptionTypes = method.thrownExceptionTypes(); + for (Object exceptionType : thrownExceptionTypes) { + if (exceptionType instanceof SimpleType) { + SimpleType exception = (SimpleType) exceptionType; + if ("Throwable".equals(exception.getName().getFullyQualifiedName())) { + ListRewrite listRewrite = rewriter.getListRewrite(method, MethodDeclaration.THROWN_EXCEPTION_TYPES_PROPERTY); + listRewrite.remove(exception, group); + } + } + } + } + + private void ensureExtensionContextParameter(MethodDeclaration method, ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewrite) { + boolean hasExtensionContext = method.parameters().stream() + .anyMatch(param -> param instanceof SingleVariableDeclaration + && ((SingleVariableDeclaration) param).getType().toString().equals("ExtensionContext")); + + if (!hasExtensionContext) { + SingleVariableDeclaration newParam = ast.newSingleVariableDeclaration(); + newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); + newParam.setName(ast.newSimpleName("context")); + + ListRewrite listRewrite = rewrite.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY); + listRewrite.insertLast(newParam, group); + importRewrite.addImport("org.junit.jupiter.api.extension.ExtensionContext"); + } + } + + protected boolean modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, ImportRewrite importRewriter) { + ITypeBinding binding= node.resolveBinding(); + + if (binding.isAnonymous() || !isExternalResource(binding) || !hasDefaultConstructorOrNoConstructor(node)) { + return false; + } + + if (isDirectlyExtendingExternalResource(binding)) { + refactorToImplementCallbacks(node, rewriter, ast, group, importRewriter); + } + + for (MethodDeclaration method : node.getMethods()) { + if (isLifecycleMethod(method, "before")) { + adaptSuperBeforeCalls("before","beforeEach",method, rewriter, ast, group); + removeThrowsThrowable(method, rewriter, group); + refactorMethod(rewriter, ast, method, "beforeEach", group, importRewriter); + } else if (isLifecycleMethod(method, "after")) { + adaptSuperBeforeCalls("after","afterEach",method, rewriter, ast, group); + refactorMethod(rewriter, ast, method, "afterEach", group, importRewriter); + } + } + return true; + } + + private void refactorToImplementCallbacks(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, ImportRewrite importRewriter) { + rewriter.remove(node.getSuperclassType(), group); + importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); + + ListRewrite listRewrite= rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); + addInterfaceCallback(listRewrite, ast, "BeforeEachCallback", group); + addInterfaceCallback(listRewrite, ast, "AfterEachCallback", group); + + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); + } + + private void addInterfaceCallback(ListRewrite listRewrite, AST ast, String callbackName, TextEditGroup group) { + listRewrite.insertLast(ast.newSimpleType(ast.newName(callbackName)), group); + } + + private boolean isLifecycleMethod(MethodDeclaration method, String methodName) { + return method.getName().getIdentifier().equals(methodName); + } + + private void refactorMethod(ASTRewrite rewriter, AST ast, MethodDeclaration method, String newMethodName, TextEditGroup group, ImportRewrite importRewriter) { + rewriter.replace(method.getName(), ast.newSimpleName(newMethodName), group); + ensureExtensionContextParameter(rewriter, ast, method, group, importRewriter); + } + + private void ensureExtensionContextParameter(ASTRewrite rewriter, AST ast, MethodDeclaration method, TextEditGroup group, ImportRewrite importRewriter) { + boolean hasExtensionContext= method.parameters().stream() + .anyMatch(param -> param instanceof SingleVariableDeclaration + && ((SingleVariableDeclaration) param).getType().toString().equals("ExtensionContext")); + + if (!hasExtensionContext) { + SingleVariableDeclaration newParam= ast.newSingleVariableDeclaration(); + newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); + newParam.setName(ast.newSimpleName("context")); + + rewriter.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY).insertLast(newParam, group); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT); + } + } + public static Collection getUsedVariableNames(ASTNode node) { CompilationUnit root= (CompilationUnit) node.getRoot(); return new ScopeAnalyzer(root).getUsedVariableNames(node.getStartPosition(), node.getLength()); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java index 3b13362d..814abc3b 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java @@ -18,13 +18,9 @@ import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jdt.core.dom.ITypeBinding; -import org.eclipse.jdt.core.dom.MethodDeclaration; -import org.eclipse.jdt.core.dom.SingleVariableDeclaration; import org.eclipse.jdt.core.dom.TypeDeclaration; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; -import org.eclipse.jdt.core.dom.rewrite.ListRewrite; import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; import org.eclipse.text.edits.TextEditGroup; @@ -71,71 +67,6 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder param instanceof SingleVariableDeclaration - && ((SingleVariableDeclaration) param).getType().toString().equals("ExtensionContext")); - - if (!hasExtensionContext) { - SingleVariableDeclaration newParam= ast.newSingleVariableDeclaration(); - newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); - newParam.setName(ast.newSimpleName("context")); - - rewriter.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY).insertLast(newParam, group); - importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT); - } - } - @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index 050e35a3..003bb8fe 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -15,20 +15,14 @@ import java.util.Set; -import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; -import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.ITypeBinding; -import org.eclipse.jdt.core.dom.SingleMemberAnnotation; -import org.eclipse.jdt.core.dom.TypeDeclaration; -import org.eclipse.jdt.core.dom.TypeLiteral; import org.eclipse.jdt.core.dom.VariableDeclarationFragment; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; -import org.eclipse.jdt.core.dom.rewrite.ListRewrite; import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; import org.eclipse.text.edits.TextEditGroup; @@ -77,58 +71,10 @@ public void rewrite(JUnitCleanUpFixCore upp, ReferenceHolder { FieldDeclaration field= mh.getFieldDeclaration(); - field.modifiers().stream().filter(modifier -> modifier instanceof Annotation) - .map(modifier -> (Annotation) modifier) - .forEach(annotation -> process((Annotation) annotation, - cuRewrite.getRoot().getJavaElement().getJavaProject(), rewrite, ast, group, importRewriter, - cuRewrite.getRoot(), extractClassNameFromField(field))); + migrateRuleToRegisterExtensionAndAdaptHierarchy(getParentTypeDeclaration(field),rewrite, ast, importRewriter,group ); }); } - public void process(Annotation node, IJavaProject jproject, ASTRewrite rewrite, AST ast, TextEditGroup group, - ImportRewrite importRewriter, CompilationUnit cu, String className) { - if (!ORG_JUNIT_RULE.equals(node.resolveTypeBinding().getQualifiedName())) { - return; - } - - FieldDeclaration field= (FieldDeclaration) node.getParent(); - ITypeBinding fieldTypeBinding= ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding() - .getType(); - if (!isExternalResource(fieldTypeBinding) || fieldTypeBinding.isAnonymous()) { - return; - } - - if (isDirect(fieldTypeBinding)) { - rewrite.remove(field, group); - importRewriter.removeImport(ORG_JUNIT_RULE); - } - - addExtendWithAnnotation(rewrite, ast, group, importRewriter, className, field); - importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); - } - - private void addExtendWithAnnotation(ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewriter, - String className, FieldDeclaration field) { - TypeDeclaration parentClass= getParentTypeDeclaration(field); - if (parentClass == null) { - return; - } - - SingleMemberAnnotation newAnnotation= ast.newSingleMemberAnnotation(); - newAnnotation.setTypeName(ast.newName("ExtendWith")); - final TypeLiteral newTypeLiteral= ast.newTypeLiteral(); - newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className))); - newAnnotation.setValue(newTypeLiteral); - ListRewrite modifierListRewrite= rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); - modifierListRewrite.insertFirst(newAnnotation, group); - - importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); - } - - private boolean isDirect(ITypeBinding fieldTypeBinding) { - return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(fieldTypeBinding.getQualifiedName()); - } - @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index e029a150..b930558a 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -663,6 +663,7 @@ public class MyTest { final class MyExternalResource extends ExternalResource { @Override protected void before() throws Throwable { + super.before(); int i=4; } @@ -684,17 +685,17 @@ public void test3() { import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; -import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.api.extension.RegisterExtension; /** * */ -@ExtendWith(MyExternalResource.class) public class MyTest { final class MyExternalResource implements BeforeEachCallback, AfterEachCallback { @Override - protected void beforeEach(ExtensionContext context) throws Throwable { + protected void beforeEach(ExtensionContext context) { + super.beforeEach(); int i=4; } @@ -703,6 +704,9 @@ protected void afterEach(ExtensionContext context) { } } + @RegisterExtension + public ExternalResource er= new MyExternalResource(); + @Test public void test3() { } @@ -834,14 +838,13 @@ public void testJUnitCleanupTwoFiles() throws CoreException { package test; import org.junit.Test; import org.junit.Rule; -import org.junit.rules.ExternalResource; /** * */ public class MyTest { @Rule - public ExternalResource er= new MyExternalResource(); + public MyExternalResource er= new MyExternalResource(); @Test public void test3() { @@ -851,8 +854,6 @@ public void test3() { ICompilationUnit cu2= pack.createCompilationUnit("MyExternalResource.java", """ package test; -import org.junit.Test; -import org.junit.Rule; import org.junit.rules.ExternalResource; /** * @@ -873,13 +874,15 @@ protected void after() { """ package test; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.extension.RegisterExtension; /** * */ -@ExtendWith(MyExternalResource.class) public class MyTest { + @RegisterExtension + public MyExternalResource er= new MyExternalResource(); + @Test public void test3() { } @@ -888,7 +891,6 @@ public void test3() { , """ package test; -import org.junit.Test; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; @@ -897,7 +899,7 @@ public void test3() { */ public class MyExternalResource implements BeforeEachCallback, AfterEachCallback { @Override - protected void beforeEach(ExtensionContext context) throws Throwable { + protected void beforeEach(ExtensionContext context) { int i=4; } @@ -917,13 +919,12 @@ public void testJUnitCleanupThreeFiles() throws CoreException { package test; import org.junit.Test; import org.junit.Rule; -import org.junit.rules.ExternalResource; import test.MyExternalResource; public class MyTest { @Rule - public ExternalResource er= new MyExternalResource(); + public MyExternalResource er= new MyExternalResource(); @Test public void test3() { @@ -938,6 +939,7 @@ public void test3() { public class MyExternalResource extends MyExternalResource2 { @Override protected void before() throws Throwable { + super.before(); int i=4; } @@ -968,13 +970,15 @@ protected void after() { """ package test; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.extension.RegisterExtension; import test.MyExternalResource; -@ExtendWith(MyExternalResource.class) public class MyTest { + @RegisterExtension + public MyExternalResource er= new MyExternalResource(); + @Test public void test3() { } @@ -989,7 +993,8 @@ public void test3() { public class MyExternalResource extends MyExternalResource2 { @Override - protected void beforeEach(ExtensionContext context) throws Throwable { + protected void beforeEach(ExtensionContext context) { + super.beforeEach(); int i=4; } @@ -1006,7 +1011,7 @@ protected void afterEach(ExtensionContext context) { public class MyExternalResource2 implements BeforeEachCallback, AfterEachCallback { @Override - protected void beforeEach(ExtensionContext context) throws Throwable { + protected void beforeEach(ExtensionContext context) { int i=4; } From cf779875cc2ae3f59adce5a4a492cf5a59dfa4cd Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sat, 26 Oct 2024 10:08:20 +0200 Subject: [PATCH 27/58] add context to super call --- .../corext/fix/helper/AbstractTool.java | 22 ++++++++++--------- .../ui/tests/quickfix/Java8CleanUpTest.java | 4 ++-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index 0133f0e2..3427b5bd 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -339,18 +339,20 @@ private CompilationUnit parseCompilationUnit(ICompilationUnit iCompilationUnit) private void adaptSuperBeforeCalls(String vorher, String nachher, MethodDeclaration method, ASTRewrite rewriter, AST ast, TextEditGroup group) { - method.accept(new ASTVisitor() { - @Override - public boolean visit(SuperMethodInvocation node) { - // Prüfen, ob es sich um `super.before()` handelt - if (vorher.equals(node.getName().getIdentifier())) { - // Ersetzen durch `super.beforeEach()` - rewriter.replace(node.getName(), ast.newSimpleName(nachher), group); - } - return super.visit(node); + method.accept(new ASTVisitor() { + @Override + public boolean visit(SuperMethodInvocation node) { + if (vorher.equals(node.getName().getIdentifier())) { + rewriter.replace(node.getName(), ast.newSimpleName(nachher), group); + ListRewrite argumentsRewrite = rewriter.getListRewrite(node, SuperMethodInvocation.ARGUMENTS_PROPERTY); + if (node.arguments().isEmpty()) { + argumentsRewrite.insertFirst(ast.newSimpleName("context"), group); } - }); + } + return super.visit(node); } + }); + } private void removeRuleAnnotation(BodyDeclaration declaration, ASTRewrite rewriter, TextEditGroup group, ImportRewrite importRewriter) { List modifiers = declaration.modifiers(); diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index b930558a..3e0a3d52 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -695,7 +695,7 @@ public class MyTest { final class MyExternalResource implements BeforeEachCallback, AfterEachCallback { @Override protected void beforeEach(ExtensionContext context) { - super.beforeEach(); + super.beforeEach(context); int i=4; } @@ -994,7 +994,7 @@ public void test3() { public class MyExternalResource extends MyExternalResource2 { @Override protected void beforeEach(ExtensionContext context) { - super.beforeEach(); + super.beforeEach(context); int i=4; } From f37e285f3cda8bf9184986fcf02b7258d7b87862 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sat, 26 Oct 2024 14:42:19 +0200 Subject: [PATCH 28/58] mostly formatting and a test --- .../corext/fix/helper/AbstractTool.java | 151 +++++++++++------- .../RuleExternalResourceJUnitPlugin.java | 8 +- 2 files changed, 96 insertions(+), 63 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index 3427b5bd..00d142c9 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -38,6 +38,7 @@ import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.core.dom.Name; import org.eclipse.jdt.core.dom.QualifiedType; +import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.SimpleType; import org.eclipse.jdt.core.dom.SingleMemberAnnotation; import org.eclipse.jdt.core.dom.SingleVariableDeclaration; @@ -166,7 +167,7 @@ protected String extractQualifiedTypeName(QualifiedType qualifiedType) { StringBuilder fullClassName= new StringBuilder(qualifiedType.getName().getFullyQualifiedName()); for (Type qualifier= qualifiedType .getQualifier(); qualifier instanceof QualifiedType; qualifier= ((QualifiedType) qualifier) - .getQualifier()) { + .getQualifier()) { fullClassName.insert(0, "."); fullClassName.insert(0, ((QualifiedType) qualifier).getName().getFullyQualifiedName()); } @@ -263,49 +264,50 @@ protected boolean isDirect(ITypeBinding fieldTypeBinding) { protected void addExtendWithAnnotation(ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewriter, String className, FieldDeclaration field) { - TypeDeclaration parentClass= getParentTypeDeclaration(field); - if (parentClass == null) { - return; - } - - SingleMemberAnnotation newAnnotation= ast.newSingleMemberAnnotation(); - newAnnotation.setTypeName(ast.newName("ExtendWith")); - final TypeLiteral newTypeLiteral= ast.newTypeLiteral(); - newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className))); - newAnnotation.setValue(newTypeLiteral); - ListRewrite modifierListRewrite= rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); - modifierListRewrite.insertFirst(newAnnotation, group); - - importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); - } + TypeDeclaration parentClass= getParentTypeDeclaration(field); + if (parentClass == null) { + return; + } + + SingleMemberAnnotation newAnnotation= ast.newSingleMemberAnnotation(); + newAnnotation.setTypeName(ast.newName("ExtendWith")); + final TypeLiteral newTypeLiteral= ast.newTypeLiteral(); + newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className))); + newAnnotation.setValue(newTypeLiteral); + ListRewrite modifierListRewrite= rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); + modifierListRewrite.insertFirst(newAnnotation, group); + + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); + } public void migrateRuleToRegisterExtensionAndAdaptHierarchy(TypeDeclaration testClass, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, - TextEditGroup group) { - // 1. Migriere das @Rule-Feld zu @RegisterExtension in der Testklasse - for (FieldDeclaration field : testClass.getFields()) { - if (isAnnotatedWithRule(field) && isExternalResource(field)) { - removeRuleAnnotation(field, rewrite, group,importRewrite); - addRegisterExtensionAnnotation(field, rewrite, ast, importRewrite, group); - importRewrite.addImport("org.junit.jupiter.api.extension.RegisterExtension"); - - // Hole den Typ des Feldes und beginne die Anpassung der Vererbungskette - ITypeBinding fieldType = ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding().getType(); - adaptExternalResourceHierarchy(fieldType, rewrite, ast, importRewrite, group); - } - } + TextEditGroup group, String varname) { + adaptBeforeAfterCallsInTestClass(testClass, varname, rewrite, ast, group); + // 1. Migriere das @Rule-Feld zu @RegisterExtension in der Testklasse + for (FieldDeclaration field : testClass.getFields()) { + if (isAnnotatedWithRule(field) && isExternalResource(field)) { + removeRuleAnnotation(field, rewrite, group,importRewrite); + addRegisterExtensionAnnotation(field, rewrite, ast, importRewrite, group); + importRewrite.addImport("org.junit.jupiter.api.extension.RegisterExtension"); + + // Hole den Typ des Feldes und beginne die Anpassung der Vererbungskette + ITypeBinding fieldType = ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding().getType(); + adaptExternalResourceHierarchy(fieldType, rewrite, ast, importRewrite, group); } + } + } private void adaptExternalResourceHierarchy(ITypeBinding typeBinding, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, TextEditGroup group) { if (typeBinding == null) return; - + // Iteriere durch die Vererbungshierarchie und passe jede Klasse an while (typeBinding != null && isExternalResource(typeBinding)) { IType type = (IType) typeBinding.getJavaElement(); TypeDeclaration typeDecl = findTypeDeclaration(typeBinding.getJavaElement().getJavaProject(), type.getElementName()); - + // Entferne `extends ExternalResource` und füge JUnit 5 Extensions hinzu if (typeDecl != null) { - + removeSuperclassType(typeDecl, rewrite, group); addBeforeAndAfterEachCallbacks(typeDecl, rewrite, ast, importRewrite, group); updateLifecycleMethods(typeDecl, rewrite, ast, group, importRewrite); @@ -362,7 +364,7 @@ private void removeRuleAnnotation(BodyDeclaration declaration, ASTRewrite rewrit ITypeBinding binding = annotation.resolveTypeBinding(); if (binding != null && binding.getQualifiedName().equals("org.junit.Rule")) { rewriter.remove(annotation, group); - importRewriter.removeImport("org.junit.Rule"); + importRewriter.removeImport("org.junit.Rule"); break; // Sobald die Annotation entfernt ist, kann die Schleife beendet werden. } } @@ -377,25 +379,25 @@ private void addRegisterExtensionAnnotation(FieldDeclaration field, ASTRewrite r public void process(Annotation node, IJavaProject jproject, ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewriter, CompilationUnit cu, String className) { - if (!ORG_JUNIT_RULE.equals(node.resolveTypeBinding().getQualifiedName())) { - return; - } - - FieldDeclaration field= (FieldDeclaration) node.getParent(); - ITypeBinding fieldTypeBinding= ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding() - .getType(); - if (!isExternalResource(fieldTypeBinding) || fieldTypeBinding.isAnonymous()) { - return; - } - - if (isDirect(fieldTypeBinding)) { - rewrite.remove(field, group); - importRewriter.removeImport(ORG_JUNIT_RULE); - } - - addExtendWithAnnotation(rewrite, ast, group, importRewriter, className, field); - importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); - } + if (!ORG_JUNIT_RULE.equals(node.resolveTypeBinding().getQualifiedName())) { + return; + } + + FieldDeclaration field= (FieldDeclaration) node.getParent(); + ITypeBinding fieldTypeBinding= ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding() + .getType(); + if (!isExternalResource(fieldTypeBinding) || fieldTypeBinding.isAnonymous()) { + return; + } + + if (isDirect(fieldTypeBinding)) { + rewrite.remove(field, group); + importRewriter.removeImport(ORG_JUNIT_RULE); + } + + addExtendWithAnnotation(rewrite, ast, group, importRewriter, className, field); + importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); + } private boolean isAnnotatedWithRule(BodyDeclaration declaration) { for (Object modifier : declaration.modifiers()) { @@ -460,12 +462,12 @@ private void ensureExtensionContextParameter(MethodDeclaration method, ASTRewrit boolean hasExtensionContext = method.parameters().stream() .anyMatch(param -> param instanceof SingleVariableDeclaration && ((SingleVariableDeclaration) param).getType().toString().equals("ExtensionContext")); - + if (!hasExtensionContext) { SingleVariableDeclaration newParam = ast.newSingleVariableDeclaration(); newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); newParam.setName(ast.newSimpleName("context")); - + ListRewrite listRewrite = rewrite.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY); listRewrite.insertLast(newParam, group); importRewrite.addImport("org.junit.jupiter.api.extension.ExtensionContext"); @@ -474,15 +476,15 @@ private void ensureExtensionContextParameter(MethodDeclaration method, ASTRewrit protected boolean modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, ImportRewrite importRewriter) { ITypeBinding binding= node.resolveBinding(); - + if (binding.isAnonymous() || !isExternalResource(binding) || !hasDefaultConstructorOrNoConstructor(node)) { return false; } - + if (isDirectlyExtendingExternalResource(binding)) { refactorToImplementCallbacks(node, rewriter, ast, group, importRewriter); } - + for (MethodDeclaration method : node.getMethods()) { if (isLifecycleMethod(method, "before")) { adaptSuperBeforeCalls("before","beforeEach",method, rewriter, ast, group); @@ -499,11 +501,11 @@ protected boolean modifyExternalResourceClass(TypeDeclaration node, ASTRewrite r private void refactorToImplementCallbacks(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, ImportRewrite importRewriter) { rewriter.remove(node.getSuperclassType(), group); importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); - + ListRewrite listRewrite= rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); addInterfaceCallback(listRewrite, ast, "BeforeEachCallback", group); addInterfaceCallback(listRewrite, ast, "AfterEachCallback", group); - + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); } @@ -525,17 +527,44 @@ private void ensureExtensionContextParameter(ASTRewrite rewriter, AST ast, Metho boolean hasExtensionContext= method.parameters().stream() .anyMatch(param -> param instanceof SingleVariableDeclaration && ((SingleVariableDeclaration) param).getType().toString().equals("ExtensionContext")); - + if (!hasExtensionContext) { SingleVariableDeclaration newParam= ast.newSingleVariableDeclaration(); newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); newParam.setName(ast.newSimpleName("context")); - + rewriter.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY).insertLast(newParam, group); importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT); } } + private void adaptBeforeAfterCallsInTestClass(TypeDeclaration testClass, String fieldName, ASTRewrite rewriter, AST ast, TextEditGroup group) { + // Durchläuft alle Methoden in der Testklasse + testClass.accept(new ASTVisitor() { + @Override + public boolean visit(MethodInvocation node) { + // Überprüfen, ob der MethodInvocation das richtige Feld referenziert und entweder "before" oder "after" aufruft + if (node.getExpression() instanceof SimpleName) { + SimpleName expr = (SimpleName) node.getExpression(); + if (expr.getIdentifier().equals(fieldName)) { + String methodName = node.getName().getIdentifier(); + + // Wenn die Methode "before" heißt, umbenennen in "beforeEach" + if ("before".equals(methodName)) { + rewriter.replace(node.getName(), ast.newSimpleName("beforeEach"), group); + } + // Wenn die Methode "after" heißt, umbenennen in "afterEach" + else if ("after".equals(methodName)) { + rewriter.replace(node.getName(), ast.newSimpleName("afterEach"), group); + } + } + } + return super.visit(node); + } + }); + } + + public static Collection getUsedVariableNames(ASTNode node) { CompilationUnit root= (CompilationUnit) node.getRoot(); return new ScopeAnalyzer(root).getUsedVariableNames(node.getStartPosition(), node.getLength()); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index 003bb8fe..047b8228 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -70,8 +70,12 @@ public void rewrite(JUnitCleanUpFixCore upp, ReferenceHolder { - FieldDeclaration field= mh.getFieldDeclaration(); - migrateRuleToRegisterExtensionAndAdaptHierarchy(getParentTypeDeclaration(field),rewrite, ast, importRewriter,group ); + FieldDeclaration fieldDeclaration= mh.getFieldDeclaration(); + for (Object fragment : fieldDeclaration.fragments()) { + VariableDeclarationFragment variable = (VariableDeclarationFragment) fragment; + String fieldName = variable.getName().getIdentifier(); + migrateRuleToRegisterExtensionAndAdaptHierarchy(getParentTypeDeclaration(fieldDeclaration),rewrite, ast, importRewriter,group ,fieldName); + } }); } From 247222ddb67ce3a70a61ce2c5793ea0dc7d154ac Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 27 Oct 2024 07:59:52 +0100 Subject: [PATCH 29/58] fix jface migration --- .../jdt/internal/common/LambdaASTVisitor.java | 40 +++- .../corext/fix/helper/JFacePlugin.java | 2 - .../ui/tests/quickfix/Java8CleanUpTest.java | 181 +++++++++--------- 3 files changed, 123 insertions(+), 100 deletions(-) diff --git a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java index d100e07a..36726358 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/common/LambdaASTVisitor.java @@ -598,23 +598,49 @@ public boolean visit(MethodInvocation node) { return true; } - private boolean usesGivenSignature(MethodInvocation node, String canonicaltype, String methodName) { + private static boolean usesGivenSignature(MethodInvocation node, String canonicaltype, String methodName) { IMethodBinding methodBinding= node.resolveMethodBinding(); if(methodBinding==null) { if(!methodName.equals(node.getName().getIdentifier())){ return false; - } + } } else { if(!methodName.equals(methodBinding.getName())){ return false; } - ITypeBinding declaringClass= methodBinding.getDeclaringClass(); - String name= declaringClass.getQualifiedName(); - if(canonicaltype.equals(name)){ - return true; + } + if(isClassQualifiedNameMatching(node,canonicaltype)){ + return true; + } + return false; + } + + /** + * @param methodInvocation + * @param qualifiedName + * @return result + */ + public static boolean isClassQualifiedNameMatching(MethodInvocation methodInvocation, String qualifiedName) { + Expression expression = methodInvocation.getExpression(); + if (expression != null) { + ITypeBinding typeBinding = expression.resolveTypeBinding(); + if (typeBinding != null && !typeBinding.isRecovered()) { + return qualifiedName.equals(typeBinding.getQualifiedName()); + } + if (expression instanceof SimpleName) { + String startswith=typeBinding.toString().substring(9); + startswith=startswith.substring(0, startswith.length()-1); + return qualifiedName.endsWith(startswith); + } + } else { + IMethodBinding methodBinding = methodInvocation.resolveMethodBinding(); + if (methodBinding != null) { + ITypeBinding declaringClass = methodBinding.getDeclaringClass(); + if (declaringClass != null) { + return qualifiedName.equals(declaringClass.getQualifiedName()); + } } } - return false; } diff --git a/sandbox_jface_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JFacePlugin.java b/sandbox_jface_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JFacePlugin.java index b130a0e9..c223fb59 100644 --- a/sandbox_jface_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JFacePlugin.java +++ b/sandbox_jface_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JFacePlugin.java @@ -88,9 +88,7 @@ public static class MonitorHolder { public void find(JfaceCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed, boolean createForOnlyIfVarUsed) { - int i = 0; ReferenceHolder dataholder = new ReferenceHolder<>(); - ASTProcessor, Integer, MonitorHolder> astp = new ASTProcessor<>( dataholder, nodesprocessed); astp.callMethodInvocationVisitor(IProgressMonitor.class, "beginTask", (node, holder) -> { //$NON-NLS-1$ diff --git a/sandbox_jface_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_jface_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java index c10ad414..ba9c8654 100644 --- a/sandbox_jface_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_jface_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java @@ -30,78 +30,78 @@ public class Java8CleanUpTest { AbstractEclipseJava context= new EclipseJava8(); enum JFaceCleanupCases{ - PositiveCase(""" - package test; - import java.util.*; - import org.eclipse.core.runtime.CoreException; - import org.eclipse.core.runtime.IProgressMonitor; - import org.eclipse.core.runtime.SubProgressMonitor; - import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages; - public class Test extends ArrayList { - public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException { - monitor.beginTask(NewWizardMessages.NewSourceFolderWizardPage_operation, 3); - IProgressMonitor subProgressMonitor= new SubProgressMonitor(monitor, 1); - IProgressMonitor subProgressMonitor2= new SubProgressMonitor(monitor, 2); - } - } - """, //$NON-NLS-1$ - - """ - package test; - import java.util.*; - import org.eclipse.core.runtime.CoreException; - import org.eclipse.core.runtime.IProgressMonitor; - import org.eclipse.core.runtime.SubMonitor; - import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages; - public class Test extends ArrayList { - public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException { - SubMonitor subMonitor=SubMonitor.convert(monitor,NewWizardMessages.NewSourceFolderWizardPage_operation,3); - IProgressMonitor subProgressMonitor= subMonitor.split(1); - IProgressMonitor subProgressMonitor2= subMonitor.split(2); - } - } - """), //$NON-NLS-1$ - Twice(""" - package test; - import java.util.*; - import org.eclipse.core.runtime.CoreException; - import org.eclipse.core.runtime.IProgressMonitor; - import org.eclipse.core.runtime.SubProgressMonitor; - import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages; - public class Test extends ArrayList { - public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException { - monitor.beginTask(NewWizardMessages.NewSourceFolderWizardPage_operation, 3); - IProgressMonitor subProgressMonitor= new SubProgressMonitor(monitor, 1); - IProgressMonitor subProgressMonitor2= new SubProgressMonitor(monitor, 2); - } - public void createPackageFragmentRoot2(IProgressMonitor monitor) throws CoreException, InterruptedException { - monitor.beginTask(NewWizardMessages.NewSourceFolderWizardPage_operation, 3); - IProgressMonitor subProgressMonitor3= new SubProgressMonitor(monitor, 1); - IProgressMonitor subProgressMonitor4= new SubProgressMonitor(monitor, 2); - } - } - """, //$NON-NLS-1$ - - """ - package test; - import java.util.*; - import org.eclipse.core.runtime.CoreException; - import org.eclipse.core.runtime.IProgressMonitor; - import org.eclipse.core.runtime.SubMonitor; - import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages; - public class Test extends ArrayList { - public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException { - SubMonitor subMonitor=SubMonitor.convert(monitor,NewWizardMessages.NewSourceFolderWizardPage_operation,3); - IProgressMonitor subProgressMonitor= subMonitor.split(1); - IProgressMonitor subProgressMonitor2= subMonitor.split(2); - } - public void createPackageFragmentRoot2(IProgressMonitor monitor) throws CoreException, InterruptedException { - SubMonitor subMonitor=SubMonitor.convert(monitor,NewWizardMessages.NewSourceFolderWizardPage_operation,3); - IProgressMonitor subProgressMonitor3= subMonitor.split(1); - IProgressMonitor subProgressMonitor4= subMonitor.split(2); - } - } - """); //$NON-NLS-1$ + PositiveCase( +""" +package test; +import java.util.*; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages; +public class Test extends ArrayList { + public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException { + monitor.beginTask(NewWizardMessages.NewSourceFolderWizardPage_operation, 3); + IProgressMonitor subProgressMonitor= new SubProgressMonitor(monitor, 1); + IProgressMonitor subProgressMonitor2= new SubProgressMonitor(monitor, 2); + } +} +""", //$NON-NLS-1$ +""" +package test; +import java.util.*; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages; +public class Test extends ArrayList { + public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException { + SubMonitor subMonitor=SubMonitor.convert(monitor,NewWizardMessages.NewSourceFolderWizardPage_operation,3); + IProgressMonitor subProgressMonitor= subMonitor.split(1); + IProgressMonitor subProgressMonitor2= subMonitor.split(2); + } +} +"""), //$NON-NLS-1$ + Twice( +""" +package test; +import java.util.*; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages; +public class Test extends ArrayList { + public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException { + monitor.beginTask(NewWizardMessages.NewSourceFolderWizardPage_operation, 3); + IProgressMonitor subProgressMonitor= new SubProgressMonitor(monitor, 1); + IProgressMonitor subProgressMonitor2= new SubProgressMonitor(monitor, 2); + } + public void createPackageFragmentRoot2(IProgressMonitor monitor) throws CoreException, InterruptedException { + monitor.beginTask(NewWizardMessages.NewSourceFolderWizardPage_operation, 3); + IProgressMonitor subProgressMonitor3= new SubProgressMonitor(monitor, 1); + IProgressMonitor subProgressMonitor4= new SubProgressMonitor(monitor, 2); + } +} +""", //$NON-NLS-1$ +""" +package test; +import java.util.*; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages; +public class Test extends ArrayList { + public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException { + SubMonitor subMonitor=SubMonitor.convert(monitor,NewWizardMessages.NewSourceFolderWizardPage_operation,3); + IProgressMonitor subProgressMonitor= subMonitor.split(1); + IProgressMonitor subProgressMonitor2= subMonitor.split(2); + } + public void createPackageFragmentRoot2(IProgressMonitor monitor) throws CoreException, InterruptedException { + SubMonitor subMonitor=SubMonitor.convert(monitor,NewWizardMessages.NewSourceFolderWizardPage_operation,3); + IProgressMonitor subProgressMonitor3= subMonitor.split(1); + IProgressMonitor subProgressMonitor4= subMonitor.split(2); + } +} +"""); //$NON-NLS-1$ String given; String expected; @@ -123,25 +123,24 @@ public void testJFaceCleanupParametrized(JFaceCleanupCases test) throws CoreExce } enum NOJFaceCleanupCases { - - NOCase( - """ - package test; - import java.util.*; - public class Test { - void m(List strings) { - Iterator it = strings.iterator(); - while (it.hasNext()) { - String s = (String) it.next(); - if (s.isEmpty()) { - it.remove(); - } else { - System.out.println(s); - } - } - } - } - """) //$NON-NLS-1$ +NOCase( +""" +package test; +import java.util.*; +public class Test { + void m(List strings) { + Iterator it = strings.iterator(); + while (it.hasNext()) { + String s = (String) it.next(); + if (s.isEmpty()) { + it.remove(); + } else { + System.out.println(s); + } + } + } +} +""") //$NON-NLS-1$ ; NOJFaceCleanupCases(String given) { From eaa7934776daa729c692299e8dc594cd51567a33 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 27 Oct 2024 09:20:15 +0100 Subject: [PATCH 30/58] extract some constants, formatting --- .../corext/fix/helper/AbstractTool.java | 640 +++++++++--------- .../fix/helper/AfterClassJUnitPlugin.java | 2 +- .../corext/fix/helper/AfterJUnitPlugin.java | 2 +- .../fix/helper/BeforeClassJUnitPlugin.java | 2 +- .../corext/fix/helper/BeforeJUnitPlugin.java | 2 +- .../helper/ExternalResourceJUnitPlugin.java | 5 +- .../corext/fix/helper/IgnoreJUnitPlugin.java | 2 +- .../RuleExternalResourceJUnitPlugin.java | 5 +- .../corext/fix/helper/RunWithJUnitPlugin.java | 4 +- .../corext/fix/helper/TestJUnitPlugin.java | 2 +- 10 files changed, 325 insertions(+), 341 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index 00d142c9..30d4962c 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -62,47 +62,63 @@ */ public abstract class AbstractTool { - protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT= "org.junit.jupiter.api.extension.ExtensionContext"; + private static final String METHOD_AFTER_EACH= "afterEach"; + private static final String METHOD_BEFORE_EACH= "beforeEach"; + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT= "org.junit.jupiter.api.extension.ExtensionContext"; + private static final String AFTER_EACH_CALLBACK= "AfterEachCallback"; + private static final String BEFORE_EACH_CALLBACK= "BeforeEachCallback"; + private static final String ANNOTATION_REGISTER_EXTENSION= "RegisterExtension"; protected static final String ORG_JUNIT_RULE= "org.junit.Rule"; + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK= "org.junit.jupiter.api.extension.AfterEachCallback"; + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK= "org.junit.jupiter.api.extension.BeforeEachCallback"; + private static final String ORG_JUNIT_JUPITER_API_EXTENSION_REGISTER_EXTENSION= "org.junit.jupiter.api.extension.RegisterExtension"; + private static final String ANNOTATION_EXTEND_WITH= "ExtendWith"; + private static final String METHOD_AFTER= "after"; + private static final String METHOD_BEFORE= "before"; + private static final String VARIABLE_NAME_CONTEXT= "context"; + private static final String EXTENSION_CONTEXT= "ExtensionContext"; protected static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE= "org.junit.rules.ExternalResource"; - protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK= "org.junit.jupiter.api.extension.BeforeEachCallback"; - protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK= "org.junit.jupiter.api.extension.AfterEachCallback"; protected static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH= "org.junit.jupiter.api.extension.ExtendWith"; protected static final String ORG_JUNIT_AFTER= "org.junit.After"; protected static final String ORG_JUNIT_JUPITER_API_AFTER_EACH= "org.junit.jupiter.api.AfterEach"; - protected static final String AFTER_EACH= "AfterEach"; + protected static final String ANNOTATION_AFTER_EACH= "AfterEach"; protected static final String ORG_JUNIT_BEFORE= "org.junit.Before"; - protected static final String BEFORE_EACH= "BeforeEach"; + protected static final String ANNOTATION_BEFORE_EACH= "BeforeEach"; protected static final String ORG_JUNIT_AFTERCLASS= "org.junit.AfterClass"; protected static final String ORG_JUNIT_JUPITER_API_AFTER_ALL= "org.junit.jupiter.api.AfterAll"; - protected static final String AFTER_ALL= "AfterAll"; + protected static final String ANNOTATION_AFTER_ALL= "AfterAll"; protected static final String ASSERTIONS= "Assertions"; protected static final String ORG_JUNIT_JUPITER_API_ASSERTIONS= "org.junit.jupiter.api.Assertions"; protected static final String ORG_JUNIT_ASSERT= "org.junit.Assert"; protected static final String ORG_JUNIT_BEFORECLASS= "org.junit.BeforeClass"; protected static final String ORG_JUNIT_JUPITER_API_BEFORE_ALL= "org.junit.jupiter.api.BeforeAll"; - protected static final String BEFORE_ALL= "BeforeAll"; + protected static final String ANNOTATION_BEFORE_ALL= "BeforeAll"; protected static final String ORG_JUNIT_IGNORE= "org.junit.Ignore"; protected static final String ORG_JUNIT_JUPITER_DISABLED= "org.junit.jupiter.api.Disabled"; - protected static final String DISABLED= "Disabled"; + protected static final String ANNOTATION_DISABLED= "Disabled"; protected static final String ORG_JUNIT_JUPITER_API_IO_TEMP_DIR= "org.junit.jupiter.api.io.TempDir"; protected static final String ORG_JUNIT_RULES_TEMPORARY_FOLDER= "org.junit.rules.TemporaryFolder"; protected static final String ORG_JUNIT_JUPITER_API_TEST_INFO= "org.junit.jupiter.api.TestInfo"; protected static final String ORG_JUNIT_RULES_TEST_NAME= "org.junit.rules.TestName"; protected static final String ORG_JUNIT_JUPITER_API_BEFORE_EACH= "org.junit.jupiter.api.BeforeEach"; protected static final String ORG_JUNIT_PLATFORM_SUITE_API_SELECT_CLASSES= "org.junit.platform.suite.api.SelectClasses"; - protected static final String SELECT_CLASSES= "SelectClasses"; + protected static final String ANNOTATION_SELECT_CLASSES= "SelectClasses"; protected static final String ORG_JUNIT_RUNWITH= "org.junit.runner.RunWith"; protected static final String ORG_JUNIT_JUPITER_SUITE= "org.junit.platform.suite.api.Suite"; - protected static final String SUITE= "Suite"; + protected static final String ANNOTATION_SUITE= "Suite"; protected static final String ORG_JUNIT_SUITE= "org.junit.runners.Suite"; protected static final String ORG_JUNIT_SUITE_SUITECLASSES= "org.junit.runners.Suite.SuiteClasses"; protected static final String ORG_JUNIT_TEST= "org.junit.Test"; protected static final String ORG_JUNIT_JUPITER_TEST= "org.junit.jupiter.api.Test"; - protected static final String TEST= "Test"; + protected static final String ANNOTATION_TEST= "Test"; protected static final String ORG_JUNIT_JUPITER_API_ASSUMPTIONS= "org.junit.jupiter.api.Assumptions"; protected static final String ORG_JUNIT_ASSUME= "org.junit.Assume"; + public static Collection getUsedVariableNames(ASTNode node) { + CompilationUnit root= (CompilationUnit) node.getRoot(); + return new ScopeAnalyzer(root).getUsedVariableNames(node.getStartPosition(), node.getLength()); + } + protected static boolean isOfType(ITypeBinding typeBinding, String typename) { if (typeBinding == null) { throw new AbortSearchException(); @@ -113,11 +129,88 @@ protected static boolean isOfType(ITypeBinding typeBinding, String typename) { return typeBinding.getQualifiedName().equals(typename); } - public abstract void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, - Set operations, Set nodesprocessed); + private void adaptBeforeAfterCallsInTestClass(TypeDeclaration testClass, String fieldName, ASTRewrite rewriter, + AST ast, TextEditGroup group) { + testClass.accept(new ASTVisitor() { + @Override + public boolean visit(MethodInvocation node) { + if (node.getExpression() instanceof SimpleName) { + SimpleName expr= (SimpleName) node.getExpression(); + if (expr.getIdentifier().equals(fieldName)) { + String methodName= node.getName().getIdentifier(); + if (METHOD_BEFORE.equals(methodName)) { + rewriter.replace(node.getName(), ast.newSimpleName(METHOD_BEFORE_EACH), group); + } + else if (METHOD_AFTER.equals(methodName)) { + rewriter.replace(node.getName(), ast.newSimpleName(METHOD_AFTER_EACH), group); + } + } + } + return super.visit(node); + } + }); + } - public abstract void rewrite(JUnitCleanUpFixCore useExplicitEncodingFixCore, T holder, - CompilationUnitRewrite cuRewrite, TextEditGroup group); + private void adaptExternalResourceHierarchy(ITypeBinding typeBinding, ASTRewrite rewrite, AST ast, + ImportRewrite importRewrite, TextEditGroup group) { + if (typeBinding == null) { + return; + } + while (typeBinding != null && isExternalResource(typeBinding)) { + IType type= (IType) typeBinding.getJavaElement(); + TypeDeclaration typeDecl= findTypeDeclaration(typeBinding.getJavaElement().getJavaProject(), + type.getElementName()); + if (typeDecl != null) { + removeSuperclassType(typeDecl, rewrite, group); + addBeforeAndAfterEachCallbacks(typeDecl, rewrite, ast, importRewrite, group); + updateLifecycleMethods(typeDecl, rewrite, ast, group, importRewrite); + importRewrite.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); + importRewrite.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); + } + typeBinding= typeBinding.getSuperclass(); + } + } + + private void adaptSuperBeforeCalls(String vorher, String nachher, MethodDeclaration method, ASTRewrite rewriter, + AST ast, TextEditGroup group) { + method.accept(new ASTVisitor() { + @Override + public boolean visit(SuperMethodInvocation node) { + if (vorher.equals(node.getName().getIdentifier())) { + rewriter.replace(node.getName(), ast.newSimpleName(nachher), group); + ListRewrite argumentsRewrite= rewriter.getListRewrite(node, + SuperMethodInvocation.ARGUMENTS_PROPERTY); + if (node.arguments().isEmpty()) { + argumentsRewrite.insertFirst(ast.newSimpleName(VARIABLE_NAME_CONTEXT), group); + } + } + return super.visit(node); + } + }); + } + + private void addBeforeAndAfterEachCallbacks(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, + ImportRewrite importRewrite, TextEditGroup group) { + ListRewrite listRewrite= rewrite.getListRewrite(typeDecl, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); + listRewrite.insertLast(ast.newSimpleType(ast.newName(BEFORE_EACH_CALLBACK)), group); + listRewrite.insertLast(ast.newSimpleType(ast.newName(AFTER_EACH_CALLBACK)), group); + } + + protected void addExtendWithAnnotation(ASTRewrite rewrite, AST ast, TextEditGroup group, + ImportRewrite importRewriter, String className, FieldDeclaration field) { + TypeDeclaration parentClass= getParentTypeDeclaration(field); + if (parentClass == null) { + return; + } + SingleMemberAnnotation newAnnotation= ast.newSingleMemberAnnotation(); + newAnnotation.setTypeName(ast.newName(ANNOTATION_EXTEND_WITH)); + final TypeLiteral newTypeLiteral= ast.newTypeLiteral(); + newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className))); + newAnnotation.setValue(newTypeLiteral); + ListRewrite modifierListRewrite= rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); + modifierListRewrite.insertFirst(newAnnotation, group); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); + } /** * Adds an import to the class. This method should be used for every class @@ -134,6 +227,85 @@ protected Name addImport(String typeName, final CompilationUnitRewrite cuRewrite return ast.newName(importedName); } + private void addInterfaceCallback(ListRewrite listRewrite, AST ast, String callbackName, TextEditGroup group) { + listRewrite.insertLast(ast.newSimpleType(ast.newName(callbackName)), group); + } + + private void addRegisterExtensionAnnotation(FieldDeclaration field, ASTRewrite rewrite, AST ast, + ImportRewrite importRewrite, TextEditGroup group) { + MarkerAnnotation registerExtensionAnnotation= ast.newMarkerAnnotation(); + registerExtensionAnnotation.setTypeName(ast.newName(ANNOTATION_REGISTER_EXTENSION)); + rewrite.getListRewrite(field, FieldDeclaration.MODIFIERS2_PROPERTY).insertFirst(registerExtensionAnnotation, + group); + } + + private void ensureExtensionContextParameter(MethodDeclaration method, ASTRewrite rewrite, AST ast, + TextEditGroup group, ImportRewrite importRewrite) { + boolean hasExtensionContext= method.parameters().stream() + .anyMatch(param -> param instanceof SingleVariableDeclaration + && ((SingleVariableDeclaration) param).getType().toString().equals(EXTENSION_CONTEXT)); + if (!hasExtensionContext) { + SingleVariableDeclaration newParam= ast.newSingleVariableDeclaration(); + newParam.setType(ast.newSimpleType(ast.newName(EXTENSION_CONTEXT))); + newParam.setName(ast.newSimpleName(VARIABLE_NAME_CONTEXT)); + ListRewrite listRewrite= rewrite.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY); + listRewrite.insertLast(newParam, group); + importRewrite.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT); + } + } + + public String extractClassNameFromField(FieldDeclaration field) { + for (Object fragmentObj : field.fragments()) { + VariableDeclarationFragment fragment= (VariableDeclarationFragment) fragmentObj; + Expression initializer= fragment.getInitializer(); + if (initializer instanceof ClassInstanceCreation) { + ClassInstanceCreation creation= (ClassInstanceCreation) initializer; + Type createdType= creation.getType(); + if (createdType instanceof QualifiedType) { + QualifiedType qualifiedType= (QualifiedType) createdType; + return extractQualifiedTypeName(qualifiedType); + } else if (createdType instanceof SimpleType) { + return ((SimpleType) createdType).getName().getFullyQualifiedName(); + } + } + } + return null; + } + + protected String extractQualifiedTypeName(QualifiedType qualifiedType) { + StringBuilder fullClassName= new StringBuilder(qualifiedType.getName().getFullyQualifiedName()); + for (Type qualifier= qualifiedType + .getQualifier(); qualifier instanceof QualifiedType; qualifier= ((QualifiedType) qualifier) + .getQualifier()) { + fullClassName.insert(0, "."); + fullClassName.insert(0, ((QualifiedType) qualifier).getName().getFullyQualifiedName()); + } + return fullClassName.toString(); + } + + public abstract void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, + Set operations, Set nodesprocessed); + + public TypeDeclaration findTypeDeclaration(IJavaProject javaProject, String fullyQualifiedTypeName) { + try { + IType type= javaProject.findType(fullyQualifiedTypeName); + if (type != null && type.exists()) { + CompilationUnit unit= parseCompilationUnit(type.getCompilationUnit()); + return (TypeDeclaration) unit.types().get(0); + } + } catch (JavaModelException e) { + e.printStackTrace(); + } + return null; + } + + protected TypeDeclaration getParentTypeDeclaration(ASTNode node) { + while (node != null && !(node instanceof TypeDeclaration)) { + node= node.getParent(); + } + return (TypeDeclaration) node; + } + public abstract String getPreview(boolean afterRefactoring); protected boolean hasDefaultConstructorOrNoConstructor(TypeDeclaration classNode) { @@ -153,27 +325,19 @@ protected boolean hasDefaultConstructorOrNoConstructor(TypeDeclaration classNode return !hasConstructor; } - protected boolean isExternalResource(ITypeBinding typeBinding) { - while (typeBinding != null) { - if (ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(typeBinding.getQualifiedName())) { - return true; + private boolean isAnnotatedWithRule(BodyDeclaration declaration) { + for (Object modifier : declaration.modifiers()) { + if (modifier instanceof Annotation) { + Annotation annotation= (Annotation) modifier; + ITypeBinding binding= annotation.resolveTypeBinding(); + if (binding != null && ORG_JUNIT_RULE.equals(binding.getQualifiedName())) { + return true; + } } - typeBinding= typeBinding.getSuperclass(); } return false; } - protected String extractQualifiedTypeName(QualifiedType qualifiedType) { - StringBuilder fullClassName= new StringBuilder(qualifiedType.getName().getFullyQualifiedName()); - for (Type qualifier= qualifiedType - .getQualifier(); qualifier instanceof QualifiedType; qualifier= ((QualifiedType) qualifier) - .getQualifier()) { - fullClassName.insert(0, "."); - fullClassName.insert(0, ((QualifiedType) qualifier).getName().getFullyQualifiedName()); - } - return fullClassName.toString(); - } - public boolean isAnonymousClass(VariableDeclarationFragment fragmentObj) { VariableDeclarationFragment fragment= fragmentObj; Expression initializer= fragment.getInitializer(); @@ -187,235 +351,134 @@ public boolean isAnonymousClass(VariableDeclarationFragment fragmentObj) { return false; } - public String extractClassNameFromField(FieldDeclaration field) { - for (Object fragmentObj : field.fragments()) { - VariableDeclarationFragment fragment= (VariableDeclarationFragment) fragmentObj; - Expression initializer= fragment.getInitializer(); - if (initializer instanceof ClassInstanceCreation) { - ClassInstanceCreation creation= (ClassInstanceCreation) initializer; - Type createdType= creation.getType(); - if (createdType instanceof QualifiedType) { - QualifiedType qualifiedType= (QualifiedType) createdType; - return extractQualifiedTypeName(qualifiedType); - } else if (createdType instanceof SimpleType) { - return ((SimpleType) createdType).getName().getFullyQualifiedName(); - } - } - } - return null; - } - - protected TypeDeclaration getParentTypeDeclaration(ASTNode node) { - while (node != null && !(node instanceof TypeDeclaration)) { - node= node.getParent(); - } - return (TypeDeclaration) node; + protected boolean isDirect(ITypeBinding fieldTypeBinding) { + return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(fieldTypeBinding.getQualifiedName()); } protected boolean isDirectlyExtendingExternalResource(ITypeBinding binding) { return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(binding.getSuperclass().getQualifiedName()); } - private boolean isStringType(Expression expression) { - ITypeBinding typeBinding= expression.resolveTypeBinding(); - return typeBinding != null && String.class.getCanonicalName().equals(typeBinding.getQualifiedName()); + private boolean isExternalResource(FieldDeclaration field) { + VariableDeclarationFragment fragment= (VariableDeclarationFragment) field.fragments().get(0); + ITypeBinding binding= fragment.resolveBinding().getType(); + return isExternalResource(binding); } - public void reorderParameters(MethodInvocation node, ASTRewrite rewriter, TextEditGroup group, Set oneparam, Set twoparam) { - String methodName= node.getName().getIdentifier(); - List arguments= node.arguments(); - switch (arguments.size()) { - case 2: - if (oneparam.contains(methodName)) { - reorderParameters(rewriter, node, group, 1, 0); - } - break; - case 3: - if (twoparam.contains(methodName)) { - reorderParameters(rewriter, node, group, 1, 2, 0); // expected, actual, message + protected boolean isExternalResource(ITypeBinding typeBinding) { + while (typeBinding != null) { + if (ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(typeBinding.getQualifiedName())) { + return true; } - break; - case 4: - reorderParameters(rewriter, node, group, 1, 2, 3, 0); // expected, actual, delta, message - break; - default: - break; - } - } - - private void reorderParameters(ASTRewrite rewriter, MethodInvocation node, TextEditGroup group, int... order) { - ListRewrite listRewrite= rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); - List arguments= node.arguments(); - Expression[] newArguments= new Expression[arguments.size()]; - for (int i= 0; i < order.length; i++) { - newArguments[i]= (Expression) ASTNode.copySubtree(node.getAST(), arguments.get(order[i])); - } - if (!isStringType(arguments.get(0))) { - return; - } - for (int i= 0; i < arguments.size(); i++) { - listRewrite.replace(arguments.get(i), newArguments[i], group); + typeBinding= typeBinding.getSuperclass(); } + return false; } - protected boolean isDirect(ITypeBinding fieldTypeBinding) { - return ORG_JUNIT_RULES_EXTERNAL_RESOURCE.equals(fieldTypeBinding.getQualifiedName()); + private boolean isLifecycleMethod(MethodDeclaration method, String methodName) { + return method.getName().getIdentifier().equals(methodName); } - protected void addExtendWithAnnotation(ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewriter, String className, - FieldDeclaration field) { - TypeDeclaration parentClass= getParentTypeDeclaration(field); - if (parentClass == null) { - return; - } - - SingleMemberAnnotation newAnnotation= ast.newSingleMemberAnnotation(); - newAnnotation.setTypeName(ast.newName("ExtendWith")); - final TypeLiteral newTypeLiteral= ast.newTypeLiteral(); - newTypeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className))); - newAnnotation.setValue(newTypeLiteral); - ListRewrite modifierListRewrite= rewrite.getListRewrite(parentClass, TypeDeclaration.MODIFIERS2_PROPERTY); - modifierListRewrite.insertFirst(newAnnotation, group); - - importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH); + private boolean isStringType(Expression expression) { + ITypeBinding typeBinding= expression.resolveTypeBinding(); + return typeBinding != null && String.class.getCanonicalName().equals(typeBinding.getQualifiedName()); } - public void migrateRuleToRegisterExtensionAndAdaptHierarchy(TypeDeclaration testClass, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, - TextEditGroup group, String varname) { + public void migrateRuleToRegisterExtensionAndAdaptHierarchy(TypeDeclaration testClass, ASTRewrite rewrite, AST ast, + ImportRewrite importRewrite, TextEditGroup group, String varname) { adaptBeforeAfterCallsInTestClass(testClass, varname, rewrite, ast, group); - // 1. Migriere das @Rule-Feld zu @RegisterExtension in der Testklasse for (FieldDeclaration field : testClass.getFields()) { if (isAnnotatedWithRule(field) && isExternalResource(field)) { - removeRuleAnnotation(field, rewrite, group,importRewrite); + removeRuleAnnotation(field, rewrite, group, importRewrite); addRegisterExtensionAnnotation(field, rewrite, ast, importRewrite, group); - importRewrite.addImport("org.junit.jupiter.api.extension.RegisterExtension"); - - // Hole den Typ des Feldes und beginne die Anpassung der Vererbungskette - ITypeBinding fieldType = ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding().getType(); + importRewrite.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_REGISTER_EXTENSION); + ITypeBinding fieldType= ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding() + .getType(); adaptExternalResourceHierarchy(fieldType, rewrite, ast, importRewrite, group); } } } - private void adaptExternalResourceHierarchy(ITypeBinding typeBinding, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, TextEditGroup group) { - if (typeBinding == null) return; - - // Iteriere durch die Vererbungshierarchie und passe jede Klasse an - while (typeBinding != null && isExternalResource(typeBinding)) { - IType type = (IType) typeBinding.getJavaElement(); - TypeDeclaration typeDecl = findTypeDeclaration(typeBinding.getJavaElement().getJavaProject(), type.getElementName()); - - // Entferne `extends ExternalResource` und füge JUnit 5 Extensions hinzu - if (typeDecl != null) { - - removeSuperclassType(typeDecl, rewrite, group); - addBeforeAndAfterEachCallbacks(typeDecl, rewrite, ast, importRewrite, group); - updateLifecycleMethods(typeDecl, rewrite, ast, group, importRewrite); - importRewrite.addImport("org.junit.jupiter.api.extension.BeforeEachCallback"); - importRewrite.addImport("org.junit.jupiter.api.extension.AfterEachCallback"); - } - typeBinding = typeBinding.getSuperclass(); + protected void modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, + TextEditGroup group, ImportRewrite importRewriter) { + ITypeBinding binding= node.resolveBinding(); + if (binding.isAnonymous() || !isExternalResource(binding) || !hasDefaultConstructorOrNoConstructor(node)) { + return; } - } - - public TypeDeclaration findTypeDeclaration(IJavaProject javaProject, String fullyQualifiedTypeName) { - try { - IType type = javaProject.findType(fullyQualifiedTypeName); - if (type != null && type.exists()) { - CompilationUnit unit = parseCompilationUnit(type.getCompilationUnit()); - return (TypeDeclaration) unit.types().get(0); + if (isDirectlyExtendingExternalResource(binding)) { + refactorToImplementCallbacks(node, rewriter, ast, group, importRewriter); + } + for (MethodDeclaration method : node.getMethods()) { + if (isLifecycleMethod(method, METHOD_BEFORE)) { + adaptSuperBeforeCalls(METHOD_BEFORE, METHOD_BEFORE_EACH, method, rewriter, ast, group); + removeThrowsThrowable(method, rewriter, group); + refactorMethod(rewriter, ast, method, METHOD_BEFORE_EACH, group, importRewriter); + } else if (isLifecycleMethod(method, METHOD_AFTER)) { + adaptSuperBeforeCalls(METHOD_AFTER, METHOD_AFTER_EACH, method, rewriter, ast, group); + refactorMethod(rewriter, ast, method, METHOD_AFTER_EACH, group, importRewriter); } - } catch (JavaModelException e) { - e.printStackTrace(); } - return null; + importRewriter.removeImport(ORG_JUNIT_RULE); } private CompilationUnit parseCompilationUnit(ICompilationUnit iCompilationUnit) { - ASTParser parser = ASTParser.newParser(AST.JLS_Latest); + ASTParser parser= ASTParser.newParser(AST.getJLSLatest()); parser.setKind(ASTParser.K_COMPILATION_UNIT); parser.setSource(iCompilationUnit); parser.setResolveBindings(true); return (CompilationUnit) parser.createAST(null); } - private void adaptSuperBeforeCalls(String vorher, String nachher, MethodDeclaration method, ASTRewrite rewriter, AST ast, - TextEditGroup group) { - method.accept(new ASTVisitor() { - @Override - public boolean visit(SuperMethodInvocation node) { - if (vorher.equals(node.getName().getIdentifier())) { - rewriter.replace(node.getName(), ast.newSimpleName(nachher), group); - ListRewrite argumentsRewrite = rewriter.getListRewrite(node, SuperMethodInvocation.ARGUMENTS_PROPERTY); - if (node.arguments().isEmpty()) { - argumentsRewrite.insertFirst(ast.newSimpleName("context"), group); - } - } - return super.visit(node); - } - }); - } - - private void removeRuleAnnotation(BodyDeclaration declaration, ASTRewrite rewriter, TextEditGroup group, ImportRewrite importRewriter) { - List modifiers = declaration.modifiers(); - for (Object modifier : modifiers) { - if (modifier instanceof Annotation) { - Annotation annotation = (Annotation) modifier; - ITypeBinding binding = annotation.resolveTypeBinding(); - if (binding != null && binding.getQualifiedName().equals("org.junit.Rule")) { - rewriter.remove(annotation, group); - importRewriter.removeImport("org.junit.Rule"); - break; // Sobald die Annotation entfernt ist, kann die Schleife beendet werden. - } - } - } - } - - private void addRegisterExtensionAnnotation(FieldDeclaration field, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, TextEditGroup group) { - MarkerAnnotation registerExtensionAnnotation = ast.newMarkerAnnotation(); - registerExtensionAnnotation.setTypeName(ast.newName("RegisterExtension")); - rewrite.getListRewrite(field, FieldDeclaration.MODIFIERS2_PROPERTY).insertFirst(registerExtensionAnnotation, group); - } - - public void process(Annotation node, IJavaProject jproject, ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewriter, CompilationUnit cu, - String className) { + public void process(Annotation node, IJavaProject jproject, ASTRewrite rewrite, AST ast, TextEditGroup group, + ImportRewrite importRewriter, CompilationUnit cu, String className) { if (!ORG_JUNIT_RULE.equals(node.resolveTypeBinding().getQualifiedName())) { return; } - FieldDeclaration field= (FieldDeclaration) node.getParent(); ITypeBinding fieldTypeBinding= ((VariableDeclarationFragment) field.fragments().get(0)).resolveBinding() .getType(); if (!isExternalResource(fieldTypeBinding) || fieldTypeBinding.isAnonymous()) { return; } - if (isDirect(fieldTypeBinding)) { rewrite.remove(field, group); importRewriter.removeImport(ORG_JUNIT_RULE); } - addExtendWithAnnotation(rewrite, ast, group, importRewriter, className, field); importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); } - private boolean isAnnotatedWithRule(BodyDeclaration declaration) { - for (Object modifier : declaration.modifiers()) { + private void refactorMethod(ASTRewrite rewriter, AST ast, MethodDeclaration method, String newMethodName, + TextEditGroup group, ImportRewrite importRewriter) { + rewriter.replace(method.getName(), ast.newSimpleName(newMethodName), group); + ensureExtensionContextParameter(method, rewriter, ast, group, importRewriter); + } + + private void refactorToImplementCallbacks(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, + ImportRewrite importRewriter) { + rewriter.remove(node.getSuperclassType(), group); + importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); + ListRewrite listRewrite= rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); + addInterfaceCallback(listRewrite, ast, BEFORE_EACH_CALLBACK, group); + addInterfaceCallback(listRewrite, ast, AFTER_EACH_CALLBACK, group); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); + } + + private void removeRuleAnnotation(BodyDeclaration declaration, ASTRewrite rewriter, TextEditGroup group, + ImportRewrite importRewriter) { + List modifiers= declaration.modifiers(); + for (Object modifier : modifiers) { if (modifier instanceof Annotation) { - Annotation annotation = (Annotation) modifier; - ITypeBinding binding = annotation.resolveTypeBinding(); - if (binding != null && ORG_JUNIT_RULE.equals(binding.getQualifiedName())) { - return true; + Annotation annotation= (Annotation) modifier; + ITypeBinding binding= annotation.resolveTypeBinding(); + if (binding != null && binding.getQualifiedName().equals(ORG_JUNIT_RULE)) { + rewriter.remove(annotation, group); + importRewriter.removeImport(ORG_JUNIT_RULE); + break; } } } - return false; - } - - private boolean isExternalResource(FieldDeclaration field) { - VariableDeclarationFragment fragment = (VariableDeclarationFragment) field.fragments().get(0); - ITypeBinding binding = fragment.resolveBinding().getType(); - return isExternalResource(binding); } private void removeSuperclassType(TypeDeclaration typeDecl, ASTRewrite rewrite, TextEditGroup group) { @@ -424,149 +487,74 @@ private void removeSuperclassType(TypeDeclaration typeDecl, ASTRewrite rewrite, } } - private void addBeforeAndAfterEachCallbacks(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, TextEditGroup group) { - ListRewrite listRewrite = rewrite.getListRewrite(typeDecl, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); - listRewrite.insertLast(ast.newSimpleType(ast.newName("BeforeEachCallback")), group); - listRewrite.insertLast(ast.newSimpleType(ast.newName("AfterEachCallback")), group); - } - - private void updateLifecycleMethods(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewrite) { - for (MethodDeclaration method : typeDecl.getMethods()) { - if (method.getName().getIdentifier().equals("before")) { - removeThrowsThrowable(method, rewrite, group); - adaptSuperBeforeCalls("before","beforeEach",method, rewrite, ast, group); - rewrite.replace(method.getName(), ast.newSimpleName("beforeEach"), group); - ensureExtensionContextParameter(method, rewrite, ast, group, importRewrite); - } else if (method.getName().getIdentifier().equals("after")) { - adaptSuperBeforeCalls("after","afterEach",method, rewrite, ast, group); - rewrite.replace(method.getName(), ast.newSimpleName("afterEach"), group); - ensureExtensionContextParameter(method, rewrite, ast, group, importRewrite); - } - } - } - private void removeThrowsThrowable(MethodDeclaration method, ASTRewrite rewriter, TextEditGroup group) { - List thrownExceptionTypes = method.thrownExceptionTypes(); + List thrownExceptionTypes= method.thrownExceptionTypes(); for (Object exceptionType : thrownExceptionTypes) { if (exceptionType instanceof SimpleType) { - SimpleType exception = (SimpleType) exceptionType; + SimpleType exception= (SimpleType) exceptionType; if ("Throwable".equals(exception.getName().getFullyQualifiedName())) { - ListRewrite listRewrite = rewriter.getListRewrite(method, MethodDeclaration.THROWN_EXCEPTION_TYPES_PROPERTY); + ListRewrite listRewrite= rewriter.getListRewrite(method, + MethodDeclaration.THROWN_EXCEPTION_TYPES_PROPERTY); listRewrite.remove(exception, group); } } } } - private void ensureExtensionContextParameter(MethodDeclaration method, ASTRewrite rewrite, AST ast, TextEditGroup group, ImportRewrite importRewrite) { - boolean hasExtensionContext = method.parameters().stream() - .anyMatch(param -> param instanceof SingleVariableDeclaration - && ((SingleVariableDeclaration) param).getType().toString().equals("ExtensionContext")); - - if (!hasExtensionContext) { - SingleVariableDeclaration newParam = ast.newSingleVariableDeclaration(); - newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); - newParam.setName(ast.newSimpleName("context")); - - ListRewrite listRewrite = rewrite.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY); - listRewrite.insertLast(newParam, group); - importRewrite.addImport("org.junit.jupiter.api.extension.ExtensionContext"); - } - } - - protected boolean modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, ImportRewrite importRewriter) { - ITypeBinding binding= node.resolveBinding(); - - if (binding.isAnonymous() || !isExternalResource(binding) || !hasDefaultConstructorOrNoConstructor(node)) { - return false; + private void reorderParameters(ASTRewrite rewriter, MethodInvocation node, TextEditGroup group, int... order) { + ListRewrite listRewrite= rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); + List arguments= node.arguments(); + Expression[] newArguments= new Expression[arguments.size()]; + for (int i= 0; i < order.length; i++) { + newArguments[i]= (Expression) ASTNode.copySubtree(node.getAST(), arguments.get(order[i])); } - - if (isDirectlyExtendingExternalResource(binding)) { - refactorToImplementCallbacks(node, rewriter, ast, group, importRewriter); + if (!isStringType(arguments.get(0))) { + return; } - - for (MethodDeclaration method : node.getMethods()) { - if (isLifecycleMethod(method, "before")) { - adaptSuperBeforeCalls("before","beforeEach",method, rewriter, ast, group); - removeThrowsThrowable(method, rewriter, group); - refactorMethod(rewriter, ast, method, "beforeEach", group, importRewriter); - } else if (isLifecycleMethod(method, "after")) { - adaptSuperBeforeCalls("after","afterEach",method, rewriter, ast, group); - refactorMethod(rewriter, ast, method, "afterEach", group, importRewriter); - } + for (int i= 0; i < arguments.size(); i++) { + listRewrite.replace(arguments.get(i), newArguments[i], group); } - return true; - } - - private void refactorToImplementCallbacks(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, ImportRewrite importRewriter) { - rewriter.remove(node.getSuperclassType(), group); - importRewriter.removeImport(ORG_JUNIT_RULES_EXTERNAL_RESOURCE); - - ListRewrite listRewrite= rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); - addInterfaceCallback(listRewrite, ast, "BeforeEachCallback", group); - addInterfaceCallback(listRewrite, ast, "AfterEachCallback", group); - - importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); - importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); - } - - private void addInterfaceCallback(ListRewrite listRewrite, AST ast, String callbackName, TextEditGroup group) { - listRewrite.insertLast(ast.newSimpleType(ast.newName(callbackName)), group); - } - - private boolean isLifecycleMethod(MethodDeclaration method, String methodName) { - return method.getName().getIdentifier().equals(methodName); } - private void refactorMethod(ASTRewrite rewriter, AST ast, MethodDeclaration method, String newMethodName, TextEditGroup group, ImportRewrite importRewriter) { - rewriter.replace(method.getName(), ast.newSimpleName(newMethodName), group); - ensureExtensionContextParameter(rewriter, ast, method, group, importRewriter); - } - - private void ensureExtensionContextParameter(ASTRewrite rewriter, AST ast, MethodDeclaration method, TextEditGroup group, ImportRewrite importRewriter) { - boolean hasExtensionContext= method.parameters().stream() - .anyMatch(param -> param instanceof SingleVariableDeclaration - && ((SingleVariableDeclaration) param).getType().toString().equals("ExtensionContext")); - - if (!hasExtensionContext) { - SingleVariableDeclaration newParam= ast.newSingleVariableDeclaration(); - newParam.setType(ast.newSimpleType(ast.newName("ExtensionContext"))); - newParam.setName(ast.newSimpleName("context")); - - rewriter.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY).insertLast(newParam, group); - importRewriter.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT); + public void reorderParameters(MethodInvocation node, ASTRewrite rewriter, TextEditGroup group, Set oneparam, + Set twoparam) { + String methodName= node.getName().getIdentifier(); + List arguments= node.arguments(); + switch (arguments.size()) { + case 2: + if (oneparam.contains(methodName)) { + reorderParameters(rewriter, node, group, 1, 0); + } + break; + case 3: + if (twoparam.contains(methodName)) { + reorderParameters(rewriter, node, group, 1, 2, 0); // expected, actual, message + } + break; + case 4: + reorderParameters(rewriter, node, group, 1, 2, 3, 0); // expected, actual, delta, message + break; + default: + break; } } - private void adaptBeforeAfterCallsInTestClass(TypeDeclaration testClass, String fieldName, ASTRewrite rewriter, AST ast, TextEditGroup group) { - // Durchläuft alle Methoden in der Testklasse - testClass.accept(new ASTVisitor() { - @Override - public boolean visit(MethodInvocation node) { - // Überprüfen, ob der MethodInvocation das richtige Feld referenziert und entweder "before" oder "after" aufruft - if (node.getExpression() instanceof SimpleName) { - SimpleName expr = (SimpleName) node.getExpression(); - if (expr.getIdentifier().equals(fieldName)) { - String methodName = node.getName().getIdentifier(); + public abstract void rewrite(JUnitCleanUpFixCore useExplicitEncodingFixCore, T holder, + CompilationUnitRewrite cuRewrite, TextEditGroup group); - // Wenn die Methode "before" heißt, umbenennen in "beforeEach" - if ("before".equals(methodName)) { - rewriter.replace(node.getName(), ast.newSimpleName("beforeEach"), group); - } - // Wenn die Methode "after" heißt, umbenennen in "afterEach" - else if ("after".equals(methodName)) { - rewriter.replace(node.getName(), ast.newSimpleName("afterEach"), group); - } - } - } - return super.visit(node); + private void updateLifecycleMethods(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, TextEditGroup group, + ImportRewrite importRewrite) { + for (MethodDeclaration method : typeDecl.getMethods()) { + if (method.getName().getIdentifier().equals(METHOD_BEFORE)) { + removeThrowsThrowable(method, rewrite, group); + adaptSuperBeforeCalls(METHOD_BEFORE, METHOD_BEFORE_EACH, method, rewrite, ast, group); + rewrite.replace(method.getName(), ast.newSimpleName(METHOD_BEFORE_EACH), group); + ensureExtensionContextParameter(method, rewrite, ast, group, importRewrite); + } else if (method.getName().getIdentifier().equals(METHOD_AFTER)) { + adaptSuperBeforeCalls(METHOD_AFTER, METHOD_AFTER_EACH, method, rewrite, ast, group); + rewrite.replace(method.getName(), ast.newSimpleName(METHOD_AFTER_EACH), group); + ensureExtensionContextParameter(method, rewrite, ast, group, importRewrite); } - }); - } - - - public static Collection getUsedVariableNames(ASTNode node) { - CompilationUnit root= (CompilationUnit) node.getRoot(); - return new ScopeAnalyzer(root).getUsedVariableNames(node.getStartPosition(), node.getLength()); + } } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java index 20f29bf2..873b592d 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AfterClassJUnitPlugin.java @@ -66,7 +66,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder { TypeDeclaration node= holder.getTypeDeclaration(); - if (modifyExternalResourceClass(node, rewriter, ast, group, importRewriter)) { - importRewriter.removeImport(ORG_JUNIT_RULE); - } + modifyExternalResourceClass(node, rewriter, ast, group, importRewriter); }); } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java index 5716ce90..71a29685 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/IgnoreJUnitPlugin.java @@ -82,7 +82,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder { FieldDeclaration fieldDeclaration= mh.getFieldDeclaration(); for (Object fragment : fieldDeclaration.fragments()) { diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java index fd75f717..373ece45 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RunWithJUnitPlugin.java @@ -104,11 +104,11 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder Date: Sun, 27 Oct 2024 09:33:19 +0100 Subject: [PATCH 31/58] aggregate on AbstractTool --- .../corext/fix/helper/AbstractTool.java | 90 ++++++++++++++++++- .../fix/helper/RuleTestnameJUnitPlugin.java | 90 +------------------ 2 files changed, 90 insertions(+), 90 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index 30d4962c..a0fd877e 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -27,16 +27,22 @@ import org.eclipse.jdt.core.dom.ASTVisitor; import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.AnonymousClassDeclaration; +import org.eclipse.jdt.core.dom.Assignment; +import org.eclipse.jdt.core.dom.Block; import org.eclipse.jdt.core.dom.BodyDeclaration; import org.eclipse.jdt.core.dom.ClassInstanceCreation; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.Expression; +import org.eclipse.jdt.core.dom.ExpressionStatement; +import org.eclipse.jdt.core.dom.FieldAccess; import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.MarkerAnnotation; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.MethodInvocation; +import org.eclipse.jdt.core.dom.Modifier; import org.eclipse.jdt.core.dom.Name; +import org.eclipse.jdt.core.dom.PrimitiveType; import org.eclipse.jdt.core.dom.QualifiedType; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.SimpleType; @@ -402,7 +408,11 @@ public void migrateRuleToRegisterExtensionAndAdaptHierarchy(TypeDeclaration test protected void modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, ImportRewrite importRewriter) { ITypeBinding binding= node.resolveBinding(); - if (binding.isAnonymous() || !isExternalResource(binding) || !hasDefaultConstructorOrNoConstructor(node)) { + if ( +// binding.isAnonymous() || + !isExternalResource(binding) +// || !hasDefaultConstructorOrNoConstructor(node) + ) { return; } if (isDirectlyExtendingExternalResource(binding)) { @@ -557,4 +567,82 @@ private void updateLifecycleMethods(TypeDeclaration typeDecl, ASTRewrite rewrite } } } + + protected void refactorTestname(TextEditGroup group, ASTRewrite rewriter, AST ast, ImportRewrite importrewriter, FieldDeclaration node) { + rewriter.remove(node, group); + TypeDeclaration parentClass= (TypeDeclaration) node.getParent(); + addBeforeEachInitMethod(parentClass, rewriter, group); + addTestNameField(parentClass, rewriter, group); + for (MethodDeclaration method : parentClass.getMethods()) { + if (method.getBody() != null) { + method.getBody().accept(new ASTVisitor() { + @Override + public boolean visit(MethodInvocation node) { + if (node.getExpression() != null && node.getExpression().resolveTypeBinding() + .getQualifiedName().equals(ORG_JUNIT_RULES_TEST_NAME)) { + SimpleName newFieldAccess= ast.newSimpleName("testName"); + rewriter.replace(node, newFieldAccess, group); + } + return super.visit(node); + } + }); + } + } + importrewriter.addImport(ORG_JUNIT_JUPITER_API_TEST_INFO); + importrewriter.addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH); + importrewriter.removeImport(ORG_JUNIT_RULE); + importrewriter.removeImport(ORG_JUNIT_RULES_TEST_NAME); + } + + private void addTestNameField(TypeDeclaration parentClass, ASTRewrite rewriter, TextEditGroup group) { + AST ast= parentClass.getAST(); + VariableDeclarationFragment fragment= ast.newVariableDeclarationFragment(); + fragment.setName(ast.newSimpleName("testName")); + + FieldDeclaration fieldDeclaration= ast.newFieldDeclaration(fragment); + fieldDeclaration.setType(ast.newSimpleType(ast.newName("String"))); + fieldDeclaration.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PRIVATE_KEYWORD)); + + ListRewrite listRewrite= rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); + listRewrite.insertFirst(fieldDeclaration, group); + } + + private void addBeforeEachInitMethod(TypeDeclaration parentClass, ASTRewrite rewriter, TextEditGroup group) { + AST ast= parentClass.getAST(); + + MethodDeclaration methodDeclaration= ast.newMethodDeclaration(); + methodDeclaration.setName(ast.newSimpleName("init")); + methodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID)); + + SingleVariableDeclaration param= ast.newSingleVariableDeclaration(); + param.setType(ast.newSimpleType(ast.newName("TestInfo"))); + param.setName(ast.newSimpleName("testInfo")); + methodDeclaration.parameters().add(param); + + Block body= ast.newBlock(); + Assignment assignment= ast.newAssignment(); + FieldAccess fieldAccess= ast.newFieldAccess(); + fieldAccess.setExpression(ast.newThisExpression()); + fieldAccess.setName(ast.newSimpleName("testName")); + assignment.setLeftHandSide(fieldAccess); + + MethodInvocation methodInvocation= ast.newMethodInvocation(); + methodInvocation.setExpression(ast.newSimpleName("testInfo")); + methodInvocation.setName(ast.newSimpleName("getDisplayName")); + + assignment.setRightHandSide(methodInvocation); + + ExpressionStatement statement= ast.newExpressionStatement(assignment); + body.statements().add(statement); + methodDeclaration.setBody(body); + + MarkerAnnotation beforeEachAnnotation= ast.newMarkerAnnotation(); + beforeEachAnnotation.setTypeName(ast.newName("BeforeEach")); + + ListRewrite listRewrite= rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); + listRewrite.insertFirst(methodDeclaration, group); + + listRewrite= rewriter.getListRewrite(methodDeclaration, MethodDeclaration.MODIFIERS2_PROPERTY); + listRewrite.insertFirst(beforeEachAnnotation, group); + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java index 85095ba8..6c9cea87 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java @@ -18,26 +18,12 @@ import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; -import org.eclipse.jdt.core.dom.ASTVisitor; -import org.eclipse.jdt.core.dom.Assignment; -import org.eclipse.jdt.core.dom.Block; import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jdt.core.dom.ExpressionStatement; -import org.eclipse.jdt.core.dom.FieldAccess; import org.eclipse.jdt.core.dom.FieldDeclaration; import org.eclipse.jdt.core.dom.ITypeBinding; -import org.eclipse.jdt.core.dom.MarkerAnnotation; -import org.eclipse.jdt.core.dom.MethodDeclaration; -import org.eclipse.jdt.core.dom.MethodInvocation; -import org.eclipse.jdt.core.dom.Modifier; -import org.eclipse.jdt.core.dom.PrimitiveType; -import org.eclipse.jdt.core.dom.SimpleName; -import org.eclipse.jdt.core.dom.SingleVariableDeclaration; -import org.eclipse.jdt.core.dom.TypeDeclaration; import org.eclipse.jdt.core.dom.VariableDeclarationFragment; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; -import org.eclipse.jdt.core.dom.rewrite.ListRewrite; import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; import org.eclipse.text.edits.TextEditGroup; @@ -83,84 +69,10 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh= entry.getValue(); FieldDeclaration node= mh.getFieldDeclaration(); - rewriter.remove(node, group); - TypeDeclaration parentClass= (TypeDeclaration) node.getParent(); - addBeforeEachInitMethod(parentClass, rewriter, group); - addTestNameField(parentClass, rewriter, group); - for (MethodDeclaration method : parentClass.getMethods()) { - if (method.getBody() != null) { - method.getBody().accept(new ASTVisitor() { - @Override - public boolean visit(MethodInvocation node) { - if (node.getExpression() != null && node.getExpression().resolveTypeBinding() - .getQualifiedName().equals("org.junit.rules.TestName")) { - SimpleName newFieldAccess= ast.newSimpleName("testName"); - rewriter.replace(node, newFieldAccess, group); - } - return super.visit(node); - } - }); - } - } - importrewriter.addImport(ORG_JUNIT_JUPITER_API_TEST_INFO); - importrewriter.addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH); - importrewriter.removeImport(ORG_JUNIT_RULE); - importrewriter.removeImport(ORG_JUNIT_RULES_TEST_NAME); + refactorTestname(group, rewriter, ast, importrewriter, node); } } - private void addTestNameField(TypeDeclaration parentClass, ASTRewrite rewriter, TextEditGroup group) { - AST ast= parentClass.getAST(); - VariableDeclarationFragment fragment= ast.newVariableDeclarationFragment(); - fragment.setName(ast.newSimpleName("testName")); - - FieldDeclaration fieldDeclaration= ast.newFieldDeclaration(fragment); - fieldDeclaration.setType(ast.newSimpleType(ast.newName("String"))); - fieldDeclaration.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PRIVATE_KEYWORD)); - - ListRewrite listRewrite= rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); - listRewrite.insertFirst(fieldDeclaration, group); - } - - private void addBeforeEachInitMethod(TypeDeclaration parentClass, ASTRewrite rewriter, TextEditGroup group) { - AST ast= parentClass.getAST(); - - MethodDeclaration methodDeclaration= ast.newMethodDeclaration(); - methodDeclaration.setName(ast.newSimpleName("init")); - methodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID)); - - SingleVariableDeclaration param= ast.newSingleVariableDeclaration(); - param.setType(ast.newSimpleType(ast.newName("TestInfo"))); - param.setName(ast.newSimpleName("testInfo")); - methodDeclaration.parameters().add(param); - - Block body= ast.newBlock(); - Assignment assignment= ast.newAssignment(); - FieldAccess fieldAccess= ast.newFieldAccess(); - fieldAccess.setExpression(ast.newThisExpression()); - fieldAccess.setName(ast.newSimpleName("testName")); - assignment.setLeftHandSide(fieldAccess); - - MethodInvocation methodInvocation= ast.newMethodInvocation(); - methodInvocation.setExpression(ast.newSimpleName("testInfo")); - methodInvocation.setName(ast.newSimpleName("getDisplayName")); - - assignment.setRightHandSide(methodInvocation); - - ExpressionStatement statement= ast.newExpressionStatement(assignment); - body.statements().add(statement); - methodDeclaration.setBody(body); - - MarkerAnnotation beforeEachAnnotation= ast.newMarkerAnnotation(); - beforeEachAnnotation.setTypeName(ast.newName("BeforeEach")); - - ListRewrite listRewrite= rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); - listRewrite.insertFirst(methodDeclaration, group); - - listRewrite= rewriter.getListRewrite(methodDeclaration, MethodDeclaration.MODIFIERS2_PROPERTY); - listRewrite.insertFirst(beforeEachAnnotation, group); - } - @Override public String getPreview(boolean afterRefactoring) { if (afterRefactoring) { From a13eb8553181bbf93678eeedd238d1429f2bd50e Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 27 Oct 2024 14:39:29 +0100 Subject: [PATCH 32/58] simplify junit test setup --- .../corext/fix/helper/AbstractTool.java | 77 +++++++++++++++++++ .../fix/helper/RuleTestnameJUnitPlugin.java | 3 +- .../Java8/JUnitMigrationCleanUpTest.java} | 58 +++++--------- .../quickfix/rules/AbstractEclipseJava.java | 12 +++ 4 files changed, 111 insertions(+), 39 deletions(-) rename sandbox_junit_cleanup_test/src/org/{sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java => eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java} (90%) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index a0fd877e..fa7e6c30 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -13,6 +13,7 @@ *******************************************************************************/ package org.sandbox.jdt.internal.corext.fix.helper; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Set; @@ -20,6 +21,7 @@ import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.ITypeHierarchy; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; @@ -645,4 +647,79 @@ private void addBeforeEachInitMethod(TypeDeclaration parentClass, ASTRewrite rew listRewrite= rewriter.getListRewrite(methodDeclaration, MethodDeclaration.MODIFIERS2_PROPERTY); listRewrite.insertFirst(beforeEachAnnotation, group); } + + + protected void refactorTestnameInHierarchy(TextEditGroup group, ASTRewrite rewriter, AST ast, ImportRewrite importRewriter, FieldDeclaration node) { + rewriter.remove(node, group); + TypeDeclaration parentClass = (TypeDeclaration) node.getParent(); + + // Erzeugt das neue TestName-Feld und die BeforeEach-Methode in der übergebenen Klasse + addBeforeEachInitMethod(parentClass, rewriter, group); + addTestNameField(parentClass, rewriter, group); + + // Refactor Testname in der gesamten Klassenhierarchie + refactorTestnameInClassAndSubclasses(parentClass, rewriter, ast, group); + + // Imports verwalten + importRewriter.addImport(ORG_JUNIT_JUPITER_API_TEST_INFO); + importRewriter.addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH); + importRewriter.removeImport(ORG_JUNIT_RULE); + importRewriter.removeImport(ORG_JUNIT_RULES_TEST_NAME); + } + + private void refactorTestnameInClassAndSubclasses(TypeDeclaration currentClass, ASTRewrite rewriter, AST ast, TextEditGroup group) { + for (MethodDeclaration method : currentClass.getMethods()) { + if (method.getBody() != null) { + method.getBody().accept(new ASTVisitor() { + @Override + public boolean visit(MethodInvocation node) { + if (node.getExpression() != null && node.getExpression().resolveTypeBinding() + .getQualifiedName().equals(ORG_JUNIT_RULES_TEST_NAME)) { + SimpleName newFieldAccess = ast.newSimpleName("testName"); + rewriter.replace(node, newFieldAccess, group); + } + return super.visit(node); + } + }); + } + } + + // Durchläuft alle abgeleiteten Klassen + ITypeBinding currentTypeBinding = currentClass.resolveBinding(); + if (currentTypeBinding != null) { + for (ITypeBinding subClassBinding : getAllSubclasses(currentTypeBinding)) { + ASTNode subclassNode = rewriter.getAST().newTypeDeclaration(); // Beispielweise Erzeugung + if (subclassNode instanceof TypeDeclaration) { + TypeDeclaration subclassDeclaration = (TypeDeclaration) subclassNode; + refactorTestnameInClassAndSubclasses(subclassDeclaration, rewriter, ast, group); + } + } + } + } + + private List getAllSubclasses(ITypeBinding typeBinding) { + List subclasses = new ArrayList<>(); + + try { + // Erzeuge den entsprechenden IType des gegebenen ITypeBindings + IType type = (IType) typeBinding.getJavaElement(); + + // Erzeuge die Typ-Hierarchie für den übergebenen Typ innerhalb des Projekts + ITypeHierarchy typeHierarchy = type.newTypeHierarchy(null); // null verwendet das gesamte Projekt + + // Durchlaufe alle direkten und indirekten Subtypen und füge sie der Liste hinzu + for (IType subtype : typeHierarchy.getAllSubtypes(type)) { + ITypeBinding subtypeBinding = (ITypeBinding) subtype.getAdapter(ITypeBinding.class); + if (subtypeBinding != null) { + subclasses.add(subtypeBinding); + } + } + } catch (JavaModelException e) { + e.printStackTrace(); + } + + return subclasses; + } + + } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java index 6c9cea87..0ddd006c 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java @@ -69,7 +69,8 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh= entry.getValue(); FieldDeclaration node= mh.getFieldDeclaration(); - refactorTestname(group, rewriter, ast, importrewriter, node); +// refactorTestname(group, rewriter, ast, importrewriter, node); + refactorTestnameInHierarchy(group, rewriter, ast, importrewriter, node); } } diff --git a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java similarity index 90% rename from sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java rename to sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java index 3e0a3d52..40a735ae 100644 --- a/sandbox_junit_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java @@ -11,17 +11,12 @@ * Contributors: * Carsten Hammer initial implementation *******************************************************************************/ -package org.sandbox.jdt.ui.tests.quickfix; +package org.eclipse.jdt.ui.tests.quickfix.Java8; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; -import org.eclipse.jdt.core.JavaCore; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -32,34 +27,21 @@ import org.sandbox.jdt.ui.tests.quickfix.rules.EclipseJava8; -public class Java8CleanUpTest { +public class JUnitMigrationCleanUpTest { @RegisterExtension - AbstractEclipseJava context= new EclipseJava8(); + AbstractEclipseJava context4junit4= new EclipseJava8(); @RegisterExtension - AbstractEclipseJava context2= new EclipseJava8(); + AbstractEclipseJava context4junit5= new EclipseJava8(); - public static final String JUNIT_CONTAINER_ID= "org.eclipse.jdt.junit.JUNIT_CONTAINER"; //$NON-NLS-1$ - public final static IPath JUNIT4_CONTAINER_PATH= new Path(JUNIT_CONTAINER_ID).append("4"); //$NON-NLS-1$ - public final static IPath JUNIT5_CONTAINER_PATH= new Path(JUNIT_CONTAINER_ID).append("5"); //$NON-NLS-1$ - - IPackageFragmentRoot fRoot; - IPackageFragmentRoot fRoot2; + IPackageFragmentRoot fRootJUnit4; + IPackageFragmentRoot fRootJUnit5; @BeforeEach public void setup() throws CoreException { - IJavaProject fProject = context.getJavaProject(); - fProject.setRawClasspath(context.getDefaultClasspath(), null); - IClasspathEntry cpe= JavaCore.newContainerEntry(JUNIT4_CONTAINER_PATH); - AbstractEclipseJava.addToClasspath(fProject, cpe); - fRoot = AbstractEclipseJava.addSourceContainer(fProject, "src"); - - IJavaProject fProject2 = context.getJavaProject(); - fProject2.setRawClasspath(context.getDefaultClasspath(), null); - IClasspathEntry cpe2= JavaCore.newContainerEntry(JUNIT5_CONTAINER_PATH); - AbstractEclipseJava.addToClasspath(fProject2, cpe2); - fRoot2 = AbstractEclipseJava.addSourceContainer(fProject2, "src"); + fRootJUnit4= context4junit4.createClasspathForJUnit("4"); + fRootJUnit5= context4junit5.createClasspathForJUnit("5"); } enum JUnitCleanupCases{ @@ -787,10 +769,10 @@ public void test3() throws IOException{ @ParameterizedTest @EnumSource(JUnitCleanupCases.class) public void testJUnitCleanupParametrized(JUnitCleanupCases test) throws CoreException { - IPackageFragment pack= fRoot.createPackageFragment("test", true, null); + IPackageFragment pack= fRootJUnit4.createPackageFragment("test", true, null); ICompilationUnit cu= pack.createCompilationUnit("MyTest.java", test.given, false, null); //$NON-NLS-1$ - context.enable(MYCleanUpConstants.JUNIT_CLEANUP); - context.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu}, new String[] {test.expected}, null); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context4junit4.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu}, new String[] {test.expected}, null); } enum NOJUnitCleanupCases { @@ -824,15 +806,15 @@ public void test3() { @ParameterizedTest @EnumSource(NOJUnitCleanupCases.class) public void testJUnitCleanupdonttouch(NOJUnitCleanupCases test) throws CoreException { - IPackageFragment pack= fRoot2.createPackageFragment("test", true, null); + IPackageFragment pack= fRootJUnit5.createPackageFragment("test", true, null); ICompilationUnit cu= pack.createCompilationUnit("MyTest.java",test.given,false, null); //$NON-NLS-1$ - context2.enable(MYCleanUpConstants.JUNIT_CLEANUP); - context2.assertRefactoringHasNoChange(new ICompilationUnit[] { cu }); + context4junit5.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context4junit5.assertRefactoringHasNoChange(new ICompilationUnit[] { cu }); } @Test public void testJUnitCleanupTwoFiles() throws CoreException { - IPackageFragment pack= fRoot.createPackageFragment("test", true, null); + IPackageFragment pack= fRootJUnit4.createPackageFragment("test", true, null); ICompilationUnit cu= pack.createCompilationUnit("MyTest.java", """ package test; @@ -869,8 +851,8 @@ protected void after() { } } """, false, null); //$NON-NLS-1$ - context.enable(MYCleanUpConstants.JUNIT_CLEANUP); - context.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu,cu2}, new String[] { + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context4junit4.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu,cu2}, new String[] { """ package test; import org.junit.jupiter.api.Test; @@ -913,7 +895,7 @@ protected void afterEach(ExtensionContext context) { @Test public void testJUnitCleanupThreeFiles() throws CoreException { - IPackageFragment pack= fRoot.createPackageFragment("test", true, null); + IPackageFragment pack= fRootJUnit4.createPackageFragment("test", true, null); ICompilationUnit cu= pack.createCompilationUnit("MyTest.java", """ package test; @@ -965,8 +947,8 @@ protected void after() { } } """, false, null); //$NON-NLS-1$ - context.enable(MYCleanUpConstants.JUNIT_CLEANUP); - context.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu,cu2,cu3}, new String[] { + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context4junit4.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu,cu2,cu3}, new String[] { """ package test; import org.junit.jupiter.api.Test; diff --git a/sandbox_test_commons/src/org/sandbox/jdt/ui/tests/quickfix/rules/AbstractEclipseJava.java b/sandbox_test_commons/src/org/sandbox/jdt/ui/tests/quickfix/rules/AbstractEclipseJava.java index eeff1a1d..d7081a22 100644 --- a/sandbox_test_commons/src/org/sandbox/jdt/ui/tests/quickfix/rules/AbstractEclipseJava.java +++ b/sandbox_test_commons/src/org/sandbox/jdt/ui/tests/quickfix/rules/AbstractEclipseJava.java @@ -75,6 +75,8 @@ public class AbstractEclipseJava implements AfterEachCallback, BeforeEachCallback { + public static final String JUNIT_CONTAINER_ID= "org.eclipse.jdt.junit.JUNIT_CONTAINER"; //$NON-NLS-1$ + private final String testresources_stubs; private final String compliance; private static final String TEST_SETUP_PROJECT= "TestSetupProject"; //$NON-NLS-1$ @@ -104,6 +106,16 @@ public void beforeEach(ExtensionContext context) throws CoreException { fProfile.getID()); disableAll(); } + + public IPackageFragmentRoot createClasspathForJUnit(String tail) throws JavaModelException, CoreException { + IPath junit4ContainerPath= new Path(JUNIT_CONTAINER_ID).append(tail); + IJavaProject fProject = getJavaProject(); + fProject.setRawClasspath(getDefaultClasspath(), null); + IClasspathEntry cpe= JavaCore.newContainerEntry(junit4ContainerPath); + AbstractEclipseJava.addToClasspath(fProject, cpe); + IPackageFragmentRoot sourceContainer= AbstractEclipseJava.addSourceContainer(fProject, "src"); + return sourceContainer; + } @Override public void afterEach(ExtensionContext context) throws CoreException { From c98aee3ec148a190f32ecf870eeaff1a36e8462e Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 27 Oct 2024 15:25:34 +0100 Subject: [PATCH 33/58] fix spotbugs error --- .../corext/fix/helper/AbstractTool.java | 119 ++++++++++-------- .../fix/helper/RuleTestnameJUnitPlugin.java | 3 +- 2 files changed, 67 insertions(+), 55 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index fa7e6c30..35de3692 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -70,6 +70,7 @@ */ public abstract class AbstractTool { + private static final String TEST_NAME= "testName"; private static final String METHOD_AFTER_EACH= "afterEach"; private static final String METHOD_BEFORE_EACH= "beforeEach"; private static final String ORG_JUNIT_JUPITER_API_EXTENSION_EXTENSION_CONTEXT= "org.junit.jupiter.api.extension.ExtensionContext"; @@ -582,7 +583,7 @@ protected void refactorTestname(TextEditGroup group, ASTRewrite rewriter, AST as public boolean visit(MethodInvocation node) { if (node.getExpression() != null && node.getExpression().resolveTypeBinding() .getQualifiedName().equals(ORG_JUNIT_RULES_TEST_NAME)) { - SimpleName newFieldAccess= ast.newSimpleName("testName"); + SimpleName newFieldAccess= ast.newSimpleName(TEST_NAME); rewriter.replace(node, newFieldAccess, group); } return super.visit(node); @@ -599,7 +600,7 @@ public boolean visit(MethodInvocation node) { private void addTestNameField(TypeDeclaration parentClass, ASTRewrite rewriter, TextEditGroup group) { AST ast= parentClass.getAST(); VariableDeclarationFragment fragment= ast.newVariableDeclarationFragment(); - fragment.setName(ast.newSimpleName("testName")); + fragment.setName(ast.newSimpleName(TEST_NAME)); FieldDeclaration fieldDeclaration= ast.newFieldDeclaration(fragment); fieldDeclaration.setType(ast.newSimpleType(ast.newName("String"))); @@ -625,7 +626,7 @@ private void addBeforeEachInitMethod(TypeDeclaration parentClass, ASTRewrite rew Assignment assignment= ast.newAssignment(); FieldAccess fieldAccess= ast.newFieldAccess(); fieldAccess.setExpression(ast.newThisExpression()); - fieldAccess.setName(ast.newSimpleName("testName")); + fieldAccess.setName(ast.newSimpleName(TEST_NAME)); assignment.setLeftHandSide(fieldAccess); MethodInvocation methodInvocation= ast.newMethodInvocation(); @@ -648,55 +649,6 @@ private void addBeforeEachInitMethod(TypeDeclaration parentClass, ASTRewrite rew listRewrite.insertFirst(beforeEachAnnotation, group); } - - protected void refactorTestnameInHierarchy(TextEditGroup group, ASTRewrite rewriter, AST ast, ImportRewrite importRewriter, FieldDeclaration node) { - rewriter.remove(node, group); - TypeDeclaration parentClass = (TypeDeclaration) node.getParent(); - - // Erzeugt das neue TestName-Feld und die BeforeEach-Methode in der übergebenen Klasse - addBeforeEachInitMethod(parentClass, rewriter, group); - addTestNameField(parentClass, rewriter, group); - - // Refactor Testname in der gesamten Klassenhierarchie - refactorTestnameInClassAndSubclasses(parentClass, rewriter, ast, group); - - // Imports verwalten - importRewriter.addImport(ORG_JUNIT_JUPITER_API_TEST_INFO); - importRewriter.addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH); - importRewriter.removeImport(ORG_JUNIT_RULE); - importRewriter.removeImport(ORG_JUNIT_RULES_TEST_NAME); - } - - private void refactorTestnameInClassAndSubclasses(TypeDeclaration currentClass, ASTRewrite rewriter, AST ast, TextEditGroup group) { - for (MethodDeclaration method : currentClass.getMethods()) { - if (method.getBody() != null) { - method.getBody().accept(new ASTVisitor() { - @Override - public boolean visit(MethodInvocation node) { - if (node.getExpression() != null && node.getExpression().resolveTypeBinding() - .getQualifiedName().equals(ORG_JUNIT_RULES_TEST_NAME)) { - SimpleName newFieldAccess = ast.newSimpleName("testName"); - rewriter.replace(node, newFieldAccess, group); - } - return super.visit(node); - } - }); - } - } - - // Durchläuft alle abgeleiteten Klassen - ITypeBinding currentTypeBinding = currentClass.resolveBinding(); - if (currentTypeBinding != null) { - for (ITypeBinding subClassBinding : getAllSubclasses(currentTypeBinding)) { - ASTNode subclassNode = rewriter.getAST().newTypeDeclaration(); // Beispielweise Erzeugung - if (subclassNode instanceof TypeDeclaration) { - TypeDeclaration subclassDeclaration = (TypeDeclaration) subclassNode; - refactorTestnameInClassAndSubclasses(subclassDeclaration, rewriter, ast, group); - } - } - } - } - private List getAllSubclasses(ITypeBinding typeBinding) { List subclasses = new ArrayList<>(); @@ -717,9 +669,70 @@ private List getAllSubclasses(ITypeBinding typeBinding) { } catch (JavaModelException e) { e.printStackTrace(); } - return subclasses; } + + + protected void refactorTestnameInClassAndSubclasses(TextEditGroup group, ASTRewrite rewriter, AST ast, + ImportRewrite importRewrite, FieldDeclaration node) { + // Refactoring in der aktuellen Klasse + refactorTestnameInClass(group, rewriter, ast, importRewrite, node); + + // Ermittlung aller abgeleiteten Klassen + ITypeBinding typeBinding = ((TypeDeclaration) node.getParent()).resolveBinding(); + List subclasses = getAllSubclasses(typeBinding); + + for (ITypeBinding subclassBinding : subclasses) { + IType subclassType = (IType) subclassBinding.getJavaElement(); + + // Hole die AST-Darstellung der Subklasse (zum Beispiel durch ASTParser) + CompilationUnit subclassUnit = parseCompilationUnit(subclassType.getCompilationUnit()); + subclassUnit.accept(new ASTVisitor() { + @Override + public boolean visit(TypeDeclaration subclassNode) { + if (subclassNode.resolveBinding().equals(subclassBinding)) { + refactorTestnameInClass(group, rewriter, subclassNode.getAST(), importRewrite, node); + } + return false; // Nur das passende Typ-Deklarations-Element verarbeiten + } + }); + } + } + + protected void refactorTestnameInClass(TextEditGroup group, ASTRewrite rewriter, AST ast, + ImportRewrite importRewrite, FieldDeclaration node) { + // Entferne das alte TestName-Feld + rewriter.remove(node, group); + + // Füge ein neues TestName-Feld hinzu und erzeuge eine BeforeEach-Init-Methode + TypeDeclaration parentClass = (TypeDeclaration) node.getParent(); + addBeforeEachInitMethod(parentClass, rewriter, group); + addTestNameField(parentClass, rewriter, group); + // Ersetze alle Zugriffe auf das alte TestName-Feld durch das neue Feld "testName" + for (MethodDeclaration method : parentClass.getMethods()) { + if (method.getBody() != null) { + method.getBody().accept(new ASTVisitor() { + @Override + public boolean visit(MethodInvocation node) { + // Prüfen, ob der Aufruf auf das alte TestName-Feld verweist + if (node.getExpression() != null + && ORG_JUNIT_RULES_TEST_NAME.equals(node.getExpression().resolveTypeBinding().getQualifiedName())) { + // Ersetze den Zugriff durch "testName" + SimpleName newFieldAccess = ast.newSimpleName(TEST_NAME); + rewriter.replace(node, newFieldAccess, group); + } + return super.visit(node); + } + }); + } + } + + // Importanpassungen für JUnit 5 + importRewrite.addImport(ORG_JUNIT_JUPITER_API_TEST_INFO); + importRewrite.addImport(ORG_JUNIT_JUPITER_API_BEFORE_EACH); + importRewrite.removeImport(ORG_JUNIT_RULE); + importRewrite.removeImport(ORG_JUNIT_RULES_TEST_NAME); + } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java index 0ddd006c..3b5358d0 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleTestnameJUnitPlugin.java @@ -69,8 +69,7 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh= entry.getValue(); FieldDeclaration node= mh.getFieldDeclaration(); -// refactorTestname(group, rewriter, ast, importrewriter, node); - refactorTestnameInHierarchy(group, rewriter, ast, importrewriter, node); + refactorTestnameInClassAndSubclasses(group, rewriter, ast, importrewriter, node); } } From 6d0cc665604ef53ca3aa53e4f1b8ba0480267ec3 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 27 Oct 2024 18:08:14 +0100 Subject: [PATCH 34/58] refactor to use public instead of protected for before and after --- .../corext/fix/helper/AbstractTool.java | 234 ++++++++++-------- .../Java8/JUnitMigrationCleanUpTest.java | 32 ++- 2 files changed, 158 insertions(+), 108 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index 35de3692..51a9f668 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -143,16 +143,17 @@ private void adaptBeforeAfterCallsInTestClass(TypeDeclaration testClass, String testClass.accept(new ASTVisitor() { @Override public boolean visit(MethodInvocation node) { - if (node.getExpression() instanceof SimpleName) { - SimpleName expr= (SimpleName) node.getExpression(); - if (expr.getIdentifier().equals(fieldName)) { - String methodName= node.getName().getIdentifier(); - if (METHOD_BEFORE.equals(methodName)) { - rewriter.replace(node.getName(), ast.newSimpleName(METHOD_BEFORE_EACH), group); - } - else if (METHOD_AFTER.equals(methodName)) { - rewriter.replace(node.getName(), ast.newSimpleName(METHOD_AFTER_EACH), group); - } + if (node.getExpression() instanceof SimpleName + && ((SimpleName) node.getExpression()).getIdentifier().equals(fieldName)) { + String methodName= node.getName().getIdentifier(); + + if (METHOD_BEFORE.equals(methodName)) { + // Ersetze "before()" durch "beforeEach(context)" + rewriter.replace(node.getName(), ast.newSimpleName(METHOD_BEFORE_EACH), group); + addContextParameterIfMissing(node, rewriter, ast, group); + } else if (METHOD_AFTER.equals(methodName)) { + // Ersetze "after()" durch "afterEach()" + rewriter.replace(node.getName(), ast.newSimpleName(METHOD_AFTER_EACH), group); } } return super.visit(node); @@ -160,26 +161,97 @@ else if (METHOD_AFTER.equals(methodName)) { }); } - private void adaptExternalResourceHierarchy(ITypeBinding typeBinding, ASTRewrite rewrite, AST ast, - ImportRewrite importRewrite, TextEditGroup group) { - if (typeBinding == null) { + private void addContextParameterIfMissing(MethodInvocation node, ASTRewrite rewriter, AST ast, + TextEditGroup group) { + if (node.arguments().isEmpty()) { + ListRewrite argsRewrite= rewriter.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); + argsRewrite.insertFirst(ast.newSimpleName("context"), group); + } + } + + protected void modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, + ImportRewrite importRewriter) { + ITypeBinding binding= node.resolveBinding(); + if (binding == null || !isExternalResource(binding)) { return; } + if (isDirectlyExtendingExternalResource(binding)) { + refactorToImplementCallbacks(node, rewriter, ast, group, importRewriter); + } + for (MethodDeclaration method : node.getMethods()) { + if (isLifecycleMethod(method, METHOD_BEFORE) || isLifecycleMethod(method, METHOD_AFTER)) { + setPublicVisibilityIfProtected(method, rewriter, ast, group); + String replacement= METHOD_BEFORE.equals(method.getName().getIdentifier()) ? METHOD_BEFORE_EACH + : METHOD_AFTER_EACH; + adaptSuperBeforeCalls(method.getName().getIdentifier(), replacement, method, rewriter, ast, group); + if (METHOD_BEFORE.equals(method.getName().getIdentifier())) { + removeThrowsThrowable(method, rewriter, group); + } + refactorMethod(rewriter, ast, method, replacement, group, importRewriter); + } + } + importRewriter.removeImport(ORG_JUNIT_RULE); + } + + private void updateLifecycleMethods(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, TextEditGroup group, + ImportRewrite importRewrite) { + for (MethodDeclaration method : typeDecl.getMethods()) { + String methodName= method.getName().getIdentifier(); + if (METHOD_BEFORE.equals(methodName) || METHOD_AFTER.equals(methodName)) { + setPublicVisibilityIfProtected(method, rewrite, ast, group); + String replacement= METHOD_BEFORE.equals(methodName) ? METHOD_BEFORE_EACH : METHOD_AFTER_EACH; + adaptSuperBeforeCalls(methodName, replacement, method, rewrite, ast, group); + if (METHOD_BEFORE.equals(methodName)) { + removeThrowsThrowable(method, rewrite, group); + } + rewrite.replace(method.getName(), ast.newSimpleName(replacement), group); + ensureExtensionContextParameter(method, rewrite, ast, group, importRewrite); + } + } + } + + private void setPublicVisibilityIfProtected(MethodDeclaration method, ASTRewrite rewrite, AST ast, + TextEditGroup group) { + // Durchlaufe die Modifiers und suche nach einem geschützten (protected) + // Modifier + for (Object modifier : method.modifiers()) { + if (modifier instanceof Modifier) { + Modifier mod= (Modifier) modifier; + if (mod.isProtected()) { + ListRewrite modifierRewrite= rewrite.getListRewrite(method, MethodDeclaration.MODIFIERS2_PROPERTY); + Modifier publicModifier= ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD); + modifierRewrite.replace(mod, publicModifier, group); + break; // Stoppe die Schleife, sobald der Modifier ersetzt wurde + } + } + } + } + + private void adaptExternalResourceHierarchy(ITypeBinding typeBinding, ASTRewrite rewrite, AST ast, + ImportRewrite importRewrite, TextEditGroup group) { while (typeBinding != null && isExternalResource(typeBinding)) { - IType type= (IType) typeBinding.getJavaElement(); - TypeDeclaration typeDecl= findTypeDeclaration(typeBinding.getJavaElement().getJavaProject(), - type.getElementName()); + TypeDeclaration typeDecl= findTypeDeclarationInProject(typeBinding); if (typeDecl != null) { - removeSuperclassType(typeDecl, rewrite, group); - addBeforeAndAfterEachCallbacks(typeDecl, rewrite, ast, importRewrite, group); - updateLifecycleMethods(typeDecl, rewrite, ast, group, importRewrite); - importRewrite.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); - importRewrite.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); + adaptTypeDeclaration(typeDecl, rewrite, ast, importRewrite, group); } typeBinding= typeBinding.getSuperclass(); } } + private TypeDeclaration findTypeDeclarationInProject(ITypeBinding typeBinding) { + IType type= (IType) typeBinding.getJavaElement(); + return type != null ? findTypeDeclaration(type.getJavaProject(), type.getElementName()) : null; + } + + private void adaptTypeDeclaration(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, + ImportRewrite importRewrite, TextEditGroup group) { + removeSuperclassType(typeDecl, rewrite, group); + addBeforeAndAfterEachCallbacks(typeDecl, rewrite, ast, importRewrite, group); + updateLifecycleMethods(typeDecl, rewrite, ast, group, importRewrite); + importRewrite.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK); + importRewrite.addImport(ORG_JUNIT_JUPITER_API_EXTENSION_AFTER_EACH_CALLBACK); + } + private void adaptSuperBeforeCalls(String vorher, String nachher, MethodDeclaration method, ASTRewrite rewriter, AST ast, TextEditGroup group) { method.accept(new ASTVisitor() { @@ -187,17 +259,21 @@ private void adaptSuperBeforeCalls(String vorher, String nachher, MethodDeclarat public boolean visit(SuperMethodInvocation node) { if (vorher.equals(node.getName().getIdentifier())) { rewriter.replace(node.getName(), ast.newSimpleName(nachher), group); - ListRewrite argumentsRewrite= rewriter.getListRewrite(node, - SuperMethodInvocation.ARGUMENTS_PROPERTY); - if (node.arguments().isEmpty()) { - argumentsRewrite.insertFirst(ast.newSimpleName(VARIABLE_NAME_CONTEXT), group); - } + addContextArgumentIfAbsent(node, rewriter, ast, group); } return super.visit(node); } }); } + private void addContextArgumentIfAbsent(SuperMethodInvocation node, ASTRewrite rewriter, AST ast, + TextEditGroup group) { + if (node.arguments().isEmpty()) { + rewriter.getListRewrite(node, SuperMethodInvocation.ARGUMENTS_PROPERTY) + .insertFirst(ast.newSimpleName(VARIABLE_NAME_CONTEXT), group); + } + } + private void addBeforeAndAfterEachCallbacks(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, TextEditGroup group) { ListRewrite listRewrite= rewrite.getListRewrite(typeDecl, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); @@ -408,32 +484,6 @@ public void migrateRuleToRegisterExtensionAndAdaptHierarchy(TypeDeclaration test } } - protected void modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, - TextEditGroup group, ImportRewrite importRewriter) { - ITypeBinding binding= node.resolveBinding(); - if ( -// binding.isAnonymous() || - !isExternalResource(binding) -// || !hasDefaultConstructorOrNoConstructor(node) - ) { - return; - } - if (isDirectlyExtendingExternalResource(binding)) { - refactorToImplementCallbacks(node, rewriter, ast, group, importRewriter); - } - for (MethodDeclaration method : node.getMethods()) { - if (isLifecycleMethod(method, METHOD_BEFORE)) { - adaptSuperBeforeCalls(METHOD_BEFORE, METHOD_BEFORE_EACH, method, rewriter, ast, group); - removeThrowsThrowable(method, rewriter, group); - refactorMethod(rewriter, ast, method, METHOD_BEFORE_EACH, group, importRewriter); - } else if (isLifecycleMethod(method, METHOD_AFTER)) { - adaptSuperBeforeCalls(METHOD_AFTER, METHOD_AFTER_EACH, method, rewriter, ast, group); - refactorMethod(rewriter, ast, method, METHOD_AFTER_EACH, group, importRewriter); - } - } - importRewriter.removeImport(ORG_JUNIT_RULE); - } - private CompilationUnit parseCompilationUnit(ICompilationUnit iCompilationUnit) { ASTParser parser= ASTParser.newParser(AST.getJLSLatest()); parser.setKind(ASTParser.K_COMPILATION_UNIT); @@ -555,23 +605,8 @@ public void reorderParameters(MethodInvocation node, ASTRewrite rewriter, TextEd public abstract void rewrite(JUnitCleanUpFixCore useExplicitEncodingFixCore, T holder, CompilationUnitRewrite cuRewrite, TextEditGroup group); - private void updateLifecycleMethods(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, TextEditGroup group, - ImportRewrite importRewrite) { - for (MethodDeclaration method : typeDecl.getMethods()) { - if (method.getName().getIdentifier().equals(METHOD_BEFORE)) { - removeThrowsThrowable(method, rewrite, group); - adaptSuperBeforeCalls(METHOD_BEFORE, METHOD_BEFORE_EACH, method, rewrite, ast, group); - rewrite.replace(method.getName(), ast.newSimpleName(METHOD_BEFORE_EACH), group); - ensureExtensionContextParameter(method, rewrite, ast, group, importRewrite); - } else if (method.getName().getIdentifier().equals(METHOD_AFTER)) { - adaptSuperBeforeCalls(METHOD_AFTER, METHOD_AFTER_EACH, method, rewrite, ast, group); - rewrite.replace(method.getName(), ast.newSimpleName(METHOD_AFTER_EACH), group); - ensureExtensionContextParameter(method, rewrite, ast, group, importRewrite); - } - } - } - - protected void refactorTestname(TextEditGroup group, ASTRewrite rewriter, AST ast, ImportRewrite importrewriter, FieldDeclaration node) { + protected void refactorTestname(TextEditGroup group, ASTRewrite rewriter, AST ast, ImportRewrite importrewriter, + FieldDeclaration node) { rewriter.remove(node, group); TypeDeclaration parentClass= (TypeDeclaration) node.getParent(); addBeforeEachInitMethod(parentClass, rewriter, group); @@ -581,8 +616,8 @@ protected void refactorTestname(TextEditGroup group, ASTRewrite rewriter, AST as method.getBody().accept(new ASTVisitor() { @Override public boolean visit(MethodInvocation node) { - if (node.getExpression() != null && node.getExpression().resolveTypeBinding() - .getQualifiedName().equals(ORG_JUNIT_RULES_TEST_NAME)) { + if (node.getExpression() != null && node.getExpression().resolveTypeBinding().getQualifiedName() + .equals(ORG_JUNIT_RULES_TEST_NAME)) { SimpleName newFieldAccess= ast.newSimpleName(TEST_NAME); rewriter.replace(node, newFieldAccess, group); } @@ -601,67 +636,67 @@ private void addTestNameField(TypeDeclaration parentClass, ASTRewrite rewriter, AST ast= parentClass.getAST(); VariableDeclarationFragment fragment= ast.newVariableDeclarationFragment(); fragment.setName(ast.newSimpleName(TEST_NAME)); - + FieldDeclaration fieldDeclaration= ast.newFieldDeclaration(fragment); fieldDeclaration.setType(ast.newSimpleType(ast.newName("String"))); fieldDeclaration.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PRIVATE_KEYWORD)); - + ListRewrite listRewrite= rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); listRewrite.insertFirst(fieldDeclaration, group); } private void addBeforeEachInitMethod(TypeDeclaration parentClass, ASTRewrite rewriter, TextEditGroup group) { AST ast= parentClass.getAST(); - + MethodDeclaration methodDeclaration= ast.newMethodDeclaration(); methodDeclaration.setName(ast.newSimpleName("init")); methodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID)); - + SingleVariableDeclaration param= ast.newSingleVariableDeclaration(); param.setType(ast.newSimpleType(ast.newName("TestInfo"))); param.setName(ast.newSimpleName("testInfo")); methodDeclaration.parameters().add(param); - + Block body= ast.newBlock(); Assignment assignment= ast.newAssignment(); FieldAccess fieldAccess= ast.newFieldAccess(); fieldAccess.setExpression(ast.newThisExpression()); fieldAccess.setName(ast.newSimpleName(TEST_NAME)); assignment.setLeftHandSide(fieldAccess); - + MethodInvocation methodInvocation= ast.newMethodInvocation(); methodInvocation.setExpression(ast.newSimpleName("testInfo")); methodInvocation.setName(ast.newSimpleName("getDisplayName")); - + assignment.setRightHandSide(methodInvocation); - + ExpressionStatement statement= ast.newExpressionStatement(assignment); body.statements().add(statement); methodDeclaration.setBody(body); - + MarkerAnnotation beforeEachAnnotation= ast.newMarkerAnnotation(); beforeEachAnnotation.setTypeName(ast.newName("BeforeEach")); - + ListRewrite listRewrite= rewriter.getListRewrite(parentClass, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); listRewrite.insertFirst(methodDeclaration, group); - + listRewrite= rewriter.getListRewrite(methodDeclaration, MethodDeclaration.MODIFIERS2_PROPERTY); listRewrite.insertFirst(beforeEachAnnotation, group); } private List getAllSubclasses(ITypeBinding typeBinding) { - List subclasses = new ArrayList<>(); + List subclasses= new ArrayList<>(); try { // Erzeuge den entsprechenden IType des gegebenen ITypeBindings - IType type = (IType) typeBinding.getJavaElement(); + IType type= (IType) typeBinding.getJavaElement(); // Erzeuge die Typ-Hierarchie für den übergebenen Typ innerhalb des Projekts - ITypeHierarchy typeHierarchy = type.newTypeHierarchy(null); // null verwendet das gesamte Projekt + ITypeHierarchy typeHierarchy= type.newTypeHierarchy(null); // null verwendet das gesamte Projekt // Durchlaufe alle direkten und indirekten Subtypen und füge sie der Liste hinzu for (IType subtype : typeHierarchy.getAllSubtypes(type)) { - ITypeBinding subtypeBinding = (ITypeBinding) subtype.getAdapter(ITypeBinding.class); + ITypeBinding subtypeBinding= (ITypeBinding) subtype.getAdapter(ITypeBinding.class); if (subtypeBinding != null) { subclasses.add(subtypeBinding); } @@ -671,22 +706,21 @@ private List getAllSubclasses(ITypeBinding typeBinding) { } return subclasses; } - - - protected void refactorTestnameInClassAndSubclasses(TextEditGroup group, ASTRewrite rewriter, AST ast, + + protected void refactorTestnameInClassAndSubclasses(TextEditGroup group, ASTRewrite rewriter, AST ast, ImportRewrite importRewrite, FieldDeclaration node) { // Refactoring in der aktuellen Klasse refactorTestnameInClass(group, rewriter, ast, importRewrite, node); // Ermittlung aller abgeleiteten Klassen - ITypeBinding typeBinding = ((TypeDeclaration) node.getParent()).resolveBinding(); - List subclasses = getAllSubclasses(typeBinding); + ITypeBinding typeBinding= ((TypeDeclaration) node.getParent()).resolveBinding(); + List subclasses= getAllSubclasses(typeBinding); for (ITypeBinding subclassBinding : subclasses) { - IType subclassType = (IType) subclassBinding.getJavaElement(); + IType subclassType= (IType) subclassBinding.getJavaElement(); // Hole die AST-Darstellung der Subklasse (zum Beispiel durch ASTParser) - CompilationUnit subclassUnit = parseCompilationUnit(subclassType.getCompilationUnit()); + CompilationUnit subclassUnit= parseCompilationUnit(subclassType.getCompilationUnit()); subclassUnit.accept(new ASTVisitor() { @Override public boolean visit(TypeDeclaration subclassNode) { @@ -699,27 +733,28 @@ public boolean visit(TypeDeclaration subclassNode) { } } - protected void refactorTestnameInClass(TextEditGroup group, ASTRewrite rewriter, AST ast, + protected void refactorTestnameInClass(TextEditGroup group, ASTRewrite rewriter, AST ast, ImportRewrite importRewrite, FieldDeclaration node) { // Entferne das alte TestName-Feld rewriter.remove(node, group); // Füge ein neues TestName-Feld hinzu und erzeuge eine BeforeEach-Init-Methode - TypeDeclaration parentClass = (TypeDeclaration) node.getParent(); + TypeDeclaration parentClass= (TypeDeclaration) node.getParent(); addBeforeEachInitMethod(parentClass, rewriter, group); addTestNameField(parentClass, rewriter, group); - // Ersetze alle Zugriffe auf das alte TestName-Feld durch das neue Feld "testName" + // Ersetze alle Zugriffe auf das alte TestName-Feld durch das neue Feld + // "testName" for (MethodDeclaration method : parentClass.getMethods()) { if (method.getBody() != null) { method.getBody().accept(new ASTVisitor() { @Override public boolean visit(MethodInvocation node) { // Prüfen, ob der Aufruf auf das alte TestName-Feld verweist - if (node.getExpression() != null - && ORG_JUNIT_RULES_TEST_NAME.equals(node.getExpression().resolveTypeBinding().getQualifiedName())) { + if (node.getExpression() != null && ORG_JUNIT_RULES_TEST_NAME + .equals(node.getExpression().resolveTypeBinding().getQualifiedName())) { // Ersetze den Zugriff durch "testName" - SimpleName newFieldAccess = ast.newSimpleName(TEST_NAME); + SimpleName newFieldAccess= ast.newSimpleName(TEST_NAME); rewriter.replace(node, newFieldAccess, group); } return super.visit(node); @@ -734,5 +769,4 @@ public boolean visit(MethodInvocation node) { importRewrite.removeImport(ORG_JUNIT_RULE); importRewrite.removeImport(ORG_JUNIT_RULES_TEST_NAME); } - } diff --git a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java index 40a735ae..8b8c14ee 100644 --- a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java @@ -676,13 +676,13 @@ public class MyTest { final class MyExternalResource implements BeforeEachCallback, AfterEachCallback { @Override - protected void beforeEach(ExtensionContext context) { + public void beforeEach(ExtensionContext context) { super.beforeEach(context); int i=4; } @Override - protected void afterEach(ExtensionContext context) { + public void afterEach(ExtensionContext context) { } } @@ -828,6 +828,11 @@ public class MyTest { @Rule public MyExternalResource er= new MyExternalResource(); + @Before + public void genericbefore(){ + er.start(); + } + @Test public void test3() { } @@ -849,6 +854,9 @@ protected void before() throws Throwable { @Override protected void after() { } + + public start(){ + } } """, false, null); //$NON-NLS-1$ context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP); @@ -865,6 +873,11 @@ public class MyTest { @RegisterExtension public MyExternalResource er= new MyExternalResource(); + @Before + public void genericbefore(){ + er.start(); + } + @Test public void test3() { } @@ -881,12 +894,15 @@ public void test3() { */ public class MyExternalResource implements BeforeEachCallback, AfterEachCallback { @Override - protected void beforeEach(ExtensionContext context) { + public void beforeEach(ExtensionContext context) { int i=4; } @Override - protected void afterEach(ExtensionContext context) { + public void afterEach(ExtensionContext context) { + } + + public start(){ } } """ @@ -975,13 +991,13 @@ public void test3() { public class MyExternalResource extends MyExternalResource2 { @Override - protected void beforeEach(ExtensionContext context) { + public void beforeEach(ExtensionContext context) { super.beforeEach(context); int i=4; } @Override - protected void afterEach(ExtensionContext context) { + public void afterEach(ExtensionContext context) { } } """, @@ -993,12 +1009,12 @@ protected void afterEach(ExtensionContext context) { public class MyExternalResource2 implements BeforeEachCallback, AfterEachCallback { @Override - protected void beforeEach(ExtensionContext context) { + public void beforeEach(ExtensionContext context) { int i=4; } @Override - protected void afterEach(ExtensionContext context) { + public void afterEach(ExtensionContext context) { } } """ From 3323b5096cac184261eeaaf47d3406df15826370 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Mon, 28 Oct 2024 11:31:22 +0100 Subject: [PATCH 35/58] Support for assertSame and assertNotSame --- .../jdt/internal/corext/fix/helper/AssertJUnitPlugin.java | 2 +- .../tests/quickfix/Java8/JUnitMigrationCleanUpTest.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index 8f72cbd8..503b4b3f 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -42,7 +42,7 @@ public class AssertJUnitPlugin extends AbstractTool> { static final Set twoparam= Set.of("assertEquals", "assertNotEquals", "assertArrayEquals", - "assertTrue", "assertFalse", "assertNull", "assertNotNull", "fail"); + "assertSame","assertNotSame"); static final Set oneparam= Set.of("assertTrue", "assertFalse", "assertNull", "assertNotNull"); private static final Set noparam= Set.of("fail"); private static final Set allassertionmethods= Stream.of(twoparam, oneparam, noparam).flatMap(Set::stream) diff --git a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java index 8b8c14ee..69b6d794 100644 --- a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java @@ -101,6 +101,10 @@ public void tearDown() throws Exception { @Test public void test() { Assert.fail("Not yet implemented"); + Object o1,o2; + o1="foo"; + o2=o1; + Assert.assertSame("ohno", o1, o2); } @Ignore("not implemented") @@ -187,6 +191,10 @@ public void tearDown() throws Exception { @Test public void test() { Assertions.fail("Not yet implemented"); + Object o1,o2; + o1="foo"; + o2=o1; + Assertions.assertSame(o1, o2, "ohno"); } @Disabled("not implemented") From 9d827ef4132385d22fda4934b447490e9750b5f0 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Tue, 29 Oct 2024 20:41:55 +0100 Subject: [PATCH 36/58] fix length of preview issue --- .../jdt/internal/corext/fix/JUnitCleanUpFixCore.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java index 16a1a31c..a2f2101e 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/JUnitCleanUpFixCore.java @@ -67,7 +67,15 @@ public enum JUnitCleanUpFixCore { } public String getPreview(boolean i) { - return junitfound.getPreview(i); + long countother= junitfound.getPreview(!i).lines().count(); + StringBuilder preview= new StringBuilder(junitfound.getPreview(i)); + long countnow= preview.toString().lines().count(); + if(countnow Date: Wed, 30 Oct 2024 18:58:00 +0100 Subject: [PATCH 37/58] add more testcases --- .../corext/fix/helper/AbstractTool.java | 43 +++++++++++++++++-- .../helper/ExternalResourceJUnitPlugin.java | 15 ++++--- .../RuleExternalResourceJUnitPlugin.java | 8 +++- .../Java8/JUnitMigrationCleanUpTest.java | 16 ++++++- 4 files changed, 69 insertions(+), 13 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index 51a9f668..a6fa5319 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -16,6 +16,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.Set; import org.eclipse.jdt.core.ICompilationUnit; @@ -146,7 +147,6 @@ public boolean visit(MethodInvocation node) { if (node.getExpression() instanceof SimpleName && ((SimpleName) node.getExpression()).getIdentifier().equals(fieldName)) { String methodName= node.getName().getIdentifier(); - if (METHOD_BEFORE.equals(methodName)) { // Ersetze "before()" durch "beforeEach(context)" rewriter.replace(node.getName(), ast.newSimpleName(METHOD_BEFORE_EACH), group); @@ -169,6 +169,40 @@ private void addContextParameterIfMissing(MethodInvocation node, ASTRewrite rewr } } + protected Optional getInnerTypeDeclaration(FieldDeclaration fieldDeclaration) { + for (Object fragment : fieldDeclaration.fragments()) { + if (fragment instanceof VariableDeclarationFragment) { + VariableDeclarationFragment variableFragment = (VariableDeclarationFragment) fragment; + + // Prüfen, ob die Initialisierung eine anonyme Klasse ist + Expression initializer = variableFragment.getInitializer(); + if (initializer instanceof ClassInstanceCreation) { + ClassInstanceCreation classInstance = (ClassInstanceCreation) initializer; + + // Anonyme Klasse gefunden + if (classInstance.getAnonymousClassDeclaration() != null) { + return Optional.of(classInstance.getAnonymousClassDeclaration()); + } + + // Falls keine anonyme Klasse, den Typ der inneren Klasse prüfen + ITypeBinding typeBinding = classInstance.getType().resolveBinding(); + if (typeBinding != null && typeBinding.isClass() && typeBinding.getJavaElement() instanceof IType) { + IType type = (IType) typeBinding.getJavaElement(); + IJavaProject javaProject = type.getJavaProject(); + String typeName = type.getElementName(); + + // Verwende nun den Projektnamen und den Typnamen + TypeDeclaration innerTypeDecl = findTypeDeclaration(javaProject, typeName); + if (innerTypeDecl != null) { + return Optional.of(innerTypeDecl); + } + } + } + } + } + return Optional.empty(); // Keine innere oder anonyme Klasse gefunden + } + protected void modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewriter, AST ast, TextEditGroup group, ImportRewrite importRewriter) { ITypeBinding binding= node.resolveBinding(); @@ -469,9 +503,12 @@ private boolean isStringType(Expression expression) { return typeBinding != null && String.class.getCanonicalName().equals(typeBinding.getQualifiedName()); } - public void migrateRuleToRegisterExtensionAndAdaptHierarchy(TypeDeclaration testClass, ASTRewrite rewrite, AST ast, + public void migrateRuleToRegisterExtensionAndAdaptHierarchy(Optional innerTypeDeclaration, TypeDeclaration testClass, ASTRewrite rewrite, AST ast, ImportRewrite importRewrite, TextEditGroup group, String varname) { - adaptBeforeAfterCallsInTestClass(testClass, varname, rewrite, ast, group); + if(innerTypeDeclaration.isPresent() && innerTypeDeclaration.get() instanceof TypeDeclaration) { + adaptBeforeAfterCallsInTestClass((TypeDeclaration) innerTypeDeclaration.get(), varname, rewrite, ast, group); + } +// for (FieldDeclaration field : testClass.getFields()) { if (isAnnotatedWithRule(field) && isExternalResource(field)) { removeRuleAnnotation(field, rewrite, group, importRewrite); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java index a4c12933..6f0ae6e2 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java @@ -39,16 +39,19 @@ public void find(JUnitCleanUpFixCore fixcore, CompilationUnit compilationUnit, Set operations, Set nodesprocessed) { ReferenceHolder dataholder= new ReferenceHolder<>(); HelperVisitor.callTypeDeclarationVisitor(ORG_JUNIT_RULES_EXTERNAL_RESOURCE, compilationUnit, dataholder, - nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder)); + nodesprocessed, (visited, aholder) -> processFoundNode(fixcore, operations, visited, aholder,nodesprocessed)); } private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, TypeDeclaration node, - ReferenceHolder dataholder) { - JunitHolder mh= new JunitHolder(); - mh.minv= node; - dataholder.put(dataholder.size(), mh); - operations.add(fixcore.rewrite(dataholder)); + ReferenceHolder dataholder, Set nodesprocessed) { + if (!nodesprocessed.contains(node)) { + nodesprocessed.add(node); + JunitHolder mh= new JunitHolder(); + mh.minv= node; + dataholder.put(dataholder.size(), mh); + operations.add(fixcore.rewrite(dataholder)); + } return false; } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index 3e9c8239..7fbe54e6 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -13,6 +13,7 @@ *******************************************************************************/ package org.sandbox.jdt.internal.corext.fix.helper; +import java.util.Optional; import java.util.Set; import org.eclipse.jdt.core.dom.AST; @@ -51,7 +52,9 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, JunitHolder mh= new JunitHolder(); VariableDeclarationFragment fragment= (VariableDeclarationFragment) node.fragments().get(0); ITypeBinding binding= fragment.resolveBinding().getType(); - if (isAnonymousClass(fragment) || (binding == null) + if ( + isAnonymousClass(fragment) || + (binding == null) || ORG_JUNIT_RULES_TEST_NAME.equals(binding.getQualifiedName()) || ORG_JUNIT_RULES_TEMPORARY_FOLDER.equals(binding.getQualifiedName())) { return false; @@ -70,10 +73,11 @@ public void rewrite(JUnitCleanUpFixCore upp, ReferenceHolder { FieldDeclaration fieldDeclaration= mh.getFieldDeclaration(); + Optional innerTypeDeclaration= getInnerTypeDeclaration(fieldDeclaration); for (Object fragment : fieldDeclaration.fragments()) { VariableDeclarationFragment variable = (VariableDeclarationFragment) fragment; String fieldName = variable.getName().getIdentifier(); - migrateRuleToRegisterExtensionAndAdaptHierarchy(getParentTypeDeclaration(fieldDeclaration),rewrite, ast, importRewriter,group ,fieldName); + migrateRuleToRegisterExtensionAndAdaptHierarchy(innerTypeDeclaration,getParentTypeDeclaration(fieldDeclaration),rewrite, ast, importRewriter,group ,fieldName); } }); } diff --git a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java index 69b6d794..db9bb2db 100644 --- a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java @@ -117,6 +117,7 @@ public void test2() { public void test3() { boolean condition=true; Assume.assumeFalse("Bedingung nicht erfüllt", condition); + Assume.assumeFalse(condition); assumeTrue("Bedingung nicht erfüllt", condition); Assert.assertEquals("expected", "actual"); } @@ -127,10 +128,13 @@ public void test4() { int result=5; Assert.assertEquals(5, result); // expected = 5, actual = result Assert.assertNotEquals("failuremessage",5, result); // expected = 5, actual = result + Assert.assertNotEquals(5, result); // expected = 5, actual = result Assert.assertTrue("failuremessage",false); - Assert.assertFalse("failuremessage",false); Assert.assertTrue(false); + Assert.assertFalse("failuremessage",false); Assert.assertFalse(false); + Assert.assertNull("failuremessage", null); + Assert.assertNull(null); } } """, //$NON-NLS-1$ @@ -207,6 +211,7 @@ public void test2() { public void test3() { boolean condition=true; Assumptions.assumeFalse(condition, "Bedingung nicht erfüllt"); + Assumptions.assumeFalse(condition); assumeTrue(condition, "Bedingung nicht erfüllt"); Assertions.assertEquals("expected", "actual"); } @@ -217,10 +222,13 @@ public void test4() { int result=5; Assertions.assertEquals(5, result); // expected = 5, actual = result Assertions.assertNotEquals(5,result, "failuremessage"); // expected = 5, actual = result + Assertions.assertNotEquals(5, result); // expected = 5, actual = result Assertions.assertTrue(false,"failuremessage"); - Assertions.assertFalse(false,"failuremessage"); Assertions.assertTrue(false); + Assertions.assertFalse(false,"failuremessage"); Assertions.assertFalse(false); + Assertions.assertNull(null, "failuremessage"); + Assertions.assertNull(null); } } """), @@ -659,6 +667,7 @@ protected void before() throws Throwable { @Override protected void after() { + super.after(); } } @@ -691,6 +700,7 @@ public void beforeEach(ExtensionContext context) { @Override public void afterEach(ExtensionContext context) { + super.afterEach(context); } } @@ -963,6 +973,7 @@ protected void after() { public class MyExternalResource2 extends ExternalResource { @Override protected void before() throws Throwable { + super.before(); int i=4; } @@ -1018,6 +1029,7 @@ public void afterEach(ExtensionContext context) { public class MyExternalResource2 implements BeforeEachCallback, AfterEachCallback { @Override public void beforeEach(ExtensionContext context) { + super.beforeEach(context); int i=4; } From e9200864630a682f8e6d341b75e34cb8f5db9b20 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Wed, 30 Oct 2024 20:13:57 +0100 Subject: [PATCH 38/58] Dont create change on empty ExternalResource derived class --- .../corext/fix/helper/AbstractTool.java | 8 +- .../helper/ExternalResourceJUnitPlugin.java | 12 ++ .../RuleExternalResourceJUnitPlugin.java | 4 +- .../Java8/JUnitMigrationCleanUpTest.java | 118 +++++++++++++++--- 4 files changed, 120 insertions(+), 22 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index a6fa5319..55a8bd32 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -83,8 +83,8 @@ public abstract class AbstractTool { private static final String ORG_JUNIT_JUPITER_API_EXTENSION_BEFORE_EACH_CALLBACK= "org.junit.jupiter.api.extension.BeforeEachCallback"; private static final String ORG_JUNIT_JUPITER_API_EXTENSION_REGISTER_EXTENSION= "org.junit.jupiter.api.extension.RegisterExtension"; private static final String ANNOTATION_EXTEND_WITH= "ExtendWith"; - private static final String METHOD_AFTER= "after"; - private static final String METHOD_BEFORE= "before"; + protected static final String METHOD_AFTER= "after"; + protected static final String METHOD_BEFORE= "before"; private static final String VARIABLE_NAME_CONTEXT= "context"; private static final String EXTENSION_CONTEXT= "ExtensionContext"; protected static final String ORG_JUNIT_RULES_EXTERNAL_RESOURCE= "org.junit.rules.ExternalResource"; @@ -224,7 +224,7 @@ protected void modifyExternalResourceClass(TypeDeclaration node, ASTRewrite rewr refactorMethod(rewriter, ast, method, replacement, group, importRewriter); } } - importRewriter.removeImport(ORG_JUNIT_RULE); +// importRewriter.removeImport(ORG_JUNIT_RULE); } private void updateLifecycleMethods(TypeDeclaration typeDecl, ASTRewrite rewrite, AST ast, TextEditGroup group, @@ -494,7 +494,7 @@ protected boolean isExternalResource(ITypeBinding typeBinding) { return false; } - private boolean isLifecycleMethod(MethodDeclaration method, String methodName) { + protected boolean isLifecycleMethod(MethodDeclaration method, String methodName) { return method.getName().getIdentifier().equals(methodName); } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java index 6f0ae6e2..e8ea84ac 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/ExternalResourceJUnitPlugin.java @@ -18,6 +18,7 @@ import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.TypeDeclaration; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; @@ -46,6 +47,17 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, Set operations, TypeDeclaration node, ReferenceHolder dataholder, Set nodesprocessed) { if (!nodesprocessed.contains(node)) { + if (!isDirectlyExtendingExternalResource(node.resolveBinding())) { + boolean nothingtochange=true; + for (MethodDeclaration method : node.getMethods()) { + if (isLifecycleMethod(method, METHOD_BEFORE) || isLifecycleMethod(method, METHOD_AFTER)) { + nothingtochange=false; + } + } + if(nothingtochange) { + return false; + } + } nodesprocessed.add(node); JunitHolder mh= new JunitHolder(); mh.minv= node; diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java index 7fbe54e6..cfa0f86f 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/RuleExternalResourceJUnitPlugin.java @@ -53,8 +53,8 @@ private boolean processFoundNode(JUnitCleanUpFixCore fixcore, VariableDeclarationFragment fragment= (VariableDeclarationFragment) node.fragments().get(0); ITypeBinding binding= fragment.resolveBinding().getType(); if ( - isAnonymousClass(fragment) || - (binding == null) + isAnonymousClass(fragment) + || (binding == null) || ORG_JUNIT_RULES_TEST_NAME.equals(binding.getQualifiedName()) || ORG_JUNIT_RULES_TEMPORARY_FOLDER.equals(binding.getQualifiedName())) { return false; diff --git a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java index db9bb2db..64fd50c3 100644 --- a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java @@ -795,23 +795,33 @@ public void testJUnitCleanupParametrized(JUnitCleanupCases test) throws CoreExce enum NOJUnitCleanupCases { - NOCase( - """ - package test; - import static org.junit.jupiter.api.Assertions.assertEquals; - - import org.junit.jupiter.api.Test; - /** - * - */ - public class MyTest { +NOCase( +""" +package test; +import static org.junit.jupiter.api.Assertions.assertEquals; - @Test - public void test3() { - assertEquals("expected", "actual"); - } - } - """) //$NON-NLS-1$ +import org.junit.jupiter.api.Test; +/** + * + */ +public class MyTest { + + @Test + public void test3() { + assertEquals("expected", "actual"); + } +} +"""), //$NON-NLS-1$ +UnrelatedCodeCase( +""" +package test; +/** + * + */ +public class MyTest { + +} +""") //$NON-NLS-1$ ; NOJUnitCleanupCases(String given) { @@ -838,6 +848,7 @@ public void testJUnitCleanupTwoFiles() throws CoreException { package test; import org.junit.Test; import org.junit.Rule; +import test.MyExternalResource; /** * */ @@ -883,6 +894,8 @@ public start(){ package test; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; + +import test.MyExternalResource; /** * */ @@ -899,6 +912,79 @@ public void genericbefore(){ @Test public void test3() { } +} +""" +, +""" +package test; +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; +/** + * + */ +public class MyExternalResource implements BeforeEachCallback, AfterEachCallback { + @Override + public void beforeEach(ExtensionContext context) { + int i=4; + } + + @Override + public void afterEach(ExtensionContext context) { + } + + public start(){ + } +} +""" +}, null); + } + + @Test + public void testJUnitCleanupTwoFilesb() throws CoreException { + IPackageFragment pack= fRootJUnit4.createPackageFragment("test", true, null); + ICompilationUnit cu= pack.createCompilationUnit("MyTest.java", +""" +package test; +import test.MyExternalResource; +/** + * + */ +public class MyTest extends MyExternalResource { + +} +""", false, null); //$NON-NLS-1$ + ICompilationUnit cu2= pack.createCompilationUnit("MyExternalResource.java", +""" +package test; +import org.junit.rules.ExternalResource; +/** + * + */ +public class MyExternalResource extends ExternalResource { + @Override + protected void before() throws Throwable { + int i=4; + } + + @Override + protected void after() { + } + + public start(){ + } +} +""", false, null); //$NON-NLS-1$ + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context4junit4.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu,cu2}, new String[] { +""" +package test; +import test.MyExternalResource; +/** + * + */ +public class MyTest extends MyExternalResource { + } """ , From 807417f489d12721920ae1f109686c052d80d248 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Thu, 31 Oct 2024 17:59:52 +0100 Subject: [PATCH 39/58] Add assumeThat support --- .../corext/fix/helper/AbstractTool.java | 2 +- .../corext/fix/helper/AssumeJUnitPlugin.java | 30 ++++++++--- .../Java8/JUnitMigrationCleanUpTest.java | 53 ++++++++++++------- 3 files changed, 60 insertions(+), 25 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java index 55a8bd32..90eee4ab 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AbstractTool.java @@ -123,6 +123,7 @@ public abstract class AbstractTool { protected static final String ANNOTATION_TEST= "Test"; protected static final String ORG_JUNIT_JUPITER_API_ASSUMPTIONS= "org.junit.jupiter.api.Assumptions"; protected static final String ORG_JUNIT_ASSUME= "org.junit.Assume"; + protected static final String ASSUMPTIONS= "Assumptions"; public static Collection getUsedVariableNames(ASTNode node) { CompilationUnit root= (CompilationUnit) node.getRoot(); @@ -508,7 +509,6 @@ public void migrateRuleToRegisterExtensionAndAdaptHierarchy(Optional in if(innerTypeDeclaration.isPresent() && innerTypeDeclaration.get() instanceof TypeDeclaration) { adaptBeforeAfterCallsInTestClass((TypeDeclaration) innerTypeDeclaration.get(), varname, rewrite, ast, group); } -// for (FieldDeclaration field : testClass.getFields()) { if (isAnnotatedWithRule(field) && isExternalResource(field)) { removeRuleAnnotation(field, rewrite, group, importRewrite); diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssumeJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssumeJUnitPlugin.java index b0d29b4c..02382e18 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssumeJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssumeJUnitPlugin.java @@ -22,6 +22,7 @@ import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.Expression; +import org.eclipse.jdt.core.dom.IMethodBinding; import org.eclipse.jdt.core.dom.ImportDeclaration; import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.core.dom.SimpleName; @@ -41,7 +42,7 @@ */ public class AssumeJUnitPlugin extends AbstractTool> { - private static final Set twoparam= Set.of("assumeTrue", "assumeFalse", "assumeNotNull"); + private static final Set twoparam= Set.of("assumeTrue", "assumeFalse", "assumeNotNull","assumeThat"); private static final Set oneparam= Set.of("assumeTrue", "assumeFalse", "assumeNotNull"); private static final Set allassumemethods= Stream.of(twoparam, oneparam).flatMap(Set::stream) .collect(Collectors.toSet()); @@ -83,11 +84,22 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder Date: Thu, 31 Oct 2024 20:00:56 +0100 Subject: [PATCH 40/58] Add Assert.assertThat support --- .../corext/fix/helper/AssertJUnitPlugin.java | 37 ++++++++++++++----- .../Java8/JUnitMigrationCleanUpTest.java | 10 ++--- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java index 503b4b3f..c8b0fd07 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/AssertJUnitPlugin.java @@ -27,6 +27,7 @@ import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; import org.eclipse.jdt.core.dom.rewrite.ImportRewrite; +import org.eclipse.jdt.core.dom.rewrite.ListRewrite; import org.eclipse.jdt.internal.corext.dom.ASTNodes; import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFixCore.CompilationUnitRewriteOperationWithSourceRange; import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite; @@ -42,7 +43,7 @@ public class AssertJUnitPlugin extends AbstractTool> { static final Set twoparam= Set.of("assertEquals", "assertNotEquals", "assertArrayEquals", - "assertSame","assertNotSame"); + "assertSame","assertNotSame","assertThat"); static final Set oneparam= Set.of("assertTrue", "assertFalse", "assertNull", "assertNotNull"); private static final Set noparam= Set.of("fail"); private static final Set allassertionmethods= Stream.of(twoparam, oneparam, noparam).flatMap(Set::stream) @@ -80,19 +81,37 @@ public void rewrite(JUnitCleanUpFixCore upp, final ReferenceHolder entry : hit.entrySet()) { JunitHolder mh= entry.getValue(); if (mh.minv instanceof MethodInvocation) { - MethodInvocation minv= mh.getMethodInvocation(); - reorderParameters(minv, rewrite, group, oneparam, twoparam); - SimpleName newQualifier= ast.newSimpleName(ASSERTIONS); - Expression expression= minv.getExpression(); - if (expression != null) { - ASTNodes.replaceButKeepComment(rewrite, expression, newQualifier, group); + MethodInvocation node= mh.getMethodInvocation(); + Expression assertexpression= node.getExpression(); + if ("assertThat".equals(node.getName().getIdentifier()) && + assertexpression instanceof SimpleName && + "Assert".equals(((SimpleName) assertexpression).getIdentifier())) { + rewrite.set(node, MethodInvocation.EXPRESSION_PROPERTY, null, group); + importRewrite.addStaticImport("org.hamcrest.MatcherAssert", "assertThat", false); + importRewrite.removeImport("org.junit.Assert"); + if (node.arguments().size() == 3) { + Expression errorMessage = (Expression) node.arguments().get(0); + Expression actualValue = (Expression) node.arguments().get(1); + Expression matcher = (Expression) node.arguments().get(2); + ListRewrite argumentRewrite = rewrite.getListRewrite(node, MethodInvocation.ARGUMENTS_PROPERTY); + argumentRewrite.replace((ASTNode) node.arguments().get(0), errorMessage, group); + argumentRewrite.replace((ASTNode) node.arguments().get(1), actualValue, group); + argumentRewrite.replace((ASTNode) node.arguments().get(2), matcher, group); + } + } else { + reorderParameters(node, rewrite, group, oneparam, twoparam); + SimpleName newQualifier= ast.newSimpleName(ASSERTIONS); + Expression expression= assertexpression; + if (expression != null) { + ASTNodes.replaceButKeepComment(rewrite, expression, newQualifier, group); + } } } else { - changeImportDeclaration(mh.getImportDeclaration(), importRewriter, group); + changeImportDeclaration(mh.getImportDeclaration(), importRewrite, group); } } } diff --git a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java index 423071e0..14d39293 100644 --- a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java @@ -17,8 +17,6 @@ import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; -import org.hamcrest.CoreMatchers; -import org.junit.Assume; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -126,6 +124,7 @@ public void test3() { Assert.assertEquals("expected", "actual"); Assume.assumeNotNull(" "); Assume.assumeThat(1, CoreMatchers.is(1)); + Assert.assertThat(1, CoreMatchers.is(1)); } @Test @@ -147,6 +146,7 @@ public void test4() { """ package test; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.junit.MatcherAssume.assumeThat; import static org.junit.jupiter.api.Assumptions.assumeTrue; @@ -225,6 +225,7 @@ public void test3() { Assertions.assertEquals("expected", "actual"); Assumptions.assumeNotNull(" "); assumeThat(1, CoreMatchers.is(1)); + assertThat(1, CoreMatchers.is(1)); } @Test @@ -954,11 +955,6 @@ public start(){ @Test public void testJUnitCleanupTwoFilesb() throws CoreException { -// Assume.assumeNotNull(""); -// Assert.assertThrows(null, null) -// Assertions.assertThrows(null, null) - Assume.assumeThat(1, CoreMatchers.is(1)); -// Assumptions.assumingThat(false, null); IPackageFragment pack= fRootJUnit4.createPackageFragment("test", true, null); ICompilationUnit cu= pack.createCompilationUnit("MyTest.java", """ From 8736b4e6177ac48efc7596a2abe8804373be4fb4 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 1 Nov 2024 09:14:39 +0100 Subject: [PATCH 41/58] test updating orbit target --- pom.xml | 2 +- sandbox_target/eclipse.target | 46 +++-------------------------------- 2 files changed, 5 insertions(+), 43 deletions(-) diff --git a/pom.xml b/pom.xml index 3a87516b..5dac1c16 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ orbit p2 - https://download.eclipse.org/tools/orbit/downloads/drops/R20230531010532/repository/ + https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.33.0/ swtbot diff --git a/sandbox_target/eclipse.target b/sandbox_target/eclipse.target index 88b20b71..150d3c0c 100644 --- a/sandbox_target/eclipse.target +++ b/sandbox_target/eclipse.target @@ -81,48 +81,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + From 9e07490f0a9597de2dff484b4431bcbc616df712 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 1 Nov 2024 12:33:20 +0100 Subject: [PATCH 42/58] test changing junit dependency --- sandbox_functional_converter_feature/feature.xml | 13 +++++-------- .../META-INF/MANIFEST.MF | 2 +- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/sandbox_functional_converter_feature/feature.xml b/sandbox_functional_converter_feature/feature.xml index 7120b197..81ec3239 100644 --- a/sandbox_functional_converter_feature/feature.xml +++ b/sandbox_functional_converter_feature/feature.xml @@ -32,19 +32,16 @@ - - - - + + + + + version="1.1.0.qualifier"/> diff --git a/sandbox_functional_converter_test/META-INF/MANIFEST.MF b/sandbox_functional_converter_test/META-INF/MANIFEST.MF index 30f46c15..c977872a 100644 --- a/sandbox_functional_converter_test/META-INF/MANIFEST.MF +++ b/sandbox_functional_converter_test/META-INF/MANIFEST.MF @@ -21,5 +21,5 @@ Import-Package: org.junit.jupiter.api, org.junit.jupiter.params.converter, org.junit.jupiter.params.provider, org.junit.jupiter.params.support, - org.opentest4j;version="1.2.0" + org.opentest4j Automatic-Module-Name: sandbox.functional.converter.test From 051e431a75bc66ac40d23ad6bcdac950b04661ad Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 1 Nov 2024 12:46:16 +0100 Subject: [PATCH 43/58] add junit to product --- sandbox_junit_cleanup_test/pom.xml | 4 ++-- sandbox_product/category.xml | 7 +++++-- sandbox_product/sandbox.product | 7 ++++--- sandbox_target/eclipse.target | 7 ++++--- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/sandbox_junit_cleanup_test/pom.xml b/sandbox_junit_cleanup_test/pom.xml index 2406be92..44eb41f2 100644 --- a/sandbox_junit_cleanup_test/pom.xml +++ b/sandbox_junit_cleanup_test/pom.xml @@ -11,12 +11,12 @@ sandbox_junit_cleanup_test Sandbox junit cleanup test eclipse-test-plugin - + src diff --git a/sandbox_product/category.xml b/sandbox_product/category.xml index e939e6ba..efe46f48 100644 --- a/sandbox_product/category.xml +++ b/sandbox_product/category.xml @@ -21,11 +21,14 @@ + + + Description of sandbox category - - + + diff --git a/sandbox_product/sandbox.product b/sandbox_product/sandbox.product index 16b84bfe..6cfa8e94 100644 --- a/sandbox_product/sandbox.product +++ b/sandbox_product/sandbox.product @@ -1,7 +1,7 @@ - + @@ -226,6 +226,7 @@ United States, other countries, or both. + @@ -242,8 +243,8 @@ United States, other countries, or both. - - + + diff --git a/sandbox_target/eclipse.target b/sandbox_target/eclipse.target index 150d3c0c..513840e0 100644 --- a/sandbox_target/eclipse.target +++ b/sandbox_target/eclipse.target @@ -82,9 +82,10 @@ - - - + + + + From 45f8917d39ef935f33f7ecce4dd14e19d4dfd2ff Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 1 Nov 2024 13:01:54 +0100 Subject: [PATCH 44/58] remove junit from xml feature --- sandbox_xml_cleanup_feature/feature.xml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sandbox_xml_cleanup_feature/feature.xml b/sandbox_xml_cleanup_feature/feature.xml index c211519e..085d7ea5 100644 --- a/sandbox_xml_cleanup_feature/feature.xml +++ b/sandbox_xml_cleanup_feature/feature.xml @@ -33,15 +33,11 @@ - + version="0.0.0"/> From 55a3c32f2a4e769c4fc12e8ee14b9daab4bb7fc6 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 1 Nov 2024 13:22:25 +0100 Subject: [PATCH 45/58] remove junit --- sandbox_jface_cleanup_feature/feature.xml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/sandbox_jface_cleanup_feature/feature.xml b/sandbox_jface_cleanup_feature/feature.xml index 53809eb0..b68cc889 100644 --- a/sandbox_jface_cleanup_feature/feature.xml +++ b/sandbox_jface_cleanup_feature/feature.xml @@ -32,19 +32,12 @@ - - - - + version="1.1.0.qualifier"/> From 4977482f5bb2a2c9e2cf4a67233150808adbe73f Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 1 Nov 2024 13:39:36 +0100 Subject: [PATCH 46/58] remove junit --- sandbox_junit_cleanup_feature/feature.xml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/sandbox_junit_cleanup_feature/feature.xml b/sandbox_junit_cleanup_feature/feature.xml index cc52a77f..07dd01fc 100644 --- a/sandbox_junit_cleanup_feature/feature.xml +++ b/sandbox_junit_cleanup_feature/feature.xml @@ -32,19 +32,12 @@ - - - - + version="1.1.0.qualifier"/> From 037c1046f5ec55c68b0a045ff8e87024d22c078e Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 1 Nov 2024 14:04:08 +0100 Subject: [PATCH 47/58] add some features to target and jupiter features to test commons --- sandbox_target/eclipse.target | 32 ++++++++++++++++++++--- sandbox_test_commons/META-INF/MANIFEST.MF | 8 +++++- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/sandbox_target/eclipse.target b/sandbox_target/eclipse.target index 513840e0..0ddbc508 100644 --- a/sandbox_target/eclipse.target +++ b/sandbox_target/eclipse.target @@ -82,10 +82,34 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sandbox_test_commons/META-INF/MANIFEST.MF b/sandbox_test_commons/META-INF/MANIFEST.MF index 0fb14d65..589b11b8 100644 --- a/sandbox_test_commons/META-INF/MANIFEST.MF +++ b/sandbox_test_commons/META-INF/MANIFEST.MF @@ -8,7 +8,13 @@ Automatic-Module-Name: sandbox.test.commons.singleton.true Eclipse-BuddyPolicy: global Eclipse-BundleShape: dir Import-Package: org.junit.jupiter.api;version="5.7.1", - org.junit.jupiter.api.extension;version="5.7.1" + org.junit.jupiter.api.condition;version="[5.10.0,6.0.0)", + org.junit.jupiter.api.extension;version="5.7.1", + org.junit.jupiter.api.extension.support;version="[5.10.0,6.0.0)", + org.junit.jupiter.api.function;version="[5.10.0,6.0.0)", + org.junit.jupiter.api.io;version="[5.10.0,6.0.0)", + org.junit.jupiter.api.parallel;version="[5.10.0,6.0.0)", + org.junit.jupiter.params;version="[5.10.0,6.0.0)" Bundle-ActivationPolicy: lazy Require-Bundle: org.junit, org.eclipse.jdt.ui, From e91489d7e6e44857f32b5c6a7e43f42ab01cfee8 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 1 Nov 2024 19:53:54 +0100 Subject: [PATCH 48/58] update to 2024-09 --- pom.xml | 10 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_cleanup_application/pom.xml | 2 +- .../feature.xml | 2 +- sandbox_cleanup_application_feature/pom.xml | 2 +- sandbox_common/META-INF/MANIFEST.MF | 2 +- sandbox_common/pom.xml | 2 +- sandbox_coverage/pom.xml | 12 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_encoding_quickfix/pom.xml | 2 +- sandbox_encoding_quickfix_feature/feature.xml | 2 +- sandbox_encoding_quickfix_feature/pom.xml | 2 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_encoding_quickfix_test/pom.xml | 2 +- sandbox_extra_search/META-INF/MANIFEST.MF | 2 +- sandbox_extra_search/pom.xml | 2 +- sandbox_extra_search_feature/feature.xml | 2 +- sandbox_extra_search_feature/pom.xml | 2 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_functional_converter/pom.xml | 2 +- .../feature.xml | 4 +- sandbox_functional_converter_feature/pom.xml | 2 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_functional_converter_test/pom.xml | 2 +- sandbox_jface_cleanup/META-INF/MANIFEST.MF | 2 +- sandbox_jface_cleanup/pom.xml | 2 +- sandbox_jface_cleanup_feature/feature.xml | 4 +- sandbox_jface_cleanup_feature/pom.xml | 2 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_jface_cleanup_test/pom.xml | 2 +- sandbox_junit_cleanup/META-INF/MANIFEST.MF | 2 +- sandbox_junit_cleanup/pom.xml | 2 +- sandbox_junit_cleanup_feature/feature.xml | 5 +- sandbox_junit_cleanup_feature/pom.xml | 2 +- .../META-INF/MANIFEST.MF | 16 +- sandbox_junit_cleanup_test/pom.xml | 2 +- sandbox_platform_helper/META-INF/MANIFEST.MF | 2 +- sandbox_platform_helper/pom.xml | 2 +- sandbox_platform_helper_feature/feature.xml | 2 +- sandbox_platform_helper_feature/pom.xml | 2 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_platform_helper_test/pom.xml | 2 +- sandbox_product/category.xml | 3 + sandbox_product/pom.xml | 8 +- sandbox_product/sandbox.product | 4 +- sandbox_target/eclipse.target | 151 +++++++----------- sandbox_target/pom.xml | 2 +- sandbox_test_commons/META-INF/MANIFEST.MF | 25 +-- sandbox_test_commons/pom.xml | 2 +- sandbox_tools/META-INF/MANIFEST.MF | 2 +- sandbox_tools/pom.xml | 2 +- sandbox_tools_feature/feature.xml | 2 +- sandbox_tools_feature/pom.xml | 2 +- sandbox_tools_test/META-INF/MANIFEST.MF | 2 +- sandbox_tools_test/pom.xml | 2 +- sandbox_usage_view/META-INF/MANIFEST.MF | 2 +- sandbox_usage_view/pom.xml | 2 +- sandbox_usage_view_feature/feature.xml | 2 +- sandbox_usage_view_feature/pom.xml | 2 +- .../org.eclipse.core.resources.prefs | 2 + sandbox_web/pom.xml | 2 +- sandbox_xml_cleanup/META-INF/MANIFEST.MF | 2 +- sandbox_xml_cleanup/pom.xml | 2 +- sandbox_xml_cleanup_feature/feature.xml | 2 +- sandbox_xml_cleanup_feature/pom.xml | 2 +- sandbox_xml_cleanup_test/META-INF/MANIFEST.MF | 2 +- sandbox_xml_cleanup_test/pom.xml | 2 +- 67 files changed, 172 insertions(+), 182 deletions(-) diff --git a/pom.xml b/pom.xml index 5dac1c16..6042995d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.sandbox central Sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT pom 4.0.9 @@ -60,7 +60,7 @@ eclipse p2 - https://download.eclipse.org/releases/2024-06 + https://download.eclipse.org/releases/2024-09 babel @@ -70,13 +70,13 @@ orbit p2 - https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/4.33.0/ + https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/2024-09/ - + diff --git a/sandbox_cleanup_application/META-INF/MANIFEST.MF b/sandbox_cleanup_application/META-INF/MANIFEST.MF index d032df8d..0d98048b 100644 --- a/sandbox_cleanup_application/META-INF/MANIFEST.MF +++ b/sandbox_cleanup_application/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: sandbox_cleanup_application Bundle-SymbolicName: sandbox_cleanup_application;singleton:=true Bundle-Vendor: sandbox -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Automatic-Module-Name: ui.sandbox.fragment Bundle-RequiredExecutionEnvironment: JavaSE-17 Bundle-ActivationPolicy: lazy diff --git a/sandbox_cleanup_application/pom.xml b/sandbox_cleanup_application/pom.xml index 7a334750..57688c4d 100644 --- a/sandbox_cleanup_application/pom.xml +++ b/sandbox_cleanup_application/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_cleanup_application Sandbox cleanup application diff --git a/sandbox_cleanup_application_feature/feature.xml b/sandbox_cleanup_application_feature/feature.xml index 49e7c742..fddb43cc 100644 --- a/sandbox_cleanup_application_feature/feature.xml +++ b/sandbox_cleanup_application_feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/sandbox_cleanup_application_feature/pom.xml b/sandbox_cleanup_application_feature/pom.xml index 6193b022..49779b04 100644 --- a/sandbox_cleanup_application_feature/pom.xml +++ b/sandbox_cleanup_application_feature/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_cleanup_application_feature Sandbox cleanup application Feature diff --git a/sandbox_common/META-INF/MANIFEST.MF b/sandbox_common/META-INF/MANIFEST.MF index 55e07bde..503ea353 100644 --- a/sandbox_common/META-INF/MANIFEST.MF +++ b/sandbox_common/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: sandbox_common Bundle-SymbolicName: sandbox_common;singleton:=true Bundle-Vendor: sandbox -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-17 Bundle-ActivationPolicy: lazy Eclipse-BuddyPolicy: global diff --git a/sandbox_common/pom.xml b/sandbox_common/pom.xml index 055a3ef5..08c99f9b 100644 --- a/sandbox_common/pom.xml +++ b/sandbox_common/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_common Sandbox common diff --git a/sandbox_coverage/pom.xml b/sandbox_coverage/pom.xml index 26c5c1bb..566165e8 100644 --- a/sandbox_coverage/pom.xml +++ b/sandbox_coverage/pom.xml @@ -5,7 +5,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_coverage pom @@ -90,5 +90,15 @@ sandbox_jface_cleanup_test test + + org.sandbox + sandbox_junit_cleanup + compile + + + org.sandbox + sandbox_junit_cleanup_test + test + \ No newline at end of file diff --git a/sandbox_encoding_quickfix/META-INF/MANIFEST.MF b/sandbox_encoding_quickfix/META-INF/MANIFEST.MF index d88461b0..0a47d9da 100644 --- a/sandbox_encoding_quickfix/META-INF/MANIFEST.MF +++ b/sandbox_encoding_quickfix/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Automatic-Module-Name: sandbox.encoding.quickfix Bundle-Name: Tool Bundle-SymbolicName: sandbox_encoding_quickfix;singleton:=true Bundle-Vendor: sandbox -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, diff --git a/sandbox_encoding_quickfix/pom.xml b/sandbox_encoding_quickfix/pom.xml index e7c514c9..17cfe191 100644 --- a/sandbox_encoding_quickfix/pom.xml +++ b/sandbox_encoding_quickfix/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_encoding_quickfix Sandbox encoding quickfix diff --git a/sandbox_encoding_quickfix_feature/feature.xml b/sandbox_encoding_quickfix_feature/feature.xml index aab9ccc0..714ba5c7 100644 --- a/sandbox_encoding_quickfix_feature/feature.xml +++ b/sandbox_encoding_quickfix_feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/sandbox_encoding_quickfix_feature/pom.xml b/sandbox_encoding_quickfix_feature/pom.xml index c776779b..929f91fd 100644 --- a/sandbox_encoding_quickfix_feature/pom.xml +++ b/sandbox_encoding_quickfix_feature/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_encoding_quickfix_feature Sandbox encoding quickfix Feature diff --git a/sandbox_encoding_quickfix_test/META-INF/MANIFEST.MF b/sandbox_encoding_quickfix_test/META-INF/MANIFEST.MF index 82422984..df51b2c4 100644 --- a/sandbox_encoding_quickfix_test/META-INF/MANIFEST.MF +++ b/sandbox_encoding_quickfix_test/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: Tool tests Bundle-SymbolicName: sandbox_encoding_quickfix_test;singleton:=true Bundle-Vendor: sandbox -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_encoding_quickfix Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.junit, diff --git a/sandbox_encoding_quickfix_test/pom.xml b/sandbox_encoding_quickfix_test/pom.xml index 5ab23027..46e328dd 100644 --- a/sandbox_encoding_quickfix_test/pom.xml +++ b/sandbox_encoding_quickfix_test/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_encoding_quickfix_test Sandbox encoding quickfix test diff --git a/sandbox_extra_search/META-INF/MANIFEST.MF b/sandbox_extra_search/META-INF/MANIFEST.MF index a462469e..9389fa5b 100644 --- a/sandbox_extra_search/META-INF/MANIFEST.MF +++ b/sandbox_extra_search/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: sandbox_extra_search Bundle-SymbolicName: sandbox_extra_search;singleton:=true Bundle-Vendor: sandbox -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Automatic-Module-Name: ui.sandbox.fragment Bundle-RequiredExecutionEnvironment: JavaSE-17 Bundle-ActivationPolicy: lazy diff --git a/sandbox_extra_search/pom.xml b/sandbox_extra_search/pom.xml index 84b7c078..069db239 100644 --- a/sandbox_extra_search/pom.xml +++ b/sandbox_extra_search/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_extra_search Sandbox extra search diff --git a/sandbox_extra_search_feature/feature.xml b/sandbox_extra_search_feature/feature.xml index 02656a58..d367ba49 100644 --- a/sandbox_extra_search_feature/feature.xml +++ b/sandbox_extra_search_feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/sandbox_extra_search_feature/pom.xml b/sandbox_extra_search_feature/pom.xml index cdcce76b..a7456044 100644 --- a/sandbox_extra_search_feature/pom.xml +++ b/sandbox_extra_search_feature/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_extra_search_feature Sandbox extra search Feature diff --git a/sandbox_functional_converter/META-INF/MANIFEST.MF b/sandbox_functional_converter/META-INF/MANIFEST.MF index 902330d4..b50d6104 100644 --- a/sandbox_functional_converter/META-INF/MANIFEST.MF +++ b/sandbox_functional_converter/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: functional_converter Bundle-SymbolicName: sandbox_functional_converter;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, diff --git a/sandbox_functional_converter/pom.xml b/sandbox_functional_converter/pom.xml index eb57e20e..c1da897a 100644 --- a/sandbox_functional_converter/pom.xml +++ b/sandbox_functional_converter/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_functional_converter Sandbox functional converter diff --git a/sandbox_functional_converter_feature/feature.xml b/sandbox_functional_converter_feature/feature.xml index 81ec3239..db4d637f 100644 --- a/sandbox_functional_converter_feature/feature.xml +++ b/sandbox_functional_converter_feature/feature.xml @@ -2,7 +2,7 @@ @@ -42,6 +42,6 @@ + version="1.2.0.qualifier"/> diff --git a/sandbox_functional_converter_feature/pom.xml b/sandbox_functional_converter_feature/pom.xml index 005c527d..c948a2b0 100644 --- a/sandbox_functional_converter_feature/pom.xml +++ b/sandbox_functional_converter_feature/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_functional_converter_feature Sandbox functional converter Feature diff --git a/sandbox_functional_converter_test/META-INF/MANIFEST.MF b/sandbox_functional_converter_test/META-INF/MANIFEST.MF index c977872a..d37fab31 100644 --- a/sandbox_functional_converter_test/META-INF/MANIFEST.MF +++ b/sandbox_functional_converter_test/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Tool tests Bundle-SymbolicName: sandbox_functional_converter_test;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_functional_converter Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: sandbox_test_commons diff --git a/sandbox_functional_converter_test/pom.xml b/sandbox_functional_converter_test/pom.xml index 5a71deab..ecbf9200 100644 --- a/sandbox_functional_converter_test/pom.xml +++ b/sandbox_functional_converter_test/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_functional_converter_test Sandbox functional converter test diff --git a/sandbox_jface_cleanup/META-INF/MANIFEST.MF b/sandbox_jface_cleanup/META-INF/MANIFEST.MF index e602bb8e..d709d24c 100644 --- a/sandbox_jface_cleanup/META-INF/MANIFEST.MF +++ b/sandbox_jface_cleanup/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: jface_cleanup Bundle-SymbolicName: sandbox_jface_cleanup;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, diff --git a/sandbox_jface_cleanup/pom.xml b/sandbox_jface_cleanup/pom.xml index 6232de9f..4096a44f 100644 --- a/sandbox_jface_cleanup/pom.xml +++ b/sandbox_jface_cleanup/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_jface_cleanup Sandbox jface cleanup diff --git a/sandbox_jface_cleanup_feature/feature.xml b/sandbox_jface_cleanup_feature/feature.xml index b68cc889..499d7bd5 100644 --- a/sandbox_jface_cleanup_feature/feature.xml +++ b/sandbox_jface_cleanup_feature/feature.xml @@ -2,7 +2,7 @@ @@ -38,6 +38,6 @@ + version="1.2.0.qualifier"/> diff --git a/sandbox_jface_cleanup_feature/pom.xml b/sandbox_jface_cleanup_feature/pom.xml index 714be6d5..825e1112 100644 --- a/sandbox_jface_cleanup_feature/pom.xml +++ b/sandbox_jface_cleanup_feature/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_jface_cleanup_feature Sandbox jface cleanup Feature diff --git a/sandbox_jface_cleanup_test/META-INF/MANIFEST.MF b/sandbox_jface_cleanup_test/META-INF/MANIFEST.MF index eb8978b5..5d284fb8 100644 --- a/sandbox_jface_cleanup_test/META-INF/MANIFEST.MF +++ b/sandbox_jface_cleanup_test/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: jface cleanup tests Bundle-SymbolicName: sandbox_jface_cleanup_test;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_jface_cleanup Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.junit, diff --git a/sandbox_jface_cleanup_test/pom.xml b/sandbox_jface_cleanup_test/pom.xml index 0455784a..0d0a8e6d 100644 --- a/sandbox_jface_cleanup_test/pom.xml +++ b/sandbox_jface_cleanup_test/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_jface_cleanup_test Sandbox jface cleanup test diff --git a/sandbox_junit_cleanup/META-INF/MANIFEST.MF b/sandbox_junit_cleanup/META-INF/MANIFEST.MF index 983e3087..c5c4297e 100644 --- a/sandbox_junit_cleanup/META-INF/MANIFEST.MF +++ b/sandbox_junit_cleanup/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: junit_cleanup Bundle-SymbolicName: sandbox_junit_cleanup;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, diff --git a/sandbox_junit_cleanup/pom.xml b/sandbox_junit_cleanup/pom.xml index f7ab6315..801d7adb 100644 --- a/sandbox_junit_cleanup/pom.xml +++ b/sandbox_junit_cleanup/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_junit_cleanup Sandbox junit cleanup diff --git a/sandbox_junit_cleanup_feature/feature.xml b/sandbox_junit_cleanup_feature/feature.xml index 07dd01fc..39a4608a 100644 --- a/sandbox_junit_cleanup_feature/feature.xml +++ b/sandbox_junit_cleanup_feature/feature.xml @@ -2,7 +2,7 @@ @@ -34,10 +34,11 @@ + + version="1.2.0.qualifier"/> diff --git a/sandbox_junit_cleanup_feature/pom.xml b/sandbox_junit_cleanup_feature/pom.xml index 51001e58..777b74e1 100644 --- a/sandbox_junit_cleanup_feature/pom.xml +++ b/sandbox_junit_cleanup_feature/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_junit_cleanup_feature Sandbox junit cleanup Feature diff --git a/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF b/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF index 9928de47..d0c3ec7f 100644 --- a/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF +++ b/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF @@ -2,11 +2,13 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: junit cleanup tests Bundle-SymbolicName: sandbox_junit_cleanup_test;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_junit_cleanup Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.junit, - sandbox_test_commons + sandbox_test_commons, + org.eclipse.jdt.junit4.runtime;bundle-version="1.3.100", + org.eclipse.jdt.junit5.runtime;bundle-version="1.1.300" Bundle-ActivationPolicy: lazy Eclipse-BundleShape: dir Eclipse-BuddyPolicy: global @@ -18,11 +20,11 @@ Import-Package: org.junit.jupiter.api;version="5.7.1", org.junit.jupiter.api.io;version="5.7.1", org.junit.jupiter.api.parallel;version="5.7.1", org.junit.jupiter.params;version="5.7.1", - org.junit.jupiter.params.aggregator;version="5.7.1", - org.junit.jupiter.params.converter;version="5.7.1", - org.junit.jupiter.params.provider;version="5.7.1", - org.junit.jupiter.params.support;version="5.7.1", - org.opentest4j;version="1.2.0", + org.junit.jupiter.params.aggregator, + org.junit.jupiter.params.converter, + org.junit.jupiter.params.provider, + org.junit.jupiter.params.support, + org.opentest4j, org.sandbox.jdt.internal.common, org.sandbox.jdt.internal.corext.fix2 Automatic-Module-Name: sandbox.junit.cleanup.test diff --git a/sandbox_junit_cleanup_test/pom.xml b/sandbox_junit_cleanup_test/pom.xml index 44eb41f2..a782915b 100644 --- a/sandbox_junit_cleanup_test/pom.xml +++ b/sandbox_junit_cleanup_test/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_junit_cleanup_test Sandbox junit cleanup test diff --git a/sandbox_platform_helper/META-INF/MANIFEST.MF b/sandbox_platform_helper/META-INF/MANIFEST.MF index a3265ec0..3c8a643f 100644 --- a/sandbox_platform_helper/META-INF/MANIFEST.MF +++ b/sandbox_platform_helper/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Automatic-Module-Name: sandbox.platform.helper Bundle-Name: sandbox plaform helper Bundle-SymbolicName: sandbox_platform_helper;singleton:=true Bundle-Vendor: sandbox -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, diff --git a/sandbox_platform_helper/pom.xml b/sandbox_platform_helper/pom.xml index 1823ff63..c0c59452 100644 --- a/sandbox_platform_helper/pom.xml +++ b/sandbox_platform_helper/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_platform_helper Sandbox platform helper diff --git a/sandbox_platform_helper_feature/feature.xml b/sandbox_platform_helper_feature/feature.xml index 0eabb771..fd936473 100644 --- a/sandbox_platform_helper_feature/feature.xml +++ b/sandbox_platform_helper_feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/sandbox_platform_helper_feature/pom.xml b/sandbox_platform_helper_feature/pom.xml index a6e57881..d1e67701 100644 --- a/sandbox_platform_helper_feature/pom.xml +++ b/sandbox_platform_helper_feature/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_platform_helper_feature Sandbox platform helper Feature diff --git a/sandbox_platform_helper_test/META-INF/MANIFEST.MF b/sandbox_platform_helper_test/META-INF/MANIFEST.MF index 077cfb79..13bc20ee 100644 --- a/sandbox_platform_helper_test/META-INF/MANIFEST.MF +++ b/sandbox_platform_helper_test/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: platform helper tests Bundle-SymbolicName: sandbox_platform_helper_test;singleton:=true Bundle-Vendor: sandbox -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_platform_helper Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.junit, diff --git a/sandbox_platform_helper_test/pom.xml b/sandbox_platform_helper_test/pom.xml index c4fc71f9..1b1298c4 100644 --- a/sandbox_platform_helper_test/pom.xml +++ b/sandbox_platform_helper_test/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_platform_helper_test Sandbox platform helper test diff --git a/sandbox_product/category.xml b/sandbox_product/category.xml index efe46f48..7d3967b6 100644 --- a/sandbox_product/category.xml +++ b/sandbox_product/category.xml @@ -24,6 +24,9 @@ + + + Description of sandbox category diff --git a/sandbox_product/pom.xml b/sandbox_product/pom.xml index d7a08fac..b8146f4a 100644 --- a/sandbox_product/pom.xml +++ b/sandbox_product/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_product Sandbox product @@ -24,6 +24,10 @@ org.sandbox sandbox_jface_cleanup_feature + + org.sandbox + sandbox_junit_cleanup_feature + org.sandbox sandbox_tools_feature @@ -42,7 +46,7 @@ - sandbox.repository_${rcp-version}-1.1.0 + sandbox.repository_${rcp-version}-1.2.0 org.eclipse.tycho diff --git a/sandbox_product/sandbox.product b/sandbox_product/sandbox.product index 6cfa8e94..33c7868f 100644 --- a/sandbox_product/sandbox.product +++ b/sandbox_product/sandbox.product @@ -1,7 +1,7 @@ - + @@ -224,8 +224,6 @@ United States, other countries, or both. - - diff --git a/sandbox_target/eclipse.target b/sandbox_target/eclipse.target index 0ddbc508..ff9d4fd2 100644 --- a/sandbox_target/eclipse.target +++ b/sandbox_target/eclipse.target @@ -3,67 +3,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -81,36 +44,42 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sandbox_target/pom.xml b/sandbox_target/pom.xml index 15afb1ca..a75e7a6f 100644 --- a/sandbox_target/pom.xml +++ b/sandbox_target/pom.xml @@ -5,7 +5,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_target Sandbox target diff --git a/sandbox_test_commons/META-INF/MANIFEST.MF b/sandbox_test_commons/META-INF/MANIFEST.MF index 589b11b8..6f6e53cb 100644 --- a/sandbox_test_commons/META-INF/MANIFEST.MF +++ b/sandbox_test_commons/META-INF/MANIFEST.MF @@ -2,25 +2,26 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: sandbox test commons Bundle-SymbolicName: sandbox_test_commons;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-17 Automatic-Module-Name: sandbox.test.commons.singleton.true Eclipse-BuddyPolicy: global Eclipse-BundleShape: dir -Import-Package: org.junit.jupiter.api;version="5.7.1", - org.junit.jupiter.api.condition;version="[5.10.0,6.0.0)", - org.junit.jupiter.api.extension;version="5.7.1", - org.junit.jupiter.api.extension.support;version="[5.10.0,6.0.0)", - org.junit.jupiter.api.function;version="[5.10.0,6.0.0)", - org.junit.jupiter.api.io;version="[5.10.0,6.0.0)", - org.junit.jupiter.api.parallel;version="[5.10.0,6.0.0)", - org.junit.jupiter.params;version="[5.10.0,6.0.0)" +Import-Package: org.junit.jupiter.api, + org.junit.jupiter.api.condition, + org.junit.jupiter.api.extension, + org.junit.jupiter.api.extension.support, + org.junit.jupiter.api.function, + org.junit.jupiter.api.io, + org.junit.jupiter.api.parallel, + org.junit.jupiter.params Bundle-ActivationPolicy: lazy -Require-Bundle: org.junit, - org.eclipse.jdt.ui, +Require-Bundle: org.eclipse.jdt.ui, org.eclipse.jdt.core, org.eclipse.osgi, org.eclipse.core.resources, org.eclipse.core.runtime, - org.eclipse.ltk.core.refactoring + org.eclipse.ltk.core.refactoring, + org.eclipse.jdt.junit4.runtime, + org.eclipse.jdt.junit5.runtime Export-Package: org.sandbox.jdt.ui.tests.quickfix.rules diff --git a/sandbox_test_commons/pom.xml b/sandbox_test_commons/pom.xml index 95c515f0..ad9bef54 100644 --- a/sandbox_test_commons/pom.xml +++ b/sandbox_test_commons/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_test_commons Sandbox test commons diff --git a/sandbox_tools/META-INF/MANIFEST.MF b/sandbox_tools/META-INF/MANIFEST.MF index 04a053a9..fae69b60 100644 --- a/sandbox_tools/META-INF/MANIFEST.MF +++ b/sandbox_tools/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: tools Bundle-SymbolicName: sandbox_tools;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, diff --git a/sandbox_tools/pom.xml b/sandbox_tools/pom.xml index fb65e2b4..bb7213f5 100644 --- a/sandbox_tools/pom.xml +++ b/sandbox_tools/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_tools Sandbox tools diff --git a/sandbox_tools_feature/feature.xml b/sandbox_tools_feature/feature.xml index e08756d0..79f840c2 100644 --- a/sandbox_tools_feature/feature.xml +++ b/sandbox_tools_feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/sandbox_tools_feature/pom.xml b/sandbox_tools_feature/pom.xml index e448f127..48fbdfb1 100644 --- a/sandbox_tools_feature/pom.xml +++ b/sandbox_tools_feature/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_tools_feature Sandbox tools Feature diff --git a/sandbox_tools_test/META-INF/MANIFEST.MF b/sandbox_tools_test/META-INF/MANIFEST.MF index 4c0be004..5f5ec47d 100644 --- a/sandbox_tools_test/META-INF/MANIFEST.MF +++ b/sandbox_tools_test/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Tools tests Bundle-SymbolicName: sandbox_tools_test;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_tools Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: sandbox_test_commons diff --git a/sandbox_tools_test/pom.xml b/sandbox_tools_test/pom.xml index 19ad1907..86e210dc 100644 --- a/sandbox_tools_test/pom.xml +++ b/sandbox_tools_test/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_tools_test Sandbox tools test diff --git a/sandbox_usage_view/META-INF/MANIFEST.MF b/sandbox_usage_view/META-INF/MANIFEST.MF index 46d2c66b..40d91fba 100644 --- a/sandbox_usage_view/META-INF/MANIFEST.MF +++ b/sandbox_usage_view/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: sandbox_usage_view Bundle-SymbolicName: sandbox_usage_view;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Automatic-Module-Name: ui.sandbox.fragment Bundle-RequiredExecutionEnvironment: JavaSE-17 Bundle-ActivationPolicy: lazy diff --git a/sandbox_usage_view/pom.xml b/sandbox_usage_view/pom.xml index 87c24d47..646f87e7 100644 --- a/sandbox_usage_view/pom.xml +++ b/sandbox_usage_view/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_usage_view Sandbox usage view diff --git a/sandbox_usage_view_feature/feature.xml b/sandbox_usage_view_feature/feature.xml index 1fa8659b..55ba66dc 100644 --- a/sandbox_usage_view_feature/feature.xml +++ b/sandbox_usage_view_feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/sandbox_usage_view_feature/pom.xml b/sandbox_usage_view_feature/pom.xml index a0120dcd..a350af71 100644 --- a/sandbox_usage_view_feature/pom.xml +++ b/sandbox_usage_view_feature/pom.xml @@ -4,7 +4,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_usage_view_feature Sandbox usage view Feature diff --git a/sandbox_web/.settings/org.eclipse.core.resources.prefs b/sandbox_web/.settings/org.eclipse.core.resources.prefs index 4824b802..4c28b1a8 100644 --- a/sandbox_web/.settings/org.eclipse.core.resources.prefs +++ b/sandbox_web/.settings/org.eclipse.core.resources.prefs @@ -1,2 +1,4 @@ eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 encoding/=UTF-8 diff --git a/sandbox_web/pom.xml b/sandbox_web/pom.xml index 653c6fdf..60fc2a11 100644 --- a/sandbox_web/pom.xml +++ b/sandbox_web/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_web RCP Sandbox p2 update site diff --git a/sandbox_xml_cleanup/META-INF/MANIFEST.MF b/sandbox_xml_cleanup/META-INF/MANIFEST.MF index b8ecb9dc..a919619b 100644 --- a/sandbox_xml_cleanup/META-INF/MANIFEST.MF +++ b/sandbox_xml_cleanup/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: xml_cleanup Bundle-SymbolicName: sandbox_xml_cleanup;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, diff --git a/sandbox_xml_cleanup/pom.xml b/sandbox_xml_cleanup/pom.xml index b0872d54..9150161c 100644 --- a/sandbox_xml_cleanup/pom.xml +++ b/sandbox_xml_cleanup/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_xml_cleanup Sandbox xml cleanup diff --git a/sandbox_xml_cleanup_feature/feature.xml b/sandbox_xml_cleanup_feature/feature.xml index 085d7ea5..6f9e658c 100644 --- a/sandbox_xml_cleanup_feature/feature.xml +++ b/sandbox_xml_cleanup_feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/sandbox_xml_cleanup_feature/pom.xml b/sandbox_xml_cleanup_feature/pom.xml index 58a6e565..10ed5a37 100644 --- a/sandbox_xml_cleanup_feature/pom.xml +++ b/sandbox_xml_cleanup_feature/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_xml_cleanup_feature Sandbox xml cleanup Feature diff --git a/sandbox_xml_cleanup_test/META-INF/MANIFEST.MF b/sandbox_xml_cleanup_test/META-INF/MANIFEST.MF index 0e5924b1..100b6549 100644 --- a/sandbox_xml_cleanup_test/META-INF/MANIFEST.MF +++ b/sandbox_xml_cleanup_test/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: xml cleanup tests Bundle-SymbolicName: sandbox_xml_cleanup_test;singleton:=true -Bundle-Version: 1.1.0.qualifier +Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_xml_cleanup Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.junit, diff --git a/sandbox_xml_cleanup_test/pom.xml b/sandbox_xml_cleanup_test/pom.xml index d3d42ab9..d3c54cc4 100644 --- a/sandbox_xml_cleanup_test/pom.xml +++ b/sandbox_xml_cleanup_test/pom.xml @@ -6,7 +6,7 @@ org.sandbox central - 1.1.0-SNAPSHOT + 1.2.0-SNAPSHOT sandbox_xml_cleanup_test Sandbox xml cleanup test From 50172b7cde6b840fd4b27dca03f14b181ff34ccb Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Fri, 1 Nov 2024 21:43:43 +0100 Subject: [PATCH 49/58] add more plugins to target --- .../META-INF/MANIFEST.MF | 27 ++-- sandbox_product/sandbox.product | 17 +-- sandbox_target/eclipse.target | 121 ++++++++++-------- sandbox_test_commons/META-INF/MANIFEST.MF | 3 +- 4 files changed, 87 insertions(+), 81 deletions(-) diff --git a/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF b/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF index d0c3ec7f..62010ec6 100644 --- a/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF +++ b/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF @@ -7,23 +7,30 @@ Fragment-Host: sandbox_junit_cleanup Bundle-RequiredExecutionEnvironment: JavaSE-17 Require-Bundle: org.junit, sandbox_test_commons, - org.eclipse.jdt.junit4.runtime;bundle-version="1.3.100", - org.eclipse.jdt.junit5.runtime;bundle-version="1.1.300" + org.eclipse.jdt.junit4.runtime, + org.eclipse.jdt.junit5.runtime, + org.eclipse.jdt.junit.runtime Bundle-ActivationPolicy: lazy Eclipse-BundleShape: dir Eclipse-BuddyPolicy: global -Import-Package: org.junit.jupiter.api;version="5.7.1", - org.junit.jupiter.api.condition;version="5.7.1", - org.junit.jupiter.api.extension;version="5.7.1", - org.junit.jupiter.api.extension.support;version="5.7.1", - org.junit.jupiter.api.function;version="5.7.1", - org.junit.jupiter.api.io;version="5.7.1", - org.junit.jupiter.api.parallel;version="5.7.1", - org.junit.jupiter.params;version="5.7.1", +Import-Package: org.junit.jupiter.api, + org.junit.jupiter.api.condition, + org.junit.jupiter.api.extension, + org.junit.jupiter.api.extension.support, + org.junit.jupiter.api.function, + org.junit.jupiter.api.io, + org.junit.jupiter.api.parallel, + org.junit.jupiter.params, org.junit.jupiter.params.aggregator, org.junit.jupiter.params.converter, org.junit.jupiter.params.provider, org.junit.jupiter.params.support, + org.junit.jupiter.migrationsupport, + org.junit.jupiter.migrationsupport.conditions, + org.junit.jupiter.migrationsupport.rules, + org.junit.platform.suite.api, + org.junit.platform.suite.commons;status=INTERNAL, + org.junit.platform.suite.engine;status=INTERNAL, org.opentest4j, org.sandbox.jdt.internal.common, org.sandbox.jdt.internal.corext.fix2 diff --git a/sandbox_product/sandbox.product b/sandbox_product/sandbox.product index 33c7868f..9538a2af 100644 --- a/sandbox_product/sandbox.product +++ b/sandbox_product/sandbox.product @@ -1,7 +1,8 @@ - + + @@ -34,6 +35,7 @@ + org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21 org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21 @@ -192,28 +194,15 @@ United States, other countries, or both. - - - - - - - - - - - - - diff --git a/sandbox_target/eclipse.target b/sandbox_target/eclipse.target index ff9d4fd2..2fc084b6 100644 --- a/sandbox_target/eclipse.target +++ b/sandbox_target/eclipse.target @@ -4,29 +4,39 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -45,39 +55,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 29c0c608fd948ae819efe1d18796e6b554aa6d04 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 3 Nov 2024 17:53:38 +0100 Subject: [PATCH 51/58] extend list of features in target and product --- sandbox_product/sandbox.product | 9 ++++++++- sandbox_target/eclipse.target | 20 -------------------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/sandbox_product/sandbox.product b/sandbox_product/sandbox.product index f4289eb3..16cc87a8 100644 --- a/sandbox_product/sandbox.product +++ b/sandbox_product/sandbox.product @@ -1,7 +1,7 @@ - + @@ -217,6 +217,13 @@ United States, other countries, or both. + + + + + + + diff --git a/sandbox_target/eclipse.target b/sandbox_target/eclipse.target index d5b6a07d..137d6a3f 100644 --- a/sandbox_target/eclipse.target +++ b/sandbox_target/eclipse.target @@ -18,38 +18,19 @@ - - - - - - - - - - - - - - - - - - - @@ -98,7 +79,6 @@ - From ad23fab438dc0f059b54d987012e697611d92e63 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 3 Nov 2024 19:01:46 +0100 Subject: [PATCH 52/58] add separate constants for each migration piece --- .../corext/fix2/MYCleanUpConstants.java | 52 +++++++++++++++++++ .../jdt/internal/ui/fix/JUnitCleanUpCore.java | 27 ++++++++-- .../preferences/cleanup/CleanUpMessages.java | 15 +++++- .../cleanup/CleanUpMessages.properties | 2 +- .../DefaultCleanUpOptionsInitializer.java | 12 +++++ .../cleanup/SandboxCodeTabPage.java | 21 ++++++-- .../SaveActionCleanUpOptionsInitializer.java | 12 +++++ 7 files changed, 132 insertions(+), 9 deletions(-) diff --git a/sandbox_common/src/org/sandbox/jdt/internal/corext/fix2/MYCleanUpConstants.java b/sandbox_common/src/org/sandbox/jdt/internal/corext/fix2/MYCleanUpConstants.java index 7c86c2b8..5873996d 100644 --- a/sandbox_common/src/org/sandbox/jdt/internal/corext/fix2/MYCleanUpConstants.java +++ b/sandbox_common/src/org/sandbox/jdt/internal/corext/fix2/MYCleanUpConstants.java @@ -75,6 +75,58 @@ public class MYCleanUpConstants { * */ public static final String JUNIT_CLEANUP= "cleanup.junitcleanup"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_ASSERT= "cleanup.junitcleanup_4_assert"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_ASSUME= "cleanup.junitcleanup_4_assume"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_SUITE= "cleanup.junitcleanup_4_suite"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_BEFORE= "cleanup.junitcleanup_4_before"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_AFTER= "cleanup.junitcleanup_4_after"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_BEFORECLASS= "cleanup.junitcleanup_4_beforeclass"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_AFTERCLASS= "cleanup.junitcleanup_4_afterclass"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_IGNORE= "cleanup.junitcleanup_4_ignore"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_TEST= "cleanup.junitcleanup_4_test"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_RULETEMPORARYFOLDER= "cleanup.junitcleanup_4_ruletemporaryfolder"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_RULETESTNAME= "cleanup.junitcleanup_4_ruletestname"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_EXTERNALRESOURCE= "cleanup.junitcleanup_4_externalresource"; //$NON-NLS-1$ + /** + * + */ + public static final String JUNIT_CLEANUP_4_RUNWITH= "cleanup.junitcleanup_4_runwith"; //$NON-NLS-1$ /** * */ diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java index 3e8feb61..fdfe5c53 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/fix/JUnitCleanUpCore.java @@ -38,6 +38,7 @@ import org.eclipse.jdt.ui.cleanup.CleanUpRequirements; import org.eclipse.jdt.ui.cleanup.ICleanUpFix; import org.sandbox.jdt.internal.corext.fix.JUnitCleanUpFixCore; +import org.sandbox.jdt.internal.corext.fix2.MYCleanUpConstants; public class JUnitCleanUpCore extends AbstractCleanUp { public JUnitCleanUpCore(final Map options) { @@ -98,11 +99,29 @@ public String getPreview() { return sb.toString(); } + + private EnumSet computeFixSet() { - EnumSet fixSet= EnumSet.noneOf(JUnitCleanUpFixCore.class); - if (isEnabled(JUNIT_CLEANUP)) { - fixSet= EnumSet.allOf(JUnitCleanUpFixCore.class); - } + EnumSet fixSet = isEnabled(JUNIT_CLEANUP) + ? EnumSet.allOf(JUnitCleanUpFixCore.class) + : EnumSet.noneOf(JUnitCleanUpFixCore.class); + Map cleanupMappings = Map.of( + MYCleanUpConstants.JUNIT_CLEANUP_4_ASSERT, JUnitCleanUpFixCore.ASSERT, + MYCleanUpConstants.JUNIT_CLEANUP_4_ASSUME, JUnitCleanUpFixCore.ASSUME, + MYCleanUpConstants.JUNIT_CLEANUP_4_AFTER, JUnitCleanUpFixCore.AFTER, + MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORE, JUnitCleanUpFixCore.BEFORE, + MYCleanUpConstants.JUNIT_CLEANUP_4_AFTERCLASS, JUnitCleanUpFixCore.AFTERCLASS, + MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORECLASS, JUnitCleanUpFixCore.BEFORECLASS, + MYCleanUpConstants.JUNIT_CLEANUP_4_TEST, JUnitCleanUpFixCore.TEST, + MYCleanUpConstants.JUNIT_CLEANUP_4_IGNORE, JUnitCleanUpFixCore.IGNORE, + MYCleanUpConstants.JUNIT_CLEANUP_4_RULETEMPORARYFOLDER, JUnitCleanUpFixCore.RULETEMPORARYFOLDER, + MYCleanUpConstants.JUNIT_CLEANUP_4_RULETESTNAME, JUnitCleanUpFixCore.RULETESTNAME + ); + cleanupMappings.forEach((config, fix) -> { + if (!isEnabled(config)) { + fixSet.remove(fix); + } + }); return fixSet; } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java index ca6684b7..16702af2 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.java @@ -17,8 +17,21 @@ public class CleanUpMessages { private static final String BUNDLE_NAME= "org.sandbox.jdt.internal.ui.preferences.cleanup.CleanUpMessages"; //$NON-NLS-1$ - public static String JavaFeatureTabPage_GroupName_Java1d8; + public static String JavaFeatureTabPage_GroupName_JUnit; public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_ASSERT; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_ASSUME; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_IGNORE; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_TEST; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_BEFORE; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_AFTER; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_BEFORECLASS; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_AFTERCLASS; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_RULETEMPORARYFOLDER; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_RULETESTNAME; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_EXTERNALRESOURCE; + public static String JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_RUNWITH; + static { // initialize resource bundle diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties index 4434c43c..af0bab99 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/CleanUpMessages.properties @@ -1,2 +1,2 @@ JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP=JUNIT_CLEANUP -JavaFeatureTabPage_GroupName_Java1d8=Java 8 \ No newline at end of file +JavaFeatureTabPage_GroupName_JUnit=JUnit \ No newline at end of file diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/DefaultCleanUpOptionsInitializer.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/DefaultCleanUpOptionsInitializer.java index 07060059..ec7a8f4e 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/DefaultCleanUpOptionsInitializer.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/DefaultCleanUpOptionsInitializer.java @@ -22,5 +22,17 @@ public class DefaultCleanUpOptionsInitializer implements ICleanUpOptionsInitiali @Override public void setDefaultOptions(CleanUpOptions options) { options.setOption(MYCleanUpConstants.JUNIT_CLEANUP, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTER, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORE, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTERCLASS, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORECLASS, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSUME, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSERT, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_IGNORE, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_TEST, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETESTNAME, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETEMPORARYFOLDER, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_EXTERNALRESOURCE, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_RUNWITH, CleanUpOptions.FALSE); } } diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java index 0e9216d7..0acdbd6b 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SandboxCodeTabPage.java @@ -39,11 +39,26 @@ protected AbstractCleanUp[] createPreviewCleanUps(Map values) { @Override protected void doCreatePreferences(Composite composite, int numColumns) { - Group java1d8Group= createGroup(numColumns, composite, CleanUpMessages.JavaFeatureTabPage_GroupName_Java1d8); - final CheckboxPreference junitcb= createCheckboxPref(java1d8Group, numColumns, + Group junitGroup= createGroup(numColumns, composite, CleanUpMessages.JavaFeatureTabPage_GroupName_JUnit); + final CheckboxPreference junitcb= createCheckboxPref(junitGroup, numColumns, CleanUpMessages.JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP, MYCleanUpConstants.JUNIT_CLEANUP, FALSE_TRUE); - intent(java1d8Group); + intent(junitGroup); + final CheckboxPreference junit_assert= createCheckboxPref(junitGroup, numColumns, + CleanUpMessages.JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_ASSERT, MYCleanUpConstants.JUNIT_CLEANUP_4_ASSERT, + FALSE_TRUE); + final CheckboxPreference junit_assume= createCheckboxPref(junitGroup, numColumns, + CleanUpMessages.JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_ASSUME, MYCleanUpConstants.JUNIT_CLEANUP_4_ASSUME, + FALSE_TRUE); + final CheckboxPreference junit_ignore= createCheckboxPref(junitGroup, numColumns, + CleanUpMessages.JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_IGNORE, MYCleanUpConstants.JUNIT_CLEANUP_4_IGNORE, + FALSE_TRUE); + final CheckboxPreference junit_test= createCheckboxPref(junitGroup, numColumns, + CleanUpMessages.JavaFeatureTabPage_CheckboxName_JUNIT_CLEANUP_TEST, MYCleanUpConstants.JUNIT_CLEANUP_4_TEST, + FALSE_TRUE); + registerSlavePreference(junitcb, new CheckboxPreference[] {junit_assert, junit_assume,junit_ignore,junit_test}); + intent(junitGroup); + registerPreference(junitcb); } } \ No newline at end of file diff --git a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SaveActionCleanUpOptionsInitializer.java b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SaveActionCleanUpOptionsInitializer.java index 3acdacc0..f24a4f33 100644 --- a/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SaveActionCleanUpOptionsInitializer.java +++ b/sandbox_junit_cleanup/src/org/sandbox/jdt/internal/ui/preferences/cleanup/SaveActionCleanUpOptionsInitializer.java @@ -22,5 +22,17 @@ public class SaveActionCleanUpOptionsInitializer implements ICleanUpOptionsIniti @Override public void setDefaultOptions(CleanUpOptions options) { options.setOption(MYCleanUpConstants.JUNIT_CLEANUP, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTER, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORE, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTERCLASS, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORECLASS, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSUME, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSERT, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_IGNORE, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_TEST, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETESTNAME, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETEMPORARYFOLDER, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_EXTERNALRESOURCE, CleanUpOptions.FALSE); + options.setOption(MYCleanUpConstants.JUNIT_CLEANUP_4_RUNWITH, CleanUpOptions.FALSE); } } From f7b69a9b2f39a7048cfe6e9d73c5630ccb2b8d0c Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Mon, 4 Nov 2024 21:56:15 +0100 Subject: [PATCH 53/58] test update 21 --- .../META-INF/MANIFEST.MF | 2 +- sandbox_common/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_extra_search/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_jface_cleanup/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_junit_cleanup/.classpath | 12 +---- sandbox_junit_cleanup/META-INF/MANIFEST.MF | 4 +- sandbox_junit_cleanup_test/.classpath | 16 ++----- .../META-INF/MANIFEST.MF | 39 ++++++---------- sandbox_platform_helper/META-INF/MANIFEST.MF | 2 +- .../META-INF/MANIFEST.MF | 2 +- sandbox_product/category.xml | 4 +- sandbox_product/sandbox.product | 46 +++++++------------ sandbox_target/eclipse.target | 16 ++----- sandbox_test_commons/.classpath | 9 +--- sandbox_test_commons/META-INF/MANIFEST.MF | 2 +- sandbox_tools/META-INF/MANIFEST.MF | 2 +- sandbox_tools_test/META-INF/MANIFEST.MF | 2 +- sandbox_usage_view/META-INF/MANIFEST.MF | 2 +- sandbox_xml_cleanup/META-INF/MANIFEST.MF | 2 +- sandbox_xml_cleanup_test/META-INF/MANIFEST.MF | 2 +- 25 files changed, 61 insertions(+), 119 deletions(-) diff --git a/sandbox_cleanup_application/META-INF/MANIFEST.MF b/sandbox_cleanup_application/META-INF/MANIFEST.MF index 0d98048b..206d4523 100644 --- a/sandbox_cleanup_application/META-INF/MANIFEST.MF +++ b/sandbox_cleanup_application/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-SymbolicName: sandbox_cleanup_application;singleton:=true Bundle-Vendor: sandbox Bundle-Version: 1.2.0.qualifier Automatic-Module-Name: ui.sandbox.fragment -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-ActivationPolicy: lazy Eclipse-BuddyPolicy: global Require-Bundle: org.eclipse.core.runtime, diff --git a/sandbox_common/META-INF/MANIFEST.MF b/sandbox_common/META-INF/MANIFEST.MF index 503ea353..f15b8cba 100644 --- a/sandbox_common/META-INF/MANIFEST.MF +++ b/sandbox_common/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: sandbox_common Bundle-SymbolicName: sandbox_common;singleton:=true Bundle-Vendor: sandbox Bundle-Version: 1.2.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-ActivationPolicy: lazy Eclipse-BuddyPolicy: global Require-Bundle: org.eclipse.core.runtime, diff --git a/sandbox_encoding_quickfix/META-INF/MANIFEST.MF b/sandbox_encoding_quickfix/META-INF/MANIFEST.MF index 0a47d9da..72f1f29e 100644 --- a/sandbox_encoding_quickfix/META-INF/MANIFEST.MF +++ b/sandbox_encoding_quickfix/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-Name: Tool Bundle-SymbolicName: sandbox_encoding_quickfix;singleton:=true Bundle-Vendor: sandbox Bundle-Version: 1.2.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, org.eclipse.core.filesystem, diff --git a/sandbox_encoding_quickfix_test/META-INF/MANIFEST.MF b/sandbox_encoding_quickfix_test/META-INF/MANIFEST.MF index df51b2c4..5a167427 100644 --- a/sandbox_encoding_quickfix_test/META-INF/MANIFEST.MF +++ b/sandbox_encoding_quickfix_test/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-SymbolicName: sandbox_encoding_quickfix_test;singleton:=true Bundle-Vendor: sandbox Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_encoding_quickfix -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.junit, sandbox_test_commons Bundle-ActivationPolicy: lazy diff --git a/sandbox_extra_search/META-INF/MANIFEST.MF b/sandbox_extra_search/META-INF/MANIFEST.MF index 9389fa5b..9e3f2d08 100644 --- a/sandbox_extra_search/META-INF/MANIFEST.MF +++ b/sandbox_extra_search/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-SymbolicName: sandbox_extra_search;singleton:=true Bundle-Vendor: sandbox Bundle-Version: 1.2.0.qualifier Automatic-Module-Name: ui.sandbox.fragment -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-ActivationPolicy: lazy Eclipse-BuddyPolicy: global Require-Bundle: org.eclipse.core.runtime, diff --git a/sandbox_functional_converter/META-INF/MANIFEST.MF b/sandbox_functional_converter/META-INF/MANIFEST.MF index b50d6104..88b26945 100644 --- a/sandbox_functional_converter/META-INF/MANIFEST.MF +++ b/sandbox_functional_converter/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: functional_converter Bundle-SymbolicName: sandbox_functional_converter;singleton:=true Bundle-Version: 1.2.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, org.eclipse.core.filesystem, diff --git a/sandbox_functional_converter_test/META-INF/MANIFEST.MF b/sandbox_functional_converter_test/META-INF/MANIFEST.MF index d37fab31..c79a2fd6 100644 --- a/sandbox_functional_converter_test/META-INF/MANIFEST.MF +++ b/sandbox_functional_converter_test/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: Tool tests Bundle-SymbolicName: sandbox_functional_converter_test;singleton:=true Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_functional_converter -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: sandbox_test_commons Bundle-ActivationPolicy: lazy Eclipse-BundleShape: dir diff --git a/sandbox_jface_cleanup/META-INF/MANIFEST.MF b/sandbox_jface_cleanup/META-INF/MANIFEST.MF index d709d24c..4ad0608b 100644 --- a/sandbox_jface_cleanup/META-INF/MANIFEST.MF +++ b/sandbox_jface_cleanup/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: jface_cleanup Bundle-SymbolicName: sandbox_jface_cleanup;singleton:=true Bundle-Version: 1.2.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, org.eclipse.core.filesystem, diff --git a/sandbox_jface_cleanup_test/META-INF/MANIFEST.MF b/sandbox_jface_cleanup_test/META-INF/MANIFEST.MF index 5d284fb8..c33ff2f8 100644 --- a/sandbox_jface_cleanup_test/META-INF/MANIFEST.MF +++ b/sandbox_jface_cleanup_test/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: jface cleanup tests Bundle-SymbolicName: sandbox_jface_cleanup_test;singleton:=true Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_jface_cleanup -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.junit, sandbox_test_commons Bundle-ActivationPolicy: lazy diff --git a/sandbox_junit_cleanup/.classpath b/sandbox_junit_cleanup/.classpath index e3a1fc6e..eabb7bcf 100644 --- a/sandbox_junit_cleanup/.classpath +++ b/sandbox_junit_cleanup/.classpath @@ -1,15 +1,7 @@ - - - - - - - - - - + + diff --git a/sandbox_junit_cleanup/META-INF/MANIFEST.MF b/sandbox_junit_cleanup/META-INF/MANIFEST.MF index c5c4297e..18f36867 100644 --- a/sandbox_junit_cleanup/META-INF/MANIFEST.MF +++ b/sandbox_junit_cleanup/META-INF/MANIFEST.MF @@ -1,9 +1,9 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 -Bundle-Name: junit_cleanup +Bundle-Name: junit cleanup Bundle-SymbolicName: sandbox_junit_cleanup;singleton:=true Bundle-Version: 1.2.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, org.eclipse.core.filesystem, diff --git a/sandbox_junit_cleanup_test/.classpath b/sandbox_junit_cleanup_test/.classpath index 7931ec26..6f2bbb60 100644 --- a/sandbox_junit_cleanup_test/.classpath +++ b/sandbox_junit_cleanup_test/.classpath @@ -1,21 +1,11 @@ - + - + - - - - - - - - - - - + diff --git a/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF b/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF index 62010ec6..66733847 100644 --- a/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF +++ b/sandbox_junit_cleanup_test/META-INF/MANIFEST.MF @@ -4,34 +4,25 @@ Bundle-Name: junit cleanup tests Bundle-SymbolicName: sandbox_junit_cleanup_test;singleton:=true Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_junit_cleanup -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.junit, - sandbox_test_commons, - org.eclipse.jdt.junit4.runtime, - org.eclipse.jdt.junit5.runtime, - org.eclipse.jdt.junit.runtime + sandbox_test_commons Bundle-ActivationPolicy: lazy Eclipse-BundleShape: dir Eclipse-BuddyPolicy: global -Import-Package: org.junit.jupiter.api, - org.junit.jupiter.api.condition, - org.junit.jupiter.api.extension, - org.junit.jupiter.api.extension.support, - org.junit.jupiter.api.function, - org.junit.jupiter.api.io, - org.junit.jupiter.api.parallel, - org.junit.jupiter.params, - org.junit.jupiter.params.aggregator, - org.junit.jupiter.params.converter, - org.junit.jupiter.params.provider, - org.junit.jupiter.params.support, - org.junit.jupiter.migrationsupport, - org.junit.jupiter.migrationsupport.conditions, - org.junit.jupiter.migrationsupport.rules, - org.junit.platform.suite.api, - org.junit.platform.suite.commons;status=INTERNAL, - org.junit.platform.suite.engine;status=INTERNAL, - org.opentest4j, +Import-Package: org.junit.jupiter.api;version="5.7.1", + org.junit.jupiter.api.condition;version="5.7.1", + org.junit.jupiter.api.extension;version="5.7.1", + org.junit.jupiter.api.extension.support;version="5.7.1", + org.junit.jupiter.api.function;version="5.7.1", + org.junit.jupiter.api.io;version="5.7.1", + org.junit.jupiter.api.parallel;version="5.7.1", + org.junit.jupiter.params;version="5.7.1", + org.junit.jupiter.params.aggregator;version="5.7.1", + org.junit.jupiter.params.converter;version="5.7.1", + org.junit.jupiter.params.provider;version="5.7.1", + org.junit.jupiter.params.support;version="5.7.1", + org.opentest4j;version="1.2.0", org.sandbox.jdt.internal.common, org.sandbox.jdt.internal.corext.fix2 Automatic-Module-Name: sandbox.junit.cleanup.test diff --git a/sandbox_platform_helper/META-INF/MANIFEST.MF b/sandbox_platform_helper/META-INF/MANIFEST.MF index 3c8a643f..30469140 100644 --- a/sandbox_platform_helper/META-INF/MANIFEST.MF +++ b/sandbox_platform_helper/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-Name: sandbox plaform helper Bundle-SymbolicName: sandbox_platform_helper;singleton:=true Bundle-Vendor: sandbox Bundle-Version: 1.2.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, org.eclipse.core.filesystem, diff --git a/sandbox_platform_helper_test/META-INF/MANIFEST.MF b/sandbox_platform_helper_test/META-INF/MANIFEST.MF index 13bc20ee..04eabe73 100644 --- a/sandbox_platform_helper_test/META-INF/MANIFEST.MF +++ b/sandbox_platform_helper_test/META-INF/MANIFEST.MF @@ -5,7 +5,7 @@ Bundle-SymbolicName: sandbox_platform_helper_test;singleton:=true Bundle-Vendor: sandbox Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_platform_helper -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.junit, sandbox_test_commons Bundle-ActivationPolicy: lazy diff --git a/sandbox_product/category.xml b/sandbox_product/category.xml index 7d3967b6..279c1700 100644 --- a/sandbox_product/category.xml +++ b/sandbox_product/category.xml @@ -32,6 +32,6 @@ Description of sandbox category - - + + diff --git a/sandbox_product/sandbox.product b/sandbox_product/sandbox.product index 16cc87a8..46ea6fc9 100644 --- a/sandbox_product/sandbox.product +++ b/sandbox_product/sandbox.product @@ -1,7 +1,7 @@ - + @@ -13,7 +13,7 @@ -Xmx1024m -XX:+UseG1GC -XX:+UseStringDeduplication --Dosgi.requiredJavaVersion=11 +-Dosgi.requiredJavaVersion=21 -Dosgi.dataAreaRequiresExplicitInit=true -Dorg.eclipse.swt.graphics.Resource.reportNonDisposed=true --add-modules=ALL-SYSTEM @@ -190,25 +190,22 @@ United States, other countries, or both. - - - - - - + + + + - + + + + - - - + + + - - - - - + @@ -217,26 +214,15 @@ United States, other countries, or both. - - - - - - - - + - + - - - - diff --git a/sandbox_target/eclipse.target b/sandbox_target/eclipse.target index 137d6a3f..bf06a356 100644 --- a/sandbox_target/eclipse.target +++ b/sandbox_target/eclipse.target @@ -2,22 +2,13 @@ - + - - - - - - - - - @@ -32,7 +23,7 @@ - + @@ -47,13 +38,12 @@ - + - diff --git a/sandbox_test_commons/.classpath b/sandbox_test_commons/.classpath index 53a714c3..62a22e28 100644 --- a/sandbox_test_commons/.classpath +++ b/sandbox_test_commons/.classpath @@ -4,15 +4,8 @@ - - - - - - - - + diff --git a/sandbox_test_commons/META-INF/MANIFEST.MF b/sandbox_test_commons/META-INF/MANIFEST.MF index 55e43c9c..2557f891 100644 --- a/sandbox_test_commons/META-INF/MANIFEST.MF +++ b/sandbox_test_commons/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: sandbox test commons Bundle-SymbolicName: sandbox_test_commons;singleton:=true Bundle-Version: 1.2.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Automatic-Module-Name: sandbox.test.commons.singleton.true Eclipse-BuddyPolicy: global Eclipse-BundleShape: dir diff --git a/sandbox_tools/META-INF/MANIFEST.MF b/sandbox_tools/META-INF/MANIFEST.MF index fae69b60..2bba2274 100644 --- a/sandbox_tools/META-INF/MANIFEST.MF +++ b/sandbox_tools/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: tools Bundle-SymbolicName: sandbox_tools;singleton:=true Bundle-Version: 1.2.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, org.eclipse.core.filesystem, diff --git a/sandbox_tools_test/META-INF/MANIFEST.MF b/sandbox_tools_test/META-INF/MANIFEST.MF index 5f5ec47d..e9bd81ac 100644 --- a/sandbox_tools_test/META-INF/MANIFEST.MF +++ b/sandbox_tools_test/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: Tools tests Bundle-SymbolicName: sandbox_tools_test;singleton:=true Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_tools -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: sandbox_test_commons Bundle-ActivationPolicy: lazy Eclipse-BundleShape: dir diff --git a/sandbox_usage_view/META-INF/MANIFEST.MF b/sandbox_usage_view/META-INF/MANIFEST.MF index 40d91fba..636e3092 100644 --- a/sandbox_usage_view/META-INF/MANIFEST.MF +++ b/sandbox_usage_view/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: sandbox_usage_view Bundle-SymbolicName: sandbox_usage_view;singleton:=true Bundle-Version: 1.2.0.qualifier Automatic-Module-Name: ui.sandbox.fragment -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-ActivationPolicy: lazy Eclipse-BuddyPolicy: global Require-Bundle: org.eclipse.core.runtime, diff --git a/sandbox_xml_cleanup/META-INF/MANIFEST.MF b/sandbox_xml_cleanup/META-INF/MANIFEST.MF index a919619b..1eb7810e 100644 --- a/sandbox_xml_cleanup/META-INF/MANIFEST.MF +++ b/sandbox_xml_cleanup/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: xml_cleanup Bundle-SymbolicName: sandbox_xml_cleanup;singleton:=true Bundle-Version: 1.2.0.qualifier -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.eclipse.core.runtime, org.eclipse.core.filebuffers, org.eclipse.core.filesystem, diff --git a/sandbox_xml_cleanup_test/META-INF/MANIFEST.MF b/sandbox_xml_cleanup_test/META-INF/MANIFEST.MF index 100b6549..28f2ec95 100644 --- a/sandbox_xml_cleanup_test/META-INF/MANIFEST.MF +++ b/sandbox_xml_cleanup_test/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: xml cleanup tests Bundle-SymbolicName: sandbox_xml_cleanup_test;singleton:=true Bundle-Version: 1.2.0.qualifier Fragment-Host: sandbox_xml_cleanup -Bundle-RequiredExecutionEnvironment: JavaSE-17 +Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: org.junit, org.eclipse.jdt.ui, org.eclipse.jdt.core, From 8ddac4cf2518781aea9891abcffe7b2a727093f8 Mon Sep 17 00:00:00 2001 From: Carsten Hammer Date: Sun, 17 Nov 2024 16:28:33 +0100 Subject: [PATCH 54/58] update target and switch on all cleanup parts in tests --- sandbox_junit_cleanup/META-INF/MANIFEST.MF | 5 +- .../Java8/JUnitMigrationCleanUpTest.java | 65 +- .../testresources/rtstubs_17.jar | Bin 0 -> 854311 bytes sandbox_product/sandbox.product | 16 +- sandbox_product/sandbox.product.launch | 774 +----------------- sandbox_target/eclipse.target | 246 +++++- sandbox_test_commons/META-INF/MANIFEST.MF | 5 +- .../quickfix/rules/AbstractEclipseJava.java | 11 +- 8 files changed, 325 insertions(+), 797 deletions(-) create mode 100644 sandbox_junit_cleanup_test/testresources/rtstubs_17.jar diff --git a/sandbox_junit_cleanup/META-INF/MANIFEST.MF b/sandbox_junit_cleanup/META-INF/MANIFEST.MF index 18f36867..e1b33638 100644 --- a/sandbox_junit_cleanup/META-INF/MANIFEST.MF +++ b/sandbox_junit_cleanup/META-INF/MANIFEST.MF @@ -17,7 +17,10 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.jface, org.eclipse.ui.workbench, org.eclipse.jdt.core.manipulation, - sandbox_common + sandbox_common, + org.junit, + org.eclipse.jdt.junit.runtime, + org.eclipse.jdt.junit4.runtime Bundle-ActivationPolicy: lazy Eclipse-RegisterBuddy: org.eclipse.jdt.core.manipulation Import-Package: org.sandbox.jdt.internal.common, diff --git a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java index 14d39293..f3b294eb 100644 --- a/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java +++ b/sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java @@ -17,6 +17,7 @@ import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; +import org.eclipse.jdt.junit.JUnitCore; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -24,24 +25,24 @@ import org.junit.jupiter.params.provider.EnumSource; import org.sandbox.jdt.internal.corext.fix2.MYCleanUpConstants; import org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava; -import org.sandbox.jdt.ui.tests.quickfix.rules.EclipseJava8; +import org.sandbox.jdt.ui.tests.quickfix.rules.EclipseJava17; public class JUnitMigrationCleanUpTest { @RegisterExtension - AbstractEclipseJava context4junit4= new EclipseJava8(); + AbstractEclipseJava context4junit4= new EclipseJava17(); @RegisterExtension - AbstractEclipseJava context4junit5= new EclipseJava8(); + AbstractEclipseJava context4junit5= new EclipseJava17(); IPackageFragmentRoot fRootJUnit4; IPackageFragmentRoot fRootJUnit5; @BeforeEach public void setup() throws CoreException { - fRootJUnit4= context4junit4.createClasspathForJUnit("4"); - fRootJUnit5= context4junit5.createClasspathForJUnit("5"); + fRootJUnit4= context4junit4.createClasspathForJUnit(JUnitCore.JUNIT4_CONTAINER_PATH); + fRootJUnit5= context4junit5.createClasspathForJUnit(JUnitCore.JUNIT5_CONTAINER_PATH); } enum JUnitCleanupCases{ @@ -801,8 +802,21 @@ public void test3() throws IOException{ @EnumSource(JUnitCleanupCases.class) public void testJUnitCleanupParametrized(JUnitCleanupCases test) throws CoreException { IPackageFragment pack= fRootJUnit4.createPackageFragment("test", true, null); - ICompilationUnit cu= pack.createCompilationUnit("MyTest.java", test.given, false, null); //$NON-NLS-1$ + ICompilationUnit cu= pack.createCompilationUnit("MyTest.java", test.given, true, null); //$NON-NLS-1$ context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSERT); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSUME); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_SUITE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTER); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORECLASS); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTERCLASS); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_IGNORE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_TEST); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETEMPORARYFOLDER); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETESTNAME); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_EXTERNALRESOURCE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RUNWITH); context4junit4.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu}, new String[] {test.expected}, null); } @@ -902,6 +916,19 @@ public start(){ } """, false, null); //$NON-NLS-1$ context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSERT); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSUME); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_SUITE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTER); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORECLASS); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTERCLASS); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_IGNORE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_TEST); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETEMPORARYFOLDER); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETESTNAME); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_EXTERNALRESOURCE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RUNWITH); context4junit4.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu,cu2}, new String[] { """ package test; @@ -989,6 +1016,19 @@ public start(){ } """, false, null); //$NON-NLS-1$ context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSERT); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSUME); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_SUITE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTER); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORECLASS); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTERCLASS); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_IGNORE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_TEST); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETEMPORARYFOLDER); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETESTNAME); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_EXTERNALRESOURCE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RUNWITH); context4junit4.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu,cu2}, new String[] { """ package test; @@ -1082,6 +1122,19 @@ protected void after() { } """, false, null); //$NON-NLS-1$ context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSERT); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_ASSUME); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_SUITE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTER); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_BEFORECLASS); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_AFTERCLASS); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_IGNORE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_TEST); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETEMPORARYFOLDER); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RULETESTNAME); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_EXTERNALRESOURCE); + context4junit4.enable(MYCleanUpConstants.JUNIT_CLEANUP_4_RUNWITH); context4junit4.assertRefactoringResultAsExpected(new ICompilationUnit[] {cu,cu2,cu3}, new String[] { """ package test; diff --git a/sandbox_junit_cleanup_test/testresources/rtstubs_17.jar b/sandbox_junit_cleanup_test/testresources/rtstubs_17.jar new file mode 100644 index 0000000000000000000000000000000000000000..fb6cb938253c16ff2a7087318d6d67e0a37a4628 GIT binary patch literal 854311 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