From 80e90680a145e8f893c2b28711a6d30209c9977a Mon Sep 17 00:00:00 2001 From: Gene Ragan Date: Mon, 4 Jan 2021 16:15:05 -0700 Subject: [PATCH 001/604] Add insert fragment method to CodeMirrorFragment --- HopscotchForHTML5.ns | 14 +- out/APIManager.ns | 16 + out/AccessModifierTestApp.ns | 19 + out/AccessModifierTesting.ns | 899 + out/AccessModifierTestingConfiguration.ns | 12 + out/ActivationMirrorTesting.ns | 1478 + out/ActivationMirrorTestingConfiguration.ns | 10 + out/ActivationMirrors.ns | 913 + out/Actors.ns | 831 + out/ActorsForPrimordialSoup.ns | 901 + out/ActorsForV8.ns | 779 + out/ActorsTesting.ns | 841 + ...rsTestingConfigurationForPrimordialSoup.ns | 15 + out/ActorsTestingConfigurationForSqueak.ns | 16 + out/AliensForSqueak.ns | 19 + out/AliensForV8.ns | 158 + out/AllSqueakTestsConfiguration.ns | 31 + out/Ampleforth.ns | 28 + out/Ampleforth.vfuel | Bin 0 -> 2444413 bytes out/AmpleforthEmbedder.ns | 144 + out/AtomicInstallTestConfiguration.ns | 30 + out/AtomicInstallTesting.ns | 884 + out/AtomicInstaller.ns | 318 + out/BenchmarkRunner.ns | 61 + out/BenchmarkRunner.vfuel | Bin 0 -> 127309 bytes out/BootstrapRuntimeForSqueak.ns | 69 + out/Brazil.ns | 7582 ++++ out/BrazilMappingForWin32.ns | 4387 +++ out/Browsing.ns | 3372 ++ out/CAPI.ns | 384 + out/CAliensTesting.ns | 238 + out/CAliensTestingConfiguration.ns | 10 + out/ClosureDefFibonacci.ns | 19 + out/ClosureFibonacci.ns | 19 + out/CodeMirror/AUTHORS | 845 + out/CodeMirror/LICENSE | 21 + out/CodeMirror/addon/display/autorefresh.js | 47 + out/CodeMirror/lib/codemirror.css | 349 + out/CodeMirror/lib/codemirror.js | 9777 +++++ out/CodeMirror/lib/editor.js | 29786 ++++++++++++++++ out/CodeMirrorDemo.ns | 80 + out/Collections.ns | 2135 ++ out/CollectionsForPrimordialSoup.ns | 902 + out/CollectionsTesting.ns | 1012 + out/CollectionsTestingConfiguration.ns | 10 + out/CombinatorialParsing.ns | 643 + out/CommandLineTestingStrategy.ns | 112 + out/CompilerApp.ns | 116 + out/CompilerApp.vfuel | Bin 0 -> 224448 bytes out/CounterApp.ns | 17 + out/CounterUI.ns | 59 + out/Debugging.ns | 632 + out/DeltaBlue.ns | 523 + out/DeploymentManager.ns | 716 + out/Ducts.ns | 399 + out/Files.ns | 637 + out/FilesTesting.ns | 88 + out/FilesTestsConfiguration.ns | 40 + out/GraphicsForHTML5.ns | 220 + out/GraphicsForSqueak.ns | 14 + out/HelloApp.ns | 8 + out/HelloApp.vfuel | Bin 0 -> 95775 bytes out/HelloDOM.ns | 34 + out/HopscotchDemo.ns | 105 + out/HopscotchElectronIDE.vfuel | Bin 0 -> 2433660 bytes out/HopscotchForBrazil.ns | 4861 +++ out/HopscotchForHTML5.ns | 3307 ++ out/HopscotchForHTML5Runtime.ns | 56 + out/HopscotchIDEApp.ns | 65 + out/HopscotchWebIDE.ns | 420 + out/HopscotchWebIDE.vfuel | Bin 0 -> 2432325 bytes out/IDETools.ns | 962 + out/InImageNSCompilerTestingStrategy.ns | 125 + out/Inspecting.ns | 1004 + out/IntermediatesForPrimordialSoup.ns | 233 + out/IntermediatesForSqueak.ns | 359 + out/JSForPrimordialSoup.ns | 165 + out/JSON.ns | 291 + out/JSONTesting.ns | 206 + out/JSONTestingConfiguration.ns | 14 + out/JSTesting.ns | 61 + out/JSTestingConfiguration.ns | 12 + out/JavascriptGeneration.ns | 1061 + out/Kernel.ns | 42 + out/KernelForPrimordialSoup.ns | 2502 ++ out/KernelForSqueak.ns | 1477 + out/KernelForV8.ns | 1123 + out/KernelTests.ns | 5868 +++ out/KernelTestsConfiguration.ns | 12 + out/KernelWeakTests.ns | 457 + ...nelWeakTestsPrimordialSoupConfiguration.ns | 14 + out/LanguageUiDescriptionRegistry.ns | 111 + out/MacOSXFiles.ns | 234 + out/MethodFibonacci.ns | 17 + out/Minitest.ns | 935 + out/MinitestTests.ns | 387 + out/MinitestTestsConfiguration.ns | 13 + out/MinitestUI.ns | 674 + out/MirrorBuilderTesting.ns | 961 + out/MirrorBuilderTestingConfiguration.ns | 10 + out/MirrorGroups.ns | 121 + out/MirrorTesting.ns | 756 + out/MirrorTestingConfiguration.ns | 11 + out/MirrorTestingModel.ns | 59 + out/MirrorsForPrimordialSoup.ns | 2337 ++ out/MirrorsForSqueak.ns | 1771 + out/MirrorsForV8.ns | 953 + out/MiscBrowsing.ns | 1945 + out/NLRImmediate.ns | 15 + out/NLRLoop.ns | 11 + ...mordialSoupCompilerTestingConfiguration.ns | 20 + out/NS2SqueakCompilerTestingConfiguration.ns | 22 + out/NS2V8ApplicationPackaging.ns | 157 + out/NS2V8CompilerTestingConfiguration.ns | 34 + out/NSCompilerTesting.ns | 2813 ++ out/NSPatternMatching.ns | 816 + out/Namespacing.ns | 208 + out/NewShell.ns | 90 + out/Newspeak2PrimordialSoupCompilation.ns | 2868 ++ out/Newspeak2SqueakCompilation.ns | 3010 ++ out/Newspeak2V8Compilation.ns | 2063 ++ out/NewspeakASTs.ns | 651 + out/NewspeakBrowsing.ns | 2002 ++ out/NewspeakColorization.ns | 773 + out/NewspeakCompilation.ns | 1080 + out/NewspeakGrammar.ns | 477 + out/NewspeakParsing.ns | 1015 + out/NewspeakPredictiveParsing.ns | 1509 + out/NewspeakPrettyPrinter.ns | 38 + out/NewspeakTypechecker.ns | 1343 + out/NewspeakTypecheckerTesting.ns | 383 + ...NewspeakTypecheckerTestingConfiguration.ns | 27 + out/NodeAPI.ns | 33 + out/ObjectPresenterDemo.ns | 71 + out/ParserCombinators.ns | 241 + out/ParserTesting.ns | 119 + out/ParserTestingConfiguration.ns | 15 + out/Particles.ns | 149 + out/PrimordialFuel.ns | 1040 + out/PrimordialFuelTestApp.ns | 8 + out/PrimordialFuelTesting.ns | 123 + out/PrimordialFuelTestingConfiguration.ns | 14 + out/PrimordialSoupTracer.ns | 909 + out/ProcessFinalizer.ns | 108 + out/RegexMatcher.ns | 3136 ++ out/RegexTesting.ns | 205 + out/RegexTestingConfiguration.ns | 13 + out/Request.ns | 211 + out/Richards.ns | 310 + out/RuntimeForElectron.ns | 44 + out/RuntimeForPrimordialSoup.ns | 30 + out/RuntimeForSqueak.ns | 138 + out/RuntimeForV8.ns | 51 + out/RuntimeForV8WithMirrorBuilders.ns | 59 + out/RuntimeWithMirrorsForPrimordialSoup.ns | 38 + out/SlotRead.ns | 11 + out/SlotWrite.ns | 11 + out/SmalltalkBrowsing.ns | 859 + out/Splay.ns | 241 + out/SqueakMirrorTesting.ns | 60 + out/SqueakMirrorTestingConfiguration.ns | 12 + out/Streams.ns | 1253 + out/TestActor.ns | 48 + out/TestRunner.ns | 58 + out/TestRunner.vfuel | Bin 0 -> 1563993 bytes out/TextModule.ns | 126 + out/TimeForSqueak.ns | 8 + out/TodoMVC.ns | 211 + out/TodoMVCApp.ns | 14 + out/UISessionManager.ns | 185 + out/UnixFiles.ns | 767 + out/VCSCore.ns | 654 + out/VCSDiffing.ns | 717 + out/VCSGitBackendProvider.ns | 439 + out/VCSImageMirrorCaching.ns | 72 + out/VCSLib.ns | 46 + out/VCSMercurialBackendProvider.ns | 767 + out/VCSNewspeakSourceMirrors.ns | 553 + out/VCSSmalltalkSourceMirrors.ns | 1180 + out/VCSSourceMirrors.ns | 355 + out/VCSSubversionBackendProvider.ns | 91 + out/VCSUI.ns | 2735 ++ out/VMMirror.ns | 45 + out/VictoryFuel.ns | 986 + out/VictoryFuelTesting.ns | 142 + out/VictoryFuelTestingConfiguration.ns | 21 + out/WebCompiler.ns | 189 + out/WebCompiler.vfuel | Bin 0 -> 225736 bytes out/WebFiles.ns | 67 + out/Win32API.ns | 2958 ++ out/Win32Files.ns | 656 + out/Words.ns | 54 + out/WorkspaceManager.ns | 194 + out/Zircon.ns | 186 + out/ZirconTesting.ns | 229 + out/ZirconTestingConfiguration.ns | 12 + out/accept16px.png | Bin 0 -> 15235 bytes out/cancel16px.png | Bin 0 -> 11098 bytes out/classPresenterImage.png | Bin 0 -> 7751 bytes out/classUnknownImage.png | Bin 0 -> 8773 bytes out/clearImage.png | Bin 0 -> 10673 bytes out/disclosureClosedImage.png | Bin 0 -> 4306 bytes out/disclosureOpenImage.png | Bin 0 -> 4502 bytes out/downloadImage.png | Bin 0 -> 7736 bytes out/findImage.png | Bin 0 -> 18805 bytes out/helpImage.png | Bin 0 -> 8629 bytes out/hsAddImage.png | Bin 0 -> 4804 bytes out/hsBackImage.png | Bin 0 -> 5907 bytes out/hsCollapseImage.png | Bin 0 -> 8233 bytes out/hsDropdownImage.png | Bin 0 -> 6990 bytes out/hsExpandImage.png | Bin 0 -> 7562 bytes out/hsForwardImage.png | Bin 0 -> 5873 bytes out/hsHistoryImage.png | Bin 0 -> 22758 bytes out/hsHomeImage.png | Bin 0 -> 10168 bytes out/hsNewImage.png | Bin 0 -> 538 bytes out/hsRefreshImage.png | Bin 0 -> 16029 bytes out/itemReferencesImage.png | Bin 0 -> 7196 bytes out/languageNewspeak3.png | Bin 0 -> 15286 bytes out/peekingeye1610.png | Bin 0 -> 54182 bytes out/primordialsoup.html | 60 + out/primordialsoup.js | 2738 ++ out/primordialsoup.wasm | Bin 0 -> 523709 bytes out/primordialsoup.wasm.map | 1 + out/privateImage.png | Bin 0 -> 7755 bytes out/protectedImage.png | Bin 0 -> 7883 bytes out/publicImage.png | Bin 0 -> 7229 bytes 226 files changed, 158316 insertions(+), 1 deletion(-) create mode 100644 out/APIManager.ns create mode 100644 out/AccessModifierTestApp.ns create mode 100644 out/AccessModifierTesting.ns create mode 100644 out/AccessModifierTestingConfiguration.ns create mode 100644 out/ActivationMirrorTesting.ns create mode 100644 out/ActivationMirrorTestingConfiguration.ns create mode 100644 out/ActivationMirrors.ns create mode 100644 out/Actors.ns create mode 100644 out/ActorsForPrimordialSoup.ns create mode 100644 out/ActorsForV8.ns create mode 100644 out/ActorsTesting.ns create mode 100644 out/ActorsTestingConfigurationForPrimordialSoup.ns create mode 100644 out/ActorsTestingConfigurationForSqueak.ns create mode 100644 out/AliensForSqueak.ns create mode 100644 out/AliensForV8.ns create mode 100644 out/AllSqueakTestsConfiguration.ns create mode 100644 out/Ampleforth.ns create mode 100644 out/Ampleforth.vfuel create mode 100644 out/AmpleforthEmbedder.ns create mode 100644 out/AtomicInstallTestConfiguration.ns create mode 100644 out/AtomicInstallTesting.ns create mode 100644 out/AtomicInstaller.ns create mode 100644 out/BenchmarkRunner.ns create mode 100644 out/BenchmarkRunner.vfuel create mode 100644 out/BootstrapRuntimeForSqueak.ns create mode 100644 out/Brazil.ns create mode 100644 out/BrazilMappingForWin32.ns create mode 100644 out/Browsing.ns create mode 100644 out/CAPI.ns create mode 100644 out/CAliensTesting.ns create mode 100644 out/CAliensTestingConfiguration.ns create mode 100644 out/ClosureDefFibonacci.ns create mode 100644 out/ClosureFibonacci.ns create mode 100644 out/CodeMirror/AUTHORS create mode 100644 out/CodeMirror/LICENSE create mode 100644 out/CodeMirror/addon/display/autorefresh.js create mode 100644 out/CodeMirror/lib/codemirror.css create mode 100644 out/CodeMirror/lib/codemirror.js create mode 100644 out/CodeMirror/lib/editor.js create mode 100644 out/CodeMirrorDemo.ns create mode 100644 out/Collections.ns create mode 100644 out/CollectionsForPrimordialSoup.ns create mode 100644 out/CollectionsTesting.ns create mode 100644 out/CollectionsTestingConfiguration.ns create mode 100644 out/CombinatorialParsing.ns create mode 100644 out/CommandLineTestingStrategy.ns create mode 100644 out/CompilerApp.ns create mode 100644 out/CompilerApp.vfuel create mode 100644 out/CounterApp.ns create mode 100644 out/CounterUI.ns create mode 100644 out/Debugging.ns create mode 100644 out/DeltaBlue.ns create mode 100644 out/DeploymentManager.ns create mode 100644 out/Ducts.ns create mode 100644 out/Files.ns create mode 100644 out/FilesTesting.ns create mode 100644 out/FilesTestsConfiguration.ns create mode 100644 out/GraphicsForHTML5.ns create mode 100644 out/GraphicsForSqueak.ns create mode 100644 out/HelloApp.ns create mode 100644 out/HelloApp.vfuel create mode 100644 out/HelloDOM.ns create mode 100644 out/HopscotchDemo.ns create mode 100644 out/HopscotchElectronIDE.vfuel create mode 100644 out/HopscotchForBrazil.ns create mode 100644 out/HopscotchForHTML5.ns create mode 100644 out/HopscotchForHTML5Runtime.ns create mode 100644 out/HopscotchIDEApp.ns create mode 100644 out/HopscotchWebIDE.ns create mode 100644 out/HopscotchWebIDE.vfuel create mode 100644 out/IDETools.ns create mode 100644 out/InImageNSCompilerTestingStrategy.ns create mode 100644 out/Inspecting.ns create mode 100644 out/IntermediatesForPrimordialSoup.ns create mode 100644 out/IntermediatesForSqueak.ns create mode 100644 out/JSForPrimordialSoup.ns create mode 100644 out/JSON.ns create mode 100644 out/JSONTesting.ns create mode 100644 out/JSONTestingConfiguration.ns create mode 100644 out/JSTesting.ns create mode 100644 out/JSTestingConfiguration.ns create mode 100644 out/JavascriptGeneration.ns create mode 100644 out/Kernel.ns create mode 100644 out/KernelForPrimordialSoup.ns create mode 100644 out/KernelForSqueak.ns create mode 100644 out/KernelForV8.ns create mode 100644 out/KernelTests.ns create mode 100644 out/KernelTestsConfiguration.ns create mode 100644 out/KernelWeakTests.ns create mode 100644 out/KernelWeakTestsPrimordialSoupConfiguration.ns create mode 100644 out/LanguageUiDescriptionRegistry.ns create mode 100644 out/MacOSXFiles.ns create mode 100644 out/MethodFibonacci.ns create mode 100644 out/Minitest.ns create mode 100644 out/MinitestTests.ns create mode 100644 out/MinitestTestsConfiguration.ns create mode 100644 out/MinitestUI.ns create mode 100644 out/MirrorBuilderTesting.ns create mode 100644 out/MirrorBuilderTestingConfiguration.ns create mode 100644 out/MirrorGroups.ns create mode 100644 out/MirrorTesting.ns create mode 100644 out/MirrorTestingConfiguration.ns create mode 100644 out/MirrorTestingModel.ns create mode 100644 out/MirrorsForPrimordialSoup.ns create mode 100644 out/MirrorsForSqueak.ns create mode 100644 out/MirrorsForV8.ns create mode 100644 out/MiscBrowsing.ns create mode 100644 out/NLRImmediate.ns create mode 100644 out/NLRLoop.ns create mode 100644 out/NS2PrimordialSoupCompilerTestingConfiguration.ns create mode 100644 out/NS2SqueakCompilerTestingConfiguration.ns create mode 100644 out/NS2V8ApplicationPackaging.ns create mode 100644 out/NS2V8CompilerTestingConfiguration.ns create mode 100644 out/NSCompilerTesting.ns create mode 100644 out/NSPatternMatching.ns create mode 100644 out/Namespacing.ns create mode 100644 out/NewShell.ns create mode 100644 out/Newspeak2PrimordialSoupCompilation.ns create mode 100644 out/Newspeak2SqueakCompilation.ns create mode 100644 out/Newspeak2V8Compilation.ns create mode 100644 out/NewspeakASTs.ns create mode 100644 out/NewspeakBrowsing.ns create mode 100644 out/NewspeakColorization.ns create mode 100644 out/NewspeakCompilation.ns create mode 100644 out/NewspeakGrammar.ns create mode 100644 out/NewspeakParsing.ns create mode 100644 out/NewspeakPredictiveParsing.ns create mode 100644 out/NewspeakPrettyPrinter.ns create mode 100644 out/NewspeakTypechecker.ns create mode 100644 out/NewspeakTypecheckerTesting.ns create mode 100644 out/NewspeakTypecheckerTestingConfiguration.ns create mode 100644 out/NodeAPI.ns create mode 100644 out/ObjectPresenterDemo.ns create mode 100644 out/ParserCombinators.ns create mode 100644 out/ParserTesting.ns create mode 100644 out/ParserTestingConfiguration.ns create mode 100644 out/Particles.ns create mode 100644 out/PrimordialFuel.ns create mode 100644 out/PrimordialFuelTestApp.ns create mode 100644 out/PrimordialFuelTesting.ns create mode 100644 out/PrimordialFuelTestingConfiguration.ns create mode 100644 out/PrimordialSoupTracer.ns create mode 100644 out/ProcessFinalizer.ns create mode 100644 out/RegexMatcher.ns create mode 100644 out/RegexTesting.ns create mode 100644 out/RegexTestingConfiguration.ns create mode 100644 out/Request.ns create mode 100644 out/Richards.ns create mode 100644 out/RuntimeForElectron.ns create mode 100644 out/RuntimeForPrimordialSoup.ns create mode 100644 out/RuntimeForSqueak.ns create mode 100644 out/RuntimeForV8.ns create mode 100644 out/RuntimeForV8WithMirrorBuilders.ns create mode 100644 out/RuntimeWithMirrorsForPrimordialSoup.ns create mode 100644 out/SlotRead.ns create mode 100644 out/SlotWrite.ns create mode 100644 out/SmalltalkBrowsing.ns create mode 100644 out/Splay.ns create mode 100644 out/SqueakMirrorTesting.ns create mode 100644 out/SqueakMirrorTestingConfiguration.ns create mode 100644 out/Streams.ns create mode 100644 out/TestActor.ns create mode 100644 out/TestRunner.ns create mode 100644 out/TestRunner.vfuel create mode 100644 out/TextModule.ns create mode 100644 out/TimeForSqueak.ns create mode 100644 out/TodoMVC.ns create mode 100644 out/TodoMVCApp.ns create mode 100644 out/UISessionManager.ns create mode 100644 out/UnixFiles.ns create mode 100644 out/VCSCore.ns create mode 100644 out/VCSDiffing.ns create mode 100644 out/VCSGitBackendProvider.ns create mode 100644 out/VCSImageMirrorCaching.ns create mode 100644 out/VCSLib.ns create mode 100644 out/VCSMercurialBackendProvider.ns create mode 100644 out/VCSNewspeakSourceMirrors.ns create mode 100644 out/VCSSmalltalkSourceMirrors.ns create mode 100644 out/VCSSourceMirrors.ns create mode 100644 out/VCSSubversionBackendProvider.ns create mode 100644 out/VCSUI.ns create mode 100644 out/VMMirror.ns create mode 100644 out/VictoryFuel.ns create mode 100644 out/VictoryFuelTesting.ns create mode 100644 out/VictoryFuelTestingConfiguration.ns create mode 100644 out/WebCompiler.ns create mode 100644 out/WebCompiler.vfuel create mode 100644 out/WebFiles.ns create mode 100644 out/Win32API.ns create mode 100644 out/Win32Files.ns create mode 100644 out/Words.ns create mode 100644 out/WorkspaceManager.ns create mode 100644 out/Zircon.ns create mode 100644 out/ZirconTesting.ns create mode 100644 out/ZirconTestingConfiguration.ns create mode 100644 out/accept16px.png create mode 100644 out/cancel16px.png create mode 100644 out/classPresenterImage.png create mode 100644 out/classUnknownImage.png create mode 100644 out/clearImage.png create mode 100644 out/disclosureClosedImage.png create mode 100644 out/disclosureOpenImage.png create mode 100644 out/downloadImage.png create mode 100644 out/findImage.png create mode 100644 out/helpImage.png create mode 100644 out/hsAddImage.png create mode 100644 out/hsBackImage.png create mode 100644 out/hsCollapseImage.png create mode 100644 out/hsDropdownImage.png create mode 100644 out/hsExpandImage.png create mode 100644 out/hsForwardImage.png create mode 100644 out/hsHistoryImage.png create mode 100644 out/hsHomeImage.png create mode 100644 out/hsNewImage.png create mode 100644 out/hsRefreshImage.png create mode 100644 out/itemReferencesImage.png create mode 100644 out/languageNewspeak3.png create mode 100644 out/peekingeye1610.png create mode 100644 out/primordialsoup.html create mode 100644 out/primordialsoup.js create mode 100755 out/primordialsoup.wasm create mode 100644 out/primordialsoup.wasm.map create mode 100644 out/privateImage.png create mode 100644 out/protectedImage.png create mode 100644 out/publicImage.png diff --git a/HopscotchForHTML5.ns b/HopscotchForHTML5.ns index 30246174..c8dac538 100644 --- a/HopscotchForHTML5.ns +++ b/HopscotchForHTML5.ns @@ -530,6 +530,18 @@ currentLineNumber ^ = ( public currentLine ^ = ( ^editor getLine: currentLineNumber ) +public insert: fragment atLine: line andColumn: column = ( + | + position = JSObject new. + replaced = JSObject new. + visual = fragment visual. + | + position at: 'line' put: line. + position at: 'ch' put: column. + replaced at: 'replacedWith' put: visual. + replaced at: 'clearWhenEmpty' put: false. + editor markText: position end: position replacedWith: replaced. +) public showFragment: message = ( messageContainer at: 'innerHTML' put: message. visual appendChild: messageContainer. @@ -622,7 +634,7 @@ public childrenDo: aBlock = ( createVisual = ( | div initialVisual | div:: document createElement: 'div'. - div at: 'id' put: 'CodeMirrorFragment'. + div at: 'id' put: 'CodeMirrorFDeferredContentComposerragment'. (div at: 'style') at: 'align-self' put: 'center'. initialVisual:: initialContent visual. div appendChild: initialVisual. diff --git a/out/APIManager.ns b/out/APIManager.ns new file mode 100644 index 00000000..524dd104 --- /dev/null +++ b/out/APIManager.ns @@ -0,0 +1,16 @@ +Newspeak3 +'CAPI' +class APIManager usingPlatform: platform = ( +(* Manages native API instances for various platforms, so that stale instances are cleaned up in new image sessions. *) +| + private OSProcess = platform squeak OSProcess. + private Smalltalk = platform squeak Smalltalk. + private Win32API = platform namespace Win32API. + + public win32api = Win32API platform: platform. +|) ( +public resetForNewImageSession = ( + win32api resetForNewImageSession. +) +) : ( +) diff --git a/out/AccessModifierTestApp.ns b/out/AccessModifierTestApp.ns new file mode 100644 index 00000000..da1c082c --- /dev/null +++ b/out/AccessModifierTestApp.ns @@ -0,0 +1,19 @@ +Newspeak3 +'AccessModifierTests' +class AccessModifierTestApp packageUsing: manifest = (| + AccessModifierTesting = manifest AccessModifierTesting. + Minitest = manifest Minitest. +|) ( +public main: p args: args = ( + | + minitest = Minitest usingPlatform: p. + testing = AccessModifierTesting usingPlatform: p testFramework: minitest. + tester = minitest Tester testModules: {testing}. + | + tester runAll. + (tester errors size printString, ' errors') out. + (tester failures size printString, ' failures') out. + (tester successes size printString, ' successes') out. +) +) : ( +) diff --git a/out/AccessModifierTesting.ns b/out/AccessModifierTesting.ns new file mode 100644 index 00000000..acb67130 --- /dev/null +++ b/out/AccessModifierTesting.ns @@ -0,0 +1,899 @@ +Newspeak3 +'AccessModifierTests' +class AccessModifierTesting usingPlatform: platform testFramework: minitest = (| + private TestContext = minitest TestContext. + private ClassMirror = platform mirrors ClassMirror. + private MessageNotUnderstood = platform kernel MessageNotUnderstood. +|) ( +public class ClassAccessingTests = TestContext ( +(* Try to access classes with different access modifiers, but only via public send. + Class access is implemented via accessor methods - so fetching a class falls back to finding the appropriate method. + All kind of different method sends are already tested in the MethodAcessingTests. *) +| + testSubjects = TestSubjects new. +|) ( +public testPrivateClassAccess = ( + should: [testSubjects APrivateClass] signal: MessageNotUnderstood. +) +public testProtectedClassAccess = ( + should: [testSubjects AProtectedClass] signal: MessageNotUnderstood. +) +public testPublicClassAccess = ( + assert: testSubjects APublicClass new ping = #pong. +) +public testPublicClassAccess2 = ( + testSubjects AClass +) +) : ( +TEST_CONTEXT = () +) +public class JITTests = TestContext () ( +class A = () ( +protected foo = ( + ^'A' +) +) : ( +) +class B = A () ( +private foo = ( + ^'B' +) +) : ( +) +class C = B () ( +public foo = ( + ^'C' +) +public superFoo = ( + ^super foo +) +) : ( +) +class D1 = C () ( +public foo = ( + ^'D1' +) +) : ( +) +class D2 = C () ( +public foo = ( + ^'D2' +) +) : ( +) +class D3 = C () ( +public foo = ( + ^'D3' +) +) : ( +) +class ImplicitReceiverMNU = ImplicitReceiverMNUSuper ( +) ( +private result = ( + ^#ImplicitReceiverMNU. +) +public sendImplicitReceiverFoo = ( + ^foo +) +) : ( +) +class ImplicitReceiverMNUSuper = ( +) ( +doesNotUnderstand: message = ( + ^result +) +private result = ( + ^#ImplicitReceiverMNUSuper. +) +) : ( +) +class OuterMNU = OuterMNUSuper ( +) ( +public class Inner = () ( +public sendOuterFoo = ( + ^outer OuterMNU foo +) +) : ( +) +private result = ( + ^#OuterMNU. +) +) : ( +) +class OuterMNUSuper = ( +) ( +doesNotUnderstand: message = ( + ^result (* This implicit receiver send will crash if the method receiver is wrong. *) +) +private result = ( + ^#OuterMNUSuper. +) +) : ( +) +class SelfMNU = SelfMNUSuper ( +) ( +private result = ( + ^#SelfMNU +) +public sendSelfFoo = ( + ^self foo +) +) : ( +) +class SelfMNUSuper = ( +) ( +doesNotUnderstand: message = ( + ^result +) +private result = ( + ^#SelfMNUSuper +) +) : ( +) +class SuperMNU = SuperMNUSuper ( +) ( +private result = ( + ^#SuperMNU +) +public sendSuperFoo = ( + ^super foo +) +) : ( +) +class SuperMNUSuper = ( +) ( +doesNotUnderstand: message = ( + ^result +) +private result = ( + ^#SuperMNUSuper +) +) : ( +) +public testImplicitReceiverMNU = ( + | aImplicitReceiverMnu = ImplicitReceiverMNU new. | + 10 timesRepeat: + [assert: aImplicitReceiverMnu sendSuperFoo equals: #ImplicitReceiverMNUSuper]. +) +public testOuterMNU = ( + | anInner = OuterMNU new Inner new. | + 10 timesRepeat: + [assert: anInner sendOuterFoo equals: #OuterMNUSuper]. +) +public testPolymorphicSuper = ( + | d1 = D1 new. d2 = D2 new. d3 = D3 new. | + 10 timesRepeat: + [assert: d1 superFoo equals: 'A'. + assert: d2 superFoo equals: 'A'. + assert: d3 superFoo equals: 'A']. +) +public testSelfMNU = ( + | aSelfMnu = SelfMNU new. | + 10 timesRepeat: + [assert: aSelfMnu sendSelfFoo equals: #SelfMNUSuper]. +) +public testSuperMNU = ( + | aSuperMnu = SuperMNU new. | + 10 timesRepeat: + [assert: aSuperMnu sendSuperFoo equals: #SuperMNUSuper]. +) +) : ( +TEST_CONTEXT = () +) +public class MethodAccessingTests = TestContext ( +(* Test access to methods with different access modifiers *) +| + testSubjects = TestSubjects new. +|) ( +public testDefaultImplicitReceiverSend = ( + (* send a message via an implicitReceiverSend which goes to a method with default access modifier *) + assert: testSubjects ASubClass new ASubInnerClass new defaultImplicitReceiverSend = #defaultImplicitReceiverTarget. +) +public testDefaultImplicitReceiverSendWithInheritance = ( + (* send a message via implicitReceiverSend which goes to a method with default access modifier with inheritance *) + assert: testSubjects ASubClass new defaultImplicitReceiverSendWithInheritance = #defaultMethod. +) +public testDefaultOuterSend = ( + (* send a message via an outerSend which goes to a method with default access modifier *) + assert: testSubjects AClass new AInnerClass new outerDefaultMethod = #defaultMethod. +) +public testDefaultOuterSendWithInheritance = ( + (* send a message via an outerSend which goes to a method with default access modifier via inheritance *) + assert: testSubjects ASubClass new ASubInnerClass new defaultOuterSendWithInheritance = #defaultMethod. +) +public testDefaultPublicSend = ( + (* send a message via publicSend which goes to a method with default access modifier *) + should: [testSubjects AClass new defaultMethod] signal: MessageNotUnderstood. +) +public testDefaultPublicSendWithInheritance = ( + (* send a message via publicSend which goes to a method with default access modifier in the super chain *) + should: [testSubjects ASubClass new defaultMethod] signal: MessageNotUnderstood. +) +public testDefaultSelfSend = ( + (* send a message via selfSend which goes to a method with default access modifier *) + assert: testSubjects AClass new selfDefaultMethod = #defaultMethod. +) +public testDefaultSelfSendWithInheritance = ( + (* send a message via selfSend which goes to a method with default access modifier in the super chain *) + assert: testSubjects ASubClass new selfDefaultMethod = #defaultMethod. +) +public testDefaultSuperSend = ( + (* send a message via superSend which goes to a method with default access modifier *) + assert: testSubjects ASubClass new superDefaultMethod = #defaultMethod. +) +public testImplicitPrivateOverriddenByProtected = ( + assert: testSubjects AClass new AInnerClass new implicitPrivateOverriddenByProtected + equals: #private. + assert: testSubjects ASubClass new AInnerClass new implicitPrivateOverriddenByProtected + equals: #private. +) +public testImplicitPrivateOverriddenByPublic = ( + assert: testSubjects AClass new AInnerClass new implicitPrivateOverriddenByPublic + equals: #private. + assert: testSubjects ASubClass new AInnerClass new implicitPrivateOverriddenByPublic + equals: #private. +) +public testImplicitProtectedOverriddenByPrivate = ( + assert: testSubjects AClass new AInnerClass new implicitProtectedOverriddenByPrivate + equals: #protected. + assert: testSubjects ASubClass new AInnerClass new implicitProtectedOverriddenByPrivate + equals: #protected. +) +public testImplicitProtectedOverriddenByPublic = ( + assert: testSubjects AClass new AInnerClass new implicitProtectedOverriddenByPublic + equals: #protected. + assert: testSubjects ASubClass new AInnerClass new implicitProtectedOverriddenByPublic + equals: #public. +) +public testImplicitPublicOverriddenByPrivate = ( + assert: testSubjects AClass new AInnerClass new implicitPublicOverriddenByPrivate + equals: #public. + assert: testSubjects ASubClass new AInnerClass new implicitPublicOverriddenByPrivate + equals: #public. +) +public testImplicitPublicOverriddenByProtected = ( + assert: testSubjects AClass new AInnerClass new implicitPublicOverriddenByProtected + equals: #public. + assert: testSubjects ASubClass new AInnerClass new implicitPublicOverriddenByProtected + equals: #protected. +) +public testObjectEncapsulationPrivate = ( + | sharedClass = testSubjects AClass. | + should: [ sharedClass new callPrivateMethodOn: sharedClass new ] + signal: MessageNotUnderstood. +) +public testObjectEncapsulationProtected = ( + | sharedClass = testSubjects AClass. | + should: [ sharedClass new callProtectedMethodOn: sharedClass new ] + signal: MessageNotUnderstood. +) +public testOrdinaryPrivateOverriddenByProtected = ( + should: [testSubjects ASubClass new privateOverriddenByProtected] + signal: MessageNotUnderstood. +) +public testOrdinaryPrivateOverriddenByPublic = ( + assert: testSubjects ASubClass new privateOverriddenByPublic + equals: #public. +) +public testOrdinaryProtectedOverriddenByPrivate = ( + should: [testSubjects ASubClass new protectedOverriddenByPrivate] + signal: MessageNotUnderstood. +) +public testOrdinaryProtectedOverriddenByPublic = ( + assert: testSubjects ASubClass new protectedOverriddenByPublic + equals: #public. +) +public testOrdinaryPublicOverriddenByPrivate = ( + assert: testSubjects ASubClass new publicOverriddenByPrivate + equals: #public. +) +public testOrdinaryPublicOverriddenByProtected = ( + should: [testSubjects ASubClass new publicOverriddenByProtected] + signal: MessageNotUnderstood. +) +public testOuterPrivateOverriddenByProtected = ( + assert: testSubjects AClass new AInnerClass new outerPrivateOverriddenByProtected + equals: #private. + assert: testSubjects ASubClass new AInnerClass new outerPrivateOverriddenByProtected + equals: #private. +) +public testOuterPrivateOverriddenByPublic = ( + assert: testSubjects AClass new AInnerClass new outerPrivateOverriddenByPublic + equals: #private. + assert: testSubjects ASubClass new AInnerClass new outerPrivateOverriddenByPublic + equals: #private. +) +public testOuterProtectedOverriddenByPrivate = ( + assert: testSubjects AClass new AInnerClass new outerProtectedOverriddenByPrivate + equals: #protected. + assert: testSubjects ASubClass new AInnerClass new outerProtectedOverriddenByPrivate + equals: #protected. +) +public testOuterProtectedOverriddenByPublic = ( + assert: testSubjects AClass new AInnerClass new outerProtectedOverriddenByPublic + equals: #protected. + assert: testSubjects ASubClass new AInnerClass new outerProtectedOverriddenByPublic + equals: #public. +) +public testOuterPublicOverriddenByPrivate = ( + assert: testSubjects AClass new AInnerClass new outerPublicOverriddenByPrivate + equals: #public. + assert: testSubjects ASubClass new AInnerClass new outerPublicOverriddenByPrivate + equals: #public. +) +public testOuterPublicOverriddenByProtected = ( + assert: testSubjects AClass new AInnerClass new outerPublicOverriddenByProtected + equals: #public. + assert: testSubjects ASubClass new AInnerClass new outerPublicOverriddenByProtected + equals: #protected. +) +public testOverriddenMethodInASubInnerClassClassViaImplicitReceiverSend = ( + assert: testSubjects ASubClass new callOverriddenMethod = #privateOverriddenMethod. +) +public testOverriddenMethodInInnerClassPublicSend = ( + assert: testSubjects ASubClass new overriddenMethod equals: #overriddenMethod +) +public testOverriddenMethodInSuperClassViaImplicitReceiverSend = ( + assert: testSubjects AClass new AInnerClass new callHiddenMethod = #privateHiddenMethod. +) +public testOverriddenMethodInSuperClassViaPublicSend = ( + should: [testSubjects AClass new AInnerClass new hiddenMethod] signal: MessageNotUnderstood. +) +public testPrivateDoesNotUnderstand = ( + assert: testSubjects WithPrivateDNU new foo + equals: #privateDNU. +) +public testPrivateImplicitReceiverSend = ( + (* send a message via implicitReceiverSend which goes to a private method *) + assert: testSubjects ASubClass new ASubInnerClass new privateImplicitReceiverSend = #privateImplicitReceiverTarget. +) +public testPrivateImplicitReceiverSendWithInheritance = ( + (* send a message via implicitReceiverSend which goes to a private method via inheritance *) + should: [testSubjects ASubClass new privateImplicitReceiverSendWithInheritance] signal: MessageNotUnderstood. +) +public testPrivateOuterSend = ( + (* send a message via outerSend which goes to a private method *) + assert: testSubjects AClass new AInnerClass new outerPrivateMethod = #privateMethod. +) +public testPrivateOuterSendWithInheritance = ( + (* send a message via outerSend which goes to a private method via inheritance *) + should: [testSubjects ASubClass new ASubInnerClass new privateOuterSendWithInheritance] signal: MessageNotUnderstood. +) +public testPrivatePublicSend = ( + (* send a message via publicSend which goes to a private method *) + should: [testSubjects AClass new privateMethod] signal: MessageNotUnderstood. +) +public testPrivatePublicSendWithInheritance = ( + (* send a message via publicSend which goes to a private method in the super chain *) + should: [testSubjects ASubClass new privateMethod] signal: MessageNotUnderstood. +) +public testPrivateSelfSend = ( + (* send a message via selfSend which goes to a private method*) + assert: testSubjects AClass new selfPrivateMethod = #privateMethod. +) +public testPrivateSelfSendwithInheritance = ( + (* send a message via selfSend which goes to a private method in the super chain *) + should: [ testSubjects ASubClass new selfPrivateMethod ] signal: MessageNotUnderstood. +) +public testPrivateSuperSend = ( + (* send a message via superSend which goes to a private method *) + should: [ testSubjects ASubClass new superPrivateMethod ] signal: MessageNotUnderstood. +) +public testProtectedImplicitReceiverSend = ( + (* send a message via implicitReceiverSend which goes to a protected method *) + assert: testSubjects ASubClass new ASubInnerClass new protectedImplicitReceiverSend = #protectedImplicitReceiverTarget. +) +public testProtectedImplicitReceiverSendWithInheritance = ( + (* send a message via implicitReceiverSend which goes to a protected method via inheritance *) + assert: testSubjects ASubClass new protectedImplicitReceiverSendWithInheritance = #protectedMethod. +) +public testProtectedOuterSend = ( + (* send a message via outerSend which goes to a protected method *) + assert: testSubjects AClass new AInnerClass new outerProtectedMethod = #protectedMethod. +) +public testProtectedOuterSendWithInheritance = ( + (* send a message via outerSend which goes to a protected method via inheritance *) + assert: testSubjects ASubClass new ASubInnerClass new protectedOuterSendWithInheritance = #protectedMethod. +) +public testProtectedPublicSend = ( + (* send a message via publicSend which goes to a protected method *) + should: [testSubjects AClass new protectedMethod] signal: MessageNotUnderstood. +) +public testProtectedPublicSendWithInheritance = ( + (* send a message via publicSend which goes to a protected method in the super chain *) + should: [testSubjects ASubClass new protectedMethod] signal: MessageNotUnderstood. +) +public testProtectedSelfSend = ( + (* send a message via selfSend which goes to a protected method*) + assert: testSubjects AClass new selfProtectedMethod = #protectedMethod. +) +public testProtectedSelfSendWithInheritance = ( + (* send a message via selfSend which goes to a protected method in the super chain *) + assert: testSubjects ASubClass new selfProtectedMethod = #protectedMethod. +) +public testProtectedSendDNULookupClass = ( + assert: testSubjects ADNUSubClass new sendSelfFoo equals: 'ADNUSubClass foo'. + assert: testSubjects ADNUSubClass new sendSuperFoo equals: 'ADNUClass doesNotUnderstand: foo'. + assert: testSubjects ADNUSubClass new sendSelfBar equals: 'ADNUSubClass doesNotUnderstand: bar'. + assert: testSubjects ADNUSubClass new sendSuperBar equals: 'ADNUClass doesNotUnderstand: bar'. +) +public testProtectedSuperSend = ( + (* send a message via superSend which goes to a protected method *) + assert: testSubjects ASubClass new superProtectedMethod = #protectedMethod. +) +public testPublicImplicitReceiverSend = ( + (* send a message via implicitReceiverSend which goes to a public method *) + assert: testSubjects ASubClass new ASubInnerClass new publicImplicitReceiverSend = #publicImplicitReceiverTarget. +) +public testPublicImplicitReceiverSendWithInheritance = ( + (* send a message via implicitReceiverSend which goes to a public method via inheritance *) + assert: testSubjects ASubClass new publicImplicitReceiverSendWithInheritance = #publicMethod. +) +public testPublicOuterSend = ( + (* send a message via outerSend which goes to a public method *) + assert: testSubjects AClass new AInnerClass new outerPublicMethod = #publicMethod. +) +public testPublicOuterSendWithInheritance = ( + (* send a message via outerSend which goes to a public method via inheritance *) + assert: testSubjects ASubClass new ASubInnerClass new publicOuterSendWithInheritance = #publicMethod. +) +public testPublicPublicSend = ( + (* send a message via publicSend which goes to a public method *) + assert: testSubjects AClass new publicMethod = #publicMethod. +) +public testPublicPublicSendWithInheritance = ( + (* send a message via publicSend which goes to a public method in the super chain *) + assert: testSubjects ASubClass new publicMethod = #publicMethod. +) +public testPublicSelfSend = ( + (* send a message via selfSend which goes to a public method*) + assert: testSubjects AClass new selfPublicMethod = #publicMethod. +) +public testPublicSelfSendWithInheritance = ( + (* send a message via selfSend which goes to a public method in the super chain *) + assert: testSubjects ASubClass new selfPublicMethod = #publicMethod. +) +public testPublicSuperSend = ( + (* send a message via superSend which goes to a public method *) + assert: testSubjects ASubClass new superPublicMethod = #publicMethod. +) +public testSelfPrivateOverriddenByProtected = ( + assert: testSubjects ASubClass new selfPrivateOverriddenByProtected + equals: #private. + assert: testSubjects ASubClass new selfFromSubPrivateOverriddenByProtected + equals: #protected. +) +public testSelfPrivateOverriddenByPublic = ( + assert: testSubjects ASubClass new selfPrivateOverriddenByPublic + equals: #private. + assert: testSubjects ASubClass new selfFromSubPrivateOverriddenByPublic + equals: #public. +) +public testSelfProtectedOverriddenByPrivate = ( + assert: testSubjects ASubClass new selfProtectedOverriddenByPrivate + equals: #protected. + assert: testSubjects ASubClass new selfFromSubProtectedOverriddenByPrivate + equals: #private. +) +public testSelfProtectedOverriddenByPublic = ( + assert: testSubjects ASubClass new selfProtectedOverriddenByPublic + equals: #public. + assert: testSubjects ASubClass new selfFromSubProtectedOverriddenByPublic + equals: #public. +) +public testSelfPublicOverriddenByPrivate = ( + assert: testSubjects ASubClass new selfPublicOverriddenByPrivate + equals: #public. + assert: testSubjects ASubClass new selfFromSubPublicOverriddenByPrivate + equals: #private. +) +public testSelfPublicOverriddenByProtected = ( + assert: testSubjects ASubClass new selfPublicOverriddenByProtected + equals: #protected. + assert: testSubjects ASubClass new selfFromSubPublicOverriddenByProtected + equals: #protected. +) +public testSuperPrivateOverriddenByProtected = ( + should: [testSubjects ASubClass new superFromSubPrivateOverriddenByProtected] + signal: MessageNotUnderstood. +) +public testSuperPrivateOverriddenByPublic = ( + should: [testSubjects ASubClass new superFromSubPrivateOverriddenByPublic] + signal: MessageNotUnderstood. +) +public testSuperProtectedOverriddenByPrivate = ( + assert: testSubjects ASubClass new superFromSubProtectedOverriddenByPrivate + equals: #protected. +) +public testSuperProtectedOverriddenByPublic = ( + assert: testSubjects ASubClass new superFromSubProtectedOverriddenByPublic + equals: #protected. +) +public testSuperPublicOverriddenByPrivate = ( + assert: testSubjects ASubClass new superFromSubPublicOverriddenByPrivate + equals: #public. +) +public testSuperPublicOverriddenByProtected = ( + assert: testSubjects ASubClass new superFromSubPublicOverriddenByProtected + equals: #public. +) +) : ( +TEST_CONTEXT = () +) +public class SlotAccessingTests = TestContext ( +(* Try to access slots with different access modifiers, but only via public send. + Slot access is implemented via accessor methods - so fetching a slot falls back to finding the appropriate method. + All kind of different method sends are already tested in the MethodAcessingTests. *) +| + testSubjects = TestSubjects new. +|) ( +public testDefaultSlotAccess = ( + should: [testSubjects AClass new defaultSlot] signal: MessageNotUnderstood. +) +public testPrivateSlotAccess = ( + should: [testSubjects AClass new privateSlot] signal: MessageNotUnderstood. +) +public testProtectedSlotAccess = ( + should: [testSubjects AClass new protectedSlot] signal: MessageNotUnderstood. +) +public testPublicSlotAccess = ( + assert: testSubjects AClass new publicSlot = #publicSlot. +) +) : ( +TEST_CONTEXT = () +) +public class TestSubjects = ( +(* Holds a bunch of classes which we test against *) +) ( +public class AClass = ( +(* A class with a default access modifier. Slots and methods of all sort to be tested against *) +| + public publicSlot = #publicSlot. + protected protectedSlot = #protectedSlot. + private privateSlot = #privateSlot. + defaultSlot = #defaultSlot. +|) ( +public class AInnerClass = ( +(* A class to test outerSends with different accessModifiers.*) +| + public publicSlot = #innerPublicSlot. + protected protectedSlot = #innerProtectedSlot. + private privateSlot = #innerPrivateSlot. + defaultSlot = #innerDefaultSlot. +|) ( +public callHiddenMethod = ( + ^hiddenMethod +) +defaultMethod = ( + ^#innerDefaultMethod +) +private hiddenMethod = ( + (* This is a private method which hides a method with the same signature from an outer class. + The outer method should never be executed when called from an instance of this class via implicit receiver send. *) + ^#privateHiddenMethod +) +public implicitPrivateOverriddenByProtected = ( + ^privateOverriddenByProtected +) +public implicitPrivateOverriddenByPublic = ( + ^privateOverriddenByPublic +) +public implicitProtectedOverriddenByPrivate = ( + ^protectedOverriddenByPrivate +) +public implicitProtectedOverriddenByPublic = ( + ^protectedOverriddenByPublic +) +public implicitPublicOverriddenByPrivate = ( + ^publicOverriddenByPrivate +) +public implicitPublicOverriddenByProtected = ( + ^publicOverriddenByProtected +) +public outerDefaultMethod = ( + ^outer AClass defaultMethod +) +public outerPrivateMethod = ( + ^outer AClass privateMethod +) +public outerPrivateOverriddenByProtected = ( + ^outer AClass privateOverriddenByProtected +) +public outerPrivateOverriddenByPublic = ( + ^outer AClass privateOverriddenByPublic +) +public outerProtectedMethod = ( + ^outer AClass protectedMethod +) +public outerProtectedOverriddenByPrivate = ( + ^outer AClass protectedOverriddenByPrivate +) +public outerProtectedOverriddenByPublic = ( + ^outer AClass protectedOverriddenByPublic +) +public outerPublicMethod = ( + ^outer AClass publicMethod +) +public outerPublicOverriddenByPrivate = ( + ^outer AClass publicOverriddenByPrivate +) +public outerPublicOverriddenByProtected = ( + ^outer AClass publicOverriddenByProtected +) +private privateMethod = ( + ^#innerPrivateMethod +) +protected protectedMethod = ( + ^#innerProtectedMethod +) +public publicMethod = ( + ^#innerPublicMethod +) +) : ( +) +public callPrivateMethodOn: other = ( + ^other privateMethod +) +public callProtectedMethodOn: other = ( + ^other protectedMethod +) +defaultMethod = ( + ^#defaultMethod +) +public hiddenMethod = ( + (* This is a public method which is hidden by an inner class. + This should never be executed when called from the inner class via implicit receiver send. *) + ^#hiddenMethod +) +public overriddenMethod = ( + (* This is a public method which is overridden by a subclass. + This should never be executed when called from the subclass via implicit receiver send. *) + ^#overriddenMethod +) +private privateMethod = ( + ^#privateMethod +) +private privateOverriddenByProtected = ( + ^#private +) +private privateOverriddenByPublic = ( + ^#private +) +protected protectedMethod = ( + ^#protectedMethod +) +protected protectedOverriddenByPrivate = ( + ^#protected +) +protected protectedOverriddenByPublic = ( + ^#protected +) +public publicMethod = ( + ^#publicMethod +) +public publicOverriddenByPrivate = ( + ^#public +) +public publicOverriddenByProtected = ( + ^#public +) +public selfDefaultMethod = ( + ^self defaultMethod +) +public selfPrivateMethod = ( + ^self privateMethod +) +public selfPrivateOverriddenByProtected = ( + ^self privateOverriddenByProtected +) +public selfPrivateOverriddenByPublic = ( + ^self privateOverriddenByPublic +) +public selfProtectedMethod = ( + ^self protectedMethod +) +public selfProtectedOverriddenByPrivate = ( + ^self protectedOverriddenByPrivate +) +public selfProtectedOverriddenByPublic = ( + ^self protectedOverriddenByPublic +) +public selfPublicMethod = ( + ^self publicMethod +) +public selfPublicOverriddenByPrivate = ( + ^self publicOverriddenByPrivate +) +public selfPublicOverriddenByProtected = ( + ^self publicOverriddenByProtected +) +) : ( +) +class ADNUClass = ( +) ( +protected doesNotUnderstand: message = ( + ^'ADNUClass doesNotUnderstand: ' , message selector +) +) : ( +) +public class ADNUSubClass = ADNUClass ( +) ( +protected doesNotUnderstand: message = ( + ^'ADNUSubClass doesNotUnderstand: ' , message selector +) +foo = ( + ^'ADNUSubClass foo' +) +public sendSelfBar = ( + ^self bar +) +public sendSelfFoo = ( + ^self foo +) +public sendSuperBar = ( + ^super bar +) +public sendSuperFoo = ( + ^super foo +) +) : ( +) +private class APrivateClass = () ( +) : ( +) +class AProtectedClass = () ( +) : ( +) +public class APublicClass = () ( +public ping = ( + ^#pong +) +) : ( +) +public class ASubClass = AClass ( +(* A class to test access to inherited slots/methods *) +) ( +public class ASubInnerClass = ( +(* A Class to test outerSends in combination with inheritance *) +| + defaultImplicitReceiverTarget = #defaultImplicitReceiverTarget. + public publicImplicitReceiverTarget = #publicImplicitReceiverTarget. + protected protectedImplicitReceiverTarget = #protectedImplicitReceiverTarget. + private privateImplicitReceiverTarget = #privateImplicitReceiverTarget. +|) ( +public defaultImplicitReceiverSend = ( + ^defaultImplicitReceiverTarget +) +public defaultOuterSendWithInheritance = ( + ^outer ASubClass defaultMethod +) +public privateImplicitReceiverSend = ( + ^privateImplicitReceiverTarget +) +public privateOuterSendWithInheritance = ( + ^outer ASubClass privateMethod +) +public protectedImplicitReceiverSend = ( + ^protectedImplicitReceiverTarget +) +public protectedOuterSendWithInheritance = ( + ^outer ASubClass protectedMethod +) +public publicImplicitReceiverSend = ( + ^publicImplicitReceiverTarget +) +public publicOuterSendWithInheritance = ( + ^outer ASubClass publicMethod +) +) : ( +) +public callOverriddenMethod = ( + ^overriddenMethod +) +public defaultImplicitReceiverSendWithInheritance = ( + ^defaultMethod +) +private overriddenMethod = ( + (* This is a private method which overrides a method with the same signature from a super class. + The super method should never be executed when called from an instance of this class via implicit receiver send. *) + ^#privateOverriddenMethod +) +public privateImplicitReceiverSendWithInheritance = ( + ^privateMethod +) +protected privateOverriddenByProtected = ( + ^#protected +) +public privateOverriddenByPublic = ( + ^#public +) +public protectedImplicitReceiverSendWithInheritance = ( + ^protectedMethod +) +private protectedOverriddenByPrivate = ( + ^#private +) +public protectedOverriddenByPublic = ( + ^#public +) +public publicImplicitReceiverSendWithInheritance = ( + ^publicMethod +) +private publicOverriddenByPrivate = ( + ^#private +) +protected publicOverriddenByProtected = ( + ^#protected +) +public selfDefaultMethod = ( + ^self defaultMethod +) +public selfFromSubPrivateOverriddenByProtected = ( + ^self privateOverriddenByProtected +) +public selfFromSubPrivateOverriddenByPublic = ( + ^self privateOverriddenByPublic +) +public selfFromSubProtectedOverriddenByPrivate = ( + ^self protectedOverriddenByPrivate +) +public selfFromSubProtectedOverriddenByPublic = ( + ^self protectedOverriddenByPublic +) +public selfFromSubPublicOverriddenByPrivate = ( + ^self publicOverriddenByPrivate +) +public selfFromSubPublicOverriddenByProtected = ( + ^self publicOverriddenByProtected +) +public selfPrivateMethod = ( + ^self privateMethod +) +public selfProtectedMethod = ( + ^self protectedMethod +) +public selfPublicMethod = ( + ^self publicMethod +) +public superDefaultMethod = ( + ^super defaultMethod +) +public superFromSubPrivateOverriddenByProtected = ( + ^super privateOverriddenByProtected +) +public superFromSubPrivateOverriddenByPublic = ( + ^super privateOverriddenByPublic +) +public superFromSubProtectedOverriddenByPrivate = ( + ^super protectedOverriddenByPrivate +) +public superFromSubProtectedOverriddenByPublic = ( + ^super protectedOverriddenByPublic +) +public superFromSubPublicOverriddenByPrivate = ( + ^super publicOverriddenByPrivate +) +public superFromSubPublicOverriddenByProtected = ( + ^super publicOverriddenByProtected +) +public superPrivateMethod = ( + ^super privateMethod +) +public superProtectedMethod = ( + ^super protectedMethod +) +public superPublicMethod = ( + ^super publicMethod +) +) : ( +) +public class WithPrivateDNU = () ( +private doesNotUnderstand: message = ( + ^#privateDNU +) +) : ( +) +) : ( +) +) : ( +) diff --git a/out/AccessModifierTestingConfiguration.ns b/out/AccessModifierTestingConfiguration.ns new file mode 100644 index 00000000..d26fc531 --- /dev/null +++ b/out/AccessModifierTestingConfiguration.ns @@ -0,0 +1,12 @@ +Newspeak3 +'AccessModifierTests' +class AccessModifierTestingConfiguration packageTestsUsing: manifest = (| +private AccessModifierTesting = manifest AccessModifierTesting. +|) ( +public testModulesUsingPlatform: platform minitest: minitest = ( + ^{AccessModifierTesting + usingPlatform: platform + testFramework: minitest} +) +) : ( +) diff --git a/out/ActivationMirrorTesting.ns b/out/ActivationMirrorTesting.ns new file mode 100644 index 00000000..10ffb8c0 --- /dev/null +++ b/out/ActivationMirrorTesting.ns @@ -0,0 +1,1478 @@ +Newspeak3 +'Mirrors' +class ActivationMirrorTesting usingPlatform: p minitest: m = (| +private ClassDeclarationBuilder = p mirrors ClassDeclarationBuilder. +private ObjectMirror = p mirrors ObjectMirror. +private ActivationMirror = p mirrors ActivationMirror. +private Message = p kernel Message. +private StringBuilder = p kernel StringBuilder. +private List = p collections List. +private Map = p collections Map. +private TestContext = m TestContext. +|) ( +public class ActivationTests = TestBase () ( +class Point x: x y: y = Object new ( +| +public x = x. +public y ::= y. +public z +| +) ( +) : ( +) +activationRestartMethod: list = ( + list add: 1984. + ^10 +) +add: x to: y = ( + | z | + z:: x + y. + ^z +) +assertOperandsOf: activation haveValues: values = ( + assertList: (activation operands collect: [:ea | ea reflectee]) equals: values. +) +assertSlotsOf: activation haveNamesAndValues: pairs = ( + | slots success | + slots:: activation slots. + success:: true. + 1 to: pairs size / 2 do: + [:index | | name value | + name:: pairs at: index * 2 - 1. + value:: pairs at: index * 2. + assert: (slots at: index) name equals: name. + assert: (slots at: index) value reflectee equals: value]. +) +assertThread: thread atMethod: expectedMethod snippet: expectedSnippet = ( + | activation | + activation:: thread suspendedActivation. + assert: activation method name equals: expectedMethod. + assert: (currentSnippet: activation) equals: expectedSnippet. +) +compilationError = ( + ^Error +) +currentSnippet: activation = ( + | range | + range:: activation sourceRange. + nil = range ifTrue: [^nil]. + ^activation method source copyFrom: range start to: range stop +) +deadHomeWithLocals: a = ( + | b c d | + b:: 2. (* Not copied *) + c:: 3. (* Copied *) + d:: 4. (* Indirect *) + ^[d:: d + c] +) +describeActivation: activation = ( + | sb = StringBuilder new. | + describeActivation: activation to: sb. + ^sb asString +) +describeActivation: activation to: sb = ( + | enclosing methodMixin receiverMixin source range | + enclosing:: activation enclosingActivation. + [nil = enclosing] whileFalse: + [sb add: '[] in '. + enclosing:: enclosing enclosingActivation]. + receiverMixin:: activation receiver getClass mixin. + sb add: receiverMixin name. + methodMixin:: activation method definingMixin. + methodMixin = receiverMixin ifFalse: + [sb add: '(', methodMixin name, ')']. + sb add: ' '. + sb add: activation method name. + sb add: ' '. + + activation isUncontinuable ifTrue: + [sb add: ''. ^self]. + + source:: activation method source. + nil = source ifTrue: + [sb add: ''. ^self]. + range:: activation sourceRange. + nil = range ifTrue: + [sb add: ''. ^self]. + sb add: '<'. + sb add: (source copyFrom: range start to: range stop). + sb add: '>'. +) +liveHomeWithLocals: a = ( + | b c d | + b:: 2. (* Not copied *) + c:: 3. (* Copied *) + d:: 4. (* Indirect *) + ^[d:: d + c] value +) +nlr1 = ( + ^nlr2 +) +nlr2 = ( + nlr3: [^2]. + ^20 +) +nlr3: block = ( + block value. + ^3 +) +quickResumeReturnAcrossBoundry = ( + | closure thread activation | + closure:: [^'escaping simulation!']. + thread:: ActivationMirror invokeSuspended: closure. + assert: thread isSuspended. + activation:: thread suspendedActivation. + assert: activation closure equals: (ObjectMirror reflecting: closure). + assert: activation receiver equals: (ObjectMirror reflecting: self). + assert: activation method name equals: #quickResumeReturnAcrossBoundry. + assert: activation sender equals: nil. + + thread resume. + + assert: thread isBroken. + assert: (thread result reflectee printString startsWith: 'CannotReturn'). + assert: thread suspendedActivation method name equals: #cannotReturn:. + assert: thread suspendedActivation sender equals: activation. + + ^'expected return' +) +seven = ( + ^[3 + 4] +) +seventySeven = ( + ^[(add: 3 to: 4) + (add: 30 to: 40)] +) +stackOf: thread = ( + | names activation | + names:: List new. + activation:: thread suspendedActivation. + [nil = activation] whileFalse: + [names add: activation method name. + activation:: activation sender]. + ^names +) +public testActivationEquality = ( + | closure thread activation1 activation2 activation3 | + closure:: [seven]. + thread:: ActivationMirror invokeSuspended: closure. + assert: thread isSuspended. + activation1:: thread suspendedActivation. + + thread stepInto. (* Send seven *) + + activation2:: thread suspendedActivation. + activation3:: activation2 sender. + + assert: activation1 method name equals: #testActivationEquality. + assert: activation2 method name equals: #seven. + assert: activation3 method name equals: #testActivationEquality. + + assert: activation1 equals: activation3. + assert: activation1 hash equals: activation3 hash. + + deny: activation1 equals: activation2. + deny: activation2 equals: activation3. +) +public testActivationEvaluate = ( + | closure thread activation eval | + closure:: [add: 3 to: 4]. + thread:: ActivationMirror invokeSuspended: closure. + assert: thread isSuspended. + thread stepInto. (* Push 3 *) + thread stepInto. (* Push 4 *) + thread stepInto. (* Send add:to: *) + activation:: thread suspendedActivation. + assert: activation receiver equals: (ObjectMirror reflecting: self). + assert: activation method name equals: #add:to:. + + eval:: activation evaluate: 'x'. + assert: eval isFulfilled. + assert: eval result reflectee equals: 3. + + eval:: activation evaluate: 'y'. + assert: eval isFulfilled. + assert: eval result reflectee equals: 4. + + eval:: activation evaluate: 'z'. + assert: eval isFulfilled. + assert: eval result reflectee equals: nil. + + eval:: activation evaluate: 'self'. + assert: eval isFulfilled. + assert: eval result reflectee equals: self. + + should: [activation evaluate: '++'] signal: compilationError. + + eval:: activation evaluate: 'w'. + assert: eval isBroken. + assert: eval result getClass mixin name equals: 'MessageNotUnderstood'. +) +public testActivationEvaluateEnclosingLocals = ( + | x closure thread activation eval | + x:: 3. (* Not captured *) + closure:: [nil]. + thread:: ActivationMirror invokeSuspended: closure. + + activation:: thread suspendedActivation. + assert: activation receiver equals: (ObjectMirror reflecting: self). + assert: activation closure equals: (ObjectMirror reflecting: closure). + assert: activation method name equals: #testActivationEvaluateEnclosingLocals. + + eval:: activation evaluate: 'x'. + assert: eval isFulfilled. + assert: eval result reflectee equals: 3. + + eval:: activation evaluate: 'x: 4'. + assert: eval isFulfilled. + assert: eval result reflectee equals: 4. + assert: x equals: 4. +) +public testActivationEvaluateWithScope = ( + | closure thread activation scope eval | + closure:: [add: 3 to: 4]. + thread:: ActivationMirror invokeSuspended: closure. + assert: thread isSuspended. + thread stepInto. (* Push 3 *) + thread stepInto. (* Push 4 *) + thread stepInto. (* Send add:to: *) + activation:: thread suspendedActivation. + assert: activation receiver equals: (ObjectMirror reflecting: self). + assert: activation method name equals: #add:to:. + + scope:: Map new. + scope at: #w put: (ObjectMirror reflecting: 10). + eval:: activation evaluate: 'x + y + w' with: scope. + assert: eval isFulfilled. + assert: eval result reflectee equals: 17. +) +public testActivationFactory = ( + | src Point thread activation | + (* Need a fresh compile to ensure consistency of the factory compilation strategy. Can be removed the next time the bootstrap compiler is updated. *) + src:: 'class Point x: x y: y = Object new ( + | + public x = x. + public y ::= y. + public z + | + )()'. + Point:: (ClassDeclarationBuilder fromSource: src) install applyToObject reflectee. + + thread:: ActivationMirror invokeSuspended: [Point x: 3 y: 4]. + + assertThread: thread atMethod: #testActivationFactory snippet: 'Point'. + thread suspendedActivation stepOver. (* Send Point *) + assertThread: thread atMethod: #testActivationFactory snippet: '3'. + thread suspendedActivation stepOver. (* Push 3 *) + assertThread: thread atMethod: #testActivationFactory snippet: '4'. + thread suspendedActivation stepOver. (* Push 4 *) + assertThread: thread atMethod: #testActivationFactory snippet: 'x: 3 y: 4'. + thread suspendedActivation stepInto. (* Send x:y: *) + assertThread: thread atMethod: #x:y: snippet: nil. + assert: thread suspendedActivation method definingMixin name equals: #'Point class'. + thread suspendedActivation stepOver. (* Send basicNew *) + assertThread: thread atMethod: #x:y: snippet: nil. + assert: thread suspendedActivation method definingMixin name equals: #'Point class'. + thread suspendedActivation stepInto. (* Store @newInstance *) + assertThread: thread atMethod: #x:y: snippet: 'x'. + assert: thread suspendedActivation method definingMixin name equals: #'Point class'. + thread suspendedActivation stepInto. (* Push x *) + assertThread: thread atMethod: #x:y: snippet: 'y'. + assert: thread suspendedActivation method definingMixin name equals: #'Point class'. + thread suspendedActivation stepInto. (* Push y *) + assertThread: thread atMethod: #x:y: snippet: 'x: x y: y'. + assert: thread suspendedActivation method definingMixin name equals: #'Point class'. + thread suspendedActivation stepInto. (* Send initializer`x:y: *) + assertThread: thread atMethod: #x:y: snippet: 'new'. + assert: thread suspendedActivation method definingMixin name equals: #'Point'. + thread suspendedActivation stepOver. (* Send super initializer`new *) + assertThread: thread atMethod: #x:y: snippet: nil. + assert: thread suspendedActivation method definingMixin name equals: #Point. + thread suspendedActivation stepInto. (* Pop *) + assertThread: thread atMethod: #x:y: snippet: 'x'. + assert: thread suspendedActivation method definingMixin name equals: #Point. + thread suspendedActivation stepInto. (* Push x *) + assertThread: thread atMethod: #x:y: snippet: 'public x = x'. + assert: thread suspendedActivation method definingMixin name equals: #Point. + thread suspendedActivation stepInto. (* Send init`x: *) + assertThread: thread atMethod: #x:y: snippet: nil. + assert: thread suspendedActivation method definingMixin name equals: #Point. + thread suspendedActivation stepInto. (* Pop *) + assertThread: thread atMethod: #x:y: snippet: 'y'. + assert: thread suspendedActivation method definingMixin name equals: #Point. + thread suspendedActivation stepInto. (* Push y *) + assertThread: thread atMethod: #x:y: snippet: 'public y ::= y'. + assert: thread suspendedActivation method definingMixin name equals: #Point. + thread suspendedActivation stepInto. (* Send init`y: *) + assertThread: thread atMethod: #x:y: snippet: nil. + assert: thread suspendedActivation method definingMixin name equals: #Point. + + thread suspendedActivation stepOut. (* Instance initializer *) + thread suspendedActivation stepOut. (* Factory *) + thread suspendedActivation stepOut. (* Closure *) + + assert: thread isFulfilled. + assert: thread result reflectee x equals: 3. + assert: thread result reflectee y equals: 4. + assert: thread suspendedActivation equals: nil. +) +public testActivationIsUncontinuable = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [1984]. + assertThread: thread atMethod: #testActivationIsUncontinuable snippet: '1984'. (* Push 1984 *) + assert: thread isSuspended. + activation:: thread suspendedActivation. + deny: activation isUncontinuable. + + activation stepOver. + + assertThread: thread atMethod: #testActivationIsUncontinuable snippet: '1984'. (* Return top *) + assert: thread isSuspended. + deny: activation isUncontinuable. + + activation stepOver. + + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 1984). + assert: activation isUncontinuable. +) +public testActivationLocals = ( + | closure thread activation locals | + closure:: [add: 3 to: 4]. + thread:: ActivationMirror invokeSuspended: closure. + assert: thread isSuspended. + + thread stepInto. (* Push 3 *) + thread stepInto. (* Push 4 *) + thread stepInto. (* Send add:to: *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#x. 3. #y. 4. #z. nil}. + + thread stepInto. (* Send x *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#x. 3. #y. 4. #z. nil}. + + thread stepInto. (* Send y *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#x. 3. #y. 4. #z. nil}. + + thread stepInto. (* Send + y *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#x. 3. #y. 4. #z. nil}. + + thread stepInto. (* Send z: *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#x. 3. #y. 4. #z. 7}. + + thread stepInto. (* Send z *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#x. 3. #y. 4. #z. 7}. + + thread stepInto. (* Return top *) + thread stepInto. (* Return top *) + + assert: thread isFulfilled. +) +public testActivationLocalsDeadHome = ( + | closure thread activation locals | + closure:: deadHomeWithLocals: 1. + thread:: ActivationMirror invokeSuspended: closure. + assert: thread isSuspended. + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#a. nil. #b. nil. #c. nil. #d. nil}. + + thread stepInto. (* Push d *) + thread stepInto. (* Push c *) + thread stepInto. (* Send + *) + thread stepInto. (* Store d *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#a. nil. #b. nil. #c. nil. #d. nil}. + + thread stepInto. (* Return top *) + + assert: thread isFulfilled. +) +public testActivationLocalsLiveHome = ( + | closure thread activation locals | + closure:: [liveHomeWithLocals: 1]. + thread:: ActivationMirror invokeSuspended: closure. + assert: thread isSuspended. + + thread stepInto. (* Push 1 *) + thread stepInto. (* Send liveHomeWithLocals: *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#a. 1. #b. nil. #c. nil. #d. nil}. + + thread stepInto. (* Push new array *) + thread stepInto. (* PopInto vector *) + thread stepInto. (* Push 2 *) + thread stepInto. (* PopInto b *) + thread stepInto. (* Push 3 *) + thread stepInto. (* PopInto c *) + thread stepInto. (* Push 4 *) + thread stepInto. (* PopIntoVector d *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#a. 1. #b. 2. #c. 3. #d. 4}. + + thread stepInto. (* Push vector (copied) *) + thread stepInto. (* Push c (copied) *) + thread stepInto. (* Push closure *) + thread stepInto. (* Send value *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#a. 1. #b. 2. #c. 3. #d. 4}. + + thread stepInto. (* Push d *) + thread stepInto. (* Push c *) + thread stepInto. (* Send + *) + thread stepInto. (* Store d *) + + assertSlotsOf: thread suspendedActivation + haveNamesAndValues: {#a. 1. #b. 2. #c. 3. #d. 7}. + + thread stepInto. (* Return top *) + thread stepInto. (* Return top *) + thread stepInto. (* Return top *) + + assert: thread isFulfilled. +) +public testActivationNestedClassAccessor = ( + | thread activation | + Point. (* Ensure consistency in whether the nested class has already been created. *) + thread:: ActivationMirror invokeSuspended: [Point]. + + assertThread: thread atMethod: #testActivationNestedClassAccessor snippet: 'Point'. + thread suspendedActivation stepInto. (* Send Point *) + assertThread: thread atMethod: #Point snippet: nil. + assert: thread suspendedActivation method definingMixin name equals: #ActivationTests. + thread suspendedActivation stepOut. + assertThread: thread atMethod: #testActivationNestedClassAccessor snippet: 'Point'. + thread suspendedActivation stepOut. + + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: Point). + assert: thread suspendedActivation equals: nil. +) +public testActivationOperandsClosure = ( + | three four thread activation | + three:: 3. + four:: 4. + thread:: ActivationMirror invokeSuspended: [three + four]. + assert: thread isSuspended. + activation:: thread suspendedActivation. + assertOperandsOf: activation haveValues: {}. + + thread stepInto. (* Push three *) + assertOperandsOf: activation haveValues: {3}. + + thread stepInto. (* Push four *) + assertOperandsOf: activation haveValues: {3. 4}. + + thread stepInto. (* Send + *) + assertOperandsOf: activation haveValues: {7}. + + thread stepInto. (* Return top *) + assertOperandsOf: activation haveValues: {}. + assert: thread isFulfilled. +) +public testActivationOperandsMethod = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [add: 3 to: 4]. + assert: thread isSuspended. + + thread stepInto. (* Push 3 *) + thread stepInto. (* Push 4 *) + thread stepInto. (* Send add:to: *) + activation:: thread suspendedActivation. + assertOperandsOf: activation haveValues: {}. + + thread stepInto. (* Send x *) + assertOperandsOf: activation haveValues: {3}. + + thread stepInto. (* Send y *) + assertOperandsOf: activation haveValues: {3. 4}. + + thread stepInto. (* Send + y *) + assertOperandsOf: activation haveValues: {7}. + + thread stepInto. (* Send z: *) + assertOperandsOf: activation haveValues: {}. + + thread stepInto. (* Send z *) + assertOperandsOf: activation haveValues: {7}. + + thread stepInto. (* Return top *) + assertOperandsOf: activation haveValues: {}. + + thread stepInto. (* Return top *) + assert: thread isFulfilled. +) +public testActivationRestartClosure = ( + | list thread activation | + list:: List new. + thread:: ActivationMirror invokeSuspended: [list add: 1984. 10]. + + assertThread: thread atMethod: #testActivationRestartClosure snippet: 'list'. + thread suspendedActivation stepOver. + assertThread: thread atMethod: #testActivationRestartClosure snippet: '1984'. + thread suspendedActivation stepOver. + assertThread: thread atMethod: #testActivationRestartClosure snippet: 'add: 1984'. + assertList: list equals: {}. + thread suspendedActivation stepOver. + assertList: list equals: {1984}. + + thread suspendedActivation restart. + assertThread: thread atMethod: #testActivationRestartClosure snippet: 'list'. + + thread resume. + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 10). + assert: thread suspendedActivation equals: nil. + assertList: list equals: {1984. 1984}. +) +public testActivationRestartClosureWithLookup = ( + | list thread activation | + list:: List new. + thread:: ActivationMirror invokeSuspended: [list add: 1984. 10]. + assert: thread isSuspended. + assert: (describeActivation: thread suspendedActivation) + equals: '[] in ActivationTests testActivationRestartClosureWithLookup '. + + should: [activation restartWithLookup] signal: Error. + assert: thread isSuspended. + assert: (describeActivation: thread suspendedActivation) + equals: '[] in ActivationTests testActivationRestartClosureWithLookup '. + + thread resume. + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 10). + assert: thread suspendedActivation equals: nil. + assertList: list equals: {1984}. +) +public testActivationRestartMethod = ( + | list thread activation | + list:: List new. + thread:: ActivationMirror invokeSuspended: [activationRestartMethod: list]. + + assertThread: thread atMethod: #testActivationRestartMethod snippet: 'list'. + thread suspendedActivation stepOver. + assertThread: thread atMethod: #testActivationRestartMethod snippet: 'activationRestartMethod: list'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #activationRestartMethod: snippet: 'list'. + thread suspendedActivation stepOver. + assertThread: thread atMethod: #activationRestartMethod: snippet: '1984'. + thread suspendedActivation stepOver. + assertThread: thread atMethod: #activationRestartMethod: snippet: 'add: 1984'. + assertList: list equals: {}. + thread suspendedActivation stepOver. + assertList: list equals: {1984}. + + thread suspendedActivation restart. + assertThread: thread atMethod: #activationRestartMethod: snippet: 'list'. + + thread resume. + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 10). + assert: thread suspendedActivation equals: nil. + assertList: list equals: {1984. 1984}. +) +public testActivationRestartMethodWithLookup = ( + | builder klass instance list thread activation | + builder:: ClassDeclarationBuilder fromSource: 'class Foo = ()( + public foo: list = ( ^self bar ) + public bar = ( ^Exception new signal ) + public baz = ( ^Exception new signal ) + )'. + klass:: builder install applyToObject reflectee. + instance:: klass new. + + list:: List new. + thread:: (ActivationMirror invokeSuspended: [instance foo: list]) resume. + assert: thread isBroken. + activation:: thread suspendedActivation sender. + assert: (describeActivation: activation) equals: 'Foo foo: '. + + (* Note the new method has a different number of temporaries than the old method. *) + builder instanceSide methods addFromSource: + 'public foo: list = ( + | temp1 temp2 | + temp1:: self baz. + temp2:: self baz. + list add: temp1. + list add: temp2. + ^temp1 + temp2 + )'. + builder install. + activation restartWithLookup. + assert: thread isSuspended. + activation:: thread suspendedActivation. + assert: (describeActivation: activation) equals: 'Foo foo: '. + + thread resume. + assert: thread isBroken. + activation:: thread suspendedActivation. + assert: (describeActivation: activation) equals: 'Foo baz <^Exception new signal>'. + + builder instanceSide methods addFromSource: + 'public baz = ( ^1984 )'. + builder install. + activation restartWithLookup. + assert: thread isSuspended. + activation:: thread suspendedActivation. + assert: (describeActivation: activation) equals: 'Foo baz <1984>'. + assertList: list equals: {}. + + thread resume. + assert: thread isFulfilled. + assert: thread result reflectee equals: 3968. + assertList: list equals: {1984. 1984}. +) +public testActivationRestartTerminated = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [add: 3 to: 4]. + assert: thread isSuspended. + activation:: thread suspendedActivation. + + thread terminate. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. + + should: [activation restart] signal: Exception. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. +) +public testActivationReturn = ( + | list thread activation | + list:: List new. + thread:: ActivationMirror invokeSuspended: [list add: (add: 3 to: 4)]. + + assertThread: thread atMethod: #testActivationReturn snippet: 'list'. + thread suspendedActivation stepOver. + assertThread: thread atMethod: #testActivationReturn snippet: '3'. + thread suspendedActivation stepOver. + assertThread: thread atMethod: #testActivationReturn snippet: '4'. + thread suspendedActivation stepOver. + assertThread: thread atMethod: #testActivationReturn snippet: 'add: 3 to: 4'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #add:to: snippet: 'x'. + (* Return to another activation. *) + thread suspendedActivation return: (ObjectMirror reflecting: 1984). + assertThread: thread atMethod: #testActivationReturn snippet: 'add: (add: 3 to: 4)'. + thread suspendedActivation stepOver. + assertList: list equals: {1984}. + assertThread: thread atMethod: #testActivationReturn snippet: 'list add: (add: 3 to: 4)'. + (* Return to complete thread. *) + thread suspendedActivation return: (ObjectMirror reflecting: 42). + + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 42). + assert: thread suspendedActivation equals: nil. +) +public testActivationReturnTerminated = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [add: 3 to: 4]. + assert: thread isSuspended. + activation:: thread suspendedActivation. + + thread terminate. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. + + should: [activation return: (ObjectMirror reflecting: 1984)] signal: Exception. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. +) +public testActivationSourceRange = ( + | closure thread activation | + closure:: [add: 3 to: 4]. + thread:: ActivationMirror invokeSuspended: closure. + assert: thread isSuspended. + + assert: (currentSnippet: thread suspendedActivation) equals: '3'. + thread stepInto. (* Push 3 *) + + assert: (currentSnippet: thread suspendedActivation) equals: '4'. + thread stepInto. (* Push 4 *) + + assert: (currentSnippet: thread suspendedActivation) equals: 'add: 3 to: 4'. + thread stepInto. (* Send add:to: *) + + assert: (currentSnippet: thread suspendedActivation) equals: 'x'. + assert: (currentSnippet: thread suspendedActivation sender) equals: 'add: 3 to: 4'. + thread stepInto. (* Send x *) + + assert: (currentSnippet: thread suspendedActivation) equals: 'y'. + assert: (currentSnippet: thread suspendedActivation sender) equals: 'add: 3 to: 4'. + thread stepInto. (* Send y *) + + assert: (currentSnippet: thread suspendedActivation) equals: '+ y'. + assert: (currentSnippet: thread suspendedActivation sender) equals: 'add: 3 to: 4'. + thread stepInto. (* Send + y *) + + assert: (currentSnippet: thread suspendedActivation) equals: 'z:: x + y'. + assert: (currentSnippet: thread suspendedActivation sender) equals: 'add: 3 to: 4'. + thread stepInto. (* Send z: *) + + assert: (currentSnippet: thread suspendedActivation) equals: 'z'. + assert: (currentSnippet: thread suspendedActivation sender) equals: 'add: 3 to: 4'. + thread stepInto. (* Send z *) + + assert: (currentSnippet: thread suspendedActivation) equals: '^z'. + assert: (currentSnippet: thread suspendedActivation sender) equals: 'add: 3 to: 4'. + thread stepInto. (* Return top *) + + assert: (currentSnippet: thread suspendedActivation) equals: 'add: 3 to: 4'. + thread stepInto. (* Return top *) + + assert: thread isFulfilled. +) +public testActivationStepInto = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: seven. + assert: thread isSuspended. + thread stepInto. (* Push 3 *) + assert: thread isSuspended. + assertList: (stackOf: thread) equals: {#seven}. + thread stepInto. (* Push 4 *) + assert: thread isSuspended. + assertList: (stackOf: thread) equals: {#seven}. + thread stepInto. (* Send + *) + assert: thread isSuspended. + assertList: (stackOf: thread) equals: {#seven}. + thread stepInto. (* Return 7 *) + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 7). + assertList: (stackOf: thread) equals: {}. +) +public testActivationStepIntoTerminated = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [add: 3 to: 4]. + assert: thread isSuspended. + activation:: thread suspendedActivation. + + thread terminate. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. + + should: [activation stepInto] signal: Exception. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. +) +public testActivationStepOut = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: seventySeven. + + assertThread: thread atMethod: #seventySeven snippet: '3'. + thread suspendedActivation stepOver. (* Push 3 *) + assertThread: thread atMethod: #seventySeven snippet: '4'. + thread suspendedActivation stepOver. (* Push 4 *) + assertThread: thread atMethod: #seventySeven snippet: 'add: 3 to: 4'. + thread suspendedActivation stepInto. (* Send add:to: *) + assertThread: thread atMethod: #add:to: snippet: 'x'. + thread suspendedActivation stepOut. + assertThread: thread atMethod: #seventySeven snippet: '30'. + thread suspendedActivation stepOver. (* Push 30 *) + assertThread: thread atMethod: #seventySeven snippet: '40'. + thread suspendedActivation stepOver. (* Push 40 *) + assertThread: thread atMethod: #seventySeven snippet: 'add: 30 to: 40'. + thread suspendedActivation stepInto. (* Send add:to: *) + assertThread: thread atMethod: #add:to: snippet: 'x'. + thread suspendedActivation stepOut. + assertThread: thread atMethod: #seventySeven snippet: '+ (add: 30 to: 40)'. + thread suspendedActivation stepOut. + + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 77). + assert: thread suspendedActivation equals: nil. +) +public testActivationStepOutNLRSkipsGoal = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [nlr1]. + + assertThread: thread atMethod: #testActivationStepOutNLRSkipsGoal snippet: 'nlr1'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr1 snippet: 'nlr2'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: '[^2]'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: 'nlr3: [^2]'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr3: snippet: 'block'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr3: snippet: 'value'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: '2'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: '^2'. + + thread suspendedActivation stepOut. + assertThread: thread atMethod: #nlr1 snippet: '^nlr2'. + + thread resume. + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 2). + assert: thread suspendedActivation equals: nil. +) +public testActivationStepOutTerminated = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [add: 3 to: 4]. + assert: thread isSuspended. + activation:: thread suspendedActivation. + + thread terminate. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. + + should: [activation stepOut] signal: Exception. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. +) +public testActivationStepOver = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: seventySeven. + + assertThread: thread atMethod: #seventySeven snippet: '3'. + thread suspendedActivation stepOver. (* Push 3 *) + assertThread: thread atMethod: #seventySeven snippet: '4'. + thread suspendedActivation stepOver. (* Push 4 *) + assertThread: thread atMethod: #seventySeven snippet: 'add: 3 to: 4'. + thread suspendedActivation stepOver. (* Send add:to: *) + assertThread: thread atMethod: #seventySeven snippet: '30'. + thread suspendedActivation stepOver. (* Push 30 *) + assertThread: thread atMethod: #seventySeven snippet: '40'. + thread suspendedActivation stepOver. (* Push 40 *) + assertThread: thread atMethod: #seventySeven snippet: 'add: 30 to: 40'. + thread suspendedActivation stepOver. (* Send add:to: *) + assertThread: thread atMethod: #seventySeven snippet: '+ (add: 30 to: 40)'. + thread suspendedActivation stepOver. (* Send + *) + assertThread: thread atMethod: #seventySeven snippet: '(add: 3 to: 4) + (add: 30 to: 40)'. + thread suspendedActivation stepOver. (* Return 77 *) + + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 77). + assert: thread suspendedActivation equals: nil. +) +public testActivationStepOverNLRSkipsGoal = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [nlr1]. + + assertThread: thread atMethod: #testActivationStepOverNLRSkipsGoal snippet: 'nlr1'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr1 snippet: 'nlr2'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: '[^2]'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: 'nlr3: [^2]'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr3: snippet: 'block'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr3: snippet: 'value'. + + thread suspendedActivation stepOver. + assertThread: thread atMethod: #nlr1 snippet: '^nlr2'. + + thread resume. + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 2). + assert: thread suspendedActivation equals: nil. +) +public testActivationStepOverTerminated = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [add: 3 to: 4]. + assert: thread isSuspended. + activation:: thread suspendedActivation. + + thread terminate. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. + + should: [activation stepOver] signal: Exception. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. +) +public testActivationStepThrough = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [nlr1]. + + assertThread: thread atMethod: #testActivationStepThrough snippet: 'nlr1'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr1 snippet: 'nlr2'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: '[^2]'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: 'nlr3: [^2]'. + + thread suspendedActivation stepThrough. + assertThread: thread atMethod: #nlr2 snippet: '2'. + + thread resume. + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 2). + assert: thread suspendedActivation equals: nil. +) +public testActivationStepThroughNLRSkipsGoal = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [nlr1]. + + assertThread: thread atMethod: #testActivationStepThroughNLRSkipsGoal snippet: 'nlr1'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr1 snippet: 'nlr2'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: '[^2]'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: 'nlr3: [^2]'. + thread suspendedActivation stepThrough. + assertThread: thread atMethod: #nlr2 snippet: '2'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #nlr2 snippet: '^2'. + + thread suspendedActivation stepThrough. + assertThread: thread atMethod: #nlr1 snippet: '^nlr2'. + + thread resume. + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 2). + assert: thread suspendedActivation equals: nil. +) +public testActivationStepThroughTerminated = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [add: 3 to: 4]. + assert: thread isSuspended. + activation:: thread suspendedActivation. + + thread terminate. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. + + should: [activation stepThrough] signal: Exception. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. +) +public testActivationStepUncontinuable = ( + | thread activation | + thread:: ActivationMirror invokeSuspended: [add: 3 to: 4]. + + assertThread: thread atMethod: #testActivationStepUncontinuable snippet: '3'. + thread suspendedActivation stepOver. + assertThread: thread atMethod: #testActivationStepUncontinuable snippet: '4'. + thread suspendedActivation stepOver. + assertThread: thread atMethod: #testActivationStepUncontinuable snippet: 'add: 3 to: 4'. + thread suspendedActivation stepInto. + assertThread: thread atMethod: #add:to: snippet: 'x'. + + activation:: thread suspendedActivation. + + thread suspendedActivation stepOut. + assertThread: thread atMethod: #testActivationStepUncontinuable snippet: 'add: 3 to: 4'. + + assert: activation isUncontinuable. + + should: [activation stepInto] signal: Error. + assertThread: thread atMethod: #testActivationStepUncontinuable snippet: 'add: 3 to: 4'. + assert: thread isSuspended. + should: [activation stepOver] signal: Error. + assertThread: thread atMethod: #testActivationStepUncontinuable snippet: 'add: 3 to: 4'. + assert: thread isSuspended. + should: [activation stepThrough] signal: Error. + assertThread: thread atMethod: #testActivationStepUncontinuable snippet: 'add: 3 to: 4'. + assert: thread isSuspended. + should: [activation stepOut] signal: Error. + assertThread: thread atMethod: #testActivationStepUncontinuable snippet: 'add: 3 to: 4'. + assert: thread isSuspended. + should: [activation restart] signal: Error. + assertThread: thread atMethod: #testActivationStepUncontinuable snippet: 'add: 3 to: 4'. + assert: thread isSuspended. + should: [activation return: (ObjectMirror reflecting: 1984)] signal: Error. + assertThread: thread atMethod: #testActivationStepUncontinuable snippet: 'add: 3 to: 4'. + assert: thread isSuspended. + + thread resume. + assert: thread isFulfilled. + assert: thread result equals: (ObjectMirror reflecting: 7). + assert: thread suspendedActivation equals: nil. +) +public testBrokenThreadAtSenderOfSignal = ( + | exception closure thread activation | + exception:: Exception new. + closure:: [exception signal]. + thread:: (ActivationMirror invokeSuspended: closure) resume. + + assert: thread isBroken. + assert: thread result reflectee equals: exception. + assertThread: thread atMethod: #testBrokenThreadAtSenderOfSignal snippet: 'exception signal'. +) +public testClosureActivation = ( + | closure thread activation | + closure:: seven. + thread:: ActivationMirror invokeSuspended: closure. + assert: thread isSuspended. + + activation:: thread suspendedActivation. + assert: activation closure equals: (ObjectMirror reflecting: closure). + assert: activation receiver equals: (ObjectMirror reflecting: self). + assert: activation method name equals: #seven. + assert: activation sender equals: nil. + + activation:: activation enclosingActivation. + assert: activation closure equals: nil. + assert: activation receiver equals: (ObjectMirror reflecting: self). + assert: activation method name equals: #seven. + assert: activation sender equals: nil. +) +public testEnclosingActivationEquality = ( + | closure thread activation | + thread:: (ObjectMirror reflecting: self) evaluateSuspended: '[1984] value'. + thread suspendedActivation stepInto. (* Push closure *) + thread suspendedActivation stepInto. (* Send value *) + assert: thread isSuspended. + + activation:: thread suspendedActivation. + deny: activation closure equals: nil. + assert: activation sender equals: activation enclosingActivation. +) +public testEvaluateActivation = ( + | closure thread activation | + thread:: (ObjectMirror reflecting: self) evaluateSuspended: '3 + 4'. + assert: thread isSuspended. + activation:: thread suspendedActivation. + assert: activation closure equals: nil. + assert: activation receiver equals: (ObjectMirror reflecting: self). + assert: activation method name equals: #DoItIn:With:. + assert: activation method source equals: '3 + 4'. + assert: activation sender equals: nil. + assert: activation enclosingActivation equals: nil. +) +public testEvaluateActivationLocals = ( + | thread activation locals | + thread:: (ObjectMirror reflecting: self) evaluateSuspended: ' | seven | seven:: 3 + 4 '. + assert: thread isSuspended. + + thread stepInto. (* Push 3 *) + thread stepInto. (* Push 4 *) + thread stepInto. (* Send + *) + thread stepInto. (* Send seven: *) + + activation:: thread suspendedActivation. + assert: activation closure equals: nil. + assert: activation receiver equals: (ObjectMirror reflecting: self). + assert: activation method name equals: #DoItIn:With:. + assert: activation method source equals: ' | seven | seven:: 3 + 4 '. + assert: activation sender equals: nil. + locals:: activation slots. + assert: (locals at: 1) name equals: 'seven'. + assert: (locals at: 1) value reflectee equals: 7. +) +public testExceptionDuringResumeSlowly = ( + | exception thread | + exception:: Exception new. + thread:: ActivationMirror invokeSuspended: [exception signal]. + assert: thread isSuspended. + assertThread: thread atMethod: #testExceptionDuringResumeSlowly snippet: 'exception'. + + thread resumeSlowly. + assert: thread isBroken. + assert: thread result reflectee equals: exception. + assertThread: thread atMethod: #testExceptionDuringResumeSlowly snippet: 'exception signal'. +) +public testExceptionDuringStepOut = ( + | exception thread | + exception:: Exception new. + thread:: ActivationMirror invokeSuspended: [exception signal]. + assert: thread isSuspended. + assertThread: thread atMethod: #testExceptionDuringStepOut snippet: 'exception'. + + thread suspendedActivation stepOut. + assert: thread isBroken. + assert: thread result reflectee equals: exception. + assertThread: thread atMethod: #testExceptionDuringStepOut snippet: 'exception signal'. +) +public testExceptionDuringStepOver = ( + | exception thread | + exception:: Exception new. + thread:: ActivationMirror invokeSuspended: [exception signal]. + assert: thread isSuspended. + assertThread: thread atMethod: #testExceptionDuringStepOver snippet: 'exception'. + + thread suspendedActivation stepOver. + assert: thread isSuspended. + assertThread: thread atMethod: #testExceptionDuringStepOver snippet: 'signal'. + + thread suspendedActivation stepOver. + assert: thread isBroken. + assert: thread result reflectee equals: exception. + assertThread: thread atMethod: #testExceptionDuringStepOver snippet: 'exception signal'. +) +public testQuickResumeReturnAcrossBoundry = ( + assert: quickResumeReturnAcrossBoundry equals: 'expected return' +) +public testQuickResumeUnhandledException = ( + | exception = Exception new. closure thread activation | + closure:: [exception signal]. + + thread:: ActivationMirror invokeSuspended: closure. + assert: thread isSuspended. + + thread resume. + + assert: thread isBroken. + assert: thread result reflectee equals: exception. + activation:: thread suspendedActivation. + assert: activation closure equals: (ObjectMirror reflecting: closure). + assert: activation receiver equals: (ObjectMirror reflecting: self). + assert: activation method name equals: #testQuickResumeUnhandledException. + assert: activation sender equals: nil. +) +public testResumeAfterException = ( + | exception thread | + thread:: (ActivationMirror invokeSuspended: [Exception new signal]) resume. + + assert: thread isBroken. + assertThread: thread atMethod: #testResumeAfterException snippet: 'Exception new signal'. + exception:: thread result reflectee. + + thread resume. + assert: thread isFulfilled. + assert: thread result reflectee equals: exception. + assert: thread suspendedActivation equals: nil. +) +public testResumeAfterExceptionSlowly = ( + | exception thread | + thread:: (ActivationMirror invokeSuspended: [Exception new signal]) resume. + + assert: thread isBroken. + assertThread: thread atMethod: #testResumeAfterExceptionSlowly snippet: 'Exception new signal'. + exception:: thread result reflectee. + + thread resumeSlowly. + assert: thread isFulfilled. + assert: thread result reflectee equals: exception. + assert: thread suspendedActivation equals: nil. +) +public testThreadResumeBroken = ( + | exception thread | + exception:: Exception new. + thread:: (ActivationMirror invokeSuspended: [exception signal]) resume. + assert: thread isBroken. + assertThread: thread atMethod: #testThreadResumeBroken snippet: 'exception signal'. + + thread resume. + assert: thread isFulfilled. + assert: thread result reflectee equals: exception. + assert: thread suspendedActivation equals: nil. +) +public testThreadResumeFulfilled = ( + | thread | + thread:: (ActivationMirror invokeSuspended: [add: 3 to: 4]) resume. + assert: thread isFulfilled. + assert: thread result reflectee equals: 7. + assert: thread suspendedActivation equals: nil. + + should: [thread resume] signal: Exception. + assert: thread isFulfilled. + assert: thread result reflectee equals: 7. + assert: thread suspendedActivation equals: nil. +) +public testThreadResumeSuspended = ( + | thread activation1 activation2 | + thread:: ActivationMirror invokeSuspended: [add: 3 to: 4]. + assert: thread isSuspended. + assertThread: thread atMethod: #testThreadResumeSuspended snippet: '3'. + activation1:: thread suspendedActivation. + + thread resume. + assert: thread isFulfilled. + assert: thread result reflectee equals: 7. + assert: thread suspendedActivation equals: nil. +) +public testThreadResumeTerminated = ( + | thread | + thread:: (ActivationMirror invokeSuspended: [add: 3 to: 4]) terminate. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. + + should: [thread resume] signal: Exception. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. +) +public testThreadTerminateBroken = ( + | thread | + thread:: (ActivationMirror invokeSuspended: [Exception new signal]) resume. + assert: thread isBroken. + assertThread: thread atMethod: #testThreadTerminateBroken snippet: 'Exception new signal'. + + thread terminate. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. +) +public testThreadTerminateFulfilled = ( + | thread | + thread:: (ActivationMirror invokeSuspended: [add: 3 to: 4]) resume. + assert: thread isFulfilled. + assert: thread result reflectee equals: 7. + assert: thread suspendedActivation equals: nil. + + should: [thread terminate] signal: Exception. + assert: thread isFulfilled. + assert: thread result reflectee equals: 7. + assert: thread suspendedActivation equals: nil. +) +public testThreadTerminateSuspended = ( + | thread activation1 activation2 | + thread:: ActivationMirror invokeSuspended: [add: 3 to: 4]. + assert: thread isSuspended. + assertThread: thread atMethod: #testThreadTerminateSuspended snippet: '3'. + activation1:: thread suspendedActivation. + + thread stepInto. (* Push 3 *) + thread stepInto. (* Push 4 *) + thread stepInto. (* Send add:to: *) + assertThread: thread atMethod: #add:to: snippet: 'x'. + activation2:: thread suspendedActivation. + + thread terminate. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. + assert: activation1 isUncontinuable. + assert: activation2 isUncontinuable. +) +public testThreadTerminateTerminated = ( + | thread | + thread:: (ActivationMirror invokeSuspended: [add: 3 to: 4]) terminate. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. + + should: [thread terminate] signal: Exception. + assert: thread isTerminated. + assert: thread result equals: nil. + assert: thread suspendedActivation equals: nil. +) +) : ( +TEST_CONTEXT = () +) +public class SimulationTests = SuperSimulationTests ( +(* Test that the Newspeak bytecodes run under image-side simulation and return the same results as the VM. *) +) ( +assertSimulation: block answers: expectedResult = ( + | thread | + thread:: ActivationMirror invokeSuspended: block. + thread resumeSlowly. + assert: thread isFulfilled message: 'Expected thread fulfilled'. + assert: thread result reflectee equals: expectedResult. +) +assertSimulation: block signals: exceptionTestBlock = ( + | thread | + thread:: ActivationMirror invokeSuspended: block. + thread resumeSlowly. + assert: thread isBroken message: 'Expected thread broken'. + exceptionTestBlock value: thread result reflectee. +) +public bar = ( + ^'bar' +) +public barWithArg: n = ( + ^n + 20 +) +cannotReturn = ( + ^[^42] +) +ensure1 = ( + [^'try-block'] ensure: [^'ensure-block']. + ^'afterward' +) +ensure2 = ( + ^['try-block'] ensure: ['ensure-block']. +) +ensure3 = ( + [^'try-block'] ensure: ['ensure-block']. + ^'afterward' +) +foo = ( + ^'sub' +) +fooWithArg: n = ( + ^'sub' +) +simulationCannotReturnAcrossBoundry = ( + assertSimulation: [^'escaping simulation!'] signals: + [:simulatedException | + assert: (simulatedException printString startsWith: 'CannotReturn'). + assert: simulatedException result equals: 'escaping simulation!']. + ^'expected return' +) +public testSimulationCannotReturn = ( + assertSimulation: [cannotReturn value] signals: + [:simulatedException | + assert: (simulatedException printString startsWith: 'CannotReturn'). + assert: simulatedException result equals: 42]. +) +public testSimulationCannotReturnAcrossBoundry = ( + assert: simulationCannotReturnAcrossBoundry equals: 'expected return'. +) +public testSimulationEnclosingObject = ( + assertSimulation: [outer SimulationTests] answers: outer SimulationTests. + assertSimulation: [outer ActivationMirrorTesting] answers: outer ActivationMirrorTesting. +) +public testSimulationImplicitReceiverSend = ( + assertSimulation: [foo] answers: 'sub'. + assertSimulation: [fooWithArg: 1] answers: 'sub'. + assertSimulation: [baz] answers: 'enclosing'. +) +public testSimulationJump = ( + | mirror = ObjectMirror reflecting: self. | + + "a" isKindOfString ifFalse: [^self]. (* This fails badly enough on Squeak to lock up the UI. *) + + assertSimulation: [(mirror evaluate: 'foo') result] answers: (mirror evaluate: 'foo') result. +) +public testSimulationNonBooleanReceiver = ( + assertSimulation: [0 ifTrue: [1]] + signals: [:simulatedException | assert: (simulatedException printString startsWith: 'NonBooleanReceiver')]. + + assertSimulation: [0 ifFalse: [1]] + signals: [:simulatedException | assert: (simulatedException printString startsWith: 'NonBooleanReceiver')]. +) +public testSimulationOuterSend = ( + assertSimulation: [outer SimulationTests foo] answers: 'sub'. + assertSimulation: [outer SimulationTests fooWithArg: 1] answers: 'sub'. + assertSimulation: [outer ActivationMirrorTesting foo] answers: 'enclosing'. + assertSimulation: [outer ActivationMirrorTesting fooWithArg: 1] answers: 'enclosing'. +) +public testSimulationPerform0 = ( + | message = Message selector: #bar arguments: {}. | + assertSimulation: [message sendTo: self] answers: (message sendTo: self). +) +public testSimulationPerform1 = ( + | message = Message selector: #barWithArg: arguments: {7}. | + assertSimulation: [message sendTo: self] answers: (message sendTo: self). +) +public testSimulationSelfSend = ( + assertSimulation: [self foo] answers: 'sub'. + assertSimulation: [self fooWithArg: 1] answers: 'sub'. +) +public testSimulationSuperSend = ( + assertSimulation: [super foo] answers: 'super'. + assertSimulation: [super fooWithArg: 1] answers: 'super'. +) +public testSimulationUnhandledException = ( + | exception = Exception new. | + assertSimulation: [exception signal] + signals: [:simulatedException | assert: simulatedException equals: exception]. +) +public testSimulationUnwindProtect = ( + assertSimulation: [ensure1] answers: 'ensure-block'. + assertSimulation: [ensure2] answers: 'try-block'. + assertSimulation: [ensure3] answers: 'try-block'. +) +public testSimulationValue0 = ( + | copied indirect closure | + copied:: 1. + indirect:: 2. + closure:: [copied + indirect]. + assertSimulation: [closure value] answers: closure value. + indirect:: 4. (* write after capture forces use of indirection vector *) +) +public testSimulationValue1 = ( + | copied indirect closure | + copied:: 1. + indirect:: 2. + closure:: [:x | copied + indirect + x]. + assertSimulation: [closure value: 4] answers: (closure value: 4). + indirect:: 4. (* write after capture forces use of indirection vector *) +) +public testSimulationValue2 = ( + | copied indirect closure | + copied:: 1. + indirect:: 2. + closure:: [:x :y | copied + indirect + x - y]. + assertSimulation: [closure value: 4 value: 8] answers: (closure value: 4 value: 8). + indirect:: 4. (* write after capture forces use of indirection vector *) +) +public testSimulationValue3 = ( + | copied indirect closure | + copied:: 1. + indirect:: 2. + closure:: [:x :y :z | copied + indirect + x - y * z]. + assertSimulation: [closure value: 4 value: 8 value: 16] answers: (closure value: 4 value: 8 value: 16). + indirect:: 4. (* write after capture forces use of indirection vector *) +) +public testSimulationValueArray = ( + | copied indirect closure | + copied:: 1. + indirect:: 2. + closure:: [:x :y :z | copied + indirect + x - y * z]. + assertSimulation: [closure valueWithArguments: {4. 8. 16}] answers: (closure valueWithArguments: {4. 8. 16}). + indirect:: 4. (* write after capture forces use of indirection vector *) +) +) : ( +TEST_CONTEXT = () +) +class SuperSimulationTests = TestContext () ( +foo = ( + ^'super' +) +fooWithArg: n = ( + ^'super' +) +) : ( +) +class TestBase = TestContext () ( +assertSet: actual equals: expected = ( + | missing extra missingString extraString | + missing:: Set new. + missing addAll: expected. + actual do: [:element | missing remove: element ifAbsent: []]. + extra:: Set new. + extra addAll: actual. + expected do: [:element | extra remove: element ifAbsent: []]. + (missing isEmpty and: [extra isEmpty]) ifTrue: [^self]. + + missingString: ''. + missing do: [:element | missingString: missingString, ' ', element printString]. + extraString: ''. + extra do: [:element | extraString: extraString, ' ', element printString]. + + failWithMessage: 'Missing:', missingString, ' Extra:', extraString. +) +in: collection findMirrorNamed: name = ( + collection do: [:mirror | mirror name = name ifTrue: [^mirror]]. + ^nil +) +) : ( +) +baz = ( + ^'enclosing' +) +foo = ( + ^'enclosing' +) +fooWithArg: n = ( + ^'enclosing' +) +) : ( +) diff --git a/out/ActivationMirrorTestingConfiguration.ns b/out/ActivationMirrorTestingConfiguration.ns new file mode 100644 index 00000000..3c4a7940 --- /dev/null +++ b/out/ActivationMirrorTestingConfiguration.ns @@ -0,0 +1,10 @@ +Newspeak3 +'Mirrors' +class ActivationMirrorTestingConfiguration packageTestsUsing: manifest = (| +private ActivationMirrorTesting = manifest ActivationMirrorTesting. +|) ( +public testModulesUsingPlatform: p minitest: m = ( + ^{ActivationMirrorTesting usingPlatform: p minitest: m} +) +) : ( +) diff --git a/out/ActivationMirrors.ns b/out/ActivationMirrors.ns new file mode 100644 index 00000000..4f328951 --- /dev/null +++ b/out/ActivationMirrors.ns @@ -0,0 +1,913 @@ +Newspeak3 +'Mirrors' +class ActivationMirrors usingPlatform: platform vmMirror: vmm = ( +(* Mirrors for method activations and processes. + +Copyright (c) 2009 Peter von der Ahe +Copyright (c) 2011 Gilad Bracha, Ryan Macnak and Cadence Design Systems +Copyright (c) 2012 Cadence Design Systems + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +''Software''), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED ''AS IS'', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *) +| + private OutOfScopeNotification = platform squeak OutOfScopeNotification. + private SyntaxErrorNotification = platform squeak SyntaxErrorNotification. + private Project = platform squeak Project. + private DebuggerMethodMap = platform squeak DebuggerMethodMap. + + private Map = platform collections Map. + private vmmirror = vmm. + private mirrors = platform mirrors. + private ObjectMirror = platform mirrors ObjectMirror. + private MixinBuilder = platform mirrors MixinBuilder. + private MixinMirror = platform mirrors MixinMirror. + private MethodMirror = platform mirrors MethodMirror. +|) ( +class ActivationMirror onContext: ctxt = (| + public (*BOGUS*) context_slot = ctxt. + public (*BOGUS*) sender_slot + protected home_slot + protected localNames_slot + protected methodMirror_slot +|#ACCESSBOGUS) ( +public = anotherMirror = ( + (anotherMirror isKindOfActivationMirror) + ifFalse: [ ^false]. + + ^context_slot == anotherMirror context_slot. +) +public activationsDo: action <[:ActivationMirror]> = ( + | currentMirror | + currentMirror:: self. + [currentMirror isNil] whileFalse: + [action value: currentMirror. + currentMirror:: currentMirror sender] +) +public activationsUpTo: activation = ( + (* Answer an Array of activations up to, but not including, activationOrNil *) + ^Array streamContents: + [:s | | current | + current:: self. + [s nextPut: current. + activation isSenderOf: current] whileFalse: + [current:: current sender]] +) +bciForHighlightingIn: thread ^ = ( + ^(pcForHighlightingIn: thread) - homeMethod initialPC + 1 +) +public compile: newSource ifFail: onFail ^ = ( + self subclassResponsibility. +) +public errorReportOn: stream = ( + context_slot errorReportOn: stream +) +public evaluate: expression +ifCompilerError: compilationErrorHandler <[:Error]> +ifError: evalErrorHandler <[:Error]> ^ = ( + subclassResponsibility +) +public evaluate: expression +with: scope +ifCompilerError: compilationErrorHandler <[:Error]> +ifError: evalErrorHandler <[:Error]> ^ = ( + (* Most languages don't need extra blackMarket during debugging *) + ^self evaluate: expression asString + ifCompilerError: compilationErrorHandler + ifError: evalErrorHandler +) +public hasActivation: activation ^ = ( + ^context_slot hasSender: activation context_slot +) +public hash = ( + ^context_slot hash. +) +public home ^ = ( + ^isBlockActivation + ifTrue: + [home_slot ifNil: + [context_slot home ifNotNil: + [:it | home_slot:: class onContext: it]]. + home_slot] + ifFalse: + [self] +) +public homeInThread ^ = ( + isBlockActivation ifFalse: [^self]. + home ifNotNil: + [:homeMirror | + (hasActivation: homeMirror) ifTrue: + [activationsDo: + [:each | + each context_slot == homeMirror context_slot ifTrue: [^each]]]]. + ^nil +) +public homeMethod ^ = ( + ^home ifNotNil: + [:it | + self == it + ifTrue: [context_slot method] + ifFalse: [it homeMethod]] +) +public isBlockActivation ^ = ( + ^context_slot closure notNil +) +public isKindOfActivationMirror = ( + ^true +) +private isMessageNotUnderstood ^ = ( + ^context_slot selector = #doesNotUnderstand: +) +public isSenderOf: activation ^ = ( + ^(self == activation sender_slot) + or: [context_slot == activation context_slot sender] +) +localNames ^ = ( + subclassResponsibility +) +public localNamesWithValuesDo: action <[:String :ObjectMirror]> = ( + localNames doWithIndex: + [:localName :i | + action + value: localName + value: (ObjectMirror reflecting: ([home context_slot at: i] ifError: ['']))] +) +public localVariableValueMirror: name = ( + | index | + index:: localNames indexOf: name. + ^ObjectMirror reflecting: ([home context_slot at: index] ifError: ['']) +) +public method ^ = ( + methodMirror_slot ifNil: [methodMirror_slot:: MethodMirror reflecting: homeMethod]. + ^methodMirror_slot +) +public notUnderstoodArguments = ( + ^(context_slot tempAt: 1) arguments +) +public notUnderstoodMessage ^ = ( + ^(context_slot tempAt: 1) selector +) +pc = ( + ^context_slot pc +) +pcForHighlightingIn: thread ^ = ( + (* The pc to use for highlighting depends on whther the context is the active (top) contex or not. + The top context's pc is its effective pc. But other contexts' pcs are those following a send, + since they are suspended after a send. Hence their highlighting pc is the pc previous to the current pc. *) + ^context_slot pc ifNotNil: + [:ctxtpc | + (thread isActiveContext: context_slot) + ifTrue: [ctxtpc] + ifFalse: [context_slot method pcPreviousTo: ctxtpc]] +) +public printOn: stream = ( + isBlockActivation + ifTrue: + [home ifNotNil: + [:it | + stream nextPutAll: '[] in '. + it printOn: stream. + ^self]. + stream nextPutAll: '<>'] + ifFalse: + [homeMethod ifNotNil: + [:it | | receiverMixin methodMixin | + receiverMixin:: receiver getClass mixin. + stream nextPutAll: receiverMixin simpleName. + methodMixin:: method definingMixin. + (receiverMixin = methodMixin) + ifFalse: + [stream nextPut: "(". + stream nextPutAll: methodMixin simpleName. + stream nextPut: ")"]. + stream space. + stream nextPutAll: (it selector ifNil: [it defaultSelector]). + isMessageNotUnderstood ifTrue: + [stream space. + notUnderstoodMessage printOn: stream]. + ^self]. + stream nextPutAll: '<>'] +) +public receiver ^ = ( + ^ObjectMirror reflecting: context_slot receiver +) +public selector ^ = ( + ^context_slot selector +) +public selectorForParsing = ( + ^#methodDecl +) +public sender ^ = ( + sender_slot ifNil: + [context_slot sender ifNotNil: + [:it | sender_slot:: (ActivationMirror reflecting: it)]]. + ^sender_slot +) +public setLocalVariable: variableName toExpression: exprString ifFail: onFail <[:String]> ^ = ( + | index newValue | + #BOGUS. (* Should take an ObjectMirror for the new value and call should choose with version of evaluate. *) + index:: localNames indexOf: variableName ifAbsent: + [variableName asInteger asString = variableName asString + ifTrue: [variableName asInteger + localNames size]]. + (index isNil or: [index < 1 or: [index > stackDepth]]) + ifTrue: [^onFail valueWithPossibleArgument: 'Not found: ', variableName]. + newValue:: self + evaluate: exprString + ifCompilerError: [:e | ^onFail cull: e description] + ifError: [:e | ^onFail cull: e description]. + home context_slot at: index put: newValue reflectee. +) +public setLocalVariable: variableName toValue: newValue ifFail: onFail <[:String]> ^ = ( + | index | + index:: localNames indexOf: variableName ifAbsent: + [variableName asInteger asString = variableName asString + ifTrue: [variableName asInteger + localNames size]]. + (index isNil or: [index < 1 or: [index > stackDepth]]) + ifTrue: [^onFail valueWithPossibleArgument: 'Not found: ', variableName]. + home context_slot at: index put: newValue. +) +public sourceAvailable ^ = ( + #ACCESSBOGUS. (* We should have decided not to colorize earlier when the method gave us nil source. *) + ^(homeMethod properties includesKey: #source) or: [homeMethod trailer hasSourcePointer] +) +public sourceRangeIn: thread ^ = ( + subclassResponsibility +) +stackDepth ^ = ( + isBlockActivation ifTrue: [^context_slot size]. + ^home context_slot size +) +public stackIndicesWithValuesDo: action <[:Integer :ObjectMirror]> = ( + | tempFrameSize | + tempFrameSize: localNames size. + stackDepth to: tempFrameSize + 1 by: -1 do: + [:i | + action + value: i - localNames size + value: (ObjectMirror reflecting: (context_slot at: i))] +) +public withAllActivations = ( + ^Array streamContents: + [:s | activationsDo: + [:each | s nextPut: each]]. +) +) : ( +public current = ( + ^ActivationMirror reflecting: vmmirror currentActivation sender +) +public reflecting: c ^ = ( + ^c methodClass language activationMirrorFor: c using: outer ActivationMirrors +) +) +public class ActivationMirrorCompiledByNewspeak onContext: c = ActivationMirror onContext: c ( +(* A mirror on activations whose code was produced by the Newspeak compiler (NS3 and above). *) +| + private debugInfo_slot + private debugMapper_slot +|) ( +public compile: newSource ifFail: onFail ^ = ( + | builder newSelector declMirror mixinMirror | + + builder:: MixinBuilder reflecting: method definingMixin reflectee. + newSelector:: (builder methods addFromSource: newSource) simpleName. + declMirror:: builder declaration install. + + mixinMirror:: builder isMeta + ifTrue: [declMirror classSide] + ifFalse: [declMirror instanceSide]. + + ^mixinMirror methods findMirrorNamed: newSelector. +) +debugInfo ^ = ( + (* This can only handle regular methods and do-its. It does not handle factories and other synthetic methods. *) + debugInfo_slot ifNil: [ + | imethod | + (homeMethod properties includesKey: #debugInfo) + ifTrue: [^debugInfo_slot:: homeMethod properties at: #debugInfo]. + imethod:: mirrors compiler + compileMethodSource: method source within: method definingMixin. + debugInfo_slot:: imethod debugInfo. + ]. + ^debugInfo_slot +) +debugMapper = ( + debugMapper_slot ifNil: [ + debugMapper_slot:: debugInfo mapperForContext: context_slot + ]. + ^debugMapper_slot +) +public evaluate: expression +ifCompilerError: compilationErrorHandler <[:Error]> +ifError: evalErrorHandler <[:Error]> ^ = ( + ^self evaluate: expression with: Map new ifCompilerError: compilationErrorHandler ifError: evalErrorHandler +) +public evaluate: expression +with: scope +ifCompilerError: compilationErrorHandler <[:Error]> +ifError: evalErrorHandler <[:Error]> ^ = ( + (* Evaluate [expression] with the reflectee as the receiver. Names in scope in the current activation will be available, with the exception that from a closure activation any setters for temporaries not written to in that closure will only update the value seen in that closure, not all enclosing contexts where that temporary is in scope. Allow [`] as an identifier, bound to [blackMarket]. If [expression] cannot be compiled, activate [compilationErrorHandler] with the exception. If the evaluation of [expression] raises an error, activate [evalErrorHandler] with the error. Otherwise return an ObjectMirror on the result of [expression]. *) + + | rawScope mxnMirror mtdMirror result | + rawScope:: Map new. + scope keysAndValuesDo: [:key :value | rawScope at: key put: value reflectee]. + + [mxnMirror:: method definingMixin. (* Super, outer and implicit receiver sends should behave like the expression is in the method class, not the receiver class. *) + mtdMirror:: mirrors compiler + compileExpressionSource: expression asString + debugMapper: debugMapper + withScope: rawScope + inMixin: mxnMirror. + + mtdMirror category: #DoIts. + mtdMirror pragmas: {#isExpression -> true}. + mtdMirror methodMixin: mxnMirror reflectee. + mtdMirror compiledMethod properties + at: #source put: expression; + at: #debugInfo put: mtdMirror debugInfo] + on: Error + do: [:e | ^compilationErrorHandler cull: e ]. + + [result:: vmmirror + object: context_slot receiver + executeMethod: mtdMirror compiledMethod + with: {context_slot. rawScope} + ifFail: [ ^compilationErrorHandler cull: (Error description: 'primitiveExecuteMethod failed') ]] + on: Error + do: [:e | ^evalErrorHandler cull: e]. + + ^mirrors ObjectMirror reflecting: result +) +public isInitializer ^ = ( + ^method isInitializer +) +localNames ^ = ( + sourceAvailable ifFalse: [^{}]. + + localNames_slot ifNil: [ + localNames_slot:: debugMapper localNames + ]. + ^localNames_slot +) +localNamesWithIndicesDo: action <[:String :Integer]> = ( + localNames doWithIndex: [:localName :index | action value: localName value: index]. +) +public localNamesWithValuesDo: action <[:String :ObjectMirror]> = ( + localNames do: [:ea | action value: ea value: + (ObjectMirror reflecting: ([debugMapper getValueOf: ea] + ifError: ['']))]. +) +public localVariableValueMirror: name = ( + ^ObjectMirror reflecting: (debugMapper getValueOf: name) +) +localVariableValueMirrorForIndex: desiredIndex = ( + localNames doWithIndex: + [:localName :index | + index = desiredIndex ifTrue: + [^ObjectMirror reflecting: (debugMapper getValueOf: localName)]] +) +public sourceRangeIn: thread ^ = ( + sourceAvailable ifFalse: [^nil]. + ^debugInfo bciSourceMapping at: (bciForHighlightingIn: thread) ifAbsent: [nil]. +) +public stackIndicesWithValuesDo: action <[:Integer :ObjectMirror]> = ( + | tempFrameSize | + #BOGUS yourself. + (* Need to specialize. The operand stack isn't simply after the number of locals in scope because remote temps don't take one slot each on the stacks of nested-closures. *) + + tempFrameSize: localNames size (* + hidden itvs, setters, pushnils *). + + stackDepth to: tempFrameSize + 1 by: -1 do: + [:i | + action + value: i - tempFrameSize + value: (ObjectMirror reflecting: (context_slot at: i))] +) +) : ( +) +public class ActivationMirrorCompiledBySqueak onContext: ctxt = ActivationMirror onContext: ctxt ( +(* A mirror that operates on activations whose code was compiled by the Squeak back-end. *) +| + protected methodMap_slot +|) ( +public compile: newSource ifFail: onFail ^ = ( + | klass newSelector newCM | + klass:: method reflectee methodClass. + newSelector:: klass + compile: newSource + classified: 'as-yet-unclassified' + notifying: nil. + newCM:: klass compiledMethodAt: newSelector. + + ^MethodMirror reflecting: newCM +) +public evaluate: expression +ifCompilerError: compilationErrorHandler <[:Error]> +ifError: evalErrorHandler <[:Error]> ^ = ( + [ + | newValue | + newValue:: method reflectee methodClass language compiler new + evaluate: expression asString + in: context_slot + to: receiver reflectee + notifying: (* requestor *) nil + ifFail: [^compilationErrorHandler valueWithPossibleArgument: 'Error']. + ^ObjectMirror reflecting: newValue + ] on: SyntaxErrorNotification do: [:ex | ^compilationErrorHandler cull: ex] + on: OutOfScopeNotification do: [:ex | ex resume: true] +) +localNames ^ = ( + localNames_slot ifNil: [ + (* localNames_slot:: methodNode ifNotNil: [:it | it tempNames] *) + localNames_slot:: methodMap tempNamesForContext: context_slot + ]. + ^localNames_slot ifNil: [{}] +) +localNamesWithIndicesDo: action <[:String :Number]> = ( + localNames doWithIndex: [:localName :index | action value: localName value: index]. +) +public localNamesWithValuesDo: action <[:String :ObjectMirror]> = ( + localNames doWithIndex: + [:localName :i | + action + value: localName + value: (ObjectMirror reflecting: (methodMap namedTempAt: i in: context_slot))] +) +public localVariableValueMirror: name = ( + | index | + index:: localNames indexOf: name. + ^ObjectMirror reflecting: ([methodMap namedTempAt: index in: context_slot] ifError: ['']) +) +localVariableValueMirrorForIndex: desiredIndex = ( + localNames doWithIndex: + [:localName :index| + index = desiredIndex ifTrue: + [^ObjectMirror reflecting: ([methodMap namedTempAt: index in: context_slot] ifError: [''])]]. +) +methodMap ^ = ( + methodMap_slot ifNil: [methodMap_slot:: DebuggerMethodMap forMethod: homeMethod]. + ^methodMap_slot +) +public sourceRangeIn: thread ^ = ( + ^context_slot debuggerMap + rangeForPC: pc + contextIsActiveContext: (thread isActiveContext: context_slot) +) +) : ( +) +public class NSActivationMirror on: anActivationMirror thread: aThreadMirror = ( +(* Represents a higher level activation mirror. It has subclasses like NSMethodActivationMIrror and NSTransientSlotMirror*) +| + public lowLevelActivationMirror = anActivationMirror. + threadMirror = aThreadMirror. + senderSlot + homeSlot +|) ( +public = anotherMirror = ( + (anotherMirror isKindOfNSActivationMirror) + ifFalse: [ ^false]. + + ^lowLevelActivationMirror = anotherMirror lowLevelActivationMirror. +) +public activationsDo: action = ( + | currentMirror | + currentMirror:: self. + [currentMirror isNil] whileFalse: + [action value: currentMirror. + currentMirror:: currentMirror sender] +) +public compile: newSource ifFail: onFail ^ = ( + self subclassResponsibility. +) +computeHome = ( + ^threadMirror activationFromLowLevelActivation: lowLevelActivationMirror home. +) +computeSender = ( + subclassResponsibility. +) +public context_slot = ( + ^lowLevelActivationMirror context_slot. +) +definingMixin = ( + ^lowLevelActivationMirror method definingMixin +) +public errorReportOn: stream = ( + context_slot errorReportOn: stream +) +public evaluate: expression +ifCompilerError: compilationErrorHandler <[:Error]> +ifError: evalErrorHandler <[:Error]> ^ = ( + ^lowLevelActivationMirror evaluate: expression asString + ifCompilerError: compilationErrorHandler + ifError: evalErrorHandler +) +public evaluate: expression +with: scope +ifCompilerError: compilationErrorHandler <[:Error]> +ifError: evalErrorHandler <[:Error]> ^ = ( + ^lowLevelActivationMirror evaluate: expression asString + with: scope + ifCompilerError: compilationErrorHandler + ifError: evalErrorHandler +) +public hash = ( + ^lowLevelActivationMirror hash. +) +public home = ( + homeSlot ifNotNil: [:it | ^it ]. + homeSlot:: computeHome. + ^homeSlot. +) +public homeInThread = ( + ^threadMirror activationFromLowLevelActivation: lowLevelActivationMirror homeInThread. +) +public homeMethod = ( + ^lowLevelActivationMirror homeMethod. +) +public isBlockActivation = ( + ^lowLevelActivationMirror isBlockActivation. +) +public isKindOfNSActivationMirror = ( + ^true. +) +public localNamesWithValuesDo: action <[:String :ObjectMirror]> = ( + ^lowLevelActivationMirror localNamesWithValuesDo: action. +) +public localVariableValueMirror: name = ( + ^lowLevelActivationMirror localVariableValueMirror: name. +) +public method = ( + ^lowLevelActivationMirror method. +) +public name = ( + subclassResponsibility +) +public notUnderstoodMessage ^ = ( + ^lowLevelActivationMirror notUnderstoodMessage. +) +public receiver = ( + ^lowLevelActivationMirror receiver. +) +public restart = ( + ^threadMirror restartInMethodActivation: self. +) +public selectorForParsing = ( + self subclassResponsiblity +) +public sender = ( + senderSlot ifNotNil: [:it | ^it ]. + senderSlot:: computeSender. + ^senderSlot. +) +public setLocalVariable: variableName toExpression: exprString ifFail: onFail = ( + ^lowLevelActivationMirror setLocalVariable: variableName toExpression: exprString ifFail: onFail. +) +public setLocalVariable: variableName toValue: newValue ifFail: onFail <[:String]> ^ = ( + ^lowLevelActivationMirror setLocalVariable: variableName toValue: newValue ifFail: onFail. +) +public sourceAvailable ^ = ( + subclassResponsibility. +) +public sourceRange ^ = ( + subclassResponsibility +) +public stackIndicesWithValuesDo: action <[:Integer :ObjectMirror]> = ( + lowLevelActivationMirror stackIndicesWithValuesDo: action. +) +public stepIntoBlock = ( + ^threadMirror stepIntoBlockInMethodActivation: self. +) +public withAllActivations = ( + ^Array streamContents: + [:s | activationsDo: + [:each | s nextPut: each]]. +) +) : ( +) +public class NSMethodActivationMirror on: anActivationMirror thread: aThreadMirror = NSActivationMirror on: anActivationMirror thread: aThreadMirror ( +) ( +public compile: newSource ifFail: onFail ^ = ( + ^lowLevelActivationMirror compile: newSource ifFail: onFail. +) +computeSender = ( + | lowLevelSender | + lowLevelSender:: lowLevelActivationMirror sender. + lowLevelSender ifNil: [ ^nil]. + ^threadMirror activationFromLowLevelActivation: lowLevelSender. +) +public method = ( + |mirror| + mirror:: definingMixin methods findMirrorNamed: name. + mirror ifNil: [ mirror:: super method. ]. + ^mirror. +) +public name = ( + ^lowLevelActivationMirror selector. +) +public notUnderstoodArguments = ( + ^lowLevelActivationMirror notUnderstoodArguments +) +public selectorForParsing = ( + ^#methodDecl +) +public sourceAvailable = ( + ^lowLevelActivationMirror sourceAvailable. +) +public sourceRange ^ = ( + ^lowLevelActivationMirror sourceRangeIn: threadMirror lowLevelThreadMirror. +) +) : ( +public handleActivation: aLowLevelActivation whenCreated: createdBlock whenContextUpdated: contextUpdatedBlock on: aThreadMirror = ( + ^createdBlock value: (self on: aLowLevelActivation thread: aThreadMirror). +) +public handles: aLowLevelActivation = ( + | mixinMirror | + + aLowLevelActivation isBlockActivation ifTrue: [^true]. + mixinMirror:: aLowLevelActivation method definingMixin. + ^mixinMirror methods includesMirrorNamed: aLowLevelActivation method name. +) +) +class NSThreadMirror on: aLowLevelThreadMirror = ( +(* Represents a high level Thread mirror (it is at the newspeak level). It wraps the standard ThreadlMirror and is in charge of taking more advanced decisions in terms of which kind activation mirror shoud be created on every step. See #activationFromLowLevelActivation: . This class was introduced in the process of adding transient slots to the language *) +| + public lowLevelThreadMirror = aLowLevelThreadMirror. +|) ( +public activationFromLowLevelActivation: aLowLevelActivation ^ = ( +(* It decides which kind kind of activation mirror should be created given a low level activation Mirror. It tries to match a low level activation with a suitable handler. If no handler matches, it defaults to a NSMethodActivationMIrror *) + + | possibleHandlers matchedHandler | + possibleHandlers:: { NSMethodActivationMirror . NSTransientSlotActivationMirror }. + matchedHandler:: possibleHandlers detect: [:each | each handles: aLowLevelActivation] ifNone: [ NSMethodActivationMirror ]. + ^matchedHandler + handleActivation: aLowLevelActivation + whenCreated: [:newActivation | newActivation] + whenContextUpdated: [:updatedLowLevelActivation | activationFromLowLevelActivation: updatedLowLevelActivation] + on: self. +) +public createActivationFromContext: context ^ = ( + ^activationFromLowLevelActivation: (lowLevelThreadMirror createActivationFromContext: context). +) +public install: method restart: activation ifFail: onFail = ( + | newActivation | + newActivation:: lowLevelThreadMirror + install: method + restart: activation lowLevelActivationMirror + ifFail: onFail. + + ^activationFromLowLevelActivation: newActivation. +) +public isActiveContext: aContext = ( + ^lowLevelThreadMirror isActiveContext: aContext. +) +public isActiveThread = ( + ^lowLevelThreadMirror isActiveThread. +) +public name = ( + ^lowLevelThreadMirror name. +) +public printOn: stream = ( + ^lowLevelThreadMirror printOn: stream. +) +public restart: activation ^ = ( + ^activationFromLowLevelActivation: (lowLevelThreadMirror restart: activation lowLevelActivationMirror). +) +public resume = ( + ^lowLevelThreadMirror resume. +) +public return: mirror from: activation ^ = ( + ^activationFromLowLevelActivation: (lowLevelThreadMirror return: mirror from: activation lowLevelActivationMirror). +) +public squeakProcess = ( + ^lowLevelThreadMirror squeakProcess. +) +public stepInto: activation ^ = ( + ^activationFromLowLevelActivation: (lowLevelThreadMirror stepInto: activation lowLevelActivationMirror). +) +public stepIntoBlock: activation ^ = ( + ^activationFromLowLevelActivation: (lowLevelThreadMirror stepIntoBlock: activation lowLevelActivationMirror). +) +public stepOver: activation ^ = ( + ^activationFromLowLevelActivation: (lowLevelThreadMirror stepOver: activation lowLevelActivationMirror). +) +public summary = ( + ^lowLevelThreadMirror summary. +) +public suspend = ( + ^lowLevelThreadMirror suspend. +) +public terminate = ( + ^lowLevelThreadMirror terminate. +) +public unwindRecursion: activation ^ = ( + ^activationFromLowLevelActivation: (lowLevelThreadMirror unwindRecursion: activation lowLevelActivationMirror). +) +) : ( +) +public class NSTransientSlotActivationMirror on: anActivationMirror thread: aThreadMirror = NSActivationMirror on: anActivationMirror thread: aThreadMirror ( +(* +Represent that activation mirror for a transient slot. It takes care of computer the right sender, providing the current sourceRange considering the particular grammar , providing access to compiling the transient slot code etc +*) +) ( +public compile: newSource ifFail: onFail ^ = ( + [ | builder newMB | + builder:: MixinBuilder reflecting: definingMixin reflectee. + newMB:: builder transientSlots addFromSource: newSource. + builder declaration install. + ^definingMixin transientSlots findMirrorNamed: newMB simpleName. ] + on: Error + do: [:ex | ^onFail value: ex description]. +) +computeSender = ( + | lowLevelSender | + lowLevelSender:: lowLevelActivationMirror sender sender. (* the first sender skips the main method for the transient slot. It should not show in the debugger *) + lowLevelSender ifNil: [ ^nil]. + ^threadMirror activationFromLowLevelActivation: lowLevelSender. +) +public localNamesWithValuesDo: action <[:String :ObjectMirror]> = ( + (* transient slots do not have local variables (temp or parameters) . It's just an expression*) + ^{} +) +public method = ( + ^definingMixin transientSlots findMirrorNamed: name. +) +public name = ( + ^lowLevelActivationMirror sender selector. +) +public selectorForParsing = ( + ^#transientSlotDecl +) +public sourceAvailable = ( + ^true. +) +public sourceRange ^ = ( + | methodRange | + + methodRange:: lowLevelActivationMirror sourceRangeIn: threadMirror lowLevelThreadMirror. + methodRange ifNil: [ ^nil]. + ^method rangeFromTransientSlotExpressionToMethod: methodRange. +) +) : ( +public handleActivation: aLowLevelActivation whenCreated: createdBlock whenContextUpdated: contextUpdatedBlock on: aThreadMirror = ( + | isMainMethod mixinMirror tsMirror methodName isCachedValueEmpty newActivation | + methodName:: aLowLevelActivation method name. + mixinMirror:: aLowLevelActivation method definingMixin. + isMainMethod:: mixinMirror transientSlots includesMirrorNamed: methodName. + + (* setter *) + (methodName endsWith: ':') ifTrue: + [ + newActivation:: aThreadMirror lowLevelThreadMirror complete: aLowLevelActivation. + ^contextUpdatedBlock value: newActivation. + ]. + + (* getter *) + isMainMethod + ifTrue: [ + tsMirror:: mixinMirror transientSlots findMirrorNamed: methodName. + isCachedValueEmpty:: (aLowLevelActivation receiver getTransientSlot: methodName) reflectee isNil. + newActivation:: isCachedValueEmpty + ifTrue: [ aThreadMirror lowLevelThreadMirror step: aLowLevelActivation untilReturnOrMethodOnTopNamed: tsMirror initMethodName ] + ifFalse: [ aThreadMirror lowLevelThreadMirror complete: aLowLevelActivation]. + + ^contextUpdatedBlock value: newActivation] + ifFalse: [ + ^createdBlock value: (self on: aLowLevelActivation thread: aThreadMirror) ]. +) +public handles: aLowLevelActivation = ( + | mixinMirror | + + mixinMirror:: aLowLevelActivation method definingMixin. + ^mixinMirror isMethodMirrorForTransientSlot: aLowLevelActivation method. +) +) +class ThreadMirror on: process = ( +(* Represents a thread of control. On every step, the internal squeak context is evaluated and a new ActivationMirror is created, even if the underlying context object is exactly the same. The sender method in ActivatiolnMirror creates a new ActivationMirror for the sender (and saves it for further requests). This two things may look a bit of an overkill, but really simplifies situations where the ActivationMirror sender chain need to be updated. In this case the entire ActivationMirror chain will be reacreated on every context step. The #= method in ActivationMirror is defined so two elements are equal if they have the same underlying context, The debugger IDE relies on this operator *) +| + public (* BOGUS *) squeakProcess = process. + protected wasMorphic = Project uiProcess == process. +|#ACCESSBOGUS) ( +public complete: activation ^ = ( + | newContext | + newContext:: squeakProcess complete: activation context_slot. + ^createActivationFromContext: squeakProcess stepToSendOrReturn. +) +public createActivationFromContext: context ^ = ( + assert: [context isNil not] message: 'context is nil'. + ^ActivationMirror reflecting: context +) +public install: method restart: activation ifFail: onFail = ( + | newContext | + activation sender. (* Remember sender *) + activation ifNil: [^onFail value: 'Block''s method not on stack']. + newContext:: squeakProcess popTo: activation context_slot. + newContext == activation context_slot ifFalse: + [onFail value: 'Method saved, but error during unwind.'. + ^activationFor: newContext relativeTo: activation]. + squeakProcess + restartTopWith: method reflectee; + stepToSendOrReturn. + ^createActivationFromContext: newContext. +) +public isActiveContext: aContext = ( + ^squeakProcess suspendedContext == aContext +) +public isActiveThread = ( + ^squeakProcess isActiveProcess +) +public name = ( + ^wasMorphic + ifTrue: ['UI event loop'] + ifFalse: ['thread ', squeakProcess name]. +) +public printOn: stream = ( + stream + nextPutAll: 'ThreadMirror:'; + nextPutAll: name +) +public restart: activation ^ = ( + | newContext | + newContext:: squeakProcess popTo: activation context_slot. + newContext == activation context_slot ifTrue: + [newContext:: squeakProcess restartTop; stepToSendOrReturn]. + ^createActivationFromContext: newContext. +) +public resume = ( + | oldUiProcess | + wasMorphic + ifTrue: + [oldUiProcess:: Project uiProcess. + Project resumeProcess: squeakProcess] + ifFalse: + [squeakProcess resume]. + wasMorphic ifTrue: [oldUiProcess terminate] +) +public return: mirror from: activation ^ = ( + | newContext | + newContext:: squeakProcess popTo: activation sender context_slot value: mirror reflectee. + ^createActivationFromContext: newContext. +) +public step: activation untilReturnOrMethodOnTopNamed: aMethodName ^ = ( + |newContext| + + [ newContext:: squeakProcess step] + doWhileTrue: [ (activation context_slot isDead not) and: [newContext selector ~= aMethodName asSymbol]]. + newContext:: squeakProcess stepToSendOrReturn. + ^createActivationFromContext: newContext. +) +public stepInto: activation ^ = ( + squeakProcess step: activation context_slot. + ^createActivationFromContext: squeakProcess stepToSendOrReturn. +) +public stepIntoBlock: activation ^ = ( + squeakProcess stepToHome: activation context_slot. + ^createActivationFromContext: squeakProcess stepToSendOrReturn. +) +public stepOver: activation ^ = ( + | newContext | + newContext:: squeakProcess completeStep: activation context_slot. + newContext == activation context_slot ifTrue: + [newContext:: squeakProcess stepToSendOrReturn]. + ^createActivationFromContext: newContext. +) +public summary = ( + ^name, ' @ priority ', squeakProcess priority asString +) +public suspend = ( + (* Special case for the Morphic UI thread. NsFFISessionManager takes care of native UI thread. *) + Project spawnNewProcessIfThisIsUI: squeakProcess. + + squeakProcess suspend. +) +public terminate = ( + Project spawnNewProcessIfThisIsUI: squeakProcess. + squeakProcess terminate +) +public unwindRecursion: activation ^ = ( + | newContext | + newContext:: squeakProcess popTo: activation context_slot findSecondToOldestSimilarSender. + ^createActivationFromContext: newContext. +) +) : ( +) +public onProcess: process ^ = ( + assert: [process isNil not] message: 'process is nil'. + ^NSThreadMirror on: (ThreadMirror on: process). +(* ^(ThreadMirror on: process). *) +) +) : ( +) diff --git a/out/Actors.ns b/out/Actors.ns new file mode 100644 index 00000000..4a0fb68e --- /dev/null +++ b/out/Actors.ns @@ -0,0 +1,831 @@ +Newspeak3 +'Actors' +class Actors usingPlatform: p vm: vm = (| +private SharedQueue2 = p squeak SharedQueue2. +private WeakMap = p squeak WeakKeyDictionary. +private List = p collections List. +private Transcript = p squeak Transcript. +private SqueakDelay = p squeak Delay. + +private Processor = p squeak Processor. +private UnhandledError = p squeak UnhandledError. +private primitives = vm. + +private brazil = p brazil. +public (* bogus - temporary access to a default actor *) uiActor = UIActor new. + +private internalRefs = WeakMap new. + +public Promise = PromiseUtils new. +|p squeak Project uiProcess actor: uiActor. +p actors: self) ( +public class Actor named: debugName = (| +private (* N.B. Do not leak to subinstances. *) internalActor = (ProcessActor named: debugName) startEventLoop. +|) ( +public interrupt = ( + unimplemented +) +public onError: onError <[:E]> = ( + unimplemented. +) +public seed: value ^ = ( + (* Creating a far reference to a PassByCopy is questionable. It may be that this should be seed: receiver perform: selector with: argument. *) + (isValueObject: value) ifFalse: [Error signal: 'Cannot seed an actor with a non-Value.']. + ^createFarReferenceTo: value in: internalActor for: currentActor. +) +public terminate = ( + unimplemented +) +) : ( +) +protected class EventualSendReactor selector: s arguments: a resolver: r = ( +(* An eventual-send to a promise. + +Note that all slots contain objects that belong to the actor which performed the eventual send. *) +| +protected selector = s. +protected arguments = a. +protected resolver = r. +|) ( +public reactBroken: error = ( + (* Broken promise contagion. *) + resolver __owner == currentActor ifFalse: [halt]. + (* Should this be immediate? *) + (* resolver internalBreak: error. ? *) + currentActor enqueueMessage: + (PendingDelivery + receiver: resolver + selector: #internalResolve: + arguments: {InternalBrokenRef problem: error __owner: resolver __owner} + resolver: nil) +) +public reactMoreResolved: internalRef = ( + resolver internalResolve: (asInternalRef: (internalRef eventualSend: selector arguments: arguments)). +) +public reactResolved: value = ( + resolver __owner == currentActor ifFalse: [halt]. + resolver internalResolve: + (asInternalRef: (currentActor + eventualSendTo: value + selector: selector + arguments: arguments)) +) +) : ( +) +class InternalActor = () ( +public currentActor = ( + (* BOGUS. Polymorphic with other actor system. *) + ^self +) +public eventualSendTo: receiver selector: selector arguments: arguments ^ = ( + (* Sent from the compilation of an eventual send, via the same method in ProcessScheduler. *) + ^(asInternalRef: receiver) eventualSend: selector arguments: arguments +) +) : ( +) +class InternalBrokenRef problem: p __owner: o = InternalRef __owner: o (| +protected problem = p. +|) ( +public addReactor: reactor = ( + reactor reactBroken: problem. +) +public checkCycle ^ = ( + ^false +) +public eventualSend: selector arguments: arguments ^ = ( + ^self externalRef (* I.e., broken with same problem. Should this wait for the next turn? *) +) +public immediateSend: message ^ = ( + ^Error signal: 'Cannot immediate-send to a broken ref: ', message selector +) +public printOn: stream = ( + stream nextPutAll: 'InternalBrokenRef: '. + problem printOn: stream. +) +public refPrintOn: stream = ( + stream nextPutAll: ''. +) +public shorten ^ = ( + ^self +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise = InternalLocalPromise __owner: __owner. | + currentActor enqueueMessage: + (PendingDelivery + receiver: onError + selector: #cull: + arguments: {problem} + resolver: localPromise). + ^localPromise externalRef +) +public wrapFor: targetActor = ( + self checkCurrentActor. + #BOGUS. + ^(InternalBrokenRef problem: problem __owner: targetActor) externalRef +) +) : ( +) +class InternalFarReference target: t targetsActor: ta __owner: o = InternalRef __owner: o (| +protected target = t. +protected targetsActor = ta. +|) ( +public addReactor: reactor = ( + reactor reactResolved: externalRef +) +public checkCycle ^ = ( + ^false +) +public eventualSend: selector arguments: arguments ^ = ( + | resolverInTarget remotePromise redirector | + resolverInTarget:: InternalLocalPromise __owner: targetsActor. + targetsActor enqueueMessage: + (PendingDelivery + receiver: target + selector: selector + arguments: (wrapArguments: arguments from: currentActor to: targetsActor) + resolver: resolverInTarget). + + remotePromise:: InternalRemotePromise + target: resolverInTarget + targetsActor: targetsActor + __owner: currentActor. + + redirector:: RedirectReactor + from: targetsActor + to: currentActor + resolver: remotePromise. + targetsActor enqueueMessage: + (PendingDelivery + receiver: resolverInTarget + selector: #addReactor: + arguments: {redirector} + resolver: nil). + + ^remotePromise externalRef +) +public immediateSend: message ^ = ( + ^Error signal: 'Cannot immediate-send to an eventual ref: ', message selector +) +public printOn: stream = ( + stream nextPutAll: 'InternalFarRef: '. + target printOn: stream. +) +public refPrintOn: stream = ( + stream nextPutAll: ''. +) +public shorten ^ = ( + ^self +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise = InternalLocalPromise __owner: __owner. | + currentActor enqueueMessage: + (PendingDelivery + receiver: onValue + selector: #cull: + arguments: {externalRef} + resolver: localPromise). + ^localPromise externalRef +) +public wrapFor: targetActor = ( + targetsActor == targetActor ifTrue: [^target]. + ^(InternalFarReference target: target targetsActor: targetsActor __owner: targetActor) externalRef. +) +) : ( +) +class InternalLocalPromise __owner: o = InternalRef __owner: o (| +protected state ::= #unresolved. (* resolving. resolved *) +protected resolution +protected reactors +|) ( +public addReactor: reactor = ( + state == #unresolved ifTrue: + [reactors == nil ifTrue: [reactors:: List new]. + reactors add: reactor. + ^self]. + state == #resolved ifTrue: + [^resolution addReactor: reactor]. + halt. +) +public checkCycle ^ = ( + state == #resolving ifTrue: [^true]. + state == #unresolved ifTrue: [^false]. + state == #resolved ifTrue: [^resolution checkCycle]. + halt. +) +public eventualSend: selector arguments: arguments ^ = ( + | localPromise | + self checkCurrentActor. + state == #resolved ifTrue: [^resolution eventualSend: selector arguments: arguments]. + localPromise:: InternalLocalPromise __owner: __owner. + self addReactor: (EventualSendReactor selector: selector arguments: arguments resolver: localPromise). + ^localPromise externalRef +) +public immediateSend: message ^ = ( + state == #resolved ifTrue: [^resolution immediateSend: message]. + ^Error signal: 'Cannot immediate-send to an eventual ref: ', message selector +) +public internalResolve: internalRef = ( + state == #unresolved ifFalse: [^Error signal: 'Already resolved']. + internalRef isInternalRef ifFalse: [halt]. + + state:: #resolving. + internalRef checkCycle + ifTrue: [resolution:: InternalBrokenRef problem: (Error new messageText: 'Cyclic resolution') __owner: __owner] + ifFalse: [resolution:: internalRef]. + state:: #resolved. + + nil == reactors ifFalse: + [reactors do: [:reactor | resolution addReactor: reactor]. + reactors:: nil]. +) +public printOn: stream = ( + stream nextPutAll: 'InternalLocalPromise: '. + state printOn: stream. +) +public refPrintOn: stream = ( + state == #resolved + ifTrue: [resolution refPrintOn: stream] + ifFalse: [stream nextPutAll: '']. +) +public shorten ^ = ( + state == #unresolved ifTrue: [^self]. + state == #resolved ifTrue: [^resolution]. + halt. +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise | + self checkCurrentActor. + state == #resolved ifTrue: [^resolution whenFulfilled: onValue whenBroken: onError]. + localPromise:: InternalLocalPromise __owner: __owner. + self addReactor: (WhenReactor onValue: onValue onError: onError resolver: localPromise). + ^localPromise externalRef +) +public wrapFor: targetActor = ( + state == #resolved ifTrue: [^resolution wrapFor: targetActor]. + + checkCurrentActor. + targetActor == __owner ifTrue: [halt]. + + ^(InternalRemotePromise target: self targetsActor: currentActor __owner: targetActor) externalRef +) +) : ( +) +class InternalNearRef wrapping: t __owner: o = InternalRef __owner: o (| +protected target = t. +|) ( +public addReactor: reactor = ( + reactor reactResolved: target. +) +public checkCycle ^ = ( + ^false +) +public eventualSend: selector arguments: arguments ^ = ( + | localPromise = InternalLocalPromise __owner: __owner. | + currentActor enqueueMessage: + (PendingDelivery + receiver: target + selector: selector + arguments: arguments + resolver: localPromise). + ^localPromise externalRef +) +public immediateSend: message ^ = ( + ^message sendTo: target +) +public printOn: stream = ( + stream nextPutAll: 'InternalNearRef: '. + target printOn: stream. +) +public refPrintOn: stream = ( + stream nextPutAll: ''. +) +public shorten ^ = ( + ^self +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise = InternalLocalPromise __owner: __owner. | + currentActor enqueueMessage: + (PendingDelivery + receiver: onValue + selector: #cull: + arguments: {target} + resolver: localPromise). + ^localPromise externalRef +) +public wrapFor: targetActor = ( + self checkCurrentActor. + (isValueObject: target) ifTrue: [^target]. + ^createFarReferenceTo: target in: currentActor for: targetActor +) +) : ( +) +class InternalRef __owner: o = (| +public __owner = o. +|) ( +protected checkCurrentActor = ( + currentActor == __owner ifFalse: [halt]. +) +public checkCycle ^ = ( + subclassResponsibility +) +public eventualSend: selector arguments: arguments ^ = ( + subclassResponsibility +) +public externalRef = ( + ^Ref wrapping: self +) +public immediateSend: message ^ = ( + subclassResponsibility +) +public isInternalRef ^ = ( + ^true +) +public refPrintOn: stream = ( + subclassResponsibility +) +public shorten ^ = ( + subclassResponsibility +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + subclassResponsibility +) +public wrapFor: targetActor = ( + subclassResponsibility +) +) : ( +) +class InternalRemotePromise target: t targetsActor: ta __owner: o = InternalRef __owner: o (| +target = t. +targetsActor = ta. +state ::= #unresolved. +resolution +|) ( +public addReactor: reactor = ( + state == #resolved ifTrue: [^resolution addReactor: reactor]. + state == #unresolved ifTrue: [^reactor reactMoreResolved: self]. + stop5. +) +public checkCycle ^ = ( + state == #resolving ifTrue: [^true]. + state == #unresolved ifTrue: [^false]. + state == #resolved ifTrue: [^resolution checkCycle]. + halt. +) +public eventualSend: selector arguments: arguments ^ = ( + | resolverInTarget remotePromise redirector | + resolverInTarget:: InternalLocalPromise __owner: targetsActor. + targetsActor enqueueMessage: + (PendingDelivery + receiver: target + selector: #eventualSend:arguments: + arguments: {selector. (wrapArguments: arguments from: currentActor to: targetsActor)} + resolver: resolverInTarget). + + remotePromise:: InternalRemotePromise + target: resolverInTarget + targetsActor: targetsActor + __owner: currentActor. + + redirector:: RedirectReactor + from: targetsActor + to: currentActor + resolver: remotePromise. + targetsActor enqueueMessage: + (PendingDelivery + receiver: resolverInTarget + selector: #addReactor: + arguments: {redirector} + resolver: nil). + + ^remotePromise externalRef +) +public immediateSend: message ^ = ( + state == #resolved ifTrue: [^resolution immediateSend: message]. + ^Error signal: 'Cannot immediate-send to an eventual ref: ', message selector +) +public internalResolve: internalRef = ( + state == #unresolved ifFalse: [^Error signal: 'Already resolved']. + internalRef isInternalRef ifFalse: [halt]. + + state:: #resolving. + internalRef checkCycle + ifTrue: [resolution:: InternalBrokenRef problem: (Error new messageText: 'Cyclic resolution') __owner: __owner] + ifFalse: [resolution:: internalRef]. + state:: #resolved. +) +public printOn: stream = ( + stream nextPutAll: 'InternalRemotePromise: '. + state printOn: stream. +) +public redirectFrom: sourceActor to: destinationActor resolving: resolver = ( + | redirector | + destinationActor == targetsActor ifTrue: + [targetsActor enqueueMessage: + (PendingDelivery + receiver: resolver + selector: #internalResolve: + arguments: {target} + resolver: nil). + ^self]. + + redirector:: RedirectReactor + from: targetsActor + to: destinationActor + resolver: resolver. + targetsActor enqueueMessage: + (PendingDelivery + receiver: target + selector: #addReactor: + arguments: {redirector} + resolver: nil). +) +public refPrintOn: stream = ( + state == #resolved + ifTrue: [resolution refPrintOn: stream] + ifFalse: [stream nextPutAll: '']. +) +public shorten ^ = ( + state == #unresolved ifTrue: [^self]. + state == #resolved ifTrue: [^resolution]. + halt. +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise redirector | + self checkCurrentActor. + state == #resolved ifTrue: [^resolution whenFulfilled: onValue whenBroken: onError]. + + localPromise:: InternalLocalPromise __owner: __owner. + redirector:: RedirectReactor + from: targetsActor + to: currentActor + resolver: localPromise. + targetsActor enqueueMessage: + (PendingDelivery + receiver: target + selector: #addReactor: + arguments: {redirector} + resolver: nil). + ^localPromise whenFulfilled: onValue whenBroken: onError. +) +public wrapFor: targetActor = ( + state == #resolved ifTrue: [^resolution wrapFor: targetActor]. + + targetActor == targetsActor ifTrue: [^target externalRef]. + + ^(InternalRemotePromise target: target targetsActor: targetsActor __owner: targetActor) externalRef +) +) : ( +) +protected class PendingDelivery receiver: r selector: s arguments: a resolver: y = ( +(* A message in an actor's event queue. Every turn starts by sending #deliverIn:. + +Note that all slots contain objects that belong to the actor in which the message is queued, even the resolver. *) +| +protected receiver = r. +protected selector = s. +protected arguments = a. +protected resolver = y. +|) ( +public deliverIn: fastCurrentActor = ( + | resolution type msg | + + (* Transcript print: fastCurrentActor; space; print: self; cr. *) + + [(* BOGUS: Don't rely on perform not being overridden. *) + resolution:: receiver perform: selector withArguments: arguments. + type:: #internalResolve:] + on: Error (* BOGUS: Exception? *) + do: [:error | + resolver == nil ifTrue: [error pass]. + resolution:: error. + type:: #internalBreak:]. + + (* Transcript show: {resolver. type. resolution}; cr. *) + + nil == resolver ifTrue: [ + type == #internalBreak: ifTrue: [{'silent failure'. resolution} out]. + ^self]. + + resolver internalResolve: (type == #internalResolve: + ifTrue: [asInternalRef: resolution] + ifFalse: [InternalBrokenRef problem: resolution __owner: self]). +) +public postedTo: actor = ( + (*check: receiver allowedIn: actor. + arguments do: [:arg | check: arg allowedIn: actor].*) + + selector numArgs == arguments size ifFalse: [halt]. + resolver == nil ifFalse: [resolver __owner == actor ifFalse: [halt]]. +) +public printOn: stream = ( + receiver printOn: stream. + stream nextPutAll: ' <-: '. + stream nextPutAll: selector. + stream space. + arguments isEmpty ifFalse: [arguments printOn: stream]. +) +) : ( +) +protected class ProcessActor named: n = InternalActor ( +(* An actor whose turns run in its own Process, allowing us to suspend it individually. *) +| + protected name = n. + protected process + protected messageQueue = SharedQueue2 new. +|) ( +doOneTurn = ( + messageQueue next deliverIn: self. +) +public enqueueMessage: actorMessage = ( + actorMessage postedTo: self. + messageQueue nextPut: actorMessage +) +public printOn: stream = ( + stream nextPutAll: '[ProcessActor('. + stream nextPutAll: name. + stream nextPutAll: ')#'. + hash printOn: stream. + stream nextPutAll: ']'. +) +public startEventLoop = ( + process:: [[self doOneTurn] repeat] newProcess. + process name: ('Event loop for ', name) asString. + process priority: Processor userBackgroundPriority. + process actor: self. + process resume. +) +) : ( +) +class PromiseUtils = () ( +public all: refs ^ = ( + (* Answers a promise that resolves with all the resolutions of refs, or the first problem. *) +) +public broken: problem ^ = ( + ^Resolver new break: problem; promise +) +public fulfilled: resolution ^ = ( + ^Resolver new fulfill: resolution; promise +) +public timeout: ref after: milliseconds ^ = ( + (* Answers a promise that resolves with the resolution of ref, or a TimeoutError if refs is not resolved within milliseconds. *) + #BOGUS. (* Should have proper duration type. *) +) +public when: ref fulfilled: onValue <[:V | V2 def]> ^ = ( + (* Subscribe to notification of a reference being fulfilled. If ref is fulfilled, onValue will run in some turn after the turn that resolves ref, and the returned promise with be resolved with the result of onValue. If ref is broken, the returned promise with be broken with the same error. *) + ^(asInternalRef: ref) whenFulfilled: onValue whenBroken: [:e | e signal] (* Should we make this the behavior of a nil catch-clause instead? *) +) +public when: ref fulfilled: onValue <[:V | V2 def]> broken: onError <[:E | E2 def]> ^ = ( + (* Subscribe to notification of a reference being fulfilled or broken. onValue or onError respectively will run in some turn after the turn that resolves ref., and the returned promise with be resolved with the result of the callback. *) + ^(asInternalRef: ref) whenFulfilled: onValue whenBroken: onError +) +public when: ref partitioned: onPartition <[:Promise | R def] | [R def]> ^ = ( + (* Subscribe to notification of a reference breaking due to partition. *) +) +) : ( +) +protected class RedirectReactor from: s to: d resolver: r = ( +(* A bridge between InternalResolvers in different actors. *) +| +protected sourceActor = s. +protected destinationActor = d. +protected resolver = r. +|) ( +public reactBroken: r = ( + | msg | + currentActor == sourceActor ifFalse: [halt]. + msg:: PendingDelivery + receiver: resolver + selector: #internalResolve: + arguments: {InternalBrokenRef problem: r __owner: destinationActor} + resolver: nil. + destinationActor enqueueMessage: msg. +) +public reactMoreResolved: internalRef = ( + internalRef redirectFrom: sourceActor to: destinationActor resolving: resolver. +) +public reactResolved: r = ( + | msg | + currentActor == sourceActor ifFalse: [halt]. + msg:: PendingDelivery + receiver: resolver + selector: #internalResolve: + arguments: {asInternalRef: (wrapArgument: r from: sourceActor to: destinationActor)} + resolver: nil. + destinationActor enqueueMessage: msg. +) +) : ( +) +class Ref wrapping: ref = (| +protected internalRef = ref. +|internalRefs at: self put: ref) ( +protected doesNotUnderstand: message = ( + (* For the debugger/inspector. Questionable. *) + (* Should probably override public method of Object as well. *) + 0 = message arguments size ifTrue: [(message selector startsWith: 'is') ifTrue: [^false]]. + ^internalRef immediateSend: message +) +public isPromise = ( + ^true +) +public printOn: stream = ( + (* BOGUS - debugging *) + internalRef refPrintOn: stream. +) +protected yourself = ( + ^super yourself +) +) : ( +) +public class Resolver = ( +(*A Resolver represents the authority to resolve a Promise and is the control facet of the promise's eventual resolution.*) +| + private (* N.B. We must not leak access to an InternalResolver via subobjects. *) internalResolver = InternalLocalPromise __owner: currentActor. + public promise = internalResolver externalRef. +|) ( +public break: error = ( + internalResolver internalResolve: (InternalBrokenRef problem: error __owner: currentActor). +) +public fulfill: value = ( + internalResolver internalResolve: (asInternalRef: value). +) +public isResolver ^ = ( + ^true +) +) : ( +) +public class Timer __duration: milliseconds callback: callback repeating: repeating = (| + protected process + protected actor = currentActor. + protected cancelled ::= false. +|repeating + ifTrue: [self schedule: callback every: milliseconds] + ifFalse: [self schedule: callback after: milliseconds]) ( +public cancel = ( + cancelled:: true. + nil == process ifFalse: [process terminate. process:: nil]. +) +public isActive ^ = ( + cancelled ifTrue: [^false]. + ^nil ~= process +) +public isTimer ^ = ( + ^true +) +protected schedule: callback after: ms = ( + | + delay = SqueakDelay forMilliseconds: ms. + msg = PendingDelivery + receiver: [cancelled ifFalse: [callback value]] + selector: #value + arguments: {} + resolver: nil. + | + process:: [delay wait. actor enqueueMessage: msg. process:: nil] newProcess. + process name: 'One-shot timer for ', callback printString. + process priority: 41. + process resume. +) +protected schedule: callback every: ms = ( + (* When should we start ticking down for the next callback? When we schedule the callback, when the callback starts, or if-and-when the callback completes without an error? *) + | + delay = SqueakDelay forMilliseconds: ms. + msg = PendingDelivery + receiver: [cancelled ifFalse: [callback value: self]] + selector: #value + arguments: {} + resolver: nil. + | + process:: [[delay wait. actor enqueueMessage: msg] repeat] newProcess. + process name: 'Repeating timer for ', callback printString. + process priority: 41. + process resume. +) +) : ( +public after: duration do: callback <[]> ^ = ( + ^self __duration: duration callback: callback repeating: false +) +public every: duration do: callback <[:Timer]> ^ = ( + ^self __duration: duration callback: callback repeating: true +) +) +protected class UIActor = InternalActor ( +(* An actor whose turns run in the Squeak UI Process. *) +) ( +public enqueueMessage: actorMessage = ( + actorMessage postedTo: self. + + (* bogus - should drain an explicit queue to allow for a randomizing scheduler *) + brazil theDesktop scheduleUIAction: + [[actorMessage deliverIn: self] on: UnhandledError do: [:ignore | ]]. +) +public printOn: stream = ( + stream nextPutAll: '[UIActor#'. + hash printOn: stream. + stream nextPutAll: ']'. +) +) : ( +) +protected class WhenReactor onValue: v onError: e resolver: r = ( +(* A when-catch for a promise. + +Note that all slots contain objects that belong to the actor which sent #whenResolved:. *) +| + protected onValue <[:V] | []> = v. + protected onError <[:E] | []> = e. + protected resolver = r. +|) ( +public reactBroken: value = ( + resolver __owner == currentActor ifFalse: [halt]. + currentActor enqueueMessage: + (PendingDelivery + receiver: onError + selector: #cull: + arguments: {value} + resolver: resolver). +) +public reactMoreResolved: internalRef = ( + resolver internalResolve: (asInternalRef: (internalRef whenFulfilled: onValue whenBroken: onError)). +) +public reactResolved: value = ( + resolver __owner == currentActor ifFalse: [halt]. + currentActor enqueueMessage: + (PendingDelivery + receiver: onValue + selector: #cull: + arguments: {value} + resolver: resolver). +) +) : ( +) +private asInternalRef: externalRefOrUnboxedNearRef = ( + ^(isRef: externalRefOrUnboxedNearRef) + ifTrue: [internalRefs at: externalRefOrUnboxedNearRef ifAbsent: [halt]] + ifFalse: [InternalNearRef wrapping: externalRefOrUnboxedNearRef __owner: currentActor] +) +private check: object allowedIn: actor = ( + assert: [nil ~= actor] message: 'Invalid actor'. + + (isRef: object) ifTrue: [object __owner == actor ifFalse: [halt]]. + (* Otherwise near reference *) +) +private createFarReferenceTo: target in: targetActor for: sourceActor = ( + ^(InternalFarReference target: target targetsActor: targetActor __owner: sourceActor) externalRef. +) +private createRemotePromiseOf: resolverInTarget in: targetActor for: sourceActor = ( + | sourceResolver redirector message remotePromise | + sourceActor == targetActor ifTrue: [halt]. + + sourceResolver:: InternalLocalPromise __owner: sourceActor. + sourceResolver state: #remote. + sourceResolver _targetPromise: resolverInTarget. + sourceResolver _targetActor: targetActor. + + redirector:: RedirectReactor + from: targetActor + to: sourceActor + resolver: sourceResolver. + + message:: PendingDelivery + receiver: resolverInTarget + selector: #addReactor: + arguments: {redirector} + resolver: nil. + targetActor enqueueMessage: message. + + ^Ref wrapping: sourceResolver __owner: sourceActor. +) +private currentActor = ( + ^Processor activeProcess actor ifNil: [uiActor]. +) +private isRef: object ^ = ( + ^Ref == (primitives classOf: object) +) +private isValueObject: object ^ = ( + nil == object ifTrue: [^true]. + true == object ifTrue: [^true]. + false == object ifTrue: [^true]. + object isKindOfString ifTrue: [^true]. + object isKindOfNumber ifTrue: [^true]. + object isCharacter ifTrue: [^true]. + object isKindOfBehavior ifTrue: [^isValueObject: object enclosingClass]. + Promise == object ifTrue: [^true]. + ^false +) +private wrapArgument: argument from: sourceActor to: targetActor = ( + (* [argument] lives in [sourceActor], answer the corresponding proxy that lives in [targetActor] *) + + sourceActor == targetActor ifTrue: [halt. (* We can't tell which side a near reference belongs to here, so we must have decided this earlier. *) ]. + + ^(asInternalRef: argument) wrapFor: targetActor +) +private wrapArguments: arguments from: sourceActor to: targetActor = ( + ^arguments collect: [:argument | wrapArgument: argument from: sourceActor to: targetActor]. +) +) : ( +) diff --git a/out/ActorsForPrimordialSoup.ns b/out/ActorsForPrimordialSoup.ns new file mode 100644 index 00000000..2715acd7 --- /dev/null +++ b/out/ActorsForPrimordialSoup.ns @@ -0,0 +1,901 @@ +Newspeak3 +'Root' +class ActorsForPrimordialSoup usingPlatform: p = (| +private WeakMap = p kernel WeakMap. +private List = p collections List. +private Map = p collections Map. +private Message = p kernel Message. + +public Promise = PromiseFactories new. + +private messageLoop +private internalRefs = WeakMap new. +private currentActor ::= InternalActor named: 'Initial actor'. +private pendingActors ::= List new. +private timerHeap = TimerHeap new. +private portMap = Map new. +public handleMap = Map new. + +private Serializer = p victoryFuel Serializer. +private Deserializer = p victoryFuel Deserializer. +|) ( +public class Actor named: debugName = (| +private (* N.B. Do not leak to subinstances. *) internalActor = InternalActor named: debugName. +|) ( +public interrupt = ( + unimplemented +) +public onError: onError <[:E]> = ( + unimplemented. +) +public seed: value ^ = ( + (* Creating a far reference to a PassByCopy is questionable. It may be that this should be seed: receiver perform: selector with: argument. *) + (isValueObject: value) ifFalse: [Error signal: 'Cannot seed an actor with a non-Value.']. + ^createFarReferenceTo: value in: internalActor for: currentActor. +) +public terminate = ( + unimplemented +) +) : ( +) +protected class EventualSend receiver: r selector: s arguments: a resolver: y = ( +(* A message in an actor's event queue. Every turn starts by sending #deliver. + +Note that all slots contain objects that belong to the actor in which the message is queued, even the resolver. *) +| +protected receiver = r. +protected selector = s. +protected arguments = a. +protected resolver = y. + +public next +|) ( +public deliver = ( + | resolution type msg | + + msg:: Message selector: selector arguments: arguments. + + [resolution:: msg sendTo: receiver. + type:: #value] + on: Exception + do: [:error | + nil = resolver ifTrue: + ['Exception in turn without resolver' out. + error pass]. + resolution:: error. + type:: #error]. + + nil = resolver ifTrue: [^self]. + + resolver internalResolve: (#value = type + ifTrue: [asInternalRef: resolution] + ifFalse: [InternalBrokenRef problem: resolution]). +) +) : ( +) +protected class EventualSendReactor selector: s arguments: a resolver: r = ( +(* An eventual-send to a promise. + +Note that all slots contain objects that belong to the actor which performed the eventual send. *) +| +protected selector = s. +protected arguments = a. +protected resolver = r. +|) ( +public reactBroken: error = ( + (* Broken promise contagion. *) + (* Should this be immediate? *) + (* resolver internalBreak: error. ? *) + currentActor + enqueueReceiver: resolver + selector: #internalResolve: + arguments: {InternalBrokenRef problem: error} + resolver: nil +) +public reactMoreResolved: internalRef = ( + resolver internalResolve: (asInternalRef: (internalRef eventualSend: selector arguments: arguments)). +) +public reactResolved: value = ( + resolver internalResolve: + (asInternalRef: (messageLoop + eventualSendTo: value + selector: selector + arguments: arguments)) +) +) : ( +) +class InternalActor named: n = (| + protected name = n. + protected head + protected tail +|) ( +public drainQueue = ( + currentActor:: self. + [nil = head] whileFalse: + [ | message = head. | + head: message next. + message deliver]. + tail: nil. +) +public enqueueReceiver: receiver selector: selector arguments: arguments resolver: resolver = ( + | send = EventualSend receiver: receiver selector: selector arguments: arguments resolver: resolver. | + + nil = head + ifTrue: + [head:: tail:: send] + ifFalse: + [tail next: send. + tail: send]. + + pendingActors add: self. +) +) : ( +) +class InternalBrokenRef problem: p = InternalRef (| +protected problem = p. +|) ( +public addReactor: reactor = ( + reactor reactBroken: problem. +) +public checkCycle ^ = ( + ^false +) +public eventualSend: selector arguments: arguments ^ = ( + ^self externalRef (* I.e., broken with same problem. Should this wait for the next turn? *) +) +public immediateSend: message ^ = ( + ^Error signal: 'Cannot immediate-send to a broken ref: ', message selector +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise = InternalLocalPromise new. | + currentActor + enqueueReceiver: onError + selector: #cull: + arguments: {problem} + resolver: localPromise. + ^localPromise externalRef +) +public wrapFor: targetActor = ( + #BOGUS. + ^(InternalBrokenRef problem: problem) externalRef +) +) : ( +) +class InternalFarReference target: t targetsActor: ta = InternalRef (| +protected target = t. +protected targetsActor = ta. +|) ( +public addReactor: reactor = ( + reactor reactResolved: externalRef +) +public checkCycle ^ = ( + ^false +) +public eventualSend: selector arguments: arguments ^ = ( + | resolverInTarget remotePromise redirector | + resolverInTarget:: InternalLocalPromise new. + targetsActor + enqueueReceiver: target + selector: selector + arguments: (wrapArguments: arguments from: currentActor to: targetsActor) + resolver: resolverInTarget. + + remotePromise:: InternalRemotePromise + target: resolverInTarget + targetsActor: targetsActor. + + redirector:: RedirectReactor + from: targetsActor + to: currentActor + resolver: remotePromise. + targetsActor + enqueueReceiver: resolverInTarget + selector: #addReactor: + arguments: {redirector} + resolver: nil. + + ^remotePromise externalRef +) +public immediateSend: message ^ = ( + ^Error signal: 'Cannot immediate-send to an eventual ref: ', message selector +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise = InternalLocalPromise new. | + currentActor + enqueueReceiver: onValue + selector: #cull: + arguments: {externalRef} + resolver: localPromise. + ^localPromise externalRef +) +public wrapFor: targetActor = ( + targetsActor = targetActor ifTrue: [^target]. + ^(InternalFarReference target: target targetsActor: targetsActor) externalRef. +) +) : ( +) +class InternalLocalPromise = InternalRef (| +protected state ::= #unresolved. (* resolving. resolved *) +protected resolution +protected reactors +|) ( +public addReactor: reactor = ( + state = #unresolved ifTrue: + [nil = reactors ifTrue: [reactors:: List new]. + reactors add: reactor. + ^self]. + state = #resolved ifTrue: + [^resolution addReactor: reactor]. + halt. +) +public checkCycle ^ = ( + state = #resolving ifTrue: [^true]. + state = #unresolved ifTrue: [^false]. + state = #resolved ifTrue: [^resolution checkCycle]. + halt. +) +public eventualSend: selector arguments: arguments ^ = ( + | localPromise | + state = #resolved ifTrue: [^resolution eventualSend: selector arguments: arguments]. + localPromise:: InternalLocalPromise new. + self addReactor: (EventualSendReactor selector: selector arguments: arguments resolver: localPromise). + ^localPromise externalRef +) +public immediateSend: message ^ = ( + state = #resolved ifTrue: [^resolution immediateSend: message]. + ^Error signal: 'Cannot immediate-send to an eventual ref: ', message selector +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise | + state = #resolved ifTrue: [^resolution whenFulfilled: onValue whenBroken: onError]. + localPromise:: InternalLocalPromise new. + self addReactor: (WhenReactor onValue: onValue onError: onError resolver: localPromise). + ^localPromise externalRef +) +public wrapFor: targetActor = ( + state = #resolved ifTrue: [^resolution wrapFor: targetActor]. + + ^(InternalRemotePromise target: self targetsActor: currentActor) externalRef +) +public internalResolve: internalRef = ( + state = #unresolved ifFalse: [^Error signal: 'Already resolved']. + internalRef isKindOfInternalRef ifFalse: [halt]. + + state:: #resolving. + internalRef checkCycle + ifTrue: [resolution:: InternalBrokenRef problem: (Error new messageText: 'Cyclic resolution')] + ifFalse: [resolution:: internalRef]. + state:: #resolved. + + nil = reactors ifFalse: + [reactors do: [:reactor | resolution addReactor: reactor]. + reactors:: nil]. +) +) : ( +) +class InternalNearRef wrapping: t = InternalRef (| +protected target = t. +|) ( +public addReactor: reactor = ( + reactor reactResolved: target. +) +public checkCycle ^ = ( + ^false +) +public eventualSend: selector arguments: arguments ^ = ( + | localPromise = InternalLocalPromise new. | + currentActor + enqueueReceiver: target + selector: selector + arguments: arguments + resolver: localPromise. + ^localPromise externalRef +) +public immediateSend: message ^ = ( + ^message sendTo: target +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise = InternalLocalPromise new. | + currentActor + enqueueReceiver: onValue + selector: #cull: + arguments: {target} + resolver: localPromise. + ^localPromise externalRef +) +public wrapFor: targetActor = ( + (isValueObject: target) ifTrue: [^target]. + ^createFarReferenceTo: target in: currentActor for: targetActor +) +) : ( +) +class InternalRef = ( +) ( +public checkCycle ^ = ( + subclassResponsibility +) +public eventualSend: selector arguments: arguments ^ = ( + subclassResponsibility +) +public externalRef = ( + ^Ref wrapping: self +) +public immediateSend: message ^ = ( + subclassResponsibility +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + subclassResponsibility +) +public wrapFor: targetActor = ( + subclassResponsibility +) +public isKindOfInternalRef ^ = ( + ^true +) +) : ( +) +class InternalRemotePromise target: t targetsActor: ta = InternalRef (| +target = t. +targetsActor = ta. +state ::= #unresolved. +resolution +|) ( +public addReactor: reactor = ( + state = #resolved ifTrue: [^resolution addReactor: reactor]. + state = #unresolved ifTrue: [^reactor reactMoreResolved: self]. + stop5. +) +public checkCycle ^ = ( + state = #resolving ifTrue: [^true]. + state = #unresolved ifTrue: [^false]. + state = #resolved ifTrue: [^resolution checkCycle]. + halt. +) +public eventualSend: selector arguments: arguments ^ = ( + | resolverInTarget remotePromise redirector | + resolverInTarget:: InternalLocalPromise new. + targetsActor + enqueueReceiver: target + selector: #eventualSend:arguments: + arguments: {selector. (wrapArguments: arguments from: currentActor to: targetsActor)} + resolver: resolverInTarget. + + remotePromise:: InternalRemotePromise + target: resolverInTarget + targetsActor: targetsActor. + + redirector:: RedirectReactor + from: targetsActor + to: currentActor + resolver: remotePromise. + targetsActor + enqueueReceiver: resolverInTarget + selector: #addReactor: + arguments: {redirector} + resolver: nil. + + ^remotePromise externalRef +) +public immediateSend: message ^ = ( + state = #resolved ifTrue: [^resolution immediateSend: message]. + ^Error signal: 'Cannot immediate-send to an eventual ref: ', message selector +) +public redirectFrom: sourceActor to: destinationActor resolving: resolver = ( + | redirector | + destinationActor = targetsActor ifTrue: + [targetsActor + enqueueReceiver: resolver + selector: #internalResolve: + arguments: {target} + resolver: nil. + ^self]. + + redirector:: RedirectReactor + from: targetsActor + to: destinationActor + resolver: resolver. + targetsActor + enqueueReceiver: target + selector: #addReactor: + arguments: {redirector} + resolver: nil. +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise redirector | + state = #resolved ifTrue: [^resolution whenFulfilled: onValue whenBroken: onError]. + + localPromise:: InternalLocalPromise new. + redirector:: RedirectReactor + from: targetsActor + to: currentActor + resolver: localPromise. + targetsActor + enqueueReceiver: target + selector: #addReactor: + arguments: {redirector} + resolver: nil. + ^localPromise whenFulfilled: onValue whenBroken: onError. +) +public wrapFor: targetActor = ( + state = #resolved ifTrue: [^resolution wrapFor: targetActor]. + + targetActor = targetsActor ifTrue: [^target externalRef]. + + ^(InternalRemotePromise target: target targetsActor: targetsActor) externalRef +) +public internalResolve: internalRef = ( + state = #unresolved ifFalse: [^Error signal: 'Already resolved']. + internalRef isKindOfInternalRef ifFalse: [halt]. + + state:: #resolving. + internalRef checkCycle + ifTrue: [resolution:: InternalBrokenRef problem: (Error new messageText: 'Cyclic resolution')] + ifFalse: [resolution:: internalRef]. + state:: #resolved. +) +) : ( +) +class InternalTimer = (| +callback +actor +public dueTime +public id +millisecondDuration +repeating +public externalTimer +|) ( +public < other = ( + dueTime = other dueTime ifTrue: [^id < other id]. + ^dueTime < other dueTime +) +public after: duration do: callbackX = ( + callback:: callbackX. + actor:: currentActor. + dueTime:: currentMonotonicMillis + duration + 1. + millisecondDuration:: duration. + repeating:: false. + timerHeap insert: self. +) +public cancel = ( + callback:: nil. +) +public every: duration do: callbackX = ( + callback:: callbackX. + actor:: currentActor. + dueTime:: currentMonotonicMillis + duration + 1. + millisecondDuration:: duration. + repeating:: true. + timerHeap insert: self. +) +public fire = ( + nil = callback ifTrue: [^self]. (* Cancelled. *) + repeating + ifTrue: + [dueTime:: currentMonotonicMillis + millisecondDuration. + timerHeap insert: self. + [callback value: externalTimer] + on: Exception + do: [:ex | (* unhandledException: ex *)]] + ifFalse: + [ | savedCallback = callback. | + callback:: nil. + [savedCallback value] + on: Exception + do: [:ex | (* unhandledException: ex *)]]. +) +public isActive = ( + ^(nil = callback) not +) +) : ( +) +class MessageLoop application: a platform: p = (| + application ::= a. + platform ::= p. +|) ( +private dispatchHandle: handle status: status signals: signals count: count = ( + | handler | + handler:: handleMap at: handle ifAbsent: [nil]. + nil = handler + ifTrue: + ['Signal for ', handle printString, ' with no handler' out] + ifFalse: + [currentActor + enqueueReceiver: handler + selector: #value:value: + arguments: {status. signals} + resolver: nil]. + finish: drainQueue. +) +private dispatchMessage: message port: port = ( + nil = message ifFalse: + [nil = port + ifTrue: [enqueueStartupMessage: message] + ifFalse: [enqueuePortMessage: message port: port]]. + finish: drainQueue. +) +public drainQueue = ( + timerHeap drainQueue. + [pendingActors isEmpty] whileFalse: + [pendingActors removeLast drainQueue]. + ^timerHeap nextDueTime +) +private enqueuePortMessage: bytes port: portId = ( + | port | + port:: portMap at: portId ifAbsent: [^self]. + currentActor + enqueueReceiver: port + selector: #deliver: + arguments: {bytes} + resolver: nil. +) +private enqueueStartupMessage: argvOrBytes = ( + | args | + argvOrBytes isKindOfByteArray + ifTrue: + [ | deserializer | + deserializer:: Deserializer new. + args:: deserializer deserialize: argvOrBytes] + ifFalse: + [args:: argvOrBytes]. + + currentActor + enqueueReceiver: application + selector: #main:args: + arguments: {platform. args} + resolver: nil. + + application:: nil. + platform:: nil. +) +public eventualSendTo: receiver selector: selector arguments: arguments = ( + (* Sent from the compilation of an eventual send. *) + ^(asInternalRef: receiver) eventualSend: selector arguments: arguments +) +private exit: code = ( + (* :literalmessage: primitive: 107 *) + halt +) +private finish: wakeup = ( + (* :literalmessage: primitive: 139 *) + halt. +) +public unhandledException: exception from: signalActivationSender = ( + | activation | + + 'Unhandled exception: ' out. + exception out. + activation:: signalActivationSender. + [nil = activation] whileFalse: + [activation out. + activation:: activation sender]. + exit: -1. +) +) : ( +) +public class Port fromId: i = (| +public id = i. +public handler +|) ( +public close = ( + close: id. + portMap removeKey: id. +) +private close: portId = ( + (* :literalmessage: primitive: 136 *) + halt +) +public deliver: bytes = ( + | deserializer message | + deserializer:: Deserializer new. + message:: deserializer deserialize: bytes. + handler value: message +) +private rawSpawn: bytes = ( + (* :literalmessage: primitive: 137 *) + halt. +) +public send: message = ( + | serializer bytes | + serializer:: Serializer new. + bytes:: serializer serialize: message. + to: id send: bytes. +) +public spawn: message = ( + | serializer bytes | + serializer:: Serializer new. + bytes:: serializer serialize: message. + rawSpawn: bytes. +) +private to: port send: data = ( + (* :literalmessage: primitive: 138 *) + halt +) +) : ( +private createPort = ( + (* :literalmessage: primitive: 135 *) + halt. +) +public new = ( + | + id = createPort. + port = self fromId: id. + | + portMap at: id put: port. + ^port +) +) +class PromiseFactories = () ( +public all: refs ^ = ( + (* Answers a promise that resolves with all the resolutions of refs, or the first problem. *) +) +public broken: problem ^ = ( + ^Resolver new break: problem; promise +) +public fulfilled: resolution ^ = ( + ^Resolver new fulfill: resolution; promise +) +public timeout: ref after: milliseconds ^ = ( + (* Answers a promise that resolves with the resolution of ref, or a TimeoutError if refs is not resolved within milliseconds. *) + #BOGUS. (* Should have proper duration type. *) +) +public when: ref fulfilled: onValue <[:V | V2 def]> ^ = ( + (* Subscribe to notification of a reference being fulfilled. If ref is fulfilled, onValue will run in some turn after the turn that resolves ref, and the returned promise with be resolved with the result of onValue. If ref is broken, the returned promise with be broken with the same error. *) + ^(asInternalRef: ref) whenFulfilled: onValue whenBroken: [:e | e signal] (* Should we make this the behavior of a nil catch-clause instead? *) +) +public when: ref fulfilled: onValue <[:V | V2 def]> broken: onError <[:E | E2 def]> ^ = ( + (* Subscribe to notification of a reference being fulfilled or broken. onValue or onError respectively will run in some turn after the turn that resolves ref., and the returned promise with be resolved with the result of the callback. *) + ^(asInternalRef: ref) whenFulfilled: onValue whenBroken: onError +) +public when: ref partitioned: onPartition <[:Promise | R def] | [R def]> ^ = ( + (* Subscribe to notification of a reference breaking due to partition. *) +) +) : ( +) +protected class RedirectReactor from: s to: d resolver: r = ( +(* A bridge between InternalResolvers in different actors. *) +| +protected sourceActor = s. +protected destinationActor = d. +protected resolver = r. +|) ( +public reactBroken: r = ( + currentActor = sourceActor ifFalse: [halt]. + destinationActor + enqueueReceiver: resolver + selector: #internalResolve: + arguments: {InternalBrokenRef problem: r} + resolver: nil. +) +public reactMoreResolved: internalRef = ( + internalRef redirectFrom: sourceActor to: destinationActor resolving: resolver. +) +public reactResolved: r = ( + currentActor = sourceActor ifFalse: [halt]. + destinationActor + enqueueReceiver: resolver + selector: #internalResolve: + arguments: {asInternalRef: (wrapArgument: r from: sourceActor to: destinationActor)} + resolver: nil. +) +) : ( +) +class Ref wrapping: ref = (| +protected internalRef = ref. +|internalRefs at: self put: ref) ( +protected yourself = ( + ^super yourself +) +public isKindOfPromise ^ = ( + ^true +) +protected doesNotUnderstand: message = ( + (* For the debugger/inspector. Questionable. *) + (* Should probably override public method of Object as well. *) + 0 = message arguments size ifTrue: [(message selector startsWith: 'isKindOf') ifTrue: [^false]]. + ^internalRef immediateSend: message +) +) : ( +) +public class Resolver = ( +(*A Resolver represents the authority to resolve a Promise and is the control facet of the promise's eventual resolution.*) +| + private (* N.B. We must not leak access to an InternalResolver via subobjects. *) internalResolver = InternalLocalPromise new. + public promise = internalResolver externalRef. +|) ( +public break: error = ( + internalResolver internalResolve: (InternalBrokenRef problem: error). +) +public fulfill: value = ( + internalResolver internalResolve: (asInternalRef: value). +) +public isKindOfResolver ^ = ( + ^true +) +) : ( +) +public class Timer wrapping: i = (| + private internalTimer = i. +|) ( +public cancel = ( + internalTimer cancel. +) +public isActive ^ = ( + ^internalTimer isActive +) +public isTimer ^ = ( + ^true +) +) : ( +public after: duration do: callback <[]> ^ = ( + ^Timer wrapping: (InternalTimer new after: duration do: callback) +) +public every: duration do: callback <[:Timer]> ^ = ( + | internal external | + internal:: InternalTimer new every: duration do: callback. + external:: Timer wrapping: internal. + internal externalTimer: external. + ^external +) +) +class TimerHeap = (| +private table ::= Array new: 32. +private used ::= 0. +private nextId ::= 0. +|) ( +downHeapFrom: startParentIndex = ( + | parentIndex ::= startParentIndex. parent leftChildIndex rightChildIndex | + parent:: table at: parentIndex. + [leftChildIndex:: parentIndex << 1. + rightChildIndex:: parentIndex << 1 + 1. + leftChildIndex <= used] whileTrue: + [ | leftChild rightChild | + leftChild:: table at: leftChildIndex. + rightChildIndex <= used + ifTrue: + [rightChild:: table at: rightChildIndex. + leftChild < rightChild + ifTrue: + [parent < leftChild ifTrue: [^self]. + table at: leftChildIndex put: parent. + table at: parentIndex put: leftChild. + parentIndex:: leftChildIndex] + ifFalse: + [parent < rightChild ifTrue: [^self]. + table at: rightChildIndex put: parent. + table at: parentIndex put: rightChild. + parentIndex:: rightChildIndex]] + ifFalse: + [(* Only has left child. *) + parent < leftChild ifTrue: [^self]. + table at: leftChildIndex put: parent. + table at: parentIndex put: leftChild. + parentIndex:: leftChildIndex]]. +) +public drainQueue = ( + | now = currentMonotonicMillis. | + [used > 0] whileTrue: + [peek dueTime > now ifTrue: [^self]. + pop fire]. +) +public insert: timer = ( + used >= table size ifTrue: + [ | newSize = table size << 1. | + (* ('Growing timer heap to ', newSize printString) out. *) + table:: table copyWithSize: newSize]. + used = 0 ifTrue: [nextId:: 0]. (* Reset id space when possible. *) + + used:: 1 + used. + table at: used put: timer. + + timer id: nextId. + nextId:: 1 + nextId. (* Heap isn't a stable sort. Use a tie breaker to ensure timers fire in the order they are scheduled if their due times are the same. *) + + upheapFrom: used. +) +public nextDueTime = ( + | next = peek. | + nil = next ifTrue: [^0]. + ^1000000 * next dueTime +) +public peek = ( + 0 = used ifTrue: [^nil]. + ^table at: 1 +) +public pop = ( + | min = table at: 1. | + table at: 1 put: (table at: used). + table at: used put: nil. + used:: used - 1. + downHeapFrom: 1. + min id: nil. + ^min +) +upheapFrom: startChildIndex = ( + | childIndex ::= startChildIndex. | + [childIndex = 1] whileFalse: + [ | parentIndex child parent | + parentIndex:: childIndex >> 1. + child:: table at: childIndex. + parent:: table at: parentIndex. + parent < child ifTrue: [^self]. + table at: childIndex put: parent. + table at: parentIndex put: child. + childIndex:: parentIndex]. +) +) : ( +) +protected class WhenReactor onValue: v onError: e resolver: r = ( +(* A when-catch for a promise. + +Note that all slots contain objects that belong to the actor which sent #whenResolved:. *) +| + protected onValue <[:V] | []> = v. + protected onError <[:E] | []> = e. + protected resolver = r. +|) ( +public reactBroken: value = ( + currentActor + enqueueReceiver: onError + selector: #cull: + arguments: {value} + resolver: resolver. +) +public reactMoreResolved: internalRef = ( + resolver internalResolve: (asInternalRef: (internalRef whenFulfilled: onValue whenBroken: onError)). +) +public reactResolved: value = ( + currentActor + enqueueReceiver: onValue + selector: #cull: + arguments: {value} + resolver: resolver. +) +) : ( +) +private asInternalRef: externalRefOrUnboxedNearRef = ( + ^(isRef: externalRefOrUnboxedNearRef) + ifTrue: [internalRefs at: externalRefOrUnboxedNearRef] + ifFalse: [InternalNearRef wrapping: externalRefOrUnboxedNearRef] +) +public buildLoopForApplication: app platform: platform = ( + ^messageLoop:: MessageLoop application: app platform: platform +) +private classOf: object = ( + (* :literalmessage: primitive: 85 *) + halt. +) +private createFarReferenceTo: target in: targetActor for: sourceActor = ( + ^(InternalFarReference target: target targetsActor: targetActor) externalRef. +) +private currentMonotonicMillis = ( + ^currentMonotonicNanos quo: 1000000 +) +private currentMonotonicNanos = ( + (* :literalmessage: primitive: 100 *) + halt. +) +private isRef: object ^ = ( + ^Ref = (classOf: object) +) +private isValueObject: object ^ = ( + nil = object ifTrue: [^true]. + true = object ifTrue: [^true]. + false = object ifTrue: [^true]. + object isKindOfString ifTrue: [^true]. + object isKindOfNumber ifTrue: [^true]. + object isKindOfBehavior ifTrue: [^true (* ^isValueObject: object enclosingClass *)]. + Promise = object ifTrue: [^true]. + ^false +) +private wrapArgument: argument from: sourceActor to: targetActor = ( + (* [argument] lives in [sourceActor], answer the corresponding proxy that lives in [targetActor] *) + + sourceActor = targetActor ifTrue: [halt. (* We can't tell which side a near reference belongs to here, so we must have decided this earlier. *) ]. + + ^(asInternalRef: argument) wrapFor: targetActor +) +private wrapArguments: arguments from: sourceActor to: targetActor = ( + ^arguments collect: [:argument | wrapArgument: argument from: sourceActor to: targetActor]. +) +) : ( +) diff --git a/out/ActorsForV8.ns b/out/ActorsForV8.ns new file mode 100644 index 00000000..d8aea2b6 --- /dev/null +++ b/out/ActorsForV8.ns @@ -0,0 +1,779 @@ +Newspeak3 +'Actors' +class ActorsForV8 usingPlatform: p = (| +private WeakMap = p collections IdentityMap. +private List = p collections List. +private Message = p kernel Message. + +private internalRefs = WeakMap new. + +public Promise = PromiseUtils new. + +defaultActor = DOMActor named: 'Default actor'. +|js assign: (js ident: 'currentActor') toBe: defaultActor) ( +public class Actor named: debugName = (| +private (* N.B. Do not leak to subinstances. *) internalActor = DOMActor named: debugName. +|) ( +public interrupt = ( + unimplemented +) +public onError: onError <[:E]> = ( + unimplemented. +) +public seed: value ^ = ( + (* Creating a far reference to a PassByCopy is questionable. It may be that this should be seed: receiver perform: selector with: argument. *) + (isValueObject: value) ifFalse: [Error signal: 'Cannot seed an actor with a non-Value.']. + ^createFarReferenceTo: value in: internalActor for: currentActor. +) +public terminate = ( + unimplemented +) +) : ( +) +class DOMActor named: n = InternalActor ( +(* An actor whose turns run in the DOM Context. *) +| + protected name = n. +|) ( +public enqueueMessage: actorMessage = ( + actorMessage postedTo: self. + + (* bogus - should drain an explicit queue to allow for a randomizing scheduler *) + js + call: (js propertyOf: (js ident: 'theGlobalObject') at: (js literal: 'setTimeout')) + with: {[js assign: (js ident: 'currentActor') toBe: self. + actorMessage deliverIn: self]. js literal: 0}. +) +) : ( +) +protected class EventualSendReactor selector: s arguments: a resolver: r = ( +(* An eventual-send to a promise. + +Note that all slots contain objects that belong to the actor which performed the eventual send. *) +| +protected selector = s. +protected arguments = a. +protected resolver = r. +|) ( +public reactBroken: error = ( + (* Broken promise contagion. *) + resolver __owner == currentActor ifFalse: [halt]. + (* Should this be immediate? *) + (* resolver internalBreak: error. ? *) + currentActor enqueueMessage: + (PendingDelivery + receiver: resolver + selector: #internalResolve: + arguments: {InternalBrokenRef problem: error __owner: resolver __owner} + resolver: nil) +) +public reactMoreResolved: internalRef = ( + resolver internalResolve: (asInternalRef: (internalRef eventualSend: selector arguments: arguments)). +) +public reactResolved: value = ( + resolver __owner == currentActor ifFalse: [halt]. + resolver internalResolve: + (asInternalRef: (currentActor + eventualSendTo: value + selector: selector + arguments: arguments)) +) +) : ( +) +class InternalActor = () ( +public currentActor = ( + (* BOGUS. Polymorphic with other actor system. *) + ^self +) +public eventualSendTo: receiver selector: selector arguments: arguments ^ = ( + (* Sent from the compilation of an eventual send, via the same method in ProcessScheduler. *) + ^(asInternalRef: receiver) eventualSend: selector arguments: arguments +) +) : ( +) +class InternalBrokenRef problem: p __owner: o = InternalRef __owner: o (| +protected problem = p. +|) ( +public addReactor: reactor = ( + reactor reactBroken: problem. +) +public checkCycle ^ = ( + ^false +) +public eventualSend: selector arguments: arguments ^ = ( + ^self externalRef (* I.e., broken with same problem. Should this wait for the next turn? *) +) +public immediateSend: message ^ = ( + ^Error signal: 'Cannot immediate-send to a broken ref: ', message selector +) +public printOn: stream = ( + stream nextPutAll: 'InternalBrokenRef: '. + problem printOn: stream. +) +public refPrintOn: stream = ( + stream nextPutAll: ''. +) +public shorten ^ = ( + ^self +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise = InternalLocalPromise __owner: __owner. | + currentActor enqueueMessage: + (PendingDelivery + receiver: onError + selector: #cull: + arguments: {problem} + resolver: localPromise). + ^localPromise externalRef +) +public wrapFor: targetActor = ( + self checkCurrentActor. + #BOGUS. + ^(InternalBrokenRef problem: problem __owner: targetActor) externalRef +) +) : ( +) +class InternalFarReference target: t targetsActor: ta __owner: o = InternalRef __owner: o (| +protected target = t. +protected targetsActor = ta. +|) ( +public addReactor: reactor = ( + reactor reactResolved: externalRef +) +public checkCycle ^ = ( + ^false +) +public eventualSend: selector arguments: arguments ^ = ( + | resolverInTarget remotePromise redirector | + resolverInTarget:: InternalLocalPromise __owner: targetsActor. + targetsActor enqueueMessage: + (PendingDelivery + receiver: target + selector: selector + arguments: (wrapArguments: arguments from: currentActor to: targetsActor) + resolver: resolverInTarget). + + remotePromise:: InternalRemotePromise + target: resolverInTarget + targetsActor: targetsActor + __owner: currentActor. + + redirector:: RedirectReactor + from: targetsActor + to: currentActor + resolver: remotePromise. + targetsActor enqueueMessage: + (PendingDelivery + receiver: resolverInTarget + selector: #addReactor: + arguments: {redirector} + resolver: nil). + + ^remotePromise externalRef +) +public immediateSend: message ^ = ( + ^Error signal: 'Cannot immediate-send to an eventual ref: ', message selector +) +public printOn: stream = ( + stream nextPutAll: 'InternalFarRef: '. + target printOn: stream. +) +public refPrintOn: stream = ( + stream nextPutAll: ''. +) +public shorten ^ = ( + ^self +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise = InternalLocalPromise __owner: __owner. | + currentActor enqueueMessage: + (PendingDelivery + receiver: onValue + selector: #cull: + arguments: {externalRef} + resolver: localPromise). + ^localPromise externalRef +) +public wrapFor: targetActor = ( + targetsActor == targetActor ifTrue: [^target]. + ^(InternalFarReference target: target targetsActor: targetsActor __owner: targetActor) externalRef. +) +) : ( +) +class InternalLocalPromise __owner: o = InternalRef __owner: o (| +protected state ::= #unresolved. (* resolving. resolved *) +protected resolution +protected reactors +|) ( +public addReactor: reactor = ( + state == #unresolved ifTrue: + [reactors == nil ifTrue: [reactors:: List new]. + reactors add: reactor. + ^self]. + state == #resolved ifTrue: + [^resolution addReactor: reactor]. + halt. +) +public checkCycle ^ = ( + state == #resolving ifTrue: [^true]. + state == #unresolved ifTrue: [^false]. + state == #resolved ifTrue: [^resolution checkCycle]. + halt. +) +public eventualSend: selector arguments: arguments ^ = ( + | localPromise | + self checkCurrentActor. + state == #resolved ifTrue: [^resolution eventualSend: selector arguments: arguments]. + localPromise:: InternalLocalPromise __owner: __owner. + self addReactor: (EventualSendReactor selector: selector arguments: arguments resolver: localPromise). + ^localPromise externalRef +) +public immediateSend: message ^ = ( + state == #resolved ifTrue: [^resolution immediateSend: message]. + ^Error signal: 'Cannot immediate-send to an eventual ref: ', message selector +) +public internalResolve: internalRef = ( + state == #unresolved ifFalse: [^Error signal: 'Already resolved']. + internalRef isInternalRef ifFalse: [halt]. + + state:: #resolving. + internalRef checkCycle + ifTrue: [resolution:: InternalBrokenRef problem: (Error new messageText: 'Cyclic resolution') __owner: __owner] + ifFalse: [resolution:: internalRef]. + state:: #resolved. + + nil == reactors ifFalse: + [reactors do: [:reactor | resolution addReactor: reactor]. + reactors:: nil]. +) +public printOn: stream = ( + stream nextPutAll: 'InternalLocalPromise: '. + state printOn: stream. +) +public refPrintOn: stream = ( + state == #resolved + ifTrue: [resolution refPrintOn: stream] + ifFalse: [stream nextPutAll: '']. +) +public shorten ^ = ( + state == #unresolved ifTrue: [^self]. + state == #resolved ifTrue: [^resolution]. + halt. +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise | + self checkCurrentActor. + state == #resolved ifTrue: [^resolution whenFulfilled: onValue whenBroken: onError]. + localPromise:: InternalLocalPromise __owner: __owner. + self addReactor: (WhenReactor onValue: onValue onError: onError resolver: localPromise). + ^localPromise externalRef +) +public wrapFor: targetActor = ( + state == #resolved ifTrue: [^resolution wrapFor: targetActor]. + + checkCurrentActor. + targetActor == __owner ifTrue: [halt]. + + ^(InternalRemotePromise target: self targetsActor: currentActor __owner: targetActor) externalRef +) +) : ( +) +class InternalNearRef wrapping: t __owner: o = InternalRef __owner: o (| +protected target = t. +|) ( +public addReactor: reactor = ( + reactor reactResolved: target. +) +public checkCycle ^ = ( + ^false +) +public eventualSend: selector arguments: arguments ^ = ( + | localPromise = InternalLocalPromise __owner: __owner. | + currentActor enqueueMessage: + (PendingDelivery + receiver: target + selector: selector + arguments: arguments + resolver: localPromise). + ^localPromise externalRef +) +public immediateSend: message ^ = ( + ^message sendTo: target +) +public printOn: stream = ( + stream nextPutAll: 'InternalNearRef: '. + target printOn: stream. +) +public refPrintOn: stream = ( + stream nextPutAll: ''. +) +public shorten ^ = ( + ^self +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise = InternalLocalPromise __owner: __owner. | + currentActor enqueueMessage: + (PendingDelivery + receiver: onValue + selector: #cull: + arguments: {target} + resolver: localPromise). + ^localPromise externalRef +) +public wrapFor: targetActor = ( + self checkCurrentActor. + (isValueObject: target) ifTrue: [^target]. + ^createFarReferenceTo: target in: currentActor for: targetActor +) +) : ( +) +class InternalRef __owner: o = (| +public __owner = o. +|) ( +protected checkCurrentActor = ( + currentActor == __owner ifFalse: [halt]. +) +public checkCycle ^ = ( + subclassResponsibility +) +public eventualSend: selector arguments: arguments ^ = ( + subclassResponsibility +) +public externalRef = ( + ^Ref wrapping: self +) +public immediateSend: message ^ = ( + subclassResponsibility +) +public isInternalRef ^ = ( + ^true +) +public refPrintOn: stream = ( + subclassResponsibility +) +public shorten ^ = ( + subclassResponsibility +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + subclassResponsibility +) +public wrapFor: targetActor = ( + subclassResponsibility +) +) : ( +) +class InternalRemotePromise target: t targetsActor: ta __owner: o = InternalRef __owner: o (| +target = t. +targetsActor = ta. +state ::= #unresolved. +resolution +|) ( +public addReactor: reactor = ( + state == #resolved ifTrue: [^resolution addReactor: reactor]. + state == #unresolved ifTrue: [^reactor reactMoreResolved: self]. + stop5. +) +public checkCycle ^ = ( + state == #resolving ifTrue: [^true]. + state == #unresolved ifTrue: [^false]. + state == #resolved ifTrue: [^resolution checkCycle]. + halt. +) +public eventualSend: selector arguments: arguments ^ = ( + | resolverInTarget remotePromise redirector | + resolverInTarget:: InternalLocalPromise __owner: targetsActor. + targetsActor enqueueMessage: + (PendingDelivery + receiver: target + selector: #eventualSend:arguments: + arguments: {selector. (wrapArguments: arguments from: currentActor to: targetsActor)} + resolver: resolverInTarget). + + remotePromise:: InternalRemotePromise + target: resolverInTarget + targetsActor: targetsActor + __owner: currentActor. + + redirector:: RedirectReactor + from: targetsActor + to: currentActor + resolver: remotePromise. + targetsActor enqueueMessage: + (PendingDelivery + receiver: resolverInTarget + selector: #addReactor: + arguments: {redirector} + resolver: nil). + + ^remotePromise externalRef +) +public immediateSend: message ^ = ( + state == #resolved ifTrue: [^resolution immediateSend: message]. + ^Error signal: 'Cannot immediate-send to an eventual ref: ', message selector +) +public internalResolve: internalRef = ( + state == #unresolved ifFalse: [^Error signal: 'Already resolved']. + internalRef isInternalRef ifFalse: [halt]. + + state:: #resolving. + internalRef checkCycle + ifTrue: [resolution:: InternalBrokenRef problem: (Error new messageText: 'Cyclic resolution') __owner: __owner] + ifFalse: [resolution:: internalRef]. + state:: #resolved. +) +public printOn: stream = ( + stream nextPutAll: 'InternalRemotePromise: '. + state printOn: stream. +) +public redirectFrom: sourceActor to: destinationActor resolving: resolver = ( + | redirector | + destinationActor == targetsActor ifTrue: + [targetsActor enqueueMessage: + (PendingDelivery + receiver: resolver + selector: #internalResolve: + arguments: {target} + resolver: nil). + ^self]. + + redirector:: RedirectReactor + from: targetsActor + to: destinationActor + resolver: resolver. + targetsActor enqueueMessage: + (PendingDelivery + receiver: target + selector: #addReactor: + arguments: {redirector} + resolver: nil). +) +public refPrintOn: stream = ( + state == #resolved + ifTrue: [resolution refPrintOn: stream] + ifFalse: [stream nextPutAll: '']. +) +public shorten ^ = ( + state == #unresolved ifTrue: [^self]. + state == #resolved ifTrue: [^resolution]. + halt. +) +public whenFulfilled: onValue whenBroken: onError ^ = ( + | localPromise redirector | + self checkCurrentActor. + state == #resolved ifTrue: [^resolution whenFulfilled: onValue whenBroken: onError]. + + localPromise:: InternalLocalPromise __owner: __owner. + redirector:: RedirectReactor + from: targetsActor + to: currentActor + resolver: localPromise. + targetsActor enqueueMessage: + (PendingDelivery + receiver: target + selector: #addReactor: + arguments: {redirector} + resolver: nil). + ^localPromise whenFulfilled: onValue whenBroken: onError. +) +public wrapFor: targetActor = ( + state == #resolved ifTrue: [^resolution wrapFor: targetActor]. + + targetActor == targetsActor ifTrue: [^target externalRef]. + + ^(InternalRemotePromise target: target targetsActor: targetsActor __owner: targetActor) externalRef +) +) : ( +) +protected class PendingDelivery receiver: r selector: s arguments: a resolver: y = ( +(* A message in an actor's event queue. Every turn starts by sending #deliverIn:. + +Note that all slots contain objects that belong to the actor in which the message is queued, even the resolver. *) +| +protected receiver = r. +protected selector = s. +protected arguments = a. +protected resolver = y. +|) ( +public deliverIn: fastCurrentActor = ( + | resolution type msg | + + (* Transcript print: fastCurrentActor; space; print: self; cr. *) + msg:: Message selector: selector arguments: arguments. + + [resolution:: msg sendTo: receiver. + type:: #internalResolve:] + on: Error (* BOGUS: Exception? *) + do: [:error | + error out. + resolver == nil ifTrue: [error pass]. + resolution:: error. + type:: #internalBreak:]. + + (* Transcript show: {resolver. type. resolution}; cr. *) + + nil == resolver ifTrue: [ + type == #internalBreak: ifTrue: [{'silent failure'. resolution} out]. + ^self]. + + resolver internalResolve: (type == #internalResolve: + ifTrue: [asInternalRef: resolution] + ifFalse: [InternalBrokenRef problem: resolution __owner: self]). +) +public postedTo: actor = ( + (*check: receiver allowedIn: actor. + arguments do: [:arg | check: arg allowedIn: actor].*) + + (* selector numArgs == arguments size ifFalse: [halt]. *) + resolver == nil ifFalse: [resolver __owner == actor ifFalse: [halt]]. +) +public printOn: stream = ( + receiver printOn: stream. + stream nextPutAll: ' <-: '. + stream nextPutAll: selector. + stream space. + arguments isEmpty ifFalse: [arguments printOn: stream]. +) +) : ( +) +class PromiseUtils = () ( +public all: refs ^ = ( + (* Answers a promise that resolves with all the resolutions of refs, or the first problem. *) +) +public broken: problem ^ = ( + ^Resolver new break: problem; promise +) +public fulfilled: resolution ^ = ( + ^Resolver new fulfill: resolution; promise +) +public timeout: ref after: milliseconds ^ = ( + (* Answers a promise that resolves with the resolution of ref, or a TimeoutError if refs is not resolved within milliseconds. *) + #BOGUS. (* Should have proper duration type. *) +) +public when: ref fulfilled: onValue <[:V | V2 def]> ^ = ( + (* Subscribe to notification of a reference being fulfilled. If ref is fulfilled, onValue will run in some turn after the turn that resolves ref, and the returned promise with be resolved with the result of onValue. If ref is broken, the returned promise with be broken with the same error. *) + ^(asInternalRef: ref) whenFulfilled: onValue whenBroken: [:e | e signal] (* Should we make this the behavior of a nil catch-clause instead? *) +) +public when: ref fulfilled: onValue <[:V | V2 def]> broken: onError <[:E | E2 def]> ^ = ( + (* Subscribe to notification of a reference being fulfilled or broken. onValue or onError respectively will run in some turn after the turn that resolves ref., and the returned promise with be resolved with the result of the callback. *) + ^(asInternalRef: ref) whenFulfilled: onValue whenBroken: onError +) +public when: ref partitioned: onPartition <[:Promise | R def] | [R def]> ^ = ( + (* Subscribe to notification of a reference breaking due to partition. *) +) +) : ( +) +protected class RedirectReactor from: s to: d resolver: r = ( +(* A bridge between InternalResolvers in different actors. *) +| +protected sourceActor = s. +protected destinationActor = d. +protected resolver = r. +|) ( +public reactBroken: r = ( + | msg | + currentActor == sourceActor ifFalse: [halt]. + msg:: PendingDelivery + receiver: resolver + selector: #internalResolve: + arguments: {InternalBrokenRef problem: r __owner: destinationActor} + resolver: nil. + destinationActor enqueueMessage: msg. +) +public reactMoreResolved: internalRef = ( + internalRef redirectFrom: sourceActor to: destinationActor resolving: resolver. +) +public reactResolved: r = ( + | msg | + currentActor == sourceActor ifFalse: [halt]. + msg:: PendingDelivery + receiver: resolver + selector: #internalResolve: + arguments: {asInternalRef: (wrapArgument: r from: sourceActor to: destinationActor)} + resolver: nil. + destinationActor enqueueMessage: msg. +) +) : ( +) +class Ref wrapping: ref = (| +protected internalRef = ref. +|internalRefs at: self put: ref) ( +protected doesNotUnderstand: message = ( + (* For the debugger/inspector. Questionable. *) + (* Should probably override public method of Object as well. *) + 0 = message arguments size ifTrue: [(message selector startsWith: 'is') ifTrue: [^false]]. + ^internalRef immediateSend: message +) +public identityHash = ( + (* :bogus: Need a proper implementation of WeakMap that does not send messages to its keys. *) + ^super hash +) +public isPromise = ( + ^true +) +public printOn: stream = ( + (* BOGUS - debugging *) + internalRef refPrintOn: stream. +) +protected yourself = ( + ^super yourself +) +) : ( +) +public class Resolver = ( +(*A Resolver represents the authority to resolve a Promise and is the control facet of the promise's eventual resolution.*) +| + private (* N.B. We must not leak access to an InternalResolver via subobjects. *) internalResolver = InternalLocalPromise __owner: currentActor. + public promise = internalResolver externalRef. +|) ( +public break: error = ( + internalResolver internalResolve: (InternalBrokenRef problem: error __owner: currentActor). +) +public fulfill: value = ( + internalResolver internalResolve: (asInternalRef: value). +) +public isResolver ^ = ( + ^true +) +) : ( +) +class Scheduler = () ( +public eventualSendTo: r selector: s arguments: a = ( +) +) : ( +) +public class Timer __duration: milliseconds callback: callback repeating: repeating = (| + protected cancelled ::= false. +|repeating + ifTrue: [self schedule: callback every: milliseconds] + ifFalse: [self schedule: callback after: milliseconds]) ( +public cancel = ( + cancelled:: true. + nil == process ifFalse: [process terminate. process:: nil]. +) +public isActive ^ = ( + cancelled ifTrue: [^false]. + ^nil ~= process +) +public isTimer ^ = ( + ^true +) +protected schedule: callback after: ms = ( + js call: (js propertyOf: (js ident: 'window') at: (js literal: 'setTimeout')) + with: {callback. ms} +) +protected schedule: callback every: ms = ( + js call: (js propertyOf: (js ident: 'window') at: (js literal: 'setInterval')) + with: {callback. ms} +) +) : ( +public after: duration do: callback <[]> ^ = ( + ^self __duration: duration callback: callback repeating: false +) +public every: duration do: callback <[:Timer]> ^ = ( + ^self __duration: duration callback: callback repeating: true +) +) +protected class WhenReactor onValue: v onError: e resolver: r = ( +(* A when-catch for a promise. + +Note that all slots contain objects that belong to the actor which sent #whenResolved:. *) +| + protected onValue <[:V] | []> = v. + protected onError <[:E] | []> = e. + protected resolver = r. +|) ( +public reactBroken: value = ( + resolver __owner == currentActor ifFalse: [halt]. + currentActor enqueueMessage: + (PendingDelivery + receiver: onError + selector: #cull: + arguments: {value} + resolver: resolver). +) +public reactMoreResolved: internalRef = ( + resolver internalResolve: (asInternalRef: (internalRef whenFulfilled: onValue whenBroken: onError)). +) +public reactResolved: value = ( + resolver __owner == currentActor ifFalse: [halt]. + currentActor enqueueMessage: + (PendingDelivery + receiver: onValue + selector: #cull: + arguments: {value} + resolver: resolver). +) +) : ( +) +private asInternalRef: externalRefOrUnboxedNearRef = ( + ^(isRef: externalRefOrUnboxedNearRef) + ifTrue: [internalRefs at: externalRefOrUnboxedNearRef ifAbsent: [halt]] + ifFalse: [InternalNearRef wrapping: externalRefOrUnboxedNearRef __owner: currentActor] +) +private check: object allowedIn: actor = ( + assert: [nil ~= actor] message: 'Invalid actor'. + + (isRef: object) ifTrue: [object __owner == actor ifFalse: [halt]]. + (* Otherwise near reference *) +) +private createFarReferenceTo: target in: targetActor for: sourceActor = ( + ^(InternalFarReference target: target targetsActor: targetActor __owner: sourceActor) externalRef. +) +private createRemotePromiseOf: resolverInTarget in: targetActor for: sourceActor = ( + | sourceResolver redirector message remotePromise | + sourceActor == targetActor ifTrue: [halt]. + + sourceResolver:: InternalLocalPromise __owner: sourceActor. + sourceResolver state: #remote. + sourceResolver _targetPromise: resolverInTarget. + sourceResolver _targetActor: targetActor. + + redirector:: RedirectReactor + from: targetActor + to: sourceActor + resolver: sourceResolver. + + message:: PendingDelivery + receiver: resolverInTarget + selector: #addReactor: + arguments: {redirector} + resolver: nil. + targetActor enqueueMessage: message. + + ^Ref wrapping: sourceResolver __owner: sourceActor. +) +private currentActor = ( + ^js ident: 'currentActor' +) +private isRef: object ^ = ( + ^Ref == (js propertyOf: object at: (js literal: 'newspeakClass')) +) +private isValueObject: object ^ = ( + nil == object ifTrue: [^true]. + true == object ifTrue: [^true]. + false == object ifTrue: [^true]. + object isKindOfString ifTrue: [^true]. + object isKindOfNumber ifTrue: [^true]. + object isKindOfCharacter ifTrue: [^true]. + object isKindOfBehavior ifTrue: [^isValueObject: object enclosingClass]. + Promise == object ifTrue: [^true]. + ^false +) +private wrapArgument: argument from: sourceActor to: targetActor = ( + (* [argument] lives in [sourceActor], answer the corresponding proxy that lives in [targetActor] *) + + sourceActor == targetActor ifTrue: [halt. (* We can't tell which side a near reference belongs to here, so we must have decided this earlier. *) ]. + + ^(asInternalRef: argument) wrapFor: targetActor +) +private wrapArguments: arguments from: sourceActor to: targetActor = ( + ^arguments collect: [:argument | wrapArgument: argument from: sourceActor to: targetActor]. +) +) : ( +) diff --git a/out/ActorsTesting.ns b/out/ActorsTesting.ns new file mode 100644 index 00000000..30efea69 --- /dev/null +++ b/out/ActorsTesting.ns @@ -0,0 +1,841 @@ +Newspeak3 +'Actors' +class ActorsTesting usingPlatform: p actors: a testActor: ta minitest: m = (| + private TestActor = ta. + private TestContext = m TestContext. + private MessageNotUnderstood = p kernel MessageNotUnderstood. + private List = p collections List. + private Resolver = a Resolver. + private Timer = a Timer. + private Stopwatch = p kernel Stopwatch. + private Actor = a Actor. + private Promise = a Promise. +|) ( +class FooError = Error () ( +) : ( +) +class HappensAfterChecker eventCount: n = (| + events = List new. + eventCount = n. + resolver = Resolver new. + public whenDone = resolver promise. +|) ( +public check: event happensAfter: predecessor = ( + nil = predecessor ifFalse: + [(events includes: predecessor) ifFalse: + [resolver break: event, ' happened, but ', predecessor, ' has not yet happened'. ^self]]. + events add: event. + events size = eventCount ifTrue: [resolver fulfill: events size]. +) +) : ( +) +public class MultiActorTests = TestBase () ( +public testPipeliningImmediateLocalResolution1 = ( + | a1 a2 p p1 p2 | + a1:: ((Actor named: 'otherX') seed: TestActor) <-: new. + a2:: ((Actor named: 'otherX') seed: TestActor) <-: new. + a1 <-: link: a2. + + p1:: a1 <-: forwardReturn42. + p2:: a1 <-: forwardReturn42. + p:: a1 <-: forwardNoWaitAdd: p1 and: p2. + + ^assert: p resolvesTo: 84. +) +public testPipeliningImmediateLocalResolution1Forking = ( + | a1 a2 p p1 p2 | + a1:: ((Actor named: 'otherX') seed: TestActor) <-: new. + a2:: ((Actor named: 'otherX') seed: TestActor) <-: new. + a1 <-: link: a2. + + p1:: a1 <-: forwardReturn42. + p1 <-: yourself. + p2:: a1 <-: forwardReturn42. + p2 <-: yourself. + p:: a1 <-: forwardNoWaitAdd: p1 and: p2. (* Questionable. *) + + ^assert: p resolvesTo: 84. +) +public testTokenRingPassByRef = ( + | a1 a2 a3 p | + a1:: ((Actor named: 'A1') seed: TestActor) <-: new. + a2:: ((Actor named: 'A2') seed: TestActor) <-: new. + a3:: ((Actor named: 'A3') seed: TestActor) <-: new. + a1 <-: link: a2. + a3 <-: link: a3. + + p:: a1 <-: pass: self. + + ^assert: p resolvesTo: self. +) +public testTokenRingPromisePostResolved = ( + | a1 a2 a3 r p | + a1:: ((Actor named: 'A1') seed: TestActor) <-: new. + a2:: ((Actor named: 'A2') seed: TestActor) <-: new. + a3:: ((Actor named: 'A3') seed: TestActor) <-: new. + a1 <-: link: a2. + a3 <-: link: a3. + + r:: Resolver new. + p:: a1 <-: pass: r promise. + r fulfill: #after. + + ^assert: p resolvesTo: #after. +) +public testTokenRingPromisePreResolved = ( + | a1 a2 a3 r p | + a1:: ((Actor named: 'A1') seed: TestActor) <-: new. + a2:: ((Actor named: 'A2') seed: TestActor) <-: new. + a3:: ((Actor named: 'A3') seed: TestActor) <-: new. + a1 <-: link: a2. + a3 <-: link: a3. + + r:: Resolver new. + r fulfill: #before. + p:: a1 <-: pass: r promise. + + ^assert: p resolvesTo: #before. +) +public testTokenRingValue = ( + | a1 a2 a3 p | + a1:: ((Actor named: 'A1') seed: TestActor) <-: new. + a2:: ((Actor named: 'A2') seed: TestActor) <-: new. + a3:: ((Actor named: 'A3') seed: TestActor) <-: new. + a1 <-: link: a2. + a3 <-: link: a3. + + p:: a1 <-: pass: #token. + + ^assert: p resolvesTo: #token. +) +) : ( +TEST_CONTEXT = () +) +public class SingleActorTests = TestBase () ( +public factorial: n = ( + ^n > 1 + ifTrue: [(self <-: factorial: n - 1) <-: * n] + ifFalse: [1] +) +public returnBrokenPromise = ( + ^self <-: doesNotExist +) +public returnPromise = ( + ^self <-: yourself +) +public returnPromise: n = ( + ^n = 0 + ifTrue: [self] + ifFalse: [self <-: returnPromise: n - 1]. +) +public run: block = ( + ^block value +) +public signalError = ( + Error signal: 'some error'. +) +public testAddPromises = ( + (* :todo: Do we want this property? What this tests is really an issue with the Number implementation, not the Promise implementation, namely it uses a double-dispatching the works with proxies. *) + (* | p1 p2 | + p1:: Resolver new fulfill: 3; promise. + p2:: Resolver new fulfill: 4; promise. + + assert: p1 + p2 equals: 7. *) +) +public testBrokenPromiseContagion1 = ( + | p | + p:: (self <-: signalError) <-: doesNotExist. + + ^assert: p smashedWith: Error. (* Not MessageNotUnderstood *) +) +public testBrokenPromiseContagion2 = ( + | p | + p:: (self <-: signalError) <-: yourself. + + ^assert: p smashedWith: Error. +) +public testBrokenPromiseContagion3 = ( + | p | + p:: when: (self <-: signalError) fulfilled: [halt]. + + ^assert: p smashedWith: Error. +) +public testChainAfterBroken = ( + | r p r2 p2 | + r:: Resolver new. + p:: r promise. + r2:: Resolver new. + p2:: r2 promise. + when: p fulfilled: [halt] broken: [when: p fulfilled: [halt] broken: [r2 fulfill: 42]]. + r break: 21. + + ^assert: p2 resolvesTo: 42. +) +public testChainAfterForwarded = ( + | r p r2 p2 p3 | + r:: Resolver new. + p:: r promise. + r2:: Resolver new. + p2:: r2 promise. + when: p fulfilled: [:res | deny: res isPromise]. + p3:: [ (*A*) [ when: p (*B*) fulfilled: [r2 fulfill: 42]] <-: value. 21] <-: value. + assert: [p3 isPromise]. + r fulfill: p3. + + (* No way to guarantee B happens after p is resolved to p3, but this happens in the current implementation. *) + + ^assert: p2 resolvesTo: 42. +) +public testChainAfterResolved = ( + | r p r2 p2 | + r:: Resolver new. + p:: r promise. + r2:: Resolver new. + p2:: r2 promise. + when: p fulfilled: [when: p fulfilled: [r2 fulfill: 42]]. + r fulfill: 21. + + ^assert: p2 resolvesTo: 42. +) +public testChainPromiseToError = ( + | p | + p:: self <-: returnBrokenPromise. + assert: [p isPromise]. + + ^assert: p smashedWith: MessageNotUnderstood. +) +public testChainPromiseToValue = ( + | p | + p:: self <-: returnPromise. + assert: [p isPromise]. + + ^assert: p resolvesTo: self. +) +public testDatalock = ( + | weHaveAlwaysBeenAtWarWithEurasia epimenides | + weHaveAlwaysBeenAtWarWithEurasia:: true. + epimenides:: [weHaveAlwaysBeenAtWarWithEurasia <-: not]. + weHaveAlwaysBeenAtWarWithEurasia:: epimenides <-: value. + + when: weHaveAlwaysBeenAtWarWithEurasia fulfilled: [halt] broken: [halt]. +) +public testDeeplyChainedPromise = ( + | p | + p:: self <-: returnPromise: 20. + assert: [p isPromise]. + + ^assert: p resolvesTo: self. +) +public testDoubleResolution = ( + | r p | + p:: Resolver new promise. + + (* Initially settled. *) + r:: Resolver new. + r fulfill: 1. + should: [r fulfill: 1] signal: Error. + + r:: Resolver new. + r fulfill: 1. + should: [r fulfill: p] signal: Error. + + r:: Resolver new. + r fulfill: 1. + should: [r break: 1] signal: Error. + + (* Initially forwarded. *) + r:: Resolver new. + r fulfill: p. + should: [r fulfill: 1] signal: Error. + + r:: Resolver new. + r fulfill: p. + should: [r fulfill: p] signal: Error. + + r:: Resolver new. + r fulfill: p. + should: [r break: 1] signal: Error. + + (* Initially broken. *) + r:: Resolver new. + r break: 1. + should: [r fulfill: 1] signal: Error. + + r:: Resolver new. + r break: 1. + should: [r fulfill: p] signal: Error. + + r:: Resolver new. + r break: 1. + should: [r break: 1] signal: Error. +) +public testEventualSendToNearPromiseError = ( + | p | + p:: (self <-: yourself) <-: doesNotExist. + assert: [p isPromise]. + + ^assert: p smashedWith: MessageNotUnderstood. +) +public testEventualSendToNearPromiseValue = ( + | p | + p:: (self <-: yourself) <-: yourself. + assert: [p isPromise]. + + ^assert: p resolvesTo: self. +) +public testEventualSendToNearRefError = ( + | p | + p:: self <-: doesNotExist. + assert: [p isPromise]. + + ^assert: p smashedWith: MessageNotUnderstood. +) +public testEventualSendToNearRefValue = ( + | p | + p:: self <-: yourself. + assert: [p isPromise]. + + ^assert: p resolvesTo: self. +) +public testFactorial = ( + ^assert: (factorial: 10) resolvesTo: 3628800. +) +public testImmediateResolution = ( + | p p2 | + p:: self <-: run: [3]. + p2:: self <-: run: [p + 4]. + + ^assert: p2 resolvesTo: 7. +) +public testImmediateSendToBroken = ( + | p | + p:: Resolver new break: FooError new; promise. + should: [p size] signal: Error. (* Not FooError. *) +) +public testImmediateSendToResolved = ( + | p | + p:: Resolver new fulfill: {1. 2. 3}; promise. + assert: p size equals: 3. +) +public testImmediateSendToUnresolved = ( + | p | + p:: Resolver new promise. + should: [p size] signal: Error. +) +public testMissingWhenBroken = ( + | r p | + r:: Resolver new. + p:: when: r promise fulfilled: [:v | halt]. + assert: [p isPromise]. + r break: Error new. + + ^assert: p smashedWith: Error. +) +public testNearReferenceWhen = ( + (* Does when need to be a message to some object other than the reference being observed? *) + (* If this doesn't work, how can one write a method that accepts input from another actor that might sometimes be a near ref because the argument was a Value but otherwise a far ref? *) + | o p | + o:: 42. + p:: when: o fulfilled: [:v | v * 2] broken: [:e | fail]. + ^assert: p resolvesTo: 84. +) +public testPromiseStopContagion = ( + | p | + p:: when: (self <-: signalError) + fulfilled: [halt] + broken: [:e | 'Return without exception']. + assert: [p isPromise]. + + ^assert: p resolvesTo: 'Return without exception'. +) +public testResolveAfterWhen = ( + | r p | + r:: Resolver new. + p:: r promise. + p:: when: p fulfilled: [:v | assert: v equals: #foo. 1]. + r fulfill: #foo. + + ^assert: p resolvesTo: 1. +) +public testResolveBeforeWhen = ( + | r p | + r:: Resolver new. + p:: r promise. + r fulfill: #foo. + p:: when: p fulfilled: [:v | assert: v equals: #foo. 1]. + + ^assert: p resolvesTo: 1. +) +public testUnresolved = ( + | r p | + r:: Resolver new. + p:: r promise. + + deny: [p isResolved]. +) +public testViciousResolutionDirect = ( + | r p | + r:: Resolver new. + p:: r promise. + r fulfill: p. + + ^assert: p smashedWith: Error. (* CyclicResolutionError *) +) +public testViciousResolutionIndirect = ( + | r1 p1 r2 p2 joinResolver outstanding | + r1:: Resolver new. + p1:: r1 promise. + r2:: Resolver new. + p2:: r2 promise. + + r1 fulfill: p2. + r2 fulfill: p1. + + outstanding:: 2. + joinResolver:: Resolver new. + when: p1 + fulfilled: [:resolution | joinResolver break: (Error new messageText: 'p1 was not smashed')] + broken: [:error | outstanding:: outstanding - 1. 0 = outstanding ifTrue: [joinResolver fulfill: nil]]. + when: p2 + fulfilled: [:resolution | joinResolver break: (Error new messageText: 'p2 was not smashed')] + broken: [:error | outstanding:: outstanding - 1. 0 = outstanding ifTrue: [joinResolver fulfill: nil]]. + ^joinResolver promise +) +public testWhenBrokenError = ( + | r p | + r:: Resolver new. + p:: when: r promise + fulfilled: [:v | halt] + broken: [:e | doesNotExist]. + assert: [p isPromise]. + r break: Error new. + + ^assert: p smashedWith: MessageNotUnderstood. +) +public testWhenBrokenValue = ( + | r p | + r:: Resolver new. + p:: when: r promise + fulfilled: [:v | halt] + broken: [:e | 42]. + assert: [p isPromise]. + r break: Error new. + + ^assert: p resolvesTo: 42. +) +public testWhenResolvedError = ( + | r p | + r:: Resolver new. + p:: when: r promise + fulfilled: [:v | Error signal: 'Something'] + broken: [:e | fail]. + assert: [p isPromise]. + r fulfill: 21. + + ^assert: p smashedWith: Error. +) +public testWhenResolvedValue = ( + | r p | + r:: Resolver new. + p:: when: r promise + fulfilled: [:v | v * 2] + broken: [:e | fail]. + assert: [p isPromise]. + r fulfill: 21. + + ^assert: p resolvesTo: 42. +) +) : ( +TEST_CONTEXT = () +) +class TestBase = TestContext () ( +assert: promise resolvesTo: expectedValue = ( + ^Promise + when: promise + fulfilled: [:value | assert: value equals: expectedValue] + broken: [:error | ^failWithMessage: 'Expected resolution of ', expectedValue printString, ' but broken with ', error printString] +) +assert: promise smashedWith: expectedErrorClass = ( + ^Promise + when: promise + fulfilled: [:value | ^failWithMessage: 'Expected broken with ', expectedErrorClass printString, ' but resolved with ', value printString] + broken: [:error | (* assert: resolution class equals: expectedErrorClass. *)] +) +) : ( +) +public class TimerTests = TestBase () ( +busyMilliseconds: millis = ( + | stopwatch = Stopwatch new. | + stopwatch start. + [stopwatch elapsedMilliseconds < millis] whileTrue. +) +public testCoTimers = ( + | r ticks t1 t2 | + r:: Resolver new. + ticks:: 0. + t1:: Timer every: 20 do: [:t | ticks:: ticks + 1]. + t2:: Timer after: 30 do: [t1 cancel. r fulfill: ticks]. + + ^assert: r promise resolvesTo: 1 +) +public testOneShotTimer = ( + | r t | + r:: Resolver new. + t:: Timer after: 100 do: [deny: [t isActive]. r fulfill: 42]. + assert: [t isActive]. + + ^assert: r promise resolvesTo: 42 +) +public testOneShotTimerInvalidCallback = ( + | fired t r | + fired:: false. + t:: Timer after: 4 do: [:timer | fired:: true]. + + r:: Resolver new. + Timer after: 8 do: [t cancel. r fulfill: 42]. + + ^when: r promise fulfilled: + [:result | + assert: result equals: 42. + deny: fired] +) +public testRepeatingTimer = ( + | count ::= 0. r t | + r:: Resolver new. + t:: Timer every: 10 do: + [:timer | + assert: timer equals: t. + count:: count + 1. + assert: [timer isActive]. + count = 5 ifTrue: [timer cancel. deny: [timer isActive]. r fulfill: 42]. + count > 5 ifTrue: [failWithMessage: 'Cancel failed']]. + + ^assert: r promise resolvesTo: 42 +) +public testRepeatingTimerContinuesWithExceptions = ( + | count ::= 0. r t | + r:: Resolver new. + t:: Timer every: 4 do: + [:timer | + count:: count + 1. + count = 5 + ifTrue: [timer cancel. r fulfill: 42] + ifFalse: [causeException]]. + + ^when: r promise fulfilled: + [:result | + assert: result equals: 42. + assert: count equals: 5] +) +public testRepeatingTimerDoesNotFireMidTurn = ( + | fired t r | + fired:: false. + t:: Timer every: 4 do: [:timer | fired:: true. timer cancel]. + busyMilliseconds: 8. + deny: fired. + t cancel. + + [yieldMilliseconds: 8] ensure: [t cancel]. + + deny: fired. +) +public testRepeatingTimerInvalidCallback = ( + | fired t r | + fired:: false. + t:: Timer every: 4 do: [fired:: true]. + + r:: Resolver new. + Timer after: 16 do: [t cancel. r fulfill: 42]. + + ^when: r promise fulfilled: + [:result | + assert: result equals: 42. + deny: fired] +) +public testTimerDoesNotFireEarlyMicros = ( + | r s t elapsedMicros | + r:: Resolver new. + s:: Stopwatch new start. + t:: Timer after: 16 do: [elapsedMicros:: s elapsedMicroseconds. r fulfill: 42]. + assert: [t isActive]. + + ^when: r promise fulfilled: + [:result | + assert: result equals: 42. + assert: elapsedMicros >= 16000] +) +public testTimerDoesNotFireEarlyMillis = ( + | r s t elapsedMillis | + r:: Resolver new. + s:: Stopwatch new start. + t:: Timer after: 16 do: [elapsedMillis:: s elapsedMilliseconds. r fulfill: 42]. + assert: [t isActive]. + + ^when: r promise fulfilled: + [:result | + assert: result equals: 42. + assert: elapsedMillis >= 16] +) +public testTimerDoesNotFireMidTurn = ( + | fired t r | + fired:: false. + t:: Timer after: 4 do: [fired:: true]. + busyMilliseconds: 8. + deny: fired. + t cancel. + + [yieldMilliseconds: 8] ensure: [t cancel]. + + deny: fired. +) +public testTimerHeapGrowth = ( + | r inOrder nextExpected | + r:: Resolver new. + inOrder:: true. + nextExpected:: 1. + + 1 to: 129 do: [:i | + Timer after: 1 do: + [nextExpected = i ifFalse: [inOrder:: false]. + nextExpected:: nextExpected + 1. + nextExpected = 130 ifTrue: [r fulfill: #done]]]. + + ^when: r promise fulfilled: + [:resolution | + assert: resolution equals: #done. + assert: inOrder] +) +public testTimerHeapGrowthWithCancellation = ( + | r timers inOrder nextExpected | + r:: Resolver new. + timers:: Array new: 129. + inOrder:: true. + nextExpected:: 1. + + 1 to: 129 do: [:i | | timer | + timer:: Timer after: 1 do: + [nextExpected = i ifFalse: [inOrder:: false]. + nextExpected:: nextExpected + 1. + i \\ 5 = 0 ifTrue: + [(timers at: i + 1) cancel. + nextExpected:: nextExpected + 1.]. + nextExpected = 130 ifTrue: [r fulfill: #done]]. + timers at: i put: timer]. + + ^when: r promise fulfilled: + [:result | + assert: result equals: #done. + assert: inOrder] +) +yieldMilliseconds: millis = ( + | r | + r:: Resolver new. + Timer after: millis do: [r fulfill: 42]. + assert: r promise resolvesTo: 42. +) +) : ( +TEST_CONTEXT = () +) +public class TwoActorTests = TestBase () ( +public echoItself: o = ( + ^o <-: yourself +) +public testFarRefImmediateSend = ( + | testActorP r | + testActorP:: ((Actor named: 'other') seed: TestActor) <-: new. + r:: Resolver new. + when: testActorP fulfilled: + [:testActorRef | + should: [testActorRef return42] signal: Error. + r fulfill: true]. + + ^assert: r promise resolvesTo: true. +) +public testFarRefWhen = ( + | testActorP p | + testActorP:: ((Actor named: 'other') seed: TestActor) <-: new. + p:: when: testActorP fulfilled: + [:testActorRef | when: testActorRef fulfilled: [42] broken: [21]]. + + ^assert: p resolvesTo: 42. +) +public testFarSendEcho = ( + | testActor p | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + p:: testActor <-: echo: self. + + ^assert: p resolvesTo: self. +) +public testFarSendError1 = ( + | testActor p | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + p:: testActor <-: signalError. + + ^assert: p smashedWith: Error. +) +public testFarSendError2 = ( + | testActor p | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + p:: testActor <-: doesNotExist. + + ^assert: p smashedWith: MessageNotUnderstood. +) +public testFarSendPromiseValue1 = ( + | testActor p | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + p:: testActor <-: returnPromise42. + + ^assert: p resolvesTo: 42. +) +public testFarSendPromiseValue2 = ( + | testActor p | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + p:: testActor <-: returnPromiseYourself. + + ^assert: (when: p fulfilled: [:testActorRef | testActor <-: = testActorRef]) resolvesTo: true. +) +public testFarSendValue = ( + | testActor p | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + p:: testActor <-: return42. + + ^assert: p resolvesTo: 42. +) +public testPipelining = ( + | testActor p | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + testActor <-: Promise: Promise. + + (* add:and: should not be waiting on the 42 promises in this actor to be resolved. *) + p:: testActor <-: waitAdd: (testActor <-: returnPromise42) and: (testActor <-: returnPromise42). + + ^assert: p resolvesTo: 84. +) +public testPipeliningImmediateLocalResolution1 = ( + | testActor p p1 p2 | + testActor:: ((Actor named: 'otherX') seed: TestActor) <-: new. + + p1:: testActor <-: return42. + p2:: testActor <-: return42. + p:: testActor <-: noWaitAdd: p1 and: p2. + + ^assert: p resolvesTo: 84. +) +public testPipeliningImmediateLocalResolution1Forking = ( + | testActor p p1 p2 | + testActor:: ((Actor named: 'otherX') seed: TestActor) <-: new. + + p1:: testActor <-: return42. + p1 <-: yourself. + p2:: testActor <-: return42. + p2 <-: yourself. + p:: testActor <-: noWaitAdd: p1 and: p2. (* Questionable. *) + + ^assert: p resolvesTo: 84. +) +public testPipeliningImmediateLocalResolution2 = ( + | testActor r p1 p2 | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + + r:: Resolver new. + p1:: 42 <-: yourself. + p2:: 42 <-: yourself. + [r fulfill: (testActor <-: noWaitAdd: p1 and: p2)] <-: value. + + ^assert: r promise resolvesTo: 84. +) +public testPipeliningImmediateLocalResolution2Forking = ( + | testActor r p1 p2 | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + + r:: Resolver new. + p1:: 42 <-: yourself. + p1 <-: yourself. + p2:: 42 <-: yourself. + p2 <-: yourself. + [r fulfill: (testActor <-: noWaitAdd: p1 and: p2)] <-: value. (* Questionable. *) + + ^assert: r promise resolvesTo: 84. +) +public testPromiseForking1 = ( + | testActor p1 p2 p3 | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + p1:: HappensAfterChecker <-: eventCount: 15. + + p1 <-: check: 'A' happensAfter: nil. + p2:: testActor <-: on: p1 check: 'B' happensAfter: 'A'. + p2 <-: check: 'C' happensAfter: 'B'. + p2 <-: check: 'D' happensAfter: 'C'. + testActor <-: on: p2 check: 'E' happensAfter: 'D'. + p2 <-: check: 'F' happensAfter: 'D'. + p1 <-: check: 'G' happensAfter: 'A'. + p1 <-: check: 'H' happensAfter: 'G'. + p3:: testActor <-: on: p1 check: 'I' happensAfter: 'H'. + p3 <-: check: 'J' happensAfter: 'I'. + p3 <-: check: 'K' happensAfter: 'J'. + testActor <-: on: p3 check: 'L' happensAfter: 'K'. + p3 <-: check: 'M' happensAfter: 'K'. + p1 <-: check: 'N' happensAfter: 'H'. + p1 <-: check: 'O' happensAfter: 'N'. + + ^assert: p1 <-: whenDone resolvesTo: 15. +) +public testPromiseForking2 = ( + | testActor r p1 p2 p3 | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + r:: Resolver new. + p1:: r promise. + + p1 <-: check: 'A' happensAfter: nil. + p2:: testActor <-: on: p1 check: 'B' happensAfter: 'A'. + p2 <-: check: 'C' happensAfter: 'B'. + p2 <-: check: 'D' happensAfter: 'C'. + testActor <-: on: p2 check: 'E' happensAfter: 'D'. + p2 <-: check: 'F' happensAfter: 'D'. + p1 <-: check: 'G' happensAfter: 'A'. + p1 <-: check: 'H' happensAfter: 'G'. + p3:: testActor <-: on: p1 check: 'I' happensAfter: 'H'. + p3 <-: check: 'J' happensAfter: 'I'. + p3 <-: check: 'K' happensAfter: 'J'. + testActor <-: on: p3 check: 'L' happensAfter: 'K'. + p3 <-: check: 'M' happensAfter: 'K'. + p1 <-: check: 'N' happensAfter: 'H'. + p1 <-: check: 'O' happensAfter: 'N'. + + when: (testActor <-: yourself) fulfilled: [r fulfill: (HappensAfterChecker <-: eventCount: 15)]. + ^assert: p1 <-: whenDone resolvesTo: 15. +) +public testPromiseLocalRemoteFlipFlop = ( + | testActor r p | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + r:: Resolver new. + p:: testActor <-: echoItself: r promise. + p:: self <-: echoItself: p. + p:: testActor <-: echoItself: r promise. + p:: self <-: echoItself: p. + p:: testActor <-: echoItself: r promise. + p:: self <-: echoItself: p. + r fulfill: self. + + ^assert: p resolvesTo: self. +) +public testViciousResolutionIndirectWithRemotePromise = ( + | testActor r p | + testActor:: ((Actor named: 'other') seed: TestActor) <-: new. + r:: Resolver new. + p:: r promise. + r fulfill: (testActor <-: echo: p). + + ^assert: p smashedWith: Error. (* CyclicResolutionError *) +) +) : ( +TEST_CONTEXT = () +) +when: ref fulfilled: onValue = ( + ^Promise when: ref fulfilled: onValue +) +when: ref fulfilled: onValue broken: onError = ( + ^Promise when: ref fulfilled: onValue broken: onError +) +) : ( +) diff --git a/out/ActorsTestingConfigurationForPrimordialSoup.ns b/out/ActorsTestingConfigurationForPrimordialSoup.ns new file mode 100644 index 00000000..2a6b31b7 --- /dev/null +++ b/out/ActorsTestingConfigurationForPrimordialSoup.ns @@ -0,0 +1,15 @@ +Newspeak3 +'Actors' +class ActorsTestingConfigurationForPrimordialSoup packageTestsUsing: manifest = (| +private ActorsTesting = manifest ActorsTesting. +private TestActor = manifest TestActor. +|) ( +public testModulesUsingPlatform: platform minitest: minitest = ( + ^{ActorsTesting + usingPlatform: platform + actors: platform actors + testActor: TestActor + minitest: minitest} +) +) : ( +) diff --git a/out/ActorsTestingConfigurationForSqueak.ns b/out/ActorsTestingConfigurationForSqueak.ns new file mode 100644 index 00000000..3cdec9c8 --- /dev/null +++ b/out/ActorsTestingConfigurationForSqueak.ns @@ -0,0 +1,16 @@ +Newspeak3 +'Actors' +class ActorsTestingConfigurationForSqueak packageTestsUsing: manifest = (| +private ActorsTesting = manifest ActorsTesting. +private Actors = manifest Actors. +private TestActor = manifest TestActor. +|) ( +public testModulesUsingPlatform: p minitest: m = ( + | + vm = p squeak VMMirror new. + a = Actors usingPlatform: p vm: vm. + | + ^{ActorsTesting usingPlatform: p actors: a testActor: TestActor minitest: m} +) +) : ( +) diff --git a/out/AliensForSqueak.ns b/out/AliensForSqueak.ns new file mode 100644 index 00000000..5be2021a --- /dev/null +++ b/out/AliensForSqueak.ns @@ -0,0 +1,19 @@ +Newspeak3 +'Aliens' +class AliensForSqueak usingPlatform: p vmMirror: vmm = ( +(* Aliens are Newspeak's capabilities for FFI. They represent C data and allow callouts and callbacks. This module simply provides access to the Smalltalk classes. The story for NS3 Aliens is not yet well-defined. + +More documentuation is available at +http://wiki.squeak.org/squeak/uploads/6100/Alien%20FFI.2.pdf +http://wiki.squeak.org/squeak/uploads/6100/Alien%20FFI%20bowels.2.pdf *) +| + public Alien = p squeak Alien. + public Callback = p squeak Callback. + public IllegalAlien = p squeak IllegalAlien. + public UnsafeAlien = p squeak UnsafeAlien. + public ObjectiveCAlien = p squeak ObjectiveCAlien. +|) ( +public resetForNewImageSession = ( +) +) : ( +) diff --git a/out/AliensForV8.ns b/out/AliensForV8.ns new file mode 100644 index 00000000..2c832d7c --- /dev/null +++ b/out/AliensForV8.ns @@ -0,0 +1,158 @@ +Newspeak3 +'Aliens' +class AliensForV8 usingPlatform: p = ( +(* Aliens are a capability-based API for a foreign function interface (FFI). On NS2V8, they allow Newspeak code to invoke JavaScript code and vice versa. + +An Alien is a Newspeak proxy for a JavaScript object. Upon receiving a message, an Alien expatriates the arguments, sends the message to the target JavaScript object, and alienates the result. + +An Expat is a JavaScript proxy for a Newspeak object. Unpon receiving a message, an Expat alienates the arguments, sends the message to the target Newspeak object, and expatriates the result. + +A bilingual object is one whose representation is the same in both languages: unwrapped basic types such as numbers, booleans. Note that even though Newspeak and JavaScript closures have the same representation, they are not bilingual and wrapping should occur because Newspeak closures expect Newspeak/Alien arguments and JavaScript closures expect JavaScript/Expat arguments. What about strings and arrays? It would seem we have to wrap arrays because their elements should be alieniated/expatriated. It may be safe to treat strings as bilingual if they always respond to messages with other bilingual objects. + +Alien mappings: +alien sort: a ignored: b ignored: c -> alien.sort(a, b, c) +alien new: a ignored: b ignored: c -> new alien(a, b, c) +alien at: 'a' -> alien.a +alien at: 'a' put: b -> alien.a = b + +Expat mappings: +? + +*) +| +public global = Alien wrapping: (js ident: 'theGlobalObject'). +|) ( +class Alien wrapping: o = ( + js assign: (js propertyOf: self at: (js literal: 'jsTarget')) toBe: o. +) ( +public at: key = ( + ^alienate: (js + call: (js propertyOf: (js ident: 'Reflect') at: (js literal: 'get')) + with: {js propertyOf: self at: (js literal: 'jsTarget'). expatriate: key}) +) +public at: key put: value = ( + js + call: (js propertyOf: (js ident: 'Reflect') at: (js literal: 'set')) + with: {js propertyOf: self at: (js literal: 'jsTarget'). expatriate: key. expatriate: value}. + ^value +) +doesNotUnderstand: msg = ( + | jsTarget jsArguments jsSelector jsResult | + jsTarget:: js propertyOf: self at: (js literal: 'jsTarget'). + jsArguments:: msg arguments collect: [:arg | expatriate: arg]. + jsSelector:: copyUntilFirstColon: msg mangledSelector. + jsResult:: jsSelector = 'new' + ifTrue: + [js call: (js propertyOf: (js ident: 'Reflect') at: (js literal: 'construct')) with: {jsTarget. jsArguments}] + ifFalse: + [ | jsFunction | + jsFunction:: js propertyOf: jsTarget at: jsSelector. + (js operator: '===' with: jsFunction and: (js ident: 'undefined')) + ifTrue: [^super doesNotUnderstand: msg]. + js call: (js propertyOf: (js ident: 'Reflect') at: (js literal: 'apply')) with: {jsFunction. jsTarget. jsArguments}]. + ^alienate: jsResult +) +public isAlien ^ = ( + ^true +) +public isExpat ^ = ( + ^false +) +public isUndefined = ( + ^js operator: '===' with: (js propertyOf: self at: (js literal: 'jsTarget')) and: (js ident: 'undefined') +) +public printString = ( + self isUndefined ifTrue: [^'undefined']. (* undefined.toString() throws in JS *) + ^(js call: (js propertyOf: (js propertyOf: self at: (js literal: 'jsTarget')) at: (js literal: 'toString')) with: {}) +) +public value = ( + | jsTarget = js propertyOf: self at: (js literal: 'jsTarget'). | + ^alienate: (js + call: (js propertyOf: jsTarget at: (js literal: 'call')) + with: {jsTarget}) +) +public value: a1 = ( + | jsTarget = js propertyOf: self at: (js literal: 'jsTarget'). | + ^alienate: (js + call: (js propertyOf: jsTarget at: (js literal: 'call')) + with: {jsTarget. expatriate: a1}) +) +public value: a1 value: a2 = ( + | jsTarget = js propertyOf: self at: (js literal: 'jsTarget'). | + ^alienate: (js + call: (js propertyOf: jsTarget at: (js literal: 'call')) + with: {jsTarget. expatriate: a1. expatriate: a2}) +) +public value: a1 value: a2 value: a3 = ( + | jsTarget = js propertyOf: self at: (js literal: 'jsTarget'). | + ^alienate: (js + call: (js propertyOf: jsTarget at: (js literal: 'call')) + with: {jsTarget. expatriate: a1. expatriate: a2. expatriate: a3}) +) +public valueWithArguments: args = ( + | jsTarget = js propertyOf: self at: (js literal: 'jsTarget'). | + ^alienate: (js + call: (js propertyOf: jsTarget at: (js literal: 'apply')) + with: {jsTarget. args collect: [:nsArg | expatriate: nsArg]}) +) +) : ( +) +class Expat wrapping: o = ( + (* :todo: Implement with ES6 Proxy instead. *) + js assign: (js propertyOf: self at: (js literal: 'nsTarget')) toBe: o. +) ( +public isAlien ^ = ( + ^false +) +public isExpat ^ = ( + ^true +) +) : ( +) +alienate: jsObj = ( + #TODO. + (js operator: '===' with: (js ident: 'null') and: jsObj) ifTrue: [^nil]. + (js prefixOperator: 'typeof ' on: jsObj) == 'string' ifTrue: [^jsObj]. + (js prefixOperator: 'typeof ' on: jsObj) == 'number' ifTrue: [^jsObj]. + (js prefixOperator: 'typeof ' on: jsObj) == 'boolean' ifTrue: [^jsObj]. + (* This does not discrimate NS vs JS closures *) + (js prefixOperator: 'typeof ' on: jsObj) == 'function' ifTrue: [^Alien wrapping: jsObj]. + (js operator: 'instanceof' with: jsObj and: (js propertyOf: (js propertyOf: Object at: (js literal: 'runtimeClass')) at: (js literal: 'basicNew'))) + ifTrue: + [jsObj isAlien ifTrue: [Error signal: 'Shouldnt be asked to double alienate...']. + jsObj isExpat ifTrue: [^js propertyOf: jsObj at: (js literal: 'nsTarget')]. + Error signal: 'Asked to alienate a raw Newspeak object...']. + (js operator: 'instanceof' with: jsObj and: (js ident: 'Uint8Array')) ifTrue: [^jsObj]. + ^Alien wrapping: jsObj +) +copyUntilFirstColon: sel = ( + #BOGUS. (* DNU does not yet pass unmangled selectors. *) + 2 to: sel size do: [:i | + ((sel at: i) = "$") ifTrue: [^sel copyFrom: 2 to: i - 1]]. + ^sel copyFrom: 2 to: sel size +) +expatriate: nsObj = ( + #TODO. + (js operator: '===' with: nil and: nsObj) ifTrue: [^js ident: 'null']. + (js prefixOperator: 'typeof ' on: nsObj) == 'string' ifTrue: [^nsObj]. + (js prefixOperator: 'typeof ' on: nsObj) == 'number' ifTrue: [^nsObj]. + (js prefixOperator: 'typeof ' on: nsObj) == 'boolean' ifTrue: [^nsObj]. + (* This does not discrimate NS vs JS closures *) + (js prefixOperator: 'typeof ' on: nsObj) == 'function' ifTrue: [^expatriateBlock: nsObj]. + (js operator: 'instanceof' with: nsObj and: (js propertyOf: (js propertyOf: Object at: (js literal: 'runtimeClass')) at: (js literal: 'basicNew'))) + ifTrue: + [nsObj isAlien ifTrue: [^js propertyOf: nsObj at: (js literal: 'jsTarget')]. + nsObj isExpat ifTrue: [Error signal: 'Shouldnt be asked to double expatriate...']. + ^Expat wrapping: nsObj.]. + (js operator: 'instanceof' with: nsObj and: (js ident: 'Uint8Array')) ifTrue: [^nsObj]. + Error signal: 'Asked to expatriate a raw JS object...' +) +expatriateBlock: b = ( + ^js functionOf: {} body: ( + js return: ( + expatriate: ( + b valueWithArguments: ( + (js verbatim: 'Array.prototype.slice.call(arguments, 0)') collect: [:ea | alienate: ea])))) +) +) : ( +) diff --git a/out/AllSqueakTestsConfiguration.ns b/out/AllSqueakTestsConfiguration.ns new file mode 100644 index 00000000..e7a60d6a --- /dev/null +++ b/out/AllSqueakTestsConfiguration.ns @@ -0,0 +1,31 @@ +Newspeak3 +'NS2Squeak' +class AllSqueakTestsConfiguration packageTestsUsing: manifest = (| +configs = { + manifest AccessModifierTestingConfiguration packageTestsUsing: manifest. + (* manifest ActivationMirrorTestingConfiguration packageTestsUsing: manifest. *) + manifest ActorsTestingConfigurationForSqueak packageTestsUsing: manifest. + manifest AtomicInstallTestConfiguration packageTestsUsing: manifest. + manifest CAliensTestingConfiguration packageTestsUsing: manifest. + manifest CollectionsTestingConfiguration packageTestsUsing: manifest. + (* manifest FilesTestsConfiguration packageTestsUsing: manifest. *) + manifest KernelTestsConfiguration packageTestsUsing: manifest. + manifest MinitestTestsConfiguration packageTestsUsing: manifest. + manifest MirrorTestingConfiguration packageTestsUsing: manifest. + manifest MirrorBuilderTestingConfiguration packageTestsUsing: manifest. + manifest SqueakMirrorTestingConfiguration packageTestsUsing: manifest. + manifest NS2SqueakCompilerTestingConfiguration packageTestsUsing: manifest. + (* manifest NewspeakTypecheckerTestingConfiguration packageTestsUsing: manifest. *) + manifest RegexTestingConfiguration packageTestsUsing: manifest. + manifest VictoryFuelTestingConfiguration packageTestsUsing: manifest. +}. +|) ( +public testModulesUsingPlatform: platform minitest: minitest = ( + | testModules = platform collections List new. | + configs do: [:config | + testModules addAll: + (config testModulesUsingPlatform: platform minitest: minitest)]. + ^testModules +) +) : ( +) diff --git a/out/Ampleforth.ns b/out/Ampleforth.ns new file mode 100644 index 00000000..26e9b42f --- /dev/null +++ b/out/Ampleforth.ns @@ -0,0 +1,28 @@ +Newspeak3 +'Samples' +class Ampleforth packageUsing: manifest = ( +(* Ampleforth is designed to support live literate programming. It supports embedding Newspeak code inside the text of a normal web page. Ampleforth is in its infancy, and currently can be used in conjunction with other tools such as Madoko, Lounge or plain old HTML to produce such documents. + +Ampleforth is the name of a character in 1984 who worked at the Ministry of Truth. His job was to edit Oldspeak text so it would be goodthinkful. + +Copyright 2014-2017 Google Inc. *) + | + private hopscotchRuntime = manifest HopscotchForHTML5Runtime packageUsing: manifest. + private Embedder = manifest AmpleforthEmbedder. + private HopscotchIDE = manifest HopscotchWebIDE packageUsing: manifest. + | +) ( +public main: platform args: args = ( + | + hopscotchPlatform = hopscotchRuntime using: platform. + namespace embedder ide + | + ide:: HopscotchIDE ideUsingPlatform: hopscotchPlatform. + + namespace:: ide namespacing Root. + namespace at: #Ampleforth put: self class. + embedder:: Embedder usingPlatform: hopscotchPlatform namespace: namespace browsing: ide browsing. + embedder start. +) +) : ( +) diff --git a/out/Ampleforth.vfuel b/out/Ampleforth.vfuel new file mode 100644 index 0000000000000000000000000000000000000000..6d85b10b6c0361c49aeef5fc2298cdb80fd31265 GIT binary patch literal 2444413 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%0DpFw14j}+;o*J8MNHUv_iRsT zgTI9Fsi_^8{tt6O8+LPSd|O&WG;q{m?7>L>cS&Qfwolx|1H(|8#1n2N*-uj) zV&K2lc@_@=;=FJadlm)ZiJ0rKejpe(O1Hfv;XNdhk%YI z{O_Zk*kfn)4oVWRu#P*{n3&EXZO9Fy$vUK6hqUYbNShXypk23crVi@R7F-jPBg}uX zTo2ueLd6zdWetPv5VZ}iilIybH@6*CTzEb88cTr*(#R^s&kW%YO^>RIv2L^mkV6{- z3q?NImr-SdrE@A1-JD%Mm~*V7Lfp++W%N6h3^D#Y80NDu zH+jzA(>-TaT!O`KEDQaE3+7qhE@%+BIwck!^D9Q5Smdk_g(a>Fp+pSJXkMD_>43Br z?Wt&2SS4KGodYF!g~a-5w6iQ^*FYU9+F8-w!`C~k??OogD^=c3z>JrxbBmsr=hX~%i>A)@uiD1E39sn! zZAKIGmIwe3-Keums2Pe2q%m+WDr89?Tk2_clPs;VA02XqRSq-Yrc8f)aj)_K7FYi! zPi&U|d_@j~L3Fko@FJ)3Sg``>*FZWwPs2XX8o`{oNUpJsRb-$YKMqUG@RJweSwj_;6*vLBuYa8#Pt{NOvc zr?I?uidJ|9r_8S zIcepAo_YSj5WN*+CK+v*hi7ZNa^}S5`AU@aEeW)Beyfuu&Uzl1#~=Ohz9OCH86-FS z#5`Pmwbos}9}7XPk34_{wZ0=s6k|euTffosE>^x(2`;lV*fS8P1na5N#4$x;f?5tp zOTyrRwbI04dgj_S32gG(AApqwvO=R1I%0g#OE>y@zrdAgCei5cgRG02iPC!t?OZz# z{UHQlgKP==8sIit_!xn5kpcS7&iRv2R9ZHK^_O85LM3#|{LnOwslmizWvUjb%xKWl zQ~yh9gfgq`f+in>>}3{TaI%6KyL})U{JB=y`uprcmTe%bY`f-9(Z-vUen|-HyHZJR zPD%~=AemNGoq7QK1u&sRY!B1g?i6PGHM3s6SqA4{xMs8b;d?gAARA%NZq%vSX@ur$ z=D(z3&XC@T{I6B@-^a)oDhdUtmqQ1J+Uhlw06|p_LHDs>Kmq6zKA+x!%BJ3KR z)^{U3BjNBk)rrr=mg{`4NIRh_?nc5lcD^|-lzM!rV_r7C41Pf9K;qd^xUihX_rG?{ znY&-op9E;`dugk|pz@&7i@3V&NG24Jv<55_am`i>uFUl>3v$0270|YjB-7 zdrIj@^TU-y@251)Vj(t^Y4}Gw>QHLM)hB6MW0$cT9nAXS7;1}#<;bRYA5Ce%4%*<< zR&jUlT1!;M65PEA!33@u!ir~oemoxBIcuFiFG8jLG1d$K%DZx5-IJ|dkvpFSn|4tSFX1E8a{}0 z;u>BzXsI)=722;XOf7`34g%e62;{GzSkPcjov{lSrc!_AFyudjm6N4yA#Ap1hFz(T zoW%KNT95j6POTm8xLgS9r;=n&giO1vgl*T0H-}0pT?j+Sp;by7_oDSGrHvV`a-I0H z-PaS^i*gTP?S)25jlsl9_A;MR0r`y(=VDT zie2MXphi_-4=S*M71)PN4&g){A22nEtirH;sj_+|X)R#iWLhgJb6X_cN+n(^m8e!? z8`gN?yzEL;cJ!6@VjJ#*F@I)y!iN3Z)UcD?aMHT+tEd?=sPwV|AL7SEB}+CDf_(#4 z^f-PeQ`4yKckwELs%|7{U4F0X;yXJni4T;nkZMWkMjIu+>~NBEFJhpN9LDb$`uQX1 z=ihX4{wAJQl$=%P#w$MT*{SpeKYO6^6moUa_6e~F^PvV34QcH5ol4BA>02ut>J9u*l*ALvi&6_ni+RO>p7;HgJamyifh=kNE(kHW+r6DW4S&q4~ z8*AkqFyJ|d)VYxt-if`&iPZJ&EyBXl6n`8EYU&y3uo|B&a?!e z|Gn_{^+C14qul4lxPSQ=55V6_rG^oL4@|jDCx;|x zwepHoDGVU=CH3-Zfd-R$sYffVb$v_M0m7~=L|}$?TZ-6TH^x3R5Lps-cEFNW2}{EJ zO=u>tri_w6%Kx!fkX7QdKWVS>gdsdVRL$uatq5^Y%?U~_a(r}r#=VqUa59U0INDS` z7R1flHM)in6kW?{{DLEkPcmlbS1FBrX2{UTfoV5OB`MxhK z0bHSXMn^;5PZY|c=x;7)=RujrL9l9dz;xKFX?SH1W9|R3bEoaR8Fiq+j@Q6L0=~^+ zV2=s$YbdKi%@k?6pycHsOjm&_Y#(A;{{=>UWEvcshtblqweB3TmLHVNd2pa#-VY>) zbiCc^58q`Bp9NKs$?yK8^_#;?3+vStnd}S=fd73{b`jpzt9cyH)8z#Dn_J6Y?l04I zUe|N5!u6yT3D(aquM)ZX_nOJtIT@+ixkQ{q?Yzg6SEc#?XF7#T%d?l?yDWru%$OB= zC#3H*RU{^*{MfZ7G4E6LRoS`Kc3usN zb>V>XDSs6-Z22rrE`x;Zcd-@!Tt;a=hc0Ex(z4X8=&z9LH7;{-M@=8ZB~Op)kI8nnTKHhRz|fgs@+ ze5^_#IOyEe!2LDM8tsNx|+G3`_FYDt*u4b5&7|4NuOQ z+>?UAiiII0k4kLGBIS{EM<$8w0@|IKw5_DD6X$7nKRKV8PMu5|_aeZ;t4`Y1!VhmtFj? zr)VKt3z$17vJ9b8cvprW^e(K}xM{F^*WJR7_8M^Rfokd#N!;suirMjwAI@Ox4;*eDD)_acQisa5Y69{(W z%~Y|$P5DfCJgZDhB)%M9X>wWT!GK9}d$FT`ij2RM_V`p$0 z2tBp#Acm9yOa5@M9n{y0{<&)%OfXr!7 zGNw+n7bk*Fyxf$&xC19U=oh^0{H-6Xou+w<^8KM%#Wnh% zx`)<>-eqb?e;T~!5P6AENdSXGfilBdXVe$!?h4|Cd-ajkd1nFktv4KMjJc32&!`OYqyXZ{OdhwdU@jm;yBl9mZG!{cD^l3MA zW_eWV`Py#0c*+$n6VED4X5i%u?*zYXf99&w=*6E^;T65TwLzxmjcrdxm~TyD8NJ|%|_GcbX?&FaMG-<7h)L+7RQ zX8&Jg@Ux$+g?22`XMIFR_E(+DPfAn;C>wkjdHizqVC3c7%A%^YRvfi!h9AeOC<^BD zI82BSS7^`9=vck-JOY!~!#Jjw&1`3ny}xfOdb{;C`KB@gwVsNR`3cGa-*i57Md~A} zN8p+3Ll~TxeV_Hh7hp5Aa%6t;8WAcE39qs6iXJ3gW{?rV!>d&S9$w?%y*;(KxpD?0 zR4e27#5>dABp9asGpF>UbLQSXiUMTso_(&r^#^OQ1sR%&>E)sQb7sE`U31sqz$_j( zIP2TDS5biM+q*F22C!z}D?%e+va-i+fb0 zI1w0D%$%Hfw`8q{T^6f5jQ>k^4;Tp8-j@T)?IQQSCCzMm=Erfo`+|OCpuca{*t6j) z4E#Q0frofZ`%99})fs^z8|}9wrAY59yxmWx_h(>Z+}9G3ww#k_r<~TF)DQRf^-c?C zO`1Y-e6TZ}h3h*yyEn04o^&~4R~b@P40;wq_WC2>nIsAG+{j$N@AUbu8Of&>gM$Fr zxC^11sR`5Q5wE^2u8)MV{*#x2zN2>*dWQr3JX#{Kch5!_V!vBBhPQ2!W{>#w-{E>m zAnUwaX7w?2`GC-Jlh5bQ7=yKkllpQ24D20c(K+%c>%2sX_Zg;*+cn+L8^ms94W9V> z12?3W4$;6;T_x0wIjs|?ux_j_`?nBD@5VWPW&@Y9fiu0*DRfB+P7G_o zO(?6-zjSTgUJjw@OVXRNo6q{c-ETBIWk4jG(RZ!m6uoBye#81cejAaAOh{Yjru+zk zVYdaIJ_(W;99wSgCM-niYAm`%z(ZJ5C1>s%az!lPzHwB4zp|F#?Ulr)8=xIMDfN=Io z#(xEmO{mm6<|7ctRS(C;HV$Ud$000taN7gr1f>|;;-F-Pw|G^}p>)niA?d4O-aW%} zVst|syLCzm*k<0ns{{fsNh%2y!MauLrwdErw@htuL1?FR*MgIPx(?ua1%f3w)P0-0 zu=_Trso)Gw*nM|+R6MNg1zs4#YR^eyVeB3+_`=w|4&C}#h%M_5*8Xa62|4+G)CJLJ z`^i>7-2`y60?}C=>cWXT0jqe}{?DM_?FC;raZj55%6;kZuiT$Oe;^(Hl}|Wy>mbyH z@mybG;@uWYdqk^s9}K2h5$(+tcxYs064&I{U~LPvJ39|rigrGXSlI=`Ga%P53 z1z{VbwD+vpcMi(SI(O1^9IE5To#)Vf?BC&G+o1gcI=k$T(b+9xnOh5#0I;ipy`OaXJ0!yO#YRRy+18MAB;oWa;&F0Ob8Xwz_bP4s2F@w{RK`t97ZRkVf{9M)r_K_K-%fBezd9X7v!kydFZ#`X_MiNUSTgQ!UDQr9qcBxbU{z zy7e12UO0#%fFCQB`<2*Y;qxQBHU=UWolE1%naQ#dtPAg&*M-r{oQkx4%&61J2pf3s zo>4}4>qV*1wANdS6u}+=RRek<78=B;?d6HEqOJ$@UM+yV^Xvu~Vz~yLazRjDTCO|f z_$adlycpKAZppZ}AO#aeSw)p!?o6S0z0mloNlwN>eLJV+H;b;qd-R8)<)}#Gu}}|8 z$o1>&e2zMi^@qw2syEUeeON*u2P{AyMw4_&o48(3DRaHvn=whZOEad-ZYQkh-566* zC>+QB)Ba8@!1}6ETc%wU_MCyv0L8{JRJgZbn3IC*IMjAC@B^a@&EQbbO#@*!w46ZN z4YkDPBxCKt79u9WX%pOa#>5=Rn3!t~{2=BL%&!nvkMQmovG=a#yYOGBrZ?6eN1s^2 zf7gb{-NVr#nDwjf#k9z#C5L&;B~YSThl*gGx1QBv(1u%a z!TvE({)R?zH(&(aNTGvQtr^O3nFVpvacO|7+Ef7)03QWNLFo0a)feV+b@japzvowu z$V3>8_YOmPqSFzb5O89+gI@tVoPQC9RZt8{#drGVM>9`9<(Mv4j_2~^oHKs|HyR2y z^0#o4Y&vY_nP3T&MUEpCD9r*y^1@y72gwLGZQcT2xCO2L4FpSCf22~TQs4xtfW;rI$^cYQagyEx zLIr$j+aM~*0M`E*l8EtWr=4?P2rqfcSf%D1hHXC`ZIJU96cHa*eH92B>tWSp#nFMq zqeI=i1va$ne<2a4EUFyH?|tTtXej+|c5MaBpv4ARc$Q2jYq7o|AAdZ~502ly4%)mR z!nc<&;UswP;m-a{F1TI(-IxlWGnA5a(%>8=0j`Z})q3eE>`!#Zx3 zpBpd3?>z=lT85Ju+LhtnS50Jw{+26E_LZUgO~r@%Su2qut$%j>l*5uj#_WSK6dcHa zhI~-|?gIQ`e0VpaD(5}II_ajv8nDgj5GUfpy)X%g>vKrd)qu6)OJ(hTxk1)X>#sUR zZ3D(%#SCu*#sOBsW(y+NABND)_uHUhaS%r*Gyy8~nlwGkglSin?U!x1-y>pdfg~oD7vE)TxivNl#HZ+^Umlz zZB>eAWCs?NrKwzxWf5mF9S#OGN>sE?R;SY|PhFpp-~lE`OTN4*T1x8yygd|Ub47X2 z${G!8CC3s69w}y8azdCJ>=09{khNzGoWjL4JjgmKO;1a#nq!HTSDz%(laehk5*1%vzC@N79cXcmaoha|ayj``IZ58E^nA>c=4ZPVC(-_}<;v4po$eLyEL; zXg7AZ7|6o2T$yFUw`3Bv*zlMb;I_xa9w&d<>6pOo7in0^CO1v&NjTp5CdQBozp)%>lgCB0^y z{7RUb^+MkuzZ>Ou6Mr`gW%Cxo^5shcq50GpbOVVMl%RWL>pxATBH={VL+ zZqZ6I3Rn@sXe>bi@rwdhC(Gblovf~5m}(RjzfzTI6d80B8NVnjeo?gQXc7I@rtI(c>{oqYRoH`Xs#oNz@}QNoo{vpg29l0T?f7hTru%L1TgJWatx z#CCfpfJtmG+n>kor2S?7^dH9Fu_ThqP}~V;BA=HinThatgP*T3%x^S=4U1;=Im7GI zNCAyAWTN)q-ZZ*WqT)MwkwM9^AIqc^F@@ zh&>qMc#Q-?!FJd!R7H=l=pkI@Em1{}RHTuD2r|w@?ZLh@Dhme2v(|*h>|FWGpXV3N zvA?W7Gn}!&7iUU&dofvBD!I)BRrE*H48au~d_v`T)f`CE=y_(d#-ht>v$ zWn)OjX(3=jtn%vWK$r+vt*NfeHzWL zsmb)LsX;F4r0HM4l~uFhX1Fv=c}TTENVPzvLUA!$8l*a;YE=`Gs?@F%@0uE@o#rHK zRA81)rW~GSNx@Onkjn392_>eo4(L)@Yw^{b?^22axnIxwW^UV;1-&no{$@_2mSc)? zzM0#m6)wqXx{@j<6MiO@Ni|Yj@|m3W&ipp+C#+qkz5zZ??)&^Wg&R{t*+>NwV%GE6w6W<|ryDS(`1ZJOK76=?eyVuBIEhs}vq|yAcU@(mp7PBSNcz$sp z!?y_K#LSZRE}~FluS^pVA1#rEqb1TfQb0@eWfS^PIVqm?*0Q2xfzy+eU^syu%UU^d zcm~Qj&qbABIO&E}f?*mJ!H}qxqFnfSc19&<5P+QVWhc+25?)?fgv%?-5dPj<-0N|~ zJ+Zfc!nP)kFf*qJRE9Ix3zo>vXIpSOx5(KRvizOn~pM-bFWEl>8 zQMvZb3XmQt;>s62Sv4TJq`04 zTvD6((=;5&>af?qJ+Tt*iIu>D8Bo*24^(|ik}&=ciQ_*Zwua)Zf_nXMQu;fBAhimXMo3ez_5EKu88?NqUJAB8Yd0HYC^u-va5AW#h4^R9wSThR z{s^lkyD13%c;aP@^@Tv?vmd-42M);eu!{2Y85Q6npGyv@ebjlMfw03^cI>IulgVtvV zc6CZqZpYNN68l;tv7R(rLW`G{XN}}W(4h-`<*omTZ@P>hOxk7oL6cpjbTi`>B93bh zM3T+&UcAa%%Hb4Em29mvt}2?+k#Ne{jggEmt9*Jgk={(CFB9p{M0RE(1DVKRCbBCN z*`0~(5rih+q{nHGp(S;lzZ!nmfCtDNehX_ri)^Z>N)<-$lG8c8Yd{8g7dOgkuz;&+ z=#_h|0F(~_OnS<10E}9BW3%mBy>jQ2`)=QI!V0(@n^X)g2qJKs(!t2z^MG34cE1vB z&9EI&HZAwk&44jbE?_gHMx@>#7F?VLu+R#G_zT3&4Tg|~P~Q%c`g5V$Id0gu0eXQ6 zxPbt_Ex5$DHVk7WtzrSll^g+l+y&OUK(Pya$^|qR&>bKmE)xHFI&;Bt-J%Hg@hog@ z7FL{veJTsnvM@api?~PtIa5%#^8z8+3uTVdY-}L5a1n0x$(l8WIe~;#43bUCxAWpW z%~Amh8Nk6UD~KH2l&=7$Cz5tEUhZpUW$W(KWMoT{#gFo~UC8v_mTw8*vRX8eB$(%i zaI(Z86(0?b^a_^rZMO$p7R2*HFzH69alT!HtwiP;aQc|_KN%RQO55cEx$J&Rm9wHd z0qCuAeTOAgxq?WHe)xM^bx#`?ot%!ke7>&*18rXKZbL+;celCKdpk&~Y7sjpO$O|R zCg5TWoQYe$5Szas04~@tA7%+%v@siP%0{Mt}e# z)9GL^0Ds+KR|B%10^ccUf@GfCL^O%jNFGqYc2Tg&E@EiuMMZ%oC##|+r(@jhUO_5lz?W6pgrv0jgt#EL1^SGXfHamF?!OUc92aIR z7iK&cW=t1mTx&H<^A)pYoTe*&R2Y?ueL4&KOcwT8!PtTqLT(C03QZ^C5Yp*5gmh94 zL8WHJ>|EIwM4f4`z2%;BwWr&SO>a!#x2H|R@%RsTcQS6bb{`L7}~^Q1z{xv4TQOU z3rhu;HHpE!18y8H>oN}aPPh|rSsR$Z3Ec&E3NDk0*dJwEkn2Tl+(cJk%>JYc#_iv5 z!EuCTSC~LRx|0Y+cM3u1MpOc1oKc8oY$t#*l>ouG?TJd`2+Mvm;mB~42t|AfLFh)( z2}EsA_==?yh})i^HSVM_fq;xV>7+4*Ad;5%xuYHw^PqHR7*~B~LOGMlaXJ)7Hr`T1 zm2i4FjhlKxkiL*fh%F5fUrHEXN|;zmm|RMjT0+Rfs7MzgFPeqLvaom-HlBq|WMPw8 z*i;r4fmrEPIxm`q#j-FA&5V%aS=dAtHkpM@xtMi25|jfR3;~J_?7!q^?B|pk*nc?< zv!AoSTfa8^D;;teYaII+Ya5uG8gk5>23R@BIA~ZX4n7Vl4!&`_SOy(CAO~AkXE}pg z;aQ!8lTm~uQ=xXWI0E+PrKh$QJEkfwor2#u4^!HF%GD*v!z8A#fSR!ailtabRqL`}TOGsrL^3x9)!Z0V zb7N4=jX^ax2G!gcRC8lc&5bDX6;)P&q__eJ;}=N!vOpV8oOatycOabn_aMib92zHdq5{4b+vV>wsxh&yS`^%^i8uMa# zE=z8z`8jsb{QUN4emZD=I%s}&1n?7LU?g7<+ghcK`wm^44JCC&eIq*U5C zQZ9`P@gy8*7Jgy?gRphuto)}lyxL}hL;St=#C?4KATDg*|JN`xKUU5Uy_ahItwScs5O$#`*t$&gXWy0QP2X}bs`$iPuK z#F{xBMq!*jFDKNSsASqY|_O7DuuwLBm|4Q z9Wo+1WF&OR2cJ)%U#RqzCaIu6Qb&PUP5G2f9QP@I0uNs0r(xb&sy0iF7 z_if=!Ask;)l)fuzI-jCtKJ^N00y=%p!2&U9%)q4DeYhMBb9o#NKZ*_VaQM^m%SC@U z%q4gv5j;$b;LH)weG>ZB8%gQa-zzK zDJQO+apg=XXHq%gaI18PNUL;+XloSd#bT|}A>yslA;w#!Lrkjckj!Fzqt8?r$a1=lVyNph>LB>G1f!*GEE#NG*0?raEV7JRG z9I%HRS8dG)Y_*&V*liAdpW~{H`hcx=G23 zN6Z{uPsb+_bibQ|UN^dd^!m|_a12fIF?5Mz7?Ofvj&7o#Z*(&q|L7Jvbxh$MLiM9} zz%ex`o2g4arXg`mQ&KQ}qjxfhfAlUob)$FFsb>l)Kt9bajZc^2`3%X*XG%1mPZII@ zrCPqa(R&!De)L{AczA>j;Md(0{Du_IZ%S5vpTzO|B?W)o=zR=aKYBl$I!zj_PL~F# zGu-;rnNqwupX7trM;NEBPEx3=AAJB=y(SG^uS=uV8`1#vrdywSpOmfMFZtBhsW|nL zLO{clrX|UMKFTB5fHBH5@PIkW^YDOg)JMlZ>ZemTT1TgTv>uKYka&7P;u!&nX9gsm zFCg*!0f|=^ka+b0iH9e4RTo1Cn?nb~+n|l-VzI^m&Qs!XamIs6>Ow+ zGLfDedBu8aym1{IO_T7t*2v4&hSs5W_9=(5X?Xq~3TJLmG{DGo;aY4;;gg2&N&a_zVf+HyZC{NVD-ihBO=RXGpX00XU{9 z5qzfP=QkxW%_l*0U*jhj(%1M&hV)6PeLjic_ep-5UsBQi62$N~{su$(rD8t6l-lo? z2v!43`UTcD&S-&Q9@FcAVVb_e1L4D^MB$bRUNl@Tc+s$^2iPlzD+OOUTqXWD4O44D zw{IG*5&Y)iTETA~UMKjP;q`*A8QviH$A>ox{_){Wg0CIkEcn{tErJ&h-ywL(@STEx zY8Wb`|A&wOzGF`cRU5Wn5E`!6Ua>zTG=13qtk87QPLh_I9H!EM4i}^=LOSD+&ZJ4x z4r$sWX^JALOEgS+FnY*DhUZhSrhcGQShFZ{{+q9*ewY~|19$zcCH^k%`v2V$e;3!} z_8{z^X8Px8nuA*X7#aUNf6-#^i{2%l=~KgZ^Mlyh@I8WS!}kiV58o%aK72p%td{?~ z)clf`C&g{K*U=PS2(-M5yZ*T6oaOK0uK&-L_`7&!%X{gomM3amfADIaqyCQ-=RtlC((HFeY@Q|S1YQ7OxPS=&;eH!5p8`J%(4Pi1 zZ^&CwLjX+yk;XGX zd@k}=K>RMU4+!g?gRa%a1p6VCc<=9IJHrr)JK6*BLVRvb#f7@m5Zo) zT}jtVKvgdRRlNuzimI1`sCqew)JszzR2vbiLfQ!ITVZMuqE8#){N&e0I5}zhh|(-m z-(4T6W=MU6T4g?6h<<&9^Ot6*kj4nL&H$rv*mj-hfi|cQJ#b+4G}K z$uuVKRe65?EWdzix`1ksfU0Id)hM9K8Bn=fxyuhmY2=_Pd~ie*_kybMK~?zRh@Xv& zPm3X_H3HTZtP^$yq(Rsjk|trF3gaW}3`;*@4orS}j!S-f4oiM@j!J%Z4oQA#jz{^p z$dz49hfCSSfJ>=_BavbWhau$>jzJ10Y5;Bqq{bh`6E*xqG?6hzu|y5My8x+iN8v;b zI+lVp%#m`iemPPSHR4!y)-6X$&zj{(`PD#Ui5Pcv zdYh=~8f~(SG~0^l=WCPoqu)(IuWOT)WW7r;G|9@)C7NNhaY7xeQ?l~=B#z(T#$}klu1yx2 z^=+~a)TG_&bZLV+!>v!9DaEVvNj`OciBnhC#uZ$hl=(8CdQF$rKWojhlLNL(!CJT@jq$4-Q#n56_?1Hj#@%Ygz!XFVrXVsf z1^GNkrUZ$B38C4Q)S6vMO#zq_n(bz!ibrIW3ztLzBvxA)0MZF5{N-xTFE@Pvk`)tgnZ# z%7TcL=^~$%v>YEIGHEb@gHCEIh%7j%3G%l)6oeB+@M6hS97fHSseI?D8X|f$e>yX$Vm>#nDY{_H*vQWKno-ewDkwStLq-vrLeR=uQ2k`0`hpGNigDY#p(2 z6g@4~HDRw3bQ!=+fwWZD6mX@wCaA4Lhu?muiB=~d-YEhB5+LU(0s#^*xSIleSC#+? z803mTfCLP7MIb-|2ECih6(K+z;p9Vc zQRO6%R8csG5Jj$Z^7BH<0?*0QBZ{=?F2 zBnsnEMN%M%{Ax&(-$#KYis-6{3M5e&Qabk)PTj$N(zz=lvvi0GbaMxh841sl=*-d~ zD$vc{Au@NBCUd_oox9ue9#N!Yr{z5&b5|jmC8E2zDMM6|N)(R7QY8eY%^r-|>LU zaGK#HW~js*R9C2BNZKZ-l9;0U92Bk;&v4V$Oc&Bk6$37V7!C?o3TH~PK2W9OD5~E< z;Y!JTDhbUesP1#qHXIMQk{D3=E(-PeByGP#g)52qoy7bqF$dKZYWUr>O?XIR%ERZN zaG8qVFKKJqHchyo<_93W&cDqs6h8q{bbXsHEK>IYAX^0B6N--jDTcAl5dLYH0MwPX zZKmR=CIC|0>7q&Qbh@*J!raM1VeVX^Fn6j@m^)J_EP(!mqyy*)bnrFlp!MmX-RPj= zaI6n5E4#I*DWFA70WE3@Xi-x@i<$yjyeXh1V+v@=m;zdGihwLQvaYmbOaUz!Q$UM1 z1+ z3;v9AT{bd!F-~?7Lm*E2!hmrS%M#L8=6r$V_+B)h3mF2j9Hvjo z;qysszfYB2^SdE+4>CN+^s6|^@%tsJJ0NisPvus3L^`NDBpuWplMd<*N(XgErGo}E z$u6K;IiOlBU@D?2en1t)`sm32%8`HiP@hNpJn|3YP@izNLI70(L|p(10fc$v9}b8@ z0Hy=N5;q`m1B@FGWr6^d2?#T8K;i}@ZdBq%5f`Z;F4PVXmoQTfh^j##%9I0As(_R# zAf*b&B;T0i8TBRawDORaMiss+w`Dsu{Pc znsKYD8MnHMzSUKXTV2Jt)m4mJUB$RHwe+p2W!#!t#;vJk+?ra(t;Jmv{xWVY?wPE> zFXPtMFs}7{rdoy)?5jGs6;#u~eIToCWT~b`(7yAKqpX4ZI)rPen1KrnghhEHXy4_L za|B-J1R-7YI)e7y02Mh$;0;a?(naNi83h|UVw=Q+SrJQTM$F4D?Zpg+#Zu~qFaN(^0ZRr`yrYJah{6cKb^tJ+^w@%6e^wY%6V+lQLuVdxUW zFk02tA~b!twb-h*7F*TUBJS^SU$Ir~D@vhEU9vC@iC~(oYG1Kc?JFu`oeEOliaTxG zRaC|B=~616A$j;riQ@CMsy)S4?nwITTDc?Xt8e8FGu zojP^u)T!mxD`|JVq0`r!QmcBO6jEO&DeCLLrY(wJqcO66{nu!WY*0d}21DB2U`jI@ zd{V21Iw_)|UJ^7kd`+7Zzea=PdL^V?ZwR5*o6_#}KHZGeOUtN7JTBSG1{41M9WZpq=&NC?48Ee`&|mj!!#v+Nsx0gLc+yC${mXCs1(G3TIBD z0qTIG{s2`!IhGor@^{`Jpw4$5YRoSK)cVek2Iz-RsQ}eKLj|b)nJPfl&!+;^Zt7G( zlqD4qP00`x!w69SGmQY%ET0jej#Xz!f_ft$8$71uVwi$rngO0g@tFZ0JE=1RJa$rV zN&@8*$M8umrcY3OzQ9Ao^aZ%VQtu1!*omr>x)^nmz^s#8e073SR~O)sl=`{=&zq=v zsjg8kbusHDfv;Y2sjC;1`uf0^fEoMC8(s#%qad~Vg^3k=P`V%jwS1W==1bg>x=Eekabzh&XlxCxLKA(#A0$>_Lp;7!Xbd z+BiuA;3$sCAQZv*A0!_ZlwnH}SR;ZmVo8GG5kVOlmIU@Njsc+{8)tlw=Lk;j;E1V> z!#2os1ZRT~is0Z6@{9;d#F7NosGy8ml3;jLP)3I(0lqv4?(pujHnp)O{x+UZwdLq; z*ge=QCkx%hP5J><(%g=2EmH}+(xsR?ft%WDu+w3D;^UNAXJ!pWj6;0X;V_5hHj zZ);FV7KB$TG^o@AaXEx17t6dbM*_m-UYN_HB(J3Z5|BN(l!+e;3c+f_k;d5sd+708u#wY&mpWB==n-v9DEYm!xGlH_0eZqJu2 zx{$1r2cQ<%_oy=pk?!+PZzqe!lU4F2(k=E{;|!Mej5Gq{d>e}2YpjxYURK-pn*L_| zOC2=Nz+v|HT@P{Jf%%WgqRC{HkI%!bl|@3OeXmlfgX&B?J&F&}yRiH6VSZm=5+#0* zL$SjC97*6}6H;n_u4!h_pBF5%KbKsd7cQ|sj|(>}Nd~t4z>Ls?GeQr|2t7O_^vI0R z7iNUMI3x6>yiloqW%115l9|D!ZZKAe1M!>niSNz&#P{Yf=sN7*EW^;hS)cgcECbQM zS)cgcoIUZqIeX%JbN0mdX0n16*-SBn3-%(0BAY3O?C55SA=?&|Xmm4WOzdZtEvKvP zNAZ@8Wy{jTeoXvSwrwmu_)A6I#?oUEeyOP2Sb8jid}QpfEIo#?^dN+>!&rJON<^@z zDa0>xj>w`Wf<+DeqQ(b;$y;!5j)#krw{*bA^To@P6~f%hJK&+o9xn^ZJ-?a`c-YES z$pvx~YgGq4Y#w-Au3z2V0T0{6J}++~1A)%jJ6KKL9V}sqCVyUBX;X4}Ua+L;zPyk; z#gG>+Y2v%JUbcvpcWvdF*gwF$p(kM+lpgkck*Mbzai?f@0;Y3LC78=`pgbCoUJGMN zM@mZ^D}req^4=0B9KoE9P*@y$81ptK2yyHv=4Rw#i!&U>tcuXEIMy&`PGDN%SW!&$ zh_l2AM=_Zr6c)!0W5P!1wm5bKQ!UD~#TkxZzDHbLq0B&iQv#K3>Y|E6kr zw_?M3#w}FqxB9mlc=E%)KJX@D-;Uui#fju%DQtsVzEUknug3k8c;u~ls!jyXGUc;c zk?X}|nG_=x(M7!L%9#J+R_G1r0OS5k$;AyUbEB6lE2Z$I+PwNKSL-FycPo=+8;LxJ z&D$7ww-R;xZ*Cp`&fgHYgz)RJ@Q<;q;NNCE9s5)ZrS0`@?7bU__!(ug6lMAYLrDc{ z@)utm(vNFh_D`u6_lvQ&s5*ZDwcm!=y1*0)o%UZ+EpM)umfWryBnN*0c_fQ;t**rW z`sS(;UWnP^sz}h2KBkIP8T8}j3jT=}L=Tpn2yxiKMT=cnsSBG=Sh6fxiBxm8G~=n2 zIfS_QNURYvNkL>{MEw(?$=Mp_qIzJzhQ`+8#TKB6MuQbSeAH_2IEUxMGk`9vJnO5V zPu?y_R%X3!&XN=SzhDFl)z$oPX7J}TgFl-Y{6{y)yQs+Gf93^+-mD_CChgrKVzYxn z9=BSgRJ-?#!UqTt&&`fO9hWR)?%6mum`kT)y+;~8kf58g5+vRUaSQ?!gBHak8olkT zTkNiE2XFSHG=Q>wyczV)hm>w1WM=;&(Jj|^?`AgOhVIRSBA&b>XnC1R!FV`i3o;heV( zxhkK~f$LZykk1N%d_rdvYC>icy0p^?y@2lhwKoVoF6gw-6W>P)JrRx~^IRE38SBX) z484Dr)N|$1uaJ7N>a0M)E@PfF!E_)@l$|cNU<8&4n|YIk`yXqDq* zYablSAdaXWuK(ld9j?ye=^YHlUR^5JS&<(eYuX}5q2$f6f6{)!*%4a=3*%L{Or(jl zOnjnNiSIX*FmCllytw{70zW!*_JX40 z;cA9$37%`?r#{ci?{wy=em?Iy@JMeJ5Gc?kbl>?PBh0YR{I{-p22g zMdj-Li1HKFjD5I)q0-#_N3Cc|qrd~HZJpAp12dI4Ui z!RtbLcX?e1-|N*6lb3|=!xgik^l@$K3V(J+=yNkdpPvzWU`FV{8KH+}gdUy|dc+OI zwgt7Ng&*q6JvCB}M-%hk8qwk0VFAbI*}a(awTy^>+s%6Hj}REC;jjmEq&ZSc?>T|4 za-rv%Bdh6sRiNSp?yJoaL3mA|_qe#PHAmLco9+{^_<@}6YmNv?dSE7ez=NNjkxlxv zn@_Aox5;fbvPzb?ezs?`elh`Idoy17#&{*L#%<)t=34sLn$3D&9Ej&O>wR#xX0x}& z+xF^ay}g_66tLdpM!h>X56cdBn)Tc4Zaf2idb8ejPQNh|{)Pv?Ff*SEZa%0$lkTl1 zBIthGr`xz?satQ%8R88CWsB}7qziA+;(1h{(ocYnZi%cU!OsiS>zwmjB5Md`=WNlG z2kvWI@;YZr3HoO}_|TTf=LF8iY>8yy7d-fP1)k04yKX*gT zOiBUOgtQMafNh~IskhQjq6r}J#J=8zk5kCopLA);rAr-=?qhCPG~bm=+hoZFSF~NY zGzll+iiQi9W?{Uu$_!nP#&olkDCQ|1jSR0whDRgABRVQx&P2vUhR4lWOwI_3(V4Es zY!kyX!>s8rJgg~QW=U6!*Kk==hTZ(cz>T1oxasN^wTYRVVd6#LVSaSQ*bSHEGRz9n z)f8%rY6`VQi3f1htzXn_b(DBfL=cZI>qnR6(q;YVy7e1z^BZyLIO5iCL{q$Ngm@#s zCmvmvOPA%+Ww~@&ZVazb&hjk+Ib)9dK-?bXSLa6}hYEadnFARB4ceuR`$sn`eNfvjsGZ(l! zU3Zu3?si=ZY0xH6g9}P~VxM`N)P)yF9cs z1|8@e^&rci)$MrPBZ9r$rO@kmFk!5XFUQBAU{OodB5WB{#4Xq&hqeV$xWcSjyfW!P zB(!beH_o$)pgR$|iXfFcDuPs@#4Ea>Ks&VlM@5if+rvq^x}fNVR0NshO%%b6!KH0l zq|nu(M~f7O$>4O!xVYm1245sD2Li(!2y}@@mjhvii$|Aubcsiocyx(Z)mH81S1si- z%mG7}1BNck#o;r-qs#iyB_3Vk(UpNU4^3IdAxI6Q6#hr?A)%$&&{t=K9-9&RZ3(fZ zxn*pH4(2j(0l9o!KrSm6pmU3TKlub0z6f+r&T1F>gKO9yP_?BeKk2gEKXG>&UEAKa zC%q0Y9_eEM^q&*Rbv#?5v$(0YPQ4x4`ptNDO32a#r9IC5Pln2x+LL$Wg5^!^(8_Y* z(k6UoRgh!1cVpP-w?g4@_YvtUmWM+H*1p9r+lp=gNZecWLdCL??nesZabr&VfyV7Q zH&86^KqkNEqKVB{2Y|<|IyVaC-kldJk&lXBpg4GiyS{>jUEM3o zvVq%zSE>-WvV1%}YDg9X}E}OxNp3r>u zFflZ1!Rya?fsy67rW}{ujQPN2O*tmJk@vo+nW@R;GT|%DaGI@h{#iMczVqOL6Q*dQl4fS3~;z@y;EiWELlrvs1& zlp$BDJ!Z%W4&;!N8_0ojLkkf|6b{U+M4_;c#la9_8x=9ouC1neAj=)otk{8rlCquIq{vFb$l{*7 zESRN)?+vx_07>}%P@5bU`CO=tJQRK))W+#1{7|Tk13&yosEsTV{$i-jpIn^0Kalzv zgI5+ata9Nc3~%+qIDnn{S@r~W>Su2irWPQ6CJ_0=ZpS*swGD#ku0D^5e1l<5ZT%2EI1OPuu;xupk~Ld}BF7C58CXJ3U1O zaXSYtCisJb0$6uHC@g@v>Vp#T7s+oiA^*Ih^UBCCIgQ!1=@&`C_?3d$4d{%rf)7dyV8#6v^|(vdBU|=|Wd(#379>}?rQ9jCD^#e2N`9$} zmHV)`F!@+~V0=cO=k+!k!GiB)4WLuQVVZaoL_MSe_>>u|F*i6} zc0;#tAZ+@uR1b#FOUK+e72EeFK$z>eWLa>!5Fcy9u#-|tLDu&8 z5JsILUy&TtcUa2-PCnL+wb~~WH$^U0$(0Au-{*=-D)*Saw2ZPyH(H9aEq$WIB zG#$#t+=3Vrk2gw0vUs{H7j*}sd}W9-15Cwir@M7@><27qUM|<^&RjZz-7NF#z>@N^ z^C}VhC9|5tpCW%;*5^FM% z5-mL48R7}~U+NmTBnv0!O$S5zv)n+|Z41LX?n2CLPTT)i zUj87{4Y@P(>+;rF-;lGLv72wU3%ttvpUi$nZ9dA(_4n~CoP3bi+o`+sm)8D@RU~QM zG~2TY2y_$VawnVlJT^-f>Fi@aWF{_j`%PN;B<^)czv}$h#=+}pCoN3fstNacHp4(% z?;N`oM3B}#w`vH95h^yEj}J2$88*;{E1%+-4$>PNu$Cfen0kJMKe1i10a=X65Z|D{ zl$`EjvyYHi#TLK1icrM;pzbg~sJn=t%w5EfA=CJX z9}G%5F{5j!>8T603Qqc3cn@qSS^U%mUYfyiW5|cw=oBYEvn`=fupHl@)DG6UVrH2wb#ol#JsAq z`7EaownJTXhll=09{Mivlx$7zfG65IVJ82e7q1`u5r6jfCTvsEdsY8~8`85}($4#S z(-@S0hD+>~!MGPFvqg~Qg30|)=VB`uOVQ}XSK1se*FlPskLN>fNK|1X(|n9Fd$kv2 zyZHP98il%TD0x-s!eXBZdY$$My3_thcN!cVy=Mokg|F$U34A0P>j``xn!ieZm&>oo zUsL?1_*HcXmRyBTzu~u*za~=Q7pc}|FaL+)=hKgBHKz=3No<-KE^@=MV$`qv=1hgz zD_O(ZmL~6|QUPy|f{Z4pJBUzT3BVV%B4jt{DYj7fwx?z;(X_Z$_HgebVFr>+$2I^g&?|tYMrW7M=@05;nn2h)y}|U zC|4(jio9y9)QFWjLxw5`lX;;EFZ)#*k=h9=#Zc*>e4|H)bh}ok7p_5!u9F)mk{pl# z|1=gnsH|V$BxgCYXz~xnU&rw*hAV-P?rhD60An4HayYXzBsn_=Vlw>8N74|qR`QN5 z#vTK^3pOp?40J-!BRc3T-@yP1=o<9ehMIa{5H1S_rEtJLOAM`=>J|&SE?GXI1+SM0 zTUUkxpm2MQtw1yys{yfSvO+F1{hAw1$6QUs_KPMGo8$6fmb=K4MfrS}oWX@Tt^o!7 zGx%;M7iPPkT$p7^@?Ea?8OlawI~J`3y|NY3Oy|)Z)I+IxY?fm>kRzK2{=9M+a`7~w zH3zwDR{Wc@*;-J(?|L@7cP0m+8G!s|Z1!o7&2mHiH{>!m;q^>L@c%lG4MT^ype-!Q z-@X+acJ4#{We7HHlkmT+3Z(w!RiHT`9MF2|0+g_EOh&v$2z}V3Q=IhCDM{9e##1sl zVJ?%|6Kiw$tKj!fCQIZ7<88|4^EU&!oKSr&`ikLiav}02Qz@pa!T1P`cNo4K%1}^# zxK#Nes2D9IEoaH4d4LL;#vp;RC>6*7b5b4ziHef<<^jq$ALfObWG|{eGm~WTUJZ%e zKZ6?XN@KRB#vDzJxmjvZ@4p34FqQ%NRLh1n)fk*XwJab@wLFMRwJgM=S{C3^EgL4)c9Ci`Ah@okA-MlA zlq|~fQ1LcMCw|hRC|R-%B+3qorerAx1yob^KT0i5mgNB|`91-@rk)4VwXbj?{-$mG zjtMjV9%fpBl%EWPUD3G{hwvZc*qkt^&`ftXomh;@x_0&D9z&@pE9ibuLAn z^Md74<2(S?8bzCQSc)yd(m+zjj$siZU%B3-uPPj27*+%Pz)UcP5T~>vJ02vE{u01) zp(6URC_e9EW@EjSj9;iz7KOzhvls`<70>V#ZW7lEGlX()z+etc0as(ZB&X5PDlW<8 z2l4dFqCIxpvhh#^yR%riR>_n6ZeteM0iJ<=chbr%XwL#&%+es+S!}m~M6Mmg-kIm$ zmFM4`=iig(-<#*(m*?M~=YKlS|4g3$8{&6u6K*YHzpZ&$`Im6G7cIs5RCRHU&v%eu zUf}ELv@R@#iw{-HS_pEIRs_h&AtN6buk~qUyotXwF|=Yv93Kr5GX z>`M%p`DlD^iCBDaiPS0|BCmJJMrZ#oo*|+;Hk^F$Gk0Z z8Figc2f98T$XPn2w5(j_;)70kvVu;9pTCt!NWIH=%><(GGH#?Spfd-<8_wM1JUa6* zzTnJH7SUONVVu};LAAiVq{j~JOOM9868`bz0(rS(zB2S}dHrn1-&@J~dG(XRi*=qQ z%#8JutjlyY%XR4$y0*9+NR(N+L9=yr=jc{?6_l3DXA`7i^RKViL~_1d)t|4-ttKMf z8~3Q#JXTDIQ>5vKl`e}b(extm~KUN}(7oBeI&f@=B*d*RN9OknKw0fH}H) zb6It%ip*o+uWYYPCFjZ;3G-Fm);d;2U*Z4z*jq!%vaIM|DPsmqNVixq}IhcUlm%FTzAa|Uw(LNh2BZZMY4D=bH3)(}*d8p36%GHLR#s9Oh4n%N*qK$&>} zchV$6Zqj5Zc9@jHt4*YMY~;OygwdXXeQ?*#%p&~m$-n}*YhT8|@6(y)g!<+;GTSiK z0Br3_<&f=RlcUa`;*dOoG?wFBVM->=2o7<`DdSfqpBbEd-%sz^;nI)r*z44yR5;t^C zLL1%CD-zn0h)OFeUvK>JFE^=F2k^IRjM8+Upac{5Wd?DqsWD|G(ic*1Bw{~ADM~m& z7-2U$S?xtHtNodc3H3~73s?cUs8nZWAASci{rDZqoWbuKnKAr+H#3gkm`c5s`cdZl ziCCZAwj(jDx*YP@$H+N$KxGOO$~mr(P7Qa2@VZLr@Gb;m2kbUP5uwuPbY4`KGk3NJ z6PK&-m#OJYTwX!X1D%PQC%}}fAJ}%~yrMD%&7k+Au5imN_-Z_e=FG}0HvG+9KQ4G5HrZx!RA!yitAPD)nw{_b z+C;ZxY9^Qt5-IcGqzTvO{6ME_`t58{kFuz16$S`^f@*WE5SQIE2iT*}B9@0YT2LFbf+fXsrn__9n9Iyke| zALw@a)O+BF1x%6Ogh6)wtCC3xg?Hx83t%@Sz&yzzuof-2S^?U!?!_RK;oK6;VEW=5 zm$?&Pf9yo)Y|##Dnp zaLJGNn~cYh`0mVxh9mD*nj7i@8(&In@CV+l*qEG)p^atP>pFYl^A9}#*TBZRa=}Dq z!|$VrlFWwROPJ1oXd1@|n8*~g`2&-t`?}LTnF3$v;;_6ejRoYao;cX->Oy?vmIOB( z)T@MD=8E1Q7|swzP}>s;IWmSRJhJogI7Li(rXaE#aD^d;K?3>F2-3ggA6FBmehjbi zvW>Ap$`*GF>c%U2P)9*v(y;nGHv;kU*Lf>`?tW-rE1wr8^$5p1^@*%v*IRq&jzzAZ$ z9iV8#1m%iPj!87Ej8u3ZZSpr$+BQAz{7I%@0$=b2*IB-&rXYzf`Y-w1r?nQ=HPkl* zG7G`+`dO{FO_WpTL?~1s3o{GxD%wW~O$baaTo*vNE`o5)ROCt5#re{eRDl@4fNkag zUNB+6F`fR#%PN?_H0c~A&ry~Xq8}l6@D!Vy*Bk?lbmjEBhV#5IClD(!CykT!Tp z95bASISN2f7a0SHB(ou?FwFrI)6`<;&?cHwFhAk=D`&dLInN@c?vr^GnCKq}=l6>+ zllNgRMV87LL$k+oExuFgA#=K6W^#1=vEdxc%dRN1!0ELhYZrDp1ByAbWT+l2eL$*L z3H{(n&cg4-4v|#FnF>(NIjYHqR%8lM$D@*IDH~Rlsc=qtvv?)6jwd9w(eC^ewYT9A zS{oe+VG0}zhcHEi&xfE~kG&d#ay{~TDASf0PWOc}!9+NHIt0xu3>Y-CH_{hEP_AMJ zRZDuIbh*>-_k0*j=_2OHl{kN{T85Gp|BfT|GpI?WEJ2Lf zND75wIIOmT_ae+=4#-JvOs^Ae97dVrhDC+yYNa0wJMi86v;0s^B1pOfImfEH9m~-z?AW(;-iC{wC-5%AvRCZFr;4| z{0X?;F#YKg=WkHl6iT~jrVB6m>g%xlxcXbZhI+ap{pR@^1XyY!|3c8@{kwei4SCUZ zI-sMSx}bun5J_{Xp{Wx!D2(B75Wb^vu_0Mbsz0LMG~TUfNY*e=+kn1!w{rdZjRE}I z7)Z~4vwmZ9eLZ~_H*9R)*o>bI>DljAtgnZ2u|BuWGpn9TQ8s-Nfy=B6Gun-wBIF2zdz%0J4~TZk+aJcRj-bC1`O{rp2RHG zYpCr{LUs+3UxunYd`E$2bo`=h)<=AweF8#sof@jpRq= ze1VpQ>0&1}T{tP{e$Yk?5{dls9LNV_`=seZxpC9S0=Fy|*c9ecc!I#5<*QTaRU8Br zzB+)@_a*A$eBXBCCqBUBtdT0z&t;;Pc{g3<9A;iTa%N~)Ux3<2z=nlTCB;*QwG5~0c&8Iqeyt;yDC;q5T31W3TbPKbXuyaDOkb)B z6Coa>RGrR=#)+YEWd|^@%?@;7CCK}-8VXD_sYlTxG(Fgli9%me#j$G|+Z^oBR_-&vu|G#PJHk6yYPAJwHg67$;}agpWu9T#C&?h9 zX3jEf%MC@Vdmua&#POKe>w!~jYpo~WO}#KfD)#GgVuXmJ&xwWe-vbGd;tRJGekeqD-CAyBF?4aL*T zJ!R?ps35v=$O>RuQUT}a5Kg2SWNUJJ>^O7-!{o@;eV8dDxi1-bdG<}UJ`KgY?1O?b zLzxX+oNT)bw#-H8TTrvv<_87E>Lll{Qb>s6C*!^bU{iv-qx z%^yI9qCH(J0lN-kB1fW)C?H*_1;yzm(7y>)Q?lBuQ0XNo5i9*Zbc}%v98JgDNiphU zz*v}@MGF(?BTae{k20wq1TL@)h(uTBfV`ABe`U2;ErE2Q*vU4oL|N=gvnUcbSg+<% zG+Zcb00e-`=bwqALQSBnqAqg8N*CH`{^ryX!`(f-7u4pv5H#9bWnibkGi{xL3dOjXs4%P&zx%erhh?RJBRzXz9#a=Sh z){FJ1Lno+I?Az|t8{(_m?wIvYa{MtzD!S=e&{tf_*f_He%JgLxXbnwN@{J(GlWkNQ zQ70V0L&E0YLe6RuHNaeSt-`0Lf=X~jq3<}WgvkpN2O_WHx~kblEq`0YC&aly@viu zF9fGx5PVV)7D%00YFGU0Y!^M~Uc>noNKa~knDVO`Y0DkRS`$rA#^&~f50fr+hauhm zTeZlkFjX)+P!Mfy$I5U)W6*gP3=E;bPA!8_c@pJu9d$4~td3u9#LCPW;bkG~sd22# z3pC;aS$=P07Yj|Pm>AAsEUQ2m{L9R8j##iK;M6Y6rs$#`%MK4XgO+N0oF#22wV}CS zW9 zRZ>h>7$60DL98zjSZ~FwAy}I*w&kk>^KmyzDxm@w5c|#$N{x=?+n54=Ac0oI+q! zc)zd-<_ZDK28xPw2L$PRmL{{ZTSQ^HM$rL*wFLEvOsTp9K}O3z zG33s9x1!Hv?OkL#t_|R)5GGs%QoMi;koss>w|^+$^bED2-(NtbGMfc4K-L_E~J#>UKLULX%v88qLsv+#QlDu)q7qhg=lwb%WOiy~uZB ze~PU%4hJ6NaQx}Y@nlh!Ah%ILsyvRyW0G?zk|f^PP%Bjh109TNtD>fOX7*HF6V<*s zW?hJ%s=*@g{U4i7#F!jXE$CEtJl%pd&@2=O@#PMwX$S~!L4h8NWA;464wGCVBbDD8 zaDFm$0sDHa=K|%Ylr8tu)CCDAb;gy6-^C7Yr4b5^)6YrU^HRIZ21vc%rAm^8h-cZ? z#tr8+E4z~RXZ!SaPz%Qc*fP>UQ~nBRV0j&Lhc}9;+Gcy_Cr!>!j_kMQ;kcRnwCTEj zf##6cFK2U!=jonz)BQv2VB@%9tKf9!0JQgMSm&Ja#y8CtSqnE$4P9K15C52hlgexf zT=My$gs=CfZi7I8nb=I-mGCwAS{gA533F}_P8UII;PdxJ%lhUi@cLxqyA`k!M>;3iyq^ox}*uIv!%>jTQp^KV6EG+Vw^&1+D_2hzmpMxmj)CzMor)T;$_?xK| zW7%YGfHm9ST#tNI112&?uMhmZkgJ?}NcRs4ivsm68{h+Sz4L6NUfM%(hmG89@u}1t zjBFUqo3UxAT3l}W1dk(_(5$@v(Ng;VW&eaZ-Q<}G7h=xAO8!X<482}>+rVPUZyT98 z&TGb$c~O?u*Ot`P(}-}%*8pKK02)-l&OQZJD*^fVsfAb_ly~qXnGizC9mc(W3yg+^ zcCyHV(`Wf1xv;K^P^5|_OYM>E!9Cn2e#MnY-~2}W5KLOJW562jXm5qVs|m^lOjnpV z_5R&4%Np*mR`eXVs(Yq`1I{6EDH;rudqZpJ-l;lHXb7yGzX)1~%J zhX$OZSuogTz&UJLjX*mt0mSKmznO7I?Pb`vv8%v}_KF^?SiNXa9$7)L&q9D6a9(0d zHe%{0yHt?wAc!nC(1K0QkhRo81+D4>Ck7IhwbEMJZ8aT8eZ}%0uvQ;R`J718xV5x% z0@d!cRv2b#l~rS)8Omxjo}Uh$oeuUxu*c9)uabt_pk*Ozxk5InWdkrwE^Sm0vAsk5 zI?-n5z!I49I`RqEcZXuys0N&u(RM*IKp!C18mH0n=}t8KAn|hD*2rR>)5R3| zohC8!mr~d`O)$%3D%EC40Z_^9{YFJ99dfBgK_Ru3Z2CbgtEmg*I`4|qVrz$^l2x2` z=?&w*#_)=sli-iz;p(1~)1Ak$8uC;6YSbrks98i{i1zexF>bqA9w&7ZOQ~s>vw4l1 zo!C(f4%=?Dmv^54YsN-~P>(yLj^O<83j9@fAFn}Yz7Nf$F-#x;&Iz(!Bbe_5M#l-O zrWY+9urvbIsp%jmWll6a_qU9zVzs-vC)$%)>KtA&oLJJ-QA(YPz^($T7p;LMz*J$ z6C>Edx>h;z47`vg@2w#mvm93f=o+wTW0&lBg8$0ZcH&$`ZK2Y7or^y9x|h6YPInD} zaluIJ=OoZFi@R`b7g7NJT8r-LLuaiuJt-dmD|(J15<_f7PdfNck+sf5?ufZB#S&`4 zvA{AA`y?}Y&P)xxgL~7V)H6D1SBQJOy&&u|H1%Z^cIP{VEDeKPZRc1&K;H@=e&QOuGpl z5KyODZQ6Gq$qU=|y{Uc=Jry!ucHX>sR^#?6#|yx3L^cWXd+9*{86-&3$8;} zVO*Hi z!wQZt44XoKKP1yB$QY=@KCBj?GEBkX|4xZ0o^$I=C=^?hFv1dk@#f9k3E-uhzs;k5TbUA_r@ysn)%oVKYa{dxqlw1VSY|jxw7sL)g z!TW9P!_Lg3Fw0_6WCWGt0-O!OvdYLTZZtEWrcDIo!%Sw#fbc?~4_b0qbnncaA(Hl4 zo)HyXg2vQrD8n$hnm3>KAx%GG-akOWjRm_~s@g@dY-3zvxSXg4acg_X#4^e_ z<{02``7d6dUMq??^sm4exK=bG{u=R*iGQW|&pY-SW#4l&^?Ss6T|#Shs5sr{*vh^? zbtZM(Ssc{U2j~8TRo!ikS*s47#fMZljP@FMQZ zi-12pvlcEVN=D1ZmjhcfKYrBp^)Zmvh-f8JI?n;dt z(%&V}uHr$AA94^b=yxE9em!8dLjA$wo!~FuVYHj=WS>e4Hngnr0Wpe0R0EhfREM0; z>e$7DB;63r=rC9dIwvAg^WbGhVLpkedNWiXkxZ^P*nsOz7Ef=X-g=G&rC6|L=i&W6r#3JUW| zoFRyxXVk_@1^d%#4v~|I*P!^OJD~(0dl5Rl)rxT&vv%MpHqLYzsaq$_T~i~wTQ82b zUaGHaIFo4D|K=;N+v|ATf0XVt`->3HaGcc zuX&rY0RP{Ikhs*I?hHE7=m?sBD!Q`o6mm8yK#kRXr=E^?GxUkq5WEMmD!NvF*Y%xh zOtr?lc-P*E+IAR|{-C|0n^M?VFnZ2~yrK>b_V>m+FTAFXI2e>w!5z+2I6Tam1_}!n ztSBk0!nHle_i_scC7nlbHDXnGP0#U0ICu9PPr+hwA>FBtIcF^!BqW@=jj~_zx#zeXghXREeU{6n<6)3dKvlh#m9ad@=b_t`Y zTb)tudk&)^95$%qjP6kfP_4ttcn^m<75B<9E!&M@NIRN}FNCAJc0wz@6)nJAJ&d*D zk{t=V)j4RGNWmJ%dhE6^wT^ImW4ImZUO*2IQLdK{iOq+4{Dp8tXM@*(Su5@|IKy^Z zm%~kdG!<`q6~YeEIzHTSxiOSzGsr@+ZLs^v9<1(gQUa0KYiLKtvtedTs5V-${<{Gc z&9WgM2CU^>0~ahP!BC2EptWtd^McyF%Q>pO!)mwMyXTbitV?Jdj|8cQVFc>pTIsKF znpA~xv=OJZ!Tl_qcI5VMls&R{Mo`suC(d05TGfq%nogJ9MnRren`(%szSMnQi_gER z4j*)m4_!d>WvwH0P;Jg}k7h-d6OKejPKKP9V38aL*q~s#T4}U{VT?UpIC%l!X$P7B z+=1~h4fptmE?ORf(G`MZsC5d`y{c>QqK(y;UEMW^bv7V1U4tS{npXfH;o7c22pvO< zm~urU>9+XUoR#$J3A>(&>d0FkKhgQU6l5E#P>7-SZJhw~7H#?+kYFD4ixoZQpnB#- z@VzYWzMgn(Z{2Tz?Y4p`7TO4`?iz&LU`w{Xh@Num`%%#t9s3ipZ{A3zh`pj~@RHp? zqP=O`HNDJ{L~F2Df@sWdKFe9vHK+^au?u@WBc=8?iBys@pK?fiBe`>D!gTeS<8PMe zwf%YIe)>9c*YuLyFXzae?%bb8?_Z0K)_MfUr#G6i_2pcJucvo58p+pzWDWd%8FI}? zpGd?;F=s>Vzi8E4RiS}Pn7iS;S#Ox>Rg(?t&Gda!^go=4{e{`KV=~+-W@ygk&9{M( zqPx_d?#Zz+!*_Pf^qoD8TC7^Udb&&R9?V9BLWGit*k69k9I98XUc6?y=cai;$KWEo zdjNCOB=wD&?g8^Tm>~c*2Yk;ZV%vjg16nkRNHk@t&XlQq%io~7x~)^j?p;c{^>M)P zZ)~sH-#f+MLz5Kl*FK5ml5fB=>jqv#)f|7#TiO5>V=mhIO{Y}m1foHwCfT(Dcm!?5A*GEOFp-MH?N7#mx45SEJ5ldrOA z3(}pwW9hbpuP%KsfeM$xb3BnAdNp;%iFoK^t|y+b%Y1#O`M!h56GkvD97P> zBXuU8>dyqTz)F?6V5GmB`ZmF1S#X(3{m?i<*!Q!r*(&w6kxr-oG4&HhIN69wh1W7G zbk=VbVol?fcsnB&8|i<1t1w-IzqJT{3Tc6~5J>1WH4ESk0IOCF$5!o2)()&NOqd=_ z&Oew8)ru1)j+o#$O!W!O;X8Qn>Xu0pD83U;HzsE4v*biEyDlKJB7kMZNiMps=pdKV z&|F-r2j>1Im#Y%FqDTJAy7p{EC*)k|g#a&xmx? zT8ad;$iUuJ>|A!URl7hWeE_a|LgAJDNnb71&s#83S0A$0pf%=n2rJh2t2opyTKCjj zYY(M5fP!<@{f#urIMnL2GvccNL<2i(dT@t*GVA{adu1np(uca@sW3Lq!Pu2Ij` z0`D5O{^(zs=UVEt!z8pNpr=^_I>z~%$9<`fl&eB`&qyo+!8^sEdAXF zQ{#y=Zi)Oz5-(y-bd_jWDbLRhsNm-?gD zZvD}c-?08vy73uw)V~i^A54X?9L2BHX_-omN|i4>kop$n-}exxL~|Y@hLgVVFrZAE zYXWn7j(R9mrJ~_Pcx1E|Y-FeI$EhG3IDzQlPHa1iY(R?j39qSr7Q zGNNeHd4g}juF4vED(;2>W;(PF*R%nuCI}{&!t_26tRme9Z(}Od3p=BUrJuKYsltK< zjS@*+!b?ahg34Vh9@*`TjYME++U>lCop)Od=cUjIPC6r_2PV#)f5l9FW%B&%>CSaN zO@f_A@Cp{9U9n#ngY6wT6%9KPwq8o8Knd)>614(d{fc1`W4<+PE|2O=J{6+IfjxnT zC#~UVt(!HW-;o@ymf-V9jv`r$MiRC7oSWLuEM6UMz2|7U^95`zOZITrArd#lb1jS3 zsC~UX&Yz+OCv0}FF=nTI(;+ie)s;AJ+GDA&PQGf7`BJ|(Wk<}rF`Y}#b|rj&3~{6L z;bw>1E_h^GD~|4RMiQ|zc_mrP*{%}Rcz`iDW{030CGIy|((}qn0+TWcWIHw%Hg{oV zgo+JERrTm}&`hoFN|^g_PGm_ZS9*Ay3_LWbF-Bm0llZ-Q8P6*#n16CDjU-f5Xg`uT z*LYr~zOt7$1#alX^UUX~n0L)*oWGOgzae=+pY#CRcDqcAMp+t%E6zakV8j@EQtEVT z7-80@G}4OE7gh&gb*LtwWK8ur=P+*bSrX0U03l%_u-l}Tb=-tBd!28&{iuvlJN>Y9 z;yKeE1y{aekNQ&omYujJuM@xN^n(V&5p|;7%g@Ls^|LvFWQW!0SnA>QIxy*rIdFKy zt~sadHtgw;GbpX1yabb-S`>!thS|1V+ue9Np&Ady?Iu{pv48RHn<_o$T0#3)TA}c~ zzV;}t45kOt1F-U?M^gtOq6|}rVBuiJA~WP%Mv+3664`Jo%nRgs<(!XTaOtf#_?1kW zOr>_R6BLX#xTnP21#=Uv0it4bI^Qu3x74s1n)G3H?L%+*jNZf;j`F2^Q|Hxcm!^+h zH0qBeUiXS$>x6Oa4V!zv=x#WKIm32%W}Ue6vU#0QnAbc4+X(z;hM1Of6nSL7ik-zk;c;~nQgC!oPx2Q)%7zMQs zHU;Yy^^HRZpHts_Hs0NJoO?Eh(ImSyjLj{z)A^s!k(gp^FO#f7k~N26oW)Y&*ikAq z_Z_zGr>EA1rpAuKdYU?ZHr}g~V8Zcap!0nyGy7!s_a9A|-_Z9tVYSVt1-6T54jwTMzz8hWQauN;#e14*F`-7W{TiwYbwWqQ zew}sRIN1NJ;Q6p;b>xLp6X{O#SR(d+d%O|8T(ulMu%a42HMRIzxe7n4*Wl;wd+@V% z9e(b;4?p*R7C)c+JboT{5I+w+jGsrofS)gZ2|rgBU%@T%D@(5|+m?v^pRiUf9ag)# zf=x7ie8Q+cppUeJ)kf9U17I~{|2`)NzGD?;GL2jgC|DSW=?=SSylJwu6Sg;SehzyzQGI4VH^V>N8Cv}nWgsiS!zH2p2puZ zeNf@!=(IpcSSOmS1m9aV*2@0p(7I%iRrAWz-Cn2|#9i5sHR?;&y7WNzu@{L_qJj4T zm>$reQVqKQ*h{!kGbUJN8uWR9zAJ!o4R{cM9}1vC10Dw8Edf+&z!#A5bZ6>4z;7Y3HjtO@`NRO&R=P?g7C;)3hW7vrg)bqgMLg0I6H$l)!%4(~I_FPEW~S^EwZhY>em8h;&++tW*MGkkHQkebBgIvtahuLJ{axtDsd21NQa>Dsr^ax;fW6d&bmw#2W7eHtYN_2l?CFo>2K9~fHkTVJQTJsb*fplX7S&cwXc_>ls6y7= zN1nItNq6=i!TE~x>C`~Fzh6h-8zum!EW}rZ&U&y12pb1%nFo9D$n)tRp0yrH$=WMq zeF2eQMC6xJ&h&x)p45F7zCYqvSC$~$)iZz_vj1vTNq3?y-*fAVdPxHbJZn9i`Vp%5 zBkK#PA5Hg4t-grRmk?r|PKZGt$M1sWn&KOobEi0O(YX_T4O-jrfnkKmkPdo)be4)_-`>!rM@~H>gwSx zpol*x(%l>Y2cf3yHN91Y&g_89>F|?kHED)b7Tf6VTr5^9SwKIC6mQd;OrD z9!Q~fFVS0da60tja{vP&Jw#yD!PHp>Q)AQJLF9{fJ`zyj+k3irHirFN0v*^HUNO?s z1v3r&meGG22Wy)9PXmLSEAzZYrkBJ+Z4M11SnA<23|0@=HfYbclypeTam?w6!t-6@ zs>4t_)3-W*HiR^HD13H)-zOGiC058m|oOyGR=?cJ}VB zdvPjk?5#f*4nyUu<4@R!U?_zFb1cL?ea`tIwY~9xoFDH1u^YQp$DZAd-LO^tDIVAW zjoV?l19)--jk#7aQtLa7+7|lM{>E+^B`Q=$W4AjnQ};O^lAe=DRmDD-uR8Ynx9-^u z>W-gV)jt9FYJnqwti3qG*AV`R9E{P)BAu4;cYE<3FhBh{9~AJXaij=rfx`kMABdJ& z2$j@hFHjI>Lt~HG2fY>A#CEWeE#i)sL5-HMu`{#{N5QM7gJGlZSu_tPL{4Ej&sBru zRvYhXS9?gSUX08}8IjzVm)A1Jgqh1!JKrWUB9TZtwUM~9F3aBL2qSV!FOVr}!qw|+nuLf+5Xm)pROWXtPE>;oLTn>ZUB1aYjxO0bV zQs{tdw_?$z+V^kOwM}n{ryt3oZ1YfF{YaEHL0P6ofgzn&dJj8#E%TcNT_puUpmSC4 zSxzD5j1H`^aFlGg6})M1+?HWPrtft|z<#Kf;hbwdKivB2bmt3aCSQLQg8QYZbFG)L z{X2}`j`q}8;xa58cv%La)ElXOaWCLmht%ma@Cyi*?o{wn`g^UH)3Mgeb<@G=&ITAQ zQvYcNLh3JO1SisOTd5yktbaBAk98Jb31S z^NI+I#^6M_6;CNW*%+K0foJc5#^BU>c80VU$880-RPEWmH_itxWPxk!+s#VhFwwqz@FwR?$!Xc+ z5?i8{J|6Fq^vjVY@)!Rn;Kz0l)6b%J?;h47#Q$-QAH!`b+-hRy+Sh&jqJa*oC#m-L zVJ_-*ju<>Dg|^~mq3Qgo$M?DA?I@SGIWqueBA5aA+a|v-<#jI&2c20#kwk6n5JWN< zi&VVp-Ad9n-MkUR#roVlaPfTW_8?r&QY?quRVR+x6}&Jdu0(-Y=){Xo?_T zN)Ms34XLwk_)Xt>FhTl4>*e#UzSOr}=(`nUy!s6frT)@|IG6G+4Bl-T`f?gf3uY$_ z7LR%)*TJtMh#qp!UjH>3hO4-k^RD8VfP~14(kc$IBI#- zZ@l1krw>VkxO3}+A@Fa9RNK~x;h`?9w1<|P+Y;z?HnVg{rA;JJ`$gwr@ZU%flYx$X zl0gHnQ-dS1waniTj$_~kF=wwZ?(pIHrSuZ<#IAtzIJ}M0sM^yL5AK*8^No$I9)lh| z1~=6|CU$V2pp2cRsu{$Al13O1#_4=XmDA0>>`TV~3E z5&ze<#Yle{oMhl@0LCA7wZTc;;laY$MMP5v&IYPda`Ue-_ zq=g-D46tp21}7>I;F%>OHMP^B5&TzkWW;y$g^}7L&(nWwI&|>ai{O|~jo>&Ll?X0KZJ3LiKid&%g8+E8`?C;f%2^*iiP#q%Tmqe>;rbAKuSA96@JMw(A z=I~kik4}gBPf1D9n&}|p@5zh5$BoBPp7fyVkdnG}NoP>fXdMcS{oTxx?u=q$m4XgM zeTUD==}Q)HYjnDk;5B*R*G)ImojTJXG99SH`~d6O4tDuQTDW41C zd(pUP$Wuk1#33h{9gVUGOsu`}1Ks11$m&CpHHUD(ej;*DWGy_Hq>adZy{Y4oH4*?Y z^7+UEy}(NSN$R+nItL8E5Of0%9*R6f{Cvbn075pRh!x;#EMHhu{^6j=HWVxIz2 z>nJ+O#4b}C1dM~dStebJ>{$Z7TG^>~a+ejwSEp8q0P2Gc$k(4Ro(6$i`bl>R6l_>c z2hkZj90(jvfzX3_$;^PI8z+-`CSW+iPK24>;sk;>#hCQ%gWd1yQs2I(v6pf6lfHe= zT=MOsyl#LhfS-Y5iH6kaqgWzh;6WfilzuCnPQ6Y3j)Um`oDw|H>-Bn;CCz zi^Ex$r~`bP^MA}}5GlvLslcfZYQ&WWzn&i5r@AN3n-F1M{45?nPqzT0!~_v1ea?SS zJC-nI$tKiJfpTiMkzNVwBR*0yHfcVMbMvp_1{Y+#`Nxpo_(5-*Fk&18ycuvGFidBY zEZ^JPq%TXcHo`quWVK7eiwv~~=g>gvYqQ{8*$<0!b~UZqMN2JKd*X)=C0=Wtcnv2! zO$ztsHK;6J2>>H}SO6m*VH-*}@mTZAIDA!%?8;#!&E@4wb%L}eq>vPI9FBGCaE>uOO!1XvK*QLta5NQa{8= z4NQhOmSLpQnZFl4Ey(;#TyQV4C+C7|u~MLKEqt}&1AjtyA}j#kM)7ThZ;SYLz_(p| zo$&1w-vE65;v0hRjQHMwZw&nnXFL(1^A~sx8P4}{=oni)5DnvyI{r!jlxlHr)P4q! z&pOn%+)3G#_i0W&}XpJw1PSQU-NPsK4hP&Fu?iP-Z?@XM7L_L>EG z1;dS@cy}W9C&(3Rr3vJ96_x;8Fu`EIRBd*G=7BsL-l+nL4f7+5&& z3NO}h)4}-haYG(JAx7+Zy@o~eLy4;NB58g}BoX0h@Mm=)QVl7l5%$qU>_3WU&D&qF4?b11;x|ULZkYYEh3p<7wG!!aQh$KRiAETRG zDztaRJ3a4CZYSk+S+BIDq=p^%^nSrAQ%`SCZ;ST>Yu*}xZ^tj%IrnY}q2KO-Cw5&` z_VCoU+Q%$5&RPj-V}X>ejYAP0&!a3%E{Wx+rQ3s$o30%O9#sN)1M2#T>b{w+6(?>9eNjW>= ziD6RG<5F_a3(jkEnUeuSAqS;oJF2rq*Y;?Bz~?>^=i_Ifu>%E9iZFyY1kH9| zHY&AMI~T{W%wSjzIA?HXKcSWevD*$4Uln&w;o|+*Sne?-CJ{a=4XX|$M)FZFzfWf) z7cx?#;p%{(0r5{g#M&(4r?ZF)iKvrA)Gjv(5)EEosTuW`HyhqiEi{VCJ^pZO{_8Zi z8Oq$M@J_?llZj-JzRsI8Xu`_B9lQ|YcdOysid)tCUhvx{?2|1(G2Q#acc~%YR+|_; zQG)Q!kcazU(Lo@SZJ_rLShzXai7WqV$K%)_hkgikt2oyL6%Gnr<*~E(aN(!l0*2zP z|3P<8kGBI%J`x=3fnB~6%UkfD*h=_W#>h^bwn6S>TSUA+j}p(jURHJ&KY$cQxckw}wnsXOtY4c=zcRoEF{fxy^a8cZK{@L)3E z*?g6iH5bd7iMej74vc1~uwE*>i4*Tk@CJs{jbpSJ08%%kf6}3e6?b2D!i!2N&H5$q z#A$;nwRa<;2C8uEAd4e)i(!06&c^(ioem3aWGCWHHVjjcN89UoLmGBN+ODbSE<9Y9 zT87I?>@y#@;iHL+o+b(Ia?VOc=H_=7v}WPXvt;BvC2yn^I^I|-F0;o*RSRE5p#e_P zFI>U{CHb!oLi2_N#rYp-j=ns>jSwLZTJ`@C_b%{tRp+6n^?umk2b9{7wARy-jq!sJ zFeGH}eI#QMBiSS&CP_Q8a@&ch(y^YFpGcNv$u{5zenLWY9(wr&v`H)Z1^lKD=-fL) zn%+BSAD!EQj!sP4;dC2Icak==^Z&lJk0cwC-ud16-2rQ#wbovHJ-_v>Z++`~WFkc6 zrqYW$%&muTa$Ujk6Wn>WlL#Xx72HlRo2ze0-YEsZxp4KW&4gfKNLr^0-Th3m*X<7` z(5uBNXG%m8g9^2vGpGM<2(J>{D--BWWJ;8BYM;wwr9ZOj8U}*;j zx-~eE2x3NCWvvu-v!Qcq!&g=&2s-wnW{lq1nJCmQ=Lg3U-|C3d5;yU!n^L|-%8Hv( zR*+)Mil)A*BW2D_d48Xi{F_q#kd)hQN`b4NFcwWx<+OAFY#?7BD`7G)9;p+o^n)M< zT%_^YpF3!r7rF0XTYp24vL_x%w1oO<fmdmUFprLR4*X@G{aECsGkRP zW#%R8jG#zsfBaKFU^M<$^TOWYp6weA#zSEp7imD^;en8}`37W4fm?%BzBTb7_z9ey zqyI&X8%fsmYBzD8>8OP1Cw=IX5zz1Ay!z#=Sz@wjRVt~P-H#l)F!OlNk&~N_9!BaO zJCVPMyor??H;g)jaU7vzLOX5eX?IQMbiFlhqSCK-4&$gpeFJ*}zoG?+Wt1zkk!><0 zmP`Ea)237YjYj{9Cf_B^^qV~0+MlrECRFL)*>o|H@ASIa(@j?*FtI#Blc(!1PYs&T zX}p>_Xp&StT|aN9hwKyeLnr_1M?Z0fFwZl*NskQqq8jaN5-{{KvIr?+o=C)mn9>fE3i|}%|4hWKJ(3uyAt6tc`ntZ)-` z+Lw$(ZVJt0B<7^>4322rM3bN4wiHIflaI>@(ETGHGwQ97k4a6~;7}7@teLD;~(bMtlRKmo?XW?|M9A?@p?gJm0h)NV=abqs(8iHxVE;M z8^W_|122iO#yXe-em%ISaf*s5zKG&WTjLe7VdquUVEB;=vMQh45 zYm>t~-<%xfDO{!K8HzGGvRIa9REO7Frx?_8>&5!c1)d1pcJRYEilI295aBjOPYBU< zBR$Bc?2J`eR;!KdiHM>!DI!MsWKj&gTBsUs+Mf^NfGjdFWcA?b06}jd*wRDsAch#4 zi}y5QR|TGlewW>E?PZJg@(uY6-C)N=)rLZp5|nG~Jf9ngXi`(GUoIfMRbD1ms>Xuo z_LeU3mda+GFOT#yF|R7-*=M!z+48hAtlhEaW8P*>N*S2uMu#-H5wkM9!!d9FwS8*! z@|5MBy0(`i><kbuYeW6sG(}q+=E(ivr2yH0DHqo}X z+Qb!#y+gIRc8EtDd&jffW^#)xJV2SQQ&{bWxy^J{Pri;oQj>R({5_L=M?aTt^=*R<$7oYK{OWB|NWZ>xJ~Kdb>$eUy9FMCw z_*2{V!dTwk#UM+r*G#S@Y^uUiYiW*^pe|#}+&c3_@W7V4=^fl-?Cgo1;DZ74!DmgD zI|s?Kj{@tvrEYjH+qz=X;>#x6{S1M&j!L<(g&VWyqAl!nHC25lL&Wh z(x@MqkMA|3DD!BJi+2xETMzlS)k~e*rOqAHxqW9BU%jAT1+qj5jOalVO}7dEz=ZE& zEQT7&d-x97WUky9a2P6eX;iGsre+J0Fq<3aDc;Ne)HAJ);9w6 zr83W1g8~Obm^!DO+Uk{>r~VLkmoLP}DxT+RhO73+4l);VN41T%UC=6=62IgdckA&u z-)^<)_bPU@CBW^&zPNP7^wP<)t!C-vOZv4vU!+6oTc4R4WnK-MS85t`Y6x!wP`vUn zG;HB%c8yAj|5@{4yLlS?IsY%BU{{x*i!MP zY<{oLj)f#5S70E&7hO2|KQzTHqbeZZE11GBBB2C6IoDv*V8@B{1^HgNT$z-|4O!^SX$j;?C*+6OA^<~`gwjoEVJ zt#oBpnSs3I{XUv!Eo94910VxfmD>ff&YDsS6|U#%{>aULi>lXUSq=e9V9eFf0dOj8ng!#_WV#Vk(>>GM;anMVn|)odx!o?{YK;w&Taug2BS|17I4q_qSVQ7oo7FByh0<7&<#flbn8(-5SF zreW1;uGuJm-U39=6&3ces7ugWqC4O~Xw!=V0SE|~IEDv;4I$C3dP9q=5Zk15^s-be z_$#x**&q>FV+OfZY?8P^eie8n?Amm>f+qY07M?KionG_Hv~+{GHkQkGm`M!?{BBSq zW#aBqjIeA9h>dO=J5HPaIV~O5DQQHWc7KR+uUHDFm^8%@RSOehBW;rdX6OH1RU zH2p}dqdx7zk<_~VdJBGSy<%5N>vO|1t&&&Gol%e2nvy(eZl+nIfgO~2)4#MQ-XMN; z?G>|`8ThhW-mqKEu4y1H&AA+CW8`uJEnBYyTHCKyNbL4X+3_~Rm3(5XqC38Jt6h z(WtJUOcgyHNPFVLdBi@Pb2H8G;cWrw992s#?C7TIz=x*Ob1F!!@awMpaPB(EoINb7 zGke|k59h7h@!@RmO+d6>)P3S(KfPT9b$&V*zmFVsL|#Y3U@(58g2cXzY|_|I=LwFh z649TZ&Vkr`3}W-AbJ2xkoTP@VFH!-%Ss2%!-qsy|T>G~dZjKN40fBq|DYD24%fL97 zWIJZ_6v{wIIty~!AQO9sl;-S^L0W78WbMi6k(mK0x;14Bh){deRr1KfnV8$pmW-=B zkSH`8lki66)(>+l+ds@(*Y;ulIyoRMKkGbJwJ!P9v9){Sk9U1I`^&rd*z9yZjrCmo z%e#2_WeQk?zF+-gRY`%;oAb~@v;R8c8U(6CVI}aJWW1@bD5(dMMPxXq8Ei4!U=CY* zM(q~blVP`x3YjDn>^5W?QDp3JJX2M#%peM$ajtb4WRR2*I0R1eZTJIDGCKKVo*zuU&-3S#*W(VNKdfma ztR=LN(0mP*5h~EoLxfgoXdNM2Lz@U~)X;YbZPrjbp+*h$66(~@DMCjyG(;$=*JrRfYAFI`Z=NNgwknWy0$N!_N8n4(h3+A0o6$^Q|LfYiJXp zjT-t6A+8V*kGvFavJgB|61r}V!-*l>>Qq!>#V-Gv8%bO1y3y}!w zK>UF6%X!)&;Xt{|d7??dvl06U^XcpTJdea5;2DfR$n*8M_pTRBz9TG|50El^2g5n< z&@aUOa`{`xP|r)gLkH6&X(fLTkyOqv0$KXI&iqn8iJPPderxrcjgo|DmK2q2*Q9z$ z>g5mVEbo+G1oBzQa`UBMTc>1u&GUG^$;(kK^ldF+SYAc-)d#$KUtejhOw4=f-Yj1C zYR+H8$(7FVkh+-Jp)*vQ?v=?~tw`pG#MekV*iavp!>TBcMd6Xt!ut96=mDixC6 z$VidFMog13awXzzG6kR2hzx?vt`@*BNR_D}<^}x7Q^Qgl;cc+U_+0)D^OYu=;R%z} zmwe|{eunf7h4>$J##5>3%p)1ze%-;IxbU{Ia{JNGK*O08Yo#VF@BUBJ1oJzgMu+B8)%jN|UIaWGUC{oT_nxa;DdvBWFjLUjpGS#Jfp-U@WR73g{^ z(DhcJ>#ac7TY;{(0_JHA`QM5^!t=-RFY>D+&D78-p?daqQCH?>0WLR@R}AM56J8BO3jp>Tudg(DJyC^ z(NB}bB{|YT8YVzrh;5k8DKDjDR?w|kt0e1p_>(2Hh8i|Yf-IFzT{%?p?)X>6zsfKD z)*MIT<4+O&*?5UOC2{=gQz6!@kc0&@@|#@AmGsBX0#Ynt(37&R zhsT;2kMj32WFyFsX=HjbSQA9PGyaFEO2+@EsSwj?8cH@SGnf}#TJ)Hp0E3jUKkk2> z;q~>Hpfn(mFAb2|rz$=zbqOw)&lqo7p<|%!gB76X5ToAbY+wzEgU{DNl36 zB-=X_@s`PE%KMo{KE1r_@%J(rDw9#i@HG<5cxCDyD&r@6!F-)p8(vV}?Gbhnk?xBa+`k~CVVg#yyw>j85~39gjj@%MAhk>$g6CPLlg zb!5#l{gi?D^<~RAWXV39#U?G-Dht#~WF>z--pE1*{Fd6*`L%8^zk(3W0%V*Gi#OmB06rKzBf$MyJo zxr{}wQm<=5`n8N{E<>UNsNw<k~zkR8NJmi-;vmR{Cyz9;Yll)SAaSd z`vnRRL3o)T+h61m#6PPE>t>vN)Qx+Yosdh@8ydOCYPo2A8@U}#GZ}I$E;l(W!4%qC zfEY>mW-gE|Tp(MxK(=s!Y~cb$MM9NNn5zDPz0ItuXw-1P|hizPMan5{i&(% zJ{d<*ezMYwRBSlC*!+~3pVFB38)$r>***D4T)vwU7HNv3ByVka#m>}}3=jDVL_Y^#*tK&%^o zfx;@N!V6v}#opv54AF4WNifzKo^VauoqYUo!6Gzm|AFsdbb{(OL$K|@Oo5(x?I~vd_PcE))Hz;E2G3VAnMCnpy{A39VE>( z_Af$eu?_2U7;8hE4iklF2V#{?451{l#1cv(8%@EnM2=XwOXQ+2IF`u6*c~iZ>dC;@ zF0Le>7nw6`-H6@wpf4MvEiaxd>uMUET#2;FG&s!|X>Ewe4x}I_)i_D(nam9}An5+G z8PNqrOn-~aytbYJAj=Q8&Q-?btR_tL>a8caTggIKdA50`y9cqoc|CVTTx`#5 zCGnEUm3y0S0(v8OWq%=LWbEZGmkZ>25o4LiDwW|~GKzDImU;$enbooryGGtu=w~az zRtd-cfcCwwtwEkwv6tN2+1Yf1n@_A~l@N7sqM#SL#}FSQZl#wQh$uHdOU=)+nD<3I z0SGLkH@th7wfou0Z)*+z$@F*nzJM!ZRr;;Ui!{@owtDe}5!fm!ZIu3rVk<7Hm3b+) zZI{)y+cU);oXoA+kjVK4#78vJH%j|e90PxQ>P1r}Q0*ph$vz%wCe1w@y1tM#hN+7F z7KJw{VWVHdQK>r%-*}C&V&pO=7q(8_PWx+zu`-u(0erv+=T6W(COQ_!ed(*4z}KJ8 zADh05NQsrmtK~r`^DjQV0b4c{Js*u&u-ai z8(7xYIm6B&s#K)c;T})Taz6c>e8}Gkj+^4=SoPpRtJR;KUUt$D`)KrnRp+IFZBbXH zCt{bN+AH9%9ElU~HV->q!wyR8yp0$!wnLpVDo%c}-OnC7fSbC*`o!mqm~#zB_5g4P zOe93`xgf4`YW6zGJ3tqG+(OFdRpRcQ4%?PU5Y4M0Obs-|Utx`Z9 zMg!WOB)#dBe}5kq>hvw$p$0VIDF0;KO{eAB1@J*b0QW$5zT? zl{{7>>OFS9JU%Cn2aw(#`@B3Jl*dCAJl4qLVR<|vk1xpMi}H9>9$%8j_+ot)=(A9t zMfxn(XUSU0Q>xD;`Yh9DxjvWbbJ=5(=U#m-*XMouT%pgE`dp>Y)%v_&pP$p`1N!{D zJ|EQQL;75!&xiH-h(5od&oAop(Z{7m(|$|CHgfS}&q{r+)#qdST&K?} zeLk+wFY9x?KA+HMwLWX~xj~;B_4%YezoO5t>ho**e5y+7{klFk>GNrQenX$%)aSSK z`8)djU48x!`mELGW}aKzmu0B~q#r--uXP9IyTjNiS%u*Ve|xQFj@zRAoU#i- zL)2hSU(ndn`3)7Tm~Epb(9%4kn&{tR2S#bFOb1y3goJgxHr|2Bm=4;NgFpM}M%k^u z{&h>6`5I%0xXYo{zBBiYnlM{O<};mkqxF<6LsHj$;!HQJ@$2FE?6!bBSu zK-Wnc9#Yzt?k6vTX9&(p%S?M)ccj|OH=k_p&R_q!b=QpcHcNX^g|;`l11U|2dxAyM zP{bau7sL)vt49z)I`ug$TY))vTwmb+$utNVV<9tqzA$-W0sVXfCqS>m>pcW78p~6# z5Tm^zt8+ArLex-*ijewfj&&NGFZ&DsY_A+#yXsQF+G=m+T@(XibQCWnI;D7?DaOXN zWtz!Jh;|L)R2&5cEcLNpBj<0dy>6I;dIl=;`{G0J{MjX=;ZM((EBUZxt$9XF9!&kA z=Q^MkII^v+;r6GLa9lXRnL}vKsgz8b96J^}=8lSb9@_wM(XP|>Wf5wMb+RM=CLuX! zXY%Xvw?%UP>qmc0ZufbLv@%2CPKB4N=+ln|`Q+|GNynJ_wLQfe>KAp5J@oJ{=w;pv z5=W|((6GL_XgdeoSEf9h-7tE{co(s@$S(PT)O89EYmFUNL5uCM9pvacs+rsFd%#L7D0&{+u%%?cyOUx3ya^(Z=xq$PAfI*PZWtOLTer(2JIL05DCS{rv5verki51>T-kVQ z+<)H((CBGwHtS^~tBCh$#UpAV-pU%rh*HdZ`25a&7c6fZKVHXbDKNu374r^wd@JGC zV&3qz9&9^)?-TR3HGXc#c6&brWAwOH+-29bc9nK{^9P3*>O6e5YuCPEy7rCf&bCW1 zoM^#vaj;JjA@4Id6_%UyL;mTw{bu$b!QAD6JnY8Y_{X z$ddn2TFSRMeKL-#O=YW1WxWMBh3xk-(bWo9Yo*o2rBbKHWezkItM_zGdYc(;X@o#O z{s}O*CLhK?Du5V|&g$$F>4gP-f-^Gun&SO^gKftIK@9hygdiTXn3KNUD8t9_jW{v? z{QX2kDGg1lPOtM2;ue}Gr!V=e^sPjGBpfFP8kPnD-VoQ6!!o zl=ZHm2&e~AemY!^F_Sgy+RMB(=a#EV*~Sa6GOAVBOCH1vVe=4%TK5OHBuX}gwrp_K zMNYOXqL0#wFfuL(Gdn2AP|g|d%hr}YS)2r?40~j$c@QjR%en{r$$8B0z1IH;rq;0A8R!91D6Vv2@2zD5~{GpB!@@~ZDp+LTSQlNfbC=8N-HX$ib>I^f1VnHSP zB0Mm`KXxuO{JyhuzB9;booa+{wXF)vLjfZ;KsdyR=8TZVcvcJBd?aY*Y z3gKoI=?%h#;b>u`hiCX#R)OBha<@;7sVZeK-x93Jd26pfmF$N$Ot_Ri^LwBt7>BA) z$w%dwsuhP6imI#N=lWUM)1=6KsUp>$ntKRIXcm?AjR4!6=_^zXRj2 z=s`;7*3AcC@VJg?*inv+9D`#=-5==J^Esn3k!D-=*?bZ4=n*|BXIb$IqUM4vhEP3& zMBmZ9UfN)Gd(lWV9!{24L&^!oQ!s#rnKkS=aqEmc&hk)GA66zFS7JE*wY>eBD+5o!{ppV-hjkX<0~bkUl3zf#xTqx#*!&m5JH(n?KxVRgJt`0 z{uGV=c^|ffYDdDDX_AVo?jMj=nfi~%#m*3CUeV6WJcC&Si)~~g^PGgF*31hMV(_n+ zQZP$38kufCb}ab597Q9^3rPg4UQ3dYDM><@pqDj0dtk78YzV~wUDQMBs+k8XTs^X& z&J#a-?!egj{c$k|SnWaIbv&z%Yw5ri_Z&Qhu>sm{t2$?Ad~9fDWOzno3&?uQsG%}+ zQjWmZ07Q;eGc7XVxj|F|7)<F45m;rN)$uG2; zJBvH*X2{p{6pYU`mb;{8nYw(+p3rtk4+W;R5oE`lo_zJER-IkQeaafo8TV@ zZR_wwb2l=_;hb351rHWCQx6q4oRFf8LT0UoW zBb8+<#ARNvN!gs>i@&&)0J!Nqssup0Sg*9&lO4!`2q(jEHn18y31_2O_y1_`WG>4D zTTU+sppW81p>(f(6!%Yk4Oi^2)7Nmc^Rg9oDv$2PFI8oab^OwqhCqeABl%^Vm&y9{ z(KU_@nl38SeNMkqYA>n96%E+6-zgh*G|Z1XY0Ofj+irm+qd=fg1GhP?Ev2e^MSH^Fmg|?Vc2YoyHp4&)a5Iz6STWR;5)nAT3QS5 zhV*%kwfs5j<#>Rf7l3b{3JRzNQi{BUwr)We0{^IEw<*5fc(*C{Qb28RaHcBgo&FH_ zfq^b_%UCklhV=2`xSjnW^-ey|;`7(!^9OJK{H^KF*WCKK|4u&7 z=JR*u^G9y}{Qc?A(UH2jcK@Axp2O!JpMT~{Gc#cVIhi(9z&+yy@^XPZ^0ocbucZw7 zq(k?yMQOZRC{~f@Q|M>Mi*GFzYa0G({hsmCPnPPxmQwS^m&p6!nE399Z24B0zheGc-K%|xwI(s5Tq8^1xs9e|TEKBcNkB^gSP*)q1^7mU z49&CvU<;>+Y+~`CP*J6weedTb{*1ChEz-;b+nK2mA>@w;A%8>&`6EJTw~oyU=$3=V zSSQ?=J?;z2puqEQ1g}wz9Gm4BpsmOZKG7wl4j?W@JZ8lUL2gfQ+!Ob1;>qm^Bwe0B z^vfJrZaP>$Fl8~be9B_xXT@TsZhi9ytTvxFIB0EsD%P3$U(~F^jgiLw#(~Dc#t!+< zZJXg&`;%s2Ky8w1p4Lo*>!voaw$)tZo~TbYokTxkf{oRcPvhh-x=G!DJe-HV%NYA~gPc{(a;y~&qOD(ad^<-QxX{5B1(umBN*E_yi-eS2_ z>@lB?SMv-?R{4-)I9Wy@hq-cuQ3JjIJRY?p9-ff!n}BeMm`{!xqvLwCoT& z^-=L8DeH&n0+n(!iJlBKj1_fq@rL@orehw4a|(_>Q|aV2Z_qv!$AH2DJ0%72!W6ZK z#VEx=pYN07FJIfnqB)iTn!N?Cy`@-&Mq^9e=nHyq%Er)-o|$@JmUHVCJz!mjIFqw( z^mX_aAa~u(^9hiTr;AxeFa&gCf7{p9Mn=xiV(TO?``wV1nO^7yW$C6DyFuA((o5Z- zEZy`nx7@u{ebKJ7>N;@n6>z>rYPntKY{as)vk_}ewRT0VG;+3GL1eS6)U>EiKEE41 z*EbTxW|f*$aL9J!b|~WY$5B4pipKXxKjT)#iQD+$u7bqiYGq1pVS%lkm?5^1c*5Q&)E~oeL_vfWU zTf4o2Guyh(3ieDtj}0VPPV+CE)$L2o9_<-Qo;u|9>87MyPE9zAZ@&3trCj$p`8Fd2 zriNmCE@&#nc!u~~fcKbRoyZr~<4hhG79^Ciq@_!|RdQ-IcA4O7K0V!%ZV!#13ph&V z^F@Mg!x2Jh?rGg&(#5b+k>-vlXP!4F1PpATAksh3)y3&g-NZz1aQFgQGhCTY(KBx3 zaS1}Hen^%Lz-yEJB2GVTM=soNnD|A<{eGX!VSyWBNoY~6 z#>#5haL>{nJretG#m>$Ia|xeD{r6xBsCCIcS2;*G(t}*0h{;e~#&?7pJBmB{8#_ul zWP^LB)&fZ1a$jcgp%Y16Rk>nB#4Fz%>*U0-3aS}jw!p?7=1oHB8scEBzujCDz^%n>f+|mV4Y>iZn_G;RwlX$Uj=f&$2Q;aq(>|fr-AZHX#$9TP(@x z__ogAmS7VfPGn!}VD)^q#48x+3O2Ffz%mFniN&sm&vY%5)N5TML2)RB(AhTcl-C5z z1cN3cWbY6ey^*em^!qLT_gnn$uXS6`dv8mb8D2Do0^tYA_q@N>I>3puV%{&Vb#a^G zUeZw_-N`~F`WPdmr|_!Zw!&NY(K`f+{OO|LYkOu;j+T3rU6oN1j5gf9HL@L#&0!h5 z5vv8OJLOyg%kc0@Q2cQF_KQw<=Rpjkk_RandK=z~txB(O2*YJ^dxH@S0Qts#8-td?bP>YWg&D9Zr=^7>SJs6pd7zsq@InjNGFOvm&%yo4UzNn)6o%KK{P4- zS_ehx57i!=?hKdFtgWCxA$}FYE$%^pg%uCdmVE-Bj_4`X{q&VO=!!2Th~M8*oI zL$sWoZdB!hAe6=+*wFgMy_5SQuLbc9j16|jVY3a#2i&U8P+|eMRZ457_roj~@-bcS zr!tg=#8rSv%+$oJavfQ$#%a!MP0U%QiRb*pTusc=vj9v;lQUlvXRnZ)8D58g}33_kNSN&(Ay0)2p%hpEt=Pe)0k`%N1F_wjrn|_q&4O!Rqq%6KBp=*PH-i z%3B1F!z*&1Gq--S<{#8D^HTVn1>iOf#{a-N`Xu47|v+6;myb?IDQ3oT};cM9uS zJ>UyqO|pmc+Xsyyzry0TeHOp`8e+(>_$6)#p=lOBY0xB4LLh3x;!pe*5oOiU7+W}D z`};z|DVY6?7ai=)&Vtimppk@PVsmt7B zBI|a^lyf;!A-byfxPMA5k9)97 zFyV1w!3cgMTNP{FoOl_i@~Um(y?uLaO(B~lF=!!n&4xlE;{uV%i!4Euj+*{@T~8(-+hX;Ke^xW%VWT0Zr%kB8+lCytIw8kC zEluM!ESl(m|AjF3LRPB?-?ovLowOY`#8kFHu;j>{<<5hrMeBR$!!@A)e5#8DHnN0=V^_irmm=DGH0Bw}^h!5ieVe6*v_-%e zi>(p9n9Xw$`|FZ!3|5tObBK(d)eo|rpg@WB?Ms31lN8{`1Cg)Hh`4{9f@WQmb(X+$ zg$TAH-r`hL*p;$+>q;Gy6tLyvtcuFO3D*vou<-7nBrEWqsTL;O*Q|n+hr|LdJ>-J| z8RJKv=cKweF8+Z8w!&+U zO6uMXbiHH}xcn^8K4h`9TiGCa#U<-}FVFVUv@%w{X;2nT|0oklkwO zzx$)U#GPDjjE0q<-S}IG)bW1fotE9|6;gPPV?*Hjn2Z)$a`A|tB`?i5bjc4_TU?P` z+q1_7{{X``GVN-NU$$9w65+<1w{pSxrvNH4jju662Jh=VIaT_%``5MQio#B$#-?S1ld>Yrn&V+Ro1#&3y0(bIQ{cp|mr zlgz4}>P9Lc*wyboWGzQA%Ugy~EY3dB|9JDTVAfTK1r40ksC1`F`2$8}fcAez1{N8$ z^4{vN$G9suv88@YJ^P$z`bT6ZV`@f1{%_d-<%1j9{S6*i$~^z7&#L<_BHne0^xyd| z`VG>jja){`5HhY^(g570F|+c<$+lEf8!p04F}xJ-bNA`q?*56iNgVU3b08?@38=tP z6}P`j%2)?jduxykDL~qgqmr3+_qYgtc&mhHmdj}sIT>bRMndeQHG9Qj)4gU09mZ3j`?;pp@|;w93VTcytiZHI`pwhve92?W35DQp|#L zHPzM0Z+2>F-$NTq>Plgn1w-=k5%ZD`gOkkYh7m?#n7snAV8nomUAMNFdz2xQ6C){b z+$gf#J!A`#Qf7#-LZYWr45LqoC&|VT#@WRY>amcR(jP_oXN+J`#$X%BZ>+lJXnd%1 zxPQB3$m$2kNv%GARF9~5R-?YCT+fHX(w8bd-XDou?&%;=d%j+*=fJv?neGRaJAhQq zXu2bLivY$&a%%DN1_#gD2k`v}c+DSFmQPPGL?q2Usf6L&NWVbdfV>x27<5nh5Hm+w zmO1c*0JVb5Oa2RU(=s3fmU?wc2}!dDi{bFbQN&Y)5y}0VnGBgv=1FVr53*|xcni2_ zmbJ4%fMVFPPa#H&)hXGhgf;bIN@kY6q`o}lHzA|HB{l#QivXTyWcxf{&Q4|YLPkW7 z+w4QiHw*cEGsGGacT#pYoDTM8N<)4o16MUPT5o9&1%onl3`S6A;w9e>KRMlEOBO=komeUw5$_O^FQha;0P3}v5 zp~kxJ`eIa%=i(L`FP3{n5yg!_0%Hf?QG~bwpThR>*o&x@ZIxXlYrwIO;|6mO3aN8FseV`II@3k$QrWjlde7VBi z*B1(RK7~f#Jnjsb6uJ8>K;&jKH?a0`cN8=k5|oXR^qNano$n;;Gl2msP}}VlUU4e7 zR&I{l0Uo|bt^e%60Jk~hu>Z&`H|mnllJ&@1I2H`Uwgg28#pBICqjPy7T^Y4?Ak|Cu>Q|2_l>Q9CYQrBC*)gT_u)A(GVm4dQ)kkWmUL>pg z@kiF{%^w|RlQvsTk$o0-u`8^tFRXk)x4#Yf{c3JoJT!aHc!!@mz>GUyP?qIs_s0N+ zvb7B*v9w?MVr5+Gh#k{O-*}fwzp>9FNoHHq=OY0dHXBgnu)l3)TH%AS1Dpbck`!Dd zzo(15`Se?b!$k_)E36(eePneY%{skWI7OmgZMCp3W6Hi0p^p)>L=3fXexi}4D z(ltYieq5C2@qA%xg`dT0IQq87!;&2fe5FDG5U5uC_ z>b}bGFthA!RxhF(=vMXlTi*&RQX=cbfhe_42sRagKilNL-E5DPAzNWA`Pn_PBZ~X9 zMm#0eGXMZbAxEVtS#jd==zoBPtq1K5IjmF>849PG-tvrSn!%*r3Xw7~+bNe|@6z69 z+*b)*>wIC?&K;KrDv}*rE0VncBy}w96k-GZ$CPW%1>%nr_neIYYsH4k5M$ROfi6os z{PcGXJ+$d-Qv*t1fD$fOUjf`UUR_)HHL9LhF>F`X_F_n^5?k2ZY@Dq)_tGUZ zLt!jp&b}{axBy6KBG)Olx=Om>?+1pqwwYez8B;%=f6E5gA&ZYDq_)1SNOM24lJ35h z!ufhbA%Z@`P(~Y({}XgS{H)hFwhOnx&mop~(Ce*!&O0onWDa@3n0K1}Al-c@Rl=EV z@@fu6oY_Gco23lQMj~~*_e`?a>l}NQf?mMY>+{~J>KBYqdDfY2-s>V(E+suL-wVSt zPYxh2QPAWpLG8Dd);AZ|{>$RD^+!S4le64&L2}wfx&`|Z2xOK`PttRRF)eZ7Hz6Q` zL$(pCxTNb^C&WIu2RyMu^4(7!{ta6%>`G)lXVg!PRoYQROp>R)*B(p`CyyjCE{#kt z?r3pud_W8z{EG6#6~(VA?=TqVqUZ$T0NfOFxIlWVH#|Zeagayjs8&hWiTudG8GC>G z*6uD>B`R~yU9he1ce!4N?d|Wf4!JK)e_T|o<)}`Fu+d*Bv^o_8Zr5j)YF4mQ3)h_2 z-y^qr0Z)&O$c2ivM}~s6yC&A@c3;mW%S8|@iR2 z%l@Y;`BWJ920xri;fJbQ@xy_cAD>*z2Lhni_7rMJG*+(daS!;(G;MeqVQs)?8!w~@ zO73X0vTTS?#Z=~!E)%*L$VXp+tkTN@-M*bXtGUf?#v>sw4>M;`(Z+q+}0%9yEt>E2|g@fWNDY%#Zd4|+#Z#=81&BA4rfK_sz< zyh6P@Kw|}cm%*L-UX+n`#k_A^I3TH+ugVkA4Ef3Cdu{@7B{L+>Ts+N@oyd5Qm=lZ~bSwT4kgxr3X zw+y5?H$raf(k@*hX#ZEevHStXkuh9t;_U6aOYUlU8-_RCpmhE~-?c6m4`0{qg@B57#x2*RuGiv}8V z*^D~bl)>ttx#=amk&?xTu}?j7E|yV*R7ox3UKoW+yPp z14(yef?E7oIi5V>9-M@Y2?31t0iKRNweaUs_}|M%s$Uq!?E5OioRXWu|1w=%mkFU5 z3lp-DML#?m0sac$73jNctGyg;OCcCD#eTurvvu}nU~{&le_ayn=iHaf{jQb;^=pKX zDeJ{f_gtTpd-seBeHI=O{Js6cTA`9jqOSY~yl6b>Wm6g{`0*_HgZJ2wVY5-+~`qJRnn_Tm^({k&0|= z-8*UzUhBZtcCQ?MBh6g*n8tAQpW6O!v-)j8@NGf>d}yI0BIpW1CV)%9ih4x|ZPco< zU*t58#PCR{sB<(_+s>^3=k$qWA(y$jpyY61r5J>8F8o!- z1;^glk@)$|RRhDRf!L8+F+}~2#)xVWfvRp?2@(6Iq2CY5)jbO8y96<2LLtx^g z%z*~+g$LL1Z8DRo1OU)`j9lwt=_PW^We#gLp2XcNxAb)FJU_w6;4nqtp=U#ki079=-Rcun#01`^(qvg9&x3KPN1NRwjmQv%d{ya*Zif$sPq zj8+xhBNITQ%*!-Hu;^{k9s$u~fao6;Xz?nmRxH6RAsrz_6hKv{ylAOrQQ4h+tQxin zFHi32&H-nIjX0E6Ze-OW^?s(j6AU|SUAljtzbcdw*Uj#Tq%1`_0XnL4DFd|OUPEX6 zCM>nBsfBKD^`5rzF=_9Nowvy(9FS*UK*JtsW<8z9-0#ik>>!RWhWJ)H%vbK8v4$J} zewI42o>(dV6;Lp&0e>XU-uIf+Fu;1f&jnX*CBJ)GEPQG&vpri9%!i-$ugT z=#9@Hs53Mrb5PEqR>nD|@X7Q01%|UO03unhY7vH__If27&HfW;r5<8v+E$U-)N5R z3_kMvXObND$C9Vwh@Kr0ACYJ-*BtUjst3Ytytcb8}*zO2x*L&8;ytexg8E33@1pNHAq z2(z2E9ay26#rX^9J=yU*3$T#|C?{#Il8JG&f?4T4kJM(kKRkeLeBKuLw2;9!5c^bQ z4e7B8#-7sW+3f!sW2r52uhOnaGh0ey>&1af*E%i-wzYFLT0x^~5tljW1YU~uT%id! zGAeh*D-n0QkslJaQsp6<5&h9k)d<%m*v1g7k)bTqm8WUjrqZ<1lgL4fj7op|)-&5` z`&)Jp5Q*r6!eHW`jf(t!VTr+e$%J|^sXR#+DnSUbfXFgICpf}9-xpfn2|NDUV&y+xKQ%f;eI8zaHV=AW2*QWx`Cr`6hhtyJx{E85| z&Ple!-ivu3Fj%%wuF2TskGY^y`74V9;5`0}l65M!7_lo>elsstssvW*1-}U3OKiiq zD!izO`ge%e`pAb22q}`#!C(9Ms#+3QB2x+XOTv*E2@gm@a7My|lJNSBgf)^tXQs+{ zq;~uZl14A4(jKiH|B|HrOw+^?DrRKS8cuExcHCsrYiqmC~zA z-YEMpxBSDrr61ra9M&d5&{ z3Y5>GNAs#gP_OSLrb?9F(E8-d;4N>2l-F_XW8vH9ufR&)&%rS8-ablx&@lPFFyQ7{ z&w+>XB)C|EizI09C;_tjD0CC3X~X!vwd2bLam~P*#2OWGnH;LUvtQMAK=Bk2lmcI) ziTn)5qiZ`YR%Ij8P!wwBSsZHNSrTgHSsLQ9V{A!iE6=h}JJ0fv95j}NcJf>v+RbxC zC@JLAs!;MUKlg`{ef&HSO1{R=gQ4V`{HzHj-{t3#Q1U%~z8Fe+{Cp`y2WAl%FOX2K zgbF3JP(sBLDw9yDgdUPmnS>NVmr7`Zq%D)srp*{q`(s4e1aEQrnIG%C6baZbUJfYJ zI1iJgFp2kxV(gj4=bVG5<7bv%IF00M#vUYMP#LzpMHl;9E(OL)`w>y1Txa_>X9vIc zp5w7xcr^FPk!OXRrB^Bgb`@W)@9-8$uGQXQp7(pFcz#X~T@R?R_2-ox`=HW}4|zHg z-rMAP*wf+gqJ+Po$Ez>ux$03*2gdt3>Enx;9y2@y%;*r9C$EYKER;YofyELiAz(&} zz)DG3Lf|3XcL-b6+ALGPPL4owF}BT;kytOV@MJvT9_Yg)BaBt}+{Y~ymX||4(pTsX z!8y0x6M|{8Ly?lMPQ$gy7;FIT!l?*0f%^9aEt{Y7gzp${%z8tNs~si9MZXb1U* z2n97XLg;l3y-nyX4Mhq4SVJEW0-07=)KhkGtp zKt0{auHfj2RN}6k4QPhR63n&bY+)UWy>Qjql|1#i2d?c&9(iN!WAYB!yyTn7(OB~J z4|C=0{O&r-bCZ9Cb1hekCh$0n|TIF z_HNbro5*u2wpDEQ&nMu`=(`9&7Sez`y{;`Xx^rbha11Ca$ z=OP{rxA~*o6_(dzdDx&Du<@bm*iAUHRZ*F$*<$0e6^o2*f~Xy5$M%N(V(m>NQ$&^# zlYPyKoIM*M)?0c45B6$hd&SzDdb8uew#yYesh!^JxT!b$Hi*{UX4%+Ws%!Wat`4NflH*9t8nyt&OZgAUmuI>W!9)qVgF zPa6%{?O2>-QqC2~>uDJsVVXrQ4h%Zo-B?b z@{Deyh_bWu>7DU)+wC!0&C$Qs55&m!)IVLxIboZtjH7T9m+ZSZEX0O6{hYcK(4}v~ zdVB_Xj=-VayDlTb3bVFiuc&ohaVT zm&Wgx;t(8+N4tX|6g~d^6QkDRS{a&x>7jYR3GBH-zq!Jo+_cD5SpqCi1X>A*Re8)1 zt*u;I3oof{)IT@>ndOckiWk)Jf;MVWJb}4X89#*1nsfyCt+n<_YiT^-X0;7?ONCL} zF~S(Zt5%MUOoIiRz=32aVYiL`L^~owz*n6zJe(!s5f$lOG6YMUJ7*+hh~LOL2YBvy z9!n4!do_N++Wma|486e+3J8EeBm=giBEWZNb7?)QIgD<%7(isATOIMj2D(Tj!a`3)c&PtmoCF+>r7& z%AYj5q;zvUSk?jGOQt9LjP^=8aPD9{vb=Wez8YMb@@Gl7I=LslLLTSDsEv0@JJM%5 zf`gEf&vT?A--B%EYaS*HPP8NZxjlY!US`ZhR)ibPzGtMWpos)Qm^~rOJ|evBkQHu_ z0CJ~6n4&NB71WAqyfbE7$0_p|O0#2I;|^N0CxnrXEWwRztGWx-m(o@#6FZpn(JCt5 zETZKIKbH+|qXYOip0*zmJy4C-1A^2fk|Vi<3Jz1;dXm+(il}_&BB-x+HS}E-cMu)b*}nY z)0oqrnH5DVc_kklM`cFa@`SYIIf6Ho0ZODtS`2PD4Wx)L1QSWo3XJ{e>r<65M@Pb= zcAZtXSAE7yXk*RBZUp+AE0q;rqhr5`ET6GTfcN&m2GwAk_C zrOO~hN@|w?5a&IDqPZ&aVx3z5D~N}|_(C3+bv&B5=VIbEgm9T*R4yB7ue8$^^9BD8Q7TstOUI3`NGV*=S@%Q&GezmG{<=~u8{EBFDzZ)Cpzb7Xk{U>kd|n#V(O zwtLt=cYQ$k(J%2BUp!tQKZWB(@>4usB0u6a3h2}W6u z5I72M5r_7(99aabog&EA>b)hkqXPj!QX7BE+FDj?%Yf%diQ6_{@i?7pAqxIyRRE$w z_Xksr)77H4G#n_GT02e)QpBR4tOB_Wjt5)%mG!7$w;LnG9f*S)(eHIxzKrsZrpg0$ z#)NboD=Xg|UwV#1wIz3~RQjqc`+VN7colM(oy~nk$P`emsFBJ|zx)`4Tf)Ic6fj0X z2Va+QurUh5L>&dMy!R{W0!+_8@!aSIDMqTwyO8W%o$U1R{Cg^umd`D@CI-P=AU8eS z-!F%I!C#i0e1~TBGo^^^c2X~3t{RW?5x3w<5}T2>Sha@f7>%fuz#=*(_-ra?ZiJgo zs|`~8I`TceeR3N>Zn0w{T`i)YMeHc0kV<9HWM||g{BBoED)ORDdx^awzH%*Im~sIz*yBhYkhK*rTrGDIr(n# z9fg_Kg{m#69TVsuEAHn3IkY)mW`T$)$!LPjCdX2%Zs+oY3<}73#A3OGWnBoSmJtdw zLg1-+JVu8BaWc#8 zRZ(g*g%5%3Lpkb4Hu!Y*3Tt3elA-7pmZbv?1-(%48DiDRzM+a(g0Se9{e;6U*mFi{eJs!kdk?Ks zDd+{iAVU^F4r1{SW63^ZnKvbi&9=NK))DJ)gJQ&!IYhtIYF6M6b1iWL;=gT4Ejxaj z`;(gie7L5zeQ6JHxNJC)?g#H3PGp$i^5I0L3B8Jisv9}43WUSsJ-lAFGYI^?8fkt^1a^7Vi)n03cB*;rv!_!KEF704C(ph1X6nUTM} zsTH6v`j{C6gGDSsGnry@1SqF*Pu^h~kUMAvfJ)N@?DpUMa_FX)(er{MIcibre9ee1 zX_JkzLjKJK$D{ zNp-BLPbXs1NfKYzy>X>C!qRy_nB7X(KO!||d++&Gjy)={Q#FTe^h@K56~o7pe-8mw zFe4p7XaRiE$BSkpL!|r3N=%ir%#H=00ErfAufnDZnArZ7AYy?1)zvl0BE}(lQO7`Y zVhBR|@8g3!dm!A6vCm_`Zo43e+lOE^z+zceTQ;=wC5CB*4pXqGV-(#6Hl5O1pZ;7b zSmItDLaVG;$&ePW;<5UE9zkR{hLgd#{h%3vH~kUdV;PvSN4~H*{>4Yh2>I!Evb1*1 zIE1Kn@}J`4g_=CuCYcZXR7lFjP?8I2;R47dr;|&C6bUjc-PXUPiR=(HTbchd z5A7Z>=Yc*?6&Autk@kfLNu%41DCYfF}86W~Kn$Bwg` z)mwJ5>&Q;B8#~zzX~2%19Y*%9!-dyYZ0|bj{Qo(1s_Ndp-O~erG@Z|sKFsZV>v8JT zsq?B+r@kEyR(ZH-qI38C2pqhX9b|5T5@wyyi5gCT=+e z*#tih_pLkd5@7-S-6ubPH^okiJ3Tmt=$dyYa&MYwqxr|cgkFuqco-iJLq4O2AwNRn zNUV0GM7fy|t8OPcy%=4%AcF|_$lZjR+Y-yW#Ku(o;N^P6$3oEA}}gt)f!F z!My<~D%-r!PK!3~A^unOxvtRgB`TWHBALA%r^YjXNkhix! z`3U6K^S?Yn0f#y}FMVO+OOqJi;3GEKQt!{#iNHE^>)}5%5FkR<}=FE%Oh8f^L2s z*+VAuf(Tv_Az9j>^nX+&%AIml5Y8CtC~p>J;j?eO_3HOLE8#OG!u4vTZ8*%3yT=)q zipa(Xe;NlDnL+MV&wrc|0Li0IGs7f&Z6jsGeohRh{PWxogYL!GvHT=-u;)Gir^xdkeiD_Cob8g?VW)%}IlBp-`Hh=C z{XQtjI3bOaNV&5C6T%+g);f0T-8i##<+)!649KK#@k^5%aGwmnRt}&){2yi#EJzrA zGz~T#{R*Dm2H%<;#+$_NgQvn_yaSWslp$53GS=|qc?M-5JnNZneDL?SKFZ8Spa1{A z>s4~*{T<91UDlL|AOQv}!WsSpBp9-n&$4LpDqW3QcA21&Tt>C*4@%iG)n-J0Tx5#- z=YELm>=L{M2&Y99C)LR^vZF&&yja#hx8TpGoiy0bi)_oVq0q28X(1Uu34`&I*aJI4 zd+HmsD@2z3S8yQy!5fdDO-NVLz$Zx=h`gPEJB>{3GUMUOZ~W}YDY_o?+hy@^$U8^^ zeK+chjoB;Ybb}W0d8);42A}2aeiP4sgifzZmo}VwjCVE2`M5iYvrF|al(7iQfMlY) z1i|y)@pvclVFV`NwtUXxDAh+$2pt~htxTV*e{ny!E+gzF_Mb2R6wWcApC82+p}jYV zQ;pkF;!mR!`6AYUFi({GDTg#b39K=aUbI)ALiKm)wSf)xMKIehO>8*zWioRnVS$hI z4|eXK#4nm*KZsv%DUVS9`b!flG^-f)OiokY#FuaKFMs;Va|iI^JG5|k4|NS(mLAWi zo`li#43aua#;mVQ-hzmp$qg{654`mt{<#(A@+T)J54^aIKH{ZYPCdWnF}WILg0v#^ zA;~!=kO%-SSHN)*{gozG-UsItruf?k+{0Hsef81*7H-xLL7~Uz%@c_K{1~!e?>M!S zGYQ`R1({iRG@sn9?_PiP>+aRWi_cyCl`9|}@w5GoynXSvt`IeJy#1cN_@sOB$M#|Z zvin<}|0oyjUnW$q2O)52KZ{G1u{=7D$Fm*WB%-A`3mjgj%Uj`UyG(DZc)fPeJ#qE( zXznYh4x9Vx*S(L$^pDF_KrV|Sc6lpRkINfZp?s}wScR^2arIW%g{yRf5y0K6^e68} z8yi>Qqd^&z+`r1b{jzwv9&~89`gLsgyr}iRG%5AZ`1+IC`jc88scWw;`RbEW9chNO z891QJ8^o>V;2#0_GO(fYt*2JEu0rJ!g^*p2J^JMXmshu;y(az-u*0g zU{`m^%Y&=C@#5!^YJK(gRWyhnzkT2!3jRAh;RfzkUA@YG{)oH6-*V-^YWWm;U){et zDM&hif48iH?k=w$LIF5|R`0~$I|0HikK*ATR(k+7wyfUGLPu7Q;*UDG1o^9+tJUMH z_wdiXC=9;|5Q}!v#|aDwOO<>IYS*v9h=+%P425xaq>`J&&wB}s`a5-F<@L|dSqMS~ z5rdQcUCJC%(rf8*09yvD|Hk8Tti&7Que(UHzv;=l8Mqs)>L>4h3`!I_`TbWtcj?m6 z$1gpN6WNbH!xQPaFA#p04Nt%S*7v{d{h!3YBkw1mNT%^9^ZtHFHYD)ylg4De6Ck*F zoU@2lg_iN;vgkm^AXu=iz|8fJev!bzx@KtXC%|@)xKZ@Ti3WBrh9{c3hXJOG<0Q9G zD)2z;hEwnaPm2U1Qs6X|FK;S84Ric){~ihO-uiw--J{n2n;4~n%qEVrg)>6WeTE$O z^38gq6`5R1k{&1H%BI;=nLxpFsNJt+SQt%oR;4}s<%#m5!IwZ7`b zkK*YGdHNKdF3QvA@dV=zU$G*;`3v&&9G-qfo_-roza>w9gs0!blf};R>AMh4@n(59 zf~TA1X*Zrm&z03h{K5Kb;t#rg7=Iqqmrq=|^qa4F@kzY+*p*AG=kWXw@cij3&;9!s zzVl0vgkOdv{0eyX!Fwj}`PzXyxXFLh9avniI`Gx6?DB5@bE}I)`+DUHP0{_A_er;JgdRAIO%bvi zG0YQr{U*Nl#wiSQU2tzCReYB^I#GK6^B>(0^=xAQEvL%3vUH*iM-Fb#;LRyN4R@&K zalZuP?8?(+juAc}j0;2?V@|g>v}2 zbr1O4_0Q{(*n&9tApb|+v-EjfI>f0}V+AKYpjOn$d#I3VmXzqzb04_-8;?DYn@KKB zJpK3&J^zd3F_L`iwPm=I${iXDuPr~#WM}&LEb^M1*T+v`gZe%C_!(@8UeL$S!G`|C zH+L^w#>VmGPa~VwXFhP{@@L_o{Tv*$KTQ|uf1*}azGcG`IClWF-c)|uGf!OkBp=^U zMpoaqfB1c@qtU19yq>)eddQZJo+@U_Cz^9 z8uv>#H$64cM7kX`&5ijM#MBcPCt8h(R&%1=m}oa&e66U}jfp1Y6pWX0qugYU>c4$) z0`Cya@#0Mo&@aGm$N%9V$cHA59+ig=zwoE-=|?7B_|pd-F7u!L{AUuy{$B2#RQU+n zct&e~wwH42=wrto{qlbK^OXZ~c zdixO0-Q$9bGxv!y|3-Y^ukY6~FYI|xAC|w04~Opg+OY%o9DLwEyy4h^J09S}(6Ix@ z?zl%DOGgipX}#{?JMKg$$MnbHgZ%NrtM%8N2j9V8uW`Q)6Pg!ZtH0iHr~JA}e;vH@ zFuvhz031k5Mftzo>8Gk->^e8ZaQGS@nk|(@U9Q>&F8YCpDq=wOemJMPJXaQJq*j81?Fh?tbwx zh}f$ih&-n93O-X#zL&~RaepEQ?Tkwbt)2H?yJGH-p1gx?%@|)!sUX3H2CxD>u z!FL|;#6Ng<>gompA%!k82>I%pAASB$CT@Nd^$`7q@^75DdNZ<#ylwwC9)Esfm~S9( zCT3rF?LCOkN^u02@88b%-)8T>d|(qa<>x0hhqte}=c8XaxJBOH7T%(buO8aUw^x5? zJ2Kc{_XpdLI6H84i0DC<-sKJ=izZG1O<#Hvsa0Qd>dTW)J^3{5qQc$qUp?^DlZSp7 zhdw`j=tBp7^lP78xZ@yH_ZO%B!yE40kL)4O;fm*nPr>sx@fda+|MXA)^pD>94}bhf zt#hVXJvFv#_tsrocWfQIee3SAojb<1-M)S0{Y%TU3-!5VZlTg{Ct5Jsn~Yp2xesS* zm1?b(>^a=%)K1r0`;w83$&uxDCz-7!?S*D18QqkeZ8Xm{l1?+}oT(-EAK8*@Os)Dt zy;Eyd7TU?4a;sHY>8?K3xBBc#r#9ED){;H@@zkSwp(EV(?)2hsMj__wU z7~A`{(XK7j<~mKFVQOV@wz<$)J~gWCO-Y+nQEw;sf3vZ$lFS39YHfD;^l9KhC?&vZ zXa=-I!KP$*d^k-iZACh|pRr+;(tQ#74mSXNWug9_-Z;FG2-^U3JyPk^l2;zuhU-AZ zso_mRLVfYKIl|u^uN?9l+p)8l{I~y7k_Ok#iQ3{47LPrJ<>c0t zU&)JgF53-`>+aC01{}g36|KYRZ+9M%&04)^jTD5j3s79 z&}6b_PcpVUO)exO0xf=y?v$S%TD;N%4%)Po&OVkA3~TZeLxeJsSNNz2B*yrYlaz)c zDT;*V>wh34G(%yTOfbW;iqp;QIwY6MAFw|PN3ihuTC3KWt3iHt&edv-q(Z(~QTbbG zR1;|qJoRuRIa)i{UaD2jh7z@QQfaZ77HA-8FV9Lnylu{F#ZAd_W1)VwmP{>H78W{{ zg|o@IGw6}MuSnf&B?2XF47btTQmth_JWyNG0BrNE<{~CkKuoI36!mWY zD@!b1Aygvtync1kP$F$p&r%G@&wZvwois$K8Z~`HMD0V}dPskD>Le&{q1gslMZJL& zH0lMq&9-9Q=0f_6TL<+v;He}td-gY*3$+T=D-pLd9k8!b`ej$@q|7Nwi5fTkUMJNP zS7}S4FW!eyY4!KMuay3eR#|7?O@OtLK~|>TSA0F{QZuG^xt4QCKk2j$ow(sr`msqe zfTFekUB>=&j-?zL-CsLXd87{2hKjS(4%p~aZ;f$R7gmFAM9renA@xvaQhnOB8ZF;F z?*wm9of!J$XWWRTs;Ze?;}(!g>8D&#{_HA4l}^-$sZ#p)UBP<$E~ui%=5@F;(8lA5 zP7*iMe;9<*Y^7bF1OHNlgC|ba8n78wgbU6!7nkY_SX;7Q=Ao50TPwEKRVPG^ac4U$ zVtrOlLk?1uI4yPCcG?(2XDSPwEv57)4E;qjcHnV02%Rx2O2EQg1=feLxw-6KT)j*k zH#OJ0MqM+0jUJnQH@W;C{o4&rk9BGEw|HHKj{`=Kc38}iJt9(i+JU_+AlDG|{zV9o zH5%F3wJ4NZrUz`@$*9WUrYo>MD6r0oUfBfTE9lJKNK_dgshhEF3j{)K<$)nfsJ`3qpN5x1NmD99vR; z`3W*p!Fv%o|3ZeEebF8~h=NfU?H>6oWbKsx7J8Tpd$CnDQ&GLbOF&aoUW9dfgN6H&7E0+p)4HD zYii(tr(2c9Me^>2O5^l0IM*goU-0D-=!0z#rjr$5gNse^n?O}dnzGudiQK0eTobxk zD`~Gl>sf^T+-NUB>l0e`y4@z}97^>pN&-UTKmrw@S7hU%T3e{247Ht=d98B#q&E0RjXZ- z-}ALfXSqfF^^r<_L1qjfY{bYn20hoXS8EXuC!m|QYjaSeI*<{ghzJr(`k3e;3j%saO3K}hyKPWP1@wL@lK7A(4SusMk zBp_wzffXo)nC=Kue%9d;S**>SsWj^CMG^Gs${^sT0Va=BT6JPZ)cJZxCSBC!_LhXI z4qS2IRH7@#qXLpWSk4Kj9u{h^7_t&l2O^tBhz@A6-f974#Z#*`PyZHlQ>Q}{`)&<5 zZ%#Li@G+nPM+23{3K=dm|5_D_929QwTEH6HC%(Z)Fs)0qIbxq$bZrq+A)2wy5GVNl zBb>YzsFui(HCAt7L9H~G!KBMDFn~AJCoy8z@;M=0fH4nO+ky~KpjeRZatoFh6?Sr^ zYGP|14a~MU*-+e9=D90oWF>AfW}-&jTEQ0qvWjYO!*IRvjeJ z5anzJ&M38IxNPB*QiKxurS!9|Z_K9(KLG+>4uLX)2vRec8ApMju7S_Py^I!-h(KN0 zU_@Bjos~N)?K3Ft6&6zw%8m9pFc>U_8hw?pJn3MDej;yRSl8ePZNW=&qykcr(Zxf< z1O>X5St<>!p{?%T6>F<+Foje)zg_@A?h)QIz^U8`TskUOS3aupA{pL0EdE(Pe;E9U z40aaj@o&z;g+Q#eY7Z|%7IEEzqQT#Ryv`Y0H=$8-LU32w=Bzf~Tv%wHBc(`lXPOJu z@zT&n__>nvAOaZDk5m?xu_Q1z@EXH-WVHr93Z_^>9;CLFwW8ND6JG+`bj~zd5=w|` z%;o6TZJf;X#ABgywOMN)ZFcU1n%pAASI5EY#c1(*i?eA*wxSdJR%xAvb}Bf8T1r+8 zU!Q%%Isi*1hwVV3w%-Y@b37R~Lu~k=G`I(6WCg&lN5`JilL9zRxa5tf-STpMcqr4P zT|W(XO(}ik{b5wPT(R7|Jyf)Uw3L&})(=5BL3P2=0-m^#+yceqE>_^8f+()ROauqS zn|2MF1Lj^RrLv5j1QGja7!D@SNW@?yEoDkjR0M&23gr&4!D}s;r{ZIxpGyrg4@BmB1O(_~ZJw|r<_Sv?HNo>x zYhm+ecA+_U_E^iA+D0{g(v(^^>_2wLeN$Mkxza``lW_My?J5lod2e#AB-b3~V*U`> zCi0ggPJhadRr+#J3fWT5p|4EpDK$C;afiGQ3FGp>N!fPXJ ztBOWX6jV>K5LQ%c=}#R|+qXvO^Sjfp5EOcNO6h+cfho?yR|tqF1(;HL(Db&wYwEZV z&8ECzQv*CatFn>rN0zASfpfI+n#r&jLBlsxtJ@iK@Zk?S>2`xh0adGL1UE$Oqc&Bf z`2mkkaEq$t?HDp)s(ug|@NH2Kgh+*?7*Nlnl6Ssa$s0rkT#>4Uir*U5X#lhKd%8O| z?UEl0n+CNUT83s@Yr#ilc72Q)%z_XcOmld*=@}GF!y`t^mEH`Yn&(ax zH(iCvNfn)RGF0dnfgZLunS{RX+yW!%yKI?ql;wqmag5x5-V=&WAH+V4?a%O8IPL|| zN_!b9wnnsIr(1u+;8UIiT_e+C8yYdtFU3)46wgtAbn#A)Lqn$eoa{Nc4_jBRgAg{e zvlvn2~JkbQ8iR7(HQEnWeGeMbRLU4vP}LfE!j1<43@lSRKjD3V9?EGXb; zJm}j$@A{o?{)a4n{676+!6%i%U>@ftw_?DmNN2g6Z*tz>Cu# z`_2k|8qkw^OiR??kd_1U(1crG}=XnI7@*a9;IC3Oggr{6o<^gJiRq)C!P6hQ(HmTQ2_vV^KBtmk5ooGaeD} zEY@qZn1p_@DIdLB@A}$3s_QGeyn?YJy0^N5T69DrL;yRM!e*vVIEIu6!;p_v`__?f zjv;zRz-YQeR;{ePQ8?(vlg*=~b+8}=?SS#Pc1X;^J2oeEP~)hO;fRoU3M#~MwxXr< zRYq}Sr{jrv_wKH@JJSy^gaN>?3+#>36qB_){(y(xY{Y55Ho<4zh5;DNL%~`co>X`C zyPL39;kT1`OmK(5O~oL#z!Z4(QNImEDKTzCZs#YNDg4d2b}5x6x80VE;afEH7z#H)1u_p3yUpQtT`iH< zvW?#8Qm__lE$-X*M3oH4aL++XtDG%2XI((1|A!Npq?z>+htgPHXm$7TudEMJeu00s zUtq#^Wlo?K4OKXV%`R*>ru&T8TeYPHc$5?tozdW;_6QBHls~vys_qCY+ovQ8Z)zEc zh`vt=C5Hyg;_V0Z?yYOF)YBg{^1soOYHMMkHs6_4J)~7Xea4=#Ji-^M4ICb*H7bL* zjv`6L*@bK>3D<^e9W4%lt@z&dz#|J{Hs_Vd#+i66Wu`1@$j_F}kt1^fz@{Y(gzI=H ziJ(r&qj-n9>8#I_Tb$+)+L@(d`JtqkcGf$!!>HEBO#49y}8@|rqD`Z>p|%-^fl zRM#GvMwa}HFMM!u347{Y#ke~Wjqg8Md5ZI6^WK^gi!09<`wvUSa)2EjnQai{oeWDA z_N^gUX1lpAri$ zgHk#jdt)Ql)dfLvKW+j0#=yBWMu)pJ>oLOj4|&d%OuGVH(`bLjcaY&wIuX{m<4vTT zm@@%&_vgokF!kEGgOO3)rJ45}6#1_w9EGkQaK5PcOl(b&b34XKd*3%es_{PrRl-&R zuqf71Ia`oop_{JxH)ah}<2M z!_@>{!xkco5Rx-51}4hDwT&2nd5bVpgt>BhZlY61lpcq)DLGdg#&ZiB;|L!ihh-Sc zX$%PLOEBOBkAbBOzME^nK?X?Zp7tgEGz-reVn`4~rId;_q3QSo)Q=DiKomONhK~qGnW@dt+$z;HL8Nhv`+fVwV%Eb*V0Dy2QCrb3o+#o8Btibj@V$Z` zpal5hAr=rNcVZAY78+nsccY_wu4w`^x;PFLkqHN|5igD^Vuncz_#VB4kq^lc&HVyG zd2F_EkPv{_tTCj3#0Ka5G7m%~SsWP6)A8>c0NrviG!Zo~gj!{U3gam6n8d0PLW3ny zMF<&MRq7asATS+=RV4v>d(ecHSvOhOUOjbbG!ATOUtDDr+an`!z?5itLTwZl)Zs5j?6P>3G6X=>Ac5-}mV;)OKiXhyvr8vd)p^#o_c&Irw>@|5Q<$7QzMmQe z{&5^l_*7jcRTnQ+CqY|gvCh;Rs9&$%Ra=pD<49TtpiDz3dPrI_>~&38!Bmxoq+3+c zwgOwh@`#y7e!8Yd>WKDJm<3dcro%4k324~Tk<(5&SJPm!_buUMGX(=&mt03uRhi(B z0%3kY!IaG2j6BMG_uymJ`n@&GoJnr5{DRg2lt3meE8x=nxb~axFoQ~+p$rwWytLAd zJ7aB=2p7eWL3A-ZR_Wl<8SG27G=K)JDM%5Ng)ru(DNFB;dbwQr=vW+t*S=jlZcXNw z7Zw!Z{7Cja5)lyC_gI>2Ot$$=6a<->0G1KyY?RU|)30J0zZRm#oN{ho4r0E6v^*2d zi;(8^Q3_0wIwI=6(50NIJX?Fm)xvW@W@?3G%uRpxE2zn9=;YhS`sw7<1j4@LFFC0B z7JSV)F&uYWtDj6{+j@NtzwLUy27^9;If!Xr_iD4-D=0933y_>Ofqelo19d}s+ZHPT zg$vvwU@*Z4fqF_1o~e`dY*A1T{d)v9%y zgL9Z5V_?7TAZRkvNDRYt97*7w14lU8Y;3Nr4arlkb%q1y$D(n}rSw-^8FPcdfa4CR zZHt;21P3BigFVv^y6w`LJr7_v_CXtu)Dqe#rC;jbqSnN`7S#>VI88d&Z4W5>K=VI% zXo_2$*#l7Gq2OmYw2O2ol0&BF1pZ&Hd5I^#_8CNAQ;wG6wj5%wxW3+&B^6H{`6f4RQEd_=--y@w)jeyHC()oWq>*Al(%v zxX_bFwd>u;L|C*yvb&W2FAf#w5Vu}iXkbqT{6@_IW#v`aQG5rvU@zD`q{dcp!`zK; zo9AoL;CQ~k_)DP#o{@2tQe$%F{m#Zgiu;?&w%ZMi3oCbDjA1C%yN1+NskIfyWok>$P>SJCxa>jfCd2;DEtc$Rj@}kkNu# zF9>}#Ga@)BX6Eh3ybFg!Y?g+d&efEp5ht}UALJc;vPDG{>{09!8jqSsAkV$aIN^hE z2>wyt%gJ-+Ex=aw=%cu7C5BZBh7={%gto9o16rt*{zJzj=URP0mEPVvx@`-%J<^(3 z29CK_zrk%QrMDO};CT1rMETkF3B;E0{3@^#lPN>mWQXstc%2~KMzzMO0)F{T4ohjfEd%udtspEg2Yv?bt`OVvls> zN*gn|P(mFXBQLCIDg9Ox4+4WbDu+-~oU1KnoO!{x)&d{Z^P4>k5A7)s`1RP%J9Htr zye40Cltn5n`;A2rc7L0em=XJK?~%{V1y?nE>>!pl5WqizQ{Ypa9l zgA3_K^EcKBUGX%D*`FO-W{OIwtw-6c%Qv#d(%%t8JLun1ELlWKuNg*g#TyOxU{j7G zwU_5_97pPZ#z1-s9O*@e>8wx9v=FCA7C5SWs7zR~gLu~b*z^2(We%W}GQsoF?a zRB1FDIKhGwMifoau7&9+L)bN=Z_LZ3XB~a_bd9i~Qu@EUViqaiGnd91Oks31!xjF( zHM_}z_)RNYCoPYv-@J#GAu;q}N&idNso6cvrE`@IGQ&V>hpc9E%ZtlAq4!AbD3IC? zeh^I$Ds(4b;O!}rW(*k z4Ax8sg)pJZHyd_v;&BO^Yyuu40l?fr!dW@c2W>elaF=N&_ijMUl+u6Uu;3s%g6Nbw zvLzLQG*bZf!^=>jN4Ls?I>1NM5P>c&mAyu`!a8 zOMkc&CNS8C??`Gh;nRF~Mx5}b=3uvkMETAq;{L2+PA zDSaxGueXoNx|BRV(yY8Gr58gPQFY?R_@b14GL$eL7#DKyO6e1d|D&2$3`NpOngH(M$fI@#XGO z@LUfG#NDq3kW$_L<-B<_DxBIg*7pd z!DDX}$ovd|g1&CK914EUDGIT;%_-)|BQVfywOX>5b zg>XNiKYF#3J+72z=4>ZE=^>5akgRW++bV;!yl>E!f78Ld&^(=6I$7FxSxQk1*(p0` z7L|G#N9z*hDIE$AFiC^LrS#ug2l=I$Z66^H%S;xzz7DXQ^UgC}$ry{@eb#BpJI}J> zw5#~MrW4G!t|GKoX+tK2Zx=Eh9|6Whbz;OYSI|-uSqKL~CfW>)ZVqN#KemYPrPQEt zR}Ao2EdnTv(@9(aw&}u~u2IQk@?0cJNpU@AjuXmg2~=seM=yhW4c0X}sy+kf=Kftr zD3!M9I9`Etf?}=q`i3HLFu`y(L&r!pi_En;%7nIAB4x-^%!#2_h)xlh(P!nAVFXmV9pGGf&~QD#pAN8 zd94Z3{S$4(G-oqGBICmKBJ5ixqu6^T#RBaFIIkB>rT;;})bmM$!}UU2~x>1#mb;2b&jy2c0|hPn6P)HnPoY&T=%#maRoIlg9dZNJ4G; z*#J}F0>c$jZ0E{#Hr$)Y!kQSYIHZU^2Q{8>1w&rV5j@6Vi~npbi^pv=Xx|70>xS^H z2I0naL1?H#7Py5@9T)X<+c^UP=%Qd0K-ZRJ?#klvpE>thv*Bdhy-t<(IyFK|;Dz$J zCdH?(wulFHZ-Nxn7gE~?=x5dpBQ`hR6E^;RQ&HVg8ge*c8=E&mN*?20>4b6YQwu=H zTnl3FMG(-Ph;r34d6E}7u>aQ;h=7BVWm_w%*$)>%hb+mPk`cMRgWJL*f^0t7c+)iT z7yh8AK>#r#3711o0r%wu?sv*}4W3(=L6lj>q14PP!Q#_(6IFE5(mP#9frA4hVBaqb2LHT$?m&5vnsR(fxu zOB$~62kc}Z@>er~vcZMB(t?Q~zVZRh&yx^XaO4CE1e=8HSm@^SCmcaW}JJ9HP0VnJ9QYCQ2=C_F2$MBoCZ zl};!6kReby9%R(r9ZMtFwM4UHal-0+pJM7;r&?YvP!!aoGIJd2WT<;t?sF5ka!0wb z&rz+Pu6OR2T-vJYMQq73Nk2Lq`)}X8Y~{ zv%G_qv13wL{4yJu?4cA3tq4`WWlIO$&B3wR- z^WjDhoc*V9kqdU>td>syy0&3{$K+F_JDSz4$)!}n%pecde23W>coz|5b|Jz}u2@WNfUZa5 z|Jsc<*6;=zEtCfFMHLM!e;(Z=P2MVXhd4qkpt>`ye<&(hhlwk1moVbIIWuA&iIGsS zaqE_!!;Br;DvY3W7=N`9;^{fy*VzZ2^75EO9s($g*iLGI%@Qf#w2OF@dU&30Q09<# z=aLCbv%+Em6LW;+8?ya7gG)DOp+?x5nfZk#Xe-~R1N2wj>;;R=aF?Of9HC+_THZty ziZj(Ro!nPf^(_9_)jNU$jd)?9V=I$xcaI=hnhrvXVa1m813ZPd7Bbi3Cw*fDbNs~A zZg-C5db?iF4vl%-(e+_cDV6RVevo(7wp=14m6@U9dLdnpzw(^j;A8&pdwc14QxX{M zRXml?Zr@cRSGfj88Mm94{Uj}3eJ%|IU2YJCNSZPc5vpFJ8b~TC}ZY@T9pl%;A0W*LPu;0G9y5$sd+aWMv>yH*s&uD=lBw`m1*A&;R zYs9W;@1d_tsdzcg7&!z*NQGdm|2U2o^vbtgH@4Tq;*#tg=XOHth}>Q}I=UVk8TI#}`>g^-TE>V>X z(yuOnGL)@=UR>Ma^AcLa&7XLkEvKZ%&%W{EGD5D|MO|EQ8^;@AMtX?GFJz7qL%1uE zbHLSbN3DYsC5M`=DU2FsB_P#Qu24-I5C5L zAseh~kKKqh2yaj%Ks;jHG00q?#8Ql=sT+c({&*q_C=Gc6HczX9MkYtvJX>Fq0A%&x z%3I}7@d$8+*fA>RTarRUOg$KnxDLe(3`TC+M0Ar9gntvUFYqsP3W}qnTG-T(Kw&B) zQAJi8Hy#5c{7zqxR0hET*{^G^l+9+)Gkh@e;Q~Pu^ z8{O>bnw6U_$RPr_LYX_zyowl(EPyMsfp0S-eD4F^wrSYfD3adcbW!lUU=?5>kQzBB znT$FLisxd8B*szlgX}M_*KO0!5|tKC_glL#=Qh zEoj$?>Pq`WD>>Mh!}Xx>L>+T`cC}`R^|s++OAr@4Yt%2VOGIwZ7R90VZ5oZqJg3D- z&zXLizktxgn%8mR%=sz!5zwW$6(gaZ;%t8xU^wP)5i#A3$Ai*N8k{lH`HI@h542!a z1+4K9q9^5IYc(#cC!DD^i8~vu$`2n1$&5RV=%>5KsFT#&hQpG&rt_wj?sS$^|9-8PpwS{7YM2&PIBl<=IC69sV zGtZbrN+n8?gdI+!a(qj~@DzZ&E=D`>BVR=);5y>nb~N%SiGyjBH5bK53N@YJ2>A1> z8G?A)UllCW78MeL9Emy^=~WaSP?}}dBVC_Z`u0;U+EuG|PL|7INvYdeVU~6jf_%2@ zQRKN7N~&QqVN0aZTNxkiAu2lyF}Zq4wVx>MtJ~XCLm{68SP4o>BbxiC93ufND&&-F z3258KqPvT_P73*b#__w7@%!zJSQjijiZw=6%qJ93H4g2eLuXKc8;WJ9S*G>nUP-lV zyjN5#*QNS!<+FQqId92T=}?xoQcA`2ubSYfL#!<0cAC3f#$X-o1sHfpDlZivDVUEP z;1wmWr3oU%Kz!Y4voV@n!fb#+OKVyhCBaG-enO}tg)chFw(Re#rNoxTf}l4w$2H+H z!gu9vj)0Sie>+qE+Q~+aC?!Zro=)X?-3OVs-Z0@4!(;NN82KTn!H*LHI`Cp8Y&cxt zS{85YqnMr8A0xsXBCWyA^3qyForuO=8B|gdvN{>c;gV5kJR+5x?Y#_78_2>FlOetw zHX|Aa1u2mRDSS47i(k)6C3F23IZIV>9E`2VTl`c6oP;itA*~@L0YIt zqeJll?%|)=i8Wb}lAV0A{R^T41hZvF>XKj|3`+oL*%>aXLYQ9??@}A)srt zBcNlE4%;HFAc5ZD4yBAHS{FU^&&3+`tK0J*kmAq{T(UrPDJ=&?DS|Kui2LBBaxUY! zEoND}!V+GwY|W!g!OW4$4aHugIkh}@<}RY}w@h=!BH=m~D%QoTRu5MXKh)>TvxrIT z9A9Q=mqTxC3{;m@BdMWXPPU~|-{^OU`?d7vXQD({+*oQB9-vM(VZ;$D$$!d{1<*|0 z2kb*sAbiA|5kAY+C0bcNA?ZDWh;~OQWXM+Jq86DfO4U;OK%cpCQ+@}I=Jw)4N;j`O zjiGyK-Prk)abptXFA*dUn2P-D{TWQGfKp=C3e~&w>lsqLp)30@rd3qDNH6r5aY%e? z9*Mmc!Yg%*%7g7i1BS(0OniCJGeeb(siy1RZLGK@{ze zk}ga#Y#hNGxQz1=j;^D2qR?`r0cMko_}_25&9@~0bTu0_|T}kSyR=jbL&BmeQ}f$%eFQ!1*DG2y$_8(t`xl z%Hg!Am5}wU=v^9ktMmz8M+GWZ7ol2{^KdI3*j ze6F$oBmi@Mm|Z0Ly(YNVK2_f<8tw$SE;-=LNYoG78_^mWb|Dd;*_QmOa7#be6u5wv zkER4Vyl>w3iGpzv^3q&K3(ZO<=*4ZkxYR<10b#<$`!~{_Md_8&T^@NBc6U_R1oL!d z_YSjwgh;|3xO-_)XRY5j%<1q4N8DdCxnSXu{qYr1h~HrI#%36WH5T5O?+x)s<9RKZIx0V zioI6Sf!t?&nj;D#saTHSY?=1&A+rIbEw^SD+5gh9vcg#8U0GL8`3 z;2|HkAsZP)=~9lm)h`CbphJ!|?}5i1&tPtV>z+i*((ep)Q5*^nf9vpY!rRV7^*jeF zDx3@8q%OaJ^Z!U`=1$R%GnMNi0@-oSIT_vNl5G@gA=$INLA#7ncgAVE;*M40K~}No ztfSX1|HR@{v)?TnZtE*f(=KKfk)kY*rf%DL zG1Jov5=*WD#kS0y95$HljFW3LGnQ%QpSi&V>p7mwHJTbNMojV2>V+6Ry;w?ZK!te# z`;oGvWOqjNe|7^}D9HBLx0OsPI9r@ZXWkKhaPIn5{ zGCJ0gX-+a5@p99wI`4*KM>^~6Lv^O}=vB@REf(7KW`sDSAh;jq-2v5g%=uUbPc~^q z`3C#)pKY48%8k^cLt$h#nW_t-xeNP^$gD!!0ojaV_TGs(v-`sK8UIJ`(fZLdNRxZhM zDy8P?>QbJ1QLMU`f_KMBeugF&XQX!=0ixedkKCy1SfeX6L)M!p^c8F-Lz6SZV%)+t z^?$l`a-*+hjUdt;yi$6}byavrD_mdLGYyxbikpK6{;uJQR=G*lZ8Q0+ES;-A*J9Td ztrF=Rz;MokYr2~?2E*q`uz25Gi(PlK#+6OH82{-#o8}J2ImYX`Ww-kRRUwz)^uJN} zvbtt{0!&>(Awd~TfN<@IhCi2avgr{$A%?%13f|~^z>CE>Am!_%< z+DR$(IaTDkEV#3fp{omL*nY}m8?Rg{{eW6Dj>I3$v$dlb;GK$iymNB%jUTW%Y1NR6 zxpAU7RfjGqb9Zl(=b_q}-i+bwfI?CDx{6AqBfRhA(Z>K){s!9ig?%IsS@ z-NaF3oCm|@hVmcJIiqg9u}Lx-@^%ur{#ToqK{6KIuY}M6;?%44Dj^Plb+nqtBvPw4 znXq7}Yd#%n@)N_dN<>gp7$uXLlcnW0F8ZXK2<6_rytpJMLo#KckG;#(1EmG#aU)IK z?=o9~2yy%hn5jB43Nr{w02;GvT7r4?+)mdw+hK(Vx7KPkTXbF(5Ho7yLsxB(xqg}H z0Zjq?A*B^QBFxvVDP)D<$)uw=H-P!J%za%wGJ^!~LK0}0Ng}NUTp`INNSrw)7MB>G z-i@y*S;rZ4MFuZ?Z{LWTESfP%c^>^ajp7Be(K028Dfu^I~M1hG}>Wxjxeg?exyDEfhrfTz6kjBHB^W7qXXaU*olT3%u-2Ts;4Hz3Zco89G1-4rgog3VZ!)?mIooKSYuFtb_aBky7bgZ}U3S$O>stq2J{*?D3Hq*j z+luQMNRlR|(R7>0gbsOSa5tsEx;!f*6O9p9C5Lli&_AiuNo6XBH9vH$Zt%_yu37+V zxRCyY8lmHobM#geEN*PSHmPL%TFlzZ# zO26Oq7SzPickzx@d9V&gW~avw;v|dnfJpktyX)=F^g%n^bwQMz1zh*$-vb0lHBHqe zu)v}^)NHvy-NysQWuA}YaImZ*a9wJTWY0m|EtQPGhvvX=EZBYbM4w>c%I$IR{rEH} zdh%I6l+tM%TdVf&KQCiD-!wMmT#9q>0Sp1CRmp zn7I18wbBQDNUuCyE;>qTdgUVg4vXUaZQhB zCKYd_IkGgby~fReMqPz1iIl_(k>(5nLluu3y|q)iMv?5m9l6BqniO}9E0Gu|9uh-{ zG>{EDiyOlsN$)mYAL`+^a(Gq4thlzHpy`9Ogq&&!g%}KnUO27AjN7oQJ1bb#3tYIc zGlmnu<{jV2u2q|Y($k*DWQWyMu&A?}9yWhCpP8AxftI9;zYzvQGC{;@4+daoSVc2P zJlnjt*2Wc*?fNXTVs>ymCu{;~ZqtZ6=67q{zK-3*)9YsRXna1~Z4@@7P1VS_Ov?5YMcq`MmWRf%6p?apmZ0gjx5cjDZ+V+r?qF%VEPeXq%SWmz_Lj_FAK zD9H#1M3oZi9UDd6b`6md3{>9_F62_OP+OD|*7gPE_DPYLiF6u_Bgd2Q##QxGmz5h3 zcP2Elohy^4Vs8MurDQS!E*b3MtJqr~9@zzUEuLae)rjV3R@j=Bq6X}22R z(Au@?FeKNcVayX3?w)D1c{s#K^pLPsQ8xJ~)9?~1p|K7&5`f84in=|tC=%1yAS#WO zmtXo)cscDxZ!YxO0ItY>`M|Ly*R2g$goZP9ka1`k-igAHtC92>XBSD@?-LlBXD%}F zZpY#i`BF+2?(4JhR|l8lP;nza*;Opl3ii6(PL<5P-U;qwP%_FF5$bnF-D za=T`pl@*PEwsPwca0qrPr1<61KEml;BpAKh>{ z^dXP}(p_>Bl@}0u;8B5#o!^uhm3$jDl^*5BqUUXcVPC_qa@gM%35y)Uw^4pN9DmDN z&U; zJB^Xabr)Z!p2M=7=X2ftxa+PZw^(R@?$d9$Pgs(Tj&9<1Z>~=>X&875bhw6G0tM?A z`Zl}|P(IWHNw+nDOBs`CEk!r8H?gW~=jUp&hcl_J`-8f7fpdY-bl@bxb>vRb8Ds)R z;Tfbe*n7DJn3@;^WZk00Mhk@*OC8_IQUj*EeY^!1FmGY@J-d9f?4d{cX&tV*eoN^; zcZf6wl=m*J!69~Kc0TfVR!lnHo;M|&mA1!LQLVvgqV98_xW0i;lk98sKRT+*m`#UEAEs=>Xp_6?F7yQ-g$_mwrJ2M_I%iOYKR-@QxcaLM? z(Xk_UfVE66?-kW(p4m2+uuVi!8D)DcIW|zqh$#y1ASi3MAJ>YWh5zMN>$Xz5+a}SE zJ%a`z%vZwLbC4sA)gL<2j{tuOpw0D*TR(omDL&%LxmR}69noUL7&GLz-y-L@(?Z=P zf4?*c_fuDqwl7<$u8j<%`-0&>SlfQwuB0-!P#X&-A$-!`Y2?q`gd(na2NI$eL#gS* z*xx)|Ydr+xHZ*-9v7j5U1?$l1@oTMi+_|K@(~U*V;&`e17MV*(uamN*#|U{*W19Iv z6j(LB%@9$m-8Ib=5!$@ut8it4X`M+S;4g%*t#RpG6u3B=(*rlyaJTnO(9hOGNRqcX zBqX6t?NrRod0rLg`^7{=$Zs|g)6y6WmeKyVP{Fr|o&q>Vp@M>S%9QOID(WQtUB+La z1u&HJ2zH#Wr-iPA^S*(n!EA6qo|(A@0HDHw=w+ODD(~6jK4YH|Fy8EsXkG zfJ+sWho*5?lC|wsI=+t`%dP+wJM_Usq1s7?<+%)ou5smViV(6Y$HAapyfGf2a{GaK zW-i)%O>yiFe)Xnke;r}Cib-fO;;aR%dwpQ+aOW_3L*a!Zq3}%QCBn+u;CNq#r_2Z) zqHU;w9n<2v*gS5>>|+25e+cW()Ziju@(gATg4o{odbeD^AIqwqs*GUKjHI@Er+RXB zS_LymGM3kqhbm6!;=?1%bacrzkHy4BEt=ZZhY?sx|FJ6)X~eGRaHdnyo_+gK=~DWA zwx8u-^^S!e{>&0EScaa#J80rSV7%f@$_Tu1am@@u7M;A=Sm6F{qXQ2kBD*ZFy2N-f zq6EkEaHkA&T%$qw$#c_E*+*cSHH1q#@}3R`=Dy0t@*&zN??l-M5_8Lkw;yjnz zlbCJZF>X5N2`hxmSqqHkOI(Sz?WQ68K_)ua!X|hcx?067V&iRb#TtR$T$w|R{E^Dp zT32Bdb1`@1DD+yn*mHxCUm<(!C&ZTuU7UZMl5qX5VMW0^aIj>XgXhI{C;ph_Rtw~3 zZST!Pmx=jHrcnj4L@_vMF57<8dah>#;y)X$}0 zd2vN(VYxwDbCHP|HK~(t5i5f>>RcVI>ofSq5pgwg`s<7vMz8o6OL*4B2XC=65tw1U zY^^N;dYI_bn-XlGz)^X&R>O*58{Cq`62s-Mu5YSAa>aG}dyX#};R@sKPKw%pcVlN? z<25G>{(WJOM*sc%*|^bpa8VaqrK0j3fMfTJpPPRDjBd{yl(igeqTvk$r;0|$Dg5Dc zw?tIl57N#KMXPJ)=N;aZa0VL4j*Q3F?xocDSC_m~+X3C-!L{sFS2gYCBHxv(MCBD9 zVY##*%=Gw!46BrW`v)ADnfKbu1t+h9OWwWEh#K${St|AR0f}C=ynpht015}n!k|&*VJUS`JC<~x9+}Y-G>Wf$MTTp1U0JMGqvebGm|%pQ zdwi1_bqyqx)KzKTYAY$Y!)SZM-R z>Xr`K7NSY*4B@SzWbV{$Q?~+4hqIOjS_3;XsTX`Y4>=DNEk(KNL|KHIe)0^w3iZj- z*JQ)~cVH?Uth_cR3I#)(3JQKH#R&;L))*<3`F$*;I+x2&^nMc?r~Q)XS3)N=W!jN# zA!3%NXNITO*Z_02GJ9ZLKT*FJwA07rN)&v|0D{lq6v>Dvu5_+gnUt4|s9zN&?X3<$ zF8|4PhB?fZiH8$4!?EL>5R>~wpeAx^s2OKbD$Vf`! zt1(7WA@eg)j^TbYeDS{M?=~%@xs0`FT2!%;t5;6SCK|#;HSkibi32nh5G96Kb=4CX zr^Y+NMEjP_N=JHuXU*V^47qr}b*_{i^sy9(P<5fF_tuc|0p1O)A^#3N>6Z2s{kQJY zsr!#mt)&h_MY}n#3M|jjG-~kq@-QcM?-H0a^KzvB9M7Uxl34^2K?9n_mcv}L%Gf+m zSp~;rsyeWl5d>c4VDWSq0~JhX6XQxv>tbRVZNkL3qe>feKYe6J#z}4s)Z6#T25Ok> zY+UaQ_e(uhgX!pjm{R%~N0d&^cKK0tj-im2QXl(prU|Q~fSllk1C4+{D_9&PUJ&Ip zgC_CXkqr*sI;zR&@MKr4)Prt>rYfa$*$6u_GUjqNQ@PPT2TH))D@A}>jHhts>2IIw zz{su4!d)l!H7za}Mx-le5jl&e?ax$z?p-%tK8L7b9*9%@hvU`ZwTr}mo9m~m9nvfZ z2pfhCxu#^uLdLj^&UW1T=pvQifG{d@JB%DxgJV?rjiArgS-K!({QPL>;mzng;R|a= zCP~*CBDA=`5Sq9pNv3L*7M2o@u*}IB+2ti3(3!=_7Y3(mNHMEd936Vj(LtPRX=tv) zkXEA%#ngzt#J_IjDHbs92jU9^MfqV#{A*sJVxc_ghZ(|GjfX=|A?1!E#dR&(Om>-H za7)HDj9S2P2ItJkWMoC4GfGiv2mBj&tT_W|3~MxkM@&CV@5p#& zEL9ktO|~xj*3MXKTfDTwYFX}_XzG$OSTROq?K+LkMu|IC4jk#!)?vXsb|d?o9QB-Q zHF3fj=+wn(M?oWuJDDXsSm(*WDIp)S3mD4Wr3T>=->etuxvHqzC7YofJ;J-x!f=+{ zKUt$?8EW6=O6hafM)vTqc`>5?bgHt=`C~$2$G2)t;o6BFrIZh67LGOBG=G> zrR&Nry01*5Rdn9P?M*r~_@iykpotS77#O$N`6yyA!V5n6>NF%c>IeyfDW=k|ROKd} zsAjTnA9A@^N7UP*k7zdfmF(H$u9yQxM~3f}Nu=n~p4@d zqK~17%n&-s-CrM7#y}K-R$8}Wa|kq|2s>Z0#H|i=uZRj3V4K*yBTG9^c^2WrqlvsD-@KtToM6*f_-$eluZ(tg$=4Nk&1 zrt>g^2e4g&v@Al;M5=p-BKj_#c#htxQU7$BtJaMy@1bc=E3iqsKMM(vWY9PX4&Cw> zo5TSd0|Fl%iD9|4&m`}9S3K!*?To8&P50Od5HebJWStiEqPljkJL-fGbdYjp9&X6M z9MCjcHa-!3aHIDlProEYOy7y-n;MAyZ51^$T{X6+tP|pW?vYjkJDi7MM12;{5rxSQ zq}uGx7>@tkI1+L3T?;D2tNyQ69~b0aqhQTQ|EN9M=7=M2 zbSSLpubmx?mNM;a{s9jl_otZAMx)wfY!@7(_h)`pj4-E|-CC}L2Cqeq31zHk8V9w` zDMyxUUp2U)a0?*KTgY}XoDz7Cs<@U(nAW^IV6UQjC{`RC3y7G4h#vAZ*WFZLBqCu1 zHn5ba3Q8NA@Iirh@>#G(-sW&?Ow`I72c6dDe04A5(6+yUQpMDozWN-3Us9%g@)0YKOm#H;oze0%Djd40)~Tr zq>IuwuVXqv3hACaAw0WLFif1h-k59`wa5m7Z1S0OEbtI>cBVo#qGConX6iA=WT-#j z$}GMATREewm^Jo6wq^D~JR{d-+*!F3U6Yqq23yG)mD{#wPFGs9mD4pB(LGQ@qgyl9 zz`wRZQfT2O*K1_%J2Q;*t9=?>i;wOsrN3^~3$8uC7B24+KsginpAORcT2SI##Z_yk zhcncLzgQd$@1Y4khryy(c4fR#zhWJ_t-K>mIP++}9fh!=&vNaSF=pRF^M2g*SM@n{Und>HS9p`9Gbdya?ZU%(gijS-C^tdh_ZrxL3s_&MsBlc zT;9V8ign{Wgz_fqG&EHMmc|k6|c>7&NOKdzONKgS~Ztjyr?=b80faDn<2d&RWnJ? zDmxdmNPi0HiO_0ld37WUPL`LdNGzdx7#)}RRY7AR;c;8qSMFs6uvegoWMp#_ng5$X zf0^-xw5Et`dsj-oW}CORbp}r6@Zxyx%*Yw|O8^=@Bs*dL*E?nIC68_$16Q|n5?pyS)L;QS!q>0v)?8hmPP;v|(tt+`nm$0!?GCD@6-H|v*4xLm=dKzX z97x=vp|X6WiO92ht%Xx=?hER+kg9i1@2SjnxB)u0`_|opIqlg3kLz~dxiEwJ`lY+J zzjrJP7zV8hnVT*i831*JIUCz8o7y}$f-hkg$&Hlsz+;-ZZ#E2m=Gn~rXMvI*UD(RS z!=m)f)g%bw)Yz`wTX${Uv32bBt-Hr|?iky4`}U7>Az|aa=-WkI%lj#>YOSIYKYmmk zmPMaF?&!7X+fN-9Be1j5qvM}Aaxe7fk{#SGspD)D5@X^RScOn7q9mrr=sUG(+i zj>i{$`*Ee7qEDaj5~JwrkE>)U`t-5#LcP{FwS8=K_t>`WySClFd)w&f?K^JYxz(L^ zmG5Gti?I*e5UT_lC9Hj86ympxxoI8iTdDnx_&(#rh%0*R%RRgHs&eLcV z4cpzO1F^#S7NYZm?B8ZE4oc}Qe(To{ZXI^U=nl2fT@_P1+}ebGf{cMLpF?iAkIz5I4J;*>!QI2?__8DNI~@9vH!ae`*O6rsVw1N7JS z@jTIT&V&bDKr$IGHz4}LFSr7-Vg=kX`vN7ntrn`Fgcm2`-3*_^T?YO#?X1LPoY!k` zZxWs25RV;ZBL(SEQ&_^_=3-Kc{yU`4*py_qvyc*-M|tWN)zPZeSGF3rNBNZfD&AOK zuT+48lt7%Y9^n$xT%0YIKP$AM8Rc0$aL6!DoaaqUpkcC&7f{I;Yu73HDy0w`Xg@p2H6!RHM~29&-na9_!RGAGRnWar;p z5L|F0R>T&l+x+CZfLUPr7iK7%`qoe4HujVm-~ta zCBiV%kUB2xG&A*3U*oB_Y9n02{&+8m~mYKANbF?8iE1g z_lL@Y7+#GNtqnz9xEzm@j0Q?fJFqJ$4dcI%I>#&1xBbqW(WDekE6>KwV zN?Vug0#GAQBT7*Y%CLb&;2&_|_`bG}O?$%!gn+|A+M~sJU26 z2Io>BI38F-n@YnW07Devu}teJzQS&;kIy-$zAxj28*VCRyiQ?psxDR2EO2P_>G~NVN}j!s*-Y< zSAvD~fSpp*)p?ARQ>)T~AAFJCT}O5SRKbmR2z3o)c!o#IbREV-h8{5gh^~ch~rq*nFeF51Od1g2Kj4pBPUN>-KdAEZYV&BzK%C@mp+JtZoKPIV3^Kq!M{c z&t>&wDc$w{Hg;sOiX=f8?t$#cItS}b_T0sRW}CLv>>6|p%j~JHMFU!p4h2e)k2T^- z_qeDLkATvMQKY26i6bn7 zqqWlz!F;WY8tMjQkYm*@{LDrl!T*w@7(vm1Q?Y}IOt#YE=TWK^7y(4TeFY}_&ji)+ znXMqT2z;53Q8ww8v^HvO`nWaLCAu=xZKeENqZGP`n}12?+h0zuiVfEC)biY!6FAo; z2~K)l2PK+rrL6*0{X^k?hC!}yl3@xBYRCTi9~vz19IG_*KxH^jo^1&*5nI!Ef8*;2 zh^NVt?*_e;Ou*&7$vqzR`SL8O8WBbfed>8R!-bd{90A$9GRFR(6J{X2XkN)3lt=lo zXW0i*$T4H~37in6|808410os_$)bxTS+~6i+3Mt3jcPABB1T~oQfN<4lPH75moTnO zUj{&?BYPR?NccVznkc2eo0)Ns5t)koy%YKA3R5+W!`$HXaORm<_bu7cLXsDv$joAg zWP)UHT2i>9%(O!;RzMmgS626lPf+Vd9Mz+|55n!i$>f_Z;&VF?XR z+=&7`UDA&SV#_XT5B_zoVw~_M*W&x*Z4qhp0}|oy$>($hOOp*gCa8nZo+TBRIaOL7>mfu~D}=Rx91t7U><{zeCCE|DRBM(mjDIo^wfed`!>93bVo6I2(_=7 zx8juXitOyl`O+2OMSF{-Em7lMW4@$DhO0WzS;ax7C}2rNtG;$f*B`Q};1dr0TPIJt zT>+U}0sPgmYia7SxZ*-zFo6|+$SH;|jjYD4%5;DtJ!014Gr|vI2&g*iIE_ui$-It@ zGBZjB^2N$$^r5cQvQA0t?;00>xVYL-ZoRHHN-+@^-fK&D8@;p@vF_FXMK>`*uSMno za`De*y>IXytM?6`2l2c~;{!O|;^zK5INW~DEeG%#DC}YW`Z$2!Z4@r^&_*@6=PsyZ z5sTp$GEDH*9vo&6mNFJx+F%f|(iZcJ$Sq~mN!ea+(ikbKTW5YHx7MrHv z+W*3hN+!@qE&4oxco|AiYh>2{kBXI+VRS$sA9=fOSY9eD9IuVhr=wrI776vxUW zjE_?BzF)!_z`CMhU?1M~fwIstqK~h5AEJyX!vQl~%@kPgz1i>d zG)hN#&vIs-X7=1~J57=4sWl}eZ5fd>^6p6BU8jWO~wzl3_@bzvjPD3U-#R%h(tIfqKu?Gon^=x(?C zKt;PBQsF48U=&ig)Xw0c9G%`e}Y?7I*zyi)wmz&B=XEuS+=X>^uM z`hV%JXSzVkw5&q}hCgYty3*NW*&Uy;@cgB_{f5>j)pRMHyD!2wo z6}bt~fNEDGVZ3XItu)KdzvF`uyD>)T-O6~#`nvIAEzkYfpKs4S&)GrxN)-0gFXs<_Nc~|uEAeVafUu@SlWteVQla^ z{q=w=c=NgFqplpOW-!Ad5q5++Q=eVjnGq5vCcbbXZYUaN9jx2eta$5ZmG$y7qh_~i z0iXD~oy|QYKQ3u8E*1~lOr7HhfL4|Cj#{JEs_-nx9#Jx1IoJr0$vj;za-y3ei!c&L z13ds=;Ui*vYKP)hrUCd|naR8Iunl(ng)>cD2`=#{X*nW-k{;4u& z)a^nB+&7~Hq+~A$tpOa7(RaSLNMD**yfNKfo_rM~SU|k{oam9kLeu*wXxHlpyaUh}DCvG2c&)kn$ zD{j9lu-*ai@`loDa9&-)CM?v1D^1@B!xh26oxg87N*yeAnFg@mWW0``J$qZI8h3HOA@Ih$aB- z0?LgQaZY|O-i;Rnmv_dZWy41LLRM?uaAAAMz_(U@2qz_@b9UE;oMf;l@0TaO_FGN2 z$Omj{rYju)5lI16fu{(aY2huT7Mv&S{i0$!Cd9Od@C^qX$#&y|@7Ol6zmD^=z zDRU%?E@W{LE-o?##o=9u*?U<-TybT?`a)d0#C5k5jYWDys@idk^)x8j15 z3a-k9&lOrMPK0&`a~Y9f1`P&0Mln4eMCn_Dvs@gTRnW+>tdR5HJQGxsviIbF8V#52 zAkzw%gRz;tAqLC0sQbUZzA=@Il^5vRf@Nj0{OK538MqFPTE9Hw)}8c<6DMBT@{EhC zxQiSD`|Iw_v*I*Oc^s>h&Y64g8iI3QGM)fTPY2+&8^wu6m14GrAf+M_mNyzh?3qYd z_tz1tyZ!w|>_&xhF0}Q66PyezlLA}(L}49G8_U$;6bUjb4wBD}9>WVEWQv1W%*f#c zm_Q)s!y?ZC08d9sNJ!sUI%j4dF@w6W?XgZqGf9FUx>vQ(1p^i=$mkI;Z zL-VU9$p;-%%1aj~{UL0#ZsdGf9RHe|pUkIB=ws-?PB)ZQDnN9X*+B9YkO(MykB}R?2_=uByX4o1=R)S5&o3fd|{-y<8C?p{= z&emim{NJ7Nk<KfoE)a&F%z62MV=v&(rBnf#0^O7a27(RL;gAV*4J68JOBnS=kh z9>|}YM?JV4HX(s=Rh-zx=>+KBre6ZfnWvX=dI?Diz|TuPQVVqTAP(~$o(=it8=tM6 zt~cb8KkXt}s5fw}pCm!Ry$QI05Xb*EC4x&(8dCC>n5&pq-;nXl&)4UWS5K~Am^-VX zrg)Dw{FjH9Ys;A3{3-tRI~$nPSK_224a{a%spmgBMn9N;fMdEL4uVg+ZXuzd0Ogtu z9s-=~w_LV8ndpoRGM_y|cxEYm!0e~+Jumus6sOJmP=mBV3dk%-7ohp#evbo0r(@aF ztZB$6d-i5TQSm7fDe4`4K)v+1&zU*FlIm5vxfEAc5FjLk#(+aNg3az2u(}XD$S6o0 zNw0+1k2oVTY+%AsM||bT>J}cReV5X2HR;ykogX;LV@NyUHt7=RGwxf};j<&3BA{V^ zQ0q=q<8SfmOFEi!r0$ldFR2-iaY$AE302r&upRO!OeHZ8OrS^=wgbeE zN-$7m5*tF|0F_EYg-TN71xbFt@39_x?{jq2k2?=$?3vctd+oKp^{sDx>wB-X6NOA< z7M8+7aZm5RRfbR&5;9E8-~uqT%PNYI86#I@nd0)N-JOV98xo_wCQ1o(1NoXi9(Zjb zu+T-RPhNbM3E8;+R4Xy?22|&KsFkpdY9!m+DDuGljqfLcbUmr1>lERU+~hpY16ib6 zsT^Nr2xw8Lg2+Z&2b2p>9Y96|&TC$&cDsM$bBCz3f-tEY1^zz`;+2CzHVoURWv(1b^()^&GCtpo|gtDseF z0goa9vfjDy=xkJIa{3Tk)w4W5gwsy4fsyYeA&8>Bk+8kBZ5E9V&Q?#%5td}7lErh` zS8<0Z@Ka$%RJnB#IYM}>^AVXGby|i^)B!?40cT>0-V-I5KQEs4L8;eJi$hLg%bFp{ zMY{YjBtF@^Kw9al1<2*K>dEyeX*-_sV6?UHZ3T|HN|HCgIuL#NLve!VkCdAU@nUyT zFuQD%Xj~j1oNM8vRq0D;to-&I-$Cadn$#ZLSln#x#u|;@NF)L+O|vf98HHjhrgJ7! z1c0_yoakqTb4*0a`fQZ~KTDlQ>INpQYV?Q8?Hab)L=adt_8_Mk0;TJBiKk|FT)hNUT)m^rl9r zJj-|ZY^osF2^XwY#!#w3{`faLr*1S+MM|j*n(gJWhP4^#z#>JO&JZRW&$Df&wkGFA zBmz`h`xV1gMPxYXT33PQ^8SmCjBt=Af~PP=p^Zv%o>I-Y@}d$G&drA?bVYWjGIAU- zjuSnE@okh$;@Z4g09s{;YOJnMW#Z4H@B4}}bna0(f|QNHa_t-3&vp_HHP5R zEL_Ex*mI$|q(i+KKgX3JxMiofDEv}-55k8^)M2;k(3K-Bs`sDs0|b*35hT!GZFV^2 zuT!fCKtY<92RNYZolOJF=#B8izau1mo)y4F`W$!&(vIQ7dPfI|MmP>eq%X}{D|o*s zVT@pq#vJf|2c`QrJ1Sew%GniM50Vs_08a%9wt)o*gmmNuectrFjum-<6v{Y#A`TlMRgK1+y%eJnQ83^Eq6@Z){tS%0BAG*0)uX1G5GlA& zDSx6a=F2z1MF`}B+dAQ4-(qAHLZw|L8M5=TF%wMo)Ib8;4#+CZJTV}3^E`nF8|LrI zpUjaPqo_npfU)E~iUbXk786eDv>{L8F07}ror;kYgtw^zoco&8hJ+0*0Fk{}bjVmU z#S(_ypLm$2>|rwr)KNenYx+kJ<6aYz7JcKWYVawK(>!s$pJ0v$-#t(53%GPcKPHG- zgxxWME^;M@1X5|N#4Qi;(nrlO9n}8p>+n>2FwLI?)a0O)Dd2lyg(M3wzYq`Mqkdeu zc&Fo1y+|(JS22%^hsXF#?y4Vopt@oDqh-~}L3tuBpYm#@k&N+kCuh#!T>0c{;mZ(% zBV7l|)G+Qcg&!Icj`_7ux#|;yj4P~3%LD5q=d_+wCz!)AS#7bpo0g6nk)w7JRrz;* zDT_@|dFFWx8NsaYzHoRA?j{UUxrmEjmhhT9Ujh?aGHXSc8^wn3TvQ!@MXsns3r3`f zsL5t{V?9Db@MRCp*|)b)K_k4nA`(PK!#L#vAUKDWspoMwWbkSXb0Ebk8$J{G*@*H= z)?|v*@9ivdXDUFWnuz2&$aHjvc=)&3GmcB@)18*dBOW~@@=}Q9`RJu$Rk*n!NL1of z8s! z{Y(dyHJ8Dv?*qdNM==He7>t~oeL_a?n2fq%xdot#_?>g+#(4=;A2~ZdagyAZ@!V}v z2#!s5Q!G_7-EfPIT^{JxkFUlsA%qf1HYKBvwsGkq>iA1UfL*zO>;wiJ4Gkuek6Yz! zCk3)4Y?o?+74xgov?ARHsdCXI5Ic`cc8$mg*fpa_S=0#Z*XBS!+suB=VG`-b)5Ei) zPq|>3PRLyYcg9Mc8gGsn^Hn=l zG6XFRowUj~npWMBgmX01Rt|2cJe%sJF$7I83?j1`4y&Jx>3T+rj5c->Z=AyMiBZ4D z?sxc}ZXba{waZIILVJ$OLiA4KJRA^riDI+xwg(tJlM0{Hq5Upm@Vfgu9ld)Toh8Om zTwm(l#yjKKCHOb5oevMEThGg1)-WoC^7aOmC2N2JoB>FWD%VfNBm0P>`17Z2#umtP zWLYD`>sQSLchG*^c^~!OP(-d;_A8OgwOgTC{S(Lh`wPq0Z{GNDY5Cs5&86$yfo|mb zWuF}`jN&an7*)_Rn?R)7&b5Deab*TJ7A&tS%Rv+Y&F6MNQ~q zd(=BXwZp%jbhyA?h*7`7J-GyZG>m#9q4xNvBgT7st9mCq%`dncK6dQ4{}JHwAKE(b z`aKJ}XJCP?m&>fsS%AvQoI8DPnktU*Xy_7^HxVG~B+=Fx+k6#$CmUMFp@PJ{X-h03 zQo~h;U@FHTgtO6kgSs#+UlOIxxGv&?Lds!CnM`*`3~^Mn!_0xH#ivssenYvfOG=aI z6?@}vI9+H9-1MY(4~iv?OF0&)T}ZF4^<_rS!|p{~pVU1bV3iQdsUa|wrx}2W|F>Br z9kaD1CTWJ^2oK#jgl7Wu@x^t@fa+q_F<;J8h{Ed{np6%pLg z^l?HqavrtPsr57ih`mQ*i6Fj}f|#vg6+Ti0zePMIHy{{|Zp56JPL5E!Ke-uRA2b5| zzxvSxW>zKr2=dDUWw%GGOye$UJ!MyWyxeKb^W^`|&Y@cfByB&WzZLrme91b&pFxh* zyCtMS#{8}n8<1x8t!^^EjCUX0%$e+51cFg(3qVq-@7T%kJ40V<#cgF0f;u;ls5Au`G zjXdCu@K^T4qpFeRefj&I^;DC3UW7lRCL}rE$0Mfa&VM4u{oYBc~ifJ0$Du{KOKZiFfCDzq*ohH2d<>G*FZ2p`L5 zIB1pMneG-_O%^fdwv3$1c|%S7aRhkJe#>5MnNE0M%v~C_z2H%eTMOw4alh;O)hAG0 z%9Da~acpoN102`oj@7M{72N(5{xyZcRZHxdHBmmNRY0W{Mm2D15eokDjhi2?+*r82 zaP8)e;@b<;Tr;clTEZpO5jd=)J2!5ue7Jb?_Ueu6!~0V1TJ5O(2gWzzVBwY=5y;|m zM)#{791}4ew>FjMg+EGwg2d|~U&iIVC&k_?8^evyk2;%=T|2Q=k;ybI6AWgyQGs*n!O%wEb{tiFHygPYesyuYw?*ZP>P^pPOmTg(;ZA5TWP{lVQ2 zZ@>HD%EIz{0T47vA-%S6{X?CQLpl@tfZhw@U0wQ~2q*56VFAMO-?L$y3hu8g-95fl z*a|{M>D2o~{xWm11dD=P|4N_iwRbx>*(aCwaHTg=rUWwNZ29NLL#6RR zzW20(*oJps3!z|!ks>lE_K|C)xa9xpt5iO&ybHsxcKUz{;z3_l@=2G(aP;mWPT}|} zLUJ8Yty!;I=6hn;MJP0s_NJ<)65}Lz--Px0L-j&W~2lu)H zcLpt9X~-yXdusC#R{-Nt+dLFdv_3DsmXGkz;R4=m1#oP9YX-@!ULWoYSsoB{vTbCc zLJ!FsX$#4_J@7q&ZH3?Ix5WFqhdbN2#F_iV@yy59`n|`UJw6k>mb5{AQwEZ^kZC9w z$D>9%ds)={tg)ViO(T&Ex#r-RKn`IM`cZF@PgpiD-gUXoTRs(Lx1xgN)}d9AV{8CY zfp_F~YY?1#1$tYbm%l>JqxV{Xu?q{MX5kMZ_AD9u(ow+^icuqhOuZj`tKTFuvcAyD zM+n18TWnr~0!`Na?^fwLe_M+%4Vz?bdh1mPrs~rf)hA4^o{QBTXkSAzoc@9>Wp@B3 zjQs;VS88VajI|qY7fUa})P$kmKrQC&?b^N5g{HnaO2d#&UEn6%NIw}CP($=WyV^o(O53kk z`)y@ARy?%`rDJR3RUXtin(!a8r@v=iZ-93{#+Kl*CJ8w_%fikH0M+5qK1d=!G)>TDc7#BK0zp;+!deAB)Dbn#t>odM~MmNPA5i4Rs$ zGIVE4W{2lT1@f!={q7b>R>hXx4hVmXbZky;)V5&ZPVImisRI+vGl^jKmD=?L$if4)(40C5W)Omt9+7Z^S<0$-9El``AHoS+?F^xoHgWf(*_Vq z18e8tX{S@)x>8&|784MeXkemG1atsEH#=aBq-6Pr2M|1?vB?(KcTY;7R@-f*?fTB- z#K6-i{QN#Y6f44ya>`8bAruL0ZonwkXs4#xq6!wy{FsiB2}zDt;$X}*^jKme86L ztv9FvE37UpvcCRBAdt(-1c3c$oQvb@8M!Dhd^0fnW<)3u8-Jyth(8)rJkXH}0) zY*?NiSR9Ci(l)>%o3lLQ6_x66`=Mz^TPjgga{ zS)9bPFEo)3XAyuwO;sCqItcoBWb!?Ul1BzaFq{WZp%7SsC2aFu;Nh^pSBS(X2aWs` z&CUpTKm<;omhw*&efk|X0jC9@66*lVwtyFM7^;|deWo^*q(+mOT=dqHX1%Jt@R-Ck zo8xLNt@1a0$@cV1EmvhZUcqXhJ{9@KHU-GAL`WW0z5E3i;3e^IgQuV=o$95fL)TOr z>4m6V(E+S3Dt*1=Dz07bVAG&OO>{4!qF~u-w07HGAxY`Y>Yr`NXmE6C1fz#CGkuoU5Z6A0E9wbsqHpPaVdgN za~tp(4G8?VRsL1ClEyxDEMRA36y~`YYzMjKzw~Y>3kgK9`C+E4STJUP>K4=phzVcc z!G8NG1P9kM6bqPZu#jrx0;U?D!L||&t7@p7P%kHSvG8U1GjtEEz)!rYL&_JJS*UxW z6Z+U7AtJHZI;sQni;m_BoMWO`U7bWRCKh7)a37S~G!>VIV~F+ckM0J#_7!{V0o0gHz2UWOIe^kM((zmNE(QjfwlU)l{|pY<$3uV{aiZS z)5&iI_aY5^n;i-GbOlGwL}+|8a$;aA$Kpo-t9&j_SA7n%WNTvb1Me~R11-G3fdxon z*ZR91I>kci*;^e4U#;^0sa=U*`qCafs;rYMLPDDsDx%P>{?x7ThU_Hw z#o8?iHJ*~UQr;}}C}U@w-+CN{p7-mA9m?mDVP{z0>Oz2kh7eG^Yv$F6WQAARoWFHL z7tmk~&`{+xU#!{sRkxG%KuSehCDqXQPP*7WR)j>1qRs{5Ou-|+DePjO(EF02;lW;& zxRjXq;;AN^y~91wiu|J!_E@<-ce+p|NDsT%KsZC6G&s%QMXyLf)^<9*QaY-oBWRUJwD^cFAn=`Tne-y-d zm~s3wcfLsf5E=dh|K8navc=Y?bQOGPyGkOMuAq|GX3X0~^Sv<&>W!M|1plxeKM|yS zZEZpz6kD5HJ*cR?z3%2M(V&rq-!MZE45~W?j^LO4QDc!;Yd!@R12Y83UYelL6$B+& zGAo1i3`Y+p&@4^C5`eoq;#TB`%o80zKi*n&2QZ7zsV~^d5BN{#+x#m3L}=@!A;Z?b zpGX@+UDTh}J)3~#e|{PW6q1WevLG%Y2Df@wetu{A6mzV=2KDUbyo)7^qc z!c{KV2p~W z7&t+Y?kSxd7 zpFMUr6?{SDWSR1`$_UBCIL`{uVDPPS*LNMgYH%x)Do8D|oD~fFLMAkttY}jQf~&m4 zjCx|-9DN+3T7V7tc0I(Q3?XR&wno>Sfl@hiBny;5m#uOmb>_S~Rv;AYhWOO{N_KC6 z?=1HN!f*@GDUjkZh#K3QAt;c-{Wf4iHR;AQ!&Za_?N-c1xuOApphESNrufH0nwBcE zl|c_uNQWkaOSlIDd06iQbb1l3@;2<=DsBn~R4!Nhtx_6Zz7AnCil#y-M} zdueq8Fcn|@y}HiOWpf8S>t98Z^X-9Ip_E2^j^A~h`MmiuL0jCp!6lvvuG%jVSHqlU z$_nX3uun!1)d^x4htur)2p{=)38H+@8C7$1ND+f%*5@^b#kTC2yRx}kpmCylhCn{1 zFD86&hNc>e*9zvFK0_~|^0;c}YuhT{{Q(mPylusJGrxMYyV2XZ+H6Ofw}j-JDf#Lw z?cG&|NIf|U0Fe&JrmBrcGnEPjkG1KunE@cPoq&wukK*%=5;&{UkPg^bLMt8^K_(2+&oGxCrEmC#jG|60mb0?=7@m+E`Oq4;ze1xZDkiN&y3U%}TxsVrv5K`% zT(FGL@FTMZPdcm#CcxC&5@sdhcmQH_?+xE)ur*G>2a*DET(Ii^sAiy)W_?uBxMe>e#s0qS6<0_1`c502CvY`{q zCDc?jC2G>&Igk9M7bN-hC^o3SNx^89zuwj4?1&9ssNzM0hYb9e#H+!Xo<4pK;YbSS zdUC{P$6gA`Xw3de!)#>twOzI@M@OstX=~cRyOm#L{29zp;?GgJos>duB(kPciXVr^glqV@ zP_e=tLoZ)VI$8AhL=)im^JRIsqZJbSdbKvqX{ zvvlwU%vJ}834BP8-5w;4`1TQN`_12hgAK2*YjVQT)wBg_&!B`|t;O>)XrMLY--&~_ z>ujIXVA#F5{!rmM5%fVcUKqyz3ii42g?=BBQD|;wATqGKOh&_B6Ki|~IhRPlKZNFi zw9xn$X(9+BIp})|yu6VGA831?TzQbK$j8)ov6{cd={yFZ>fBQcs|+mxd?u6=tXd>5 zV(nbexl*u&M%c*|!W#lg5WS^EAyW=jm^D}oiyJ6N8Fsn^E2fo4K7@R{;D$uPhGQ3M zfXoIvZ6U_qM~AK_umMNQAXvogzf9>PWZ<#57jj{_L!EKRDoCg$%YFH_aL}Vgw^9Wl z%qP@hL~6zf)Bk_BFRth?E5Y(95skXcj;X|w7$Op?xw>8gLJEF?%6x_ta_KCPZb^PV zxwswpG|VWm4wuN@{7o5@x&JI0Jgv0DP4@*#>D+u(84@`Pq#<*(&D{nC{eD-;ya;OxaXc`dN1!7?O0? zXI5(F3KzSBhjJ3(UvT?dmOA0^9loof2#su)q#M)$t5(oQI@?iQklHLNPc}g6bTm7JY+}a@aBGvZ92?LO1 zZ_DB7Fv=6O^y9e-1B!+MKN`mv-&Mm~r*y8sJNpIP!30yOdlK=N9`VK6h^?A@!b(QJ z*%_&B&rC3rN`xBFOnul&IpTg4r$_qC%%Tq(~idoYxwdeYJXstz2njD?*1!l?&ZN(s*tl(4Do zcu)2Mi7g&x#`h~ucbQ47>07Lc5)~tsE!vD@1@@u=Iz{12T zg1Q*uqfbu{kjS4k;lJj-Ks^&J4+gO}TN-@iD=245|8U=~6VIBZ*P9#@?Nu$Oqn1S{ zC>90?CzY2vWmR#12r)AqAmZQiXe)(+lJ2pY%YL|??nQf17K#nSoJ0wIdr&Z|S_(j| zC9^{Tg0@tPkW*u`hsvf5#G$Ig#CO)Jbi!Fn1ce;Ao z6~Yc{MO+*YsN~WRW!@?u1)NtlhnBf3!f{y*byDVUtpej*XFdv9IRC|J41F&F0;3xE zmzETuT59w(gn=sUmJfF~kPTJ`sM7A5*D%RjaSvbe*`g^<#OY2LAt zJ0oW5u@FD+Ij7wLggUq@wGjVM1WPCtBr!QLZif#bm51xQjDv)XqUH8pZ_G=Y&gxYc z<~9kiReQ92GLfs-t1or9&mBU)m^mx|LA{rdT6=8NQo3b?A?7=Z+$N+Tq=$^{HTQJb z&pbX*k7Uy&MBJGW--woFDhNeg1(k4^ z=RD%WX4%NcC;QQwu_L=EdtW@YRQNWWlYwvo#0QtC$RMpCIAqs!wng2Jud)4lh@QWL2hw+k6l zzgWl5R_VdC`<>2Xg^x8crJIN`d_Z=*9*3W41rGrAt?QQKXA|Tj^uj)6YI>T<)7a@* z>C#wR@rD|9L*n1}x%%dbw336V5DIix9fNWyiFJzwW9BOYTjWxutO-l>t6`4E(A4C6 z{oYdwB-$}I1ydc6+2CI%+1#a+{h(wbCPt7=puA1U*Y_a~b3mY0N9NQ7N>t8|rzH`9 z!bO)0Or0>SpmYS%El~evAH{Yh7YLOO28dU-0;k#uKHx>I>~9DO$P}or>0D%uWh}H0 zgX#^{gg^!-X+STa*o4Bny0Qc0?oSsVpvqVqXt4rb!OFH#JWf z3{dKyO&;N%RO}jDdj6=hb%-Qu%$rZUEY77L(pE`@L+h%E)_@r%{79!5i*r{^vsl?4 zt3*|gNu;rcRCVCPqGjKH}Wd3N=K0v14{t@_hok6yC3~vzK4Vn-VxT2 z@yle(OKNDf-L!MQoz8a3Zu{MbkJ8_CA4uF7e^ur^eBZfFI9 zB1?e2n}Ia1d%uc2?5WT&>0DTOc#%OJo(iTg(nJNO!iK^dw+!%4m{S5)vJT_p&?EL@ z7zTVkwvdjpUP%CgN3@IIG!OtmNLX`ds|&8R#iS!nsnR%I327O=4vmv0m|b`;z4L^} zf09^B{)}+P`9+rEh8VWY0FRAd2=e&(5YS@-gmx z7iKQaUc7K==G>(V=Pu6vk7k%q(^cAyDbA}y?`54)V42+~slR-UXdKq)f(V^I=Q04u{4 zA_UO(-8yU z0_$C(2QKeug87PuzGx3L0~Nn7&~}B zomE_m2|*G*v3-cXGJsz(gK*3kn@P9>Zy$;lsp>W|=!8rB%RZC#R*g-(Cg6qlTrLDx zh&N7#b(Qe9$jb)TU*qW3Qb$a zKMdj3n@4(my_MkDBS|mlQM2W0+cC;OWsvOlR7e&h|FS zz{1zqvD(ng!1;A; z31J(Qi&3=QmM>I-PWHtM96!JHW8hY>C0Hr!@z0*CEfmr^+)dkMPh!KH3}r~$ zr4M4WcXxWC**z}gulOSJYXTE~#RjWl7m)eupYfIQ27dRU{2AXwI}6{2U$H?HiP#|g ziVY$?$k6d;Y~qJ7d$7Ob%Uhj;w$ce-hhJDXM=?$L(l`HzA4){HJeR-X3*I;f(WbL? zTVny(Z{=BR{BFOEU59GrY~?@VYrw;6LyyOukz>Nd^+cMAyr@on*1|{VUf$&Hx7hfN zVwMAYXK3z!n&(5BQi=%A#R#X9Zk6wQ95g{cH=7|SeDP*6_tFs7;o!U@EW{xfbE2u? zta*wRee|7Q2um@0{ydkW>9cdy&n}Jg)m-+Kuec54ILQ$WxXbTJmwM*HFig&VESLoC zHDV-3ev=nS>%!bHgj{-^2$>2LbABv} z$?*e1n;VN{YJ@g-_T-d?(ZJLyYtls4=Q9G8eKXEy7pk9)w}~!RKN|}pm$I)alX4Qt zHxc>e2hNVZeB3CK%oCmxj6}Jv0%ket6gWhy4T)EVE6$g@ z5R^*aLF9^DAcD7vxUI5?ob>~#`gxbJR(II?QE!I#ypV1lcRKs45W{>VoT_o5UwoRtfKS642#gZyse491WJncIkX%N!zmI17;X*2W z>_g(Y5*aG2HdCAU5zVa+GwSH&~s~32yf~Tr3QoQK)Lat zGFoOasEwGtt&N&m5o({NFKb^0Wxw`WcvGha(Z#EiQ@y-0DOJy_O-)s=w5@38HGnGb zYg2K(z4oEMsC{7^pbDOGhFbGmx^1h?^>MAW?136A^0d|#U6}c!p>usx`zA9d)W*r) z*1i=e)aFnfFuvltBf`vXlk|g6_;af)z1B|Bpx;CNa6644sdoDNU^wbAP5p7;qwtc7 zV1kP%5&8-@a(B1;eR5wMqTnsol-a1g!2x43835sVJV=6-TpfrdxD<4wz4@4L%(u(G zgrS3tsi;j4Ya3?8BZ<$IE6YM7kq#P~nbZLCwB8PAdlIEQ>yD2(5zWR}RXd{K&#cTi zSSb@qHZP7 zGZ*?ZZ(pL#pz;E#y94HF*Iq~rFD?u6xH6tvc`KSg1RHXoF|LZo~`NP9eMs)K08>n7Ypn@FF6Y$nb>T5XPPDGpY)i~^YAmh`H~h$?xjY<<6- zN(tVaOmUK?PazrQPe7|k60&$Zp3-`>lr~pcU|?cJMPZ3RT!6s1dj^dWUAA4q-xixbIv6}BMb=x`s}?@Ftn*-5XVasIgS4W&i& zI~5ce>?_&y;d5!BCes99r0RCIWSr4o?^iRs(8o z^|rd(NRSMZ$sbp~ff;`nF=84`d$by^7d50ezpnIwEDh+6s@?&uQHP1LuyvQVe2}B& zL91*#L(r2O6L5LFnGE&q5IXcvwJ*|DLV@~Hp$Wt2&oDP_gA(la7kcyed2f`nsb^Pv6QqW3o>h^FeY_TqrnZtqJeky5h6ND*Rm7ACcj4PYqWGPFmT1xBek8_d;?&gUlB$`!FT3?1kLLnmvK&%o4KfktD-^TjfP};0WoaHb5dX zWGGxI?o)_^ctjs1xnRswXs`{QgRP`0=cTqk6@TgAqe7ATyvp zmg5`zRy(e;(0`huD2eCIIH-3El5&a(wBX$uCHT*r4xl|J*+X%P-#m<~$?(EkWOf)h z=@>X(yR5%)qAHC$h%xxy1)A8^l;gy{t+1>A;|17Neei@yMww^$z*y&>)pe%#CQrY3 z-neG4tv#f87rEW@@)K^|lgSQS#>cC>-HfTd;A#T@4eOblVqhnXlnCoA%=5)lJ|N=A zoQ=fvM}@$Uo3_=!+tVNjAGg0hes0~nXiBJske zrJt$J)ASupkNA&%7f^v36}v2Sg2#NHWRb9UK3b!^i$6~al zK!qmmC9|QqG5L(64TC02JCxCret1@Jj7mU6eSAs*! z>S>?s=nWd=&5vc9lEAr7KUiM6b?4@dTQ`>P-nc$$$^81i#uaNo6!2tHeQ>~yfvev( z7Ou|GqHR0{#qp5$@Hh_A-C|Kv(6Ww7P#XRJ_!LknH)Ri*l@^%V}t5+-EKC{biEgt5J${5GDzBTMd=uW zil;riaP(mkyF3vcV>gE{Ps|F2(&RClpu(Ts1oKK1*r5{03mj*ES2>PXO!UQqH#KCy zd=;x>d%p98uo};|3gt{PExT(_D z%xZ=YMb^6H^F0ZtX`Wu(@56@#!^P&R&t~Lg#_QPS(Q#Qw+h;zSg=lvtWgqg@mz8yJ zal<8aRbs{(ykZEIB<#4LmO7mFtx?7F5RCTG9Th!bokKNh2e`#=fW$c#icT%jT}!A_ zF)Ia1ZQ5oViFIG-LW42ZnRWy!I%sR}%;(lQ6cg{8PDdx%L17{%HKe9fQs-7KW5m5u zM>8nmKUU@)Wg%zZz(KREB`KLlCMcoE?XY0O$~p6G_>Ueh#}QhbkK4=-;EY^=V^6G(>i+ok?rb>e z-gxl^@C^{>=6J5XQ8d>c2Q1g#L?qW>=XqpFKY6EYe16b()Dt9 z3;m9(O@k!a#|^j4atV9cw2amSqHAKFIeU+iNn^*r1cOmXyXmLV04zNxF&4-5vZ=wO z=y$5IX@tioXXr=+qOiwmHQ^qV+}l>0tAQNFAZ?@L^}78DZWgeVuIEs`g)q!}ZPaHt zn@n1xHByr|7|i`293B^~)G39mYD~TwXFrYQYJI$t0DKd6|8D?#> z^oipdXV!iR3ClXJZgiP<+CtQ_YSj@^1R2wGvGAnVMdlvu6cTfZ+rg3mUR=||a!kEl_`+S# zK|S*>!qF%Sv9|d@vi&wX2TwbQM;EDa02PnoJ*5RU>BPA4CZ+;|fo~Su`?e z=PSBJm2G@iF4j~tPWd@`b9Mv%O{VutfCD4Yn31nb%W#}fZ8Ft&lzeN@7ToP2$Q z75!$#eTpy8bc2!hqrX9%q#oUm)Q0v>TPCjRChCTC+%-` zW>kN(GbirvQta<=4=cC%i21`HkDs=X3PH6lLUYzUo$OkMfkp^#(<-04eStlou7C*b zaxL89j@(UwyNd7^mMD}MVC8)80KJ9=I3d}TD{!ggVuUYdlP}1U$N1#j$v>H^eBv+y zcK;JCmka`RQaTt09cD95Wr=( zA2sdD8UgUZu{-o@gAST;mu>1F_6k{+-^cA!te-8)|HfYo^B|~bqP1Xz5z-oH0qJ%T zD0m4HcOWY~!NGd&f>=Gvy969(xn1 z7Qhynq|XPbG|%5wQEg%(NYH$$axniAah87siIhKrP$^A+APZ&2|T$t6{#cnvvJ z=wlZ7Vs?4ikNF^Z(7TY>3~1~}!h2IB;Ms=u-|FmmN#=n z`A5SWS)~he;pK&*jIe~o2(M>mit>+zk6qgKo@X%VkA}Bl-NV-x(}`R|&F2KF^F{eb z!l$b0c(-pC<&Vc#fhIz?GqXkc*StYPaPL^_F*BR(y1yU#%fc&Oe%a5Zd;1^xD9!O6 zO`}ECX-qnsNeBE5;o7wr-cTPUIFw@f`jm$y*Zt{6855FADJ1{9PyM8TtcT%2&Bt%E zi|L@R@b{jmYP4!(U~%ayoZx;b)r#G*0SW(4K-}j& z7z!H%1hbwGEQZz$>#g$1m)O$PazXiXvu=wu&^{1>f*F~i)Dq;w{N zVPwtmD|YWp%JG2I7hVMHqGBBy)f6Ww)62Q7xmO#l0Jh@oiUsA9f;4P=MqRf zOafmz)EWz@r$ovy__xGsl8n_S*xZrZp46b#W#I-Z@qgkkvkNnL8M|me!tPq-kFGj3 z^_wn=`eCMLeC8akje7gS*-LYC7iTZboV{>y_T0DpfH3-klUca41YaoZdR`j~;=7jw zBZr)NqqT?&3+47M)QFlTH^VV4yq}l1Sh~CGWPuiiMrD+<@8FWt%?_^8MojN!4>zHA zS-e4Vvt6U~dO|39Bg8pP6&(R#ljo5ccpCR~i=Whp2Op+o^hl z(`==@E_(amDSV)p4Nz6My;pp4VYOIV{bX@%VRdQsbnE`o z-S=;QaJRU>u(GnSe0S-_YH@p|SiHS_ed+Gf?PdIWw^&&I?&4ER%hyjA9hBU{Dxeex zlzh~3!yU{-9kWhXI~vL6gX4q|L`qfb?d~RKwD<53tfP2H>nCG(aWf~bq{l^*y*)7o zw|1!EiJyE>pU!mAf`g*KmU6-9;ZAP@^|Dcn+iB~wgF+wjpe_FeTzlO^A~UhG)$0tv zu~@pP&q5tYTQgQB2Yi78m6`p*+>rgK_ljF|QDDuo##7$POACNep*rH=zLX=I?Al${ zlZjg@O+B)G{O zx2ke6HoFH-RDy)s&nRx!W8OjYvg1HND4T#Vh%MYs zid`Oxuy{*Q#9l|oTernY$7+>t{UPHKou{CS_T$+*p%^==Y3wgzBX+TtEPy?PeY9|$ z6>FLBe_K2Oq#u;0#KDEbU~o?VY+=8kj>Rs@p(Dcv?Yo%hvb9czX^k_EFs$M(IE(in zEW;t)?eU^fN@K+;DlD~;m7m3YKc|<9Nml!ZeOS2Yduef<2_Oal0O}h@!9!uO`yfo4lK?|P z72MFl1#uI<{5@@5)5x$ZKk2fe+As$1`%c%mFd@V237 zp$Hp*vuN-3u-h3Hr*kHJ9)duu!7InL-`we-MwwiCOYpfyFswlq#?l|6&=)}loM0No z4m;#7A@?Sx#S_Ojgpj<&=DOQ{49Wrwo%Y~JRs!4xoZOp%j{rXpyJ&<1xOWIUIT-;e zav=^AB|LhXt`R@LAwmwO+n|r|PIfNX^RdFzA<*oMSUi)!23XC_m+6N#! zP~@j}I^Dg_>9nnU+YCnD&Fq=kvoQ7KP$Ywn>If%<9ii!weyq$hIcZ-_PL}T!FDvyF z#h7BxNkkqV4A4US^w!%k!qL6i!}7=$7+?|hAq;y%$p=mj`Lre9B~4dx+zn}oSJQH$ zdbg_*d~od$7rcWklCK`i#UEB+&E6+tfSKIw^(c1m3?gsg&%8nMGI?@q6CoLKB7%I zYitkFMu&2{_bT|}_0D$MxcVab=mU6N2fdvqHH_3=Bp)pw?rwDY$q3;=(r86W(5^z< zOd4hnlg5?hu%B52;;Ysyd6+g9%1ee-QpAI_k(6*q8~KBz(cQ!Solerme$IP_#|)E<*A;x^G8WT+LK(aTBJO|-sSAT!Eyz1)~E(U`caw~-c9BGkY3cYQG+2k zJbdG)0N%2)e>vFlbjT=o`)!#1AS4l}+F;pR>A@8cJM`xv+u0nW;yJD~t@r znoqcLTbGN^>vTwl7=oe;D~@o!(+1K<2v9x~tn@nW*kDe9_?@U_ z0LA2~$?v2{f}?Zn3GhQy8ih3g>5Zx`F5^*cJ_PqCELy~MLtV;ikhm#iDT=k!*l+ih zz3+P{(J}0(18;1{NH1?+h zkZga+&^nB2)9*qX=wV7vG{sTiby9~(b^LYu^EPyKnbIM{yD%h%nEWI5rEYBOd8jXf zC#m%wRKKWm25Fxc*dIKCJqRd(tPBMnf(S zt1YuKAH`w&RvD#zZ11VZQB$-gXwGrFklq#kt;qbLe%V8rXV`- zcTfg^T2`2umV+NaA$eNtbkLxf>P$bJhH3AX{w^(+j^;9&o(KbV7j%MO2q}UVm+8?m z0O0nw)LdaF--NMD^|V26mrtmTyE??}_@ujqnu7*26lH>$_OS=(Oz(oYDn>g3;WN<> z{FfM=L@A@?o=W&8;duH87-26^c`%{FJ+XzEP6oB}3Cx9@P8$XAmOj}1KYbtC|N?~b&enz7l zPLSR%tas1^QDk*fY%?%Yz`~&BK1UA6z=t5lPCwcaY#G~NwJarT^g)`V;vH(%>T^-~ zf;Nxd;QmIrUl3|gG-(9s!@z*S0U8bo1gCOS&=A6n0h~N-?*Jt*RYLc(@px~j84tu{ zL7uJs5{mAwS&6XflpCQ^Zgg;l`l>3S5qb9B_KqM>`2Te4K2&xi0yYP1HDVGAp6J5; zj-<#43V6-|XE3dh__0<>{&=k02kJ0PqBcXR3d32?($%&IF@Mq62ReV$#e5Aph`dDu z0K~%2BplfGNO?*-0->QM*}r0Lw#UAM@g2W`eOYEp!!1b%`u^c2Zg3DXjdaA0B|!Kz z=0ppW;^GK9$ZXt$qdhb~AU!Frl@Tnjo)g=pT;ZbTzwX`>iv3(K#kUGI-1L)^lWG&sNy7_-p# zR`Kc2aJ@+1G#P!GF9e1|+(lHdJ}gT=qxfY4NHV~r(xdS=cG@9ba2tI8-{X&d#8t;295pgksd~{^lc;g`rnO&6Y|ki#(qfj5yy#(EMey zI0kbf&oMTl!Hp60^nF3I(w(gvYNU!KbVoR)7xZ4GQJUk#@GECIV_Vp(Qju;Bktt*- zavm?Njz2+sIvJtAU7eoCs|@# z9c-X|d++or%;mryo)w_r(gU+=??};qj1zChT~ob)_FJiY_TVb+@sfj)LjH>XDSEIj zs~>iF-E;;5XsFC^Ez{_})f2gk`MAVBjvw4~0kJWbHkS1}b>#|=y;Dke8=cLzeQ|^> z(%*VYL6_fa^cijEAiRC-MVtn7dXUE}u|sG$Jm5KN=6>kTha_%{i002|8VASW0V?Kh z4$OBpGKewC#zo{mH%GhAN(Kw_xJIC-oSs~ z!hgT_d+|Tt2@Aw2)UsQB)ZIP+m7IEuudKM8{&l+#4m3e+9KTH`$6r#BusFpqDg5F; zcc83GlN)>R_D*;S6HG*_GK2?$OMP}~gBH(4IL!H}=<@zAA0W~K|I1~Q|K*Qo`0vq2 zRPMg}i@GR*5>WY*dnl3y!w5h!pI zB=e`VPrATTrJ|rdvJUU`dn!$=BJP0REpe!sb>k+yv*vWB`_o;3APnwhB*F1YXF4~j zN5n&WU^qhM>rhR&XNe*nogPF1o;P_W(r!Ue+WWU#3eq1WyJO#-AJ@rsmf`UQ0gyWPD* zWv0%Fbbe4b4jzfCO&#PAAuwy91Z9ZWzGwlrS|4W!-I$=6K6U{PX_e=ob3y8at`z{l zRJBO+gdiqNLU4)Ogp4ES#4hbEEqhr&tPK1!XN-5FV^ed1d9cV0MIOlt2>SmhXvYd zmEZg&gZPGRn^nNzbhFH$G;k|%S{U&>#|E%{1Jd8@0Kc%88AHPYc!&jzlA$3&x89SW z4(de^f_h+r+}apN!tT8vw3Bu5-x4`vpaSbY3YtwdTeL{+W~dA>VROX^qn7|8yYZdD zQzp=~LE#;R52`(_Pu&I|*aNv4ih$h%6p;(_#&2>QjMHc|<(pH^uGq!h-sLdIFe)#l znV`f2E2<-AI?Qf5q8zq7w48t-aCFBmyZ)CZ;yXEdkGW7;fcscHA@upprfmlG&|1{ zAqNzPlS5+&*<2fQm5156xmX@tvtqPN*yFm{X+XLKg%H1Cfr?WyRL$1P*#rn6MgZEi%l5z){W$`~d}GeX)w#+**a`1V2g6P003kRoE*G(R z!(y6{bOMaYC>&v8!eE4iV?aQdo#C4hV-|?9aeZ;d^8z%<_f(Eyb0kAYCtln)^iuI0 z%R(l7Y^uK*XN0tQS;kG&Fd|`#gYs7xw}IcKJIBWm zY$qHUw;b!EAtc4!a}3qV@ocC}7(ePo{2MBH3NPb^7JWkv@(YDY=2Srn@-<3b!6s=LXd2vSN&9agGJq?_0xjn&a*a+Rcbm<8nPRyU?2fr zgbk>LnyZ>E(SV~Fk|b^B_(7YpE;6E_o^p9DDp2hf{C;xMG+M3^0(J!R2pATcECv$3CwTD$0hZ1tAk)6$Lcj_tv@G^BK*>IW*;ti$k{I4R zb+-Ua_}$(ih=a5ww(J8M-v9st0jaSv&Q~mc6#3PVE6ZmX2;C1b@p${l_5x% z=tp~jbuP~ENf#G4X$+r01K8D$jghB-DvdIuZZgpOw$&U=b)3EM1y&`RQfW%U3Q0(t zbO^Z?fe%PR=x&09KonBBB!$K|j3U}-S=E^eW@Yg_fEFFYp9E4)px^AlMl(PhA+5RE zADXlY;^d@uM#IbQk#3pENvcSgGX7s^DeAJ~T~d-aRhQla6wjlMBnyn8VJq(e!*qzi zLjX%GQDUBk_7MzK9GK4xrHt9eiqn>^#xpT>J?y|_tILTwiTh=6h)8V)ss~#b^u05M zy6tMqE#`poXH04|ZhOEeDoSXKpIW>7fEl8Y*32Ewmx5^?_O68dZRN~Ebc8m)ectj> zqWXYQ;*Vf>Qo{{~g(-#>hoAKiRSP&CJPmP9;rrI$A%AFDJbHe3q*oe(fs+fHXGyH# z^NeF#yV(PaxIworjA0(Bq0MfK&tOC|@`~l|&Z2lnLZU5Z^`D(|R9Ju?hNtTA`swdfSHBr59$XQP;5rdtbJAbFil0mh_J|7_Uarz?qvkcMU; z2p7wR7*9Hcff3m#bPd1?^%hRJE|qogJsMrrq5+Z4ds*#({mw(HUUQtEMm%MXTv_r> zM7|)UNam_mP~PZ8@e+64f?W zqzf%D%m-!Jx1oOU&wEsgoaJzhJrs4z=tKH2E9FN20p%gHL$zl?D}~My(^XpBntnxIs77&R3{*;VJQ03 zx8qNN)FVbSBQ5!xQvNWKf<5bS1Gy(WJAPZ1T6+? zGa;5-fytVTg4n4D$#!u1r=SL{*MZbk`0IP{Ir7L`#BdC`O}>#c3nnV?K>;RcbL)60 ziUyC#{G(PGg1vBAmhgTJKTZ0bUxwk8JW$^xlo1hEYm!)y9f8rNJT`v*q%9~WkO9mZt&X}`gFP}m$^0RVGU3l;(H@Ls_~D|E9r#*O zfa!Zlpbck^JvWdcvhMUAGK>`WTMXU8-bzkYNE_-?8vRXZCLeVN_bFoEl{@kTL&+0z zRHe32K(GY@EyJZsviI-%rSwL=^FlrHG?{!Pp6oS-6+Rk;8Zn%bW4gRWqJ|y{fy>#2 zSo+516yM~8FVL=7K63^v9}b7r-U5ss@7x>(>ZlEP&Ecq8YO5#alBG%dfjji@9MbSL zo}+#$rK*LH(tOZ)a^CAoOC|Oq-6b~=izPuGs_-Q1z@A&>=NxZ=oZA`8U-Zq;PFa7X zxBNX;vCCBys6&q#F|i3kR;7iWlz0LqROoN`4rL3jKjUpi?@P8A$x)tpnXme>jDkgW zR40f^9_iv23`v9`0cH!#L?;`cq?|82CF|Sa7CGq14n<15cR_bsA@#j`@JS+8z`JD0 zZ+n#X>5q@4tzswT?yWtig9**$|Z_ z#oM^mFfV-_H#^>^8x}3np8!Q_*{a8^RR*Jk#CXYxR##ue2A8~xJSAoPc(NP$3G|5 z;vgwwgSbiAvcXHEDH}N2;cLO5l9tE_b@iwr znPwNMT8xJf?)a7=n}LHY>7ebUCJ;_ysUGADhd#u~3I{8lk--Zs$ttH&-)Bf4jqQu} zHXw$Jjs|h~D6Psx@cIg=w59+Q1SoMk!Bfoq7bIg~CIBC)A~e@K$nU6gbEBhvZn(DK zKvmbLJDHgKK*;6#V;s3<>sYkm^fHEvA>mlF^dEulGUp2$+Zo3tqrap6i#jrA#0TcD z1zP0+@K5;D>POdm&}P(yWLNmI%6fAOB&mY)izse#|PQmsE1ogG8i zU=|tK;8AFmeqlYrj+kYwL+}*GYL5~^)kcxp?N5%?hAvy>4L=S~W}}Bfi1SQNM6+(!=E(zO z$^v6ntuc16Rw06x=p8`1OJbB#{CNvG8-*r@coI-U%BOL><^DOC4#M!UFSx$?Lr%LX zeeU_#mV!VQ2Ax3P*=-eNh*UFc+Xq#xg*$ zZHBlsvs2p=qqdn^s;d@n<0O(s0l_S)I@wvR;c)^)gFw6PECgS-%Igl*XrrpGMcxJ* z2K(+liu6Gmg2Nd}6*v}ny6}upmRVu?%G8)O;EUn*)*u~$Hr9a46;X~<;Xy)-TV4{Z z`IkJGdv3^)W3*-|l?S=;ku<>!6Ty<7NkSC%ganfqK6J9ndZJSAML0=cj$Jg9qtT8+ zIUA|Kq)URhIS!XTl06_sV*E7$YGYcky1@00r*}-2(q9-Kf(l#VdyX^eMmD4<;p)dE1;wTBRLNRv7A>M3eZWf93n+)`S+(&^bm{nXey9N#HY8t~*0 z0`vwX5iJc<287?@5WbulxVEipTrZqqqX%lC^tSp&k2mVp28CVTW8g7kJEpds=*P2O z3S9?dhFq9OoTjD^A~UqesI@`Oqo($zCNaj4b`N5yTV#%@M&y)xn#)=J_ z#|pMe84C8C@L;GR6JUlzjvCn}>{}WFW5m>0M;lT6OJT2Wgrx^qOhFzx0 zZcc$_^63Xi2cu!v!Thsr!Y+(*&wo*EV)qAqsPw z7}9@6+xa#b^;O2TrD5%e0FA%Pl(Y=t$;{$cfwx1!3m-*4q|9F=KARf7Jhf>D1O=CO zYKoIg!|W^BJS8ue&PY0?UO%M9I`DGBH!YeFI-lC=a1`Vd9YJMC>QbNLJY)tE*ofy{;W1OTj90AL*ZQUKuR9DtfJ2elUL8EDS7#E9Ylf_3C! zjmwD$CoY>sL3M+bA%snvPozAw+zISherx1 z%|VY?{-5-IM}#(}aQJ$S7vGqE`L}JP<1Ie|u^WFfYE=oTF5Z@ZC+pl)Z-mnCEhqG( z7N+E7B&^X$`YWM#2@1TUcB#DU^iAwHMS!yr+lLLG$L|Clj}CNwE|s=O^zfdw3}0z4r%$)KM#82b~JtFcqw!^dga}M(v}m@#uaa9zeQ}kldIia9SN9 zEl?@SgjI;tFbK3}o*~Ob!86*DLW7;{ZFoyGicS)w;8rCxo?+(&zr6A%s(l~>(9-+Z z6Km_iJ1A~J%e;fB8D3Q+IPRj-82{WrGlb7+nx^Gr4jvC$td@uEVxJLNa(APoXd*Wl z?st?7wG=)Am5c|7VZugMl-1_Ux?w^fKt$FqP=x$iq-J#=$5NJXxH8WYw1@)Rc{M(TCN{#6&t$uQo<4HES zO9t^T@-f^gf^&eY(I;7wuM!_;uLW*o5+O5KQiu^nFgV;sS}rSAdn$P$dz%Z5J2gOt z$lF1bD8dbxg$qO<_R(j^9M%#^)SImTBn1yMlS+8H-*CT#w^2clzk;Ip{)YT z2;b3e`xz=L?&SH)qK5-Qlpm6L;0`F3n@r|1!2L>Agl+Grc!=sUs2^yn6?KH8u|eLIYg)s z>l_=hY+&1n-XCLMkf+4dUmSj15F>n0iq-#;Jn=m*1|VCyJ|GJZcmh6qNmjZ$Xk|z{ z6L8`4i%%3tu7%d)vXTFRp*~qaRHz(wHtC* z5r`<-sag}j>7o+zqVAj3suAtemLGnTT>YMfriI=i*-2QOJa`E6cNatQ5=)+qvMS2s z9Bva}rKGE6Bu9f5!0c{aTU=U^3y37q9cz$S_`a{x@7EA+*+qE9X;!!r(`Je5h}C!8MX-|BPF@eIBdBFCMg|)QU8}zdr@sv80P9S|%kjYZ zK5au9z=?vwHNC#@Va%FSU7r%P!)o4n#(Ta$`JJCES^Ecifr{?5FcRTXF&B|NJc~X= zSNyZL|DgaBN-)SF#Ylax9q>+?5Eby}x^Rr+m}ZVQS*MQ&SU z^D0Kxb>#Ug(E=%eU|)Z2$G^53o97jIsMON-_n22{R{sG#b?>^ zggWgRu&%RBPLrvEHC!F%LD&_x zv60XXhPTA=Ku(eJMRM@-!!3XU7Me{=$zQ^st^^|1kUe>WX(UHOWE2~l-3Q5KoJ7V{ z7+!A>5CXJ748{wlhxQ3Cmhrp0xC)hcg#M1>%L zn-c|pacJ@iXZeBYpSpJYy$@EWd6ZBx+20fq7m|tGBG}&gEJ}3Y;HHcq6|+&}-NY<# zDt)Zwk)T39^kfBgo`q73y%xF{BT$aRWFlFd^!&mJ6ka-0!)53-{6DB7T9IKZYXmFw zAP8TV*R68-i*Y+GVL4LP^tD8t^B)s+rufX+Q|%-<_RJW*GT0Hcx5(||LJ65jBimGV z%`kTQf`^7#UUAgis+Ky)N_g6t@v^KGrB};O_^}+y?GB^Ruki!;<&l|&xPG}$+E+1~ z@^V5OkR=WgK-D0ythH+by5m_qLKRJNohDsU@C)cjkT{~_k4)tSQ;Em`_>dU zm=JMAQMfmQHyP0$fh2D^)>Rz7nw(s?U0v*ma8mP_w!9|jR9hWfFpOwtmF6rYeAEGu z`EsbFYl#T^Wi3nb!lM?V7Qb-?xfhq z&{Npk2plk>F05n?b|%)^lBp!(awDg)Zf_X7C|@=SXTlUAYamDMOU;8eaOv^MXC%Y^ zI{myZ`oT&LCz@ACGoScElk!;8QrDv?L*!E35^l??X?ABRrJD8hjfy%n13T(eBb>XP*X60>n>w z7f2b5&`{VFL*)uM9JlLQrGxCJ*84TMWdCNbTjdWyWl;rS-B3{ANvr(s?{C(J6G$?= zM8E8-#Kz^~co~cd(exPeP#h&v|=d*ZRnjpJd5csn7^f0 zD&zN>g#_w7JG9(M^-H{g{>ZA9ZhA{ix2&M4J;c(Pu9gQ~UiwL*@U0^&!W(WMdS3ol z_GVWMXOMMmfz58F3?-2zjyJ8*>V;5+q+?iwabpH{O=MJJlk9I6^Kj6K$LAM`h4flSX240Em<8sV)+w*CWG;1Nd4#ls|5B>r85H(AbV1Sd{(kHrOQwaF?f zvEXLQO+4UDPq}#KBAv#0*OtSUvrE$9UWy}!7*IaOic6EKDACYd6)?4;`)8?ARt3Lt z9OGZYv*Q?ca>!G3yOzH%9r{|A zGx^G!l|%z0YTY5030nZ6Cad&33vFM+wLI3jY=*`LtSmF-)0Vm6l+NZ#FVwjiSI;oT zwI(XB5zkw173XHr`9x0r=sg>)_}=eDJBnff3PC>F8SETC-1@}fc?Ll-9=X$`j{-1U z%0Te09RzI#5H1k{?i~zZyJv2OB82|P+e3`@2TBcZ6qjIKinW>%E7!s4-@9wMT384r zf_&@iv+BBEIQPIy>Rv7;*~JhFO1JvCu!E#iaPHsgoLeqXAT%p-F4kb`?%gv%P?cVt z(m0UTn9~Sg1G%SzRHxqDq3Pm^t?D*Pk#K&-*@(3DAIXTo%a1unfh+y?_BCvl-+KrY zt1L9vD)+xIlCYYvlM_Rj)R~!CD_$@&dokb3<8bjneB|TdM}_iWyg!R~(Y2Ss!ajt0#2wz96Hb}J z)urN8x7(FS7kqbd_RPie`rV9tIPx>Fs!Q^v9s%>k%xo%-495n`0wUyB&+rR#=tp`0 z22lhFv?F2%%1fR*J25dcgGu1O6EY2*j7(_Md@v=O)CeFF7%-BbN(M>!(?-!;FVb_3 zoGxA%z2c|+pl1(X`)7QPK*wfw#*f+`zmlLEQ86R89>v#W@s8Vi-;i!S(>3lRZeK)( zOaerDW~LEBRSxoz(s&ReOb=|(FKmP%!r=&d)Dh+(cKa?W){<%BvG0>2?ve~(2w2J?HfVFjH3;70FQ(M6Y?aaF32 z%fG3Hn6#b#idd|f3y$S%vGDjSe6cPLTdd!a@~xnn!%XT2A`N_4D18!Q*Vf7AcxsX? zr2Ng0Hj*RxXuy~ z$^-gK=}x|YYZ7r@38M-fBC6Q_HVfs5ZN3M*Bwp2IhhMxj9d|aH1?@hgt&49b%>sWy z!OPCUQ)GQL)n~(wj;5;blB?glumLjywyL;IVJ?7A;=lHkkEB6IjY=54xq214Hc^_) zXLk1O`~lk8RqJF=MCZ>W*c8IRtl_FkIysKJ?|M8i>911QpMk!-=Q>xK^;y7{aq^lj z82a*zG5xNJFCQUUQlTo!48+F>N@&ET_P2)wDg>|P=(~6kmre&(+S>=oy=GGeM8cU% zb7yAWo|%||5C(cw(F@Va498!kL1m;&sf>Ica-uN`o<+&(qW8ck@oKnmUX=_l76m0k z{(n_6EQ&khz!zo21fJP*fiDW^Sb*U$m2U-Rpo{UfFXhepsUg_$AGwq_0%8BDZ+8iI z&o}z)EQ=qF_;@Cee*0ka5v@Z@+Y4}sd=`IQ%N$*L`OX$nppYDyR5z(I0&h^|1r1Ui zJal^h4Fdf+V2y7EMm!bBDFyCKF;`-E*o;yuA}X~aBwW(7+J&Zaz6IfF<2y2!LEg_f zb<0hK=?Uuv>W+nAwv1=Q?A$r?WX#PS1JNj8W~#uX{2eAN58gr@2VJssF7eD9yag*6@QpIGtYiDv~(j8fKC(#Pa|y7cJ%PDPGPLzQ)<-#mgHN87wVJA>q&3d$GYZ zmvM*(m0+ZSHw*0E!i%y9e$s)AnQ~}d${Q@ zYg>;F!0TrB{MTNHz`09tcaE`@Tjh_3t!p0Va5OVqXQox&aZQg>&JqZl6^LR^I9wTt zY!~HPF+5;DF63@SfXF&V-!=)W4`+N!G- zL5or%+NnJl$cK|FSqI5y1Zop8Ys6BzDY$f0k9 zd`!So502IE4;5OzlgKtLBP=bwU=}_5|378>oPx+Rs=tsY5LRH~|GoK{XhWxkYNE4R*_} zGE=q87-)M+`R@NN=bn4+xo5lQew8Mvo^8X*bD^x5k6}K&!gogGdmGpr=gJJ+S^5IGT%LM2Z-4(rNlcB0v;FiN=<9-DjM=Ntp; z;MJ|QWD)<$0rINa5ca!o5G}T;6IM~f4W(58Vmt%b*JCyCdF&i@72+M`u4D9wE7AY; zM3sP8uL~}{l&GePPtev}Xri|I4K_i6b)hf5ICYHBVhdrYMAnP1y^?t{(V2l8Ub-}t zs#Rl|#W1G5T<)Qwi!@$HcNbnixN!qPn{WE9rEBH21aje&0!VV#WxVkU}Cd zsQzu^=zvdk-10k z3dJFiVAJMDwt*Pkli}@zrq5oj$_j(gpUe2PX1MNDJNj`Q5s_@E)nN25dJ_j910hjf zhN>)v7PJ|9WzT_<7vLsi3&%)GMI8DX;+56ugNM3k!qO@Q+Vb!hak<>H7dq+zrlk$6 za>02gGiHp%iYx1Wdt+u(JkmYf-$USlmXc`^d9{w;;AlfyJ@4oov#eOQ z!G}yDh?JTVO_1H~nx%N%G=kTqy@eJ%f?c%AxDm1cF@a3Cs8{{wua2g`@-GEl_sB09 z%kNF_qS%RXEb48++6h0N+XVdSOlmcfbEgrEE~J{ZSdtj?lwsp3HURkvaLA2P^aJhs z6Hw=^y(hOOk0;xP;oDO_uj?@>;2?LE8V6S8ZSGD>H|bkbbd3CX{^F>u%`?BV3?l>6 zL%Q5iV;u<_xdm`$>R}M9RJ|qil3WyN^>E$P=&S5ji--TXuuy!W?NHkcZve+a@^)f# zE7H!gJA1-}t>qq}(L%#Zb6p<3&wR*R$N&U1Y$!`2h?xA`MJ!}tfX9S10OG~}zw^#r z^|!xaII$fM00yH-M;&wTV=Be>!RX(027&yP$ghI)cDgm4AluS-r;CfVYhl&@FYjV@ z>~j%{TS_?$;}}Og6i;!6r+`tXyPNL5ji zTTgb2lME>b?!aIT!ax!70L4|RR>%tnOSeT44WFLgQM=+&Qv&J(OVAP{j{Y}XA5EGt z1_VF72KxC%r0m2cPf1F{A@ott*STV;S9EFEZgE!#$6D*=X(xY?6hHcjMAX32ZbMx|Q{{69>KaDFk-g@#2|*~5@O?bsRWo$XzYd~|@*UYB%T3CRyw6hlM2K~B)v zIV5Dh%i7?ZosK{yRUF!tq!TkL2HGzu_@B zAq!juIx))P5ByaF*BJcz?Tp?=VY1^1VLs}B>QR+ukVX;EqQ-ju!DaNQ4jfyka-&U2 z5NpkEcC`7~qn$#sf!w1PVpx#2@a5r|{e$VwlcQx@qu1&^ug`)D<7x(={!hLC=KEhK8^K66Oibu*7QSFR zpUeGhQb(p%oOaj3n!t?rQ);r-j1Q$y2^J5h;Q@vTdz6Ou3acCj3z8M=8mt7#q>v%o%U^uVlrWF}fBwf#pz|L> z12JJf+j|d=kpB191;C8>;AIz?mTq0d+cZWYG!HD@x`5xe@CYgJpvXhyOMhpJPpf51 z;$Y#)Ly+XVdq@}+hQh(Zc9}{liH$T17TKbnp;MDHv`PV3C1vz=1cC9&Hj@7^2nlZ{ zxB}f+_vn$=bOs9v_*g1fG+2JRAwCElT`&`U5M%asVX|=oBjy+{qwmw%hr|x=WT61Y zEV#VrK?$6dpwQqA^%2hv;gXWYEMt}+9>vO3sIm=TJa#q@3#=>zh&~A(gHIAR@a&a7 z(7<$VxTL>n5XdPhKm-6y1|yg@(U9DQbY^s+7J~O%nmVJGV}5!G#&?Dd5MP!DLkjXX zPckm`pY7*|$PNy5g|BCTks*KxLl-u6w7}IWEZrjmqIp#LEjWV>j2B$|o~H4hHe;HB zi>G+%W3usZm*J;)IOfU0UL-(W{qE6Z{0N5DM+AX}UvM(`1)v~3f@a4%LBs@K34%q? zo|D>zIT8=z5G1)PsFc|0XR!7WoWGpPN5%bZakR?m%t7qjV8zP|dUL0$1Fr<0Q3kFm zoL}Gu7=0^Di5g#zB$tfm7Po9XoqW8cWE1Mq-1ISwaNycW{YqApBotU~Sd*$lKWd5b z+DnkZl}DCyc|GJl&E-8jyw;iu3p4M0h7~yIN)uLfEz4~Md}2n&SrFO18Gkh2m`WnR z(^;Eniu}wq3E=JV_se4w24x+eYbSZ;S-Jj{k3P;|ppy?FpR_eZif9S8r=~P(rIS4S zy}%&7rj_O`T`N5hrJ*d@`S08Q3&9~q;=#= z(o^gmOky(^Kxl(gUXLJ+u*+_}ZMyrq{We<_t&ph!M-nFIJX z;DM#wmo|q_m@NE|NHEzWlR~eiCjhB+Wsl3kC_CtFh2yWhwn|EAXss7V0IJZMMY(Z?ErRdg&ojtvY@zz(DUIFry@f+mpWIDO@&rXE zY#Du`W1eN81q-?IV456XY$iwWg$bEo&=%nEaASTip`z&ny+!b`o-wFJ9EeqfC2(IH z+1Nid_JifMsfafCB8p)AICl>373{(N zOnZd51he7L#OaLI%p@|zjv5K{B`Fr~BT2)(^hJgGY4O??W#CjP;6CXXiLndcK zWFQmNS}Kkhkg`4J$J0-yRM%;u0q$u=kNXFc$J4!|8N1i9lfHzP6LBh*XbhYm55P|k z-`jXB?1ip`LDuBp_2CgFh+sFq7pqK7>3%b~VT>AGRzY!Pe~MN+w!aiN+Uoe7hNssO zceSdm!Y>euaF5t>qX{xuzrXtkFIXY&_vyYKwBN9`L3AlLgZ*u8V<(~#k=Rt)tYL!5 z9$4eP@tZ6!Q-+y+sBM`HUpgM6=WiP*besAG8N2VJx83I&Tr_GL`e4m2mBt*fsR zlck0|v^y5z#!1K$s)JfZ!(vvrHug8_IvBIv1N@`^(?vaAF6NdFmUR`sGmH2?gIPgslY^I_G+4*Ru1cf1?sY8s24@{;d!_pw6_mn zOXhf3fv(~*1TAcMd5U4V<{#w^3EF%n%MX@iJ!B-!6xKrzqG7Izv%~2!q%mBA7%Y4f z1~~LW%VpdUo-uxZy5slRpmN-wK(Cra#*5HQP!0FMpcN}|WZcX^m)FL-i%>cE*__@G zjCB*mRhp<;S|ZW?4xV&|@o@(MCDVP}PGU9FrTDZ~jJl1Nlk|xbk~iCIR~etEt@pCD zm1qd2%Xq0_4l!<{P+)%6PXG)ZWVG<(jfazsN8t2tA5nIMC6PDNB0%lZHGnXC8xL5~ zMhXs}*Tmnm=DoMnbmnhd<6tlP0_TCW#a`>m;1`8?QBX~HLDg8J)v2ys96sEGPolES zbo66(H`y3)N+~8^WTzeK_PQMc|WNBdFJ)`qTkTjpS#D zE}Cd((6r}&qYG#EhBz1?rJTEYXS#KVPT;j%Ta1qkI(o>stAWc4Xvk`Ooz8T0CtfsM z!*LvfI|1~+0pQZA?z3Dynr?H|<(7Vp*&u{q&Rf<2*aq-FU>{n9P&`~@P?{H|x<%O{ zTn%IzzFqOu?sQiHLtsT<3ur!U{O>73^eHrP{`G`3Qbp7;89}6#9nWkglu!70HH|Hx z2YRH|(%fwVXBUOzs*lBGXhE1xyuxiu5e;$u(9{!TF!y1=3V!N05UCCC2rf)wPt&@b z+!Z(9Gdp97F60f{w?LH&W4w!N2(u~p=qfhZoxLkW>*2u!=}TGg_N4Z!(s|+B_U@|c z-5yVO&G}*%bupS&iWrXaT!k#^!QR2sxC24v5@n!(GmE%HVBl!a6AudZy!l==Arx~E zhm?P!WLg1--o!`)+US?F@=a#_<$wz-Myjh?+wgD42Q4}t-r*ry- zxkXKh04x=`pzM2Cu0sq_;rk}Z5Y})!Y3FkRWnt;z#{dlc>L^^nW>~drBWACUFM!?` z(rQ{axg`mSka$1S+3M3>nA`BS;fmdeX;esyfvMY4H7YpLh(ZI%zE^Znu0#ffuLJ}j zV)4N54oD-ABrI{>nWQkg4y=7c4o90QMrR*B`A%fy?yAaI&<my+i zY%2HJO;zQnT=lX=H#X}kfyN4<^RQM9h+SF$DEe71F?@G*FuMBvCKGh#abgBYbX5Eh zl1!TsMz2*}2!Qe+2LFvpbNOszELdv)PFysq8F_S6hlp29oJ%h^#~G9k&df$Q+=Jk`yD^o5(73=91B1{C#W3p} z4o5lfQ(?A;g|+e8Q;}!Bi#5h7-Qas z!MDSwiU2}Yodj>XsmCN})K$9Qt?330N%R=gQc0T!P1hI!*R5yc=_bP0wztb~FdR&9 zqB8pitk-I3P#`Ny7)C6fYz8+apgNQw8mCcNi}Gux>yN=R{KQCtWKiIeiLKWf2AE=F ztRQa~!v@!wT;Y%9^@U6;1uAz*!6>fczxvoT z*v&r-d&UdWuZ}|8+{?`7@{2GV(TLk68b_SdK#$~8REBT|y{IaH7*qTf_e%cM#-`;* zU?lrgZKDXVRxhPXYPhB)xsv&mPeyLW`nXm=U|K=fH(}uVrCa2kEMcfgmGL$(dwDoNl=EP?6UZQ`&Taro*0iN+%nsRbt1&E`lc zzPpbwpY$~kkdiVNmS3`k<2pB$Jx{EJ4Ig{8n-R4AlSNviAb@50}+x6P1a8;f=v;8Wg2c#9Qi2@t&4P3LFSrMx6yI!_T| z2;p{b*Ny|t27thT#|PlCH&Ox_>l+`;S%;4WK(Rh|z`P2ygvTNpDN{ca4jfsSyJIh^ zr4RFZ@l4@QWB7UBjgj_`fJAH$ZEN%2>D{Cnp$NTJmGkh0sPmObW42h+U1| z6U~$)^D{qEqXLK~*=Ua!^7?uo@pO>|V`tO&#;HUYka-j)P>{e|*o;`wCT*fr4(4

7#PUc+7i|@Mu{@TLR(~dxN1T9xZX0n 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

Q2c4{9ONm2~(vd5* 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

o7ztHt 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

ge`<6u!vVlBPMUZcSF7zPP4?A}u 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⋙;B?ZK+tX#H1 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

;hk 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 z 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%0Ay}bvhq^vGf>+Nfla#O(*=yF9 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ℜzdu8D90O`Fvd>hvduk1fwvCp@ir|)^w@f(f3 z-of>dn@f*(?e$KcPUOwNZw~GCE*?JiX6QFQm3H;*=6c4>sBZ%8^&YP0-Yoj25Zf)k zlC@{O3VNB|_vq@)E8h%O0d!VDStT^!TLY$F`=;oo%eOm~;HrgkT(ozHO*t<*crPeGEUw z^A+FR(+dhug`H^ zd$a!AOnZHv>kdEGeLIEOO;GBM_+EhNeUE&8tob&r79hA57OJ2L-wH5&_>td__1`X4 zLBwT!mw3JWe_Z?f6?=V|ryua+p5J>{+l61@dd`nWe;;D6uX4TU$7{cjv)9+SUh`w$ ze^%P->s;^panL`n+Upx!kNSz?pSSGwO|B>Wr0QQBYV69h#q}#c>He1-dwrYhb3a-6 zeVM(!!|SX1$>hIO*y}1DUh@Db8x{l>LXwJCh@`sHYP+YdZo`=u8mHP+hTDy7~xPJB4+#lMoA6shK z)zggc0+`eHd|{r!#nK;SU3~ zka?N!0oR9a#eTO&`bsSfWB5a^kKEGzVX79gwJ=IKF6?_USls-SySP z?+)yBr+pd^xWAh8okN{nzRvsf{P%cO`JI!!?!wdYd^P<$cYEEHrxWmM&v)^pN7jK? z9e^7TAM|R&cY$?Ks0E)oy1(4H9{lRgcUP$$3b^jU_3BrvzON*`oa>%kZ+un%eRDl) zw~~7B!G`tXddThS@BQkb__E!+d3nNa*L)vjulsO4@^)E$Ezt6GPL%E)NyX*UWdp(Tn`L{bB7uxILTrarY`S_Z>9>Mi% zw+9{<+v|~BFTQ>7{W!J%Xg&2~6t7p+?er%h4FIkUps9ye6+|<==264#(O)_?K#Lai zJbVmG$L~qw?TjZ`7+%%@Q4P?BZvc4sb_}0_f)-*LDE&AdzTBzYr{o3IZuSUCartVU5%dN*?~|Yk_}^w-2Aj_43z3{+Md7r}K2`UJLzW7U>y0oeUnn?X~bf z=G%wQE!TyRj=j#ag6j~9zK`r z`>!qiHn9c3zXjw?(4m4nrsGP}*Tepl-2~HG$Y`Sa=JW7TuN!RTq>JN?D@^wmGG15w zsm5L};N>ZOz5GwD_Ie@Hy@mSMm46zy*RS&M)30a#?KbJ_Jl|_9{gyvzUXQxa*@rLU z`R={m^`||1y_l!(^i%bpoSIqr4|qByTzCIzn>CMgvHYdHUJXCZ{!<(2&COKbGN$MJ zY3rxKe;y>gm+R%coZ6qJ|5;<7P6gNFex`g9+=hP+TA`o?I#p1~((!xJ`Lhz?S_^Dm z-WOF&@Az}q&w7M%(o0$>-)df-!Ji$NTkXTw@bHsAQwfu#kMZ!eJiOx@hvr55@O4~w zeRU35U zuK;F*KACtk>_I~txay#mN9bosX&qql&0PoRB&VG_1I*Doz}%aa4~EF-<;Ea0_8egT zP45TeWQ=lSh~?qD(oz=s&ohm-gbU#OMeJjurLdXf?&IBt}kR$lK<@PX%j96|= zvMAn;5cHPA!wfPM+?Zm9mm`F~73v5DqSd3`%*jw@^b=a|0 z9gx=nJ@~VL#gN+;-qJe4l@5rwyhxT<1eg1ZZ?)U5+Uv_)UwKRMWUmv)pPkUr0lm0V zh$po7mh=6-4v5x4R|mE1Dht1JvHzC;{V~!%6F*Z%5x> zB7L66*kCcD&E9V(-rpd7jq97dME-B5-Pe-7!}TquC*2QyJJAVt?K9Zs8AQJA?F3Gp ztgQPy#tt)5zD|7G>uX=qJvyllDyFC6hUB-szm6j#h8t>13BPjmw%^w>GLpHWVMdM< zl)fEuKbMS5ZfM0A^>2rKT~0;`H*{hiU2jL;Zz7|C8+vBMI>E@>sb6=JA-0o&k}}V| z9rSfS>D@fSF4Kd*UVOU*S2>e0%#A%}M1H;ccK+8>q)%{tpEYdc*XwV`K9Tp}P2UZE zUC^h31E!DSh4l8`Uk7zTmJR~Cs67r@LaTqh|F*L;M3WK14Tl5jBBwhtXUHTYog0n^ z7$e#oa7Xs5GSaVc-HAnzJ44i+qQ7q-qlz2O%&7Qv%$n6R0>n==JIz!x@?O%

>+P%?B3aPf&(g)p2zUv zhVq?=CyIWYhVO^G9_UwrFDtCvR`8CqBV6l&G96s$p)CA(EehY+aD#Rmxcj*2@$%&EqN-f43M z=U$fD0e6C#)8Gp8?{vC?7daliRI(6q{$}Z&ZdV8;Baj=R%vf-SwRielA%>hN?u0R? z$h!H?kSoZ^Na02}GxWdGyff?yS!85zBZ6mQcxT)du9A_@jYwu}{rT{nMOUaIqnsO2 z%!oES-(7NrRx+Bo5zUMutIyq4+<-(z2RCAPO9tKDaD_oK`nVCxVywAB)LoS;Op!Cr zojB%fxv4?rxBO*Ut^&$%*BTj5*$J zPD?7qxI#uAHx$g!|ElV4q#KlxQOpe` zGeX^<;cl!O)RR-ooiyh7{Y~p#2Ry*OpIypg1Eli~=)8;Hw;sT|q7(0mei%?e28$uL zZQl*TZ=3bQs16GHsrs2L#+4^KcQf6ghKvesWN|}(cL+bRhDlA5Jcw@>cv8Oa;-|j7 z2XJTaJgIV}#)WNE?7re8s?wQ9SqJ-8FZ}9)MYV=I|&5%!&Lu z=G}d)2pM9V6fy(PV$Xcn;12Ef&Q(@LJTU#*yOB@)hXCdWK{EhjD!9g?OgKXQyM_Ot z8-T^j_AO!tzKMCa?C(bgnLac~QyPpBh9tVcPIQStLMZx|eANj35q72K%$IewXa zdjzX70$al{fxkCcQsv%I`|}VyYH1iYb+9u`xmWQhbw4-wK>G+Y8b+WT<5u(B-QSD! zfw~dc)#i(I1LVdvFy+U8e8U;uk1^oz2;ywlzMQ)3G&)*kzM?iJiSam#;`1eA5 z!DEyeZljb|JvWr^MfgHE8KK;0piF$B;Jp|;GM$_l?ldwd62DgT9)5~`bPV66j6vBb zOyM>Lmi<*mF zoG&cc$7vJe%)Gba3(jLKAICAOPP-V#@%=bI@F&NMI~`&i&-Y9HAdDQbGdsny1-{?q z2dU(w@Hky!oP_s-{NSp6oNh5r&ilcBP-^e=h;a(vFZiZl0(ZDfz{(g*;~NRyHzn`; z`oq>3xaeV>=hDYwIQm2B`}^O7j5EVy9Q4?({Vc}8H#P4k_{07fxZ&4^d5i%TBida5 zetlR>s{SC05$F%g@AqJO095Ve&84Y`{NLxXLZB>V2T$>@qykSLMTSS1R2xJ zF!)2>2XR3#Gzm~V3H1{&gDaF+TKJGE{h%}enkOLmGO<~nd)WuL1F)Nn4xZQ?OAL1g zR)2sy0w>8Coqz%C%X#MDPQls_@NOBIfG|A_@i+_23H61#4|W5f_1TJ+&*0L1??on=|RP# zY>0`ue|RMbJf@iAHbseTiUkP!FeeCN$cf<27ISigAoaubAgCm#lsnsEoaPUspLEXP z5BeE!nua;t$-tXt{lmUsaG!=`yZ}(gepc}!Z+tiq4Bljj^;dIa`$JD32qeRw$I!5( zynI0Qq5E&5$Oz+xmKkfFp!skN&p#$7mODC1>zCRO$AdveMlv__%)qqtAI=6tIyp-2 z7??8=47(rB1w%eLx!l!I}#y%@q{%>6Gtpr0O z8TH&aU@@Z29{1LQp_7buZXAl4_}p8^?_H21wu{3dMe)0*3WfnP`gjyaZUo#r2!?So zM!4a`jo^C@A+TtllruMC?&WyHIvFcGhRY$AH`*L`&pQMR_Ay*}48=X)5ZJRf+_;f; zFE9igXITFp@}%5(QW^KMy}^wPml^7K4{l`LQ+Pun8Da%JxzT;1KA(HxmWPO8{MqusQ?tD)3=x;Ul5%-YR~{VFpU^NzCK;vN-G} zy5|uL8gj(^{doR^_clX7XK(nkD0oMX-rL67+dBcGGkMQ76#QmcHa@f9Gz$>O659!Z zxqFWI-G^DI!V7L0}7M4K1x^#nl(MG4|YFpGjETf3JN3JK(hB?}R=(ce1^fqZf@ zd7Mx&j{7gXL!pkG8t#NK2MZnci=|K)uum;qOil3%c@T_~Gs5FUusBfS( z+AlJ~ppu+&?!<{DaQ~<|47$k?8z-K{sSJaNkLtr<)ZR%D<0O9M76yyt%=6R|SseE; zP<%8V2Hx|m1n%>oo&!h{<6Qe_Aq@0$(5(k8kCQAqMISAO!67+f2~tF-@}r(GaG7Uu zL`Nn%wI3dW~oD~68&vT7@hIw&%>pNqF;+BbMx{n9J73Z4sa%XOqXdCYIUf z6HO?1FS2@yaf+CO{U-aw5CP%jge+1E6pL~4Kfx;}$v#er=u~|&7XdPRr&M$rKUu>s z36oR6Q!Ar-MneB5MPX28AE#W5GyKVpFVvD#&Er&v^_lo&&JSA2Y2r?$*amZ-G(H+z z1}IvF=_OcDK@~G<9_dimFTs``W|yck)hrXaP5()HG=wiRBVZX^FlG%moIj1jvtpNF z=dxjH#bUX9nvCbZ+BWyh zv&6jc*w#@ETnygXRY>=)5D!%mKgSC?q}*)m?CG4J0oIhMW6Y^!5TRW+!63f;b(ox8RgCti_?uCy8awbw%s6SfjiT@09l_G#Y4SvREHGmt4yHe! zjDs3-D!8-AoGCnr_H%hO^pexP4oz6DC00os*{pqzBb%0Wh%~TL;eW8qv)TAu6Av>K zWt1nj!j0X}@vnxC3^B$kODozO{008e*tIv-SPX2*@Gn;I`?DLYSq^zx>&#h=gP1Qi z@Mu7C#KbmOVt8T5zu1h2V0&j%OfBOJJexP3oR|$N@)nDu{M)Nv;32wcWF&KAn-{t0 zi@rFhAft>MJIv_E?<#$viiRF?x;CI;1Aozo4b%SxHcS(K^6au<)I71lFLvzjV0Zjfh8|ousrtLj!SffLzBFKqlH<*tJ(deT7+k*Gi-R(9O1QJn;_T!3 zj$h`)LL)i#+&N$lem>^Q1N>Yz8LiwnWCmVLd0+P8r>)2lE92mRhY#Tr>@V?frEA-` zwsRZ2w_yc$Ydhd6R&rbYmv}T`;5Ovq)xS+ec47vef7$RQ9#R-fPAGSrnGP&|tWf7dXh=23td&z4HTqpu7Q&SUtp zhLqa^&3N`y5gDmutgFC}Sv8M>%sADtjrB7?6ImO$dz)D}*#Xy5U<316-hs9q*i=CP z&xf6y)J;)3D9V-!0$CKCIRQMYXq2pevbI$a#LECUak4~sh5JEtQM`94rgZqL;`-ekCuSH8fpjxsG*TSAZAJ+NDX5Ig4HlXAVdvo1VZtM1p;BX zPmw^l8XV|oj0iP25r|ZS7lA0;6HI4g;PDud>?jO16w&z;c$7sM@;EhA5|792>I4$h zuuLFP4Z8%AFjYF60uP(W!=ort)NqAPfRJIM5s<5)jzFp!+6gGs&`Ch4h5-U;YEUcL zi3Rwd0aM9P!yfTWHMr9e2U&PR0D){QD}fv}#1qI>LmGiRHRKY=$MO@nf=x!CKn=qL z3e~Ve;Hnzd30zZyjzEzbTBmOgrElj)M$JEeE0C$3q5tvZJ1Z_y4RKpyB zDZEJtOk)iQ%;5D(U{(zwe0MqC00idMkWXMi4J8B?@%#t^OL!mB*6(F39f1`!j1pMI zlnJcil|*12dx7?YZ>V7*7hn^wVcNgFg|lG+mTVO^BLOvDb_6uI@0tK^ z0FKXN+pu+b%hEn!JvJ->0~VdYE?$TP_ON#e>|+ZPIKb8;aEO&5;Glsv0*)H!CE%oi zK?2Si7$M-IfpG$^8dxRZhWqyjxNBgKfQJU0X#cRM2Hg3^V+{lm@YX;S0Ur%$XfLs^ z2I6t^u%8AJX)mw829gN`Xdsh7pa#kb1Zkj;0B+$mV4M)l@Cw_{8;Tjy#@jGVj6k>s z<_Sb-V4VPNGfXT5h|)j`?FEh2fPz4b2C@jm;zm0HaT+Kl5U+u10tp&uB#?+rL?8+G z5)nwoLJ>&8wjv(V;XRvZFb|>Xapv(8F7Q%Bz7TgLz}|OAOD%gE47S~84bvg&*Bx1|IA^F(5AI{ zY!dqCqTNq=4b%`Y;Qc^g zR|Czo@oEnXNMK(BJp>N$>ZdS=_<$hbpalZ~M=k6VaMFS|?UQoWLI435E#%<_B3IlJ zfdAkQr*hi=gj<>_X~PrlVXC2>Nw{gLjb{2trEFFO>*od?%q(BR91PZm_N#H7W zC~XY6riClCV8DT8JWmdoE%LRB0ie zwqR6iK~72y_6mVo>=goa*lYyq@hT$FpoIbgjas-$ph*iw1e&p?RGtGTwzN=43&yvxnF;J@p_YIO8;O8g3kw7^TG%3>)j|TTt=3_e z63}Co1PoYj0=szQ6WGHZBCwAaGl2ta00M_vm?7YxgGB<4I@ln93$c@MnYObIQfTe9 ziw-gg;Bw>&G~9GhO>36jbyLcj+XHWKjFftrAy4xDHS zus<%`BoLs3Xaa#ckP`^fK`wz{9h4FX!KH-+LNQYUVYsG{K)4Qe3E(Q>TwFvPse^o4 z8XTpALISvywjGTa9dy!y+gKe85{T2m41suD;X)um2de}Ub+An!Ne2c3$vW60kbqC8TacH&< z{Am$sjt+teCqw55&>R^-Bmf~vBq;9sDvb_nb1QO`Oi;O_O4w4BBU|$g!#9|N_(!n(X!+5O|7}0?< zEe6EZeYv<|ZwwoSR`iYQpq#)2HVRwHhu1m&Glk2+Xr10PRv#DH&0zMl2oD$4DUi=$ z)oHohJT^Ol1-zRG;L0}@hFH>pmX^mY<3&pA;c!)2D6XVi)j!6I5qV3>4OiRyH*i^VCO^p{dtt->uUISVbro~H*fDSKe z0($HeT$EC#|A#&_gHzM?EAHaMD8|0cSmw z5Wtl}%VRi_(ZedOqr!zzY69+hFwiT9Tr2a2&O_yghDYD0=Ousk3hH{25F5D zuKAfIB~lObw9qF?51Ry{_25N|bz(4G0O1q2WMJ;A;VM&$o1e$AXN_`1QdFRA)v$;>jcvDkV+t34><%f^iV(` z6B~^{7FL!(HrA3rjvl%RPql@&F5 z2&4rDwR(srP=_r{pk5Ev1RC_vPoNR&K%fb)00PaJH-Q$s$OyFJr9hxf4{@|`pj{7T z1UmH4NuW~?BLuqiFhc;}`>P1_=s`mZ1bVRv2=rl5X<0yJwIOauQ0-J@vB(5o>_t8^$?GTvOLo|UIJ!BG?#a<^c zr-!TbCVXBGjifAK`w&>fEC?*&6-FJb?{8R1w(3 zlnLOA;3-_2vyII}uZ!{huQR>TRpHf6FMZXxB!GYhOH7s)*X!V$V;$Zf^uAV)R{;Th zcah0n`r>s=Z#eh#P()x~4>bf1^w3J+5bsR_4h9$_;AntF0#5kNEdtI4@S)d%E;y4; zz!eXiCE$kNCL-W&fKmb;`0WJ(o(5?&B&xhWFgfuCC;fUn>h2}Bv7 zncm1n8(@T#7|fkOtO4`{;ta4)ARhCg*F*^h2qKVZfM^0q21p{1jGt*DfG@M^3CJ)n zdbcIVEJ#T;z&Zhi0Sp9`2G}EzW`F|%=>~A7_dXd0@FI|jABrK6Wq>*Y*#>AKkYj*8 z0{GU)3ttN5VL|DwO+Gdpfh$-(0tE)hB!KTuDljO1N~(%pvEXN=ItdgRV4Og)0oDkV zV4(=$+mjG{=}~5YFnVKBZU8xf3alf&z`%DUtr!A7x6w`N1c4qjCGW;F|!|`VQkA7I50!@shnhihtiwZmofsr)x?vJilra%iL>E^v3{RNU% zMr7vwAMwQMC^2J03bb9v7bS6Kcox`K4D!tIuLxwD;lCh|FIiV4D@U>lB&$%eawY4k z8H|l7(9ROSW_CDcq=S(nv*S}zY<4;}Hl;u(b4tw4$NyR?#D6K}{cohw{8t395dW3{ z=KWt2z|!!dVhW6EDf)1yzG2V+3lE-Zbs_N?o_3AM(WKT$Nz0t3iL1%YxX?;?sZ=hvya#;NJh=R$NzyUhh^sgi~K*3f|dA>1hDKJV3GevQm_*L z69Ftc2Uz64Bn2zMFA^*}2Uz4Ek%g7u7YUY~11$0}S(lZ-vh!;Ii_EV9tORfMM!QzW zH-(q2J|Tr1m*P(1B{9t|Ukp}j4mdW>h@{ROc+5K$BXNLXdGBIuo=+3y!*Mg=6TBbU z%Sg=fXbZp8avkx4IfR^W^vSp4sKEr#FQfn|rAD^pIV3@^8vc(+#&r+NfbL{b7sZ(HtIeK&4@pBq{8Oz9l zIsW)Ltw;{d3CGXrMB*SM9zUlSiKCEo{G34~26OUL;v}RTKesD7&Vuatxjm7%2=e3q zMJj=tkouG?nia=CIA9OK76W()@cdy4j4|vbq#ggS4l)>L#9K%|=1(+yjq53Z(Mbjq z*Ae>)8OQ(0Sq77g1PGZ#rWgqlvW{QC_|uH|3)#mny2xOLkzgU`_$5~v%rX)paoj(;pA9V-+b|HMlMi_D1< zt{xk`Ww69ZoN(>-e7h^8Uya#5+kTi1${y1hOP6O;R!h z_-TX;R4j#Tp+T%Rl6;}@_-BzaP%|f0XgYp1N(LH60)=MrDrlpt;0-D?VsD{U?09@z zj~)LeT||iegf_7Wkt7Q3VnZQG5ju`vjg^7+Iue=CdHfb7h9p(!I(}OsfkL;KWjkfb zFE3mQz%H)@8R)Jft~K|H#YeJX?h|8l*u}s#0~q6o{vsmIG!GmblUZ~mwdTR&OQ%d2 zqO^vXvt%AVzJqb}jFbx_6pToPFiMVrIhDc~IlGKh3FA+bt`;Vq#?hH4iR`gpHNw>K zEtw4VuXnQc1EX992MkA>XO553WpH@i0bj=p@D4pTn+3Q_pkC^~M#*ZCtOm(y!kT8t zz~Kg_&??Lx8#872R}+b!Fef$?k`7^>97h%`QCK)OX34;bk!oS_*qAMnE@A2T`5YNI zGp9{hK7Kw|1}==W3oBwvcTr2fOTCV`S6Dm#dAZy@m!){oz#?nKfjY#bY}u+kvu z7dDTL1u}4B!3Kn_+Y#$$?Lu5$UIX0r>!JJ`1MR7bC84=XtWrqtuuzO#; zCIhbT-Ix9hn;AZ+*O083He@grX57Q@-Gb?zS zK9v#(6ueBvG8y<&re<#w8v*vS)T#v^(`Ql%7R|n<&!sqtWWplXcxptA%nj=il zb%+E%9Bg{7QzZEJ*mT|{gK!pS(Ht$-zt1jVTsegG|FTyG5jPNPg;>*3p9~@y(Ft*; zA7aBsF|sSfoBjexG$VULg6USj3}P7B7ZOdz0U5+H;$TTK83#q;Xh}91heYCJNimtJ zGccI5MP?EtvMtC>#$g$bchRXer&4dmvD92F3e(Yu4B{DawJ1$Tqax`R(oDuNF=-D= zy2&^$5>HD8CD6`N^Ri?T8DhjBWIZL`mTZ%8LX6{M$uSuxMdEA8HQkw#K?2Lv&yr`d z(Dj6*TF5t9vDAso3A9`>eI+@1p}=IEmO&D84uwLKO{!dw<*MmoMh3~u@wZ$v-A9tb zh`Xi8^tBXh(Ohi$B|0+Z1XxN;e~m=Wh?}L<^fywl5KEcqZ)atY%A8P3x#{obL=tYP zF#T#?BnLvJ>F*ar5@o3}-CAN#<9-9gTHt6+28tVQ*zp$er%b#>{F9ns0pq$12Y~3- znrloy+?0Xx27Z=m#|(GWGDy4Oj<>QDEk%kZla&8ULK+#Qv+%X%I+GDE*6!;_(k%6+ zAL>}D_(`jD3*6afsp2BF3@Ht*bUS8B%8aCBVc`#Ckio)dTN+JA)cio36Kh7NykEW4c4-MN($zed?50 z`b!$G$}Romw6iz{Vc;nVwhW3DMyJ9u^fZAj^RVf8PdVhX1S%~fPn{~uC?$P` zIn|aiatatJwv0awR%4kk{ex7WTFa#AvT}8nDGFA|;?!HFP5-+Ttidv4deut~SDDjj znSGjCpkC$MIF2P=l_(Q!;K&>$dr^|iIm_p-mG}t^UIrWU}TlP#pOOrzb zBL|j!)17oVG%}JZ9GHHVA%`YL9Ic0@$4HtPak4s`JjSG37;&~bp1g_)v@#MXIGy}3 zOO8*iaRazo;b+-$Xk)m|;&O85iX0zdxMJ4LDn3t(r7OiteB zqe3}!FcM*LJ276BLnkAp7WWhONa$iD+TwA-r@N2@TRcyU*Te+2%w8u(4A#wpRav|# zHHs5v@i{RT$)SfiH5T6!W3e218L1ZhPK+fO=Q@%=i~otSR1SU2(F*~TKtCgqmcWyv zGC2$|;%^BeGRTO#CHUm1TnNQYa)o*0_`3(<2s%gC+jts9p|JELf2x;pG3297jvy$v;cP$&z&PFA^!WBvYJe z7N^{ja`Fes@vz8FzLSWjMSf!3N`V;`%-5PK_6`zni{iv61@p5ipAvs-8rFa{I|kb_ zr=NT;1*@`ToIH_;k0p~zFw2szwq%|BQF44O*(ZOJNR1`uAlDYVV{ggB?r(7tZV7rV|2&LpuoJyhWX#!P3`O~DUg$iIx!B)VU3YmbMuLDNDk|aWLjHJoPc^2S%S6o#2JR=u)(}6Yukwn zjL2b=u^emri7SlCVT-X?Ylqk>_)$zYT|xsBT#$d+5Lcy!D3q#n%__E0kz~zCZB#5- z1%mhl%afkUC022uG-H<$F8IfcelRD8?Hh>wgzl4D^K#f>BtYmPqGBXS=so%2f*jP0 zlv(>ujuz#hVWiyJe{zHgXc?)r4xF4X;nV6ml2YrScx54}who=Jd~_^WqA*OU=^3f9 zj!*&yMry62Coe9`VV99Q>)6TBiX8SBske@w{16k^XQaV8adL$D959k1OrG39=a7*` z>(t57s#vxr>oirt!HAArn4x?e8ELW35^-Xr)jB8ML9=#u5bl9s4=CzW#O>Av@gabu z!@78K>2z9`o;qFD+lV9WGBk=~39;@mE z&$D5#7?AZ^)nZ>D*)wZS{8%h+7Hh<+J$ZRY4nB;GT6HIPRC4fTWX!5RIa15PkCAb! z;pCPU+yDBU0VeUT+Lhyv58NLzC0&Kn(giw$e;W7jFV1yzYt4IN+s;$l`U6htj$KEB zUspc~;LkT?-ol~y6bPes=My7{HD-s?Kwb}IeuCp^5Q{W@9a*g4bjl|{kW2{9r+fkg z$)wdJ+R`5Fw=G8+hRq#IzxnzMtz$t$gF4*0SxU&Xt z##_#**v55)e&HaPCOS+t77swJtxmocbkDmFN}wdRmh{-<|| z8a$M@9g=8s*eQR$L{bwQeNu698S$z${PcO>R0uF4S+ho*8vRlskdX~*_a(DS7Fnz%=`{9|#aoh3Zw0182n(2KO*xH&pi~HDtkx_$eK9x{!Whw6<)=Rg zNriAm^w!kVUx%hb1VyqbPUA1rGgy_U3771OHSN?GmI{$9;I1|O)EJ%$QH-dp8K*B| zdeMyRTQg5@MWjLuBb(N&(_4|L5X;E6HTyL2GPwh5&S}ym(^_*+e;p;3BEgn-iaP+s zI&N9>Pw`!$$o8yPPGu0C3UMsScw2$kUAX-WFAQUSD#RNRyW@magNR)bH;VWg;wBLn zA#N6N3E~zJ*CK8eaS!4)5g%as?IKp8-XUT&;!Y831bD7X#4#3lu3N-O`17Sl#L+e| z_KJ84)9e%RHsXE}=VAB(5$7Ww6!8^Ib4bJvnD4NNbr@zu#4dQHkBYbz^)V4UV)$_p zhhUfq5gRbyNfBScFjFFK!!Xk#o&dlq`Qq8IizM$qJB^Q3+g=tUyT_lR%MV1xd=d z1d1gqSW+e=P$F3&k}@fQQppOHlqm_6NmiJoOiQ3#vce^0MgkR*6(K3J5~!4{NJ*KK zK$T=gNy@wgswFF0QWhjoBUv$$vM7OC$%>VfB?;6?R-B|POQ2q|;w5E80u7RtAStU7 zXq2o(Nm-LXlVl}H%DM!aB`aA{HYCs@St*jTDS<7?l1a+81a>4#E-5Mrs3j{;dR%C} z0(`BT3JL6?ziBBv{q<@pBr>A=>MH)BKr4wct>qe7em9V0TZ_1r%&ZMdF zaVCQOv0<^kDm_iTWJ{K^Q^h6Ie^q|^)3sEPv1o>`Do&L^^HVGlbLDB;WxyOu70->z zxMit+TE^Y4YPcn5iKr~KWTi5qu+(u&!I;KUPnMFAy{{Th(=U^s7aC79E?J?_beak4 zsgTA(&I!$@S(o0nrR6mHlH~}kr#Y8w|Eo5hT{?@mV`-=CG8kF4bZ{$^F}0-IHeWx#Pq(U}J{I{*Q zP5f~-EzJP>*hDK?T9jlzRnBAK+7`ZE$$ni9w|u1pXQc%Fqy+sXYfiEPBug$OI4@a& zHe67W3OPnBZIEr?)VQ4rxr_wc22YJUsgTD=fpv&TJ|m&FVIo%;>9vlW8dYrMge1&1 zdTLasLIES;wy{&AMkJB8@l&H#BvH1B(;w(kp^ycOuuYy80=+`Unc=G(;fyeTca<$W z!%5;Ij&O3gm?NANF5w90iAy=c`C-0{3a5o}YaWY=GsU>Gjv<^O=1XmGVi>o@F$w32 zD>=eBV!rGMr-rMzgtNuf9N{c6UwDL*!!=yO`C{CO#nQleV!reUr-$pfgfqtfUskH& zL@{4`g!99^=W)iEFI2)c6dd5v3BF=UDgDmJNmm{Vmrn2%OE~+A8=qJi@%=oHhOgxt zxrA@(`MZ03LC@ngNwc>2rk<~+!zo@K4QF=wYC4?j<+1E@yPWIgfpN-|2fmy{#VJ#< z9u~1-aF&NJ%EHMVzJw2_dw6u5<>3G)cX$;qr+aXghZhwmcX$Y#MQwy9E5dpgo7^;;h?LFYd8+;<_O1MBEoT357%%g z*2@tN!9;{ZuRgBfXbg8?u)e@in22!nHNZ6-kPUK#12GZd0BneBZeIcJn_zKqEG8lx zgW*mIrs1$`lp`FDi3o>bxOaiMI5HdO2uEZh!jTwmDqt=S&L%m+L79kfFgC?C9G~HW ze-;kMWg^1y*bLWjh&Ia+4$VY_L$W!p;V5mMBOINH2uEcLT*HCdB1bqt6A=!~aFI64 z4aaJ@^qL_YqlpN|W-DC7;o2%kI7|}}4$s!Oh9kChj&P(VA{?P@a194-n;hX_O++|I z+u|CI+qOBv@tTNmoVLR?9J;AE!XcZ8aHyu{8jjvH9O0-A8kuI0HvGb`uef*><^x!?-<;aQG&o*{@)qYdDfS;0Q->BAWXO4!MSdIfrMcC2gkT zeI-7ja8&niNx{J!e^klsMs@sAg@ZZ%sKVi0C9gFO19%bfuYVPna6nMa5e@`+A@Nmt z4VQ38P|Fbx1$Z%WnXCA>1_uTIn#zD<0bWiV0{k0Na8SUX<2V-J<-{QXe>CHufR7+> zEWpc&Lx6upv2akp1LNC!9{BQoJ{F0G!4mOIagv&6igVLEQ=F~lnc_4SPY36wc{(^- z%`?SGYMv?1P4fhCw)$3>0_VS$4UlYuTTu+J;Bt5zm?SIUsu53?NwvXqDGHnlLELT= zQ^>W6&8v`t+WJpR5mO-w-DYz({5R_b*N2&s@ z8PP4Y?TM3*NQ!Lxr$-6}6fvjRc5v$b3=P4NRoD(seJ)wK&Ed@V8KnY>S;#V*XN^PEJVVA7I=5-eSOojqVSq_yp?=xej0?HVvHT#^sl%;@jMw)ECXU}IVpn{PW zo8Or+M*)tkjLkOxGd2M`bREf_IpFLlS8Rh;Tj1GIo=A2rL1z)q8 z0ac8o3L$4l1!A~BA@s}z3KdYztTtQN8NYI{+4+@&9l>8(uU@{it}!BxHbhVFFI0hP$ ztRBf4maGxU>Xocf$r_WaKFJ!#OQ=Z!4J=NsBhY@BU!Y` zpOPh8>KU6Ucf5g4qM$g7ex_3a9W2taO?h_IrGQRGYOQH!FLmP&Mn+a`>1Rhh3S6y- zWX+aw_Ij@Zx|x$AWS+%5)2DzQ#`vA+jl35%ttC3%F$~K0BIWJ%yy$R>IR5VJt`}J$rpt0i%q> z3uR}C&&(-cjInK7x!7??c5D?-iON&0;vNo}hZdlAX5rH1-yf;lNd zE%w#C0wx*jx7D5fC#=X6BXXghcic2%E4GHSmlhN-!$_*oNMx1~Cu`H$ON$DaW5n6o ze0H=XRw__v5j%0y?#@H(CA5im9+GHt``Pmw3Ya%0*!Adtb`=T#_3@uyR7|%9rZ8>m zz{eI_#*4&H=)~%6Dqw*nK4I%ROMYfc0gH@H*}BDh2+6Fi=j^3z1uQXV&ekj5Lr7+9 zeP`!8>>ff=YV8*r9Lb_>fO2xYfh18FJWF{-rGRA?PH!7JJ5noPg^^n8@Yzcm1*|f% zY8w%68zgJCQ7n*F0c*_C*~ZR}bP8B!Bt;lM`?X#H8;ode6L<+26tKydLYNfq8YEq| zsk7%X@h#@G3)5$}_Sj=@%K!`bm&-wkf4LH|&!q?Ep7hw+$H$JN5?>ynTWg*b`)S** zpAdTq^VCl@MkIJ>_}P)W5*L3b+4U3txa3dB|C@`y`PywvK_M)jJ@!z-wh@WHuyppK zrxJD;2^N;mUh-0cijfdu!f`&N`7wczn;Hv~JV~!Ua zcsKbeLC4s%ZS(9g5=N5?r2*#g~-W!%0dUF(F<@oGfAu;uH}Z5X(e7k613^mB&0wl{rQop6e^An_C2&i_+7b`^611ov}#7doW{)OM#-?nZ=j{38#mJV;>zw~( zKvHb;rX;+X6D0VY^QCl1;sxLH_-8Vd;KQtKo8LKq_l-nl^QS^M-awKl1f0jRN0ToL zr?&;3^G6dB9Ef2d@B!qc<_%9+H>vMoZeE$0l2mSo_5DxMGl77A5pr8LB!LdFEIK<~a+i=j&bHyP(|3Pv& z=*J;GA5G$*pa1sQq2C_23h-XOt};N}1soMCA@tc4Z1fAUs3{lXgD*k443i`a!}Dii zqGTmszz<545XMrFUBsTJvN3+wb!4d*apwv?;zy>qh(A|eGUY|W`Cri#JX&cNiRZ>r zC4{py(l3(EBc3T!LIh(O7s=R5Tw?U3nklYJMyX~si587{s^KR;?wLL4IoOUAje6`v-I_z9WkciNPYz)1N;)_DfYCy}v|i|q5v zOICW3bDnj{DlT%*vw5Ro$g+z(v8-C&J5+{LD#H)El(^1QXMpMpxYMu1rJV{~Z6q~B zt<(_pl2Rur4Hv-cuctI~c>R$yUKE}i2bGZYED}5|SgbN0JBk+rzg%0SCs325v`U~& zvYI8O9eZdD4=jBaQ|P$3b{+@gN=RX>>!Rp9m*p#Ctn;GyJnxcqUzD8x)r1n{%u2f` zJwKXMLMkKu7iCY$z(x7_(JJ=;v&ndI;g9Au_83Q;i4VYa5f>od5OF2qO%YciruX$2 zp1rT%67@l;=#x@qh9qT90#lMTEGhF6n3k*&Nm-DVTtH)b;R06Y7 ztT8F@lBC%G?&ni4*Q7AxQW*O`6TjZZ%Z0U7(M1J4KhqfLyQq9h2jz~5m>lgJzav0gTXgD|SC?S`T&5OpTWb2}dNFH-~FPe$u zGtzU>axPAqVGoE1TV9+r!_MGyW!MKCVAJzSGwcjLSB8DS0X99KG{er|6H(X)9AMM) zNi*yW{;b75-~gMRKXkD(_(K=_fCFrL{`AGp;16AV9`lDTb_RdwV$<^}vdhlEztFsU zurv6gC#0T&$J%ImWUkO*9-NWrG7x1!k8WcR6fq&YhhpSrZSDmD2BtBQ_I9X7|N?Z(~>*ls=n9i^2F`qW~$vU@410N%=pCd(*C{wl!T)q!C3xdXP>8L}?>{ zpost#5qnTXQ9)Z3Z&zy73HRrqDHJjB$@F9>sa=C6wi%O?b zkvVF)eoBi@r;~z2FW*&XGvPiPEk2!2{gC6Xv%EjWae)cTG?kD}r-gd-V}sjUt6qZ~ zS#F$?udRVRSZbR3-H~+k$(~U|JhC4dpc|97I0LW^^}{cxbuyHE_mq`_#{w>2&r7 zkj&+dsrOmwR3S*#a_7|h>~xtdd%0^$%SoqmLdjWvFr^t3F)Tlv5)VhaOEWHaPrb_( zZm@Th@|MYwmrmz@0FGUHJe4PJpI`;cJyTkd@B@4@I)7O$Zodz8*E)BEyt+ywLRknFM=x>RykT;vK}W~qv$ODtVkrdMav z>BFuhj3c&lREzAYES`o%+kUbgC5O#`4&dH=R$XD#2=( zpToV<>8c>NmdB@3>0&xv6Dqw`2f+Q{nPXDnpof-tG zSq_@EcBNCJAYPw?r?m&^)Fg=C=R>OV{X9Cqz}@+BmILhlIdob)4_@;c#P@U9^m`@~ zpTc*Q#N~)->!WmP{sGBCmm_zR)htKh_^JS}&(YH|`0pDP!C&hWmo`4|ju0=yJNaAwb^sAwCx-Ur0a{RPh83*zDoG`5or&GI7 z{5~hDQ}vgpI-X7)KNPu7RnCeIeO46+{;cjXA)nQy{IBg_Z6cjIMd4n{Nz>Y%4C)fZ z_w&)|S6&(PK#++~$*Q|R5|>k^U+q;&&2p;hE>XbeW7C><20avc{642CN8B$RaeoG4 zPO;k&W!wD=E_EP-x_>}=-_IweUj<~)BS9uUrB7=IGw87(iOU(&e+A)`Bw7njn6kv!~x3%0TQsFiMBfi{TmQMKd0?=SGa=MvVGQT0{mt`2ni$XT$WX z$PDTgWa5)?T8k3L1xZ}aoqivkfj56ZYL@fVaY4L3=TB=f;~!CQ3kpXvWOnn8U(pv>o=3a4KtXHdT&x0Z{h zf0vqpyYj(N3j0hyXJp{6T!P6Ym+|Yn^3J9nw)tfLcs_ZgWoFQTC}H%Id0NZLz(@&X z{F7x`%g&%dLG~_}Ousf{(9jQoqm=TQ%#%eKH2gy;uJ+IBMtJnIx)J*F0#f?FwL-Fr zo^K~RiZke`I9%%Ild9c=WV@ftpl3gvbho=4U}kcgW_>2>sSHF5s68J}Piv<$XhbB< z`CK-wv10suW_l-C?&tDp?S2N0{*WPOQ|%d;O#yo^ldVHxeRyY{py-VR(q1EKsl9?@i3>sOou%(|t6H6s*8DP-NQYl*o8MLr;k}X3FT3I^9mSF~M zES+Y{QwH~0Dr3tt2JI}JVao`E4wlNi)t2yx? zuOoOqVk@Uu7dXvz&W=?Nxzq7g5GU z2JLwRcJTA1Y4yx0SlXX1PrureNnS$Q|MAN7rdKBI6=ctH<+Rm1lf2*HmpFI;RaVZ2 z8?=v4$=j)#Ul7>6=Nuf;|0jb=vBeNq&Otb6%T%xi6FU337Y6 z8iT7$@)x9c`TF$B{h731kXy?&)1{LKGUn8Ls|l#KTuu1bJ_mVn z(!Dy28?Y=9_uW&{gj=y%mBuYt7LGfwT9w|p8ROO~??AX2%Na?qd!#1uA&&v-X^&A` zfK%n#&#ipWsYY#qEFEAe$VrZfObU2|5`vv|(@B$&nRHOFaA&=H$Wi+mB+7YLjTJ*Y zj#}nEYT0B=CI!9$33fK9EFj^|#$6KSY{K0#6Qh(+}*%(1rqM;*d4zP(rYC1Z{Orv=vymb5tD_B+5B9{i-$-v*nmkDsiey`LL|Py-bRFbIDx;IpII; zRKwSk?7*k^8u{*?_q&EniWVi5IVYyI#!QM4XROVc zc(x0q!s+c+;)HU}>EkBxf}D5y&b(_CS8OZ>+PGpLXHvqO%XkQjYlE+c%II{G13f+? zD(`QelLwi`^P8aZ(#3Z*rR4cdP-*deQ) zhzi_x?w^?&QRI&Ez|7gn(M(DbQk^qk=G|B(9Tnu%^1+#k$>*7rELf{Ea3*?kJd;uc zd*}=To5-Y8!5%q-XJ+u5ahly zY-Y+ki_!(@c81T)_+(LrAdj69s_Ek0O(&Z%K{jJR7G=JvayO%F{ysj(et7u7EXopU zlQVh-k4I!twqT9Um>Df7i*f|%a2{5rC(07Tv&it~sz-@KT;fx1$6>ZS6EQs^i;N;e zlQV8cEOFGn25EH0&sZa~u<{M^z?m?kMP*U0NY>#@oRRmSBRC*DIw6bl-duCvgMNJq z(&Bj&krvMz&CA3r$`>UxIg@ajN3zHySflgk%xqE?6$sMdOjf6vBu_ING(boyTUh6IoOwln!T_I>u3t&bjV!49^l@W@l0H8>mgr z6RJRvMrXR}8;}lXhAJ@GqrjTKR$v~Q`wi44XV%Qi{4BBv(&)^d(M(xXB1nfbM-`aj zQQ(cgR-ieHO5Z?javIUDmMl6cSfev{X0{}YP6^WC%u^+%dX#wcuauZTWm$Ck4df=L zNu4xEqq9JrG)RZDQ2EC(l*s;3`|tJ-l+ffXo=Kd%kVR#0z#5(AnSZ#LMP~%*a9Y%P zq}FRR3b1+~dpik7)5E-bJ{=gFDHYgtq-NSE`}%xrZQofV|Rd0G{J+@tv0 zf35i1EUI_|waIw~#ox-JbAmNG%V%b9XVG~Zeh#guiCZpP zVpr5WBZQ?qmf~0nWhtMfc$UIgGO?7vQaDTd*^O zqAP+Na$cO7dXB$(3UXrQ(oEdscotO&ma%eqW@;jft_pJBc?I{)J=t_kuy$u9Zije< zQ;^J+D%=3G>AD~t&Z{%;e6lgpIWbCEE2Qnu#v?a(@FkrUwW9dlA(^}#cs_mTIFL;> zZ;&z6Sv_M7$fg^D#5k|dygZmqHw7`Q)VN8lAZgAUGY%-X1Uc@!=_a=YF|O3kywAv{ zJ8v#xYYx7inT=}<_yTa2!pT_v%T~A-I7eZugV+oT=dO^|sPN8;NfmoW9{b7-23J|i zXUk0n*H|*KrItZ8O9gDX#o#(ig>1RapoXO)w%lP0zKbB24vN`=uQEuBnJxHUg0xuJ zg0DeHO9@->%?4>HWedJeAuT7_g6}s-%PF?ts}<66nl1RYgtU~g1z&NHmNRVG`R+nF zTkr)4ndU58@SO~4sbGr_Th6fs-^P$>&a=gv(_CN+zCR(;Tx1KrW+5$?*n)3eNXuom z;OiRFa)mAUzJ;_@vc+?asYDDI(|>^5wK#9hsCT)+hX3*QjCz+Ftm{vAW^B3HR405j zeWh;Zyc~Ojd9BpXxC^Nl+JN(}WOoG{ao&^co?y?N4U#noR=3h9S)*X}D@~F$33hj- zS+Zuq_O7%@)*_hiN~>h8g56tbldMg!eJl4RyDymkO8bm@@f)oDmyVeWJGJ&%>6}ro zVne(Ap=;*ij@Gd9VCK>e^Imy4qn5>xGVM>@GnaR?ROh1^`N+U2kJ}{h&TSHS=Qatv zbDIPfw@LS{5qRg;2)uJ^1QxeO_w5jP=XMDE|I6+0|MPp^|HvC#6W^jdZ(4Ga+RV~F zyL;j0)BXlceaQKE#+IK=9fCwSdvLokWmBhMEh|rEu1pqWQRIehUK>`PdfvNCJ#GA5n!|+1hn$cw=vSrZb3Zc!_3$AGMF{z@>6+)Y<7hKWi<5ESND}*+mkT$gW z9(gWkbA{06>IGM{x$0pI5*5PWQ1vy&i>imwBMPBMR9~YLq2qUvvqAZ0IOyr_B^L&)#+?XSC3xx&Bt+XA;` z*I`Rhq3+N8raN{Q>!gZZMTM}NsNQtP2IF0+Vq;MuY$)E7HtaDrNQAvbg?c{oo9@_V zY?3Or7Zt*`Vzabir?EvM>@X^XokjJgJ2o5Jq>4>Og|NAJU)r$WsNQeKKBGd|U+j=7 zwj9;_?bvEm2wRNmO?T`%s`uNm+o%wB86V2L*m&%g2pf(HVWaVpv|;a2z2DxtgRs}w zBUNlas`uNm?Whp88`Ycc*n#Ym>9F&t5Oy5iu?XJ}QJw$3dxLA5y*Fj{Qf4 zu@@mG8Uhkumd7j*Q8O za$ihB6vE^~IWp!W%8@Y-QRvPJJ2Ivu%6*Gh*nKf6QBI3Fh;mv?OZf8)E9|P6nD9p# zR@gx?HBoMfnTT>rOiq+DVlJYb5z`apf|!jc7sLcbIo|1=I}oNQ%JDEGQI3a6igG;6 zNtEMZnxY)9eCHm6iHdSO%u9F_@e4a%#m@Z%lNIG|n42hf!*oS@873#v%P?J$UWUnu z^fK>XlyhNnBApA<73o}03L~m7NW6 zc$<84CVkZX*8bUSdhn*s{m6`TzMYqC@cPYEMK(PY>d}vbGupXqeE1Ngb7g2o-e!P2(sX((y})Y-|HJV^YK?7o)2g>0zjkMK-AZdVnfB*Q4wfciD2& zERplaasDH^TD(bODW0XHEG4s)z)}j1Iw+2c!u|C?+q+>=*}PHwqzAu{fJ?k-g>&g@ z%xTcoQ1dwF&t%ES(g~KbSjuH7ouzEHWUwU%^_a+}VR1MgJyM+@|f#p=Tmbi5_9oymM$okkfkPZn82x$~NVbL!&}Dqet5` z-y9kfHm_vI-o;E$zrUm7Y zw;<*EvE5{SdYVlO&LJP6^y|lWl|lW4?bhU>9P$;?ke+VSLR7V%=@~XHG>80zGOB0V zq9?<0XrEw@^ep9t`O*sy=aBy&+T30!XB>N1mGkhvPpyVM*C5u`ycwrR&y(apNqrlsXj zs8C{ci%mP8Lt%oH>m|0GTKDOtws$8~4f^$yws+|{6fTkt>8EU^lNmV_A=rV{)3&M1 z9EucV-)fm^SChxpec$8i#uvffxQ81-yn=;KgUJg&h%aG3zH}m1Nz2W_C5#gM^>S5o zfk)Bp9z~CF{z&eim{nCYI!GSX^E#DB9cL+ua~u^_3E6t&(KLGpa=iHuK`x+!)KX21c=1{ayO!|dgrAWWHs}$>(b`^_$c~>dXuh_Ix zITRxbIIUOiCM(mcY}#p6^jZDtu5v-Ywo5|vYMWN33b?3W-_28{*X$;XU%g?|&Ztwk zrr)$_RtbTi!wCZiDc@r%5X!R}+r#QN*dOnf+Fq!-CH+nvWa~r$>3p^r*S+#T2<7tXQ`@^|Ig}|#{Q>yu>Zon%c@AX@QnNZ{`{Q^HOQ;G*FeRBbgcT@-}@QJEJ)|-es>;=AYH2m?Czls{!^|e*={Y(!F}nuI)F_NkJa12HLd)20A6k7G-n#~#jlcumERur)RKh*(oMuvnJDS&C#Sj-?28@hG-jV~37e z!*@IkbVD32el6LqB^$6cD~`REV%Jg>NnA^{TT{`|KR`LMcFe9FQ%dm1G`p5&pqrwA z+STKB?YMzz1-Z3)!v6Avfo=(s@hRPIO;-hseaNtD8LEKPwM@H~smQUlEW6xK>2#mH zt=NDqQQ+gNWHT$A1#D6HEO3d!RlubRhpv(Bq{3<3ForcX^*hd%0tQBwPOznrK`u+_ zY$;-p$5IAciW%gyl*tw|0~1SGY_Y7Vkz~o58c7~ysg$LYEM>EFilx&mc}DF2(><0d zV=0GoomnI8l!0#l0j-*^XWO;Y2D&4NNzbwGC`G!#K2>I*I-yjo8SS<+2C5h2+*+<( zD_41n^*p`Dh<@)K8}8J zH&2y*%Ki^k25J>bwSL;JT{TdfAa#0~{oOSK-4~=mKVz?-tTs@)U{!17cI~=4y=MKa zU8^xrhfrem3cGg0K%IiL>gVkLaMM6tg0$)9?N=si4fH^;a{YpR{+59r3X-Z{wA*eQ zs9TULYnOIUuTQ^he|N_~kA%{%U$IZs8R)Sf*VZa`lMU)scCFq(Jwkb=U$tv@4fI5i zQT>`ddGeltdIdYXRxMedV3ljv?Nbc~>KEkdT8(|G(Le)&l&{^eTl)<(_=g60g$)>J zNZ?2v58;R_1~>|MNa0}MVTF$YKULTZSKBj%!+}Q>&O@3}h4;Wdrf>rAbA|7+Gd|`^ z;T~H?89ZUBfh}VUdRb~@%X0?(EH$xZoWTG~&1{)qFvwC1TlTE0I6K5rD@$H14YSn7 z(q5LHv2>p$Z|@EFr7o8Cvvh!^2P_4wQ_SSJfrf>n99+L?zdJc$pr?X`uh-h~!(}5q6D(={mff4Y zj5H!x^7?JCy+#@p?AZDpFmEG`33hzF4*7hH^jxrv^?ER0BaI7IxPBKY{fsmrn0fsk z*ghle`4OySy#Xox)$!8T8||@^`;Fu!wCwdJ`^*6&?G+?zy%|z~k-P=VTyL?@95j-T zAeYx$?Nfn9@)e|Vz0E!qWF$X9uC3p+SZbLq_r!Bw@Y7ZVNHeenIZ6 zciN{yjrgiLNbY)<-4QosJtJ{4i4gM!>!@3v1x8YxhahV@7G zxXCCZ1qs%;{up(QHd3%)P3t}O!;>*aIwV;0`V;%T$-_np5v**z*FF`i3aMJ}v(LmC zDO4x}>;3krcq4@ga$|kKZc9*=Engk9PbC^DTqwiqL-wg7s!D_F!}h4jBqK!#sdW7* zLda1gMGEG<@yz}z*+@}>_-%~XeJI69(Sqf#kJ?|Q8YxDQ0~=%ZzZ^5tVL{^7pW7QI z(~J}=Sm4IEeet-F;slAwdG%lLjND2v)Sd56oz! zRKZSc_|LXX<{IgkU|t*hXIm%pjFcwW#QFgoA>T;H1vup|Ck}KE}$T8|1Tb^*P^K3D5t_y6ju;n6KO4xFVEun0=%$9II))lr4 z@Ube{lE%5J*m9Y3U1dufpXoKW^l~}XZ0X@#*Vz)vmKwJ7ajV{7OAlLavgIjTYT1I{ zCdu82TWrC%^Q7fATXy!`cJ@U)UmmnI;JW=i+-zticy_AMNLj)!Pp%%CwKXZFZX;yY z)~v{d_0U;ciz0^guvuHHA{W=gXKihY1g%EQ+U_fIX+3hbUG8hbhZTbFc1RoCxl?abzk9#G8YxhY6Pwtlp z&OIOze0fkJxc87m@aAEO;NVXsfO;B5l2pHYc3|C?i{HBf4{scw)%nCQl{kc>q$hr0O zS?xeB6$w(Yo-u0;;5;jtv)aL2Di%uqM%Jtrm`i3s#x}BNtwAc;nbjQCkY_y_azHjD zwjrxt19xs1RiX-+C^nZYKMuMR$<_LUyjFLGhrwQ7)DlS`OT*mhds+JKYP~EFyE<>& zSF-1>j+DH=C@FxCwTBDD+ru)~&d*cuI~AGhyIT!%%@8NjwUIZg#pP0oIIEtG{8{Nl zAQej{)j{Xn9V9#Jyc@qdnhOuSFiN5Dz_eUA`BRM6xO)4(sGEpCTRhjFwd1)|`Xkc! zY!uIGCvvfy0^+Zm)zL0`xWhB)4({#%zPVO1t7VEDApUx(%5ljf$A~+JJo7=m>QeY| zT@7cICtDO_2g81u~RXwhH)MMgbY8ct(r+6RA zGty~SMA0b0U$2~fRV94q8s1jLx19!4;X8YVD3V*ov#X>>dwwBBwiVLXtX-YeYDB3Z z{`xi5-qo_bYjg4SPOl-+-r6mZ2-si0uFmSZ$64(i5}y*#>O>-7fBl9ksm7xuZ&}hk zkqFpduT>@8@F>a0U6O2sJKPAB+|SW`q26ZcI!iGu-D0VRrNb=MvUG!`*e~?+{aiZr zBaR#Q<@W6R_FOtGNc@*OvsyL zX9dala&K09D9#VWUvHRw^+#Q~^$^h}#+f>Wn z@@V;e9xeafOZGQBQ#uq%FnnpB)x7d>91wrKLmlU~$8r2Uj`LkNmxUqOt+lRM%}*2t z;;%oLeeIuzCw}gXQkRae3hmFMb3cOQed)$z?ob}SF|>b(a=9Jub6e)KrJXG%wsf$i zfGwU*qlJiLqfCGO(d@ghJT!XUC>_Do5S52UKQKgvoXxW+cE&!^=t(jsPxI_#`I2Clw9=KBe$E;L{36A$^&`S7AS+ z@J--yh3^8NRk#tjLg5zF=bXYulyhF;PNcb@a3bs%6&~Sks`{cP-)6p*v@p2Jl7%g; z46d4O_s{o(#4>br88`Kz~B~3 z2+2qN~d2~^*XJ3Y9wJUjaNs!Sm!?Rjt9$gk>{L9l>ttyYM2;!qZo0U)Cf#mBW zyQD}Tot?RwN0lO3@|Uq${7fZ}ss!7=`FvKZ&ZDb>oL?KCl?#+0x$6_NQ`ht8noztq z_ssdfsKKu$1$+9%Yc6{7Mjl-k%y)Ay*v&ku5p2(<_uN!%9^DYcYtv_L>Q)}z6lCIy z@7&DoJgOBWbklEc=1v~n5+rPM-`q@H9^DpX_>2Es^JIM<-4QHkbN}4o$-8+}C)lCQ z19P#H_wuM-u#qnTb5mX7Q;8t^^@DSAJr(4{dLXLQkVkh#x&xa*b8(Z6d2~;(gPXx~ zJIz$4ADa7PQyw+Am5q=&tvQbx1-Yh&&P}!CQIjA(n_+WPt%~?iNk4h=TW<0ft&GjMATx5 z^7EER=C_eLw?htW9Gf#wy1NEa;6~c66tQu9m&9zGn422RqwXJ(?EHHAoE3{pcVB}T z)-&ehMES1A{O;h8m?*0O!MYl}B=G$A$R=4w@-T-+vWlgwx%UzI^ytSPEWB@!Eixac z16&6jrSJvJt)mq-tdlK9;R&QUtnfwHV-*gaW*be|rVBTdpFZ;}t@OKaw{1z+;Kf_X?rUd!!9+ z@I)eXze4EtUTK3Ts22+00Sck#)vE&{~*)+>h%^ZF8)WiB-R$)A9uRv@o}dHk2y(@drl&kW*R;0!5(v!WBl|@ zG%xNKZK@EM!XYq(15hzb-+y)xD{j@VQMh^2IQQ;EK0W>s#Il(?_bxr3dITxi%$s|c zp_J0i{JD3T`Se66CpS%Vud?$ouWTBnQ=9a@FrRvVJTye7`Ir?PE}}RhpJU4*u3#Bk zJU`MT1NwQELOJmnwiNM;@8xVUahkKJNl`xaiJDy4ES%Gd^Qm8u%bP`WnmL~a1gYFC zp3^M(G$=^*rg`pVNj?n;a(&Y>_p&sfh6TB?Spp@6&cAM!y>Ts{p8go((Hq}AM_K<^ z?u|(9s5)+$!z{&d%iLw@H@f!{_q>VU#jodF-+c~IR^uKw(QOXn4V){PKf=|@?TH^~ z%3O_{tAanoh<}erDVU#mywAA~@sGPxxrQmcIn~6+N@VE>OU*1Lvvh}R*uoMXN_ykI zbUYtQlGPaD#fp4xjaJ<6tMQWkYjlu#^W@wPsaQHSmq6F^>6z%ew$0OX?`!h$#3jh^ zYT29yQYpx@)iZP2jeHsr$*Nb&=d4gh1sVHrRyjh8bcFl)H1=btha(hlm)_))=;o6s zW~r8?M=YIW=@v_mS?b{)=wRsyOTXcCr?^1RQIKpx3tu7+xa2UlJmivp!!f(K!8Bern3$yjIBNEu)^5Vvp!XLXJ2}hM=?WOlRaB% zyf((tFiT!6J!k1DOM6)wXXzPB-YiY9G{Tb4mbyLs`lBSCd$aNu;yL<|_cl~s0@PXF z&9nRuEyRRoyUINrv-u7@7|HUn#@)DrV^8SajkoP}SUINrv-Ux9P z@QCd9TN|BZT&K0;t)`KS6E9w@ub!E<%0!`#CSol`u zoGr*iK7vGURn3)52AjxNu!yazV24cPCs@qZHDn7h(LTZAx2op?UWA&+U$CQF*XItt z2s6=s!BV$s=AtIUO>{u8<6Af80$)U!C_u2Zt(#zxCORls_EzoOW|WBn1&Q9eg~LUg zC`hpUt=nKRCJGkp$kv@X+hG&JFNk@oZf+{pM2Cc8*{VmnI1_~kmbrBoQ`&eFg$h=> zb#HDHlhZIklC~P$BwUchtwuMA5F}%($xR{!$=YgmlPE!Aw_4mJT9EXu*14AnCW;ZH zWUFmX_I$hS`D7CvejDlTdAUM!p4xQP-4xv}+N&U(T`M+B+edWic?x`~nmySCLmXU#CtQ9j_wniH-@@w$%$}Q0)FzAKK7pqBNnk zZ}mgVRa)oPz??15M8}2Hu{AjNGT%fe1nJru!qH47N*CJl=W=snA53 zf<4)KHs>fZQI;TmTO)JUViRQxGPE^{bY>If2=;7iZ0@DSLO*2J9kq>1tbnb_JhZ#`wAd_f*;dCfaco5&={=+@r(mt`g@5Ts|zd){%z zM1_JhZ28PP$`$ec>N}q_dDcWlLh}9UH~+H2M8$&mecd;oFnP{IX2JZw`p;X>o5&(a zz}NlrjteF#5hVEQf%(MAizX@+?7-K6`InbWbW)JLUk^gMY@$s4 z&A+TPQJElKUxVizRVF$kNW|Ae^Z3S|iOL0w{2DU<@|uax3KIJ@6h%~P&P+NQb}1%{%H%R4K@wukrKNyC$j8= zy!D>Aa6ztYB_dOUiLMGM=<5+wqtQgy1be!bH1B9q9uxlc=)AQVxr8#ll{`PyVxsGU zRBffq+geRjBS^;A)OlN*iEapz`SsYm?Y@a_3S#`4Hvg&vuKD{8?44}U`))Yq@1wAp z@l`FLdWKJV!Fp~dS|6FH_ASz%T{)__cBpz0mc@<`w*Su6g~$WuW-RvvLz^-3wxr% zr97~&{;F;U=C5iuOBS}=Vo<|U30rP6xWQ5>TkbHp$oa&5N#2!r zp15n~a9GZ{ZnEVpTYkN&^WXDSUKH1-g3I~!b9(=_)uHQL!*g6R9$1p+g=d)LE%p>2 z{XD1nx2-9i=5j7@InVj%7uka41bK8UFvz2qajr|8CYddl*^ro187P~f!+!CP-i8yr|Y^##XO2o8Hos_^04 z62W&Bg3sQOHn?$}L~vh);I`_SFnID^sltO5g6FEI!{E#fQpJi=qeO7$CW+v^%@V<( zTO@-2s;9%?((36jc<_Cx!l~8MVOWh)Plv&+JEe-J@YE+m;MnTvFg%6#P^x$euUjH` z@*|1h+-fxsPv)uBJh-=7!^2Z}Y7Gw#u2$}_x}{d`!gXG+!|K+cEDx(&YLyN?JuGc- z^QRKQtDi{(M<0<0eyvvI;Ob-2hLy4B62aNkiX2wP)QTKd#?*=&md4bI9M;CviX8k~ zt;oUU)ruTET&>8#>D7uHd|a)_!R-s>(ctB3MGlT{RyFv_D{^rCzje&uA<9R2Uzx#0S8B7#*rIT3;D%ZUgaT~0)H zT;Fpd^6qE>CLdj+boZ-z!}@{yHu65TfbP5nZun}%Fd~I2UmuqDl(Yiug#-KRx$4IA z(4FJw69rWF7P$FqzRD5n&LMaITKK-!%2#sRSJJXXVMyk$n^a-l9(S=gcYe9x@!cgn zEw_N`-y&JhM&Z2NvIjZ5Sv0TZiIPG5_2PN?SkWVo$BN=HTH>b${)H#JibX+4@2^`_ z6(4(4F~OsX@%;9^=TkmEpDdueZ;|Zodg=W8Qw4NSkdoz-^V;bGY7nGn;X4x_g6KuYhmdjOOMdv=S9&d0nc@*qMvvaeZ-^a z@3;6BksrzY^$L~0*CT(DNB$sw&c}}~zkW$2>i0;LEEC-liGcm}D=N`|Ow?FFjc-#ts@4BhO?Z2`S^Bueeq;49m!Br} zcV(IF<_?_MO@1caOUz^ujM7=@$^=eh` zL64J5^{96=*ZU~1TRr6()bdK^ua}WyIG5*|v(_b!io*T%n)%lc3-CD4&?v)E)8fu$%71kaMqzv~zAWOx+6#w2aH01xP-VQRyLeg7dw zG|2VWNS64g+v++13HWkHHONzs208B0Am`b?e*FLSU9`Li zfYZM;&ue}n2Z+DkqH>IR_ZI=Xifp*FZH}eArUK=ZSyn$n*T}RUuD79CxFAUJDba0D@=D)G3U+PvLz;A+@{( z_WRbQ?g`l*jqA?`4fv+UazT6+!7LqQ=@3gHECsR@`i-<$Q3Vu^C)89GCOld($K$AX z*l#L1F6}(f7{ZtGC6*$-ku|9hmoiFdUFx3KjuukuTaccONAo`?7viBskSqG*c`ZfM z0K{MKnb%Sa@d`M|v9%}j)?=!G=#RasZhOXd|CDR+s9Ox5TNIz$VLt7L>~7I4#jet$*G;X(*&N!4kd=%>QgGr2B#-ejA*B zpR3Xx+8DykR-8H%e|=b;pqD&Bb0MOy(eng(_1&L?(Su39`!lO4IaW5aWb5#Oyoy0fBm`2@9mL4&m%w9Y}K{p z@ffLgu8`W_B3aMIgsK@x>X$tWGT8Wd6qfHUOpcM@esZSo>3&j5`=%rVPhgIJQv)_% zkJ3yYRmuME47+<86`03HI`Z z{D9rQh)-~kFBZ>=%5e6KFP4X#tC({=WvQDbGfUsS#NM|TQm3d=%ew!<&mH3O0C}SC zUy$Ju#PaRHg61Q>vIK(9vn_aLCWo-HF5U=%%PDcgs5jWM`2R!=3?9trmJd|kVdf+x9+w?d~>Ffn(So-ey z$Xq8lm#6PY={NfCyBp&&R~i@S*-}zE#*$}~Nhy^j&$g3N3QL}iD5dX?j@7Yv+t%|L z1*>-v?jmT<@%3Qk9w6o44#7Q&&;=m=dWhr&({saT3q zXMtqp>(L9=V3jO>BW6K6RD|0fl*8+X7px&liQ9->&_cz@Lh;w*7OY`PiT)VB@Vkg2 z@rT?ox`w)fTKa>H+r93M33JhS(tuw!J1M;J%aT7lDuF|Eu#3}gCzbbMKuk`?X}be z>oJwAe(l(TmL@6y#a~Zbcy*!(E5N~HbQvqa*+p0ZK7|!zKJHaMpK7*TW6O1f>l{%K z();Tt)R`ReIFr*JXY$<s#Gl2-e-F~}HFuYc zf63b=K6?Hx$=6N0q)0E=CC|PV?vkM|MZ4tuTJbKy=Tvry?>EaX3Hw&EOD^iAyCi<~ zC?~bl778>mkjA=RojHgwmDlwPu`Y$^vJ(P{N&W z=N7bzBI*^z9n{Y+$Ty%tPOe^X*WmhV5P$vRg4SPzugAs=(LGFb2a2#q0NeyTsBk;* zkiuB3v<@qbMM~>ag|X0QeWoxLDy<_5V}a5-sxTHNtz!yfLDKqMVJt*i#}yvNu_hG8 zVx)CXv8)dkA+7G$FiZdRk7_Iv_ z4Q2-Z3S*Jcx?f=|E?N&Lj73FjfWoOre^B9Lz<~;%01i^v2pp_179XvL6vm>XHALYa z94k~|EHYZd6vpDBHC$mVD_SEI#)6_XQeiA5TB8)kBBC`~VJsh7V-&{1q4luBSTeN6 zDvXEztZ@qOJQwQyXSL2>$5(RZpVd^(hoyR!vRLwE=`KszEcvl?kEI-z_OaB!l7S_E zmKs?yvb3M2CYEwpI>1shOL;5>u++j*K1&B#YGuj9QXorhEETX6#L|713Rwzfshy=F zmVV=%nM0hbgL4>`L?wSu(Q}%2F3g7M8+TdcaZ%OW`a%WT}*;2$s58I>}NbOOIGO z#ZnYYk6Aj+QZ!3FES0eo!_pI$&aiZtrCyfGS&C(;kEOFL#j(`SQUy!#EDf-9j->>a z23b1KQX)%3EL~vf2us5(U1TYVrKc=iV(BPL&se(5QZh>;EL~wKg{4uJDp^WpX^f>R zmX5LXoTaNQrLi>5(lwTjvoyg{HA^R0+QXLX4ANQhVoME!43_q?3n}5Tcjb^h7{Yo1O?{3L$_E%N&Sl zYWowhOd-TDwGoQ2HX_p@oGFAbrnW>8+0>ROBAP;oWNLF1!A)(BBB&{ZV5YW75#Q7{ zDdL(!h-YfU6d_J+m?E?(gpj7TP7&qQ)+wT!LWpW=6BU6@ZK5K;DTKhLwo?)73gsCg z#wmo@rZ!d)?#xm}m{SPhO}+Ghi1)Yd9Z>{22@v1@liPxbC-+(r=p;aV`#ZOUi1(k} z0D(>d#5cM7iir1L+!6wv1c+~P8x|2yZo?wbNr3qF_wK}qcyd1$fldO%H@Pv3i1#1d zX%OfnKzx%sv^x>cbB9)*MbIa8I^mzx>G<(qOM)3hd{U>g?~^)dTm*a9&0(&-}*CIQ;Ny*1JvjLco~!GVoXv&ihj9*d9)(Mzf>+* zM^f<27L?n6u3E6BDW&F@s|(iSiVXa6ZNYj%k-nws1#7w@xqrI8V9iiuWT|GsnyEta4+(#V#6u4flp2H4WWB@eR2mlwQ;*iz3+^}}3pE9ZL3mUgy`u%(MFqg+k{ zpXnHZypXayD0 z&@d{Hp&cwTxS?s}m5+ufl_s=}j9X}lQ__USk?{&mQ6^1j9T}(47BWtub!2!#Tl~G- zi_tnVDxoc8R6^^>V1%~#pWJD7S_f?*eIKp!yP9Gw(nXC?2d;x!;qK969;+$Gczef}Pbb<%a#6L3rIwvHaQK=1RF;O8RU?cn(_bDH z)9_mq9^-njV0~OnPX+1u@NnTTJ;n4)ka$=3!n-HMG$Kff>(PSNTTG*Zq`4k1yz48b zF+onadawk8#up^R^~{?=M80@hOnU`0xP}(2&x*-gkOQvah3%1I@)5-7db+SUT1>uz%d|piZ1j}=cF6(F zJ!U!}SgLCR%*#vxf*p75arn?)GaVEx*5&2!C2unY3U<`B*YP`FGd%I|7!|qb=L2R6 z`sorr*5OjY_SYYzui*7<>}$V1XvXGN>=;>G*xU*;V{_{=7Ku1>DfjhBwsuDU%(c()#|SeW66B1_-ys+DuXy-g5+6O0 z>r?Kcs24G23i%1?Zm#ZkOdU2;s37&L2OP1Jv1SSrtil!Gh<*`grf|W|x(+&8CgaT% zA=m|1AXtK#A_Y6=3Ub7}NHkNFV9l$+j;SMNiWa1O^^jvK$xJbVTy}+^{G(<%EZ7xS zsKb_QrdUBLU15&6$rLli30CC_cTA<4DPEAPt_a7}F*9yBAl<8xj_AoWGbIS=(Q1@q z>bM!Z1R#%Bqa87mC(M*6q~6sSN9$y|nT`ln?K+HX8D>fnti}~9*-^o6xZ)gBnW_o; zSL0E|EY$=zT?r0bwi#gu>7IT_bR2$>W2R)0%X{sJBld;COeuoZx{@5FlSVV83U6lNVi?7NSJS?P3N> z(gmw`9d}p@&6FWXg6o7M{zZ|QG6lQqN_Ql@C^l1;VE0@Zj>H#cGi3|b;L1cLEodOY z4yV<7D@e1;=$JZfraVDfT)C)k znL4o}AM+ejXHcFMQj;s+@xB~alSpTBnH)19CP7+V1&%+SHB*5g?XE&c(u)c+6$*CV zRfN_)XQm>-5RU)M2eMQ;8tGOD7$(SItx^$Ya+jhxMA7P72cFI_>yx)n+>7PUb3eXxGhj zT9AI%8OQq?GnEN4;3{`$H_UWKkU`g39O$N*$_49lRXDU-Go2NrbLpJp-EA{&YYAgC zjN95>bnx%1;6W~R4}8YwG2)`B;1g73g+%yroz3j`_oaK$m(YNqo-N%^JHG23RQ3xbThs#NJmJW9XzS4!8q%yjW5sAH~c zs&tT&57iFsftfA|CFPgvj&~2ubXkybSB>h&B-xKo(6m2Pd)(G9a~Q2zqNK@QGhO)! za_IU^hqcd4m4f(e*E(MIo2g2WL+iI3)&calD5YZQw&UfXnXU?@a_Nr4I;51Mr8?ya zQ1)%tJFLTIx+aqKF5Pv!d}^j@LHxJxIjqmjbX^eBdV|9{g6Ja1{_RGGHfp9Df^;r5 zsYW{L(MZ?bjU>nOLEEZ71Gd#2I+(#BmJYHdgh41vfout5i>F^$y)AU}Cmb$xy~Sbm zQRL8itHbK6Naa$SI$tE)w|(DX^|RnRV<4vWc88oSCCkZDfCVmC&R zs{ILS&@Y{;gF#9@bUCy@3*8b*#P$O>DHVl8Za;Kr$a7mLDZg~9-cFId9cn>u-|*<| z{GFi<-c1d&pckQreSGYA8E&CFKY>JT_c*K(N~u_SqRt9R^mebq8fl?Ak*s&A&tZ+S zki`m8>gsn`qg9^hj{^=Z#)9h)O6Ss`<5jE$d!nhR(Kfw5V!@v1O^lhg)s5Zr-YiF@ z|E%ScM5#z0_Ho!@J*r5>(o=^uS&`_E&m6B(#UYN3(P11ST^ynoLkvDdtH+Z(zrMB0 zFqbA9EXP9iKi&E(VeX~DLU)B)wKV2PnlxJIo?xNt&mE3j3pEIGXnova&9fkwfm~ji za5(ZU)F?>h(w;@D$wEzn6fJoz%0LN{u)TNDS|A!0q<6`C(OReqxU%H4s1=E}gwna> zyC^Gr+~Zol?a{lQ*K+cUQVTWz1o`~8eT&wUqP0N6KKd`dJY}I4p+s%(U$mZ9iqH0e z#g}CkY86V-cEF;%%0ViY4yww6ByR^U%4->i$ZLrBbzpI)8$EV*Bvo%j*{E5+v+ntZE7n z^Jd(lwZ=jZgmQK%UNs+x&vwFYvWlfd)nZVxwvQ}YZ&>h8N|3Piq($pZMcS8+saTy8YW}i`F|9>J}tt`}m@@ zPP7V0^v4s6TD|BEkj|xa)f*Y^-k7~-p+`Rf8@DqTwFV1479@8&Yf)>pP|r{G?tYTj zN;}^m@EpmnFHlFDg`SA?dE42G6_fWZ)GL^2J7+PK+AY*4*oke!;>!-vo*-c#jjHcJ zDwc8=9i0~HcPs08i%FAR78(#NVIzOh@jywIbCWir8|J!6}xC*>aje8B1oioY|)TyU#*{KjFCL+eM2dll>MN671Ys@!~%X zSZG*~if!{^;EO>EJr(Towq-Hp#gK)b33g?>WHD-T*g_+MRc@Cqdec)2jS5z^eG=@M zg~kNCx_xRf^~H#Vo(pzq`}E?$7o!#$7p!`_Z1LTgg(d{a-#)V#JBc~Tp1%RRuwB0R zm**Dp66EamSyXZyzVZjKD{B>tQxg{2E2N9t=Tw7cc{J!fcZ0s#TSDG{16;Fx0Y!V4 zkdI(Dwl9MDl#s7rH@7b>zVa(U49*^-eJ*;nuY~;m2Ke^&mBm^A651!oz3s}y_kktk z|2GX7m~)GIt}96Y@*G-PgGy+>NZ+tswP+1iq;dP|qV

P21NNts#o|yQ&u*p(S)c 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 Vvk&Q|O1!4HP4>&dM?XdMKLOs4&*K09 literal 0 HcmV?d00001 diff --git a/out/AmpleforthEmbedder.ns b/out/AmpleforthEmbedder.ns new file mode 100644 index 00000000..1fd86d1a --- /dev/null +++ b/out/AmpleforthEmbedder.ns @@ -0,0 +1,144 @@ +Newspeak3 +'Root' +class AmpleforthEmbedder usingPlatform: p namespace: ns browsing: b = ( +(* +Ampleforth is designed to support live literate programming. It supports embedding Newspeak code inside the text of a normal web page. Ampleforth is in its infancy, and currently can be used in conjunction with Madoko to produce such documents. + +Ampleforth is the name of a character in 1984 who worked at the Ministry of Truth. His job was to edit Oldspeak text so it would be goodthinkful. + +Copyright 2014-2017 Google Inc. +*) +| + List = p collections List. + Color = p graphics Color. + ObjectMirror = p mirrors ObjectMirror. + ClassMirror = p mirrors ClassMirror. + Subject = p hopscotch core Subject. + Presenter = p hopscotch core Presenter. + TextEditorFragment = p hopscotch fragments TextEditorFragment. + Gradient = p hopscotch Gradient. + EmbeddedHopscotchWindow = p hopscotch core EmbeddedHopscotchWindow. + EvaluationViewState = b EvaluationViewState. + EvaluatorSubject = b EvaluatorSubject. + ObjectSubject = b ObjectSubject. + + namespace = ns. + browsing = b. + document = p js global at: 'document'. + platformMirror = ObjectMirror reflecting: p. + |namespace at: #AmpleforthEmbedder put: self class) ( +class ErrorPresenter onSubject: s = Presenter onSubject: s ( +) ( +public definition ^ = ( + ^label: subject errorMessage +) +public isKindOfErrorPresenter ^ = ( + ^true +) +isMyKind: f ^ = ( + ^f isKindOfErrorPresenter +) +) : ( +) +class ErrorSubject onModel: s = Subject onModel: s ( +| + public errorMessage = s. +|) ( +public createPresenter ^ = ( + ^ErrorPresenter onSubject: self +) +) : ( +) +domElementsWithClass: klass do: action <[:Alien[Element]]> = ( + | elements = document getElementsByClassName: klass. | + 0 to: (elements at: 'length') - 1 do: + [:index | action value: (elements at: index)]. +) +evaluateSubject: se ^ = ( +(* Takes a string representing a unary block and evaluates it with + browsing as its argument. The result should be a Subject, which gets + returned. In other words, the string should contain an expression of type + [:BrowsingForHTML | Subject] +*) + | blk | + blk:: platformMirror + evaluate: (withoutNbsp: se) + ifCompilerError: [:e | ^ErrorSubject onModel: 'compile-time error: ', e printString] + ifError: [:e | ^ErrorSubject onModel: 'runtime error: ', e printString]. + ^blk value: browsing +) +public processClassPresenters = ( + domElementsWithClass: 'classPresenter' do: [:element | + | + errorBlock = + [:errorMessage | + ^EmbeddedHopscotchWindow + into: element + openSubject: (ErrorSubject onModel: errorMessage)]. + className = element getAttribute: 'className'. + klass + cm + | + klass:: namespace at: className ifAbsent: [nil]. + klass isKindOfBehavior ifFalse: [errorBlock value: className, ' is not a class']. + (* isKindOfClass should be defined but isn't. *) + cm:: (ClassMirror reflecting: klass) mixin declaration. + EmbeddedHopscotchWindow + into: element + openSubject: (browsing ClassSubject onModel: cm) + ]. +) +public start = ( + processEvaluators. + processMinibrowsers. + processClassPresenters. +) +topLevelClassOf: om ^ = ( + | klass ::= om getClass mixin declaration. | + [klass mixin enclosingClass isNil] whileFalse: [klass:: klass enclosingClass]. + ^klass +) +withoutNbsp: string = ( + ('a' at: 1) isKindOfInteger + ifTrue: + [ | bytes = ByteArray withAll: string. | + 1 to: bytes size do: [:index | (bytes at: index) = 160 ifTrue: [bytes at: index put: 32]]. + ^bytes asString] + ifFalse: + [ | nonbreakingSpace = String fromRune: 160. + space = String fromRune: 32. | + ^string replaceAll: nonbreakingSpace with: space] +) +public processMinibrowsers = ( + domElementsWithClass: 'minibrowser' do: + [:element | + EmbeddedHopscotchWindow + into: element + openSubject: browsing HomeSubject new]. +) +public processEvaluators = ( + domElementsWithClass: 'evaluator' do: + [:element | + | + expression = element getAttribute: 'expression'. + om = platformMirror. + es = EvaluatorSubject onModel: (EvaluationViewState onModel: om). + | + es initialSource: expression. + es evaluateLive: expression. + EmbeddedHopscotchWindow + into: element + openSubject: es]. +) +populateNamespace = ( + | platformClass = topLevelClassOf: platformMirror. | + namespace at: #Browsing put: (ClassMirror reflecting: self Browsing) mixin declaration. + namespace at: platformClass name put: platformClass. + platformClass slots do: [:s | | klass o | + o:: platformMirror getSlot: s name. + klass:: topLevelClassOf: o. + namespace at: klass name put: klass. + ]. +) +) : ( +) diff --git a/out/AtomicInstallTestConfiguration.ns b/out/AtomicInstallTestConfiguration.ns new file mode 100644 index 00000000..1ed2b8ac --- /dev/null +++ b/out/AtomicInstallTestConfiguration.ns @@ -0,0 +1,30 @@ +Newspeak3 +'Mirrors' +class AtomicInstallTestConfiguration packageTestsUsing: ideNamespace = ( + (* Test configuration for AtomicInstallTesting *) +| + AtomicInstaller = ideNamespace AtomicInstaller. + AtomicInstallTesting = ideNamespace AtomicInstallTesting. + Mirrors = ideNamespace MirrorsForSqueak. + |) ( +public testModulesUsingPlatform: platform minitest: minitest ^ <{AtomicInstallTesting}> = ( + | + mirrors + installer + compiler + vmm = platform squeak VMMirror new. + | + + installer:: AtomicInstaller usingPlatform: platform vmMirror: vmm. + mirrors:: Mirrors usingPlatform: platform vmMirror: vmm. + compiler:: mirrors compiler. + ^{AtomicInstallTesting + usingPlatform: platform + testing: installer + compiler: compiler + mirrors: mirrors + testFramework: minitest + }. + ) +) : ( +) diff --git a/out/AtomicInstallTesting.ns b/out/AtomicInstallTesting.ns new file mode 100644 index 00000000..e7b2047a --- /dev/null +++ b/out/AtomicInstallTesting.ns @@ -0,0 +1,884 @@ +Newspeak3 +'Mirrors' +class AtomicInstallTesting usingPlatform: platform + testing: installer + compiler: c + mirrors: ms + testFramework: minitest = (| + + private TestContext = minitest TestContext. + private mirrors = ms. + private ClassDeclarationMirror = ms ClassDeclarationMirror. + private ClassDeclarationBuilder = ms ClassDeclarationBuilder. + private ClassMirror = ms ClassMirror. + private ObjectMirror = ms ObjectMirror. + + private Map = platform collections Map. + private MessageNotUnderstood = platform squeak MessageNotUnderstood. + + (* module variables *) + private atomicInstaller = installer. + private newCompiler = c. + |) ( +public class AtomicInstallTests = TestContext ( +(* Tests of atomic installer. *) +) ( +assert: instance isInstanceOf: expectedClass = ( + | actualClass = (ObjectMirror reflecting: instance) getClass reflectee. | + assert: actualClass equals: expectedClass. +) +assert: instance isOnlyInstanceOf: klass = ( + | found ::= false. | + klass allInstancesDo: + [:each | each == instance + ifTrue: [assert: found equals: false. found:: true] + ifFalse: [failWithMessage: 'Found unexpected instance of ', klass printString, ': ', each printString]]. + found ifFalse: + [failWithMessage: 'Expected ', instance printString, ' to be found by allInstancesDo: of ', klass printString]. +) +compileToMixinRep: source ^ = ( + ^newCompiler compileClassSource: ('Newspeak3 ''NS2-tests'' ', source) within: nil +) +makeClass: source ^ = ( + ^(makeMixin: source) |> Object. +) +makeMixin: source ^ = ( + | mixin rep | + rep:: compileToMixinRep: source. + ^(atomicInstaller install: {rep} withExistingMixins: Map new) first. +) +public testAddMethod = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: 'class TestAddMethod = ()( public bar = (^35) )'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + + should: [instance foo] signal: MessageNotUnderstood. + + builder instanceSide methods addFromSource: 'public foo = ( ^self bar + 7)'. + builder install. + + assert: instance foo equals: 42. +) +public testAddNestedClass = ( + | testClass mirror method instance rep nestedMixin outerMixin | + testClass:: makeClass: 'class TestAddNestedClass = ()( public bar = (^35) )'. + outerMixin:: (ClassMirror reflecting: testClass) mixin reflectee. + instance:: testClass new. + updateMixin: outerMixin withNewDefinition: +'class TestAddNestedClass = ()( + public class Nested = () ( + public bar = (^35) + ) +)'. + assert: instance Nested new bar equals: 35. +) +public testAddShadowedSlotSubclass = ( + | builder Module y | + builder:: ClassDeclarationBuilder fromSource: + 'class Module = ()( + public class X = (| + public a = 1. + public b = 2. + public c = 3. + |) () + public class Y = X (| + public c = 4. + public d = 5. + public e = 6. + |) ( + public superC = (^super c) + public superB = (^super b) + ) + )'. + Module:: builder install reflectee apply: Object. + y:: Module new Y new. + assert: y a equals: 1. + assert: y b equals: 2. + assert: y superC equals: 3. + assert: y c equals: 4. + assert: y d equals: 5. + assert: y e equals: 6. + + (builder instanceSide nestedClasses findMirrorNamed: #Y) + headerFromSource: 'public class Y = X (| + public b = 7. + public c = 4. + public d = 5. + public e = 6. |)'; + install. + + assert: y a equals: 1. + assert: y superB equals: 2. + assert: y superC equals: 3. + assert: y c equals: 4. + assert: y d equals: 5. + assert: y e equals: 6. + assert: y b equals: nil. +) +public testAddShadowedSlotSuperclass = ( + | builder Module y | + builder:: ClassDeclarationBuilder fromSource: + 'class Module = ()( + public class X = (| public a = 1. public b = 2. public c = 3. |) () + public class Y = X (| public c = 4. public d = 5. public e = 6. |) ( + public superC = (^super c) + public superD = (^super d) + ) + )'. + Module:: builder install reflectee apply: Object. + y:: Module new Y new. + assert: y a equals: 1. + assert: y b equals: 2. + (*assert: y superC equals: 3. -- separate bug*) + assert: y c equals: 4. + assert: y d equals: 5. + assert: y e equals: 6. + + (builder instanceSide nestedClasses findMirrorNamed: #X) + headerFromSource: 'public class X = (| public a = 1. public b = 2. public c = 3. public d = 7. |)'; + install. + + assert: y a equals: 1. + assert: y b equals: 2. + (*assert: y superC equals: 3. -- separate bug*) + assert: y superD equals: nil. + assert: y c equals: 4. + assert: y d equals: 5. + assert: y e equals: 6. +) +public testAddSlot = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: 'class TestAddSlot = ()()'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + + builder headerFromSource: 'class TestAddSlot = (| public x |)'. + builder install. + + instance x: 7. + assert: instance x equals: 7. +) +public testAddSlotAndAccessors = ( + | testClass instance outerMixin | + testClass:: makeClass: 'class TestAddSlotAndAccessors = ()()'. + outerMixin:: (ClassMirror reflecting: testClass) mixin reflectee. + instance:: testClass new. + updateMixin: outerMixin withNewDefinition: 'class TestAddSlotAndAccessors = ( | public x | ) ()'. + assert: instance x equals: nil. + instance x: 3. + assert: instance x equals: 3. +) +public testChangeMethod = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: 'class TestChangeMethod = ()( public bar = (^35) )'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + + assert: instance bar equals: 35. + + builder instanceSide methods addFromSource: 'public bar = ( ^7)'. + builder install. + + assert: instance bar equals: 7. +) +public testChangeNestedClass = ( + | testClass instance instance1 outerMixin | + testClass:: makeClass: +'class TestChangeNestedClass = ()( + public class Nested = () ( + public bar = (^35) + ) +)'. + outerMixin:: (ClassMirror reflecting: testClass) mixin reflectee. + instance:: testClass new. + instance1:: instance Nested new. + + updateMixin: outerMixin withNewDefinition: +'class TestChangeNestedClass = ()( + public class Nested = (| public x public y = 5. |) ( + public bar = (x::7. ^x) + public bam = (^bar*2) + ) +)'. + + assert: instance1 y equals: nil. + assert: instance1 x equals: nil. + assert: instance Nested new y equals: 5. + assert: instance1 bar equals: 7. + assert: instance1 x equals: 7. + assert: instance1 bam equals: 14. +) +public testCreateMultipleClasses = ( + | testMixin testClass1 testClass2 testClass3 instance1 instance2 instance3 reps lreps testMixins | + + reps:: { + compileToMixinRep: 'class TestCreateMultipleClasses1 = ()( public bar = (^37) )'. + compileToMixinRep: 'class TestCreateMultipleClasses2 = ()( public baz = (^42) )'. + compileToMixinRep: 'class TestCreateMultipleClasses3 = ()( public foo = (^91) )' + }. + testMixins:: atomicInstaller install: reps withExistingMixins: Map new. + + testClass1:: (testMixins at: 1) |> Object. + instance1:: testClass1 new. + assert: instance1 bar equals: 37. + + testClass2:: (testMixins at: 2) |> Object. + instance2:: testClass2 new. + assert: instance2 baz equals: 42. + + testClass3:: (testMixins at: 3) |> Object. + instance3:: testClass3 new. + assert: instance3 foo equals: 91. +) +public testCreateOneClass = ( + | testClass1 instance1 reps lreps testMixins | + + reps:: {compileToMixinRep: 'class TestCreateOneClass = ()( public bar = (^37) )'}. + testMixins:: atomicInstaller install: reps withExistingMixins: Map new. + + testClass1:: (testMixins at: 1) |> Object. + instance1:: testClass1 new. + assert: instance1 bar equals: 37. +) +public testHierarchyChanges = ( + | + superMixin1 + superMixin2 + superMixin3 + subMixin + superclass1 + superclass2 + superclass3 + subclass1 + subclass2 + subclass3 + subclass12 + instance1 + instance2 + instance3 + instance12 + | + superMixin1:: makeMixin: 'class TestHierarchyChanges1 = ()( public bar = (^37) )'. + superMixin2:: makeMixin: 'class TestHierachyChanges2 = ()( public baz = (^42) )'. + superMixin3:: makeMixin: 'class TestHierarchyChanges3 = ( | public z | )( public foo = (^91) )'. + subMixin:: makeMixin: 'class TestHierarchyChanges = ( | public z | )( public foo = (^91) )'. + + superclass1:: superMixin1 |> Object. + superclass2:: superMixin2 |> Object. + superclass3:: superMixin3 |> Object. + subclass1:: subMixin |> superclass1. + subclass2:: subMixin |> superclass2. + subclass3:: subMixin |> superclass3. + subclass12:: superMixin1 |> subclass2. + + instance1:: subclass1 new. + instance2:: subclass2 new. + instance3:: subclass3 new. + instance12:: subclass12 new. + + updateMixin: subMixin withNewDefinition: + 'class TestHierarchyChanges = ( | + public x = 2 * bar. + public y = x + 2. + | )( + public bar = (^7) + public bam = (^x) + )'. + + assert: [instance1 bar = 7]. + assert: [instance2 bar = 7]. + assert: [instance3 bar = 7]. + assert: [instance12 bar = 37]. + + assert: [instance1 bam = nil]. + assert: [instance2 bam = nil]. + assert: [instance3 bam = nil]. + assert: [subclass12 new y = 76]. +) +public testManyShapeChanges = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: 'class Test = (| public x = 1. public y = 2. |)()'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + assert: instance x equals: 1. + assert: instance y equals: 2. + + (* Many shape changes without running any code from Test in between. *) + builder headerFromSource: 'class Test = (| public w public x public y |)'. + builder install. + builder headerFromSource: 'class Test = (| public w public x public y public z |)'. + builder install. + builder headerFromSource: 'class Test = (| public w public y public z |)'. + builder install. + + should: [instance x] signal: MessageNotUnderstood. + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance y equals: 2. + assert: instance z equals: nil. + assert: instance w equals: nil. +) +public testMoveSlotDown = ( + | builder Module y | + builder:: ClassDeclarationBuilder fromSource: + 'class Module = ()( + public class X = ( | public a | ) () + public class Y = X ( ) () + )'. + Module:: builder install reflectee apply: Object. + y:: Module new Y new. + assert: y a equals: nil. + y a: 1. + assert: y a equals: 1. + + (builder instanceSide nestedClasses findMirrorNamed: #X) + headerFromSource: 'public class X = ()'. + (builder instanceSide nestedClasses findMirrorNamed: #Y) + headerFromSource: 'public class Y = X ( | public a | )'. + + builder install. + assert: y a equals: nil. (* Not 1 *) + y a: 1. + assert: y a equals: 1. +) +public testMoveSlotUp = ( + | builder Module y | + builder:: ClassDeclarationBuilder fromSource: + 'class Module = ()( + public class X = () () + public class Y = X ( | public a | ) () + )'. + Module:: builder install reflectee apply: Object. + y:: Module new Y new. + assert: y a equals: nil. + y a: 1. + assert: y a equals: 1. + + (builder instanceSide nestedClasses findMirrorNamed: #X) + headerFromSource: 'public class X = (| public a |)'. + (builder instanceSide nestedClasses findMirrorNamed: #Y) + headerFromSource: 'public class Y = X ()'. + + builder install. + assert: y a equals: nil. (* Not 1 *) + y a: 1. + assert: y a equals: 1. +) +public testMultipleChanges = ( + | builder1 builder2 builder3 klass1 klass2 klass3 instance1 instance2 instance3 | + builder1:: ClassDeclarationBuilder fromSource: + 'class TestMultipleChanges1 = ()( public bar = (^37) )'. + builder2:: ClassDeclarationBuilder fromSource: + 'class TestMultipleChanges2 = ()( public baz = (^42) )'. + builder3:: ClassDeclarationBuilder fromSource: + 'class TestMultipleChanges3 = ( | public z | )( public foo = (^91) )'. + mirrors installAtomically: {builder1. builder2. builder3}. + klass1:: builder1 reflectee apply: Object. + klass2:: builder2 reflectee apply: Object. + klass3:: builder3 reflectee apply: Object. + instance1:: klass1 new. + instance2:: klass2 new. + instance3:: klass3 new. + + assert: instance1 bar equals: 37. + assert: instance2 baz equals: 42. + assert: instance3 foo equals: 91. + assert: instance3 z equals: nil. + + builder1 instanceSide methods addFromSource: 'public bar = (^7)'. + builder2 instanceSide methods + addFromSource: 'public baz = (^91)'; + addFromSource: 'public bar = (^baz + 17)'. + builder3 headerFromSource: 'class TestMultipleChanges3 = ( | + public x = 2 * bar. + public y = x + 2. | )'. + builder3 instanceSide methods + addFromSource: 'public bar = (^7)'; + addFromSource: 'public bam = (^x) )'; + removeMirrorNamed: #foo. + mirrors installAtomically: {builder1. builder2. builder3}. + + assert: instance1 bar equals: 7. + assert: instance2 bar equals: 108. + assert: instance2 baz equals: 91. + assert: instance3 bam equals: nil. + assert: klass3 new bam equals: 14. + assert: klass3 new y equals: 16. + should: [klass3 new z] signal: MessageNotUnderstood. + should: [klass3 new foo] signal: MessageNotUnderstood. +) +public testNesting = ( + | outerClass0 outerMixin0 instance0 + nestedClass1 nestedMixin1 nestedClass11 + nestedMixin11 + instance1 instance11 + nestedClass111 nestedMixin111 instance111 + rep + | + outerClass0:: makeClass: +'class TestNesting = () ( + public class Nested1 = ( | a b c | ) ( + public class Nested11 = () ( + public class Nested111 = ( | x = a. |) () + ) + public class Nested12 = Nested11 () () + ) + public class Nested2 = () ( + ) +)'. + outerMixin0:: (ClassMirror reflecting: outerClass0) mixin reflectee. + instance0:: outerClass0 new. + nestedClass1:: instance0 Nested1. + instance1:: nestedClass1 new. + nestedClass11:: instance1 Nested11. + instance11:: nestedClass11 new. + nestedClass111:: instance11 Nested111. + instance111:: nestedClass111 new. + + updateMixin: outerMixin0 withNewDefinition: +'class TestNesting = () ( + public class Nested1 = ( | public d public e = 5. | ) ( + public class Nested11 = () ( + public class Nested111 = ( | public z = e. |) () + public bar = (^7) + ) + public class Nested12 = Nested11 () () + public class Nested13 = Nested12() () + ) + public class Nested3 = Nested1 ()() +)'. + + assert: instance111 z equals: nil. + assert: instance11 bar equals: 7. + assert: instance1 d equals: nil. + assert: instance1 e equals: nil. + assert: instance1 Nested12 new bar equals: 7. + assert: instance0 Nested3 new Nested12 new Nested111 new z equals: 5. +) +public testNoShapeChangeThenShapeChange = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: 'class Test = (| public x = 1. public y = 2. |)()'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance x equals: 1. + assert: instance y equals: 2. + should: [instance z] signal: MessageNotUnderstood. + should: [instance w] signal: MessageNotUnderstood. + + builder instanceSide methods addFromSource: 'public z = (^3)'. + builder install. + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance x equals: 1. + assert: instance y equals: 2. + assert: instance z equals: 3. + should: [instance w] signal: MessageNotUnderstood. + + builder headerFromSource: 'class Test = (| public x public y public w |)'. + builder instanceSide methods addFromSource: 'public z = (^4)'. + builder install. + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance x equals: 1. + assert: instance y equals: 2. + assert: instance z equals: 4. + assert: instance w equals: nil. +) +public testObjectsRetainIdentityHash = ( + | builder klass instance originalKlassHash originalInstanceHash | + builder:: ClassDeclarationBuilder fromSource: 'class Test = (| public x public y |)()'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + originalKlassHash:: klass identityHash. + originalInstanceHash:: instance identityHash. + + builder headerFromSource: 'class Test = (| public x public y public z |)'. + builder install. + instance z. (* Should not raise MNU. *) + assert: klass identityHash equals: originalKlassHash. + assert: instance identityHash equals: originalInstanceHash. +) +public testRebuildIntermediatesFromRuntime = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: +'class M f: w = (| x = 3. y ::= w. |)( + class C = (| z = 1. w ::= 5. |)( + class I = ()() + baz = (^43) + ) : ( + quz = (^41) + ) + bar = (^42) +) : ( + foo = (^40) +)'. + + klass:: builder install reflectee apply: Object. + + builder:: ClassDeclarationBuilder reflecting: klass mixin. + builder install. +) +public testRemoveMethod = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: + 'class TestRemoveMethod = ()( public bar = (^35) )'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + + assert: instance bar equals: 35. + + builder instanceSide methods removeMirrorNamed: #bar. + builder install. + + should: [instance bar] signal: MessageNotUnderstood. +) +public testRemoveNestedClass = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: +'class TestRemoveNestedClass = ()( + public class Nested = () ( + public bar = (^35) + ) +)'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + + assert: instance Nested isBehavior. + assert: instance Nested new bar equals: 35. + + builder instanceSide nestedClasses removeMirrorNamed: #Nested. + builder install. + + should: [instance Nested] signal: MessageNotUnderstood. +) +public testRemoveNestedNestedClass = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: +'class TestRemoveNestedNestedClass = ()( + public class Nested = () ( + public class NestedNested = ()() + public bar = (^35) + ) +)'. + klass:: (builder install reflectee apply: Object) new Nested. + instance:: klass new. + + assert: instance NestedNested isBehavior. + assert: instance bar equals: 35. + + (builder instanceSide nestedClasses findMirrorNamed: #Nested) + instanceSide nestedClasses removeMirrorNamed: #NestedNested. + builder install. + + should: [instance NestedNested] signal: MessageNotUnderstood. + assert: instance bar equals: 35. +) +public testRemoveSlot = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: 'class TestRemoveSlot = ( | public x | )()'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + + instance x: 7. + assert: instance x equals: 7. + + builder headerFromSource: 'class TestRemoveSlot = ()'. + builder install. + + should: [instance x] signal: MessageNotUnderstood. +) +public testShapeChangeThenNoShapeChange = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: 'class Test = (| public x = 1. public y = 2. |)()'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance x equals: 1. + assert: instance y equals: 2. + should: [instance z] signal: MessageNotUnderstood. + should: [instance w] signal: MessageNotUnderstood. + + builder headerFromSource: 'class Test = (| public x public y public w |)'. + builder instanceSide methods addFromSource: 'public z = (^3)'. + builder install. + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance x equals: 1. + assert: instance y equals: 2. + assert: instance z equals: 3. + assert: instance w equals: nil. + + builder instanceSide methods addFromSource: 'public z = (^4)'. + builder install. + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance x equals: 1. + assert: instance y equals: 2. + assert: instance z equals: 4. + assert: instance w equals: nil. +) +public testShapeChangeThenShapeChange = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: 'class Test = (| public x = 1. public y = 2. |)()'. + klass:: builder install reflectee apply: Object. + instance:: klass new. + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance x equals: 1. + assert: instance y equals: 2. + should: [instance z] signal: MessageNotUnderstood. + should: [instance w] signal: MessageNotUnderstood. + should: [instance v] signal: MessageNotUnderstood. + + builder headerFromSource: 'class Test = (| public x public y public w |)'. + builder instanceSide methods addFromSource: 'public z = (^3)'. + builder install. + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance x equals: 1. + assert: instance y equals: 2. + assert: instance z equals: 3. + assert: instance w equals: nil. + should: [instance v] signal: MessageNotUnderstood. + + builder headerFromSource: 'class Test = (| public x public y public w public v |)'. + builder instanceSide methods addFromSource: 'public z = (^4)'. + builder install. + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance x equals: 1. + assert: instance y equals: 2. + assert: instance z equals: 4. + assert: instance w equals: nil. + assert: instance v equals: nil. +) +public testStressfulShapeChange = ( + | builder klass instance | + builder:: ClassDeclarationBuilder fromSource: 'class Shapeshifter = ()()'. + klass:: builder install reflectee apply: Object. + builder headerFromSource: 'class Shapeshifter = ( | + public one = 1. + public two = 2. + public three = 3. | )'. + builder install. + instance:: klass new. + + builder headerFromSource: 'class Shapeshifter = ( | + public three = 3. + public four = 4. + public five = 5. + public two = 2. | )'. + builder install. + + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance three equals: 3. + assert: instance two equals: 2. + assert: instance four equals: nil. + assert: instance five equals: nil. + should: [instance one] signal: MessageNotUnderstood. + + builder headerFromSource: 'class Shapeshifter = ( | + public six = 6. + public three = 3. |)'. + builder install. + + assert: instance isInstanceOf: klass. + assert: instance isOnlyInstanceOf: klass. + assert: instance three equals: 3. + assert: instance six equals: nil. + should: [instance one] signal: MessageNotUnderstood. + should: [instance two] signal: MessageNotUnderstood. + should: [instance four] signal: MessageNotUnderstood. + should: [instance five] signal: MessageNotUnderstood. +) +public testSubclass = ( + (* Test the effect of modifying a subclass of an unmodified but non-trivial superclass. *) + | + superMixin + subMixin + superClass + subClass + objectSubClass + instanceSuper + instanceSub + instanceObjectSub + | + superMixin:: makeMixin: 'class TestSubclassSuper = ( | public z | )( public foo = (^91) )'. + superClass:: superMixin |> Object. + subMixin:: makeMixin: 'class TestSubclassSub = ()( public bar = (^37) )'. + subClass:: subMixin |> superClass. + objectSubClass:: subMixin |> Object. + instanceSuper:: superClass new. + instanceSub:: subClass new. + instanceObjectSub:: objectSubClass new. + + assert: [instanceSuper foo = 91]. + assert: [instanceSub foo = 91]. + assert: [instanceSuper z isNil]. + assert: [instanceSub z isNil]. + assert: [instanceObjectSub bar = 37]. + assert: [instanceSub bar = 37]. + + updateMixin: subMixin withNewDefinition: + 'class TestSubclassSub = ( | public x ::= 2 * bar. public y = x + 2. | )( + public bar = (^7) + public bam = (^x) + )'. + + assert: [instanceSuper foo = 91]. + assert: [instanceSub foo = 91]. + assert: [instanceSuper z isNil]. + assert: [instanceSub z isNil]. + assert: [instanceObjectSub bar = 7]. + assert: [instanceSub bar = 7]. + assert: [instanceObjectSub bam isNil]. + + instanceObjectSub x: 3. + assert: [instanceObjectSub bam = 3]. + assert: [instanceSub bam isNil]. + + instanceSub x: 5. + assert: [instanceSub bam = 5]. + assert: [subClass new x = 14]. + assert: [objectSubClass new x = 14]. + assert: [subClass new y = 16]. + assert: [objectSubClass new y = 16]. +) +public testSuperAndSubclass = ( + (* Test the effect of simultaneously modifying a superclass and a subclass. *) + | + superMixin + subMixin + superClass + subClass + objectSubClass + instanceSuper + instanceSub + instanceObjectSub + | + superMixin:: makeMixin: 'class TestSuperAndSubclassSuper = ( | public z | )( public foo = (^91) )'. + subMixin:: makeMixin: 'class TestSuperAndSubclassSub = ()( public bar = (^37) )'. + superClass:: superMixin |> Object. + subClass:: subMixin |> superClass. + objectSubClass:: subMixin |> Object. + instanceSuper:: superClass new. + instanceSub:: subClass new. + instanceObjectSub:: objectSubClass new. + + assert: [instanceSuper foo = 91]. + assert: [instanceSub foo = 91]. + assert: [instanceSuper z isNil]. + assert: [instanceSub z isNil]. + assert: [instanceObjectSub bar = 37]. + assert: [instanceSub bar = 37]. + + updateMixins: {superMixin. subMixin} withNewDefinitions: { + 'class TestSuperAndSubclassSuper = ( | public w ::= bar*3. | )( + public bar = (^7) + public bam = (^w) + )'. + 'class TestSuperAndSubclassSub = ( | public x = 2 * bar. public y = x + 2. | )( + public bar = (^39) + public baz = (^x + y) + )'. + }. + assert: [instanceSuper bar = 7]. + assert: [instanceObjectSub bar = 39]. + assert: [instanceSub bar = 39]. + assert: [instanceSuper bam isNil]. + + instanceSuper w: 3. + assert: [instanceSuper bam = 3]. + assert: [instanceSub bam isNil]. + + instanceSub w: 5. + assert: [instanceSub bam = 5]. + assert: [superClass new w = 21]. + assert: [subClass new x = 78]. + assert: [subClass new w = 117]. + assert: [superClass new bam = 21]. + assert: [subClass new bam = 117]. + assert: [objectSubClass new baz = 158]. + assert: [subClass new baz = 158]. + assert: [objectSubClass new y = 80]. + assert: [subClass new y = 80]. +) +public testSuperclass = ( + (* Test the effect of modifying the superclass of an umodified subclass. *) + | + superMixin + subMixin + superClass + subClass + objectSubClass + instanceSuper + instanceSub + instanceObjectSub + | + superMixin:: makeMixin: 'class TestSuperclassSuper = ( | public z | )( public foo = (^91) )'. + superClass:: superMixin |> Object. + subMixin:: makeMixin: 'class TestSuperclassSub = ()( public bar = (^37) )'. + subClass:: subMixin |> superClass. + objectSubClass:: subMixin |> Object. + + instanceSuper:: superClass new. + instanceSub:: subClass new. + instanceObjectSub:: objectSubClass new. + + assert: [instanceSuper foo = 91]. + assert: [instanceSub foo = 91]. + assert: [instanceSuper z isNil]. + assert: [instanceSub z isNil]. + assert: [instanceSub bar = 37]. + assert: [instanceObjectSub bar = 37]. + + updateMixin: superMixin withNewDefinition: + 'class TestSuperclassSuper = ( | public x ::= 2 * bar. public y = x + 2. | )( + public bar = (^7) + public bam = (^x) + )'. + + assert: [instanceSuper bar = 7]. + assert: [instanceObjectSub bar = 37]. + assert: [instanceSub bar = 37]. + assert: [instanceSuper bam isNil]. + assert: [instanceSub bam isNil]. + + instanceSub x: 5. + + assert: [instanceSub bam = 5]. + assert: [superClass new x = 14]. + assert: [subClass new x = 74]. + assert: [superClass new y = 16]. + assert: [subClass new y = 76]. +) +updateMixin: mixin withNewDefinition: source = ( +(* Compile the source string (a complete source of the class) as a replacement of an existing mixin. Install the replacement. *) + | newRep existingMixinMap | + newRep:: compileToMixinRep: source. + existingMixinMap:: Map new. + existingMixinMap at: newRep put: mixin. +(* existingMixinMap at: newRep last first put: mixin nestedMixins anyOne. *) + atomicInstaller install: {newRep} withExistingMixins: existingMixinMap. +) +updateMixins: mixins <{Mixin}> withNewDefinitions: sources <{String}> = ( +(* Compile the source string (a complete source of the class) as a replacement of existing mixins. Atomically install the replacements. *) + | newReps existingMixinMap | + assert: [mixins size = sources size]. + newReps:: sources collect: [:each | compileToMixinRep: each]. + existingMixinMap:: Map new. + newReps with: mixins do: + [:eachRep :eachMixin | + existingMixinMap at: eachRep put: eachMixin]. + atomicInstaller install: newReps withExistingMixins: existingMixinMap. +) +) : ( +TEST_CONTEXT = () +) +) : ( +) diff --git a/out/AtomicInstaller.ns b/out/AtomicInstaller.ns new file mode 100644 index 00000000..bc723ccc --- /dev/null +++ b/out/AtomicInstaller.ns @@ -0,0 +1,318 @@ +Newspeak3 +'Mirrors' +class AtomicInstaller usingPlatform: p vmMirror: vmm = ( +(* This handles adding, removing and modifying stuff. + +What remains unaddressed is changing classes of individual objects, and changing superclasses of individual classes. These can of course be handled elsewhere, but not as part of a broader atomic transaction as is done here. The API of this class should be extended to deal with these requirements. + +The process of an atomic install is as follows: + +We construct a map, upodateMap, of old objects to revised objects. Eventually, we will do a one way become: of +the old objects into the new ones. The map is populated with mixins, classes and instances that need to be modified +as keys, and their revised version as values. + +The input consists of a tuple of IntermediateClassDeclarations, and a map, existingMixinMap, associating each IntermediateClassDeclaration with its corresponding existing mixin (if it has one). Each element in the tuple describes an ''outermost'' mixin and its nested mixins. By ''outermost mixin'' we mean a mixin that is not nested within any other mixin being processed at this time. It could be a top level mixin, but it could also be a nested mixin provided its enclosing mixins are not subject to change. + +We distinguish between new and existing mixins. We use the map in order to do this. This is essential, since we cannot assume a global namespace in which to look up mixins to see if they exist or not. + +New mixins are simply created per their description, recursively including their nested mixins. These new mixins are gathered in the results list returned by the nsyallation process (#install:withExistingMixins:), as are the mixins created to replace existing ones (described below). + +For each existing top level mixin, we add any nested mixins that correspond to nested mixins of the revised mixin to existingMixinMap in #augmentExistingMixinMap:withNestedClasses:inExistingMixin: recursively, before any other processing. We then process each top level mixin in order. + +If the mixin described by the IntermediateClassDeclaration exists, we store the existing mixin as a key in updateMap, and create a new one per the description, stored as the corresponding value in updateMap. + +For each existing mixin, we also go through all its invocations. + We collect the invocation and all its subclasses in a map called existingClasses, which maps depth in the inheritance hierarchy to sets of existing classes classes at that depth. This gives us the set of existing classes that will require modification - either because their mixin has changed, or their superclass has changed. The data structure allows us to easily traverse the set of existing classes in order, base classes first. + +We then recursively process the nested mixins of each mixin being processed. + +Next, we go through the existing classes. For each class we produce a new class which we store in updateMap, keyed by the old class. It is important not to use the class name as a key, as we cannot assume a global namespace in Newspeak. +The new class may differ in its own structure (because its mixin differs) or only in having a revised superclass, +or both. + +Because we traverse the classes in increasing depth order we are assured that a class' superclass has either already been processed, and can be looked up in updateMap, or it has not changed. This is essential, because the new class points at its up-to-date superclass and uses data derived from it. + +If the layout of a class has changed, we also process all its instances. For each existing instance of an old class whose shape has changed, we create an instance of the new class, taking care to copy the data of fields shared between the old and new classes from the old instance to the new one. Each such processed object is placed as a key in updateMap, with the new version as the corresponding value. + +At this point, we can do the one way become: and the installation is complete. + + +Some care is needed to ensure atomic install works with shape changes to InstanceMixin, ClassMixin, Class or Metaclass. Installing such changes involves processing their instances twice: first to create the new definition and second to reallocate to the new shape, which requires the new definition. + +Let A be the old definition +Let B be the new definition with the old shape +Let C be the new definition with the new shape +Let D be the old definition with the new shape + +We need the bulk become to include, in order, + +B -> C +A -> C + +They must appear in this order so C adopts the identity hash (and possible class index) of A rather than that of B. We must also not include A -> D, as it makes no sense to forward an identity to two objects. + + +( * :bug: Rename doesn't propagate down. +AA -> BB +but +AA`Nested stays AA`Nested should be BB`Nested* ) + +Copyright (c) 2009-2010 Gilad Bracha +Copyright (c) 2011-2015 Ryan Macnak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the ''Software''), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED ''AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*) +| +private IdentityMap = p squeak IdentityDictionary. +private List = p collections List. +private InstanceMixin = p kernel InstanceMixin. +private ClassMixin = p kernel ClassMixin. +private MethodDictionary = p squeak MethodDictionary. +private ClassOrganizer = p squeak ClassOrganizer. + +private vmmirror = vmm. + +private updateMixinsAndClasses +private updateInstances +private existingClasses +|) ( +private augmentExistingMixinMap: map withNestedClasses: nestedClasses inExistingMixin: mixin = ( + nestedClasses do: + [:nestedClass | + | name existingNestedMixin | + name:: nestedClass simpleName. + existingNestedMixin:: mixin nestedMixins at: name ifAbsent: [nil]. + nil = existingNestedMixin ifFalse: + [map at: nestedClass put: existingNestedMixin. + augmentExistingMixinMap: map + withNestedClasses: nestedClass instanceSide nestedClasses + inExistingMixin: existingNestedMixin]] +) +private cleanup = ( + updateMixinsAndClasses: nil. + updateInstances: nil. + existingClasses: nil. +) +conflictingMethodsNamed: n in: m = ( + Error signal: 'Attempting to install class with multiple methods with selector ', n, ' in mixin ', m name +) +private depthFor: klassArg ^ = ( + | klass d | + d: 0. + klass: klassArg. + [klass isNil] whileFalse: [klass: klass superclass. d: d+1]. + ^d +) +public install: intermediates + withExistingMixins: existingMixinMap = ( + | results | + setup. + results:: intermediates collect: + [:classDecl | + (existingMixinMap includesKey: classDecl) ifTrue: + [augmentExistingMixinMap: existingMixinMap + withNestedClasses: classDecl instanceSide nestedClasses + inExistingMixin: (existingMixinMap at: classDecl)]. + processClassDeclaration: classDecl in: existingMixinMap]. + processExistingClasses. + installAll. + vmmirror flushCache. (* Clear all lookup caches *) + cleanup. + + ^results (* *) +) +private installAll = ( + | updateCount oldObjects newObjects index | + updateCount:: updateMixinsAndClasses size + updateInstances size. + oldObjects:: Array new: updateCount. + newObjects:: Array new: updateCount. + index: 1. + updateInstances keysAndValuesDo: + [:old :new | + oldObjects at: index put: old. + newObjects at: index put: new. + index: index + 1]. + (* Put updated mixins and classes last, so A -> C follows B -> C (see class comment). *) + updateMixinsAndClasses keysAndValuesDo: + [:old :new | + oldObjects at: index put: old. + newObjects at: index put: (updateInstances at: old ifAbsent: [new]). (* Follow B to avoid B -> C, A -> B. *) + index: index + 1]. + + oldObjects elementsForwardIdentityToEvenIfImmutable: newObjects. + + (* As of 2673, the VM ensures objects whose references are deleted in a one-way become cannot be resurrected by allInstances/allObjects. + hadLayoutChange ifTrue: [vmmirror fullGC]. (* Ensure that objects newly made unreachable by the one-way become will not be enumerated by future uses of someInstance/nextInstance. See discussion of issue #82 and comments in ClassBuilder update:to:. *) *) +) +private layoutHasChangedBetween: oldClass and: newClass ^ = ( + ^oldClass allInstVarNames ~= newClass allInstVarNames +) +private methodDictionaryFor: mixin from: imixin ^ = ( + | + methods = imixin assembleMethods. + mdict = MethodDictionary new: methods size. + | + methods do: + [:imethod | + imethod methodMixin: mixin. + (mdict includesKey: imethod selector) ifTrue: [ + conflictingMethodsNamed: imethod selector in: mixin + ]. + mdict at: imethod selector put: imethod compiledMethod]. + ^mdict +) +private newClassFor: oldClass ^ = ( + | newSuperclass newMixin newClass | + + newSuperclass:: updateMixinsAndClasses at: oldClass superclass ifAbsent: [oldClass superclass]. + newMixin:: updateMixinsAndClasses at: oldClass mixin ifAbsent: [oldClass mixin]. + +#BOGUS yourself. (* Name not quite right. Should reflect new name, but should keep the same form as the old name if it's like This`9087#450 *) + newClass:: newMixin apply: newSuperclass withName: newMixin simpleName. + newClass setEnclosingObjectSlot: oldClass enclosingObjectSlot. + (* organization and category: they live in the mixin *) + + ^newClass +) +private noteUpdateOf: existingMixin to: newMixin = ( + existingMixin isNil ifTrue: [^self]. + + updateMixinsAndClasses at: existingMixin put: newMixin. + updateMixinsAndClasses at: existingMixin classMixin put: newMixin classMixin. + + existingMixin applications do: [:app | sortClass: app]. +) +private processClassDeclaration: classDecl + in: existingMixinMap + ^ = ( + | + mixin + classMixin + existingMixin + | + + mixin:: InstanceMixin new. + classMixin:: ClassMixin new. + + mixin cachedHeaderSource: classDecl headerSource. + mixin cachedConstructorName: classDecl factoryName. + assert: [classDecl factoryName notNil] message: 'Missing factory name'. + mixin category: classDecl category. + mixin name: classDecl simpleName. + mixin classMixin: classMixin. + mixin methodDictionary: (methodDictionaryFor: mixin from: classDecl instanceSide). + mixin slots: (classDecl instanceSide assembleSlots collect: + [:s | {s simpleName. s isMutable. s accessModifier}]) asArray. + + classMixin instanceMixin: mixin. + classMixin methodDictionary: (methodDictionaryFor: classMixin from: classDecl classSide). + + setOrganizationFor: mixin basedOn: classDecl instanceSide. + setOrganizationFor: classMixin basedOn: classDecl classSide. + + existingMixin:: existingMixinMap at: classDecl ifAbsent: [nil]. + noteUpdateOf: existingMixin to: mixin. + + nil = existingMixin ifFalse: + [(* If this is the top-most thing changed in this installation and not a top level class, the enclosingMixin won't otherwise be set and would incorrectly end up nil. *) + mixin enclosingMixin: existingMixin enclosingMixin. + mixin classMixin enclosingMixin: existingMixin enclosingMixin]. + + classDecl instanceSide nestedClasses do: + [:nestedClassDecl | + | nestedMixin | + nestedMixin:: processClassDeclaration: nestedClassDecl in: existingMixinMap. + mixin nestedMixins at: nestedMixin simpleName put: nestedMixin. + nestedMixin enclosingMixin: mixin. + nestedMixin classMixin enclosingMixin: mixin]. + + ^mixin +) +private processExistingClass: oldClass = ( + | newClass | + newClass:: newClassFor: oldClass. + + updateMixinsAndClasses at: oldClass put: newClass. + updateMixinsAndClasses at: (vmmirror classOf: oldClass) put: (vmmirror classOf: newClass). +) +private processExistingClasses = ( + (* Process superclasses before subclasses. Create all new classes before remapping any instances. *) + existingClasses keys asSortedCollection do: + [:inheritanceDepth | + (existingClasses at: inheritanceDepth) do: + [:oldClass | processExistingClass: oldClass]]. + + existingClasses valuesDo: + [:depthSet | + depthSet do: + [:oldClass | processInstancesOf: oldClass]]. +) +private processInstancesOf: oldClass = ( + | + newClass = updateMixinsAndClasses at: oldClass. + oldSlotNames + newSlotCount + remapIndices + | + (layoutHasChangedBetween: oldClass and: newClass) ifFalse: [^self]. + + (* Heuristic: choose the latter slot if a slot name is duplicated to favor overriding slots. *) + oldSlotNames:: oldClass allInstVarNames. + remapIndices:: newClass allInstVarNames collect: + [:newSlotName | oldSlotNames lastIndexOf: newSlotName ifAbsent: 0]. + newSlotCount:: remapIndices size. + + (vmmirror allInstancesOf: oldClass) do: + [:oldInstance | + (* Avoid A -> D (see class comment). *) + (updateMixinsAndClasses includesKey: oldInstance) ifFalse: + [ | newInstance = vmmirror instantiateFixedClass: newClass. | + (* Copy state from oldInstance to newInstance. *) + 1 to: newSlotCount do: [:newIndex | + | oldIndex value | + oldIndex:: remapIndices at: newIndex. + 0 == oldIndex ifFalse: [ + value:: vmmirror ifFail: [halt] namedSlotOf: oldInstance at: oldIndex. + vmmirror ifFail: [halt] namedSlotOf: newInstance at: newIndex put: value]]. + + updateInstances at: oldInstance put: newInstance]]. +) +private setOrganizationFor: mixin basedOn: intermediate = ( + | org = ClassOrganizer defaultList: {}. | + intermediate assembleMethods do: + [:imethod | + imethod isSynthetic ifFalse: + [assert: [imethod category notNil] message: 'Missing category'. + org classify: imethod selector under: imethod category.]]. + mixin organization: org. +) +private setup = ( + updateMixinsAndClasses: IdentityMap new. + updateInstances: IdentityMap new. + existingClasses: IdentityMap new. +) +private sortClass: app = ( + | classes depth | + depth:: depthFor: app. + classes:: existingClasses at: depth ifAbsentPut: [List new]. + classes add: app. + app subclassesDo: [:sc | sortClass: sc]. +) +) : ( +) diff --git a/out/BenchmarkRunner.ns b/out/BenchmarkRunner.ns new file mode 100644 index 00000000..0516106d --- /dev/null +++ b/out/BenchmarkRunner.ns @@ -0,0 +1,61 @@ +Newspeak3 +'Benchmarks' +class BenchmarkRunner packageUsing: manifest = ( +(*Infrastructure to run a set of benchmarks and gather average run times. + +Copyright 2012 Google Inc. +Copyright 2013 Ryan Macnak + +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*) +| + benchmarks = { + manifest ClosureDefFibonacci. + manifest ClosureFibonacci. + manifest DeltaBlue. + manifest MethodFibonacci. + manifest NLRImmediate. + manifest NLRLoop. + manifest ParserCombinators. + manifest Richards. + manifest SlotRead. + manifest SlotWrite. + manifest Splay. + }. +|) ( +class Benchmarking usingPlatform: p = (| +private Stopwatch = p kernel Stopwatch. +private List = p collections List. +private cachedPlatform = p. +|) ( +measure: block forAtLeast: milliseconds = ( + | runs stopwatch elapsed score | + runs:: 0. + stopwatch:: Stopwatch new start. + + [block value. + runs:: runs + 1. + elapsed:: stopwatch elapsedMilliseconds. + elapsed < milliseconds] whileTrue. + + score:: (round: runs * 1000 asFloat / elapsed to: 0.1 asFloat) asFloat. + ^score printString +) +public report = ( + benchmarks do: + [:benchmark | + | b score | + b:: benchmark usingPlatform: cachedPlatform. + self measure: [b bench] forAtLeast: 3. + score:: measure: [b bench] forAtLeast: 20. + (benchmark name, ': ', score) out]. +) +round: n to: quantum = ( + ^(n // quantum) * quantum +) +) : ( +) +public main: p args: argv = ( + (Benchmarking usingPlatform: p) report +) +) : ( +) diff --git a/out/BenchmarkRunner.vfuel b/out/BenchmarkRunner.vfuel new file mode 100644 index 0000000000000000000000000000000000000000..fb639273af7fedeadc28e43394c083c5b23d29e4 GIT binary patch literal 127309 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≦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≺zd_PPDfm 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 Ej}-mjud5ogog* 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 rzbcT{M%*!8A&aLA{cHH^`G`9XT>|Ze) ^ = ( + ^Platform usingVmMirror: vmm +) +) : ( +) diff --git a/out/Brazil.ns b/out/Brazil.ns new file mode 100644 index 00000000..9a63eee4 --- /dev/null +++ b/out/Brazil.ns @@ -0,0 +1,7582 @@ +Newspeak3 +'Brazil' +class Brazil usingPlatform: platform = ( +(* Brazil is Newspeak's multi-platform logical UI and layout framework. It provides the familiar widgets ('visuals') such as Labels, Buttons, and ListBoxes, and containers for combining visuals and managing their layout. Unlike a typical widget framework, Brazil does not implement the actual widgets. Instead it functions as a 'logical UI' layer that builds and manages the equivalent 'physical UI' made of native artifacts of the host platform. + +Brazil was designed and implemented by Vassili Bykov in 2007, with a mapping to Morphic as the first supported platform. A Windows mapping was implemented in 2008. Brazil is indeed named after the movie. + +Copyright 2007-2012 Cadence Design Systems, Inc. +Copyright 2009 Ryan Macnak and other contributors. + +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 *) +| + (* module state *) + private defaultFontMapperS + private theDesktopS + private lastVisitedDirectoryS + + (* imports *) + private Map = platform collections Map. + private List = platform collections List. + private IdentityMap = platform collections IdentityMap. + private WeakArray = platform collections WeakArray. + public (* bogus *) Color = platform graphics Color. + private Rectangle = platform graphics Rectangle. + private SeqCltnReadStream = platform streams SeqCltnReadStream. + private Transcript = platform streams TempTranscript new. (* for SpyingWrapper, InformationRetriever *) + private Duct = platform ducts Duct. + private Holder = platform ducts Holder. + + private SmallInteger = platform squeak SmallInteger. + private GradientFillStyle = platform squeak GradientFillStyle. + private FileDirectory = platform squeak FileDirectory. + private DosFileDirectory = platform squeak DosFileDirectory. + private TimeStamp = platform squeak TimeStamp. + private ZeroDivide = platform squeak ZeroDivide. + private MorphicFontMapper = platform squeak MorphicFontMapper. + private WorldState = platform squeak WorldState. + private World = platform squeak World. + private NewspeakGlobalState = platform squeak NewspeakGlobalState. + + private MorphicAgentFactory = platform squeak MorphicAgentFactory. + private BrazilMappingForWin32 = platform namespace BrazilMappingForWin32. + + (* public interfacing *) + public plumbing = PlumbingClasses new. + public areas = AreaClasses new. (* uses plumbing *) + public abilities = AbilityClasses new. + public manipulation = ManipulationClasses new. + public mapping = MappingClasses new. + public menus = MenuClasses new. + public text = TextClasses new. + public visuals = VisualClasses new. (* uses plumbing, areas, containers,visuals, but hooked up with postInit *) + public widgets = WidgetClasses new. (* uses visuals *) + public containers = ContainerClasses new. (* uses visual,widgets,plmbing,areas *) + public tools = ToolClasses new. (* uses containers, widgets, areas *) +|visuals postInit) ( +class AbilityClasses = ( +(* *** EXPERIMENTAL/WORK IN PROGRESS: This code is not yet used by the core system, and may be significantly revised or removed *** This module implements and manages Abilities. Abilities are low-level input event interpreters that translate sequences of events such as mouse presse, releases and moves, into higher-level gestures such as button clicks and drag attempts. *) +| + (* private Dictionary = platform Collections Dictionary. + private OrderedCollection = platform Collections OrderedCollection. + + clickability = Clickability new. + draggability = Draggability new. + clickabilityAndDraggability = ClickabilityAndDraggability new. *) +|) ( +class Ability = ( +(* This is the abstract superclass of abilities. Any ability is attached to the owner, which is the source of the low-level events it interprets. The owner is often a Visual *) +| + owner +|) ( +atttachTo: newOwner = ( + owner:: newOwner +) +detachFrom: presumedOwner = ( + (* A subclass may reimplement this to do the real detaching, provided the presumedOwner is the same as the current owner. *) +) +) : ( +) +class Clickability = Mousability ( +(* Clickability translates low-level events into click gestures. A click gesture follows the standard behavior of push buttons, where a button is clicked on a mouse up event that occurs within the button's bounds after a prior mouse down event within the bounds. Moving the mouse outside the bounds and then releasing the mouse button effectively cancels the click in progress. *) +| + clickResponse + pressResponse + releaseResponse +|) ( +defineBehavior = ( + | normal down outside | + normal:: behavior newState. + down:: behavior newState. + outside:: behavior newState. + normal + exitAction: [owner grabMouse]; + entryAction: [owner releaseMouse]; + on: #mouseDown do: + [[invokePressResponse] + ensure: [down enter]]. + down + on: #mouseUp do: + [[invokeReleaseResponse. + invokeClickResponse] + ensure: [normal enter]]; + on: #mouseMove do: + [hasMouse ifFalse: + [[invokeReleaseResponse] + ensure: [outside enter]]]. + outside + on: #mouseUp do: + [[invokeReleaseResponse] + ensure: [normal enter]]; + on: #mouseMove do: + [hasMouse ifTrue: + [[invokePressResponse] + ensure: [down enter]]]. +) +hasMouse = ( + ^owner localBounds containsPoint: owner mousePoint +) +invokeClickResponse = ( + clickResponse ifNotNil: [:it | it value] +) +invokePressResponse = ( + pressResponse ifNotNil: [:it | it value] +) +invokeReleaseResponse = ( + releaseResponse ifNotNil: [:it | it value] +) +resetResponses = ( + clickResponse: nil. + pressResponse: nil. + releaseResponse: nil. +) +) : ( +) +class ClickabilityAndDraggability = Mousability ( +(* This class aggregates the two other abilities by becoming the owner of their instances and coordinating their actions and requests. *) +| + mouseGrabLevel ::= 0. +|) ( +attachClickability = ( + clickability attachTo: self. + clickability + pressResponse: [respondToPress]; + releaseResponse: [respondToRelease]; + clickResponse: [respondToClick] +) +attachDraggability = ( + draggability attachTo: self. +) +attachTo: newOwner = ( + super attachTo: newOwner. + mouseGrabLevel:: 0. + attachClickability. + attachDraggability. +) +public grabMouse = ( + mouseGrabLevel: mouseGrabLevel + 1. + mouseGrabLevel = 1 ifTrue: [owner grabMouse]. +) +public releaseMouse = ( + mouseGrabLevel: mouseGrabLevel - 1. + mouseGrabLevel = 0 ifTrue: [owner releaseMouse]. +) +resetResponses = ( + clickability detachFrom: self. + draggability detachFrom: self. +) +respondToMouseDownLeft = ( + clickability respondToMouseDownLeft. + draggability respondToMouseDownLeft. +) +respondToMouseEntry = ( + clickability respondToMouseEntry. + draggability respondToMouseEntry. +) +respondToMouseExit = ( + clickability respondToMouseExit. + draggability respondToMouseExit. +) +respondToMouseMove = ( + clickability respondToMouseMove. + draggability respondToMouseMove. +) +respondToMouseUpLeft = ( + clickability respondToMouseUpLeft. + draggability respondToMouseUpLeft. +) +) : ( +) +class Draggability = Mousability ( +(* Draggability is the ability of a visual to initiate a drag once the mouse button has been pressed over it and then the mouse moved further than a certain threshold distance. *) +| + dragStartResponse + dragContinueResponse + dropResponse +|) ( +defineBehavior = ( + | normalState activatedState draggingState downPoint | + normalState:: behavior newState. + activatedState:: behavior newState. + draggingState:: behavior newState. + normalState + entryAction: [owner releaseMouse]; + exitAction: [owner grabMouse]; + on: #mouseDown do: + [downPoint:: owner mousePoint. + activatedState enter]. + activatedState + on: #mouseMove do: + [(is: owner mousePoint beyondDragThresholdFrom: downPoint) + ifTrue: [draggingState enter]]; + on: #mouseUp do: + [normalState enter]. + draggingState + entryAction: [invokeDragStartResponse]; + on: #mouseMove do: + [invokeDragContinueResponse]; + on: #mouseUp do: + [invokeDropResponse. + normalState enter]. +) +dragThreshold ^ = ( + ^5 +) +invokeDragContinueResponse = ( + dragContinueResponse ifNotNil: [:it | it value] +) +invokeDragStartResponse = ( + dragStartResponse ifNotNil: [:it | it value] +) +invokeDropResponse = ( + dropResponse ifNotNil: [:it | it value] +) +is: point1 beyondDragThresholdFrom: point2 = ( + ^(point1 x - point2 x) abs > dragThreshold or: + [(point1 y - point2 y) abs > dragThreshold] +) +resetResponses = ( + dragStartResponse: nil. + dragContinueResponse: nil. + dropResponse: nil. +) +) : ( +) +class FSM = ( +(* Finite state machines are used by abilities to describe the interpretation of input they perform. *) +| + protected states = List new. + protected initialState + protected currentState +|) ( +class State = ( +| + eventResponses = Map new. + entryAction + exitAction +|) ( +enter = ( + enterState: self +) +enterState: newCurrentState = ( + outer FSM enterState: newCurrentState +) +on: event do: action = ( + ^eventResponses at: event put: action +) +processEvent: event = ( + (eventResponses at: event ifAbsent: [^self]) value +) +respondToEntry = ( + entryAction ifNotNil: [:it | it value] +) +respondToExit = ( + exitAction ifNotNil: [:it | it value] +) +) : ( +) +enterState: newCurrentState = ( + currentState = newCurrentState ifFalse: + [currentState respondToExit. + currentState:: newCurrentState. + currentState respondToEntry]. +) +newState = ( + (* Create a new state associated with this machine. The first state created is the initial state. *) + | state | + state:: State new. + states add: state. + initialState isNil ifTrue: [setInitialState: state]. + ^state +) +processEvent: event = ( + currentState processEvent: event +) +reset = ( + currentState: initialState +) +setInitialState: state = ( + initialState:: state. + currentState:: state +) +) : ( +) +class Mousability = ( +| + protected behavior = FSM new. +|defineBehavior) ( +attachTo: newOwner = ( + super attachTo: newOwner. + behavior reset. + owner + mouseDownLeftResponse: [respondToMouseDownLeft]; + mouseUpLeftResponse: [respondToMouseUpLeft]; + mouseMoveResponse: [respondToMouseMove]; + mouseEntryResponse: [respondToMouseEntry]; + mouseExitResponse: [respondToMouseExit] +) +defineBehavior = ( + subclassResponsibility +) +detachFrom: presumedOwner = ( + presumedOwner == owner ifTrue: + [owner + mouseDownLeftResponse: nil; + mouseUpLeftResponse: nil; + mouseMoveResponse: nil; + mouseEntryResponse: nil; + mouseExitResponse: nil. + resetResponses. + owner:: nil] +) +resetResponses = ( + (* No responses here; subclasses with responses should redefine this to nil them all out. *) +) +respondToMouseDownLeft = ( + behavior processEvent: #mouseDown +) +respondToMouseEntry = ( + behavior processEvent: #mouseEntry +) +respondToMouseExit = ( + behavior processEvent: #mouseExit +) +respondToMouseMove = ( + behavior processEvent: #mouseMove +) +respondToMouseUpLeft = ( + behavior processEvent: #mouseUp +) +) : ( +) +) : ( +) +class AreaClasses = ( +(* The former category Brazil-Areas *) +| + private MessageRecorder = plumbing MessageRecorder. + |) ( +public class Anchor = Area ( +(* An Anchor is an Area that dictates the placement but not the size of its visual within the parent. The visual is always as large as it wants to be. + +The position of the visual is determined using a fraction/offset scheme similar to that used by Frame. Each of the dimensions of the parent is multiplied by the corresponding fraction, and the the offset is added to obtain the anchor position within the current bounds of the parent. For example, an Anchor with the following set of parameters: + + xFraction = 0.5; xOffset = 10 + yFraction = 0; yOffset = 20 + +is positioned at the location 100 @ 20 inside a parent visual of size 200 @ 200, and at the location 150 @ 20 inside a parent of size 300 @ 300. + +An additional pair of fraction values, anchor fractions, defines what point of the child is positioned at the anchor location. If the anchor fractions are 0 and 0 it is the top left. If the fractions are 1 and 1, it is the bottom right. + +A number of methods of the 'initialize-release' protocol, such as #beCentered or #offset:, cover the common usage scenarios. Refer to those methods for further configuration examples. *) +| + xFractionS + xOffsetS + yFractionS + yOffsetS + xAnchorFractionS + yAnchorFractionS + cachedSuggestedParentExtent + public lastSuggestedExtentKnownToParent +|) ( +anchorPosition: newOrigin = ( + (* Configure the receiver so that its visual's top left corner is positioned at the specified offset from the parent's top left corner. *) + + xFractionS:: 0. + xOffsetS:: newOrigin x. + yFractionS:: 0. + yOffsetS:: newOrigin y. + flushLayoutCaches. + requestBoundsUpdate +) +public beBottomCenter = ( + (* Configure the receiver to position its visual so that the center of its bottom side is at the center of the bottom side of the visual's parent. *) + + xFractionS: 0.5. + yFractionS: 1. + xOffsetS: 0. + yOffsetS: 0. + xAnchorFractionS: 0.5. + yAnchorFractionS: 1. + flushLayoutCaches. + requestBoundsUpdate +) +public beBottomLeft = ( + (* Configure the receiver to position its visual so that its bottom left corner is at the bottom left corner of the visual's parent. *) + + xFractionS: 0. + yFractionS: 1. + xOffsetS: 0. + yOffsetS: 0. + xAnchorFractionS: 0. + yAnchorFractionS: 1. + flushLayoutCaches. + requestBoundsUpdate +) +public beBottomRight = ( + (* Configure the receiver to position its visual so that its bottom right corner is at the bottom right corner of the visual's parent. *) + + xFractionS: 1. + yFractionS: 1. + xOffsetS: 0. + yOffsetS: 0. + xAnchorFractionS: 1. + yAnchorFractionS: 1. + flushLayoutCaches. + requestBoundsUpdate +) +public beCentered = ( + (* Configure the receiver to position its visual so that its center is at the center of the visual's parent. *) + + xFractionS: 0.5. + yFractionS: 0.5. + xOffsetS: 0. + yOffsetS: 0. + xAnchorFractionS: 0.5. + yAnchorFractionS: 0.5. + flushLayoutCaches. + requestBoundsUpdate +) +public beLeftCenter = ( + (* Configure the receiver to position its visual so that the center of its left side is at the center of the left side of the visual's parent. *) + + xFractionS: 0. + yFractionS: 0.5. + xOffsetS: 0. + yOffsetS: 0. + xAnchorFractionS: 0. + yAnchorFractionS: 0.5. + flushLayoutCaches. + requestBoundsUpdate +) +public beRightCenter = ( + (* Configure the receiver to position its visual so that the center of its right side is at the center of the right side of the visual's parent. *) + + xFractionS: 1. + yFractionS: 0.5. + xOffsetS: 0. + yOffsetS: 0. + xAnchorFractionS: 1. + yAnchorFractionS: 0.5. + flushLayoutCaches. + requestBoundsUpdate +) +public beTopCenter = ( + (* Configure the receiver to position its visual so that the center of its top side is at the center of the top side of the visual's parent. *) + + xFractionS: 0.5. + yFractionS: 0. + xOffsetS: 0. + yOffsetS: 0. + xAnchorFractionS: 0.5. + yAnchorFractionS: 0. + flushLayoutCaches. + requestBoundsUpdate +) +public beTopLeft = ( + (* Configure the receiver to position its visual so that its top left corner is at the top left corner of the visual's parent. *) + + xFractionS: 0. + yFractionS: 0. + xOffsetS: 0. + yOffsetS: 0. + xAnchorFractionS: 0. + yAnchorFractionS: 0. + flushLayoutCaches. + requestBoundsUpdate +) +public beTopRight = ( + (* Configure the receiver to position its visual so that its top right corner is at the top right corner of the visual's parent. *) + + xFractionS: 1. + yFractionS: 0. + xOffsetS: 0. + yOffsetS: 0. + xAnchorFractionS: 1. + yAnchorFractionS: 0. + flushLayoutCaches. + requestBoundsUpdate +) +public boundsWithin: referenceBounds ^ = ( + | parentOrigin parentExtent width height naturalExtent anchorX anchorY | + parentExtent: referenceBounds extent. + width: parentExtent x. + height: parentExtent y. + naturalExtent: visual naturalExtent. + anchorX:: (width * xFraction) + xOffset - (naturalExtent x * xAnchorFraction). + anchorY:: (height * yFraction) + yOffset - (naturalExtent y * yAnchorFraction). + ^Rectangle + origin: anchorX rounded @ anchorY rounded + referenceBounds origin + extent: naturalExtent +) +computeSuggestedParentExtent ^ = ( + (* Answer the minimum extent the parent should have in order for the visual of this area to appear fully visible. In the general case this value depends both on the natural extent of the visual and on the parameters of the area. *) + + | naturalExtent | + naturalExtent:: visual naturalExtent. + ^(suggestedParentSizeForFraction: xFraction + offset: xOffset + size: naturalExtent x + anchorFraction: xAnchorFraction) + @ (suggestedParentSizeForFraction: yFraction + offset: yOffset + size: naturalExtent y + anchorFraction: yAnchorFraction) +) +public copyConfigurationFromAnchor: another = ( + xFraction:: another xFraction. + xOffset:: another yOffset. + yFraction:: another yFraction. + yOffset:: another yOffset. +) +public copyConfigurationTo: another = ( + another copyConfigurationFromAnchor: self +) +public flushLayoutCaches = ( + cachedSuggestedParentExtent: nil +) +public isRelative ^ = ( + (* True if the final bounds depend on the size of the parent. *) + + ^xFraction ~= 0 + or: [yFraction ~= 0] +) +public isSqueezing ^ = ( + ^false +) +public isVisualSquishy ^ = ( + ^false (* no matter what the visual is, an anchored one has no chance to exhibit its squishiness *) +) +mayAccommodateVisualsNaturalHeightChange ^ = ( + ^true (* An anchor is accommodating by definition. *) +) +mayAccommodateVisualsNaturalWidthChange ^ = ( + ^true (* An anchor is accommodating by definition. *) +) +public origin: newOrigin = ( + (* Configure the receiver so that its visual's top left corner is positioned at the specified offset from the parent's top left corner. *) + + xFractionS:: 0. + xOffsetS:: newOrigin x. + yFractionS:: 0. + yOffsetS:: newOrigin y. + xAnchorFractionS: 0. + yAnchorFractionS: 0. + flushLayoutCaches. + requestBoundsUpdate +) +public resetLastSuggestedExtentKnownToParent = ( + lastSuggestedExtentKnownToParent:: -1 @ -1 + (* we need a value that's a legal Point but cannot equal any legal extent *) +) +public suggestedParentExtent ^ = ( + (* Answer the minimum extent the parent should have in order for the visual of this area to appear fully visible. In the general case this value depends both on the natural extent of the visual and on the parameters of the area. *) + + cachedSuggestedParentExtent == nil ifTrue: + [cachedSuggestedParentExtent: computeSuggestedParentExtent]. + ^cachedSuggestedParentExtent +) +public suggestedParentHeightForWidth: width = ( + ^suggestedParentExtent y +) +public suggestedParentSizeForFraction: fraction offset: offset size: size anchorFraction: anchorFraction = ( + (* Used internally by #suggestedParentExtent to compute the suggested parent's size given all the relevant layout parameters along one of the axes. The suggested size is the minimum size of the parent such that the entire child will appear unobscured inside it. *) + + | size1 size2 | + size1:: fraction ~= 1 + ifTrue: [(1 - anchorFraction) * size + offset / (1 - fraction)] + ifFalse: [0]. + size2:: fraction ~= 0 + ifTrue: [anchorFraction * size - offset / fraction] + ifFalse: [0]. + ^size1 rounded max: size2 rounded +) +public visual: aVisual = ( + super visual: aVisual. + resetLastSuggestedExtentKnownToParent. + xFraction: 0. + yFraction: 0. + xOffset: 0. + yOffset: 0. + xAnchorFraction: 0. + yAnchorFraction: 0. +) +public xAnchorFraction ^ = ( + ^xAnchorFractionS +) +public xAnchorFraction: fraction = ( + xAnchorFractionS:: fraction. + flushLayoutCaches. + requestBoundsUpdate +) +public xFraction ^ = ( + ^xFractionS +) +public xFraction: fraction = ( + xFractionS:: fraction. + flushLayoutCaches. + requestBoundsUpdate +) +public xOffset ^ = ( + ^xOffsetS +) +public xOffset: offset = ( + xOffsetS:: offset. + flushLayoutCaches. + requestBoundsUpdate +) +public yAnchorFraction ^ = ( + ^yAnchorFractionS +) +public yAnchorFraction: fraction = ( + yAnchorFractionS:: fraction. + flushLayoutCaches. + requestBoundsUpdate +) +public yFraction ^ = ( + ^yFractionS +) +public yFraction: fraction = ( + yFractionS:: fraction. + flushLayoutCaches. + requestBoundsUpdate +) +public yOffset ^ = ( + ^yOffsetS +) +public yOffset: offset = ( + yOffsetS:: offset. + flushLayoutCaches. + requestBoundsUpdate +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +class Area = ( +(* An Area is an object associated with a visual to capture the visual's position properties. The Area class itself is abstract. + +When a visual is added to a parent, the visual automatically installs an area most appropriate for the particular parent. + +Slots: + visualS The visual this area is attached to. *) +| + visualS + |) ( +public copyConfigurationFromAnchor: anchor = ( + (* No configuration here; nothing to copy to. *) +) +public copyConfigurationFromFrame: frame = ( + (* No configuration here; nothing to copy to. *) +) +public copyConfigurationTo: another = ( + (* No configuration; nothing to copy. *) +) +public flushLayoutCaches = ( + (* Subclasses that cache state in order to speed things up must redefine this method to discard the cached data when requested. *) +) +public isFuture = ( + ^false +) +public isSqueezing ^ = ( + (* This method complements the one named the same in Visual, since some areas may override the squeezing behavior of their parents. *) + + ^visual parent isSqueezing +) +public isVisualSquishy ^ = ( + (* When containers compute their squishiness, they rely on this method to determine if the combination of a child's squishiness together with the area settings would in fact make the parent squishy. *) + subclassResponsibility +) +mayAccommodateVisualsNaturalHeightChange ^ = ( + ^visual parent mayAccommodateNaturalHeightChangeOf: visual +) +mayAccommodateVisualsNaturalWidthChange ^ = ( + ^visual parent mayAccommodateNaturalWidthChangeOf: visual +) +requestBoundsUpdate = ( + (visual area == self and: [visual updateLockLevel < 1]) ifTrue: + [visual parent + child: visual + requestsBoundsUpdateUsing: + [:newBounds | visual occupyBounds: newBounds]] +) +public species = ( + ^super class +) +public visual = ( + ^visualS +) +public visual: aVisual = ( + visualS:: aVisual +) +public visualRequestsBoundsUpdateUsing: aBlock = ( + (* An area receives this message when the visual wants to receive a bounds update, meaning its natural extent has changed. A subclass may redefine this method to filter requests in cases when the area dictates a fixed size of the child and therefore the child's natural extent is known to have no effect on the parent. NOTE that the area must invoke the block with the final bounds of the visual, regardless of whether they have changed or not. *) + + visual parent + child: visual + requestsBoundsUpdateUsing: aBlock +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +public class CellWidthEqualizer = (| + cellsX ::= List new. + indexX + cachedNaturalExtentX + |) ( +public commonNaturalWidth = ( + ^cellsX + inject: 0 + into: + [:max :each | + max max: each visual naturalExtent x] +) +equalize: collection at: index = ( + indexX:: index. + collection do: + [:each | | visual | + visual:: each at: index. + visual areaClass: WidthEqualizingRowCell. + cellsX add: visual area. + visual area equalizer: self]. +) +public equalizeRowElements: visuals = ( + visuals do: + [:each | + each areaClass: WidthEqualizingRowCell. + cellsX add: each area. + each area equalizer: self]. +) +) : ( +public equalize: collection at: index = ( + ^self new equalize: collection at: index +) +public equalizeRowElements: visuals = ( + ^self new equalizeRowElements: visuals +) +) +public class ColumnCell = SequenceCell ( +(* An area used for elements of a Column. *) +) ( +public height = ( + ^principalSize +) +public height: pixels = ( + principalSize:: pixels +) +public isSqueezing ^ = ( + ^imposesSize not and: [super isSqueezing] +) +public isVisualSquishy ^ = ( + ^imposesSize not and: [visual isSquishy] +) +mayAccommodateVisualsNaturalHeightChange ^ = ( + ^imposesSize not and: + [visual parent mayAccommodateNaturalHeightChangeOf: visual] +) +public minimumHeight ^ = ( + ^minimumSize +) +public minimumHeight: newValue = ( + minimumSize: newValue +) +public naturalExtent = ( + ^visual naturalExtent x @ (minimumSize max: height) +) +public naturalHeightForWidth: size ^ = ( + (* Answer the size the visual should take along the principal axis within a parent of the given size along the orthogonal axis. *) + + ^principalSizeS ifNil: [visual naturalHeightForWidth: size] +) +naturalOrthogonalSize = ( + ^visual naturalExtent x +) +naturalPrincipalSize = ( + ^visual naturalExtent y +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +public class Frame = Area (| + leftFractionS + leftOffsetS + topFractionS + topOffsetS + rightFractionS + rightOffsetS + bottomFractionS + bottomOffsetS + public lastSuggestedExtentKnownToParent +|) ( +public bottomFraction = ( + ^bottomFractionS +) +public bottomFraction: fraction = ( + bottomFractionS:: fraction. + requestBoundsUpdate +) +public bottomOffset = ( + ^bottomOffsetS +) +public bottomOffset: offset = ( + bottomOffsetS:: offset. + requestBoundsUpdate +) +public bounds: aRectangle = ( + (* Occupy the given rectangle; no elasticity. *) + + self + offsetsLeft: aRectangle left + top: aRectangle top + right: aRectangle right + bottom: aRectangle bottom +) +public boundsWithin: compositionBounds = ( + | parentOrigin parentExtent width height left top right bottom | + parentOrigin:: compositionBounds origin. + parentExtent:: compositionBounds extent. + width:: parentExtent x. + height:: parentExtent y. + left:: (width * leftFraction) rounded + leftOffset. + top:: (height * topFraction) rounded + topOffset. + right:: (width * rightFraction) rounded + rightOffset. + bottom:: (height * bottomFraction) rounded + bottomOffset. + ^Rectangle + origin: left @ top + parentOrigin + corner: right @ bottom + parentOrigin +) +public copyConfigurationFromFrame: another = ( + leftFraction:: another leftFraction. + leftOffset:: another leftOffset. + topFraction:: another topFraction. + topOffset:: another topOffset. + rightFraction:: another rightFraction. + rightOffset:: another rightOffset. + bottomFraction:: another bottomFraction. + bottomOffset:: another bottomOffset +) +public copyConfigurationTo: another = ( + another copyConfigurationFromFrame: self +) +extent: newExtent = ( + rightOffsetS:: leftOffsetS + newExtent x. + bottomOffsetS:: topOffsetS + newExtent y. + requestBoundsUpdate +) +fractionsLeft: left top: top right: right bottom: bottom = ( + self + leftFraction: left + offset: 0 + topFraction: top + offset: 0 + rightFraction: right + offset: 0 + bottomFraction: bottom + offset: 0 +) +public fullyCoverParent = ( + (* Be elastic by fully covering the parent and resizing with it. *) + + padding: 0 +) +public isElastic ^ = ( + (* A frame is elastic if the bounds it computes for its visual depend on the size of the parent. *) + + ^leftFraction ~= 0 + or: [topFraction ~= 0 + or: [rightFraction ~= 0 + or: [bottomFraction ~= 0]]] +) +public isElasticX ^ = ( + (* True if the final bounds along the X axis depend on the size of the parent. *) + + ^rightFraction ~= 0 or: [leftFraction ~= 0] +) +public isElasticY ^ = ( + (* True if the final bounds along the Y axis depend on the size of the parent. *) + + ^bottomFraction ~= 0 or: [topFraction ~= 0] +) +public isFramedByParent ^ = ( + (* This is an even stronger condition than isElastic: a Frame with the four sides rigidly attached to the corresponding sides of the parent. *) + + ^leftFraction = 0 + and: [topFraction = 0 + and: [rightFraction = 1 + and: [bottomFraction = 1]]] +) +public isSqueezing ^ = ( + (* The parent will only be able to exhibit its squeezing behavior if the frame is able to grow vertically. *) + ^super isSqueezing and: [isElasticY] +) +public isVisualSquishy ^ = ( + (* A squishy visual contained by a frame can only manifest its squishiness if the frame allows it to grow vertically. *) + ^isElasticY and: + [visual isSquishy] +) +public isZero ^ = ( + ^isElastic not + and: [leftOffset = 0 + and: [rightOffset = 0 + and: [topOffset = 0 + and: [bottomOffset = 0]]]] +) +public leftFraction = ( + ^leftFractionS +) +public leftFraction: fraction = ( + leftFractionS:: fraction. + requestBoundsUpdate +) +public leftFraction: lf offset: lo +topFraction: tf offset: to +rightFraction: rf offset: ro +bottomFraction: bf offset: bo = ( + leftFractionS:: lf. + leftOffsetS:: lo. + topFractionS:: tf. + topOffsetS:: to. + rightFractionS:: rf. + rightOffsetS:: ro. + bottomFractionS:: bf. + bottomOffsetS:: bo. + requestBoundsUpdate +) +public leftOffset = ( + ^leftOffsetS +) +public leftOffset: offset = ( + leftOffsetS:: offset. + requestBoundsUpdate +) +mayAccommodateVisualsNaturalHeightChange ^ = ( + ^isElasticY and: [super mayAccommodateVisualsNaturalHeightChange] +) +mayAccommodateVisualsNaturalWidthChange ^ = ( + ^isElasticX and: [super mayAccommodateVisualsNaturalWidthChange] +) +offsetsLeft: left top: top right: right bottom: bottom = ( + self + leftFraction: 0 + offset: left + topFraction: 0 + offset: top + rightFraction: 0 + offset: right + bottomFraction: 0 + offset: bottom +) +padding: padding = ( + (* Set up the receiver so that its visual fully covers its parent and padded according to the argument. The argument is either the number of pixels to leave on all sides of the parent or a Point with separate settings used for for the left/right and top/bottom sides. *) + + padding isInteger + ifTrue: + [offsetsLeft: padding + top: padding + right: padding negated + bottom: padding negated] + ifFalse: + [offsetsLeft: padding x + top: padding y + right: padding x negated + bottom: padding y negated.]. + rightFraction: 1. + bottomFraction: 1 +) +public resetLastSuggestedExtentKnownToParent = ( + lastSuggestedExtentKnownToParent:: -1 @ -1 + (* we need a value that's a legal Point but cannot equal any legal extent *) +) +public rightFraction = ( + ^rightFractionS +) +public rightFraction: fraction = ( + rightFractionS:: fraction. + requestBoundsUpdate +) +public rightOffset = ( + ^rightOffsetS +) +public rightOffset: offset = ( + rightOffsetS:: offset. + requestBoundsUpdate +) +public suggestedParentExtent ^ = ( + isElastic ifFalse: + [^rightOffset @ bottomOffset]. + isFramedByParent ifTrue: + [^visual naturalExtent + + ((leftOffset - rightOffset) @ (topOffset - bottomOffset))]. + #BOGUS yourself. + ^0 @ 0 (* Should do more in some of the remaining cases; see Anchor *) +) +public suggestedParentHeightForWidth: width = ( + | left right imposedCompositionWidth heightFromVisual | + (topFraction = 0 and: [bottomFraction = 1]) ifTrue: + [left:: (width * leftFraction) + leftOffset. + right:: (width * rightFraction) + rightOffset. + imposedCompositionWidth:: right - left. + heightFromVisual:: visual naturalHeightForWidth: imposedCompositionWidth. + ^heightFromVisual + topOffset - bottomOffset]. + #BOGUS yourself. (* the code below doesn't handle all cases *) + ^bottomOffset +) +public topFraction = ( + ^topFractionS +) +public topFraction: fraction = ( + topFractionS:: fraction. + requestBoundsUpdate +) +public topOffset = ( + ^topOffsetS +) +public topOffset: offset = ( + topOffsetS:: offset. + requestBoundsUpdate +) +public visual: aVisual = ( + super visual: aVisual. + resetLastSuggestedExtentKnownToParent. + bounds: (0@0 corner: 0@0) +) +public visualRequestsBoundsUpdateUsing: aBlock = ( + (* If the frame is not elastic, i.e. has a fixed size, the change in the visual's natural extent that initiated this request has no chance of making any difference in the final layout. *) + + isElastic + ifTrue: [super visualRequestsBoundsUpdateUsing: aBlock] + ifFalse: [aBlock value: visual bounds] +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +public class FutureArea = MessageRecorder () ( +public copyConfigurationTo: area = ( + self playRecordedMessagesTo: area +) +public flushLayoutCaches = ( + (* Understand but do nothing. *) +) +public isFuture = ( + ^true +) +public isSqueezing = ( + ^false +) +public visualRequestsBoundsUpdateUsing: continuation = ( + (* Understand but do nothing. *) +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +public class GridRowCell = RowCell ( +(* A GridRowCell is a specialized area used by children of GridRowXs. GridRowCells keeps track of a number of layout parameters in addition to those inherited from the regular RowCell. + +By default, the extent a cell will request from its row is equal to the natural extent of the cell content. This can be overridden by 'forcedExtent'. However, the concept of the natural extent of a cell is further complicated by the fact that the cell is part of the larger context of its grid. + +Natural extent (fixed in the cell or passed through from the visual) is the extent the cell would prefer to be *on its own*. Principal and orthogonal sizes of a cell define the extent *the grid* would like it to be. They are set with consideration of sizes of other cells in the same row or column. *) +| + orthogonalSizeS + forcedExtentX + |) ( +extent ^ = ( + ^width @ height +) +extent: extent = ( + principalSizeS:: extent x. + orthogonalSizeS:: extent y. + requestBoundsUpdate +) +forcedExtent: newExtent = ( + (* Sending a Point with this message causes this cell to try assuming this extent instead of whatever the visual itself wants. *) + + forcedExtentX:: newExtent. + (* grid flushLayoutCaches. *) + #BOGUS yourself. (* remove the above when it's verified not needed *) + requestBoundsUpdate +) +grid ^ = ( + (* Answer the grid. The grid is known to the grid row, which is the parent of our visual. *) + + ^visual parent grid +) +height ^ = ( + ^orthogonalSize +) +height: newHeight = ( + orthogonalSize:: newHeight +) +public naturalExtent ^ = ( + ^forcedExtentX ifNil: [visual naturalExtent] +) +public naturalHeightForWidth: width ^ = ( + ^forcedExtentX + ifNil: [super naturalHeightForWidth: width] + ifNotNil: [forcedExtentX y] +) +naturalPrincipalSize = ( + ^naturalExtent x +) +orthogonalSize = ( + ^orthogonalSizeS == nil + ifTrue: [forcedExtentX == nil + ifTrue: [naturalOrthogonalSize] + ifFalse: [forcedExtentX y]] + ifFalse: [orthogonalSizeS] +) +orthogonalSize: size = ( + orthogonalSizeS:: size. + requestBoundsUpdate +) +quietlySetWidth: newWidth = ( + principalSizeS:: newWidth +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +public class LineArea = Area ( +(* The area class used for lines, to keep track of their start and end point positions. *) +| + startPointS ::= 0@0. + endPointS ::= 0@0. + public lastSuggestedExtentKnownToParent +|) ( +public boundsWithin: referenceBounds = ( + | width | + width:: visual width. + ^Rectangle + left: (startPointS x min: endPointS x) - width + right: (startPointS x max: endPointS x) + width + top: (startPointS y min: endPointS y) - width + bottom: (startPointS y max: endPointS y) + width +) +public endPoint ^ = ( + ^endPointS +) +public endPoint: newEndPoint = ( + endPointS:: newEndPoint. + requestBoundsUpdate +) +public isVisualSquishy ^ = ( + ^false +) +public resetLastSuggestedExtentKnownToParent = ( + lastSuggestedExtentKnownToParent:: -1 @ -1 + (* we need a value that's a legal Point but cannot equal any legal extent *) +) +public startPoint ^ = ( + ^startPointS +) +public startPoint: newStartPoint = ( + startPointS:: newStartPoint. + requestBoundsUpdate +) +public startPoint: newStartPoint endPoint: newEndPoint = ( + startPointS:: newStartPoint. + endPointS:: newEndPoint. + requestBoundsUpdate +) +public suggestedParentExtent ^ = ( + ^(endPointS - startPointS) abs +) +public suggestedParentHeightForWidth: ignored ^ = ( + ^suggestedParentExtent y +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +public class PolygonArea = Area ( +(* The area used for polygons. It holds onto a collection of points for the vertices. Each vertex is a simple Point value in absolute coordinates, as usual relative to the polygon's parent. +*) +| + verticesS ::= {0 @ 0}. + public lastSuggestedExtentKnownToParent + cachedEnclosingRectangle + |) ( +public boundsWithin: referenceBounds ^ = ( + ^enclosingRectangle +) +computeEnclosingRectangle ^ = ( + | minX maxX minY maxY | + minX:: SmallInteger maxVal. + maxX:: SmallInteger minVal. + minY:: minX. + maxY:: maxX. + vertices do: + [:each | | x y | + x:: each x. + y:: each y. + minX:: minX min: x. + maxX:: maxX max: x. + minY:: minY min: y. + maxY:: maxY max: y]. + ^minX @ minY corner: maxX @ maxY +) +enclosingRectangle ^ = ( + ^cachedEnclosingRectangle ifNil: + [cachedEnclosingRectangle:: computeEnclosingRectangle. + cachedEnclosingRectangle] +) +public isVisualSquishy ^ = ( + ^false +) +public resetLastSuggestedExtentKnownToParent = ( + lastSuggestedExtentKnownToParent:: -1 @ -1 + (* we need a value that's a legal Point but cannot equal any legal extent *) +) +public suggestedParentExtent ^ = ( + ^enclosingRectangle corner +) +public suggestedParentHeightForWidth: ignored ^ = ( + ^suggestedParentExtent y +) +public vertices ^ = ( + ^verticesS +) +public vertices: newValue = ( + verticesS:: newValue. + cachedEnclosingRectangle:: nil. + requestBoundsUpdate +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +public class RowCell = SequenceCell ( +(* An area used for elements of a Row. *) +| + |) ( +public isVisualSquishy ^ = ( + ^imposesSize or: [isElastic and: [visual isSquishy]] +) +mayAccommodateVisualsNaturalWidthChange ^ = ( + ^imposesSize not and: + [visual parent mayAccommodateNaturalWidthChangeOf: visual] +) +minimumWidth ^ = ( + ^minimumSize +) +minimumWidth: newValue = ( + minimumSize: newValue +) +public naturalExtent = ( + ^(minimumSize max: width) @ visual naturalExtent y +) +public naturalHeightForWidth: width ^ = ( + ^visual naturalHeightForWidth: width +) +naturalOrthogonalSize = ( + ^visual naturalExtent y +) +naturalPrincipalSize = ( + ^visual naturalExtent x +) +public width = ( + ^principalSize +) +public width: pixels = ( + principalSize:: pixels +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +class SequenceCell = Area ( +(* A SequenceCell is the abstract superclass of areas used by elements of visual sequences such as Rows and Columns. + +Slots + principalSizeS If set, the fixed number of pixels the cell should be allocated (the width for row cells and the height for column cells). If nil, the cell will be allocated the natural size reported by the visual. + minimumSizeS The cell will always be allocated at least this many pixels. For backward compatibility, the default value is 'Integer minVal', i.e. no minimum limit. + expansibilityS When not 0, this cell can stretch if the container has more room than the sum of cells requires. + compressibilityS When not 0, this cell can shrink if the container has less room than the sum of cells requires. + currentLayoutBasis + lastKnownNaturalExtent Used by the parent to store properties it based its current layout on, in order to decide later if an update is needed. *) +| + principalSizeS + minimumSizeS ::= SmallInteger minVal. + expansibilityS ::= 0. + compressibilityS ::= 0. + + public currentLayoutBasis + public lastKnownNaturalExtent +|) ( +public compressibility = ( + (* The ifNil: clause in not needed in a stable image. Provided here for that first time when the change is loaded and already existing cells have this slot uninitialized. *) + ^compressibilityS ifNil: [0] +) +public compressibility: newElasticity = ( + compressibilityS:: newElasticity. + requestBoundsUpdate +) +public elasticity ^ = ( + (* BACKWARD COMPATIBILITY: split into expansion and compression elasticities. Keeping this one around for the time being. *) + ^expansibility +) +public elasticity: newElasticity = ( + (* BACKWARD COMPATIBILITY: the single elasticity setting is now split into separate expansion and compression elasticities. Setting both elasticities to the same value replicates the old behavior. *) + expansibilityS:: newElasticity. + compressibilityS:: newElasticity. + requestBoundsUpdate +) +public expansibility = ( + (* The ifNil: clause in not needed in a stable image. Provided here for that first time when the change is loaded and already existing cells have this slot uninitialized. *) + ^expansibilityS ifNil: [0] +) +public expansibility: newElasticity = ( + expansibilityS:: newElasticity. + requestBoundsUpdate +) +public flushLayoutCaches = ( + currentLayoutBasis:: nil. + lastKnownNaturalExtent:: nil. +) +public imposesSize ^ = ( + (* True if the cell is configured so that it ignores the contents natural extent and instead imposes its own size. *) + + ^principalSizeS notNil +) +public isElastic = ( + ^expansibility > 0 or: [compressibility > 0] +) +public minimumSize = ( + (* The ifNil: clause in not needed in a stable image. Provided here for that first time when the change is loaded and already existing cells have this slot uninitialized. *) + ^minimumSizeS ifNil: [0] +) +public minimumSize: newValue = ( + minimumSizeS: newValue. + requestBoundsUpdate +) +public naturalExtent ^ = ( + (* Answer the size the visual of this cell should ideally be given by its parent, based on the properties of both the area and the visual. For example, a Row cell with no explicitly set width would prefer to be sized to the width of its visual's natural extent, while a cell with an explicit width would prefer to have the visual sized to that width. *) + + subclassResponsibility +) +public naturalHeightForWidth: size ^ = ( + (* Answer the size the visual should take along the principal axis within a parent of the given size along the orthogonal axis. *) + + subclassResponsibility +) +public naturalOrthogonalSize ^ = ( + (* A subclass should implement this to fetch the value to be reported as its orthogonal size from the visual's natural extent properties. *) + + self subclassResponsibility +) +public naturalPrincipalSize ^ = ( + (* A subclass should implement this to fetch the value to be reported as its principal size from the visual's natural extent properties. *) + + self subclassResponsibility +) +public principalSize ^ = ( + ^principalSizeS ifNil: [naturalPrincipalSize] +) +public principalSize: newSize = ( + principalSizeS:: newSize. + requestBoundsUpdate +) +public printOn: aStream = ( + super printOn: aStream. + aStream + nextPutAll: ' size: '; print: principalSizeS; + nextPutAll: ' expansibility: '; print: expansibilityS; + nextPutAll: ' compressibility: '; print: compressibilityS +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +public class ShapeArea = Area ( +(* A ShapeArea is an area intended for Shapes positioned inside a free-form parent such as a CompositeVisual. It keeps track of the origin the shape is to have inside the parent's bounds, while the shape keeps track of its own extent. The area always grants the visual the bounds with the origin it keeps track of and the extent equal to the visual's natural extent. *) +| + originS + public lastSuggestedExtentKnownToParent +|) ( +bounds: newBounds = ( + originS:: newBounds origin. + visual size: newBounds extent. + (* Setting the extent of the visual takes care of requesting layout update *) +) +public boundsWithin: referenceBounds = ( + ^originS extent: visual naturalExtent +) +public isSqueezing ^ = ( + ^false +) +moveBy: delta = ( + originS:: origin + delta. + requestBoundsUpdate +) +moveTo: newOrigin = ( + (* A synonym of #origin:, for the cases when it's more natural. *) + + self origin: newOrigin +) +origin ^ = ( + ^originS +) +origin: newOrigin = ( + originS:: newOrigin. + requestBoundsUpdate +) +public resetLastSuggestedExtentKnownToParent = ( + lastSuggestedExtentKnownToParent:: -1 @ -1 + (* we need a value that's a legal Point but cannot equal any legal extent *) +) +public suggestedParentExtent ^ = ( + ^originS + visual naturalExtent +) +public visual: aVisual = ( + super visual: aVisual. + resetLastSuggestedExtentKnownToParent. + origin: 0 @ 0 +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +class WidthEqualizingRowCell = RowCell (| + public equalizer + |) ( +naturalPrincipalSize = ( + ^equalizer commonNaturalWidth +) +) : ( +public visual: aVisual = ( + ^self new visual: aVisual; yourself +) +) +) : ( +) +class ContainerClasses = ( +(* Formerly the category Brazil-Visuals-Containers *) +| + private ContainerVisual = visuals ContainerVisual. + private VerticalVisualSequence = visuals VerticalVisualSequence. + private VisualCollection = visuals VisualCollection. + private HorizontalVisualSequence = visuals HorizontalVisualSequence. + private Anchor = areas Anchor. + private Frame = areas Frame. + private ModifierKeyState = plumbing ModifierKeyState. + private Attribute = Future computing: [plumbing Attribute]. + private Blank = widgets Blank. + private MappableHolder = Future computing: [plumbing MappableHolder]. + |) ( +public class Column = VerticalVisualSequence ( +(* A Column positions its children vertically one after another. + +The Y component of a Columns's own natural extent is the sum of natural extents of its children. The X component of a Column natural extent is equal to the largest of the X components of its children's natural extents. If a Column is sized to its natural extent, each child is allocated a parcel of the height equal to the Y component of the child's natural extent and the width equal to the width of the Column. If a Column size is different from its natural extent and there are no elastic children (see below), then either the bottom-most children are hidden from view or there is empty space at the bottom end of the Column. + +By default each child gets a ColumnCell as its area. A ColumnCell can be given an explicit height by sending to it the #height: message. If set, an explicit height overrides the height of the corresponding child naturalExtent in determining the layout of the child. + +A ColumnCell can also be made _elastic_ by sending it the #elasiticity: message with a numeric argument. (The default elasticity value is 0). Elasticity affects the layout as follows. If the size of a Column is different from its naturalExtent, the excess or the lack of vertical room is distributed equally to elastic children, proportionally to their elasticity. *) +| + |) ( +public setupAreaIn: child = ( + child setupAreaForColumn +) +) : ( +) +public class CompositeVisual = VisualCollection ( +(* A CompositeVisual is a simple container visual that can hold any number of children (including none). The children are expected to use an Area that responds to ''bounded'' positioning protocol, most importantly the #boundWithin: and #suggestedParentExtent messages. The three most commonly used such Areas are Anchor, Frame and ShapeArea. The first two are generic, the third can only be used with Shapes. + +A CompositeVisual is a concrete class, but it also a superclass of a few classes the utilize different layout schemes, most importantly subclasses of VisualSequence such as Row and Column. + +Instance Variables + colorA: The background color of the visual. Transparent by default. + children: The children of the receiver, arranged in the order of the increasing Z value (the topmost last). + cachedNaturalExtent: If set, the last known value of the natural extent of the receiver, defined as the smallest rectangle that contains all the children and the 0 @ 0 point. *) +| + cachedNaturalHeightForWidth + |) ( +public add: newChild = ( + (* Add a new child to the recevier. The child becomes the topmost and will obscure any sibling it overlaps. *) + + ^restructuring: + [self privateAdd: newChild using: [children add: newChild]] +) +public add: newChild inFrontOf: existingChild = ( + (* Add a new child to the recevier. The child is the next one (on top of) the existing child passed as the second argument. *) + + ^restructuring: + [self privateAdd: newChild using: + [children add: newChild after: existingChild]] +) +public addAtBack: newChild = ( + (* Add a new child to the recevier. The child becomes the bottommost and will be obscured by any sibling it overlaps. *) + + ^restructuring: + [self privateAdd: newChild using: [children addFirst: newChild]] +) +adviseBoundsFor: child = ( + child occupyBounds: (computeBoundsFor: child) +) +public child: child requestsBoundsUpdateUsing: continuation = ( + (* Process a layout update request coming from the child. *) + + | oldNaturalExtent | + (mayAffectNaturalExtent: child) + ifTrue: + [oldNaturalExtent:: naturalExtent. + updateGeometricProperties. + naturalExtent = oldNaturalExtent + ifTrue: + [continuation value: (child area boundsWithin: innerBounds)] + ifFalse: + [updateLayoutByRequestFrom: child using: continuation. + announceNaturalExtentChange]] + ifFalse: + [continuation value: (child area boundsWithin: innerBounds)]. + announceLayoutChange +) +computeBoundsFor: child = ( + ^child area boundsWithin: innerBounds +) +public computeNaturalExtent = ( + (* Compute and answer the natural extent of the receiver as defined by the current parameters of its children. A composite wants to be just large enough to accommodate all suggested extents of all children. *) + + | max | + max:: (0@0). + self childrenDo: + [:each | | suggestion | + suggestion: each area suggestedParentExtent. + each area lastSuggestedExtentKnownToParent: suggestion. + max:: max max: suggestion]. + ^max +) +public computeNaturalHeightForWidth: width ^ = ( + | maxHeight | + maxHeight:: 0. + childrenDo: + [:each | + maxHeight:: maxHeight max: (each area suggestedParentHeightForWidth: width)]. + ^maxHeight +) +createAgentUsing: aMapping = ( + (* Mapping a tree of widgets often generates a stream on natural extent change notifications from the children as they discover their true natural extents after being mapped. To avoid constant recomputations we block incremental updates for the duration of mapping. *) + + aMapping createAgentForCompositeVisual: self +) +public flushLayoutCaches = ( + (* Also flush a layout note in each area, which is the last parent extent suggested by the area. *) + + super flushLayoutCaches. + childrenDo: [:each | each area resetLastSuggestedExtentKnownToParent]. + updateGeometricProperties +) +public forceBoundsResponse: newBounds = ( + | playground | + super forceBoundsResponse: newBounds. + playground: innerBounds. + childrenDo: + [:each | + each forceBounds: (each area boundsWithin: playground)]. + announceLayoutChange +) +public legalAreaClassesFor: child = ( + ^child legalAreaClassesInCompositeVisual +) +mayAddingAffectNaturalExtent: child = ( + (* The child is being added to the receiver, and we need to know if adding it will affect the receiver's natural extent. If this can't be determined without computing the receiver's current natural extent (i.e. if there is no cached value), just say it may. *) + + | suggestion myNaturalExtent | + suggestion:: child area suggestedParentExtent. + child area lastSuggestedExtentKnownToParent: suggestion. + myNaturalExtent:: naturalExtent. + ^suggestion x > myNaturalExtent x or: + [suggestion y > myNaturalExtent y] +) +mayAffectNaturalExtent: child = ( + (* The argument is a child that is currently requesting a layout update due to changes in its parameters. Determine if there is a chance that the composite visual's natural extent has been affected by the change. If there is any doubt or there is no answer, say yes. *) + + | oldSuggestion newSuggestion | + oldSuggestion:: child area lastSuggestedExtentKnownToParent. + newSuggestion:: child area suggestedParentExtent. + newSuggestion = oldSuggestion ifTrue: [^false]. + child area lastSuggestedExtentKnownToParent: newSuggestion. +(* The change in the child may have affected the parent's natural extent if either the parent extent previously suggested by this child touches the current natural extent of the parent along one of the axes (so shrinking or growing the child can shrink or grow the parent), or if the new suggested parent extent is larger than the current one, so we definitely know the parent's natural extent has been grown by the change. *) + ^oldSuggestion x = currentNaturalExtent x + or: [oldSuggestion y = currentNaturalExtent y + or: [newSuggestion x > currentNaturalExtent x + or: [newSuggestion y > currentNaturalExtent y]]] +) +mayRemovingAffectNaturalExtent: child = ( + (* The argument is a child that has just been removed. Determine if there is a chance that the composite visual's natural extent has been affected by that. If there is any doubt or there is no answer, say yes. *) + + | oldSuggestion | + oldSuggestion:: child area lastSuggestedExtentKnownToParent. + ^oldSuggestion x = currentNaturalExtent x + or: [oldSuggestion y = currentNaturalExtent y] +) +public naturalHeightForWidth: width = ( + cachedNaturalHeightForWidth = width ifFalse: + [cachedNaturalHeightForWidth:: width. + cachedNaturalHeightForWidth:: computeNaturalHeightForWidth: width]. + ^cachedNaturalHeightForWidth +) +public occupyBoundsResponse: newBounds = ( + (* An unsolicited layout update: see superclass methods for a detailed discussion. In this class, the layout of the children can only change if the extent changes, therefore we only update the children if that is the case. *) + + | oldExtent playground | + oldExtent: extent. + super occupyBoundsResponse: newBounds. + oldExtent = extent + ifTrue: + [childrenDo: [:each | each reiterateBounds]] + ifFalse: + [playground:: innerBounds. + childrenDo: + [:each | + each occupyBounds: (each area boundsWithin: playground)]. + announceLayoutChange] +) +public privateAdd: newChild using: childCollectionUpdateBlock = ( + (* The common private logic for adding a new child to the recevier. The collection update block takes care of actually adding the new child at the proper location in the collection of children. After the initial setup is complete and before the child may be mapped, we need to set its layout. The correct update behavior depends of whether the new child may have affected the receiver's natural extent, and whether it actually has. All of the branches are detected and handled independently because that often eliminates much redundant processing. *) + + | oldNaturalExtent | + childCollectionUpdateBlock value. + newChild linkToParent: self. + isMapped ifTrue: + [(mayAddingAffectNaturalExtent: newChild) + ifTrue: + [oldNaturalExtent:: naturalExtent. + updateGeometricProperties. + naturalExtent = oldNaturalExtent + ifTrue: + [adviseBoundsFor: newChild] + ifFalse: + [requestBoundsUpdateUsing: + [:newBounds | + newBounds = bounds + ifTrue: [adviseBoundsFor: newChild] + ifFalse: [occupyBounds: newBounds]]]. + announceNaturalExtentChange] + ifFalse: + [adviseBoundsFor: newChild]. + newChild mapSubtree] +) +public remove: child = ( + | oldNaturalExtent | + restructuring: + [children remove: child. + child unlinkFromParent. + (mayRemovingAffectNaturalExtent: child) ifTrue: + [oldNaturalExtent:: naturalExtent. + updateGeometricProperties. + naturalExtent = oldNaturalExtent + ifFalse: + [requestBoundsUpdate. + announceNaturalExtentChange]]] +) +public setupAreaIn: child = ( + child setupAreaForCompositeVisual +) +updateLayoutByRequestFrom: child using: continuation = ( + (* In the course of processing a bounds request from the child, we determined we need to request a bounds update for ourselves from the parent. The following scenarios are possible: + 1. If the bounds received from the parents are unchanged, only update the affected child using the continuation it provided for the update. + 2. If our bounds have changed, update all children if the new bounds' extent is different from the old. + For any child updates, use the continuation for the requestor child since this update is solicited by it. Use #occupyBounds: for the others since for them the update is unsolicited. *) + + | playground | + requestBoundsUpdateUsing: + [:newBounds | | extentChanged | + newBounds = bounds + ifTrue: + [continuation value: (computeBoundsFor: child)] + ifFalse: + [extentChanged:: newBounds extent ~= bounds extent. + boundsH value: newBounds. + extentChanged ifTrue: + [playground:: innerBounds. + childrenDo: + [:each | | eachBounds | + eachBounds:: each area boundsWithin: playground. + each == child + ifTrue: + [continuation value: eachBounds] + ifFalse: + [each occupyBounds: eachBounds]]]]] +) +) : ( +) +public class Desktop withMapping: aMapping = ( +(* Desktop is the root of the tree of visuals. It is the parent of any open window. *) +| + public agent + public windows ::= List new. + public updateLockLevel ::= 0. + public windowClosePermission + |mapUsing: aMapping) ( +public add: aWindow = ( + windows add: aWindow. + aWindow linkToParent: self. + isMapped ifTrue: + (* It is important to advise the bounds first and only then map, because + advising the bounds forces all the visuals under the window, and first of all + the window itself, to assume the correct bounds as dictated by their areas. *) + [adviseBoundsFor: aWindow. + aWindow mapSubtree]. +) +public add: aWindow in: areaClass = ( + aWindow areaClass: areaClass. + self add: aWindow +) +adviseBoundsFor: window = ( + window occupyBounds: + (window area boundsWithin: self bounds) +) +adviseBoundsFor: window using: aBlock = ( + aBlock value: + (window area boundsWithin: self bounds) +) +public bounds ^ = ( + (* Answer the entire area of the desktop, i.e. the rectangle as large as the screen with the origin at 0@0. 0@0 being the origin is an important invariant to allow the layout framework work properly. *) + + ^agent desktopBounds +) +public centeredRectangleOfExtent: rectExtent ^ = ( + (* Answer a rectangle of the specified extent centered within the desktop. *) + + ^(extent - rectExtent) // 2 extent: rectExtent +) +public child: child requestsBoundsUpdateUsing: aBlock = ( + self adviseBoundsFor: child using: aBlock +) +public clearDraggedImage = ( + agent clearDraggedImage +) +createAgentUsing: aMapping = ( + unmap. + agent:: aMapping createAgentForDesktop: self. + windows do: [:each | each mapSubtreeUsing: aMapping] +) +createWindow = ( + | window | + window:: Window new. + add: window. + ^window +) +public desktop = ( + ^self +) +disableUserInputDuring: action <[T]> ^ = ( + (* Disable U/I events during evaluation of the given action. Return the result of the evaluation. + Example usage: + [ + Desktop theDesktop disableUserInputDuring: + [anObject performLongOperation] + ] forkAt: Processor userBackgroundPriority. + *) + ^agent disableUserInputDuring: action +) +public discardMappings = ( + agent:: nil. + windows copy do: [:each | each discardMappings] +) +effectivelyVisible ^ = ( + ^true +) +ensureUpToDateAppearance = ( + agent ensureUpToDateAppearance +) +public extent ^ = ( + (* Answer the extent of the entire desktop (including the areas that cannot host windows, such as the Windows taskbar or the Mac menu bar). *) + + ^bounds extent +) +public globalOrigin = ( + ^0 @ 0 +) +public isDescendantOf: anything = ( + ^false +) +public isMapped = ( + ^agent notNil +) +public isMorphic ^ = ( + ^agent isMorphic +) +public isSqueezing ^ = ( + ^false +) +public isWindows ^ = ( + ^agent isWindows +) +public legalAreaClassesFor: child = ( + ^{Anchor. Frame} +) +mapUsing: aMapping = ( + unmap. + agent:: aMapping createAgentForDesktop: self. + windows do: [:each | each mapSubtree] +) +public mapping = ( + ^agent mapping +) +mayAccommodateNaturalHeightChangeOf: child ^ = ( + ^true +) +mayAccommodateNaturalWidthChangeOf: child ^ = ( + ^true +) +public modifierKeyStateForCurrentEvent = ( + ^agent + ifNil: [ModifierKeyState new] + ifNotNil: [:it | it modifierKeyStateForCurrentEvent] +) +public mousePoint ^ = ( + (* Answer the current location of the mouse in the global desktop coordinates. *) + + ^agent mousePoint +) +public positionWindowsWithinVisibleScreenArea = ( + #BOGUS yourself. (* Unclear if this is a Morphic only problem. For now, assume it is. *) + WorldState addDeferredUIMessage: + [World fullRepaintNeeded] +) +printHierarchyLayoutReportOn: aStream = ( + aStream nextPutAll: '-- desktop --' +) +public remove: aWindow = ( + windows remove: aWindow. + aWindow unlinkFromParent +) +public scheduleUIAction: aBlock = ( + (* Schedule an action to be spliced into the normal UI activity (this is presumably sent on a thread different from the UI thread). *) + + agent scheduleUIAction: aBlock +) +public scheduleUIInstallment: aBlock = ( + (* Schedule an action to be spliced into the normal UI activity (this is presumably sent on a thread different from the UI thread). *) + + agent scheduleUIInstallment: aBlock +) +public setDraggedImage: image
    = ( + agent setDraggedImage: image +) +setFingerCursor = ( + (* Change the mouse cursor to a finger (index, not middle). *) + agent setFingerCursor +) +setLeftRightCursor = ( + (* Change the mouse cursor to be an arrow pointing left and right. *) + agent setLeftRightCursor +) +setNormalCursor = ( + (* Change the mouse cursor to the arrow shape. *) + agent setNormalCursor +) +setWaitCursor = ( + (* Change the mouse cursor to the wait (e.g. hourglass) shape. *) + agent setWaitCursor +) +public setupAreaIn: child = ( + child setupAreaForDesktop +) +systemIsIdle = ( + (* Answers if the system is idle, that is, the user has generated no events recently. *) + (* If the agent is nil we assume this is during image startup and pretend that system is idle. + This default makes sense if clients of this method should be quiescent when the system is idle. *) + ^(agent ifNil: [^true]) systemIsIdle +) +public unmap = ( + agent ifNotNil: + [windows do: [:each | each unmapSubtree]. + agent: nil] +) +public updateDraggedImagePosition = ( + agent updateDraggedImagePosition +) +usableBounds ^ = ( + (* Answer the usable area of the desktop, i.e. the portion of #bounds excluding the areas that should not normally host windows, such as the Windows taskbar or the Mac menu bar. *) + + ^agent usableDesktopBounds +) +public windowAtPoint: point ^ = ( + ^agent windowAtPoint: point +) +public windowHasPermissionToClose: window ^ = ( + (* The window is about to be closed, and its regular code has already given permission to do so. The decision is delegated to a client-supplied windowClosePermission block, if present. *) + ^windowClosePermission isNil or: + [windowClosePermission value: window] +) +) : ( +) +public class Flow = VisualCollection (| + horizontalGapA ::= Attribute name: #horizontalGap value: 0. + verticalGapA ::= Attribute name: #verticalGap value: 0. + cachedHeightGivenWidth + precomputedChildrenBounds ::= IdentityMap new. +|affectsNaturalExtent: horizontalGapA. + affectsNaturalExtent: verticalGapA) ( +public add: newChild = ( + (* Add the new child as the last element in the sequence. *) + + restructuring: + [children add: newChild. + newChild linkToParent: self. + isMapped ifTrue: + [updateGeometricProperties. + requestBoundsUpdate. + newChild mapSubtree]. + announceNaturalExtentChange]. + ^newChild +) +addAtBack: newChild = ( + (* Adding as the first element in the sequence (which is what adding at back means for a Flow). *) + + restructuring: + [children addFirst: newChild. + newChild linkToParent: self. + isMapped ifTrue: + [updateGeometricProperties. + requestBoundsUpdate. + newChild mapSubtree]. + announceNaturalExtentChange]. + ^newChild +) +addFirst: newChild = ( + (* Add the new child as the first element in the sequence. *) + + ^addAtBack: newChild +) +public child: child requestsBoundsUpdateUsing: continuation = ( + child area suggestedParentExtent = child area lastSuggestedExtentKnownToParent + ifTrue: + [continuation value: (precomputedBoundsFor: child)] + ifFalse: + [cachedHeightGivenWidth: nil. + requestBoundsUpdateUsing: + [:newBounds | + boundsH value: newBounds. + recomputeLayout. + childrenDo: + [:each | + each == child + ifTrue: [continuation value: (precomputedBoundsFor: each)] + ifFalse: [each occupyBounds: (precomputedBoundsFor: each)]]]] +) +composeOneLineFrom: stream within: width using: aBlock = ( +(* The stream is not empty on entry; must consume at least one element. *) +| elements extent maxHeight right | +elements:: List with: stream next. +extent:: elements first area suggestedParentExtent. +maxHeight:: extent y. +right:: extent x. +[stream atEnd] whileFalse: + [right:: right + horizontalGap. + extent:: stream peek area suggestedParentExtent. + right + extent x <= width + ifTrue: + [right:: right + extent x. + maxHeight:: maxHeight max: extent y. + elements add: stream next] + ifFalse: + [^aBlock value: elements value: maxHeight]]. +^aBlock value: elements value: maxHeight +) +public computeNaturalExtent = ( + | totalWidth maxHeight | + totalWidth:: hasChildren ifTrue: [horizontalGap negated] ifFalse: [0]. + maxHeight:: 0. + childrenDo: + [:each | | extent | + extent:: each area suggestedParentExtent. + totalWidth:: totalWidth + extent x + horizontalGap. + maxHeight:: maxHeight max: extent y]. + ^totalWidth @ maxHeight +) +public computeNaturalHeightForWidth: width ^ = ( + | stream height | + stream:: children readStream. + height:: stream atEnd + ifTrue: [0] + ifFalse: [verticalGap negated]. + [stream atEnd] whileFalse: + [height:: height + + verticalGap + + (readAndMeasureOneLineFrom: stream within: width)]. + ^height +) +createAgentUsing: aMapping = ( + aMapping createAgentForVisualSequence: self. + cachedHeightGivenWidth: nil. +) +public flushLayoutCaches = ( + (* This message informs the receiver that something has changed that affects its visual appearance and layout. The cached value of the receiver's natural extent is now likely to be invalid. *) + + cachedHeightGivenWidth: nil. + precomputedChildrenBounds:: IdentityMap new. + super flushLayoutCaches +) +public forceBoundsResponse: newBounds = ( + boundsH value: newBounds. + recomputeLayout. + childrenDo: [:each | each forceBounds: (precomputedBoundsFor: each)] +) +horizontalGap = ( + ^horizontalGapA value +) +public horizontalGap: newValue = ( + horizontalGapA value: newValue +) +public legalAreaClassesFor: child ^ = ( + ^child legalAreaClassesInFlow +) +public naturalHeightForWidth: width = ( + | height | + ^(cachedHeightGivenWidth notNil and: [cachedHeightGivenWidth first = width]) + ifTrue: + [cachedHeightGivenWidth at: 2] + ifFalse: + [height:: computeNaturalHeightForWidth: width. + cachedHeightGivenWidth:: {width. height}. + height] +) +public occupyBoundsResponse: newBounds = ( + boundsH value: newBounds. + recomputeLayout. + childrenDo: [:each | each occupyBounds: (precomputedBoundsFor: each)] +) +precomputedBoundsFor: child = ( + ^precomputedChildrenBounds at: child +) +precomputedBoundsFor: child are: box = ( + precomputedChildrenBounds at: child put: box +) +readAndMeasureOneLineFrom: stream within: width = ( +(* The stream is not empty on entry; must consume at least one element. *) +| extent maxHeight right | +extent:: stream next area suggestedParentExtent. +maxHeight:: extent y. +right:: extent x. +[stream atEnd] whileFalse: + [right:: right + horizontalGap. + extent:: stream peek area suggestedParentExtent. + right + extent x <= width + ifTrue: + [right:: right + extent x. + maxHeight:: maxHeight max: extent y. + stream next] + ifFalse: + [^maxHeight]]. +^maxHeight +) +recomputeLayout = ( + | width stream top box | + width:: extent x. + stream:: children readStream. + top:: 0. + [stream atEnd] whileFalse: + [composeOneLineFrom: stream within: width using: + [:visuals :maxHeight | | left | + left:: 0. + visuals do: + [:each | | suggestion | + suggestion:: each area suggestedParentExtent. + each area lastSuggestedExtentKnownToParent: suggestion. + box:: left @ top extent: suggestion x @ maxHeight. + precomputedBoundsFor: each are: box. + left:: box right + horizontalGap]]. + top:: box bottom + verticalGap] +) +remove: child = ( + restructuring: + [children remove: child. + child unlinkFromParent. + updateGeometricProperties. + requestBoundsUpdate]. + announceNaturalExtentChange +) +public reorder: visuals = ( +(* Make sure the order of the elements matches that of the argument. *) + +(visuals select: [:any | (children includes: any) not]) isEmpty not ifTrue: + [error: 'bad argument']. +children:: visuals asOrderedCollection. +recomputeLayout +) +public setupAreaIn: child = ( + child setupAreaForFlow +) +verticalGap = ( + ^verticalGapA value +) +verticalGap: newValue = ( + verticalGapA value: newValue +) +) : ( +) +public class Grid = Column ( +(* A grid is a matrix of cells, each containing a visual. It can logically be viewed as a column of rows (or a row of columns), with the added constraint that the width of each row element needs to be equalized with the width of same-index elements of other rows. Thus, this implementation is a special kind of Column containing a special kind of Row (GridRowX). + +A grid is initialized to be a certain size. Initially, each cell is a Wrapper with a Blank. The actual content can be added or replaced using the #at:put: message, with the first argument being a Point. + + Copyright 2008 Cadence Design Systems, Inc. + + 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 +*) +| + columnGapA ::= Attribute name: #columnGap value: 0. + |) ( +addColumn = ( + blockIncrementalLayoutUpdatesWhile: + [childrenDo: [:each | each addColumn]] +) +addRow = ( + add: (GridRowX columns: columnCount) +) +at: coordinate ^ = ( + ^(children at: coordinate y) at: coordinate x +) +at: coordinate put: visual = ( + (children at: coordinate y) at: coordinate x put: visual +) +columnCount ^ = ( + ^children isEmpty + ifTrue: [0] + ifFalse: [children first columnCount] +) +columnGap ^ = ( + ^columnGapA value +) +columnGap: newGap = ( + columnGapA value: newGap. + childrenDo: [:each | each gap: newGap] +) +computeColumnWidthAt: index = ( + ^children inject: 0 into: [:max :each | max max: (each columnWidthAt: index)] +) +public computeNaturalExtent ^ = ( + | sumX sumY gapSum | + sumX: 0. + 1 to: columnCount do: + [:index | + sumX: sumX + (computeColumnWidthAt: index)]. + sumY: 0. + childrenDo: + [:each | + sumY: sumY + each area naturalExtent y]. + gapSum: (children size - 1 max: 0) * gap. + ^sumX @ (sumY + gapSum) +) +extentAt: cell is: extent = ( + (at: cell) area forcedExtent: extent. + refreshLayout +) +public finishedMapping = ( + super finishedMapping. + refreshLayout. +) +recomputeColumnWidths = ( + | maxCellWidthInColumn | + childrenDo: + [:each | each flushPrecomputedColumnWidths]. + 1 to: columnCount do: + [:index | + maxCellWidthInColumn:: 0. + childrenDo: + [:each | + maxCellWidthInColumn:: + maxCellWidthInColumn max: (each columnWidthAt: index)]. + childrenDo: + [:each | each setColumnAt: index widthTo: maxCellWidthInColumn]] +) +refreshLayout = ( + blockIncrementalLayoutUpdatesWhile: + [flushLayoutCaches. + recomputeColumnWidths. + requestBoundsUpdateUsing: + [:newBounds | + forceBounds: newBounds]] +) +row: row requestsBoundsUpdateCausedBy: cell using: continuation = ( + | newNaturalExtent | + newNaturalExtent:: cell area naturalExtent. + newNaturalExtent y = cell area currentLayoutBasis + ifTrue: + [continuation value: row bounds] + ifFalse: + [cell area currentLayoutBasis: newNaturalExtent y. + updateGeometricProperties. + updateLayoutForCell: cell inRow: row using: continuation] +) +rowCount ^ = ( + ^children size +) +rows: rows columns: columns = ( + | row | + rows timesRepeat: + [row:: GridRowX columns: columns. + row gap: columnGap. + add: row] +) +updateLayoutForCell: cell inRow: row using: continuation = ( + | index maxCellWidthInColumn | + index:: row indexOf: cell. + maxCellWidthInColumn:: 0. + childrenDo: + [:each | maxCellWidthInColumn:: maxCellWidthInColumn max: (each columnWidthAt: index)]. + blockIncrementalLayoutUpdatesSilentlyWhile: + [childrenDo: + [:each | each setColumnAt: index widthTo: maxCellWidthInColumn]]. + repositionAllChildrenByRequestFrom: row using: continuation +) +) : ( +rows: rowCount columns: columnCount = ( + ^new rows: rowCount columns: columnCount +) +) +class GridRowX = Row ( +(* PRIVATE CLASS + +GridRow is used internally by Grid to arrange its cells. It is not supposed to be used directly by an application. One of the main differences of a grid row is delegating any child bounds updates it receives to the parent (the grid) so that the grid can match the layout of the same cell in other rows. *) +) ( +addColumn = ( + add: (Wrapper with: Blank new) +) +at: index ^ = ( + ^children at: index +) +at: index put: visual = ( + | old | + old:: children at: index. + restructuring: + [children at: index put: visual. + old unlinkFromParent. + visual linkToParent: self. + isMapped ifTrue: + [visual mapSubtree. + reportNaturalExtentChange]] +) +public child: cell requestsBoundsUpdateUsing: continuation = ( + parent + row: self + requestsBoundsUpdateCausedBy: cell + using: + [:newBounds | + setBounds: newBounds. + repositionAllChildrenByRequestFrom: cell using: continuation] +) +columnCount ^ = ( + ^children size +) +columnWidthAt: index = ( + #BOGUS yourself. (* the older version is below, looks wrong. clean up the related story *) + ^(children at: index) area naturalExtent x + (* ^(children at: index) area width *) +) +columns: columns = ( + columns timesRepeat: [addColumn] +) +flushPrecomputedColumnWidths = ( + (* The hard widths set in individual cell areas need to be removed so that they do not shadow the cells' own natural extents during layout computation. *) + + childrenDo: [:each | each area quietlySetWidth: nil] +) +grid ^ = ( + ^parent +) +public legalAreaClassesFor: child = ( + ^child legalAreaClassesInGridRow +) +setColumnAt: index widthTo: width = ( + (children at: index) area width: width. + updateGeometricProperties +) +public setupAreaIn: child = ( + child setupAreaForGridRow +) +) : ( +columns: columns = ( + ^new columns: columns +) +) +public class HorizontalViewport = HorizontalVisualSequence (| + public scrollPositionH ::= MappableHolder with: 0 @ 0. + public keystrokeChannel = Duct new beWeak. +|) ( +public allowsHorizontalScrolling = ( + ^true +) +public allowsVerticalScrolling = ( + ^false +) +public child: child requestsBoundsUpdateUsing: continuation = ( + super child: child requestsBoundsUpdateUsing: continuation. + isMapped ifTrue: [agent matchScrollbarRange] +) +createAgentUsing: aMapping = ( + aMapping createAgentForViewport: self +) +public forceBoundsResponse: newBounds = ( + super forceBoundsResponse: newBounds. + isMapped ifTrue: [agent matchScrollbarRange] +) +public globalOriginForChildren ^ = ( + (* Answer the coordinates of the top left corner of the visual's surface, relative to which the children are positioned. This value if affected by the current scroll position of the visual for those visuals that support scrolling. *) + + ^globalOrigin translateBy: scrollPosition negated +) +hasElasticChildren ^ = ( + (* Viewports do not honor children elasticity. *) + + ^false +) +innerBounds ^ = ( + ^0 @ 0 + extent: bounds extent - (0 @ scrollbarHeight) +) +public innerExtent ^ = ( + ^extent - (0 @ scrollbarHeight) +) +public keystrokeFactory = ( + (* Give non-Newspeak agents in Brazil mapping ability to instantiate keystrokes. *) + ^Keystroke +) +public occupyBoundsResponse: newBounds = ( + super occupyBoundsResponse: newBounds. + isMapped ifTrue: [agent matchScrollbarRange] +) +public scrollPosition = ( + ^scrollPositionH value +) +public scrollPosition: newOrigin = ( + scrollPositionH value: newOrigin +) +scrollbarHeight = ( + ^agent == nil + ifTrue: [0] + ifFalse: [agent scrollbarHeight] +) +public setupAreaIn: child = ( + child setupAreaForHorizontalViewport +) +public virtualExtent ^ = ( + (* The extent of the area of the receiver currently occupied by its content. *) + ^naturalExtent x @ innerExtent y +) +) : ( +) +class Keystroke asciiValue: asciiValue = ( +(* WORK IN PROGRESS (not at all a container class, but there is no other good place for it in the current module structure). A strawman platform-independent keystroke implementation to provide clients of visuals with some access to keystrokes in the visuals. *) +| + public asciiValue = asciiValue. +|) ( +keyCharacter = ( + ^asciiValue asCharacter +) +) : ( +) +public class Row = HorizontalVisualSequence ( +(* A Row positions its children horizontally one after another. + +The X component of a Row's own natural extent is the sum of natural extents of its children. The Y component of a Row natural extent is equal to the largest of the Y components of its children's natural extents. If a Row is sized to its natural extent, each child is allocated a parcel of the width equal to the X component of the child's natural extent and the height equal to the height of the Row. If a Row size is different from its natural extent and there are no elastic children (see below), then either the rightmost children are hidden from view or there is empty space at the right end of the Row. Each child has the height equal to the height of the Row. + +By default each child gets a RowCell as its area. A RowCell can be given an explicit width by sending to it the #width: message. If set, an explicit width overrides the width of the corresponding child naturalExtent in determining the layout of the child. + +A RowCell can also be made _elastic_ by sending it the #elasiticity: message with a numeric argument. (The default elasticity value is 0). Elasticity affects children layout as follows. If the size of a Row is different from its naturalExtent, the excess or the lack of horizontal room is distributed equally to elastic children, proportionally to their elasticity. + +Consider this example. A Row has a child A of width 10 and elasticity 1, a child B of width 20 and elasticity 2 and child C of width 40 and the default elasticity of 0. The natural width of this Row is 70. If the row is given 100 pixels instead, the excess 30 pixels are distributed to children A and B proportionally to their elasticity, so that child A gets extra 10 pixels and child B gets 20. The final sizes of the children are 20, 40 and 40 pixels, respectively. + +The important applications of elasticity are Rows with centered or right-aligned children. To right-align the content of a Row, add a Blank visual with elasticity 1 as the first child. To center the content of a Row, add two Blanks with elasticity 1, as the first and the last child of a Row. Adding a Blank with elasticity 1 in the middle of a row will have the effect of flushing the children preceding the Blank to the left, and those that follow--to the right. *) +) ( +public setupAreaIn: child = ( + child setupAreaForRow +) +) : ( +) +public class SpyingWrapper = Wrapper ( +(* Spying wrapper is just like the regular one, but it logs the various layout negotiation messages it receives. Wrapping a visual in a spying wrapper is an easy way of spying on its layout computation. This also is a convenient place to set breakpoints to catch instance-specific layout updates. +*) +) ( +public child: theChild requestsBoundsUpdateUsing: action <[:Rectangle]> = ( + Transcript cr; show: 'childRequestsBoundsUpdate (entered)'. + ^super child: theChild requestsBoundsUpdateUsing: + [:newBounds | + Transcript + cr; + show: 'childRequestsBoundsBoundsUpdate -> '; + show: newBounds printString. + action value: newBounds] +) +) : ( +) +public class VerticalViewport = VerticalVisualSequence ( +(* A vertical viewport is similar to a column in that it stacks its elements vertically, sizing each to its own width. However, it provides a scrollbar to access the elements not currently visible. It also ignores elasticity of elements. *) +| + public scrollPositionH ::= MappableHolder with: 0@0. + public keystrokeChannel = Duct new beWeak. +|) ( +public allowsHorizontalScrolling = ( + ^false +) +public allowsVerticalScrolling = ( + ^true +) +public child: child requestsBoundsUpdateUsing: continuation = ( + super child: child requestsBoundsUpdateUsing: continuation. + isMapped ifTrue: [agent matchScrollbarRange] +) +public computeNaturalExtent = ( + (* Take the scrollbar width into account. *) + ^super computeNaturalExtent + (scrollbarWidth @ 0) +) +public computeNaturalHeightForWidth: width ^ = ( + ^super computeNaturalHeightForWidth: width - scrollbarWidth +) +createAgentUsing: aMapping = ( + aMapping createAgentForVerticalViewport: self +) +public forceBoundsResponse: newBounds = ( + super forceBoundsResponse: newBounds. + isMapped ifTrue: [agent matchScrollbarRange] +) +public globalOriginForChildren ^ = ( + (* Answer the coordinates of the top left corner of the visual's surface, relative to which the children are positioned. This value if affected by the current scroll position of the visual for those visuals that support scrolling. *) + + ^globalOrigin translateBy: scrollPosition negated +) +hasElasticChildren ^ = ( + (* Viewports do not honor children elasticity. *) + + ^false +) +public innerBounds ^ = ( + ^0 @ 0 + extent: bounds extent - (scrollbarWidth @ 0) +) +public innerExtent ^ = ( + ^extent - (scrollbarWidth @ 0) +) +public keystrokeFactory = ( + (* Give non-Newspeak agents in Brazil mapping ability to instantiate keystrokes. *) + ^Keystroke +) +public occupyBoundsResponse: newBounds = ( + super occupyBoundsResponse: newBounds. + isMapped ifTrue: [agent matchScrollbarRange] +) +public privateAdd: child using: modificationBlock = ( + | result | + result:: super privateAdd: child using: modificationBlock. + isMapped ifTrue: [agent matchScrollbarRange]. + ^result +) +public scrollPosition ^ = ( + ^scrollPositionH value +) +public scrollPosition: aPoint = ( + scrollPositionH value: aPoint +) +scrollbarWidth = ( + ^agent == nil + ifTrue: [0] + ifFalse: [agent scrollbarWidth] +) +public setupAreaIn: child = ( + child setupAreaForVerticalViewport +) +public virtualExtent ^ = ( + (* The extent of the area of the receiver currently occupied by its content. *) + | width | + width:: innerExtent x. + ^width @ (naturalHeightForWidth: width) +) +) : ( +) +public class Viewport = CompositeVisual ( +(* Viewport adds to CompositeVisual the ability to have scroll bars to scroll itself when its content is larger than the available area. It also keeps track of the current scroll position as the coordinates of the top left corner of the visible area. *) +| + public scrollPositionH ::= MappableHolder with: 0 @ 0. + public keystrokeChannel = Duct new beWeak. +|) ( +public allowsHorizontalScrolling = ( + ^true +) +public allowsVerticalScrolling = ( + ^true +) +public child: child requestsBoundsUpdateUsing: continuation = ( + super child: child requestsBoundsUpdateUsing: continuation. + isMapped ifTrue: [agent matchScrollbarRange] +) +createAgentUsing: aMapping = ( + aMapping createAgentForViewport: self +) +public forceBoundsResponse: newBounds = ( + super forceBoundsResponse: newBounds. + isMapped ifTrue: [agent matchScrollbarRange] +) +public globalOriginForChildren ^ = ( + (* Answer the coordinates of the top left corner of the visual's surface, relative to which the children are positioned. This value if affected by the current scroll position of the visual for those visuals that support scrolling. *) + + ^globalOrigin translateBy: scrollPosition negated +) +innerBounds ^ = ( + ^0 @ 0 + extent: bounds extent - (scrollbarWidth @ scrollbarHeight) +) +innerExtent ^ = ( + (* Answer the extent of the portion of the viewport available for displaying its content. *) + + ^extent - (scrollbarWidth @ scrollbarHeight) +) +public keystrokeFactory = ( + (* Give non-Newspeak agents in Brazil mapping ability to instantiate keystrokes. *) + ^Keystroke +) +public occupyBoundsResponse: newBounds = ( + super occupyBoundsResponse: newBounds. + isMapped ifTrue: [agent matchScrollbarRange] +) +public scrollPosition ^ = ( + ^scrollPositionH value +) +public scrollPosition: newOrigin = ( + scrollPositionH value: newOrigin +) +scrollToPosition: innerLocation at: ratioPoint = ( +(* Scroll the viewport so that the point of the viewport's inner space is positioned at the given ratioPoint within the viewport's bounds. A ratio point of 0 @ 0 is top left, 0.5 @ 0.5 is the center, 1 @ 1 is bottom right. *) + +self scrollPosition: innerLocation - (ratioPoint * innerExtent) +) +scrollbarHeight = ( + ^agent == nil + ifTrue: [0] + ifFalse: [agent scrollbarHeight] +) +scrollbarWidth = ( + ^agent == nil + ifTrue: [0] + ifFalse: [agent scrollbarWidth] +) +public virtualExtent ^ = ( + (* The extent of the area of the receiver currently occupied by its content. *) + ^naturalExtent +) +visibleArea ^ = ( + (* Answer a Rectangle identiying the portion of the virtual display area of the viewport that is currently visible. *) + + ^scrollPosition extent: innerExtent +) +) : ( +) +public class Window = Wrapper ( +(* This is a top-level window. Its parent, if any, is a Desktop. *) +| + public titleA ::= Attribute name: #title value: 'Unnamed Window'. + public minimumExtentA ::= Attribute name: #minimumExtent value: 10 @ 10. + public menuBarMenuA ::= Attribute name: #menuBarMenu value: nil. + public closePermission + public dragDropDispatcher + isModal + |content: CompositeVisual new. + visible: false) ( +add: newChild = ( +(* Add newChild to the content visual of the receiver. This is a convenience protocol to avoid having to always write things such as 'window content add: aVisual'. *) + +content add: newChild +) +public bounds: newBounds = ( + area bounds: newBounds +) +bringToFront = ( + (* Make the window the topmost on the desktop. *) + agent ifNotNil: [agent bringToFront] +) +public close = ( + (* This message can be sent from the application to close the window. The agent/mapping part will take care of checking closePermission, if present. After return from (agent close) the window may still be open if closePermission was denied. If the window is closed by the user rather than the application action, #mappedWindowClosed is sent to the window by the agent. *) + agent ifNotNil: [agent close]. + (* A successful close will send back #mappedWindowClosed, + which will properly unlink the window from the parent. *) +) +createAgentUsing: aMapping = ( + aMapping createAgentForWindow: self +) +extent: newExtent = ( +area extent: newExtent +) +public findTargetForDragAt: globalPoint forSession: session = ( +^dragDropDispatcher isNil + ifTrue: + [nil] + ifFalse: + [dragDropDispatcher + findTargetForDragAt: globalPoint - origin + forSession: session] +) +public globalOrigin = ( + ^bounds origin +) +public hasPermissionToClose ^ = ( +(* Determine whether it is ok to close the receiver. This is controlled at two levels: by the window itself through a client-supplied closePermission block, and by the desktop. *) +^(closePermission isNil or: [closePermission value]) and: + [ | theDsktop | + theDsktop: desktop. + theDsktop isNil or: [theDsktop windowHasPermissionToClose: self]] +) +public isOpen = ( + ^agent notNil and: [agent isOpen] +) +public mappedWindowClosed = ( + (* This message is sent by the agent when its window is closed, either by the user using the UI mechanisms or programmatically at the visual's request. This is a restricted message, not for the use by application code. The application should use #close to close a window. In the latter case this method runs inside the dynamic extent of the receiver's #close method invocation. *) + + notifications send: #closed. + parent remove: self. (* will send #unmap back *) + isModal:: false. + agent: nil +) +public menuBarMenu ^ = ( + ^menuBarMenuA value +) +public menuBarMenu: newMenu = ( + menuBarMenuA value: newMenu +) +minimumExtent = ( + ^minimumExtentA value +) +minimumExtent: aPoint = ( + minimumExtentA value: aPoint +) +public occupyBoundsResponse: newBounds = ( + | box | + box:: newBounds origin extent: (newBounds extent max: minimumExtent). + super occupyBoundsResponse: box +) +public open = ( + parent ifNil: [theDesktop add: self]. + visible: true. +) +public openModalWhileFalse: doneValueProvider afterOpening: setupBlock = ( + isModal:: true. + parent ifNil: [ + theDesktop add: self]. + agent modalOpenWhileFalse: doneValueProvider afterOpening: + [setupBlock value. + visible: true] +) +openOnDesktop: aDesktop = ( + parent isNil + ifTrue: [aDesktop add: self] + ifFalse: [parent ~~ aDesktop + ifTrue: + [parent remove: self. + aDesktop add: self]]. + visible: true. +) +outerBounds ^ = ( +(* The standard #bounds message returns the content area of the window. Outer bounds are the bounds that also include the window frame and the title bar. Outer bounds depend on the host platform. If the UI is not yet mapped, outerBounds are by definition the same as bounds. *) + +^agent + ifNil: [bounds] + ifNotNil: [agent outerBounds] +) +remove: existingChild = ( +content remove: existingChild +) +public resizeFromUserTo: newBounds = ( + (* Sent by the agent after the window artifact has been resized by the user. *) + + #BOGUS yourself. + (area isKindOf: Frame) + ifTrue: + [area bounds: newBounds] + ifFalse: + [self occupyBounds: newBounds] +) +public setupAreaForDesktop = ( + setArea: (Frame visual: self). + area isZero ifTrue: + [area bounds: (70@70 extent: 150@100)] +) +public setupAreaIn: child = ( + child setupAreaForWindow +) +shrinkWrap: shrinkWrap = ( + (* Convenience and backward compatibility. In the new world shrinkWrap is simply what kind of Area we use. *) + + areaClass: (shrinkWrap ifTrue: [Anchor] ifFalse: [Frame]) +) +shrinkWrapNow = ( + area extent: content naturalExtent +) +public title = ( + ^titleA value +) +public title: aString = ( + titleA value: aString +) +public window = ( + ^self +) +) : ( +) +public class Wrapper = ContainerVisual ( +(* A wrapper is a container that holds one child at a time, inside either a Frame or an Anchor. Initially contains a Blank. The child is accessible by sending the #content message, and can be changed using the #content: message. *) +| + contentS + cachedNaturalHeightWidth + cachedNaturalHeightForWidth + |content: Blank new) ( +adviseBoundsFor: child = ( + child occupyBounds: (child area boundsWithin: localBounds) +) +public beBottomCenter = ( + (* A convenience method to support easy wrapping of visuals in wrappers enforcing a particular alignment. For example: 'aVisual wrapped beLeftCenter'. It is assumed that the content is managed by an Anchor. *) + + content area beBottomCenter. + ^self +) +public beBottomLeft = ( + (* A convenience method to support easy wrapping of visuals in wrappers enforcing a particular alignment. For example: 'aVisual wrapped beLeftCenter'. It is assumed that the content is managed by an Anchor. *) + + content area beBottomLeft. + ^self +) +public beBottomRight = ( + (* A convenience method to support easy wrapping of visuals in wrappers enforcing a particular alignment. For example: 'aVisual wrapped beLeftCenter'. It is assumed that the content is managed by an Anchor. *) + + content area beBottomRight. + ^self +) +public beCentered = ( + (* A convenience method to support easy wrapping of visuals in wrappers enforcing a particular alignment. For example: 'aVisual wrapped beLeftCenter'. It is assumed that the content is managed by an Anchor. *) + + content area beCentered. + ^self +) +public beLeftCenter = ( + (* A convenience method to support easy wrapping of visuals in wrappers enforcing a particular alignment. For example: 'aVisual wrapped beLeftCenter'. It is assumed that the content is managed by an Anchor. *) + + content area beLeftCenter. + ^self +) +public beRightCenter = ( + (* A convenience method to support easy wrapping of visuals in wrappers enforcing a particular alignment. For example: 'aVisual wrapped beLeftCenter'. It is assumed that the content is managed by an Anchor. *) + + content area beRightCenter. + ^self +) +public beTopCenter = ( + (* A convenience method to support easy wrapping of visuals in wrappers enforcing a particular alignment. For example: 'aVisual wrapped beLeftCenter'. It is assumed that the content is managed by an Anchor. *) + + content area beTopCenter. + ^self +) +public beTopLeft = ( + (* A convenience method to support easy wrapping of visuals in wrappers enforcing a particular alignment. For example: 'aVisual wrapped beLeftCenter'. It is assumed that the content is managed by an Anchor. *) + + content area beTopLeft. + ^self +) +public beTopRight = ( + (* A convenience method to support easy wrapping of visuals in wrappers enforcing a particular alignment. For example: 'aVisual wrapped beLeftCenter'. It is assumed that the content is managed by an Anchor. *) + + content area beTopRight. + ^self +) +public child: child requestsBoundsUpdateUsing: continuation = ( + (* The key to updating properly is whether sqishing can occur or not. If it can, i.e. if the parent does the squishing and we are able to be squished, the update logic is slightly different. In a squishy case, we need to give the parent a chance to reposition us even if our natural extent has not changed. *) + + (isSqueezing and: [child area isVisualSquishy]) + ifTrue: [updateSquishyChildLayout: child using: continuation] + ifFalse: [updateSolidChildLayout: child using: continuation] +) +public childrenDo: aBlock = ( + content ifNotNil: [aBlock value: content] +) +public computeNaturalExtent ^ = ( + ^content area suggestedParentExtent +) +public content = ( + ^contentS +) +public content: newContent = ( + | oldNaturalExtent | + oldNaturalExtent:: naturalExtent. + restructuring: + [contentS ifNotNil: (* may be nil in a fresh instance initialized with a blank *) + [content unlinkFromParent]. + contentS: newContent. + newContent linkToParent: self. + isMapped ifTrue: + [newContent mapSubtree. + (* It is important to map first so that all natural sizes are right. *) + flushLayoutCaches. (* updates geometricProperties *) + (* reportToTranscript: [:v :out | out print: v; space; print: v naturalExtent; flush]. *) + (* self explore. + error: 'asdf'. *) + (naturalExtent ~= oldNaturalExtent + or: [isSqueezing and: [content area isVisualSquishy]]) + ifTrue: + [requestBoundsUpdateUsing: [:newBounds | forceBounds: newBounds]] + ifFalse: + [content forceBounds: (content area boundsWithin: localBounds)]. + currentNaturalExtent = oldNaturalExtent + ifFalse: [announceNaturalExtentChange]]] +) +createAgentUsing: aMapping = ( + aMapping createAgentForWrapper: self +) +public flushLayoutCaches = ( + cachedNaturalHeightWidth: nil. + super flushLayoutCaches. + updateGeometricProperties +) +public forceBoundsResponse: newBounds = ( + super forceBoundsResponse: newBounds. + content forceBounds: (content area boundsWithin: localBounds) +) +innerBounds ^ = ( + (* Answer the area of the receiver available for displaying children, in the receiver's own coordinate system. *) + + ^0 @ 0 extent: extent +) +installInformationRetriever: spy on: child = ( + child == content ifFalse: [error: 'invalid child to spy on']. + contentS:: spy downwardInterceptor +) +isEmpty = ( + ^content isBlank +) +public isSquishy = ( + ^content area isVisualSquishy +) +public legalAreaClassesFor: child = ( + ^child legalAreaClassesInWrapper +) +public naturalHeightForWidth: size = ( + cachedNaturalHeightWidth ~= size + ifTrue: + [cachedNaturalHeightWidth:: size. + cachedNaturalHeightForWidth:: + content area suggestedParentHeightForWidth: size]. + ^cachedNaturalHeightForWidth +) +public occupyBoundsResponse: newBounds = ( + (* An unsolicited layout update: see superclass methods for a detailed discussion. In this class, the layout of the children can only change if the extent changes, therefore we only update the children if that is the case. *) + + | oldBounds | + oldBounds:: bounds. + super occupyBoundsResponse: newBounds. + oldBounds = newBounds + ifTrue: [content reiterateBounds] + ifFalse: [adviseBoundsFor: content] +) +public setupAreaIn: child = ( + child setupAreaForWrapper +) +public updateGeometricProperties = ( + cachedNaturalHeightWidth:: nil. + super updateGeometricProperties +) +updateSolidChildLayout: child using: continuation = ( + | oldNaturalExtent | + cachedNaturalHeightWidth:: nil. + oldNaturalExtent:: naturalExtent. + updateGeometricProperties. + naturalExtent = oldNaturalExtent + ifTrue: + [continuation value: (child area boundsWithin: localBounds)] + ifFalse: + [requestBoundsUpdateUsing: + [:newBounds | + setBounds: newBounds. + continuation value: (child area boundsWithin: localBounds)]. + announceNaturalExtentChange] +) +updateSquishyChildLayout: child using: continuation = ( + | oldNaturalExtent myExtent newCompositionHeight | + cachedNaturalHeightWidth:: nil. + oldNaturalExtent:: naturalExtent. + updateGeometricProperties. + requestBoundsUpdateUsing: + [:newBounds | + newBounds = bounds ifFalse: [setBounds: newBounds]. + continuation value: (child area boundsWithin: localBounds). + naturalExtent ~= oldNaturalExtent + ifTrue: + [announceNaturalExtentChange]] +) +) : ( +public with: aVisual = ( + ^self new + content: aVisual; + yourself +) +with: aVisual in: areaClass = ( + aVisual areaClass: areaClass. + ^self with: aVisual +) +) +) : ( +) +class ManipulationClasses = ( +(* The former category Brazil-Manipulation *) +) ( +public class AdHocMessageReceiver = ( +(* This class is provided as a stopgap solution until we have real object literals we can use to respond to things such double-dispatched dragged data identification. +*) +| + understoodSelectors ::= Map new. + dispatchAlternative + |) ( +doesNotUnderstand: message = ( + | handler | + handler:: understoodSelectors + at: message selector + ifAbsent: + [^dispatchAlternative + ifNotNil: [:it | + dispatchAlternative:: nil. + it value] + ifNil: [super doesNotUnderstand: message]]. + ^handler valueWithArguments: message arguments +) +public receive: selector using: block = ( + ((block class == ArbitraryArityBlockWrapper) or: + [selector numArgs = block numArgs]) + ifFalse: + [^Error new signal: 'selector and block arity mismatch']. + understoodSelectors at: selector put: block +) +public try: dispatchBlock or: alternativeBlock = ( + dispatchAlternative:: alternativeBlock. + ^dispatchBlock ensure: [dispatchAlternative:: nil] +) +) : ( +) +public class ArbitraryArityBlockWrapper = ( +(* This helper class wraps a one-argument block to provide the behavior similar to &rest arguments of Lisp. Invoking the wrapper using the standard value protocol with any number of arguments invokes the wrapped block with all the arguments passed as an array. +*) +| + public block + |) ( +public value = ( + ^block value: {} +) +public value: arg1 = ( + ^block value: {arg1} +) +public value: arg1 value: arg2 = ( + ^block value: {arg1. arg2} +) +public value: arg1 value: arg2 value: arg3 = ( + ^block value: {arg1. arg2. arg3} +) +public value: arg1 value: arg2 value: arg3 value: arg4 = ( + ^block value: {arg1. arg2. arg3. arg4} +) +public valueWithArguments: arguments = ( + ^block value: arguments +) +) : ( +public block: b = ( + (* cannot use block: in factory because it conflicts with the slot *) + ^new block: b; yourself +) +) +class AssociationDragSource = DragSource ( +(* This DragSource carries around the data being dragged as an Association. The key presumably identifies the data being dragged, and the value is the data itself. +*) +| + association ::= nil -> nil. + |) ( +draggedKey = ( + ^association key +) +draggedKey: newKey = ( + association key: newKey +) +draggedValue = ( + ^association value +) +draggedValue: newValue = ( + association value: newValue +) +public identifyPayloadTo: identificationReceiver = ( + ^identificationReceiver + try: [identificationReceiver draggingAssociation: association] + or: [super identifyPayloadTo: identificationReceiver] +) +) : ( +) +class DragDropDispatcher = ( +(* A DragDropDispatcher holds onto a collection of DropTargets inside a Brazil Window. When installed as the dragDropDispatcher of the window, it looks for the target whose visual currently contains the mousePoint and returns it as the target for the drag/drop at that location). *) +| + targetsX ::= List new. + |) ( +add: target = ( + ^targetsX add: target +) +public findTargetForDragAt: windowRelativePoint forSession: session ^ = ( + ^targetsX + detect: + [:each | + each visual windowRelativeBounds containsPoint: windowRelativePoint] + ifNone: + [nil] +) +includes: target = ( + ^targetsX includes: target +) +remove: target = ( + ^targetsX remove: target +) +) : ( +) +class DragDropSession forTracker: client = ( +(* Created by a tracker when a drag operation begins. *) +| + tracker ::= client. + public source + targetRegistry ::= IdentityMap new. + |) ( +public cleanup = ( + (* Sent by the tracker when the drag session ends. *) + targetRegistry do: [:each | each cleanup] +) +targetAt: key ifAbsentPut: absentBlock <[]> = ( + ^targetRegistry at: key ifPresent: [:e|] ifAbsentPut: absentBlock +) +) : ( +) +public class DragDropTracker = ( +(* A DragTracker can be attached to a visual that supports mouse sensing (i.e. mouseDownAction and the like) in order to make it a drag source. Whenever a drag gesture is initiated from the visual, the responder creates a source negotiator and feeds all mouse events to it so that the negotiator can take care of handing the drag/drop process. + +Slots: + + visual The visual the responder is listening to; must support mouse actions (mouseDownAction, mouseMovedAction, mouseUpAction). + + sourceCreationBlock The block evaluated to create a DragSource when a drag-and-drop operation begins. The client attaching a responder to a visual will typically want to set one up. The default block creates a generic DragSource instance. + + dragOrigin When the mouse button is pressed over the responder's visual, the mouse point where it happened is saved in this slot in order to later detect it moving outside the drag threshold. + + currentSession When a drag-and-drop operation tracked by this instance is in progress, this slot holds the session that represents the operation. + + currentTarget When a drag-and-drop operation is in progress and the mouse is over a drop target, this slot points to the target. *) +| + public visual + public sourceCreationBlock ::= [DragSource new]. + public dragOrigin + public currentSession + public currentTarget + |) ( +public attachTo: aVisual = ( + visual:: aVisual. + visual + mouseDownAction: [respondToMouseDown]; + mouseMovedAction: [respondToMouseMove]; + mouseUpAction: [respondToMouseUp] +) +clearDraggedImage = ( + visual desktop clearDraggedImage +) +continueDragging = ( + (* The mouse has been moved another step. Check for possible target changes and let the current target know about the step. *) + updateDraggedImage. + establishTarget. + deliverDragStepNotification +) +createSession = ( + | source | + source:: sourceCreationBlock value. + source visual: visual. + currentSession:: DragDropSession forTracker: self. + currentSession source: source +) +deliverDragStepNotification = ( + currentTarget + ifNotNil: [:it | it dragStepFrom: dragSource] + ifNil: [dragSource dragStepOverWasteland] +) +public desktop ^ = ( + ^visual desktop +) +dragSource = ( + ^currentSession source +) +dragThreshold ^ = ( + (* How many pixels along one of the axes the mouse should move after the button has been pressed before we pay attention to it. *) + ^5 +) +establishTarget = ( + (* Make sure currentTarget holds the target that corresponds to the current mouse position, sending the required notifications as targets are changed. *) + + | newTarget | + newTarget:: findTargetAtMousePoint. + newTarget = currentTarget ifTrue: [^self]. + currentTarget ifNotNil: [:it | it dragExitFrom: dragSource]. + currentTarget:: newTarget. + currentTarget ifNotNil: [:it | it dragEnterFrom: dragSource]. +) +findTargetAtMousePoint ^ = ( + | where window | + where:: desktop mousePoint. + window:: desktop windowAtPoint: where. + ^window ifNotNil: + [window findTargetForDragAt: where forSession: currentSession] +) +public isDragging = ( + ^currentSession notNil +) +isOutsideDragThreshold: aPoint ^ = ( + | delta | + delta:: aPoint - dragOrigin. + ^delta x abs > dragThreshold or: [delta y abs > dragThreshold] +) +public respondToMouseDown = ( + dragOrigin:: visual mousePoint. + visual grabMouse. +) +public respondToMouseMove = ( + dragOrigin notNil ifTrue: + [isDragging + ifFalse: + [(isOutsideDragThreshold: visual mousePoint) ifTrue: + [startDragging]] + ifTrue: + [continueDragging]] +) +public respondToMouseUp = ( + dragOrigin isNil ifFalse: + [visual releaseMouse. + isDragging ifTrue: [stopDragging]]. + dragOrigin:: nil. +) +setDraggedImage = ( + dragSource draggedImage ifNotNil: + [:it | + visual desktop setDraggedImage: it] +) +startDragging = ( + (* The mouse has been moved outside the drag threshold and the drag-and-drop operation really begins now. Set up the source. *) + createSession. + setDraggedImage. + establishTarget. + deliverDragStepNotification +) +stopDragging = ( + (* The mouse button has been released. *) + establishTarget. + clearDraggedImage. + currentTarget + ifNotNil: [:it | it dragDropFrom: dragSource] + ifNil: [dragSource dragDropOverWasteland]. + currentTarget:: nil. + currentSession cleanup. + currentSession:: nil. +) +updateDraggedImage = ( + visual desktop updateDraggedImagePosition. +) +) : ( +) +public class DragSource = ( +(* A DragSource (or a subclass) is created by client code on a DragTracker's request when a drag-and-drop operation begins. It represents the source of the operation, including the object(s) being dragged. This top-level superclass is not abstract in the strict sense of the word, but still not particularly useful by itself as it cannot have any dragged data associated with it. That is a responsibility of a subclass. This class can, however, hold onto an image to represent the dragged thing. *) +| + visualX + public wastelandTarget + public draggedImage + |) ( +public dragDropOverWasteland = ( + (* The dragged things were dropped over a point not occupied by any civilized windows. *) + wastelandTarget ifNotNil: + [:it | it dropFrom: self] +) +public dragStepOverWasteland = ( + (* The mouse has been moved over an area not occupied by any civilized windows. *) + wastelandTarget ifNotNil: + [:it | it dragStepFrom: self] +) +public identifyPayloadTo: identificationReceiver = ( + (* This is the heart of the mechanism that allows drag targets to determine what is being dragged. A subclass should reimplement this method following the same pattern, but sending the subclass-specific dragging...: message in the try: clause, and delegating to the superclass in the or: clause. *) + ^identificationReceiver + try: [identificationReceiver draggingGenericData: self] + or: [] +) +public visual = ( + ^visualX +) +public visual: sourceVisual = ( + visualX:: sourceVisual. +) +) : ( +) +public class DropTarget = ( +(* Represents a potential drop target associated with a visual. *) +| + isActive ::= false. + visual + entryAction + exitAction + stepAction + public dropAction + |) ( +cleanup = ( + (* Received when the drag session this target participated in ends, if the target has been registered with the session. *) +) +public dragDropFrom: source = ( + isActive ifTrue: [isActive:: false]. + dropAction ifNotNil: [:it | it value: source] +) +public dragEnterFrom: source = ( + isActive:: true. + entryAction ifNotNil: [:it | it value: source] +) +public dragExitFrom: source = ( + isActive:: true. + exitAction ifNotNil: [:it | it value: source] +) +public dragStepFrom: source = ( + (* Process a yet another mouse move event. Answer true to indicate that we want to process further events, or false to indicate that we lost interest. *) + stepAction ifNotNil: [:it | it value: source] +) +) : ( +) +) : ( +) +class MappingClasses = ( +(* The former category Brazil-Mapping *) +) ( +public class AbstractAgentFactory = () ( +public createAgentForActiveIcon: visual = ( + subclassResponsibility +) +public createAgentForBlank: visual = ( + subclassResponsibility +) +public createAgentForCompositeVisual: visual = ( + self subclassResponsibility +) +public createAgentForDesktop: aDesktop = ( + subclassResponsibility +) +public createAgentForEllipseShape: shape = ( + self subclassResponsibility +) +public createAgentForHyperlink: visual = ( + subclassResponsibility +) +public createAgentForIcon: visual = ( + subclassResponsibility +) +public createAgentForLabel: visual