From 0ab2173c425cfb43a092c65b310e7546650f7956 Mon Sep 17 00:00:00 2001 From: Denis Zhdanov Date: Wed, 10 Jun 2015 18:56:06 +0300 Subject: [PATCH 01/82] UP-4237 Exception: @NotNull parameter 'type' of com/intellij/psi/impl/source/tree/CompositeElement. Perform lazy initialization of the code which touches JspElementType --- .../completion/JavaCompletionContributor.java | 2 +- .../completion/JavaCompletionData.java | 101 +++++++++++------- .../completion/ModifierChooser.java | 2 +- 3 files changed, 63 insertions(+), 42 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java index 5c42a1f0deaa..88019cd763c4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -124,7 +124,7 @@ public class JavaCompletionContributor extends CompletionContributor { return new AnnotationTypeFilter(); } - if (JavaCompletionData.DECLARATION_START.accepts(position) || + if (JavaCompletionData.DECLARATION_START.getValue().accepts(position) || JavaCompletionData.isInsideParameterList(position) || psiElement().inside(psiElement(PsiJavaCodeReferenceElement.class).withParent(psiAnnotation())).accepts(position)) { return new OrFilter(ElementClassFilter.CLASS, ElementClassFilter.PACKAGE_FILTER); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java index 67670d5d2d18..5da35bb89eba 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java @@ -20,6 +20,8 @@ import com.intellij.codeInsight.TailType; import com.intellij.codeInsight.TailTypes; import com.intellij.codeInsight.completion.util.ParenthesesInsertHandler; import com.intellij.codeInsight.lookup.*; +import com.intellij.openapi.util.AtomicNotNullLazyValue; +import com.intellij.openapi.util.NotNullLazyValue; import com.intellij.patterns.ElementPattern; import com.intellij.patterns.PsiJavaElementPattern; import com.intellij.pom.java.LanguageLevel; @@ -37,6 +39,7 @@ import com.intellij.psi.util.PsiUtil; import com.intellij.util.Consumer; import com.intellij.util.ProcessingContext; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import static com.intellij.patterns.PsiJavaPatterns.*; import static com.intellij.patterns.StandardPatterns.not; @@ -86,33 +89,39 @@ public class JavaCompletionData extends JavaAwareCompletionData { new StartElementFilter() ); - static final ElementFilter END_OF_BLOCK = new OrFilter( - new AndFilter( - new LeftNeighbour( - new OrFilter( + static final NotNullLazyValue END_OF_BLOCK = new AtomicNotNullLazyValue() { + @NotNull + @Override + protected ElementFilter compute() { + return new OrFilter( + new AndFilter( + new LeftNeighbour( + new OrFilter( new AndFilter ( - new TextFilter(BLOCK_FINALIZERS), - new NotFilter ( - new SuperParentFilter(new ClassFilter(PsiAnnotation.class)) - ) + new TextFilter(BLOCK_FINALIZERS), + new NotFilter ( + new SuperParentFilter(new ClassFilter(PsiAnnotation.class)) + ) ), new TextFilter("*/"), new TokenTypeFilter(JspElementType.HOLDER_TEMPLATE_DATA), new ClassFilter(OuterLanguageElement.class), new AndFilter( - new TextFilter(")"), - new NotFilter( - new OrFilter( - new ParentElementFilter(new ClassFilter(PsiExpressionList.class)), - new ParentElementFilter(new ClassFilter(PsiParameterList.class)), - new ParentElementFilter(new ClassFilter(PsiTypeCastExpression.class)) - ) + new TextFilter(")"), + new NotFilter( + new OrFilter( + new ParentElementFilter(new ClassFilter(PsiExpressionList.class)), + new ParentElementFilter(new ClassFilter(PsiParameterList.class)), + new ParentElementFilter(new ClassFilter(PsiTypeCastExpression.class)) ) + ) ))), - new NotFilter(new TextFilter(".")) - ), - START_OF_CODE_FRAGMENT - ); + new NotFilter(new TextFilter(".")) + ), + START_OF_CODE_FRAGMENT + ); + } + }; static final ElementPattern START_SWITCH = psiElement().afterLeaf(psiElement().withText("{").withParents(PsiCodeBlock.class, PsiSwitchStatement.class)); @@ -132,9 +141,15 @@ public class JavaCompletionData extends JavaAwareCompletionData { PsiKeyword.CHAR, PsiKeyword.BYTE }; - private static final ElementFilter CLASS_BODY = new OrFilter( - new AfterElementFilter(new TextFilter("{")), - new ScopeFilter(new ClassFilter(JspClassLevelDeclarationStatement.class))); + private static final NotNullLazyValue CLASS_BODY = new AtomicNotNullLazyValue() { + @NotNull + @Override + protected ElementFilter compute() { + return new OrFilter( + new AfterElementFilter(new TextFilter("{")), + new ScopeFilter(new ClassFilter(JspClassLevelDeclarationStatement.class))); + } + }; public static final ElementPattern START_FOR = psiElement().afterLeaf(psiElement().withText("(").afterLeaf("for")).withParents(PsiJavaCodeReferenceElement.class, @@ -166,25 +181,31 @@ public class JavaCompletionData extends JavaAwareCompletionData { defineScopeEquivalence(PsiMethod.class, JavaCodeFragment.class); } - public static final ElementPattern DECLARATION_START = psiElement().andNot(psiElement().afterLeaf("@", ".")). - andOr( - psiElement().and(new FilterPattern(CLASS_BODY)). + public static final NotNullLazyValue> DECLARATION_START = new NotNullLazyValue>() { + @NotNull + @Override + protected ElementPattern compute() { + return psiElement().andNot(psiElement().afterLeaf("@", ".")). andOr( - new FilterPattern(END_OF_BLOCK), - psiElement().afterLeaf(or( - psiElement().inside(PsiModifierList.class), - psiElement().withElementType(JavaTokenType.GT).inside(PsiTypeParameterList.class) - ))), - psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiTypeElement.class, PsiMember.class), - psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiTypeElement.class, PsiClassLevelDeclarationStatement.class) - ); + psiElement().and(new FilterPattern(CLASS_BODY.getValue())). + andOr( + new FilterPattern(END_OF_BLOCK.getValue()), + psiElement().afterLeaf(or( + psiElement().inside(PsiModifierList.class), + psiElement().withElementType(JavaTokenType.GT).inside(PsiTypeParameterList.class) + ))), + psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiTypeElement.class, PsiMember.class), + psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiTypeElement.class, PsiClassLevelDeclarationStatement.class) + ); + } + }; private void declareCompletionSpaces() { declareFinalScope(PsiFile.class); { // Class body - final CompletionVariant variant = new CompletionVariant(CLASS_BODY); + final CompletionVariant variant = new CompletionVariant(CLASS_BODY.getValue()); variant.includeScopeClass(PsiClass.class, true); registerVariant(variant); } @@ -219,7 +240,7 @@ public class JavaCompletionData extends JavaAwareCompletionData { // position { final ElementFilter position = new AndFilter( - new NotFilter(CLASS_BODY), + new NotFilter(CLASS_BODY.getValue()), new NotFilter(new AfterElementFilter(new ContentFilter(new TextFilter(PsiKeyword.EXTENDS)))), new NotFilter(new AfterElementFilter(new ContentFilter(new TextFilter(PsiKeyword.IMPLEMENTS)))), new NotFilter(new LeftNeighbour(new LeftNeighbour(new TextFilter("<", ",")))), @@ -240,7 +261,7 @@ public class JavaCompletionData extends JavaAwareCompletionData { // position { final ElementFilter position = new AndFilter( - new NotFilter(CLASS_BODY), + new NotFilter(CLASS_BODY.getValue()), new NotFilter(new BeforeElementFilter(new ContentFilter(new TextFilter(PsiKeyword.EXTENDS)))), new NotFilter(new AfterElementFilter(new ContentFilter(new TextFilter(PsiKeyword.IMPLEMENTS)))), new NotFilter(new LeftNeighbour(new LeftNeighbour(new TextFilter("<", ",")))), @@ -476,7 +497,7 @@ public class JavaCompletionData extends JavaAwareCompletionData { result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.PACKAGE), TailType.HUMBLE_SPACE_BEFORE_WORD)); result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.IMPORT), TailType.HUMBLE_SPACE_BEFORE_WORD)); } - else if (END_OF_BLOCK.isAcceptable(position, position) && PsiTreeUtil.getParentOfType(position, PsiMember.class) == null) { + else if (END_OF_BLOCK.getValue().isAcceptable(position, position) && PsiTreeUtil.getParentOfType(position, PsiMember.class) == null) { result.consume(new OverrideableSpace(createKeyword(position, PsiKeyword.IMPORT), TailType.HUMBLE_SPACE_BEFORE_WORD)); } } @@ -589,7 +610,7 @@ public class JavaCompletionData extends JavaAwareCompletionData { return true; } - return END_OF_BLOCK.isAcceptable(position, position); + return END_OF_BLOCK.getValue().isAcceptable(position, position); } static void addExpectedTypeMembers(CompletionParameters parameters, final CompletionResultSet result) { @@ -656,7 +677,7 @@ public class JavaCompletionData extends JavaAwareCompletionData { .accepts(position); boolean typeFragment = position.getContainingFile() instanceof PsiTypeCodeFragment && PsiTreeUtil.prevVisibleLeaf(position) == null; - boolean declaration = DECLARATION_START.accepts(position); + boolean declaration = DECLARATION_START.getValue().accepts(position); boolean expressionPosition = isExpressionPosition(position); boolean inGenerics = PsiTreeUtil.getParentOfType(position, PsiReferenceParameterList.class) != null; if (START_FOR.accepts(position) || @@ -723,7 +744,7 @@ public class JavaCompletionData extends JavaAwareCompletionData { return false; } - if (END_OF_BLOCK.isAcceptable(position, position) && + if (END_OF_BLOCK.getValue().isAcceptable(position, position) && PsiTreeUtil.getParentOfType(position, PsiCodeBlock.class, true, PsiMember.class) != null) { return true; } diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/ModifierChooser.java b/java/java-impl/src/com/intellij/codeInsight/completion/ModifierChooser.java index 3762bb671c15..807144519108 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/ModifierChooser.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/ModifierChooser.java @@ -130,7 +130,7 @@ public class ModifierChooser { PsiElement prev = FilterPositionUtil.searchNonSpaceNonCommentBack(element); if (parent instanceof PsiJavaFile || parent instanceof PsiClass) { - if (prev == null || JavaCompletionData.END_OF_BLOCK.isAcceptable(element, prev.getParent())) { + if (prev == null || JavaCompletionData.END_OF_BLOCK.getValue().isAcceptable(element, prev.getParent())) { return true; } } From 0caa188ecf3b0afbf146160fa89c06b16a8a5a0f Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Wed, 10 Jun 2015 17:23:05 +0200 Subject: [PATCH 02/82] could be several scripts for one source file --- .../actions/BaseOpenInBrowserAction.java | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java b/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java index bdf5faa321bb..2c50377e2af5 100644 --- a/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java +++ b/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,6 @@ import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.popup.JBPopupFactory; -import com.intellij.openapi.util.AsyncResult; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; @@ -45,6 +44,8 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.xml.util.HtmlUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.concurrency.AsyncPromise; +import org.jetbrains.concurrency.Promise; import javax.swing.*; import java.awt.event.InputEvent; @@ -167,13 +168,14 @@ public abstract class BaseOpenInBrowserAction extends DumbAwareAction { try { Collection urls = WebBrowserService.getInstance().getUrlsToOpen(request, preferLocalUrl); if (!urls.isEmpty()) { - chooseUrl(urls).doWhenDone(new Consumer() { - @Override - public void consume(Url url) { - ApplicationManager.getApplication().saveAll(); - BrowserLauncher.getInstance().browse(url.toExternalForm(), browser, request.getProject()); - } - }); + chooseUrl(urls) + .done(new Consumer() { + @Override + public void consume(Url url) { + ApplicationManager.getApplication().saveAll(); + BrowserLauncher.getInstance().browse(url.toExternalForm(), browser, request.getProject()); + } + }); } } catch (WebBrowserUrlProvider.BrowserException e1) { @@ -185,9 +187,9 @@ public abstract class BaseOpenInBrowserAction extends DumbAwareAction { } @NotNull - private static AsyncResult chooseUrl(@NotNull Collection urls) { + private static Promise chooseUrl(@NotNull Collection urls) { if (urls.size() == 1) { - return new AsyncResult.Done(ContainerUtil.getFirstItem(urls)); + return Promise.resolve(ContainerUtil.getFirstItem(urls)); } final JBList list = new JBList(urls); @@ -200,23 +202,24 @@ public abstract class BaseOpenInBrowserAction extends DumbAwareAction { } }); - final AsyncResult result = new AsyncResult(); - JBPopupFactory.getInstance(). - createListPopupBuilder(list). - setTitle("Choose Url"). - setItemChoosenCallback(new Runnable() { + final AsyncPromise result = new AsyncPromise(); + JBPopupFactory.getInstance() + .createListPopupBuilder(list) + .setTitle("Choose Url") + .setItemChoosenCallback(new Runnable() { @Override public void run() { Url value = (Url)list.getSelectedValue(); - if (value != null) { - result.setDone(value); + if (value == null) { + result.setError(Promise.createError("selected value is null")); } else { - result.setRejected(); + result.setResult(value); } } - }). - createPopup().showInFocusCenter(); + }) + .createPopup() + .showInFocusCenter(); return result; } } \ No newline at end of file From 09145f30990d13c32f1bdbdb276e78fd84685b8d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 10 Jun 2015 15:20:14 +0300 Subject: [PATCH 03/82] convert refactoring tests to java 8 --- .../refactoring/ChangeSignatureBaseTest.java | 30 ++--- .../ChangeSignatureGestureTest.java | 73 ++++------- .../ChangeSignaturePropagationTest.java | 10 +- .../refactoring/ChangeSignatureTest.java | 117 +++++------------ .../intellij/refactoring/CopyClassTest.java | 16 +-- .../com/intellij/refactoring/DndMoveTest.java | 16 +-- .../refactoring/EncapsulateFieldsTest.java | 26 ++-- .../refactoring/ExtractClassTest.java | 124 ++++++++---------- .../intellij/refactoring/ExtractEnumTest.java | 77 ++++++----- .../refactoring/ExtractMethodObjectTest.java | 6 +- ...ethodObjectWithMultipleExitPointsTest.java | 6 +- .../refactoring/ExtractSuperClassTest.java | 14 +- .../refactoring/FixMethodJavadocTest.java | 4 +- .../InheritanceToDelegationTest.java | 94 +++++++------ .../refactoring/InlineSuperClassTest.java | 40 +++--- .../IntroduceParameterObjectTest.java | 117 +++++++---------- .../IntroduceVariableMultifileTest.java | 25 ++-- ...LightRefactoringParameterizedTestCase.java | 71 ++++------ .../refactoring/MakeClassStaticTest.java | 2 +- .../refactoring/MakeMethodStaticTest.java | 2 +- .../intellij/refactoring/MoveMembersTest.java | 11 +- .../MovePackageAsDirectoryTest.java | 49 +++---- .../refactoring/MovePackageMultirootTest.java | 29 ++-- .../intellij/refactoring/MovePackageTest.java | 7 +- .../refactoring/PullUpMultifileTest.java | 49 +++---- .../com/intellij/refactoring/PullUpTest.java | 19 +-- .../refactoring/PushDownMultifileTest.java | 62 ++++----- .../intellij/refactoring/PushDownTest.java | 9 +- .../refactoring/RemoveMiddleManTest.java | 49 ++++--- .../intellij/refactoring/RenameClassTest.java | 28 ++-- .../refactoring/RenameCollisionsTest.java | 2 +- .../intellij/refactoring/RenameLocalTest.java | 2 +- .../refactoring/RenameMembersInplaceTest.java | 2 +- .../refactoring/RenameMethodMultiTest.java | 52 ++++---- .../ReplaceConstructorWithBuilderTest.java | 63 +++++---- .../intellij/refactoring/SafeDeleteTest.java | 7 +- .../refactoring/TurnRefsToSuperTest.java | 7 +- .../intellij/refactoring/TypeCookTest.java | 7 +- .../refactoring/WrapReturnValueTest.java | 21 ++- .../ChangeClassSignatureTest.java | 99 ++++---------- .../inline/InlineLibraryMethodTest.java | 14 +- .../refactoring/migration/MigrationTest.java | 9 +- 42 files changed, 571 insertions(+), 896 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureBaseTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureBaseTest.java index 98312eee8e8a..c2ba39a70750 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureBaseTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureBaseTest.java @@ -46,28 +46,22 @@ public abstract class ChangeSignatureBaseTest extends LightRefactoringTestCase { @Nullable final String[] parameters, @Nullable final String[] exceptions, boolean delegate) { - GenParams genParams = parameters == null ? new SimpleParameterGen() : new GenParams() { - @Override - public ParameterInfoImpl[] genParams(PsiMethod method) throws IncorrectOperationException { - ParameterInfoImpl[] parameterInfos = new ParameterInfoImpl[parameters.length]; - for (int i = 0; i < parameters.length; i++) { - PsiType type = myFactory.createTypeFromText(parameters[i], method); - parameterInfos[i] = new ParameterInfoImpl(-1, "p" + (i + 1), type); - } - return parameterInfos; + GenParams genParams = parameters == null ? new SimpleParameterGen() : method -> { + ParameterInfoImpl[] parameterInfos = new ParameterInfoImpl[parameters.length]; + for (int i = 0; i < parameters.length; i++) { + PsiType type = myFactory.createTypeFromText(parameters[i], method); + parameterInfos[i] = new ParameterInfoImpl(-1, "p" + (i + 1), type); } + return parameterInfos; }; - GenExceptions genExceptions = exceptions == null ? new SimpleExceptionsGen() : new GenExceptions() { - @Override - public ThrownExceptionInfo[] genExceptions(PsiMethod method) throws IncorrectOperationException { - ThrownExceptionInfo[] exceptionInfos = new ThrownExceptionInfo[exceptions.length]; - for (int i = 0; i < exceptions.length; i++) { - PsiType type = myFactory.createTypeFromText(exceptions[i], method); - exceptionInfos[i] = new JavaThrownExceptionInfo(-1, (PsiClassType)type); - } - return exceptionInfos; + GenExceptions genExceptions = exceptions == null ? new SimpleExceptionsGen() : method -> { + ThrownExceptionInfo[] exceptionInfos = new ThrownExceptionInfo[exceptions.length]; + for (int i = 0; i < exceptions.length; i++) { + PsiType type = myFactory.createTypeFromText(exceptions[i], method); + exceptionInfos[i] = new JavaThrownExceptionInfo(-1, (PsiClassType)type); } + return exceptionInfos; }; doTest(null, null, returnType, genParams, genExceptions, delegate); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureGestureTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureGestureTest.java index f34b14db5cb4..f4647486699d 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureGestureTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureGestureTest.java @@ -102,34 +102,28 @@ public class ChangeSignatureGestureTest extends LightCodeInsightFixtureTestCase } public void testOnAnotherMethod() { - doTest(new Runnable() { - @Override - public void run() { - myFixture.type("int param"); - final int nextMethodOffset = ((PsiJavaFile)myFixture.getFile()).getClasses()[0].getMethods()[1].getTextOffset(); - myFixture.getEditor().getCaretModel().moveToOffset(nextMethodOffset); - } + doTest(() -> { + myFixture.type("int param"); + final int nextMethodOffset = ((PsiJavaFile)myFixture.getFile()).getClasses()[0].getMethods()[1].getTextOffset(); + myFixture.getEditor().getCaretModel().moveToOffset(nextMethodOffset); }, false, ChangeSignatureDetectorAction.CHANGE_SIGNATURE); } public void testAddParamChangeReturnType() { - doTest(new Runnable() { - @Override - public void run() { - myFixture.type("int param"); - CaretModel model = myFixture.getEditor().getCaretModel(); - PsiElement element = myFixture.getElementAtCaret(); - PsiMethod method = PsiTreeUtil.getParentOfType(element, PsiMethod.class, false); - assertTrue(method != null); - PsiTypeElement returnTypeElement = method.getReturnTypeElement(); - assertTrue(returnTypeElement != null); - model.moveToOffset(returnTypeElement.getTextRange().getEndOffset()); - int i = returnTypeElement.getTextLength(); - while (i-- > 0) { - myFixture.type('\b'); - } - myFixture.type("boolean"); + doTest(() -> { + myFixture.type("int param"); + CaretModel model = myFixture.getEditor().getCaretModel(); + PsiElement element = myFixture.getElementAtCaret(); + PsiMethod method = PsiTreeUtil.getParentOfType(element, PsiMethod.class, false); + assertTrue(method != null); + PsiTypeElement returnTypeElement = method.getReturnTypeElement(); + assertTrue(returnTypeElement != null); + model.moveToOffset(returnTypeElement.getTextRange().getEndOffset()); + int i = returnTypeElement.getTextLength(); + while (i-- > 0) { + myFixture.type('\b'); } + myFixture.type("boolean"); }, true, ChangeSignatureDetectorAction.CHANGE_SIGNATURE); } @@ -154,12 +148,7 @@ public class ChangeSignatureGestureTest extends LightCodeInsightFixtureTestCase } private void doTypingTest(final String param, final String hint) { - doTest(new Runnable() { - @Override - public void run() { - myFixture.type(param); - } - }, true, hint); + doTest(() -> myFixture.type(param), true, hint); } public void testReturnValue() { @@ -175,12 +164,7 @@ public class ChangeSignatureGestureTest extends LightCodeInsightFixtureTestCase } private void doTypingNoBorderTest(final String param) { - doTest(new Runnable() { - @Override - public void run() { - myFixture.type(param); - } - }, false, ChangeSignatureDetectorAction.CHANGE_SIGNATURE); + doTest(() -> myFixture.type(param), false, ChangeSignatureDetectorAction.CHANGE_SIGNATURE); } public void testDeleteParamInSuperUsed() { @@ -188,17 +172,14 @@ public class ChangeSignatureGestureTest extends LightCodeInsightFixtureTestCase } private void doDeleteTest() { - doTest(new Runnable() { - @Override - public void run() { - final Editor editor = myFixture.getEditor(); - final Document document = editor.getDocument(); - final int selectionStart = editor.getSelectionModel().getSelectionStart(); - final int selectionEnd = editor.getSelectionModel().getSelectionEnd(); - CommandProcessor.getInstance().setCurrentCommandGroupId(EditorActionUtil.DELETE_COMMAND_GROUP); - document.deleteString(selectionStart, selectionEnd); - editor.getCaretModel().moveToOffset(selectionStart); - } + doTest(() -> { + final Editor editor = myFixture.getEditor(); + final Document document = editor.getDocument(); + final int selectionStart = editor.getSelectionModel().getSelectionStart(); + final int selectionEnd = editor.getSelectionModel().getSelectionEnd(); + CommandProcessor.getInstance().setCurrentCommandGroupId(EditorActionUtil.DELETE_COMMAND_GROUP); + document.deleteString(selectionStart, selectionEnd); + editor.getCaretModel().moveToOffset(selectionStart); }, true, ChangeSignatureDetectorAction.CHANGE_SIGNATURE); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignaturePropagationTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignaturePropagationTest.java index cf55a99acab0..1417f2a636cd 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignaturePropagationTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignaturePropagationTest.java @@ -34,7 +34,7 @@ public class ChangeSignaturePropagationTest extends LightRefactoringTestCase { public void testParamTypeSubst() throws Exception { final PsiMethod method = getPrimaryMethod(); - final HashSet methods = new HashSet(); + final HashSet methods = new HashSet<>(); for (PsiReference reference : ReferencesSearch.search(method)) { final PsiMethod psiMethod = PsiTreeUtil.getParentOfType(reference.getElement(), PsiMethod.class); if (psiMethod != null) { @@ -63,7 +63,7 @@ public class ChangeSignaturePropagationTest extends LightRefactoringTestCase { } private static HashSet collectNonPhysicalMethodsToPropagate(PsiMethod method) { - final HashSet methodsToPropagate = new HashSet(); + final HashSet methodsToPropagate = new HashSet<>(); final PsiReference[] references = MethodReferencesSearch.search(method, GlobalSearchScope.allScope(getProject()), true).toArray(PsiReference.EMPTY_ARRAY); for (PsiReference reference : references) { @@ -91,7 +91,7 @@ public class ChangeSignaturePropagationTest extends LightRefactoringTestCase { } private static HashSet collectDefaultConstructorsToPropagate(PsiMethod method) { - final HashSet methodsToPropagate = new HashSet(); + final HashSet methodsToPropagate = new HashSet<>(); for (PsiClass inheritor : ClassInheritorsSearch.search(method.getContainingClass())) { methodsToPropagate.add(inheritor.getConstructors()[0]); } @@ -105,7 +105,7 @@ public class ChangeSignaturePropagationTest extends LightRefactoringTestCase { private void parameterPropagationTest(final PsiClassType paramType) throws Exception { final PsiMethod method = getPrimaryMethod(); - parameterPropagationTest(method, new HashSet(Arrays.asList(method.getContainingClass().getMethods())), + parameterPropagationTest(method, new HashSet<>(Arrays.asList(method.getContainingClass().getMethods())), paramType); } @@ -116,7 +116,7 @@ public class ChangeSignaturePropagationTest extends LightRefactoringTestCase { private void exceptionPropagationTest() throws Exception { final PsiMethod method = getPrimaryMethod(); - exceptionPropagationTest(method, new HashSet(Arrays.asList(method.getContainingClass().getMethods()))); + exceptionPropagationTest(method, new HashSet<>(Arrays.asList(method.getContainingClass().getMethods()))); } private void exceptionPropagationTest(final PsiMethod method, final Set methodsToPropagateExceptions) throws Exception { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java index e9882d2c89e2..c0147110faca 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java @@ -54,38 +54,23 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { } public void testGenericTypes() { - doTest(null, null, "T", new GenParams() { - @Override - public ParameterInfoImpl[] genParams(PsiMethod method) throws IncorrectOperationException { - return new ParameterInfoImpl[]{ - new ParameterInfoImpl(-1, "x", myFactory.createTypeFromText("T", method.getParameterList()), "null"), - new ParameterInfoImpl(-1, "y", myFactory.createTypeFromText("C", method.getParameterList()), "null") - }; - } + doTest(null, null, "T", method -> new ParameterInfoImpl[]{ + new ParameterInfoImpl(-1, "x", myFactory.createTypeFromText("T", method.getParameterList()), "null"), + new ParameterInfoImpl(-1, "y", myFactory.createTypeFromText("C", method.getParameterList()), "null") }, false); } public void testGenericTypesInOldParameters() { - doTest(null, null, null, new GenParams() { - @Override - public ParameterInfoImpl[] genParams(PsiMethod method) throws IncorrectOperationException { - return new ParameterInfoImpl[]{ - new ParameterInfoImpl(0, "t", myFactory.createTypeFromText("T", method), null) - }; - } + doTest(null, null, null, method -> new ParameterInfoImpl[]{ + new ParameterInfoImpl(0, "t", myFactory.createTypeFromText("T", method), null) }, false); } public void testTypeParametersInMethod() { - doTest(null, null, null, new GenParams() { - @Override - public ParameterInfoImpl[] genParams(PsiMethod method) throws IncorrectOperationException { - return new ParameterInfoImpl[]{ - new ParameterInfoImpl(-1, "t", myFactory.createTypeFromText("T", method.getParameterList()), "null"), - new ParameterInfoImpl(-1, "u", myFactory.createTypeFromText("U", method.getParameterList()), "null"), - new ParameterInfoImpl(-1, "cu", myFactory.createTypeFromText("C", method.getParameterList()), "null") - }; - } + doTest(null, null, null, method -> new ParameterInfoImpl[]{ + new ParameterInfoImpl(-1, "t", myFactory.createTypeFromText("T", method.getParameterList()), "null"), + new ParameterInfoImpl(-1, "u", myFactory.createTypeFromText("U", method.getParameterList()), "null"), + new ParameterInfoImpl(-1, "cu", myFactory.createTypeFromText("C", method.getParameterList()), "null") }, false); } @@ -215,35 +200,20 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { } public void testUseAnyVariable() { - doTest(null, null, null, new GenParams() { - @Override - public ParameterInfoImpl[] genParams(PsiMethod method) throws IncorrectOperationException { - return new ParameterInfoImpl[]{ - new ParameterInfoImpl(-1, "l", myFactory.createTypeFromText("List", method), "null", true) - }; - } + doTest(null, null, null, method -> new ParameterInfoImpl[]{ + new ParameterInfoImpl(-1, "l", myFactory.createTypeFromText("List", method), "null", true) }, false); } public void testUseThisAsAnyVariable() { - doTest(null, null, null, new GenParams() { - @Override - public ParameterInfoImpl[] genParams(PsiMethod method) throws IncorrectOperationException { - return new ParameterInfoImpl[]{ - new ParameterInfoImpl(-1, "l", myFactory.createTypeFromText("List", method), "null", true) - }; - } + doTest(null, null, null, method -> new ParameterInfoImpl[]{ + new ParameterInfoImpl(-1, "l", myFactory.createTypeFromText("List", method), "null", true) }, false); } public void testUseAnyVariableAndDefault() { - doTest(null, null, null, new GenParams() { - @Override - public ParameterInfoImpl[] genParams(PsiMethod method) throws IncorrectOperationException { - return new ParameterInfoImpl[]{ - new ParameterInfoImpl(-1, "c", myFactory.createTypeFromText("C", method), "null", true) - }; - } + doTest(null, null, null, method -> new ParameterInfoImpl[]{ + new ParameterInfoImpl(-1, "c", myFactory.createTypeFromText("C", method), "null", true) }, false); } @@ -282,13 +252,10 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { public void testAlreadyHandled() { doTest(null, null, null, new SimpleParameterGen(new ParameterInfoImpl[0]), - new GenExceptions() { - @Override - public ThrownExceptionInfo[] genExceptions(PsiMethod method) { - return new ThrownExceptionInfo[]{ - new JavaThrownExceptionInfo(-1, myFactory.createTypeByFQClassName("java.lang.Exception", method.getResolveScope())) - }; - } + method -> { + return new ThrownExceptionInfo[]{ + new JavaThrownExceptionInfo(-1, myFactory.createTypeByFQClassName("java.lang.Exception", method.getResolveScope())) + }; }, false ); @@ -296,13 +263,10 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { public void testConstructorException() { doTest(null, null, null, new SimpleParameterGen(new ParameterInfoImpl[0]), - new GenExceptions() { - @Override - public ThrownExceptionInfo[] genExceptions(PsiMethod method) { - return new ThrownExceptionInfo[]{ - new JavaThrownExceptionInfo(-1, myFactory.createTypeByFQClassName("java.io.IOException", method.getResolveScope())) - }; - } + method -> { + return new ThrownExceptionInfo[]{ + new JavaThrownExceptionInfo(-1, myFactory.createTypeByFQClassName("java.io.IOException", method.getResolveScope())) + }; }, false ); @@ -310,13 +274,10 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { public void testAddRuntimeException() { doTest(null, null, null, new SimpleParameterGen(new ParameterInfoImpl[0]), - new GenExceptions() { - @Override - public ThrownExceptionInfo[] genExceptions(PsiMethod method) { - return new ThrownExceptionInfo[]{ - new JavaThrownExceptionInfo(-1, myFactory.createTypeByFQClassName("java.lang.RuntimeException", method.getResolveScope())) - }; - } + method -> { + return new ThrownExceptionInfo[]{ + new JavaThrownExceptionInfo(-1, myFactory.createTypeByFQClassName("java.lang.RuntimeException", method.getResolveScope())) + }; }, false ); @@ -324,13 +285,10 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { public void testAddException() { doTest(null, null, null, new SimpleParameterGen(new ParameterInfoImpl[0]), - new GenExceptions() { - @Override - public ThrownExceptionInfo[] genExceptions(PsiMethod method) { - return new ThrownExceptionInfo[]{ - new JavaThrownExceptionInfo(-1, myFactory.createTypeByFQClassName("java.lang.Exception", method.getResolveScope())) - }; - } + method -> { + return new ThrownExceptionInfo[]{ + new JavaThrownExceptionInfo(-1, myFactory.createTypeByFQClassName("java.lang.Exception", method.getResolveScope())) + }; }, false ); @@ -357,14 +315,9 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { } public void testReplaceVarargWithArray() { - doTest(null, null, null, new GenParams() { - @Override - public ParameterInfoImpl[] genParams(PsiMethod method) throws IncorrectOperationException { - return new ParameterInfoImpl[]{ - new ParameterInfoImpl(1, "l", myFactory.createTypeFromText("List[]", method.getParameterList()), "null", false), - new ParameterInfoImpl(0, "s", myFactory.createTypeFromText("String", method.getParameterList())) - }; - } + doTest(null, null, null, method -> new ParameterInfoImpl[]{ + new ParameterInfoImpl(1, "l", myFactory.createTypeFromText("List[]", method.getParameterList()), "null", false), + new ParameterInfoImpl(0, "s", myFactory.createTypeFromText("String", method.getParameterList())) }, false); } @@ -405,7 +358,7 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { final PsiMethod[] callers = containingClass.findMethodsByName("caller", false); assertTrue(callers.length > 0); final PsiMethod caller = callers[0]; - final HashSet propagateParametersMethods = new HashSet(); + final HashSet propagateParametersMethods = new HashSet<>(); propagateParametersMethods.add(caller); final PsiParameter[] parameters = method.getParameterList().getParameters(); new ChangeSignatureProcessor(getProject(), method, false, null, method.getName(), diff --git a/java/java-tests/testSrc/com/intellij/refactoring/CopyClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/CopyClassTest.java index 1d0751c4ddcf..4f3b34a328ff 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/CopyClassTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/CopyClassTest.java @@ -74,16 +74,10 @@ public class CopyClassTest extends CodeInsightTestCase { private PsiElement performAction(final String oldName, final String copyName) throws IncorrectOperationException { final PsiClass oldClass = JavaPsiFacade.getInstance(myProject).findClass(oldName, ProjectScope.getAllScope(myProject)); - return WriteCommandAction.runWriteCommandAction(null, new Computable(){ - @Override - public PsiElement compute() { - return CopyClassesHandler.doCopyClasses( - Collections.singletonMap(oldClass.getNavigationElement().getContainingFile(), new PsiClass[]{oldClass}), copyName, - myPsiManager.findDirectory(myRootDir), - myProject); - - } - }); + return WriteCommandAction.runWriteCommandAction(null, (Computable)() -> CopyClassesHandler.doCopyClasses( + Collections.singletonMap(oldClass.getNavigationElement().getContainingFile(), new PsiClass[]{oldClass}), copyName, + myPsiManager.findDirectory(myRootDir), + myProject)); } public void testPackageLocalClasses() throws Exception { @@ -101,7 +95,7 @@ public class CopyClassTest extends CodeInsightTestCase { PsiTestUtil.removeAllRoots(myModule, IdeaTestUtil.getMockJdk17()); VirtualFile rootDir = PsiTestUtil.createTestProjectStructure(myProject, myModule, rootBefore, myFilesToDelete); - final HashMap map = new HashMap(); + final HashMap map = new HashMap<>(); final VirtualFile sourceDir = rootDir.findChild("p1"); for (VirtualFile file : sourceDir.getChildren()) { final PsiFile psiFile = myPsiManager.findFile(file); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/DndMoveTest.java b/java/java-tests/testSrc/com/intellij/refactoring/DndMoveTest.java index ee971c4e42e2..ebbf7b6ff199 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/DndMoveTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/DndMoveTest.java @@ -36,23 +36,11 @@ public class DndMoveTest extends CodeInsightTestCase { } public void testPublicJavaClass() throws Exception { - doTest("d", new Computable() { - @Nullable - @Override - public PsiElement compute() { - return getJavaFacade().findClass("d.MyClass"); - } - }, true); + doTest("d", () -> getJavaFacade().findClass("d.MyClass"), true); } public void testSecondJavaClass() throws Exception { - doTest("d", new Computable() { - @Nullable - @Override - public PsiElement compute() { - return getJavaFacade().findClass("d.Second"); - } - }, false); + doTest("d", () -> getJavaFacade().findClass("d.Second"), false); } private void doTest(final String targetDirName, final Computable source, final boolean expected) throws Exception { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java b/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java index 863e162eff6a..329ab69e9d1d 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java @@ -77,15 +77,12 @@ public class EncapsulateFieldsTest extends MultiFileTestCase{ } public void testMoveJavadocToGetter() throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - final PsiClass aClass = myJavaFacade.findClass("A", GlobalSearchScope.projectScope(myProject)); - assertNotNull("Tested class not found", aClass); - final PsiField field = aClass.findFieldByName("i", false); - assertNotNull(field); - doTest(aClass, field, null, true, true); - } + doTest((rootDir, rootAfter) -> { + final PsiClass aClass = myJavaFacade.findClass("A", GlobalSearchScope.projectScope(myProject)); + assertNotNull("Tested class not found", aClass); + final PsiField field = aClass.findFieldByName("i", false); + assertNotNull(field); + doTest(aClass, field, null, true, true); }); } @@ -106,16 +103,13 @@ public class EncapsulateFieldsTest extends MultiFileTestCase{ } private void doTest(final String fieldName, final String className, final String conflicts) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.projectScope(myProject)); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.projectScope(myProject)); - assertNotNull("Tested class not found", aClass); + assertNotNull("Tested class not found", aClass); - doTest(aClass, aClass.findFieldByName(fieldName, false), conflicts, true, true); - } + doTest(aClass, aClass.findFieldByName(fieldName, false), conflicts, true, true); }); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractClassTest.java index 812b2ab0646f..e476963b1c3c 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractClassTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractClassTest.java @@ -67,18 +67,15 @@ public class ExtractClassTest extends MultiFileTestCase{ private void doTestMethod(final String methodName, final String conflicts, final String qualifiedName) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass(qualifiedName, GlobalSearchScope.projectScope(myProject)); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass(qualifiedName, GlobalSearchScope.projectScope(myProject)); - assertNotNull("Class Test not found", aClass); + assertNotNull("Class Test not found", aClass); - final ArrayList methods = new ArrayList(); - methods.add(aClass.findMethodsByName(methodName, false)[0]); - - doTest(aClass, methods, new ArrayList(), conflicts, false); - } + final ArrayList methods = new ArrayList<>(); + methods.add(aClass.findMethodsByName(methodName, false)[0]); + + doTest(aClass, methods, new ArrayList<>(), conflicts, false); }); } @@ -151,21 +148,18 @@ public class ExtractClassTest extends MultiFileTestCase{ } private void doTestFieldAndMethod(final String methodName) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); - assertNotNull("Class Test not found", aClass); + assertNotNull("Class Test not found", aClass); - final ArrayList methods = new ArrayList(); - methods.add(aClass.findMethodsByName(methodName, false)[0]); + final ArrayList methods = new ArrayList<>(); + methods.add(aClass.findMethodsByName(methodName, false)[0]); - final ArrayList fields = new ArrayList(); - fields.add(aClass.findFieldByName("myT", false)); + final ArrayList fields = new ArrayList<>(); + fields.add(aClass.findFieldByName("myT", false)); - doTest(aClass, methods, fields, null, false); - } + doTest(aClass, methods, fields, null, false); }); } @@ -174,27 +168,24 @@ public class ExtractClassTest extends MultiFileTestCase{ } private void doTestField(final String conflicts, final boolean generateGettersSetters) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); - assertNotNull("Class Test not found", aClass); + assertNotNull("Class Test not found", aClass); - final ArrayList methods = new ArrayList(); + final ArrayList methods = new ArrayList<>(); - final ArrayList fields = new ArrayList(); - fields.add(aClass.findFieldByName("myT", false)); + final ArrayList fields = new ArrayList<>(); + fields.add(aClass.findFieldByName("myT", false)); - doTest(aClass, methods, fields, conflicts, generateGettersSetters); - } + doTest(aClass, methods, fields, conflicts, generateGettersSetters); }); } private static void doTest(final PsiClass aClass, final ArrayList methods, final ArrayList fields, final String conflicts, boolean generateGettersSetters) { try { - ExtractClassProcessor processor = new ExtractClassProcessor(aClass, fields, methods, new ArrayList(), StringUtil.getPackageName(aClass.getQualifiedName()), null, + ExtractClassProcessor processor = new ExtractClassProcessor(aClass, fields, methods, new ArrayList<>(), StringUtil.getPackageName(aClass.getQualifiedName()), null, "Extracted", null, generateGettersSetters, Collections.emptyList()); processor.run(); LocalFileSystem.getInstance().refresh(false); @@ -233,39 +224,33 @@ public class ExtractClassTest extends MultiFileTestCase{ } public void testPublicFieldDelegation() throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); - assertNotNull("Class Test not found", aClass); + assertNotNull("Class Test not found", aClass); - final ArrayList fields = new ArrayList(); - fields.add(aClass.findFieldByName("myT", false)); + final ArrayList fields = new ArrayList<>(); + fields.add(aClass.findFieldByName("myT", false)); - ExtractClassProcessor processor = new ExtractClassProcessor(aClass, fields, new ArrayList(), new ArrayList(), "", "Extracted"); - processor.run(); - LocalFileSystem.getInstance().refresh(false); - FileDocumentManager.getInstance().saveAllDocuments(); - } + ExtractClassProcessor processor = new ExtractClassProcessor(aClass, fields, new ArrayList<>(), new ArrayList<>(), "", "Extracted"); + processor.run(); + LocalFileSystem.getInstance().refresh(false); + FileDocumentManager.getInstance().saveAllDocuments(); }); } private void doTestInnerClass() throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); - assertNotNull("Class Test not found", aClass); + assertNotNull("Class Test not found", aClass); - final ArrayList classes = new ArrayList(); - classes.add(aClass.findInnerClassByName("Inner", false)); - ExtractClassProcessor processor = new ExtractClassProcessor(aClass, new ArrayList(), new ArrayList(), classes, "", "Extracted"); - processor.run(); - LocalFileSystem.getInstance().refresh(false); - FileDocumentManager.getInstance().saveAllDocuments(); - } + final ArrayList classes = new ArrayList<>(); + classes.add(aClass.findInnerClassByName("Inner", false)); + ExtractClassProcessor processor = new ExtractClassProcessor(aClass, new ArrayList<>(), new ArrayList<>(), classes, "", "Extracted"); + processor.run(); + LocalFileSystem.getInstance().refresh(false); + FileDocumentManager.getInstance().saveAllDocuments(); }); } @@ -302,25 +287,22 @@ public class ExtractClassTest extends MultiFileTestCase{ } public void testPublicVisibility() throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); - assertNotNull("Class Test not found", aClass); + assertNotNull("Class Test not found", aClass); - final ArrayList methods = new ArrayList(); - methods.add(aClass.findMethodsByName("foos", false)[0]); + final ArrayList methods = new ArrayList<>(); + methods.add(aClass.findMethodsByName("foos", false)[0]); - final ArrayList fields = new ArrayList(); - fields.add(aClass.findFieldByName("myT", false)); + final ArrayList fields = new ArrayList<>(); + fields.add(aClass.findFieldByName("myT", false)); - final ExtractClassProcessor processor = - new ExtractClassProcessor(aClass, fields, methods, new ArrayList(), "", null, "Extracted", PsiModifier.PUBLIC, false, Collections.emptyList()); - processor.run(); - LocalFileSystem.getInstance().refresh(false); - FileDocumentManager.getInstance().saveAllDocuments(); - } + final ExtractClassProcessor processor = + new ExtractClassProcessor(aClass, fields, methods, new ArrayList<>(), "", null, "Extracted", PsiModifier.PUBLIC, false, Collections.emptyList()); + processor.run(); + LocalFileSystem.getInstance().refresh(false); + FileDocumentManager.getInstance().saveAllDocuments(); }); } } \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractEnumTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractEnumTest.java index c6b811c693ba..174e6c554053 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractEnumTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractEnumTest.java @@ -144,53 +144,50 @@ public class ExtractEnumTest extends MultiFileTestCase { private void doTest(final String conflicts, final boolean generateAccessors, final RefactoringTestUtil.MemberDescriptor... memberDescriptors) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - final PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); - assertNotNull("Class Test not found", aClass); + doTest((rootDir, rootAfter) -> { + final PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject)); + assertNotNull("Class Test not found", aClass); - final ArrayList fields = new ArrayList(); - final ArrayList methods = new ArrayList(); - final List enumConstants = new ArrayList(); - for (MemberInfo memberInfo : RefactoringTestUtil.findMembers(aClass, memberDescriptors)) { - final PsiMember member = memberInfo.getMember(); - if (member instanceof PsiField) { - fields.add((PsiField)member); - if (member.hasModifierProperty(PsiModifier.STATIC) && member.hasModifierProperty(PsiModifier.FINAL) && ((PsiField)member).hasInitializer()) { - if (memberInfo.isToAbstract()) { - enumConstants.add(memberInfo); - memberInfo.setChecked(true); - } + final ArrayList fields = new ArrayList<>(); + final ArrayList methods = new ArrayList<>(); + final List enumConstants = new ArrayList<>(); + for (MemberInfo memberInfo : RefactoringTestUtil.findMembers(aClass, memberDescriptors)) { + final PsiMember member = memberInfo.getMember(); + if (member instanceof PsiField) { + fields.add((PsiField)member); + if (member.hasModifierProperty(PsiModifier.STATIC) && member.hasModifierProperty(PsiModifier.FINAL) && ((PsiField)member).hasInitializer()) { + if (memberInfo.isToAbstract()) { + enumConstants.add(memberInfo); + memberInfo.setChecked(true); } } - else if (member instanceof PsiMethod) { - methods.add((PsiMethod)member); - } } - try { - final ExtractClassProcessor processor = - new ExtractClassProcessor(aClass, fields, methods, new ArrayList(), "", null, "EEnum", - null, generateAccessors, enumConstants); + else if (member instanceof PsiMethod) { + methods.add((PsiMethod)member); + } + } + try { + final ExtractClassProcessor processor = + new ExtractClassProcessor(aClass, fields, methods, new ArrayList<>(), "", null, "EEnum", + null, generateAccessors, enumConstants); - processor.run(); - LocalFileSystem.getInstance().refresh(false); - FileDocumentManager.getInstance().saveAllDocuments(); - } - catch (BaseRefactoringProcessor.ConflictsInTestsException e) { - if (conflicts != null) { - TreeSet expectedConflictsSet = new TreeSet(Arrays.asList(conflicts.split("\n"))); - TreeSet actualConflictsSet = new TreeSet(Arrays.asList(e.getMessage().split("\n"))); - Assert.assertEquals(expectedConflictsSet, actualConflictsSet); - return; - } - else { - fail(e.getMessage()); - } - } + processor.run(); + LocalFileSystem.getInstance().refresh(false); + FileDocumentManager.getInstance().saveAllDocuments(); + } + catch (BaseRefactoringProcessor.ConflictsInTestsException e) { if (conflicts != null) { - fail("Conflicts were not detected: " + conflicts); + TreeSet expectedConflictsSet = new TreeSet(Arrays.asList(conflicts.split("\n"))); + TreeSet actualConflictsSet = new TreeSet(Arrays.asList(e.getMessage().split("\n"))); + Assert.assertEquals(expectedConflictsSet, actualConflictsSet); + return; } + else { + fail(e.getMessage()); + } + } + if (conflicts != null) { + fail("Conflicts were not detected: " + conflicts); } }); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectTest.java index 994c4b66a211..e638a6207263 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectTest.java @@ -41,10 +41,8 @@ public class ExtractMethodObjectTest extends LightRefactoringTestCase { extractProcessor.prepare(); extractProcessor.testPrepare(); - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - ExtractMethodObjectHandler.run(getProject(), getEditor(), processor, extractProcessor); - } + ApplicationManager.getApplication().runWriteAction(() -> { + ExtractMethodObjectHandler.run(getProject(), getEditor(), processor, extractProcessor); }); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectWithMultipleExitPointsTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectWithMultipleExitPointsTest.java index 0f1dd9f14b61..36af78daa0f6 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectWithMultipleExitPointsTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectWithMultipleExitPointsTest.java @@ -48,10 +48,8 @@ public class ExtractMethodObjectWithMultipleExitPointsTest extends LightRefactor processor.setCreateInnerClass(createInnerClass); - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - ExtractMethodObjectHandler.run(getProject(), getEditor(), processor, extractProcessor); - } + ApplicationManager.getApplication().runWriteAction(() -> { + ExtractMethodObjectHandler.run(getProject(), getEditor(), processor, extractProcessor); }); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java index 2d89d8cf4106..11a198d021e5 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java @@ -174,7 +174,7 @@ public class ExtractSuperClassTest extends RefactoringTestCase { newClassName, psiClass, members, false, - new DocCommentPolicy(DocCommentPolicy.ASIS)); + new DocCommentPolicy<>(DocCommentPolicy.ASIS)); final PsiPackage targetPackage; if (targetDirectory != null) { targetPackage = JavaDirectoryService.getInstance().getPackage(targetDirectory); @@ -184,18 +184,14 @@ public class ExtractSuperClassTest extends RefactoringTestCase { } final PsiClass superClass = psiClass.getExtendsListTypes().length > 0 ? psiClass.getSuperClass() : null; final MultiMap conflictsMap = - PullUpConflictsUtil.checkConflicts(members, psiClass, superClass, targetPackage, targetDirectory, new InterfaceContainmentVerifier() { - @Override - public boolean checkedInterfacesContain(PsiMethod psiMethod) { - return PullUpProcessor.checkedInterfacesContain(Arrays.asList(members), psiMethod); - } - }, false); + PullUpConflictsUtil.checkConflicts(members, psiClass, superClass, targetPackage, targetDirectory, + psiMethod -> PullUpProcessor.checkedInterfacesContain(Arrays.asList(members), psiMethod), false); if (conflicts != null) { if (conflictsMap.isEmpty()) { fail("Conflicts were not detected"); } - final HashSet expectedConflicts = new HashSet(Arrays.asList(conflicts)); - final HashSet actualConflicts = new HashSet(conflictsMap.values()); + final HashSet expectedConflicts = new HashSet<>(Arrays.asList(conflicts)); + final HashSet actualConflicts = new HashSet<>(conflictsMap.values()); assertEquals(expectedConflicts.size(), actualConflicts.size()); for (String actualConflict : actualConflicts) { if (!expectedConflicts.contains(actualConflict)) { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/FixMethodJavadocTest.java b/java/java-tests/testSrc/com/intellij/refactoring/FixMethodJavadocTest.java index 0a8937f7bcb0..80f3f498dea8 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/FixMethodJavadocTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/FixMethodJavadocTest.java @@ -32,7 +32,7 @@ public abstract class FixMethodJavadocTest extends FileSetTestCase { final PsiManager manager = PsiManager.getInstance(myProject); final PsiElementFactory factory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory(); final PsiMethod method = factory.createMethodFromText(data[0], null); - final HashSet newParameters = new HashSet(); + final HashSet newParameters = new HashSet<>(); if (data.length == 2) { final String[] strings = data[1].split("\\s+"); collectNewParameters(method, strings, newParameters); @@ -42,7 +42,7 @@ public abstract class FixMethodJavadocTest extends FileSetTestCase { } private void collectNewParameters(PsiMethod method, String[] names, Set newParameters) { - Set newNames = new HashSet(Arrays.asList(names)); + Set newNames = new HashSet<>(Arrays.asList(names)); final PsiParameter[] parameters = method.getParameterList().getParameters(); for (int i = 0; i < parameters.length; i++) { PsiParameter parameter = parameters[i]; diff --git a/java/java-tests/testSrc/com/intellij/refactoring/InheritanceToDelegationTest.java b/java/java-tests/testSrc/com/intellij/refactoring/InheritanceToDelegationTest.java index 01068325c9ee..0734348941b6 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/InheritanceToDelegationTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/InheritanceToDelegationTest.java @@ -139,30 +139,27 @@ public class InheritanceToDelegationTest extends MultiFileTestCase { final String className, final String fieldName, final String innerClassName, final String baseClassName, final int[] methodIndices, final String[] delegatedInterfaceNames, final boolean delegateOtherMembers, final boolean generateGetter) { - return new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.allScope(getProject())); - assertNotNull("Class " + className + " not found", aClass); - PsiClass baseClass = myJavaFacade.findClass(baseClassName, GlobalSearchScope.allScope(getProject())); - assertNotNull("Base class " + baseClassName + " not found", baseClass); - final PsiMethod[] methods = baseClass.getMethods(); - final PsiMethod[] delegatedMethods = new PsiMethod[methodIndices.length]; - for (int i = 0; i < methodIndices.length; i++) { - delegatedMethods[i] = methods[methodIndices[i]]; - } - final PsiClass[] delegatedInterfaces = new PsiClass[delegatedInterfaceNames.length]; - for (int i = 0; i < delegatedInterfaceNames.length; i++) { - String delegatedInterfaceName = delegatedInterfaceNames[i]; - PsiClass anInterface = myJavaFacade.findClass(delegatedInterfaceName, GlobalSearchScope.allScope(getProject())); - assertNotNull(anInterface); - delegatedInterfaces[i] = anInterface; - } - new InheritanceToDelegationProcessor( - myProject, - aClass, baseClass, fieldName, innerClassName, delegatedInterfaces, delegatedMethods, delegateOtherMembers, - generateGetter).run(); + return (rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.allScope(getProject())); + assertNotNull("Class " + className + " not found", aClass); + PsiClass baseClass = myJavaFacade.findClass(baseClassName, GlobalSearchScope.allScope(getProject())); + assertNotNull("Base class " + baseClassName + " not found", baseClass); + final PsiMethod[] methods = baseClass.getMethods(); + final PsiMethod[] delegatedMethods = new PsiMethod[methodIndices.length]; + for (int i = 0; i < methodIndices.length; i++) { + delegatedMethods[i] = methods[methodIndices[i]]; } + final PsiClass[] delegatedInterfaces = new PsiClass[delegatedInterfaceNames.length]; + for (int i = 0; i < delegatedInterfaceNames.length; i++) { + String delegatedInterfaceName = delegatedInterfaceNames[i]; + PsiClass anInterface = myJavaFacade.findClass(delegatedInterfaceName, GlobalSearchScope.allScope(getProject())); + assertNotNull(anInterface); + delegatedInterfaces[i] = anInterface; + } + new InheritanceToDelegationProcessor( + myProject, + aClass, baseClass, fieldName, innerClassName, delegatedInterfaces, delegatedMethods, delegateOtherMembers, + generateGetter).run(); }; } @@ -170,34 +167,31 @@ public class InheritanceToDelegationTest extends MultiFileTestCase { final String className, final String fieldName, final String innerClassName, final String baseClassName, final String[] methodNames, final String[] delegatedInterfaceNames, final boolean delegateOtherMembers, final boolean generateGetter) { - return new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.allScope(getProject())); - assertNotNull("Class " + className + " not found", aClass); - PsiClass baseClass = myJavaFacade.findClass(baseClassName, GlobalSearchScope.allScope(getProject())); - assertNotNull("Base class " + baseClassName + " not found", baseClass); - final PsiMethod[] delegatedMethods; - final List methodsList = new ArrayList(); - for (String name : methodNames) { - final PsiMethod[] methodsByName = baseClass.findMethodsByName(name, false); - ContainerUtil.addAll(methodsList, methodsByName); - } - delegatedMethods = methodsList.toArray(new PsiMethod[methodsList.size()]); - - final PsiClass[] delegatedInterfaces = new PsiClass[delegatedInterfaceNames.length]; - for (int i = 0; i < delegatedInterfaceNames.length; i++) { - String delegatedInterfaceName = delegatedInterfaceNames[i]; - PsiClass anInterface = myJavaFacade.findClass(delegatedInterfaceName, GlobalSearchScope.allScope(getProject())); - assertNotNull(anInterface); - delegatedInterfaces[i] = anInterface; - } - new InheritanceToDelegationProcessor( - myProject, - aClass, baseClass, fieldName, innerClassName, delegatedInterfaces, delegatedMethods, delegateOtherMembers, - generateGetter).run(); - //FileDocumentManager.getInstance().saveAllDocuments(); + return (rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.allScope(getProject())); + assertNotNull("Class " + className + " not found", aClass); + PsiClass baseClass = myJavaFacade.findClass(baseClassName, GlobalSearchScope.allScope(getProject())); + assertNotNull("Base class " + baseClassName + " not found", baseClass); + final PsiMethod[] delegatedMethods; + final List methodsList = new ArrayList<>(); + for (String name : methodNames) { + final PsiMethod[] methodsByName = baseClass.findMethodsByName(name, false); + ContainerUtil.addAll(methodsList, methodsByName); } + delegatedMethods = methodsList.toArray(new PsiMethod[methodsList.size()]); + + final PsiClass[] delegatedInterfaces = new PsiClass[delegatedInterfaceNames.length]; + for (int i = 0; i < delegatedInterfaceNames.length; i++) { + String delegatedInterfaceName = delegatedInterfaceNames[i]; + PsiClass anInterface = myJavaFacade.findClass(delegatedInterfaceName, GlobalSearchScope.allScope(getProject())); + assertNotNull(anInterface); + delegatedInterfaces[i] = anInterface; + } + new InheritanceToDelegationProcessor( + myProject, + aClass, baseClass, fieldName, innerClassName, delegatedInterfaces, delegatedMethods, delegateOtherMembers, + generateGetter).run(); + //FileDocumentManager.getInstance().saveAllDocuments(); }; } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/InlineSuperClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/InlineSuperClassTest.java index 701a967ad2a5..658f41934f9d 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/InlineSuperClassTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/InlineSuperClassTest.java @@ -77,18 +77,15 @@ public class InlineSuperClassTest extends MultiFileTestCase { private void doTest(boolean fail, final boolean inlineOne) { try { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - GlobalSearchScope scope = GlobalSearchScope.allScope(myProject); - PsiClass aClass = myJavaFacade.findClass("Test", scope); - if (aClass == null) aClass = myJavaFacade.findClass("p.Test", scope); - assertNotNull("Class Test not found", aClass); - PsiClass superClass = myJavaFacade.findClass("Super", scope); - if (superClass == null) superClass = myJavaFacade.findClass("p1.Super", scope); - assertNotNull("Class Super not found", superClass); - new InlineSuperClassRefactoringProcessor(myProject, inlineOne ? aClass : null, superClass, DocCommentPolicy.ASIS, aClass).run(); - } + doTest((rootDir, rootAfter) -> { + GlobalSearchScope scope = GlobalSearchScope.allScope(myProject); + PsiClass aClass = myJavaFacade.findClass("Test", scope); + if (aClass == null) aClass = myJavaFacade.findClass("p.Test", scope); + assertNotNull("Class Test not found", aClass); + PsiClass superClass = myJavaFacade.findClass("Super", scope); + if (superClass == null) superClass = myJavaFacade.findClass("p1.Super", scope); + assertNotNull("Class Super not found", superClass); + new InlineSuperClassRefactoringProcessor(myProject, inlineOne ? aClass : null, superClass, DocCommentPolicy.ASIS, aClass).run(); }); } catch (BaseRefactoringProcessor.ConflictsInTestsException e) { @@ -105,17 +102,14 @@ public class InlineSuperClassTest extends MultiFileTestCase { } private void doTestMultipleSubclasses() { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - GlobalSearchScope scope = GlobalSearchScope.allScope(myProject); - PsiClass superClass = myJavaFacade.findClass("Super", scope); - if (superClass == null) superClass = myJavaFacade.findClass("p1.Super", scope); - assertNotNull("Class Super not found", superClass); - PsiClass target1 = myJavaFacade.findClass("Test", scope); - PsiClass target2 = myJavaFacade.findClass("Test1", scope); - new InlineSuperClassRefactoringProcessor(myProject, null, superClass, DocCommentPolicy.ASIS, target1, target2).run(); - } + doTest((rootDir, rootAfter) -> { + GlobalSearchScope scope = GlobalSearchScope.allScope(myProject); + PsiClass superClass = myJavaFacade.findClass("Super", scope); + if (superClass == null) superClass = myJavaFacade.findClass("p1.Super", scope); + assertNotNull("Class Super not found", superClass); + PsiClass target1 = myJavaFacade.findClass("Test", scope); + PsiClass target2 = myJavaFacade.findClass("Test1", scope); + new InlineSuperClassRefactoringProcessor(myProject, null, superClass, DocCommentPolicy.ASIS, target1, target2).run(); }); } } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java index 387424a4ffd3..5496b11074e9 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java @@ -23,7 +23,6 @@ package com.intellij.refactoring; import com.intellij.JavaTestUtil; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.introduceparameterobject.IntroduceParameterObjectProcessor; @@ -48,31 +47,23 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{ } private void doTest(final boolean delegate, final boolean createInner) throws Exception { - doTest(delegate, createInner, new Function() { - @Override - public VariableData[] fun(PsiMethod psiMethod) { - return generateParams(psiMethod); - } - }); + doTest(delegate, createInner, IntroduceParameterObjectTest::generateParams); } private void doTest(final boolean delegate, final boolean createInner, final Function function) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(getProject())); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(getProject())); - assertNotNull("Class Test not found", aClass); + assertNotNull("Class Test not found", aClass); - final PsiMethod method = aClass.findMethodsByName("foo", false)[0]; - final VariableData[] datas = function.fun(method); + final PsiMethod method = aClass.findMethodsByName("foo", false)[0]; + final VariableData[] datas = function.fun(method); - IntroduceParameterObjectProcessor processor = new IntroduceParameterObjectProcessor("Param", "", null, method, datas, delegate, false, - createInner, null, false); - processor.run(); - } + IntroduceParameterObjectProcessor processor = new IntroduceParameterObjectProcessor("Param", "", null, method, datas, delegate, false, + createInner, null, false); + processor.run(); }); } @@ -134,53 +125,44 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{ } public void testSameTypeAndVarargs() throws Exception { - doTest(false, false, new Function() { - @Override - public VariableData[] fun(PsiMethod method) { - final PsiParameter[] parameters = method.getParameterList().getParameters(); + doTest(false, false, method -> { + final PsiParameter[] parameters = method.getParameterList().getParameters(); - final VariableData[] datas = new VariableData[parameters.length - 1]; - for (int i = 0; i < parameters.length - 1; i++) { - PsiParameter parameter = parameters[i]; - datas[i] = new VariableData(parameter); - datas[i].name = parameter.getName(); - datas[i].passAsParameter = true; - } - return datas; + final VariableData[] datas = new VariableData[parameters.length - 1]; + for (int i = 0; i < parameters.length - 1; i++) { + PsiParameter parameter = parameters[i]; + datas[i] = new VariableData(parameter); + datas[i].name = parameter.getName(); + datas[i].passAsParameter = true; } + return datas; }); } public void testCopyJavadoc1() throws Exception { - doTest(false, true, new Function() { - @Override - public VariableData[] fun(PsiMethod method) { - final PsiParameter[] parameters = method.getParameterList().getParameters(); + doTest(false, true, method -> { + final PsiParameter[] parameters = method.getParameterList().getParameters(); - final VariableData[] datas = new VariableData[parameters.length - 1]; - for (int i = 0; i < parameters.length - 1; i++) { - PsiParameter parameter = parameters[i]; - datas[i] = new VariableData(parameter); - datas[i].name = parameter.getName(); - datas[i].passAsParameter = true; - } - return datas; + final VariableData[] datas = new VariableData[parameters.length - 1]; + for (int i = 0; i < parameters.length - 1; i++) { + PsiParameter parameter = parameters[i]; + datas[i] = new VariableData(parameter); + datas[i].name = parameter.getName(); + datas[i].passAsParameter = true; } + return datas; }); } public void testTypeParametersWithChosenSubtype() throws Exception { - doTest(false, true, new Function() { - @Override - public VariableData[] fun(PsiMethod psiMethod) { - final PsiParameter parameter = psiMethod.getParameterList().getParameters()[0]; - final PsiClass collectionClass = getJavaFacade().findClass(CommonClassNames.JAVA_UTIL_COLLECTION); - final VariableData variableData = - new VariableData(parameter, JavaPsiFacade.getElementFactory(getProject()).createType(collectionClass)); - variableData.name = parameter.getName(); - variableData.passAsParameter = true; - return new VariableData[]{variableData}; - } + doTest(false, true, psiMethod -> { + final PsiParameter parameter = psiMethod.getParameterList().getParameters()[0]; + final PsiClass collectionClass = getJavaFacade().findClass(CommonClassNames.JAVA_UTIL_COLLECTION); + final VariableData variableData = + new VariableData(parameter, JavaPsiFacade.getElementFactory(getProject()).createType(collectionClass)); + variableData.name = parameter.getName(); + variableData.passAsParameter = true; + return new VariableData[]{variableData}; }); } @@ -198,23 +180,20 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{ private void doTestExistingClass(final String existingClassName, final String existingClassPackage, final boolean generateAccessors, final String newVisibility) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(getProject())); - if (aClass == null) { - aClass = myJavaFacade.findClass("p2.Test", GlobalSearchScope.projectScope(getProject())); - } - assertNotNull("Class Test not found", aClass); - - final PsiMethod method = aClass.findMethodsByName("foo", false)[0]; - IntroduceParameterObjectProcessor processor = new IntroduceParameterObjectProcessor(existingClassName, existingClassPackage, null, method, - generateParams(method), false, true, - false, newVisibility, generateAccessors); - processor.run(); - LocalFileSystem.getInstance().refresh(false); - FileDocumentManager.getInstance().saveAllDocuments(); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(getProject())); + if (aClass == null) { + aClass = myJavaFacade.findClass("p2.Test", GlobalSearchScope.projectScope(getProject())); } + assertNotNull("Class Test not found", aClass); + + final PsiMethod method = aClass.findMethodsByName("foo", false)[0]; + IntroduceParameterObjectProcessor processor = new IntroduceParameterObjectProcessor(existingClassName, existingClassPackage, null, method, + generateParams(method), false, true, + false, newVisibility, generateAccessors); + processor.run(); + LocalFileSystem.getInstance().refresh(false); + FileDocumentManager.getInstance().saveAllDocuments(); }); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableMultifileTest.java b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableMultifileTest.java index b200906a58ef..74f7496ce24f 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableMultifileTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableMultifileTest.java @@ -94,20 +94,17 @@ public class IntroduceVariableMultifileTest extends MultiFileTestCase { } PerformAction createAction(final String className, final IntroduceVariableBase testMe) { - return new PerformAction() { - @Override - public void performAction(VirtualFile vroot, VirtualFile rootAfter) { - final JavaPsiFacade psiManager = getJavaFacade(); - final PsiClass aClass = psiManager.findClass(className, GlobalSearchScope.allScope(myProject)); - assertTrue(className + " class not found", aClass != null); - final PsiFile containingFile = aClass.getContainingFile(); - final VirtualFile virtualFile = containingFile.getVirtualFile(); - assertTrue(virtualFile != null); - final Editor editor = createEditor(virtualFile); - setupCursorAndSelection(editor); - testMe.invoke(myProject, editor, containingFile, null); - FileDocumentManager.getInstance().saveAllDocuments(); - } + return (vroot, rootAfter) -> { + final JavaPsiFacade psiManager = getJavaFacade(); + final PsiClass aClass = psiManager.findClass(className, GlobalSearchScope.allScope(myProject)); + assertTrue(className + " class not found", aClass != null); + final PsiFile containingFile = aClass.getContainingFile(); + final VirtualFile virtualFile = containingFile.getVirtualFile(); + assertTrue(virtualFile != null); + final Editor editor = createEditor(virtualFile); + setupCursorAndSelection(editor); + testMe.invoke(myProject, editor, containingFile, null); + FileDocumentManager.getInstance().saveAllDocuments(); }; } } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/LightRefactoringParameterizedTestCase.java b/java/java-tests/testSrc/com/intellij/refactoring/LightRefactoringParameterizedTestCase.java index b822a6684373..8802f68156c4 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/LightRefactoringParameterizedTestCase.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/LightRefactoringParameterizedTestCase.java @@ -51,57 +51,44 @@ public abstract class LightRefactoringParameterizedTestCase extends LightRefacto public void runSingle() throws Throwable { final Throwable[] throwables = new Throwable[1]; - final Runnable runnable = new Runnable() { - @Override - public void run() { + final Runnable runnable = () -> { + try { + final String filePath = getBeforeFile(myFileSuffix); + configureByFile(filePath); + + final File testDir = new File(getTestDataPath(), filePath).getParentFile(); + final String afterName = getAfterFile(myFileSuffix); + final boolean conflictShouldBeFound = !new File(testDir, afterName).exists(); try { - final String filePath = getBeforeFile(myFileSuffix); - configureByFile(filePath); - - final File testDir = new File(getTestDataPath(), filePath).getParentFile(); - final String afterName = getAfterFile(myFileSuffix); - final boolean conflictShouldBeFound = !new File(testDir, afterName).exists(); - try { - perform(); - if (conflictShouldBeFound) { - fail("Conflict expected."); - } + perform(); + if (conflictShouldBeFound) { + fail("Conflict expected."); } - catch (BaseRefactoringProcessor.ConflictsInTestsException exception) { - if (!conflictShouldBeFound) { - fail("Conflict not expected"); - } else { - final File conflicts = new File(testDir, FileUtilRt.getNameWithoutExtension(myFileSuffix) + CONFLICTS_SUFFIX); - if (!conflicts.exists()) { - fail("Conflict file " + conflicts.getPath() + " not found"); - } - final VirtualFile conflictsFile = VfsUtil.findFileByIoFile(conflicts, false); - assertNotNull(conflictsFile); - assertEquals(LoadTextUtil.loadText(conflictsFile).toString(), exception.getMessage()); - } - } - + } + catch (BaseRefactoringProcessor.ConflictsInTestsException exception) { if (!conflictShouldBeFound) { - checkResultByFile(getAfterFile(myFileSuffix)); + fail("Conflict not expected"); + } else { + final File conflicts = new File(testDir, FileUtilRt.getNameWithoutExtension(myFileSuffix) + CONFLICTS_SUFFIX); + if (!conflicts.exists()) { + fail("Conflict file " + conflicts.getPath() + " not found"); + } + final VirtualFile conflictsFile = VfsUtil.findFileByIoFile(conflicts, false); + assertNotNull(conflictsFile); + assertEquals(LoadTextUtil.loadText(conflictsFile).toString(), exception.getMessage()); } } - catch (Throwable e) { - throwables[0] = e; + + if (!conflictShouldBeFound) { + checkResultByFile(getAfterFile(myFileSuffix)); } } + catch (Throwable e) { + throwables[0] = e; + } }; - invokeTestRunnable(new Runnable() { - @Override - public void run() { - CommandProcessor.getInstance().executeCommand(getProject(), new Runnable() { - @Override - public void run() { - runnable.run(); - } - }, "", null); - } - }); + invokeTestRunnable(() -> CommandProcessor.getInstance().executeCommand(getProject(), runnable::run, "", null)); if (throwables[0] != null) { throw throwables[0]; diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java index e9b48dffb6ea..ba225e2ab864 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java @@ -83,7 +83,7 @@ public class MakeClassStaticTest extends LightRefactoringTestCase { PsiElement element = TargetElementUtil.findTargetElement(myEditor, TargetElementUtil.ELEMENT_NAME_ACCEPTED); assertTrue(element instanceof PsiClass); PsiClass aClass = (PsiClass)element; - final ArrayList parametersForFields = new ArrayList(); + final ArrayList parametersForFields = new ArrayList<>(); final boolean addClassParameter = MakeStaticUtil.buildVariableData(aClass, parametersForFields); new MakeClassStaticProcessor( diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MakeMethodStaticTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MakeMethodStaticTest.java index eb82932852c3..77ef51199ab3 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/MakeMethodStaticTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/MakeMethodStaticTest.java @@ -248,7 +248,7 @@ public class MakeMethodStaticTest extends LightRefactoringTestCase { PsiElement element = TargetElementUtil.findTargetElement(myEditor, TargetElementUtil.ELEMENT_NAME_ACCEPTED); assertTrue(element instanceof PsiMethod); PsiMethod method = (PsiMethod) element; - final ArrayList parametersForFields = new ArrayList(); + final ArrayList parametersForFields = new ArrayList<>(); final boolean addClassParameter = MakeStaticUtil.buildVariableData(method, parametersForFields); new MakeMethodStaticProcessor( diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MoveMembersTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MoveMembersTest.java index b34486fcf110..e1e66c483fc4 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/MoveMembersTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/MoveMembersTest.java @@ -222,11 +222,8 @@ public class MoveMembersTest extends MultiFileTestCase { final String defaultVisibility, final int... memberIndices) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - MoveMembersTest.this.performAction(sourceClassName, targetClassName, memberIndices, defaultVisibility); - } + doTest((rootDir, rootAfter) -> { + MoveMembersTest.this.performAction(sourceClassName, targetClassName, memberIndices, defaultVisibility); }, lowercaseFirstLetter); } @@ -237,14 +234,14 @@ public class MoveMembersTest extends MultiFileTestCase { assertNotNull("Class " + targetClassName + " not found", targetClass); PsiElement[] children = sourceClass.getChildren(); - ArrayList members = new ArrayList(); + ArrayList members = new ArrayList<>(); for (PsiElement child : children) { if (child instanceof PsiMember) { members.add(((PsiMember) child)); } } - LinkedHashSet memberSet = new LinkedHashSet(); + LinkedHashSet memberSet = new LinkedHashSet<>(); for (int index : memberIndices) { PsiMember member = members.get(index); assertTrue(member.hasModifierProperty(PsiModifier.STATIC)); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MovePackageAsDirectoryTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MovePackageAsDirectoryTest.java index 63e92871ccf5..3e611124a549 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/MovePackageAsDirectoryTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/MovePackageAsDirectoryTest.java @@ -52,16 +52,13 @@ public class MovePackageAsDirectoryTest extends MultiFileTestCase { } public void testRenamePackage() throws Exception { - final PerformAction action = new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(myProject); - final PsiPackage sourcePackage = psiFacade.findPackage("pack1"); - assertNotNull(sourcePackage); - - RenamePsiPackageProcessor.createRenameMoveProcessor("pack1.pack2", sourcePackage, false, false).run(); - FileDocumentManager.getInstance().saveAllDocuments(); - } + final PerformAction action = (rootDir, rootAfter) -> { + final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(myProject); + final PsiPackage sourcePackage = psiFacade.findPackage("pack1"); + assertNotNull(sourcePackage); + + RenamePsiPackageProcessor.createRenameMoveProcessor("pack1.pack2", sourcePackage, false, false).run(); + FileDocumentManager.getInstance().saveAllDocuments(); }; doTest(action); } @@ -105,21 +102,15 @@ public class MovePackageAsDirectoryTest extends MultiFileTestCase { protected void preprocessSrcDir(PsiDirectory srcDirectory) { final PsiFile empty = srcDirectory.findFile(EMPTY_TXT); assert empty != null; - WriteCommandAction.runWriteCommandAction(null, new Runnable() { - public void run() { - empty.delete(); - } - }); + WriteCommandAction.runWriteCommandAction(null, empty::delete); } @Override protected void postProcessTargetDir(PsiDirectory targetDirectory) { final PsiDirectory subdirectory = targetDirectory.findSubdirectory(packageName); assert subdirectory != null; - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - subdirectory.createFile(EMPTY_TXT); - } + ApplicationManager.getApplication().runWriteAction(() -> { + subdirectory.createFile(EMPTY_TXT); }); } }); @@ -133,11 +124,7 @@ public class MovePackageAsDirectoryTest extends MultiFileTestCase { protected void preprocessSrcDir(PsiDirectory srcDirectory) { final PsiClass empty = JavaPsiFacade.getInstance(getProject()).findClass(FOO, GlobalSearchScope.projectScope(getProject())); assert empty != null; - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - empty.delete(); - } - }); + ApplicationManager.getApplication().runWriteAction(empty::delete); } @Override @@ -146,10 +133,8 @@ public class MovePackageAsDirectoryTest extends MultiFileTestCase { assert subdirectory != null; final PsiDirectory emptyDir = subdirectory.findSubdirectory("subPack"); assert emptyDir != null; - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - emptyDir.createFile(EMPTY_TXT); - } + ApplicationManager.getApplication().runWriteAction(() -> { + emptyDir.createFile(EMPTY_TXT); }); } }); @@ -182,12 +167,8 @@ public class MovePackageAsDirectoryTest extends MultiFileTestCase { @Override public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(myProject); - final Comparator directoryComparator = new Comparator() { - @Override - public int compare(PsiDirectory o1, PsiDirectory o2) { - return o1.getVirtualFile().getPresentableUrl().compareTo(o2.getVirtualFile().getPresentableUrl()); - } - }; + final Comparator directoryComparator = + (o1, o2) -> o1.getVirtualFile().getPresentableUrl().compareTo(o2.getVirtualFile().getPresentableUrl()); final PsiPackage sourcePackage = psiFacade.findPackage(myPackageName); assertNotNull(sourcePackage); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MovePackageMultirootTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MovePackageMultirootTest.java index 1ae0af9a8016..15083af219bb 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/MovePackageMultirootTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/MovePackageMultirootTest.java @@ -51,23 +51,20 @@ public class MovePackageMultirootTest extends MultiFileTestCase { } private PerformAction createAction(final String[] packageNames, final String targetPackageName) { - return new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - final PsiManager manager = PsiManager.getInstance(myProject); - PsiPackage[] sourcePackages = new PsiPackage[packageNames.length]; - for (int i = 0; i < packageNames.length; i++) { - String packageName = packageNames[i]; - sourcePackages[i] = JavaPsiFacade.getInstance(manager.getProject()).findPackage(packageName); - assertNotNull(sourcePackages[i]); - } - PsiPackage targetPackage = JavaPsiFacade.getInstance(manager.getProject()).findPackage(targetPackageName); - assertNotNull(targetPackage); - new MoveClassesOrPackagesProcessor(myProject, sourcePackages, - new MultipleRootsMoveDestination(new PackageWrapper(targetPackage)), - true, true, null).run(); - FileDocumentManager.getInstance().saveAllDocuments(); + return (rootDir, rootAfter) -> { + final PsiManager manager = PsiManager.getInstance(myProject); + PsiPackage[] sourcePackages = new PsiPackage[packageNames.length]; + for (int i = 0; i < packageNames.length; i++) { + String packageName = packageNames[i]; + sourcePackages[i] = JavaPsiFacade.getInstance(manager.getProject()).findPackage(packageName); + assertNotNull(sourcePackages[i]); } + PsiPackage targetPackage = JavaPsiFacade.getInstance(manager.getProject()).findPackage(targetPackageName); + assertNotNull(targetPackage); + new MoveClassesOrPackagesProcessor(myProject, sourcePackages, + new MultipleRootsMoveDestination(new PackageWrapper(targetPackage)), + true, true, null).run(); + FileDocumentManager.getInstance().saveAllDocuments(); }; } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MovePackageTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MovePackageTest.java index 19296b0152d9..cdcec6de4806 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/MovePackageTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/MovePackageTest.java @@ -56,12 +56,7 @@ public class MovePackageTest extends MultiFileTestCase { } private void doTest(final String[] packageNames, final String newPackageName) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - MovePackageTest.this.performAction(packageNames, newPackageName); - } - }); + doTest((rootDir, rootAfter) -> MovePackageTest.this.performAction(packageNames, newPackageName)); } private void performAction(String[] packageNames, String newPackageName) throws Exception { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/PullUpMultifileTest.java b/java/java-tests/testSrc/com/intellij/refactoring/PullUpMultifileTest.java index 195f91ad62a5..a4961a253095 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/PullUpMultifileTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/PullUpMultifileTest.java @@ -21,13 +21,11 @@ package com.intellij.refactoring; import com.intellij.JavaTestUtil; -import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.memberPullUp.PullUpConflictsUtil; import com.intellij.refactoring.memberPullUp.PullUpProcessor; import com.intellij.refactoring.util.DocCommentPolicy; -import com.intellij.refactoring.util.classMembers.InterfaceContainmentVerifier; import com.intellij.refactoring.util.classMembers.MemberInfo; import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NotNull; @@ -49,42 +47,35 @@ public class PullUpMultifileTest extends MultiFileTestCase { } private void doTest(final String... conflicts) throws Exception { - final MultiMap conflictsMap = new MultiMap(); - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - final PsiClass srcClass = myJavaFacade.findClass("a.A", GlobalSearchScope.allScope(myProject)); - assertTrue("Source class not found", srcClass != null); + final MultiMap conflictsMap = new MultiMap<>(); + doTest((rootDir, rootAfter) -> { + final PsiClass srcClass = myJavaFacade.findClass("a.A", GlobalSearchScope.allScope(myProject)); + assertTrue("Source class not found", srcClass != null); - final PsiClass targetClass = myJavaFacade.findClass("b.B", GlobalSearchScope.allScope(myProject)); - assertTrue("Target class not found", targetClass != null); + final PsiClass targetClass = myJavaFacade.findClass("b.B", GlobalSearchScope.allScope(myProject)); + assertTrue("Target class not found", targetClass != null); - final PsiMethod[] methods = srcClass.getMethods(); - assertTrue("No methods found", methods.length > 0); - final MemberInfo[] membersToMove = new MemberInfo[1]; - final MemberInfo memberInfo = new MemberInfo(methods[0]); - memberInfo.setChecked(true); - membersToMove[0] = memberInfo; + final PsiMethod[] methods = srcClass.getMethods(); + assertTrue("No methods found", methods.length > 0); + final MemberInfo[] membersToMove = new MemberInfo[1]; + final MemberInfo memberInfo = new MemberInfo(methods[0]); + memberInfo.setChecked(true); + membersToMove[0] = memberInfo; - final PsiDirectory targetDirectory = targetClass.getContainingFile().getContainingDirectory(); - final PsiPackage targetPackage = targetDirectory != null ? JavaDirectoryService.getInstance().getPackage(targetDirectory) : null; - conflictsMap.putAllValues( - PullUpConflictsUtil.checkConflicts(membersToMove, srcClass, targetClass, targetPackage, targetDirectory, new InterfaceContainmentVerifier() { - @Override - public boolean checkedInterfacesContain(PsiMethod psiMethod) { - return PullUpProcessor.checkedInterfacesContain(Arrays.asList(membersToMove), psiMethod); - } - })); + final PsiDirectory targetDirectory = targetClass.getContainingFile().getContainingDirectory(); + final PsiPackage targetPackage = targetDirectory != null ? JavaDirectoryService.getInstance().getPackage(targetDirectory) : null; + conflictsMap.putAllValues( + PullUpConflictsUtil.checkConflicts(membersToMove, srcClass, targetClass, targetPackage, targetDirectory, + psiMethod -> PullUpProcessor.checkedInterfacesContain(Arrays.asList(membersToMove), psiMethod))); - new PullUpProcessor(srcClass, targetClass, membersToMove, new DocCommentPolicy(DocCommentPolicy.ASIS)).run(); - } + new PullUpProcessor(srcClass, targetClass, membersToMove, new DocCommentPolicy(DocCommentPolicy.ASIS)).run(); }); if (conflicts.length != 0 && conflictsMap.isEmpty()) { fail("Conflict was not detected"); } - final HashSet values = new HashSet(conflictsMap.values()); - final HashSet expected = new HashSet(Arrays.asList(conflicts)); + final HashSet values = new HashSet<>(conflictsMap.values()); + final HashSet expected = new HashSet<>(Arrays.asList(conflicts)); assertEquals(expected.size(), values.size()); for (String value : values) { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/PullUpTest.java b/java/java-tests/testSrc/com/intellij/refactoring/PullUpTest.java index a4060729835e..df5f293dc6d3 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/PullUpTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/PullUpTest.java @@ -189,7 +189,7 @@ public class PullUpTest extends LightRefactoringTestCase { private void doTest(final boolean checkMembersMovedCount, String conflictMessage, RefactoringTestUtil.MemberDescriptor... membersToFind) { - final MultiMap conflictsMap = new MultiMap(); + final MultiMap conflictsMap = new MultiMap<>(); configureByFile(BASE_PATH + getTestName(false) + ".java"); PsiElement elementAt = getFile().findElementAt(getEditor().getCaretModel().getOffset()); final PsiClass sourceClass = PsiTreeUtil.getParentOfType(elementAt, PsiClass.class); @@ -206,24 +206,17 @@ public class PullUpTest extends LightRefactoringTestCase { final MemberInfo[] infos = RefactoringTestUtil.findMembers(sourceClass, membersToFind); final int[] countMoved = {0}; - final MoveMemberListener listener = new MoveMemberListener() { - @Override - public void memberMoved(PsiClass aClass, PsiMember member) { - assertEquals(sourceClass, aClass); - countMoved[0]++; - } + final MoveMemberListener listener = (aClass, member) -> { + assertEquals(sourceClass, aClass); + countMoved[0]++; }; JavaRefactoringListenerManager.getInstance(getProject()).addMoveMembersListener(listener); final PsiDirectory targetDirectory = targetClass.getContainingFile().getContainingDirectory(); final PsiPackage targetPackage = targetDirectory != null ? JavaDirectoryService.getInstance().getPackage(targetDirectory) : null; conflictsMap.putAllValues( PullUpConflictsUtil - .checkConflicts(infos, sourceClass, targetClass, targetPackage, targetDirectory, new InterfaceContainmentVerifier() { - @Override - public boolean checkedInterfacesContain(PsiMethod psiMethod) { - return PullUpProcessor.checkedInterfacesContain(Arrays.asList(infos), psiMethod); - } - }) + .checkConflicts(infos, sourceClass, targetClass, targetPackage, targetDirectory, + psiMethod -> PullUpProcessor.checkedInterfacesContain(Arrays.asList(infos), psiMethod)) ); final PullUpProcessor helper = new PullUpProcessor(sourceClass, targetClass, infos, new DocCommentPolicy(DocCommentPolicy.ASIS)); helper.run(); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/PushDownMultifileTest.java b/java/java-tests/testSrc/com/intellij/refactoring/PushDownMultifileTest.java index 1119144e887b..d046e5932cbb 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/PushDownMultifileTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/PushDownMultifileTest.java @@ -54,28 +54,25 @@ public class PushDownMultifileTest extends MultiFileTestCase { private void doTest(final boolean fail, final String sourceClassName, final String targetClassName) throws Exception { try { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - final PsiClass srcClass = myJavaFacade.findClass(sourceClassName, GlobalSearchScope.allScope(myProject)); - assertTrue("Source class not found", srcClass != null); + doTest((rootDir, rootAfter) -> { + final PsiClass srcClass = myJavaFacade.findClass(sourceClassName, GlobalSearchScope.allScope(myProject)); + assertTrue("Source class not found", srcClass != null); - final PsiClass targetClass = myJavaFacade.findClass(targetClassName, GlobalSearchScope.allScope(myProject)); - assertTrue("Target class not found", targetClass != null); + final PsiClass targetClass = myJavaFacade.findClass(targetClassName, GlobalSearchScope.allScope(myProject)); + assertTrue("Target class not found", targetClass != null); - final PsiMethod[] methods = srcClass.getMethods(); - assertTrue("No methods found", methods.length > 0); - final MemberInfo[] membersToMove = new MemberInfo[1]; - final MemberInfo memberInfo = new MemberInfo(methods[0]); - memberInfo.setChecked(true); - membersToMove[0] = memberInfo; + final PsiMethod[] methods = srcClass.getMethods(); + assertTrue("No methods found", methods.length > 0); + final MemberInfo[] membersToMove = new MemberInfo[1]; + final MemberInfo memberInfo = new MemberInfo(methods[0]); + memberInfo.setChecked(true); + membersToMove[0] = memberInfo; - new PushDownProcessor(getProject(), membersToMove, srcClass, new DocCommentPolicy(DocCommentPolicy.ASIS)).run(); + new PushDownProcessor(getProject(), membersToMove, srcClass, new DocCommentPolicy(DocCommentPolicy.ASIS)).run(); - //LocalFileSystem.getInstance().refresh(false); - //FileDocumentManager.getInstance().saveAllDocuments(); - } + //LocalFileSystem.getInstance().refresh(false); + //FileDocumentManager.getInstance().saveAllDocuments(); }); } catch (BaseRefactoringProcessor.ConflictsInTestsException e) { @@ -110,28 +107,25 @@ public class PushDownMultifileTest extends MultiFileTestCase { public void testUsagesInXml() throws Exception { try { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - final PsiClass srcClass = myJavaFacade.findClass("a.A", GlobalSearchScope.allScope(myProject)); - assertTrue("Source class not found", srcClass != null); + doTest((rootDir, rootAfter) -> { + final PsiClass srcClass = myJavaFacade.findClass("a.A", GlobalSearchScope.allScope(myProject)); + assertTrue("Source class not found", srcClass != null); - final PsiClass targetClass = myJavaFacade.findClass("b.B", GlobalSearchScope.allScope(myProject)); - assertTrue("Target class not found", targetClass != null); + final PsiClass targetClass = myJavaFacade.findClass("b.B", GlobalSearchScope.allScope(myProject)); + assertTrue("Target class not found", targetClass != null); - final PsiField[] fields = srcClass.getFields(); - assertTrue("No methods found", fields.length > 0); - final MemberInfo[] membersToMove = new MemberInfo[1]; - final MemberInfo memberInfo = new MemberInfo(fields[0]); - memberInfo.setChecked(true); - membersToMove[0] = memberInfo; + final PsiField[] fields = srcClass.getFields(); + assertTrue("No methods found", fields.length > 0); + final MemberInfo[] membersToMove = new MemberInfo[1]; + final MemberInfo memberInfo = new MemberInfo(fields[0]); + memberInfo.setChecked(true); + membersToMove[0] = memberInfo; - new PushDownProcessor(getProject(), membersToMove, srcClass, new DocCommentPolicy(DocCommentPolicy.ASIS)).run(); + new PushDownProcessor(getProject(), membersToMove, srcClass, new DocCommentPolicy(DocCommentPolicy.ASIS)).run(); - //LocalFileSystem.getInstance().refresh(false); - //FileDocumentManager.getInstance().saveAllDocuments(); - } + //LocalFileSystem.getInstance().refresh(false); + //FileDocumentManager.getInstance().saveAllDocuments(); }); } catch (BaseRefactoringProcessor.ConflictsInTestsException e) { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/PushDownTest.java b/java/java-tests/testSrc/com/intellij/refactoring/PushDownTest.java index ed6cc2cbb1db..c828fffffd9f 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/PushDownTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/PushDownTest.java @@ -78,7 +78,7 @@ public class PushDownTest extends LightRefactoringTestCase { assert currentClass != null; - final List membersToMove = new ArrayList(); + final List membersToMove = new ArrayList<>(); final PsiField fieldByName = currentClass.findFieldByName("fieldToMove", false); if (fieldByName != null) { @@ -109,12 +109,7 @@ public class PushDownTest extends LightRefactoringTestCase { configureByFile(BASE_PATH + getTestName(false) + ".java"); PsiClass currentClass = JavaPsiFacade.getInstance(getProject()).findClass("Test", GlobalSearchScope.projectScope(getProject())); - MemberInfoStorage memberInfoStorage = new MemberInfoStorage(currentClass, new MemberInfo.Filter() { - @Override - public boolean includeMember(PsiMember element) { - return true; - } - }); + MemberInfoStorage memberInfoStorage = new MemberInfoStorage(currentClass, element -> true); List members = memberInfoStorage.getClassMemberInfos(currentClass); for (MemberInfo member : members) { member.setChecked(true); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RemoveMiddleManTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RemoveMiddleManTest.java index 8966302e9898..e44d0051d445 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RemoveMiddleManTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RemoveMiddleManTest.java @@ -50,34 +50,31 @@ public class RemoveMiddleManTest extends MultiFileTestCase{ } private void doTest(final String conflict) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.allScope(getProject())); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.allScope(getProject())); - if (aClass == null) aClass = myJavaFacade.findClass("p.Test", GlobalSearchScope.allScope(getProject())); - assertNotNull("Class Test not found", aClass); + if (aClass == null) aClass = myJavaFacade.findClass("p.Test", GlobalSearchScope.allScope(getProject())); + assertNotNull("Class Test not found", aClass); - final PsiField field = aClass.findFieldByName("myField", false); - final Set methods = DelegationUtils.getDelegatingMethodsForField(field); - List infos = new ArrayList(); - for (PsiMethod method : methods) { - final MemberInfo info = new MemberInfo(method); - info.setChecked(true); - info.setToAbstract(true); - infos.add(info); - } - try { - RemoveMiddlemanProcessor processor = new RemoveMiddlemanProcessor(field, infos); - processor.run(); - LocalFileSystem.getInstance().refresh(false); - FileDocumentManager.getInstance().saveAllDocuments(); - if (conflict != null) fail("Conflict expected"); - } - catch (BaseRefactoringProcessor.ConflictsInTestsException e) { - if (conflict == null) throw e; - assertEquals(conflict, e.getMessage()); - } + final PsiField field = aClass.findFieldByName("myField", false); + final Set methods = DelegationUtils.getDelegatingMethodsForField(field); + List infos = new ArrayList<>(); + for (PsiMethod method : methods) { + final MemberInfo info = new MemberInfo(method); + info.setChecked(true); + info.setToAbstract(true); + infos.add(info); + } + try { + RemoveMiddlemanProcessor processor = new RemoveMiddlemanProcessor(field, infos); + processor.run(); + LocalFileSystem.getInstance().refresh(false); + FileDocumentManager.getInstance().saveAllDocuments(); + if (conflict != null) fail("Conflict expected"); + } + catch (BaseRefactoringProcessor.ConflictsInTestsException e) { + if (conflict == null) throw e; + assertEquals(conflict, e.getMessage()); } }); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RenameClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RenameClassTest.java index 272b8d6e7918..dd50af9065a6 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RenameClassTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RenameClassTest.java @@ -75,20 +75,17 @@ public class RenameClassTest extends MultiFileTestCase { } private void doRenameClass(final String className, final String newName) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.allScope(getProject())); - assertNotNull("Class XX not found", aClass); + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.allScope(getProject())); + assertNotNull("Class XX not found", aClass); - final RenameProcessor processor = new RenameProcessor(myProject, aClass, newName, true, true); - for (AutomaticRenamerFactory factory : Extensions.getExtensions(AutomaticRenamerFactory.EP_NAME)) { - processor.addRenamerFactory(factory); - } - processor.run(); - PsiDocumentManager.getInstance(myProject).commitAllDocuments(); - FileDocumentManager.getInstance().saveAllDocuments(); + final RenameProcessor processor = new RenameProcessor(myProject, aClass, newName, true, true); + for (AutomaticRenamerFactory factory : Extensions.getExtensions(AutomaticRenamerFactory.EP_NAME)) { + processor.addRenamerFactory(factory); } + processor.run(); + PsiDocumentManager.getInstance(myProject).commitAllDocuments(); + FileDocumentManager.getInstance().saveAllDocuments(); }); } @@ -101,12 +98,7 @@ public class RenameClassTest extends MultiFileTestCase { } private void doTest(@NonNls final String qClassName, @NonNls final String newName) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - RenameClassTest.this.performAction(qClassName, newName); - } - }); + doTest((rootDir, rootAfter) -> RenameClassTest.this.performAction(qClassName, newName)); } private void performAction(String qClassName, String newName) throws Exception { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RenameCollisionsTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RenameCollisionsTest.java index 46c79e410e73..ff25480f187a 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RenameCollisionsTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RenameCollisionsTest.java @@ -283,7 +283,7 @@ public class RenameCollisionsTest extends LightRefactoringTestCase { PsiElement element = TargetElementUtil .findTargetElement(myEditor, TargetElementUtil.ELEMENT_NAME_ACCEPTED | TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED); assertNotNull(element); - final UsageInfo[] usageInfos = RenameUtil.findUsages(element, "newName", true, true, new HashMap()); + final UsageInfo[] usageInfos = RenameUtil.findUsages(element, "newName", true, true, new HashMap<>()); assertSize(1, usageInfos); for (UsageInfo usageInfo : usageInfos) { assertTrue(usageInfo instanceof MoveRenameUsageInfo); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java index c8c0f781582f..590c2e41f1d4 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java @@ -62,7 +62,7 @@ public class RenameLocalTest extends LightRefactoringTestCase { PsiElement element = TargetElementUtil .findTargetElement(myEditor, TargetElementUtil.ELEMENT_NAME_ACCEPTED | TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED); assertNotNull(element); - final HashSet result = new HashSet(); + final HashSet result = new HashSet<>(); new JavaNameSuggestionProvider().getSuggestedNames(element, getFile(), result); assertTrue(result.toString(), result.contains("window")); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RenameMembersInplaceTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RenameMembersInplaceTest.java index 937fee47025f..952b410d9661 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RenameMembersInplaceTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RenameMembersInplaceTest.java @@ -90,7 +90,7 @@ public class RenameMembersInplaceTest extends LightCodeInsightTestCase { final PsiElement element = TargetElementUtil.findTargetElement(myEditor, TargetElementUtil.getInstance().getAllAccepted()); assertNotNull(element); - final Set result = new LinkedHashSet(); + final Set result = new LinkedHashSet<>(); new JavaNameSuggestionProvider().getSuggestedNames(element, getFile(), result); CodeInsightTestUtil.doInlineRename(new MemberInplaceRenameHandler(), result.iterator().next(), getEditor(), element); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RenameMethodMultiTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RenameMethodMultiTest.java index 0bd3fc0ff24c..3befcf254d24 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RenameMethodMultiTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RenameMethodMultiTest.java @@ -99,41 +99,35 @@ public class RenameMethodMultiTest extends MultiFileTestCase { } private void doTest(final String className, final String methodSignature, final String newName) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - final JavaPsiFacade manager = getJavaFacade(); - final PsiClass aClass = manager.findClass(className, GlobalSearchScope.moduleScope(myModule)); - assertNotNull(aClass); - final PsiMethod methodBySignature = aClass.findMethodBySignature(manager.getElementFactory().createMethodFromText( - methodSignature + "{}", null), false); - assertNotNull(methodBySignature); - final RenameProcessor renameProcessor = new RenameProcessor(myProject, methodBySignature, newName, false, false); - renameProcessor.run(); - FileDocumentManager.getInstance().saveAllDocuments(); - } + doTest((rootDir, rootAfter) -> { + final JavaPsiFacade manager = getJavaFacade(); + final PsiClass aClass = manager.findClass(className, GlobalSearchScope.moduleScope(myModule)); + assertNotNull(aClass); + final PsiMethod methodBySignature = aClass.findMethodBySignature(manager.getElementFactory().createMethodFromText( + methodSignature + "{}", null), false); + assertNotNull(methodBySignature); + final RenameProcessor renameProcessor = new RenameProcessor(myProject, methodBySignature, newName, false, false); + renameProcessor.run(); + FileDocumentManager.getInstance().saveAllDocuments(); }); } private void doAutomaticRenameMethod(final String className, final String methodSignature, final String newName) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - final JavaPsiFacade manager = getJavaFacade(); - final PsiClass aClass = manager.findClass(className, GlobalSearchScope.moduleScope(myModule)); - assertNotNull(aClass); - final PsiMethod methodBySignature = aClass.findMethodBySignature(manager.getElementFactory().createMethodFromText( - methodSignature + "{}", null), false); - assertNotNull(methodBySignature); + doTest((rootDir, rootAfter) -> { + final JavaPsiFacade manager = getJavaFacade(); + final PsiClass aClass = manager.findClass(className, GlobalSearchScope.moduleScope(myModule)); + assertNotNull(aClass); + final PsiMethod methodBySignature = aClass.findMethodBySignature(manager.getElementFactory().createMethodFromText( + methodSignature + "{}", null), false); + assertNotNull(methodBySignature); - final RenameProcessor processor = new RenameProcessor(myProject, methodBySignature, newName, false, false); - for (AutomaticRenamerFactory factory : Extensions.getExtensions(AutomaticRenamerFactory.EP_NAME)) { - processor.addRenamerFactory(factory); - } - processor.run(); - PsiDocumentManager.getInstance(myProject).commitAllDocuments(); - FileDocumentManager.getInstance().saveAllDocuments(); + final RenameProcessor processor = new RenameProcessor(myProject, methodBySignature, newName, false, false); + for (AutomaticRenamerFactory factory : Extensions.getExtensions(AutomaticRenamerFactory.EP_NAME)) { + processor.addRenamerFactory(factory); } + processor.run(); + PsiDocumentManager.getInstance(myProject).commitAllDocuments(); + FileDocumentManager.getInstance().saveAllDocuments(); }); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ReplaceConstructorWithBuilderTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ReplaceConstructorWithBuilderTest.java index 8ecd54441f6a..8c4be9cd0ec8 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ReplaceConstructorWithBuilderTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ReplaceConstructorWithBuilderTest.java @@ -62,13 +62,13 @@ public class ReplaceConstructorWithBuilderTest extends MultiFileTestCase { } public void testConstructorChain() throws Exception { - final HashMap defaults = new HashMap(); + final HashMap defaults = new HashMap<>(); defaults.put("i", "2"); doTest(true, defaults); } public void testConstructorChainWithoutDefaults() throws Exception { - final HashMap defaults = new HashMap(); + final HashMap defaults = new HashMap<>(); defaults.put("i", "2"); defaults.put("j", null); doTest(true, defaults); @@ -102,39 +102,36 @@ public class ReplaceConstructorWithBuilderTest extends MultiFileTestCase { final Map expectedDefaults, final String conflicts, final String packageName) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - final PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(getProject())); - assertNotNull("Class Test not found", aClass); + doTest((rootDir, rootAfter) -> { + final PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(getProject())); + assertNotNull("Class Test not found", aClass); - final LinkedHashMap map = new LinkedHashMap(); - final PsiMethod[] constructors = aClass.getConstructors(); - for (PsiMethod constructor : constructors) { - ParameterData.createFromConstructor(constructor, "set", map); - } - if (expectedDefaults != null) { - for (Map.Entry entry : expectedDefaults.entrySet()) { - final ParameterData parameterData = map.get(entry.getKey()); - assertNotNull(parameterData); - assertEquals(entry.getValue(), parameterData.getDefaultValue()); - } - } - try { - new ReplaceConstructorWithBuilderProcessor(getProject(), constructors, map, "Builder", packageName, null, createNewBuilderClass).run(); - if (conflicts != null) { - fail("Conflicts were not detected:" + conflicts); - } - } - catch (BaseRefactoringProcessor.ConflictsInTestsException e) { - - if (conflicts == null) { - fail("Conflict detected:" + e.getMessage()); - } - } - LocalFileSystem.getInstance().refresh(false); - FileDocumentManager.getInstance().saveAllDocuments(); + final LinkedHashMap map = new LinkedHashMap<>(); + final PsiMethod[] constructors = aClass.getConstructors(); + for (PsiMethod constructor : constructors) { + ParameterData.createFromConstructor(constructor, "set", map); } + if (expectedDefaults != null) { + for (Map.Entry entry : expectedDefaults.entrySet()) { + final ParameterData parameterData = map.get(entry.getKey()); + assertNotNull(parameterData); + assertEquals(entry.getValue(), parameterData.getDefaultValue()); + } + } + try { + new ReplaceConstructorWithBuilderProcessor(getProject(), constructors, map, "Builder", packageName, null, createNewBuilderClass).run(); + if (conflicts != null) { + fail("Conflicts were not detected:" + conflicts); + } + } + catch (BaseRefactoringProcessor.ConflictsInTestsException e) { + + if (conflicts == null) { + fail("Conflict detected:" + e.getMessage()); + } + } + LocalFileSystem.getInstance().refresh(false); + FileDocumentManager.getInstance().saveAllDocuments(); }); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java b/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java index 98a72b4e989e..f9a4701a02c6 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java @@ -278,11 +278,8 @@ public class SafeDeleteTest extends MultiFileTestCase { } private void doTest(@NonNls final String qClassName) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - SafeDeleteTest.this.performAction(qClassName); - } + doTest((rootDir, rootAfter) -> { + SafeDeleteTest.this.performAction(qClassName); }); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/TurnRefsToSuperTest.java b/java/java-tests/testSrc/com/intellij/refactoring/TurnRefsToSuperTest.java index 7fef2e73b6cc..017f5a7e1a72 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/TurnRefsToSuperTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/TurnRefsToSuperTest.java @@ -67,11 +67,8 @@ public class TurnRefsToSuperTest extends MultiFileTestCase { //public void testForEach2() throws Exception { doTest("Test.MyIterableImpl", "Test.MyIterable", false); } private void doTest(@NonNls final String className, @NonNls final String superClassName, final boolean replaceInstanceOf) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - TurnRefsToSuperTest.this.performAction(className, superClassName, replaceInstanceOf); - } + doTest((rootDir, rootAfter) -> { + TurnRefsToSuperTest.this.performAction(className, superClassName, replaceInstanceOf); }, true); } diff --git a/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java b/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java index 5cfefaa3a065..861c5ef62b1d 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java @@ -672,12 +672,7 @@ public class TypeCookTest extends MultiFileTestCase { } public void start(final boolean cookObjects) throws Exception { - doTest(new PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - TypeCookTest.this.performAction("Test", rootDir.getName(), cookObjects); - } - }); + doTest((rootDir, rootAfter) -> TypeCookTest.this.performAction("Test", rootDir.getName(), cookObjects)); } private void performAction(String className, String rootDir, final boolean cookObjects) throws Exception { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/WrapReturnValueTest.java b/java/java-tests/testSrc/com/intellij/refactoring/WrapReturnValueTest.java index a6e362073bb9..c189f9bb850a 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/WrapReturnValueTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/WrapReturnValueTest.java @@ -70,18 +70,15 @@ public class WrapReturnValueTest extends MultiFileTestCase { private void doTest(final boolean existing, String exceptionMessage, final boolean createInnerClass) { try { - doTest(new PerformAction() { - @Override - public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) { - PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(getProject())); - assertNotNull("Class Test not found", aClass); - PsiMethod method = aClass.findMethodsByName("foo", false)[0]; - String wrapperClassName = "Wrapper"; - PsiClass wrapperClass = myJavaFacade.findClass(wrapperClassName, GlobalSearchScope.projectScope(getProject())); - assertTrue(!existing || wrapperClass != null); - PsiField delegateField = existing ? wrapperClass.findFieldByName("myField", false) : null; - new WrapReturnValueProcessor(wrapperClassName, "", null, method, existing, createInnerClass, delegateField).run(); - } + doTest((rootDir, rootAfter) -> { + PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(getProject())); + assertNotNull("Class Test not found", aClass); + PsiMethod method = aClass.findMethodsByName("foo", false)[0]; + String wrapperClassName = "Wrapper"; + PsiClass wrapperClass = myJavaFacade.findClass(wrapperClassName, GlobalSearchScope.projectScope(getProject())); + assertTrue(!existing || wrapperClass != null); + PsiField delegateField = existing ? wrapperClass.findFieldByName("myField", false) : null; + new WrapReturnValueProcessor(wrapperClassName, "", null, method, existing, createInnerClass, delegateField).run(); }); } catch (BaseRefactoringProcessor.ConflictsInTestsException e) { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureTest.java b/java/java-tests/testSrc/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureTest.java index 9bc39948badf..3a2ee0b0e318 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/changeClassSignature/ChangeClassSignatureTest.java @@ -22,120 +22,65 @@ public class ChangeClassSignatureTest extends LightRefactoringTestCase { } public void testNoParams() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) throws IncorrectOperationException { - return new TypeParameterInfo[]{ - new TypeParameterInfo(aClass, "T", "java.lang.String") - }; - } + doTest(aClass -> new TypeParameterInfo[]{ + new TypeParameterInfo(aClass, "T", "java.lang.String") }); } public void testInstanceOf() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) throws IncorrectOperationException { - return new TypeParameterInfo[]{ - new TypeParameterInfo(aClass, "T", "java.lang.String") - }; - } + doTest(aClass -> new TypeParameterInfo[]{ + new TypeParameterInfo(aClass, "T", "java.lang.String") }); } public void testSubstituteParamInsideClass() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) throws IncorrectOperationException { - return new TypeParameterInfo[0]; - } - }); + doTest(aClass -> new TypeParameterInfo[0]); } public void testRemoveAllParams() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) { - return new TypeParameterInfo[0]; - } - }); + doTest(aClass -> new TypeParameterInfo[0]); } public void testReorderParams() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) { - return new TypeParameterInfo[] { - new TypeParameterInfo(1), - new TypeParameterInfo(0) - }; - } + doTest(aClass -> new TypeParameterInfo[] { + new TypeParameterInfo(1), + new TypeParameterInfo(0) }); } public void testAddParam() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) throws IncorrectOperationException { - return new TypeParameterInfo[] { - new TypeParameterInfo(0), - new TypeParameterInfo(aClass, "E", "L") - }; - } + doTest(aClass -> new TypeParameterInfo[] { + new TypeParameterInfo(0), + new TypeParameterInfo(aClass, "E", "L") }); } public void testAddParamDiamond() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) throws IncorrectOperationException { - return new TypeParameterInfo[] { - new TypeParameterInfo(0), - new TypeParameterInfo(aClass, "I", "Integer") - }; - } + doTest(aClass -> new TypeParameterInfo[] { + new TypeParameterInfo(0), + new TypeParameterInfo(aClass, "I", "Integer") }); } public void testAddOneFirst() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) throws IncorrectOperationException { - return new TypeParameterInfo[]{ - new TypeParameterInfo(aClass, "T", "java.lang.String") - }; - } + doTest(aClass -> new TypeParameterInfo[]{ + new TypeParameterInfo(aClass, "T", "java.lang.String") }, "Zero.java", "OneString.java"); } public void testAddManyFirst() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) throws IncorrectOperationException { - return new TypeParameterInfo[]{ - new TypeParameterInfo(aClass, "U", "SubjectFace"), - new TypeParameterInfo(aClass, "V", "java.util.Set") - }; - } + doTest(aClass -> new TypeParameterInfo[]{ + new TypeParameterInfo(aClass, "U", "SubjectFace"), + new TypeParameterInfo(aClass, "V", "java.util.Set") }, "Zero.java", "TwoSubjectFaceSetObject.java"); } public void testRemoveOneLast() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) throws IncorrectOperationException { - return new TypeParameterInfo[0]; - } - }, "OneString.java", "Zero.java"); + doTest(aClass -> new TypeParameterInfo[0], "OneString.java", "Zero.java"); } public void testRemoveManyLast() throws Exception { - doTest(new GenParams() { - @Override - public TypeParameterInfo[] gen(PsiClass aClass) throws IncorrectOperationException { - return new TypeParameterInfo[0]; - } - }, "TwoSubjectFaceSetObject.java", "Zero.java"); + doTest(aClass -> new TypeParameterInfo[0], "TwoSubjectFaceSetObject.java", "Zero.java"); } private void doTest(GenParams gen) throws Exception { diff --git a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLibraryMethodTest.java b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLibraryMethodTest.java index 541d75d42109..65cd549ecd3f 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLibraryMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLibraryMethodTest.java @@ -51,14 +51,12 @@ public class InlineLibraryMethodTest extends RefactoringTestCase { PsiClass fileClass = getJavaFacade().findClass("mycompany.File"); assertNotNull(fileClass); final PsiFile file = fileClass.getContainingFile(); - WriteCommandAction.runWriteCommandAction(null, new Runnable() { - public void run() { - try { - ((VirtualFileSystemEntry)file.getVirtualFile()).setWritable(false); - } - catch (IOException e) { - throw new RuntimeException(e); - } + WriteCommandAction.runWriteCommandAction(null, () -> { + try { + ((VirtualFileSystemEntry)file.getVirtualFile()).setWritable(false); + } + catch (IOException e) { + throw new RuntimeException(e); } }); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/migration/MigrationTest.java b/java/java-tests/testSrc/com/intellij/refactoring/migration/MigrationTest.java index 91349d6f3fec..76488a4f7780 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/migration/MigrationTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/migration/MigrationTest.java @@ -57,12 +57,9 @@ public class MigrationTest extends MultiFileTestCase { } private MultiFileTestCase.PerformAction createAction(final MigrationMap migrationMap) { - return new MultiFileTestCase.PerformAction() { - @Override - public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - new MigrationProcessor(myProject, migrationMap).run(); - FileDocumentManager.getInstance().saveAllDocuments(); - } + return (rootDir, rootAfter) -> { + new MigrationProcessor(myProject, migrationMap).run(); + FileDocumentManager.getInstance().saveAllDocuments(); }; } From 6250eb660457620b5eb7e7184008bbbbbc1bce4d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 10 Jun 2015 17:44:51 +0300 Subject: [PATCH 04/82] tests ui: paint optimization: don't try to paint invisible nodes --- .../com/intellij/execution/testframework/TestTreeView.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/platform/testRunner/src/com/intellij/execution/testframework/TestTreeView.java b/platform/testRunner/src/com/intellij/execution/testframework/TestTreeView.java index 2c32b366a923..6df1834aa748 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/TestTreeView.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/TestTreeView.java @@ -191,7 +191,9 @@ public abstract class TestTreeView extends Tree implements DataProvider, CopyPro if (TestConsoleProperties.SHOW_INLINE_STATISTICS.value(properties)) { Rectangle visibleRect = getVisibleRect(); Rectangle clip = g.getClipBounds(); - for (int row = 0; row < getRowCount(); row++) { + final int visibleRowCount = TreeUtil.getVisibleRowCountForFixedRowHeight(this); + final int firstRow = getClosestRowForLocation(0, visibleRect.y); + for (int row = firstRow; row < Math.min(firstRow + visibleRowCount, getRowCount()); row++) { if (isExpandableHandlerVisibleForCurrentRow(row)) { continue; } From cf5d2b5b604e796cb91b0789f5d745f0bf40647b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 10 Jun 2015 18:49:44 +0300 Subject: [PATCH 05/82] optimize balloon notification for huge number of tests --- .../sm/SMTestRunnerConnectionUtil.java | 4 -- .../ui/SMTRunnerNotificationsHandler.java | 49 ----------------- .../sm/runner/ui/SMTestRunnerResultsForm.java | 11 ++++ .../execution/testframework/TestsUIUtil.java | 54 ++++++++++--------- 4 files changed, 41 insertions(+), 77 deletions(-) delete mode 100644 platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTRunnerNotificationsHandler.java diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/SMTestRunnerConnectionUtil.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/SMTestRunnerConnectionUtil.java index 0ad0279358dc..b561bf8999bb 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/SMTestRunnerConnectionUtil.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/SMTestRunnerConnectionUtil.java @@ -204,8 +204,6 @@ public class SMTestRunnerConnectionUtil { // UI actions final SMTRunnerUIActionsHandler uiActionsHandler = new SMTRunnerUIActionsHandler(consoleProperties); - // notifications - final SMTRunnerNotificationsHandler notifierHandler = new SMTRunnerNotificationsHandler(consoleProperties); // subscribe to events @@ -219,8 +217,6 @@ public class SMTestRunnerConnectionUtil { if (Registry.is("tests.view.old.statistics.panel")) { eventsProcessor.addEventsListener(statisticsPane.createTestEventsListener()); } - // subscribes test runner's notification balloons on results viewer events - eventsProcessor.addEventsListener(notifierHandler); processHandler.addProcessListener(new ProcessAdapter() { @Override diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTRunnerNotificationsHandler.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTRunnerNotificationsHandler.java deleted file mode 100644 index b10d2e03c7dc..000000000000 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTRunnerNotificationsHandler.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.execution.testframework.sm.runner.ui; - -import com.intellij.execution.testframework.TestConsoleProperties; -import com.intellij.execution.testframework.TestsUIUtil; -import com.intellij.execution.testframework.sm.runner.SMTRunnerConsoleProperties; -import com.intellij.execution.testframework.sm.runner.SMTRunnerEventsAdapter; -import com.intellij.execution.testframework.sm.runner.SMTestProxy; -import org.jetbrains.annotations.NotNull; - -/** - * @author Roman Chernyatchik - */ -public class SMTRunnerNotificationsHandler extends SMTRunnerEventsAdapter { - private final TestConsoleProperties myConsoleProperties; - private boolean myStarted = false; - - public SMTRunnerNotificationsHandler(@NotNull final TestConsoleProperties consoleProperties) { - myConsoleProperties = consoleProperties; - } - - public void onTestingStarted(@NotNull SMTestProxy.SMRootTestProxy testsRoot) { - myStarted = true; - } - - public void onTestingFinished(@NotNull SMTestProxy.SMRootTestProxy testsRoot) { - if (testsRoot.isEmptySuite() && - !testsRoot.isInterrupted() && - myConsoleProperties instanceof SMTRunnerConsoleProperties && - ((SMTRunnerConsoleProperties)myConsoleProperties).fixEmptySuite()) { - return; - } - TestsUIUtil.notifyByBalloon(myConsoleProperties.getProject(), myStarted, testsRoot, myConsoleProperties, null); - } -} \ No newline at end of file diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java index 4237ddf91c63..b22cb5ebec72 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java @@ -27,6 +27,7 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.progress.util.ColorProgressBar; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.MessageType; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Pass; import com.intellij.openapi.util.registry.Registry; @@ -294,6 +295,16 @@ public class SMTestRunnerResultsForm extends TestResultsPanel } fireOnTestingFinished(); + + if (testsRoot.isEmptySuite() && + !testsRoot.isInterrupted() && + myConsoleProperties instanceof SMTRunnerConsoleProperties && + ((SMTRunnerConsoleProperties)myConsoleProperties).fixEmptySuite()) { + return; + } + final TestsUIUtil.TestResultPresentation presentation = new TestsUIUtil.TestResultPresentation(testsRoot, myStartTime > 0, null) + .getPresentation(myFailedTestCount, myFinishedTestCount - myFailedTestCount - myIgnoredTestCount, myTotalTestCount - myFinishedTestCount, myIgnoredTestCount); + TestsUIUtil.notifyByBalloon(myConsoleProperties.getProject(), testsRoot, myConsoleProperties, presentation); } public void onTestsCountInSuite(final int count) { diff --git a/platform/testRunner/src/com/intellij/execution/testframework/TestsUIUtil.java b/platform/testRunner/src/com/intellij/execution/testframework/TestsUIUtil.java index 177ca6793d49..667f34ae126c 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/TestsUIUtil.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/TestsUIUtil.java @@ -112,6 +112,13 @@ public class TestsUIUtil { final AbstractTestProxy root, final TestConsoleProperties properties, @Nullable final String comment) { + notifyByBalloon(project, root, properties, new TestResultPresentation(root, started, comment).getPresentation()); + } + + public static void notifyByBalloon(@NotNull final Project project, + final AbstractTestProxy root, + final TestConsoleProperties properties, + TestResultPresentation testResultPresentation) { if (project.isDisposed()) return; if (properties == null) return; @@ -120,15 +127,10 @@ public class TestsUIUtil { final String testRunDebugId = properties.isDebug() ? ToolWindowId.DEBUG : ToolWindowId.RUN; final ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(project); - String title; - String text; - String balloonText; - MessageType type; - TestResultPresentation testResultPresentation = new TestResultPresentation(root, started, comment).getPresentation(); - type = testResultPresentation.getType(); - balloonText = testResultPresentation.getBalloonText(); - title = testResultPresentation.getTitle(); - text = testResultPresentation.getText(); + final String title = testResultPresentation.getTitle(); + final String text = testResultPresentation.getText(); + final String balloonText = testResultPresentation.getBalloonText(); + final MessageType type = testResultPresentation.getType(); if (!Comparing.strEqual(toolWindowManager.getActiveToolWindowId(), testRunDebugId)) { toolWindowManager.notifyByBalloon(testRunDebugId, type, balloonText, null, null); @@ -172,10 +174,10 @@ public class TestsUIUtil { AppIcon.getInstance().setErrorBadge(project, null); } - private static class TestResultPresentation { + public static class TestResultPresentation { private AbstractTestProxy myRoot; private boolean myStarted; - private final String myComment; + private String myComment; private String myTitle; private String myText; private String myBalloonText; @@ -208,30 +210,34 @@ public class TestsUIUtil { } public TestResultPresentation getPresentation() { + List allTests = Filter.LEAF.select(myRoot.getAllTests()); + final List failed = Filter.DEFECTIVE_LEAF.select(allTests); + final List notStarted = Filter.NOT_PASSED.select(allTests); + notStarted.removeAll(failed); + final List ignored = Filter.IGNORED.select(allTests); + notStarted.removeAll(ignored); + failed.removeAll(ignored); + int failedCount = failed.size(); + int notStartedCount = notStarted.size() + ignored.size(); + int passedCount = allTests.size() - failedCount - notStartedCount; + return getPresentation(failedCount, passedCount, notStartedCount, ignored.size()); + } + + public TestResultPresentation getPresentation(int failedCount, int passedCount, int notStartedCount, int ignoredCount) { if (myRoot == null) { myBalloonText = myTitle = myStarted ? "Tests were interrupted" : ExecutionBundle.message("test.not.started.progress.text"); myText = ""; myType = MessageType.WARNING; } else{ - List allTests = Filter.LEAF.select(myRoot.getAllTests()); - final List failed = Filter.DEFECTIVE_LEAF.select(allTests); - final List notStarted = Filter.NOT_PASSED.select(allTests); - notStarted.removeAll(failed); - final List ignored = Filter.IGNORED.select(allTests); - notStarted.removeAll(ignored); - failed.removeAll(ignored); - int failedCount = failed.size(); - int notStartedCount = notStarted.size() + ignored.size(); - int passedCount = allTests.size() - failedCount - notStartedCount; if (failedCount > 0) { myTitle = ExecutionBundle.message("junit.runing.info.tests.failed.label"); myText = passedCount + " passed, " + failedCount + " failed" + (notStartedCount > 0 ? ", " + notStartedCount + " not started" : ""); myType = MessageType.ERROR; } else if (notStartedCount > 0) { - myTitle = !notStarted.isEmpty() ? ExecutionBundle.message("junit.running.info.failed.to.start.error.message") : "Tests Ignored"; - myText = passedCount + " passed, " + notStartedCount + (!notStarted.isEmpty() ? " not started" : " ignored"); - myType = notStarted.isEmpty() ? MessageType.WARNING : MessageType.ERROR; + myTitle = ignoredCount > 0 ? "Tests Ignored" : ExecutionBundle.message("junit.running.info.failed.to.start.error.message"); + myText = passedCount + " passed, " + notStartedCount + (ignoredCount > 0 ? " ignored" : " not started"); + myType = ignoredCount == 0 ? MessageType.WARNING : MessageType.ERROR; } else { myTitle = ExecutionBundle.message("junit.runing.info.tests.passed.label"); From 23b34959dfd44f50861aeb3a936a113eb7c922e9 Mon Sep 17 00:00:00 2001 From: Alexander Kass Date: Wed, 10 Jun 2015 19:27:18 +0300 Subject: [PATCH 06/82] DBE: use CreateFileFromTemplateDialog for datasource creation --- .../com/intellij/ide/actions/CreateFileFromTemplateDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateDialog.java b/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateDialog.java index 0579a25c6602..b287e578aee9 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateDialog.java @@ -96,7 +96,7 @@ public class CreateFileFromTemplateDialog extends DialogWrapper { @Override protected void doOKAction() { - if (myCreator.tryCreate(getEnteredName()).length == 0) { + if (myCreator != null && myCreator.tryCreate(getEnteredName()).length == 0) { return; } super.doOKAction(); From 4a49903e667219e1c0c54957994a8da216f7a938 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Wed, 10 Jun 2015 20:47:58 +0300 Subject: [PATCH 07/82] cache html descriptor for nsDescriptor to prevent creating one descriptor per html document, each with own declarations cache --- .../psi/impl/source/xml/XmlDocumentImpl.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlDocumentImpl.java b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlDocumentImpl.java index 00a7e9c4afc4..c3328dd9f9f3 100644 --- a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlDocumentImpl.java +++ b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlDocumentImpl.java @@ -41,6 +41,7 @@ import com.intellij.psi.tree.ChildRoleBase; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.CachedValue; import com.intellij.psi.util.CachedValueProvider; +import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.xml.*; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; @@ -237,6 +238,17 @@ public class XmlDocumentImpl extends XmlElementImpl implements XmlDocument { } nsDescriptor = getDefaultNSDescriptor(htmlns, false); } + final XmlFile descriptorFile = nsDescriptor.getDescriptorFile(); + if (descriptorFile != null) { + final XmlNSDescriptor finalNsDescriptor = nsDescriptor; + return CachedValuesManager.getCachedValue(descriptorFile, new CachedValueProvider() { + @Nullable + @Override + public Result compute() { + return Result.create(new HtmlNSDescriptorImpl(finalNsDescriptor), descriptorFile); + } + }); + } return new HtmlNSDescriptorImpl(nsDescriptor); } else if (XmlUtil.XHTML_URI.equals(namespace)) { From 32eece7b4e4073c7cc5740e7fe6307b63e222ba5 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Wed, 10 Jun 2015 17:05:23 +0300 Subject: [PATCH 08/82] optimized rngom memory usage: create attributes and nested elements on demand --- xml/relaxng/lib/rngom-20051226-patched.jar | Bin 652498 -> 301205 bytes xml/relaxng/lib/rngom-src.zip | Bin 159398 -> 178617 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/xml/relaxng/lib/rngom-20051226-patched.jar b/xml/relaxng/lib/rngom-20051226-patched.jar index 68cad027159549a2dfad86c6b4373a3744b1b189..989c6103cc631b2be6be5ee1b6b7f2ad1b379414 100644 GIT binary patch literal 301205 zcmbTeWmsHWvn`B;;O_434#C~s-Q644;O-LKf1c_~mZ6d(u)2p}8(VNsy}@`nNh1|%b*EI=zED@rdTAS)p%qNGeG zBl31LluAtnADI&Q>P>a3|7#yVKFu%+BT??nnE}`wak2|F8z{ zZ`T+)TUZ;LIR3Ww_sw+j`}1bf|La--TU$FP11AeRTL7JrwE+O|O>s@On*oJaWED)I z>$@37ST4Iq4+JFLm8C)g;@QajXqUOn0^-I%<9YYT^V~=?>5q&7!aMPM*BNJCdf&5d zUUqI^f#|kY1CfzsA?wsJqU%&INM^2_rwr)ITcQho_tTm^z1Wm(_r5M(6RVYTh;b? z7An53aUlsFB^mW#wHBli?+0nxB`lLfB*aob&K>rZ=+?+s9ivom74JBp-`d+0yCzV=*F_q)M(A$wsuK5gN0Uz?+ zKx$hT>Frm0@qz<`unvCr$n1ohWn39!F2~m2t^oH8Wy#U-J0_m?4}kiC5cky*Os(2V z$P6=v5BQfw-UG#zO8^4_8G!z7k$=q+)4#GL_={-~HzO1KUrhZ@RFZ;>9I^n0PvMEn zNK5^srk29PxpKGx{W<{-iAQO#y5P1$i*$ogBQry$if=L*7Lxd;`F4!p1}0V)7`*QK z*`51(OtzXCI*{(BMj*l(LX4$)w0!r@2jvTr-WddH7=hu4RDE-J-t!plq2}TEfa#`w;we80W-57$wihM8na4j)UOHU{<9p)py-^9#BD7*#PB}ae1VZTha3PUuAGT1Hj{yuoss7XaVnym<;h@yK%4xs(XXsNF6 z_R3erK(jH~MxB_XQRsQe+uzFEQ@U<0JQ+h}_(h}lnT;$Lv zfm9;?Mqj9g2hbZp;yU|CQL*+d`*-4d$!4Y_5_}>8%&&sFuy>G^esE|*j+`+9aUz{s z(Gdn=$KZ?fRCGb+!R8MNcsV>pa^lR>0&m#<^gdhzDmPup1JRYxdyA1x+A90(zpS8Y zAd|cB-3od^{>cjd-B*R|Y-~(youn-QPQRN#RLqzpC?iVH#5bdX`R{bzV9`^Xp_U=?)jx@qFIf=tD%9)$5yF!zEty`1Ox-d5&=0v-Qyi4+K=(2ek%x)Eriq;z_ zqanU_V-*>qvuqhd-|AKvEhUZC_$q7LA?!sI&>4+q2Av6(oLP^NCY;gc+w8c%r82CI z>o_%3I3ZvIN5AbMkH1E5TtC*{#PVb0@FgO+#8$1Cd^vwYpp*kWzIaI!#i(?CL;kgc zeq+tRyYF5S|GtaAbo;OUi0xnfNZ7#1K;FQ~$;8q2Hm<} zn$(I3`k~u32K2{0RH~}B>ou?~8(A?es627#y}{|dfbb=yS8U)Ga1nY12Ynx3-=3y_ z>|CAT0#)Sbe%=AeAfP~6s1GFo_E#G_PB8Ni33P9w4w~TRA?^+e`S?s336282cL5X= z3PE{lPj;wo3r?8ZYsuU!ls~al6R-ONUWdv)oslkKSf0<5U!JWW4wuviSQas{rDGs8 z5=`X$UX96Gsd44djcF%fQ&X#AB3!GbKNdW3$PQ5=q0JOKOaXH6v!<{lm2&GvxXX90 z3g=_81ZNT9bn!ac-S+Z1R*_fitV?oEf2GY&y;mN0V#=xAvG2QDf6p3?PoV7#B)oDt=vd(?N=d3GP8DJB*<&*7U>Zf z0h^9D5LL>@b)ENFg*K8CyV?QZcQ#u+PEC=8HXl)%ftVdpkdrD8 z>76oeV(mJ1Hy+B3ZtAZ{a-J9a4fB~5JlZQy3VCFOr3cgX+>E}A2yDFJyLKi28#}yT z#2e5_qMn*dEwT*=n5NsUJ$0B+r=NG^3I?a!Pr;AvXigVi?mQgDCtKvd$Y{Y&-{W{E zWB4D{i~C>65V1D-rC$Fh;rNpWMk&e2b@L-+3gr0f-8;{Gl8N*r#8dYdP?VD)$-U^P zOV>1a9dog|x50Y`ex=xHpuo!AG^qLX>1wY%bIJS7%^UPHT!zME&E}#%GFZe1zkz+M zF1uEx+ivkuVex)V5u*GGWx~{O{l5d-X)YCe)_g{I-_Y=`0&+Uz=J06E*orjnVbm zXc$;F*8E}Y(qBF*iqeg3IrE%bMTvV zcIu}Ps=U+Z`;RFI^}o_5=4fDJWAKMwCM9gV>m^FR+@AItzVi`rXq8_Ic4abCae)VN z)no_%e9-bY8PT-iQ!o18_0lYppe!@d5$VyJ{5wGQ>h~S-y zeL%LwSQ0^SkCvEMeYJ*tbPhI2wSJ2{j({(UA`+J|&LdbZ`bxI+t;{j2RC}VC_5r@F z;2V?8)8=fcOII|<8R=Hl^Y$_E7PlMg}q_pLZ!3vVSKyLR#J zqa@CTn_h0XAQ0+C0YEkY4SDP?LZ{Jnrq+fB7ciY#OM!_ty)s@Hwu}4Ucp9+cK9GCo z>7P?Ymj5kJN+w3XQbiKRKLjvR2CAC@A!x(Az8(s#?KAY3X#zJ;1qVVp5C1yY7b#?M zP5Aw8P&W$3z9gxAMrQ8&d)>1Er?~C6sz7sl z<{_0XTZ;HB?-g78J3tN-lcO_F%#%_im!Fz|q#S#Yg5PhrG3uhW-E=t(}*Z~rSP{bbM$UC!Q z+U7*Z;)K8lEr~yg;~ex}A#}-E8EhBH+RDt-Z2ii!?B(KW#TDqI8_w6T6-Ldb+U}(_ zh&y6#0+xCTlH5Ix{`vOnq+Mfo%)tHxbSEENK8UdL5R5E~#X-?j{z@!{I{H)lGuf&*Vn zwgTM@_gtvplRm}N^L@O{Xaln;Z`w8RM^Fe93k-PUL=)U^T)SJMbcOUBfh1#j9KW0~ z(Z{&FvAoFK(b}Z3pXcASzK|WABUA$(aI^Q*uX;j_0#tx#@7#b-fMAbS4P9x8H!YVJ zIpE@UnnfqsCv2ShGw+JyXa&%ldv)YPznD(UklgUg^yp##gg&Rva`_JXu@yb%>ieV> zUb~K*b~uEF@sB4$=+(<)TX$plGMv^7R)-kan-srn*{9#~gS8=bh`M)QiTFoN`}bqj zADZ@uul#Nk-&C~Tk5wqVpardoj@7!<;pqI0;pG(Q1+WqtYBn{3LhK~GsfR8!(5dQ7}2=7#5U_$J)7v^mp?{7;jdX5*Y2&77sYelQJByb2-9b`8^QY5nY}HL2kf*?@TpW5t zzt+p7E8kI6{zOG=X^Tee5$z-vXkN_M4JfJNC(tlD+iB^r8Xz85)A&N6J0t$zU&=Xbu2RA~sS>l8Zl6WdUP6PH&C>kV;@+N0l5#rw0=8OW1gDx*GEhsH-U3h%r=OqL}X6amRjyg{T zTeq6DzIyt@8B;7WneMV*R;o3|O>xvIlbQ#@c^+XD7Xa?M(oLVh6`nH@RqF zrOs(!Ein3x=?3CFBH0`~g-=H_KBRXpZs2Yfa40zg)O%moNq9f!E^hox^;M||frq+P zHb)+P-v43@cV>b_PgZ=-a~M*dfgq{D`Na)4i1E2eo4*;JDOP&(qLVa{en%FBR&CSL zx-~eNM*B=3Q)~pbX{n3JFImeT+g0-sclNCNM=o!WicAmB?Ah0j!0Jo(SJc53Y5WJ6 zmuvz=YEW9z2gETjmS;Hw4*h9^l+FfCdrmimO86sRA3(tbPtdg_AB=DrUIM+N3&)KD8|hfmY9OLDjz>U)2^G@ z9JCY+i7Qls9b@4}Av=a* z`g|B{cV(+WFb6gv+;K&+Yc+#joqc82;R=y&2XhSe!$_iZ%_LtR!LloeQ_=EQNoIO- z&YPd-<6DO!gFI&PZBb;DO1(f?VS@d{l5vhnVVSx0_Na^(Albhj(Jg$_BN4Q(;q|Cb zZ_jQ+$ao7{6unm=ETa{gtkf!I+@~pAg)gEhND_hu_7CRN+Kb60^Cz>$ZZ#=Sjzc@< zUpat1NV&>A5o}EKJp08Txe2O<*}KlA{iDt?|7#5VgFoXx=Wt4Y6#9%oUI`w-*ZK2q z`>9)ErJ16JkiJ;c%Qu+9H6%OXZjIkv{#NP3B_bQdD6|;2c=RsXcsLx`U-<;I+7$#` z1fGF8$+(Fl@a5t>?4tx;&AGxfO94_>-aZ88R*BotC1p>%7*QXKk~+2+m~x+g0@5Hy zOhT-LwFBKOQfi!!JI9yd$RIkEa0yw2x?_<}Q>ipy9WWXCXbzQTV~Ay*4Z;qQ#||k3 z57xCV{f$l+)>&Eg;iktqnGBtLXWVkd*<{6(4w-NgQ8>(ag$Gc+**I}%1=$SB8F~&O zGr@fn@^#g_P6e8?juaXHs zMlv_gH-9-9^?DjRc3ar+^?CsZiV>*ndEw$Fn9PyrW=>-SIdl3F(Rpyy!*a$fL;@TG zn`R0QH&G(KhVSJ~%(2hLOte`jr#TYY}X8IB4N|!}E)EUt(+}eG- zJAtnVdc6qu+~?8eNEmC#j}cOu3!VcRi7z49MXt0|4h>rc&PeaIH#i$zMDRQq%uD)^KK9t!ee5Oj&yeqxW( z`4JvNB6SUojqKhzS7!Sg^sugqu~gZt^JRJdHf^fm@taF)j3*b+%G!u0x`;EFmMdmY zVxtq`$oV6Ht=b}kz^Ino8XqDFmk0=u)&w=ID55I179`tw<7g&jZ(tfkf-0asxiUnK zkF3HGp_Uxq!JNG`KZ9!~3zSu{OilYIL5)ypj`v`Vi+cfIaA_;wBW=Srm7gae>8adf zZU3|v+Da!~SH4Hvrd?FMXM5e9!EMrtzVrFb9+S#i`RU#RK^Wve1p>x@6%r*Qa}yhb zKN;hgx)xwX7=>3$@zdRUjyy#jKXCIG2uWxbCg25!fRY_IOL+KQiydoR))u#X6^D?m zsE_yP+*inMn;);`7)H-OVT@N8i`1(n9~aW54w=VvtN}UzI;3*1FFSHTO~9W-nzRDJ z{g`?B(`QXpA|78)I_qvz#5P-0Et_=Z`0VdqHa{O`%>ZmNAGJ4N8xOvk!GJ{63w*h0 zKIHOw&wgp@#|ul(fJX?Tq|t%pG0z|DSutd95-H{`@^r2=BXPE&V|*i##$- zsev#{#6T~Mm_B%81L(ZXa~?ar8UO=FUiBG2rLi#TVA0X7rn&prr5Jx!1svn3vbDBr|Kh|D1zI z=z?sewp@bI7DvJ-dxWcnHNizAe?x(~)9WpBVuCyCPUQNgG(yRs(+qn4iW2m7+Y6_x zjy7hQtAa(Ds zr-^v^<>!dkmj{T`40}BmYB&v9xf--M?bDWqSyV^v8VFUP`pYr{D94d_98)%9S3%i+ zKcEul7#@Q2m~j0?5JmL0`o;207TrgB3tp65iOmJ{!;-w(cz}?P1&j`vy%b~n(GBEj z-xQI(tT);>kwaPG$j+Veu=w)Y(XA9#)A%7Gdktj2LDg^tB70tk5d6}xv(xX-|(ALW_1k8e^@$^*t}?bO*H?-23RbFYRm>Z$gP71)W(fo`8L1?B?cKZ{^$Zm=JUQ z@wc5uO{3}DCSas zmZ&H85QX@#8v0DuRxn9oc5`1l45NlJ zs3Kg^l?F0}_<+G177M})ZO_xqD{>6J8cFLLe7S!vLbD<0jvJ{?_w||7y7y9z!WTA4 zy(7vIl`Rg)4{KFnd9{1P{swk-_iE+sx87{>j}Qyu_tvW@@;@mM<^Mu~?Ck$YM3WQ+ z-ix{j+Fzz81#|89dxIoHwK?V#3gka<2on)Kd`?e`Wviwh5NPuwci05xhN^}uAegPQ zubQ`-I3ACFxqZEa0z$Vp?&|pP5$zhn3Ba}ktfYPL$wzMUVK%!)%+ySp#HCn;3h78H zX_5IsK9Sj$I&N^)G^l~`p2?IeDG!c`ZpOMh=>&?CV-T}FZvGU z%3Y*(GnW68G;)_y35VYfsvvQ;DBXz|up=#V3TD_UN0y>(2H zOa|JFYNfDV%=+U3;B49s%R9Pmnpc9_sa*JeBP+PJaYyw%eG&a5efjG~`mZ+ouSWWR z+T_1CzkfBe|LB4Lb(iMv%l7Zfr0tA;YexTm7XNf(x4;Vy4vq}&;sUPf0?sB1Ua|Q+ zo%chzaWq3&6kIp^`A2X3=rebFd2fxdD0tsF?W2 zzi=Bk0!)nmN3HvRhbQ%OZ{GGS%0kBM>TDa*KwH~${C|ZP@Hg;+gz$+2fW(V@WDRv& zI(!vXEgc~zB}Ku>z#;UF^}*w%VQ7AXXYXfE<@pXRWH-?)Lk1Z+;j_zu6nb z&heT+c|!r|t$~Z{Y5G}u>iFq|-bM$gdS656ReU?xw@GK`T$%nnyUC$Q>5$Fx1{i z=8wtW>{9X^%{l8&X)p}4y5w;vouQD(daU1&FnC`oZNc>NtK3IQ4pmM8-`5ZxBg~Z= zV1`UQBhFs%SkB=PUXWQATU zGYmLqOHcW%i`J`V#EnE!LuOBvy7OSZnxod0j(%k^b;!(R(Tua;?#H-`0R|wL63DWV#$)M9pv|@qv7za6-^JCU_0vW|U5lnSw%r)a!O%9t$zo?v(Ci z3yNqG*0yxT#1y2yrABN8j=J}g9@OO)+|CK8hU@n%p+W3%%!!BpDyz&yPL(Pya#FFa zDGw{d;ofa&sKDA=`O?{2)~!au_f}9FOpHv!|6!HvE%Wo? zsok$5G#A^)N|*N|%P9CiY4P8C_ivW{TR5?El(4b4{@uHylx*y#@4-3Z&EySp=N!tc?A zfj4v;M8I#y=UnDLWHirsCLmUenbJ+*LfeCzQY-JI z$L_q3+2e7;q^)2X0<%>(H-n)_n|&Cy%*e7nc~sh;Yx(n;7dAMP*t=KWM#Dvqw>nz% zG>mM;bOUSfXfRGkjNLdIK%<2T1B>NQQps7l7M<(*fVN~wYYwkFd#k2XsAXkaEnhEM zRzR`*Y}DFhB!eLy+OWH2_mK$iYu6a^bc=2p&xAnGfO*`m$Kkd_u?I3XjMf`D8mtfFRM~j-yfcO>=dF|e zAn}cp>Zm-NDan4)LGodV=mfS(h|m~`f-6YJ=Mg)`q|a=W%1ORO>ArGbr8hjGK&G4g z5e{XCXME$fwmp5ut`sJTH>sAm*I-KF6DB10^`~z!!Ak6dW0kpu?xFiWXcM=J@*d0g^}1!|O@qaNgnxG3_D*%(&iruJ>ls4f0g62{?tIxMsh|DAt3V%r<<=+R zGCU%G8Fz_-8P_4G4z|DFiHNV=KL%ufFay$r0nvd90Y~pY;fs$Zi60 zthYZDkjIFW`r`*ptdv^6`fz9he`x$+3<`#kyTjbK=3v5*vp!T{g@x@lc5(`LCukAkLVO}dbJyYN#ymyQ#eHU`rCe$~7`d-E z6OI!CU-VNh&muLoVb0L_cNgCuBM>NRc!$5$k$GGSAI#r_Psl%pr@zhz-@9!Fj_&^u zoc_A}{Kql@)Aw1OKgH*7$~JN{?;d=*-s0RB)ePJLkFuDaDC338D3D-~@Ii*JZ3sRM1BLG%^jV=Fa5gMV6iLd~+gXV&5J+(oEY0O9rY5+f#(^9Wlb_*&s%$4okIP5#ll<6*T}U9{W5xZ9LX zRC)2<_0uV2<8&e%Bw?cU7j?&>g7+QSajuIN?RYV`V)!>dvk9r6-Ef7#)I*2!Ry`)~ zH<5eQ``Nf93z5#>U4!bJ9Jok%udOn}#zY&o!XynfAG|vEFnHqiEbl5=z%*{xkZugf zXK`c+`22*??kU%3L!K$3_Xt8Cip6yuLsCUeR8TkvvVub4R<=jA_`sZ!bS~ay#H|o3 zpxLeTVS=Hr%B@6}nI<#Blduqx!M%YHW~yP`4>DcR@TVc&5PoYHkp3$Re#@N7Gj8 zNpD#%QyBz?QRpl^&oTJu1JV6Y=KCUuImi$EFX(Vxk?!Yw;J$(^DAH4UJ5b-&i6aTd zQUw`O>G25V^Dbb!3=gRVvxgA*{nsfG(TJ-eEz)L$V@af3Fr*t22`22_5m@!&Xeh9> zsb39H)0*iu@BPmaiSWgq5e?*^WKBXZI5GF^$71xzS?w!bZX}8USQxs$s zvsaWy`LO)y->1#BZL2|o>voI3LY_gp~OqYkIzQO(qJJafz z{#x&TTKp$J{qH&QU;F8QY}VS|+`!P}KQnso8PvPIzMitF&O5`f1ApiR24JTv`u3qm zA)@Kgzqb_cDy(~RCiB}H^(G!V&N60h z7tZW9fVumLaV==_bBq*(6vS{`omwalDZb_zSfHrjVp(FHS~d;DUb>0R>a71{M8Wcz zWLoK1Td{&>KG*aaxTXP|&}>r*U8e4EZUKVbOe_)z74BTYgc`Qo3~efBP`b3%ogjx; zy&_uEx$S>=gOLfY5T^D)8>dAN1b_niPL|s!1r?_=)-8*$@hD2}U{a%EwN4h=u;UKB z%*^IcakqkmHJV3ToUpHGf?0MmhZqv+B%fCzM@=%is;mv_7w$whFX=edU-ZLl5AN|$ z3+(Pa{YZ5=r?vKIoZY{i0YHrgu^3_vD0IzhZJ(k^!A(uNYy7aAO1fC=@!>JDo@e&3 zr=URx;(6I{H+CJF?fV%{+z2tzy!5Oie7-ll_&_S|6ZSk8;Ob+12}+^6)7jz;Hz#1mOv+bK(AXYA zZV}Jpypg_uZ9`|2AxmM3<)=w6at5!Bdxa7ixmT_i71U#7vJS1llh#k92rq8X-X`6WaZAy7w#s@h2-R3F(Wb^;KS@Qqbypxlog`u;P$)B{k zUhN5ht%mwqL259(=gNDXCoNVq^VOLrPf+n$HewQ zbKUPe7zDC1I|paVY-yrx|2sijlcc?~G0p}Cwc)8Q*uQKtt>o||v!@lq9 zBRo*ZxhHhC%(h8ee6Oq*9i*SN|MdP%$Sgi*`#worNX>Z=$6kVXUTk1Qgab|QR-Z!T z`*3;a*Tmj33a#Q^M6$`4(s`Z8od_%=3HoGOFNs!9nKQ3uXuU4A)^o0P1o8WtVp+Eu zMa0EVsEPZ`&;q%NI`XMCeE2BL9SNx#b8e#iiD0*l3M0)OH1uX!2?oW(yr{&wn-JI7 za|L-{N(Ku?l{W_&D6VXdtA4g_)qR863?*2D+<`_eyg$rD_2R9x7M^vx*Xr?tV)ykaH(ynf_G6 zEf*K1KX*|<*C5h~$YYmCs`x_;>l;Rcr!`WNNfXFcWOKe8jdydZ7;woRfb-7yaI(6a zJtxe?@5ign>2KykC4F_*4WX@6j^#v6Q-pB5{*mdNZkP%Hm9yNMjsGgCsZW-Se4ncc z1<5kBJ}kxba?jH@5-)+9(&+~qIR2G9)>>FFtA*-#lxqeAzFg^K?g&;dXM%vHn2DN5 ziaQKM>nEyx=`NJRl2?g@jFMSaG!$A#e{_8GEtS1FE`Ee zY76FCwuRfqddpPnWjSv*2$)$~+idNjr5sI{*}yU}QQx1!Zt7;^0v?SRv|eld?B_Dr z8{LgI+<|9{iy<#;aGN<%AJ225VESpbYc6!W^Sm28#A)Dg0M@^IA+W-61Ow?UzK9_){~KyHv*p-XX&AeCdi8F_h_ zd#DDFAEWN}VDkyjwm9{ntNIp|7DavziEX!y4$_0&A#VMQ^u5Lb%Zx_5+5z=@!#Otg z_r5dru07rio?AsF2T#q3RQ@&s>Y(L%bO~61s>>&VINiC_ejgfEPR}uIRgtvSVzpHC?l~zPNp} zWh#d%nh@pi*0?672@BwrtXFwq(MoRt~&) zid7OPdv_11x^AXfT?0&5TeI5#FVR}KjfvcQ%#}eYv zm#iJe5dQ5D;dcHr7U40mRLr!DKOwKFAV=>SNAJL*(U!w7PRyza#x@e;r)GfF!9@S9 z^Xw}PGR?WNw_VyqgcsVqIPctdLidi!pWw&vPEFK{jvvHE*Hzoi@=t?jXJS3D74?Lc z3k#;OM!nSxF5eJd)EM-2?G}EfANaz9vNNbNFDbat+m@U4LeC}{ zcOb&;65|N>-NJZ{LJqzc%0DGuob?(`+*ADu)@c3^dFZdjAsq-u%p(;UN-0Wze9_ww z_$ozONQ1K`sE#0<^2#Iov7W72SV?ECIu5@2ii(TaE@riN++v0(xJpNDvM6km>Q+pB zsu3ZoZEczfnP%Ujp$F5t&-gubv2NoM<9|GKq}Dn@QL9fr6ePJ|ywynIC{@}TQ~!z8 zzigl=X+9xDz1Z&J62I5SvSQQkwydjU?Iy_pGB#@2lD&OpAw4(4V*|%FX_LnP^?M8t zVqG`i1pfqUmn-{b>!C-mK8V?cHtw}O&+@(aqxbPiXFa&)XyO60jQ9n(VutQGX1+$7 zyx4FGt7Tk$cLqCyi%c#YF$C{Ie^c$;eNsa|eGQKtdxK__iPp}Q=+AE7-$LgjWRT7J zdxhc@;lEZX{(HLk*Hwx?LZ{$w2c$p6%}f<5C1f)cAGW2cSeh>ci$uEevwI-<(;g+7 zAG)M0<*Ct7ZB9&UUQ>D3uTKY+%<&4i>1wK&OFyg zI49m;XG3~#&$r~CC$`9^BA_L-dr9NMbq>1Kn6#5kB!ZhsDmF{~tR!rGZ8klSC`U)O zMWHtIyEEReUN5Q)=ysegj^%7UvZjrr^kob8m4v9k z4qcV8k>at!tj@(opR#v%*3UHrx2E1rGOUz)R@elMJBcSbGCP@OPF4%?xxq8f=(bxX zWy&iUE&9+psS3efgsV*1U;Fwol1P@{dM?_U#LtpFR~>;F zHO+XI5D#1B1iG9!|tl z=Ti?dJ@5#^+_=I?!sydkz2$-Z)YwsF>)JD!D}6ie(iY|kOZK&L%zVfukefmz%T3j$ zgkeV`s-La&ZEbvD*m-(TQ0BWy@)Nhz_|sUY3tiJu?sL%(a^ap{*Cw+~Ph_-VGM8?) zYEV!zaFfLtP%^k3WKdLOxKk^Rw)TDFZH{rv#p6=Ux&ip?$cO6U7%Ve1!Ym9?KTD2$lpYEM0u)>z^8~e;8s&$66?_1G|q?z z2C+kYQ#3@kY~n-OfbbTf)zaCMwWxhiTB5yWfw5MR7p|eQ#tTTL9i=&Xdbpb$@lC-1 z&ljYC6_2w&-EKt2_ls0|gycfXxZ4XJ(BsFR=6nucJpB^7-=8fs0ed(R=T=Gs>u|j9 zof86}x4AZepI$6@9ZE!nF=Efj=Xqu!J?Vj{7eSKSmPFF)MY2jZ+aAI(Yfc*H3E+JO z!OcKsvip2Tu?y^^*d8Nrte8ttfM$>NHPDDSuN=VJn`%b{;?P816#!)%Nr(+4Dv|Ez zLMTxS%0k26?A(VoNx%dpo=+oZBspvp*<#l@z$ur5;PAqH7P=O;3hlJ_@ZvB0?C{Fk zve%o*=wo$&?n^;7uYVAeGk~u|yx#x9`}!1=oM+){CtVyf+XxY8B~@Br=fWBEL@{WSP4hVe|$XQ4njOL0Q&Xb=;<8R2PYI z!s&z{@Wo_FQ($3Cxkcv}|f4uH^;E zlv3=d_3AM!n8Ds+_ zeO4SC{l{6eA=l5b16z0DXEaTorTe#Paxk^wbZaxP+n!pjJu5`KhG;e*F(_4l2|~sy8&A@qhJ-t zONofIWk?qqOAZ>7BBQ+^@;>TkdnxF7b=GUoJ#K!5e`1-eiMT*q zq1lR_rlqzJ(K$VG(;MLNTdY%ZZo>wNI3#WCNZoK8iP}rftW;xPJMo$-8GiiwtaIq@ z($3}F*0-3(?=()k1TsWgWJ%B77~%5LL8DrHsOLzlp^@M$#?zRnP>08af`OxY`uN2 zG|vwf=U|4FV z_v5{^wppvi)?K@BwyuqG+Ok)>8q@5n&NrKITUE67xNSQ@1iRw$nvpJ0O%_>!E>?1` zbscJ_s7fXs!fU-11V)V;uI&`ZuKp0I)mnN$C52n&rR$vTJfds=9B{Xa*pe^K=75h6 z0fW1s!Zk1L6&fS$73qvjei0VNjKSalCqxF$m}At_TXa9#`yuk^ezg~!qaXk{yviw2 zdeKdPn~6-?nyLf_&8e<^#wT&B+!q?Q65rA-2Xr2%kthkFMx-#K-?3H^vM?@LwW#=R z!-fKZengZL!@ADEAtAYS4CwYm9$yL_>O;M|w=TXyRD z_~?i$2PGKNYd7!gNG6_rq2-Wh%8}CwAHf@^aYb7vrU?|R+p_G%r&davj9%Qc(hQ@kFFy0HE!Z&t-0@0{j=)Bb9 ziG#hDRd zDbZ>V0wjgyZZ%qy9eL!a#LTbAhG2Ocxd>|Aj;bXcLPSL@8{LD(0J+I__73!JDMtF7 zkj?nO&TKgdtuo}<9?^f^Gf z`(_#?Sq;yy=PSphjl9BT!U6rIeUMW?^nq% z2dczP|6RG(|D;_1y?ny(m(ANha=>5DrT+eS_n-2>0#z+LWHAh$ofWR1QJG*MjEPc6 zLYdCpjv?_V;u3;0X;P5FmMSV(l_73J%U0h81|O)~E+^6P!j=6GgjURal;`aFBal%I z$(56NYBxq*$5WZF#vWhze4imVndYT`oX;V|H|6^5&F%R6RmvDw=_~#)1#h(f6d>aD zwf_`DUD0TkE*+yk+^-dea>_wOiAg#sz`kb*#`4>3p?!D1sJttcZa|3ExDZ_d1ojn- z1D`!+|IMuInyY5pP9o@+5rX`wS^tIeA2PxC5gwuxUh5Xt94d6ptCmn^lt-iRdygc2 zqg+DUvht`f%{2=McPlsH5cpT&a&e5TBYOL}MOk0<1?St)dXCovC1+}G_03YNsW2Ta zJFzgBXm!yQ(0Wq0H&w=-dt+gYWddP(tm0eK@7$Q<)3$A0$?5KZJx=Sn9k)R@J?<2+ zjf9P0(BU%VO5JJ??HJ3Cv%Lz|>I&46;)N$$Ze=yE(^+*96}1KiUw?W|tQDB7 zL3>qjtr5?tST_j>g~Qq4Y87CWTvGKUO-z^F3P2jAtcN&J8H3jr1$tpEBRFzW9SAy@ z@{!t9d^njzrOx6C5aTTk23T6r;`BG7i85Fkz=Y6bbV`7GzOkAZpl)E^uM1+{!K^l( z1HsddcA9eVh?DfpO{`!+^KBwxPN|v27+X#j6v#>j!@MHsr$o}6x=L_-EEj26zV3_; zfsuN9<5k(7z^}u?tf8|DTT`^XYsTm8kmPe`{&D10Ml>H7S>YTUwvD&ILw3lM{B=Pm zlGo|kDMpr{p7If|pW|Rsu~PB^te)8AkT!+q37paM6n4APxnJQCcV?$2@Jo;f?jD4l zKamSNygLr4(-}txf%2SEB;%S=hQrZRR}6;lRNCh@L+Lhtrq|(D-0JBKamCuGS!%3E ztD|yRo4IjjwTIS&bIsQYaR#*H1_{00~{}T<%^p#v#RPU*gI%1Gtu(;-U|B&p+0y1H2*$b75a|@xm5qA8GllX zOqCM=vIxeTjjo4p#p%XXVk71Q=O9G7x7 zZKqWmQbHakN&b?bR~2$E8l6`)Gl$z#c)&w#yqGXPKzn(q7^WEy-g8PvP)A54z3v58 zFrszHW8RW2iOh&qB?>T`6F~=0Ie}_bcXyN5GT7S)dK&*&d~=qNi&g6|cs0aOflAd1 zqXy?$JZO?0LL|7cy7M_^-S5r4_zh7$QOnXZqhLVaUl*$7Naahc@g#c?(>G;tO@TBP z{sPs~`E24F=xO@ck~v?|TTI#_`@mOnbL4|Dif$5pL@^5&8viLboXPk+Gm>^cb|Xhw z&)EtKL%g!7JD!@uZ_9Fn^Lkx5Tbzzs`EoJplyRAqH41puOquGb{g4?Xw-!-`?+3pv zCu>_qHnn1EWO~M|?hVEt^+y;{17a!AkN{wn3__xo1qNi~@qxf*j}y{M%IB1-s6%nN zNQPacLY(ofwt2nIzLb*ORKM~|Yw|G*86#0_q_jr;zD+4cj->TvzYI))LZlxwmMltx zgrt;0MmIm;H35>Yg4bow!QEd>u0DkOa<3?WM*P5Pc9xh~APNuc2ybzbkg(gSiSCd@ z)Fmu0l>#pz-f1c&^f#Ng6R;wSK_6o)gkT8LPfV!K%kFz3FJ?o3n z_MEmo5S$2w!C0_+>K)S%z1?ld8}4WJNU*?8+}sBkQp+r@fxr-p2M5)%(S(ezCz5-V zX7ilA`%#Z7ffu7z=BEzd<{@IgG!v#8>vPjP ze3bXe)W6>#k^jdH60rXDt03>gr!N0_&P`dz4oLuorxu!Ka!#>axo^3&*r|^$r#}P> z*1|?m@Hn6lz5|vacV&9b)YY8fVk&zlK!!xd>-^WWkSn<06Mq6Y#Fo$KI^eY3jQr_t z?=vVz6#4 zd0%vF9%(?8eV9W8SNn~ZT!+!UeEEcQWAy~W3fwZwkzvnO-@v+qQed`wtrYo^=;ZdA zH=YL-K5qXHKe6uY5_{MO<{~u@X6kUnB1&wy>bkebH+v%WV+qP|M z#kOtRPCB-2yJO$%bI!Q;>@)tmAO43m*6Vus)||6yR@Fp*|1+qI!m>Px4PLHet2|}| zLjtgIkoBhY5A)U&?#`1;+?hzAPBtnlOJ~02bgG;y&OvJ$s4Au%U0oQS5cD3kq9!yT z3QdS?V1#KYozzxcHgx^D#|MkCFmPety?4p-z0`N-UeTN(MTq2ejAB}~xH?2=3k?aN zo=7NYRn9{r$;*#O0R$i!O-o4KPtJ50$b9<-U@TI=#CI-|Q>)_`7@;K)R)cO1F-bkQ zdI{h(=YB_S4^z}BB3hUkCN5=UJN;U5P3=z74R}Xk5#QxjLS5(qDI*j3U2R{2);#a2 zf01gvznyyUQ!k@?JQ@rmIu7y zE*$BGtx~6E^RJE=QDJHI6KVTku#TCMPv`-kN0}=qNrD9_C zqNu*TRAETu14_qhCkV}Cz<-jRmm}XNXfJz)|E67{okG^hQp{N9OXIeFm2s8fz}EeK z-!JoxR#!~~e2`e2Q=h!Z7CT-%<0|(eFG^dobiqTcqnap4LY%2`AVPkMl%bgQR$Np1 zi+MXB=0%{Vtg>)}iMsO|Lp!G6@;hi{tYM?M)NHjDYU(=GYNdd==y8TtTKjJ7s_wjg zB3ISavCyYpe$u>D;eS-svTm)NTkKpRuiK7~>teeU|hP8$k7o%0* zWC3vttj_A9f!{T4P9N{M;9RNh(P{0LJ=!KHRkX@j=%C@=w0cFk$3JI`i}pQUM6`G& zhIy(VPzQ-^-dtDR(Fo0gAV~Ed9Ei=X z;SU&aRJ(;97EjY{PSKP3ZX||l#7Xp)+_&;Cng~GRHztw+lz2e{g13j{cN^TZn*;cT zb5ezxbm~&N{|lS6G>-4;mS_s<_JXd`mR$``E3N3@)u2#cPWL9q?Ad3on!ZsfT<@hm zQS)916FXzG=q{O+W-1no%6a;{fWB0Ic@25taFc5I2xZ+Q(nb8nEj6-@TgQk>B+8E5 zcQ(Sk-4TQ zal6D4sW*QKr0AH8u*V^Y?%v^+y2rVEE|5|~D(N`ux6 z@8D3LlZ^p#o_@74``m4=?g?8AsQ6MH&8c85(<=@)<|FQ-&|5O?N<1+Xg2&hyx zb3sx<_qMK=O!5;LlP@7GFMwj9ru7X;XcBEyWR?e#OOXT^9~+XAB3Yhw?REL|;N={- zzTx9i9!({QNjU`{uF-16PdX3T^V^ zxOWZ;k{jvhv?612WF$sGTe>I%8cLPDT8|K*56pRvPCGzf+AF3@BL1T%@ij{`@!-x9 z8%2@jX;xC|Qd4r5Lz09c5(7vMb(#BAiL@?WyH-8Dp$^5RkILw_$wINHeh6->ney@- zc&sCghru|Zf`6z)8H}|_&VIsD(4W%o5#TzWMu}zJOF6x7=4V}Rni{XXV^@BvVma5$ zlPo|m!~~{HwO<++Ux}%(A~(hCSuN0V47Aqx9spdd0JEaKoZH0u@*Au#K)d(HF?OSt zMTPRHMj}~6M}Ha9*n^S9L$!@j=jXv3&I|L?Su)-IL< zB-21KN_5Fxp5_4+e0@=UU=39MOrhjkIEOzea>_f#D=@^ECK zT=zuGtI8OKKmF}yhB*OTv0ltReuD)0UfQ~kv$d)}l*aH9NKRkEBiJ%!B$+9!q-e@; z9Z#7XdnT+J)zfksknYg@8vTCzq-zi!El?IY4J2t5zHUkF(PB_LuLq%8aj1EN^o8d0pVP2Yr$QexZ+`f zHPO|{oIQQRJ4NrS0Yp1`M#wOGmhCZl(oWB1^se`e6xmjo(pY#ug$XyReijAFd!1)z z7OCV(otYZ^OvA*$h!vTcKS6XFVWU~bR$~y(rRPSgqJi=LL2`boIM+GG;C>mnO2#mm zNn*fhbC5RLNXBwyBHvtYko9w$ebeDjx-{rR4IJB14=$^-zN2E(g^2|~!HNKx85k-- zOP`An&uKbj==$?I9DifIb>4a4!3I;QoPXahy&*qICxBH7vHfX^?5P-CD7d3Z(`lHi zA}igWth&YB8ZN72#gmkyiAd;zx2lU!AZ2RfMAmh1b)1^h+4e1Dnk8^9w>)H+B5hJL zh_qPMeMo6w?p-CeC69hiKKV0|4=q-i$d5%8prqRSXkF!AlkpXBAo0Djsvo|B>`~jW zB(_T9Q2S?&a$Kt{)rmr|y4WH?m8(aq;G{mxJ>h!l$tTFj$KCgk3BnPPJH|d0_ij1W zSN4L4-?0bFzh_>V?i94fs`Q?#%@98{G2lXLV)G`@QTP)QtB z0y`1(K@gRnP|5Ws`)z~5pjzzh>=-T=#XCVU`b+P?y3KV%k4un}GhX}c?we78B6WOM z)Eeit76?t5_<<{ue1#vf0R=B+#!pmy9N3t7t?1@DcYhbCbg@0Q-JC|?9UB2dA z_wWCN&;C*FEo5cu==QgMmYMLcIG&-;xwQvyRZuxTAq0vXY9YSbUxJ`0+it5heeEWwKj0387hyqQPSdtluL63@f-O&^w}7iE!JTCj~vGC6^bR z(6*sgC$*TAJLE(RhiRFhQ?+d-weBgOM&jtXPbRfnBv}P}Kpc)*OW}6x%R^6%FcqA7 zs(^|BX3kIih8XtFVC7Vl1Bd86ySP{eXe8!|`_D1%c-pNcmbl=lo`*Wpd=Zz??X89s zN;{Oxap^0xxu4DZYYQ&q%LlExh9)Ron#R!%tn|cy>s(-&F6z-4m4#Hfs()#@H!aQx zbxxp4i_ox{E3NIyQ;R`UuobAH#)ai{Nq<)_TcqruF8Ikg=2Wm;yiyNLGf%o@nDSa3 zXdV+bPH*qG4vS+Er@=MlN~1cyKiZ`Z+8&E2Cw8_1y>t^2TEe1V2Dg@W2vJi^;D(3Zl`PNrP_y8Tfr9 z+Bp7!=)+6*O@S9Z*{13eWMU5+J0{>-kYL5TCGJ6w7YU)ys3?f{)uN%#hhmxzF2{6+ zdk3loXM-mAET%Y_>OGTZ{&e}!q$!XFVf~%vL^+?kU{BQulYltot`(P@o2LaJR z^q8~4Cj8KnfFdac@8dLT2EY5!_T8mq*i1ZsR_1Bj_yyZqU$l5?CJ63~nImGG)lT?+ zzAqpYlpx1O%89Y4eB=ZCuMyC*KS+4_3mo?RBRKr$Ka9P-&ENeIi3jwN4RWtFoOH{OY=`hbRH+q7cmKEo5tMVI}Yp`CI_GkOaTb zK9iGwF0yiRJ0dU!TDO&?Oy=#J679iBSkV-5@#0a07Wt51(_e-0go7jQvEALcxNLV!gYgOdHe)tYK5w5d|9mHP&*Sxx#_@&kxt2yhwIxoXF7I=|#<>f-led~>|%t_-! zH1}2yCL3W19J~dn`Gp%Pp9t(ib60F52KI=9Mc0lB%sV$V#f82wMa5dkfKc%4oK#F8 ziTgz;g4<-|4(R9{{rnwG!u~czOf?k^)2kg@iFQtQH0U&B*G=>od4VndMteJXl%b}N zRT6Q#U7J`Tkut`v{U>W5^|X82GZmqQqDP{4X$T6*7D!3+kR2v0DB{pbnCLWk7)e@% zaVT(sf{}p$sl~sXVud9ta)gzGtg^eyJ466pM<$Ww=ips&F`@Og@u(x!M7J00U(W`M zi;j5nivx51+ByFJ^I-q@Y((sBoNWJAXa8TJ#1G>*dW0OlM%^(Xd^XIS2JIeo+Mpuf zO1Qj1$}CCgc!CjP3&s=wt?l~nFL`u}5IV=|w5CopUXMdh-#gA7egJE?6pT?DPx5*^ zJU=wk)d%Z*KHZpnn6OB{0=I*4;CD3O4Z)=b6;)4|vX(HT2r*ipiM`viM&R!_ z8VY09NJO>xGtcw$vU%5w+f)epjFWe|wl`-&z3E`nP!+y9A;XeTXH==oE!OtjvNT0h zgVn_u>9O?;dMJxyjZh$_D@b0LK2Vujqe3a%Y^UPZ(T`b+iXOY6kJK{-h8 z-0<9}Sdj*gQ};T7?5nyJ5z-W+ugcT1-IjM$yvbow7}qKsIs*ut#K$R^$ih0{S#=tr zF?Pm(P3|QXV*HQ-W^xUR2)`U?jh7sM`^r(o8FQ?RlY(+bmd=W3Ri#0rj&IkWEF?N9 zqe2a$l5F13kgsnQ;24_gQxck+h`R{GNj@eE6$U7{S9K={0#IpVF#uCL8uvTFoV@yw zo0|+mt+-XcrCRk;cngJPD#CTc2AEZ^w?$SSG-kCNKh<2P0=5TyAnUTQQ0YTG}tC!#Q>i)m%zcpat)M$ z^$eo{>3kaRv1qZ>h3x;b*4M%JiT4|}*by$)0@iE9!DxeoC(zrdXkFH6Rz%n9s5I2X zlwb0c+Y)wYw|7eTUf`t^jWT=A$$lHkNI4g@x`UZt_Ho@)7>7sKi<>;dG%vfvF z!1Y_u%^bi6m^`qeOqEqA!33@5+yaOcOQU>PAp(95QMIm)6Jxo*3K*A)s_se)RtLq8 z6nG}U+GH_;r=`#BNkx(a_+pQOMi~SzKcCezOfnt`hlLU#wH( z=B;oqkSEkPHOO5UZ$n9kz9q`=l!$Q8oR3LBF}WSk>oFA*pWEQIe4^u_7fiW)->(j; z($)m+ry}-}_ModYm|5msPBx7$7kc!9$ZpP$OwgWn&F)7F$ICguNOixV+-TpbBA-XV|0xa|vkoUC{;J?_#tDA%9am~~nz|I})!()t zSoIFV^p~IxNiSVcV~Zk>&{@m8XSgmkZ&!4WwqrGam5R_x)Hi`&4FS4bh`nG!^y&dt z2oXC@5ixV$)FLVUwE`K0<5c8Wwx4kXS&}d>%;sYv3!bnD#HeQ;I|an25BM*ZisL{c z-U7G#s}@1fyU9zX#AmvaY;r6TcDtUQfL32Q8>$(|^H)Vg!G*>g96f_ror)B)I7Z(P zjIa|Py;mdS@}WkrX=XPI*RAB~F`$pgWoIB2V@QiA2@r-_@+fT+O_zW>fh&I^h@Pgz z1l`PxI!d0V_=}9{X~vraL(Z~9p4|)3%-KPq$S1~~>*S1un^0oJ*~s$1D{v5osn|?( z^il<4xd!y0Zw_cUO{>+#Du1Znfzi6wEb+}Lg4P;{et^f}*%$~DOi;eMeEci6$SOvn zH1?~?0mJ-LrTa%^g_!jht#4_h=ls9AFbP==CG-zzZ8oT81o9yH7jFT4sV$lFfTn5k z!bbc?)xr35s#b)!ly&?k^;U;A#|G=u2nDVvn6rr4#mVJN7`Cd7cH1NMBHk{CAM)m7 zV+^)a&r?1hx0zQy>p!1Qs;_*$*?zkU-s$B4;nBO>^+c}}4XnkT3MTK&d3Z^1B#7|V zWVWRULF$^z;x$eOEQ}5K!)ElaMAgLW^pqJ5rBD4yi^^?XjTh zW{-2=k*c^EbDp7LPdeMLiXt7dwzSxj)Bf z*3RjGJF?bH)32Hum#24-l1`C)Nh-=kf-xEJ8Jgp(LutEM%lEXNV01)93sF#r3Jifd zGFPDB2+4%@nfpin)ll&P^r7mhLqBoKqzKGC$;VBGqI_GCx>LlPWqePS|5aww8<6Gx6DaZh>SUopIc@nkFJ07>sjyqsJ*_iM3nTEih*uiHa5Sr{Z zq2iN$Juu-lN`sP?8(mZ5mK&c8OwbO5UBQ8UsA_!uSU>uaWLYh(QS|W;MK-1p-%){P z>1kylDRa9OO1t=^B+aY|)@Lx%`H!XVq!TscAL^3kPeqvp81DnME1`tPYLxtO-p=+5 z3C#7=bV1Z>(&JPVSazO~G{&ewH0$MN0LX*YzvRjM^Mn?;oINSo<=_>j8$gRbYU=;_@Um9 zzJ{H$!jG%HP?>i(DbAVaRfRS_StBZ{vHebHs%81n5=sN@0&X!+ApJOfN1<${J`tvD zl)S&FOiiBjxK#E&bU+Vq!cI@ML}^#X){Asv67O7>qOS{x7^XKcuZ66OI3rg00CKR) zocRpA=^k13nT*$A?9yTC+tT}q`^V&QiakWf7P6Zmt{dt8JNAMa_f(1Y&W1;Av|5XF z!+V0_qDgsb=D~A7+nsT!ZHk)0EaIx$$ll(lTH>A)eRHrtF5f<)KX{b2ci@-A?y1?T zkKyt)xKdN@KFlYY7)Cb64(=6S!ZZF`=c-R2@-!=Y! zdGLQ!!u)j*<8Q-krm~fSg2BZ7V%7?#nu?gE!iXJFPYOBlRWtP{MWxU>l)#vkZ z4ey(=u0;#tAYoSsVOY8x{XXIRt9(~iT=p}0lC8vpwM7e3|B`A{u5UYL7nA`>7<(7o zo;Lbp;Yit=cTW!{?9i=qeVkTvxwM6rVfuZT)>zUwr;WAomF*JB#ETI4L>=7asuY0V zs7tQC4t{I+aIN1EvCVK%>JhqM^Yq>KY9K{Z4^p#!%s-dTW^u4mxso`|#cd=n7Rbz~ z^16tkyR+90flzGKi^5{CJRO4A@&PCeYL?LQz6yW$1R z^aM&mpl#b)+ckhCj&YE-gOG}KHr8j#f-_eYzp5w=AXi0&YZkZU031ic1$3FN&RoY3 z9A2kgqoYgT#e|M12{de!<;(+G2xicYA5@?(O)`;xvb|D4H|}Ui|pG4wQN|Z z<5_D{T+GBu55ms+NXSH&F2fHig%gtl%LRr^*`_Y7*AB+Q%rrEeIZKm==4#HWmUHHx z$1)xspFy4}9q=>t(XV=~D5)EOsQNlL5Tu;SNacBO;!S(4S>S3-M~O0yIdkV2LtzcB z`lqimqeRG0pKvvY5X3oodvcd*6uAl6-Ggn4K zhL37e=!E8Z7aB4~G5gsoHl;a`=<7FxHA{_4UND{Yif~13!Y~cZrzi*VI*~R>zxZ38 z*_N(k&6C@ahVX5idqloxf)C^2K)MH?VD!;XM9EGGAb6XL%znu3{xZhu(%JC|<>R~s z?!B9b3CyBMC}`jh*|c+iIAXVC7fWtj@}9W)E@(1;Xr0i) z>}Q&H6h5MbghJgT(Jsacloe4&;wB+THz6LM?`A*@pKenheo86{ugLYUim@nXU__SVQ@jY>Hd2632Z$}}RYet0QR3dtW*X)i$L zO!Lw^4aHUqAkxMk0(TIwl%YO^;uA8{z%q!}pR;nP@&ufVLhI{L_ko4+bCbpe15f_5YX{F;(9+`4ppMHGng_|Mn4i`{>C{KK7_|50$Rg zc_?W5Wg2E>uubuD1l;fU@WIZF?fM>Jigw(6iL)AgVOu0dPcDo^Y?D?n5$6DNr`=~% zm)6fny9)&66-XsM4%^x)`TES17OzpU9IHe;CPq>&`jDJ>Oj!AnkwU8YO%N$o)KIK{ z!PSIlAaN0lE=vtXXEbxZhAHJXOveVxwIafvva;&)`(L%Rg)t`Y?rUB?|J%I$zab<4 z=th$=a&Y*H7;&Jrwf_p*vv)Kza;Q|5h+bnw=)$`8!Dl^kWIM6a03)9Uhnz-}Zy*B! zrkO!S3{?~}@3fBj+)Uk(h%2m!bf&Y2z4cO?#a2%J(zPD{2WWS|LFj6~LQc)9@QN1ojv^bU=T057~kUq7f zC7UmraEW+=baFu1AV1}|0=+|KiT(-*a6M%5kGE?hm*x$}S#|o>hA1qRFl9%9R>BB> z^vHli`hb_RUe#yf(Sp3?+q6PERynU+`n|%k)m&5|;n|Qxbp|h8AMZDg{L@?;qrqMx zZxSK42I+@w=a(dSK2$lNUg=pDciU^N6YK9GrSVL7G`5LR#yW)M4V>T7sroG&7^3pY zvR%1Cba#NExJ;R5dDKUMJK3JQYmtULUn7q-w4V`%HR$Xf`;2={D*5AQqfW^5A}YZ4 zPR}uQM;teSkh%s3H~MH$K;@~PkT`pKWMf6R3-Q1)RWB~94x^$$9!>A2MaaE017>Sr ztw!PFX!P}z{M#*h0{oX3MMypookHU;*TV@v_{ci=$*?0XRjD2U=?;Hj-3jtz$KbuH zBeCTCvT>3x;37izV!gayjRyM|@tLm1en*-<1Oyt&yY-3(Y?kTi`A1F&wTUdkE!K9n z*p|#?2lipdKnrLtl7P9#<_$r>m@uEze|sEcA*5Kbc84!U1b@s8ByK`bI+(ex+B0?+ zr>xWtH!;HzW%{nq9}~5LH4R0YwWHia)6Xv7fn>B`ZxJ2PC^4~QH6|8Hfs}7Lf%8#AC7!8sY3z@>nh3W+Tlj``_WDsL%8KiMskaGorGg2mrj3xeL1zGf@ZJ4*Y|T-n?EH?^`A!DY0ch1 z{c`O5@(XCnn2(7!;JR{8X>J_@q%Z=A)h6s;o2LskslW~$ntj5Ej9_4oT7-H1MZ0=N z$-8zmdz5;Z9Ai}291a8kWtFZHV@0%$JPT~Ya%eBL7E!G7eyUt_h%s_J0yN*0PMDB{ z8YWT61u)UkNesidWSAB+%E=yrFjQTJ2xDKf-!$8#Vyqy+_?mo!LKo*lLdh5$+G+A142oxo2XR=V1k-ao^;rG8#4Do)2HMH=){<0B7R zMMub-j1W9YmMa!ZomO^tlOR#fK%v`~2s79`f= zD}652RX23^O*I(lcH}cftj}^M{G*;hy2#m=er|4MOBdTnZ+YiW+m4W!4tS6>C}b*;5zkiS1oXSCDnbX!f-T66CgsXe?@A^#Q;++` zLoDZkT(Dd!E7B7_4En5{A|d!9<;pcs5BEE}bb^<8QK4=skj8TE_)SK+y2J5bYk8Zj z+`13!Ilyf3c+UC3Jy5^Q<;^|y)!k}pKjqXYG)X{JJiO3Dq@@L{FUy!1MWfQqg~cC8)RYTuj4e<8*%3cv z{T_WZ-so?I67J45LhdrdhUi(QJYWbH@mKRa{?|7YH_AzOpsB6bGdtoAydQVo6NHAX zBPA3|by^SL{U54L)V!#pZP%PfHqDN>&zU%A_{7ly;J*Ylkl*ad#- zKm{kk(JY^uAd5!ecyL#6KLLSx*t;HB(LimQ;lxsNrn`=e-R%c39J(K1f3>?uO76YH zuiXhX`hP=*{}tE$BRwQ-~E0x?B(p+mf z68OrT68Qr0Tt&*!+~&x3Vry)!y39Opf)-m}m=f%#Z=U1>%XR^Y0&A-3SC{AGHqN-O zXOGd@-xh0s+x>(AK&WvK=)*@}vj>xK@3@Y}tTbR#xsK#0CTYN)HhGX^{E-@qZSVKi zaKHMsMk-c%lGbMpH3j`xD+||_G$m`(rag4rs^zmB4>)pM@0w}C-pNF7x4vF&+W7v* zRtD7XE&~pHBY@r1AMIZyxXiP{&0a5+w`(+d()V^^t7oJMn+GQwEwmD^EWloN`~uiC?4jzYl! zSH>t)xk99rI?y#C8@JPAlm)LO3b4|6ns+@AXGDsP*<~oA25^%>_#0-9JL90Od)GTd`Fqc1**;zFiL@~{B>^cKQ^Qpb=HCi=7iL&zijNO zRH@7(#2G|~lsic#x|&k3!+QCvpgs1Z^IxJ*EgB5m39u;fGd7O?wrB8 z7oZ#EQ0JSv*<1A4>lE=asiWptXrdr9F)`jseRRuyv|#mld!M8GCfzTS5212kE7dQF zxnxHa$&XyP|BhVA8&kf*d`M5H0)uHydZUMlu`ZrREYw`sCn82|{=^=@)so)(gI7;i z3LsctrNWe?HD*Ht)9+wz-Cwc{|Coi&=7s<{m1-!eS%bsXGHgrSe1CHz1bAxDK!N2l zwh|d{#zfiKI85Xe12@r%UqWj&8GDpP|4zMTLT(w+xg7##GkO0Df~=;F5WYewCM_}qDj-3bLGo^4gRxlHnUl1UhbM$_K(i!~SN z$qD%$6Atz~Iz+SoyzXg9UY_8#UsPww33?wcj?JzwxI}PdFlW>@4WJ%N-zniE?_#l4 z^A}Ga{Vv2h%xIlq>&27N5~9%(65-EC#EBl)9~1Aje-IC z)r;`#_OWfPjG)30ku1tZd>d6{+s-XYKC@GCz)R_pDHULbCO!0r+3Rhkd#6|R!@i-< zodS>KSeLW^noOD%gBBaenMD+VncWt&jrH7DxOoern7hMZ-n_(qQrPJwXItf1Y}FvR z4yxQT>s3NYcRR&quBOOmg5sf~;1#Qmo7aYe#)PwC0ueHrLAsQ5tRfZ;E%uhRhdi?6 zrHk;+EUDbnl**M4Ep)_eb7$}e1-*O8psD0+J=&`%qa+nlXUI&(1lnTHaVXq*9>WKA z=Tyuvns?wsLX!b{t{o^8CKL1N-5Jp_tlvYtCq!LCeKB0nyDNw+m6?26(QkM--aMwb zY1}>#?6~BRG z^hB(LXj}IvKf3ASd1vv)V!0If(ga-mto;2$^r$&@sqw>*H7{%-xFO^K&vc#rXdw@d zM4WJG^sq{yRWe8yNdnS`V)=UHUY~*?Old~AV&<1Q3?hs%A-~~iPjHidP`V(*NmTEl z?IUz~w-2}gW-kyLY3T<~JUbckS2EU;EQd08Vl>Lxow2)xelAzG1}2=<5#)j(v}Kh3 z7tO4~XH5ua(!R-UZc+juy6sMcYXQg<>U|wu7ua${_4I>h_yWVggaIK<`PbyqmQ_)J z0O?}fihD{pw6F~xq#k-ziNf6HzZOB^NB490U%+`cF}&;Pfr|6hKS^q+qE-$s)!Zu6@LAa}(tbrlo_%`SF9g7va?1Of{+gjmMYz!gbJ zHsvZ7ST z^Zq`R{mU`F>m;9@qZ2tF953rOcf_cYz17Zq=mabuw_U6JBr$Cy#EKDG368oh;stKV zS!!+J0ZSIn{1njCn3tg3H2WMeYKnicOrz4gQKxN@uJ>dRAzd=4-{sm88Q!nip+1f4 z6rLX;U476`j8m(;*Btp2(BJC>)O`JoQ5%%XZ zixZ4qy1VWtalS%W5lX$pnK~a!B&HFv)Jam7A9FGd z*fO23mYQ(K#x932S*Lj6?JzilSv0hOpy)Nev>HUf!Z~;u8Z#sT1ESR9rC(eTvR4>f zBwmE%C`mp`ov_e4iPSIY=C>ER&|Qh#Mx;)$I!HeQKy;RIZVHjfp)~w zplg7fu_a#)THsLW4_&J9O>w#JeKDi&niE zoxjD`h={2)w@i~J+`dwWjfGtAPtj(@x=xwT>onB^O}RdhY-@DM;^>hsXZGMqMiR5= zw6!3=R%VqxG1%$?6{dt<_(8x@sHm_xtK0*&8W=XVt@@7-HP*Xp)KTrZA@k4qP3ON1g5B-U_G_qQ;ldt8 z-O~yz8=GPWR8z7digv$Vgx762F92x8E#kwxmMypX10-iu92Z4;v>Kj*eJ0(b97qYd ziJnNORQ1J?ZHJ919N*kw(Uk4wwGE+pw!=7}KXJh8>P^9x|VN@;7?~ zcutw#2^QI@{E2EoXF>MIS&TFGsaX(JyB9FM=`=nj=84_gQJRfX>bxqR|aDzWNwy8o_F2j_6M~ zX#P4kVK>2SG_yC+AejhiF>tHNTTeIC`-sF(dG0?*LZCvbc_pGl^IN&cWFS<+YyRx> z9??5GMPfSPKIvSFK`p`5?uW0XFW$e&x(c86U63O?(n7psc;ajE$T7W9I2=zKEpZlE zFZ}~PZ1^5Dq4hJI-!(X*xKgeILgWg9@Bhfp3&EZLyCWd9ASri!L4z2$f9eST==}Ik zNBG+zrphD@87vXxp-%%#)bC>x1hTVOxd=TLwxVaGG_VxMVX##pl*3wQven6}WOdCcPy_i+A~{~#+u;WmO3UIJCVZQ>^ zVFq;aeDFG$_gP<06w|s~fl%66Z{@&4!r{mFqCY0whncIX!^#LU6C|y-UVZX>(ld`?b1WhnZ zitKs|JkG+KWZC&pYtZ$;@r5*dWy%U^iGi4Yb{>lUhJaW9nN{bJl=n9ou))M)d#DUU zNlKRH?*b~~Fk2i8(yZMFBi$=Tq_nU6hXGD+gciG8IU0{#pzkw5VRFW2Dc;Pn{RN?P zc54GTLTs!1wLgxPQ%6v(Y}nfC?#EXSPtr^^8D_rV&OzU&gZn&C^@av;K;*od^`%~} zJoRD}=vBFtac!!+&Jh6a`U67U)uw)!{Jv~X2V6^m337?@TNScvd)AKx`fzXg5n!<1-*Gv zXPQ_6#x=S9S{YgOA^{m8TdG53Wc_cDBTN}xM&^&qak~dMi6HNwUx(yK;)}6qOxk%` z6X?~`MIar3Rz0J#V{%(^GU;izg8EW@c)RXi%O-~GxD`o;?9TNKJ#V@4kBnFDJe4W~ zVQx3t-6G?0gE0AsG_m!(c>%FX654nzyZ6T(uiheYR(-uzeRX zyDOd%2gGL^0ykP>HYT#;=SFLwBBk`2kc`=3l}Y|C;iDeGd!3L2)~QPEZAM%>#BisQ zR!A1K+(Uu+aSBCLZy7d^O#^~sy0_WB&Dk8fSm&1A!+xB3`giDiX;3CXE~hv{^|_3kE6d92rA#)A=j2?U z?Q#dt!q$a%vZw8e>In%iD9_6K;?I9=+tqglnhCxJ=>_Qju08)tnf;$n!2Bnx=0COP zU&1PDqyHQPk5rPf#1caHGPqg|t#`&|lNQ`VPX5?lmf9#1Q%@^kmcm+y6Zsmb2z zL1kt8YzE|R9iN9aDVs}sOuL&F-#%!cf>H5lS`?Q}5-au39wWzn6SC@!tgMW*bg%e_ z2H(px7!rx?C$49EBZ_u)?JDaE^_8%CMeQ-#h&esYfD@^ZQx6{_%w0GO)QmY1~Fs$mR;%au_D-51^IT0dn%;-nSjWlO&%`_ko> z5>+(U(!|@`$8+(82@W9(g>6HsvXnFDp;b?JVTpr%`4ZX95^D9iCc`UlT3Qq3ajqgi zG}{3_Y#wlUBJ&)ynH*;AK@>m5at2gU+Va$|17QYhYSen#Hd1q(6 zL3KmG-JtwRth)lp^N|ZidQ@4fF$=v0?4(rEZkx$EefgNSU7frG`xqPY&fJ_GXlBSC zJI9$n1j4TfZRt(DztKxM`U`$*vz%JO67amTr|-0FFK2EBiH2J}&3;%t85Mh#OOq@= zmM9RI9`kY45<$k(_&3a+siQjBIZ}iw8_1)FhMlsw%XJ>Xu-HW~o?qcavaxC^KzwIvK%rK;2 zk8?-(Uj5z0M(zdK{9fc!MW5T~z2D%O*to)zG^kq&akYI-Jd`e$!tj!fsI5o-TQy$6 z!r&8*@p{~wAx5L!Z_BV-ZoxZL?cX#7HU2<~vA=N)uL;0!D7N~K?mprURQowR18$%E zTAxyXzIAT{d-n?^CSn;LlO0hQPYo%E?Fy-h!>h?t<~MKuXbmmu5iO zR7)N5b|lW`Lkn&4v84|2b@kVtc}MGWU)rh=$@Z*@98D+Ap$@S%hR~yX8jQYV8RN(i zcYaG9g<@;%hqKQ1yoGCF!wkYcYhMd2CzviqxneOm)zfwZXIdPHC|z@3DCtLQrTmHKq!NKdH{dA~WD!-XmXKO#M_i?pK)>lNf<+iPGeBwpU(N`AC>~LLAuIeB_S} zI8&pl%7fNLdYVq-^?j#y$yz2@9`#D`TGt}=>fZz{D0KDm)*qWGbv-yOcF#onLNt&!ZIdL=#Te~zgfAK6C2KrtNmb$LbnJpzl z7fbId#pd`5Ql`>TPZ%$uSglwoI&yDFF{PQ`);A&KR7glA%2G*PT0}b;MX#IeB<`kv zquMF5+_=f#nAQ1V~p%dpl~Zu>|jCh4qzo z6NaF!Nn@7ra}!y&he^FSB7JXY{5sN6zvcDb7}k(0Bg{v}hvVq3mDjeAP!!s5nE1{CFac4C5cW zWkkqEBsrd|Oz_x`!9i)wKJTa+CRaAsViA!aw}%oah>ZuarRP0i0nQIn@1K9FpeTc3O3K=lJCF{=GpHJ@%?7!^R-sp<1*xwYx~u;Y zR%A<9+x?*Gsd5@Nw7CQ4XeLCP{uiY_`Kinx)%A-ui)AOFNyvQbX{c2@{C&kJjRcL{ zPg;-hW9dHk2bLY9wmDs{PL(PoQK?3Dmdu?|tSqgy>ql3!f!J?e4}R#L{`kA~r0j$) z`jP9Qp7vxPBbmb_j|P*xqz8iN#Y|ob1(yDkS528)`3@Zy++s(85rDMzP}}udcf!s(p{xU4fq*Z~7-cBxI>`2j(3Ded6Jz=QsiMmHi3!Y=jB+usrB| zbU~;2`|xw`kdraL{faCy203n~fZl%;>i+4jf`RuXz7UxG$^?kj(ID`bcU5eYOM|9i zL$e!U_~_xsL;gmj@hxB8J;Rc8)fZF)*S}7r@61T^=KrDW9it=tx^?f^wrzFnq+{Do zDz?pzZQHhOb!^)D!~D`gaE?do&v=7a@_)iPo&65iw^7SLG$tq z0$ia~JHRmfBET&Ju}uT9MA4d*U4$}Sh1zXbLtPS`3NL^B9GcHeGgD{0_cv5I`NM2-B$42_R5EHv2OdPa;-BXVj6 zk+|L+-HazyA}407}IN zeRN*&Mh+~aTmHVWi5Hu5nJ9d-&x2awQApdM5K}CM?SYRrg{2a6of(?cQwyf37R=V_ zSO&BWRlcaY>cxi!TE+JW!uCExW!+Ey6i)I;)?J7uItRDxYmu=0G!V}t0)LLoj*2vO z#-cGPtE0XT*2V%aXJnzip`Z`i$LbJ*nY%GYRc7CHKcs&ao^Nb;BfXkJCoVq_k5GN{ z7d=jlR1AhKK!Hm$mKB(X2d+sP)f(8hq>$Pt25o+*4;54iGsmol!TBu`e6_hU7w z%311vCS~bCCH@V*g9?J^S$Kr~+dTWcB{XVw`r{tX=NG5#Cd@QAFDaw_I^hqD(d^cEsm_pDuLKg-qf^ zth3URfVQ%z=g_MjvcyMA6{n8HSiiUS2m%3yVYnp+lx+;a4VHTElKO%9filiIUN1?7 zUqzG4a}Ta|yj-@wbP;+z+ueMg{QwfXeaCvSw_rX={Sd4aql<3k>Me zfWaZmq~R|#&>Iw`E2|sw)f_H>(f%b0k08YqGET!!OQ2J)!s@Ppf>{Gqle?fWtcpHC zlY_o{g6=JNsjqTN4n9Nu%1o?tdkh6xDs}C>%w|(~K4}IUV&<+sVfqYB=6@C#5i7C;gV9-cMnl8H>OAlXW9bsKBT{`>r)8X*T)@ZbVZ#hiVcO?c{x-4?f7Ov@Xe0FFhQ~L_b@74p61u7*TDk@iHt_iLvW{ zgp1_EWJp~FBpndGb2WPaQC501(k1W5af-!L7pTK|g}agKH^$f1mg7PZhX#jSDdpS> zz%m$EKx9f{Z3eJFZItqn_PQ@qP0;NpsNQzb71vU|Rs_@{H-(6zgX^F0-e;e5Uibg1 zJAnxJXs%kafOt`HP;`r**c(+NA!2(Hge>*#|zXLa+nqhifcyl}C$j1q0iYK$zF zi6XadI_KQA0W&@il@0-Lzi6WK?PxkYo>ERR7t_V{{4GpE>WnuO$gSiqDE*&BCfjw!e?h+v|fWL2Lg zGN@O@3MTb~gy<5*x>A%!o2jC?imIKvC-SCV>w?OPjJqdR9U5QIx}9Jp&!sDb&|dWX zHGlR*{FQ0v_Rpf7&Y=9zeMdm<`75?>%>lP>{z2+%asY?(2TreMtz^C*0OzhGw#4P1%67V{lY#4T$9cg zFTb^~I?aXzi|rM)qTSiDk3=2+FF_;Wan9@OoknXHTWxcJU!CYhhk&e)ej*@$ zYyh%WlBGQ~cyrAw*^7hPrsZtX3pOZ?oLWabR~5Z zKp8Tv!pNT|SdHG-s8*lDQpzDernLgy2PRe1=_1kgluqByc6!x&e7{~YGO+$oW8rSv zecWbL48cywpME-RxUI9Kq;6w=gNX=8%xa8Z$IxMJ=yhh2}RONH&oK^T+_Bh z(y6AOYaUH#hc*RN8Iz4Ug6CqXg<9a zsb{PV3BtoBb@Z6keFVJQqaL|3n)S=Noj-b8D1+H&lL$b@55(S~XSA+A* zqsS*uK4cb{o?)}n#CUm(%xJ@m&3jbkSfyBU@gXcjx%W-@=bcZnUlSAVhQIX{za1s|f zz*Ayl#?KbI!zn^XH-6cq8Mvd3i-OB{h1%+&%gp=b-7jaZe)6{nE80io9{vqIdP4^1 zqTre8g@WZ9;4dI=+44!qKxlkCSR71MK))}th$cwldBAkss#e;jPDzJ)6-Kt!5 z3bb3nTPIg3+zOi|K(IpLIpcR$Y<2#gWUv}MY+_9!Bg;ZdC=o%5IE&&7eP|vU*ukcR zmIA+%$VC-5|5` zM&c`DN;vCvFzYpx>rOnbL=mr4Jg%^C{y4E}26*R~N*OPnJyImgVwE>AcHb!BJ*tVH zj2Ph4X8S2>@wrWOQToT0{zl9MHX*xcJ8~UNo7+Jgu^>caATjNTEhu*4UA{g;ARynT zEiBYM_V$Z9=nL|nE`w#$uj7A;Eq_q|UHq2#AI5JN8yk=R9>o9Sv^}i)FJqQ3Q)*o* zRT>(1Ot9vp2@EhhA{crxlmarWZSOQ&N)x~j<4*EhJMTwDRP=+u8!STayZ)a>yezsC z#l>}d{noDELern=m#cIZmYu)epAZHh570wQ+j3LgV9qjRjN$LlynVv>vCh29Ov6Zs zYSs4wDFFAm2kDWHR;`*U*g-ex93wQk)c1{%hISe}e)amxf?Lcicg9VwD0y9Ui;P(`~&_pKcxO_@|hpa1J#8(tVkiAZT zO2}cr1Yzs+}s4&m>c0QXcqorBEHx^`{m6wn<;n|L{D;S@}sS2Wy z9wRmubB3d);b)nUFVs_V=qy$yI8lY^xU?PS;Sij&G}BZ2*AA$aAV8&Jcs7Nyc&K(l zuRdJ5k%xmLVs$m3B6&CVJB&VpIa{cg^qUQbN|;4U7^b4ji&M8(cXIm^UxIilc)MHZbt(fb5ssmF82YsTA9ke)JMIRE)` zvDmk1`*1p0%~S_)`tc4aCngi!L6;_)3kX}KNxcRm*7L#_j5pyoa2!cv@nh1aA7MUX z7w^JCzBI($s;wDu2%>#S&}7MKg_c|bE|_Qb zOcbh{5al1$P#uHDSH+HT5}HyW_z1#>W8zLG{%`%h|7`~R-}4P|M}UnD;QydoFKKvq z>!_lCT^m!_aeF{ZN=PY_(p!LzO%|QuNJR!yfN9Atq$~^3V(C%Tj>WB|6_?q#qBJ#cx_*oyFO+4KCeEiC! zMf->|t2u;MZ@(kGu6^Fc`AEymb+@PQ@VG9u)hXTe%<1y)wL3hfu(fqPFtfEj*rT7^ zQzO_q9&zPxy{!`${E@geHg(0@DBX{5yE)e8H$8c?Ki0W*YIOc`xTm*Sy6cO0yekO) zovAC`!h$2xx{LJ1o1@=yh#p)uXV1lmR4CU*i?0{%tuGshMA}v9qMyzVYWdJ$SuPw% z57y5L0T;{a6Gojv`_Gr4Hp6S#&|t$YG0dUhOIEWLEg-m&ln*D0UtECGgqF%)&^8$> z#fqOw*vdp+#2Y_@YLRGeSQ-$C%wawJ=3~Wzroe=*s=-10U{b8rBi*$QYdHgXXN@nL zDz~pB(4U%zM&l3#)iRI9K)i3|I+Jk)lO*;KA8xkSNUQ=|ERGK&u!FJ)2eY#J;?`WtuO;#Mukbo$RpKI#iL)o1C}JBM1zNt!3Fg;EJhXq z-r)p8wwL6TFw;};iS-wvjTW7c)chhy1VjHw=*m#>6R{8M8=uj- zGTtyG>0w2IDqeqV@^OkbSG%Q+xC}8*`<1A6Q;t*dsMwZ{rhW!|%(+FzwpmVm{B=33 z3IaO6c!lpwg3K}t9c2(B)7ottWYB!n^|zf{Q{1B@M$IlNK1YP_ld2{naZV$#M-Z`C zm4?wy1)VkIk@4vEk$7w%-wLF0)Gx*H1_%y?pYBH}_8(44thgtLQ0ip1}f!3JH+2ti{ERk%mwWo{P_${dd8-M1OaHSdsSA-x`ytRQM- z1(PLvV+f6T_JX)k%E>Mg1-^4?C)(^sbN^pC5;C=!T*|vecbg7@*VWw|afMbC9F6ne zM02VimwZWoGk?1|PaT^ga5$m!QrM4}=}Sb5M>mpHVIS}ag=nM84uihM3o;B+Agr+j z`Us2i;ixq2i=gA)vVDCtM}TXT?c38~ta3Xxj^#*?k2~!kra)ZXp5_3JJOic4_k*aAgr#}r-Hde85G5BolBP>#k9IcoGlJ*rosmN_*!;+V%+4_SODD*y)LZsz4&`$c~%d5j3 zzM$@isj|g!dax#+Ul1q=YFm{>)Tri6PSBKEGAR%~W3p}s7u{BdeC5)fvj&MS3C29g zJkMEjx(v3j^su)gBVYt25gsDoFb@XbJO%Nh-`AS2I#P0#xD*B_kIXRdA~7VS z5kG=I>adPK@S<`txmQJ=vAk&dCB9Cp;4akLc>yZdBH`&(@WRCgaOz4gX!|x#Ue#5w z7bL~(Y@^yEi5=vkws|RN^rD;?1JP;IY8bR3D$LLr6>4doQdR`1g-?Yby7*q?FFYn1 zV)3X!LGOz@a#YcT9uL1@_+i&WW~6h~{mD--p~UcAR-w9dq^uYc2MA(LRLHPKYbY8z zFm#Ln7}mM0z>$er89rhpy#e9Jx-n^Q&$t~OC!VpOYR&|Rcc{mFd;i3h@hm>7^FTBI z%E_g`ecypD{F;5AiL4LZ2Gn8`hMcwVaK6=A$i$AH*Tr_p&+IFY2TqP|>9vT7Za9P^ zBgYvwLww>=YN6gj&g`4}cnRk^Ns$k`=qE-kZ9q@^LRDy(faW%=(Qs+|fHpLM19ry{ z2K5sP6%}QyMhrSxJSHT7TyqDUW6YaXO)}fM!MOpt^3J3@QC1_+NCI;d;D;C4++>G8 zmD1M^X$!9Z2T0m=upV*&ZQX&ln)7T?{cI%w6%JmC(CD1Rra2GW1hIhWVU-iYy~jqqT!6MdD%qh#AA`iui=2 zPO7g%`iG9$Rofe;C?XiITAb&mL=iFoMc!XzFNsuauOZ+5Hge3lQys1q6+s_yyf!uH zE`Lrk;^@&U^yK4HL&S@}7oDYiqnD6;KE5Q03ts+QOhZoQNY$yK33qh<1b9p1tQQ@9 zMaaQ*@T|gV?y#x4?4V}Rh1~KIt+bRnWjtJpM^vAh>yJO152rb>GVzPL&*e*EM}68@ zd(D7x?%7h;w3Vu3JBd?=mfXo7^V2J_Y5J7+RznnvB3$KRmo$c&Q29-P8b4B;p()Ok zu1ZmB%G4eIq|^TLq_k-io_f(sq1HB3j_^+V%r@Lk5yETKmtACsA9`pn2fBAa+nAq^ zLGBVzcV*}_fcsjxpx^whb2@2wJHyLZb}u#hCPw=F$~crD z0Z($gE8dkJw=#=)^Wz@a9NeP8l0ywqAIf{sGeG_ESKRD^)u zO_NuylsYC^O0JThw331JXYOxIgu8KV3d|3_G>534Q*H&UbKmtx7AmwErD;Eeg`tNQ zV+D)5TGl_6RHO$4Vwc$AxI(54(M>`>RFwTrz6}(aM916v#=?7w2!p>M^HaD!5C8I& z(L0s+qd9p;rsjpE*8dQ7YxMl974NO4(p=AUx9;@xH=8jjw#J5jsa;lUcKK<_=rI{j$m1##t}e7? zCzkRqvqHn;Js}Q{Ic$n#@RFJ1@t_xOawnvYzXR(e~GPSc4AOwW(98 z(F|==SYhh*=&)&q-atr>`+^fjTIIhTML<4!77rJxCO2+LvnSTMh^Z!fC z@<|Dh27J#UG!g#0RQrE;l$W$MvUV{x`QP>NZgneXTygX-)8b2s`(+2~(ei|p<2?oG z6jGk>L=`#IeOAfrHU}I^TNEl&dOPdkd8xHzom6!Tk0fn;{IY?fy+i2AugQd8!c&PRX|N#u|lWbL-WeiTZUy^#|i;~0DW?I@C2~(Yx%VB zOW=_B6e+rD*Zx_cz!!V1%dz$CAd9TY;t;rtDE_3P__u9m9eIRPHKE5XK|5DgL2b1K zqmjgRKp{*ZELm{>;E1SJ+5t~fZs-CvN}=ku`B`^S?8RJ>ZH&l!quKx-wP~TPS)nk3 z^CDa2PM8_0MdMnqmSjYRa)$}-VCkdva^0lr>ktFfZzUK!<|$`2$Mxx+3{R=+eP-$3 z^X}X8d`sz~NZ8^|A%^ivi((M+%=l)jY9aMSy>bvtO=<@0@IkzuZwG4ozcdu87cpaS@_c;;ERp4 z)|z|CGh0NRNAF{QS_29gxt1E-U+6xQkRaxbR77WW{Z@MV;^HAp{0;{#io_?LDw6C^}5*$6} zTxE^C=aiu;>qA9STLc{X^sWuCG3B*ho}g1xG)d2(J272r_|&}mdEBqMOlMGa{-kKW zs|VQKso5Fi9xU%Cgn_4(oDZtM>e_# z(lM!dYFM7X8;&6Duyk~%lz68Gg_b4=d=hUI1}3oeh?;d^fT?w8s8$C6cyXRwvc-9= zU|Ak*YoKpdu=`>0L7|hK7nFRH8(f}~8T0Ojtuycg!U{C z>|Z7D3?v11gG5JKt)x7aT|G#9J%6N*I(-_Xfh|sf`2g;)7fDfJ&LCTVkww6!@Hv=0 zWXvv=3SOb&56NxmUIIKfRep(|#A6sLir`(2UjCofz8(~q1_>yzRFU6hyOrRpBy&-N zR*6*#vj(7N{;VQ9VhuvMWDqMo;7i{uJ&@&C7F#NjGW0jvz0}maE$TT|vt>~u&PZT! zctlEdF!NKo_F0xl0U7uT4kVZgbw$+lkY_raA(>D5_`DaF#c9JUbS8C7Wy+H;I*>l( zRScEk+YXCG`Fz2IZHp>Qkwk;f2^VY59SmdzYlzm7#bpVF?wCAO(QRyNYcKH3g^Q805Ys-fmNwA|ne2%J7nwn3&`;|IvkfTg|$FElONM4d}Tv%Y8|(24TSR4ZU-Jm zKzb?&`x%Z+VQ|WEHNyRSU%* zByINqnMERgvVeFh&&zNkO3N^+*rH7t%JH#BPH6bTFNzPm!OWeIzZA>%SayYfewrV& zNjMvS_F{%`xHv^^id=b{Im>}@iU%B^jHZ2*uBgMX@=ECd-F;d~j%OMlB@7u#qgL8^ z7%ur&Jea6A#L}U#MTTmVvP?Ac5)BU`On9d_Y1on<*O`!Gs9&pb?fd-rsMw)H7Ob6H~o0HbLc(R{e?aBCvc zA(mzXxowz^Z1-=l^h>81#6J(T%D@8`GNG5$1k>P#v*ufrgj$98b2A?+P%q*+qDLQ$ zX?Ux}91i~|IecC|1=feX>XHoR&t92hvw|Jw-K|GSap|J}6lZ{bq^y{IhjYU1c#EwCn_F=|KUs;F+R1{wN!t zrPeluSsK&)8Z=CFu>3L&WSzFOk`-4=X6l8a(-}uaFw8F?za&poXYznF#uqucgqtkD z@zv)MdLMxr43;1{B5tE(`h+2Iq^Q5l%p=(HMZQJn3!s#6C(+882X3=uexA1@)!B`> zFf586sg8|L1f=}|7`sr5Y&XkN_INe*lm7|)*$aKVc6Vyw|C5@cs3GE58xyfUmr;>lQ zaFTib!d({?v+8D{j1K0)rJBYOL$hn}Bp^lUxUfW*1rdxi>0mFvNQ(uy`rCUJZC<+8 z$YVK38sm*?zwkpZ_wVg({! zR|L`kY2GWCf51FV1yXfHoxzIadJ%v*F(X~!mbPZI-XUMLAQ<*%U+t~p(ZKf;fv&A| zA;x@|@!`kKjhAhw8NRL0vzO3VAPT0HFix=p2?H6;GtLpF{3={%jkfX>$>vR^2^&;5 z*-aLQ-2T-`CbCqW+PLSSsn#qZ?io-5>r_$Ce~wyZfdo zY93Vgd1?hR47B2%pVN#5bL^W1`fErQGt_Ox&T8D78**ljqKf+u=oTlztr|2N6}DR3 z%xQqQu?4i8BuDzCeASTCfJ{s{dg*!OiDV@;_ZjzP3`-T{9V|gYqKV1o>Vrtae%@HHLWwb|s**X98Z=LQw=w?0BFg-O$|CsA; z5q0JWV^E-By2)jx0#9uSmL%<@N8^r6SiHg3vGP$pi}}Sn-tQEQd6k0voK1_AGanU= z$+4*S62g;x{x|d#V~PW%O#M_?f5vVo~cZu?83up$I5zNjOcNt-h`uWU>7 zQLx)80SOsP3fl871O?dKMinQ1M?jy4o2oLgDitkuzL$fo3pT|Qk(8|=Qo`~Pzu<>K z1HOp3+uUu463J;nvuvrK7-oG;-K3${H%;vjeaq zYO3sG+9_LkTzsp1e_?0HGgZa(w-_w;3#P$KVsDkj6i3}F4C_CAXa{Vp@FpIiwM&zB$wiW~aN&)lFg1096LrB^6uEzW}E z&~>D*(vQfOU_XU(H$_0n$>=FE2W!uT)Th5tJO{#)Om|MtK6A3<+Q3)(*!D9+579?pUa)zZRHwl%bDS>4jq(p(H{BS?&_+{$2H?YeW>^W$&N-_K8* z&zbg{sfme0SyKq}_r^`H9j}+{e*`$Movzyx${diov@fI~*AA78V)RYc3G;N;RLKYK zcDHspbqPNcBw#IuDHsd2^Cqd|s%494Ijg|3f=Xvg=z@%8$%i+h>QZ=S%OwjVq~<2c z(n^;OimM$gmWeaH}w;Fb`)R z@~Z+|=LoPlfy~1K-HbAY%eavw(^l5(d1pz~1&i26ui|j&1$tSb@A)r2?ky@GsSIaw zlQIs0cjt9|NgrpTFm&fcIXgH*wr*+x4%k}`$WwamEtDbdj^+g0!VMR0tRaYw!i4Lh z&Y($c(8m^_Za#sV*|Tgx>-ThQ-LY!Y z4|%^o6p*qXzlcU=A&s3iG7!%niO&d^&j#oHL`q}NAH(Db7tRjA3d!Rcm1z&+o!4b9 zoP!kB62eBjcqUV>bK2x`iNM&eS(M8)LdRy7OGvi1;*)quWpvQTMA$`{v00Ke=5Qn3 z(w+k|s^i_ONE5=zQE3yyqt;UEuUBf$udewS@99J8>qli)qZWehb0o%PjG^E!63eGc zy2omqZ}b|elTT$_IhsdN;url(rsfzLdG_}^qw-xvxz$RQBugYVptauwx&|xicFYGt@lf%!JVEMN-ovOtdtM&Y!$U z-brNdpnBW65+lgDJpxQ!ktt{^e75dNoQrBD`+I2;PQz&F#2nKMQ&RF`*KD(ysr5<5 z&(m%Mi4&$-o3($iH;Z-19w7+7m4#6jTF+(#|;L>E9ztjN$4t==i_{+!W#TK?*>if^L{F4A(ez99V4s!)L#(HsG(A zlZu8+E>>{6&Ff~o>Ap!#EDfcqZ$~4BwPRuGxRqUJZ_7`KM=lbu72kb4USmu*?)$8U z+lY=??>qvVYh!(F(CsjNVk9b0-$homZ)!|JfgYofmj(a2o`#Hzc!7`p?`a7E{P>%d@qte6{l3FNOa zbzrVB^cvSx(L|u#D3e1U#6lr$OlFU;W9FW>;b@P810Y<4tk4p_elm5Z?506u{yC$P3J*tnNBv;{?lp({IsZsDy?)38D`B7?+03KVbA&xIo zR#V1im@b!ln4noIzn0(6X8a@ZRn%dfO6(_}VLU}A2_H-HSFlbwX=1h9eTC$_bA!*! zt&pS9I{`}tv%7dncV0&bh6wOuqJ=5qrjf}o$69F zA1=X|gDTN9V5Li^FEm-#s%^CjvRIaCntoT16oFxbuxB~%(F{%bFC>lk`Up{=^p0%G zzBZ>)rEJjFC<*3Tv|yj*`89s*M~-P7H9s^O+k}r!O-pQ6ByWZ5#y*!+MYpLtq*YQ) z(^?>_lxB0=G+pFXnRmH8{XV3pFAUqO;08SdJ&Rh~8hDaqytaN#vKsN~L|v0M0i-5m zbxS)iC^14}NNEmMZa?T=e9oepW&d4k*ItuyE_9-C;s?$S1f}*rl%O=Zj(J*RcO)ia z#n^O!k3BFbDje(?>~#D=kD-Wr$1rQaU31RrQ1Z;F{6!L~jKDyhrpkx%SB*<30*QfU zc;cwqVbZf3`^=yzhQf+>E4i-Ce(a{%@^o@wT})(VQiMFh__1W_QOeBXb}G9y8#Tcq z8$yrq1Ip-dEmmQ+bIO@}p4w&ZOM<4K(WEyK(kmq?AhQX9*4sa{`7nOmwr{;x> zK+>gR{d`h)KC&uzjG?Y0I0$#z2JX4)P*V@C$4CUqH{pp7p zH+k-zrO!hsCj(LpNAl1e9N zr20}K;#ppigIH~#ZaAy4{GhG-?4TS6Q(#!`u(rfHjv@XutGRP$nt?q62kuV3C-7Nu$7Fo+SU2(UaE}Y>aB#nizI}ND zd&c1*Odd(P1=83%_~Cd(e_+3YbQdkGz`b$%1mbsd#4{I;O^aMoG#aTd8+Y!np*9?m zmyNvhRLbSDo@PGMD=xP}yA0#6U_at}1~3+L#9v>XNtQ6%Ixnx~itMr081a%5RZ)Sr zzd-8yf9PiO+swY4z6a4t=biqs&^-MVC@qBOmiftg%l3v0`1TW(KfZ35=_uh+Dw)Lf zGNNYbjx1!K@22(I)yy;-Fo!lK<6psa6nruQB^;sW_8HI1ot1CDHBEjlnXmUbu1Pz( zMB#;OpQXzQmHWwZdh!UnaZK8n{~(y6%L99u%KbT>hl69c%h0uy2mNT(&Zj8W8-Lsy zRI!;T+WwbkM(5{8X05^-Uw+Rlb(l1gd^JX6?c=1J2RlU0h3Hpt3#)XeFQuS{id2b{ zuRK#{TH+nRwH_u($d0=rgZrFy;1Q(LZ(uS2w>ba;+m(nVWeIu9D;gdAzQNBna*^t2 z*$!e6a|h)oD&~W#ch=Oh<_-3EOgsG_ech!E)L79YAPz5~y79@h2E16MJNnocXVG<8 zD`D<2T}#_DDe{*}W#;CEre5Cf!BY=QwOp+P6z?BfsNos1>Jvs>UPtM;RW{{#zOr?t zCm%6nNvU9%e(A=`76CGoala6rZqJ8o51z<}a*u;)U!0)y8b);kgX2?Lok^7{cqOaJTH z?6?cM3hFJ#<8&QF(s}K7YJ}t4#`LnSs81@5!KNca9O+$?F#wUN#Y+vIOFyzr;HLih zYx#xq$ticfx3c{fo!UC5jqY4ntNMkqs+vn2<68f>L;Q6*EU%iwj661h-u~TrM}Z!F zLfT4b$3=vZ`99dg|v5Q=4)|yH&jRkSFjV4 zoBLuvq-Gn?v`5wnQv(7VCb1{X1KuV5u`nNZN+Zi*cU#N?xX9Nrl&Ax)L& z8z7e!)l%FF2l(bZmju~GHPg`o5!c`dOdky=hWCIcq2A>RNO;52W!?f3)6h#2)9`D4 zhI8$OB$mN)TmsO537UN(7aF# zrnA0tj-zjhACur!RwlhuC5%O6k%GN4s#5iEs-|2Q6WnkIaROs}ae-m+D(b7jTntQG zS?+W528Hs1nmt3wiv$m=-?#*j-VB2bt?72uLqMkjS>XdOR|t@>y)nkJvL)<3+-=3~ z7PbJ%N_`4oi;q+pA-p@fJcx;|*HNq%LC5YIscr6MPBvw|yF8UD$h#vY2bvq~;pW!7 zWDkhqaN=ctenn1Lj=PH`-exlZW8bf=B$-e?8u>Qa zGJVs4hg6v1GU9r%T0>dmO!J4mbHD?5M-3wT;q&{;(`;VcQhRHK_acbjVVCeH8(lZz zLHeRY8tvk~P(~dI(6H(31`B0}1;k7vjbN>lp^#oeAE3^8Ky@uO)0puva*iCi0^vxTj*x`_4%O z-5{``{p?O@4lV-HAjJN$iy^CCq>~4qyIPlA%!rjFLoH$sdaZBh3OkRgx`_uHZ(!uR zgCs+5Y{#oA*GC1OuPQ<>4Wch-;h3uhL#=#PvUTi1Qa0v_{f`OrJ{qEw<9n`(*U7qL zPH&J1?(%qr755Jj{*0-1)>w2|Cq}|4lXg~lG}(s-_xY0cSv^$ijMSrf@6Bd9uq=~3 zYF?WS3yurr0Ji{}(v^CBFq~vNogC>4O;M|Qww-}) zfZ`E`o^uT+&9W*&tBeWZqf%_Ir}eiGg?6^TH06Ai+UK}c6Ze8uRc zaDB{c;8b%=b;knG;8dTD7V7PvmZF7&a1QzA8ZtQfb$n#Y98b?y?Vn8F$Nj*TrqHF% zp0gb(u|BGf*cpb^9=1(e&&_V1KF{CumO5$t*2i1iK{pI>O=n%87Ubv(F6M+fXQem{ zctq)uZBUM<98AazqlVN7v3B|(nJ#s zPk7hLL=T-GS&|77EqiIK{mi@U1%9hc>wo^slJY%P6+?LTdS`_dnHQ5=M``@`Q>FRm z!ktsj1ghY;eu>uCy*QYM{QdqaK<)wdV}4proe|A{Jb5go#h!1pznKeAZR2poPJ{13 z+n(@|EM?O>Vs~lmP@K)*{HBAmp%bp`WNtn!RInDl0Ds^5sw>#R13S+bv~x213Hnt- zv?U?f;TP-oJO4fQm6FFs)<7HLb&UPlQNNL3UcQj2D7SAp#J6ita51E^l`UwzN?;5k zfY;7yIkxLL`z=J!+Rn;)S2hmgo+D?##e{RY>Vcd~QMl{HW-p?8IlH`xA<2qK#nMZ$ za+pc_Lae(5Qo0GZUQXJmJEfnZT3xawu)8(OY3rwxMU@es*EaD-q*U_;o<-}P{+*rF zy3KTnS?0Z7F3u;<#!ju+{-}v1nHrt?wl?`%rOv3|q%SzSw)4jcqwXi>*Tx!%wimx^ zAHL1gi9CMaw2o2Nm}+nv{%x#lpX$C}TVM0$13JN2&ZXa7#Z(`YBWLP0y+;&XNplpP zAZ_KJ+*`9uEzFk=%4VJ{as$rhRGTCmy~gA+WNUIuDHq>RtMtKSi+jSU<8^}-B+~Yt zDOEn>c9cKA?K)r4f9;EmI_Y(7kn?icOPbIrkybW2X-1EiZ9+6D&)pHd+nOCPWnE4n ztW{zBo(mXWykVq2FyjWdR+C19L{xj}yibTkSG6BXR1%t16VgLL^h~Vd>!bHH0T_lx zQkc%B=?p5>00^I1FEzMlLgoriJ^I{-(CG`Y*@@XG+rjLov@BbjIxbA;f$W7!8?kq5{U0D%;Y_C}2p{<*7Ci-Botrw;h z;R{QAQ{tLN@oM4MPMk@8(}_=NW_jHJG7|hjZkKN7Ulf9+1!R3Y0E1lx?raS13;6B}p@X;_D0*zNO?x&+oC@fU z?np-K1jF!8pJ9vz&%jYrTxg3q{q9$q>H?h=b`{N6(`+2FI2f}7^u|t+bu#-*YzQ2B zl?Bn;mpwxyerrdjYzUn=p}O$0Euh_EOwUJ*Ifg9Pre4zPmH396tFbY0JDE=pX=Ogc z%`;^#8Y|pYR%hOsF7&d^PBPUXdo#dHQxFcNS_uB!kRpE)88^J)GdDh>GdISCzNS7` z>5JOv1_zq-DB!%;fM?4;U1g@a5+VdT#gJ2L|C`d=dv~fb8F6azp8oCc=1UI#{ z0z{%NOA?`l;M(r+UAs-*p*P^2Rd}t>C*<8_^TqLJ?7I)t$GW5IGkoPzWt)BO&#+yU~>0 zB;3kk>`Hr|>ply~w&zc{8_T@CW&4Yj70|fWo_jLc?PmJ*)!7Adi=geXszFN>Z3fOe z{6M$dxN7hljPy)>o3V}FCgfTp_Tx;WO$`2N=t^>Us(s@ub|{GOjtEH%U#6G?=@?Y- zrxbZ0Ur6gx(5hByzwNod0aZ&8%GFsBm8}U3fH2Y<^G-wO!q&x=iWS>Je-&Ft?j+n8ekyCJQhUHfM*`%9^DBJOmPu^OTd zoQT}cAs&mQkbBeG&NM4_jX0MQW!RGSN)^@0&eJ|QjRpe5*6Y&c>YfmSuz_lhU-^L*y0 zByif^t@<>-vdxMw3a0LkdysM!R47}6pdJog=!IvpEAZQ}Fwb)gqXsxEECC)F{oiN7 zEdRfV_+zZmq-OOS_tItpC^*3X12qB_HXSu-U+J&8a5SX4A)(p;O8zyucq**a$=NZ` zz`NILj$4SvoF~B*YLlkQC4yOkr6s3}4H+?P31=1l$u1|Snbqgaj+wNH@9!^<7+)LQ z%eN`n0N7v;{}8u_v5Me$%VJy-qhhxYb^BrI1u?<|ZL&ua=EauHPINOc!zGb)KzWg6b_ci+K}QCu^AS7WX=EUen}^8q(CmDcHC7x>4{}BS5p=>WRt!|4&sb(_5HWi0tT0hC zYhsIALvOxF|6z$t-lfgiUY1mKpd5{^Gp_wJJ(U$*iBkLpe&tHUvV2=Eso@Dbjkh}F zjT<3f1A|r*t4fqXrR9WKb8fjQv1~5JDGiP9gdH5cnT1B?=)DfTq^|eG(Y%$&>?QM% z)@M4c36I#PD>>Iqoo&B0hO1krq3e=VmMdCT_OrpwSf`CK6z}&B5APxjjjri@)1jGD zn4;sWuVPnvRhn3{l?tX*@^tGB>1lil4!9H&JW-9#XaksWj2q@CYDnTjLx|CmoOKm(N0t0y$T<}cpDfVyc4?qU zIxbm-g>Ag$lThG^%#G%f=!>G%h$x<*;L zz&rgac6m19ue!nsE(?O@Qn+8bri~7#S-cV@reY|S&bwCbl1LAyz%ekFLeP$w#y0s> zwG^7zQ*>8W0wJ?~f-gR#>3AQQHd6A(bY9EoXqEUf0T=izaJ1 z8iR|gGUT%tmJt4xJub7VuhsXwIc3I9cv^R5b+jJyx(Bs?1|g%Y7glI zzqv7>@Fcz?d(A2G76aBg=uOX*BMqAZmXf+XzvqN?=t~w1ph-n6#GhA89o}*`gxOsG z)*`a^rXfcDD8$eG(2OJ$y};Y&G03ZwBhFB57?0~V>!6FwTWuiqIZ5ONG+elBV52hdw81B_yh_~4T|3|Ai+-kWv?ky@6g)&{+E>{3~*d)z@3X}4gDu5K2fkzk2D zgZcPYF2!5ER~S!&dJB5LvbXy1#?3`XRqEfC{zA<2D7&=pw!o2%{?gv;5c|_hA8^2| zP>@(0wjK4Mjee(6bU*UrEQWmRCSrSJU2TB?aQe89rc{QP494BgQEqYRDT#fCs*wnJ z7vJK0t%hbqeHLEIiH^@uxh*DxAzRc z1sk0w9T!;O@SFze?}E+W>dYwt*_>?6{>1PX^`%b=xNDS|Vw-?nu>`H#c}qGM*yi34 zN(kvsC{zStm(faUwXXBc7F1v&VY?6EvS2XfTLeTOUuRlY7RQ9QZN1=xPw zARi&lC9!Ae0Ezkpu7M^W$qiV`s1Lq5UhKvJ#Fb<<15t zE)DW!EJ->=!N8VvAzJy1v!6yqtVlFk6upBvtV&MNZmAuQ1{`iEi-(>-qXvG5ISGM zk!GfS)PA{^hG)3ne#|?G*3UPc>1qAj1ZOZsF;87$>bwJ)vHR32p_mA=Ayhe~DvNcqO|8 zI#wo3I=iT>sOjPH3HbRu0zJa&Ubj%*gayehO)KkT-*N1?8<(m0Eed-yU z+epLQ-Enqia@{=fIxv~e8C%nq*zb0T760)&$^o6Q-jjEaQjR|yAd~{8-|VRSh4Wy5 zP8yYLU=Zx+*;QY9M!-c2q2;FhgX!upqiTbI!og6!(`c>ZuWcH#mH1}yvLCJw{4<;z zo70`+7m(7(gkCd@x;*H@4JwGs=Qv0b-tKrc$2KAuAm6Tw2nT=}CM`9+$5JBB{jK$j@#r z5^1!E7pEO!bt^k7<(V2<5Lc+|4lirI%t>cXXEZrqJ}n0D&3#h>BP_>LTzm9%&)vlp z#914g9(62$y=jCsg3s#J=bR`E`;bx5I|-c{mT@$z-!iKKu9eG@{yw`6MeOq64N%oW zo6pHKY>nbs^ToIyEso`vKY-Ot;THJG5^=js;tgQKXROlrz^8}gvu=n_a;GDG6`m+R zALrUt3{t`FoSOm}BR`4-eIJ=#C;6$SAR|aI)@W8a`n}C zNhV2OvxMgo=Qjgl*gRu82CnlQ{_Q#s&EKWIz^yo!zep{qXeq6Wp}wK(8CzpHF~AX# zb0D%u#U~bGm}7?v?s@9=a^&+q*X;wu%cg}Xo)!leN+lnljORGJ*N52@YCe*Xw|^~9ky zbdElK@F&|s#+VFjTQYeW;;1id-ouCv;}x)7Fcsc`87jJ3Oc%*&!3VM|&a_^zt6(EK zOgah&8I8@8eCIYx!5Wa@#^^b9R?Tiv2IHKAcRi#iWPqd023kyJ7+2X1i|Ul%=dURh zLg9|Ix^xaJ$rpXbixuDC01l!}Ka{bj*bLg6(9AYz*V)c()5vsf!o4v{h^I6-)nK24_oO{ZtoQI~cIDttz;rHjE0~ z8I|)iYSz&22P?(t4~i+E`$>=*YXY-OD}F&U!1ScDPLz2VCK%3yD{oAAr|pct6DRs7 zj>4M7^iIWg)=?##UobZjcdD+kWU`aP^NB)T%O_3D+BM1wJI-0OC#SZUg#9|LzJ{4k zH@K};T&m68V?RG?jqu_Izif--vr2Y%!|{rPhl=pPjE-OH!RRJLl%PUIEGVC1=fa+kA1? z31VjGCC3R%vII@=?WKrBe#%MCD@WM9gqU0T3Rp-_Ai{0uJ7YG^FX5xoB2JGOp$Fu8 zgl{qiuyb7)3hgJiQPK;o5uGgV8Kz=Bewn?shFFTcGEt-r%J#@4K$l#f%o4o8-pH#X zK#cB@{*Dqxuupi8TlZo`dQ=xRO~FY7L!C)8A?wf4MFM}85BL{a<%|5!JB!LiZ) zLDB0Z|M2{R9+Z^DQ2v?Q&Pcbwsx-?A`MmJ6?`pbp$K8Sw9Kkd;nS0M!Q|!}=ut`f^ z@4#3M0V(;TN|hK$A=v&8S`Q$rI&ibzCSY6)=xzSzj|lk5&e4p)%Ff)$#ma=i(bmk) zhT$JP$F3Gm7S48#z`P0s6!ilnB;<#`E+Pv4zkFTT+``&e)Y`*TEF{xa1|Q%gAv`L&c2q2xcN(yfLqd%OkYi4I9$2T<2A?ah(}yAK zz+8TC9Eb`t-wp1=Velp|$WE)05)sbFaQZQs#&Y=bmUVns17yi;4VJ=ZH}%ptkW2Hx zQByV+Ov{f#4kYpc9BZQ5d37kTSX@9eB(Ez>By_h-YZ+4QOV*F-KgY=g%V3$l$8JE9 z#^|{tc%+A`D|%LAj}mrG)N1oq+^rr+Wxy^gHj-gNH+>HOd={nYp1+_r+lAa>m7@w{Ib(9{wS(O??nOWy8 z6e1Z~ga5v#J9^N3pIb-r;#_wdm~$S+7H`mjD%?Krsu=W9 zcts+_ykJRc7SRy;yd2_%EF)!C%-L+qfyNSSto?-6$|;BC;`3y^ya{evAYWAs{Y|Ym ztkskc$PEf$NjdKdUFVq+mr!rcVLTtNAVFV#k~2;J2=qjrMyVGgj)X`0=ON@Rvmos@ zd$>F7J*fLDg*%=RXN|$d-lrkh^4x=On|h1}M!X}#j<;fqbS9R%it&OsOYmwn6={wT zwUd_b`|b?|;=xn2FOA%95w%}X+%fxI5*>t=(Ikz4Dfs z#8N;p<6$9k$EKWc5P|yu#Y~guwu4_z$b6-dnN$lI*tb#$g9$$PHHCZi);vovycQxf z1c44dEJ?f|+o?iCidH%mr65$VPBLek*mapQZ=#OQB?Rbo>Zs5{UbhstAi9>PcbP4x zD$&yN;_;ws%w&2a1?jHO7C0V{j*J6^Q+G|vdDhNNj1Hwd$N2XhjiYOu?U9gbxGJNe zBC8aD4P79uY#p8K$RPu}<0dOzjHHYL!VFI9Kmj`&Qw%RTX1SWXFwNC?Ee3Ao;m$78 zzyeJ!P(oB?$c4cE{Tn3tTRK?!mo01N$>b-NU8g0-?`+XQB^3uTt>P`j(k;P178j*e z)2%I`_)08(flJnZJszi0KY$GzP$KOiauMnVH9g{zr1-1~y&~E485eQPa#X4IRAX|8 zH|1?gxBVKei~&Sqm^%j{YysqoSMYh)=Q>>A*HSNM4nUnL&=!WYy*)a#5 zU0F?-$8fuU2D{kD7W)i2mJO^ycToYS?5vjrZ5zm8a7I7}Q=|bCfKEZ}xfX5$^W%D5 zZQI)qMC&v}*4I|MnHv3#WnndcT@;_Gx8L3U+Kd>8|Fd>J-gbMHjA=8Eq@;VN746)_bsm;ryR)A3{O3V%T#uJDFPVTzzuIS!G z|MbD9wERv|l(Z0k#_($Oa8Qzm)UE(yS_Z=YT}J$blY~SS1u~xs5(N!Jec;SGTLW zJWr|DJdYmXGcI#VYK^LBSx{X1uL~1|uc*09n@07E{`Bfq-&1GwO_qc1G&A-OwPTkb zaVz`D>DvH8?|VUSqD%RzeZD~(ld&3 z#KYzo#t#R_kj(O6z}x?Z3j{Z>KN+^kV;jf$ASgz#k|`il31C z1Vq6XBtiO5;rA26gPN-malPsBnH6u)v;1G!|ZQQ?dF{1{M%Cu0kL<7t}7agoQHW{GdTv6f0fwR#@t~ zmJ}UJ!i#1kkg7=gC^322dmuu8$*0f`SW#6I(b}uCq55P;wUc~8TR>U}=}11039~Y% z+vmi}Btq=o%_n?7w0oTR&__(A=P4%IRIr=nlRGP#nd zg7!!ZafxwU1Uq@~<-y_(3)oFH;xR&1ZNhw2Rc+;G0vBr(w6pc)G-h%V5{x9=t2i>H z1(T5v>@m*O$*v>6nzDQl{hg1ZCT>sbH`ijWg>=Oe5Vr+H0SCN+Q1-qhNtf6X@-bA)h(o2WHwMSuW=xSlI4mZ0IDuzaNW zeV|51;TCTXd{W`R9iOoNe^|Dffwk2?)p3#%ZIn=$5Jxy}cM9oZh{MMV@@LWEYbiA= z2ZTjUsgFh%SB}~G`+ij?=+b!8e&3E{c=_NdF0E7 zQ9+`QOrvCk&?ivt@C>ZqX19yLYajEm`0(>}*TG!`5ZEmZ*0`*I>{Nzak*NVzTij zQ^hiT1B!f|t6tH8;hwT7BNi#Te0#l^a`eR zGWk<pr1V{-k0o2f^9ggoZQZ6u87>$`Oh$_m%U;y}V$&JW`wR zC9%2GR)LqdGLv~AsWw!J3vFh1*gz|l#Pz&+g{)ymuj3aOiqKxd!alf{)%c3bnGY?D zDKu+qQh)>I5@Ak&th=oKNp6TqVp13#3MoCcG+dGOIf2bqR*Ydk?HkL` z2c`!*wg48@Xd?kl?rG3N^(UTKyVj#X&}fG?t`Cy9O5-07KW5fhylzJ}?wD@NixXaf zgam+ycYwn~Kx`dja|V1yYehhM`Cxu5bBFv?-H*ZvvLQSfBr-|Kfk33%VjyG4)@cme zRgiDSdn(=-?8ltY9VDR&t9B&laf?`#A>vgIl5=|{Nsx1U33?8g@n_o|-N{8$1GOQm$$O{z(>vHSc;+)lbg7;nf*ODcw^xke`s2x4+stUOdpj&p~&B9gq4%}6iek;g#%|Pyv zT`}Ho_Li&V6{;U?}$e}inQc{w_d4)l-fMp^CMap9uD=#C^`qQ}m z#JBQh7G81_@&voAW8jU^xh5tEU@h$~uu)B|<1oAHek1Aa={ct51HZr3_NO1L8ytvz znb997PmK9yFN^%yAAjWeyV9CJjDPhP$5S6P;@S%Xlz_MIr}Oik^de_lJq#0mHSy4z zyR5=hW9y9FbHnalxeNplU}2g`m`dsPtx;AzCczna*ybrWUb_lD_>XGco9VQmUiQ+r zDZ$z-G+RNiz|I+4rV+8Ljl%#$hFymYi&D|HoU&a;7c!_0S{o+$wD?1&)oV?kVOPGu zxKXB$-8`-mUY=T$<^J+zZkX0{n%J@J(a;o2g2A?4%SZy;nS16{jwiMgGTDcOuQ4S7MZsMD-{DhWQ z_0Pi7sOI|QypT_3pfgIzR#(3QAhV%*c4M>TiqqAs2V};OjcJ+_Fm!#qhrD(R!B}~B zvKj6wq{R~z>h|a`J_D{reFawXxhUfT8($fB(C_V>B2XK&ubLim|!Ko7dL4* z)24W?Fx+I;W{NeV5$;2E$n^V zp-?T~eol(Rddu|XXRCBphpjxHTgOR!-ZTfe?5Us76KYY;h?8nIGH!XGsWYCgaO4qZ z@i81`k*9gucUlfAi|NI?uXS`YBCbiqX0T%InNgu`C!aH-o;1e46DTzc-t*%SD-@Bu~qqa=pg z(hCD)#jw|CsjG20Sr6b1;kR^?;>A`PVMde?C|JAI~OiXY*TYNXEkH z-!8tR6lK3`Fe3Vxx=Bj5)XF~z=6T=BpV=yGf`mxPmj{Fgq0S8upKlF9n-sap!c z^&PNPZ`(n6T{S3Uj2LA?_$rU;=|)V`lnsc->c$lPlr1$0HeTgYfGLTL#4ooN8nUDu zqUBE6rOL^wfQeLS!X6vwd67k#e*E<3@p<{zl;m?a+%$D)p-etHg;0e_@H?qb@52o#r ztV2~}{E=fc{wn3jJ&C6VjIcb{y$23-?@RVk8nUznhQxuDVKCM*>=>)s{ff{k{%3w! z1ap%(o}2v1S)smiVHsPzdUPAbJ?X{ol_Vo;l;d^02eJn!w2B_{lKf!#LnifH+#ZQ5 zqlZ-&h|9~EP!-H#^X1WbJ}RX&#x;sQxk3yTgNg-G><2AzC6#P_Mqn!+(CXmxh*jg| zk*p-CfAl9lvTS1RM=(vQ3gQU2KtEv)YY$;tK)8lpd~`UC4-ZN76G0;|!uyh#-X%Ge zmcA<^>rhQ*1M2fhom$rEGR?|I(Z>5pY? zU@OJqPc`&k@%x`w2>ug(|H#*>R3;oz#8LU^#;_&vC+fpK+&F*Lmjnm@1cd+78dpO$i1Q5>K5r$dxx=iTWeOtU<%buM)h8VrBI>5L;zMAf64{6kk)9W zPy}BV(&2qU#ZtUeW4|V-+-M>ArmDqV&1S=};8OpSHHdDVKWuZ;U2A?se7T_53aVpF zYr-{3i^I%ZYa{IjG;9MR;@GrY^&Z!JWH6790L!!*V=wn;b^_> z^JbIiKshok_K+^=`>Ti2g2>62?+SCbmkO^sX!+$-1J4jCZ&qPZQd*2FdwpZbU9w$XQTy06?L6A+GnWZcHja$&0)1oM(?-3XJ?9( z{Qxv1lzRgA?rS(LDVgyEag~h8@APZJXqz)I`{)62cH|{8HEEn*naU%=PD&YZ-?zNs zWHNw+7-2Y^mb>I{j0!_gfB`Kd<~le5dHfR+_73};71Aar;RMWi94pa_&1JD1-A2k^ zfy6%>5tPFpbwi0ds+I4wQ$9m0`vkA$A1`I~+-j8>VNbcps^1SP9J)Jc@Gmc?$-NVX zfV7>@9i^dpuCNAkZ;L;znH~+`4auo+mJ-Q_B%rO7^6Pb5Y`w%Kt_fh8af+CAo(v2E_!z0sT2lahnrUQFT^)=fiP7#NdyS zn9AG>x?P54%)PZ6e^V?tT48kayPR7e><|l#xk)3U8$51tWuf4eQ13zZUzmOnBmsW0 z?$MZDc{FwO*CG+t2${Nh^r2By_|S4+mu+~Sd3@caL(Y1MrdP)p*6%y zRacD#xU2Fc#`x{V+v@7>5wOvFgFTcYAi+n}PfY=|d?1xxa)Z zj=wM8{qTLK3I<=V`?$ zQMzZXlxUjSJL>bHsy%`@213tf!R2u z*|-n3nqd;DNo_vXGiuG6wz(eJsBP6@R`pqFlyWP0z1!$=Hrm0?Z1&z zU?g=araM=i@Yvzs_K0wODoXzq+fl3ykzwFBaErNhCebnUWV+NC-mgQiM(aqZQONL? z5I&mbk<#&{Fbbrx2u{)9s6O-4zys2Tekf4NBDkY-^72G7P-&-{BGO~zPIO8@gIBL0 z-cF3mQlvq{YR!_#lZY=oTFe{7CCF?XV~|SJtxgjfu4$oO zz-H%bnkw6~HG?LZ*J>VCU;Bz)d`(8mIdHI-VIW`L^<@v(_aM1$)O{8}G!ua1U3Jd-&iIt=lw}pZM}|+f+P2L$BFpXIcxmvrw{!<6W`C zgZDj<`cepDQgyP(%mWS#PZScb;o&Q`ECstPhQJ^Kx74>;CXfV!AKz?Z^IDcP&JQ?5 z{p&r-oa%5z3{!u4iyX6EaIq~kb`~GKOMgd*l)pM=zMd|6s?MI2N$z||v!l>1_+ zZUUoXWN&T}3s$JRNRPLl{b!^>X`)7$X?dEWw!Z5MVyj6Q!DW#v${-m_#e)hzLn;Qs z&iWNO{rh6k&_`5?2}SV6{GrGRau;ltGK8m zpops&E-N7!FN?viYHsa}P=)v-(Ms*IY#dc-Ra5Bu?aw20p=<#V8ZR>Nu>x7bUSSB6Gbw`#dzoJ zZ4`m-@sa7(w^-pYqc*EZ-AFdicWanmngL?G_C`S^Qny*eN`QnO>ip}ry->3O`=-*D zw6UPg#BSC#ngdHd{@vyYm62|{UqMEpCQ-vBuox4yn8-1nM_jvd;CyC>*wo;_Oj_YqDvH5l+PrOH`5bY7&|TpLZg zaB5WXBfJTWtzO-M8_udQ#tcFeWUI!BXq7}sKq981ItBOu_&kcLM}IiR^+l-2C36v& zE#Ye0C$^VKvI2I&T=D6MLAX6`EDSlTRkkikwJr5#L3JH(P zb!qhQ5%Ob$D`fa*h24S4)6-M0XVVcqKi?B)IVJQ}yKf@C=dk`*q#>4$2sF3n9|GpjG-Ggl^f=Eyrp&{2QVZ(_O%YrOaMRUJeOeRrDpgvkDeFnE6;XH;@e+Ebnm&`FdcUy5wIe+s{`mVsl{YB z!@0G*Es?xW?k&S>u5kG@(Ihgn=ZHJ&(Xs4%c_Di;ArWN&SHJj{EC7#tA13dnmE)7; zBU(TbkqHliW?3E0hU%P3Y58rz0pl5VxW7hLHdE`wD}EstY~lJ0j5RI@gBa4JfB~Qb z*sQPH-Y?|6CxeqTx$0&z_F+&RytMZnF&lXiXb|nu1-yyx7aGb%W?!l7wGaeuaYb8OLvJoPt}oR~BH!Gx?|C z@n7-ypGQppaxcHJ_8C~%nmGQ$z5K6}E!&Q>`p;GBJs*oCItXDNei0H;8w$+_KndmB z4YofG-)eJPH0VXaol%4Ead!E-;&XEvSLc5}0mV)p@mR}x)g z5|dG$nK7y!x{B7+;5d~fR`rA%1c*opn(i>`S9 zJ5{kf&njEt80l0=&$m&J`(GL0JB5+r=CX$&J4X=OHuvjo?at4kC<@0s>T@BxL%VdY=t?{IXS~fv0(Vn z?26BKYK{}`4lugjq*pz4$?xUMPE6RScyLQvV9 zB}Ql$UMm_2eHsQOo1+MEwH6D-Uhln%e}JJBK@z10V6wK2kC>YlY)qG>#t=n$(rm;cTvri~wtxrBf1>~}<)#{;xTMN^D!8RxH!ZDk2d;N&U_yQP$qA}?T6nt}JIXGe^{LW7 z4;oW!HsJY#mUPb|I9HvgvDtKCr3g1qh8KCcguI+*XDFM)oMU@Yd8WxLl{G^bzT_ze z>c}u8!LDRY9^QP4VW_s7Yti8X39){wtl9@avu&2MD(B{&RUod{pU921+KtmBnD=EQ zbnP99sNwRpB8#_Z>xlc|(j4ucwZlG+X{_$c;a1eMdZj7)hp}T`Nt-VP=mnVIdVXq1 z@lm->Sa*vI+{WBLq?`5s;D;LM2mO%>tZSSzDevq+t^ngU@0JHN`n9p5(LmsvKmVFL z$;Xx0Tnxp@?kij(Ol>%tDFdDU3 z57QTY*uBYE${!jGNMZtnFF~Km%`75cgh|${`F9Rw=H+%w6Q*fEeLm1AM$BN28V@cg z1<4@+_c64oN)W{{$48B@3MVdkNzCW9sYd)BqDh2!#C31H$6$=>Mwz5X4btM!)>H_T z^Ov z2@x4NIUF*RH^F!zZDR*8bi8P!x6VEE5$NygF>j@z1BE}9*}Lw~v%E~txt!L0pRW#R zzCwJAr_3iRaIxUEU@u%v{E^LiZ)3gcKB^DeNr7pqS@M$UrGxL>8Ay5^IE?~+ zlj-){Xx=hFh;)Gr2v)^(>1?nG_nPsM2hi&hU;qYC%EvdUF@b#_N7lYDY0U1iSIVW z3|9Bbuvk=h{@9CjTpgi?%J5>ouf#RmfKhv4Su#Orm+ysyh~0yN+9uW6GT(k2Lr#dK zu%)AZQ3`Oa03774KKenl>xmu&e z;pzJv7^$XAWVk5D%&}SEtM!+MjR3=bl4J5ubXye#N^|5<*K8hrG)A^TvQLH>$7a37 z2u%==>A0SjijVV`X__k8?M23t$Vw7or?#$~Fx+)kPmX>&M`}oUg7V6L>mKla^Rj3csmAmtCg0xtG zQO9>NqDi82p-JLOa4)`t$AQ-q2DRLO$Kl@ZIhjisiJolfiW0~f;2a5+t9U&X+{RXXk4+X{ucLi|0Rk4H{Ab$_$=i=5Z~ZKOIPt(@UjY0 zLJR-oS(J>>oYf*0l4$P1WKAyFAE+m98}>pWV4hE8xr^{es${+lN5y{J)!;VGbw8ap z_4f4oO7YdJbU$vS6N(1`@>u@=w zt6&qQn=|t+_Y)tR(99?G5et{AujNCjc7jtOC>PNzuT`bXXLK&3dg|6pXJ~0lzT%=S z^febUNq5~9`GSdqRyeSTg%^?X$n@I+qW8_4@Y56@V9uLO4sv$iQ}fn&W2#---LLDS zV-i!|G&@#L)rHu*Nz^>L3hI?lMUADOm@gNFT3~9dc=D@bOwZk1u}r@dh&tK0+o)hL z6lPnMK9AnCM+Gxwnql%c+h|bv=5{qOMk2ukV%E#g?$CnE@HSt97V>Ns)WM?gO-?Yn zl}8v--k*Qk3_7%g0+djE7rEC;w}-X=qO(7V^yo>wLn@KrlwZp*c*7)h2tWs(2n%X8*$n73x;I%WW0^KYYc02A ztt_oI=XJQQmK}BeJPuB`NP<<pSF~ziq%QsGrDmP2K zErRqDKUO@A!6W}6SB5JvFlePf8M;%hoj3AT#1r=nmb zBL9q@xMdDh5@`!f;ob|^l=Z| zzRwzPdK`I3JWAFWd&&0CwskhwJq8$*MwtT34DToFv;gLtRo*DgzMA%-D(t?r2MqL9 zA-z&gpDpe=66F#Ni6ct!_77a~r-%aWF!eh6&XO3Tx`ir$X<^p#;~M?rs~Je2M5dI{ z?9ZvzpYS-tC=Up7m$1I$q?9r5%P5=N5)8`6Dy3NUC%y$;+Vbg$*xrq^re7cy=H17{ z5k5#FX69~36Ug7qw$T(5e`$qMB|yzbA)$`)4kOf4e5%K^i6%xP)rCqO2A!}^_YvDC zT>2O$QG^RuUdO$ZimIH8Bis(QG%HwMKv$-C1JTEJjcz6h9sTmzPxI&(*f@{K{p>IN zI6e`mBF@)OzXm>j9G3hFWKCvQkz|LmN8dSwCijaVW+fI8>r138+q3*&K#xd9EE2|c zD}Qj#7U0t*86lw)5o*oc_loU-yG-mVACZQx8DuZKW|0|Bc1&fM_EdTC`wqtT^1GA7 zZ)<5ljqU$?Z}7kDV2J$VBIi$?!KnBtU}q4hut3=SLKPm`0~3Yw(TL-ma1hi*6xbQu zfHzSDU&C5}=S``Or1$|>3hGy^ZNAm0BRq+2OCdmS{D%?#)t9@ zDwYLPjSXscNO#P$ECC;I6{^u~UuXukZmAT*rh^UIhos0)N)V ztz<5l(XR9JhA}!pl5P8A-w?864iBw-rQPO6`=pT&pL|g&gXI%Vo-}f1<#oZ7(z@wP z__k--qeock=D|m``I;mxVeY(S>0qPHd%&b>x`|wINyRCBEhKY{##$RJ z%|R{vz@Q*}2q$sriyt=VQqSO*?DaSja?_szb3Iuog+-wiRk+*zcyw5V!1~Is`cm?1 z5ZuYqqJr=U)GIsn5=ZRH5pU6oOyZQe3A#lWjjRfHLKG#q zWcReWe#_Z$E-E&XqT1lIP-US1_`S{Bl4`wa1MCYT{%v27{=Ya{Q5$<_k3T(R5^$LY z*y8okf)?c$QMkG>?EHZ2bp=jD?wbibuI6;7F;T*hN@;`%dmjtTj>P}{=A@BTER?7< zBrR*z<7P|d?&jnbq?ZbwdA2TX2we)i8Sa#^5W63xd@PnyjT`oYLN+u1;RR zt7F2)IF6Ej5({j1s5)PLuSMu<{Qa}Lt5A>#WROWefNGp_|>Jz$1w%I;59H@ z{>vEu8Y=&rG5$k6`_FHvvg)`Xfy!sY6K6<+qwy`ppy>dXxDtv9pODDF0l628Wo$xu z1U)*Gw#}GJh4&ik1q4AJtPoZOb;f&faU&UZM2jq6``mW(-0Qqe>%Qi_`}Ko8%Kstl zouUJ4vp?Y^72CFL+qPA)ZQHgg72CFLyJA*sds1)rtp9ZPeEqI(&05JtZgMX6KKne+ zPaDfV%0TsNK@?#cP7nC+fjEh6+&aV$#M^gv3ETmKo!qAkw0=RL*c$SrR7AHZGQ=!N zH&TLOe6`lolNc34^r_ArF75L6kW!l46YPHeO>(XEN-oZR#aEl5Pv%yYrJE{4^@G-o z^Q1;=&vMnRC6-~zHIz!Dr2F*p)P`V?_eT9=M-9RA^44{G3|gF$tMx;X!&jyd;}(q& zGe#A?u*o%&?=>VH$sWc^u1ilv5(z{c?IV*wuF%&w;D#3|0$nmVW|pHn$&juOGGoRY zldsg(#7YG2q7vcyq`z=}1R?~?z^g^7ar3nSc!`!z1uBO7&wd)P4+uEqwa6Sp<`G~G zB)2#9(@XfAo8EnGoX(Ve?&t7pS?;S709PvrU1-V4m6tJKqO`ah#nHDWu#VXS~O}{W*V>Ilu&g*<7O63w4T_`_Q!Se@>&60E5SWM&nVTX0P zQ%}tx4D+UxkGR=ddBTO)8f2cgS+|S!Pad;9IFBe%fzlkX(=c*kO}QB@)L!CfWhG`w z;{4V8YhrI>ghCYhyo-R+Ed-4%kvk}ZZ0<@W=7?c9dH8;OSx>4W7zw>7&;b;G@SNB$_dA8RN2L{%3+r)Q}Kyjue|5zJTmFPK7BC^2Co(0FesX-GpY} z*6_y|?8vzaP&WtQONN}HZiDSTSMk&1?*plwou#0N3LWW)O?g?B5(eOcn8fQ0ecZuR z;&XBH^c$Kt46t?)QY&USotLPI5>z-CV?x^P>C?)&@j-9PA{&NB$EArb=f@> z2?}2t_wR7qMhGX>=r1$=j`bj7HlkWYUfENU@YWoatn}EuU6)-S(oz`*MWKvEJmYMd zHN~S#I`JEM-Q8``T$|jtf6ef7Q<&U>ulX(WPnG!p-8lPqGhEEU*4ge~-+#q_P&-&$ z_PcG&FopaOc!dqlRzY;@nkwP~b_^h;frV>r|=VqOyPc(0Uv^;)65!*fS-}plC z{NU+b^706gLGVmmOied`vh7v#@p*&V;dQ}4En6wiG}z;?Ss2;SZlf;ItT)y4%Ku6Z zU+{zuSv#RmJ8vLEPZ9hP_Omx+OQ`^%2qBhBd-RPLCfx&{36xG+g%7aoH*V#NJ&XiE=-t~R3jLFb;UkF-*9;dX`$}Op zAef8TUo0NoJOu258z1L~L}pp0s@q7cJN#_{9``wJgg8=%Gq<~O%PXHc@hLt|xj1*i zV9iu`SL!W$N#1WgB&~(|K#~Ok{W{hSpqnVK zU#|cUF|Z`mah1rul-PAs#DHHZ&{+pqKTxS|NN!{s*CF9SAmfhvdH8oN|ow58Ys>2C8CSj!y%BITDg z1ojQx2SBi=0;v&EMB(HQZ8+h1>+<&gm|6{h+gGo@lOBzD!dkT_8ay!xvfkGgyoSn( zF3H81a)J;zYu1D@p*n{GE#)6IcyUxiH0Qk;POb!%5GQ7xCFz|-Dzli15r{`@K8;8G zZp94mgZY>s)J^3{sFZig=Z;DhFB%X#C{;xs)r?{F<2)wMEI@Fg8hs^B-;s32{B<{L zcW0Xe@3*6Rix8(9dPJ^)+j<&U0S!}Wf>S#N_7%e;5$@v~TIM$d%7EsfM6D3d!(KuS z&rx!iL8VgT$}E)+{zMM){9QdHS93cssS?f=!AZe>0VLY~cgIdr7>@F;HzFi1#se66uWV|JrV2|!ePf9`pxbk^d1sQuFm21x%$nDI@9sAh6Z zu}!hG-gZ8|iTn&j!zy^tl4`+X%G@P#9U^72ZmOAcW9@z*ziVei9=`t>5jO2kk~0#A<<3ohtA65$IZ>J}jUHix{5s{VEOoNn7cRut zW?wdk7LKTLIFlUCc_10izHU-uiI7?r!wO3$1@z96T!V$GMaMDfXh zK|S|4E>umOhMH)_mWll}gVc^e&cazS)QxVVbHZ`!T#)#?Qn}}Mi}xp!tWvV#-9;aE z(6%gger~-1LKnT^2%6q)Xda`qLgV^gdt$xSl9C>rZor3NC5vG`&HhzvB)Qqdgs);- z{6F0?WX#=+jsC6L<9|Z3c;=T#hn|*Re4v_Cpu@OCfCp8){Z@n9%^3^w8RCs7U*u?= zlxBnRw#CBP%;8aH(+4}5{vejg%gu*q0H^BAabmsvV4~1b1{F|yX*2Yt`Vj=(6yBvx z=yijN$pp;bvWgx>ZuEfwKcLCf3`(8@qRJymeWp0Yq4%V>#097w>wpAwdcMMLQa zcVTI3#yE)-1R0)RjAQL!+ZPHS+0vska+c)u~JBK7A8 zbA0FP5F79HJ)95Ti_!;aF4Ogz!!txH^hNh|JCe^=Qp5ALIY6Mq?_6NMH`qTYb$gM* zWBgaKZU1Yr|L(&fYwILnWo7I7pB4WD5b(?c4FctrY+D+x1LSSA1fs(XsRWW@qFzY; z=;1$3bLq);$fe5vTE-X4D2u1?Eu@F~BD2+T+7LHe_Yx04wzitce-gS$enEb&MkdaJ zJ~f;Ps8QP-i8#GO3gU*;(cF^zME-K>guPCYzSWw;dfc#=la^FC`x!W7v@?rg-`khF zAms4jY2>I5_a5XNGnIyx7CV%0?jo85_%#hwtg)Qc`!y-5ZSxYymC_Pg|) z2`|!mx!Qz3OD*)UgXfU5DZe$raic_ol)P4m)Jxle;dGH2^_5C`qYq-3alEi(zbtC| z3K6@`$rW%Y)E7iRd+`&0d_$KY;P)F=hIgDVEdrSQfhj}?Bw~iTs7w{~kMN1n6RMHO z407@DG{{KvijlNv%p4-3`i4;LKUYf;?{vWv-?%Y22b5>@UvVlV^6X_@0t#2$!PCJ{ z1`9}gfxj@9geC=7y08BVW7{SbD>DD8B-DScKRL{OIG zZTC-HoO#-Iy&YawZvpV`R)#W`;TF|w?~tHUsrS_dqJWhL-NZ;Hy$h2somdN+tGSZs z7nLHqukc-p->Ntn#7wX_lkYasQ??)WCY+Zh)hsTMLQXl+ooA2s5XbYvwNWONCU59f zCy%6X%!uMbSQbh&L1an7z1njl?+lP>hk^?|Zy@q650xDdS|?MMPr7uvQ_>2c}DH5Hq;TNl))B#_`wTQ!GCrE3~*l2Lvj0mRb{oOoHX4tc5Rb z$)d79jz@*3SH7u`Of%75?MbcURI%8ADzqKvV!TE+U4thMu)nMFt&2r5P>&HYX5()^Ma@dagy2{FM+<)p*qjDkK0}8Gbs1UEnFi+Oij>HEE}vDVY-IWQ5;%gT>-G za@lg=P;J}TF0^Bo$9B2f4ej~4L#Uf-vCFlq9nz&bHv}hGif9tYRIAWO+Jx@%S!*A1 z(r|1U`}(+*f8UKowl(%TXTbi$$M1OU=>WJk5V|w*YTPdvtH?~zSivO8^kiC3u7N(T zI4v^WeL|6X@EduK_zwl1RKG{Wns{$<0w}(?AvOox1K?i;RS1-4OS*dKZqhr4gl`ty ziQD~)K&V8MlFZ$A5Pyy2dc7{ouS$acOC|puBck}5O8#pFmH&~7{f$OS3JOF7nGgQC z2E<4Oo-YEJ@X0^`Q5?zZrwy60Ui;daECk;e7&9qpdfJoG?pG={MoLJ7W#B8ltBJ!@ z=iz#Ld-tc;E1(_*-MqLVZ7}lh`?|P3B5KW=dGX!aU^3J!P4&7Os~rrX?o%#pi7i8P znrDGY-pY2D5xMh(uE#(^p>)rzYC`!1NxvGCg!k3Ar=oQxt@=+XyK(BF!AF-~J1S zM~u0!#v}CdNM#E*EGcwv{TeBDSg8|}A|q74#xE!?ux)QemAPp8GmB2M@WkK1Zu)S< zm`lJ;H`Y*Da;b$%gHa^K-h$R>A1xkU$Kvgflcml_(}z`_cz|LUF`*B{1t&vi8HVY1MZS>>l()#<1duLG+7r{{F;Y8ao(DgmdYwRS z7>zVe`|CF)jtChm(chHQ*g(@?7#oV)SYKY?%`CeXBA`JX3=n(2n9nH3<#YqxW4`3N z{7mbw2`3_bK#CC+JSESxiik3BxS(1gTfN%`t@QrQ7|2kM31EZC*-sPY8rPk3SP{*Q zE7cXvh4B1ccnYEQ5v^icJma`>YToh&S`qkb-B?J*q|R7sODKfjuD3Me zzCQw!Nc&gTIGXmHd_?J`IBwiVm&+hkDrG?)WWTa&UjK!hI^Nnywc#1;o<4PJcV-91 zT6u>6$_LP&{tn?Tfein`KhOTFrt0r7(0}&#zr>Fe{xd*n8ed*hUf|lN8!d@8)gv%M zwQQh3ou~lsjkUp0V`YkYo?=(`_AkdDHY%|-H8{6t8(e-H~0*`oT9fBw% zS3^2j5fzrxow12^vS>7*R79CE37BIE%SstD8~=@RQvX z=It_tjvrmLlW$}+dCzQxN6s0ymMZDbd!TL4N!!`%4n0Q%yzf{pf&L4a`DrU8Z2@Il zDpOS8BIZ^2s(6)p<9r4(hmZ}FlaRZhvyi+{DzHG;MAF;pz5MAWAVS(ss9s#l?B%00 z1RJ)d`3Owl|>e;ZL1Ds`uBIzvS54 zhjWKYUk&T@m67-V4ch;m9Q&UQ`+tV36sl>sB8wn@P(lfX1n|q_M+8(P!lNt8;}Z}Q zTQO?j69^y|G962&PdE){;i5izZ#{Z1w?K{cI(l6_?FW7isl|$Qs+gz$kf2N6Ie3tM zeD7*ssPruVczayl0?+rWv?0*66B^HAhPF<7~XZmmRpE-V~i=ja)O>7xTemE z+;i`MAC7dBDCwdepc3q$9I*V7^bcSOc2Epx33kv7a0zx$4R{K6&<%hIdXW!^33_4o zlQDQ<_M1XGu0qe-tzwiR$p}HSd|xV=lFw$8?re_3nmre=CYG|rR8-X*hc#~^_-LoI z%&;e#t|2h~^-7Ne)cwoH~s8l8C$G*QlEw^cdZiomb!l4-pa6G z8(u_=5c$l!jk;2%G;x)J=EvfMw8IFaXn33qqg6T%l+Ze3?C-k3r63!|Gf3Cn1cNX* zEK`vl`enxUAsQkXj1>$UFHM>OC$|Tw9md!1DaU3FT`oosJd-tN#TZLv$o!TIl#?|> z^u9f_b4Wa^1=KC*yu|^H6E>5x=$ifBXp#grY!rbQC)AE|s?*0s{WG{Wi;GYU>x@|3 zLQz(Sq?z^5)(9!Vs$m-@&J9s+*_8(l={Oj*tbyla%wqN3D|lrb&9lRY%I zeiGgFZ7vb4#-=UD<7EU7iS-3>jhT!$vPRZWg%OtR=+yNah8eSBMD;X{lv6GcnkMbb z4xIHGrw#Nt@#o`ZD5jpI!B)ZEMVqFN>MnQqH_SrX;I_6*==<;|Kb@e*7wY1LjuH$8 zg-SB~a+et4P7R^C`e+hm!xW4ws4oTHrJdZro-_XSoN-U_an!q!n-ooyR96Vilt+e* zCfa0GVRv2C%9ajO#gUoVv~(OEjsn%e+|(S5wkqPKuJ}ZcRrBZ!4*$pl1Yzv50LqDe zu>xv6DYvUI6u7l<+~EruRZg^vF40{?zxV ziy4t6(sjbMW^+M zFgk*vHzd0cb5HOVhHB1jsq@qtUcbWy1^B7d-jJuDi6|Vzt0I_}Pk=Te6fSCDq(!@o z3h_|PrLy>UIZ47=*wBiFowH&Ja(vgxX^8Eg>)@Ie`wxzYAIdH{DB; zd&8f*Sqc|3pH?n)TuF}kIx-DSUidW<{FJB9gRnyhan3GAT9J}o!c_`3{U#p!-5;AM zAut9?5&{!iI*#@yDvqI76FS_;)NBt8D{NCuVh5vk)8wGeB;6qeE_9Vz5U+ot&k=~l z(O%k>&~kZhEWv50PDu!^=oDP1I1CT?JlsZ32ruwBT&FtBMx+Gaor=X#V9PL^cO#|; zpB3L7BFi1_{`-v7;!L}__-jsTX|8MTcBqZAQ1ea_-U}wnolC}pkZyU1>~0jEM=K_$ zf4$GqDe}zSyAH)=|NG5z&*z^b6~JU6lE|0(iU#MueWCu&lCEfM@~^iBr8S!`w-C?i zKg7EzG!Vlg?s=7E26biH%4^V!(uUAY@Tc;whOydE)vp%@eq z1?4DJ%*m+3j2|5BAMb~UbO6;eO?ulJC@5B%ZZT-3zshp`t-o=Bx?oU741aCBEmW5b0J z_8I~MG*)ek9}eV=HO4#~t!s;e=-)WQ8+i7tN(vLg98Hk0#Rf)lEB*B{B43z1bu;*o zUTIK{p}e_AM5sYBLejls(<8LSqf!g~?&NymzMD?Iwa)XMS5uc%QRI4-dbz!~@Jf00 z%;Y9{XWO^MY;E2Q+jCdAXl=81n+z5Wdx0o}21XN< zbn>VS+xk;;7qsj(3&tIJfj&BC@K!HSa;*s5Rt}zjmL?^HJLfa1g^_iHY|bno^&wc= z{0HbclnCZU{CB}{D;VRl3PqFfyn6|j6a_FwI%8ue@uQ4eW7Ka&w*Ffk!+?oQxETxu26OnlDuXV*6v9#fZx6N|@- zjrNqN+fzI)*N2M<*RH?fewkk9=(1ix0V?`qOYPt{mA7e7xUWobto%P!w$Uh+54$=l z3Gp3vcJd@e=v3$7)bn%l^eQ1?)QkJDl~45mm&$9tu~e}v>|tkU#YVHoMv{U|E7f8g zmaharA#>{n2VWIQvR7(TE8E3GMuvkmmDU7hqm|exR1F${&?)PKbZh7JN&3*L-y!r?l!(fdobF5Dp&K zSRvJ}+{Q$Nv|ZZM)GprkFtIBQ*r2@IF^06khrw{qhkRep$MbAi85lf(w5b}VvWtWa zY)R(Q85N;JTWdMmGvGqwYH>>qcz^4Nh%9eK-!>=?2z*-~9Awef9v`%!4QXkKiR95f zJJ|K0-JBexM|*8?iw$5ScOw#1p=J-T8|CNbz+^|~iyOmc1{z&4(64ye9X>056^c&tydu z+)*G(W)%dK8vigO6x^_64L01lGeMl+tVQcx!-B&AcLeKWFr-JqVMtg$CPMI-XNHG6 ziSP7aoY*=TFPj?U)NsA#HmcYfd3fhHT4l}jo zZsOxkmpD1L<6dGzWk%G_wb{J$w}T|uE?95M-3BBolZsdD4#{o6Eoe78UlT6JR1-q9wvm_3HcVxwM7t3*C~I)Fz5;LubQU$EE+90ia2|>xyQwc~&p9Vm z`&Qd3*83CwB&08&fhSV}afZyqgtpm%s;NwH&)t}tImT|_$4*vS7B(Fd$`OHqP{|y{ zp0sDWS&Tjkb5)nQu$h{LEV4ooIl>|wW+&M04u167`+4xDLrfpPHKAJJ$cr)oS@WiS zOv$u<;KT5d*1!y0yu#_zV2sfhKE)D$(rz$RwLir!hdk?+9Upb5YnJC9w#qq}sriwv z#S1bqb(MyYaNlJ{C}Ze7;tarz6#+XmkBq+;`Xd?NGm{}D#luFXIB_RlI(=bmH9iWY zIE6;c;m||jW`G=%j-nV)uoFEc3;{)e#}S>5O&e1sfnJy z2JZQZ5Qj`^O5sFSd_sR0QK?uyXY_?$>2n%hT&^Csei9CA__AR(EXv;O-MnKP;{5`~ zp&Ju}woq2j(!2S?Z9kJK0onY0QY-0*{RZQ;nx6y%TiTkJ_^KgO@%NUW_MK-Er2EQ_ zBGedrcy}WSuC?W;egAg&a8_#0ZB>JZU3$KMpGfLNU4_XkuO+>S-7hG>jn*olVXl{Blem_IFt!5Y0Q}zt0{_M zNv|bP^=hL9u}U?uEDlW6ZKib!7w*nxqP$numn5ZURIMZCBPS&^fM1?~iFA_2Ge3k5 zBYS0Ix0{36ms`mtV#n-a1{Wrdy7^E=*UVw`pEUhQia%jlZY+C<@lK*dH-z9pW!wQ> zuWYq3zHsRTq&0T?nORr8Pmm$AS5-&mg39zbVWCNbaX=)}3SfO;&-(7vp{>JRE==7U zVPsoEuBsUwdX=vm(oi07-C&{P-@m!zF{Vr(g)-9ZT68n%BEst?J7E{nf3?c7rIYQg z)^1IDh^Ojd>U4Ll_zS^>JE?4jWV(*R`myXX>WFTlFNkLx8PCo$!+WVzuXwQ6HG16& zSjyptCLFbEhznMU1_$qZ;kw>zh!J^~1ZecRepia7yq9lVL}jS}Bzfk!9cy%9DyTw^ z(fnan6lgQQqQLil1ZWF%L81P4_Ofk2n0~iFvx@NQS~w8t@EJ$JIO*i1>w@PXm|9x}BM9YN85 zNiL+*B5iG(p;_krDnn$VUQT`X!#`I z<+m$nZ2AMU1J*atuC{$tFiTw7Z1e7l%+w6+6qo|ka>KjZKoNra{_!SR~PSB;<6_D3B2ds>446_?{s46-&_Il)rAE=?)bp_uwGIlMGDO{_eOoH{heCT~Z{GwpVy0ox?S|mrmet z%M-R2Zf>pJY*RE5iJJA=FB5B;RgISloEmGsGV+hmT!tA

q(l{)0T+zyscqA^92?D($zrB9afLSVFF-$8RLU|P>5n4FpDJ*jaY*`mD#ygb~ z;Y+nR-k~689I;HS90`{7vLV?ZGbx6Je-eE6rVmC0LYU+~>Q) zX98b#Cm%M_&YiiYMH;5{S=o0uE!vj)SuE@>{i_>{{z0X_$(FbVYTPPqG_Kbzz>#{5 zfvy8Qro-{o#l$!EHcVP~aO!D)^cXH`!od7jAVU!7HK}hrMN@Qgc9cd?yK>Qr#YJ;8 z)R`RAo9ouDC$1|y!UVyyQ%{pG0NP4lQFLy zD&g}FFvUkakM;`L9tCM^lL}-Wl)5QBvJP+YLftdBLOgU2fthiN(V)}ktHU{goRAib z<;6rZ!LVd_N~pZxaRJ~P;d%oFkKC`|z0z_nkjpkrw6n)dOpj*~`5z`S|T(W|m z#oG&?mCXg%VW2?0za!aw%r^T{io1b?a|o`OFkYb8Aw+v;^$6zOgClI~ruOGwDF_&I zctQIFmw2r=eCvJ&UQAQuaoYqE@z;IlaQ-Zy-z*Lzv|cID04>l^&dxrP<}bG$8z{5O zvtH<$HULQ$_7x3N-KoDi6)d1U+sWlLHeZN{hnq`G&Q1*u-gk<8Bg?6*KLysNH@;X$ ze}J;nt*XTqs`3^%8f?U7UtU>JLH*u}a>~i_n}ftR@Fez^f`+s*EwzO4p+??K3r;eL zu(7!W<#HAYWs-{2<1BqWGr4~$yuOYa?eG*nQH1imU!W$G4 z1@V2Wx$nH*S0M#4K_s6k=juSlAD6qb92&-~Pot}wN> zwY0y@qpD*1@-8|<6!x?tCcT<@)2DvAFTd-n!IA>Ci1aG{kDU^lA=Lk zK|Rl9ji1$+*p*eNdxG!nl~OP-t1F2|NbOSiLhS_i%GFM~Qzw|~s?J@tiL42y8@jjq z=#iF_F1FwxSeZw<6NG#ZPu>6xNIljEin@5h1A&F0Sx%N)+*qViJNsxu;Ne>JlfonZ zuOEbr0?p(S9-wK6x=4Jf%QBJZ@Wn7pEukNx*Uj6_g^~9PmIyKRHRkM4sfjv=tE(+Se7@R5^HNrQY>T6fFr?qkId< zdq86bz`ob<#}l8p90NSQ@IW}>WTO}l3Oc7mFC(v(#$9zYe6^W4>sX%LzGKP69)7=(GG(-wO4OQ$IC=Byf>j+}~X0ASfa28^4Mz z@^lNfTzWCflIy`O{%AD$MBB;U&p|fpFS~18$_T+hs#y+Z1=+g=daEBepCS`8sNs@m zhiKV^sObeF&tvK3f%{a1yx2gZ*QQvfcv@DpE4b*A+#%gD{f((YC8#E~8D`bnr7E)B zH4M=_2>MulWsB(AiM{SIL^1%;(hE_s33{gSzX>;x@YA7AV9Bj5Oi0GHGAw z!p^n~`4Rms^zO{ua3K{d|FIRF2*`a7LD&`S##k&4!4+Sw$5)c+exx=d)wQ*Y77*D9 zDBaXBH{X~*C|MAf0?J$&^0}}s?v*O|%|K&hR+0cO^fMtYRbqsLc~QFKo2;9o)fKMe z5R_WPBZq0nPpZEBlvbnb?j7HO+r!Vl0!W(^QfR{A0RY~G{!g^*-$Nb#PR;lqn+uZ@ z{&LZTY|-F-*=XdyY&6{9;%9?cX41@An9T8ZSE^%0v`JOw%>#G`0&=2o9{|2d_K?v8 z1Mp}1CZ?Rz6YYura70DCQzxv9=p&)vXmK`S%+c&XI8ViuEVV(8O8q*77EyBRz=`o# zzf|W*Wi(b=O<8O7LKw7XEX5V>k!LErL>GF74-&F@$|4dI)n(_F@37T&eoAa>Oxo>Q zHX4b@!D+ilD*o|E+*@b;QG!le28A^!)Aq+iGnvj&GnBHUnPs?s2fD7hpo1s($;kYd ziDq=B`MEL7DcM9MTiEbMoS@Q>EcW{u12&Djen>xwGW|m8vgB)m4s*bc)peH%+UIbc zogXky=#iA4$Rkm?l2M%LzS2EgjT)!fNSusZ0!BsLq#RV7NDOy=3w(bx`clHQqmfI< zg3qW5vSFQw22Hx1wr^F@k`Ov%I_2NLfue_7gC$h>y`xM;Yf2W~WvC((iKOOOmZ$Y?Cw zYLF4zeSemC{*A~mE@zTn+pSg2XaVO;Y@#9>1*;|=|ga%w?6 zL(03SStQ2h8OJs!Lh~D{RRWDCP`?j^uVXClV1b+gy~DRMO65enK~860W6@tXIz70h z^xN_cEM|tm2KneY9c97kX77Z2y>3qeE+53z`rZN;vkmcbo*SmO$$lx%zA$KeMCe?8iiRYq<3W3% zA{uX?T*(|>5qXHD&@Sr)6?$|o2W;h!{Os9KRSV@txOYDv<;7o(kv-~hV{;Q{Zc`IK z>K`uo_|-Q9ZW7uk0X z*RNZ)oMH24?%TDX-8K4hvK?*tH_gC&huq4sDIAw`e#U({t}j7x47AN#x>oQq8im~kw6fwnL9H)X+>gc_ z6DGulY2zE2LY&vDj>Piz&R7b;FWr&DXNvEO+6Y&r%GnK7>YbQN9>gUy3Q91_HHz#W zvvbOUJG2xt@n3}-&K@4Yvd|KzH5TEBnQfazVmUh-Z8iusa*iK1$ibVd=6K99!p>Ee>5os=d)LJPd+;x)I;=IGI~HMbg)Gp05WILC56E91)_D z(h0d_ish2%;&hw31AjFVFt_sxPw8M0+D;#a&YZh@hxMr~>W7>WLf4_}m+FRd%E(un zd;C5=N4%K-b~eECwIb9nf|#v{a8y<)em_-dHt2+mXjGwijN=52$!SEYz{WT5;UGa& zfaGw2orzX_h=F?o_;7AJSo$ho+Kv}SX9}2Z+a6S1E->390F8+ZZBCC0sY5u*z>Wvd zvUQrm=p9nAUASsnB4E9!q9fg4@&iyv$m1rYZ+eI&HC1bXl7`rnSLuHG^Dn{5xkTfN z-&bF={)@l;-^b10N$b?Dt(0vojcxvwV)@?_ryx4oynLyt?Y8z z-JGkS)}0?W;B#M4073f+&?m|5mcJlOBn0Dv$8oClamwqD1fG4U2^8cf$w*1LS&11V zIj$>6|5Ohgwc*8dpBrsdPrcXj6={e>Do<$W4usIxRqpI4O24}?Y8^M;emXnB-dWGH zFKVL}JjCk^zK-FFY#rmeNA?C=IqwG!BlgEGcOwmgsDVX>Zu`_sHq>Q+SUfoQiA1BY zQPH=v#?^7LnX{QF95O13=2bS}?=SZB2;N-&Cy^w7X3%o3fs`1aNXP}>i=o;3VAqYC z-KR{Ujp!Kddz2ubNNiG4zIc)PAY>-V*h`!lpynY;#k{xwo$wFf=qX5hf0en@0U9M> zW=2*5WBh1DHPP|_iwpAt4*4T)A&<8vsvzp6bEBQ z6~yJ0B|F4tj?|2POV+Y&+t1x!_FNL!bq)5phh4UUP{P_^hK$@O5 zL3#=G3XCz(w?f0B-~r$NQ8-Hlf;b83a+?r8HH_{m&e(hgkZ6D)=S1tN1YTY zoW8!-6_;$#DL1^}P_ouowdQT|D!GX+=K?V{ZbqToY(Q-7GWt#T+5MDEfCbNtrrgKZ@Ej^-bE_ zkRivXA)l9U{34?qr+M04Z%-ea@c=Hiok25Ol0`wAxfsGrWp8ApEJcUEBIR4i!0OHG zzEbJtula|CKuOU(q|z?(|O zkfmTQ)`6?KeH|jI_O;f(ANUgu*D67=WpMUa1gzb#okY{N zK&?MgGk!@>iiJFLo8Aa1JCtV(DLB=FCi;v^-bq3sP)sgHP(^tQ>>@=Y zBEv+;&iSG-V;0WJ@NH`&N8{cBjU|-aJ?H%3O;1caZII1>)Z1Y~y!j=NaM6Zi262`{ zD44p0AEJDRKeY#R&?4R>>X>?jF?7KG3OzaEw#TJ- zY4lJ%!^e7CxUe2KW-M%PU-fRLMvs{9zAq&~Lp-E>T*=Oys} zcAozmf!#mfX*CCZJG=kAy(~Iz^3OiHU^#swBVm5{eS{|oYKRMF(xH)vl5o&v<01@5 zAt_Fg?D1d*`<-u3@FiX{oWJR~`z^GEB%qc*L4DC!+S(Aj46;Aj_ zhMBI(C07O&AV8j=GkxbV%6|MH6C8dsVN4{b%>P`YRUAHUM`2B#MYYduwC|(H$GAD4 zLig6J0Sm!tTcn1d$(~cHA?yTn7TP}o5O_qXSo0LP_|b;_a72@cMUJ4KeP>+e_ghpZ zk+G(VQrOti=Qr2WUk4t5S~GE`uNk}d_4_~ftN));fPaP*{KsS+RC{&AQbYNuqP8S* zKP8RXBU~?#uo|u-7AvsEFBJ;dV-N3*$t1TwNt&xFj4pJ$*K2f9%<>oXzY0;zIZ)7H zuua$%Q=H!wlrVYn*H7D--iFKRcVa)hupn8hGjbif3cT3t^qfBB+TwUTss8euQ2K>l zrvebB-4Q_thC;(>fV2Xf#6Rx!)4Lbu^g#AZW4)&-(&P9=jDl(pp@7I)_lY5UC9(NZ z^Y;&bJL(~Gdm@HY)95V*dScFk-DY~C?&j^UpT1t6el@2@@#>AmX&J)oF4>j>JnKuv zx0L(l%5?Q1@^kT0>aC}Kr2(0ycxno`B!8;%W7N0!5oH1?4CeS-*orZgQd;JO zfr%@Ad?4W%qEqj9bfp&Qp$TEK&WUM_XnWkUD60{elXAoygo>3nnKhveBa+O)JrkHa z*xp}Vh3HyXa@tJHy4PQN6TkMg(TLHy&{1RZi0uyg$JwNbW6F>ei2r0@YJ)iqt8roU zie8&ud=Ot&)`-PYQYn;E)zcS^+5IL@m_j@r)0fqcJ)P^sYK?>H#@T>?zl8Dz8hC+; za`kn}-v8_jJg)Gupk%80Y1(KXsG1Jy2r-GiIKkY_6{$m&OuN9pZ12UH?i2ElLN!$a3m<)O@5LXWZn8Np>y@ zBqzyLW89>g(75ctZpx1-*@e12Bibsm71j29cbZa_n(lZ1hys33l_9)DaXZv{O;JS; zm6;%gys+8!Eli*SLR&Bjd6Mk$otzkn5B1i!9NtQ-!WrO)<%QZZ9tn2tHqxu@A>-1A zNE>-!j9(UyRR=-{kfy~}K~`Q$eLCa|w8;(%0krutCv~Wtf|kj43JFc|!r!EzjgW?r zA1kZU6{l2brBblti$^iu^LiTZ(Rx4IC@7w?0)y|U;iqMOK)k!9w-0-lW1Z+cXbl2- z=?>})D0e`;DszX0f)7!GC^*Or!d(f0(3L$Q_*Bf17l4t zw1hiC>L^}&PEe*PF~owPG~3AzT4!}ei5SSBAjt-2ur+$=u&KNOR+qS;_*THi^)t%C z9vM0S@6Q&q*=02f>zcthf33F%7`=nbKINS3_k zk0$B(@Wi(NPG$M9SnW3+B_BDd=@MzJ?Xz6Klzmav30g>lPT3y%Z~)yOQc!#vz~5O> zGxm6-0x|>&5u;zvCNX^G51CoV$$K%2g->I1mdPSdg8_#;HXyjDPbp~+t1&hC*{eCc zf=R~t1z=<0a&p?0eTH`>_J8w!AB-Sp=>Y22sky!c=V5KB(*w^@`9v>M**SUT5a}lq z)TK<7m1mv~Ql-=;YD=ccIoS%h(Hh`%oL3Gq*>`A^qI%7TqEbDCy@6U57XXD4o2cTOp(>7s!8;c99d7afuXNnW0KB7y zx9USzF*NgTm=_2x?crg3&*dTruYD$LVAT=Nx0j>*k@Y+d^z|-vQv1W9$kQ+?d=202 z3pM6N!q&q$q4JBzG&ZKBuEwM_vxi;QvQ1niC&nahgufUa=WGysz)_xh-@av#L6||> zo7@bRSo8eDY&30f{!!v=p&j%)^0$df3tv8kI%(|4W+?*}Ir7Iy1AKiAX^?mbr%KwrGV%#HNW{b5PqWEhAhlylW8eTeGf6 zYXLmp%tHw$TpA`fo)^T6_87Yvv7epy)q3OVIJV)j?uF8CsG9@>+yTT)frn;~T+6lX zDi^ZXtM5Vrc$E!SBU3tSvWFgLz^9jbjx%T#bd092GHj#8VLAADuVE*XLAS7du5bj{ z`A*pQn79OlI>ZG`LHG4RH@8V6Xb{I3g3q=|9lnY$AODNAw*ZQ3&ANsY0>K)05AM*o zySux)JHa7n6A123aCdk2;0f;TZbARPcV@o%-uY+l)K@QXs=A6g&7pelXWQCqMWVEa z&E~$hFe{WtUE{f6)aH}(g8gkgVd?hKX#!__VhcY$%RG;BvZVmW;wP;|#ciR1waN90?@n3)a_VITC!niDm3S`ybKC;tv-je&9#L?{vCtoFnv^N^c|O{uPwe0nu>94#n*9My zB>Veo)4!)G|AZ@csO$Wp#QthdPxliJN^Af=*IyW34_UP3>#*3s_qd-I8$lzk?sT+Z z*nzu^2kWKA1GLXHv=nPGlDNT((jd!hxS9<$Z%QGHh55uOPjc$Z-OH@SJGAEIaCO}% z(kLf1H2P-LA+pNS%_SpQBkjx|DJg7DtNr*QF7=zBmpnjFnO{s3`%7eXJ$1R@-b>(a zvnPspZ;g8XX(E1&GL;t#8OyOW2g&9<0{pLSomPSi;Q(kG-f+=RHkVhxT4(Zk7g0kq zyDq9D+8;}Jx!qW!5KFI9+#HJYE`4#8^xkh0co?0L3)UjtzRn9i_@D9|pE(!zjUp^CB}FV_Q;b1H@BIs_$^v zYPY{qqBEdzVE+*7iphiOoA3Em^o-NQ%W$pE4yT*CPHTe!sbwTl$@oND`bsV~i;E<@ zd7^~ITCzf&=*{J*A}uhJVbp?4#(1#u77`q@BoHf42*50%O5&?p)nsF0#=r7OJ} zy(2&=2srfZHs_3sZ0_)k#-bG?G+3(@Q_4=zK=Tr+SQpCd;~&381%c z8C^70qcl^ULzUc+gs^Ltda29ijoo6LeCquQJ)OKyfr+ZwuM9EPY_{bF;a(lrt#!jJ zOVnP4BYp&=|1Ys!2Nz;5LGB_w~=1hYg+tJ zPKE=_cEk5b&Rr;41V-Ade<~QhEieD7n*7q(GiCh5yj7W>oLly|=M&>CJwm*EP$0pB z2p>&LU!1xuZqMeISL*CCisLPYxgOvvI4k37mprm} zBa!k^pQJHUnpUAT-EFG2!dJcXraOO{gdi{9A>wY(DXUYCVS`58QSOOdqp|u}2gJz` zgB5-x(sjoi^j`O;zPTf85Uv~uSO{a5c7PobMFwIMI~92YXwjRb6eY&7E-bHNv)R0` zEcrS7cAf9cp$E!Q!;2^C2RRnMFu6{zNU75LDiGwggw|(>-2XYi>G!7M(ghcMe*c36 z>0b+s|AJTlzdZSGtfAxTIxfqi=&$OHdHw1$WCd6*b{WlNZm2EDaCXu;at;CYu+90w zPukk}Y_&VFJMu(47nCWR1m;voz*+f1R}gj8GZmwlWfJQ*2mLLeVmwQosodD1aquU(^DpGh6>MsI_I+0aWovduP=lrBMaT zh|Km{7?uCBYe6VEG*-)otCAj~&ic39w3OAn(XSuIh+}pPI@wrA+&kz z$TXPB>ol3TON{lcGj1gO-x)Bo(}g0c_hMNm+2Mi->43Ty}bpu%fVqDN@0m80QGzmHih>m znFlTuFk7xrx=}N(lg%-W14T<(hsQFi+^sq^hQ7LoTU*Q_~TSS))Z2B+$WxZVB!IGrSzz7pvIVY~&GoQbKAR!y{Rca-@rC2ObI z)_#kn>u_{VBe51ttrG6~*0`L(eIKJXiUWA{^P^gAzJ!FP?}&6h^maS_P=r3DRH44h z37CU~h&h6O*t>}|AT$yWFp zUY-X#4jH_J#6(pw`RL2rYV9A3e=*6%xVPkPk=nH6T8oG0|0I+oA$|M${_(vS4p;Vs zMI)0UA<;8zi*g#oTSV*(U-i`ofK@ZGQ9gP^pXfVuPKozJRHj*ha!Q|IcWqCq5eg(X zM&YDU>QYn`!&5?~I(JF~(cpYg95&>x+60eT>wPdCN-$PiZoc51lf`uP#e^$TO`j(=%ALdQ@#B^q+&a?+bxnEK`N~eXj+=kZJ^83MnKV_YRgqjOwkmm^I*fn ziig?y*UN9MP77V#={v_zjL*n`{4Kj0`;e$Mg)o-BVqA0rD%zMj43xK_ z+P^D{@W{Yin-XT^9b4&H+}|4Th3%D>Ju$(9<0+OyYgbTghq3hInjDQ9~ zUzYgT=foC8eF^U!x_v$Z$fKdTH~}CHq_Ioct`CKSE+fER(ks2CQ}(ksagk~kmEHR3 z37qP%_dXPRy4Yj2gQ=p(;#wE43jfq*wMn`_ThW6**=aXIUJm3vVI774oxG?yCfSlw8cq`%C zDIG;Zx&y>S$Q$*tRi~(l6fI!}qJ!%YZPf&WDZE5N&AAjP*9M z!U33`N+ZJqCPFk|uRS(q`=IG=DJ|Iu!Gml&xl`TbfiR|CYjlGv9 zHiVId>4!os?}Yfw*cB)kcb%f=in{k%CaFSd&Qx}O%f2TdC5H$em}!$F`Vp3sY;npQ?Qn%n(`#Tnj4`JtXJTO}|{t-wON?Jbf6TB}Cp= z3M%z|s3sDRnl-{DG?wWZ5w|PbMCqKmC@9}4A*C51yPxgCSO=n=z27_9D__Qemd_8| zG;w867!8FkR%*Xx>kM2rU*XV0QB9JG%%J38Mv$n<%GQtBbf2+=55AW@H0>-J_@qWxmR*DHHP64l59`Ei<4m|}hp=^Z~=>4qAjf)K2@o`;FbU z+WEP|K|0(Wq>RTd603J3S@!c|!l8sw-zH_?`tpidz4M89N}8);qR1t<7uE2xX3k0mv?jrIFiZLRq9rs~q= z^^FfsdE~qu(gNZ=emDvkgkr5Q0C}?nonWzJ2VluRUdn%>7moGQ?6$M#K)A%7%dIB# z2#h1?HBxiK@XIN$8!HGIR}rKVCKeQT>hG_!%BYmqs9`VW8bz?;B?%Lt9^!8LMP$aC zI_TEWczT5N<&Xas(m&oL6?_hlg0Fv$A^sJ2!THxG_21zZV9gj8Gb3YLvp>{hT>dd1 z8qk9ELH~vG)}@;+s}BJQ;S96+W6$_~35L)o|EUFJOVnIJ8y+c;>ByOED>Q|FBNb+U zpk{^LshPr3t~zbt^xTrj^2}2wlK0Y6r|mDl^Kn!6x+gbx3c2HGgU-zRy|!qM^(W4^ zlfGyO&5Wq`$l!L`GIr%|mfg+HLq4>E95&J+d}RC`;4cW?chau;DfHdj?GVB6 zeWB`(hV)SOCxX8~d+$fnJqh{H@~#VcgZjN6b$1oyL&Li+l#M2cXL z9Jt(7fLw)oJ|ocZR$}{u_$T8#txbQzNT}BB9>ppYSl62yJR{$r4()NpS_;dLCN?-p zzxkBrJ~N@))q5d;q$-4FEx(1fMM@T}5#(l;s+UP1eLjr+uE~=wR`Y6@0BJu@szln` zts^`8)fR9#T`crOi?QV$iagoR9T=vkAWr1?C9a z0CDp;W{1>gE;cOL^wL0WgB5-@Vj#Evo2-C}$M2?leFi=cv}%QB_A@5jA`+bj6OI%`6?bj_8(KJ5~Klah`vXwE{TLosMCE$ zd~x$4h-<;#RFPFTQ%PSjh<+Rshp}xE;`SwWGA1n=&$tXv-7EE+{HRby{fzGg#ao-y zKvBx>Pyw3{Th*Xi$ZV|>BqHvxRxDKx8@+^G$qc5;E$2e71v6LehH0aI1|w=mwEgB9 zQwJM|)oJ72>XN!ME+(}U_)!x=KzLOuKNFF{2r)kU<)VY~Q7*p=e(jbWGfB9Q&%7N1a);5?73-Z=YI@ z!|pXN&Mrp0dIE2Iyk>Lr71O$cl7kjocaPix{lFmDL*y5X2M1|IpAt~>yvFLfQbe2RNG~*EZpoWFJSEX_iPlVWOP(?c z(bd_u&uwBfWe~{bIbs_ndSj%d%db9xV?pj}w^JUd=FARznjvSd;!_@8S0cM@i(7VA zbC@xXoQ~zluJSywWy_wvZGz>@o;<#3nT8bOMy}j%My%T6^bf)p!QT67 zLL>pHga{vmPaMn@xG?6#raw`G$9P*~2B2-9%sqI_%3{BvcgyAgB$_zf0O0i$S-*&(c3gUn(CX=BiX#Tpo`H+$Cr0RZ2}C)KiL(k(Ev^y3I!3rCM?nyXh81vNaR?4cR-HY8R529xT%sBO6;(x z!Cb|2a?R7p8_iV)rrHF%E(%=^?t7jih3q;$2lahkqCr2u63Gyhuo}%&-Ng?jIrym; z0*&40jquK_ZXZSEvb2HRcu;mnoJDhHNRppvk+40#uO&7aXWerTA5Q+hl_cKheQdIIhSTV@l_MKkML6vlU`Mad4Yja!T2NG>N@%Jwu>K|PUZxN7kH~h3Q zzK0l+!@)i(1#>6l5Nb?Ww?;-{~MB6ibu zgd)4Uc_)=EU_Fu8+2Lf zj7o;63wh`0?lg0F1?e=c6p|8YaceB8rATM#Y-ulf>6D}xU?f?)vh;U6WqqteEj{#j z-hp6cLy8qg&*UVJcWKGl&RDp43HU^spFeWExQ z-Yg`|8G%=qQm<$$vrlEEz-I@^k}zZCtgKU z@H{^40WIx8Dt=x{&c5$d3!+{X<-4G{zdTxdI^?>@u{X6~QQgObTf_KtsSSdtZZmm2 zH4;^ekG{wR*pVvXiJeh^1VF{87DZ*ZKjP{$0xt&uc6 z)Ghpq5>alxs-nS3)FXGhn%Il5`%mZ#c8pu{v*OSTH;h{v_n%JEU!ZOa&WcG@HQ|na zofXs5NI~7=y8k4mF^9S}J1Y)y1yB{wx8`-GAtFQFa=ZU*J3LTQta2BUtLUW;yX9{; zc=dayLwrURq5UNA9b@UspXt5`620;f z#ArOk#Ow>8Fj1<+OhiACA;hRMJ+QAvoeH_1J|O-veq>GCxDO$fNny{3Y+5L~!(fv!Kc8$nPA?yi<8)78bBl^}1xs*bLg zFf-YlozCzs+&%9mlO@BwFR>jcEQ3^LFiYhwkk3f6ZAUdSR}D3bF?{g4B26pbm&L~2! zg8E_L9oWj=CfLqzZ7pOL1@u2$u{nP>{Dfd zWVB;+)RRCRE2JgU7+5Yg2FXH;GXYqgIN;lQZ*atQ-uIT{N&GaQh_XmoC1n>=DV_h} z{%|8@RvyVO9vPh;9=>U%6X~#gMYpchvD;bMTmJ5pZ5oM2dVi z8<|VgmD0t30n7D8@ILgT2SXhWPxHOh)j##_szH<=#j6t}2=8506Uz4#Sz`KX z0{~~o9^XyG4wIrnxe1vpqfApOp^awYLWUGx3U?hxc9$EgvnbOMK2w?T{!jSlC4>4=TC~=7lp@dSJa*wAN@7%acXq}NU_C_D;eE#)kT75(i-Lw&ceR3pE8OdK0_62_Z3eCGt zG!6=&%Jmh=ntb*eg_pRkkFV+*GEOw!s}I2y)?LB9K-b=muZW-9u(~gh{1`-7uo>m; zrq$W4yDUQkWv0)gjT)5+IEPjWPsxKuR8=bm^^rpw7u+yvR1PyLiuq+DjMhZKI|v1| zvl&=c#^~fAVdhv4JF(WVAx$+y8vsiX18U#VmmiurRV)dwQ(eoPsO(N1j%J%uoCrna z+yrZ6;z`O35^Q#rXjW1E=MQ2}NkcpY%qF0$J(vR;VG%7S=}C9x8Zl-Wn}~A2yk(Od zA+A*398?+omw>wfR)p;v#+mewVrJ9~3QTDEdgq?;?eF_}LM9H{!gO2|8SiJ zUTS!AuHcoa|A;M6jrC&{+K@`8_)NcjZo&A&mX*j70>XLql44`tvqe zTM7+u>8SRZlor4?>!uB4B}b5<+hd{LY~Q1fXYI+aaB&IY0X-Y2&ov*5M;Ya7n$PM_ z?sA0eY1+7n%d~0JIHXh>S*aAf@J_{?!JLJg1l`EMhZ@mktZWdqm^%x1oN$90lD_J$ zNOQ3hGff+W-Rr`EKxSZo4?M5V;Cc4yjMyBT?YCCTXFP;H#am!8=*!{+PiqQ`X+YGM z`!&YvQp>*JaP<{MCjw&7>$S?tXo~h4o9t;Ma9krvuNo{8uu}_Wd*N(7Yh7fLqeX{% z3CS^jFy!U`-k~SSaC}VC_Z0Ph4_&s@1GF!i2ai__2)0b1Z7esG9$+=cw$}4ji7_fp zn`I!12!A?AB$zC14r+tj%ij}A9HDW~`MqP9q>Lx*j^kA+{Q0AU<_xd;KnLg0taRnu z#v$zQ^hwZ6|3D}&$DyG}5n3{?tmqn(tATUQH;soaAyoz~jR$6iyl?sqpRhZe375k1 zZe+d4jI8cw=0R??Yh+eoH-t;+xzL76jnE3LjnL=w#)8llLO&&0DiDe#Sa7Lt>1XPb zdL8jH1(o8=uwTBCo5qiHDJI;cMT@&{BFquyPJGZZ#>&cu!57lv^FNoM)9gZevnZ}H z^bb~mArR6_l&=wC^>Fkb%rsdy{(!2%;ZqMfuyZI_va4@Ii$m;(U8TxNBf+QS+^6N- zx8ht4z9JlHxNvK%{~p?pt4w`^vN*OuITjBqYVu^sEy~g-Z$|TZhlVLb6-Jc?auh?p z$X77}@b)L9-A-pl_8l1EQ2UoVV}k#WG2`!UCT?Wn>hMo*TLx>TBJ;&VvIj$L(R@c` z{2n(Z4T8~cPCzogH13C{qw`ItGr0;dGTsqvT&Ql@ZkvDK&b<63B^Gs3~pi+O0(ItR1MTh4EH zU?Z5+hikS8=|}KyHDt1oWe?Lj==iS3{El!vq*ZQfG$Yg=WC*K&A@~4$5@&Ozxy5vY z^6=?>G^%BkVKnMK6575~I-=ONJa-}|r{H5|b8y?2KaKm~;Y!>A97CA?GKL8JH{%v@ zuyZtWwK4{8;ktVMBQ5%uNOCOy2M!Nhr7Y^%W3+D~lrPwaK)uHZ4|JA-fkL&pxN>ME zFfwb?X;OiY&Q-_>6PyzLk_KMnsFR_FgAH8#@gtRG|H{{5;sji#biT(PC=Zv<*PaS+ z1>!iFs;=}1;s-gUz=5`~=Nz#};l$M}C9Nb4Wyxom5bhlfdOkpH!%<)-%&){{bqxSx zuAkXvu@Ki?=YNnS>)I!VaOq$*??tV@qdJ zJ9s4$vu|TSiFi-A4LCQbBEPceJ4(h6dt$n)w>UsQwK7x8pTdc-%hqjHXq4jh-mJ1! znPL`b6)#2A>$wclCbrbWH=2x9Y&*8m8#q!UB4)*CC_MnsN>=b*qtX#6PdpEo&$QWn znR8kl*agLx-`&L^D6ObM7 zl|Tduxe{Q-{F;uu=AOv;MqCRlGgKZDnc`!o|G}S`Ui1xNp0{t~(#s(UzmCRk$cF*n zV*1wljF~Y^I#nl76X#etiBh&sy$oSaT=>3CM5J%;TY>JHHWoR*qhM~Xq4W?dp-Nw- zWUUe_!Mvkh4;q2g4`9TbJ0s8)U)`(VLR>SB*fR~${A*$0*(s-&iYm)x<0t`*(0%rO zGZA09-#`pk9~#$OdF1okba^P_hG|qJ^mO{8#`@;Rmr!mY-)ITUGSv;`VemU@b z;`k$7gUVMUeg(Ull6P6`HFu& z@&7%ggm=Dmicq|8(U7DW|3N)H{zFAlicX5Igicaz_y_&4)VSRE2WOV+>zhBjCLBx^ zS2W;1{>Syt2l&^qAqV)k|F$?3F#=PVn*Pgi^gkjlST5HAjS1OzZPji0w2(faaSGGY z|GN(irlr}1`< zyXS}Br#$|?s-(dSdV?hP+Ad>h%V0em{jbtrd5F)LgQ>IAOe(NPPtjhZD5)nuN)1^i zB4lCC+x;?WUZ1%AG|jww4m-6EN(VDT=%XVVvCbDIpnlbr0YNACHZ=oVWORHAna#3T zcuU6n{QZFSQDo7Cv-EXbd}-%gKO(s7>RWa0R#?CCY3o zVx7^CiEpqzmTdi+eI3~3<%62y=q6B35puRnyjg8#pxbYqYd7-wK)^T`|JR(CtfJMb@l3EE>uxLh`uujy=yRPuHJjbKq<%HUq{5rGm4z|7@EJvax#_mY{2o1&z-}3mdq~g=aP0_qc%CwFEMI<&C3F1H&9?oC5cs;E ztIrJkdf0@|5@B3(2i;+s+C@L>k&|9hfVV|+LI{!apDc4da;k!H&og(Anh({DC|qscQiC-exVP? zKA0MM7@%SE1(dL_^;!Fg4)(szVbN7vy|J!4ukZ(X1`O$L+Lvke4X~vAGDuO&7;=^_ z`msnGQ8T)Re}FfKUrAia%FFQbrx^{+UgWHU&FJMX%}De=nUSaiSWC_FKbp~>YYR+d z;P1bc+7*d^wsD8viYh7+AfUu90|QCwznANZ7OVi0zm`0_BUZ{TT$XC9UbS<>f>421VrFAbG!8u z(n11VHtA;9PA{dcm+2=r`e1@ZaAM=cZKfplStT%%#E2<=9W7LtB}8qekuUVrg?~M^ zkkeR;Dc`Cy-~zC$-9WEE=-F}t4bgH`ivS~hZq&g~JWG=r^K(pj{f#Jj2S_;|?W(1w z%n<0=>whM>DMcZrWTa_n#uFS(zs|I*d&&A3>3CPl!kHoloiSPAw!&@lSXoW^8KWLi zLsfp$Bvm|8JST|J2RfrCvbwd{{N85-+a($%g|8_900YsR7@Io<;;=DTKmJo)7m4Q!^Bf#I4-(;M~o8m)@sQV zE8Nan*0LF=hQSP~M&?~V!ggTh^VqchJj%?i6X}mPp7`pii4d4PtVf+=Y+-lB`Y$9* z87=vDE`C`pmunfba%=;0ZP+5udD-ta!EC1L)cbFNh<>e8<1>U=^u)aepSbuhFn&&Plej}3#hQ#L+VO=8P?upDlN~;KEg)w9aOB=F%eDinq7}J zeAo0K*Br^iOS8l*Af0{02%e9Mvtj=-MDIPj;vFm#@;lq~8{gF27)6q!I+)ZsKEb>0@G4fjz93 z+pg|247ToRi}Y4+iGDzew1*GRN`pMh5Gb&yZRwt?TrLwU-WGfNRSp90+JiYFsd;H~ z{fF2`#WX#PO-2S)@G2wWdKRNhN{(YCQB#rOtSDti%Ytt~Gj`{KpW|KwZd_N?^%x~P z5E}BZQJXkKX=aQR*n5*Oy_(6NRS!4any?Zz=2I;ABKqpZJx=9?Rjp93K4VDs+LA`> z%6BctJqB5d*`_*B8Hmc|h_DdiT@St&wuAWflb_%-I#Ja_(Paso;+XluaVKj|wHhs-x0pa^P4*}jj>ZNpS}R9M-R(Kffs@~i8Y(oS?Zh+*9L$qFlV|e!-6{%Z<*j$ApK^$&F zv~j48W&Ov*kH?|Os`dB0ecG5Glblm}U+|@nuBbM10(S9dJWRWp71vnLrAP&A6^y8UL{UBP6E{V|u`79$+ zw;#%paoJ7@8#$a!#+r3UL(c?Fd}mFkd5S2;9lQ}a!9xmCi{ZAXE|k61f)-qR!!gS| zpG6s63y83bnSZ?CoSUuRY6~ktzY5sylm+3BbUOEUmK__v^v!9w(v{w1oqI5Un$;jV z8BPiqqR28F5G5=Ovs$3AH|psw4YMg$s@a}zRh{iFs-JxTfO^kKI_wGIDNU*5=#+zv zG_x$(k5K!rn}0{Lxuf%lyO0`K+t18cm|QVPnADrT_^LN;6RB`B?|wX+rZk5GXjKaf zMZ@_9#ktCvfa>eW?1+WFe9|cKgDmqA-}=x&uK3*>WGlGs8ge#2S+3ZxW=Lg)OF*fe zoyRu56s7rF`W7wDAja6^3oQGW_en%OSNW+$w|Hbl2cGc^X?rkjQq(q2Cmi|f%AnM- zsSx<76PPrDAPOh%15ar8&{nZhg{XXzLqNvMj77A;AIE7|(Zee%*g~uS(n9(F7Z&<= z`;42E?-fKI?1HLSE+c_><@0(cXDi8zjlzhG7AKB`iyAGn_*3{W?$mgv;>I*L3~56I zr>GzdRv(7%$BEy|-u&XJ&zq0Wd(NTQFpLBQRaw(&8^g)&&VUae%g{i=4G@H4B*vN@ zS0V-mET&}*3?h}}Pk}~bmm*F)IJd!G8y)@$xukl8t}R#FzBGF`@d^<#5;T*9qeYg? z=#6lET(wV2_G3CypeY-d@mp6q{H~(rv^7T!8Mf1iL7||W6PlielxyVrBftYo(+5JY zyAJh!tDkX5)F>BNs83d5d>S%}m;(fFWfs8mUD1}U!RX~GhN(?0KutA>x1s)oDf*ac zGiK9R3qoY`oYlP}z>%%*kfbSA7(4CP?iZDcZ`{tTN~}OueVkEOQgpec#RQz)#CZ4W zrkz{vfnTC@y}6d-fQ4=fvouEZnJtRi9q6mOsa6#DO{r}id)F#`Sfz+><&LiV2WMs{W*wni>4 zfBWPkRhE@!718yI5ag`JDs)u^AyF*f!>)N$14#QKqU5Rb%((L$iZ&MrE#p)20nag= z5B~fI2SMPrHP=}@NLvTQj%1O2GPYz>mHGU7eU0Tmv>^Q{uslkQzy`K_+Yc2F_;I9V z1bI0r>Bb#9H`O*wXt^#LvQJW9J9nx$ImCN-jO{A_x^cvY{7m|mkejWGh7UB*eySdU z)^@}uAH1oJ(Ppn%SYwlk<)L@-t9gGHd#ljyx30D-FnNUNTE)*irN(3)5r1xwET~!ub_0nak!9b8zguAgQ4-?4S zP}Y#S-$P74F;Q3N1xD`)lK$Pd#(;w5?l}5tGEaNOXLF#T=|yU9!RL_X^c>C_*BiW6 z^9*Yh$~k3=k97$JrT2X!Hw{GChRp|ttgC~P4oovncrNH&vw`Yao~`tdr{^x3YuI!WA6kl!@QyviXzr*{3}7o%a&nla#0@AxlIy?+n4 z`KOVKd6<|vy8er~Cno$UzzSMlTy?W*Lx;P{Q5AcC2wm;BfkiGV(w~AJlW^19cG}tq ze`;^n1Zn?*bp_qNDU3F75HgL&2u>bZW(yL8sm$XKQx{n#Jtui)U#{<;kltMn2cvY$ z!U+AivSg5*&VbV!I0c?R}?$66?mB}&)CRMR~$r@ zR1uh&Vh4U}H1U=JpoQ6wjPM54o^&>1Kh`#yRIt%Nl{H$SkJdBCe3r}0;IL-Te)<-! zQ7bigvba+;K^Q8q%vMo4Us*EbN-$YXu;fJ_yUOeqq37GAJm+a~TWX~J_)%e!%s>gY za~S9*k1OIZ!Sdr&E$`?UmzO4{OuO)9kloIqN~Z#AC-Jt?C_(C%B8v(mp1hI)qpemU zW&g0f(Kj8ZBl25S=A(i_PiNt7K>Yo9%%Qo@TIF(<&KTL`Rw>VT6JQpr9|*|iE$cX% z_8iv*)HJ6~(xFf$)P0NEWV5cn{cY^GS>IUze>X=)VMS(g^62%;Iap!GigTacy0F36 zCBVdDJ(WveGYABY+xyiLyPuqU@>+%^|7}~l)T4M4Zje>C?=wa;EAL?7l;m6Z>%<^V zA;V7&JxnJ*N^9mH?r)4)ceoq}Wys&pp@drC(M!;64hop0>o6p5-fjNWs8)T1&sSiL zpOP>^XO1MMs%H`PezIa;`5_+Rfs9hb>@}>P{d>k@P&u2p0EzfqM2%lC7Rgcx^Wam# z6~xf6COl3bas^X_BEJ96``}p#r^TYG#~aJ=sZsA@=9~ig8$mp7@Cu*hTxL28sdbo3{s*54U^N z>9E&OZ4zGYQ_Nk9;<}0r=1B?#3Y-LGWH5N0Tasy{oy26DCZTBCcD*F@Mkp)&kR92! zo4-fV#hQYHt-?_yAB8RYVP{)ss2ywNzW+o`L9M$H_`{WKc;{A5z^+vOKiby++JpV0 zL;L^l!Gc{$#L~ga#Oz;us6cf@8BGbDk1=zK?C{;7KQ6Km3bPeYf7mBPr(8Huu-sNs zy2NrED4&Od0KUmD|br z1VT~oLBAE#&cIy+_Jp`2;y!7!zY_)&lY*!dO8nMYT=*COC0%3OID`Y25(iY6`Iy^z zl7KgErc$;1O*H}$Ux09wt;dVr4>JI0GOfI2l#aI|A+vJJ7vcTnn8lm!DqgC+r|;Go!A|`0#yADyt7CC@k_SP%N8f;$(Ey%dPZ$8vNpLT z4i%bUFP@?*=7&C`YL%n6QnsEZGlE8`N=68|(P)$mC}ulpocmXrVY5*RTXIgdj+3-{ zpL3=c@e8HsZHfCBaE<~XvVMN+rM_IORmt}??6h992-u?WUV40b9 z`jH9WZj1<2TwYg{VD$PXaF99B3w+67eKdhW#^egydlP`s>2tQfLHH3EI$PDO|_gy-$N? zc0d`fByA37(55l|jcR>?5jcvwN*h-vvUMYw#m{ITZ}AQ~CjZIrxBQ{X!Q`lD=!5Ka zFfj=#zshhCtgqnEQe!zP42pe34AeZPj&VHwW*yVC3x8kpkH{NX(C6Yn|H6HpgRIwl z(Vx${yrLA3(?gz{I@yzcB4ke(nPo84Hj9i087RYCVT68R`a&`BWSg1#Zxk-Jl!wknx6l+EDNK6axph=FxL{rbHHG#fN&5R96VZT^k9O#Od7p&3|%2drh znk-z|Qc^yf;yc;&dZS3b4wg5jceO?Y6JF?-3y;!UrZ=)vehYZ3Iyiof1w@SP26@Cm zUWG90w6WUU$L7S5dvkx?Qa$XUO-0zA>iK|$wAn&sGBO~RpxbQ8eW6!heYgdue%Otv z)iaf%z=b|7`TtS&mcemtN!F+(i&bJ~W@cuF5;HTiMHaIxW@ct)W@bi<*U{9q1?KPp>__{YAiTl7R5i2<4ab=z)eua@D6B|9<k9*hgWb}CzKgOQ`KerX?{lx7kfYi-bU zO#0oMx{WW1_N7X`)!}7kSqBHBg!}tuZDoc=L7Sg;YZRJx)(5jTq`=?ohXgWG?w8Nd zu=gJca?=0bJ@wB#Ld9DdMFR5=9W)o`KtwodQ$FPqDJ8|Cnv78*#O!M74%q&Vz_e4f z$;0ZzrY`Oc%X4TnOA!gn`YY)}zdv&XgL!{42ke1G0v5ADCS)Y=&X+~^K$ z0Tv!J;<&$UBaPOEuP8M%>X?E$21qrVYR&dVBfcB#<^|^mOQ3%kNTMep3-#?AQVNIM zoV{4(wW`sgagN$>(VE@-|jDAnnH#wK)$K) zP%q=;(-9c_h=UE0Arn}2-FkYceHQ2RUw?GNJ>)j+CXtQT3~_(9EE|j+l_D$P1yMf5 zmV*6|>0?xjmrl&!(I#Hq(Z-jOOY%zbWW$%7Y6-q6r7zngT2V(z39nu#o45W*?)kQL z;U1muU>MlZ|2?0?d|{@n(7t&o#Nm+UbljqaAW|!3r}dH}iBcyr>e zW6P6NwbCC|da_%-sm5ysk@yy21W{{V>_7@KiUDa6$^{W>$JGSG!izEj z3grvl^tk)X@>wZBd9vMktl6zWf*Z~@w)cCkZu`i9b^?viBzUNKjLtD-`h>0d<5HM=^$n-0m5ENYv?z1$$ z3|pv1?~@{@_FKx%rgImlBanyv$&1Lz|FcH_fqQe@@kAgcbC>t3`O`aJq_BWP_}Fw0 zH$U>kzzpF$!Cxnj#W08@wTNYnxmO+=-@G;4I;1$3J#h8IK_XyvpXp(;~Bdv`O@DVoH&=yk|k=9x;i}OfM)+SiA#ePGfy{hIlA8Cvv zknl(QVpA(#pPTDV+O{K#=K?fEGXExQa#O#S|6awthDJCaPiWhxAmg!f(Q+}M4rKb= z_=gqd2f&kn;w1SkGETnO;9{BGj7BtPp3b`e&|%!dA_)iM3Fa>px8EPQq4{a1*#FV} z|7%^=PZamx?*E^y&i}8z)|AFCHxx0{KfwA^_6#~gtwuiu5F%Tx07<0u@F2uoOqlfm zbfljlMYK}|6H!M~;~m9?5Y0_9l@a@& z3Ex@?_krLM*XVz4ngh_>LpiQ)kBIH*Z;qJlxAv#dwmN4r5Zv$bA}g5r;~k^&OnXPM zitqp*4l76yRB-}%EVOc1T;3McJjEE|jdg%2THxV=*3l0&#wUAgCF(5Za6p_&HzR)5 zXb!a;@MKQdjyEUjXnu}}u7ZMDtFG00d^B?wHgIk1vrAc%ZT@+TS*yn_)j!U}h7=7a zY(yNnY!zNuwSGM)n=^@HKFFCVle;QwE?=391O%v|m69*WVmcub+tJ{HIcOm`PqN!)gP-x?hhv(=5Ii%D<-aIYet4VU#z<_m!8dZpa zZN;5~Mm}jU$+G~BBDcxWNy|LZIWaU1mu5%tMn7Cz@*Puh`fD8i2%Tb5r1Z@dc4DK} z>7O32*7?rbFG(v)PxqB__mGrUD_0Y$gGtjDkdHp6($DMO?i5aB-z+~om#kgB9XdP+ zlwmY**`X8Tegi_|U`jsnboq1Kuq;WA=}9=MQ$cPWrg+|%?v=W zXdF|T`ka@>>ITnjnuNj;E6}}iiIg-v7$t3D0Di(9OyU?O4X03d_nWozah7Y=5W;)t zS3E&vs1`a14(XjAPw}HUo*zxoqrLwqTlM=qY296H2nxOevtKBLeuf|#GkLKZE+nc! z8`qh|vXb!Nyn=Zk|Eyo;_mE@O`s1~M`nz-@ zrz@l`|29Wxi)!_83_=uhrR`bD6E2rCXHq|khJTWQJFXzlLt}91MWMdq8PoxMftu^zGV{xVo`g=2 z$OCkh-4VSOp{SM!iQs0l^9;JswFDo}T_Wwk@%Y@@$Xq{o=H|=~H3O6;?J-z6OGqqD zS+kB=y257dgD1)Wd?9-tkGeRE8^y%N_n^gylG?QEHk6->8R@@lr%G(6=$g$4EbY+b zUO)Pcux4rnq>OQH1s( za+9B`@e68T6@hR^5eDS+(uTj2_n2;36t4dakF)-Pa zW+#!-FgF^kdZn(EX?Bs)VEF5;EWH&pw)J!J#dyUctf_3Aq>vDX-jwfo4QHPXlR~r9 zzUL~?mL1j=<#S8AED6Ry z#0XLi!Jv~5v6Q9IQQr6pv?b`1scw$hF@@YHU@azTF1yJ3{BEG)^Sj;Fz>AgSL8`!- z6|^TyUKQ&tWq*p+u36gFE)!|gv`eU@%j_*nT3aye@~?2Je$kq_(DTPgu^l9Q3+}B* zxjK-P8-9+3biG1*)7IiRAjnf&@RryytO2$afwmQXe1?6O&6)OO8n>NYNJiFpMio)3 z2tS24CDPw$6}XH-7m-qj>%~j0@XDMpPe?;AM`>zd88^4?LSp_IqM-B_n#JDVQfsAOk3L@EH+lEunf%Y}1BpRExqjf2$r~Wt zj)E8BqQ;@E%4>?z3vnI7+=Ad1dj;tPYmK`c7+Vx>it>*w?`OOPQqfjkP(b{U)6&u+rfVVuHHwSq`T`=_iK;-m z6NrZ!L^VTXBAp9NZ8W{s-<8R_>AP7YIBcbWPMZ&5*VB94e0+V};Pd>Pyxi{osxc&o zN~~7k9^J&KC(7iPve~(J#K!U6Zn|+1ID)9L`c%t1fhcx55iy3~YU#jJ}sLHRDtoY%@)64msr1>^@>T(V(SSN zR(ZrLRuWE!I&61P+u~|7vQ9<=&ETyj4 zoK%j*-f;$dmqvl!zcq zBljQ;=-Btn0ga;ZG2xUI-Pk@J6KrQZP2s80x%5rBzZpmmCglH&oh(djN6aG#9st=R~f> zY@L))e>Uho@K`B#7JbGmw!Sy|BxzF268D5o)PU!`AXT{74J4Q`xX`dk-`fZ7T!H=J%~e^Gb6)3zXyl+ynm$jr0CNGpKFU+S=<*T z9JuxC&zaRKZ`SPpva268521g}$CUnml#Kp2LHzHTrEmXjS^wk#68~z1!~86;B-ZQU_@x%`vPKPTU}7l)ozF;Wk+>!zQ;^v$e; zw&-xyhB?jtDC5}kI4kY_^=d@^ON2%ganKr6e=E)q?g8bcA;0u)z>im64b&ULkWlwQ zLM&<32J7(hu6pN??kHVT{WzL%#rV7EBAg;x5erQYXY*h~#x?#dYDTb?Ne*n0nGidR zHjk!KO&;mGe8ZAapQ{G32Ksn78EOK_)3eu}I(~jSW$JKS z<eZ{>(Ogfk`e7_h>XTP#lR4*Qil zx|864FB2A*k{LUDRup4ZkC+&;+Aq_oYOl2QZWTu`k5ov-UTX-WG9k&6(h|`aX$pgK zklh>m!9U-=Ad54OGx{u5q28$U!(_LWpWGtoyMH?oOJt=u7N|{emWPNhyUW(F|AjfA zBH_w3xM^$;Ws=H&71o>sadhg2nBN1gD`kiEAbKWqQp_$l#|`%4XYqog!F`9;ZypYI zuYe=rw+2#i6OM=AfsH@G7K20jhTdh?R*?wEt|+kIg1DuA%ci50IWRL?;M#E||T z)2L#U2!oo_^7Nsl9mVIrl9C62+w)7k1x6 zJfsRcZKph%p=?Xo*Gzuw;KaKYO#1$1O=_E6sV|?LTIzo+xBTlVfxi;N?13l0?lZs2IP3s#+rIARKlh~RituHxJCm>YspR_WYNXZF|NfBYDDPa^kD z0t*=UpE7Vq>^brhGZ^`uJ6kI-Vbne{p=_+EktM*THqv*%=T+OL5Q~LId1I zbxPND1|Wf}t47}Lphe!SX@IUcWD#Aa-#xl7Rjyz`6!Z1iOny)DFrH@jYB`_6sW#oz z9vfw`;O)|5p?kd!c1 zeRMp`71L)-yv>S&zNFR@~6QE6b@ z@!;8;{$GX-JRlqK{0x&j|B->C{I|)1i;d0y4wTA2mHsm5jS#T)TVwz7+#jRzu#yUi zuoH~aj0FYC;}&%oTebu1^o3GDB?vu9`%Xay=lg!h>pa{ZphyX7;gp!`-36C<&o|e* z#uzws-6jFNtX*ssjnDR(- zRxtdoH9?V996-;{-UhS{zon|ZCakVA9JffBmy%Y%Bc$Ui z>f0sd=w8})$lKEm;dW7Bo?fv9p_s|Vk@NK-Y{6_d#aL#9ohMO|O4}_o48me<^}_zP z1okO2GD=eTc(VY$bzPPCOHj!g%=hl2ve%~O6C6_wXt=2ZV7)a(?7|L{2DlHtf;RO0=?byq#`T7=l4mL`~e7NoUO z1^vT&`s+4)q7=er#ZA~uOEv(Ge&7P;)$$J)>&W}rTmzD*htVI|(Y~R}RSB04c`dpo z4lG7J*)n+UneE1YQ%>b2zq5hPw%dcGBoa>hjANkxF^>J)Y)jtN)XB!sLDbaQ^sfQwe;~su zRc+-Banz4x_EFcMy0#EOXj^DU6G#v;QaDs;04u9bd@45?kU_XK*MKyJ0pR^>d(?RQ zZg$!sP0Eb>)Y@02#9UoiG4e~xn8lHWThsAt_qWH)rR_hRFDSj7&HE?)MgT>xsj07a z$$J{ZFdP-g_|opEL;IYh2mAMqzfg>8CIv zo6`coR~gsuGC%8DXqxau=(M#TtF2DY!keuR!nKN+so0~LL@)RXbQY!2ARZHmx?A5I z*mCqcTUcjio9}ft78di(Y|Eal)*72ftH{i?lgiChVYTYa7+K}hk~Oo;MvEBsI!|7s zKt)K+?UAj1#am+0H2s7t=q$EHg`*!{ZZZ<0$?&?Q7cbu+ry_t6*K-lhU?~sLYnmYK zE>mgd7_AYY6W&n&?G{lk21-o^`HsI)EOMHWeGikE5z8{F0?hr%fxT>^Nm7CpKU%X{xa^HF= zgymE(ftpfD|FHJ{X({!O)VD3(}ettd&}!ZgOr&;x;T z#6bE9k%;WukJ@-XQPKk3yi+N)Re_-2B_^+@ZU`?E5fl#=SerKf)N9tY`9BVp|kZk8p zIehZ;^6vZr#YfVq!2nmLrPI#FaS$ZH|JZ?%D>55s7C)|iU@Hh6L%0i`=J3>`H1* z^#e=2`V3-SbYxbGz&e3pnVdq+sawPd_ZW%ea0=$Z;+FTyY{nC`L1?RNxO3!da0?r` zS0eKXXN*$xfLxVH%&bp#$3Yu{^6l3|H`ZcanGtl+t+g*)-Z>bqAfK8c@BiQuH=>Qf zRzLNCv*G?Hm-xSDZHfLJJouk8wscWKFoA*qvEKo1PZRBq^oW~_wi_&i*kxpCsN}+3 zU9KmWeSyDE(27MizOX)bs)LGax-ax*0UcE7!DCM8W_qX06?J%F4<;TJ{TXt9_{-ee zCCUxHppbKMs?F%?zn%)@s^t7Fzzzq1gEaemC6CYR-w#^;TPLq<`FV8D|LzToQqldk zp@PV#{-Iz~CMT&aqU<1@(Rd?4O?g=0f(_%3no4TxcmwF95^l0Lk`a&RIo01G=p{Ij z!8d?N2QkBRKm95I^LgZv$_jL!@k~~i=T&xtr>o1Km)DhT5SjTWD+!Lz+P|4-(Yf0#2afr8zIXT@CcNZ!HRLWBW%VL zDPW(IdQS&Bs{DVAhR(;$?f-#&O{8phU5)aL)ijdWdN;H9{p04`BG0YGO@~5B6wBB1 zSS%}E1bHr|-A)j*dB625az&f7SIInnlPM*MfQ4F2-~z!=$>IpKA=o%W^wfUe?g=Y- zpvL!EyK1Ki?fU(-ImX;s9-4~`i97AA+Gfl;X&PvffsU^$%32ADL&*XFTsK{(0Q2GD z-_$JWsl)AI%9PNVuQPJDRm==5os(&;0c0pO`^0d)V_fMPgQot$Qr#4IZn9pW>2YZ{ zr)uDHehhMjP-PX|IKE$(!$>?-+{!0%TVN60!-9z_1liGQczd~7UqFV|K}4%QSQ-f| zOAM2jk@?KL1Ymvs05Xepxw@lRIAJLx6odO|DN=vOD#sPA+mCu_+T#*>`fYyO%a}jn z)ElS>qMUiCj5?A~NvXino!|%aAsYYWXZNjz`oWxX`A^UdpHtfV3jrfLR$ZRL!*SU( zbsfX}y-xlhxlDka~mRgY~bxTie)7C!aJz)0D^J5 zii9(h66jZT!?|Z1%kSsk6DqBx16oGgqgxV~al&M^%ye=Ok^CD~a@`g$fBwT^1ra|p z6@KP3%>SIzgZY=jZJ7VkVLALI-2ET4+X(-|UB-V&jTrw!`R!jfvHfdub!?auG^dd2T=9)G_0dA2(4&Ii*#h(&qLXFE zIq#+mQ3)=nMX)BP705@!lVgK(a2oE!^Fom^UzeVZk1cEKEi|bS-Tn}wY$w1&6R)Xo^X0?V+UmOn$vx!kOyJ>~Zw%Gu?@agg3nw7bZz_LmV~ybLZZHIBNkjS+noY0@>rV&{`Sd>^d*|&1!R}v? zV=lVF0!F@}hV)(d-u*PZI@X2-U>@}1&*Xvk5oJ@D)d}KZgsUV~`fEI6Y*3iZZS3?x z(BM=G(+vy=lu0;bQn_%BU87D*nmWk2!P9sDjs0Whw-%*7D=pZc`2XLB1@`}gMgCh? z#@P99q4&Qe-~X{#P3q5X%3_#Z2}LzP{Rp^4rFCkBK31vkbmPP_V!47$bdq_PzgG^{ zg2)+e4#gr~yRY`T{W?Z+9IWTE3k1G%j{K2~$#)~SJ&gzDIy*g`>`dd?b~~Qt*p~I- z`MognrFuvmq*5p!LY;^TR%YNQ$TA7YBC%?e^A~>Hgdqz$=25HKLrFRG@0yz=Be-kS zqy0+?076O-q0Nfj?l0I(xHaQu4T6p+drDO(J1Pl5rX=+ZVTmiQUFoHj38r6A< zN=p(qaWoZVeNMduXrz!Im^Gj8CY#Q|0$TE6 z&IEzd*7XuK`ON7r{vmm6^`?1 z_4Z_ian&w39D|j6*jW6STrR(5n_B-x*3AN5JK;*S6V*6NXSVE%NkK+o3mLO=**H%8 zcM1h$D|xNrq~YgNqb$}^W4z0GM>b(@Zp5Rx?!ihH_f6L+CcM|#l6})o;xCrJRPk`G z(?eEVI{i^Vfe|*@gWYBObe;M8wrlIrZqA(%znwc{5Zn)ztZXOPqH)7dpA;UObOZ@3 zuSoD(cGUEsO&=Q@?U7xS3@p=ZQGV!gaxZ;P^Oun+aTY~fx?$pO2hm=!02m{oQ8*m=z) zpLB+NJ4rN(<+2(yqLn3RH_fYe^k~<)?HM&?|1)bB^2k1V`PV3U0}$ z1fpAvU`;C@pu7MMuY3Eh2~sr7oD!jWcU!uUkqZd%q%R6jH;>mP!`dyZ*TEizN zQ;s@0sH55_lhYmRRPUOH&P*9$$89WYJ;_th2>yC%*gJVESVPyM2-{H`UUSGsn2m6q zJ9*|c18Hhx-X&~Cqv}?!MPi2sNY;G|ANb1fi)Zn%xSgzLYK*IIV!0y#9*VmrPVMR2< z3pgv3QuO`O(-=`-(cZuX7653a|I(Xv&LJ1?K361gRo1@Zbf4RX$b-hSLZih1=e4E4 zJbVb6xLm^xn9q)%=GQ&6%{!EDhx-t&-Hk)pnE>9`x&+6JJM{%uN~OkKHA&?+U!~T z8+jGtfF*ZOtr6w$cvZnY^Qw4M^W3Z;Prw6xVzm@IRg`gy%fDz}V|gaJ-G92lB3;y& z_bjLPP}^&&o5cd#;_*S==sT~p$v0XjZuT(rw)eKr$S zd48cw7Zi#0GS?p-5@S9n-|b7vd0LC#4{(gvNN^&)`KkkR+lqG_hQb3=^*?BC zyv{B2oV^-kZSQL;4~aJ3=?JP9kHRmivJ+NGwfSsqg8OavTkD%Zd~<|zt3ZzB^8NLX z_z{rnH;V3ZiyCQn`%YenH-(+9K@_h3$!=Df>_{w}?eN(uRA9Cu(HksiQ@J zj4+#dQ{4hsV==WhmCOOOsY@tfBtSp07Xv5>iML`k`ez?h-CXe50T2>?VJtW z|EoJcDG~_N&xjbj{e)2!Foe?TP$6^;A=Ve%dJV=Dq6SQe7oDqUyZ(YNE$etVk9EWc z!QZ{|dIMG~nB&iM4>dNem#I=wpcbTPHX%J)+mS(N*O1T()9+we*!*E}8wC^0$4Clh zr#n5>77D*O>B$dLSgF~TEFN8zW_oazo3zSa)d@vwN#=&CL1@3m^Kkpg$)HagSc&8{f}``+}USqXGV0)=%eP znpV?KGBawS-wz>{$!JbZVQ)}_%4vaKCAwU(n!BovnycE#vr7Ahz6@pUd~6U}`wsV4 z`2uie^Tzp!>G1v|rW5+VULaX}V?$?ClTR%Esg&~%cvqwXv|kWJ^tSGB+;6vq+I_`Q zN^eE|?bnLhDk>}-{$x>(%SmXvnY7PcN8=f|qwg;&xcB#Hi5Z8bw6=`xVBgkS+IM@i zt?KvJnHl}hvPMB9@+D`jqq^qr#b4clkfj?M4L7lUlcvK8wpVvCn*`US_dLuI@eUcn z%u!g&8k)tPAgl*Aot%IirRMN9FtdA& z?K+3}{dWP}%gB8QJ9JiqEHGb6i{4(k_wFc}Ms8G^xtxlS@xN41Ayzd{`<3GKnti8Rpp@pfTiL#5a@u#ldKlh&!P-ftB|78>dtLBEaDjv`C zVA|>KiIa#?!Sme9?z@30tn5?CK;oAMUTFL`kPk}7`1^c!=*#};jF{i4SdVwV-oFYG zTwqIEEF0uo=9%us<~bdP`tX`iy2zCPjwGkZM7+;KZ}~N+3Vje8{D`CKoWvN>*5%)U zvym7+gFBH)TH(Q{cT#)p%=xk27$HhAph#lzo4@Mj@%78a5^2d+@=Daa=$uL0D%7lZ zhrJRv#$+%fjuW;6zQRfX-sObSwg|Jv+%K8$VU)3~P?9Xvw_esjeGVA#hZ1TP#fSQt z2CjYg=lYfT@PEwib7;{_^};?*IOzTGr+)`WIb}MTCpD-Y-8aEnyIsSHT%px1;s6dj z){3o8!zv8G?-Z7H6Y0mZv70<{v?XC2900ghCoG~WeR2+jR&zh#Yopj*7nn<4{&pKN zEHu87pKfF1Ke`Q;|68~5kA*tug7#7oyXDmTd6hXP!%Rww*zX-O7UV#%3jiUD55fVN z!!+=dlr%yHLzVATR9`_6yNO=8+!KlwyU_r@`b-NSTvxQgZfnj~uBI{!LrC$r-@W;L z`8(4+t{#3>|MfYmzT~a@lfwgIQ2JO+P@ijim`A(7Nl!M zneyCMqa(+mj<_nBqc63p8d5)|QvE0**ftz$(16fPy)ysn7vRw2rK?ZD?p{RVki5NZ zO#vHth%V4suqpk!C2jno*a`CRo?nBe0eZ?2_cn^2{cCO-4$!xuID!O zmQ(RMXiRaa6BqIIcTfh>zLxQbpe|8@F4-Nl&l3_s zYvv+WpgVR>I4h`N)AE*BH&L7 zitcX$N(H8ru;{lA|0}-CbO7@Y28$+j zK=pSrTANF(4zR;OYEJD%ZihqBkZzd(xNwnG6=oO%T)?}^ZYyY(tnw>E1nKyAk_GW# zlC|VDzWS?zMU&K~_hO$zpK0|+Q#gS7yM%b;mt}uS&pi@x2KSaZdt!I#$?rIWnv<59 zmzyKGvipC7%9JtqO2*G1#i!rp_k-x7P*0M9p7>f_xrx+A3bi1b10fg7|iXAuW#Q*wvg!?mG|eSV7Wey&RD%=YY}*aPzY zBMLtuKQvVVtUf>QE=nOI;UQv9sl0Kmz zx3qUy?*y10(KR*5ydw1}GyN3%>tvXfMGX5l{l8r_?W}R7v-V zFI4_BP(RAOgmz>=^^u;^znoG(2!MUa>}Z2-Q)MWrRA;8V+)%*O7J$^nY$<<{1MvWX z0sA8428sf;NUR_yWE9Yya6Iwh0YQXJzAC}jn~+quu#lR$iUS6KF&NvXiX6$98K;?vTMc!ekQhI#4h z`#CX>Aq!{}^IU44qdYJy|Xh1T}4$fZ|~M@f5%lrF*H@xAK=nf zR%$A=2U^-Cd^n2hEj7&i`%>N z^4ksV#Fok#n>oHDDX8gjdOl9>g?%%VFE)=9Lgu5%(AQJbpvHIPX{gt{L_wp{K-SZ$ zD=*KhG%{`NZZ>jE71A1GLK{&%P*+u9m}n`(oFepgoEl#b4;dFrQcZ%hE?EgqQL8rW z{e{6aN>f&*o!pae_WivaZTGGH%#@Ahj^+&K7Ne@XQVY3yBB#myySwR-=qr4KQaQ%H z`d96za42Nl2(Och8co#}PTrDgm6hs?^sUtU7@dm(ScuWs#kaAv~; z6Ijm3`qi46N&5PAOd8#-UP))Rw5G zqE3qfkm5T^y&XSWSA{!#fOFXmPpTTTms6aIcWCoVFh@(mpsOj(Ambl?YlP_F#y-;i z*(-?ALsJ__sMOP%-`-rj)lDS+0|&Ti&{bYLVU$Bzs22eQ5(KFyqpqjX7U;OdIU|m* zA`Q91bkY!D3f&|j%=I0*z%8XdjFPMmXKpF^Mm9H;!J-VY2T!2ONHc9f+fK5nVHiG+ zrK-9E>7<2p$t1|ML6Faw(AFFHIcGtf{1lN3Y%Fq}VF=ILkU0 zdaSmnI^X40%1&D|2y@(0#S~jr89f}DT5j|!yarP?Vx;v%dU-KK;C+=W?Kl~GuH5xXg44_Wqjq6~ahg+^O_el>7Y7hN9;KAG>4 zE^%>)X8g<&*FYgvdGm<>f{8rn9y`MNQ&-$t;nZ=jcXd07$VmZFL!)cCn6U*7b)5uk zu0Ixr&ITdT*hyTaUi<1~+4R*DMyW1W=yArtrkspz zK740!zaT0}Gx)AEOGF4KP$;I9bYeiYX}8_OQ0w#fUp-CjU@ACPt20L(wnTA}Ho&`+ zNZW+MrE#n-Ms-!0^^c8rOw`88(tS4_BIkCKK;7E(;R@@WEcn3$i>7BDX(4sN7Xbkj|VX6TPT|SM2cC}E0)Lr z=QqvPJj(2NQ$e)!&}O zQDrMjTQ2SeP2V%E=EP;l)j0^cEW}4pKv)yr4dZ&%NI%A3m@O~zaXCY3-sQx=W1jEF z!&au7c~RG-<&=~UN;^q2xaP^HBQk`HDmd|avc3IGt5}2P@NHvAL-so-iEaoM=Ua)< zK4@9XHtCh^w;3^Kn`5vht;;y=o7RUxP3Ovs0NnVqekkg6y3~^idR1p0M@A_k-BvbO zbGC3*J$ao``>sPuiN{a~=FRJrmJbd#7D5o;v?o^{gtVu*;u9g%REGMRy$q{#RJ&+t zD^AA(Wse8~(hck3H!p+d=I&$Xp zog;{w!GQWst(^z1F$-wMoQch?)H;glC+_p4y`vVBYu+A?Zxmt|C> zW0w(OY%&g+Qc+A3aA>xZDxvVtj30}VxNN|6dv2fz)D`0zo-0K#hPq*(`m%gI#ldwJ z&mYk+fJ+-k8y(6R{KnbEOp+?=QF98eptpKxdZFFL0b7&gPI@MI)orF0okCTM;@;G( z7+DgFW?V4|J6D57NOFV`focklmSzgO^OZo}diNNOH4f>}w+|?AoSCT$4VnBT5_!^xuR{ch*6U8BcC34!G?r2=X610qsv3ZABZ?1tk z;k4Px7cfINRcP1XzQWoRQb?|n&jmvbaD}8DB$>d-88$YH@B+>_`cQVqj%o2_17xZ zi?Q(?9ylL{WWQkdsNrOx-iZ3G;{j?1*@ zASzuK5WHNT2+FYvz-~3t(e-td#RfchJkh7vGfn17TEggj(`8Sm!M2|QTN|q~Vq_AO z9Tk^k`-ltHDVKaMz8l3?C!OUdVvi0d6fO~O|M0ST3li`Fvx{g>a$ZAUzxbqG|I|Rm zT>S(iWm}A8Tk7AHISK#BhKcRFlCX|f(+V>5Jo}Rll#FGs$jh%5k`<}ZQPIR>Zv=5y zHu*H1EpiyoiK|lBu<-eHYeR4E!}>GJCV+VJ2?@pIw8IM6;$dmswNTMrE*X!$PnhvW zSV*!xCC9vU=lf*xvR~(2V-IuLEoYDn6nVOkf4sxr}0y5jW> z?er?tHf&xxB z$EoJ_3A@S!9Yu6`DvNwDL&fLZL?Ke+_TOskvXY+7H9C?|=k{jfaQB4}fU7s~XV+A_ zFgCq$bc?5c3?x&WP|y*#9}6UI*_t^Zw#=NdH*3*L$Q&JS%_c2^vI8oizZ_@HX32<2 z92@K~zEf8K=Noo7964V7I%jpA%|+_rEAzFDTzRQU>`CScj%`Q2W`~Wrd$6^Wb(7gx z?(OSFy{RkcN+10(UcQ-I|CA(b$lZ!V1{w|iO|9MndLf%_voJ1BEo67rhRGDcc zY8>${p1EAo*@l9bio_0CqyT0LfT6y?n30Ww^K;I(I*$lvxQUybT&@;1t`A2IJ3S;B z0=Wyb3I6QJ3F`(m@=9iyV0CqGdC;0P9H?}`NQi=G=IJf*z6KAI??4ucZ~Yl|CN)9& z2aWW$qo?|72CPL#sKk39dMY&P3w1XOR(m?v&Xms3p&sj9D_8F6#W;wl+9<+tPV4yhE8M^SAsfLLI0 zO<8KOm)WxxdxgDfvFF(fhBn;NMrb1~_9A=9Vz05+Eo~H^Z?TWq$0RK=v-6mRR$#Gb zD2opf@UwZU#olJ`;1Jq2_Fy~L3)1ZNv$WB?*wV(Ze_PsE1iT;5#ewZN#TQt7G#_&i zg5uk|ST%m6#s9)PGstU`fHUY;U0+VK8Rhn33iYstib{HDKevkXf>-wyKhhpmH~;m}E20(rUG1Eq=U)K1(Mlc`GZ?cdlMmUMu{+L z*=`l;;l)+>Xi2#n64J}=$LuZkCKK`JqCVB(hWt4*OQ@0Y!>;bL(u%63HFYb)OYo&f z6fVXtsPt1%pf4iD@-@mQ`x-@o-^?2=UdfNKloiwvKd>Jy_C3B;H2%EB&!e7u0f7w! z&Zk@qe4*q~R%>{j#oyp>T1q-%>?3}Zp*2|ADh)+!wYJ94)>_)}c*8HDk2eyZ6cp^Z z8iWL1j3kGLtE#3}*Q~B~*Wa*yy_YvM)E4CDuU@@+!0I95^LeEu`GZD{8kz4d-3gNq zN5SBMi3blHIEcQmRa2fDL~ikgMA{W3oF{M``!uAZy57>(X(uA5#f{q%X?QDd$`@5E zDHjWX;vr(Y49Ud);A z;lEn^Mt+0EuP1O50__xPuTu$}MvZj~Z$w#+4DE$=broyvCH+3FvSuv4h2LptDE8~M z6D@ucKiSew*UqrCGYOnU;B3-D=V<3z{3^c5(l%)4S=#voEma z3Cti+Kwun!@dU;aC?YU{z$gM^2$U0;NMI;|!w3`;IF!I41SS)hL|`F-1q8|n6cU(C zU><=v1db#yjlkgq<`bBTfc->c^v~?aC@t-7lCs#h#1voBhaOG1B~a(TvLpR&&^ zC5-tYc!r)mOBjNB?8(}5WSKuNydkC9QchA%wv^S%8jF2JhNnuEVaQ+Y1zv`ZtEIh& z9M@jbUM5}oilx0uJ^3sI+G`qmbZ=;HQVDNaJVZ8X_XBB<-f)I4NTTYwdu}Mhw+Uby z{DdX3pUH6Yc#P8)9fJ)Z9g>4Y# z(V;60hW?i2r?@6foE4^o6-m5|5Z7aA&6KOttwmeUUS3zT+TPui9%q`%;e$J`#ULZ@ zqzr@Hme}gqr)9@q$8HNvG+EQaR?<}3Sr8=@aih}b+VSJ1_KpeK?Xs$lMteC$rB(}x z9(nMMA$He@AN_b(t3GXIX1+z?WtG(>LWGj*!wr!QYW4&-)+R|LDXOVjwG!!1t*7{6 z!kuJE_+-}F`iAhzVscs%#dq^Y*nfTsYm@8u9Rr0dv z%A_ufrCY}*Q)vf~UKOrh*03Cr#mg!B*RFYy2rI3v5>`fLPEk>O{?)HqR4=z(XVTPS zyhNko@TB-)@j0Hbckc|FU^13jL7t4gp&^RhvZ0IPJQ6LbV2xw8)5MVt`3TujQCl0P z>DathZNQ226tkhm*@~{N2(P8!k(k}ZtyoZt+Hf$JW&>-(iz_RtWIxKziPIqNmV!_# zDVE9ok>K$JU9;t;5;V#^3Nk9~#8&S@_yaay#948TGd*!I9e0puk2oPnemafxLu@CY)q_>Ba@8s=?e@g# z-@1+Pw+eDES)iPqOR%ds&Mf#rwx*&3huY+ThieWZb1qGPQbZU@kV{C}@7o=HV9b6C zCYf8XAKBvG_)teX%2N-M<6IwOXgGqhfVMqFhryoydlk+>q5;|x!%ln^aqKu25I$Sj zJSl`m;>~G~>=J~2VOK4$sicAS?3~zG?*Ex|2y%;27t~=drj<0GEiN^yYEd`UqZ@>^ za~j|eRQA6$f}5zDRvn&JS6Wkt^j!M~$ikn@VX;?tnlR@?2-np(RS^Bt4GVeV z_YY40?^Ip1mM3cG>_4z_zoG9&g@VUSnbXl574>rBJm-jnLzZ{@g@I+^2qXX1v3A-xXP*ZIy zt=@@U;bE@06mxL`JMX)OxXOA#VMDG*V&> zQ;MdQPAo2)TwXL~T5-{2ib#?VipyqCo>?-vaPDNO$=un?_#xKuLg{U@+Wqi~#N8qG zkf{GtT|}ogPz^;)e&UfQI*>oX+RVtK=S9C zZ2?hnny7S7feE%8xE^En*;^$9+s^&pn+*}-gdhsCgf^RNpB?c2AAN+8Gr#ixP|Y(% z7mTy?al&ss7V3aWm9}r+kh;$mG*g^CBzAM$^7~G!`af#{R27{)K3tq7qIdsiCgC4C z7npF{0ro0vHhcbK@t@M!W9P{;;xe2z*t9V!dyvSkQ~bzvdqE-YHkOz?BWGv|>JA8C zcb6t8ID2Vj9a&Rm*gd5*b$LZS%?5bREu|GS*S?BAqRO2yjXPt8<+Q5{udF#PTv$~V z$^< z<9rA`Ae-F}ob7}ekPDsIBkWONY?nCKcQ@WY=DB|y@1OA8KZ*BGdG4Ra>lyZ}z@L-9 z&$AcA?~Cju@%yrT{tA0l{JzFs$KNyxt`)y;iC<3P;P~5#LX^ex_vP~s#B)x8qZksA?pK+9uS~y>?HBjWbQU&n3bYWv+%BJ@NW`xy?(YM}HLfEx z@a_rFfPNf zuobMWkbI{og^t(m3qFKPFz+zbrAT@?(1l~4rLoKj7(%jbTcMC8LH z(OyhEvv@La@r>G15g4_yDllqKO<>eQIu@S7Q;`D7?|D!~`cc8$CP*m_-UF#uf-kfS zw9uAD=vo>~YZq#Qw9q|}eh;+Y1{sauD2 z?L|4G-0F|w89Wmkrvu^^sOb|8-f_0Uvozj`j=M(2bi|5g^Um=q+UZZI=&4BjX;{(q zSkZIw-5FSgGqIxQV#>3z66at=H~glGcHv!Hs3@mcQ7NfMV>PLw?Xr!NHbQbRtuxlE z%QomrVrLVaA`<)siMS9ebCDpbyZw<{Y&+hA)QG@(@?Ka(2XO#A3n1E?_mQR5%hIw% zY5rhZH)L7YY|Xyu9*QbAQ;6XuSnj2e43{CJE{9HVg{S;%xBP6k{A}JA6@p#93Ow0D zydTez1Wc0zBnR(;9@w-!vB+ML9_AO^yb3wD$x}?STTC+Vk9~p(EJ($O%yVVt3$Q@y zLn$J2D`h7Zb<@bf`@ zFcP1NU110xDk?O?t@sQ+Ojdk`-GD+)x`5h@*{TK~ZtxKXA8GJWzzkln2a-7PVKg5j z`S1Z2LajF4=EGFUhtd!V(-7nX{SHMwgktz$i`y_;;v9w~mk~emh#fW?CcVam=L=lzFiqzPLEF8 zU(y7lwggqeRe`&mIZbeFH+JgBpesC%)IKGsw(Q*bc(Mi@r4dAQ0xyadu@`T%*U z5?gaoP5W zei%J9PYEh{JMV=t!R*kiV5AP6Xf%YE5WWm1yn@Q`Rmg(ZQGDKTTfjsGIEhadV%Loy zf*1(wP^q4}*?QcmX%-Scg%?YTPNhfqI~Hp>b~g+Srj6SwZpPDtCYZ1bx}$wih!Qu^ zeo~Y+4nY%4!gP(zuhGK@y|w~<2PNoT)H&}#HoOlb;X@DK$Jz{Xm1PhKIm~VQ8e}5X zqXSWZ(mUZn@Ry=m8-68PFIz&fjr(uR^i$N*pP^Cmxkr6=a9g1RpDKEvh25%z)Q%|F z1hyA4u;XE|rMyfQJ{Z#xi6#}^1e0Ui`D;%#Oj!cs(_CKW%kMRknAnfM^?an6cuB9Rx9$@lOT`TGLJcYuFNAOE5U=YHQ4W|fs+TP zZC@>Y$#~o^=kfXS%OOY?y+c!U8yvC?4voz~_hjI6Gg#neFolLiN`ajBl>`}DwYiZz zgf+n|l%QlZ!c#n~uw-6nI`bpYDM0qoh9{ZpXxTTCgF(s{>B4+tMm&}V7EAY#=ZxH( zwtLBpCedh0DRP4hbJ-44IK<|Y2}!I&9MT9Y=SK_D=J5(UNA@qwk#c^Kv|=$Ci-(17 zf?f2x8Z}5t9+ze5q?KnMo~6r=n_$l2_IIi7 zcbl7E$jEjPD`c>4(1rDY z9M%&CvR*Kh^@h=`4-~P!a472sGguDHVg2DK)aGH93u{;&tY`UfHX8^RvO#b)8w^|6 zP}s(X!$X+%aW)E`XQN%`Wjze#i}+%cxuamQ7#>t~dlurLMh?(G*eEnQ>6aJX#(9y4 zh1}@yG+*kD?!Cdc7rNl6z85kPrX=r&L1LI+X7J^qJ)r*#?F>v?$&ZmDQY)>*jzU68 zL%TuC-9oLB8`=)@6o}D$Y&>#h0!nisir++!=IiKE)={W^qAX3&=+S(Z!B>dVt6C^s zr_$#iSo$GY`k`3*6fC_sLFp@b^+8Ja)Am(a`d?-59TN=nYJvso(POe{IKLj!gV{Ld z2YOu#zS9|NZ2m$%57^JUUkf@ur<)^UhD=rpK2`?VY#Q`n(_sjk0mIo$Pxl%_duU0U zzz}<&l=LZk@xu=2;_zd6ouqHM?7p2)J1s21?t(*+Xd1jfayuM#Ab;j!lEX2hdDyAv zdrIx(>YEH(ZX#SsvfHGdH^@@YlWo$EN|jB5Wv5Ze%q_WuTBw|Zr`vQT&A^UC5{^O= z%8`VlA(d4?SGEZHu*II{>gP6BKfa0|hs~uyPfv6CfZK$n;e*w!qAV2Q2~l=*9Lkm< zWy_JWN~G)I&iQ7_#w5p|!#Uyn|Og$3Q(59AJ>y8t{J$6Gy6D*2V z?Q6hbYvb4soHmKcJU&9!&=)hLtra3eYcYa6+t?~FDDx~sSY&}<+LBNn&Dew+p@;o~ zUM)QwT{F_GK~l5Rw!<1 zk8K8DCq1?q!mv^Wb|PZJQxgu3j%s_P@b-*ITMb6_*9B{Q55 zEl1?QSpaq>>YB4qOwRVSj@PX`g`X;02S;m~H9C#2mqo0X-fHp&*;7X&>8c>QGGAM83<8hYnkZAs&OmMD+d z^exdDn|A~cs=16c!5T5sx3)B>Y=h$uZ-i`Q$q5RAb<={J9_@ets*MvL@VH1~QiI)y zqs2{-%x;EEb_?sy?q~hkPL|IeV8hshY$SV_O=SOKQ`jSHI@|3|YNTTx_Us?Fk<+S( zi78Dqu~O}~IJ9z)cNqXZGo^_A3O{z(3mpu8jynSwz}7z(6{cu?-orMm*_=4-d^G__3wUFq~uqp;9V(Cn;54nhL-IAulj=b6w0^LPrDuxDTecE@AcbI`zEgthD? zxP!d{cd=JtD|;Pwus2{QdkY?6Z^Lf(E@CN%3-eVuZr|fh1l6?W+u&>}d z_BH&(zJWdLTiDOOW4+lAEQkHba@o%)P`|QKY%d$b_OnA+Gb=%_ZZ`Kge{7D&`R@!F zsU$1YQ`3uBHxvJL(EVveEKT?69ijwhgCjU>n)Jw?Ou)L$QdsD^LJG_kQedu-0y0Pn z$eA;Z-O+45&tWq>D%rd^0e6N=7E@Yu(V!<@p`d9qVqh>JdDAx-kj&{!wGSLz zS_c4;*%v}Q2L|*0FpTG-l^%led;lE6^N}TkU^X8N3-}ON#D{sRxY$!gKNwiWj;7Do zF{*OsyD}7(m3t$B4CTpo&ykfQ<#bAV7Ejc#p@Zzyq*U5BLOYR#Efv(o z1N}wT%?~BYp^JyMPLj4xjm;xPK0cX`5-U;#$kQ?C=ZvLEPZ-N5zyv-Krt%^**e1bz zJ_SzUQ(-+Xg$sBYT*RltReUBq#^<8&%!60>e0ZHN^zi!)55GHL38?ZrBERt`ohSS7 zCyOUXG5-RG`ARRF`Fy>tO%wLMJrFg{i))X(V#nS+ExeCS8}EwuzO8w*<%*^KCr23k zb|bPQ6S9U4i13E>!^>|!6BqYfT|Cd?y^p;HB)H#9Bz`SFlwZ%w_zippzlqP|H}fO-ExerH$`|q5 z`AU8V`tg6`C-5!kjNBRNIhbFh=X8XCZW~KHS^WOwGf-{m(R%AI&iXK`#?g$%qMfeE zeELQdnq2a2&uD@(OB-Q*BE2yi>~W05CMdL|{hK3yNsk0E-?K`C0l(;&fh6&hOKXZ} zmIhJhogEBVUd?C4V{NXpV4|vGsU)-=&QSm@*D~93^*A?&Ks%uIDiw1`=J!H2|0m4j z55ST9L0G~cf))H>sOSH}Vek<+nLi4r@!fDfe+-Ae$5B5$1x@^E9P*wK+#QF!>4^D~ z!%F&br|XF9v=^u0Na!QqUIo1*)`Xro8Lzg3lmdD-wnP8^d!eJjFN|u1i`;O88?YoA z`o?<#lNCn9SS~C9W{#di`{{5tQ`0rOrTo28k^6?pYt1=PZimv#2-4xr(KYCAn2dDCA#21OFPu<{LPH{})B)TNIt|QFMMl z(fJWY=ND+?d*E*VD?GsWdWN+JJ)N^1)&hm0v*?=LbiHG*D5hTGx-y?5Q)wRQCsv}6 zOkAA6r5O$O$W6@264HjfFBnJ`y$rQlNh8Y-22$u&9qT+#z~&FYHowS1eZzBoAg@?F z(e*)sE8hFI=Fyf*rKH)KCJ;|hG|9P3$~tcZlj5DM++9$Y+XR=UUDgDb zZ=_kWD{}3~l17*>UR)qvWaW{7U4A7@3Z`vzQ;e{mitny;pZ3U0yGlGwqREL%<=QBr zdC{_XE?L368MuOCqHr)3?2(EFqZJ({CPBD9z zIc%;HWEDy-Tc(6qjWU3(Qu5jH%0PCKGKj5L2D7u2A?#vhD7#h}#_mvtv#rVq_OLRF zJ*gD1*OW2rePt~BOc}?1R0<>WL+mGaHR=aGmG?sNRoQp^QuYo$IUY{rm$~ypJs_}; zeD=#3T5~B~X+V12Nba~7(hWYMbB~OG71aZ-;KfoSz9Z*ck4iB343v_eDhjbpx-4wC zP1xGG!9c2%^yCt!x!c8QZqFpL2vSfcLr6Ik1}RgJ$%i46ry`R}kjZ6Grc8s`%5+$$ z%=Ao@9VHnt2y?N-MA-xvTZlEW-03PD2grjkQp7kgBC6IKT^H$OIS1Zf^!Y%*?Z>WQ zZYq_Ne3ynCN#T)MaAiJ9$pT1Hj(~u&5Hgh`AzL{La+GquObO5qs>t#a$0>geLGyMK!MiSd{vefGXte81zlMN?UZ9+q_Ps5ss;{GYN1%E zgBeOa%u^b$saC-kDbkDPW_)E2Agq|YMn+aWoB8PY*;g#a?ErcE=&|3+e zMJck>Cb*66CI_?e#qER^&}#D?gbgI@Z-n(F?C*rxx*#JPM@|8>2VC8aFpj^Sm zDp#U*z6!PTX4KBtqISNX9i`lW8u})-T)CO8P;Oy$%B`rSZ)fY2JJ`v}-`Tm!KiGxJ z7IuYlmyqHopgoC=J9~PSBe94{iA9X$R1p}-t_okunO6<{LW!X_^Eh>-h~*P0p8U zvO_S?4%Rc=K0=#V_M^MD6lhu619or>78CHU z(K32s>eEzLpQgG252?03b=GqZGkCO{dW%Dzay#aW zCGjyk;BM@m_Y`RAeQJTB-Va*~Od5}jEVBuk3Uqte*v28Doy+c_5eaB@32@|-R{}M> z(vy}9?DI)=2D8jj_y^$HgK*nz?&8D5o%fKtWvH4z6UPglQ{wd0X%Y%W;-&n9R* zi0`|d5a=jgP;AeAXlq^z!?M&}FfhwdhHQikk)uwT-LHtuI>aj@OONRDyC8(2VPXZg?E(i;Cq+3Z8LGy6>K!v3rFV0+cx+*14SbhR(S`iPU+KL zA%aSQ)d=&k33kS{9_=nVNg9w@-Y%MlS}spfX9u%1n)gWb_1T_pvxIV@C5J!Ug+Loq%1Y5O%6XuuGi;@2QjFL-kPjTAc#ltHrQaEoI%+>8zJJlMPU3 zu|et_HcFj~(tkLcq|Rg0)CH_UJ&IMS6+&ujX$gkaxE4!|Yq8Y07E6tgMnzz@#o}jS zX|b%6u?IR_=VH5DY%hduj7^ZXy&WIYAJX?i7RoKktC5KU+q-vfVN{Gv5rQis={BQ* z?vIk!yZGI5MBFAv#G+uJlTd{UYl4T-`;n8FioJx6a_GpTJ(DTg!%;t>?eH(nGh7QV zO|1k&JqA+M6_BY`L3ec}FuR7VHI_ht$&Lam_XEj!54OV9@R_A!E&IwqZby%Gf|M2Q;({oTb)N6FE=lm@%u=4Igb|5KD;K_MUHuv zibmq@0<{r_;!DIIBRt2(A1B<_O`YR;JZeN&6wp+ndOB$88Q9;iW~zD(v((KjQ@xgD zsn@ff>J6-qdK32lo3a1j!p5k#vWe<#>@f9?NYocAb^Cm&v#klSZTwzrbd621y%eTG zhTZ6_Czftw16=Gd2NS(I6O6sk9>*kd89wZslq9H-J?4dH- zH#T1>7}?b^`SNyyj};h=VC5-;3vdi)loghHFFdVepi%jZ0z!nR(J1z;3Z;#ZBC_Zv zvhYM7Eu!s>>SM_4Cm^UkiAv@vWcagCpgxD=+4FFS`T~@xFTzaqC0MAw49nG5;aK%G zxI%psu2SEIo7H#VR`mn;oBAQ#t$qyms-M7p>ZkCg`Wd{VegU7U_I8Y=*bp-zli$yG zVuNgvi$Dh43w>?}53t1`Y=qh*sGoul~jn8O$Nhg>+%r&W@&Z1p4+ zd6QN}h7JWTSp}+HZ>-j(EYGg^8#=@ULu(5`(~bg5D~EKg0ubwg_J>RWB zzFUEOSpf}#{Bcf!NLg4F@r7LX;bO7t^1YzNuKPT}pOn?O4ND>`d7K@TQX0AkO3U&B z1x>JExSFSAV3Um!4lkXv5ZVTB=4Ghr(M@m!+U0UqP}YijYPB2;trBZ>47Ar)Ko_mb zV~>w>>oU%rAspd`cn{`JiGcj}SgWV8rYdwn=ZZqXqwVo$__I<#CrJ0=vRI)@U@=Sp z+hXX7SNmYLaY_@sW!KOaQq2+5w>1zx2^qNPS`Qae*~^y7I3gWMizH}yWDIKuEFNj~ zplc0~tgV8f+G-f9twFI}3rA|l!_nG06yFo!RP7``oV)=u>tLvfkQwaZ)yxXg_Y zxl9iEI$UUrFpNbnhI+dOr%EH&p7c%wZ7+02slYKkS8QX5?)cB~=cQz z)!tETVaIz)Y{=*c0nye<6iqLZLQgMAGY0l zYE(N97VX^IZD%*#>q;xz_#!a1ze1{ZF}Crg*v6N^4DE85uU!EPwJTwnb``AEHeowo z4I8x0o;JR~ZQ~2vHom}Z;|pXPn{cKy>&8Mi*~V)RY~!wIz7?@{{r19u*fxIARbsEn zzEgr8!~65mR43=Vv#pq^q7MrXZyS6--g*}i?4!}{md6^iiTy3Y_0-dy5p{I5m^w(~Of!ZBVto_ZS7fRgPm$GkR$#nafswKT=@1fuZP68YjlV7{aFOhbee50>33iB@ z8IzqbcEEifRn7-U=7*52eT1FtV^7EGbGp`wIE=Ez06|XgU4_XX^|$=n7n> ztFTem;d7WxiU|`MvTk%ac%$6APME{N8*L6sAIb-Np}WC1?*YGvf}O&X%_v5` z#ov~U94|%o8X4S@$YhxfkzF7|Vwf{dGGmBj#t^JK4OpMkKxU&~&?1+Oe(CrpeG`PB zeYFuA5u39tH*Y(9O)d9jBqVGc#XRY$pz8rB(c8mpJp&HcJ3zVK5f$3J@@C(+GTD`_)?KLiIuaT_P;R??(Z958f$pGP> z4)*)~9W$fY`VN0rcBI$kro=@F7&?q9B-xoO+1Ep|uSZZE2J{VibOQU2!?AvGI2K`z zkS=`y4Alq0Xnin@(}%)jeHcv9N5Cw7B+S=GL4`irV+Jj9E569B_##)P7I|dKCjz*- z$L;`m&#mxv$SL~G6c|$vFE(cKf-)FKzn=DFN*MwUBa)IgokMB zQXIM+gIw6!uf(T(DvDzXSb8aB>Sd6tPxDajI?ISTl!si(Ly~eG`U(e1MdPizq&yQ{ zsRJqhg#TMozEj2?S0tGJAQ^KuTREFU0c>Mr7& zJ-CMO_OFDC^i6Q3eofpFb(72fO)mR4x$NI`&=GY)?1=gwcSP+a zN7M~1jHrdOYdS-KE*UUf-j5L4)E!Bk;d8$;8001xKAR6Vd=95zdHp8TS2tsay$y%Z z+hLmiHylF$4h!@x5Z3QRVZ96L^(Ht$-+{cm4~2H8%fC}R!{))nSBEn^!)5>sci0Rb zFlzqS)y4Nn*LqCub~^omY)#$n`%Yihs4t&cCc3I?J8MplWlZttX5sqj52I}S3p?o} zII27f-Su72SKkeJ`eQgoKJKwl-MA9OoZ7f?B{0VAj3L<>O&H3*<=@3vsNc7>F2A&; zE>B}!p2502i*+(F-Ea|qzEG0nL-ZF)(ss_f0&B*?b)g!g^dcRY_jOdwe{uuy zACQ6gvsg*Oj+`Sk90lX2JHhudVx6fa&QKE){WW*DIMT!_iH*M3aah+sg&h5J$k)Gs zVfvRivVH|)^>1)g{T4gwcQ8Z$-g7X7vx3UyQ6g@n{ay;k9#O>7+WVt*)X!0lD(Rll z!9Y(zXlNVLD45`+G9<8LFrDdn_HKB!94cnXtxDNyDd0cwqP2zmY710oUD;+@XMnr@QYi4OJoHGcxg5dO0!Rm zo%l9P&4u4z^2%p!_uj3ptFlqZ`9P~ILX&wzlD37w1%(AmiHQ10y~j;}q& zrF;Y*A5D4ZSjzXhVfy1S1sXc+8dhMk0v{{zV--?py73+;Mazt)=cX0tS%y7VZ)I4U z#QKBT2tBh5CBveL`{ZC&GO9S1T3}`w8J3v17bow;?@h(BHx+<=PQ#`GAF`~y&9Y>Q z{L+YFVs0f1bIkHN+{)7PY+i}(HqeY^nZj`WNjZ)TNOk*b-vxF>OfRZy7GQ?DRGRcs;Xn2hq0e6iX0e6iXvww|@fJd`lnLsMWgFQLW3+zdO-e6mVw2nP280bYSA>vGk-Zs|P zUN>_$dku+~f|~`-o|m$MQ{g3>2=|L0)Wh{7C?@%gNc-`fKE(=i*%qp6GJY#9r~6Kp zTtI)M;8VNZ?bX0WvPwrdx75=3s6UQV8P0pV$%n*qmqN5~7!&troB>}NXTf*I+3>S* z4*Y6tKvVWSmSmjIQjF_Zx^X@0XxzZEjhk3s<7O5z8re|e)<}dpbF7^2z_j}TKG9)+fRI z&`%!G@P?{5=V-*@iLOLvdc=F*);!vBk!ZY5_FxIkJEH&`pcrgP7<%x|FRXE63kt#A z@L%H|_}+L7elZ?rhVcaR8&9ze<7sUCXIL-exrl0H&H~4Oo$k&I7whGA{9l}o?;P!A zH>QyxbYqkmrkILPHso3Mc!3QmUB?7*Y+r$GN>GD-F7KV|bI;{{7VmxR^;Lo^-uu?% zk%)$tE|HfrEi_D8S+s|oWj5~rN_xZxn_?_l~YfiM2QtAHXZDSpzvrKbW zmu9Jstr`+@$*4#mW)Cy1R+|jabAy1XK&GieXH$b=rtTSshr1U3aGO>X*^ux^$ig2a zZK=-CNt_}Xwb-X5DV7^{WB+xNkl072+sn~nh81g}@Ro@2phLkLAmiLqm zn_3HWGZ|9M6i7Eyp{p5y-ex=KZ>A-f0e3v9kg)PN`si7b+OCjdudRwXy1v5l)1j}D zjOn6gz?BrmIq{GV_@n?p5QoSnwy~Y<^5m)0v14RR^|g;{Jh3#Lb)n-*oztJ` z&{9t!jm=k~ci5GAJb(qX@67CgGSmr%nw?>^*#*X#-C(lW9j2H)VV2no=9|5t!t4tx z%p9mS`@{Mhr%v%7(8x{falDS@QYdCiSY#YAlF~zQOzg8 zX-Yt$vke{FP;qTT1u9^(jfp-r0Fp(F=ZYeh?epO%h9lg_X2_R+xM78%q~QYqdpCK0 zRNJTXI_aApVF!QmxuWe^yx?BJ@iRSb?;h_Jj5@!z6dSc$Stw7;W+%!g!7*XGMf;5m zI{W*?X~w&tV<=Y~)a&?hqYmZ;vIZ#=bfwv+c!lJAyO+vstb0(|%92pKupV@@XGm#c zJsX?9O*9~U43Pj>@8KXH%PSU7bbXxQiub;)d9>y7=JkQocM2r$JBqCeZZoRLsK))D z(%H!i#c9s+h$^Q=MvKpo&6(I-v8?vQ+@D4sx;Y+u)C4fhiP)OfaIHBXZZ{WV?>P!yG0Wjwa}n$@modd$!G1Q^vtP|K zxNe@wedgIb)jWrHH8=1a^E{q!p3euHf8k@zzw*iE#eBATiL3diz&v~Qou|sJ6tvTE zuG1U&4A~nEKFyx*5&dltblOKprmqn5?^!8(p_9QkixcJcKpL%QwCiXF#3=VZPi~*? zkD8uW+AA4S-JUM(kZuX&?OTtydB^^5j}=Ew9L%8{vENDs1~ru+O}Uar17bnOj-FM6<=*#=4r@Jyu9J*9z%o2d0V^Op=D; zd!`Y!{;p&y9c0^FgF_)@bEiEQP!>5dr9h?egC_0lSvoySQ!;d#nKOb}Mjkpq1!fk_ zNhjZoT_c^*UpwmB2*=RI=iygETIVap<39G|Sy^T}>nl$0ao+T^-;AO+IpPgH?QcKr zC9}~P7MGi4(smj=Pr&i!vv7v_99(F=09TkV!d2!=u*G~O;*r6ft_5MpGtP>ON_MYKBpf^LY*fWg% zi@B=`OfD`!W>$v3eN?MuIXw#gZW}N(H5{=TvCYatkt3JdAv1GB&e=)rgSlx{Ara3l zo_QH)n`CdIs(K5O%(u~iduNWoz>jR1BY@V)zUdLo=|8jFw`*n8A zXn0M|M=ngzestK}aM^x+FHgZtN_?mi0!`ch!HFBL}l(qNn~ z9SVIJP~yvknZ6FNz~^1iSSag0T-KAJ8R}pQWR1P&Om&W1-!87ao+WkVX7RTcq{3{y zl1y`yq`lG+%Dxi1c(kIU5$(4rUj1h;Mnp8Ay;SNt682VBmY=1@SoK0P`nrPV>j9Rp zC#3m$LAI|q^zrq90lvO4!q*SR`*PqAUl8W_a^Xl{2$uNrp~^Q9YJ7v?G~W<77k@AE z4TZ~n!#tXCv#SU;OR>`6O8aj@VAsD`YQ~EoMOgPLq`~=8GiJl-QZx2}WBIl&-EgUMQ8~K-;Smno+Ed3AIO_bHw)|pNr+^x%~3@ zroIB?*I4lT#zCfUJaon1-o6RY-{(2Y4F70sm9)@(5Af2VZi_Y#!59ui_v(+PeXHmI@ryF?Cz zP;;cZVg}?AANyFflXD&!`-In$q0Rb~XgP z;CQMNBTDKCBE}`mG35A=ewD&^)>Q!zFYZOzT5cuzT5ew zzQ2r}Q*fqD)UIROwr#$d*mfqiZD-<%HL-2mwr%r`?PUJ>Ywv@v_R)T->#0@UU4771 zeb8&&cV7?FJps3wemZ3M44#EPZE}TYD$%Rszo?nwE@WOx;S_=BUVXQ{>OL7{l$;xE zH$YcG%lLe_?eYS%=lzK>oQy@I!J+SF0Ba_CIt+$Ss_#pl_FCk54{XO6CV9xs&}t9y?32h)5zmdYtBYyLPu zI_#HIgV>v?=R^Ihu^=hSd^$(JvSUpru$u;_5vV8T`*96D*ov;=huo*ME6TF+0wZ@X z0H^BLx#zfRuXXAJrtmBf8oagW*mJ}CT6yEuw)8@#d*L%Y*nY9CXP`M=oT^4}FcPI_ zU^3ra(yLlBW|&{(XZ(@~Q)ET$p3OWf9Ib0k?!9+@#nhHXVr!p1crboYuSGEK;y&%=^~H4mE^zepF?NAG z&-DR8_3<6kvR=xv`+}Qw@PW4S(Gv#myPGF`$B2iq+n?M+yhpV=n?rlf$W-f)+{F~g zRvZ_XV=K97*mWqX>R|NF8`bi7 zR36)gOObwZu?20TfhG*pqKW1IaU+r&Cl*}^@4f4tGA8T4kGn}@_+sC zT)GJ#{lo%XD28Ewmfv;=f;hY_?uiEQ`5w&vs{KsAB@U2$9nXdI`CN~F<7Z#qO{RS7 ztj7pIUfJ1Aa=U#o*ZcC*LJko8r>-?>|0cn|oHZN#^s~@Q--J)*+|tm`8MNTO4+8TPtLGu8QiuHYV;^ z(`0&13T8bqmS$Sn8Sd!Nij6{auV-a){~aaoQ4h)FuB+xKfqX^+7<%wc2q^g!Akih4 z2bS^#NP3qdI1}Md?M#G4^&a!O^=oh$)8j`xAD7YhE8z>Pk3c0~+EwK}5Eh^F;9ogI z6Rs<0rM&-gr0EbA?f;83cIo^b?8!w)8p(*vX^D{)I!1dW1+rC&{`tJBDlaLAIDWT`{c^^c1`SwlCYd zM}Ry-F)G8|zs8mF%0B1}Ym_dob%K(z9%44LZU{6p@!A+r!NZ)~gTaamHqC*V1Wa3| z*!3s8sIGG?VOIPqlai*+YKO2O>Q9feeSka4c(CK)-Q&tq!B+rEJ4&EtvEnJ*EQYWT zfsXdGD~4DSy`=ZIhwU+t@I=APhy*pB+3sQB`7!X&SH-QJK0lt#Fsajr{%P#h{@DmS({z) z3^ij3Sd$xEKD8Z_YZ4&q2yG!*>B1f8f*e1omg08s&>C|PbhkdOi_hT7VG6#+DD2gH zhJcsP@Xf<})*z?1(XY_n>8qmD^2o3DY6aKUUYuQf@LUk=TM1|kt(G!*Fs&5n!po*^ zr444ON(K-+nNZKLUMO2$JLfSs%)hwiY3AxDd(f7v zbq7+X|43qqvlUrRK&s$7&%eH(?v`SCQ5GPQ2y5R}c7F};qv(jUQgIJDp-R@XO%;H6 zH)+q3!N<&&h*6se;7#ohqFl_YHdwJ0+xfu!FbYKGm#&;-#S*o1Yi%ks}G%WgA;4dmj;7eW3&TRGaw) zD{eoJ@NMXOJ+{19G|b~KJ;y3-`Xp`aY*t(Qh$`s0hZbH=oSF5?n)OPW^(vYL2$=;e zRWyWenC)68>q&{nxS$AXu#&5;iX>5qTNF4+$gi*qQUwRdRPVDFrRSns^yF#0QO3|3 z_^Gwz3xoJRlsz8o%Tcx8PY1%W;%SYQ6_o~M96ygz5!uu&U zJIUcTVK+-z8&l#5mSGW9gkJWBZ7$TioCs<a*l3iAcjs0-hORs)Un$rzYhqs=DD>!%zI+j;m>G+`%gLXP7?j@<_C zbE^l~IO$T-=j*$qwRWs=C!1Eze8L~UJSN|ntmUijK!G21W`3M4J*SL1icQ`w+ujl( z)qc{9@BD+CzLlpJHwf+m9i`2B9F<<(OCt22CeHKJOVs`{eg_su1+xj`y+YjIl=rWi z7(ri{UvI1b>Ms3K-;5&(m`@^%$cG=Hl&GqtQ2V7mnvw| z+D&&2lTx0EHbP|UlT6eJWX#Xr>$+%m-L^y#YRsKMVi~E^)blfwHUGTsQAqmkm=UgC z$%+mi-IvyAxXzlA)ugIX3hz=Wsd}OXjj4hKPwMLxJNGm(>npP1zDVs&NRwOi+h`I;0L}Jk&4%CF1D0 zux0bFX?r*6<+IKBm6|!j*Ra>R+mYKwSvOf?hFx{|M)< zjdU7CMYg8JRGCuzjpNCp$!^L&yLUj&Rx)$aH5+ZbG_u}R zj(&?ohi2}Y&LQ1W5J8s)pH`uuB7Rxz%+q2)Z_N&fD8F~HdlLqwev3k<_D12-Tx`mw z=+U!MIzrO8V|w(hX=1=C_lpBQ78=n8x{X}x=Lg8alI$I^GIAqn-%+?TawC3F%;g9Q zlsFeNG7f1|#8K%*YslH>yt9po&;oe~<&urS3|HuydHV}h`e!5)9*SwqbCFRG#IB3-+9?-_plbv;sdk3AL<*Lep~jGrSR zby6B;<;s^Yf0l*)O*|t6OPuWxDh2O2uZkwQ1eHry1lKPGr?}=rdo#;o{kLpaQl%)Z zUkWxqK`o;K$HZ7W3{l{eB1Kj}zaT^-9F0PxB#NbklW)mrPWI58pldKZjPuKe*%HF! z3ka{#uIfcy`|J~9!$Xi~VFiC+;68Wdh407Enm8+Y28PLZi&M1*RKAX-8R^`E&E8U85=sftog_UXj z_1vTLeMZC}_^X9^?kjL=jtaE06mK%i)(Wx8-dXBu*>PF=(0B8 zMYlsy?>x5L zHBGC7x1{>JIf;HgEN}RcPU;)16aK2i7NZNq}*_9iS}z>mJQX!oXJY(qK}S>I8#0MwB-e4Q|OMUUF~g8AI6> z90tUSy~P@Dyh!D}(yX_QIR0dGj$y0S?b26$eq6`TuR79NEX6Q}+=xmZ!>pVWt)gjh=ywuN?x2hvnDof2nQZhuY1gmVfR2>cR{J) z*l9>sqPNn>|wo-{Io4@GseFk>ONZM`xE)Wl5zx5 z9}Lx-y%f4^lF&w6ImA?j+F1_o1EMobv_(%eJJ02?0Ii51>cdL!38cUfse5 zVzI9jMr}k6k|D6vnEaJY$%#Bq!#MPI_Qce{m0jzM6qdAwBCO{Fv^T49X&pD&qg+Q5 zN3f61?elD}cgC2FCR~~O{Dg7>rs=A&Qvq?Frl+**tL9>3q?h$pTqNKbVi{(gOadpGr*EP{LsjCCo znfn#qA=SvI)4GbK(RiB4_usk6@4*^@>+Rn=&9~6HksJ$pVZ96cyl(e8&Sx9q%4>t5 zgLByw>YoXt>pRZ!?CF)F-Z>jHmWCgkQB)ORg7J-GW>NWcM3$!cQo;I6*v1&p<4@rv zLq<)Qamp4hIE2IKV!_lAP>T7bo?!=h7PL^_NSFs+a#+lU8J@7I5vfj?S2}W|sS%p> z3SAQWuf+c*5H=quiiK-NAUP;W`9pjRXY$bO6wH0vbuoQM4Lr2oMR<;uNT2~Um;q>z zBQoNNJ2-Y%I>Ol!Jil&iJ(wgJtzmqPsv^C9mE94%88_FD6i9$3#*&W{Hm0`COAO-+ z7BI@nD|h`)eq*AD8$9J&S)l#7tz~1uk=`kcMhI|HOknfYpJK+*w|u-?xzyX6Ucd+AAyCFtu3utfkU7LFfVe z6o!Fu&1)oBUaxWaE1u0T_ZmY_vGAM2YxS$axp>c@g3}+%2iE6#LliW@wMCN6gIJt6 zr%-JN!&I`sCez?TaK-RfRQvmeys}ehwT>sj)fcf^jKeU;-dNFdMc`m>#{QF)J|F%FP&=H^V$SuSV+m2@k<;yjE67M6_om4M3eyq5^i9$7}-Y@ zY>#prO8*M+T{6cA@z~mybW24F5p{A#oCE(}ioiCSa8|VlD3ovRr_+LBLuwq!`+R7S z#9!~nFd*k|BK{fIFc{Y`N)|V!;!5+212qnb4AkFf!Le0&VQFnBM+Gy=jIAJ)I>#<3 zP9Wyl7G&H4W}%ZJw^-wyv?t~bhVYyCe|cmQ-h2bE79b!usG$ErLjAwI^#3mu@PCm| zOxD&{ejhHI5{b97I~8BVbyDgG6L5@?$Pp>k7>ukDObtg3M>;o@Ov@lRG5}SQRFE$o zosZVtE+20e5MfE_=gNIq9X>=^%#lFAWbkajmn@2|ZY+~xY>-8N$dt2p zpFwvIPHzX_yVc|Q`N93N=VK5i)+8o#=f{P?_j_t;p=Q^>!(AM;#r*uIyKv&cfvQG) z9Hage(Qbkb-c;)9mB&M-?^A3`>iW}XOE<}6Rtx(2!LQZq9j22>vR8-uoTk!;XL=cx z4nW@xyLOX7{JLpRS26HHv-B_y78Anryx#cqsv>P>qwqM&Vkx> zj~Umv%&3QkOjqzqow$oZk)v#of4=bNPrCSh0by+k`$+sV&EyHB6H2+meO7?Cmilg_ z^h1g{q`8z|l8H)uY7xyDn-7x#r#-LVZqvD^1h0NyIAZ6!leE3Vc*!zz(QRf6-+1CW zT`|6fBKOc$^wvTl?)U@ZPsfC!CJmNep%zW2XFp$Xu{p=cAiH`KgIF509ODJ|j$lQ_1l) zPORRl^V#a6j}0Xoh}n#1Y^gz+%!>BdjovO4)mW7Rncs@t-?vO+SG|ktm#4Phq=#ga z>C>g{XTkEQm7ZMkK_OABLhMp~eKN~?kRk-m8QKh`H`2nvS(UPAawWLwkc(9?3Ntk$ zrH9yujj~+wR|Hj+{2g7sZug&0$7##gRkeQ4ag~kp@cLdJcE^qIdacxFAsg7k&KY{p zwAt~?RV05**|PS=Bz!3Ay%YDrbMiW9e%#4SXh{w3nQQ5XBdm~v4>zXh8p+})sn$_ zZ4PU4ulrbr*JutqC}{Qrwz4_ngj-|xX54l-tto34uIOwOlAU4E_*t5>C#R=0z3NzX zZB!?yS0@e>8uE=n5Qaz)$#RA^hb=^qR+(i7`fvYdTVWwdwgqyOp+uBna%2B=(J0hJ z6O7c1l%tc$GbaypA`P1(~LLke`y!Q>migc55&shr#|BZ)a*{PPx9P0+&y z4u?h+D%UfSZgbA|N@l}{RF4jL$j1z<3T*hjM660PbI?xF->iOzSC1ZwlREdY8OE_y z@REuBzkV|l!B9pohi912;Y3x~ExD5%#{H_FX^!8djOx6~sJDwl!qw#sC@iLuhZ7z= zDG*B0QfK*H54RR?4a4eyw^^H3jD52at#{3Vl79_EtSpOm=u^+`H6yo6R^{zWeemjk z$Lv8jVQq}MN$1V6*u5Jc`mAZ8r8xhFdIm(*Z!<0?b z(}BT!7^d}8w4j3;rzF(nuPTFBG<3>Xb}!X5!%3dlP~oln1M&7daW=uxCphcxrm+Cy zDe-;Z%>(WmlVG4W9|R$r|#G|6ql9vZ7yt>Ho&c>{`-rt== z)>RJtjrvd;2`*d^$37!N3=V^UdZSBv+Er9)=^gP*9+_LFM%y2 zqVEg=2m-gN#TiW}rtOJqcf+SQy*alN)d{eRj1$6AFX(h!bm4rQ@$5nlEg(atwZ^5& zFH#odXQh`1d|v6^E<~vcVzO4LP}sMYvCw)VLTLDL%L(y99hw6j%pTlefm~oX;Fr4u z6+F!$UYL%Kow}q>r-QsIuhvFLEhy{ir>d#?E|Pl-W5b##ZVI`z-bX4>C-w|95oti@ z4u9ah(0PSf1n^J-DSI-O3qX*zlrks9i=rmaQa>ErTos+v0yuhq>Amj!XyEG+?Ydo( zu%;PwAI_$nK5cwi5_5~>uW-#r`HDuvtU`o`!2MU?m=vwGwwms5z>FTTXhAPg;*QXI zkZ8Hzb6`ZKBW2woA6_9ALOG$J==8Olw{LOw^M$P($Rc0+Q^=$*lG{-UJEx#7ev z_dH;5&lfSSgF8r<0k_oRW2}Sa$Od8u&)E%;`{gDt#0=e{8gN@$qrq7}MnsF2ck59d zz-8r^!LZt%*{dApVI??2un?L>0u!8W8FP5%7TFvA9uyu*-0Ts<-fzGI%KqkF~C z$w}UIGT{q-XT_&6Yo9{X;DcQUFzQTF@m$Gn;~1tox}!e)#L z?`kcj1Ps;Q&P`{sVztRrqhU6g1M72f3LL2GX`bBt1xW_qZwOFgl5!jN6;7f}*Q-z< zcEp1_5)x!dQVz7%ahUOvmd zHsG~ZUTP1Tv?)5IMtkjDi&%s8@Ago$Dw##+5o_F%&RktS zX(kt{efv(;#3shYim#4@J%t);HI&1bUWaUQS<&U0i|T3)#!A4Lbc$P%$VVLo*B@=o zdVnJyWmng-td@p}%uJ}1LD@@9`!mRD94$PJ;io7flIOhEoQ<5ZP#R1iv>t-ZUCT5_ zravH847t~9%~;=4(x~u{B_2TiDY|e{BGk8#?6CaS&&!1!Qo!4kHIMgqAGAol_)55v z=eb#E^V2le1Wha4r@cxj2X~_BxQohS#CAJWLkwWPdFU7981t#599KCa#`0(P7`cX? zN`;u=a}(>Kn{QDAREzrH`<3hZAI8!@MRJ_q(>M=q6?w0PQt#Ea_Ym;-$Po>xf2olW z+nEN9Wy}SZkg$POR(uoq1{($5(?J*}t)O9;qYOy5Te0tS_c;V@UgU-D4>axxuM6*W zVEx;rSr$KfVAp%03aS;%*gUy{YHR=eGvM!2>)pvSMpw`;YB9LkZPMuAQ+rOJZm}zd z`!Z@*Io;~V?2;~_zaICkb}7lx*lh^KN*-rq%6&~BoG?3pwX?$^# zVC{DKyWs&9wP@F|Mvc-^a+kzQ$Y1w+uL3%F+U&^4|iL2oR z=rWM^sI@cBuOS^h)($bA8*2K@^BICpF5bN%hl9;oINlKy&D_A@|6cvVtGyc;C-aS0O8>qu4#Cyf$G3H_C; zup2d7zD0rV9oWuLZzMjyc=%Ab3Wz4s%gM?mWV3voUOo$#<>CQ2y^xZxmRFMB4X$Wh zBw*uGDv8CZkw8t&S26cr$Wfk&M~`h-#dv#r57gmh-^=Xxio{Jc4QZ_3R-Z)h$KKVD z&7M#S)FcErJLZyS^WRs920n7SjJDu=#&4k9K5H=#+Q2d)49prq`d(+HHg>HJ075+S z*^tb@owrMVp5IrS+cge;+uU7iLoa;8ZK|4ivnc9)oN~5FvG~uf8)e1kpx)vA^hc^8 zof`<#LRA~y)kfOkKOK4n8y+0otePQgeAAC6zVbM_k0GG4rgA5s`LP^I>|im)drN?8 z)$8SC{ee$ZO7WRiYE+3)&ckWOU1e^@t%)ru7-JA!6Dv72^LcpuS`d2T&<~obQcdX@ zw^`uo2#z%sd(5TYbfNEKfY%0xCnWh<$tGj3jFFK-`godp6CJMDKA!REQ zBtXcuREBr?g2vXE_6a`USCP9uyI}b9x(7&Dbh18tQ76u=L6h8iEM&B~(YRCcSC=&w zUT^Zg&a8vuyMo41Z+RhB1l^?ihRQZSt8+~{vTQ!N5@UB@ene&86Eo@2x;bm*&|6dF z-A1_%#jrba2cLb?NYn&FKSoi~p=QSa=(q}73$mL$JM#944bOFDuPww79i6&}% zqSfb8x&50Xc8uz! zAv2-QmDZlNtQmfO@|wup++)bd*a{BOzFhT?FtljC88pCsWAuC3Ir54%M|BxtN}r+B z_TYm;1l!K7nRp=1DUDVivR{M97~Mdwmp+z)80Xgt`%WMEP)wfN_Fyf6HhT-a^%x^~hum)x)~&_deW=M+l9EB>o0i zgx~|KnwzzTjp47Y^7h?B)i$;*Ay);yTA9RUe@%)5opGl5{F7F~zZtGtW{AfY>M3!8 z_c`O2nAvJ8`w=q}1K7R<>M1=(z*@NB`U~MlE#wM3WP61S%d(2^T!7-)lH@HDP;wpD zeD$i}Rn6azi&;XK5tCY~lCAX@B+_1%8+bMGvGT;Irj%DF%2Pgp6)3AS)+4V~GHY0g z3p;{m#a0wZc&qeZqzkS=GWMA6Hjqns7Hiw|-~rsz6^fBm_N?mM6DDNN_7B^Z^OT>F z_=!2x<1)Ex%aGZvhTSm&%5F!p%Azh-q$Qm)ht>ST~~gzXTuwr3Knr{Fe47iy;zqlr1s`fjG@*iw=Jgf!2Y=4D8_5Bp`;@}zs?HcK#18$H(9=6dyk+L z(9hnut1|67Vumf}uW)arqH;(_=+1)WrP|pzXu)OttlR-@rZH_nD}nKF-S6#h2y-U1 z4Zi!6ud;zhIF)x+-!rGHdD=JgTQV-5;yOB@8b1XQrEMms5gmd!g_gR;D-_ZQ&T#tc zVBHR;>>|M|ROy~;f@@s7${Ka`pwno0GTSb5W<~pE!-@PHs;n?@W$d#MvDHp;7MtTi z!`fa@R!@Ce50$P9Pbju2 zdwUCz$yMvFecH&*wQBQ6Jp3yp!FkH>gDVk}+z?-pZp1kxUbfvUNobmLu7F4@W;^^{6&3;K z+ImX04yT+*r=0aqABf+q!+%9)IMOUHs4-CO+f`_EHauaRdw@bIv%CZXlRZzQ>b zp=Q&u*AqY+iKMyUErOOAU81&&@*$z0)rKhIqxPvyFipWmn8`Q}{-&j_uAXkJJ|{lr zg=>z0j;8!&$40FK6RQWT22x;we!c+d(yG{u7re2tRu+;G0$L}c zPCln^(aR0L;oie?HT~Y^XIFnT)`Q&pRm3bKcD(GO%$21R=ln&&s&&Ato}X*G#0g)x zSxSB{lc+{ITqbMVK5^nMTF^QJH_YV4i`)|<^ylcmOX^y@z0dAI$)8Of9n@)ao!fW$ zYJ+Yk999rJx9wlvYh3l?TuHSH!8A<@Ds7eGp=7P+1fg7dIZvSY?3oeYJ{%bd%QW>c zozosV-$MuMT|&@|uS}}0iOxxl#rL`y3O}`hQu4Hdvh1@%(%$lwOB~cT(pg_l#V3e7 ztI_Jm5RpbX-0Emzqf@ODCFcqpnJ`I4d$AE6pv@g4caPnrO~*NCmSo%`+%FTDWyr>L zE%;!t29-f!vS2B3N)m^Vg2@Mk3lb6Cz8Lh6_U`?Y0NshY91;;jP(!cr8-&CYaH61}OlxsV^qlku&Wu zaZv`_;T9O0=E@5#@{fHYY|Pc*qH{Nb$gt1fqD~JGmK0B^B~2_J?1H(dEm9BvhPwVRk$KrqBvA1&Z}en>oAriUKzl+6JbW)lx;?9!4)FpDTSFw?9n>Bi1~! z=b4vwB7bk>o+Hm|(=O}p|Bf&E6_)pWT2TEJbPKca+f4-;)&>3fBF2Z@5gjM_Jy_b~ z7>HSgyI%!`gue#=BhpLo!a_3YIDl*YIqfguxcdw6p!(v4S75JNqN1>bYuBPMyIbVf zJDzIwSUYr-ULfqQTuJS;8}oQu;|v@w+_tJnx?6Z5D}y87Z+@JD$R4hiCV38egM$Ur z;jyh&B}_qXMXcqT;?R3Ixst8EJ28oL#%+XQ}23TcPIguOrUdSjXc0E#!MnU2=Q zS=iP?@|!JptR*sjqdS*hrN*o7$H=b9Z@RtQ&7b5rpR?=R&fyZBiGg{7aJbP*Ti6wW zpcZxkcAcgoYER8kqZzv=O7mY?&xwt3KNQQD;fGh9HdGU8fIid#Y2z$Y9Ux0xgH1}E zWuKL0!X3XEkA1>~@fYS2XU^&w46fU@-rd^r2+`BrT?(<| zkNX}j9pLquiaLJLn7ylPh)}U3pn70qvxeB3$=94~ZW+VjNFGSWk1;+-Vza{gmi=^F zK80Vtwexcr7BI+A=LjTP?vcM07}c3>bVgHFgHn{C#DdrQQ>Ys5%y5vP)hI<=zC^Uz zsB~kMXs#;2tD|!(qO0622y)zAQJOCECntv>Zk9>Wp9i;>??_nxcB-+Z)*VUf;sEaW zZg~ETa?lf;St945R{BME)z1a;s50PeVnInnREGM|J%7M6n-Wga)P0JZImwi$+6S%J>G_PT@@ z&%!_fD9$3Ql)JTpZ=5O?zui!xp3WEiJvo8(mi6UY9Ah^uIKhb0dO!a5WH5*5iWEFK=G{S!I%w= zulH#Qp{>VhD!XaQW_**Yt((cAe!E|QyqnJ6o_iMZwjv@umeg%lb`uZO?~FTHbMA|B z*OYM4#|lN$b;3>WKMpiomTPUT<-Gk%9isBNl^W<3HF#X3j&1Yq&|en2-oZYCWmzdUl zx62#RZfxdNJ(AW1d`C26$$@Ep5)OkZB1^Z)qi)HGoAJk%NMx2sXt8l|4xBzDD|MMJ zg`xH}j~Zf`WamPBuvpo#p@=i#%#Jr)&ML zV|^*R$SRz_6I+<(#F*h9tInVFCc4OfOFXZHPJ7*@%(n(5Z?7`@x^MBf%2q0X?$Q=V zhwAQE)JJz3l(aJx6W)EDGsP^u@O)kFyE;D7wYU+?uR&33{Z(i@n}Ho|idlr0t-61X zkNuVb8{S>0sXJXf&9x~yn-Lx1$nfB1NxB-WYseGW;&6*5215!*BFh^l)N~^>T~_u+ zAm=f|=J>vJ5&?Q?>K34n$-iQ*ZEVSIBgLUV*8WT$vsC@SDo(oy?OQ4CZ+X@(QA zQWReQlevjnwa-v{{Uoio>OKRG!o6fGgs`FF7#AYN-CqE%Lii#q={Bl9V0C%0k#v+n zQ*XZT8Q|{Cz^K8QOR_B*>k&Jwk%XB`ji=z$LpjlrUX2v&HljOg{3EkwpCfWDGtGy~ zi6vUR0IWKnj2u-cDHm&_%#WJO*zyV{D(*4KXRqL1Z8wHd|7+n zBGF&C$v^8)+BzHfx2KqfIr2p%wt6FZDVunu=36b-Ri;h`=g z#~C5SM`>Hl+->F^R5i2J(64@TbdOcSLajci$Tof;1&g;Zw$Hoz?C2|wSSn#Sk! zLtf!VkJfAXKC9Dhbdur8?`1c^r4v!B^&`_$Q(t51E~wO0k@rWLwp=T7_Qye|lzcbD z?zFenOuE05qM?8PD0;P~<9w}t@9N8Sg+(*(ynTU3<;Lrtk8|%@secvr?Fa8k@;4=v znymemSo{zb_&-DSY#)>v5+i?+-rQY<<0)zknY;WSnG`d6R#a24N`HP^e$IS{B7C}rB8yFtr#0&qyU ze-7`E3s*~1wS#%|B^+{~EbWe@QT!j|al{lE0Z2MJV9~lFqRX7yIR%590_o~$)cva4 zsN|CKN+AwEYp*AE@>@E74@31>xZOm&?)Tw21MFCodngCpiqu=SLRP2r+6j#3W&x!mXam{VL3rI)eCamj4@G7B$4U-0ROa1Ti&K_qv(%YQlr2j17;*b+~sHDeRgPhZ)3b9 zAM~gogkA5A>VdljwQX*)Hk@Bkv<(^VUXW&=J>|<2w*o~o{luIcEYHp<1=JERg~xv| zMdU-gfa{*m<0LEffn10oyLNHoZcu*JG-dgFLzO{8SUj2EzGEOxMJx z@Z41&*SIfafpUO*v;ga*GNXmQCxiIAp2@D7Xs6k*7NIIR&LcZVQ!##8Ha3zW1} zWRM{=RA57ZtUNR@0y2JxR2<8qU?oaIQKEJ6qXa!sBH#hnwjK@e0Ie^NzmM`mDacbO z?c@RtFd|J1L|G5Ef0^r}BGGIhK1{?A1S1Yh^B^$~8kQ59f{02V`lS^8h5|04bwDu! zV|0NV3}IqRZW3=8O^Nd_Wa!7Cz%hXxA?e4FWw}PmGyN@#a^kdGX20bj1ELQ2HjY<~ zK5fLIs>6xv^@J%y`e-wSp~Trhd9b$xm3)vzXf%=YZZjp8VQ~bTGmcj3f~NfK0XxRo z?<{Y4EnBCX6iW*D7Yo(Ers#tmGWRdYLXB8cXwksJQ1(l(g699sVp)XB} z;My>bEdLiBmmh5%>#(g{U<|Ff37oAQE553sNo0C5Sfk1m1DpcFwz!rmV1Oo?CDKgH z2a4y4^eg`Z#5Vvt_3`$QNNsDB5<;*bK{|XSrg%_5mn{U1LyQKr2!<-e@Der*CQ?W` zT2_UoA29Ts9OPH5l}gi6fboeGsn-L`;t`GjGhLRT}k1$;yb z4?zf0l^6#Vi#ZvfPg!BGx|T&m^1J@tP*zfn+?30kE(%U#0bYtqN6NV8%Oke}g)@ol z7sI)}1ayN?&qrV9K~2=m8^UFu^Ml*MWuj%Ld#KtV#=R18zS1ag#K1_<5WvFTARy^4 zQ8$XxsNn2q!ni;YsBnT|g)-Od-1$4fKg;ZBKkyFGB8d+A%PGMQ>-okH2@zXUB@vk~FhR;C@63bD#6u!Y6f|jqsLN zNCJ9UvCPb)fGA7>PF}`4_6v>OaK_5OE~c{(VlbNG-i~g$GaK{BG3=i3tJX7LSp@Uxsme^Yrq#4XVZQ~9fYwjMx1auc%5I*?V~_~P|uM;{Id;SnDJjv$f&35D6G)n1Ufa! zDSwE`vGgzG@mO>ok+M}$zRX9cf6EC-)l;Y479r;oDY#Gxc{bdHg#Q91;)F%XF&scA z0rZDZ(;EIt+5{pE1*bvN-jWOtC4Ug{&v)cVg&hiJk;Dn<=|T!#LF60b-ykwdO+10F z-w>w(R6HTsLNNTKX)QP%!{wK-##>B79+&jaW9~|1L0%NvmzNh1$q3=E37)#Che^bW zOxaJZOjX53DM)>wxCoB0ra{o2*+x9Sq8~sM6)g_Dw|%Phy&ScYmz^k5y{DX_vZx0rg`@AQ_= zHeY5!wdDdZ?BC>Bj7von;tp?V=g<7_DC&jz4!!t3sM|%1lI}u~c%xtZ#f(~YEC+S) zqL|gj%{#6{&S8Q2#PhDu?&UBNhRd}LwI^)mCtSW4R@;o_sU0vFWcmI56g7w2%t?VE z`}Dc!a=eeda+1G!ly7@iSJ7X45Kw^$ZcuYTV6WD=cawzcGqk^#t@^d(rq*gB7jm%}+r0V8`re_BL|No52~Q_7^8N#4Eg4PEG4xIZ(w3B_=NNgX0C`JJ)AbF#6M&Q@ zspOYV@YfJj*)jNP@v=`{fFUuJdnI3F8znm`yU{C$!vO$;d>$w zu&61Aoz`Ri9tPAYxk>A>cn<`UEyl?Svg#RkOg*wMGGn@ef1MZZ`aX6_P)amul20#{ zQT>rV)#bk;s!Q@Jg>aC@dm|fhT#LrZv7alWLyL)_(Tl;G#&7A;KnHsi6BYfEpumbw zpZ~qOUNwJEFq5FffyPcQ>g*IH0nfm`fXyY*<%x6gLgg)5jmL?}jPN`X-JcMUzEd(E z$r~2g&}^et&unSr7~nW}an^T{CLqz|z`|3vi{Pb~jh7rAgTv;9HCKj}@SKhs($isE zC}AdGo=c1Fu<$!3n3a4%RjXm0zuuo7i{Q_o4hr*vV5f7XMZQ#>!L>!EM6y&I;&Vpm zupS=lARHugbWXxS!qwV&U*5b85y73Yj~>6{PAJngdT%C( zmA6Ny(3+iq>pf_{@}|&4K5ibL0B)4S`gPW1#nC7fc6Iv^&=r%J?z&(;k>kj6qx72Q zH-JQO^(fZo+!*l)k=XbnMXm_lp1Y^>Bn2EVIgITvO%Ge4C|l|W=eeoLvn859vIbQy zp^Gq zOrvkzGfAZ?wr$(CZQHh;FLo;WVpo!iZQHhO+sUba?;hP}?2Fx}uhzwLwdR;>zVBFT z{^o;QdoT4Y{ijf#eRoW2zsaVZMMYlT+)Y{K3Re5je>we$T=jh(iz7|eT%LQM`N?Wj zeAIoEeY7*NlDR9%Raw3baohcNuF$Kw=GuG|eH1>OB7LNl*^QcsPDS-CVRf|lk~HK~ z#k~nJ%87LAc69WPzEk%t#d_Fk=|uXmU*^#WCZ4Wy8e^HG&9{x#zJdC2b?gdwtVn5tm8Uo#T1;!n zTK*Vdjozl%-IaW3p3Dsl*H9f`o=<^(l3&^0jFtJjxL9ymRjlHwU05aSPRy9jl`*cs z4Y2hlPJ-T{cab-&P^1I2mKXmuEGQh#Vrtgy7Z65N>qx}5BnZ7}-`-zj#k$cSeBXIT zX$dzriu8l>}-y(M}99Sq-vK#T8pQ2IdpP#;9-cTn*K_ix{0 z_f@@RdTH5%|A^Q_xhagI*cnF64WU3&=$((U*irds(q@4+-K#fve}l5TF)TG$vda>+ z4LaOR^xc|1HKWCQ9g%qjme{ z+?%JM8c0js3$651J<7U9dLeMJ0KEdq&9L$>#QA`4jXtDfmnH~wEut1!s>kuaRm9ocxEyBH0<1TSBahLafkp_rfEA@C=GG60!qu2F)FlR>17hb$aQH zaaz<|0qXMsj3;h4B=Bf@hX7+MM_C^+F&i_@=8~GqSRTt-6#yWkPLu~7y zphAAn^#2k@(DR-b{7r}~NcbBB@cSTi#+J|>)u$gKC{P>;O(_Eo92F<8z*wl((1Egv zg6w;u_4vxZ4%F}a`!j)s#p5WMi^bw7%jfy(?d-H97b0+~U_~(5-Q;3cVMF)kG3@6P zfga!9h&oQjx`val{-hQyXvE)R7Xm$5QCvq!iXa|bf<+bF@$4$d-!&4EJ-d!2@O7+4 zwXQdL&^VC1(qp_whw=BZqI|o1nYf{}i2_nPR3gpGe6?NDTJ){`y#Th_75sqOstMwu zX0}B5@HZ8dyI|PIAO7ueOHTEZK)=f=bQ_jZdD{f_-fP)u;VgN%X3mV#@=E#dXtr67 zKQ;CQXGn8+g+X&hnS2OV26i5@dDLW}74ULHPJpJ+q7n%C`I1Hv^lLt0kX?LpOB zEIURY*eh9Jk~L`nu*U^FhoacIU-@HW{$`e!JT#QMyDU*Oovov6sH#J{EUm>MNXtlG#j zesjw`X4Iqxz0D8EYts)0ss~=~i;-%ZGC-TmI_YUu{ytMFiA}-OTN| z7~>`m(YFj|oH8j_h}CZxDfJyt-yb=3bXjPb1|`L=U@lV-vBb+gitfXsXYM(y8!l+H zURD}$TWeWJ$IzD#bLUiN$-ISf5@l0EXUOSm(F(-{H7?wnAfIX+u>xmI;GFaqoQfP4 zV9L03p$=B@8s0ka@VWjRKorP7SwPY`Fol`bSS)oHWs0^9wmE#qJY^z_&*op+qYqCq z|E;e%$R4yAZyk~%QD)_L6AWrs%v<-TU()=e=><(u#Icw;S*9_nh$>n#_vthk9C-F9 ziJcT@skFA+aJKTpD%@!%s|yJW`CW)jzT8!MOfVxG8rP&a)OKZ<$)Q4ycFDdjI~IRo z>16-KuVjBiCdMMdh5MrSjZ!$bCHbziygWcS;I#3HWUrDmCqh+*kI=~cDo(I znwz2XH3_`L;_9Y`QyB^8${9!oSzielLrl&h5Xt&`BFyn$vvzGPUu-PjF7_4~)_PGFnT8rs8JUK>$la>=szbNNtgB|t$5fxorSuN6d3q zU~?eWJQ6Jl$1QF>!=xM>mw@dWvyf-<=NBFc+X-f=(D45w$^Vn07V=d7{K_U~J3%cK zD)}dgSpL%u4S1Ik_v6=psUHiq21C%LX{+jM>Hhn%z#cpFY#+$$ok;H=KSEn< zGV#F{HJyR9_&W=*9*J?8RxT>MjCHYdNKQd*5-?emPnx1V_eIxAtskkICO-E@*J`dG zX|qX%OH*QXTZ-@x4K)omsvM>y*XNcJdUcAiJB8L=E{NDjN1Szh_+T!nE8UpwC1R`| z6jODz_Ogq8s543fpTHXY#85`PHMX6QfkgEnjZ!Ye)(TILH2S-gTGZn5mM>j_$OjHw|qlRt#U&g_Ghims8*MekZ*#x5np|1Hj+BZSc}%|G;;nQDxe?Vs%%4s4NLE62NLBWivOG;ShzpTs1w&P^Za<54?cBx{QBbSpC9jW%%{8On~O&vag0*Q)}CS`~YKnCOUf*>FehJGZr zW>mV2%$Te_)_Jw#=MPVPf8hl)1Ft$~g8-2$vyp~PFwX^|PJBm;f6hN7}=n!a)Mv}=mkyw9Ka0ZS)PP+k99tyAi; z`D37bHXs`v&HQyB)R^{+>W=B(1xgm?^}dPJeOyP9f-IqyL)Qic{a%uvF){Q2X#qKk zn&1LzK{2wLq$(2K5YJ0Ce^=bLoZa;8E&l=m+r9>JO9r(9Nv3JiVB1XDX;^ZaJRSZH z0yD@QifqfZleh+fbk zGp`zO&I$!Cwo&&DvsinIvMew8n4VVfo|aZ4Q)BkxZYAkH{EAM%uv?!sa*6Im>kr)rRb z$>B!u_x$!4y%q%O<&G;rep zxi>QtvLeH79u$cBAzStBOCn-IOx>Wc*`j5{%?dL%zL-#GC;sp>+ZMOq8AZ3@jJ<1h zL~9IlEz}T?%v?ZY9Q)=5Yw6J7Ipc989{e#cH-oLL$~Do&kpEc~F#E7KhufIlS`u>V z9cLL>-zpc`ahK<*XqB(GtahNtpLx09j1g)Tei zVY4B)ABJ6Gxgoi)8jE9-RqWI@B*$uB=EM@4X|o}`55#Vs;}qFn!iHd*T4;$KvSXW? zYsnsJ=_j@q9M#&L!uC-5FqQrb?XlRB*_Rau9kFk$N6)SDt_m3uM62FH@<(yI-H3zXv&P;PS1V+#B;YV9iZ8{|$jQ z+=6+$AQu7{Z%(NdW+Pc2tNXSoE_Se$rRQ5Sv6T-l{XK$Ki!RrqQ!LCtD+6lQYbUnF zEH8fSD&Z_tq$=0zd#)^GJkD7!!NjkV7T|9SBCxzVvIg+Ns>Yqc>T^OE-<09Qf(m3I z+&U706A~c*dn^({Vhz-qK^!Ccc_c`!`^(A^jTKNdgK8gk3XmSR=Nyx_&o4XGm_fYKw41y46E6Cmvv#lTL1T?IbB}D(FY{W6ybv`ZDgw}l z-R!)dlP;~^it!7tEjQ@};G^{cSNzKCdaMaebXoh77hQ}e{;oeg>lBc@~%KawOo>|L$@k2Ih0xJ<6IYIKn zQ~i9)Ds!)#Utl*qecgDV3Zd5E9b7Xc6-xxkP4MxE1D-aucsI5USlViU_V7PU!KG6T zjxxP&^N7nK+E$7NZjM-e<4SdqX3gT_;D;u>%^+J*r z@f|@4j`vXD7SQ9fxd|GFT4ycNe*QJ4Nl6Sesp=(z=H%Q;UR$<>0v2g9a@6|NR`k|w z0Y4pJ)O9ZKG7Cs8gyWv=awu3CO{&%oQW6y0iR))fa(^lQ?O*84-=$g@+ z)%L(GOPnBLd8{_X_N%ZxmRm}OI@zuYodo!@G#;-NYK|ENUHrUVWsFo#b{aLF57S^k zs?1?_xZSyQr>g)sD{?h4n?E_~-*?nEkR2@Id$Vm}HYRg|4===CIMyL(R@ZBy@WS3# zl{Ck@!XZ|w6$j<}`aSc!L*93kazNtm#c#kJ;1%xJYtlW!DmyT2k3V;<{ONheC3^2M z|L~}xzFvqq497*qxmvmg(M33w3aETWzliXM$${n?hr`jMrQ~T^SI)#?A)#8O)zBy7 zQ0C$1d%mGucxZc@q(_FrV{jN#^*9p%iD}g|qiSa?%E`Rnb7RdgfXcMhMpXTG>_BK* z0;ArU5QbXXo;ww6dcsCKub?^7auSn3;|Un)RP&Yg042pYAL?Pke~nL=1rho1PE{fY zoCA>ICwqt_cm+u!G0qXHV!x5Z9TZ0?e>F=|)XM$gkl7JC=nUFOC4_$xX6}e7y;f_1 zf7%_j5TG5FbD--0J>Mnd4Mp)shc}9TR=OinCfF@Kf%FZ=*=4xl$_ivi3#rzG_3c0F zN65FugRoB_v@(%~vy&~g7BC#!l-ePP9G&q4Gk^bdQa?fH5D{-vtmdJAA5Whj%CX4gUjd=F`=em^JfftZW&sy zF{~3cS^a1E{zbh)3QE5MjbTq{T=Ac6a)zhvAfn(I*NMb9Mu>)=oFS@2SnlD1okPG0 zk{#i80+Jk%rS{uK$9?_kj^@7BpCki9VgENi1Ulm)sqU88O+=4d<*r zvR&zk^s1wD;N^oO8`jdI>)Lq?J^}T<3H|%LBvki1?b4eQf7jcKd>Lo#(VX)DRHM?b z_!`1Bqc*koC-(})nPF~KaHlTByD;8{jH~0e;L{*e3603KV?;W<(jKA-Ucmy*sCL_((O8zV=EiiK04SiPcORTQE5-UPdiBqN!XyoDF0=&M5jASn$*9%=6FttQlP=J@ctYDD zhxU0Y29w;=MqW_kptReIiJwtVS5;XxyeD@h;n{(pI;9a!@CiqV*%5g?i&HMInc?eX z+>J-v1EzX@U0r&vTDxm7+0v;e(j>xuL#Nv2o9Bk)TSE8S>9CrMMAZ%%I&0cSQ;2?C@N9Se88QZgC z{b&m;swu7DqA}L8#XcW0U&LDT6VBhHKwa}YgTK@Q<@rlTgO5ZXkCi{;ufY(X9C2ur zWA$&)?OhFV{hJcr6pUM%ezDiGrR<@3?6UX`yJd&g{xONE>eEtN@m>DYr`c3p%LLTR z_=pSHm>Jgs8=aVdS{j-#@cz6N-1OO*$!XAoEQjnU>$-_`}D zCjg;m5LuNAalRt#nXCtE_Yu*Y7*KK2^f}4xv>?CV1^A+^X`i&P7I0W5losp$ToKjb0F4U;hK;|=F7cIUySx!X#LZP~|9$_{roG8Z+ z-0DKba*RLh=mPSnR3Q)V9oBgTgE7nx>gNSbTByg{{R&4-gkN}b;dUWg0K8V6R|uI# z2yH8|=_nc!Fb0%HU#kv@ejJ?DG}1(}!zf|w_s@i|3Kk+Nk+YZsc&tSHVMagNNSi(0 zc2S#_Ptaj(_06RbFovd2xXN1|?R|uXA*hC-T+7(+Jhm@ko2(E(1-5uz;a#iJ@dS)8 z3j^e22chv1KI26?#Y}_6y)xe=v~4B6$S!Y{+^DeUCbebE$(!MqN{wq)RtFZa_<))U z$|V=%_}?JYO#>H>0Y?Vbq4#%KeT7nW1A%2|fyV+0-6y&19#_DA>a8>1mo4K$efye- zeGravowG`namDP}8AE??SxEpdKC%~xvX}6{eD_d3D9(L=(>s%ni9P_;Bdj^9q-9n_NenL(Y);H+wa@_P)(oeJ{aL8p+r0xVn!Bo|kCoEO_5Ql=1? z1O9H!z)VD>_kgFjLH`y17m1_N(Y+pVo!LxoB!1%RuUFYW2SW_w?g{5rNlC+YVds0P zmA^C`X*NXjcdy%rJo`iz`l`?uyT|^@v({N6aM=HNXFy?#>P-v{bsaFlkcW9;Zih$v z!UXnfI!2>o789e%K+uZR>}+QA@US|e0oz%Nxm!|Tcz2@{6SdXFU$e&e0nXZ#$AcpxP~va6JX2+1lRkpo!R? zhBZd;U87giEJnSYsC7yBx#Un?2!YH_JG_Bk8i&fNei5<9KX}0b@x5_muuVmlh3U&% zXZML3>kQfp-}@!J1K9Q>UAx>TU59KF$}yZJGp{>EAUNZ%r|sc&E%vesU99%;lI6_C z_MHQE10)9`jpMIX)?nK#KsQ#pxb89Ll|Eznz@SnS%Dmm9MuI1A6pLgQz*r`K@zFX^T z_dbexix^b>>HZgw^d6@PB5;1^_of1 zo@OPk)ur4}Zj5p>NoX7KeY;~tfbsC#JLq-Zh}}u6HZj z#>V+e!LRWr*N8!KiE20?N_vqsyzvgE9Z8a+98)o-`n1x_UlAeBBiKsZZ!OcdyYi4< z@4=qOrzInRO`(7+0sVw^Rdc~TC!V+8-aSogeou+r?c&4B%Vs=jDuwb&ct%eCE1JRm zMzbsvb_Dvnbk+|*)Yh<1p~cKjdj+{lC%lnUkp@lB*CEJy4^*y&lZJDA{c2hHE~!TrIA0Tn1p_|eMWL^& z&TN>m)|)N_2J8LSAska(r(M$9zQ;paR~Fffv`c%7+#UH|Aif_$kdCUM)#2(NNFxV0 zc`RW{3}4_$A5`e$%{6bnG&Up6_2?g1OJM@zYxl>R99_YW`#h_dUtpO79<|b4nR-J8 zrW&`YD{j6FIzt9V9=95+pC4>ZIo(t2_kI^%UAdiu+olA!%`3|vgzxFya@+s>9dc#C?A9Zg91k-PRZ6^jUZp0h94HauhqhL)<%%@vb*T?NF=lgVX7*-Xz6_vbz&7K z6d%MAq!CcWO0sC91){8o_hKZqqJN^y3L-Tl8!9iM%9cPe5G|Mb5TqVb&NYc6lH%850C~&kA~^UvLTD+Cy++P3>jz4s>*UO55SVB zOt97s(iY}YvQ1%_4QVPFp+;~G@iI-f2v2a>qhjEAM9IWF?m3&(Yns}kM91RoL7Oyd z8h4OXv2LL(V@eD(4q5DR@B7p)yok`UG)L-8;O(iqG`CD{FkCTiBY9+8N4HND?&04< z)NTw8LTkimo=T%Wx6TbxYlLZDo{=uKct(!7miQ}eY>iDIY--IF<2zD;o}dRc2z z_cftI+1753AgE{`j9=>9v#_ar8PsNo(@}^rsLbBuIA^;pc^7x;>lDs%u0|`_R72j- zA@dMm2=z%#zVe%M4j|>bDx5q2(tg_z81ufGXI?Uq?k?$yxo1s)%7JH|o!44=en^(e z;b&fDQD(n67)6~{T^(VOEA}=YAIb?BWt~P&ziQQHf83zT^twuzyWda;41m@*#~>w}OM+NlPX!3(|PenU0<3)$2lc9x%74Zh@~U`iyxriBJC-{TAEB<^r;*?bwpaFb zhHazkQIQLmSJ3D2c+bR-G!9_y9r_*1mbU+t&q!fM^G6~=vcYZsoejUde?LRw_Py}y zk6ilrTjy7nT!w(%=tHM2*{`wdgn%2qJBF`(-d=&El2?YhjBj%g0V_sOPtRzU5J^VZ z*$qZ9ntrl6SQ*!WADe>xBw?6L#vw>F^o)B0o+S7P-k`h(WP7_+{P-)0H#I<7AQoKT zI&u5z7VPS=W2oG%^UKN>`l~OesYA3c(?xT$SQo5*O|zIkf^BWHn3ImD4yp&|Im88#_}=FIkoo z%ebr>k7i%`b6NRxjfUOdMh&dk^NsQ0DJF)`kU?{uJ7y1AFv zu4)@MP39#R3phlx*_P+~JHGe77+HiJ7kS;E^F{(Ol6A~I?VB_f5Wi<6rg6S}h3-E3@vj>S$n zMkc_?#8f%P&f?j#dH3;&GiVw;guTb|*YuviWX6Kl%ws~f#|qt)F=0O8i0tGsp>DBF zg(}3}@93C-<8nCfdYF)AF;7`cU=GTX#J9%6Xa+Hbkzrxf4Gn27EsR)H#yHVh${J?J zM6V#4FpqOUub37_$Z-_crVqKQTcOsAi9_jFB-cvBI5&-^^*7<9TyUAtuRBbbIAFu9 z`V0+Ti0m`FFSKO&SBCz$)&GdxB%xW3_H+ET9VUhAofNI1YLp?1{Fg6oEiQzXl#J zf#YSudLC)HRBXAFG+R+ppp{vurBk4#Q>e9GptWA8r65tC6KT$eGwDsA@#xEHBf)B8 z!FnEQxm0DjbY;1eW4RPPTakJOAFRA~98+Q#UyBBhwaygEA6$CRb;RLbV?G2!yS_3R zhQ&|^HKea@-q8odtghvW^}8V22k{y5L{ZrldMdqzFYXfAFzcAc!6vwC8j|R!b_zMh z%DuB1I`+-K{n@?tf;_*ev3t{ZGqW3-4A1b#)sv{GAEwmNQw~5xVTkZ^pqKvk6{{z&b!?RraTSBK$@k{Kgiyqr_QHcG(Y)9QciMx1FjP zzY(>kt0)fU_vOYWm>m`(5(Q%H4*!xsVZjXt9bO9N#0 z@N(K6z>8ke1>|J{@Y_%y7H&c&uht8nmBod4>)Zz4ySkdoV8|yA&+;L&KtE_=1Ns^Q z#}0sC-AQYC6l4?!9`E&qr61J5Lw06vrYqi!^`||zVq4l46&9Mi`Mg@YTcW-IY8KAS zlh+NMSz=!kL$HJESK5CL+wDK;5 zv(jaaeS~9mwQt??Pc;{?v?H+{4vIa=q%+J>I8e7M(($U#;!oq?qxm)55p3>ZLV<@sKywyDBP+~ohB1zB zN|Mxo`HMG-uZZgKZo1u*aD|`96I~&RbLQlYUh(8h&ee?n42Hnmpu*c8rrt*dgMWVX zemagwTl1gEG1?#Fv=R)TFc@AxP19ZSO0=LvCR-f=TnNQ!_aqnEe~(Ri!TmA1aW2G;Qkm9{|kMY)?K^%&@rI?qVcKj z`HBB)u(Sv5b3LMo^LBgP9=2}s2Eyrkpe=kshTO}0nY@2~(-j@~)%#*LRqbnd|7~ib zKlyj`J=znB&5J@2f|X~JNgy_aih^Q{?d)+JJ(83O#%$M}bJPeWt02lVcYCT3vSU)? zv`tNORn9R(RLd95d#1HVY{7k>{BKpe8_XiMo_!;p{?FR7Om@3rJ99?f6?d3^lx{TB zhc7|3LcvSoQ52+b2s$VIv^S0MXpJ1~{a z`1Fsk{q@qf+OH<+!PnHmk+${F6Xmi%%gtyh_Jw7vx4aeUKfMTK*pcQx7E4yf2H;)O z0SU>FSQQa;rm122+usRY0mk~F&GgHL$qfAyZWN>$941d~XxQn^LjNAHEUmUcv5xd+ zmO5~_Gscbnw1N$#(HM1j5um1(=go8wm>YYhrrQ`*wZfyPA@m*oeNH(NaqN7B+%V^d zrkNbxak_W%9P|Zy%Jht3%nczqQn|^F1en=d(BESnvE-Wh-*W*iuT0@4F*H$JIBe{? z2I?j{E5cuyam>4>#53PlNL>Unjqwe|j&N-AUqRa!e3SI-y9TQm5$b#%j&em(}1dopw(lgRb>OV(2z1*^*G!Ee6! zX--dy_ka4LnPUda1+~9e|B+??X@C4|V%w&Pw9&VG)A%48_*ra{R=@ucY-{S{F3X4V zn>x%P^uQW-r6+K(_PS_8s`=!$5)3pT+S)aOq&I-Fdw9Do$5f{by8qO;HLb{~=O4 zgH=7zHQ9FVGNa6WGNqv?(LC=#iVlw23Wsb`dG3kQPg;hD+RB1#Qhm;zaXC3)UMI%K?TjOC*(-ME}OU2)z4*QPf-)Rb zrz+BIVp7fd4{&sT+ETf(H6NMUcO8irs+aDi?mmidKw#IOKMXXdU+R$OuPlf|Z+wuS{tSJb0kD0Z0em5#C_+KGh6UT9 zHC@|de#rJW&;D_p*$j>W)8nb2PxAU*NQT!(hnb-6lnmQwhS!IOI-pPf_|&L|1cbs{ z;Ss;RFp+X#`GpUlYT}W+eq2Bj8wC0VQIhxYi>Wg7@Qa}080M1PL98f=I)Og@EO-HV zM^+;2=@L#xG&CTQhOKcxTtujGKqC9O;t`Sf%h;LzfOUlL6meoaU{|RH3mp*P&M0#Y;ZN(NNg}Q0*Gt~H3CSDhLGCGmSTj#f;M16 zVCmp%h?X*h(Skf+mr$;RGYNteVA)WvM8D+|oT ziU47)Z_}-$i{x&OO2jxA@Myr`z+RuRlQs_c$yhc0CO9v62e>b|G2{XXqD+qhVVoc@ z00aOI776|zK;XA*9w;CTTp9Ae_y7Pa*eQ4hqNQ{m7T^e68_`lKFGcXT5uv4As!$|h z68-v&nGTp1_!^R>Lf#KR95^@9iEJJWz!ppo%9Ug$TMz+^59(pBB~d|!XHVY5H@nUX zo+S5xS5|~AnQ(Mp^2XI^^i#b`J7vd3E)WO0#(B4PiG5--)j4VU{L=Mqh|U=(;a!*1MXFHD;DF1spEI*{pklef0Dq6#l4>A zBU5hw_rblWUzeimQEHTuZvy49%z)g7buGYvLjRB>qWV>C?x1Z_(UEg~cI)WH1-G@k2Of)0t9*u^BRN9p`*HX;#DBmb=?}*G3KkHMIotmU z3}XI20E5I7#Kk;K%p6^<9PIy#1xit1lJ6Hp%!Mr23tua;%p zv+XXnfjf@Lgu(|AhT)K>f&VK4t56@dW;o3srzZZ7fWV2~Dg1xp*Vsilzw<9TlA!-n z{CNIP;^$&wOE{K}d7^@OP#0om6Y`F_;QTDT16hXoeE&8j3 zAeZvKS2e-@WPh-N_Mw76$X2!>B9KR*cI*BF5TwBOa_RXrIpMP=5D@VB>jwKB)Yq25 z1ZrA#mC39ba17UB=s3KWmCyDv)_u#lPaPX>Mx^!@M>O&WnV|eb6cx5&8j+m4+}Ta! z6+(IR?sxvYALaG456Q1<$p9qS$=<$G7J<&B?TXbPpcYOfCyj(kC+8(kNay-hEU2H@326}9abf{Bj zRoU;=-{+n5%Zt*zdmE+MW-wd3*27?<6p4kmR!^b&A1e(3xyZP}S@AC+n11~4N%7yk zLjIk)|4(*W&dkN-A6(}`@96B{Xy)u{W#&?;Di^)Zh}enqK@hgV;l3v0AtaDD^Q1`m zfQT5yTl=%_AmyM@$Q{# zU4#x#v&F?*o=^!X3yJG-;JtCUx?;Uw?O$Je=?7x+BkMPAl7#E!qzgj>Hw`g**ab1A zO$%gisS3gGNh)WJ1ZI`81%(3hxvRO(LjI<P3z#THI?4Mn z`u0`Lx9QR>T%WHYW4|f7u)3qKqAK;C_&ST-Ha_Jkhs`n3F^RJ*;Mw^48+y-^8mqFp zE#{GfOOq&L8GIc(VLSWxY8Xs}d);;SVXXa|oI*17EKGeQ*~iFdRwm_oMsssgCo@m) zFEIX-w~388=^9`lAUwbR_q_e@%s=b@LEb9^$wOzZriE zN(b2lny%Wivuf86BE|kq5L5|Pgr<{aPnsmnOgD2!M-k17(k@c3EC7oVZmca*w!H5L zTECZG?$0ZH{#c9uRQv`A=gvG&*-j9z1MPEsjy7DT_>MPRwp}dlRyQ2@e>!qh{l$#g zv0+q&EgcbMgk_O^jUX*dG$q4I8b}OlB5g&47gwaCSaei9IGk5gQgo6WL@|mn5l-w+ zpn2 zL1QTQ6dNq3_DAit@zfinvib;X@Kr(P2x%7Pq{};W5no%V-)u_p$QE8}!~?yx16a20 zaE2XTHAuk8jR3MtGu z;L>8MuZ_TfKV4lSMYJeyuoPRs0?2%PBpyV(CDfal@jk0ew6VM)G2MabDJp7PHrmDO zWHn^|nNUoY>4Y{OP?Vcbgf4$i+2~9pjBI-x-Oqk#iHJANd%LGzr8(=PQeV}K%2mAQ z8oeLbo_ns1v=-CBD643X>Tx$ODRznGRC(v~Z}B3gwk{2hUlXyKAKdFxkzn<2@(XBT z8|YMd8;1m25XyqO@k5-75?pg2xabv`w1jv3od{}uX!rJZZO^&4M(j&RoPt(84Gw;f z_0^spRk5Q=)mq(Qt&&7YIxP+ek~4gzb4Nf83xl;lF_I5-R{3=AmBK+tzXJzu=&mN~ z(gadA8D{nr(8e>RaCl<2A?!&)I!N5YPl?Tjz87f5!zpb9S4-3)WfrtxWFF2*6t2YK zfsNbC4Nkyg%cEZJ@p(s!Iq9$cR4zrGMcj}7xn^B-8FYvp$AoEP?pDx3_~Qf9PpN|; z_zKjAY7TdPGfnolKL77Fk6RRgBQvn6K9nhXPU?XPl8<4n^4R2Sl`%4w_bn5gDO3J} zXzYA^Ij#hCF#N>|RiIx?-FG`M=E-HWHBmDWR%%ajj#jFi^u49r?IZLiVdIR9ibnJn zMmG_j9_G)Nz`=bFIx}s;l0TONfUS9PjDsP2qa;Jgb;VxoNqM6!%|{@^fB%du*PfG$pE ztBB#b*aW>;8+)j^+FnM@sXN5n8`SH3}r9RO9 zU8vI~eRbpm4=J1gCoVsNf1hK^ay=@)uacm5qILH)^!W$D@d+1f0fY`pZlZuV|0nCA z33!Q8x?(Ysbc39T9BB!Xe1igsb0`q)gj_EY(F!(&GjedE0Dn>wpq5-Qg#E=QY1j80 zQ|SqL(-NMZe$yh6rV~2+$k-m3I$t=L)#T-pN6!>pHWvdnVM+84AJ~@iMrLb)kttCKiq$gW=Kn?7I|kXdEnB0tN~>(! zwr$(yD%-YQwaT__+qP{RtBkMqJ~zJe-n()4xe+g7%<*T&oDpO6>@Bmm%xuYCqf@Hb z1y@{^=RQq^(m0tD+!tD1qNtFGWZFo?sJ7uD03Xl#d2t>tnb^BvMn$P!X(qg%&aEP` z80W_OZsEc-cC&Rnc_jsN zSRy_7Y%{X(WwP7c4_MR?a1TA-8CgUlPRFYPlOD2kD#=SS6O`zlAxgH; zh=x{wuA-eiM5LRaSbf_!z@Jk#|87X?(lvO>%_ zq-DsDftCwrCs-7ME7SwwKDh!~{jW(Dp_BUXM);nR6_#DWOXp~<0hG@Y)W168;fa^_ zRqaT}mpV3q=pmcW{AbqA63{EU$leZsqUqkZ4X`MN_k~xzqrpN>ooLjEZ^kiQ!}C-3 z-J(^ZRoNfyGBO7e3!02UsoP2EQx`P6t}+Wyo?4gV)-43BVll1Fat*27C9s^{Gs`+S(#3_jc=5< z$DS}{5UMiUjgqH60_3kX_~Hh~5#FbLztC>B+yheBr7JRsX|{%dr~k0&zD(ax?g)EN zcMQ;`F01#mzQo!`XQLdy7~SI2JHg}bCbtBdX${$gRd4UAK10$!vKI|1OoSSx5SPh> zDKAJoINnz9h+=t!`Qm+!#BYaO(`8fCZV1K@$l8Be6FzCfa+ig|Groo4ge6dyqzWp7 z{lu%<=M!#uZttaJMDxGOJ@noA@W6)M(n|oz?MV1K?eqlg@L>6{`OCxGWOEYw{saJ6 zhyEuIPx-&_@PA7`{FjK2ytM2(ADowD7q+4phJ?5zIi6784_!9?K@f28*oF{1qG(JL z3zYTt*nPe)MAYBEfAj7Ayvc{F$5a�%~HiIdU`J(!AcE-vsiduHYckEA_|fO0Kzp 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ΜW+yb{TOWr9;@$(N2P9DvH0bC6}SMkdR6Ry zKz-Yqy%>Hhm8x7twWhy~V0aXs%gXpk)4Mc!z<88lBE!QZ$zTpboV-tUGZ;O`*Pj-G zZ{af*^tLuV*$&DtNqlm8CBQzMIO%oJkC|BvK(S4m%!_|fv?{nUTOf?W6b`rv4|K{B zn@Tn2&9F?Ry*s)lbZzxgjC$D_c*72dNDBx`3x{IHLNXK}6#q^Lw02J-J7IR+8(Fmi z?BMg2EeM8O9Em_`X};mV^L)*$OIEKeuuX8TlS>y>I|7a8s~z2pm#G~AWo*iSvE1QR=1_Z@WJ`R=_|Zt`amNSI!(CvCzmtQLk>U7|Fivf|pflKm zM>Pj!d=J7)aVh%_j<4spWGsu~ywen93hCcgNt%S|;B~i1DSto6$oA6O)H%{%`uY>{ z=12M613gKdC>dGQ81md5$vn9LpR^xoXO+0j-dHCAC@(v12F)^joV942aCuo^=QBfS z+^}v2dHM#4_{TqLAuw!LrgJGP0Aks>Yl<78n4thgP!mn7gc!_GUsoEf@-^G=N?B*P z(7aoQM~(Zp?Q)omwgK>|HS0r(&!3uX4)ka4VIHyc%}_d@YL(^{LmrE3d>OFragMAb zXN(zDq7luVUD_rB8}0@6!q)U*0>o!ZA(xd1PgV^Zg47Ath7}36&lNmOxUE_RWmK&8)?Eq4doh?l@KU z(R~z3zVCwYTk?cT9cvPh_Mo2|TXsSP*M%fjc=Aen_q4HWe$j)1J7}i_p*5+8N96%K zIxzO{7oRBU>7!Ra2UW*D5{sBW2V_Y3ugGZ4KJm`IrsbrcI+cT`W>xhPx*mbKzB2Of zx|kr#ssC73jzx~Wh72{#;~ zLFd8SE&x+O;Q>fa<#pUY|E9FBOjzJV9sL6(S`;$bh$mWpkB_V>f=6f`=ZWmRR%x&c zK7plng?m7C7q<=$4tzjH#~jd+V|XxrxI+#jtB^jG1y|{jG-<20l09kYmLIt$(8Wrz ztdPtz3^I)!qQ5alOg09)!cq)Lu*Yq1-8DJj?zgD3Jsdi35>%UG90nvEjh-qU7@9$j zbHh`~IlH&F!p#UCjDVTGaOIWp^C4C@D&5VjEX!HJoRuBUkZy3R=OpO$O}(U#IWoZ& ztBi&Jbj8*0nOdHi8Pi>2jj%6ID%D?^uHSS@@hEASX+%+J!luHy$B< z)}miucE1+fwiFT5grg1!OK#C57Y+>PMGbfv<CdaQvMT&wcK10QG#=mW1 zGuk|S=|w;YHx!d&@@e(wvACC1$^f?evte_ zF;K6`pG!V;QcMCl0GW_OB90VSrqUCrT3-6ghmt)MLknvRrtWbx!P{g1UvBz&!+^n9TK!)6_$M~87v$Nf`0Zd<1nb0L@u<$2k5I@p%o91^5heWj+E{ag zzsQ&a_Xb@7k&QJd4DxO#Rt~}7)#N|!sdx0i{r(vQCd$_HGJg&N{r)ZV{~v*DYKAs0 z|DAa*R`dEt5_>^uIrkIJk{TmGjav1FIyj72>8lL27QJnghL*zF)FFpvf=&NrNn>{| zQ9ocupJzvM!q`OI+&ijpn(Gt_6v>s-uu9n!Op@&CdewFGetE@rwfg!xlkN2-XSnpj zV!#61hYM>^#_)-0IN?@EHrSF6tN)UT@|vYb55^c@xzi^AsdN1J1eu}Uoicb8nc+Hp zBFa75yoU80VJpY@Jd+QtGv4smbd3!Z`C-r~4al_o7PdKB7X^+~72S-1{Xio$omV$I zH+3lvyr)4W9=70-#G+A3^Kf~K3N81+@nJ)j%H#qS*9$a)+Swx9z$8#Q!izZ zye7TwBG?djS_<;TsEQ~OkVtdllp?#zXO`yFsWmQn7C4HoyEooWEe|)b(?oUG;0W74 zU!ak!9OEEa5}i@fI45Sfp70RUSm~G7*H3tyQlyC-8t5nN)))tm0T$M2k3xn|sFkVbo4ZqN4O-LudDF-WMmcTOp ztZ(Ju?wGpaw`Y!C>b$54Z@&{db)gEDm?iCsu=rU>gQ*NIw{sD-%v_O=e$FFMq$;w-85_jUGiC4d|hypC<7q5B86cF7eBVT ziDqRcg6+J|Ka}b^DKO`d)88$Ooi9LF2pt{&od^<5R8a(`B$R~~w>nVLtx$h}1b@jO zh;;3!#6g}hGlogl%dQ*qnp+dDEtD1$-Ct=x2`(W`-dJ=%ld^62FdMi`n!?sOM7uT2 zi@SBO>gBFK0QJQ5E0)bW3V@DpzZw*;G^8n=C}k3$zOO51^1`WhzhLw9#eU6*nVp?a znNb<8s&3qU1zlB@?LxhSb)Q^U#!_ zN>f*|sV6Wu7G?GbO-qlR`6i4uG^gyOOuuix38Kxt;C=xd$0*IWwKRMb0{HZODmbi7#*8Ex)ATuQiF=J9z3B8d=fWhn;hEwbtQ2R`=8n4E~}+z|X*YFLyp76#GK$*dW>w*}OWqte}S6 zsb_Ap$A3?kDpvtKwOOcw8N!Df1Qyl_;vjr4d}FndW18P#>2H~JL|Z$u0FXne&w32p zXQUT`&{*>qG0qk2jaxiN7V9g9RhH)ff=DmAQ*T_tvC^19)8)M2?!(zMT;ekgT$dhf zA}oU1(i~qCc)e2VPIjNMeS#40b1E1W2bS(FvHM|W=8qiaqVqzP*^E1KMrx04nQ?J2 z%m9U%_9XRsBQ5*uZq}q&4?o!|zxg!J5pGANhUx9j`;zY!>i#)qY1TPXaBYagx(C@B zIWJtHsQCR5eY1?t&;v{F{r`ub;=e$A5v=AU3|MKgSK+cXy8uX0QDSTxHs&&EC6U3; z5a>U#oR0rjEC&L|4|^}$mS!!f^&ZKx+4*p~>nJDP%lvV@W=0=u(y$H-W?xB?w5Bkw zKuQ1-4Q-rdHH=1srv%5dpMYuJFl6J{>1hLqhkCsdE6CYoqR!{2(-3h zNTs$~z0Pt7F=W9Kr0Xu&eJ)E>xMY`>?%Vy*~|P?_N@t2}dv#B=(Tcta4{C0Fu4 zY5dA15(3qBRdkX5Pa6Lk`}8;ICykHJ^GW0X?P#tk54+d3L21Bulc5{TXzwwPwE9$3 z$c1jzH(XrTQieb2o~^p|dK;-qC%4-D?hj+%VJ#ms^U{zUzvcCrF8gWA%>mDR0moWGVn(FzS7*yg6+!i~pybK;32= z`B_eoozJu_Omtfil-73ZR?k(Of+c8Wy;Fax=Awlf$aI}sYaW4dp%^|Mh%Z8dl_^#I zK#`smk%JCZ4!$gi^fh6IBkG;(2W#J&YlM5d+ZK^G*k=C0rR*kxTN(iUiNcNGWZA|| zp|#ax>&LAyZ3hwjShqKPL8-%W>7m4PVg1DMY1{M5ylLOb+Nb)z{<)Kt^$n~x6kO{? zS)cheRVl%?%7Q)gms;c-mIJd=P9KF%$x5Bsr=%ieR<$2DdT&%*tLBe0zc440=pMBg z1@#Cq&=8k3iC${&e@iMJw$%>nKNm68{}y~>_z(6p{_8M66F!VPzUto(eOEJ%M5#o( z#AYd^Pm{A{#$DbCB!%2OhiyiYoM%L^6pLJno$J75i5!?Bx)5?1c!d9Mz{+nGZ42Df za(6W`#l9EOp_gxc5Gb!7>8oRxW(m{H_k|uGULT#0`d1&@FOOZ1*MoGqukc^!u{aO= ziMM8kyi{nnCWat%I%6HLj&>n7UWu0p_jg4$ynjU^IXfmr3cZ6+s(q5IiS~948Df|( z_jF#qVvS(%<@cj|55~sQx+{e!;qN}s2qMxwrNOc~j>eW^ycWSWv}GuOlxZjTPCuVU z!NRpZw+7~_=4VypDuZrmRh;hOV0{%stg3yb`dDe{_fAtWUL#=XTAx)Ra}^9R)O$*H zmQ^(-7O5~^Lt)QapXDHXiu*mQ1&Vj(X&0Pbssgvw3|ZBC3U}O8SH>5wXr6p9GFqP@ zApL&#yH?w&gCuAh9q&hA-$g?7MX1(gkn5NV#GVAXe!*LRO#--Sb5y@TcMWEgS| zcGY3uGXy`xL&88Uv_FAY*l%8T?*Wm5H_L(tz+4>8Uw**d8lBhZ$fKtLXIgJ`B1Mn~ zh7tTnwXh)K0TAxVi0~caV{E9W^{>5PchQcYN^6eb2ZX*FsK?hkB&??#7Fm)!L_ri$ zga|8v)C9v01s2O!bsv@;un!Y${Z~hJG{jdi4sIq=*iL?5%Rf@eS8*R}s636n1}t z0ckOMacDMNh(3A#MolEQkSGfgdwpmjYv{0O3th?Bp(t!&#l$V^w5s+T$=Z2~=rczM zk{X&}qVp6rJb|paNte@z-=rLf;rE{O;WgrENy0qXr}cvLLTM~FB&acGLJ1@9t>{9< zR%~`Hsqy4^QEv+a;`9>KOelTsOsLHVG?hfZ@cz^it{I-UD57cI{YHt2C4MDSwN+NR zx>!u)V-!kjo%-d9cXEtTQpO|lrYp6@E@~S=&D7l$*&!Ha;Se_VcSWb609#LeqAAY5h6~Uq5Wvf9UffDX{6O_HsQdCb z!pmx_;?Iw=;r_x`ro4>Ua)|gGjSsLwTHMQ+ zJGJ|fp#1V-6QY9B7?2n;1e;9+w@n_W3dTHC`Gbx1hT*ZUnZDs2aZ-s-b*wm<;yU&M znc&i@@!jd!3yqm(urwCRoknN*z^TGw##;6;R%rGCu~fk`J$VL;cx|*%C;UoxfC9%i zNN{v+=E8|fDKZQWeLi8E$oU1E#@Pj9@O<|&C;YsPkapwF#%|f3c_*-742FSc4P571 zQ!M57<4$xWGSqj%u8Bq-@Jlk?7kc3OT})h`QKo>g{H+=P5}G+% zOIyC9h?lLgF{=jy$G!q3S^PlrLUYsNm4#J}wVhSP_WZC#9!Zm&*LtQ^%VOznJXYM2 zqJ>bkMY*w~GpkZWbCZ`=g3l_9dx)KsGF_<+km0MoZc*fNh&b$h$@>-}nUx=68ex}A z?6)>sGN0=lgY(KtWq7$th{<-Ed6i9ZzA43D7OTQn^2q>esUxt6pP4yYg0q%s)R1snId6OWa5Pjv6RGPIZ(_^g2xxgou@bUsVwnDuW!-K$=gv zW${yuO!d06F4=a5O$XXl`S1^-DWV#3=w%P2&^pK(gfOzC1W-ZUVWo9!Lts2Lw__oe zVe#Vy<#%Qh@b22Oke$Wx(nM@%3{7YmvYqks|~IJdfW+B0#6FcyxR(cdVM!H72i{}muMPJMo) z>xSN&zaaxd5s}A+yS7k0-qm^uF|Q^ixlFmIc_~WdR7G`(K5xf#y?>FNlHJDeBU@*T0y7+QYQSr36}ojhj`fjRN^X%^ZE7-@qxt_Evb?b!TH zB#tkoUu0iOwN0_~aWz`Qp&u^9dXvt6Z|hN}!~80Th*xR2K7` zcQT@NB?#uFH@)j4YA0F4;|n!#Hz&+{SEJ9Es+p<=crRg z$z-pSIbRwitW!sO8MH>G_1eAeUR34VVnb%Vh!lU0vf#5AEEisav^E7O`Ll0v#wofr zWV8x*Vj6arif{-2;F{aA+%#z#schhq)1g_za7?EB*%?%&9>6p+F_s-V@6aCV?4J2Z z_;nhC?COLd<9P5SVx=UU!I0Xhhq7HPmNIbHiUHArH26F2WdWb)9qg_<#WJa+crn!2n=Yqr6{+5_<-hA}xB zxm#n8ht9SmwKZFl*FX(bdcupVs7HzDa*D_bcE_MRP?k$G9bfRO@#=;Y$?9N@TQub3 z81UVm7%$pnV2VH;FZwPvrgcKg2Xt!g04VCr`3moRR3^|yEi~!z+p0}z zp&mu$Lyn|rx4@_wos>^u+!RBW_gLIiQhTS{kCh!CfnhHUppTZeQjWBHi}G`1*hKx# zA#L^JD#86Pu>7@-vC2}!Rp|3)Vxz3L&F?n#Xmdayf7pa~Akc?UIoHetEf)ugtNw3Q z+V!Nd)o@HkJymQEUuhOJF?t8#Uo!ELE}+|&4#B0I7ij~(&!g|ubq zJ^VS0!6^6V#u>?;C;1LdGq1z>UkJ8%S?}|6FR|V%Ue<5SWM*Odlita7u?Zxke~gNo z!e*XjNi3mB509)>Q*veFT(i>n_UT7|TqD$((gt@-f8alVIMC#Xln~PdB_$xT&C3Jn ztTk44+Pz~q<4th8jT+JUeFXp{!##>GegyJI!_OXFYbi&o2O^^EN=trP6O%^vod+l3<>Yl1jW zl&vejTuyz4Lk(nG5JgTsN3oZJz~sHAgc5Za-l#2p%TzcQX923>CFINu;@8pBt`LRa zx`5X_o2+e1adiY6Atobf>FmQ^@Mt0 zoE6!xJ$|P%5mBYp_68Sg{6b6gX8v&@MPr+Q6sf$HSjJCL%%A)&U7K_&QzqWy0Ot7Z z%llXIQ-~GC9Df?GFvC;i{gm9`jUQ6r(vK-f1C7c|J}u$t@&4&iZKHjY(!Dmrla5Tz zXiTxpw*-?zFdDsSEKm(hUs_fz0fP zW~Sh3%w|nNnu-2RQEdx-Iw}4xQEeN23zP=@#;5p`p_qps%;S!j zsCI)HnmN!WaXV{Yb|8C6R%CrtmP{%Kx(K^AtDsL1I9VxeQ6?Q7(lb8d?7|l{MLiS^AsPe3V4#NEvg=)IF0oG|E(`ikbm2 z=T?i>w6?S++VTSvYE|3Yb+K2cNlmFA%Ucq?dA~P%EU??d@~IN9q|(R{iY?UlLEoL8 zFoCFA_oClgia9v5JHsd#TwA~MK=w(yxyA~`|Kt&yG78hJ8>n7kDbX|@PPbxczT5NPNxX4{>03gM3$`|Tk`C{C zai~oc9C3xgV*-0NIKQgrIP4Pl(#qr(ay{{-10xkkv!xtYl_YYMI=`wTm;R-cP~4Zf zt;nbwDBx5+s!`J519H<_4Z}n_P@YiH(09kXXfP!@_LC-z9nio=md?=8TXhDD=~HfB zDQS3L;rAB|D{Dj|lTIBOn5IUfQ9_{ud^cIW{3 z(`^&$p9m2&vCHAL{ zxfhkRuo@D$zXoU?PZ%YK^tN+q9iXP>D%b1coHnPXbk{NFD#foi6AC}f+|#?<05F=u z=<$$i*R)z4L|AsDfJyjPzddk}+D*=s};x`rNPL}!MXo7}jT`thjZul6>Ib!%Nu z?4Mkd?H9!^l*}DRdd~+~?vG5edBa`NCf8%7I|Aj~g8gfgJo_$#&rYMM)+EF=07Jof zLqRlN<<+Cox+~#ya|0$>@0y;n#|rEt3PV;CYaMenf7jAjf_* z`84HdGN(w{#uw*3I@aF$vPLnvZp+k}N@B@NMu64;-yn1BKs^MB-ceP|j~_ z)nb^RaHH0OmRBBB$LSsrgnE5iO#wr=c1uP{NW>@+#yyefXkAi{$VhF+`p34QFNCf@ zogG_HlY91se#HfJqK9#sgAx9{se})X@yTB{#ZE$fbLC2^$U_ZGT@$ZUiv+cjbTdUS zT_sTH9bd+;o-JLSi;W>4h%F0kM%@iQx0h^H9n!zz-iZ^zzqcs&DZLviL}HjXrbv8B zM7E+@S|#JpCx6zZ9xTeqxlx{(M=7+U&J zTM54bje|P^cbEfTpndV5)VGMe!QDj&+1#Gcz7mo6c_i&fSs|hDiCq{5#wxzB^#M?2 zkzdh)EoiT7O_|U)AAM$YeIs(Z-+&EY1tmbYUweLlBER;Cg5diY(OzNuYEZock1L6v z*sc7scM^M{$bvu!foIUZi91?>+oY`#JIcLh>%@F=Ak4sR%GRhIH)!9~oktTv6|~px zlh+^+L?9gWd)y9Rpdcw%=1wfkH2D+SPL>(6uXJs~&J47G2nGyOuVW;7%pV*T= z+ABieHtH(@&<_AY`uZUW0t~j~?&O}l=tI9J-`w?}cuyaN9l^X4yng&s=~6D?ElkDw z^5t0KzmC(ue);kVG}s1?|0~S(e{Y{J_+sz$iF4XpIJ;PzGCJ9r+uJg_{Is>mA3 z+8N6K`AxF+#)dYQp8p3HO#UazC{#HfS|gDHiOCs#Eb z;hIQ)k`l+%fd}<=eg&$~cN7aYdzkPFN_U3zvQ)zWmRL##s^KFi`P@gbE z`g?HWXObYl;(6j>$yJLpyv@xFJAqj%9TA;8z6IH!4_C~$2ehC;eL%MC#Tcg5sp}9& zv}>ZFtA>J~BlFuXDg@asod{LEodza94*ulkTYI-TUN%RuH1Bh&PCJxztC976wu>zw zNw~@+&dp_FF5|1;yvW4txYG1Hw&#lXnW8E3~ok4&H%4RVP6hVTtpnA&AmG@DaR5QVkuAD`6;iM=#_0Ep7e zX-%s((xZa|;muQhg^zKPAX?7-krN4dMrvh{U7@))vLITdlsp2M!H%d}%abbHe@r7} z>rIA4amRUc#PVJ2?9}k?Xn&pVh(q2XLv&vhJQAxVhGuy~U=Zr3klZOJ-f4i$kP1A_ z5NSGOlSWbDMta2)fuv^W-rc3UI{}q&>39}$|K6vL?-Ac5d_#c5edYgsVDqy(45V~} zCt9yG_t7d*Gj5OaOJY2o2&IaUL|iX?WJc-O@Eiv<4Eq2XYPa1%j@1O)AfDbiGpc2< zM`M%}vVMr=gysebL)|_&X%n4xqzs`2l)@FlUK$#8TzQ9OW=hYpO|%1ZUpD#nIPL}_*K^d*4?SQt7^RCvCywAQxJvy9VTTR)FUJLOx ziW%9Mi7QQpDUH|td(}Rqrc)6H$q&i73^uvBIQd+7cm;#du&00$)=*2c8;ug56K(V7 z1xudnlSY8g*-wj&EBx<9IOm9kf7)J;1V0|PXWrk#w!NVY2)bd7apZ%qVdW!$N!apX z%-|yMg+`f5@rY#9t>Oj|s+6KmYBnP(8bVnpgAKG!LQ#>X0>1*evXPg!F+>#MDTEq^ z%IQO$X}91CVUC7C-Pkv@3|}1;hbSPs>$6Xkka75ovsihY#0A!wO|YuGT@wRA)dUjq z_Czb(4i1t+w)!Oc_0gUDHv8ixfq5PR$#kVtje$R6lUvTe!*<$U44|*7OD5*q&5mb! zP3#q#UFR`putG|bnC^#07f?JP{xOf$q=1wQ3NdQlvoWkx5wLbezg_Kjmso9fA_$AX zR8_1(b^IPEwyvkr^p*x5B5W0AL+0Wd%M2Wi$tX@@HneMz7H3d*pOJlx#u2-z%90t@ zAq1sakLq&Q!4ibs6yFSr=38W*5d2jkkt-oMQa%i}#kkp5gD%Sg`uY1sUe-=ILcafb zv`x&**;|*y{ces9nGAC!XRS0q2*x3R(0KYSGr5NHH-l)-29nNaMDHg`(Ejad+;~luh@@S>_IYFNh~dP0|We zY7^HKYfu@@-Yd68JnAaqT~sVIVaZeZt<#8@# zY6AGaj0y?-yoVlvPx+ia~zl zDIa%4iGmT-*nmpql#@hCszJ;K}V|W(uS%{ zpHu31Ap_spmwic2Tg@JvWaH-gG=b*;zTg|Wv4nl>I8lrm=LK4LjgZAGkLc+SC-M3F5nkrGO7@z+1duZB+ z*Yo*tr9X(_9Rb-IL9?-=(gmJ(xt~3ninY7C*UPpaatO(J2*j>*QxuiDW*O>#_nPX;4k2q&{A0?kS z()-|BZXM*d^6oY$1%4OO${`WAOX{7tc;WWl)59er4dZA(SN_r!bM%z~xzn*0k-3I@n{d@xR@ObPJ@6|7>ToJ0kpW`}!a zhYQLH)oiECD*zBu>-Y~mX!3l2!cP`G8iZT)DKLT}CVz*@e3y$JC`jeS`9N%nE5n;l zWoj~d4s**B!yGn4?h*hDKMJN^cQEakcz@aYok~N5S+$JfH;S@dfLGT6J#+{6s8IUo zq>DEnyO|9Iw8avRgcAw@RFwTVuNKbwNvxGCY;u{eC+x84hXh<9TbNPr^3s*8Vkjbh z)so8tXV(Z>JNY4YHyr_qchs=sFJm`Ik*X_{D*UJtlH(9uU6g~cJWIaN6>1?1*b>&2 z)pwCuse69l`!T?fmplVyEG72VwRkyfHcT{2)eeYtb5?#uY)6%=)a|FZW615F z!dEG?${M0Nz-eu7iq1Iz0)`+>!*%AJp3dCvvf0N$wyTFN`!)ix#H(Y$VSZt63a8Lj z=R|6yWDY8O{i^V|4bG8H#v@P0S=MI8i!h*8Ls68AaQCe%p$#S7s@LE$(^}hT7zaUDQWdAv5GlRrby3h;%&58jyJT3!^lOU zdpw!v-b7_dzy+t;)A4_mb{+6ocKu&NWmRS=DJ!9jlw@RYl9`lrGe{*|Misv#~~$Y0jWDvoYrHyoXu zYZS?6tPvl6X(ZX3hbG(aqJ8xg=c`>NpLMIIip(3^J{v!r7Nux__rm*d)!nJRn(`*^YD)0UT4nmpWUo44V_a+AtH#X?UT5lqcik?mK$|<)n4|J`@Mr%I|w0l=x-8zShnt z7gqDn9{wB@yG~tK?kL`Bf%<5ru!)-R?xf&U#E(c_<;uKnF5L}6FLX9hYN@zHADH3n z4Gr4QO!}zHhT3-bq|8fx+5NnaDm0_TtYVd-Uyf|i|7D-cJJublw^P;KmPy&onSAR} zE+6fu)Xb#5t%v9ZVvRZ8Nf%Py@~pafCtj?-K)yY9k=o z>1CI`sdoBDdD{}!9u9B5_AuE^-k6kpN-FGjUNx>&(^G7`NwvRCR{ptmR?P#hjMGmz zm7X8+6~4w4(9S!-HfrWORV+!irKA{LRB|R%la;DF=Br-Duw!Db_+Z3!r=;xjdI6_Z z`_9Da#9EGS8{*wZ6&B}kQ5|*rF6)*Hu1b$R1QLAu9`=OT+PHE!UYPSr`c8D$AuKNn zHA(SiOR2R_%}LeAQEyR(^D?!Z44={%KU@?|xgdEgow4o31+kX<((a6Aiit&218+R- zX{Vmd_l>p8577xYcD<>fV^<~4VtQ6MOO!rN5p9P7>AEZmYhdzU#;&SlM#;0&x$Ri%F}5Q| z<{r3<&yY&##oXA$F76Y^$S7qltIqJP$0WtSS%<61`r||vKZ8Zb*0I=~`bL{#$eJuO zjE2Ie`YIYku3r7Iz2oG7Mv!^^YvEl}IzpGiuCWByrqjxQlPM*&s<1n-J48^`+cx$Q zS0MeUCoZeW+nJvJtK?m)t0y0N9!2x_zmn^Sd|iUW9W0O}wCF*r^v4T*-7}}o+ETyo zwj85fS=|AucMK9NbwX9C7kxX?&#m5zSa9{Qk3AK*&CXv??oVE>8apiR^-?Z6eE52d zL(oiDY{+AI9ig}o_dN|yk8^a&ViHAoQ!3A(*bkqXWqx>>yh1a!{{Hqu0ngI*%iKP5 zw_sK-tCcT5Q>2F|(dzVFT!v_1bHZ%Q85eqr^C#$83hkIG4%-?k4|rE)dmZhgjhY_~ zqfMK~d~yDzKFy4(&rmdHtZB0^|AZ6I8}FQ&&e-Z%xZ}CtTs-kPRjFqRthWv`op1X^ z{N0_-lj2f|q3(TWi-_y&mknqm)6ax#$ivXSCwbvRIC9JNE5;%6%jVO@+LgY?o3VX9XXdP`1`|lh3EY_=YTT5K>U8x z>Yu;(qhRu4T4%JB6jjkE1GJ@tB^re@Tl{)du-bVuaJ}XHmH_u*O>L^pSA0{0lQT62 zS*pU0Nm6j6N|PoQk~OonZhU57`*=G2n9Aj2RkqiH#>;PH%bA*Hg}*D0_^R_^C|tLw zXpSJmM}|GYT$q^Jmp#N>;&hqi(?mw!h#LhrZuo5TA(kh`vgKFo#5oF*mgNY~N9~vt z%Zr`L?Xo7ojo^4KX-Qflwz|3AGf43=Qci_ zsr;(84&nA=IvlP7-gg{xuv7aa)RoSu%<5h(Q&p27l_RUke{?@ZtklOtFh9AIUX!|| zevE+4V`65AC+?=ELXiPQpu-ODF{iU-+)VrW_hEA;Lo0+)cBHTGoV?i`I^WJlsut34 z4f}*XkMwEw;kj(y<2@-H1xjty*jsz`Orr%eJtsyDIE-KMi*XyAe#o5mM6Fn|o}%q` zuDn0}i+=6x_hLW3VC>;#Ch*Vy`D~KUHTx#Yqwidk2KoIRXMDF_dR@J1^QkIM(Z>5j z2P#6z#W$)jTX@^NQ{js|NN|niTzF+TomHCJ_B*oCUpa2P(*EfuYV7rq!7;+l<;t!UU`{_EqAJYr&Lf{&a$0{_kkL$GtJnM_D)WMS_4Z+-FU&G= zGv3brK62ej(b2oh%B!}yK0ovJqfn{@mH$Vrv0=mcg&IPTs-L(a*z#PDsK?xh23E_| zL>y&>UNn%*Jc~62KOW*@(VbGijF0Uh+;s6pvH0N&o0ab$()M!qAHGYflGW(06C6=d zyvgp6g==smZ}~4$p|-&}yNzKnl#HZR2PGY?vWU_@_z=xW#Pn5l7S&tLA?I~27BKbvVJiYznWaGpxdk^*lSmy;{3`|Lsq=T+bfERyV7kN_u zB@8Jn&eDEy7kE$^wnmi7{Fk@h3qFE(CJgdJl;XP`$dLDjBzpMv7eTgq*bZ z`O-9#t?}tEtuhFR++N+-+7YwUh%WX_mpTu{J*&R&*S=PkSN)ux85X=QK+h@mQka&V zolqy2ls1Vy^CNXFRW0pNnHK8Y%7C^k=czEUD^0oPwns+ni}ks+Z#LKOh;%t2K=t&> zRAkI4dhMsBrL*^9z6CjU5#~9Dn3HU{|1zMru)Xh-EO$!o_G!Vi^DQHTKMJojIiDQe z=UBL#&oLXLOgFP>%O_^mTT0E7(cH|w@q7}O>%WjQ)E_k+w>&nqZR+@_)`prdmdO=5 zYTrv<28nRLOMU-Lr_-LWgnRep*ZFM<224DB2@y#>xGt+MVyYISkNQJurf&tCZZb`O zRTm^3)sG%1YQItNbD-8xsmY`?@1&Y#{3G_C&lPk=j;8J%sMR-X407isRIL#D;d%Gu zYXhaDb#@_Btg$XOwX;}MXUE#ne6!hofoGw zMeplD|Cs!KJ(KFZpm<#lcehE!R5u~104r32{u#|gDVa?rCkMU+(e~nIIF3f&K!0X4 zyz!D(>)|6MnvNT<`m*x96nMKTWv}sTIGv<2>yUTj|7Nj)=k52LGe5m78M7n(a-W|% z$NhMpUYhG|PowS8uIpo!=d(^2M?gT7>!$lK5WC0xXYf=v-oI9@Kku~tF9X( z9V4X1uA){KS&6eLuKOI4DyX3oxh7(HQdQ`)=4mg?RSvJ_V;uX1#G-5-8ERYz-tx6k z7peq`6y7U23ubZD|8Q{Ok2iuV?r)WSuGy}(7ku*?OOcuJOXn4eXs>|ruuJpQyOOsAlsH<3osH>mKIwG-lGuk6y%~@6h{`Oj z6Q_cp#1Af=3#< z%qr^R1)67VG@HtJC6%7N3OL+wnk7s3IB!~EG+P5pYgXjR37qir?2>?Q(W4FLv8FNx zbjf;W_qOdw?o(=|=6I^X=gvD~b;kIo2a2{$h$rsgCt5vUn{(WgyGRvU5;c5_pQP_n z$|RNNv(m98eX_%!$E@tY%O-D(_Ze&VUF=5uk(ck?Rxf5_Ej`aCrJ+UdPL$lzFq!tw z>Fl@GGo>%CzR2vbzp0X9Zy=vQ+&mi<#bccuc#bJcV;uGDJ1(p5v(*rfFqK#@C3R=2 zu!XQnMJTO@8f9rDwa@{T9#;GP{L(wAunDxEn#XJ%1Wb)-gStq>tt-+_vRIS_uN`A0}n2cnPDeoLsn0(z|LI26P{K zuR(++ywT0x);Uc~okUSeLweIxo!{n?r8_lI-QYB zinz#5RKKs%FpKnwdgIwwM#o;M9&4Bj>K*2hMwbbVuz+ zF^>_G_sA2+oAG6P6buG=^~f3DtK8`=e9$?4j`w#lIPjYY2?^H@5a>1qVI6-t5%wwH}Uf`(`WCQ3sF?LYgHuC zXi!=8T!7a6n~Cuq$rIse5~)m&dE|OOTTf!&e!eX*%Xb$O_3*vx%@ogSTIL3o%$v7w z5a~rRU=z`Y?_+9@dXi=`Kk%$QU882tIGIRvs(GiPYggXqrtx9wVN ztF;4_a+#A41Zt`D7oGCpAnQp+30j0J2MoLrW4c3NoiaxIQh@cy@trl~hO_ZPRa&H7T3H3ljTi&YtJlF0aio0q1U)}PQ=&Bn*-S0Jx2aeTfEQm#Z zf=my;3tl50Sv96c-xP-85%>1#UH&)tZnTLWX?gQOUXnwK+kbeEr}4ZdpNb_P$&QYg zS2_U)__@oS$_q*zpYK;D;Kk8p)8)IRrJw6_YQTO!teiqrQe_v5JKzJ>tqx1t-=%EP z==^%T=+QB&k9SstZFo==6gcZ&`&nI$B9am@$x5# zy(E;l=SKBV?h1Ej4FA4RC2FZ|ueX65Wsw=9(fzr5b487+PaAb?#XTKN|MKA0DEmh7 z!4KSfBI}=jju;h+)BQEuOL)Dk;iEa#ahF@ijPp~vT2aTwm-p z*tg}v;-XB5-F9qq2;nJ8EpjdD=?fhsE(t#O*s*M9Oxv@zj)=aTcKsyr<9zev@ck>= z7CnTm_Jr<)Tw`5>#F@e2WQ0$8&C4{*AN3NBG-c#{kskb>pzK>kysx=EgGqTHk!P0~ zSPj6qtJJp;BirDXo10HDUTpL+HS!Dy6mP(O zs?K^Y`qBU`c`xuogGy+Q4`HdYV8XdhZp#)8py;;#A;3zj!BVdo5VFJB!K@#eF9IE|w3WlibGkJuMahrSs#x%v2= z3k;QKuicmk65ldNK90mF0B>6ua)09ak3iz=oh-;guHT+A4MvoE8RtI zGic<>jcpy|=#nT;2(I7_z;TGUYFB)^>d_!EZta-8c^s45SMEX+>@8=bm66Q#W009_ zBi8>*WsG&E^t*u`($;|<|I9kJ-J@Fj>i7+;-FOVG-w?k+sn&7Jy7QdYK6W$U@|(?= zcVXFACFe0mKh&!Q;y7JwzAV(nI#SR-)j?e>1M%}2tjM$VG|Ke9YpLSTUNKiM4L)^t z2Qvft#Wx2j+FqZgbEP=*>EMSg+2SALy3fLvAHOTDW}UYgfRCNqw_ zM1sPVu>1h#;@v3;Y;!Jp3Kx7FQIFNpN4L=nwSocT0d6!@SJzs<3T&M9Fabo z=$eN`^B=y9SUI%KnXxEIHurm$VUE|GJwqg%6Ct7;T1B7ZEIsFBdvZA5sIJl~DPMVR zh%2`AePT>R)Y<0)@;*O-cqObyqyPc3nRwM~ar#yQfRWFDXe&o^lc*gnq3 zeBIzJKhUh({W$oCcGKOxr|Cs%TU0VGW~I+%qlG>=D18@y^5hWCm{L z>=(9}(6Z8zX}sU#A4&zZC7;+TO4 zu}8{-bOfACibjmw(IKWuT)V$s;weegZRN7-*xY@*=uM6KSbzewZsUZF-d% zLdn(V*ekdrkB0F=Q=5Hu_}TMq4OcU}&A&#`)aAW*a>`8_RIh5Ue#7n%FrVO42)>yx z`SBNRJ-b6hu0|DQcB z`rUT4Oy;hv(5&x6TAzZgjh>$qdGnOp@Rin{?z!C}{^M4=i*Ago@IUJ~RvhnHw)yOd z3&Q5#UZPzFi7&*C^>^~Ts3B9{A>=%!)j{-<(j$-LB2xiI@oiZDn^*V3`b*ph3puC# z#^O6q6t|OI+ws$R?0m=m8`pMk*tAi4bM>}8JC89nxL)GALF4vx=TXKW=?1q9+D>{m zNAlbQLSAD#8MjFKdBu?*XSgh#y|wD1pscL1I4G^T)hOy$rwi@ zg}mITiS{O>hUGF~WUBAfcv{WceK6-S$`9f_X!R!Bfi6$hpm~0P?5qELI0-KkZ>ZtW z{^m^A-3l*hT|QG3(AcSkWt4=9U)o%y5JoJBzN!PR;vm(2v$7($v ziqOrBRm7yM+aAS!|6s8Zl=cb)$y(^Ev)jbB9jS zmnVsgHl~s1a~50Ea&EoAkY8+GWV%AYiHCA!40>_ zqR8#+6!ga4k9~jXNZeL47Uf<~mcFZPX92lg?AV)5r5CIv^*h?xrc=fu-7CqWcNOk* zBAcYSeSBj0Au1Lj07W!wB1xjnA$-N3bR z!{)AS7o-lj1o)j15#O}!9JzpNz+MI}aTT|&Z7e%;nTA9qrQ`PB-XNLc6(I&xbJy)d zj24m? z-qcGMggV4`C^UxuzMuHGc=+`$Pm1dlE)=h`>1z(gP0Cs`eLJX1kIEp4J?y86il92^ z%1!GoN0Wd>4NxXrMeW&{z$<==wMUFWmnKuS3FT>8SdWi-lOq<*H0~ zsyW0Iuuwed+(x$qq^h9IU>>7)eFz z`Zi4R&EcbSjQZ5!S&Y2QN6ozbbPSvrDapgb-YWViTE6Vj;Z`~v_Kn0)A}yK2h(DB< z-%^^zDA4L)d$joMwW4FQm1?uslx}^Vycy9}GV1?KV`N4m{lxx}0-0bgrwcSsy7qk$ zN)o1?X3J7^RvsErPabNk_%^w-$Wim_*Lc4q3|T6R_lVkl-t3#bKSJN`$S8;^%s-TF z@WjEpz$gALizRj0-jKH(T7AUt=Ga5>FHO9aI9zAJVR2sDF*q*6aF+X8Xm9W&i>Y|w zFSLVObMIyUBZ~9Ksqf5wcZhS)nAxi={m8gPzaHb>looR6T-zf|(%G6}-MR>@>Pz3_ zV?Sv99(fnF>tEd3kT=RZy(9ZIU*84{rRl+Hha7DxdHbH^7LEt$;QH$aTbcdKLxgDM z;vaMk#BDKsM>3hxM4v(%-+Df+M%rIhVw{p?P(I($T@!omY-T6!PNJk`>--MGq}hyk z9+B6lSvoK03fLKX4%%colu%KhJsX;#u3sd4wf?qF0hwevcjA8D;ArmWXB)#^>5TUY zntSD1KJ&jA%bFPe{iE_1+FbkF+6}$+jRRqQV|*1kKN@U~>?cg9JRfMQBcuB{D(>6m z+}9m<`7Nlom25SSJ=Y{MNEjFWknCyHV%?}=(X({R}~Bn z&VLlwkk>DBHLp2j==*H(7AK|VnFl|LQs2z(_5Ik6W>0Et8en73sqz`nXy*DwSbLM@ z(Unmtoz$39kG-Czi%z>Z5;f0noTv;vAY#rnAwV{BFZ!Kr+=BFwKw4zO0E6t`CSmHKjO-cMJ9SxHWvlA=;VfkQ_T77 znm!&om>BqU+GDpJiJz0Qk`O2F1}3v-_TwIpo?J?{VXobj9Xa|$KI5j1v8`16vp{(> zm3Vb)-(PI0^Fdp|2YngGUv3&)9f7A|dY^*i;-$@66H=kRd07+c*8RzZ(d;JKkMGZ# zoFIALPvJRb{QA|02)gnCVnLzz+iyKq=pM?rbK>o5&ipT!3G=ICmerB>L!Vp=aEeIZ z7?J$unG5)fuL*bKv6n+H?8EW_87_r6)$3 zoi2Y(#PDh)x%>+HlpOObh_COSVD&W>+Fe9n3V-!P282D*?k@Uj1SR?VYt)`4k`NGN zks}p7@UJ^8B>892CMF74Gg~Z31JG9HD1Efm@0>mOjt;b#=+TZ5(~Qggl$5F&zyGoV zW0u#h2X8i$2j`12ZEof`YQmZ^d{n{4D1PqT#c;dMgF|!5n&NAP0xyv<#sEuQAGWjvbGCl+_ zTgRd=xuU#1S~Yu}b1se)vgMTxKaXTjH8~nrd6rb@(%Y*k+P$sVZk@d9l+mE(ociO* zpW1wlgblb)YiyzCG5BCvj(zunres$4!h3(|J5HA?9;KUlC~)oT?LV8Hl{&m#;z8H2 zf`@&XN+$Vs$7(a*D2~`8j=AQ7#kP#6!WH{nD7nKzK2OcWoY+<@@y@w!%HyYT|HK(V z&R@(rQ?3(lk{CRW?j}0F1*i2TWY=u2)1V|@ncA_LemCBH@AITHzp{+9_K=6>Xl2D3zX7(RACz=BB{h#Y9`FRGyFZHW zzx9AK^A`m#6}Wc__xkpL@-g;~+!J&}!;^INRi!`619wdvEO|2-A^IaGRYLdT8FZfl z>1*HGUGny|E)w;E6L0ny_RA4$(F_o!z*jbBzPplK*MD4ST--06 zoa@cBz__ZP*+=7pPZ_8}F$uD_RTTRQZ#aj`YWCkt*v1}mUoQ_6G;^eQUy7t9>-?IyylE}QaaRjP9(SnzX z02J4uVuk8Pyi3AY$5%E6vpYg_=`VhHIRNu z0sCd@U%&i)$^+^5&}NmTrxpCUvI>W?!XdVvehC2lMGp29td5~)jWGfH1Yje8b9pa4 zO>jF!4*UuQ29XPfrL-oN7#3>=F5SSGVHa%$)Y(773xQ{pMhYbWm{&kcj>5pdg8v7( zq2f@3rR?<4<`BVeTl6=+OU087y#O~5aKIZs1M~nHU&74P6ph6xVyqVL0sI^Mpn|@r zF96;EiYm}npQT3-x)yxJc^+t_{zzF8g+nb~I=9e|KO2Ak=6JgQULQZ;cn`z@m1mY7 zcCa;W4GxUW>QZ@eDU3k_fL;Sb3f)h>^yGobhzu%af`+8BG_r`zFTEnvuMC(V<>6SO z0e{&5e}v2=V~H{~MJ?`F`CBfgM!fQA0A?1vkmFi<=)uQ}{|Q(Ptq&>ApZx@XGqk?b z+LjHP?hBeOumlhO;shHK*Tn!dNe_cXuRa(p=?pV(!RVd^Ypd`nAP+8d2*IE|QhBMDXj-wV9Z#}bzw7lt)C{!@(A zu_yT+2U-9?H}FD>S4+&Pv3^I-@C?hndG0xNkQe}Lyh0lnmVBW24F0jTZOZycwqFRgg z#(B`|N1)emQ#p{^fZVfAVZ

wR3sQ?EiKaT`#X=#RRYfJ+a5^n?0jU;~q z%jzHi%UGIOn_XkaVDJv_{@al0nIhmSp{=Zdx3S_hw*+yRB@TnOS{^?^ z^GW9jnpgm+h9Zy&+}x<(5Rgxs;lxZ#%xuvHc-sxh!}s&Inr}cJ4L}}n>;Af97s~ffK&-wz{>)gFoI49;D5W|KT{oQ@6LQm%|alF0FZtigh75sg2dZQ z2vfWBRUQM7K^<@v@Oiz>6``4nn0P~TXz)~nW7J3hw8GZEV@Nj;nc!8oMd$^c#^TG_ zD_@yh&j+H=19>8d87=_BJ9cIA(-dNOd(a zW+n@<`x;e~e!(a48KBuS;Dx88enALKu(%S609W%w(71jwobQ7KKLgS(nPuW3AczQF z7yimB%Ibk9MEdLrNfkTrMejj$APXbC5V<~5Yg1GEmCUQVCg+eF3Mepzvq4G)AGDwM z*TuS+DdX>7*M;$MP2gu=07D07Dot4z(_+$(pGj8NtW+1cE*GGT!Z1mC=B$fJ*&K~s zWW!S*oD9pbwgXf-fC?T!sN}7W$_8y|iNROONO4kC?FAGxz)?uUdc^%?T{PfMA&kMo z6q7Ime$NhvUy3viv{42$1O&Dq%7eQP?}GJkuC8}64)1oQ1HnB68h;$tBZZnZ(cuOZ z-z?Ud)v+c80^=b6yZ)n7w@!-H`|w>hU-ToqSA|OK-nc>BSY>ZrAswN{a&rgAk;ebh9s{;Xd;U=mT!1xke1{iQn4+5|a z#tH*6f)$DGX7^7tH$eZBKwHINa1_1&04HG#Ro;IWf~7H7uxh}(_;0HZWYx$E3oSs` z4CvsqcvJuXM7NR#a*&!dQ-@=Lt~3GP3oncm5Bvko;s8inV;7v|>KsQ{Z3E2#hs26` z^=|0jIW&Kd%SsAJiC!u*Vp#!v7EmI1*)w9~-zmF$9Z0fTxEqy%t%zlaR9w0y9-42aIA&gKCzcLF)UjU)dQVhfio+N^GR zt3k7yhWb8T0Q!hop(si-i0G0_?PmTj?_Svhh~sEIHKQ|V{SM%g;l_*X=f85SM6LqJ zH=OquodrTK1!2Vr*yQc`g^avn&1rQJK}x8Exyxn-24D~90z3q~zj?zd@$r8uBKeD1sVSz3PCsZ<_p6B_+v1>@EP=L+Zy1&YoowY&7Tw- zpYL-R!!UINhGgJC;NqDfSs%mdV|Srjx4+Z$VurU_efsDT_Fl9c20!wJC6TCmg za`6@*&;tbU)an?;KNGBkehO5l%eQ?ex@ZK%))uE|cYjnY5Y$h1|Kq zA{6XKMqR7S1F8E()(3kH0r~_G34BSxbI%&+h?O2l9>YdtF>#>PO2D4OZJ8V$GWKH3 zk2sNzsYYFz1uZ886A9jOg#&A$BUOALsVE1_`OgDvdVmer!Wc$m?0+o!P%2m5ftKbk z1M$GMkbni50I}`^wf$Lw%G7NDZ3dv>av45|46TH*TcbA9aZn}!1F%T|He4=Ehmf)V zvG{Y>{g!_;AaDf)aPtz!j!dw2{bxZqS(gg00Q@Zgp9eNYV-K%^zp&W?Wr9~HA&vJC zdPM9EX3`L_zicpgQ%+=fys%KKJ3d!`Rs*m&P!57mBqg4Ig2fwlL5(J;h^Lf-tl_@D zJ<>eyKcW8}as6?35O}rECg}kn@ateE!J~ou0?6PoEI2!#Cs;v(lVHQa{e>)Crl!VIX<<9Q^<`0IjT)Eky!rrb{;~Lmr<1(4H%-?k%us1PNLL zTE9b7mSMS^hU);A4-6@M{xhl|W3Qf#{TWS2Btlj+*-!!GHo%8ZpLsQ8Y;Xu(-Rue) zi`aA@>&RXx=Y?Dy+`JTkT{}o(S-L9|k-*+C;4TJ$e*&>7yny3-7Lj1ll`ciWi#1mK zaU{WGV_7hL2)e-wkMnfT{|nVwOO!dNzpqqHNcV*~nhx-RK0F6y6u6*9FCc<1I#$Hi zLj#Fd`n?iw)TlSRTgU|z8 zEO8htEboUp+aSb70)5qo3^;grL1%s~C}_?BNGMIg*_)#mr{Gejm)lv>^VNz3VESbO z8xE%_^T5;TKP~=?MiHZD2|UK?H2u>P(q^DHJfJtC%ftd=FQ5O3MjCw8%?uwKVVnlT zJYX{iof3hu?eJfN4HP%bL2+3RV}ijgtUy2##M?D!Lir?x)T#p#eel9VCWnAE$ktc^ zh0ss%q)xB{Wax#*d51yhy^00+z5f-`D5MG7Z)qY`4Xjl-73_+0~D*PXi&N}FE*R|ZY(rHAJs z9{AryxixTQD9G;DpJF?B7>r9ofr zbl5R8InzL}x4^*(c*HuDu@>T@H(Nc#gO(`hf;Bauo%fBP$?$@?V*Xm-c(YeXCA`wV zc|xx85eUZMV>bI_Ens|!D}<}r@;q!7j9D0v2z<;`pX0-|`ft=$m#|U~OQ|DhYX=xJ zxKq0S0ul3{v{$ZxK|CC^cq3>ry!>eY3Lm<)iOCvmZoa9%xd8;bQDlG1*SHi9sxnw| zHbI&H*_O9b7LW@iBPH8v2=o@(gv|ic->`B#xJa(kjd6wtsx=-3-UhA)N)>qE)G)xG zpjYWWK1&Gp7c6_^s#e1_ha%+#V~7vsz%mSQ5(NQ8ABuYPf5)@SC+e;0wp!?5(jG9_ za5Z}V4`>p`C`&aQ_$cZs1#(F7H&TSq76BCs0kswQVxmC}{vQ8n>q4Za4;G6TQ-_s< z4{<~$zde@<43>kejucMKuCfxk%u;~mqK1%0(=e= z&rXdbqRz+L0ZBWUBw{ck{?_#pEo>r38-U>fLD1@=yT!|KO&0X46i~v$svHp2tqeVX zE976pvnV=6GqWowWAK$+HEVrvsufQMr5yx{r;R{%PQKx_DS*VpMp|D^l<|-v1s9QOOhiW>2x}*b@(BT%@&UiFZZgspY1r( zfU<{yKoUNo9<2qnR2H_91<*@PU5;NGD>z696oh_7LX_LMMpL1WK(7vZxBsc|NdP(s zoDaOwJ6qNO1)loPDPR1Jwwcg&)&$s2q<uA!DYkeptpU2R8|XSb zdNTx@4e;st!Z1o=Z1Ce|V`h?Nz?kj_V+t=hQTDBYi?8C3pKOflx*C-6wu4T<7hX!i zmOI2wESBZ*W51%kUx5RP6Sw2)!~cT4c<2{Dh2@E<@FLKBPGBnG&G!MD0}v?| z%kcQI^EGayL%|qSErF+&@!!_K{&VUQKlr^%p4hD*?B@pYIlO8nFtrBwf5AVZhC*J- zm$BSV4Opy;;DuNG5`L{gf|Rzfsn`@q1HnWB!N7|;XFyVmDD(x#^k*~Tk_EyqC$n#H zlfr-t4Y=Te{l<;|#Py%F@N*okJ7Wx1UkM7;=!Bya#y$ zoI#9m4F=e{FMftzHr0qO(Eg1;r{Jqm+0<(?fHO1rksAn^#=C$5K}VzEZ6Di>A6d@C z1Z{*e`Q3ViNCZ+-CV`3y5ULZTfEON#90MEL@afY(1W{Y;>qIVtW^Y^Jy(STWS4ji$ zd2c$<;-x2x4u5N*ukZdHg+xQPs#l?ASGy_eBzE1?Vx!;+P!PUSOC&)SW79}@=63}pBpvG|1@)Dc| z!KVt4aDQvs0=y;jpUZmi3JHo+FOynq*8pL{4-luqlZ7$P^>F?*cIbPuez@s5e0K>A>uQ zcS%5aJv_g|IoM@Nf6tP(xXCc+%N|}pE#O_ca%x>vYn<>n#iV}h1Q44du+#8`XHU^} z@IVnHg5c=)+1>UAJ=qO{J9uxHLCp8h3NE>@_Y#38aGt|?2JplK9{5C}R#-0&2Ks;m z0+)#1n`=x!={5l~3y)|BBD;EU#)&##vaf##8m;)FJkUN3M6 z@SNhV&U$F<7LJgcfNgFFWY_dY#IYbCZvysC5+*^E-a5#n%`DLvBkbacA=(HxuQO5N8qkQ6D-B8n-9P12o07g02@*W zpdH$9^%%BX7ZKPzjL@G=m-nG-f&BVF#te_LYjNwKK^!AY`K9hj&OQW%=D~tsRNi&Z-6m}n?B6dbrJnJ36H?VP)}F{Y6=9DfJ+Rfc*-v8;DTQ&xcY)5 z6tZxtSI;~IbRl4N!F^PO+j{80F?@th8GR5lbOtO+pi`o-P9=J-gGC8#X@veWrSPkG zXWvh9P@E;W3;G0C@gSe|utEF45jqv@rc2QXW>ODOLHI}|_^*TJzjP8RZz0f)_F4!) z$Dsy*wu{4LICATMp<6h_hrnl8AHXq=) zq+x`d_x>lsKWBLmID>qGW?lfU<6s=&CWImCf8hjfZ1oCd&)zLJ>%i!dfYF1`Gx_Ls z5+QU)+naI|9}rk^m1pF8BM_+aZs8WF5&#wa2)$6sdZ-r9NFXrr&Cs#E1Maa2gcooV zrIx-9CXk$>Oc7{KckR`Oc5mpckezGx`e?u>ACW_}hr8cNXaI9z2FwLKMC;F67ZnZ) z2%#`{;T#@9=eP;>SKEVmn+rM!AFcGl^)On3%*PJgKxB@0u{pq9W(@Oa;^gGCK|&If6pYM!pyl!~YtC4{9wIO(CV##h^e{nbP*nSmVa0e?-k7I z=MJF05jGYZ+yMfd1i?Cd_EJ`_hXaSQL>eopnaE-quv$yP_;;O@41DJ7pK}6)DRf6M zQ;-J;>l)BIxX!tEuY&!4XWLxaGjmLM1#x{H9IU*_+MW#`Dhb1j7m_{zb6V%bx>W%DY-zUoIJUnozW z;005U3Ye^e%OJqA^H#hd&?1uw#sS}63v80+T^^wFGoWB{0EQU=KBcr$9~T;?VToDl z=AVi(G>Mj9*A5hX*|UQRKN`-Ehi?fFpV(-Yp@H%Q&1!gm>gV_{_P{W#@M8SF0v`T} z&gHjv!;MffBF>*GGdz1+>hE&-Ex%bAzKTLhi?6>>Tk+ot{&$^p`E|wIFlp58MPdMl z+*Y}-`ET^)cgn)s-$}O)^ko+y|IM)cu1EN?!rlG<&ak@lm*1NRmyH24BKE3xM?x*f zr-yrClE<;&LtoVlEWh^+z95u}47B2A#=nKT{7wm0SQF2)AvO`@yLbbwiG{ qL{Pk!Qy@ten8syK)rrl^uOT1=@dE+D<_()ScwPb<)WLrwAoxG-HUK*S literal 652498 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%0A60WOLhMi~7&{nvQPmZ3Ro|4BuYoLn<^Z5em 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 z

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óUiSDq1;yuH(vbP4V4N*%E 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 diff --git a/xml/relaxng/lib/rngom-src.zip b/xml/relaxng/lib/rngom-src.zip index 4b660e99def58ef9ee1f68fa2429da00d0cc726e..d316d6f1c6533fb5df25d32d649df3844f3f3ae8 100644 GIT binary patch delta 37216 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 Date: Wed, 10 Jun 2015 21:25:00 +0300 Subject: [PATCH 09/82] PYTHONIOENCODING is now always passed to any python task (was passed only to createProcess(), but not createProcess(Map env) before this commit). Should fix PY-15978 and PY-16121. --- python/src/com/jetbrains/python/run/PythonTask.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/src/com/jetbrains/python/run/PythonTask.java b/python/src/com/jetbrains/python/run/PythonTask.java index bddb96fc3333..3ddd6a30969e 100644 --- a/python/src/com/jetbrains/python/run/PythonTask.java +++ b/python/src/com/jetbrains/python/run/PythonTask.java @@ -35,6 +35,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.NotNullFunction; import com.jetbrains.python.PyBundle; import com.jetbrains.python.buildout.BuildoutFacet; +import com.jetbrains.python.console.PydevConsoleRunner; import com.jetbrains.python.sdk.PySdkUtil; import com.jetbrains.python.sdk.PythonEnvUtil; import com.jetbrains.python.sdk.PythonSdkType; @@ -109,6 +110,7 @@ public class PythonTask { if (env != null) { commandLine.getEnvironment().putAll(env); } + PydevConsoleRunner.setCorrectStdOutEncoding(commandLine.getEnvironment(), myModule.getProject()); // To support UTF-8 output ProcessHandler handler; if (PySdkUtil.isRemote(mySdk)) { From 219d6ddfd1db62c11efb57e0216436874e087834 Mon Sep 17 00:00:00 2001 From: Michael Golubev Date: Wed, 10 Jun 2015 20:53:00 +0200 Subject: [PATCH 10/82] IDEA-132388 - Support escape seqeunces in cloud ssh consoles --- .../agent/util/CloudAgentLoggingHandler.java | 5 + .../agent/util/log/LogAgentManager.java | 10 +- .../remoteServer/agent/util/log/LogPipe.java | 2 +- .../agent/util/log/LogPipeBase.java | 23 ++++ .../agent/util/log/LogPipeProvider.java | 2 +- .../agent/util/log/TerminalPipe.java | 46 +++++++ .../deployment/DeploymentLogManager.java | 7 ++ .../impl/src/META-INF/RemoteServers.xml | 3 + .../runtime/log/CloudTerminalProvider.java | 35 ++++++ .../log/ConsoleTerminalHandlerImpl.java | 116 ++++++++++++++++++ .../runtime/log/DeploymentLogManagerImpl.java | 51 +++++--- .../impl/runtime/log/LoggingHandlerBase.java | 40 ++++++ .../impl/runtime/log/LoggingHandlerImpl.java | 18 +-- .../runtime/ui/ServersToolWindowContent.java | 7 +- .../runtime/ui/tree/ServersTreeStructure.java | 34 ++--- .../util/CloudLoggingHandlerImpl.java | 11 ++ .../util/CloudSilentLoggingHandlerImpl.java | 11 ++ .../terminal/resources/META-INF/terminal.xml | 2 + .../terminal/cloud/CloudTerminalProcess.java | 65 ++++++++++ .../cloud/CloudTerminalProviderImpl.java | 40 ++++++ .../terminal/cloud/CloudTerminalRunner.java | 102 +++++++++++++++ .../terminal/cloud/TerminalHandlerImpl.java | 48 ++++++++ plugins/terminal/terminal.iml | 5 +- 23 files changed, 633 insertions(+), 50 deletions(-) create mode 100644 platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipeBase.java create mode 100644 platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/TerminalPipe.java create mode 100644 platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/CloudTerminalProvider.java create mode 100644 platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/ConsoleTerminalHandlerImpl.java create mode 100644 platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/LoggingHandlerBase.java create mode 100644 plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalProcess.java create mode 100644 plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalProviderImpl.java create mode 100644 plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalRunner.java create mode 100644 plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/TerminalHandlerImpl.java diff --git a/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/CloudAgentLoggingHandler.java b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/CloudAgentLoggingHandler.java index 14041a85b62d..33613616c403 100644 --- a/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/CloudAgentLoggingHandler.java +++ b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/CloudAgentLoggingHandler.java @@ -17,6 +17,7 @@ package com.intellij.remoteServer.agent.util; import com.intellij.remoteServer.agent.util.log.LogListener; +import java.io.InputStream; import java.io.OutputStream; /** @@ -31,4 +32,8 @@ public interface CloudAgentLoggingHandler { LogListener getOrCreateEmptyLogListener(String pipeName); LogListener createConsole(String pipeName, OutputStream consoleInput); + + boolean isTtySupported(); + + void createTerminal(String pipeName, OutputStream terminalInput, InputStream terminalOutput); } diff --git a/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogAgentManager.java b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogAgentManager.java index d55aa52ae683..f989f4ab8b99 100644 --- a/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogAgentManager.java +++ b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogAgentManager.java @@ -25,7 +25,7 @@ import java.util.Map; */ public class LogAgentManager { - private Map> myDeploymentName2ActiveLogPipes = new HashMap>(); + private Map> myDeploymentName2ActiveLogPipes = new HashMap>(); public void startListeningLog(String deploymentName, LogPipeProvider provider) { stopListeningLog(deploymentName); @@ -39,9 +39,9 @@ public class LogAgentManager { } private void doStartListeningLog(String deploymentName, LogPipeProvider provider) { - ArrayList pipes = new ArrayList(provider.createLogPipes(deploymentName)); + ArrayList pipes = new ArrayList(provider.createLogPipes(deploymentName)); myDeploymentName2ActiveLogPipes.put(deploymentName, pipes); - for (LogPipe pipe : pipes) { + for (LogPipeBase pipe : pipes) { pipe.open(); } } @@ -53,9 +53,9 @@ public class LogAgentManager { } public void stopListeningLog(String deploymentName) { - List pipes = myDeploymentName2ActiveLogPipes.remove(deploymentName); + List pipes = myDeploymentName2ActiveLogPipes.remove(deploymentName); if (pipes != null) { - for (LogPipe pipe : pipes) { + for (LogPipeBase pipe : pipes) { pipe.close(); } } diff --git a/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipe.java b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipe.java index 6356fb60eab9..7b5f435dfd02 100644 --- a/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipe.java +++ b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipe.java @@ -26,7 +26,7 @@ import java.io.InputStreamReader; /** * @author michael.golubev */ -public abstract class LogPipe { +public abstract class LogPipe extends LogPipeBase { private final String myDeploymentName; private final String myLogPipeName; diff --git a/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipeBase.java b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipeBase.java new file mode 100644 index 000000000000..085ae1f2d34b --- /dev/null +++ b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipeBase.java @@ -0,0 +1,23 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.remoteServer.agent.util.log; + +public abstract class LogPipeBase { + + public abstract void open(); + + public abstract void close(); +} diff --git a/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipeProvider.java b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipeProvider.java index 993d7603a3df..a234913eff48 100644 --- a/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipeProvider.java +++ b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/LogPipeProvider.java @@ -22,5 +22,5 @@ import java.util.List; */ public interface LogPipeProvider { - List createLogPipes(String deploymentName); + List createLogPipes(String deploymentName); } diff --git a/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/TerminalPipe.java b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/TerminalPipe.java new file mode 100644 index 000000000000..9802bc61d12c --- /dev/null +++ b/platform/remote-servers/agent-rt/src/com/intellij/remoteServer/agent/util/log/TerminalPipe.java @@ -0,0 +1,46 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.remoteServer.agent.util.log; + +import com.intellij.remoteServer.agent.util.CloudAgentLoggingHandler; + +import java.io.InputStream; +import java.io.OutputStream; + +public abstract class TerminalPipe extends LogPipeBase { + + private final String myLogPipeName; + private final CloudAgentLoggingHandler myLoggingHandler; + + public TerminalPipe(String logPipeName, CloudAgentLoggingHandler loggingHandler) { + myLogPipeName = logPipeName; + myLoggingHandler = loggingHandler; + } + + @Override + public void open() { + myLoggingHandler.createTerminal(myLogPipeName, getOutputStream(), getInputStream()); + } + + @Override + public void close() { + + } + + protected abstract OutputStream getOutputStream(); + + protected abstract InputStream getInputStream(); +} diff --git a/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/DeploymentLogManager.java b/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/DeploymentLogManager.java index becf25c5cdb8..d04f7d1bdb19 100644 --- a/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/DeploymentLogManager.java +++ b/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/DeploymentLogManager.java @@ -18,6 +18,9 @@ package com.intellij.remoteServer.runtime.deployment; import com.intellij.remoteServer.runtime.log.LoggingHandler; import org.jetbrains.annotations.NotNull; +import java.io.InputStream; +import java.io.OutputStream; + /** * @author nik */ @@ -27,4 +30,8 @@ public interface DeploymentLogManager { @NotNull LoggingHandler addAdditionalLog(@NotNull String presentableName); + + boolean isTtySupported(); + + void addTerminal(@NotNull String presentableName, InputStream terminalOutput, OutputStream terminalInput); } diff --git a/platform/remote-servers/impl/src/META-INF/RemoteServers.xml b/platform/remote-servers/impl/src/META-INF/RemoteServers.xml index 80994381a28b..9f6674d443fd 100644 --- a/platform/remote-servers/impl/src/META-INF/RemoteServers.xml +++ b/platform/remote-servers/impl/src/META-INF/RemoteServers.xml @@ -6,6 +6,9 @@ + + diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/CloudTerminalProvider.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/CloudTerminalProvider.java new file mode 100644 index 000000000000..ed2b1259a30a --- /dev/null +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/CloudTerminalProvider.java @@ -0,0 +1,35 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.remoteServer.impl.runtime.log; + +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.NotNull; + +import java.io.InputStream; +import java.io.OutputStream; + +public interface CloudTerminalProvider { + + ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.remoteServer.CloudTerminalProvider"); + + LoggingHandlerBase createTerminal(@NotNull String presentableName, + @NotNull Project project, + @NotNull InputStream terminalOutput, + @NotNull OutputStream terminalInput); + + boolean isTtySupported(); +} diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/ConsoleTerminalHandlerImpl.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/ConsoleTerminalHandlerImpl.java new file mode 100644 index 000000000000..da41e8d0e820 --- /dev/null +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/ConsoleTerminalHandlerImpl.java @@ -0,0 +1,116 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.remoteServer.impl.runtime.log; + +import com.intellij.execution.process.ProcessHandler; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Disposer; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; +import java.io.*; + +public class ConsoleTerminalHandlerImpl extends LoggingHandlerBase { + + private static final Logger LOG = Logger.getInstance("#" + ConsoleTerminalHandlerImpl.class.getName()); + + public static final CloudTerminalProvider PROVIDER = new CloudTerminalProvider() { + + @Override + public LoggingHandlerBase createTerminal(@NotNull String presentableName, + @NotNull Project project, + @NotNull InputStream terminalOutput, + @NotNull OutputStream terminalInput) { + return new ConsoleTerminalHandlerImpl(presentableName, project, terminalOutput, terminalInput); + } + + @Override + public boolean isTtySupported() { + return false; + } + }; + + private final LoggingHandlerImpl myLoggingHandler; + + public ConsoleTerminalHandlerImpl(String presentableName, + Project project, + final InputStream terminalOutput, + final OutputStream terminalInput) { + super(presentableName); + + myLoggingHandler = new LoggingHandlerImpl(presentableName, project); + myLoggingHandler.attachToProcess(new ProcessHandler() { + @Override + protected void destroyProcessImpl() { + + } + + @Override + protected void detachProcessImpl() { + + } + + @Override + public boolean detachIsDefault() { + return false; + } + + @Nullable + @Override + public OutputStream getProcessInput() { + return terminalInput; + } + }); + + Disposer.register(this, myLoggingHandler); + + ApplicationManager.getApplication().executeOnPooledThread(new Runnable() { + + @Override + public void run() { + BufferedReader outputReader = new BufferedReader(new InputStreamReader(terminalOutput)); + try { + while (true) { + String line = outputReader.readLine(); + if (line == null) { + break; + } + myLoggingHandler.print(line + "\n"); + } + } + catch (IOException e) { + LOG.debug(e); + } + finally { + try { + outputReader.close(); + } + catch (IOException ignored) { + + } + } + } + }); + } + + @Override + public JComponent getComponent() { + return myLoggingHandler.getComponent(); + } +} diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/DeploymentLogManagerImpl.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/DeploymentLogManagerImpl.java index c753977f3460..ebc1a39c5ef3 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/DeploymentLogManagerImpl.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/DeploymentLogManagerImpl.java @@ -20,10 +20,13 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.remoteServer.runtime.deployment.DeploymentLogManager; import com.intellij.remoteServer.runtime.log.LoggingHandler; +import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; -import java.util.HashMap; -import java.util.Map; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; /** @@ -32,7 +35,7 @@ import java.util.concurrent.atomic.AtomicBoolean; public class DeploymentLogManagerImpl implements DeploymentLogManager { private final LoggingHandlerImpl myMainLoggingHandler; private final Project myProject; - private final Map myAdditionalLoggingHandlers = new HashMap(); + private final List myAdditionalLoggingHandlers = new ArrayList(); private final Runnable myChangeListener; private final AtomicBoolean myLogsDisposed = new AtomicBoolean(false); @@ -42,7 +45,7 @@ public class DeploymentLogManagerImpl implements DeploymentLogManager { public DeploymentLogManagerImpl(@NotNull Project project, @NotNull Runnable changeListener) { myProject = project; myChangeListener = changeListener; - myMainLoggingHandler = new LoggingHandlerImpl(project); + myMainLoggingHandler = new LoggingHandlerImpl(null, project); myLogsDisposable = Disposer.newDisposable(); Disposer.register(myLogsDisposable, myMainLoggingHandler); Disposer.register(project, new Disposable() { @@ -71,20 +74,40 @@ public class DeploymentLogManagerImpl implements DeploymentLogManager { @NotNull @Override public LoggingHandler addAdditionalLog(@NotNull String presentableName) { - LoggingHandlerImpl handler = new LoggingHandlerImpl(myProject); - Disposer.register(myLogsDisposable, handler); - synchronized (myAdditionalLoggingHandlers) { - myAdditionalLoggingHandlers.put(presentableName, handler); - } - myChangeListener.run(); + LoggingHandlerImpl handler = new LoggingHandlerImpl(presentableName, myProject); + addAdditionalLoggingHandler(handler); return handler; } - @NotNull - public Map getAdditionalLoggingHandlers() { - HashMap result; + @Override + public void addTerminal(@NotNull final String presentableName, InputStream terminalOutput, OutputStream terminalInput) { + LoggingHandlerBase handler = getTerminalProvider().createTerminal(presentableName, myProject, terminalOutput, terminalInput); + addAdditionalLoggingHandler(handler); + } + + private static CloudTerminalProvider getTerminalProvider() { + CloudTerminalProvider terminalProvider = ArrayUtil.getFirstElement(CloudTerminalProvider.EP_NAME.getExtensions()); + return terminalProvider != null ? terminalProvider : ConsoleTerminalHandlerImpl.PROVIDER; + } + + @Override + public boolean isTtySupported() { + return getTerminalProvider().isTtySupported(); + } + + private void addAdditionalLoggingHandler(LoggingHandlerBase loggingHandler) { + Disposer.register(myLogsDisposable, loggingHandler); synchronized (myAdditionalLoggingHandlers) { - result = new HashMap(myAdditionalLoggingHandlers); + myAdditionalLoggingHandlers.add(loggingHandler); + } + myChangeListener.run(); + } + + @NotNull + public List getAdditionalLoggingHandlers() { + List result; + synchronized (myAdditionalLoggingHandlers) { + result = new ArrayList(myAdditionalLoggingHandlers); } return result; } diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/LoggingHandlerBase.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/LoggingHandlerBase.java new file mode 100644 index 000000000000..71be3380b3f0 --- /dev/null +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/LoggingHandlerBase.java @@ -0,0 +1,40 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.remoteServer.impl.runtime.log; + +import com.intellij.openapi.Disposable; + +import javax.swing.*; + +public abstract class LoggingHandlerBase implements Disposable { + + private final String myPresentableName; + + public LoggingHandlerBase(String presentableName) { + myPresentableName = presentableName; + } + + public String getPresentableName() { + return myPresentableName; + } + + public abstract JComponent getComponent(); + + @Override + public void dispose() { + + } +} diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/LoggingHandlerImpl.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/LoggingHandlerImpl.java index 0e5491103067..5fb9b88b6e0e 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/LoggingHandlerImpl.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/log/LoggingHandlerImpl.java @@ -6,23 +6,30 @@ import com.intellij.execution.filters.TextConsoleBuilderFactory; import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.ui.ConsoleView; import com.intellij.execution.ui.ConsoleViewContentType; -import com.intellij.openapi.Disposable; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.remoteServer.runtime.log.LoggingHandler; import org.jetbrains.annotations.NotNull; +import javax.swing.*; + /** * @author nik */ -public class LoggingHandlerImpl implements LoggingHandler, Disposable { +public class LoggingHandlerImpl extends LoggingHandlerBase implements LoggingHandler { private final ConsoleView myConsole; - public LoggingHandlerImpl(@NotNull Project project) { + public LoggingHandlerImpl(String presentableName, @NotNull Project project) { + super(presentableName); myConsole = TextConsoleBuilderFactory.getInstance().createBuilder(project).getConsole(); Disposer.register(this, myConsole); } + @Override + public JComponent getComponent() { + return myConsole.getComponent(); + } + @NotNull public ConsoleView getConsole() { return myConsole; @@ -56,9 +63,4 @@ public class LoggingHandlerImpl implements LoggingHandler, Disposable { public void clear() { myConsole.clear(); } - - @Override - public void dispose() { - - } } diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ui/ServersToolWindowContent.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ui/ServersToolWindowContent.java index a5d062dfd563..88107cdc83fd 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ui/ServersToolWindowContent.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ui/ServersToolWindowContent.java @@ -136,11 +136,10 @@ public class ServersToolWindowContent extends JPanel implements Disposable { myLastSelection = node; if (node instanceof ServersTreeStructure.LogProvidingNode) { ServersTreeStructure.LogProvidingNode logNode = (ServersTreeStructure.LogProvidingNode)node; - LoggingHandlerImpl loggingHandler = logNode.getLoggingHandler(); - if (loggingHandler != null) { + JComponent logComponent = logNode.getComponent(); + if (logComponent != null) { String cardName = logNode.getLogId(); JComponent oldComponent = myLogComponents.get(cardName); - JComponent logComponent = loggingHandler.getConsole().getComponent(); if (!logComponent.equals(oldComponent)) { myLogComponents.put(cardName, logComponent); if (oldComponent != null) { @@ -316,7 +315,7 @@ public class ServersToolWindowContent extends JPanel implements Disposable { AbstractTreeNode parent = node.getParent(); return parent instanceof ServersTreeStructure.DeploymentNodeImpl && isDeploymentNodeMatch((ServersTreeStructure.DeploymentNodeImpl)parent, connection, deploymentName) - && node.getValue().second.equals(logName); + && node.getValue().getPresentableName().equals(logName); } }, null, false); } diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ui/tree/ServersTreeStructure.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ui/tree/ServersTreeStructure.java index 29c02383df32..1a63a41f6cbe 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ui/tree/ServersTreeStructure.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ui/tree/ServersTreeStructure.java @@ -20,7 +20,6 @@ import com.intellij.openapi.ui.popup.ListPopup; import com.intellij.openapi.ui.popup.PopupStep; import com.intellij.openapi.ui.popup.util.BaseListPopupStep; import com.intellij.openapi.util.Condition; -import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; import com.intellij.remoteServer.ServerType; import com.intellij.remoteServer.configuration.RemoteServer; @@ -31,7 +30,7 @@ import com.intellij.remoteServer.impl.configuration.SingleRemoteServerConfigurab import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerRunConfiguration; import com.intellij.remoteServer.impl.runtime.deployment.DeploymentTaskImpl; import com.intellij.remoteServer.impl.runtime.log.DeploymentLogManagerImpl; -import com.intellij.remoteServer.impl.runtime.log.LoggingHandlerImpl; +import com.intellij.remoteServer.impl.runtime.log.LoggingHandlerBase; import com.intellij.remoteServer.impl.runtime.ui.RemoteServersViewContributor; import com.intellij.remoteServer.runtime.ConnectionStatus; import com.intellij.remoteServer.runtime.Deployment; @@ -49,7 +48,10 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.event.MouseEvent; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; /** * @author michael.golubev @@ -104,9 +106,10 @@ public class ServersTreeStructure extends AbstractTreeStructureBase { public interface LogProvidingNode { @Nullable - LoggingHandlerImpl getLoggingHandler(); + JComponent getComponent(); - @NotNull String getLogId(); + @NotNull + String getLogId(); } public class ServersTreeRootNode extends AbstractTreeNode { @@ -343,9 +346,11 @@ public class ServersTreeStructure extends AbstractTreeStructureBase { @Nullable @Override - public LoggingHandlerImpl getLoggingHandler() { + public JComponent getComponent() { DeploymentLogManagerImpl logManager = getLogManager(); - return logManager != null && logManager.isMainHandlerVisible() ? logManager.getMainLoggingHandler() : null; + return logManager != null && logManager.isMainHandlerVisible() + ? logManager.getMainLoggingHandler().getConsole().getComponent() + : null; } @Nullable @@ -368,10 +373,9 @@ public class ServersTreeStructure extends AbstractTreeStructureBase { public Collection getChildren() { DeploymentLogManagerImpl logManager = (DeploymentLogManagerImpl)getConnection().getLogManager(getValue()); if (logManager != null) { - Map handlers = logManager.getAdditionalLoggingHandlers(); List nodes = new ArrayList(); - for (Map.Entry entry : handlers.entrySet()) { - nodes.add(new DeploymentLogNode(Pair.create(entry.getValue(), entry.getKey()), this)); + for (LoggingHandlerBase loggingComponent : logManager.getAdditionalLoggingHandlers()) { + nodes.add(new DeploymentLogNode(loggingComponent, this)); } return nodes; } @@ -398,10 +402,10 @@ public class ServersTreeStructure extends AbstractTreeStructureBase { } } - public class DeploymentLogNode extends AbstractTreeNode> implements ServersTreeNode, LogProvidingNode { + public class DeploymentLogNode extends AbstractTreeNode implements ServersTreeNode, LogProvidingNode { @NotNull private final DeploymentNodeImpl myDeploymentNode; - public DeploymentLogNode(@NotNull Pair value, @NotNull DeploymentNodeImpl deploymentNode) { + public DeploymentLogNode(@NotNull LoggingHandlerBase value, @NotNull DeploymentNodeImpl deploymentNode) { super(doGetProject(), value); myDeploymentNode = deploymentNode; } @@ -419,13 +423,13 @@ public class ServersTreeStructure extends AbstractTreeStructureBase { } private String getLogName() { - return getValue().getSecond(); + return getValue().getPresentableName(); } @Nullable @Override - public LoggingHandlerImpl getLoggingHandler() { - return getValue().getFirst(); + public JComponent getComponent() { + return getValue().getComponent(); } @NotNull diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudLoggingHandlerImpl.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudLoggingHandlerImpl.java index 6154ebd407d7..41ad5e1c59eb 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudLoggingHandlerImpl.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudLoggingHandlerImpl.java @@ -22,6 +22,7 @@ import com.intellij.remoteServer.runtime.deployment.DeploymentLogManager; import com.intellij.remoteServer.runtime.log.LoggingHandler; import org.jetbrains.annotations.Nullable; +import java.io.InputStream; import java.io.OutputStream; import java.util.HashMap; @@ -101,6 +102,16 @@ public class CloudLoggingHandlerImpl implements CloudAgentLoggingHandler { }; } + @Override + public boolean isTtySupported() { + return myLogManager.isTtySupported(); + } + + @Override + public void createTerminal(final String pipeName, OutputStream terminalInput, InputStream terminalOutput) { + myLogManager.addTerminal(pipeName, terminalOutput, terminalInput); + } + private static class LogListenerImpl implements LogListener { private final LoggingHandler myLoggingHandler; diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudSilentLoggingHandlerImpl.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudSilentLoggingHandlerImpl.java index 2397953752d6..02219bbfffb6 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudSilentLoggingHandlerImpl.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudSilentLoggingHandlerImpl.java @@ -4,6 +4,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.remoteServer.agent.util.CloudAgentLoggingHandler; import com.intellij.remoteServer.agent.util.log.LogListener; +import java.io.InputStream; import java.io.OutputStream; /** @@ -32,4 +33,14 @@ public class CloudSilentLoggingHandlerImpl implements CloudAgentLoggingHandler { public LogListener createConsole(String pipeName, OutputStream consoleInput) { return LogListener.NULL; } + + @Override + public boolean isTtySupported() { + return false; + } + + @Override + public void createTerminal(String pipeName, OutputStream terminalInput, InputStream terminalOutput) { + + } } diff --git a/plugins/terminal/resources/META-INF/terminal.xml b/plugins/terminal/resources/META-INF/terminal.xml index c91a17d76f91..4d8550d94892 100644 --- a/plugins/terminal/resources/META-INF/terminal.xml +++ b/plugins/terminal/resources/META-INF/terminal.xml @@ -6,6 +6,8 @@ + + diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalProcess.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalProcess.java new file mode 100644 index 000000000000..05df756ec393 --- /dev/null +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalProcess.java @@ -0,0 +1,65 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.terminal.cloud; + +import java.io.InputStream; +import java.io.OutputStream; + +public class CloudTerminalProcess extends Process { + + private final OutputStream myOutputStream; + private final InputStream myInputStream; + + private boolean myRunning = true; + + public CloudTerminalProcess(OutputStream terminalInput, InputStream terminalOutput) { + myOutputStream = terminalInput; + myInputStream = terminalOutput; + } + + @Override + public OutputStream getOutputStream() { + return myOutputStream; + } + + @Override + public InputStream getInputStream() { + return myInputStream; + } + + @Override + public InputStream getErrorStream() { + return null; + } + + @Override + public int waitFor() throws InterruptedException { + while (myRunning) { + Thread.sleep(100); + } + return exitValue(); + } + + @Override + public int exitValue() { + return 0; + } + + @Override + public void destroy() { + myRunning = true; + } +} diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalProviderImpl.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalProviderImpl.java new file mode 100644 index 000000000000..80d326507447 --- /dev/null +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalProviderImpl.java @@ -0,0 +1,40 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.terminal.cloud; + +import com.intellij.openapi.project.Project; +import com.intellij.remoteServer.impl.runtime.log.CloudTerminalProvider; +import com.intellij.remoteServer.impl.runtime.log.LoggingHandlerBase; +import org.jetbrains.annotations.NotNull; + +import java.io.InputStream; +import java.io.OutputStream; + +public class CloudTerminalProviderImpl implements CloudTerminalProvider { + + @Override + public LoggingHandlerBase createTerminal(@NotNull String presentableName, + @NotNull Project project, + @NotNull InputStream terminalOutput, + @NotNull OutputStream terminalInput) { + return new TerminalHandlerImpl(presentableName, project, terminalOutput, terminalInput); + } + + @Override + public boolean isTtySupported() { + return true; + } +} diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalRunner.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalRunner.java new file mode 100644 index 000000000000..61174b2832e0 --- /dev/null +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/CloudTerminalRunner.java @@ -0,0 +1,102 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.terminal.cloud; + +import com.intellij.execution.process.ProcessHandler; +import com.intellij.openapi.project.Project; +import com.jediterm.terminal.ProcessTtyConnector; +import com.jediterm.terminal.TtyConnector; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.plugins.terminal.AbstractTerminalRunner; + +import java.io.OutputStream; +import java.nio.charset.Charset; +import java.util.concurrent.ExecutionException; + +public class CloudTerminalRunner extends AbstractTerminalRunner { + private final String myPipeName; + private CloudTerminalProcess myProcess; + + public CloudTerminalRunner(@NotNull Project project, String pipeName, CloudTerminalProcess process) { + super(project); + myPipeName = pipeName; + myProcess = process; + } + + @Override + protected CloudTerminalProcess createProcess(@Nullable String directory) throws ExecutionException { + return myProcess; + } + + @Override + protected ProcessHandler createProcessHandler(final CloudTerminalProcess process) { + return new ProcessHandler() { + + @Override + protected void destroyProcessImpl() { + process.destroy(); + } + + @Override + protected void detachProcessImpl() { + process.destroy(); + } + + @Override + public boolean detachIsDefault() { + return false; + } + + @Nullable + @Override + public OutputStream getProcessInput() { + return process.getOutputStream(); + } + }; + } + + @Override + protected String getTerminalConnectionName(CloudTerminalProcess process) { + return "Terminal: " + myPipeName; + } + + @Override + protected TtyConnector createTtyConnector(CloudTerminalProcess process) { + return new ProcessTtyConnector(process, Charset.defaultCharset()) { + + @Override + protected void resizeImmediately() { + + } + + @Override + public String getName() { + return "Connector: " + myPipeName; + } + + @Override + public boolean isConnected() { + return true; + } + }; + } + + @Override + public String runningTargetName() { + return "Cloud terminal"; + } +} diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/TerminalHandlerImpl.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/TerminalHandlerImpl.java new file mode 100644 index 000000000000..12a898a8dde4 --- /dev/null +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/cloud/TerminalHandlerImpl.java @@ -0,0 +1,48 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.terminal.cloud; + +import com.intellij.openapi.project.Project; +import com.intellij.remoteServer.impl.runtime.log.LoggingHandlerBase; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.terminal.JBTabbedTerminalWidget; + +import javax.swing.*; +import java.io.InputStream; +import java.io.OutputStream; + +public class TerminalHandlerImpl extends LoggingHandlerBase { + + private final JBTabbedTerminalWidget myTerminalWidget; + + public TerminalHandlerImpl(@NotNull String presentableName, + @NotNull Project project, + @NotNull InputStream terminalOutput, + @NotNull OutputStream terminalInput) { + super(presentableName); + + final CloudTerminalProcess process = new CloudTerminalProcess(terminalInput, terminalOutput); + + CloudTerminalRunner terminalRunner = new CloudTerminalRunner(project, presentableName, process); + + myTerminalWidget = terminalRunner.createTerminalWidget(project); + } + + @Override + public JComponent getComponent() { + return myTerminalWidget.getComponent(); + } +} diff --git a/plugins/terminal/terminal.iml b/plugins/terminal/terminal.iml index 7b4c13d4c09f..622ab8978555 100644 --- a/plugins/terminal/terminal.iml +++ b/plugins/terminal/terminal.iml @@ -23,6 +23,7 @@ + + - - + \ No newline at end of file From 65f2d433270072930c86668889d4cc87d711cb2c Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 11 Jun 2015 09:13:46 +0200 Subject: [PATCH 11/82] IDEA-CR-3062 fix name --- .../com/intellij/util/xmlb/BeanBinding.java | 2 +- .../xmlb/SkipDefaultsSerializationFilter.java | 4 +-- .../intellij/util/xmlb/XmlSerializerTest.java | 31 +++++++++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/platform/util/src/com/intellij/util/xmlb/BeanBinding.java b/platform/util/src/com/intellij/util/xmlb/BeanBinding.java index e9a0ea274b29..ea764fa14550 100644 --- a/platform/util/src/com/intellij/util/xmlb/BeanBinding.java +++ b/platform/util/src/com/intellij/util/xmlb/BeanBinding.java @@ -50,7 +50,7 @@ class BeanBinding extends Binding implements MainBinding { final Class myBeanClass; - ThreeState hasEqualMethod = ThreeState.UNSURE; + ThreeState compareByFields = ThreeState.UNSURE; public BeanBinding(@NotNull Class beanClass, @Nullable MutableAccessor accessor) { super(accessor); diff --git a/platform/util/src/com/intellij/util/xmlb/SkipDefaultsSerializationFilter.java b/platform/util/src/com/intellij/util/xmlb/SkipDefaultsSerializationFilter.java index 57d8458be07e..610c5d9dddcc 100644 --- a/platform/util/src/com/intellij/util/xmlb/SkipDefaultsSerializationFilter.java +++ b/platform/util/src/com/intellij/util/xmlb/SkipDefaultsSerializationFilter.java @@ -48,11 +48,11 @@ public final class SkipDefaultsSerializationFilter extends SkipDefaultValuesSeri Binding referencedBinding = ((BasePrimitiveBinding)binding).myBinding; if (referencedBinding instanceof BeanBinding) { BeanBinding classBinding = (BeanBinding)referencedBinding; - ThreeState compareByFields = classBinding.hasEqualMethod; + ThreeState compareByFields = classBinding.compareByFields; if (compareByFields == ThreeState.UNSURE) { compareByFields = ReflectionUtil.getDeclaredMethod(classBinding.myBeanClass, "equals", Object.class) == null ? ThreeState.YES : ThreeState.NO; - classBinding.hasEqualMethod = compareByFields; + classBinding.compareByFields = compareByFields; } if (compareByFields == ThreeState.YES) { diff --git a/platform/util/testSrc/com/intellij/util/xmlb/XmlSerializerTest.java b/platform/util/testSrc/com/intellij/util/xmlb/XmlSerializerTest.java index 53dcc89daea5..7e5fe1f646af 100644 --- a/platform/util/testSrc/com/intellij/util/xmlb/XmlSerializerTest.java +++ b/platform/util/testSrc/com/intellij/util/xmlb/XmlSerializerTest.java @@ -168,6 +168,37 @@ public class XmlSerializerTest extends TestCase { bean, new SkipDefaultsSerializationFilter()); } + public final static class BeanWithEquals { + public String STRING_V = "hello"; + + public BeanWithEquals() { + } + + @Override + public boolean equals(Object o) { + // any instance of this class is equal + return this == o || (o != null && getClass() == o.getClass()); + } + } + + public static class BeanWithSubBeanWithEquals { + public EmptyBeanWithCustomName BEAN1 = new EmptyBeanWithCustomName(); + public BeanWithEquals BEAN2 = new BeanWithEquals(); + } + + public void testSubBeanWithEqualsSerializationAndSkipDefaults() { + BeanWithSubBeanWithEquals bean = new BeanWithSubBeanWithEquals(); + SkipDefaultsSerializationFilter filter = new SkipDefaultsSerializationFilter(); + doSerializerTest( + "", + bean, filter); + + bean.BEAN2.STRING_V = "new"; + doSerializerTest( + "", + bean, filter); + } + public void testNullFieldValue() { BeanWithPublicFields bean1 = new BeanWithPublicFields(); From e8d1cdffc29c0f11ef1d2369fbd7cb0b99dbad5d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 10 Jun 2015 21:24:50 +0300 Subject: [PATCH 12/82] sm runner: replace deprecated api use --- .../testframework/sm/runner/SMTRunnerTreeBuilder.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTRunnerTreeBuilder.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTRunnerTreeBuilder.java index e4d9ff5c9c08..a1db456c0710 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTRunnerTreeBuilder.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTRunnerTreeBuilder.java @@ -44,10 +44,7 @@ public class SMTRunnerTreeBuilder extends AbstractTestTreeBuilder { } public void updateTestsSubtree(final SMTestProxy parentTestProxy) { - final AbstractTreeUpdater updater = getUpdater(); - if (updater != null) { - updater.addSubtreeToUpdateByElement(parentTestProxy); - } + queueUpdateFrom(parentTestProxy, false, true); } From 37d3c30a4c31c5ce2a40e31db836da947500793d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 10:43:30 +0300 Subject: [PATCH 13/82] tests ui: don't update tree during initial tree build --- .../testframework/sm/runner/ui/SMTestRunnerResultsForm.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java index b22cb5ebec72..4054a2a8a96b 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java @@ -27,7 +27,6 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.progress.util.ColorProgressBar; import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.MessageType; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Pass; import com.intellij.openapi.util.registry.Registry; @@ -237,6 +236,8 @@ public class SMTestRunnerResultsForm extends TestResultsPanel */ public void onTestingStarted(@NotNull SMTestProxy.SMRootTestProxy testsRoot) { myAnimator.setCurrentTestCase(myTestsRootNode); + //ensure that tree built before tests were started is updated + myTreeBuilder.updateFromRoot(); // Status line myStatusLine.setStatusColor(ColorProgressBar.GREEN); @@ -326,12 +327,10 @@ public class SMTestRunnerResultsForm extends TestResultsPanel @Override public void onSuiteTreeNodeAdded(SMTestProxy testProxy) { myTotalTestCount++; - _addTestOrSuite(testProxy); } @Override public void onSuiteTreeStarted(SMTestProxy suite) { - _addTestOrSuite(suite); } public void onTestFailed(@NotNull final SMTestProxy test) { From 474e9e3c3625b4d8bb7de4ac27a7848f86379e7a Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Wed, 10 Jun 2015 23:28:11 +0200 Subject: [PATCH 14/82] prevent running loop 100 times becomes hotspot removed unused allocation --- platform/testFramework/src/com/intellij/util/GCUtil.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/platform/testFramework/src/com/intellij/util/GCUtil.java b/platform/testFramework/src/com/intellij/util/GCUtil.java index ab2f1a419b68..8f82b7d16df5 100644 --- a/platform/testFramework/src/com/intellij/util/GCUtil.java +++ b/platform/testFramework/src/com/intellij/util/GCUtil.java @@ -21,7 +21,7 @@ import org.jetbrains.annotations.TestOnly; import java.lang.ref.ReferenceQueue; import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; -import java.util.List; +import java.util.ArrayList; public class GCUtil { /** @@ -46,7 +46,7 @@ public class GCUtil { public static void tryGcSoftlyReachableObjects() { ReferenceQueue q = new ReferenceQueue(); SoftReference ref = new SoftReference(new Object(), q); - List list = ContainerUtil.newArrayListWithCapacity(100 + useReference(ref)); + ArrayList list = ContainerUtil.newArrayListWithCapacity(100 + useReference(ref)); for (int i = 0; i < 100; i++) { System.gc(); if (q.poll() != null) { @@ -55,6 +55,10 @@ public class GCUtil { TimeoutUtil.sleep(10); long bytes = Math.min(Runtime.getRuntime().freeMemory() / 2, Integer.MAX_VALUE); list.add(new SoftReference(new byte[(int)bytes])); + + // use ref is important as to loop to finish with several iterations: long runs of the method (~80 run of PsiModificationTrackerTest) + // discovered 'ref' being collected and loop iterated 100 times taking a lot of time + list.ensureCapacity(list.size() + useReference(ref)); } } From 3ca59827b47687c87619e3852768509a1444ea82 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Wed, 10 Jun 2015 23:29:46 +0200 Subject: [PATCH 15/82] stub psi mismatch (IDEA-141285) --- .../intellij/index/ConcurrentIndexTest.groovy | 44 ++++++++++++++++++- .../util/indexing/MemoryIndexStorage.java | 8 ++-- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/index/ConcurrentIndexTest.groovy b/java/java-tests/testSrc/com/intellij/index/ConcurrentIndexTest.groovy index 2b94e5a42c23..348d793e8652 100644 --- a/java/java-tests/testSrc/com/intellij/index/ConcurrentIndexTest.groovy +++ b/java/java-tests/testSrc/com/intellij/index/ConcurrentIndexTest.groovy @@ -22,13 +22,13 @@ import com.intellij.psi.PsiFile import com.intellij.psi.PsiJavaFile import com.intellij.psi.impl.PsiDocumentManagerBase import com.intellij.psi.impl.source.PsiFileImpl +import com.intellij.psi.search.GlobalSearchScope import com.intellij.testFramework.BombedProgressIndicator import com.intellij.testFramework.PlatformTestUtil import com.intellij.testFramework.SkipSlowTestLocally import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase import java.util.concurrent.CountDownLatch - /** * @author peter */ @@ -128,4 +128,46 @@ class ConcurrentIndexTest extends JavaCodeInsightFixtureTestCase { for(future in futuresToWait) future.get(); } } + + public void "test forceUpdateAffectsReadOfDataForUnsavedDocuments"() { + def N = Math.max(2, (int)(Runtime.runtime.availableProcessors())); + PsiFileImpl file = (PsiFileImpl) myFixture.addFileToProject("Foo.java", "class Foo {" + ("public void foo() {}\n") * 1000 + "}") + assert myFixture.findClass("Foo").node + + for (i in 1..20) { + println "iteration $i" + WriteCommandAction.runWriteCommandAction(project) { + ((PsiJavaFile) file).importList.add(JavaPsiFacade.getElementFactory(project).createImportStatementOnDemand("foo.bar$i")) + } + PlatformTestUtil.tryGcSoftlyReachableObjects() + assert !file.contentsLoaded + + myFixture.addFileToProject("Foo" + i + ".java", "class Foo" + i + " {" + ("public void foo() {}\n") * 1000 + "}") + + def futuresToWait = [] + def sameStartCondition = new CountDownLatch(N) + + for(j in 1..N/2) { + futuresToWait.add(ApplicationManager.application.executeOnPooledThread { + ApplicationManager.application.runReadAction { + sameStartCondition.countDown() + sameStartCondition.await() + assert myFixture.getJavaFacade().findClass("Foo", GlobalSearchScope.fileScope(file)).node + } + }) + } + + for(j in 1..N/2) { + futuresToWait.add(ApplicationManager.application.executeOnPooledThread { + ApplicationManager.application.runReadAction { + sameStartCondition.countDown() + sameStartCondition.await() + assert myFixture.findClass("Foo" + i).node + } + }); + } + + for(future in futuresToWait) future.get(); + } + } } diff --git a/platform/lang-impl/src/com/intellij/util/indexing/MemoryIndexStorage.java b/platform/lang-impl/src/com/intellij/util/indexing/MemoryIndexStorage.java index c29692985d88..9a410b2f615c 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/MemoryIndexStorage.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/MemoryIndexStorage.java @@ -190,11 +190,9 @@ public class MemoryIndexStorage implements IndexStorage @Override @NotNull public ValueContainer read(final Key key) throws StorageException { - if (myBufferingEnabled) { - final ValueContainer valueContainer = myMap.get(key); - if (valueContainer != null) { - return valueContainer; - } + final ValueContainer valueContainer = myMap.get(key); + if (valueContainer != null) { + return valueContainer; } return myBackendStorage.read(key); From e034d248f15d62f670c032115df7111a4da31a77 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Thu, 11 Jun 2015 12:34:19 +0300 Subject: [PATCH 16/82] NotNull --- .../com/intellij/testFramework/vcs/MockVcsContextFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/vcs-impl/testSrc/com/intellij/testFramework/vcs/MockVcsContextFactory.java b/platform/vcs-impl/testSrc/com/intellij/testFramework/vcs/MockVcsContextFactory.java index 16dde9fe003f..1e825f2e2d6e 100644 --- a/platform/vcs-impl/testSrc/com/intellij/testFramework/vcs/MockVcsContextFactory.java +++ b/platform/vcs-impl/testSrc/com/intellij/testFramework/vcs/MockVcsContextFactory.java @@ -38,7 +38,7 @@ public class MockVcsContextFactory extends VcsContextFactoryImpl { } private class CustomFileSystemFilePath extends LocalFilePath { - public CustomFileSystemFilePath(String path, boolean directory) { + public CustomFileSystemFilePath(@NotNull String path, boolean directory) { super(path, directory); } From 42cffb66bd2b4ce9031bbe93af36b5763140b036 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 13:11:13 +0300 Subject: [PATCH 17/82] replace lambda icon --- .../psi/impl/source/tree/java/PsiLambdaExpressionImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLambdaExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLambdaExpressionImpl.java index e756149618df..ffb9de9ebcfa 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLambdaExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLambdaExpressionImpl.java @@ -272,6 +272,6 @@ public class PsiLambdaExpressionImpl extends ExpressionPsiElement implements Psi @Nullable @Override public Icon getIcon(int flags) { - return AllIcons.Nodes.AnonymousClass; + return AllIcons.Nodes.Function; } } From 1fe7e6a77e110819164296406bd6a883dca0b014 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 13:19:18 +0300 Subject: [PATCH 18/82] tests ui: update tree once in 100 ms --- .../sm/runner/ui/SMTestRunnerResultsForm.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java index 4054a2a8a96b..e58e8335473d 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java @@ -27,14 +27,18 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.progress.util.ColorProgressBar; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.MessageType; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Pass; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.JBColor; +import com.intellij.util.Alarm; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.text.DateFormatUtil; +import com.intellij.util.ui.update.MergingUpdateQueue; +import com.intellij.util.ui.update.Update; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -45,9 +49,8 @@ import javax.swing.event.TreeSelectionListener; import java.awt.*; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; -import java.util.LinkedHashSet; +import java.util.*; import java.util.List; -import java.util.Set; /** * @author: Roman Chernyatchik @@ -89,6 +92,8 @@ public class SMTestRunnerResultsForm extends TestResultsPanel private final Set myMentionedCategories = new LinkedHashSet(); private boolean myTestsRunning = true; private AbstractTestProxy myLastSelected; + private Alarm myUpdateQueue; + private Set myRequests = Collections.synchronizedSet(new HashSet()); public SMTestRunnerResultsForm(final RunConfiguration runConfiguration, @NotNull final JComponent console, @@ -195,7 +200,7 @@ public class SMTestRunnerResultsForm extends TestResultsPanel //TODO always hide root node //myTreeView.setRootVisible(false); - + myUpdateQueue = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, this); return myTreeView; } @@ -236,7 +241,6 @@ public class SMTestRunnerResultsForm extends TestResultsPanel */ public void onTestingStarted(@NotNull SMTestProxy.SMRootTestProxy testsRoot) { myAnimator.setCurrentTestCase(myTestsRootNode); - //ensure that tree built before tests were started is updated myTreeBuilder.updateFromRoot(); // Status line @@ -524,7 +528,16 @@ public class SMTestRunnerResultsForm extends TestResultsPanel assert parentSuite != null; // Tree - myTreeBuilder.updateTestsSubtree(parentSuite); + final Update update = new Update(parentSuite) { + @Override + public void run() { + myRequests.remove(this); + myTreeBuilder.updateTestsSubtree(parentSuite); + } + }; + if (myRequests.add(update)) { + myUpdateQueue.addRequest(update, 100); + } myTreeBuilder.repaintWithParents(newTestOrSuite); myAnimator.setCurrentTestCase(newTestOrSuite); From bd4fb0b103746088f28610405f58ba346842a9f9 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 13:40:39 +0300 Subject: [PATCH 19/82] tests ui: drain queue on finish testing --- .../runner/GeneralIdBasedToSMTRunnerEventsConvertor.java | 1 + .../sm/runner/GeneralTestEventsProcessor.java | 9 +++++++++ .../sm/runner/GeneralToSMTRunnerEventsConvertor.java | 1 + 3 files changed, 11 insertions(+) diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertor.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertor.java index 022232641fab..c81797ec8fda 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertor.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertor.java @@ -111,6 +111,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP fireOnTestingFinished(); } }); + stopEventProcessing(); } @Override diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralTestEventsProcessor.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralTestEventsProcessor.java index 0708abdcb940..fdeaf362cd96 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralTestEventsProcessor.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralTestEventsProcessor.java @@ -141,6 +141,15 @@ public abstract class GeneralTestEventsProcessor implements Disposable { } } + public void stopEventProcessing() { + UIUtil.invokeLaterIfNeeded(new Runnable() { + @Override + public void run() { + myTransferToEDTQueue.drain(); + } + }); + } + protected static boolean isTreeComplete(Collection runningTests, SMTestProxy.SMRootTestProxy rootNode) { if (!runningTests.isEmpty()) { diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralToSMTRunnerEventsConvertor.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralToSMTRunnerEventsConvertor.java index fe006c360001..09574b2ab3d8 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralToSMTRunnerEventsConvertor.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralToSMTRunnerEventsConvertor.java @@ -112,6 +112,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso fireOnTestingFinished(); } }); + stopEventProcessing(); } @Override From 1e8670a2e48e7012cf450221039b29c5d6ab1c23 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 11 Jun 2015 12:35:07 +0300 Subject: [PATCH 20/82] don't send statistics about default setting value --- .../statistic/editor/EditorSettingsStatisticsCollector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/internal/statistic/editor/EditorSettingsStatisticsCollector.java b/platform/lang-impl/src/com/intellij/internal/statistic/editor/EditorSettingsStatisticsCollector.java index 62d3943420e7..b5175578f9ab 100644 --- a/platform/lang-impl/src/com/intellij/internal/statistic/editor/EditorSettingsStatisticsCollector.java +++ b/platform/lang-impl/src/com/intellij/internal/statistic/editor/EditorSettingsStatisticsCollector.java @@ -63,7 +63,7 @@ class EditorSettingsStatisticsCollector extends UsagesCollector { addIfDiffers(set, es.isWhitespacesShown() && es.isTrailingWhitespacesShown(), false, "showTrailingWhitespace"); addIfDiffers(set, es.isIndentGuidesShown(), true, "noIndentGuides"); addIfDiffers(set, es.isSmoothScrolling(), true, "noAnimatedScroll"); - addIfDiffers(set, es.isDndEnabled(), false, "dragNDrop"); + addIfDiffers(set, es.isDndEnabled(), true, "noDragNDrop"); addIfDiffers(set, es.isWheelFontChangeEnabled(), false, "wheelZoom"); addIfDiffers(set, es.isMouseClickSelectionHonorsCamelWords(), true, "mouseNoCamel"); addIfDiffers(set, es.isVariableInplaceRenameEnabled(), true, "noInplaceRename"); From 8eb46b69f03fb6641a2c6397e51ca631217b257c Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 11 Jun 2015 13:38:34 +0300 Subject: [PATCH 21/82] IDEA-141324 Line numbers in breakpoints dialog box broken by line wrappin --- .../src/com/intellij/diff/util/DiffUtil.java | 2 - .../intellij/openapi/diff/impl/DiffUtil.java | 4 +- .../intellij/openapi/editor/ex/EditorEx.java | 6 +- .../ex/EditorSettingsExternalizable.java | 16 +---- .../openapi/editor/impl/EditorImpl.java | 1 - .../editor/impl/SoftWrapModelImpl.java | 9 +-- .../softwrap/SoftWrapAppliancePlaces.java | 4 +- .../SoftWrapFoldBasedApplianceStrategy.java | 59 ------------------- 8 files changed, 10 insertions(+), 91 deletions(-) delete mode 100644 platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/SoftWrapFoldBasedApplianceStrategy.java diff --git a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java index d634a57b7612..709db25a0160 100644 --- a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java +++ b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java @@ -52,7 +52,6 @@ import com.intellij.openapi.editor.ex.EditorMarkupModel; import com.intellij.openapi.editor.ex.util.EmptyEditorHighlighter; import com.intellij.openapi.editor.highlighter.EditorHighlighter; import com.intellij.openapi.editor.highlighter.EditorHighlighterFactory; -import com.intellij.openapi.editor.impl.softwrap.SoftWrapAppliancePlaces; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.progress.ProgressIndicator; @@ -165,7 +164,6 @@ public class DiffUtil { EditorEx editor = (EditorEx)(isViewer ? factory.createViewer(document, project) : factory.createEditor(document, project)); editor.putUserData(DiffManagerImpl.EDITOR_IS_DIFF_KEY, Boolean.TRUE); - editor.setSoftWrapAppliancePlace(SoftWrapAppliancePlaces.VCS_DIFF); editor.getSettings().setLineNumbersShown(true); ((EditorMarkupModel)editor.getMarkupModel()).setErrorStripeVisible(true); diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffUtil.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffUtil.java index 79146f9a3870..290c59241e4e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,6 @@ import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.editor.ex.EditorEx; -import com.intellij.openapi.editor.impl.softwrap.SoftWrapAppliancePlaces; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.project.Project; @@ -93,7 +92,6 @@ public class DiffUtil { EditorFactory factory = EditorFactory.getInstance(); EditorEx editor = (EditorEx)(isViewer ? factory.createViewer(document, project) : factory.createEditor(document, project)); editor.putUserData(DiffManagerImpl.EDITOR_IS_DIFF_KEY, Boolean.TRUE); - editor.setSoftWrapAppliancePlace(SoftWrapAppliancePlaces.VCS_DIFF); editor.getGutterComponentEx().revalidateMarkup(); if (fileType != null && project != null && !project.isDisposed()) { diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorEx.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorEx.java index 7813c171cca2..bd8db84994dc 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorEx.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorEx.java @@ -261,11 +261,13 @@ public interface EditorEx extends Editor { /** * We often re-use the logic encapsulated at the editor. For example, every time we show editor fragment (folding, preview etc) we * create a dedicated graphics object and ask the editor to paint into it. - *

+ *

* The thing is that the editor itself may change its state if any postponed operation is triggered by the painting request * (e.g. soft wraps recalculation is triggered by the paint request and newly calculated soft wraps cause caret to change its position). - *

+ *

* This method allows to inform the editor that all subsequent painting request should not change the editor state. + *

+ * In 'pure painting mode' editor also behaves as if soft wraps were not enabled. * * @param enabled 'pure painting mode' status to use */ diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorSettingsExternalizable.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorSettingsExternalizable.java index 55bb9b3db064..e0cd5310b1dd 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorSettingsExternalizable.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorSettingsExternalizable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -143,10 +143,6 @@ public class EditorSettingsExternalizable implements PersistentStateComponent myDeferredFoldRegions = new ArrayList(); - private final SoftWrapFoldBasedApplianceStrategy myFoldBasedApplianceStrategy; private final CachingSoftWrapDataMapper myDataMapper; private final SoftWrapsStorage myStorage; private SoftWrapPainter myPainter; @@ -138,7 +137,6 @@ public class SoftWrapModelImpl implements SoftWrapModelEx, PrioritizedDocumentLi myEditorTextRepresentationHelper = new DefaultEditorTextRepresentationHelper(editor); myDataMapper = new CachingSoftWrapDataMapper(editor, myStorage); myApplianceManager = new SoftWrapApplianceManager(myStorage, editor, myPainter, myDataMapper); - myFoldBasedApplianceStrategy = new SoftWrapFoldBasedApplianceStrategy(editor); myVisualSizeManager = new SoftWrapAwareVisualSizeManager(myPainter); myApplianceManager.addListener(myVisualSizeManager); @@ -434,8 +432,7 @@ public class SoftWrapModelImpl implements SoftWrapModelEx, PrioritizedDocumentLi * @return true if soft wraps-aware processing should be used; false otherwise */ private boolean prepareToMapping() { - boolean useSoftWraps = myActive <= 0 && isSoftWrappingEnabled() && myEditor.getDocument().getTextLength() > 0 - && myFoldBasedApplianceStrategy.processSoftWraps(); + boolean useSoftWraps = myActive <= 0 && isSoftWrappingEnabled() && myEditor.getDocument().getTextLength() > 0; if (!useSoftWraps) { return false; @@ -536,10 +533,6 @@ public class SoftWrapModelImpl implements SoftWrapModelEx, PrioritizedDocumentLi caretModel.moveToVisualPosition(visualCaretPosition); } - public void setPlace(@NotNull SoftWrapAppliancePlaces place) { - myFoldBasedApplianceStrategy.setCurrentPlace(place); - } - @Override public boolean addSoftWrapChangeListener(@NotNull SoftWrapChangeListener listener) { mySoftWrapListeners.add(listener); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/SoftWrapAppliancePlaces.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/SoftWrapAppliancePlaces.java index 59d1a49cc692..f18ef153755a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/SoftWrapAppliancePlaces.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/SoftWrapAppliancePlaces.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,5 +25,5 @@ package com.intellij.openapi.editor.impl.softwrap; * @since 9/30/10 7:32 PM */ public enum SoftWrapAppliancePlaces { - MAIN_EDITOR, CONSOLE, VCS_DIFF + MAIN_EDITOR, CONSOLE } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/SoftWrapFoldBasedApplianceStrategy.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/SoftWrapFoldBasedApplianceStrategy.java deleted file mode 100644 index e9602db1d3b3..000000000000 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/SoftWrapFoldBasedApplianceStrategy.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2000-2010 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.openapi.editor.impl.softwrap; - -import com.intellij.openapi.editor.ex.EditorEx; -import org.jetbrains.annotations.NotNull; - -/** - * This {@link SoftWrapApplianceStrategy} implementation operates on current fold processing state (enabled/disabled) and - * {@link SoftWrapAppliancePlaces soft wrap appliance place}. - *

- * Rationale: IJ editor toggles folding processing periodically (e.g. during showing collapsed fold region contents). - * Hence, we don't need to use soft wraps processing there (because soft wraps data cache stores fold regions-related information). - * However, there is a possible case that the folding is disabled at all, e.g. that is the case for VCS 'diff window'. Hence, - * we need to distinguish between those situations. - *

- * Not thread-safe. - * - * @author Denis Zhdanov - * @since 10/6/10 8:09 AM - */ -public class SoftWrapFoldBasedApplianceStrategy implements SoftWrapApplianceStrategy { - - private final EditorEx myEditor; - private SoftWrapAppliancePlaces myPlace = SoftWrapAppliancePlaces.MAIN_EDITOR; - - public SoftWrapFoldBasedApplianceStrategy(EditorEx editor) { - myEditor = editor; - } - - @Override - public boolean processSoftWraps() { - return myEditor.getFoldingModel().isFoldingEnabled() || myPlace == SoftWrapAppliancePlaces.VCS_DIFF; - } - - /** - * Instructs current strategy about place where soft wraps-aware editor is used. - *

- * {@link SoftWrapAppliancePlaces#MAIN_EDITOR} is used by default. - * - * @param place place where soft wraps-aware editor is used - */ - public void setCurrentPlace(@NotNull SoftWrapAppliancePlaces place) { - myPlace = place; - } -} From 3754ebf2471bfcdc457d108685115ac548c3d6ec Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Thu, 11 Jun 2015 14:10:36 +0300 Subject: [PATCH 22/82] resource bundles: CombinePropertiesFilesAction improved to combine resource bundles with properties files to single resource bundle --- .../lang/properties/PropertiesImplUtil.java | 7 +++ .../CombinePropertiesFilesAction.java | 61 +++++++++++++------ .../DissociateResourceBundleAction.java | 17 +++--- 3 files changed, 56 insertions(+), 29 deletions(-) diff --git a/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/PropertiesImplUtil.java b/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/PropertiesImplUtil.java index a61509234792..12d3362f33c4 100644 --- a/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/PropertiesImplUtil.java +++ b/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/PropertiesImplUtil.java @@ -26,6 +26,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; import com.intellij.psi.search.GlobalSearchScope; @@ -122,6 +123,12 @@ public class PropertiesImplUtil extends PropertiesUtil { return file instanceof PropertiesFile ? (PropertiesFile)file : XmlPropertiesFileImpl.getPropertiesFile(file); } + @Nullable + public static PropertiesFile getPropertiesFile(@Nullable PsiElement element) { + if (!(element instanceof PsiFile)) return null; + return getPropertiesFile((PsiFile)element); + } + @NotNull public static List findPropertiesByKey(@NotNull final Project project, @NotNull final String key) { final GlobalSearchScope scope = GlobalSearchScope.allScope(project); diff --git a/plugins/properties/src/com/intellij/lang/properties/customizeActions/CombinePropertiesFilesAction.java b/plugins/properties/src/com/intellij/lang/properties/customizeActions/CombinePropertiesFilesAction.java index b90e74a2c767..35264b2f5697 100644 --- a/plugins/properties/src/com/intellij/lang/properties/customizeActions/CombinePropertiesFilesAction.java +++ b/plugins/properties/src/com/intellij/lang/properties/customizeActions/CombinePropertiesFilesAction.java @@ -32,11 +32,10 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.InputValidatorEx; import com.intellij.openapi.ui.Messages; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.List; +import java.util.*; /** * @author Dmitry Batkovich @@ -49,7 +48,16 @@ public class CombinePropertiesFilesAction extends AnAction { @Override public void actionPerformed(final AnActionEvent e) { - final List propertiesFiles = getPropertiesFiles(e); + final List initialPropertiesFiles = getPropertiesFiles(e); + final List propertiesFiles = initialPropertiesFiles == null ? new ArrayList() + : new ArrayList(initialPropertiesFiles); + final List resourceBundles = getResourceBundles(e); + if (resourceBundles != null) { + for (ResourceBundle bundle : resourceBundles) { + propertiesFiles.addAll(bundle.getPropertiesFiles()); + } + } + final String newBaseName = Messages.showInputDialog(propertiesFiles.get(0).getProject(), PropertiesBundle.message("combine.properties.files.prompt.text"), PropertiesBundle.message("combine.properties.files.title"), @@ -58,7 +66,20 @@ public class CombinePropertiesFilesAction extends AnAction { new MyInputValidator(propertiesFiles)); if (newBaseName != null) { final Project project = propertiesFiles.get(0).getProject(); - ResourceBundleManager.getInstance(project).combineToResourceBundle(propertiesFiles, newBaseName); + + final Set uniqueBundlesToDissociate = new HashSet(); + for (PropertiesFile file : propertiesFiles) { + final ResourceBundle resourceBundle = file.getResourceBundle(); + if (resourceBundle.getPropertiesFiles().size() != 1) { + uniqueBundlesToDissociate.add(resourceBundle); + } + } + final ResourceBundleManager resourceBundleManager = ResourceBundleManager.getInstance(project); + for (ResourceBundle resourceBundle : uniqueBundlesToDissociate) { + resourceBundleManager.dissociateResourceBundle(resourceBundle); + } + + resourceBundleManager.combineToResourceBundle(propertiesFiles, newBaseName); final ResourceBundle resourceBundle = propertiesFiles.get(0).getResourceBundle(); FileEditorManager.getInstance(project).openFile(new ResourceBundleAsVirtualFile(resourceBundle), true); ProjectView.getInstance(project).refresh(); @@ -67,17 +88,22 @@ public class CombinePropertiesFilesAction extends AnAction { @Override public void update(final AnActionEvent e) { - final List propertiesFiles = getPropertiesFiles(e); - boolean isAvailable = propertiesFiles != null && propertiesFiles.size() > 1; - if (isAvailable) { - for (PropertiesFile propertiesFile : propertiesFiles) { - if (propertiesFile.getResourceBundle().getPropertiesFiles().size() != 1) { - isAvailable = false; - break; - } - } + final Collection propertiesFiles = getPropertiesFiles(e); + final List resourceBundles = getResourceBundles(e); + int elementCount = 0; + if (propertiesFiles != null) { + elementCount += propertiesFiles.size(); } - e.getPresentation().setVisible(isAvailable); + if (resourceBundles != null) { + elementCount += resourceBundles.size(); + } + e.getPresentation().setEnabledAndVisible(elementCount > 1); + } + + @Nullable + private static List getResourceBundles(AnActionEvent e) { + final ResourceBundle[] resourceBundles = e.getData(ResourceBundle.ARRAY_DATA_KEY); + return resourceBundles == null ? null : ContainerUtil.newArrayList(resourceBundles); } @Nullable @@ -88,10 +114,7 @@ public class CombinePropertiesFilesAction extends AnAction { } final List files = new ArrayList(psiElements.length); for (PsiElement psiElement : psiElements) { - if (!(psiElement instanceof PsiFile)) { - return null; - } - final PropertiesFile propertiesFile = PropertiesImplUtil.getPropertiesFile((PsiFile)psiElement); + final PropertiesFile propertiesFile = PropertiesImplUtil.getPropertiesFile(psiElement); if (propertiesFile == null) { return null; } diff --git a/plugins/properties/src/com/intellij/lang/properties/customizeActions/DissociateResourceBundleAction.java b/plugins/properties/src/com/intellij/lang/properties/customizeActions/DissociateResourceBundleAction.java index 7c6590634698..43b87266d475 100644 --- a/plugins/properties/src/com/intellij/lang/properties/customizeActions/DissociateResourceBundleAction.java +++ b/plugins/properties/src/com/intellij/lang/properties/customizeActions/DissociateResourceBundleAction.java @@ -31,14 +31,13 @@ import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileSystemItem; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashSet; import org.jetbrains.annotations.NotNull; -import javax.swing.*; -import java.util.*; +import java.util.Collection; +import java.util.Set; /** * @author Dmitry Batkovich @@ -116,13 +115,11 @@ public class DissociateResourceBundleAction extends AnAction { final PsiElement[] psiElements = event.getData(LangDataKeys.PSI_ELEMENT_ARRAY); if (psiElements != null) { for (PsiElement element : psiElements) { - if (element instanceof PsiFile) { - final PropertiesFile propertiesFile = PropertiesImplUtil.getPropertiesFile((PsiFile)element); - if (propertiesFile != null) { - final ResourceBundle bundle = propertiesFile.getResourceBundle(); - if (bundle.getPropertiesFiles().size() > 1) { - targetResourceBundles.add(bundle); - } + final PropertiesFile propertiesFile = PropertiesImplUtil.getPropertiesFile(element); + if (propertiesFile != null) { + final ResourceBundle bundle = propertiesFile.getResourceBundle(); + if (bundle.getPropertiesFiles().size() > 1) { + targetResourceBundles.add(bundle); } } } From 985a28ea1253ded6b9055d9ede744f1458856ea6 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Thu, 11 Jun 2015 14:11:13 +0300 Subject: [PATCH 23/82] recompile to 1.6 --- xml/relaxng/lib/rngom-20051226-patched.jar | Bin 301205 -> 301200 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/xml/relaxng/lib/rngom-20051226-patched.jar b/xml/relaxng/lib/rngom-20051226-patched.jar index 989c6103cc631b2be6be5ee1b6b7f2ad1b379414..3bc509bb967ccfcefbf1fad22ecf9fa9f251b5dc 100644 GIT binary patch delta 177495 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 delta 177313 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%0Ds$k9S|D_o3>Y!+ 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

D2c3!*MHwuBt^#PFcuOvdQ6vj~{rl4ZJy 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 From f0ed252947c6f797f941a945793dfd0046ac4046 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 11 Jun 2015 14:51:52 +0300 Subject: [PATCH 24/82] test rebombed to fix slow execution of Community Tests --- .../testSrc/com/intellij/idea/LockSupportTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/platform-tests/testSrc/com/intellij/idea/LockSupportTest.java b/platform/platform-tests/testSrc/com/intellij/idea/LockSupportTest.java index b1e6c3b558d4..928c4fb3a663 100644 --- a/platform/platform-tests/testSrc/com/intellij/idea/LockSupportTest.java +++ b/platform/platform-tests/testSrc/com/intellij/idea/LockSupportTest.java @@ -27,7 +27,7 @@ import java.util.List; /** * @author mike */ -@Bombed(day = 10, month = Calendar.JUNE) +@Bombed(day = 20, month = Calendar.JUNE) public class LockSupportTest extends TestCase { public void testLock() throws Exception { final SocketLock lock = new SocketLock(); From be6f5424e71ddc3326713795f50b0c12982cbb1d Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 11 Jun 2015 14:56:33 +0300 Subject: [PATCH 25/82] IDEA-140720 (single thread for all process waiters) --- .../process/BaseOSProcessHandler.java | 14 ++-- .../execution/process/ProcessWaitFor.java | 83 +++++++++++-------- .../execution/process/ProcessWaitForTest.java | 47 +++++++++++ .../terminal/LocalTerminalDirectRunner.java | 7 +- 4 files changed, 105 insertions(+), 46 deletions(-) create mode 100644 platform/util/testSrc/com/intellij/execution/process/ProcessWaitForTest.java diff --git a/platform/util/src/com/intellij/execution/process/BaseOSProcessHandler.java b/platform/util/src/com/intellij/execution/process/BaseOSProcessHandler.java index 787215593f04..7ef0d68755be 100644 --- a/platform/util/src/com/intellij/execution/process/BaseOSProcessHandler.java +++ b/platform/util/src/com/intellij/execution/process/BaseOSProcessHandler.java @@ -36,16 +36,14 @@ import static com.intellij.util.io.BaseDataReader.AdaptiveSleepingPolicy; public class BaseOSProcessHandler extends ProcessHandler implements TaskExecutor { private static final Logger LOG = Logger.getInstance("#com.intellij.execution.process.OSProcessHandlerBase"); - @NotNull protected final Process myProcess; - @Nullable protected final String myCommandLine; - protected final ProcessWaitFor myWaitFor; - @Nullable protected final Charset myCharset; + protected final Process myProcess; + protected final String myCommandLine; + protected final Charset myCharset; - public BaseOSProcessHandler(@NotNull final Process process, @Nullable final String commandLine, @Nullable Charset charset) { + public BaseOSProcessHandler(@NotNull Process process, @Nullable String commandLine, @Nullable Charset charset) { myProcess = process; myCommandLine = commandLine; myCharset = charset; - myWaitFor = new ProcessWaitFor(process, this); } /** @@ -97,7 +95,7 @@ public class BaseOSProcessHandler extends ProcessHandler implements TaskExecutor final BaseDataReader stdOutReader = createOutputDataReader(getPolicy()); final BaseDataReader stdErrReader = processHasSeparateErrorStream() ? createErrorDataReader(getPolicy()) : null; - myWaitFor.setTerminationCallback(new Consumer() { + ProcessWaitFor.attach(myProcess, new Consumer() { @Override public void consume(Integer exitCode) { try { @@ -193,7 +191,7 @@ public class BaseOSProcessHandler extends ProcessHandler implements TaskExecutor public void run() { closeStreams(); - myWaitFor.detach(); + ProcessWaitFor.detach(myProcess); notifyProcessDetached(); } }; diff --git a/platform/util/src/com/intellij/execution/process/ProcessWaitFor.java b/platform/util/src/com/intellij/execution/process/ProcessWaitFor.java index d2b42ada2822..b633408621c0 100644 --- a/platform/util/src/com/intellij/execution/process/ProcessWaitFor.java +++ b/platform/util/src/com/intellij/execution/process/ProcessWaitFor.java @@ -1,53 +1,70 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.intellij.execution.process; -import com.intellij.execution.TaskExecutor; import com.intellij.openapi.diagnostic.Logger; import com.intellij.util.Consumer; +import com.intellij.util.TimeoutUtil; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.Future; +import java.util.Map; public class ProcessWaitFor { private static final Logger LOG = Logger.getInstance("#com.intellij.execution.process.ProcessWaitFor"); - private final Future myWaitForThreadFuture; - private final BlockingQueue> myTerminationCallback = new ArrayBlockingQueue>(1); + private static final Map> ourQueue; - public void detach() { - myWaitForThreadFuture.cancel(true); - } + static { + ourQueue = ContainerUtil.newConcurrentMap(); - - public ProcessWaitFor(final Process process, final TaskExecutor executor) { - myWaitForThreadFuture = executor.executeTask(new Runnable() { + BaseOSProcessHandler.ExecutorServiceHolder.submit(new Runnable() { @Override public void run() { - int exitCode = 0; - try { - while (true) { - try { - exitCode = process.waitFor(); - break; - } - catch (InterruptedException e) { - LOG.debug(e); - } - } - } - finally { - try { - myTerminationCallback.take().consume(exitCode); - } - catch (InterruptedException e) { - LOG.info(e); - } + //noinspection InfiniteLoopStatement + while (true) { + processQueue(); + TimeoutUtil.sleep(50); } } }); } - public void setTerminationCallback(Consumer r) { - myTerminationCallback.offer(r); + private static void processQueue() { + for (Process process : ourQueue.keySet()) { + try { + int value = process.exitValue(); + + Consumer callback = ourQueue.remove(process); + if (callback != null) { + callback.consume(value); + } + } + catch (IllegalThreadStateException ignore) { } + catch (RuntimeException e) { + LOG.debug(e); + } + } + } + + public static void attach(@NotNull Process process, @NotNull Consumer callback) { + ourQueue.put(process, callback); + } + + public static void detach(@NotNull Process process) { + ourQueue.remove(process); } } diff --git a/platform/util/testSrc/com/intellij/execution/process/ProcessWaitForTest.java b/platform/util/testSrc/com/intellij/execution/process/ProcessWaitForTest.java new file mode 100644 index 000000000000..4042b0b450b4 --- /dev/null +++ b/platform/util/testSrc/com/intellij/execution/process/ProcessWaitForTest.java @@ -0,0 +1,47 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.execution.process; + +import com.intellij.util.Consumer; +import com.intellij.util.concurrency.Semaphore; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; + +import static org.junit.Assert.assertTrue; + +public class ProcessWaitForTest { + @Test(timeout = 10000) + public void notification() throws IOException, InterruptedException { + File jvm = new File(System.getProperty("java.home"), "bin/java"); + assertTrue(jvm.canExecute()); + + final Semaphore semaphore = new Semaphore(); + semaphore.down(); + + Process process = new ProcessBuilder(jvm.getPath(), "-version").redirectErrorStream(true).start(); + ProcessWaitFor.attach(process, new Consumer() { + @Override + public void consume(Integer exitCode) { + semaphore.up(); + } + }); + process.waitFor(); + + assertTrue(semaphore.waitFor(5000)); + } +} \ No newline at end of file diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java index 8521de83d42e..bc131af62ade 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -156,13 +156,10 @@ public class LocalTerminalDirectRunner extends AbstractTerminalRunner() { + ProcessWaitFor.attach(myProcess, new Consumer() { @Override public void consume(Integer integer) { notifyProcessTerminated(integer); From 05632a45bf7c41f1d3e495e779d2e2ec8499bf64 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 11 Jun 2015 13:53:08 +0200 Subject: [PATCH 26/82] guard against InvalidVirtualFileAccessException (IDEA-141130) --- .../src/com/intellij/openapi/project/CacheUpdateRunner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/project/CacheUpdateRunner.java b/platform/platform-impl/src/com/intellij/openapi/project/CacheUpdateRunner.java index 8c2c2248b10f..912c1291040f 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/CacheUpdateRunner.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/CacheUpdateRunner.java @@ -67,7 +67,7 @@ public class CacheUpdateRunner { synchronized (processed) { boolean added = processed.add(virtualFile); indicator.setFraction(processed.size() / total); - if (!added || virtualFile.getLength() > FILE_SIZE_TO_SHOW_THRESHOLD) { + if (!added || (virtualFile.isValid() && virtualFile.getLength() > FILE_SIZE_TO_SHOW_THRESHOLD)) { indicator.setText2(virtualFile.getPresentableUrl()); fileNameWasShown = true; } else if (fileNameWasShown) { From ac2f331e42ee8636fa63401d4fb04b4661a42df1 Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Thu, 11 Jun 2015 14:24:21 +0300 Subject: [PATCH 27/82] [ConfigureCodeStyleOnSelectedFragment] Bundlified, changed "Configure" to "Adjust" for more clarity --- .../ConfigureCodeStyleOnSelectedFragment.java | 8 ++++++-- .../codeStyle/CodeStyleSettingsCodeFragmentFilter.java | 3 ++- .../src/messages/CodeInsightBundle.properties | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/formatting/contextConfiguration/ConfigureCodeStyleOnSelectedFragment.java b/platform/lang-impl/src/com/intellij/formatting/contextConfiguration/ConfigureCodeStyleOnSelectedFragment.java index 7fd57f41b66d..0c62f173b7ea 100644 --- a/platform/lang-impl/src/com/intellij/formatting/contextConfiguration/ConfigureCodeStyleOnSelectedFragment.java +++ b/platform/lang-impl/src/com/intellij/formatting/contextConfiguration/ConfigureCodeStyleOnSelectedFragment.java @@ -15,6 +15,7 @@ */ package com.intellij.formatting.contextConfiguration; +import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.lang.Language; import com.intellij.openapi.diagnostic.Logger; @@ -28,6 +29,7 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CodeStyleSettingsCodeFragmentFilter; @@ -50,7 +52,7 @@ public class ConfigureCodeStyleOnSelectedFragment implements IntentionAction { @NotNull @Override public String getText() { - return "Configure code style"; + return CodeInsightBundle.message("configure.code.style.on.fragment.dialog.title"); } @Nls @@ -108,7 +110,9 @@ public class ConfigureCodeStyleOnSelectedFragment implements IntentionAction { myEditor = editor; myDocument = editor.getDocument(); - setTitle("Configure Code Style Settings: " + language.getDisplayName()); + + String title = CodeInsightBundle.message("configure.code.style.on.fragment.dialog.title"); + setTitle(StringUtil.capitalizeWords(title, true) + ": " + language.getDisplayName()); setOKButtonText("Save"); setInitialLocationCallback(new Computable() { diff --git a/platform/lang-impl/src/com/intellij/psi/codeStyle/CodeStyleSettingsCodeFragmentFilter.java b/platform/lang-impl/src/com/intellij/psi/codeStyle/CodeStyleSettingsCodeFragmentFilter.java index 93975d7947f0..98445d3d9145 100644 --- a/platform/lang-impl/src/com/intellij/psi/codeStyle/CodeStyleSettingsCodeFragmentFilter.java +++ b/platform/lang-impl/src/com/intellij/psi/codeStyle/CodeStyleSettingsCodeFragmentFilter.java @@ -68,7 +68,8 @@ public class CodeStyleSettingsCodeFragmentFilter { try { codeStyleSettingsManager.setTemporarySettings(clonedSettings); - SequentialModalProgressTask progressTask = new SequentialModalProgressTask(myProject, CodeInsightBundle.message("configure.code.style.on.fragment.dialog.title")); + String title = CodeInsightBundle.message("configure.code.style.on.fragment.dialog.title"); + SequentialModalProgressTask progressTask = new SequentialModalProgressTask(myProject, StringUtil.capitalizeWords(title, true)); progressTask.setCancelText(CodeInsightBundle.message("configure.code.style.on.fragment.dialog.cancel")); CompositeSequentialTask compositeTask = new CompositeSequentialTask(progressTask); compositeTask.setProgressText(CodeInsightBundle.message("configure.code.style.on.fragment.dialog.progress.text")); diff --git a/platform/platform-resources-en/src/messages/CodeInsightBundle.properties b/platform/platform-resources-en/src/messages/CodeInsightBundle.properties index 8c7ef4149f5e..e7e912f14560 100644 --- a/platform/platform-resources-en/src/messages/CodeInsightBundle.properties +++ b/platform/platform-resources-en/src/messages/CodeInsightBundle.properties @@ -19,7 +19,7 @@ reformat.option.vcs.changed.region=Only &VCS changed text reformat.progress.file.with.known.name.text=Reformatting {0} reformat.and.optimize.progress.common.text=Preparing imports... reformat.progress.common.text=Reformatting code... -configure.code.style.on.fragment.dialog.title=Configure Code Style +configure.code.style.on.fragment.dialog.title=Adjust code style settings configure.code.style.on.fragment.dialog.cancel=Skip configure.code.style.on.fragment.dialog.progress.text=Filtering settings affecting selected code fragment... configure.code.style.on.fragment.dialog.progress.text.under=Press 'Skip' to show all settings From da380c19079a8bbc7dbafaca17cef5c25539ddcd Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 11 Jun 2015 15:17:38 +0300 Subject: [PATCH 28/82] stale @Bombed annotations removed --- .../maven/dom/MavenPluginCompletionAndResolutionTest.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java index 827f5acda464..237d5387281b 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java @@ -15,7 +15,6 @@ */ package org.jetbrains.idea.maven.dom; -import com.intellij.idea.Bombed; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; @@ -25,7 +24,6 @@ import com.intellij.psi.xml.XmlTag; import org.jetbrains.idea.maven.indices.MavenIndicesTestFixture; import java.io.IOException; -import java.util.Calendar; import java.util.List; public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesTestCase { @@ -43,7 +41,6 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT "1"); } - @Bombed(year = 2014, month = Calendar.APRIL, day = 25, user = "sergey.evdokimov") public void testGroupIdCompletion() throws Exception { createProjectPom("test" + "project" + @@ -60,7 +57,6 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT assertCompletionVariants(myProjectPom, "org.codehaus.plexus", "intellij.test", "test", "org.apache.maven.plugins", "org.codehaus.mojo"); } - @Bombed(year = 2013, month = Calendar.APRIL, day = 25, user = "sergey.evdokimov") public void testArtifactIdCompletion() throws Exception { createProjectPom("test" + "project" + @@ -96,7 +92,6 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT assertCompletionVariants(myProjectPom, "2.0.2"); } - @Bombed(year = 2013, month = Calendar.APRIL, day = 25, user = "sergey.evdokimov") public void testArtifactWithoutGroupCompletion() throws Exception { createProjectPom("test" + "project" + @@ -823,7 +818,6 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT assertCompletionVariants(myProjectPom); } - @Bombed(year = 2014, month = Calendar.MARCH, day = 25, user = "sergey.evdokimov") public void testDocumentationForParameter() throws Exception { createProjectPom("test" + "project" + From fdc4bdb3dec271a57ae2287ad7507ec9e4c562e7 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 14:24:20 +0300 Subject: [PATCH 29/82] tests ui optimization: cache error state if true --- .../intellij/execution/testframework/sm/runner/SMTestProxy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java index 6b3535ca89fe..9fc70fb262a5 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java @@ -146,7 +146,7 @@ public class SMTestProxy extends AbstractTestProxy { final boolean canCacheErrors = !myState.isInProgress(); // calculate final boolean hasErrors = calcHasErrors(); - if (canCacheErrors) { + if (canCacheErrors || hasErrors) { myHasCriticalErrors = hasErrors; myHasErrorsCached = true; } From a5b74de04f380cb329d327fd1fa49d2665104a30 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 15:23:01 +0300 Subject: [PATCH 30/82] tests ui: disable merged update for tests --- .../testframework/sm/runner/ui/SMTestRunnerResultsForm.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java index e58e8335473d..0d164e129900 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java @@ -24,6 +24,7 @@ import com.intellij.execution.testframework.sm.runner.ui.statistics.StatisticsPa import com.intellij.execution.testframework.ui.TestResultsPanel; import com.intellij.execution.testframework.ui.TestsProgressAnimator; import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.progress.util.ColorProgressBar; import com.intellij.openapi.project.Project; @@ -535,7 +536,10 @@ public class SMTestRunnerResultsForm extends TestResultsPanel myTreeBuilder.updateTestsSubtree(parentSuite); } }; - if (myRequests.add(update)) { + if (ApplicationManager.getApplication().isUnitTestMode()) { + update.run(); + } + else if (myRequests.add(update)) { myUpdateQueue.addRequest(update, 100); } myTreeBuilder.repaintWithParents(newTestOrSuite); From 7c806316dd57d25432e2026c88b97416b0016f40 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 11 Jun 2015 14:18:39 +0200 Subject: [PATCH 31/82] IDEA-141315 Remove dependencies on license agreements from the code --- .../openapi/application/ApplicationInfo.java | 1 + .../application/impl/ApplicationInfoImpl.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/platform/core-api/src/com/intellij/openapi/application/ApplicationInfo.java b/platform/core-api/src/com/intellij/openapi/application/ApplicationInfo.java index 1bc67e24bceb..9a289c40ee9b 100644 --- a/platform/core-api/src/com/intellij/openapi/application/ApplicationInfo.java +++ b/platform/core-api/src/com/intellij/openapi/application/ApplicationInfo.java @@ -35,6 +35,7 @@ public abstract class ApplicationInfo { public abstract String getCompanyURL(); public abstract String getThirdPartySoftwareURL(); public abstract String getJetbrainsTvUrl(); + public abstract String getEvalLicenseUrl(); public abstract Rectangle getAboutLogoRect(); public abstract boolean hasHelp(); diff --git a/platform/core-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java b/platform/core-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java index 86cc7a21d40a..e408b2dc5676 100644 --- a/platform/core-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java +++ b/platform/core-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java @@ -100,6 +100,7 @@ public class ApplicationInfoImpl extends ApplicationInfoEx implements JDOMExtern private String myStatisticsServiceKey; private String myThirdPartySoftwareUrl; private String myJetbrainsTvUrl; + private String myEvalLicenseUrl = "https://www.jetbrains.com/company/useterms.html"; private Rectangle myAboutLogoRect; @@ -172,6 +173,8 @@ public class ApplicationInfoImpl extends ApplicationInfoEx implements JDOMExtern private static final String ELEMENT_JB_TV = "jetbrains-tv"; private static final String CUSTOMIZE_IDE_WIZARD_STEPS = "customize-ide-wizard"; private static final String STEPS_PROVIDER = "provider"; + private static final String ELEMENT_EVALUATION = "evaluation"; + private static final String ATTRIBUTE_EVAL_LICENSE_URL = "license-url"; private static final String DEFAULT_PLUGINS_HOST = "http://plugins.jetbrains.com"; @@ -488,6 +491,11 @@ public class ApplicationInfoImpl extends ApplicationInfoEx implements JDOMExtern return myJetbrainsTvUrl; } + @Override + public String getEvalLicenseUrl() { + return myEvalLicenseUrl; + } + @Override public Rectangle getAboutLogoRect() { return myAboutLogoRect; @@ -764,6 +772,15 @@ public class ApplicationInfoImpl extends ApplicationInfoEx implements JDOMExtern if (tvElement != null) { myJetbrainsTvUrl = tvElement.getAttributeValue(ATTRIBUTE_URL); } + + Element evaluationElement = parentNode.getChild(ELEMENT_EVALUATION); + if (evaluationElement != null) { + final String url = evaluationElement.getAttributeValue(ATTRIBUTE_EVAL_LICENSE_URL); + if (url != null && !url.isEmpty()) { + myEvalLicenseUrl = url; + } + } + } private static void setBuildNumber(String apiVersion, String buildNumber) { From 6ae576e2bd3b827f82318abf0af02b0cd59aa5a4 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 10 Jun 2015 13:38:29 +0300 Subject: [PATCH 32/82] optimisations: avoid THashSet maintanence cost, avoid expensive filtering --- .../SmartPointerManagerImpl.java | 134 +++++++++++------- 1 file changed, 84 insertions(+), 50 deletions(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java index b47aaac7a786..eea7b5c6e356 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java @@ -29,7 +29,7 @@ import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.source.tree.MarkersHolderFileViewProvider; import com.intellij.psi.util.PsiUtilCore; import com.intellij.reference.SoftReference; -import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; @@ -37,10 +37,6 @@ import org.jetbrains.annotations.TestOnly; import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Set; public class SmartPointerManagerImpl extends SmartPointerManager { private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.smartPointers.SmartPointerManagerImpl"); @@ -54,7 +50,7 @@ public class SmartPointerManagerImpl extends SmartPointerManager { }); private final Project myProject; - private final Key> POINTERS_KEY; + private final Key POINTERS_KEY; private final Key POINTERS_ARE_FASTENED_KEY; public SmartPointerManagerImpl(Project project) { @@ -68,7 +64,7 @@ public class SmartPointerManagerImpl extends SmartPointerManager { PointerReference reference = (PointerReference)ourQueue.poll(); if (reference == null) break; synchronized (lock) { - Set pointers = reference.file.getUserData(reference.key); + FilePointersList pointers = reference.file.getUserData(reference.key); if (pointers != null) { pointers.remove(reference); if (pointers.isEmpty()) { @@ -83,13 +79,15 @@ public class SmartPointerManagerImpl extends SmartPointerManager { ApplicationManager.getApplication().assertIsDispatchThread(); processQueue(); synchronized (lock) { - List pointers = getStrongPointers(file); - if (pointers.isEmpty()) return; - if (getAndFasten(file)) return; - - for (SmartPointerEx pointer : pointers) { - pointer.fastenBelt(offset, cachedRangeMarkers); + FilePointersList pointers = getPointers(file); + if (pointers != null && !pointers.isEmpty()) { + for (PointerReference ref : pointers.references) { + SmartPointerEx pointer = SoftReference.dereference(ref); + if (pointer != null) { + pointer.fastenBelt(offset, cachedRangeMarkers); + } + } } PsiFile psiFile = ((PsiManagerEx)PsiManager.getInstance(myProject)).getFileManager().getCachedPsiFile(file); @@ -124,13 +122,16 @@ public class SmartPointerManagerImpl extends SmartPointerManager { ApplicationManager.getApplication().assertIsDispatchThread(); processQueue(); synchronized (lock) { - List pointers = getStrongPointers(file); - if (pointers.isEmpty()) return; + FilePointersList pointers = getPointers(file); + if (pointers == null || pointers.isEmpty()) return; if (!getAndUnfasten(file)) return; - for (SmartPointerEx pointer : pointers) { - pointer.unfastenBelt(offset); + for (PointerReference ref : pointers.references) { + SmartPointerEx pointer = SoftReference.dereference(ref); + if (pointer != null) { + pointer.unfastenBelt(offset); + } } PsiFile psiFile = ((PsiManagerEx)PsiManager.getInstance(myProject)).getFileManager().getCachedPsiFile(file); @@ -211,9 +212,9 @@ public class SmartPointerManagerImpl extends SmartPointerManager { private void initPointer(@NotNull SmartPsiElementPointerImpl pointer, @NotNull VirtualFile containingFile) { synchronized (lock) { - Set pointers = getPointers(containingFile); + FilePointersList pointers = getPointers(containingFile); if (pointers == null) { - pointers = ContainerUtil.newTroveSet(); // we synchronise access anyway + pointers = new FilePointersList(); // we synchronise access anyway containingFile.putUserData(POINTERS_KEY, pointers); } if (areBeltsFastened(containingFile)) { @@ -244,45 +245,29 @@ public class SmartPointerManagerImpl extends SmartPointerManager { if (containingFile == null) return false; VirtualFile vFile = containingFile.getViewProvider().getVirtualFile(); - Set pointers = getPointers(vFile); + FilePointersList pointers = getPointers(vFile); if (pointers == null) return false; - - - for (Iterator iterator = pointers.iterator(); iterator.hasNext(); ) { - if (pointer == iterator.next().get()) { - iterator.remove(); - if (pointers.isEmpty()) { - vFile.putUserData(POINTERS_KEY, null); - } - return true; - } + boolean result = pointers.remove(pointer); + if (pointers.isEmpty()) { + vFile.putUserData(POINTERS_KEY, null); } + return result; } } return false; } @Nullable - private Set getPointers(@NotNull VirtualFile containingFile) { + private FilePointersList getPointers(@NotNull VirtualFile containingFile) { return containingFile.getUserData(POINTERS_KEY); } - @NotNull - private List getStrongPointers(@NotNull VirtualFile containingFile) { - Set refs = getPointers(containingFile); - if (refs == null) return Collections.emptyList(); - - List result = ContainerUtil.newArrayList(); - for (PointerReference reference : refs) { - ContainerUtil.addIfNotNull(result, reference.get()); - } - return result; - } - @TestOnly public int getPointersNumber(@NotNull PsiFile containingFile) { synchronized (lock) { - return getStrongPointers(containingFile.getViewProvider().getVirtualFile()).size(); + VirtualFile file = containingFile.getViewProvider().getVirtualFile(); + FilePointersList pointers = getPointers(file); + return pointers == null ? 0 : pointers.size; } } @@ -306,17 +291,66 @@ public class SmartPointerManagerImpl extends SmartPointerManager { } private static class PointerReference extends WeakReference { - private final VirtualFile file; - private final Key> key; + @NotNull private final VirtualFile file; + @NotNull private final Key key; - public PointerReference(SmartPointerEx pointer, - VirtualFile containingFile, - ReferenceQueue queue, - Key> key) { + private PointerReference(@NotNull SmartPointerEx pointer, + @NotNull VirtualFile containingFile, + @NotNull ReferenceQueue queue, + @NotNull Key key) { super(pointer, queue); file = containingFile; this.key = key; } } + private static class FilePointersList { + private int nextAvailableIndex; + private int size; + private PointerReference[] references = new PointerReference[10]; + + private void add(@NotNull PointerReference reference) { + if (nextAvailableIndex >= references.length || nextAvailableIndex > size*2) { // overflow or too many dead refs + int newCapacity = nextAvailableIndex >= references.length ? references.length * 3/2 +1 : size * 3/2+1; + PointerReference[] newReferences = new PointerReference[newCapacity]; + + int o = 0; + for (PointerReference oldRef : references) { + if (SoftReference.dereference(oldRef) != null) { + newReferences[o++] = oldRef; + } + } + references = newReferences; + size = nextAvailableIndex = o; + } + references[nextAvailableIndex++] = reference; + size++; + } + + private void remove(@NotNull PointerReference reference) { + int index = ArrayUtil.indexOf(references, reference); + if (index != -1) { + references[index] = null; + size--; + } + } + + private boolean remove(@NotNull SmartPsiElementPointer smartPointer) { + boolean result = false; + for (int i = 0; i < references.length; i++) { + PointerReference reference = references[i]; + if (reference != null && reference.get() == smartPointer) { + references[i] = null; + result = true; + break; + } + } + size--; + return result; + } + + private boolean isEmpty() { + return size == 0; + } + } } From ec80e685eb58daa156210d99f35fa2c8f4b6740e Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 10 Jun 2015 14:00:55 +0300 Subject: [PATCH 33/82] cleanup --- .../daemon/impl/analysis/RefCountHolder.java | 12 ++++++------ .../codeInsight/daemon/impl/FileStatusMap.java | 5 +++++ .../intellij/psi/SingleRootFileViewProvider.java | 14 +++++--------- .../intellij/psi/impl/source/tree/FileElement.java | 1 + 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/RefCountHolder.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/RefCountHolder.java index dc9be261626f..7ebb225ec25d 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/RefCountHolder.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/RefCountHolder.java @@ -71,7 +71,7 @@ class RefCountHolder { private static final Key> REF_COUNT_HOLDER_IN_FILE_KEY = Key.create("REF_COUNT_HOLDER_IN_FILE_KEY"); @NotNull - public static RefCountHolder get(@NotNull PsiFile file) { + static RefCountHolder get(@NotNull PsiFile file) { Reference ref = file.getUserData(REF_COUNT_HOLDER_IN_FILE_KEY); RefCountHolder holder = com.intellij.reference.SoftReference.dereference(ref); if (holder == null) { @@ -171,7 +171,7 @@ class RefCountHolder { } } - public boolean isReferenced(@NotNull PsiElement element) { + boolean isReferenced(@NotNull PsiElement element) { Collection array; synchronized (myLocalRefsMap) { array = myLocalRefsMap.get(element); @@ -272,10 +272,10 @@ class RefCountHolder { return false; } - public boolean analyze(@NotNull PsiFile file, - TextRange dirtyScope, - @NotNull ProgressIndicator indicator, - @NotNull Runnable analyze) { + boolean analyze(@NotNull PsiFile file, + TextRange dirtyScope, + @NotNull ProgressIndicator indicator, + @NotNull Runnable analyze) { ProgressIndicator result; if (myState.compareAndSet(EMPTY, indicator)) { if (!file.getTextRange().equals(dirtyScope)) { diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/FileStatusMap.java b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/FileStatusMap.java index f25ee9a6b264..2b96628fa861 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/FileStatusMap.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/FileStatusMap.java @@ -351,6 +351,11 @@ public class FileStatusMap implements Disposable { public void putUserData(@NotNull Key key, @Nullable T value) { throw new UnsupportedOperationException(); } + + @Override + public String toString() { + return "WHOLE_FILE"; + } }; // logging diff --git a/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java b/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java index 2752d06b31d4..f4eca37a558e 100644 --- a/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java +++ b/platform/core-impl/src/com/intellij/psi/SingleRootFileViewProvider.java @@ -241,8 +241,8 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi @NotNull public FileElement[] getKnownTreeRoots() { PsiFile psiFile = getCachedPsi(myBaseLanguage); - if (psiFile == null || !(psiFile instanceof PsiFileImpl)) return new FileElement[0]; - if (((PsiFileImpl)psiFile).getTreeElement() == null) return new FileElement[0]; + if (!(psiFile instanceof PsiFileImpl)) return FileElement.EMPTY_ARRAY; + if (((PsiFileImpl)psiFile).getTreeElement() == null) return FileElement.EMPTY_ARRAY; return new FileElement[]{(FileElement)psiFile.getNode()}; } @@ -528,9 +528,7 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi if (document == null) { return LoadTextUtil.loadText(virtualFile); } - else { - return getLastCommittedText(document); - } + return getLastCommittedText(document); } @Override @@ -546,9 +544,7 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi if (document == null) { return virtualFile.getModificationStamp(); } - else { - return getLastCommittedStamp(document); - } + return getLastCommittedStamp(document); } @NonNls @@ -567,7 +563,7 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi private class PsiFileContent implements Content { private final PsiFileImpl myFile; - private volatile String myContent = null; + private volatile String myContent; private final long myModificationStamp; @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") diff --git a/platform/core-impl/src/com/intellij/psi/impl/source/tree/FileElement.java b/platform/core-impl/src/com/intellij/psi/impl/source/tree/FileElement.java index 894d0295870c..ff2a0f8cef15 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/source/tree/FileElement.java +++ b/platform/core-impl/src/com/intellij/psi/impl/source/tree/FileElement.java @@ -30,6 +30,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class FileElement extends LazyParseableElement implements FileASTNode, Getter { + public static final FileElement[] EMPTY_ARRAY = new FileElement[0]; private volatile CharTable myCharTable = new CharTableImpl(); private volatile boolean myDetached; From 8fb8ebe45527fd8acd22cffc33cd6653a9020104 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 10 Jun 2015 18:17:39 +0300 Subject: [PATCH 34/82] already disposed exception --- .../testFramework/LightPlatformTestCase.java | 42 ++++++++----------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java b/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java index bc2edcb2e2f7..42ac6f59e2ca 100644 --- a/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/LightPlatformTestCase.java @@ -136,7 +136,7 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da private static PsiManager ourPsiManager; private static boolean ourAssertionsInTestDetected; private static VirtualFile ourSourceRoot; - private static TestCase ourTestCase = null; + private static TestCase ourTestCase; public static Thread ourTestThread; private static LightProjectDescriptor ourProjectDescriptor; private static boolean ourHaveShutdownHook; @@ -253,7 +253,7 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da ByteArrayOutputStream buffer = new ByteArrayOutputStream(); new Throwable(projectFile.getPath()).printStackTrace(new PrintStream(buffer)); - ourProject = PlatformTestCase.createProject(projectFile, LIGHT_PROJECT_MARK + buffer.toString()); + ourProject = PlatformTestCase.createProject(projectFile, LIGHT_PROJECT_MARK + buffer); ourPathToKeep = projectFile.getPath(); if (!ourHaveShutdownHook) { ourHaveShutdownHook = true; @@ -310,14 +310,6 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da }); MessageBusConnection connection = ourProject.getMessageBus().connect(); - connection.subscribe(ProjectTopics.PROJECT_ROOTS, new ModuleRootAdapter() { - @Override - public void beforeRootsChange(ModuleRootEvent event) { - /*if (!event.isCausedByFileTypesChange()) { - fail("Root modification in LightIdeaTestCase is not allowed."); - }*/ - } - }); connection.subscribe(ProjectTopics.MODULES, new ModuleAdapter() { @Override public void moduleAdded(@NotNull Project project, @NotNull Module module) { @@ -372,7 +364,7 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da ApplicationInfoImpl.setInPerformanceTest(isPerformanceTest()); ourApplication.setDataProvider(LightPlatformTestCase.this); - SimpleLightProjectDescriptor descriptor = new SimpleLightProjectDescriptor(getModuleType(), getProjectJDK()); + LightProjectDescriptor descriptor = new SimpleLightProjectDescriptor(getModuleType(), getProjectJDK()); doSetup(descriptor, configureLocalInspectionTools(), getTestRootDisposable()); InjectedLanguageManagerImpl.pushInjectors(getProject()); @@ -417,7 +409,7 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da try { passed = StartupManagerEx.getInstanceEx(getProject()).startupActivityPassed(); } - catch (Exception e) { + catch (Exception ignored) { } assertTrue("open: " + getProject().isOpen() + @@ -733,7 +725,7 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da * @param fileName - name of the file to create. Extension is used to choose what PSI should be created like java, jsp, aj, xml etc. * @param text - file text. * @return dummy psi file. - * @throws com.intellij.util.IncorrectOperationException + * @throws IncorrectOperationException * */ protected static PsiFile createFile(@NonNls String fileName, @NonNls String text) throws IncorrectOperationException { @@ -788,20 +780,22 @@ public abstract class LightPlatformTestCase extends UsefulTestCase implements Da ApplicationManager.getApplication().assertWriteAccessAllowed(); ((ProjectImpl)ourProject).setTemporarilyDisposed(false); - VirtualFile projectFile = ((ProjectEx)ourProject).getStateStore().getProjectFile(); - File ioFile = projectFile == null ? null : VfsUtilCore.virtualToIoFile(projectFile); - if (!ourProject.isDisposed()) Disposer.dispose(ourProject); - - if (ioFile != null) { - File dir = ioFile.getParentFile(); - if (dir.getName().startsWith(UsefulTestCase.TEMP_DIR_MARKER)) { - FileUtil.delete(dir); - } - else { - FileUtil.delete(ioFile); + if (!ourProject.isDisposed()) { + VirtualFile projectFile = ((ProjectEx)ourProject).getStateStore().getProjectFile(); + File ioFile = projectFile == null ? null : VfsUtilCore.virtualToIoFile(projectFile); + Disposer.dispose(ourProject); + if (ioFile != null) { + File dir = ioFile.getParentFile(); + if (dir.getName().startsWith(UsefulTestCase.TEMP_DIR_MARKER)) { + FileUtil.delete(dir); + } + else { + FileUtil.delete(ioFile); + } } } + ProjectManagerEx.getInstanceEx().closeTestProject(ourProject); ourProject = null; ourPathToKeep = null; From 0c950dc53933d1ffb7b298f751c954b0df1364de Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 11 Jun 2015 15:48:52 +0300 Subject: [PATCH 35/82] IDEA-141272 RunLineMarker blinks annoyingly on typing --- .../junit/JUnitRunLineMarkerProvider.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/junit/src/com/intellij/execution/junit/JUnitRunLineMarkerProvider.java b/plugins/junit/src/com/intellij/execution/junit/JUnitRunLineMarkerProvider.java index f49c3c4995a7..d83b7ea49d40 100644 --- a/plugins/junit/src/com/intellij/execution/junit/JUnitRunLineMarkerProvider.java +++ b/plugins/junit/src/com/intellij/execution/junit/JUnitRunLineMarkerProvider.java @@ -21,6 +21,7 @@ import com.intellij.execution.PsiLocation; import com.intellij.execution.lineMarker.RunLineMarkerInfo; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiIdentifier; import com.intellij.psi.PsiMethod; import com.intellij.util.Function; import org.jetbrains.annotations.NotNull; @@ -43,13 +44,17 @@ public class JUnitRunLineMarkerProvider implements LineMarkerProvider { @Nullable @Override - public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement element) { - if (element instanceof PsiClass && JUnitUtil.isTestClass((PsiClass)element, false, true)) - return new RunLineMarkerInfo(element, JUnitConfigurationType.getInstance().getIcon(), TOOLTIP_PROVIDER); - if (element instanceof PsiMethod && JUnitUtil.isTestMethod(new PsiLocation((PsiMethod)element))) - return new RunLineMarkerInfo(element, JUnitConfigurationType.getInstance().getIcon(), TOOLTIP_PROVIDER); + public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement e) { + if (e instanceof PsiIdentifier) { + PsiElement element = e.getParent(); + if (element instanceof PsiClass && JUnitUtil.isTestClass((PsiClass)element, false, true)) { + return new RunLineMarkerInfo(e, JUnitConfigurationType.getInstance().getIcon(), TOOLTIP_PROVIDER); + } + if (element instanceof PsiMethod && JUnitUtil.isTestMethod(new PsiLocation((PsiMethod)element))) { + return new RunLineMarkerInfo(e, JUnitConfigurationType.getInstance().getIcon(), TOOLTIP_PROVIDER); + } + } return null; - } @Override From f00b43f06662da57d478c36ffca736e2a3668545 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 11 Jun 2015 15:49:07 +0300 Subject: [PATCH 36/82] cleanup --- .../src/com/intellij/slicer/SliceUtil.java | 30 ++++++++++--------- .../org/intellij/lang/annotations/Flow.java | 6 ++-- .../progress/impl/CoreProgressManager.java | 2 +- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/java/java-impl/src/com/intellij/slicer/SliceUtil.java b/java/java-impl/src/com/intellij/slicer/SliceUtil.java index 91dde1c7efaf..2b047f95aa71 100644 --- a/java/java-impl/src/com/intellij/slicer/SliceUtil.java +++ b/java/java-impl/src/com/intellij/slicer/SliceUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -49,13 +49,13 @@ import java.util.Set; /** * @author cdr */ -public class SliceUtil { - public static boolean processUsagesFlownDownTo(@NotNull PsiElement expression, - @NotNull Processor processor, - @NotNull SliceUsage parent, - @NotNull PsiSubstitutor parentSubstitutor, - int indexNesting, - @NotNull String syntheticField) { +class SliceUtil { + static boolean processUsagesFlownDownTo(@NotNull PsiElement expression, + @NotNull Processor processor, + @NotNull SliceUsage parent, + @NotNull PsiSubstitutor parentSubstitutor, + int indexNesting, + @NotNull String syntheticField) { assert indexNesting >= 0 : indexNesting; expression = simplify(expression); PsiElement original = expression; @@ -337,16 +337,18 @@ public class SliceUtil { } @NotNull - public static SliceUsage createSliceUsage(@NotNull PsiElement element, - @NotNull SliceUsage parent, - @NotNull PsiSubstitutor substitutor, - int indexNesting, - @NotNull String syntheticField) { + static SliceUsage createSliceUsage(@NotNull PsiElement element, + @NotNull SliceUsage parent, + @NotNull PsiSubstitutor substitutor, + int indexNesting, + @NotNull String syntheticField) { return new SliceUsage(simplify(element), parent, substitutor,indexNesting, syntheticField); } @NotNull - public static SliceUsage createTooComplexDFAUsage(@NotNull PsiElement element, @NotNull SliceUsage parent, @NotNull PsiSubstitutor substitutor) { + private static SliceUsage createTooComplexDFAUsage(@NotNull PsiElement element, + @NotNull SliceUsage parent, + @NotNull PsiSubstitutor substitutor) { return new SliceTooComplexDFAUsage(simplify(element), parent, substitutor); } diff --git a/platform/annotations/common/src/org/intellij/lang/annotations/Flow.java b/platform/annotations/common/src/org/intellij/lang/annotations/Flow.java index 1854d4c2297e..537a3cb3287a 100644 --- a/platform/annotations/common/src/org/intellij/lang/annotations/Flow.java +++ b/platform/annotations/common/src/org/intellij/lang/annotations/Flow.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -60,7 +60,7 @@ public @interface Flow { * * */ - String source() default org.intellij.lang.annotations.Flow.DEFAULT_SOURCE; + String source() default Flow.DEFAULT_SOURCE; String DEFAULT_SOURCE = "The method argument (if parameter was annotated) or this container (if instance method was annotated)"; String THIS_SOURCE = "this"; @@ -109,7 +109,7 @@ public @interface Flow { * * */ - String target() default org.intellij.lang.annotations.Flow.DEFAULT_TARGET; + String target() default Flow.DEFAULT_TARGET; String DEFAULT_TARGET = "This container (if the parameter was annotated) or the return value (if instance method was annotated)"; String RETURN_METHOD_TARGET = "The return value of this method"; String THIS_TARGET = "this"; diff --git a/platform/core-impl/src/com/intellij/openapi/progress/impl/CoreProgressManager.java b/platform/core-impl/src/com/intellij/openapi/progress/impl/CoreProgressManager.java index f32466655ba6..969b9dc7d360 100644 --- a/platform/core-impl/src/com/intellij/openapi/progress/impl/CoreProgressManager.java +++ b/platform/core-impl/src/com/intellij/openapi/progress/impl/CoreProgressManager.java @@ -64,7 +64,7 @@ public class CoreProgressManager extends ProgressManager implements Disposable { private static volatile boolean thereIsProcessUnderCanceledIndicator; // active (i.e. which have executeProcessUnderProgress() method running) indicators which are not inherited from StandardProgressIndicator. - // for them an extra processing thread (see myCheckCancelledFuture) has to be run to call their non-standard checkCanceled() method + // for them an extra processing thread (see myCheckCancelledFuture) has to be run to call their non-standard checkCanceled() method periodically. private static final Collection nonStandardIndicators = ConcurrentHashMultiset.create(); public CoreProgressManager() { From 93d54859a90bfad2f589db769988f18248e02db1 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 11 Jun 2015 15:51:15 +0300 Subject: [PATCH 37/82] added dispatch thread assertions to protect myConfigurationToBeforeTaskMap --- .../intellij/execution/impl/RunManagerImpl.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java index 539a85ae964d..c9e5b8885010 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.java @@ -22,6 +22,7 @@ import com.intellij.execution.configurations.*; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.Disposable; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.*; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; @@ -154,6 +155,7 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo @NotNull public RunnerAndConfigurationSettings createConfiguration(@NotNull final RunConfiguration runConfiguration, @NotNull final ConfigurationFactory factory) { + assertDispatchThread(); RunnerAndConfigurationSettings template = getConfigurationTemplate(factory); RunnerAndConfigurationSettingsImpl settings = new RunnerAndConfigurationSettingsImpl(this, runConfiguration, false); settings.importRunnerAndConfigurationSettings((RunnerAndConfigurationSettingsImpl)template); @@ -163,6 +165,12 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo return settings; } + private void assertDispatchThread() { + if (myProject.isInitialized()) { + ApplicationManager.getApplication().assertIsDispatchThread(); + } + } + @Override public void dispose() { myTemplateConfigurationsMap.clear(); @@ -336,6 +344,7 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo public void addConfiguration(RunnerAndConfigurationSettings settings, boolean shared, List tasks, boolean addEnabledTemplateTasksIfAbsent) { + assertDispatchThread(); String existingId = findExistingConfigurationId(settings); String newId = settings.getUniqueID(); RunnerAndConfigurationSettings existingSettings = null; @@ -416,6 +425,7 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo @Override public void removeConfiguration(@Nullable RunnerAndConfigurationSettings settings) { + assertDispatchThread(); if (settings == null) return; for (Iterator it = getSortedConfigurations().iterator(); it.hasNext(); ) { @@ -684,8 +694,6 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo @Override public void loadState(Element parentNode) { - clear(false); - List children = parentNode.getChildren(CONFIGURATION); Element[] sortedElements = children.toArray(new Element[children.size()]); // ensure templates are loaded first @@ -810,6 +818,7 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo } private void clear(boolean allConfigurations) { + assertDispatchThread(); List configurations; if (allConfigurations) { myConfigurations.clear(); @@ -1138,6 +1147,7 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo @NotNull @Override public List getBeforeRunTasks(RunConfiguration settings, Key taskProviderID) { + assertDispatchThread(); if (settings instanceof WrappingRunConfiguration) { return getBeforeRunTasks(((WrappingRunConfiguration)settings).getPeer(), taskProviderID); } @@ -1159,6 +1169,7 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo @Override @NotNull public List getBeforeRunTasks(final RunConfiguration settings) { + assertDispatchThread(); if (settings instanceof WrappingRunConfiguration) { return getBeforeRunTasks(((WrappingRunConfiguration)settings).getPeer()); } @@ -1214,6 +1225,7 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo @Override public final void setBeforeRunTasks(final RunConfiguration runConfiguration, @NotNull List tasks, boolean addEnabledTemplateTasksIfAbsent) { + assertDispatchThread(); List result = new SmartList(tasks); if (addEnabledTemplateTasksIfAbsent) { List templates = getTemplateBeforeRunTasks(runConfiguration); @@ -1234,6 +1246,7 @@ public class RunManagerImpl extends RunManagerEx implements PersistentStateCompo } public final void resetBeforeRunTasks(final RunConfiguration runConfiguration) { + assertDispatchThread(); myConfigurationToBeforeTasksMap.remove(runConfiguration); fireBeforeRunTasksUpdated(); } From d4b80455565cadceee068f18caacd7a0ecb7a689 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Thu, 11 Jun 2015 15:51:34 +0300 Subject: [PATCH 38/82] resource bundles: undo after NewPropertyAction fixed --- .../intellij/lang/properties/editor/NewPropertyAction.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/properties/src/com/intellij/lang/properties/editor/NewPropertyAction.java b/plugins/properties/src/com/intellij/lang/properties/editor/NewPropertyAction.java index 80d8be9974cb..4bad9e837f41 100644 --- a/plugins/properties/src/com/intellij/lang/properties/editor/NewPropertyAction.java +++ b/plugins/properties/src/com/intellij/lang/properties/editor/NewPropertyAction.java @@ -22,7 +22,7 @@ import com.intellij.lang.properties.psi.PropertiesFile; import com.intellij.lang.properties.structureView.PropertiesPrefixGroup; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.command.CommandProcessor; +import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.fileEditor.FileEditorManager; @@ -148,11 +148,10 @@ class NewPropertyAction extends AnAction { } } - final PropertiesFile defaultPropertiesFile = resourceBundle.getDefaultPropertiesFile(); ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { - CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() { + WriteCommandAction.runWriteCommandAction(resourceBundle.getProject(), new Runnable() { @Override public void run() { myResourceBundleEditor.getPropertiesInsertDeleteManager().insertNewProperty(newPropertyName, ""); From 74f9ac5a4684073b343d4ff904cc66f3573827b5 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 16:02:01 +0300 Subject: [PATCH 39/82] method ref: don't check method reference qualifier against functional interface (IDEA-141343) --- .../com/intellij/codeInsight/ExceptionUtil.java | 12 +++++------- .../UnhandledExceptionsInQualifier.java | 17 +++++++++++++++++ .../lambda/NewMethodRefHighlightingTest.java | 4 ++++ 3 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newMethodRef/UnhandledExceptionsInQualifier.java diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java b/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java index e268bbdcd526..15f57c2dd018 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java @@ -336,7 +336,8 @@ public class ExceptionUtil { final JavaResolveResult resolveResult = methodReferenceExpression.advancedResolve(false); final PsiElement resolve = resolveResult.getElement(); if (resolve instanceof PsiMethod) { - return getUnhandledExceptions((PsiMethod)resolve, methodReferenceExpression, topElement, resolveResult.getSubstitutor()); + final PsiElement referenceNameElement = methodReferenceExpression.getReferenceNameElement(); + return getUnhandledExceptions((PsiMethod)resolve, referenceNameElement, topElement, resolveResult.getSubstitutor()); } return Collections.emptyList(); } @@ -667,12 +668,9 @@ public class ExceptionUtil { // like in void f() throws XXX { new AA(methodThrowingXXX()) { ... }; } return parent instanceof PsiAnonymousClass && isHandled(parent, exceptionType, topElement); } - else if (parent instanceof PsiLambdaExpression) { - final PsiType interfaceType = ((PsiLambdaExpression)parent).getFunctionalInterfaceType(); - return isDeclaredBySAMMethod(exceptionType, interfaceType); - } - else if (element instanceof PsiMethodReferenceExpression) { - final PsiType interfaceType = ((PsiMethodReferenceExpression)element).getFunctionalInterfaceType(); + else if (parent instanceof PsiLambdaExpression || + parent instanceof PsiMethodReferenceExpression && element == ((PsiMethodReferenceExpression)parent).getReferenceNameElement()) { + final PsiType interfaceType = ((PsiFunctionalExpression)parent).getFunctionalInterfaceType(); return isDeclaredBySAMMethod(exceptionType, interfaceType); } else if (parent instanceof PsiClassInitializer) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newMethodRef/UnhandledExceptionsInQualifier.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newMethodRef/UnhandledExceptionsInQualifier.java new file mode 100644 index 000000000000..e1c64801451e --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newMethodRef/UnhandledExceptionsInQualifier.java @@ -0,0 +1,17 @@ +class E1 extends Exception {} +class E2 extends Exception {} +class Test { + interface I { + void m() throws E1; + } + + void a(I i) {} + Test b() throws E2 {return this;} + void c() throws E1 {} + void e() throws E1, E2 {} + + void d() throws E2 { + a(b()::c); + a(this::e); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewMethodRefHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewMethodRefHighlightingTest.java index ac55c709b1f9..94d0a6427790 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewMethodRefHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewMethodRefHighlightingTest.java @@ -410,6 +410,10 @@ public class NewMethodRefHighlightingTest extends LightDaemonAnalyzerTestCase { doTest(); } + public void testUnhandledExceptionsInQualifier() throws Exception { + doTest(); + } + private void doTest() { doTest(false); } From 648ef6178052c1bc78539a3b470dbee395b0e656 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 16:11:46 +0300 Subject: [PATCH 40/82] update serviceMessages.jar (IDEA-141325) --- lib/serviceMessages.jar | Bin 47730 -> 53813 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/serviceMessages.jar b/lib/serviceMessages.jar index 3f8884a5888fa6102694b0927ddccf1ad894d0d5..d76027403d53210cdc057231e4e8e346996fc445 100644 GIT binary patch literal 53813 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

&)p2F`XzD0UYv<%N5Xw>q^85sW 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 GxBmw(1Jj`Z literal 47730 zcmcGVbC9Ham*=}nUAAo_%jiOvZQHidg)ZB+tGaC4w!3WG-s*eryEC&hb2sM3Ze~PA z{*k{Yo_ykS&iNk6hy#N_e)|17Op%Qc!Ty?vj&rZf^SGM79glp&NHuPiUx&q-7R z-fj7CH5sHBxo~D??(u|dXesB^Rn;wD9x<(6lblG>H}dV((*(p2xPULLOUd7*&j#3? zjXYo9o^U!nEEqW1k$+t_IRGz13Xxw)J_QMabp! zDfU_WTW%ihQ#prX?!?K5|Q@E=a_Op9_jgS-$k2#E3eiEfwQM{0Xn49$tXt7r*8qAG! zO}V|PCb~(bV#>4K^+YcqL-Wjqxtr;|6CJRcG|PGeTru9n2a4whRIkSqQAOXg*OBS+ z5LL3;O$FBBUvEshD#hl3e_@>V<+qHvSOxRQQI3 z7*AdLCUA#Ey1rW=1$fmj+t&z)Y)V!fWNJ5b`^~rRO^*nY52jZS~Syc zkKDqCI6ov!#2oD}sl+1KrOM!TtVvB)%n}^}g^|BZtYbCX9# z{0n#m-!s1-(5Fwapnn?ee~rD&Kf|8i+S10wDQhpRI&BG(^{zo!pNl zp9;bHFD~$o^ZTia?i%7C^Drn7%+U2F->1!9f8f~#M1P--J>u?>X_}_h0a3$M-9fK5 z(++?R?|&>Rp)ZZYveoX{%&@EtDm7jJixx}Ot=jxjKV?16HK8mzG->iwjKK~&r+%={ zZHujIZ%kE5r0jAur7rHUWdoxReePD-o_+r4{f1AI?d;O2nJtj@{Qc=sRP#JS(K%P< zP(Xv#|4g<6o0dT$o!;;4LfkcMd)l-)^*#9vnSWd?Mj)yOg)mblGR`5aS(>OJhG@zr zJ{vv;QJ8#vc@rm~rO=R@5sti;B}f7D)hAAgYJX(?*2p0^x-h2YCsW1(B5DGa93aP-}uSFd-p=X<0bhL=UL7nh*iYdW+6la z@A+_Ivj?)@=CCmFqd)q?9A^L490dNEIVc#~JN(BWpr|e_FOK{c07R1?ug}|>H83V< zDxU2#ug)&gmWGY^O&_MeH_;ShWaDgYY^^4^zqglX%X$*+GUgyRnCEDxH2Lh89lhO7 z7iqfcaVoR9hk04@()!!$14bwI8GzaXQt`6U;l-UK>dsBoMZJ4u!TH$Au$ody z?Md=1^h>ug0X(RF<13GcUpIddi

eH6r<@FoG`nuU${0SZmvWHP=Itx=wge<9Wmb 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 z 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 O@FxRk(Pa52pZ*6iF@#e9 From 24492f92f6e4b06289ff0dcd669ce3ceb036a790 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 11 Jun 2015 17:34:18 +0300 Subject: [PATCH 41/82] EA-52428 - IAE: VisualPosition. --- .../src/com/intellij/openapi/editor/impl/EditorImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index 89a698ae45a8..e9507352a6a5 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -1236,13 +1236,16 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (line == 0 && myPrefixText != null) { px -= myPrefixWidthInPixels; } + if (px < 0) { + px = 0; + } int textLength = myDocument.getTextLength(); LogicalPosition logicalPosition = visualToLogicalPosition(new VisualPosition(line, 0)); int offset = logicalPositionToOffset(logicalPosition); int plainSpaceSize = EditorUtil.getSpaceWidth(Font.PLAIN, this); - if (offset >= textLength) return new VisualPosition(line, EditorUtil.columnsNumber(p.x, plainSpaceSize)); + if (offset >= textLength) return new VisualPosition(line, EditorUtil.columnsNumber(px, plainSpaceSize)); // There is a possible case that starting logical line is split by soft-wraps and it's part after the split should be drawn. // We mark that we're under such circumstances then. @@ -1260,7 +1263,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi + "to offset %d (end offset). State: %s", p, line, line, 0, logicalPosition, offset, line + 1, 0, endLogicalPosition, endOffset, dumpState() )); - return new VisualPosition(line, EditorUtil.columnsNumber(p.x, plainSpaceSize)); + return new VisualPosition(line, EditorUtil.columnsNumber(px, plainSpaceSize)); } IterationState state = new IterationState(this, offset, endOffset, false); From 16786ec65267aad720171acea1a9980b2629d526 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 11 Jun 2015 16:44:43 +0300 Subject: [PATCH 42/82] IDEA-141272 RunLineMarker blinks annoyingly on typing --- .../ApplicationRunLineMarkerProvider.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationRunLineMarkerProvider.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationRunLineMarkerProvider.java index b161cbec1885..fe21ddd71d80 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationRunLineMarkerProvider.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationRunLineMarkerProvider.java @@ -20,6 +20,7 @@ import com.intellij.codeInsight.daemon.LineMarkerProvider; import com.intellij.execution.lineMarker.RunLineMarkerInfo; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiIdentifier; import com.intellij.psi.PsiMethod; import com.intellij.psi.util.PsiMethodUtil; import org.jetbrains.annotations.NotNull; @@ -35,11 +36,14 @@ public class ApplicationRunLineMarkerProvider implements LineMarkerProvider { @Nullable @Override - public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement element) { - if (element instanceof PsiClass && PsiMethodUtil.findMainInClass((PsiClass)element) != null) - return new RunLineMarkerInfo(element, ApplicationConfigurationType.getInstance().getIcon(), null); - if (element instanceof PsiMethod && "main".equals(((PsiMethod)element).getName()) && PsiMethodUtil.isMainMethod((PsiMethod)element)) - return new RunLineMarkerInfo(element, ApplicationConfigurationType.getInstance().getIcon(), null); + public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement e) { + if (e instanceof PsiIdentifier) { + PsiElement element = e.getParent(); + if (element instanceof PsiClass && PsiMethodUtil.findMainInClass((PsiClass)element) != null) + return new RunLineMarkerInfo(element, ApplicationConfigurationType.getInstance().getIcon(), null); + if (element instanceof PsiMethod && "main".equals(((PsiMethod)element).getName()) && PsiMethodUtil.isMainMethod((PsiMethod)element)) + return new RunLineMarkerInfo(element, ApplicationConfigurationType.getInstance().getIcon(), null); + } return null; } From 3e1767b8c3d091e08485a873160e987d7a41a1c1 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 11 Jun 2015 18:13:43 +0300 Subject: [PATCH 43/82] avoid heavy processing on ShowIntentionsPass: deadlock fixed --- .../NavigateToTestDataAction.java | 2 +- .../NavigateToTestDataActionGroup.java | 49 ------------------- .../TestDataLineMarkerProvider.java | 10 ++-- 3 files changed, 7 insertions(+), 54 deletions(-) delete mode 100644 plugins/devkit/src/testAssistant/NavigateToTestDataActionGroup.java diff --git a/plugins/devkit/src/testAssistant/NavigateToTestDataAction.java b/plugins/devkit/src/testAssistant/NavigateToTestDataAction.java index 91b903e9bbdb..c325da519163 100644 --- a/plugins/devkit/src/testAssistant/NavigateToTestDataAction.java +++ b/plugins/devkit/src/testAssistant/NavigateToTestDataAction.java @@ -65,7 +65,7 @@ public class NavigateToTestDataAction extends AnAction implements TestTreeViewAc } @Nullable - public static List findTestDataFiles(@NotNull DataContext context) { + static List findTestDataFiles(@NotNull DataContext context) { final PsiMethod method = findTargetMethod(context); if (method == null) { return null; diff --git a/plugins/devkit/src/testAssistant/NavigateToTestDataActionGroup.java b/plugins/devkit/src/testAssistant/NavigateToTestDataActionGroup.java deleted file mode 100644 index 795832f78cc8..000000000000 --- a/plugins/devkit/src/testAssistant/NavigateToTestDataActionGroup.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2000-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jetbrains.idea.devkit.testAssistant; - -import com.intellij.openapi.actionSystem.ActionGroup; -import com.intellij.openapi.actionSystem.AnAction; -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.fileTypes.FileTypeManager; -import com.intellij.psi.PsiMethod; -import com.intellij.util.Function; -import com.intellij.util.containers.ContainerUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class NavigateToTestDataActionGroup extends ActionGroup { - private final PsiMethod myMethod; - - public NavigateToTestDataActionGroup(PsiMethod method) { - myMethod = method; - } - - @NotNull - @Override - public AnAction[] getChildren(@Nullable AnActionEvent e) { - List names = TestDataNavigationHandler.getFileNames(myMethod); - if (names == null || names.isEmpty()) return new AnAction[0]; - return ContainerUtil.map2Array(names, AnAction.class, new Function() { - @Override - public AnAction fun(String s) { - return new GotoTestDataAction(s, myMethod.getProject(), FileTypeManager.getInstance().getFileTypeByFileName(s).getIcon()); - } - }); - } -} diff --git a/plugins/devkit/src/testAssistant/TestDataLineMarkerProvider.java b/plugins/devkit/src/testAssistant/TestDataLineMarkerProvider.java index 017d5b95a6a2..f0dcc8e2202a 100644 --- a/plugins/devkit/src/testAssistant/TestDataLineMarkerProvider.java +++ b/plugins/devkit/src/testAssistant/TestDataLineMarkerProvider.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.devkit.testAssistant; import com.intellij.codeInsight.AnnotationUtil; import com.intellij.execution.lineMarker.RunLineMarkerContributor; import com.intellij.icons.AllIcons; +import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; @@ -39,9 +40,11 @@ public class TestDataLineMarkerProvider extends RunLineMarkerContributor { public static final String CONTENT_ROOT_VARIABLE = "$CONTENT_ROOT"; public static final String PROJECT_ROOT_VARIABLE = "$PROJECT_ROOT"; - public AnAction getAdditionalAction(@NotNull PsiElement element) { + public AnAction getAdditionalAction(@NotNull PsiElement e) { - if (!(element instanceof PsiMethod) && + PsiElement element = e.getParent(); + if (!(e instanceof PsiIdentifier) || + !(element instanceof PsiMethod) && !(element instanceof PsiClass)) { return null; } @@ -55,8 +58,7 @@ public class TestDataLineMarkerProvider extends RunLineMarkerContributor { return null; } if (element instanceof PsiMethod) { - final PsiMethod method = (PsiMethod)element; - return new NavigateToTestDataActionGroup(method); + return ActionManager.getInstance().getAction("TestData.Navigate"); } else { final PsiClass psiClass = (PsiClass)element; final String basePath = getTestDataBasePath(psiClass); From c2d05d995c2f8b4bf5824ba41b136d06cf9a2789 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 11 Jun 2015 18:33:25 +0300 Subject: [PATCH 44/82] interactive-learning-python: use 'JUnit' project library instead of junit.jar from IDEA distribution --- .../interactive-learning-python.iml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/python/edu/interactive-learning-python/interactive-learning-python.iml b/python/edu/interactive-learning-python/interactive-learning-python.iml index e92551376fe3..1fa3fb1282a7 100644 --- a/python/edu/interactive-learning-python/interactive-learning-python.iml +++ b/python/edu/interactive-learning-python/interactive-learning-python.iml @@ -15,16 +15,8 @@ - - - - - - - - - + \ No newline at end of file From 2b3e2792e72f66d2432113dfa2ae274f878292fe Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 11 Jun 2015 18:33:54 +0300 Subject: [PATCH 45/82] interactive-learning-python: path to test data corrected --- .../edu/interactive-learning-python/tests/JsonParserTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/edu/interactive-learning-python/tests/JsonParserTest.java b/python/edu/interactive-learning-python/tests/JsonParserTest.java index 5cba837b2bcf..250e447a1526 100644 --- a/python/edu/interactive-learning-python/tests/JsonParserTest.java +++ b/python/edu/interactive-learning-python/tests/JsonParserTest.java @@ -33,6 +33,6 @@ public class JsonParserTest extends TestCase { assertEquals(myCourse.getLessons().get(1).getTaskList().size(), 1); } protected String getTestDataPath() { - return PythonHelpersLocator.getPythonCommunityPath() + "/edu/learn-python/testData"; + return PythonHelpersLocator.getPythonCommunityPath() + "/edu/interactive-learning-python/testData"; } } From 000b1a7647e508b6c801613751f3cdb310153d95 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 11 Jun 2015 18:34:51 +0300 Subject: [PATCH 46/82] StudyTaskManager fixed: project service instance shouldn't be obtained as a module service --- .../com/jetbrains/edu/learning/StudyTaskManager.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java index 43de59f09bad..1cbd1cff6f90 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java @@ -1,12 +1,6 @@ package com.jetbrains.edu.learning; -import com.intellij.openapi.components.PersistentStateComponent; -import com.intellij.openapi.components.State; -import com.intellij.openapi.components.Storage; -import com.intellij.openapi.components.StorageScheme; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleManager; -import com.intellij.openapi.module.ModuleServiceManager; +import com.intellij.openapi.components.*; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.ui.JBColor; @@ -176,8 +170,6 @@ public class StudyTaskManager implements PersistentStateComponent Date: Thu, 11 Jun 2015 18:36:46 +0300 Subject: [PATCH 47/82] interactive-learning-python: classes shouldn't be located in default package --- .../interactive-learning-python/interactive-learning-python.iml | 2 +- .../edu/interactive-learning-python/tests/JsonParserTest.java | 2 ++ .../tests/StudyDocumentListenerTest.java | 2 ++ python/edu/interactive-learning-python/tests/StudyTestCase.java | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/python/edu/interactive-learning-python/interactive-learning-python.iml b/python/edu/interactive-learning-python/interactive-learning-python.iml index 1fa3fb1282a7..1d2fc6ad288e 100644 --- a/python/edu/interactive-learning-python/interactive-learning-python.iml +++ b/python/edu/interactive-learning-python/interactive-learning-python.iml @@ -5,7 +5,7 @@ - + diff --git a/python/edu/interactive-learning-python/tests/JsonParserTest.java b/python/edu/interactive-learning-python/tests/JsonParserTest.java index 250e447a1526..42ac11d1eb37 100644 --- a/python/edu/interactive-learning-python/tests/JsonParserTest.java +++ b/python/edu/interactive-learning-python/tests/JsonParserTest.java @@ -1,3 +1,5 @@ +package com.jetbrains.edu.learning; + import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; diff --git a/python/edu/interactive-learning-python/tests/StudyDocumentListenerTest.java b/python/edu/interactive-learning-python/tests/StudyDocumentListenerTest.java index dc6c2a496dab..996536f4bf7b 100644 --- a/python/edu/interactive-learning-python/tests/StudyDocumentListenerTest.java +++ b/python/edu/interactive-learning-python/tests/StudyDocumentListenerTest.java @@ -1,3 +1,5 @@ +package com.jetbrains.edu.learning; + import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.editor.Document; diff --git a/python/edu/interactive-learning-python/tests/StudyTestCase.java b/python/edu/interactive-learning-python/tests/StudyTestCase.java index 39bc30c165eb..c822fb869073 100644 --- a/python/edu/interactive-learning-python/tests/StudyTestCase.java +++ b/python/edu/interactive-learning-python/tests/StudyTestCase.java @@ -1,3 +1,5 @@ +package com.jetbrains.edu.learning; + import com.intellij.testFramework.PlatformTestCase; import com.intellij.testFramework.UsefulTestCase; import com.intellij.testFramework.fixtures.CodeInsightTestFixture; From 72ef913c4cc6fc2a8c9c2dd08f320f7e715a85c2 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 11 Jun 2015 17:02:13 +0200 Subject: [PATCH 48/82] WEB-14000 Webpack sourcemap support --- .../BuiltInWebBrowserUrlProvider.java | 2 +- .../com/intellij/openapi/vfs/VfsUtilCore.java | 2 +- .../src/com/intellij/util/UrlImpl.java | 14 +++++++------- .../src/com/intellij/util/Urls.java | 18 ++++++++++++------ 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/platform/built-in-server/src/org/jetbrains/builtInWebServer/BuiltInWebBrowserUrlProvider.java b/platform/built-in-server/src/org/jetbrains/builtInWebServer/BuiltInWebBrowserUrlProvider.java index b79781923d04..6c1163cb27bb 100644 --- a/platform/built-in-server/src/org/jetbrains/builtInWebServer/BuiltInWebBrowserUrlProvider.java +++ b/platform/built-in-server/src/org/jetbrains/builtInWebServer/BuiltInWebBrowserUrlProvider.java @@ -59,7 +59,7 @@ public class BuiltInWebBrowserUrlProvider extends WebBrowserUrlProvider implemen } public static boolean compareAuthority(@Nullable String currentAuthority) { - if (currentAuthority == null) { + if (StringUtil.isEmpty(currentAuthority)) { return false; } diff --git a/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java b/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java index 54dc3d9b73cc..0567e18f1153 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java @@ -418,7 +418,7 @@ public class VfsUtilCore { return prefix + ":///" + suffix; } } - else if (url.charAt(index + 3) == '/' && SystemInfoRt.isWindows && url.regionMatches(0, StandardFileSystems.FILE_PROTOCOL_PREFIX, 0, StandardFileSystems.FILE_PROTOCOL_PREFIX.length())) { + else if (SystemInfoRt.isWindows && (index + 3) < url.length() && url.charAt(index + 3) == '/' && url.regionMatches(0, StandardFileSystems.FILE_PROTOCOL_PREFIX, 0, StandardFileSystems.FILE_PROTOCOL_PREFIX.length())) { // file:///C:/test/file.js -> file://C:/test/file.js for (int i = index + 4; i < url.length(); i++) { char c = url.charAt(i); diff --git a/platform/platform-impl/src/com/intellij/util/UrlImpl.java b/platform/platform-impl/src/com/intellij/util/UrlImpl.java index ee2340db5a89..023865164405 100644 --- a/platform/platform-impl/src/com/intellij/util/UrlImpl.java +++ b/platform/platform-impl/src/com/intellij/util/UrlImpl.java @@ -33,7 +33,7 @@ public final class UrlImpl implements Url { private String externalForm; private UrlImpl withoutParameters; - public UrlImpl(@Nullable String path) { + public UrlImpl(@NotNull String path) { this(null, null, path, null); } @@ -43,8 +43,8 @@ public final class UrlImpl implements Url { public UrlImpl(@Nullable String scheme, @Nullable String authority, @Nullable String path, @Nullable String parameters) { this.scheme = scheme; - this.authority = StringUtil.nullize(authority); - this.path = StringUtil.isEmpty(path) ? "/" : path; + this.authority = authority; + this.path = StringUtil.isEmpty(path) && !StringUtil.isEmpty(authority) ? "/" : StringUtil.notNullize(path); this.parameters = StringUtil.nullize(parameters); } @@ -85,11 +85,11 @@ public final class UrlImpl implements Url { StringBuilder builder = new StringBuilder(); if (scheme != null) { builder.append(scheme); - if (authority != null || isInLocalFileSystem()) { - builder.append(URLUtil.SCHEME_SEPARATOR); + if (authority == null) { + builder.append(':'); } else { - builder.append(':'); + builder.append(URLUtil.SCHEME_SEPARATOR); } if (authority != null) { @@ -111,7 +111,7 @@ public final class UrlImpl implements Url { } // relative path - special url, encoding is not required - // authority is null in case of URI or file URL + // authority is null in case of URI if ((path.charAt(0) != '/' || authority == null) && !isInLocalFileSystem()) { return toDecodedForm(); } diff --git a/platform/platform-impl/src/com/intellij/util/Urls.java b/platform/platform-impl/src/com/intellij/util/Urls.java index abe4c5ae75b2..0deb412f3f1e 100644 --- a/platform/platform-impl/src/com/intellij/util/Urls.java +++ b/platform/platform-impl/src/com/intellij/util/Urls.java @@ -141,15 +141,21 @@ public final class Urls { } String authority = StringUtil.nullize(matcher.group(3)); - String path = StringUtil.nullize(matcher.group(4)); - if (path != null) { - path = FileUtil.toCanonicalUriPath(path); + boolean hasUrlSeparator = !StringUtil.isEmpty(matcher.group(2)); + if (authority == null) { + if (hasUrlSeparator) { + authority = ""; + } + } + else if (StandardFileSystems.FILE_PROTOCOL.equals(scheme) || !hasUrlSeparator) { + path = path == null ? authority : (authority + path); + authority = hasUrlSeparator ? "" : null; } - if (authority != null && (StandardFileSystems.FILE_PROTOCOL.equals(scheme) || StringUtil.isEmpty(matcher.group(2)))) { - path = path == null ? authority : (authority + path); - authority = null; + // canonicalize only if authority is not empty or file url - we should not canonicalize URL with unknown scheme (webpack:///./modules/flux-orion-plugin/fluxPlugin.ts) + if (path != null && (!StringUtil.isEmpty(authority) || StandardFileSystems.FILE_PROTOCOL.equals(scheme))) { + path = FileUtil.toCanonicalUriPath(path); } return new UrlImpl(scheme, authority, path, matcher.group(5)); } From 2c2fcc71af28afc86dd375042335be4a82449dfc Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 11 Jun 2015 17:02:37 +0200 Subject: [PATCH 49/82] cleanup --- .../execution/impl/ConfigurationSettingsEditorWrapper.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java b/platform/lang-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java index a1cb7b8c23f3..9d097a5dabfb 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.execution.impl; import com.intellij.execution.BeforeRunTask; @@ -44,8 +43,9 @@ import java.util.List; */ public class ConfigurationSettingsEditorWrapper extends SettingsEditor implements BeforeRunStepsPanel.StepsBeforeRunListener { - public static DataKey CONFIGURATION_EDITOR_KEY = DataKey.create("ConfigurationSettingsEditor"); + public static final DataKey CONFIGURATION_EDITOR_KEY = DataKey.create("ConfigurationSettingsEditor"); @NonNls private static final String EXPAND_PROPERTY_KEY = "ExpandBeforeRunStepsPanel"; + private JPanel myComponentPlace; private JPanel myWholePanel; @@ -79,6 +79,7 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor Date: Thu, 11 Jun 2015 18:46:58 +0300 Subject: [PATCH 50/82] StudyTaskManager: specified storage for file-based project format --- .../src/com/jetbrains/edu/learning/StudyTaskManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java index 1cbd1cff6f90..1722e67aedfa 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/StudyTaskManager.java @@ -25,9 +25,9 @@ import java.util.Map; @State( name = "StudySettings", storages = { + @Storage(file = StoragePathMacros.PROJECT_FILE), @Storage( - id = "others", - file = "$PROJECT_CONFIG_DIR$/study_project.xml", + file = StoragePathMacros.PROJECT_CONFIG_DIR + "/study_project.xml", scheme = StorageScheme.DIRECTORY_BASED )} ) From ac351ea03954ef1ca08b54b7e507490037d480f6 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Thu, 11 Jun 2015 19:08:43 +0200 Subject: [PATCH 51/82] Welcome Screen: show proper app icon as default icon for project --- .../ide/RecentProjectsManagerBase.java | 42 ++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java b/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java index 892f949e5897..7a1b2a1fe485 100644 --- a/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java +++ b/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java @@ -15,11 +15,11 @@ */ package com.intellij.ide; -import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.Separator; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.ex.ApplicationInfoEx; import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; @@ -27,6 +27,7 @@ import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerListener; import com.intellij.openapi.project.impl.ProjectImpl; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.SystemInfo; @@ -36,10 +37,12 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.openapi.wm.impl.SystemDock; import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame; +import com.intellij.util.IconUtil; import com.intellij.util.ImageLoader; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.messages.MessageBus; +import com.intellij.util.ui.EmptyIcon; import com.intellij.util.ui.ImageUtil; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; @@ -63,6 +66,7 @@ import java.util.List; */ public abstract class RecentProjectsManagerBase extends RecentProjectsManager implements ProjectManagerListener, PersistentStateComponent { private static final Map ourProjectIcons = new HashMap(); + private static Icon ourSmallAppIcon; public static RecentProjectsManagerBase getInstanceEx() { return (RecentProjectsManagerBase)RecentProjectsManager.getInstance(); @@ -215,6 +219,11 @@ public abstract class RecentProjectsManagerBase extends RecentProjectsManager im @NotNull public static Icon createIcon(File file) { final BufferedImage image = loadAndScaleImage(file); + return toRetinaAwareIcon(image); + } + + @NotNull + protected static Icon toRetinaAwareIcon(final BufferedImage image) { return new Icon() { @Override public void paintIcon(Component c, Graphics g, int x, int y) { @@ -245,10 +254,9 @@ public abstract class RecentProjectsManagerBase extends RecentProjectsManager im private static BufferedImage loadAndScaleImage(File file) { try { Image img = ImageLoader.loadFromUrl(file.toURL()); - return Scalr.resize(ImageUtil.toBufferedImage(img), Scalr.Method.ULTRA_QUALITY, UIUtil.isRetina() ? 32 : JBUI.scale(16), null); + return Scalr.resize(ImageUtil.toBufferedImage(img), Scalr.Method.ULTRA_QUALITY, UIUtil.isRetina() ? 32 : JBUI.scale(16)); } - catch (MalformedURLException e) { - e.printStackTrace(); + catch (MalformedURLException e) {// } return null; } @@ -267,8 +275,32 @@ public abstract class RecentProjectsManagerBase extends RecentProjectsManager im } } + return getSmallApplicationIcon(); + } - return AllIcons.Nodes.IdeaProject; + protected static Icon getSmallApplicationIcon() { + if (ourSmallAppIcon == null) { + try { + Icon appIcon = IconLoader.findIcon(ApplicationInfoEx.getInstanceEx().getIconUrl()); + + if (appIcon != null) { + if (appIcon.getIconWidth() == JBUI.scale(16) && appIcon.getIconHeight() == JBUI.scale(16)) { + ourSmallAppIcon = appIcon; + } else { + BufferedImage image = ImageUtil.toBufferedImage(IconUtil.toImage(appIcon)); + image = Scalr.resize(image, Scalr.Method.ULTRA_QUALITY, UIUtil.isRetina() ? 32 : JBUI.scale(16)); + ourSmallAppIcon = toRetinaAwareIcon(image); + } + } + } + catch (Exception e) {// + } + if (ourSmallAppIcon == null) { + ourSmallAppIcon = EmptyIcon.ICON_16; + } + } + + return ourSmallAppIcon; } private Set getDuplicateProjectNames(Set openedPaths, Set recentPaths) { From 0908de1bde2dcd4720f8f2452f08ca1e93d6d093 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Thu, 11 Jun 2015 19:01:24 +0300 Subject: [PATCH 52/82] IDEA-131134 Support multiple breakpoints within on single line - initial commit --- .../engine/CompoundPositionManager.java | 1 + .../debugger/engine/PositionManagerImpl.java | 54 +------- .../debugger/impl/DebuggerUtilsEx.java | 82 ++++++++++++ .../breakpoints/JavaLineBreakpointType.java | 123 +++++++++++++++++- .../ui/breakpoints/LineBreakpoint.java | 23 +++- .../ui/breakpoints/RunToCursorBreakpoint.java | 22 +--- .../JavaLineBreakpointProperties.java | 14 +- .../com/intellij/debugger/SourcePosition.java | 2 +- .../xdebugger/impl/XDebuggerUtilImpl.java | 90 ++++++++++--- .../XToggleLineBreakpointActionHandler.java | 4 +- .../impl/breakpoints/XBreakpointUtil.java | 38 ++++-- .../breakpoints/XLineBreakpointManager.java | 36 +++-- .../breakpoints/XLineBreakpointVariant.java | 34 +++++ .../XLineBreakpointVariantsProvider.java | 30 +++++ 14 files changed, 434 insertions(+), 119 deletions(-) create mode 100644 platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointVariant.java create mode 100644 platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointVariantsProvider.java diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java b/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java index f17787b67de6..52665815abb2 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/CompoundPositionManager.java @@ -79,6 +79,7 @@ public class CompoundPositionManager extends PositionManagerEx implements MultiR return defaultValue; } + @Nullable @Override public SourcePosition getSourcePosition(final Location location) { if (location == null) return null; diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java index 43b131c92c25..2ed9b5283ada 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java @@ -20,6 +20,7 @@ import com.intellij.debugger.NoDataException; import com.intellij.debugger.PositionManager; import com.intellij.debugger.SourcePosition; import com.intellij.debugger.engine.evaluation.EvaluateException; +import com.intellij.debugger.impl.DebuggerUtilsEx; import com.intellij.debugger.jdi.VirtualMachineProxyImpl; import com.intellij.debugger.requests.ClassPrepareRequestor; import com.intellij.execution.filters.LineNumbersMapping; @@ -122,6 +123,7 @@ public class PositionManagerImpl implements PositionManager, MultiRequestPositio }); } + @Nullable public SourcePosition getSourcePosition(final Location location) throws NoDataException { DebuggerManagerThreadImpl.assertIsManagerThread(); if(location == null) { @@ -254,51 +256,17 @@ public class PositionManagerImpl implements PositionManager, MultiRequestPositio PsiFile file = original.getFile(); int line = original.getLine(); if (LambdaMethodFilter.isLambdaName(myExpectedMethodName) && myLambdaOrdinal > -1) { + List lambdas = DebuggerUtilsEx.collectLambdas(original, false); + Document document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file); if (document == null || line >= document.getLineCount()) { return original; } - PsiElement element = original.getElementAt(); - TextRange lineRange = new TextRange(document.getLineStartOffset(line), document.getLineEndOffset(line)); - do { - PsiElement parent = element.getParent(); - if (parent == null || (parent.getTextOffset() < lineRange.getStartOffset())) { - break; - } - element = parent; - } - while(true); - final List lambdas = new ArrayList(3); - final PsiElementVisitor lambdaCollector = new JavaRecursiveElementVisitor() { - @Override - public void visitLambdaExpression(PsiLambdaExpression expression) { - super.visitLambdaExpression(expression); - lambdas.add(expression); - } - }; - element.accept(lambdaCollector); - // add initial lambda if we're inside already - NavigatablePsiElement method = PsiTreeUtil.getParentOfType(element, PsiMethod.class, PsiLambdaExpression.class); - if (method instanceof PsiLambdaExpression) { - lambdas.add((PsiLambdaExpression)method); - } - for (PsiElement sibling = getNextElement(element); sibling != null; sibling = getNextElement(sibling)) { - if (!lineRange.intersects(sibling.getTextRange())) { - break; - } - sibling.accept(lambdaCollector); - } if (myLambdaOrdinal < lambdas.size()) { - PsiElement body = lambdas.get(myLambdaOrdinal).getBody(); - if (body instanceof PsiCodeBlock) { - for (PsiStatement statement : ((PsiCodeBlock)body).getStatements()) { - if (lineRange.intersects(statement.getTextRange())) { - body = statement; - break; - } - } + PsiElement firstElem = DebuggerUtilsEx.getFirstElementOnTheLine(lambdas.get(myLambdaOrdinal), document, line); + if (firstElem != null) { + return SourcePosition.createFromElement(firstElem); } - return SourcePosition.createFromElement(body); } } else { @@ -316,14 +284,6 @@ public class PositionManagerImpl implements PositionManager, MultiRequestPositio }); } - private static PsiElement getNextElement(PsiElement element) { - PsiElement sibling = element.getNextSibling(); - if (sibling != null) return sibling; - element = element.getParent(); - if (element != null) return getNextElement(element); - return null; - } - @Nullable @Override public RangeHighlighter createHighlighter(Document document, Project project, TextAttributes attributes) { diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java index 6d908e1c7476..359f61fdf403 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java @@ -58,6 +58,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.Navigatable; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleSettingsManager; +import com.intellij.psi.util.PsiTreeUtil; import com.intellij.ui.classFilter.ClassFilter; import com.intellij.ui.content.Content; import com.intellij.unscramble.ThreadDumpPanel; @@ -779,4 +780,85 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils { res.append(location.method().name()); return res.toString(); } + + private static PsiElement getNextElement(PsiElement element) { + PsiElement sibling = element.getNextSibling(); + if (sibling != null) return sibling; + element = element.getParent(); + if (element != null) return getNextElement(element); + return null; + } + + public static List collectLambdas(SourcePosition position, final boolean onlyOnTheLine) { + ApplicationManager.getApplication().assertReadAccessAllowed(); + PsiFile file = position.getFile(); + int line = position.getLine(); + Document document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file); + if (document == null || line >= document.getLineCount()) { + return Collections.emptyList(); + } + PsiElement element = position.getElementAt(); + final TextRange lineRange = new TextRange(document.getLineStartOffset(line), document.getLineEndOffset(line)); + do { + PsiElement parent = element.getParent(); + if (parent == null || (parent.getTextOffset() < lineRange.getStartOffset())) { + break; + } + element = parent; + } + while(true); + + final List lambdas = new ArrayList(3); + final PsiElementVisitor lambdaCollector = new JavaRecursiveElementVisitor() { + @Override + public void visitLambdaExpression(PsiLambdaExpression expression) { + super.visitLambdaExpression(expression); + if (!onlyOnTheLine || lineRange.intersects(expression.getTextRange())) { + lambdas.add(expression); + } + } + }; + element.accept(lambdaCollector); + // add initial lambda if we're inside already + NavigatablePsiElement method = PsiTreeUtil.getParentOfType(element, PsiMethod.class, PsiLambdaExpression.class); + if (method instanceof PsiLambdaExpression) { + lambdas.add((PsiLambdaExpression)method); + } + for (PsiElement sibling = getNextElement(element); sibling != null; sibling = getNextElement(sibling)) { + if (!lineRange.intersects(sibling.getTextRange())) { + break; + } + sibling.accept(lambdaCollector); + } + return lambdas; + } + + @Nullable + public static PsiElement getFirstElementOnTheLine(PsiLambdaExpression lambda, Document document, int line) { + ApplicationManager.getApplication().assertReadAccessAllowed(); + TextRange lineRange = new TextRange(document.getLineStartOffset(line), document.getLineEndOffset(line)); + if (!lineRange.intersects(lambda.getTextRange())) return null; + PsiElement body = lambda.getBody(); + if (body instanceof PsiCodeBlock) { + for (PsiStatement statement : ((PsiCodeBlock)body).getStatements()) { + if (lineRange.intersects(statement.getTextRange())) { + return statement; + } + } + } + return body; + } + + public static boolean inTheSameMethod(@NotNull SourcePosition pos1, @NotNull SourcePosition pos2) { + ApplicationManager.getApplication().assertReadAccessAllowed(); + PsiElement elem1 = pos1.getElementAt(); + PsiElement elem2 = pos2.getElementAt(); + if (elem1 == null) return elem2 == null; + if (elem2 != null) { + NavigatablePsiElement expectedMethod = PsiTreeUtil.getParentOfType(elem1, PsiMethod.class, PsiLambdaExpression.class); + NavigatablePsiElement currentMethod = PsiTreeUtil.getParentOfType(elem2, PsiMethod.class, PsiLambdaExpression.class); + return Comparing.equal(expectedMethod, currentMethod); + } + return false; + } } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/JavaLineBreakpointType.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/JavaLineBreakpointType.java index a3c442fb410b..ff1b10d1d8d6 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/JavaLineBreakpointType.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/JavaLineBreakpointType.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,26 +17,39 @@ package com.intellij.debugger.ui.breakpoints; import com.intellij.debugger.DebuggerBundle; import com.intellij.debugger.HelpID; -import com.intellij.icons.AllIcons; +import com.intellij.debugger.SourcePosition; +import com.intellij.debugger.impl.DebuggerUtilsEx; +import com.intellij.openapi.editor.Document; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.*; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.util.SmartList; import com.intellij.xdebugger.XDebuggerUtil; +import com.intellij.xdebugger.XSourcePosition; import com.intellij.xdebugger.breakpoints.XBreakpoint; import com.intellij.xdebugger.breakpoints.XLineBreakpoint; import com.intellij.xdebugger.breakpoints.ui.XBreakpointGroupingRule; +import com.intellij.xdebugger.impl.XSourcePositionImpl; +import com.intellij.xdebugger.impl.breakpoints.XLineBreakpointVariant; +import com.intellij.xdebugger.impl.breakpoints.XLineBreakpointVariantsProvider; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.java.debugger.breakpoints.properties.JavaBreakpointProperties; import org.jetbrains.java.debugger.breakpoints.properties.JavaLineBreakpointProperties; import javax.swing.*; +import java.util.Collections; import java.util.List; /** * Base class for java line-connected exceptions (line, method, field) * @author egor */ -public class JavaLineBreakpointType extends JavaLineBreakpointTypeBase implements JavaBreakpointType { +public class JavaLineBreakpointType extends JavaLineBreakpointTypeBase + implements JavaBreakpointType, XLineBreakpointVariantsProvider { public JavaLineBreakpointType() { super("java-line", DebuggerBundle.message("line.breakpoints.tab.title")); } @@ -58,13 +71,13 @@ public class JavaLineBreakpointType extends JavaLineBreakpointTypeBase computeLineBreakpointVariants(@NotNull Project project, @NotNull XSourcePosition position) { + PsiFile file = PsiManager.getInstance(project).findFile(position.getFile()); + if (file == null) { + return Collections.emptyList(); + } + + SourcePosition pos = SourcePosition.createFromLine(file, position.getLine()); + List lambdas = DebuggerUtilsEx.collectLambdas(pos, true); + if (lambdas.isEmpty()) { + return Collections.emptyList(); + } + + NavigatablePsiElement startMethod = PsiTreeUtil.getParentOfType(pos.getElementAt(), PsiMethod.class, PsiLambdaExpression.class); + //noinspection SuspiciousMethodCalls + if (lambdas.contains(startMethod) && lambdas.size() == 1) { + return Collections.emptyList(); + } + + Document document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file); + if (document == null) { + return Collections.emptyList(); + } + + List res = new SmartList(); + res.add(new JavaBreakpointVariant(position)); //all + + if (startMethod instanceof PsiMethod) { + res.add(new ExactJavaBreakpointVariant(position, startMethod)); // base method + } + + for (PsiLambdaExpression lambda : lambdas) { //lambdas + PsiElement firstElem = DebuggerUtilsEx.getFirstElementOnTheLine(lambda, document, position.getLine()); + res.add(new ExactJavaBreakpointVariant(XSourcePositionImpl.createByElement(firstElem), lambda)); + } + + return res; + } + + class JavaBreakpointVariant extends XLineBreakpointVariant { + protected final XSourcePosition mySourcePosition; + + private JavaBreakpointVariant(XSourcePosition position) { + mySourcePosition = position; + } + + @Override + public String getText() { + return "All"; + } + + @Override + public Icon getIcon() { + return null; + } + + @Override + public TextRange getHighlightRange() { + return null; + } + + @Override + public JavaLineBreakpointProperties createProperties() { + return createBreakpointProperties(mySourcePosition.getFile(), + mySourcePosition.getLine()); + } + } + + private class ExactJavaBreakpointVariant extends JavaBreakpointVariant { + private final PsiElement myElement; + + public ExactJavaBreakpointVariant(XSourcePosition position, PsiElement element) { + super(position); + myElement = element; + } + + @Override + public Icon getIcon() { + return myElement.getIcon(0); + } + + @Override + public String getText() { + return StringUtil.shortenTextWithEllipsis(myElement.getText(), 100, 0); + } + + @Override + public TextRange getHighlightRange() { + return myElement.getTextRange(); + } + + @Override + public JavaLineBreakpointProperties createProperties() { + JavaLineBreakpointProperties properties = super.createProperties(); + properties.setOffset(mySourcePosition.getOffset()); + return properties; + } + } } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/LineBreakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/LineBreakpoint.java index c322f67641d2..8cf083f49710 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/LineBreakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/LineBreakpoint.java @@ -62,6 +62,7 @@ import com.sun.jdi.request.BreakpointRequest; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.java.debugger.breakpoints.properties.JavaLineBreakpointProperties; import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; import javax.swing.*; @@ -198,12 +199,30 @@ public class LineBreakpoint extends BreakpointWithHighlighter { return false; } - protected boolean acceptLocation(DebugProcessImpl debugProcess, ReferenceType classType, Location loc) { + protected boolean acceptLocation(final DebugProcessImpl debugProcess, ReferenceType classType, final Location loc) { Method method = loc.method(); if (DebuggerUtils.isSynthetic(method)) { return false; } - return !(method.isConstructor() && loc.codeIndex() == 0 && isAnonymousClass(classType)); + boolean res = !(method.isConstructor() && loc.codeIndex() == 0 && isAnonymousClass(classType)); + if (!res) return false; + return ApplicationManager.getApplication().runReadAction(new Computable() { + @Override + public Boolean compute() { + if (getProperties() instanceof JavaLineBreakpointProperties) { + Integer offset = ((JavaLineBreakpointProperties)getProperties()).getOffset(); + if (offset == null) return true; + PsiFile file = getPsiFile(); + if (file != null) { + SourcePosition exactPosition = SourcePosition.createFromOffset(file, offset); + SourcePosition position = debugProcess.getPositionManager().getSourcePosition(loc); + if (position == null) return false; + return DebuggerUtilsEx.inTheSameMethod(exactPosition, position); + } + } + return true; + } + }); } private boolean isInScopeOf(DebugProcessImpl debugProcess, String className) { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/RunToCursorBreakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/RunToCursorBreakpoint.java index 52af16623eb7..9fbc28c0ef49 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/RunToCursorBreakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/RunToCursorBreakpoint.java @@ -17,12 +17,12 @@ package com.intellij.debugger.ui.breakpoints; import com.intellij.debugger.SourcePosition; import com.intellij.debugger.engine.DebugProcessImpl; +import com.intellij.debugger.impl.DebuggerUtilsEx; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Computable; -import com.intellij.psi.*; -import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiManager; import com.intellij.xdebugger.XSourcePosition; import com.sun.jdi.Location; import com.sun.jdi.ReferenceType; @@ -125,19 +125,9 @@ public class RunToCursorBreakpoint extends LineBreakpoint { return ApplicationManager.getApplication().runReadAction(new Computable() { @Override public Boolean compute() { - PsiElement expectedElement = myCustomPosition.getElementAt(); - if (expectedElement != null) { - SourcePosition position = debugProcess.getPositionManager().getSourcePosition(loc); - if (position != null) { - PsiElement currentElement = position.getElementAt(); - if (currentElement != null) { - NavigatablePsiElement expectedMethod = PsiTreeUtil.getParentOfType(expectedElement, PsiMethod.class, PsiLambdaExpression.class); - NavigatablePsiElement currentMethod = PsiTreeUtil.getParentOfType(currentElement, PsiMethod.class, PsiLambdaExpression.class); - return Comparing.equal(expectedMethod, currentMethod); - } - } - } - return true; + SourcePosition position = debugProcess.getPositionManager().getSourcePosition(loc); + if (position == null) return false; + return DebuggerUtilsEx.inTheSameMethod(myCustomPosition, position); } }); } diff --git a/java/debugger/impl/src/org/jetbrains/java/debugger/breakpoints/properties/JavaLineBreakpointProperties.java b/java/debugger/impl/src/org/jetbrains/java/debugger/breakpoints/properties/JavaLineBreakpointProperties.java index 9a892346ac04..1ddf268f5895 100644 --- a/java/debugger/impl/src/org/jetbrains/java/debugger/breakpoints/properties/JavaLineBreakpointProperties.java +++ b/java/debugger/impl/src/org/jetbrains/java/debugger/breakpoints/properties/JavaLineBreakpointProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,20 @@ */ package org.jetbrains.java.debugger.breakpoints.properties; +import com.intellij.util.xmlb.annotations.OptionTag; + /** * @author egor */ public class JavaLineBreakpointProperties extends JavaBreakpointProperties { + private Integer myOffset = null; + + @OptionTag("offset") + public Integer getOffset() { + return myOffset; + } + + public void setOffset(Integer offset) { + myOffset = offset; + } } diff --git a/java/debugger/openapi/src/com/intellij/debugger/SourcePosition.java b/java/debugger/openapi/src/com/intellij/debugger/SourcePosition.java index 831a5fc3c4ae..1b748b7691e6 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/SourcePosition.java +++ b/java/debugger/openapi/src/com/intellij/debugger/SourcePosition.java @@ -312,7 +312,7 @@ public abstract class SourcePosition implements Navigatable{ } @Nullable - public static SourcePosition createFromElement(PsiElement element) { + public static SourcePosition createFromElement(@NotNull PsiElement element) { ApplicationManager.getApplication().assertReadAccessAllowed(); PsiElement navigationElement = element.getNavigationElement(); final SmartPsiElementPointer pointer = diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java index cc2ba00f239f..cb93462706f6 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java @@ -18,6 +18,7 @@ package com.intellij.xdebugger.impl; import com.intellij.lang.Language; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.Result; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.editor.Caret; @@ -28,12 +29,19 @@ import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.popup.JBPopupFactory; +import com.intellij.openapi.ui.popup.PopupStep; +import com.intellij.openapi.ui.popup.util.BaseListPopupStep; +import com.intellij.openapi.util.AsyncResult; +import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.ui.awt.RelativePoint; import com.intellij.util.Processor; +import com.intellij.util.SmartList; import com.intellij.xdebugger.*; import com.intellij.xdebugger.breakpoints.*; import com.intellij.xdebugger.breakpoints.ui.XBreakpointGroupingRule; @@ -45,6 +53,8 @@ import com.intellij.xdebugger.frame.XSuspendContext; import com.intellij.xdebugger.frame.XValueContainer; import com.intellij.xdebugger.impl.breakpoints.XBreakpointUtil; import com.intellij.xdebugger.impl.breakpoints.XExpressionImpl; +import com.intellij.xdebugger.impl.breakpoints.XLineBreakpointVariant; +import com.intellij.xdebugger.impl.breakpoints.XLineBreakpointVariantsProvider; import com.intellij.xdebugger.impl.breakpoints.ui.grouping.XBreakpointFileGroupingRule; import com.intellij.xdebugger.impl.evaluate.quick.common.ValueLookupManager; import com.intellij.xdebugger.impl.settings.XDebuggerSettingsManager; @@ -54,6 +64,7 @@ import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.swing.*; import java.util.*; /** @@ -107,28 +118,76 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { @NotNull final VirtualFile file, final int line, final boolean temporary) { - toggleAndReturnLineBreakpoint(project, type, file, line, temporary); + XSourcePositionImpl position = XSourcePositionImpl.create(file, line); + if (position != null) { + toggleAndReturnLineBreakpoint(project, type, position, temporary, null); + } } - public static

XLineBreakpoint toggleAndReturnLineBreakpoint(@NotNull final Project project, + @NotNull + public static

AsyncResult toggleAndReturnLineBreakpoint(@NotNull final Project project, @NotNull final XLineBreakpointType

type, - @NotNull final VirtualFile file, - final int line, - final boolean temporary) { - return new WriteAction() { + @NotNull final XSourcePosition position, + final boolean temporary, + final RelativePoint relativePoint) { + return ApplicationManager.getApplication().runWriteAction(new Computable>() { @Override - protected void run(@NotNull final Result result) { - XBreakpointManager breakpointManager = XDebuggerManager.getInstance(project).getBreakpointManager(); + public AsyncResult compute() { + final VirtualFile file = position.getFile(); + final int line = position.getLine(); + final XBreakpointManager breakpointManager = XDebuggerManager.getInstance(project).getBreakpointManager(); XLineBreakpoint

breakpoint = breakpointManager.findBreakpointAtLine(type, file, line); if (breakpoint != null) { breakpointManager.removeBreakpoint(breakpoint); } else { + if (type instanceof XLineBreakpointVariantsProvider) { + final XLineBreakpointVariantsProvider provider = + (XLineBreakpointVariantsProvider)type; + List variants = provider.computeLineBreakpointVariants(project, position); + if (!variants.isEmpty()) { + if (variants.size() > 1 && relativePoint != null) { + final AsyncResult res = new AsyncResult(); + JBPopupFactory.getInstance().createListPopup( + new BaseListPopupStep("Create breakpoint for", variants) { + @NotNull + @Override + public String getTextFor(XLineBreakpointVariant value) { + return value.getText(); + } + + @Override + public Icon getIconFor(XLineBreakpointVariant value) { + return value.getIcon(); + } + + @Override + public PopupStep onChosen(final XLineBreakpointVariant selectedValue, boolean finalChoice) { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + P properties = (P)selectedValue.createProperties(); + res.setDone(breakpointManager.addLineBreakpoint(type, file.getUrl(), line, properties, temporary)); + } + }); + return FINAL_CHOICE; + } + }).show(relativePoint); + return res; + } + else { + P properties = (P)variants.get(0).createProperties(); + return AsyncResult.done( + (XLineBreakpoint)breakpointManager.addLineBreakpoint(type, file.getUrl(), line, properties, temporary)); + } + } + } P properties = type.createBreakpointProperties(file, line); - result.setResult(breakpointManager.addLineBreakpoint(type, file.getUrl(), line, properties, temporary)); + return AsyncResult.done((XLineBreakpoint)breakpointManager.addLineBreakpoint(type, file.getUrl(), line, properties, temporary)); } + return AsyncResult.rejected(); } - }.execute().getResultObject(); + }); } @Override @@ -199,13 +258,10 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { return Collections.emptyList(); } - final Document document = editor.getDocument(); - VirtualFile file = FileDocumentManager.getInstance().getFile(document); - Collection res = new ArrayList(); - List carets = editor.getCaretModel().getAllCarets(); - for (Caret caret : carets) { - int line = caret.getLogicalPosition().line; - XSourcePositionImpl position = XSourcePositionImpl.create(file, line); + VirtualFile file = FileDocumentManager.getInstance().getFile(editor.getDocument()); + List res = new SmartList(); + for (Caret caret : editor.getCaretModel().getAllCarets()) { + XSourcePositionImpl position = XSourcePositionImpl.createByOffset(file, caret.getOffset()); if (position != null) { res.add(position); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XToggleLineBreakpointActionHandler.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XToggleLineBreakpointActionHandler.java index 78462bbee293..b9a8beafed14 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XToggleLineBreakpointActionHandler.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XToggleLineBreakpointActionHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -65,7 +65,7 @@ public class XToggleLineBreakpointActionHandler extends DebuggerActionHandler { Set processedLines = new HashSet(); for (XSourcePosition position : XDebuggerUtilImpl.getAllCaretsPositions(project, event.getDataContext())) { if (processedLines.add(position.getLine())) { - XBreakpointUtil.toggleLineBreakpoint(project, position.getFile(), editor, position.getLine(), myTemporary, true); + XBreakpointUtil.toggleLineBreakpoint(project, position, editor, myTemporary, true); } } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointUtil.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointUtil.java index 7bfc31989e3b..d5280fc94e6e 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointUtil.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,16 +22,20 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.FoldRegion; import com.intellij.openapi.editor.markup.GutterIconRenderer; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.AsyncResult; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.xdebugger.XDebuggerManager; import com.intellij.xdebugger.XDebuggerUtil; +import com.intellij.xdebugger.XSourcePosition; import com.intellij.xdebugger.breakpoints.*; import com.intellij.xdebugger.impl.DebuggerSupport; import com.intellij.xdebugger.impl.XDebuggerUtilImpl; +import com.intellij.xdebugger.impl.XSourcePositionImpl; import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointItem; import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointPanelProvider; +import com.intellij.xdebugger.impl.ui.DebuggerUIUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -130,12 +134,14 @@ public class XBreakpointUtil { * - unfolds folded block on the line * - if folded, checks if line breakpoints could be toggled inside folded text */ - public static XLineBreakpoint toggleLineBreakpoint(Project project, - VirtualFile file, - Editor editor, - int lineStart, + @NotNull + public static AsyncResult toggleLineBreakpoint(@NotNull Project project, + @NotNull XSourcePosition position, + @Nullable Editor editor, boolean temporary, boolean moveCarret) { + int lineStart = position.getLine(); + VirtualFile file = position.getFile(); // for folded text check each line and find out type with the biggest priority int linesEnd = lineStart; if (editor != null) { @@ -147,7 +153,7 @@ public class XBreakpointUtil { final XBreakpointManager breakpointManager = XDebuggerManager.getInstance(project).getBreakpointManager(); XLineBreakpointType[] lineTypes = XDebuggerUtil.getInstance().getLineBreakpointTypes(); - XLineBreakpointType typeWinner = null; + XLineBreakpointType typeWinner = null; int lineWinner = -1; for (int line = lineStart; line <= linesEnd; line++) { int maxPriority = 0; @@ -170,18 +176,22 @@ public class XBreakpointUtil { } if (typeWinner != null) { - XLineBreakpoint res = XDebuggerUtilImpl.toggleAndReturnLineBreakpoint(project, typeWinner, file, lineWinner, temporary); + XSourcePosition winPosition = (lineStart == lineWinner) ? position : XSourcePositionImpl.create(file, lineWinner); + if (winPosition != null) { + AsyncResult res = XDebuggerUtilImpl.toggleAndReturnLineBreakpoint(project, typeWinner, winPosition, temporary, + DebuggerUIUtil.calcPopupLocation(editor, lineWinner)); - if (editor != null && lineStart != lineWinner) { - int offset = editor.getDocument().getLineStartOffset(lineWinner); - ExpandRegionAction.expandRegionAtOffset(project, editor, offset); - if (moveCarret) { - editor.getCaretModel().moveToOffset(offset); + if (editor != null && lineStart != lineWinner) { + int offset = editor.getDocument().getLineStartOffset(lineWinner); + ExpandRegionAction.expandRegionAtOffset(project, editor, offset); + if (moveCarret) { + editor.getCaretModel().moveToOffset(offset); + } } + return res; } - return res; } - return null; + return AsyncResult.rejected(); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java index acf896a8d357..626b22e068f0 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,6 +38,7 @@ import com.intellij.openapi.fileEditor.TextEditor; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupManager; +import com.intellij.openapi.util.AsyncResult; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -45,6 +46,7 @@ import com.intellij.openapi.vfs.VirtualFileEvent; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.openapi.vfs.VirtualFileUrlChangeAdapter; import com.intellij.psi.PsiDocumentManager; +import com.intellij.util.Consumer; import com.intellij.util.SmartList; import com.intellij.util.containers.BidirectionalMap; import com.intellij.util.ui.update.MergingUpdateQueue; @@ -53,6 +55,7 @@ import com.intellij.xdebugger.XDebuggerManager; import com.intellij.xdebugger.breakpoints.SuspendPolicy; import com.intellij.xdebugger.breakpoints.XBreakpoint; import com.intellij.xdebugger.breakpoints.XLineBreakpoint; +import com.intellij.xdebugger.impl.XSourcePositionImpl; import com.intellij.xdebugger.impl.ui.DebuggerUIUtil; import gnu.trove.TIntHashSet; import org.jetbrains.annotations.NotNull; @@ -297,20 +300,25 @@ public class XLineBreakpointManager { if (!myProject.isDisposed() && myProject.isInitialized() && file.isValid()) { ActionManagerEx.getInstanceEx().fireBeforeActionPerformed("ToggleLineBreakpoint", e.getMouseEvent()); - XLineBreakpoint breakpoint = - XBreakpointUtil.toggleLineBreakpoint(myProject, file, editor, line, mouseEvent.isAltDown(), false); - if (!mouseEvent.isAltDown() && mouseEvent.isShiftDown() && breakpoint != null) { - breakpoint.setSuspendPolicy(SuspendPolicy.NONE); - String selection = editor.getSelectionModel().getSelectedText(); - if (selection != null) { - breakpoint.setLogExpression(selection); + AsyncResult result = XBreakpointUtil.toggleLineBreakpoint( + myProject, XSourcePositionImpl.create(file, line), editor, mouseEvent.isAltDown(), false); + result.doWhenDone(new Consumer() { + @Override + public void consume(XLineBreakpoint breakpoint) { + if (!mouseEvent.isAltDown() && mouseEvent.isShiftDown() && breakpoint != null) { + breakpoint.setSuspendPolicy(SuspendPolicy.NONE); + String selection = editor.getSelectionModel().getSelectedText(); + if (selection != null) { + breakpoint.setLogExpression(selection); + } + else { + breakpoint.setLogMessage(true); + } + // edit breakpoint + DebuggerUIUtil.showXBreakpointEditorBalloon(myProject, mouseEvent.getPoint(), ((EditorEx)editor).getGutterComponentEx(), false, breakpoint); + } } - else { - breakpoint.setLogMessage(true); - } - // edit breakpoint - DebuggerUIUtil.showXBreakpointEditorBalloon(myProject, mouseEvent.getPoint(), ((EditorEx)editor).getGutterComponentEx(), false, breakpoint); - } + }); } } }); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointVariant.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointVariant.java new file mode 100644 index 000000000000..18b4db2b6891 --- /dev/null +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointVariant.java @@ -0,0 +1,34 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.xdebugger.impl.breakpoints; + +import com.intellij.openapi.util.TextRange; +import com.intellij.xdebugger.breakpoints.XBreakpointProperties; + +import javax.swing.*; + +/** + * @author egor + */ +public abstract class XLineBreakpointVariant

{ + public abstract String getText(); + + public abstract Icon getIcon(); + + public abstract TextRange getHighlightRange(); + + public abstract P createProperties(); +} diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointVariantsProvider.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointVariantsProvider.java new file mode 100644 index 000000000000..9861ef0f8a29 --- /dev/null +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointVariantsProvider.java @@ -0,0 +1,30 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.xdebugger.impl.breakpoints; + +import com.intellij.openapi.project.Project; +import com.intellij.xdebugger.XSourcePosition; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +/** + * @author egor + */ +public interface XLineBreakpointVariantsProvider { + @NotNull + List computeLineBreakpointVariants(@NotNull Project project, @NotNull XSourcePosition position); +} From d880f496283ec484fae60cc1fb5cf1cdb8ad4656 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Thu, 11 Jun 2015 19:24:08 +0300 Subject: [PATCH 53/82] fixed NPE in run to cursor breakpoint --- .../debugger/ui/breakpoints/RunToCursorBreakpoint.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/RunToCursorBreakpoint.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/RunToCursorBreakpoint.java index 9fbc28c0ef49..e30d0f866fbe 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/RunToCursorBreakpoint.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/RunToCursorBreakpoint.java @@ -28,6 +28,7 @@ import com.sun.jdi.Location; import com.sun.jdi.ReferenceType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.java.debugger.breakpoints.properties.JavaBreakpointProperties; /** * @author Eugene Zhuravlev @@ -114,6 +115,11 @@ public class RunToCursorBreakpoint extends LineBreakpoint { return true; } + @Override + protected JavaBreakpointProperties getProperties() { + return null; + } + @Override protected boolean isMuted(@NotNull final DebugProcessImpl debugProcess) { return false; // always enabled From 25b18ddc84566f31d9daef6be3cdc4d89656f909 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Thu, 11 Jun 2015 19:46:16 +0300 Subject: [PATCH 54/82] SteppingTest refactoring --- .../com/intellij/debugger/engine/SuspendContextRunnable.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendContextRunnable.java b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendContextRunnable.java index 6df6a1463d71..671bd9813bb9 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendContextRunnable.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendContextRunnable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,6 @@ */ package com.intellij.debugger.engine; -import com.intellij.debugger.engine.SuspendContextImpl; - public interface SuspendContextRunnable { void run(SuspendContextImpl suspendContext) throws Exception; } From 2cf7de6d52dc63e2c8737846241b240ea6d68931 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Thu, 11 Jun 2015 20:36:04 +0300 Subject: [PATCH 55/82] do not hang tests on assertion --- .../intellij/debugger/ExecutionWithDebuggerToolsTestCase.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/testFramework/src/com/intellij/debugger/ExecutionWithDebuggerToolsTestCase.java b/java/testFramework/src/com/intellij/debugger/ExecutionWithDebuggerToolsTestCase.java index 615ed5c65193..e1ab9ff4e3cf 100644 --- a/java/testFramework/src/com/intellij/debugger/ExecutionWithDebuggerToolsTestCase.java +++ b/java/testFramework/src/com/intellij/debugger/ExecutionWithDebuggerToolsTestCase.java @@ -138,6 +138,7 @@ public abstract class ExecutionWithDebuggerToolsTestCase extends ExecutionTestCa } catch (AssertionError e) { addException(e); + paused(suspendContext); } if (myScriptRunnables.isEmpty()) { From 648fa60d991e457e24f0c8a33a3fbbd58722b7b2 Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Thu, 11 Jun 2015 23:11:08 +0300 Subject: [PATCH 56/82] Manager methods are now overwritable (see PY-16063) --- .../override/PyOverrideImplementUtil.java | 71 ++++++++++++++++--- 1 file changed, 60 insertions(+), 11 deletions(-) diff --git a/python/src/com/jetbrains/python/codeInsight/override/PyOverrideImplementUtil.java b/python/src/com/jetbrains/python/codeInsight/override/PyOverrideImplementUtil.java index 1ed88d45623c..dab89c006a74 100644 --- a/python/src/com/jetbrains/python/codeInsight/override/PyOverrideImplementUtil.java +++ b/python/src/com/jetbrains/python/codeInsight/override/PyOverrideImplementUtil.java @@ -17,6 +17,7 @@ package com.jetbrains.python.codeInsight.override; import com.google.common.collect.Lists; import com.intellij.codeInsight.CodeInsightUtilCore; +import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.featureStatistics.FeatureUsageTracker; import com.intellij.featureStatistics.ProductivityFeatureNames; import com.intellij.ide.util.MemberChooser; @@ -36,10 +37,13 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.PsiWhiteSpace; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.ui.SpeedSearchComparator; +import com.intellij.util.ArrayUtil; +import com.intellij.util.ProcessingContext; import com.jetbrains.python.PyNames; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyFunctionBuilder; import com.jetbrains.python.psi.impl.PyPsiUtils; +import com.jetbrains.python.psi.types.PyClassLikeType; import com.jetbrains.python.psi.types.PyNoneType; import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NotNull; @@ -73,7 +77,7 @@ public class PyOverrideImplementUtil { } final PyClass pyClass = PsiTreeUtil.getParentOfType(element, PyClass.class, false); if (pyClass == null && element instanceof PsiWhiteSpace && element.getPrevSibling() instanceof PyClass) { - return (PyClass) element.getPrevSibling(); + return (PyClass)element.getPrevSibling(); } return pyClass; } @@ -85,8 +89,8 @@ public class PyOverrideImplementUtil { private static void chooseAndOverrideOrImplementMethods(final Project project, - @NotNull final Editor editor, - @NotNull final PyClass pyClass) { + @NotNull final Editor editor, + @NotNull final PyClass pyClass) { LOG.assertTrue(pyClass.isValid()); ApplicationManager.getApplication().assertReadAccessAllowed(); @@ -155,16 +159,17 @@ public class PyOverrideImplementUtil { final PyStatementList statementList = pyClass.getStatementList(); final int offset = editor.getCaretModel().getOffset(); PsiElement anchor = null; - for (PyStatement statement: statementList.getStatements()) { + for (PyStatement statement : statementList.getStatements()) { if (statement.getTextRange().getStartOffset() < offset || - (statement instanceof PyExpressionStatement && ((PyExpressionStatement)statement).getExpression() instanceof PyStringLiteralExpression)) { + (statement instanceof PyExpressionStatement && + ((PyExpressionStatement)statement).getExpression() instanceof PyStringLiteralExpression)) { anchor = statement; } } PyFunction element = null; for (PyMethodMember newMember : newMembers) { - PyFunction baseFunction = (PyFunction) newMember.getPsiElement(); + PyFunction baseFunction = (PyFunction)newMember.getPsiElement(); final PyFunctionBuilder builder = buildOverriddenFunction(pyClass, baseFunction, implement); PyFunction function = builder.addFunctionAfter(statementList, anchor, LanguageLevel.forElement(statementList)); element = CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(function); @@ -210,7 +215,7 @@ public class PyOverrideImplementUtil { boolean hadStar = false; List parameters = new ArrayList(); - for (PyParameter parameter: baseParams) { + for (PyParameter parameter : baseParams) { final PyNamedParameter pyNamedParameter = parameter.getAsNamed(); if (pyNamedParameter != null) { String repr = pyNamedParameter.getRepr(false); @@ -244,7 +249,7 @@ public class PyOverrideImplementUtil { PsiElement outerClass = PsiTreeUtil.getParentOfType(pyClass, PyClass.class, true, PyFunction.class); String className = pyClass.getName(); final List nameResult = Lists.newArrayList(className); - while(outerClass != null) { + while (outerClass != null) { nameResult.add(0, ((PyClass)outerClass).getName()); outerClass = PsiTreeUtil.getParentOfType(outerClass, PyClass.class, true, PyFunction.class); } @@ -297,7 +302,7 @@ public class PyOverrideImplementUtil { final PyExpression[] superClassExpressions = fromClass.getSuperClassExpressions(); for (PyExpression expression : superClassExpressions) { if (expression instanceof PyReferenceExpression) { - PsiElement target = ((PyReferenceExpression) expression).getReference().resolve(); + PsiElement target = ((PyReferenceExpression)expression).getReference().resolve(); if (target == toClass) { return expression.getText(); } @@ -307,13 +312,57 @@ public class PyOverrideImplementUtil { } @NotNull - public static Collection getAllSuperFunctions(@NotNull PyClass pyClass) { + public static Collection getAllSuperFunctions(@NotNull final PyClass pyClass) { final Map superFunctions = new HashMap(); - for (PyFunction function : pyClass.getMethods(true)) { + for (final PyFunction function : ArrayUtil.mergeArrays(pyClass.getMethods(true), getCalculatedParentMethods(pyClass))) { if (!superFunctions.containsKey(function.getName())) { superFunctions.put(function.getName(), function); } } return superFunctions.values(); } + + + /** + * Since some classes inherit from {@link PyClassLikeType} they have no {@link PyClass} parent, hence have no + * {@link PyClass#getMethods(boolean)}. But they still do have some methods, and such methods should also be overwritable. + *

+ * This method fetches all methods, provided by parents regardless their type, and returns them. + * + * @param pyClass class to get parent methods from + * @return parent methods + */ + @NotNull + private static PyFunction[] getCalculatedParentMethods(@NotNull final PyClass pyClass) { + final TypeEvalContext context = TypeEvalContext.deepCodeInsight(pyClass.getProject()); + final PyClassLikeType type = PyUtil.as(context.getType(pyClass), PyClassLikeType.class); + if (type == null) { + return PyFunction.EMPTY_ARRAY; + } + + final List result = new ArrayList(); + /** + * Ideally there has to be

getMembers
method in {@link PyClassLikeType}, but there is no such method for now, + * and it can't be added easily due to huge refactoring {@link com.jetbrains.python.psi.types.PyClassTypeImpl} should have + * to fetch members from parents as well: + * See ({@link com.jetbrains.python.psi.types.PyClassTypeImpl#addInheritedMembers(String, PsiElement, Set, ProcessingContext, List, TypeEvalContext)} + * It is tied to completion, but contains required logic. + * + * For now, we use {@link PyClassLikeType#getCompletionVariants(String, PsiElement, ProcessingContext)} as temporary hack. + */ + // TODO: Use "getMembers" instead of "getCompletionVariants" hack. + for (final Object completion : type.getCompletionVariants("", null, new ProcessingContext())) { + // It could be PyFunction itself or lookup element with function + if (completion instanceof PyFunction) { + result.add((PyFunction)completion); + } + else if (completion instanceof LookupElement) { + final PyFunction element = PyUtil.as(((LookupElement)completion).getPsiElement(), PyFunction.class); + if (element != null) { + result.add(element); + } + } + } + return result.toArray(new PyFunction[result.size()]); + } } From 5f58b442a002480a85f5730a01593c3043345e2b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 22:08:23 +0300 Subject: [PATCH 57/82] single pixel splitter for inspections view --- .../com/intellij/codeInspection/ui/InspectionResultsView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java index f39878760a89..ce0511dcf3d3 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java @@ -130,7 +130,7 @@ public class InspectionResultsView extends JPanel implements Disposable, Occuren myBrowser = new Browser(this); - mySplitter = new Splitter(false, AnalysisUIOptions.getInstance(myProject).SPLITTER_PROPORTION); + mySplitter = new OnePixelSplitter(false, AnalysisUIOptions.getInstance(myProject).SPLITTER_PROPORTION); mySplitter.setFirstComponent(ScrollPaneFactory.createScrollPane(myTree, SideBorder.LEFT | SideBorder.RIGHT)); mySplitter.setSecondComponent(myBrowser); From ce07f3646dbf11c2b2bb8c2a9d9cc1b30404ac9b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 22:23:16 +0300 Subject: [PATCH 58/82] disable field encapsulation for enum constants (IDEA-141305) --- .../EncapsulateFieldsHandler.java | 17 +++++--- .../JavaEncapsulateFieldHelper.java | 12 +++++- .../filterEnumConstants/after/Test.java | 12 ++++++ .../filterEnumConstants/before/Test.java | 4 ++ .../refactoring/EncapsulateFieldsTest.java | 41 +++++++++++-------- 5 files changed, 62 insertions(+), 24 deletions(-) create mode 100644 java/java-tests/testData/refactoring/encapsulateFields/filterEnumConstants/after/Test.java create mode 100644 java/java-tests/testData/refactoring/encapsulateFields/filterEnumConstants/before/Test.java diff --git a/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsHandler.java b/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsHandler.java index b4b26c1ccc3f..e453744c4f86 100644 --- a/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsHandler.java @@ -22,17 +22,17 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiField; -import com.intellij.psi.PsiFile; +import com.intellij.openapi.util.Condition; +import com.intellij.psi.*; import com.intellij.refactoring.HelpID; import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.util.CommonRefactoringUtil; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import java.util.HashSet; +import java.util.List; public class EncapsulateFieldsHandler implements RefactoringActionHandler { private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.encapsulateFields.EncapsulateFieldsHandler"); @@ -108,8 +108,13 @@ public class EncapsulateFieldsHandler implements RefactoringActionHandler { } LOG.assertTrue(aClass != null); - final PsiField[] fields = aClass.getFields(); - if (fields.length == 0) { + final List fields = ContainerUtil.filter(aClass.getFields(), new Condition() { + @Override + public boolean value(PsiField field) { + return !(field instanceof PsiEnumConstant); + } + }); + if (fields.isEmpty()) { CommonRefactoringUtil.showErrorHint(project, CommonDataKeys.EDITOR.getData(dataContext), "Class has no fields to encapsulate", REFACTORING_NAME, HelpID.ENCAPSULATE_FIELDS); return; diff --git a/java/java-impl/src/com/intellij/refactoring/encapsulateFields/JavaEncapsulateFieldHelper.java b/java/java-impl/src/com/intellij/refactoring/encapsulateFields/JavaEncapsulateFieldHelper.java index 1430a4b98fb7..972824d18d62 100644 --- a/java/java-impl/src/com/intellij/refactoring/encapsulateFields/JavaEncapsulateFieldHelper.java +++ b/java/java-impl/src/com/intellij/refactoring/encapsulateFields/JavaEncapsulateFieldHelper.java @@ -17,6 +17,7 @@ package com.intellij.refactoring.encapsulateFields; import com.intellij.codeInsight.generation.GenerateMembersUtil; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; @@ -25,10 +26,13 @@ import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.util.RefactoringUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.VisibilityUtil; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + /** * @author Max Medvedev */ @@ -307,7 +311,13 @@ public class JavaEncapsulateFieldHelper extends EncapsulateFieldHelper { @NotNull @Override public PsiField[] getApplicableFields(@NotNull PsiClass aClass) { - return aClass.getFields(); + final List fields = ContainerUtil.filter(aClass.getFields(), new Condition() { + @Override + public boolean value(PsiField field) { + return !(field instanceof PsiEnumConstant); + } + }); + return fields.toArray(new PsiField[fields.size()]); } @Override diff --git a/java/java-tests/testData/refactoring/encapsulateFields/filterEnumConstants/after/Test.java b/java/java-tests/testData/refactoring/encapsulateFields/filterEnumConstants/after/Test.java new file mode 100644 index 000000000000..f6d508b6a552 --- /dev/null +++ b/java/java-tests/testData/refactoring/encapsulateFields/filterEnumConstants/after/Test.java @@ -0,0 +1,12 @@ +enum A { + B; + private int i; + + public int getI() { + return i; + } + + public void setI(int i) { + this.i = i; + } +} diff --git a/java/java-tests/testData/refactoring/encapsulateFields/filterEnumConstants/before/Test.java b/java/java-tests/testData/refactoring/encapsulateFields/filterEnumConstants/before/Test.java new file mode 100644 index 000000000000..0b36fa5f5bbd --- /dev/null +++ b/java/java-tests/testData/refactoring/encapsulateFields/filterEnumConstants/before/Test.java @@ -0,0 +1,4 @@ +enum A { + B; + private int i; +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java b/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java index 329ab69e9d1d..e8634380782b 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/EncapsulateFieldsTest.java @@ -25,16 +25,11 @@ import com.intellij.codeInsight.generation.GenerateMembersUtil; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiField; import com.intellij.psi.PsiModifier; import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.psi.util.PropertyUtil; -import com.intellij.refactoring.encapsulateFields.EncapsulateFieldsDescriptor; -import com.intellij.refactoring.encapsulateFields.EncapsulateFieldsProcessor; -import com.intellij.refactoring.encapsulateFields.FieldDescriptor; -import com.intellij.refactoring.encapsulateFields.FieldDescriptorImpl; +import com.intellij.refactoring.encapsulateFields.*; import com.intellij.refactoring.util.DocCommentPolicy; import junit.framework.Assert; import org.jetbrains.annotations.NotNull; @@ -82,7 +77,15 @@ public class EncapsulateFieldsTest extends MultiFileTestCase{ assertNotNull("Tested class not found", aClass); final PsiField field = aClass.findFieldByName("i", false); assertNotNull(field); - doTest(aClass, field, null, true, true); + doTest(aClass, null, true, true, field); + }); + } + + public void testFilterEnumConstants() throws Exception { + doTest((rootDir, rootAfter) -> { + final PsiClass aClass = myJavaFacade.findClass("A", GlobalSearchScope.projectScope(myProject)); + assertNotNull("Tested class not found", aClass); + doTest(aClass, null, true, true, new JavaEncapsulateFieldHelper().getApplicableFields(aClass)); }); } @@ -109,28 +112,32 @@ public class EncapsulateFieldsTest extends MultiFileTestCase{ assertNotNull("Tested class not found", aClass); - doTest(aClass, aClass.findFieldByName(fieldName, false), conflicts, true, true); + doTest(aClass, conflicts, true, true, aClass.findFieldByName(fieldName, false)); }); } private static void doTest(final PsiClass aClass, - final PsiField field, final String conflicts, final boolean generateGetters, - final boolean generateSetters) { + final boolean generateSetters, + final PsiField... fields) { try { final Project project = aClass.getProject(); EncapsulateFieldsProcessor processor = new EncapsulateFieldsProcessor(project, new EncapsulateFieldsDescriptor() { @Override public FieldDescriptor[] getSelectedFields() { - return new FieldDescriptor[]{new FieldDescriptorImpl( - field, - GenerateMembersUtil.suggestGetterName(field), - GenerateMembersUtil.suggestSetterName(field), - isToEncapsulateGet() ? GenerateMembersUtil.generateGetterPrototype(field) : null, - isToEncapsulateSet() ? GenerateMembersUtil.generateSetterPrototype(field) : null - )}; + final FieldDescriptor[] descriptors = new FieldDescriptor[fields.length]; + for (int i = 0; i < fields.length; i++) { + descriptors[i] = new FieldDescriptorImpl( + fields[i], + GenerateMembersUtil.suggestGetterName(fields[i]), + GenerateMembersUtil.suggestSetterName(fields[i]), + isToEncapsulateGet() ? GenerateMembersUtil.generateGetterPrototype(fields[i]) : null, + isToEncapsulateSet() ? GenerateMembersUtil.generateSetterPrototype(fields[i]) : null + ); + } + return descriptors; } @Override From 4c5bee489fe2640fb7fc20332d9a2eea5107e72e Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 22:28:59 +0300 Subject: [PATCH 59/82] extract interface: skip enum constants (IDEA-141301) --- .../refactoring/extractInterface/ExtractInterfaceDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceDialog.java b/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceDialog.java index b07cb31c92b0..162f88b294b7 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceDialog.java @@ -51,7 +51,7 @@ class ExtractInterfaceDialog extends JavaExtractSuperBaseDialog { return element.hasModifierProperty(PsiModifier.PUBLIC) && !element.hasModifierProperty(PsiModifier.STATIC); } - else if (element instanceof PsiField) { + else if (element instanceof PsiField && !(element instanceof PsiEnumConstant)) { return element.hasModifierProperty(PsiModifier.FINAL) && element.hasModifierProperty(PsiModifier.STATIC) && element.hasModifierProperty(PsiModifier.PUBLIC); From 16d3c2782ebfdafd13e9c4f0c34607256e20ae1b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 22:33:14 +0300 Subject: [PATCH 60/82] disable find duplicates on enum constants (IDEA-141298) --- .../refactoring/util/duplicates/MethodDuplicatesHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesHandler.java b/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesHandler.java index 78c4ed2ab216..11568aedf84f 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesHandler.java @@ -108,7 +108,7 @@ public class MethodDuplicatesHandler implements RefactoringActionHandler { } } else if (member instanceof PsiField) { final PsiField field = (PsiField)member; - if (!field.hasInitializer()) { + if (field.getInitializer() == null) { return "Field " + member.getName() + " doesn't have initializer"; } final PsiClass containingClass = field.getContainingClass(); From 1c373eee23781d78c339322af2d63d09f341f9a4 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 22:54:25 +0300 Subject: [PATCH 61/82] disable change class signature for enum (IDEA-141300) --- .../changeSignature/JavaChangeSignatureHandler.java | 2 +- .../refactoring/changeSignatureTarget/disabledForEnum.java | 3 +++ .../com/intellij/refactoring/ChangeSignatureTargetTest.java | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/changeSignatureTarget/disabledForEnum.java diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java index 89a123347364..687f7a2a3576 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java @@ -136,7 +136,7 @@ public class JavaChangeSignatureHandler implements ChangeSignatureHandler { return elementParent; } if (elementParent instanceof PsiClass && ((PsiClass)elementParent).getNameIdentifier()==element) { - if (((PsiClass)elementParent).isAnnotationType()) { + if (((PsiClass)elementParent).isAnnotationType() || ((PsiClass)elementParent).isEnum()) { return null; } return elementParent; diff --git a/java/java-tests/testData/refactoring/changeSignatureTarget/disabledForEnum.java b/java/java-tests/testData/refactoring/changeSignatureTarget/disabledForEnum.java new file mode 100644 index 000000000000..2245a8a54298 --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignatureTarget/disabledForEnum.java @@ -0,0 +1,3 @@ +enum E { + ; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTargetTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTargetTest.java index 9a860f98a786..5391cec1f45a 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTargetTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTargetTest.java @@ -51,6 +51,11 @@ public class ChangeSignatureTargetTest extends LightCodeInsightTestCase { doTest("A1"); } + public void testDisabledForEnum() throws Exception { + configureByFile("/refactoring/changeSignatureTarget/" + getTestName(true) + ".java"); + assertNull(new JavaChangeSignatureHandler().findTargetMember(getFile(), getEditor())); + } + private void doTest(String expectedMemberName) throws Exception { String basePath = "/refactoring/changeSignatureTarget/" + getTestName(true); @NonNls final String filePath = basePath + ".java"; From 38e2d2cd6c8aba6f895027e56a9da3105ac3438c Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 23:24:33 +0300 Subject: [PATCH 62/82] disable replace constructor with builder/factory for enums (IDEA-141299) --- .../ReplaceConstructorWithBuilderAction.java | 2 +- .../ReplaceConstructorWithFactoryAction.java | 23 ++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithBuilderAction.java b/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithBuilderAction.java index 0775c65258a8..b71b01bef480 100644 --- a/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithBuilderAction.java +++ b/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithBuilderAction.java @@ -39,7 +39,7 @@ public class ReplaceConstructorWithBuilderAction extends BaseRefactoringAction{ final int offset = editor.getCaretModel().getOffset(); final PsiElement elementAt = file.findElementAt(offset); final PsiClass psiClass = ReplaceConstructorWithBuilderHandler.getParentNamedClass(elementAt); - return psiClass != null && psiClass.getConstructors().length > 0; + return psiClass != null && psiClass.getConstructors().length > 0 && !psiClass.isEnum(); } protected boolean isEnabledOnElements(@NotNull final PsiElement[] elements) { diff --git a/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithFactoryAction.java b/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithFactoryAction.java index 1d32d0ee5183..a464fad6902a 100644 --- a/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithFactoryAction.java +++ b/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithFactoryAction.java @@ -17,8 +17,10 @@ package com.intellij.refactoring.actions; import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.editor.Editor; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; import com.intellij.psi.PsiMethod; import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.refactoring.replaceConstructorWithFactory.ReplaceConstructorWithFactoryHandler; @@ -32,10 +34,25 @@ public class ReplaceConstructorWithFactoryAction extends BaseRefactoringAction { return false; } + @Override protected boolean isEnabledOnElements(@NotNull PsiElement[] elements) { - return elements.length == 1 && - (elements[0] instanceof PsiMethod && ((PsiMethod)elements[0]).isConstructor() || elements[0] instanceof PsiClass) - && elements[0].getLanguage().isKindOf(JavaLanguage.INSTANCE); + return false; + } + + @Override + protected boolean isAvailableOnElementInEditorAndFile(@NotNull PsiElement element, + @NotNull Editor editor, + @NotNull PsiFile file, + @NotNull DataContext context) { + return (element instanceof PsiMethod && + ((PsiMethod)element).isConstructor() && + acceptClass(((PsiMethod)element).getContainingClass()) || + acceptClass(element)) + && element.getLanguage().isKindOf(JavaLanguage.INSTANCE); + } + + private static boolean acceptClass(PsiElement element) { + return element instanceof PsiClass && !((PsiClass)element).isEnum(); } protected RefactoringActionHandler getHandler(@NotNull DataContext dataContext) { From 67f2cdca5fdeaccd83deaece7625e797e89b60e8 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 11 Jun 2015 23:30:43 +0300 Subject: [PATCH 63/82] separate actions in tests secondary group --- .../execution/testframework/ToolbarPanel.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/platform/testRunner/src/com/intellij/execution/testframework/ToolbarPanel.java b/platform/testRunner/src/com/intellij/execution/testframework/ToolbarPanel.java index 7bd1aec865bb..56502b99c51d 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/ToolbarPanel.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/ToolbarPanel.java @@ -123,22 +123,26 @@ public class ToolbarPanel extends JPanel implements OccurenceNavigator, Disposab null, properties, TestConsoleProperties.TRACK_RUNNING_TEST)); secondaryGroup.add(new ToggleBooleanProperty("Hide Ignored", null, null, properties, TestConsoleProperties.HIDE_IGNORED_TEST)); - secondaryGroup.add(new ToggleBooleanProperty(ExecutionBundle.message("junit.runing.info.select.first.failed.action.name"), - null, null, properties, TestConsoleProperties.SELECT_FIRST_DEFECT)); - secondaryGroup.add(new ToggleBooleanProperty(ExecutionBundle.message("junit.runing.info.scroll.to.stacktrace.action.name"), - ExecutionBundle.message("junit.runing.info.scroll.to.stacktrace.action.description"), - null, properties, TestConsoleProperties.SCROLL_TO_STACK_TRACE)); - myScrollToSource = new ScrollToTestSourceAction(properties); - secondaryGroup.add(myScrollToSource); - secondaryGroup.add(new ToggleBooleanProperty(ExecutionBundle.message("junit.runing.info.open.source.at.exception.action.name"), - ExecutionBundle.message("junit.runing.info.open.source.at.exception.action.description"), - null, properties, TestConsoleProperties.OPEN_FAILURE_LINE)); if (Registry.is("tests.view.old.statistics.panel")) { secondaryGroup.add(new ShowStatisticsAction(properties)); } secondaryGroup.add(new ToggleBooleanProperty("Show Inline Statistics", "Toggle the visibility of the test duration in the tree", null, properties, TestConsoleProperties.SHOW_INLINE_STATISTICS)); + + secondaryGroup.addSeparator(); + secondaryGroup.add(new ToggleBooleanProperty(ExecutionBundle.message("junit.runing.info.scroll.to.stacktrace.action.name"), + ExecutionBundle.message("junit.runing.info.scroll.to.stacktrace.action.description"), + null, properties, TestConsoleProperties.SCROLL_TO_STACK_TRACE)); + secondaryGroup.add(new ToggleBooleanProperty(ExecutionBundle.message("junit.runing.info.open.source.at.exception.action.name"), + ExecutionBundle.message("junit.runing.info.open.source.at.exception.action.description"), + null, properties, TestConsoleProperties.OPEN_FAILURE_LINE)); + myScrollToSource = new ScrollToTestSourceAction(properties); + secondaryGroup.add(myScrollToSource); + secondaryGroup.add(new AdjustAutotestDelayActionGroup(parent)); + secondaryGroup.addSeparator(); + secondaryGroup.add(new ToggleBooleanProperty(ExecutionBundle.message("junit.runing.info.select.first.failed.action.name"), + null, null, properties, TestConsoleProperties.SELECT_FIRST_DEFECT)); properties.appendAdditionalActions(secondaryGroup, environment, parent); actionGroup.add(secondaryGroup); From 18182a6ba7cc9ae055acfde514c6951e386d06fe Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Fri, 12 Jun 2015 02:58:25 +0200 Subject: [PATCH 64/82] +loadIcon(path) method --- .../src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java index eaa05f15b711..1f729b7d1ae3 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java @@ -437,4 +437,8 @@ public class DarculaLaf extends BasicLookAndFeel { public boolean getSupportsWindowDecorations() { return true; } + + public static Icon loadIcon(String path) { + return IconLoader.findIcon(path, DarculaLaf.class, true); + } } From c5676426f7fd1b0a3592ee8915405c6c1b20ece5 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Fri, 12 Jun 2015 02:59:56 +0200 Subject: [PATCH 65/82] combobox arrow buttons for yosemite --- .../intellij/ide/ui/laf/icons/comboboxMac.png | Bin 0 -> 1825 bytes .../intellij/ide/ui/laf/icons/comboboxMac@2x.png | Bin 0 -> 2745 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxMac.png create mode 100644 platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxMac@2x.png diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxMac.png b/platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxMac.png new file mode 100644 index 0000000000000000000000000000000000000000..868e624dc27c2cb1149521af4f7ad328c73f9bac GIT binary patch literal 1825 zcmaJ?do)ye9G}USM_3$GBGXtx%)K*=X(ofrP~#YB2p!=H8L(l_w}K9t9c}W5+6a3e=vP`5KGr6(VSrkS0!#*|D{0(OEdGC2rShvcPDtQy z`Ti#{9-fTCfCR>oL`+5wF3v$03grnfSV|yRID)Jl?_y{?LLhiNg3<(n(XP>)#Zs9< zr8{&PMTx~ckqRfIDj6&i^64ZGL!p3pY_>lb$YioW&O9cQ8Nl}U3}6K?7jW70JlI@N z;4zLBBCgu-@gq`0y6so-lEzp0!zxnq7%A>0okh0fo!KE0E(llOBf?i|moByZJmmB2 zMq(LW-bCDPKI|#kvZ(ul-(`DknvJ2LzojPXyeB{PxFtfE;#L5K67DLqk}-td1;_oer>c*NV3M2;eB1fcyE3L51pI~B{R>~ z#npIJRmL(h-0m##wp~@*+0mzt0YBWB?aA2sfBCauBD5XF#f{=!>52U-jCcG+xoj5uT*ZK22Moz%BpmQeW=^e(R0edJ7#KJtr) z`m>?iBj@ z)mv46@nQG*DNgTurk#w;vQ6gORL-EM=dioqdV_&CZ10tYx=z}{*!+ZFXYuzdtL>9| z&U~tgkIqL(3a$oy>g*qcz{+94%Vn$FCkyKx?w3dV z{ux|ox+is@WWa5MJTj`qG_ND6_(4QemmftS3>+;bCc+KMdW@pUJ qF0pUTuc>e8>mINJ-+lW1@uY9{-J-L?Yy}7e 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 l-OGxXo8RpC-epk(399g@utV0}-m~ Date: Fri, 12 Jun 2015 03:00:33 +0200 Subject: [PATCH 66/82] yosemite combobox resources --- .../intellij/ide/ui/laf/icons/comboboxLeft.png | Bin 0 -> 1070 bytes .../ide/ui/laf/icons/comboboxLeft@2x.png | Bin 0 -> 1202 bytes .../ide/ui/laf/icons/comboboxTopBottom.png | Bin 0 -> 1044 bytes .../ide/ui/laf/icons/comboboxTopBottom@2x.png | Bin 0 -> 1047 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxLeft.png create mode 100644 platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxLeft@2x.png create mode 100644 platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxTopBottom.png create mode 100644 platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxTopBottom@2x.png diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxLeft.png b/platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..7398d6ba8257014a6dc0cf2766b61173d3bb89fc GIT binary patch literal 1070 zcmaJ=O-K|`93L!0Oi4PJAD3x7q~Xq&t~!&O?e46((uk}}ZIaM9^LBU8nK#Y6ZAUS} zphHN9NTtZg4pAXVhp3=1%r4O-q)Qz_=o2~!T{;-lo7LSqv<57=Z07xNSW7Kp+H$dfhMSS+I8H&ugppgKznN&jVC&SPN zq@Ql{sVvt@whJ`pZ)+FYn@Jwq4BNr*tdA8$e~ZZSq(hVR7?oj|K>-S9x>>`y}koiwz_a5&dBvQbu4-SjS-awu6Aqo#utQw32eKw%zQ*ENw7_*N;% zb+hdumg6G+P-}#ba6!S}(c%}_a7!L5K{aCl6Xmg50n4*Rv7R6d3rCiKt)B*3w+#(4 zSGcGb&qXTAw}sV;=E6maVi}wa<6B7$R zZay@Y2Y0^T*cM9HhupR4-5p=(nhy=PP$`kE3eC;LnwZsV{U4{7YU@K~KUZJW-0po| z@yq9|41V4})mx{|Ix~xNPUEhLLxbNgPJf?$wO*q#Z!<&3?`nZLlXsaOFctV zGjmIG9R(vGU*Et&-^f7Mz|zXp*vi020Sc6WwiTtMSp~VcLG1$aY?U%fN(!v>^~=l4 z^~#O)@{7{-4J|D#^$m>ljf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yc06!V;*iRM zRQ;gT;{4L0WMIUlDTAykuyQU+O)SYT3dzsUfrVl~Mt(_taYlZDg0nL?)D$#)6O%LZ zK!TcJUB13no_WP3iFwJXo-VdZKy&mmGgGWgO`Qzf3=Pc;%q|ZfO-urjZ9n|4V?|loeZ$*1to~w0-((H{644~kx-=!OXa(-4RWPrN`5Jo%^Q0n>aD zFmW@!`C7riz^LHq;uunK>&;Z}tQH3m*ZAxY-HVtt!!JgmhQ02DtMncOYO$u>F(``5|a`o;{MOlaX9~Z%_bfDS<5WT zW7$R8B<&umbtz4H{!{g|k+%TL1ry$qSoXfh)A~3>T@wYJ4w#%h?!0SV_RVd!Klj{&Z+-vHmW&nqF4t8qK7DAOD>U4ouJFKWomhLjv`G%rcMbet2!}|HCy^! z(B9vg()+u0(V!ZSkqy3t2`qp#(zkkSPx56d&nw|`aLrI;-UW5b)JjrmwT+BH7mxy7 z7t&d-mW+rrC)7p6$WfBVHpA94JR4#~NeD|UPZmB3M{|vglvJ7vv9KjmS%e&kVRE?~ zoeR^@?P54l6d9Ihcs_(ZLSCPZG(Ti}RYe8`c)Dvk$b>c-FlwE!7s(XPbfpB#S*5kT zLYr{I7+-T3j%I_BijJ!Ke^<*|_4ZH_tmV5dv6t#|0FwkB>~(cKxJ*?L%8_C&&=7P} z5cU+i*p`I|dRgd@u~@!qWR0rnrX5@!&ZAUSO4uIKY#k&NnZi7@X&O>otZ$ABEYC)o zSdNPeO|@}8&P7F`J}iiAEL_AYQ17*Xjfz-f4IADN8wkR3aAXCz<~d+AyU-%@g-hl- zxo{$1t3-KWL%ssmSSObPwr)c#gOg!`@%}UJ;uY3Va9kBHHdf^iY^-?~i`)A3dKf>9 zp@b4m`R~8I<;n)xZCe(mN;X$Aua5ZPuKS<9OO?`0>GqM#&z+zDT-D^0bGIs~BeVKUqV(3uycy{vL$GPKAZ$61lzws9@EcU?3k?QfU yqYtNNmu^*^H?AHemiNz0jXij*RZNV|FYW3eel(KTuZ#}E;GHJot;)Toj-kJq-d9Ed literal 0 HcmV?d00001 diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxTopBottom@2x.png b/platform/platform-impl/src/com/intellij/ide/ui/laf/icons/comboboxTopBottom@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b2478426c5d428729052a7cf134318967edcfeae GIT binary patch literal 1047 zcmaJ=O=#0l91ngo?bL%q1;;Z(nXu-o&DzA(t!*+_G;?%?6%S&TytScAUQFI>Rz%dH z;6?D}L1ZB8Fhm%58%(_jUSuZ^qIerl#0efeh~P`tb~{+ZKkwtu|M&ZUzWZaN=OZ1* zJ1B~ZkYsh8O!2QlbwCN>AU_FRBeovD@fxh8cF1C;ZLPmWO&EOPGBHc{Ec3ZTL-zXC) z7#rv=%QIYmAEo&d=;a0r=B=!rlE@bo2M>C#58aLGwx^m^L2X&0R0z%Wx zDvp&AMt&K&Ae*gM4fJZdVL74lOdX|Za?bIw?ietqq-es!Se7ZPQgT=oxipu^a6GSy znYb#bd|DEdF;U{Ou_jhQ#*7Ue+{Bt&*i2h&I1si=JS)(%u0wO!LpG=acv!G~`j`N%8o zfckpj#`2K~*NpGIu<$VRrTg>Tk4x_!E&W=-H=izc$KtoHRHXIJ)hFM(Kb@wct2 Date: Fri, 12 Jun 2015 03:01:25 +0200 Subject: [PATCH 67/82] refactor: use unified loadIcon method --- .../laf/intellij/MacIntelliJCheckBoxUI.java | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/MacIntelliJCheckBoxUI.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/MacIntelliJCheckBoxUI.java index db7cbcd21d36..077a788f0e79 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/MacIntelliJCheckBoxUI.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/MacIntelliJCheckBoxUI.java @@ -15,7 +15,7 @@ */ package com.intellij.ide.ui.laf.intellij; -import com.intellij.openapi.util.IconLoader; +import com.intellij.ide.ui.laf.darcula.DarculaLaf; import com.intellij.util.ui.EmptyIcon; import javax.swing.*; @@ -27,6 +27,8 @@ import java.awt.*; */ public class MacIntelliJCheckBoxUI extends IntelliJCheckBoxUI { public static final Icon DEFAULT_ICON = EmptyIcon.create(14); + public static final Icon CHECKED_ICON = DarculaLaf.loadIcon("/com/intellij/ide/ui/laf/icons/checkboxSelectedMac.png"); + public static final Icon UNCHECKED_ICON = DarculaLaf.loadIcon("/com/intellij/ide/ui/laf/icons/checkboxMac.png"); @SuppressWarnings({"MethodOverridesStaticMethodOfSuperclass", "UnusedDeclaration"}) public static ComponentUI createUI(JComponent c) { @@ -35,23 +37,15 @@ public class MacIntelliJCheckBoxUI extends IntelliJCheckBoxUI { @Override protected void drawCheckIcon(JComponent c, Graphics2D g, JCheckBox b, Rectangle iconRect, boolean selected, boolean enabled) { - Icon icon; - if (selected) { - icon = IconLoader.findIcon("/com/intellij/ide/ui/laf/icons/checkboxSelectedMac.png", MacIntelliJCheckBoxUI.class, true); - } else { - icon = IconLoader.findIcon("/com/intellij/ide/ui/laf/icons/checkboxMac.png", MacIntelliJCheckBoxUI.class, true); - } - if (icon != null) { - icon.paintIcon(c, g, iconRect.x, iconRect.y); - } + getIcon(selected).paintIcon(c, g, iconRect.x, iconRect.y); + } + + private Icon getIcon(boolean selected) { + return selected ? CHECKED_ICON : UNCHECKED_ICON; } @Override public Icon getDefaultIcon() { return DEFAULT_ICON; } - - private static boolean isGraphite() { - return false; - } } From 993340662c1602b2ccce6d2f62ec200af878f8ae Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Fri, 12 Jun 2015 03:02:26 +0200 Subject: [PATCH 68/82] new Yosemite ComboBox --- .../laf/intellij/MacIntelliJComboBoxUI.java | 284 ++++++++++++++++++ 1 file changed, 284 insertions(+) create mode 100644 platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/MacIntelliJComboBoxUI.java diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/MacIntelliJComboBoxUI.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/MacIntelliJComboBoxUI.java new file mode 100644 index 000000000000..4a48ffdcfe82 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/intellij/MacIntelliJComboBoxUI.java @@ -0,0 +1,284 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.ui.laf.intellij; + +import com.intellij.ide.ui.laf.darcula.DarculaLaf; +import com.intellij.openapi.util.IconLoader; +import com.intellij.util.ui.JBUI; + +import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.plaf.ComponentUI; +import javax.swing.plaf.UIResource; +import javax.swing.plaf.basic.BasicArrowButton; +import javax.swing.plaf.basic.BasicComboBoxEditor; +import javax.swing.plaf.basic.BasicComboBoxUI; +import java.awt.*; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; + +/** + * @author Konstantin Bulenkov + */ +public class MacIntelliJComboBoxUI extends BasicComboBoxUI implements Border, UIResource { + private static final Icon COMBOBOX = DarculaLaf.loadIcon("/com/intellij/ide/ui/laf/icons/comboboxMac.png"); + private static final Icon COMBOBOX_LEFT = DarculaLaf.loadIcon("/com/intellij/ide/ui/laf/icons/comboboxLeft.png"); + private static final Icon COMBOBOX_TOP_BOTTOM = DarculaLaf.loadIcon("/com/intellij/ide/ui/laf/icons/comboboxTopBottom.png"); + private final JComboBox myComboBox; + + public MacIntelliJComboBoxUI(JComboBox comboBox) { + myComboBox = comboBox; + myComboBox.setBorder(this); + currentValuePane = new CellRendererPane() { + @Override + public void paintComponent(Graphics g, Component c, Container p, int x, int y, int w, int h, boolean shouldValidate) { + c.setBackground(Color.WHITE); + super.paintComponent(g, c, p, x, y, w, h, shouldValidate); + } + }; + } + + @SuppressWarnings({"MethodOverridesStaticMethodOfSuperclass", "UnusedDeclaration"}) + public static ComponentUI createUI(JComponent c) { + return new MacIntelliJComboBoxUI((JComboBox)c); + } + + @Override + protected JButton createArrowButton() { + final Color bg = myComboBox.getBackground(); + final Color fg = myComboBox.getForeground(); + JButton button = new BasicArrowButton(SwingConstants.SOUTH, bg, fg, fg, fg) { + + @Override + public void paint(Graphics g2) { + Icon icon = myComboBox.isEnabled() ? COMBOBOX : IconLoader.getDisabledIcon(COMBOBOX); + icon.paintIcon(this, g2, 0, 0); + } + + @Override + public Dimension getPreferredSize() { + return JBUI.size(COMBOBOX.getIconWidth(), COMBOBOX.getIconWidth()); + } + }; + button.setBorder(BorderFactory.createEmptyBorder()); + button.setOpaque(false); + return button; + } + + @Override + public Dimension getMinimumSize(JComponent c) { + return getSizeWithIcon(super.getMinimumSize(c)); + } + + private Dimension getSizeWithIcon(Dimension d) { + Insets insets = getBorderInsets(myComboBox); + return new Dimension(Math.max(d.width + insets.left + insets.right, COMBOBOX.getIconWidth()), Math.max(d.height, + COMBOBOX.getIconHeight())); + } + + @Override + public Dimension getPreferredSize(JComponent c) { + return getSizeWithIcon(super.getPreferredSize(c)); + } + + @Override + public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { + + } + + @Override + protected ComboBoxEditor createEditor() { + final ComboBoxEditor comboBoxEditor = new BasicComboBoxEditor.UIResource() { + @Override + protected JTextField createEditorComponent() { + return new JTextField() { + { + setOpaque(false); + setBorder(new Border() { + @Override + public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { + } + + @Override + public Insets getBorderInsets(Component c) { + return JBUI.insets(2, 6, 2, 6); + } + + @Override + public boolean isBorderOpaque() { + return false; + } + }); + } + + public void setText(String s) { + if (getText().equals(s)) { + return; + } + super.setText(s); + } + + public void setBorder(Border b) { + super.setBorder(b); + } + + @Override + public Dimension getPreferredSize() { + Dimension size = super.getPreferredSize(); + return new Dimension(size.width, COMBOBOX.getIconHeight() - 2); + } + }; + } + }; + if (comboBoxEditor.getEditorComponent() != null) { + comboBoxEditor.getEditorComponent().addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + process(e); + } + + @Override + public void keyReleased(KeyEvent e) { + process(e); + } + + private void process(KeyEvent e) { + final int code = e.getKeyCode(); + if ((code == KeyEvent.VK_UP || code == KeyEvent.VK_DOWN) && e.getModifiers() == 0) { + comboBox.dispatchEvent(e); + } + } + }); + comboBoxEditor.getEditorComponent().addFocusListener(new FocusAdapter() { + @Override + public void focusGained(FocusEvent e) { + update(); + } + + @Override + public void focusLost(FocusEvent e) { + update(); + } + + void update() { + if (comboBox != null) { + comboBox.revalidate(); + comboBox.repaint(); + } + } + }); + } + return comboBoxEditor; + } + + @Override + protected Rectangle rectangleForCurrentValue() { + Rectangle rect = super.rectangleForCurrentValue(); + rect.y+=2; + rect.x+=5; + rect.height-=4; + return rect; + } + + @Override + public Insets getBorderInsets(Component c) { + return JBUI.insets(0, 5, 0, 0); + } + + @Override + protected LayoutManager createLayoutManager() { + return new LayoutManager() { + @Override + public void addLayoutComponent(String name, Component comp) { + + } + + @Override + public void removeLayoutComponent(Component comp) { + + } + + @Override + public Dimension preferredLayoutSize(Container parent) { + return null; + } + + @Override + public Dimension minimumLayoutSize(Container parent) { + return null; + } + + @Override + public void layoutContainer(Container parent) { + JComboBox cb = (JComboBox)parent; + int width = cb.getWidth(); + int height = cb.getHeight(); + + Insets insets = getInsets(); + int buttonHeight = height - (insets.top + insets.bottom); + int buttonWidth = buttonHeight; + if (arrowButton != null) { + Insets arrowInsets = arrowButton.getInsets(); + buttonWidth = arrowButton.getPreferredSize().width + arrowInsets.left + arrowInsets.right; + } + Rectangle cvb; + + if (arrowButton != null) { + arrowButton.setBounds(width - (insets.right + buttonWidth), + insets.top, buttonWidth, buttonHeight); + } + if ( editor != null ) { + cvb = rectangleForCurrentValue(); + editor.setBounds(cvb); + } + + } + }; + } + + @Override + public void paintCurrentValueBackground(Graphics g, Rectangle bounds, boolean hasFocus) { + g.setColor(Color.WHITE); + g.fillRect(bounds.x, bounds.y, bounds.width, bounds.height); + } + + + @Override + public void paint(Graphics g, JComponent c) { + super.paint(g, c); + + int stop = arrowButton.getBounds().x; + g.setClip(0,0, stop, COMBOBOX.getIconHeight()); + COMBOBOX_LEFT.paintIcon(c,g,0,0); + int x = COMBOBOX_LEFT.getIconWidth(); + while (x < stop) { + COMBOBOX_TOP_BOTTOM.paintIcon(c, g, x, 0); + x+=COMBOBOX_TOP_BOTTOM.getIconWidth(); + } + ((Graphics2D)g).scale(0.5d, 0.5d); + g.setColor(Color.WHITE); + g.drawLine(COMBOBOX_LEFT.getIconWidth() * 2, 3, stop * 2, 3); + g.drawLine(COMBOBOX_LEFT.getIconWidth() * 2, 40, stop * 2, 40); + ((Graphics2D)g).scale(2d, 2d); + } + + @Override + public boolean isBorderOpaque() { + return false; + } +} From a4929ccc9243fc3fbeb34312ff6a083aa410c52d Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Fri, 12 Jun 2015 03:03:12 +0200 Subject: [PATCH 69/82] register comboboxui for IntelliJ laf on mac --- .../src/com/intellij/ide/ui/laf/intellijlaf_mac.properties | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/intellijlaf_mac.properties b/platform/platform-impl/src/com/intellij/ide/ui/laf/intellijlaf_mac.properties index 63c3c43f8653..a193b504a3f4 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/intellijlaf_mac.properties +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/intellijlaf_mac.properties @@ -8,5 +8,7 @@ PopupMenu.translucentBackground=ececec Spinner.background=ececec Spinner.darcula.disabledButtonColor=ececec +ComboBoxUI=com.intellij.ide.ui.laf.intellij.MacIntelliJComboBoxUI + SplitPane.highlight=ececec From 6e77f33f9d0e033c7626848b28ee699fa36c6953 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Fri, 12 Jun 2015 03:32:21 +0200 Subject: [PATCH 70/82] + isGraphite() --- .../src/com/intellij/ide/ui/laf/IntelliJLaf.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/IntelliJLaf.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/IntelliJLaf.java index 07f6726ce928..363e46d03ffa 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/IntelliJLaf.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/IntelliJLaf.java @@ -56,5 +56,11 @@ public class IntelliJLaf extends DarculaLaf { defaults.put("Label.font", font); defaults.put("CheckBox.font", font); defaults.put("RadioButton.font", font); + defaults.put("ComboBox.font", font); + } + + public static boolean isGraphite() { + Color c = UIManager.getColor("controlHighlight"); + return c != null && c.getBlue() < 150; } } From 26946ae9acc76b9f776c7b776609ed6c65fa490a Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Fri, 12 Jun 2015 07:15:01 +0300 Subject: [PATCH 71/82] add Duplicate shortcut-set --- .../com/intellij/openapi/actionSystem/CommonShortcuts.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/CommonShortcuts.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/CommonShortcuts.java index 5a3063d631fb..6bebdd091055 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/CommonShortcuts.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/CommonShortcuts.java @@ -96,11 +96,14 @@ public class CommonShortcuts { return shortcutsById(IdeActions.ACTION_NEW_ELEMENT); } + public static ShortcutSet getDuplicate() { + return shortcutsById(IdeActions.ACTION_EDITOR_DUPLICATE); + } + public static ShortcutSet getMove() { return shortcutsById(IdeActions.ACTION_MOVE); } - public static ShortcutSet getRename() { return shortcutsById(IdeActions.ACTION_RENAME); } From 5ad3c32c70d86e61675eb53a8f696e714c7928aa Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Fri, 12 Jun 2015 09:46:29 +0300 Subject: [PATCH 72/82] Fix missing dark line at the bottom --- .../src/com/intellij/util/ui/MacUIUtil.java | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/platform/util/src/com/intellij/util/ui/MacUIUtil.java b/platform/util/src/com/intellij/util/ui/MacUIUtil.java index af3b55023539..b5899bc95c46 100644 --- a/platform/util/src/com/intellij/util/ui/MacUIUtil.java +++ b/platform/util/src/com/intellij/util/ui/MacUIUtil.java @@ -136,27 +136,16 @@ public class MacUIUtil { g.setColor(c.getBackground()); g.fillRect(x1, y1, width1, height1); - + if (!myEnabledComponent.isEnabled()) { ((Graphics2D)g).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f)); } g.setColor(new Color(100, 100, 100, 200)); - g.drawLine(x1, y1, x1 + width1 - 1, y1); - - g.setColor(new Color(212, 212, 212, 200)); - g.drawLine(x1, y1 + 1, x1 + width1 - 1, y1 + 1); + g.drawRect(x1, y1, width1 - 1, height1 - 1); g.setColor(Gray._225); - g.drawLine(x1 + 1, y1 + height1 - 1, x1 + width1 - 2, y1 + height1 - 1); - - g.setColor(new Color(30, 30, 30, 70)); - g.drawLine(x1, y1, x1, y1 + height1 - 1); - g.drawLine(x1 + width1 - 1, y1, x1 + width1 - 1, y1 + height1 - 1); - - g.setColor(new Color(30, 30, 30, 10)); - g.drawLine(x1 + 1, y1, x1 + 1, y1 + height1 - 1); - g.drawLine(x1 + width1 - 2, y1, x1 + width1 - 2, y1 + height1 - 1); + g.drawRect(x1 + 1, y1 + 1, width1 - 3, height1 - 3); if (myEnabledComponent.isEnabled() && myEnabledComponent.isVisible() && hasFocus(myEnabledComponent)) { paintTextFieldFocusRing((Graphics2D) g, new Rectangle(x1, y1, width1, height1)); From 7384bace1d32cda3a2029ae61c0f9963f296c06e Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 12 Jun 2015 10:28:17 +0200 Subject: [PATCH 73/82] commented paths to license files (the files were removed because of IDEA-141315) --- build/conf/nsis/paths.nsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/conf/nsis/paths.nsi b/build/conf/nsis/paths.nsi index 0e9299aaffba..c9e28527f1ea 100644 --- a/build/conf/nsis/paths.nsi +++ b/build/conf/nsis/paths.nsi @@ -1,6 +1,6 @@ ; Installer images !define IMAGES_LOCATION "${BASE_DIR}\build\images\idea" -!define LICENSE_FILE "${BASE_DIR}\license\IDEA_license" +;!define LICENSE_FILE "${BASE_DIR}\license\IDEA_license" !define PRODUCT_PROPERTIES_FILE "${BASE_DIR}\out\release\dist.all\bin\idea.properties" !define PRODUCT_VM_OPTIONS_NAME idea*.exe.vmoptions !define PRODUCT_VM_OPTIONS_FILE "${BASE_DIR}\out\release\dist.win\bin\${PRODUCT_VM_OPTIONS_NAME}" \ No newline at end of file From 7d2bbf0473994ae22e856e6f04711fe8eac5c7c1 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 12 Jun 2015 11:57:44 +0300 Subject: [PATCH 74/82] fixed test for windows --- .../com/intellij/execution/process/ProcessWaitForTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/util/testSrc/com/intellij/execution/process/ProcessWaitForTest.java b/platform/util/testSrc/com/intellij/execution/process/ProcessWaitForTest.java index 4042b0b450b4..d596bce075e9 100644 --- a/platform/util/testSrc/com/intellij/execution/process/ProcessWaitForTest.java +++ b/platform/util/testSrc/com/intellij/execution/process/ProcessWaitForTest.java @@ -15,6 +15,7 @@ */ package com.intellij.execution.process; +import com.intellij.openapi.util.SystemInfo; import com.intellij.util.Consumer; import com.intellij.util.concurrency.Semaphore; import org.junit.Test; @@ -27,7 +28,7 @@ import static org.junit.Assert.assertTrue; public class ProcessWaitForTest { @Test(timeout = 10000) public void notification() throws IOException, InterruptedException { - File jvm = new File(System.getProperty("java.home"), "bin/java"); + File jvm = new File(System.getProperty("java.home") + (SystemInfo.isWindows ? "\\bin\\java.exe" : "/bin/java")); assertTrue(jvm.canExecute()); final Semaphore semaphore = new Semaphore(); From 85b5e31274a264f5b17a71914628f0f37d29cb35 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 12 Jun 2015 11:06:26 +0200 Subject: [PATCH 75/82] force 'license' dir presence, event if empty --- build/scripts/dist.gant | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/scripts/dist.gant b/build/scripts/dist.gant index 652a97d759bf..510b77437f98 100644 --- a/build/scripts/dist.gant +++ b/build/scripts/dist.gant @@ -144,6 +144,9 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps = include(name: "*.*") } } + + ant.mkdir(dir: "license") // in case the license directory is absent, create it + dir("license") { fileset(dir: "${home}/license") } From a632f157f34a691ee6c39694324d9a1306809926 Mon Sep 17 00:00:00 2001 From: Vyacheslav Karpukhin Date: Fri, 12 Jun 2015 11:26:48 +0200 Subject: [PATCH 76/82] Fixed XDebuggerUtilImpl --- .../xdebugger/impl/XDebuggerUtilImpl.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java index cb93462706f6..bc5288599510 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerUtilImpl.java @@ -33,7 +33,6 @@ import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.ui.popup.PopupStep; import com.intellij.openapi.ui.popup.util.BaseListPopupStep; import com.intellij.openapi.util.AsyncResult; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; @@ -130,9 +129,9 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { @NotNull final XSourcePosition position, final boolean temporary, final RelativePoint relativePoint) { - return ApplicationManager.getApplication().runWriteAction(new Computable>() { + return new WriteAction>() { @Override - public AsyncResult compute() { + protected void run(@NotNull Result> result) throws Throwable { final VirtualFile file = position.getFile(); final int line = position.getLine(); final XBreakpointManager breakpointManager = XDebuggerManager.getInstance(project).getBreakpointManager(); @@ -173,21 +172,25 @@ public class XDebuggerUtilImpl extends XDebuggerUtil { return FINAL_CHOICE; } }).show(relativePoint); - return res; + result.setResult(res); + return; } else { P properties = (P)variants.get(0).createProperties(); - return AsyncResult.done( - (XLineBreakpoint)breakpointManager.addLineBreakpoint(type, file.getUrl(), line, properties, temporary)); + result.setResult(AsyncResult.done( + (XLineBreakpoint)breakpointManager.addLineBreakpoint(type, file.getUrl(), line, properties, temporary))); + return; } } } P properties = type.createBreakpointProperties(file, line); - return AsyncResult.done((XLineBreakpoint)breakpointManager.addLineBreakpoint(type, file.getUrl(), line, properties, temporary)); + result.setResult(AsyncResult + .done((XLineBreakpoint)breakpointManager.addLineBreakpoint(type, file.getUrl(), line, properties, temporary))); + return; } - return AsyncResult.rejected(); + result.setResult(AsyncResult.rejected()); } - }); + }.execute().getResultObject(); } @Override From 939f5411d7710f9da86d6df330449f5b241fd8d5 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 12 Jun 2015 11:38:49 +0200 Subject: [PATCH 77/82] force 'license' dir presence, event if empty, attempt 2 --- build/scripts/dist.gant | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build/scripts/dist.gant b/build/scripts/dist.gant index 510b77437f98..60495187cc73 100644 --- a/build/scripts/dist.gant +++ b/build/scripts/dist.gant @@ -138,15 +138,14 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps = notifyArtifactBuilt(paths.artifacts_jps) } + ant.mkdir(dir: "license") // in case the license directory is absent, create it + layout(paths.distAll) { dir("bin") { fileset(dir: "${home}/bin") { include(name: "*.*") } } - - ant.mkdir(dir: "license") // in case the license directory is absent, create it - dir("license") { fileset(dir: "${home}/license") } From bf5109fa38a4c4505045cfa3ce405e8a7dcf8f6e Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 12 Jun 2015 11:45:05 +0200 Subject: [PATCH 78/82] force 'license' dir presence, event if empty, attempt 2 --- build/scripts/dist.gant | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/scripts/dist.gant b/build/scripts/dist.gant index 60495187cc73..7a7a3ee27b56 100644 --- a/build/scripts/dist.gant +++ b/build/scripts/dist.gant @@ -138,7 +138,7 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps = notifyArtifactBuilt(paths.artifacts_jps) } - ant.mkdir(dir: "license") // in case the license directory is absent, create it + ant.mkdir(dir: paths.distAll + "/license") // in case the license directory is absent, create it layout(paths.distAll) { dir("bin") { From c1c90324ecfbaf6f3a794e0e73ece0c7b5e590bd Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 12 Jun 2015 12:12:25 +0200 Subject: [PATCH 79/82] force source 'license' dir presence, event if empty --- build/scripts/dist.gant | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build/scripts/dist.gant b/build/scripts/dist.gant index 7a7a3ee27b56..e07bfa65bf18 100644 --- a/build/scripts/dist.gant +++ b/build/scripts/dist.gant @@ -138,7 +138,7 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps = notifyArtifactBuilt(paths.artifacts_jps) } - ant.mkdir(dir: paths.distAll + "/license") // in case the license directory is absent, create it +// ant.mkdir(dir: paths.distAll + "/license") // in case the license directory is absent, create it layout(paths.distAll) { dir("bin") { @@ -146,6 +146,9 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps = include(name: "*.*") } } + + ant.mkdir(dir: "${home}/license") // in case the source license directory is absent, create it + dir("license") { fileset(dir: "${home}/license") } From e91635109c4972734f40031bd6475826e00efe4c Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 12 Jun 2015 12:12:51 +0200 Subject: [PATCH 80/82] remove comment --- build/scripts/dist.gant | 2 -- 1 file changed, 2 deletions(-) diff --git a/build/scripts/dist.gant b/build/scripts/dist.gant index e07bfa65bf18..52b48afa2cec 100644 --- a/build/scripts/dist.gant +++ b/build/scripts/dist.gant @@ -138,8 +138,6 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps = notifyArtifactBuilt(paths.artifacts_jps) } -// ant.mkdir(dir: paths.distAll + "/license") // in case the license directory is absent, create it - layout(paths.distAll) { dir("bin") { fileset(dir: "${home}/bin") { From f51820a27e13654faf844f78aa84f281ca7f37a1 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 12 Jun 2015 12:45:14 +0200 Subject: [PATCH 81/82] force 'license' dir presence, event if empty in both source and destination locations --- build/scripts/dist.gant | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/build/scripts/dist.gant b/build/scripts/dist.gant index 52b48afa2cec..3be716082a8c 100644 --- a/build/scripts/dist.gant +++ b/build/scripts/dist.gant @@ -138,6 +138,12 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps = notifyArtifactBuilt(paths.artifacts_jps) } + // in case the license directory is absent, create it + mkdir(dir: "${home}/license") + [paths.distWin, paths.distAll, paths.distUnix, paths.distMac].each { + ant.mkdir(dir: it + "/license") + } + layout(paths.distAll) { dir("bin") { fileset(dir: "${home}/bin") { @@ -145,8 +151,6 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps = } } - ant.mkdir(dir: "${home}/license") // in case the source license directory is absent, create it - dir("license") { fileset(dir: "${home}/license") } From dca4a75642a00c718f8904316e77c32a5d8bc747 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 12 Jun 2015 15:16:29 +0200 Subject: [PATCH 82/82] restoring 'license' dir for dbide and webstorm --- build/scripts/dist.gant | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/build/scripts/dist.gant b/build/scripts/dist.gant index 3be716082a8c..607a28263ff1 100644 --- a/build/scripts/dist.gant +++ b/build/scripts/dist.gant @@ -138,12 +138,6 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps = notifyArtifactBuilt(paths.artifacts_jps) } - // in case the license directory is absent, create it - mkdir(dir: "${home}/license") - [paths.distWin, paths.distAll, paths.distUnix, paths.distMac].each { - ant.mkdir(dir: it + "/license") - } - layout(paths.distAll) { dir("bin") { fileset(dir: "${home}/bin") { @@ -152,7 +146,9 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps = } dir("license") { - fileset(dir: "${home}/license") + fileset(dir: "${home}/license") { + exclude(name: "placeholder.txt") + } } fileset(file: "${home}/LICENSE.txt") fileset(file: "${home}/NOTICE.txt")