From 1355516e6a07a429e7dbc1be2f8737535756fde4 Mon Sep 17 00:00:00 2001 From: Matthias Neeracher Date: Sat, 12 Apr 2008 21:33:43 +0000 Subject: [PATCH] Add Octave Transpositions --- English.lproj/MainMenu.xib | 1604 ++++++++++++------------------------ Sources/VLDocument.h | 1 + Sources/VLDocument.mm | 10 +- Sources/VLModel.cpp | 19 + Sources/VLModel.h | 3 +- Sources/VLSheetView.h | 1 + Sources/VLSheetView.mm | 6 + 7 files changed, 587 insertions(+), 1057 deletions(-) diff --git a/English.lproj/MainMenu.xib b/English.lproj/MainMenu.xib index ae36e7e..97e2550 100644 --- a/English.lproj/MainMenu.xib +++ b/English.lproj/MainMenu.xib @@ -1,19 +1,19 @@ - + 1050 - 9B18 - 629 - 949 - 343.00 + 9C7010 + 648 + 949.26 + 352.00 YES - + YES - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin YES @@ -23,49 +23,49 @@ - FirstResponder + FirstResponder - MainMenu + MainMenu YES - VocalEasel - + VocalEasel + 1048576 2147483647 - NSImage + NSImage NSMenuCheckmark - - + + NSImage NSMenuMixedState submenuAction: - + VocalEasel YES About VocalEasel - + 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -74,27 +74,27 @@ 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + Services - + 1048576 2147483647 - + submenuAction: @@ -110,50 +110,50 @@ YES YES - - + + 1048576 2147483647 - + Hide VocalEasel - h + h 1048576 2147483647 - + Hide Others - + h 1572864 2147483647 - + Show All - + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -162,7 +162,7 @@ 1048576 2147483647 - + _NSAppleMenu @@ -171,11 +171,11 @@ File - + 1048576 2147483647 - + submenuAction: @@ -190,7 +190,7 @@ 1048576 2147483647 - + @@ -199,16 +199,16 @@ 1048576 2147483647 - + Open Recent - + 1048576 2147483647 - + submenuAction: @@ -219,11 +219,11 @@ Clear Menu - + 1048576 2147483647 - + _NSRecentDocumentsMenu @@ -233,12 +233,12 @@ YES YES - - + + 1048576 2147483647 - + @@ -247,16 +247,16 @@ 1048576 2147483647 - + Save - s + s 1048576 2147483647 - + @@ -265,35 +265,35 @@ 1048576 2147483647 - + U2F2ZSBhIENvcHkgQXPigKY - + s 1572864 2147483647 - + Revert - + 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -302,16 +302,16 @@ 1048576 2147483647 - + UHJpbnTigKY - p + p 1048576 2147483647 - + @@ -319,11 +319,11 @@ Edit - + 1048576 2147483647 - + submenuAction: @@ -338,7 +338,7 @@ 1048576 2147483647 - + @@ -347,18 +347,18 @@ 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -367,7 +367,7 @@ 1048576 2147483647 - + @@ -376,68 +376,68 @@ 1048576 2147483647 - + Paste - v + v 1048576 2147483647 - + YES Overwrite Melody - + v 1572864 2147483647 - + 2 YES Overwrite Chords - V + V 1048576 2147483647 - + 1 YES Overwrite - + V 1572864 2147483647 - + 3 Delete - CA + CA 1048576 2147483647 - + YES Delete Melody - + CA 1572864 2147483647 - + 2 @@ -447,27 +447,27 @@ 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + Find - + 1048576 2147483647 - + submenuAction: @@ -482,7 +482,7 @@ 1048576 2147483647 - + 1 @@ -492,7 +492,7 @@ 1048576 2147483647 - + 2 @@ -502,7 +502,7 @@ 1048576 2147483647 - + 3 @@ -512,7 +512,7 @@ 1048576 2147483647 - + 7 @@ -522,22 +522,22 @@ 1048576 2147483647 - + - Spelling - + Spelling + 1048576 2147483647 - + submenuAction: - + Spelling YES @@ -547,7 +547,7 @@ 1048576 2147483647 - + @@ -556,16 +556,16 @@ 1048576 2147483647 - + Check Spelling as You Type - + 1048576 2147483647 - + @@ -575,167 +575,197 @@ - Song - + Song + 1048576 2147483647 - + submenuAction: - + Song YES RGlzcGxheSBPcHRpb25z4oCmA - + 1048576 2147483647 - + Preview - + p 1572864 2147483647 - + Show Log - + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + UmVwZWF04oCmA - + 1048576 2147483647 - + RW5kaW5n4oCmA - + 1048576 2147483647 - + Start Coda - + 1048576 2147483647 - + Jump to Coda - + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + Line Break - + DQ 1048576 2147483647 - + 1 Page Break - + 1048576 2147483647 - + 2 Section Break - + 1048576 2147483647 - + 256 + + + YES + YES + + + 2147483647 + + + + + + Octave Up + 75yAA + 1048576 + 2147483647 + + + 12 + + + + Octave Down + 75yBA + 1048576 + 2147483647 + + + -12 + - Play - + Play + 1048576 2147483647 - + submenuAction: - + Play YES - - m + Play + m 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -745,7 +775,7 @@ 2147483647 1 - + 1 @@ -756,19 +786,19 @@ 2147483647 1 - + 2 YES YES - - + + 1048576 2147483647 - + @@ -778,7 +808,7 @@ 2147483647 1 - + 8 @@ -786,15 +816,15 @@ - View - + View + 1048576 2147483647 - + submenuAction: - + View YES @@ -804,25 +834,25 @@ 1048576 2147483647 - + Zoom To Fit - + 1048576 2147483647 - + Zoom To Fit Width - + 1048576 2147483647 - + @@ -831,7 +861,7 @@ 1048576 2147483647 - + @@ -840,36 +870,36 @@ 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + Hide Toolbar - + 1048576 2147483647 - + Q3VzdG9taXplIFRvb2xiYXLigKY - + 1048576 2147483647 - + @@ -877,11 +907,11 @@ Window - + 1048576 2147483647 - + submenuAction: @@ -892,60 +922,60 @@ Minimize - + m 1048576 2147483647 - + Zoom - + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + Mirror - + m 1572864 2147483647 - + YES YES - - + + 1048576 2147483647 - + Bring All to Front - + 1048576 2147483647 - + _NSWindowsMenu @@ -954,11 +984,11 @@ Help - + 1048576 2147483647 - + submenuAction: @@ -973,67 +1003,67 @@ 1048576 2147483647 - + VocalEasel Homepage - + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + UmVwb3J0IEJ1Z+KApg - + 1048576 2147483647 - + 1 UmVxdWVzdCBGZWF0dXJl4oCmA - + 1048576 2147483647 - + 2 YES YES - - + + 1048576 2147483647 - + License - + 1048576 2147483647 - + @@ -1042,12 +1072,12 @@ _NSMainMenu - VLAppController + VLAppController 7 2 - {{84, 465}, {450, 202}} + {{149, 788}, {450, 202}} 1886912512 VocalEasel Preferences @@ -1084,14 +1114,14 @@ 272629760 Low: - LucidaGrande + LucidaGrande 1.300000e+01 1044 6 - System + System controlColor 3 @@ -1100,7 +1130,7 @@ 6 - + System controlTextColor 3 @@ -1118,7 +1148,7 @@ 67239424 272629760 - RSM0Cg + RSM0Cg @@ -1150,7 +1180,7 @@ 67239424 272629760 - + RSM0Cg @@ -1200,19 +1230,19 @@ {{17, 85}, {416, 97}} - {0, 0} + {0, 0} 67239424 0 Melody Range - + LucidaGrande 1.100000e+01 16 6 - + System textBackgroundColor 3 @@ -1254,11 +1284,11 @@ 109199615 1 - + LucidaGrande 1.300000e+01 16 - + @@ -1267,12 +1297,12 @@ /Applications/Lilypond.app (2.8.6) - + 1048576 2147483647 1 - + _popUpItemAction: 1 @@ -1287,11 +1317,11 @@ /sw/bin/lilypond (2.9.23) - + 1048576 2147483647 - + _popUpItemAction: @@ -1312,7 +1342,7 @@ {{17, 16}, {416, 65}} - + {0, 0} 67239424 0 @@ -1333,7 +1363,7 @@ {450, 202} - {{0, 0}, {1280, 778}} + {{0, 0}, {1920, 1178}} {213, 129} {3.40282e+38, 3.40282e+38} @@ -1347,49 +1377,49 @@ VLMirrorWindow - Debug + Debug YES - - + Debug + 1048576 2147483647 - + submenuAction: - + Debug YES Dump Document - + 1048576 2147483647 - + Dump Document as XML - + 1048576 2147483647 - + 1 Dump After Round Trip - + 1048576 2147483647 - + 2 @@ -1491,7 +1521,7 @@ - paste: + paste: @@ -1611,7 +1641,7 @@ - delete: + delete: @@ -1627,7 +1657,7 @@ - performFindPanelAction: + performFindPanelAction: @@ -1635,7 +1665,7 @@ - + performFindPanelAction: @@ -1643,7 +1673,7 @@ - + performFindPanelAction: @@ -1651,7 +1681,7 @@ - + performFindPanelAction: @@ -1691,18 +1721,18 @@ - value: values.VLHighPitch + value: values.VLHighPitch - - value - values.VLHighPitch + value: values.VLHighPitch + value + values.VLHighPitch - NSValueTransformerName - VLPitchTransformer + NSValueTransformerName + VLPitchTransformer 2 @@ -1711,18 +1741,18 @@ - value: values.VLLowPitch + value: values.VLLowPitch - - - values.VLLowPitch + value: values.VLLowPitch + value + values.VLLowPitch - - + NSValueTransformerName + VLPitchTransformer 2 @@ -1731,7 +1761,7 @@ - playNewPitch: + playNewPitch: @@ -1739,7 +1769,7 @@ - + playNewPitch: @@ -1747,15 +1777,15 @@ - maxValue: values.VLHighPitch + maxValue: values.VLHighPitch - + maxValue: values.VLHighPitch maxValue - + values.VLHighPitch 2 @@ -1763,15 +1793,15 @@ - + value: values.VLLowPitch - - - + value: values.VLLowPitch + value + values.VLLowPitch 2 @@ -1780,15 +1810,15 @@ - minValue: values.VLLowPitch + minValue: values.VLLowPitch - + minValue: values.VLLowPitch minValue - + values.VLLowPitch 2 @@ -1796,15 +1826,15 @@ - + value: values.VLHighPitch - - - + value: values.VLHighPitch + value + values.VLHighPitch 2 @@ -1885,7 +1915,7 @@ - + paste: @@ -1893,7 +1923,7 @@ - + paste: @@ -1901,7 +1931,7 @@ - + paste: @@ -1909,7 +1939,7 @@ - goToHelpURL: + goToHelpURL: @@ -1917,7 +1947,7 @@ - + goToHelpURL: @@ -1925,7 +1955,7 @@ - + goToHelpURL: @@ -1941,7 +1971,7 @@ - + delete: @@ -1949,7 +1979,7 @@ - showMirror: + showMirror: @@ -1973,7 +2003,7 @@ - dump: + dump: @@ -1981,7 +2011,7 @@ - + dump: @@ -1989,7 +2019,7 @@ - + dump: @@ -1997,7 +2027,7 @@ - togglePlayElements: + togglePlayElements: @@ -2005,7 +2035,7 @@ - + togglePlayElements: @@ -2013,7 +2043,7 @@ - + togglePlayElements: @@ -2021,7 +2051,7 @@ - playStop: + playStop: @@ -2029,7 +2059,7 @@ - editRepeat: + editRepeat: @@ -2037,7 +2067,7 @@ - editRepeatEnding: + editRepeatEnding: @@ -2045,7 +2075,7 @@ - insertStartCoda: + insertStartCoda: @@ -2053,7 +2083,7 @@ - insertJumpToCoda: + insertJumpToCoda: @@ -2061,7 +2091,7 @@ - insertBreak: + insertBreak: @@ -2069,7 +2099,7 @@ - + insertBreak: @@ -2077,7 +2107,7 @@ - + insertBreak: @@ -2085,7 +2115,7 @@ - editDisplayOptions: + editDisplayOptions: @@ -2093,7 +2123,7 @@ - showOutput: + showOutput: @@ -2101,12 +2131,28 @@ - showLog: + showLog: 100322 + + + transposeOctave: + + + + 100326 + + + + transposeOctave: + + + + 100327 + @@ -2146,7 +2192,7 @@ - + MainMenu 19 @@ -2662,7 +2708,7 @@ 215 - + VLAppController 217 @@ -3016,6 +3062,9 @@ + + + @@ -3079,6 +3128,21 @@ + + 100323 + + + + + 100324 + + + + + 100325 + + + @@ -3098,15 +3162,18 @@ 100260.IBPluginDependency 100261.IBPluginDependency 100263.IBPluginDependency + 100265.IBEditorWindowLastContentRect 100265.IBPluginDependency 100265.editorWindowContentRectSynchronizationRect 100271.IBPluginDependency + 100272.IBEditorWindowLastContentRect 100272.IBPluginDependency 100272.editorWindowContentRectSynchronizationRect 100274.IBPluginDependency 100276.IBPluginDependency 100278.IBPluginDependency 100280.IBPluginDependency + 100281.IBEditorWindowLastContentRect 100281.IBPluginDependency 100281.editorWindowContentRectSynchronizationRect 100282.IBPluginDependency @@ -3116,6 +3183,7 @@ 100286.IBPluginDependency 100288.IBPluginDependency 100296.IBPluginDependency + 100297.IBEditorWindowLastContentRect 100297.IBPluginDependency 100297.editorWindowContentRectSynchronizationRect 100300.IBPluginDependency @@ -3134,6 +3202,9 @@ 100317.IBPluginDependency 100319.IBPluginDependency 100320.IBPluginDependency + 100323.IBPluginDependency + 100324.IBPluginDependency + 100325.IBPluginDependency 103.IBPluginDependency 103.ImportedFromIB2 106.IBPluginDependency @@ -3195,6 +3266,7 @@ 167.ImportedFromIB2 168.IBPluginDependency 168.ImportedFromIB2 + 169.IBEditorWindowLastContentRect 169.IBPluginDependency 169.ImportedFromIB2 169.editorWindowContentRectSynchronizationRect @@ -3292,6 +3364,7 @@ 268.ImportedFromIB2 289.IBPluginDependency 289.ImportedFromIB2 + 29.IBEditorWindowLastContentRect 29.IBPluginDependency 29.ImportedFromIB2 29.editorWindowContentRectSynchronizationRect @@ -3333,257 +3406,266 @@ YES - - - - - - - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - ToolTip + ToolTip - + ToolTip Show Video Camera Image - - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{63, 1042}, {114, 23}} + com.apple.InterfaceBuilder.CocoaPlugin {{548, 732}, {114, 23}} - - + com.apple.InterfaceBuilder.CocoaPlugin + {{177, 1002}, {237, 63}} + com.apple.InterfaceBuilder.CocoaPlugin {{662, 692}, {237, 63}} - - - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{266, 988}, {236, 103}} + com.apple.InterfaceBuilder.CocoaPlugin {{245, 622}, {236, 103}} - - - - - - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{804, 840}, {219, 273}} + com.apple.InterfaceBuilder.CocoaPlugin {{193, 502}, {212, 223}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - - - - - - - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{314, 602}, {223, 123}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{170, 808}, {232, 283}} + com.apple.InterfaceBuilder.CocoaPlugin {{149, 442}, {232, 283}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{381, 402}, {260, 63}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{84, 462}, {450, 202}} {3.40282e+38, 3.40282e+38} {213, 107} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{288, 622}, {211, 103}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{290, 572}, {223, 153}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{611, 1113}, {472, 20}} + com.apple.InterfaceBuilder.CocoaPlugin {{0, 725}, {472, 20}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{107, 502}, {211, 223}} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin @@ -3607,61 +3689,53 @@ - 100322 + 100327 YES - - + FirstResponder YES YES action: - - - - - - - - - - - - - - - YES - id - - - - - - - - - - - - - - - - YES - - YES + dump: + editDisplayOptions: + editRepeat: + editRepeatEnding: + insertBreak: + insertJumpToCoda: + insertStartCoda: + playStop: + showLog: + showMirror: + showOutput: + togglePlayElements: + transposeOctave: YES + id + id + id + id + id + id + id + id + id + id + id + id + id + id IBUserSource - + @@ -3679,11 +3753,11 @@ YES - id - - - - + id + id + id + id + id @@ -3696,612 +3770,32 @@ YES - - - + id + id + id - IBProjectSource + IBProjectSource Sources/VLAppController.h VLMirrorWindow NSWindowController - - YES - - YES - - - YES - - mirrorComposition - + id - + IBProjectSource Sources/VLMirrorWindow.h 0 - ../../VocalEasel.xcodeproj + ../VocalEasel.xcodeproj 3 - - YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA -AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEDlgALAAwAMQA1ADkAQABD -AEQASABMAKEApwC3ALwAvQC+AMMAxADFAMgAzADNANAA0QDVANsA6QDwAPEBFQEdAR4BIQElASYBKAE1 -ATkBOgE7AT4BQwFMAToBTQFRAVMBWQFgAWMBZAFlAWoBawFuAXIBegF+AX8BgAGBAYUBjAGNAY4BjwGT -AZoBngGfAaABpAGvAbMBtAG1AbYBuwHCAccByAHJAcoBzwHWAdcB2AHcAeMB5AHlAeoB6wHwAfcB+AH5 -AfoB/gIFAgYCBwIIAg0CFAIaAhsCLAIvAjICMwI3Aj4CQgJDAkQCSAJPAlMCVAJVAlkCYAJhAmICYwJn -Am4CbwJwAnQCewJ/AoACgQKCAoYCjQKOAo8CkwKaApsCnAKgAqgCqQKuArUCtgK3ArsCwgLDAsQCxQLJ -AtAC0QLSAtcC3gLfAuAC5ALrAu8C8ALxAvIC9wL+Av8DAAMEAwsDDAMNAw4DEgMZAxoDGwMcAyADJwMr -AywDLQMuAzIDOQM6AzsDPANBA0gDSQNNA1QDVQNWA1cDXANjA2QDaQNtA3QDdQN2A3cDewOCA4cDiAOJ -A40DlAOVA5YDmgOhA6IDowOkA6gDsQOyA7MDtAO4A78DwAPBA8IDxwPOA88D0wPaA9sD3APgA+cD6APp -A+oD7wPyA/MD9AP4A/8EAAQBBAIEBgQNBA4EDwQTBBoEGwQcBCAEJwQoBCkELQQ0BDUENgQ6BEEEQgRD -BEQESARPBFAEUQRVBFwEXQReBGIEaQRqBGsEbwR2BHsEfAR9BIEEiASJBIoEiwSQBJcEmASZBJ0EpASl -BKYEqgSxBLIEtgS9BL4EvwTDBMoEywTPBNYE1wTYBNkE3QTkBOUE6QTwBPEE8gT3BP4E/wUABRoFGwUc -BR8FIgUjBSQFKgUvBUAFRAVNBVQFVQVhBWIFbAVtBW4FcgV0BXkFegV9BYAFgwWKBYsFkgWTBZoFmwWi -BaMFqgWrBbIFswW1BbYFtwW9Bb4FwgXHBcgFywXOBdEF2wXfBeMF5AXlBesF7AXuBe8F8AUiBfEF9AX1 -BfkGAAYBBgUGDAYNBg4GEgYZBhoGGwYcBiAGJwYoBikGLQY0BjUGNgY6BkEGQgZDBkcGTwZQBlEGVgZa -BlsGXwZpBmoGcAZ3BngGeQZ9BoUGhgaKBpQGmAacBp0GngafBqIGqwasBq0Grga3BrgGvwbABsEGxAbL -BswGzQbVBt0G4wbqBusG7AbvB3wAOAd/B4gHkwecB6UHqAeyB7sHxAfNBmkH0gfbBmkH3AfiBSEGaQfr -B/YH/wgICBEGaQgSCBQIGAgZB6cGaQgiCCUILgg3CDgIQQhKCFMIXAZpCF0IXwhnCHAIeQZpCHoIfAiL -CJQIlQigCKkGaQiqCLgIwQjKBmkIywjQCNII1QjWCN8I6AjpCPIGaQjzCPUJBwkQCRkGaQkaCSkIJAZp -CTIJMwk1CcIKUAreCt8K4ArhCuIK4wrkCuUK5grnCugK6QrqCusK7ArtCu4K7wrwCvEK8grzCvQK9Qr2 -CvcK+Ar5CvoK+wr8Cv0K/gr/CwALAQsCCwMLBAsFCwYLBwsICwkLCgsLCwwLDQsOCw8LEAsRCxILEwsU -CxULFgsXCxgLGQsaCxsLHAsdCx4LHwsgCyELIgsjCyQLJQsmCycLKAspCyoLKwssCy0LLgsvCzALMQsy -CzMLNAs1CzYLNws4CzkLOgs7CzwLPQs+Cz8LQAtBC0ILQwtEC0ULRgtHC0gLSQtKC0sLTAtNC04LTwtQ -C1ELUgtTC1QLVQtWC1cLWAtZC1oLWwtcC10LXgtfC2ALYQtiC2MLZAtlC2YLZwtqC20MTQ0tDS4NLw0w -DTENMg0zDTQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYNRw1IDUkNSg1LDUwNTQ1O -DU8NUA1RDVINUw1UDVUNVg1XDVgNWQ1aDVsNXA1dDV4NXw1gDWENYg1jDWQNZQ1mDWcNaA1pDWoNaw1s -DW0Nbg1vDXANcQ1yDXMA5g10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2J -DYoNiw2MDY0Njg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2n -DagNqQ2qDasNrA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3F -DcYNxw3IDckNyg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3j -DeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8OAAEH -DgEOAg4DDgQOBQ4GDgcOCA4LDg4OEVUkbnVsbN8QEgANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoA -GwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMFZOU1Jvb3RWJGNsYXNzXU5T -T2JqZWN0c0tleXNfEA9OU0NsYXNzZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlPaWRzVmFsdWVzXU5T -Q29ubmVjdGlvbnNbTlNOYW1lc0tleXNbTlNGcmFtZXdvcmtdTlNDbGFzc2VzS2V5c1pOU09pZHNLZXlz -XU5TTmFtZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlDb25uZWN0b3JzXU5TRm9udE1hbmFnZXJfEBBO -U1Zpc2libGVXaW5kb3dzXxAPTlNPYmplY3RzVmFsdWVzXxAXTlNBY2Nlc3NpYmlsaXR5T2lkc0tleXNZ -TlNOZXh0T2lkXE5TT2lkc1ZhbHVlc4ACgQOVgQHRgQKygQOUgAmBAiaABoECsYECs4ECJ4EDkoAAgAeB -AiWBA5MSAAGH5YECtNIADgAyADMANFtOU0NsYXNzTmFtZYAFgAPSAA4ANgA3ADhZTlMuc3RyaW5ngARd -TlNBcHBsaWNhdGlvbtIAOgA7ADwAPVgkY2xhc3Nlc1okY2xhc3NuYW1lowA9AD4AP18QD05TTXV0YWJs -ZVN0cmluZ1hOU1N0cmluZ1hOU09iamVjdNIAOgA7AEEAQqIAQgA/Xk5TQ3VzdG9tT2JqZWN0XxAQSUJD -b2NvYUZyYW1ld29ya9IADgBFAEYAR1pOUy5vYmplY3RzgAig0gA6ADsASQBKowBKAEsAP1xOU011dGFi -bGVTZXRVTlNTZXTSAA4ARQBNAE6ALK8QUgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8A -YABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoAewB8AH0A -fgB/AIAAgQCCAIMAhACFAIYAhwCIAIkAigCLAIwAjQCOAI8AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsA -nACdAJ4AnwCggAqAGIAzgDaAPIBBgEaATIBSgFaAWoBcgGGAZoBugHOAeIB9gIGAh4CLgI+AkoCWgJuA -n4CjgKmArYCygLeAvYDCgMWAyoDOgNOA2IDcgOGA5oDrgO6A8oD3gPuBAQCBAQSBAQiBAQyBARCBARWB -ARmBAR2BASGBASaBASuBAS+BATOBATaBATqBAT2BAUKBAUWBAUmBAYyBAY+BAZOBAZiBAZyBAaCBAaSB -AaiBAbKBAbWBAbaBAb2BAcGBAceBAcqBAcuBAc3TAA4AogCjAKQApQCmWE5TU291cmNlV05TTGFiZWyA -F4ALgBbYAA4AqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALZXTlNUaXRsZV8QEU5TS2V5RXF1aXZN -b2RNYXNrWk5TS2V5RXF1aXZdTlNNbmVtb25pY0xvY1lOU09uSW1hZ2VcTlNNaXhlZEltYWdlVk5TTWVu -dYAVgA0SABAAAIAOEn////+AD4ATgAzTAA4AqAC4ALkAugC7W05TTWVudUl0ZW1zgC2BAgKBAgNUU2F2 -ZVFz0wAOADIAvwDAAMEAwl5OU1Jlc291cmNlTmFtZYASgBCAEVdOU0ltYWdlXxAPTlNNZW51Q2hlY2tt -YXJr0gA6ADsAxgDHogDHAD9fEBBOU0N1c3RvbVJlc291cmNl0wAOADIAvwDAAMEAy4ASgBCAFF8QEE5T -TWVudU1peGVkU3RhdGXSADoAOwDOAM+iAM8AP1pOU01lbnVJdGVtXXNhdmVEb2N1bWVudDrSADoAOwDS -ANOjANMA1AA/XxAVTlNOaWJDb250cm9sQ29ubmVjdG9yXk5TTmliQ29ubmVjdG9y1AAOANYAogCjAKQA -2ADZANpdTlNEZXN0aW5hdGlvboAXgDCAGYAy1wDcAA4A3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOJfEA9O -U05leHRSZXNwb25kZXJXTlNGcmFtZVZOU0NlbGxYTlN2RmxhZ3NZTlNFbmFibGVkW05TU3VwZXJ2aWV3 -gBqAL4AbgBwRAQAJgBrWANwADgDdAOoA3wDhAOsA7ADtAO4A5gDrWk5TU3Vidmlld3OBAX6BAXOBAYGB -AYCBAX5fEBV7ezExLCAxMH0sIHszODgsIDI2fX3fEBQA8gDzAPQA9QD2AA4A9wD4APkA+gDPAPsA/AD9 -AP4A/wEAAK4BAQECAQMA5wEFAQYBBwEIAQUBCQEKAQsBDADZAQ4A5wDnAREBEgETARQBBVtOU0NlbGxG -bGFnc18QGk5TTWVudUl0ZW1SZXNwZWN0QWxpZ25tZW50XxAPTlNBcnJvd1Bvc2l0aW9uXxATTlNBbHRl -cm5hdGVDb250ZW50c18QEk5TUGVyaW9kaWNJbnRlcnZhbF5OU0J1dHRvbkZsYWdzMl8QEE5TQWx0ZXJu -YXRlSW1hZ2VfEA9OU0tleUVxdWl2YWxlbnRZTlNTdXBwb3J0XU5TQ29udHJvbFZpZXdfEA9OU1ByZWZl -cnJlZEVkZ2VfEBJOU1VzZXNJdGVtRnJvbU1lbnVdTlNBbHRlcnNTdGF0ZV8QD05TUGVyaW9kaWNEZWxh -eVxOU0NlbGxGbGFnczJdTlNCdXR0b25GbGFnc18QD05TU2VsZWN0ZWRJbmRleBP/////hEH+QAkQAYAh -EEuALoAggCKAHYAjgBkQAwkJEQGQEQgAgCQSBoJA/9QADgEWARcBGAEZARoBGwEcVk5TU2l6ZVZOU05h -bWVYTlNmRmxhZ3OAHyNAKgAAAAAAAIAeEQQUXEx1Y2lkYUdyYW5kZdIAOgA7AR8BIKIBIAA/Vk5TRm9u -dNQADgEWARcBGAEZARoBGwEkgB+AHhAQUNIADgA2ADcBJYAE3AEpAA4AqACpAKoAqwCsAK0ArgEqASsB -LADlAK8BLwCxAQYAswC0ALUBEwE0AQUBBVhOU1RhcmdldFhOU0FjdGlvblVOU1RhZ1dOU1N0YXRlgByA -FYAlgCGAD4ATgCSAJtMADgCoALgAuQE3ATiALYAngChfECIvQXBwbGljYXRpb25zL0xpbHlwb25kLmFw -cCAoMi44LjYpXxARX3BvcFVwSXRlbUFjdGlvbjrSAA4ANgA3AT2ABFpPdGhlclZpZXdz0gAOAEUATQFA -gCyiAUEBDIApgCPaASkADgCoAKkAqgCrAKwArQCuASoA5QCvAUYAsQEGALMAtAC1ARMBS4AcgBWAKoAh -gA+AE4AkgCtfEBkvc3cvYmluL2xpbHlwb25kICgyLjkuMjMp0gA6ADsBTgFPowFPAVAAP15OU011dGFi -bGVBcnJheVdOU0FycmF50gA6ADsBUgCuogCuAD/SADoAOwFUAVWmAVUBVgFXAVgA3gA/XxARTlNQb3BV -cEJ1dHRvbkNlbGxeTlNNZW51SXRlbUNlbGxcTlNCdXR0b25DZWxsXE5TQWN0aW9uQ2VsbNIAOgA7AVoB -W6YBWwFcAV0BXgFfAD9dTlNQb3BVcEJ1dHRvblhOU0J1dHRvbllOU0NvbnRyb2xWTlNWaWV3W05TUmVz -cG9uZGVy0gAOADIAMwFigAWAMV8QD1ZMQXBwQ29udHJvbGxlcl8QE3NlbGVjdExpbHlwb25kUGF0aDrU -AA4A1gCiAKMBZgDZANgBaYA1gBmAMIA0XGxpbHlwb25kUGF0aNIAOgA7AWwBbaMBbQDUAD9fEBROU05p -Yk91dGxldENvbm5lY3RvctMADgCiAKMApAFwAXGAF4A3gDvZAA4AqACpAKoAqwCsAK0ArgErAK8BdACx -AXUAswC0ALUBeAF5gBWAOYA6gA+AE4A4EAfTAA4AqAC4ALkBfAF9gC2BAfyBAf1fEBZVc2UgU2VsZWN0 -aW9uIGZvciBGaW5kUWVfEBdwZXJmb3JtRmluZFBhbmVsQWN0aW9uOtMADgCiAKMApAGDAYSAF4A9gEDY -AA4AqACpAKoAqwCsAK0ArgCvAYcAsQGIALMAtAC1ALaAFYA+gD+AD4ATgAxTTmV3UW5cbmV3RG9jdW1l -bnQ60wAOAKIAowCkAZEBkoAXgEKARdgADgCoAKkAqgCrAKwArQCuAK8BlQCxAQYAswC0ALUBmYAVgESA -IYAPgBOAQ9MADgCoALgAuQGcAZ2ALYECHYECH28QEABEAGkAcwBwAGwAYQB5ACAATwBwAHQAaQBvAG4A -cyAmXxATZWRpdERpc3BsYXlPcHRpb25zOtMADgCiAKMApAGiAaOAF4BHgEvaAA4BpQCoAKoAqQCrAKwA -rQCuASsArwDnAagBqQGqALMAtAC1Aa0Brl1OU0lzQWx0ZXJuYXRlgBUJgEmAShIAGAAAgA+AE4BIEALT -AA4AqAC4ALkBsQGygC2BAhmBAhpdRGVsZXRlIE1lbG9keVEIV2RlbGV0ZTrUAA4A1gCiAKMApAAfAbkB -uoAXgAKATYBR2AAOAKgAqQCqAKsArACtAK4ArwG9ALEBvgCzALQAtQHBgBWAT4BQgA+AE4BO1AAOAKgB -FwC4ALkBxAHFAcaALYECCIECFYECCl8QD1F1aXQgVm9jYWxFYXNlbFFxWnRlcm1pbmF0ZTrUAA4A1gCi -AKMApAAfAc0BzoAXgAKAU4BV1wAOAKgAqgCrAKwArQCuAK8B0QEGALMAtAC1AcGAFYBUgCGAD4ATgE5f -EBBBYm91dCBWb2NhbEVhc2VsXxAdb3JkZXJGcm9udFN0YW5kYXJkQWJvdXRQYW5lbDrTAA4AogCjAKQB -2gHbgBeAV4BZ2AAOAKgAqQCqAKsArACtAK4ArwHeALEBBgCzALQAtQGZgBWAWIAhgA+AE4BDWlN0YXJ0 -IENvZGFfEBBpbnNlcnRTdGFydENvZGE61AAOANYAogCjAWYA2AAfAemANYAwgAKAW1hkZWxlZ2F0ZdQA -DgDWAKIAowCkAB8B7gHvgBeAAoBdgGDYAA4AqACpAKoAqwCsAK0ArgCvAfIAsQHzALMAtAC1AcGAFYBe -gF+AD4ATgE5fEA9IaWRlIFZvY2FsRWFzZWxRaFVoaWRlOtMADgCiAKMApAH8Af2AF4BigGXYAA4AqACp -AKoAqwCsAK0ArgCvAgAAsQIBALMAtAC1Aa2AFYBjgGSAD4ATgEhVUGFzdGVRdlZwYXN0ZTrUAA4A1gCi -AKMApADYAgsCDIAXgDCAZ4Bt1wDcAA4A3QDeAN8A4ADhAg4CDwIQAhEA5gDnAg6AaIBsgGmAagmAaNYA -3AAOAN0A6gDfAOECFQDsAhcCGADmAhWBAVaBAXOBAXKBAViBAVZfEBV7ezExNCwgMTF9LCB7MTksIDI3 -fX3aAhwA8gAOAh0CHgIfAiAA+wEAAiECIgIjAiQCJQDnAicCKAILAioA51dOU1ZhbHVlW05TSW5jcmVt -ZW50XE5TVmFsdWVXcmFwc1pOU01heFZhbHVlWk5TTWluVmFsdWVcTlNBdXRvcmVwZWF0I0BNgAAAAAAA -EgAN/iCAayM/8AAAAAAAAAkjQFUAAAAAAAAjQEIAAAAAAACAZxAACdIAOgA7Ai0CLqQCLgFYAN4AP11O -U1N0ZXBwZXJDZWxs0gA6ADsCMAIxpQIxAV0BXgFfAD9ZTlNTdGVwcGVyXXBsYXlOZXdQaXRjaDrTAA4A -ogCjAKQCNQI2gBeAb4By2QAOAKgAqQCqAKsArACtAK4BKwCvAjkAsQEGALMAtAC1Aj0BroAVgHGAIYAP -gBOAcNMADgCoALgAuQJAAkGALYEBqoEBrl8QFUR1bXAgQWZ0ZXIgUm91bmQgVHJpcFVkdW1wOtMADgCi -AKMApAJGAkeAF4B0gHfYAA4AqACpAKoAqwCsAK0ArgCvAkoAsQEGALMAtAC1Ak6AFYB2gCGAD4ATgHXT -AA4AqAC4ALkCUQJSgC2BAeSBAeZvEBIAQwB1AHMAdABvAG0AaQB6AGUAIABUAG8AbwBsAGIAYQByICZf -EB9ydW5Ub29sYmFyQ3VzdG9taXphdGlvblBhbGV0dGU60wAOAKIAowCkAlcCWIAXgHmAfNgADgCoAKkA -qgCrAKwArQCuAK8CWwCxAlwAswC0ALUBrYAVgHqAe4APgBOASFRDb3B5UWNVY29weTrTAA4AogCjAKQC -ZQJmgBeAfoCA2AAOAKgAqQCqAKsArACtAK4ArwJpALEBBgCzALQAtQJOgBWAf4AhgA+AE4B1XxARWm9v -bSBUbyBGaXQgV2lkdGhfEA96b29tVG9GaXRXaWR0aDrTAA4AogCjAKQCcgJzgBeAgoCG2AAOAKgAqQCq -AKsArACtAK4ArwJ2ALECdwCzALQAtQJ6gBWAhICFgA+AE4CD0wAOAKgAuAC5An0CfoAtgQHYgQHZXxAP -Vm9jYWxFYXNlbCBIZWxwUT9Zc2hvd0hlbHA60wAOAKIAowCkAoQChYAXgIiAitgADgCoAKkAqgCrAKwA -rQCuAK8CiACxAQYAswC0ALUCToAVgImAIYAPgBOAdVtab29tIFRvIEZpdFp6b29tVG9GaXQ60wAOAKIA -owCkApECkoAXgIyAjtgADgCoAKkAqgCrAKwArQCuAK8ClQCxAQYAswC0ALUBmYAVgI2AIYAPgBOAQ2cA -RQBuAGQAaQBuAGcgJl8QEWVkaXRSZXBlYXRFbmRpbmc60wAOAKIAowCkAp4B/YAXgJCAZdoADgGlAKgA -qgCpAKsArACtAK4BKwCvAOcCowIBAaoAswC0ALUBrQGugBUJgJGAZIAPgBOASF8QEE92ZXJ3cml0ZSBN -ZWxvZHnUAA4A1gCiAKMApAAfAqwCrYAXgAKAk4CV2AAOAKgAqQCqAKsArACtAK4ArwKwALEBBgCzALQA -tQHBgBWAlIAhgA+AE4BOWFNob3cgQWxsXxAWdW5oaWRlQWxsQXBwbGljYXRpb25zOtMADgCiAKMApAK5 -ArqAF4CXgJrYAA4AqACpAKoAqwCsAK0ArgCvAr0AsQK+ALMAtAC1Ak6AFYCYgJmAD4ATgHVbQWN0dWFs -IFNpemVRMF8QEXpvb21Ub0FjdHVhbFNpemU60wAOAKIAowCkAscCyIAXgJyAntkADgCoAKkAqgCrAKwA -rQCuASsArwLLALEBBgCzALQAtQGZAa6AFYCdgCGAD4ATgENaUGFnZSBCcmVha1xpbnNlcnRCcmVhazrU -AA4A1gCiAKMApAAfAtUC1oAXgAKAoICi2AAOAKgAqQCqAKsArACtAK4ArwLZAaoB8wCzALQAtQHBgBWA -oYBfgA+AE4BOW0hpZGUgT3RoZXJzXxAWaGlkZU90aGVyQXBwbGljYXRpb25zOtMADgCiAKMApALiAuOA -F4CkgKjYAA4AqACpAKoAqwCsAK0ArgCvAuYAsQLnALMAtAC1AuqAFYCmgKeAD4ATgKXTAA4AqAC4ALkC -7QLugC2BAeCBAeJpAFMAcABlAGwAbABpAG4AZyAmUTpfEA9zaG93R3Vlc3NQYW5lbDrUAA4A1gCiAKMA -pADYAvUC9oAXgDCAqoCs2QAOAKgAqQCqAKsArACtAK4BKwCvAvkAsQEGALMAtAC1AnoBBYAVgKuAIYAP -gBOAg2sAUgBlAHAAbwByAHQAIABCAHUAZyAmXGdvVG9IZWxwVVJMOtMADgCiAKMApAMCAwOAF4CugLHY -AA4AqACpAKoAqwCsAK0ArgCvAwYAsQMHALMAtAC1ALaAFYCvgLCAD4ATgAxlAE8AcABlAG4gJlFvXW9w -ZW5Eb2N1bWVudDrTAA4AogCjAKQDEAMRgBeAs4C22AAOAKgAqQCqAKsArACtAK4ArwMUALEDFQCzALQA -tQGtgBWAtIC1gA+AE4BIVFJlZG9RWlVyZWRvOtMADgCiAKMApAMeAx+AF4C4gLzYAA4AqACpAKoAqwCs -AK0ArgCvAyIAsQMjALMAtAC1AyaAFYC6gLuAD4ATgLnTAA4AqAC4ALkDIgMqgC2AuoEB1FRQbGF5UW1Z -cGxheVN0b3A60wAOAKIAowCkAzADMYAXgL6AwdgADgCoAKkAqgCrAKwArQCuAK8DNACxAzUAswC0ALUC -ToAVgL+AwIAPgBOAdVhab29tIE91dFEtWHpvb21PdXQ61AAOANYAogCjAKQA2AM/AvaAF4AwgMOArNgA -DgCoAKkAqgCrAKwArQCuAK8DQwCxAQYAswC0ALUCeoAVgMSAIYAPgBOAg18QE1ZvY2FsRWFzZWwgSG9t -ZXBhZ2XTAA4AogCjAKQDSwNMgBeAxoDJ2AAOAKgAqQCqAKsArACtAK4ArwNPALEDUACzALQAtQGtgBWA -x4DIgA+AE4BIWlNlbGVjdCBBbGxRYVpzZWxlY3RBbGw61AAOANYAogCjAKQA2ANaAgyAF4AwgMuAbdcA -3AAOAN0A3gDfAOAA4QIOAg8DXwNgAOYA5wIOgGiAbIDMgM0JgGhfEBV7ezExNCwgNDF9LCB7MTksIDI3 -fX3aAhwA8gAOAh0CHgIfAiAA+wEAAiECIgIjAiQCJQDnAicCKANaAioA54BrCYDLCdMADgCiAKMApANr -A2yAF4DPgNLYAA4AqACpAKoAqwCsAK0ArgCvA28AsQNwALMAtAC1Aa2AFYDQgNGAD4ATgEhTQ3V0UXhU -Y3V0OtMADgCiAKMApAN5A3qAF4DUgNfYAA4AqACpAKoAqwCsAK0ArgCvA30AsQEGALMAtAC1A4GAFYDW -gCGAD4ATgNXUAA4AqAEXALgAuQOEA4UDhoAtgQHygQH1gQHzVFpvb21ccGVyZm9ybVpvb2060wAOAKIA -owCkA4sDjIAXgNmA29gADgCoAKkAqgCrAKwArQCuAK8DjwCxAQYAswC0ALUBmYAVgNqAIYAPgBOAQ1xK -dW1wIHRvIENvZGFfEBFpbnNlcnRKdW1wVG9Db2RhOtMADgCiAKMApAOYA5mAF4DdgODYAA4AqACpAKoA -qwCsAK0ArgCvA5wAsQOdALMAtAC1ALaAFYDegN+AD4ATgAxrAFAAYQBnAGUAIABTAGUAdAB1AHAgJlFQ -XnJ1blBhZ2VMYXlvdXQ60wAOAKIAowCkA6YDp4AXgOKA5doADgCoAKkAqgCrAKwArQCuASsBLACvA6oD -qwOsALMAtAC1AyYDsAEFgBWA4xIAEgAAgOSAD4ATgLkQCFhDb3VudCBJblFVXxATdG9nZ2xlUGxheUVs -ZW1lbnRzOtMADgCiAKMApAO2A7eAF4DngOrYAA4AqACpAKoAqwCsAK0ArgCvA7oAsQO7ALMAtAC1ALaA -FYDogOmAD4ATgAxmAFAAcgBpAG4AdCAmUXBecHJpbnREb2N1bWVudDrUAA4A1gCiAKMApADYA8UC9oAX -gDCA7ICs2QAOAKgAqQCqAKsArACtAK4BKwCvA8kAsQEGALMAtAC1AnoBroAVgO2AIYAPgBOAg28QEABS -AGUAcQB1AGUAcwB0ACAARgBlAGEAdAB1AHIAZSAm0wAOAKIAowCkA9ED0oAXgO+A8dgADgCoAKkAqgCr -AKwArQCuAK8D1QGqALIAswC0ALUAtoAVgPCADoAPgBOADG8QDwBTAGEAdgBlACAAYQAgAEMAbwBwAHkA -IABBAHMgJl8QD3NhdmVEb2N1bWVudFRvOtMADgCiAKMApAPeA9+AF4DzgPbYAA4AqACpAKoAqwCsAK0A -rgCvA+IAsQPjALMAtAC1ALaAFYD0gPWAD4ATgAxoAFMAYQB2AGUAIABBAHMgJlFTXxAPc2F2ZURvY3Vt -ZW50QXM61AAOANYAogCjAWYD7ADYA+6ANYD4gDCA+tIADgAyADMD8YAFgPleVkxNaXJyb3JXaW5kb3dZ -bWlycm9yV2lu0wAOAKIAowCkA/YD94AXgPyA/9gADgCoAKkAqgCrAKwArQCuAK8D+gCxA/sAswC0ALUB -eIAVgP2A/oAPgBOAOF8QEUp1bXAgdG8gU2VsZWN0aW9uUWpfEB1jZW50ZXJTZWxlY3Rpb25JblZpc2li -bGVBcmVhOtMADgCiAKMApAQEBAWAF4EBAYEBA9gADgCoAKkAqgCrAKwArQCuAK8ECACxAQYAswC0ALUD -gYAVgQECgCGAD4ATgNVfEBJCcmluZyBBbGwgdG8gRnJvbnRfEA9hcnJhbmdlSW5Gcm9udDrTAA4AogCj -AKQEEQFxgBeBAQWAO9kADgCoAKkAqgCrAKwArQCuASsArwQVALEEFgCzALQAtQF4AQ6AFYEBBoEBB4AP -gBOAOF1GaW5kIFByZXZpb3VzUUfTAA4AogCjAKQEHgOngBeBAQmA5doADgCoAKkAqgCrAKwArQCuASsB -LACvBCIDqwQjALMAtAC1AyYBBQEFgBWBAQqBAQuAD4ATgLlfEBJQbGF5IEFjY29tcGFuaW1lbnRRQdMA -DgCiAKMApAQrA6eAF4EBDYDl2gAOAKgAqQCqAKsArACtAK4BKwEsAK8ELwOrBDAAswC0ALUDJgGuAQWA -FYEBDoEBD4APgBOAuVtQbGF5IE1lbG9keVFN0wAOAKIAowCkBDgEOYAXgQERgQEU2AAOAKgAqQCqAKsA -rACtAK4ArwQ8ALEEPQCzALQAtQJOgBWBARKBAROAD4ATgHVXWm9vbSBJblErV3pvb21JbjrTAA4AogCj -AKQERgRHgBeBARaBARjYAA4AqACpAKoAqwCsAK0ArgCvBEoAsQEGALMAtAC1AuqAFYEBF4AhgA+AE4Cl -XxAaQ2hlY2sgU3BlbGxpbmcgYXMgWW91IFR5cGVfEB50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2lu -ZzrTAA4AogCjAKQEUwRUgBeBARqBARzXAA4AqACqAKsArACtAK4ArwRXAQYAswC0ALUAtoAVgQEbgCGA -D4ATgAxWUmV2ZXJ0XxAWcmV2ZXJ0RG9jdW1lbnRUb1NhdmVkOtMADgCiAKMApARgBGGAF4EBHoEBINgA -DgCoAKkAqgCrAKwArQCuAK8EZACxAQYAswC0ALUCToAVgQEfgCGAD4ATgHVcSGlkZSBUb29sYmFyXxAT -dG9nZ2xlVG9vbGJhclNob3duOtMADgCiAKMApARtBG6AF4EBIoEBJdgADgCoAKkAqgCrAKwArQCuAK8E -cQCxAQYAswC0ALUEdYAVgQEkgCGAD4ATgQEj1AAOAKgBFwC4ALkEeAR5BHqALYEB7IEB7oEB7VpDbGVh -ciBNZW51XxAVY2xlYXJSZWNlbnREb2N1bWVudHM60wAOAKIAowCkBH8EgIAXgQEngQEq2AAOAKgAqQCq -AKsArACtAK4ArwSDALEEhACzALQAtQGtgBWBASiBASmAD4ATgEhUVW5kb1F6VXVuZG861AAOANYAogCj -AKQA2ASOBI+AF4AwgQEsgQEu2AAOAKgAqQCqAKsArACtAK4ArwSSALEBBgCzALQAtQJ6gBWBAS2AIYAP -gBOAg1dMaWNlbnNlXWdvVG9IZWxwUGFnZTrTAA4AogCjAKQEmwScgBeBATCBATLYAA4AqACpAKoAqwCs -AK0ArgCvBJ8BqgO7ALMAtAC1AZmAFYEBMYDpgA+AE4BDV1ByZXZpZXdbc2hvd091dHB1dDrTAA4AogCj -AKQEqAI2gBeBATSActgADgCoAKkAqgCrAKwArQCuAK8ErACxAQYAswC0ALUCPYAVgQE1gCGAD4ATgHBd -RHVtcCBEb2N1bWVudNMADgCiAKMApAS0AXGAF4EBN4A72QAOAKgAqQCqAKsArACtAK4BKwCvBLgAsQS5 -ALMAtAC1AXgBroAVgQE4gQE5gA+AE4A4WUZpbmQgTmV4dFFn0wAOAKIAowCkBMECyIAXgQE7gJ7ZAA4A -qACpAKoAqwCsAK0ArgErAK8ExQCxAQYAswC0ALUBmQDmgBWBATyAIYAPgBOAQ11TZWN0aW9uIEJyZWFr -0wAOAKIAowCkBM0EzoAXgQE+gQFB2AAOAKgAqQCqAKsArACtAK4ArwTRALEE0gCzALQAtQLqgBWBAT+B -AUCAD4ATgKVeQ2hlY2sgU3BlbGxpbmdRO15jaGVja1NwZWxsaW5nOtMADgCiAKMApATbAaOAF4EBQ4BL -2AAOAKgAqQCqAKsArACtAK4ArwTfALEBqQCzALQAtQGtgBWBAUSASoAPgBOASFZEZWxldGXTAA4AogCj -AKQE5wTogBeBAUaBAUjYAA4AqACpAKoAqwCsAK0ArgCvBOsBqgMjALMAtAC1A4GAFYEBR4C7gA+AE4DV -Vk1pcnJvcltzaG93TWlycm9yOtQADgDWAKIAowCkBPQE9QT2gBeBAU2BAUqBAYvYAA4AqACpAKoAqwCs -AK0ArgCvBPkAsQT6ALMAtAC1AcGAFYEBS4EBTIAPgBOATmwAUAByAGUAZgBlAHIAZQBuAGMAZQBzICZR -LN4FAQAOBQIFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBREFEgUTBRQFFQUWBRcBrgF5BRgFGVxO -U1dpbmRvd1ZpZXdfEBZOU1dpbmRvd0NvbnRlbnRNYXhTaXplXE5TU2NyZWVuUmVjdF1OU1dpbmRvd1Rp -dGxlWU5TV1RGbGFnc11OU1dpbmRvd0NsYXNzXxAWTlNXaW5kb3dDb250ZW50TWluU2l6ZVxOU1dpbmRv -d1JlY3RZTlNNYXhTaXplXxAPTlNXaW5kb3dCYWNraW5nXxARTlNXaW5kb3dTdHlsZU1hc2tZTlNNaW5T -aXplW05TVmlld0NsYXNzgQFUgQGKgQFSgQGHgQFPEnB4AACBAVCBAVOBAU6BAYmBAYiBAVFfEBd7ezg0 -LCA0NjV9LCB7NDUwLCAyMDJ9fV8QFlZvY2FsRWFzZWwgUHJlZmVyZW5jZXPSAA4ANgA3BR6ABFhOU1dp -bmRvd9IADgA2ADcFIYAEVFZpZXdfEBp7My40MDI4MmUrMzgsIDMuNDAyODJlKzM4fVp7MjEzLCAxMDd9 -1QDcAA4A6gDfBSUAKwDsBSgA5gUpW05TRnJhbWVTaXplgACBAXOBAVWBAYbSAA4ARQBNBSyALKICFQDr -gQFWgQF+3QDcBTAADgUxAN0FMgDqAN8FMwU0BTUA4QU2BQ4CKgU4BTkFOgU7BTwA5gEOBT0BrgUOAg5Z -TlNCb3hUeXBlW05TVGl0bGVDZWxsXU5TVHJhbnNwYXJlbnRcTlNCb3JkZXJUeXBlWU5TT2Zmc2V0c18Q -D05TVGl0bGVQb3NpdGlvbl1OU0NvbnRlbnRWaWV3gQFUgQF9gQF2gQF0CIEBV4EBdYEBVIBo0gAOAEUA -TQVCgCyhAg6AaNIADgBFAE0FRoAspgVHBUgFSQVKA1oCC4EBWYEBZ4EBa4EBb4DLgGfXANwADgDdAN4A -3wDgAOECDgVPBVAFUQDmAOcCDoBogQFmgQFagQFbCYBoXxAUe3sxMSwgMTZ9LCB7NDIsIDE3fX3YAPIA -DgVWBVcA+gD7AQAFWAVZBVoFWwVcAQsFRwVfBWBfEBFOU0JhY2tncm91bmRDb2xvclpOU0NvbnRlbnRz -W05TVGV4dENvbG9yEgQB/gCBAWWBAV2BAVyAHYEBWRIQQAAAgQFiVExvdzrVAA4FYwVkBWUFZgVnBWgF -aQVqBWtXTlNDb2xvclxOU0NvbG9yU3BhY2VbTlNDb2xvck5hbWVdTlNDYXRhbG9nTmFtZYEBYYEBYBAG -gQFfgQFeVlN5c3RlbVxjb250cm9sQ29sb3LTAA4FZAVvBWcBDgVxV05TV2hpdGWBAWFLMC42NjY2NjY2 -OQDSADoAOwVzBWOiBWMAP9UADgVjBWQFZQVmBWcFdgVpBXcFa4EBYYEBZIEBY4EBXl8QEGNvbnRyb2xU -ZXh0Q29sb3LTAA4FZAVvBWcBDgV8gQFhQjAA0gA6ADsFfgV/pAV/AVgA3gA/XxAPTlNUZXh0RmllbGRD -ZWxs0gA6ADsFgQWCpQWCAV0BXgFfAD9bTlNUZXh0RmllbGTXANwADgDdAN4A3wDgAOECDgVPBYYFhwDm -AOcCDoBogQFmgQFogQFpCYBoXxAUe3s1NSwgMTZ9LCB7NDEsIDE3fX3YAPIADgVWBVcA+gD7AQAFWAVZ -BVoFWwWOAQsFSAVfBWCBAWWBAV2BAWqAHYEBZ4EBYlRFIzQK1wDcAA4A3QDeAN8A4ADhAg4FTwWWBZcA -5gDnAg6AaIEBZoEBbIEBbQmAaF8QFHt7MTEsIDQ3fSwgezQyLCAxN3192ADyAA4FVgVXAPoA+wEABVgF -WQVaBVsFngELBUkFXwVggQFlgQFdgQFugB2BAWuBAWJVSGlnaDrXANwADgDdAN4A3wDgAOECDgVPBaYF -pwDmAOcCDoBogQFmgQFwgQFxCYBoXxAUe3s1NSwgNDd9LCB7NDEsIDE3fX3YAPIADgVWBVcA+gD7AQAF -WAVZBVoFWwWOAQsFSgVfBWCBAWWBAV2BAWqAHYEBb4EBYl8QE3t7MiwgMn0sIHs0MTIsIDgwfX3SADoA -OwW0AV6jAV4BXwA/XxAVe3sxNywgODV9LCB7NDE2LCA5N319VnswLCAwfdcA8gAOBVYFVwD6AQAFWAVZ -BVoFuQW6BbsCKgW8gQFlgQF5gQF3gQF4gQF8XE1lbG9keSBSYW5nZdQADgEWARcBGAEZBcABGwEkgB8j -QCYAAAAAAACAHtUADgVjBWQFZQVmBWcFxAVpBcUFa4EBYYEBe4EBeoEBXl8QE3RleHRCYWNrZ3JvdW5k -Q29sb3LTAA4FZAVvBWcBDgXKgQFhQjEA0wAOBWQFbwVnAQ4FzYEBYU0wIDAuODAwMDAwMDEA0gA6ADsF -zwXQpAXQAV4BXwA/VU5TQm943QDcBTAADgUxAN0FMgDqAN8FMwU0BTUA4QU2BQ4CKgU4BdQF1QU7BdcA -5gEOBT0BrgUOAOKBAVSBAX2BAYOBAYIIgQF/gQF1gQFUgBrSAA4ARQBNBd2ALKEA4oAa0gAOAEUATQXh -gCyhANmAGV8QE3t7MiwgMn0sIHs0MTIsIDQ4fX1fEBV7ezE3LCAxNn0sIHs0MTYsIDY1fX3XAPIADgVW -BVcA+gEABVgFWQVaBbkF6AW7AioF6oEBZYEBeYEBhIEBeIEBhV8QFUxpbHlwb25kIEluc3RhbGxhdGlv -btMADgVkBW8FZwEOBc2BAWFaezQ1MCwgMjAyfV8QFXt7MCwgMH0sIHsxMjgwLCA3Nzh9fVp7MjEzLCAx -Mjl90gA6ADsF8gXzogXzAD9fEBBOU1dpbmRvd1RlbXBsYXRlXxAVbWFrZUtleUFuZE9yZGVyRnJvbnQ6 -0wAOAKIAowCkBfcCyIAXgQGNgJ7ZAA4AqACpAKoAqwCsAK0ArgErAK8F+wCxAQYAswC0ALUBmQEFgBWB -AY6AIYAPgBOAQ1pMaW5lIEJyZWFr0wAOAKIAowCkBgMGBIAXgQGQgQGS2AAOAKgAqQCqAKsArACtAK4A -rwYHALEBBgCzALQAtQGZgBWBAZGAIYAPgBOAQ2cAUgBlAHAAZQBhAHQgJltlZGl0UmVwZWF0OtMADgCi -AKMApAYQBhGAF4EBlIEBl9gADgCoAKkAqgCrAKwArQCuAK8GFACxBhUAswC0ALUAtoAVgQGVgQGWgA+A -E4AMVUNsb3NlUXddcGVyZm9ybUNsb3NlOtMADgCiAKMApAYeBh+AF4EBmYEBm9gADgCoAKkAqgCrAKwA -rQCuAK8GIgCxAyMAswC0ALUDgYAVgQGagLuAD4ATgNVYTWluaW1pemVfEBNwZXJmb3JtTWluaWF0dXJp -emU60wAOAKIAowCkBisGLIAXgQGdgQGf2AAOAKgAqQCqAKsArACtAK4ArwYvALEBBgCzALQAtQGZgBWB -AZ6AIYAPgBOAQ1hTaG93IExvZ1hzaG93TG9nOtMADgCiAKMApAY4AXGAF4EBoYA72QAOAKgAqQCqAKsA -rACtAK4BKwCvBjwAsQY9ALMAtAC1AXgBBYAVgQGigQGjgA+AE4A4ZQBGAGkAbgBkICZRZtMADgCiAKMA -pAZFAf2AF4EBpYBl2gAOAaUAqACqAKkAqwCsAK0ArgErAK8A5wZKBksAsQCzALQAtQGtAQWAFQmBAaaB -AaeAD4ATgEhfEBBPdmVyd3JpdGUgQ2hvcmRzUVbUAA4A1gCiAKMBZgZTANgGVYA1gQGpgDCBAbHTAA4A -qAC4ALkCQAZZgC2BAaqBAatVRGVidWfSAA4ARQBNBl2ALKEGXoEBrNoADgZgAKgAqQCqAKsArACtAK4B -KgCvAj0CQACxAQYAswC0ALUGUwZoWU5TU3VibWVudYAVgHCBAaqAIYAPgBOBAamBAa1ec3VibWVudUFj -dGlvbjrSAA4ARQBNBmyALKMEqAZuAjWBATSBAa+Ab9kADgCoAKkAqgCrAKwArQCuASsArwZyALEBBgCz -ALQAtQI9AQWAFYEBsIAhgA+AE4BwXxAURHVtcCBEb2N1bWVudCBhcyBYTUxZZGVidWdNZW510wAOAKIA -owCkBnsB/YAXgQGzgGXaAA4BpQCoAKoAqQCrAKwArQCuASsArwDnBoAGSwGqALMAtAC1Aa0BDoAVCYEB -tIEBp4APgBOASFlPdmVyd3JpdGXTAA4AogCjAKQGbgI2gBeBAa+ActcADgDWBosGjACiAKMGjQaOBo8G -kAaRA1oGkwGuWU5TS2V5UGF0aFlOU0JpbmRpbmdfEBxOU05pYkJpbmRpbmdDb25uZWN0b3JWZXJzaW9u -gQG8gQG3gQG7gQG6gMuBAbnSAA4GlQaWAOdfEBBOU1NoYXJlZEluc3RhbmNlgQG4CdIAOgA7BpkGmqMG -mgabAD9fEBhOU1VzZXJEZWZhdWx0c0NvbnRyb2xsZXJcTlNDb250cm9sbGVyXxAbbWluVmFsdWU6IHZh -bHVlcy5WTExvd1BpdGNoWG1pblZhbHVlXxARdmFsdWVzLlZMTG93UGl0Y2jSADoAOwagBqGjBqEA1AA/ -XxAVTlNOaWJCaW5kaW5nQ29ubmVjdG9y2AAOANYGiwaMBqMAogCjBo0GjgaPBqYGpwCaA1oGqgGuXxAT -TlNQcmV2aW91c0Nvbm5lY3RvcoEBvIEBt4EBwIEBv4EBtoDLgQG+XxAZdmFsdWU6IHZhbHVlcy5WTEhp -Z2hQaXRjaFV2YWx1ZV8QEnZhbHVlcy5WTEhpZ2hQaXRjaNgADgDWBosGjACiAKMGrwaNBo4GjwaQBqcF -SAa1BrYBrllOU09wdGlvbnOBAbyBAbeBAbuBAb+BAWeBAcKBAcNfEBh2YWx1ZTogdmFsdWVzLlZMTG93 -UGl0Y2jTAA4GuQBFBroGuwa9V05TLmtleXOBAcahBryBAcShBr6BAcVfEBZOU1ZhbHVlVHJhbnNmb3Jt -ZXJOYW1lXxASVkxQaXRjaFRyYW5zZm9ybWVy0gA6ADsGwgbDogbDAD9cTlNEaWN0aW9uYXJ51wAOANYG -iwaMAKIAowaNBo4GjwamBsgCCwbKAa6BAbyBAbeBAcCBAcmAZ4EByF8QHG1heFZhbHVlOiB2YWx1ZXMu -VkxIaWdoUGl0Y2hYbWF4VmFsdWXYAA4A1gaLBowGowCiAKMGjQaOBo8GkAanAJ0CCwa1Aa6BAbyBAbeB -AbuBAb+BAceAZ4EBwtgADgDWBosGjACiAKMGrwaNBo4GjwamBqcFSgaqBtwBroEBvIEBt4EBwIEBv4EB -b4EBvoEBzNMADga5AEUGugbfBuGBAcahBryBAcShBr6BAcXUAA4A1gbkBuUG5gTnBugG6VhOU01hcmtl -clZOU0ZpbGWBAdCBAUaBAc+BAc5fEBBOU1Rvb2xUaXBIZWxwS2V5XxAXU2hvdyBWaWRlbyBDYW1lcmEg -SW1hZ2XSADoAOwbtBu6iBu4AP18QEU5TSUJIZWxwQ29ubmVjdG9y0gAOAEUG8AbxgQIkrxCKAhUG8wKR -AXAB/AMmBvgCegb6BCsCngX3AqwG/wTNBwEDHgWHAwIDtgDlA3kEmwcJAz8DmAGDBw0BEwFBBG0C6gTn -BxMHFARgAOsDgQHuBxkBzQaPBQ4DEAceBx8EwQchA1oERgckBacHJgJyAkYHKQR1BysHLAZ7AoQGHgOL -AaIBeAWXBzQBuQY4AZkA2AVJBUcAtgP2Bz0EHgVKB0ABrQS0AzACPQZFArkCNQNLB0kCTgJlBBEE9QYD -A2AEUwPeA8UHUwdUB1UEBAVIB1gBDAGRBisEjgZuAhEC1QLHBNsA2QOmBhAHZQLiB2cCVwdpBH8EOAZe -AvUApQNrA+wCCwPRB3MBwQd1BVEHdwSoAdoGUwT0gQFWgQHSgIyAN4BigLmBAdeAg4EB3IEBDYCQgQGN -gJOBAd+BAT6BAeOAuIEBaYCugOeAHIDUgQEwgQHogMOA3YA9gQHpgCSAKYEBIoClgQFGgQHvgQHWgQEe -gQF+gNWAXYEB9oBTgQG3gQFUgLOBAfeBAduBATuBAdqAy4EBFoEB+IEBcYEB+YCCgHSBAdWBASOBAf6B -Af+BAbOAiIEBmYDZgEeAOIEBbYEB3YBNgQGhgEOAMIEBa4EBWYAMgPyBAhOBAQmBAW+BAiCASIEBN4C+ -gHCBAaWAl4BvgMaBAgSAdYB+gQEFgQFKgQGQgM2BARqA84DsgQIMgQIUgQIbgQEBgQFngQHngCOAQoEB -nYEBLIEBr4BqgKCAnIEBQ4AZgOKBAZSBAfSApIECHIB5gQILgQEngQERgQGsgKqAC4DPgPiAZ4DvgQIW -gE6BAg+BAVuBAgeBATSAV4EBqYEBTdIADgAyADMHfoAFgQHT0gAOAEUATQeBgCymAx4HKQQeBCsHFAOm -gLiBAdWBAQmBAQ2BAdaA4toADgCoAKkHiQCqB4oAqwCsAK0ArgCvAQYAsQDnAQYA5wCzALQAtQMmXU5T -SXNTZXBhcmF0b3JcTlNJc0Rpc2FibGVkgBWAIQmAIQmAD4ATgLnaAA4AqACpB4kAqgeKAKsArACtAK4A -rwEGALEA5wEGAOcAswC0ALUDJoAVgCEJgCEJgA+AE4C52gAOAKgAqQeJAKoHigCrAKwArQCuAK8BBgCx -AOcBBgDnALMAtAC1AcGAFYAhCYAhCYAPgBOATtIADgA2ADcHp4AEVEhlbHDSAA4ARQBNB6qALKcCcgM/ -ByEC9QPFBx8EjoCCgMOBAdqAqoDsgQHbgQEs2gAOAKgAqQeJAKoHigCrAKwArQCuAK8BBgCxAOcBBgDn -ALMAtAC1AnqAFYAhCYAhCYAPgBOAg9oADgCoAKkHiQCqB4oAqwCsAK0ArgCvAQYAsQDnAQYA5wCzALQA -tQJ6gBWAIQmAIQmAD4ATgIPaAA4GYACoAKkAqgCrAKwArQCuASoArwMmAyIAsQEGALMAtAC1BzQHzIAV -gLmAuoAhgA+AE4EB3YEB3tQADgCoARcAuAC5B88H0AfRgC2BAgWBAiOBAgbaAA4GYACoAKkAqgCrAKwA -rQCuASoArwLqAu0AsQEGALMAtAC1Aa0H2oAVgKWBAeCAIYAPgBOASIEB4VhTcGVsbGluZ9IADgBFAE0H -3oAsowLiBM0ERoCkgQE+gQEW2gAOBmAAqACpAKoAqwCsAK0ArgEqAK8CTgJRALEBBgCzALQAtQc0B+qA -FYB1gQHkgCGAD4ATgQHdgQHl0gAOAEUATQftgCyoArkChAJlBDgDMAdYBGACRoCXgIiAfoEBEYC+gQHn -gQEegHTaAA4AqACpB4kAqgeKAKsArACtAK4ArwEGALEA5wEGAOcAswC0ALUCToAVgCEJgCEJgA+AE4B1 -2gAOAKgAqQeJAKoHigCrAKwArQCuAK8BBgCxAOcBBgDnALMAtAC1A4GAFYAhCYAhCYAPgBOA1doADgZg -AKgAqQCqAKsArACtAK4BKgCvBHUICwCxAQYAswC0ALUAtggQgBWBASOBAeqAIYAPgBOADIEB61tPcGVu -IFJlY2VudNIADgA2ADcIEYAE0gAOAEUATQgWgCyhBG2BASJfEBZfTlNSZWNlbnREb2N1bWVudHNNZW51 -2gAOBmAAqACpAKoAqwCsAK0ArgEqAK8CeggcALEBBgCzALQAtQc0CCGAFYCDgQHwgCGAD4ATgQHdgQHx -0gAOADYANwgkgARWV2luZG930gAOAEUATQgngCymBh4DeQdlBOcHCQQEgQGZgNSBAfSBAUaBAeiBAQHa -AA4AqACpB4kAqgeKAKsArACtAK4ArwEGALEA5wEGAOcAswC0ALUDgYAVgCEJgCEJgA+AE4DVXl9OU1dp -bmRvd3NNZW512gAOAKgAqQeJAKoHigCrAKwArQCuAK8BBgCxAOcBBgDnALMAtAC1ALaAFYAhCYAhCYAP -gBOADNoADgCoAKkHiQCqB4oAqwCsAK0ArgCvAQYAsQDnAQYA5wCzALQAtQGZgBWAIQmAIQmAD4ATgEPa -AA4AqACpB4kAqgeKAKsArACtAK4ArwEGALEA5wEGAOcAswC0ALUBrYAVgCEJgCEJgA+AE4BI2gAOBmAA -qACpAKoAqwCsAK0ArgEqAK8BeAhWALEBBgCzALQAtQGtCFuAFYA4gQH6gCGAD4ATgEiBAftURmluZNIA -DgA2ADcIXIAE0gAOAEUATQhhgCylBjgEtAQRAXAD9oEBoYEBN4EBBYA3gPzaAA4AqACpB4kAqgeKAKsA -rACtAK4ArwEGALEA5wEGAOcAswC0ALUBmYAVgCEJgCEJgA+AE4BD2gAOBmAAqACpAKoAqwCsAK0ArgEq -AK8AtghzALEBBgCzALQAtQc0CHiAFYAMgQIAgCGAD4ATgQHdgQIBVEZpbGXSAA4ANgA3CHmABNIADgBF -AE0IfoAsrAGDAwIHDQdJBhAApQPeA9EEUwcZA5gDtoA9gK6BAemBAgSBAZSAC4DzgO+BARqBAfaA3YDn -2gAOAKgAqQeJAKoHigCrAKwArQCuAK8BBgCxAOcBBgDnALMAtAC1ALaAFYAhCYAhCYAPgBOADFhNYWlu -TWVuddIADgBFAE0Il4AsqAd3BywHcwdnBvoHAQdABxOBAgeBAf+BAhaBAhyBAdyBAeOBAiCBAe/aAA4G -YACoAKkAqgCrAKwArQCuASoArwHBAcQAsQEGALMAtAC1BzQIqIAVgE6BAgiAIYAPgBOBAd2BAglaVm9j -YWxFYXNlbNIADgBFAE0IrIAsqwHNBvgE9QdpB1MHPQHuAtUCrAdUAbmAU4EB14EBSoECC4ECDIECE4Bd -gKCAk4ECFIBN2gAOAKgAqQeJAKoHigCrAKwArQCuAK8BBgCxAOcBBgDnALMAtAC1AcGAFYAhCYAhCYAP -gBOATtoADgZgAKgAqQCqAKsArACtAK4BKgCvB3UIxACxAQYAswC0ALUBwQjJgBWBAg+BAg2AIYAPgBOA -ToECDlhTZXJ2aWNlc9QADgCoARcAuAC5CM0IzgjPgC2BAhCBAhKBAhHSAA4ANgA3CMqABNIADgBFAE0I -1IAsoF8QD19OU1NlcnZpY2VzTWVuddoADgCoAKkHiQCqB4oAqwCsAK0ArgCvAQYAsQDnAQYA5wCzALQA -tQHBgBWAIQmAIQmAD4ATgE7aAA4AqACpB4kAqgeKAKsArACtAK4ArwEGALEA5wEGAOcAswC0ALUBwYAV -gCEJgCEJgA+AE4BOXF9OU0FwcGxlTWVuddoADgZgAKgAqQCqAKsArACtAK4BKgCvAa0I7ACxAQYAswC0 -ALUHNAjxgBWASIECF4AhgA+AE4EB3YECGFRFZGl00gAOADYANwjygATSAA4ARQBNCPeALK8QDwR/AxAH -JANrAlcB/AKeBkUGewTbAaIDSwdVByYG/4EBJ4CzgQH4gM+AeYBigJCBAaWBAbOBAUOAR4DGgQIbgQH5 -gQHf2gAOAKgAqQeJAKoHigCrAKwArQCuAK8BBgCxAOcBBgDnALMAtAC1Aa2AFYAhCYAhCYAPgBOASNoA -DgZgAKgAqQCqAKsArACtAK4BKgCvAZkBnACxAQYAswC0ALUHNAkYgBWAQ4ECHYAhgA+AE4EB3YECHlRT -b25n0gAOAEUATQkcgCysAZEEmwYrBysGAwKRAdoDiwceBfcCxwTBgEKBATCBAZ2BAf6BAZCAjIBXgNmB -AfeBAY2AnIEBO9oADgZgAKgAqQCqAKsArACtAK4BKgCvA4EJLACxAQYAswC0ALUHNAkxgBWA1YECIYAh -gA+AE4EB3YECIltfTlNNYWluTWVuddIAOgA7CTQBUKIBUAA/0gAOAEUG8Ak3gQIkrxCKBQ4AHwGZAXgB -rQb6AcEHEwc0AyYBrQGZAcEBrQLqBzQDJgVIALYAtgDZA4EBmQOBAnoAtgC2ALYA5QETBHUG/wOBBzQD -JgJOBQ4HQAHBALYBwQAfBPQBrQGZAnoBmQJ6AhUC6gGtBUoBrQJ6Ak4DJgcNAZkHNAGtAk4DgQGZAa0H -JgVJAB8BwQF4B2cAHwIVAhUHLAF4AcEDJgIVBzQHcwF4Ak4GXgGtAk4CPQGtALYHAQJOAXgBwQGZA1oA -tgC2AnoBwQHBAa0DgQIVAk4BEwGZAZkCegI9AgsBwQGZAa0A6wMmALYDgQLqBzQBrQHBAa0CTgZTAnoA -tgGtAB8CFQC2BzQHdwdTBUcHNAI9AZkAHwAfgQFUgAKAQ4A4gEiBAdyAToEB74EB3YC5gEiAQ4BOgEiA -pYEB3YC5gQFngAyADIAZgNWAQ4DVgIOADIAMgAyAHIAkgQEjgQHfgNWBAd2AuYB1gQFUgQIggE6ADIBO -gAKBAU2ASIBDgIOAQ4CDgQFWgKWASIEBb4BIgIOAdYC5gQHpgEOBAd2ASIB1gNWAQ4BIgQH5gQFrgAKA -ToA4gQIcgAKBAVaBAVaBAf+AOIBOgLmBAVaBAd2BAhaAOIB1gQGsgEiAdYBwgEiADIEB44B1gDiAToBD -gMuADIAMgIOAToBOgEiA1YEBVoB1gCSAQ4BDgIOAcIBngE6AQ4BIgQF+gLmADIDVgKWBAd2ASIBOgEiA -dYEBqYCDgAyASIACgQFWgAyBAd2BAgeBAgyBAVmBAd2AcIBDgAKAAtIADgBFBvAJxIECJK8QiwbzAhUC -kQH8AXADJgb4AnoG+gQrAp4F9wb/AqwEzQcBAx4FhwMCA7YA5QN5BJsHCQM/A5gBgwcNARMBQQRtAuoH -EwcUBOcGjwDrA4EEYAcZAe4BzQUOAxAHHgcfBMEHIQNaBEYHJAWnByYCcgJGBykEdQcrBywGewKEAaID -iwYeAXgFlwc0ANgBmQG5BUkGOAVHALYD9gQeBz0FSgdAAa0CPQMwBLQAHwZFArkCNQNLAk4HSQJlBBEG -AwT1A2AEUwPFA94HUwdUB1UEBAVIB1gBDAGRBisEjgZuANkC1QLHBNsCEQOmBhAGXgdnB2UCVwdpBH8E -OALiAvUApQNrA+wCCwPRB3MBwQd1BVEHdwSoBlMB2gT0gQHSgQFWgIyAYoA3gLmBAdeAg4EB3IEBDYCQ -gQGNgQHfgJOBAT6BAeOAuIEBaYCugOeAHIDUgQEwgQHogMOA3YA9gQHpgCSAKYEBIoClgQHvgQHWgQFG -gQG3gQF+gNWBAR6BAfaAXYBTgQFUgLOBAfeBAduBATuBAdqAy4EBFoEB+IEBcYEB+YCCgHSBAdWBASOB -Af6BAf+BAbOAiIBHgNmBAZmAOIEBbYEB3YAwgEOATYEBa4EBoYEBWYAMgPyBAQmBAhOBAW+BAiCASIBw -gL6BATeAAoEBpYCXgG+AxoB1gQIEgH6BAQWBAZCBAUqAzYEBGoDsgPOBAgyBAhSBAhuBAQGBAWeBAeeA -I4BCgQGdgQEsgQGvgBmAoICcgQFDgGqA4oEBlIEBrIECHIEB9IB5gQILgQEngQERgKSAqoALgM+A+IBn -gO+BAhaAToECD4EBW4ECB4EBNIEBqYBXgQFN0gAOAEUG8ApSgQIkrxCLClMKVApVClYKVwpYClkKWgpb -ClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5 -CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUB88BYgqX -CpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1 -CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grT -CtQK1QrWCtcK2ArZCtoK2wrcCt2BAiiBAimBAiqBAiuBAiyBAi2BAi6BAi+BAjCBAjGBAjKBAjOBAjSB -AjWBAjaBAjeBAjiBAjmBAjqBAjuBAjyBAj2BAj6BAj+BAkCBAkGBAkKBAkOBAkSBAkWBAkaBAkeBAkiB -AkmBAkqBAkuBAkyBAk2BAk6BAk+BAlCBAlGBAlKBAlOBAlSBAlWBAlaBAleBAliBAlmBAlqBAluBAlyB -Al2BAl6BAl+BAmCBAmGBAmKBAmOBAmSBAmWBAmaBAmeBAmiBAmmBAgWAMYECaoECa4ECbIECbYECboEC -b4ECcIECcYECcoECc4ECdIECdYECdoECd4ECeIECeYECeoECe4ECfIECfYECfoECf4ECgIECgYECgoEC -g4EChIEChYEChoECh4ECiIECiYECioECi4ECjIECjYECjoECj4ECkIECkYECkoECk4EClIEClYECloEC -l4ECmIECmYECmoECm4ECnIECnYECnoECn4ECoIECoYECooECo4ECpIECpYECpoECp4ECqIECqYECqoEC -q4ECrIECrYECroECr4ECsFtBcHBsaWNhdGlvbl8QEkJveCAoTWVsb2R5IFJhbmdlKW8QEwBNAGUAbgB1 -ACAASQB0AGUAbQAgACgARQBuAGQAaQBuAGcgJgApXxARTWVudSBJdGVtIChQYXN0ZSlfECJNZW51IEl0 -ZW0gKFVzZSBTZWxlY3Rpb24gZm9yIEZpbmQpW01lbnUgKFBsYXkpXFNlcGFyYXRvci0xM1tNZW51IChI -ZWxwKV8QEE1lbnUgSXRlbSAoUGxheSlfEBdNZW51IEl0ZW0gKFBsYXkgTWVsb2R5KV8QHE1lbnUgSXRl -bSAoT3ZlcndyaXRlIE1lbG9keSlfEBZNZW51IEl0ZW0gKExpbmUgQnJlYWspXxAUTWVudSBJdGVtIChT -cGVsbGluZylfEBRNZW51IEl0ZW0gKFNob3cgQWxsKV8QGk1lbnUgSXRlbSAoQ2hlY2sgU3BlbGxpbmcp -XxAQTWVudSBJdGVtIChWaWV3KV8QEk1lbnUgSXRlbSAoUGxheSktMV8QGFRleHQgRmllbGQgQ2VsbCAo -RSM0CiktMW8QEQBNAGUAbgB1ACAASQB0AGUAbQAgACgATwBwAGUAbiAmAClvEBIATQBlAG4AdQAgAEkA -dABlAG0AIAAoAFAAcgBpAG4AdCAmAClfEDdQb3AgVXAgQnV0dG9uIENlbGwgKC9BcHBsaWNhdGlvbnMv -TGlseXBvbmQuYXBwICgyLjguNikpXxAQTWVudSBJdGVtIChab29tKV8QE01lbnUgSXRlbSAoUHJldmll -dylbU2VwYXJhdG9yLTdfEB9NZW51IEl0ZW0gKFZvY2FsRWFzZWwgSG9tZXBhZ2UpbxAXAE0AZQBuAHUA -IABJAHQAZQBtACAAKABQAGEAZwBlACAAUwBlAHQAdQBwICYAKV8QD01lbnUgSXRlbSAoTmV3KV8QF01l -bnUgSXRlbSAoT3BlbiBSZWNlbnQpXxARTWVudSAoT3RoZXJWaWV3cylfECVNZW51IEl0ZW0gKC9zdy9i -aW4vbGlseXBvbmQgKDIuOS4yMykpXxAWTWVudSBJdGVtIChDbGVhciBNZW51KV8QD01lbnUgKFNwZWxs -aW5nKV8QEE1lbnUgSXRlbSAoSGVscClZU2VwYXJhdG9yXxASTWVudSBJdGVtIChNaXJyb3IpXxAPU2hh -cmVkIERlZmF1bHRzXxAbQm94IChMaWx5cG9uZCBJbnN0YWxsYXRpb24pXU1lbnUgKFdpbmRvdylfEBhN -ZW51IEl0ZW0gKEhpZGUgVG9vbGJhcilbU2VwYXJhdG9yLTVfEBtNZW51IEl0ZW0gKEhpZGUgVm9jYWxF -YXNlbClfEBxNZW51IEl0ZW0gKEFib3V0IFZvY2FsRWFzZWwpXENvbnRlbnQgVmlld18QEE1lbnUgSXRl -bSAoUmVkbylbU2VwYXJhdG9yLTlbU2VwYXJhdG9yLTNfEBlNZW51IEl0ZW0gKFNlY3Rpb24gQnJlYWsp -W1NlcGFyYXRvci00V1N0ZXBwZXJfECZNZW51IEl0ZW0gKENoZWNrIFNwZWxsaW5nIGFzIFlvdSBUeXBl -KVxTZXBhcmF0b3ItMTFfEBZUZXh0IEZpZWxkIENlbGwgKEUjNAopXxAQTWVudSBJdGVtIChGaW5kKV8Q -G01lbnUgSXRlbSAoVm9jYWxFYXNlbCBIZWxwKW8QHgBNAGUAbgB1ACAASQB0AGUAbQAgACgAQwB1AHMA -dABvAG0AaQB6AGUAIABUAG8AbwBsAGIAYQByICYAKVtTZXBhcmF0b3ItMV8QEk1lbnUgKE9wZW4gUmVj -ZW50KVxTZXBhcmF0b3ItMTBfEBBNZW51IEl0ZW0gKEZpbGUpXxAVTWVudSBJdGVtIChPdmVyd3JpdGUp -XxAXTWVudSBJdGVtIChab29tIFRvIEZpdClfEBlNZW51IEl0ZW0gKERlbGV0ZSBNZWxvZHkpXxAYTWVu -dSBJdGVtIChKdW1wIHRvIENvZGEpXxAUTWVudSBJdGVtIChNaW5pbWl6ZSlbTWVudSAoRmluZClfEBdU -ZXh0IEZpZWxkIENlbGwgKEhpZ2g6KVtNZW51IChTb25nKV8QG01lbnUgSXRlbSAoUXVpdCBWb2NhbEVh -c2VsKV8QE1N0YXRpYyBUZXh0IChIaWdoOilvEBEATQBlAG4AdQAgAEkAdABlAG0AIAAoAEYAaQBuAGQg -JgApXxASU3RhdGljIFRleHQgKExvdzopW01lbnUgKEZpbGUpXxAdTWVudSBJdGVtIChKdW1wIHRvIFNl -bGVjdGlvbilfEB5NZW51IEl0ZW0gKFBsYXkgQWNjb21wYW5pbWVudClcU2VwYXJhdG9yLTE0XxASU3Rh -dGljIFRleHQgKEUjNAopXxASTWVudSBJdGVtIChXaW5kb3cpW01lbnUgKEVkaXQpXE1lbnUgKERlYnVn -KV8QFE1lbnUgSXRlbSAoWm9vbSBPdXQpXxAVTWVudSBJdGVtIChGaW5kIE5leHQpXEZpbGUncyBPd25l -cl8QHE1lbnUgSXRlbSAoT3ZlcndyaXRlIENob3JkcylfEBdNZW51IEl0ZW0gKEFjdHVhbCBTaXplKV8Q -IU1lbnUgSXRlbSAoRHVtcCBBZnRlciBSb3VuZCBUcmlwKV8QFk1lbnUgSXRlbSAoU2VsZWN0IEFsbClb -TWVudSAoVmlldylbU2VwYXJhdG9yLTZfEB1NZW51IEl0ZW0gKFpvb20gVG8gRml0IFdpZHRoKV8QGU1l -bnUgSXRlbSAoRmluZCBQcmV2aW91cylvEBMATQBlAG4AdQAgAEkAdABlAG0AIAAoAFIAZQBwAGUAYQB0 -ICYAKW8QGABNAGUAbgB1ACAASQB0AGUAbQAgACgAUAByAGUAZgBlAHIAZQBuAGMAZQBzICYAKVxTdGVw -cGVyIENlbGxfEBJNZW51IEl0ZW0gKFJldmVydClvEBwATQBlAG4AdQAgAEkAdABlAG0AIAAoAFIAZQBx -AHUAZQBzAHQAIABGAGUAYQB0AHUAcgBlICYAKW8QFABNAGUAbgB1ACAASQB0AGUAbQAgACgAUwBhAHYA -ZQAgAEEAcyAmAClfEBRNZW51IEl0ZW0gKFNlcnZpY2VzKVxTZXBhcmF0b3ItMTVcU2VwYXJhdG9yLTEy -XxAeTWVudSBJdGVtIChCcmluZyBBbGwgdG8gRnJvbnQpXxAUU3RhdGljIFRleHQgKEUjNAopLTFbU2Vw -YXJhdG9yLTJfEC5NZW51IEl0ZW0gKC9BcHBsaWNhdGlvbnMvTGlseXBvbmQuYXBwICgyLjguNikpbxAc -AE0AZQBuAHUAIABJAHQAZQBtACAAKABEAGkAcwBwAGwAYQB5ACAATwBwAHQAaQBvAG4AcyAmAClfEBRN -ZW51IEl0ZW0gKFNob3cgTG9nKV8QE01lbnUgSXRlbSAoTGljZW5zZSlfECBNZW51IEl0ZW0gKER1bXAg -RG9jdW1lbnQgYXMgWE1MKV8QMVBvcHVwIEJ1dHRvbiAoL0FwcGxpY2F0aW9ucy9MaWx5cG9uZC5hcHAg -KDIuOC42KSlfEBdNZW51IEl0ZW0gKEhpZGUgT3RoZXJzKV8QFk1lbnUgSXRlbSAoUGFnZSBCcmVhaylf -EBJNZW51IEl0ZW0gKERlbGV0ZSleU3RlcHBlciBDZWxsLTFfEBRNZW51IEl0ZW0gKENvdW50IEluKV8Q -EU1lbnUgSXRlbSAoQ2xvc2UpXxARTWVudSBJdGVtIChEZWJ1ZylfEBBNZW51IEl0ZW0gKFNvbmcpW1Nl -cGFyYXRvci04XxAQTWVudSBJdGVtIChDb3B5KVxTZXBhcmF0b3ItMTZfEBBNZW51IEl0ZW0gKFVuZG8p -XxATTWVudSBJdGVtIChab29tIEluKW8QFQBNAGUAbgB1ACAASQB0AGUAbQAgACgAUwBwAGUAbABsAGkA -bgBnICYAKW8QFwBNAGUAbgB1ACAASQB0AGUAbQAgACgAUgBlAHAAbwByAHQAIABCAHUAZyAmAClfEBBN -ZW51IEl0ZW0gKFNhdmUpXxAPTWVudSBJdGVtIChDdXQpXU1pcnJvciBXaW5kb3dZU3RlcHBlci0xbxAb -AE0AZQBuAHUAIABJAHQAZQBtACAAKABTAGEAdgBlACAAYQAgAEMAbwBwAHkAIABBAHMgJgApXxAQTWVu -dSBJdGVtIChFZGl0KV8QEU1lbnUgKFZvY2FsRWFzZWwpXxAPTWVudSAoU2VydmljZXMpXxAWVGV4dCBG -aWVsZCBDZWxsIChMb3c6KV8QFk1lbnUgSXRlbSAoVm9jYWxFYXNlbClfEBlNZW51IEl0ZW0gKER1bXAg -RG9jdW1lbnQpWkRlYnVnIE1lbnVfEBZNZW51IEl0ZW0gKFN0YXJ0IENvZGEpW1ByZWZlcmVuY2Vz0gAO -AEUG8AtpgQIkoNIADgBFBvALbIECJKDSAA4ARQbwC2+BAiSvEN0G8wKRAXAB/ABxAH8AYQCYAyYG+Ab6 -AFsAZwX3Bv8EzQCRBwEAXwB2AOUAXQBlAUEAbQCBBOcAbwCgAOsGjwOBAc0AkAMQAJUDWgWnAGICcgBV -AkYHKQB9AJMEdQB+BywGewYeBZcAVACdBjgBmQVJBUcAtgP2AIQAgwCLBB4AmgCSB0ACPQCCAJcAHwZF -AFEDSwBoB0kCTgCAAHMAegRTAGYAjwdTB1QHVQByBUgAVwEMAIgAawCbAZEGbgBjAhEE2wYQBl4HZwCf -AlcEfwNrAGQD7APRB3MBwQVRAIkB2gCMBPQAnABsAnoEKwKeAqwAdQBqAI0DHgWHAwIAUAO2AIUDeQSb -BwkDPwOYAE8AhgGDBw0BEwCKBG0C6gBeBxMHFARgAG4HGQHuBQ4AeABgBx4HHwTBAHsHIQCUBEYHJAcm -AHAHKwKEAaIDiwF4BzQBuQDYAFoAjgc9BUoBrQS0AJYDMAB5AHwCuQI1AHQCZQQRBPUGAwNgAFgAngCZ -A94DxQBpBAQAUwdYAFwAUgB3BisEjgDZAtUCxwOmAFYC4gdlAFkHaQQ4AvUApQILB3UHdwSoBlMAhwIV -gQHSgIyAN4BigMqBAQiAgYEBsoC5gQHXgQHcgGGAm4EBjYEB34EBPoEBj4EB44B4gOGAHIBugJKAKYC3 -gQEQgQFGgMKBAc2BAX6BAbeA1YBTgQGMgLOBAaCAy4EBcYCHgIKARoB0gQHVgQEAgQGYgQEjgQEEgQH/ -gQGzgQGZgQFtgEGBAceBAaGAQ4EBa4EBWYAMgPyBAR2BARmBATqBAQmBAbaBAZOBAiCAcIEBFYEBqIAC -gQGlgDOAxoCfgQIEgHWBAQyA04DygQEagJaBAUmBAgyBAhSBAhuAzoEBZ4BSgCOBAS+ArYEBvYBCgQGv -gIuAaoEBQ4EBlIEBrIECHIEBy4B5gQEngM+Aj4D4gO+BAhaAToEBW4EBM4BXgQE9gQFNgQHBgLKAg4EB -DYCQgJOA3ICpgQFCgLiBAWmAroAYgOeBASGA1IEBMIEB6IDDgN2ACoEBJoA9gQHpgCSBATaBASKApYBz -gQHvgQHWgQEegL2BAfaAXYEBVIDrgH2BAfeBAduBATuA94EB2oEBnIEBFoEB+IEB+YDFgQH+gIiAR4DZ -gDiBAd2ATYAwgFyBAUWBAhOBAW+ASIEBN4EBpIC+gO6A+4CXgG+A2IB+gQEFgQFKgQGQgM2AVoEByoEB -tYDzgOyAo4EBAYA8gQHngGaANoDmgQGdgQEsgBmAoICcgOKATICkgQH0gFqBAguBARGAqoALgGeBAg+B -AgeBATSBAamBASuBAVbSAA4ARQbwDE+BAiSvEN0MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4M -XwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwM -fQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoM -mwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgM -uQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM -1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM -9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DQANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRIN -Ew0UDRUNFg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sgQK1gQK2gQK3 -gQK4gQK5gQK6gQK7gQK8gQK9gQK+gQK/gQLAgQLBgQLCgQLDgQLEgQLFgQLGgQLHgQLIgQLJgQLKgQLL -gQLMgQLNgQLOgQLPgQLQgQLRgQLSgQLTgQLUgQLVgQLWgQLXgQLYgQLZgQLagQLbgQLcgQLdgQLegQLf -gQLggQLhgQLigQLjgQLkgQLlgQLmgQLngQLogQLpgQLqgQLrgQLsgQLtgQLugQLvgQLwgQLxgQLygQLz -gQL0gQL1gQL2gQL3gQL4gQL5gQL6gQL7gQL8gQL9gQL+gQL/gQMAgQMBgQMCgQMDgQMEgQMFgQMGgQMH -gQMIgQMJgQMKgQMLgQMMgQMNgQMOgQMPgQMQgQMRgQMSgQMTgQMUgQMVgQMWgQMXgQMYgQMZgQMagQMb -gQMcgQMdgQMegQMfgQMggQMhgQMigQMjgQMkgQMlgQMmgQMngQMogQMpgQMqgQMrgQMsgQMtgQMugQMv -gQMwgQMxgQMygQMzgQM0gQM1gQM2gQM3gQM4gQM5gQM6gQM7gQM8gQM9gQM+gQM/gQNAgQNBgQNCgQND -gQNEgQNFgQNGgQNHgQNIgQNJgQNKgQNLgQNMgQNNgQNOgQNPgQNQgQNRgQNSgQNTgQNUgQNVgQNWgQNX -gQNYgQNZgQNagQNbgQNcgQNdgQNegQNfgQNggQNhgQNigQNjgQNkgQNlgQNmgQNngQNogQNpgQNqgQNr -gQNsgQNtgQNugQNvgQNwgQNxgQNygQNzgQN0gQN1gQN2gQN3gQN4gQN5gQN6gQN7gQN8gQN9gQN+gQN/ -gQOAgQOBgQOCgQODgQOEgQOFgQOGgQOHgQOIgQOJgQOKgQOLgQOMgQONgQOOgQOPgQOQgQORE/////// -///9EgABh80QoRCrEO8SAAGHwRB6EQElEgABh7kQyhIAAYe4ELASAAGH2BIAAYfVELgQvRIAAYfQEQEB -ELUSAAGHxBIAAYeVEgABh7cQmRD5EgABh8URARASAAGHpBIAAYeaEgABh+QQ/RDkEBgQOhIAAYfXEK0Q -zRDpEgABh4ERAQ4QbxIAAYeiEQEEEgABh7sQJxAlEH0QzxBTENIQFxIAAYeAEgABh94Q8RCaEgABh8kQ -4BDdEFEQmxEBBRDGEgABh9sSAAGHvRDzEMEQExIAAYewEMASAAGHrRIAAYfjEQEhEKwQkhBPEQECEgAB -h8IQzBDFEHARAQ0Q2xCDEJUQrhCvEN4QjhD4EgABh+EQwxD0EgABh90SAAGHtBIAAYfREgABh4oQpBBJ -EgABh68SAAGHyBDsEJ0QnhCgEQEjEgABh6cQ1BCjEDkSAAGHfRIAAYezEgABh84QvhDZEO0QshBqEgAB -h7wRASIQlhBXEgABh5sQyRIAAYe6EgABh34QSBD/EE4QfxDLEgABh98SAAGHpRIAAYeZEE0QxBC0EFIQ -fBD2EM4QfhC5EQEGEGcSAAGHvhEBAxEBERBKEIYQ2hIAAYecEQEPEgABh9QSAAGHnRIAAYfaEgABh6gS -AAGHlhIAAYfiEL8QnBCoELMSAAGH3BEBCxIAAYegEgABh8wQnxAdEIgQ1xCYEgABh6YQkBDhEKkQpxEB -JBEBCBDWENERAQcSAAGHthIAAYfTEQEJEKIQgRIAAYfPEgABh4kSAAGH0hDyEgABh7UQUBIAAYeYELwQ -BRDCEQEMEPAQ0BDIEgABh+ASAAGHnhD1EJESAAGH1hIAAYfAEIsQuxBcENgQjxEBChIAAYeXEOoQghA4 -EgABh7ISAAGHqRIAAYefEPvSAA4ARQBNDgqALKDSAA4ARQbwDg2BAiSg0gAOAEUG8A4QgQIkoNIAOgA7 -DhIOE6IOEwA/Xk5TSUJPYmplY3REYXRhAAgAGQAiACcAMQA6AD8ARABSAFQAZgeWB5wH5wfuB/UIAwgV -CDEIPwhLCFcIZQhwCH4ImgioCLsIzQjnCPEI/gkACQMJBgkJCQwJDgkRCRMJFgkZCRwJHwkhCSMJJgkp -CS4JMQk6CUYJSAlKCVMJXQlfCW0Jdgl/CYoJkQmjCawJtQm+CcMJ0gnlCe4J+Qn7CfwKBQoMChkKHwoo -CioK0QrTCtUK1wrZCtsK3QrfCuEK4wrlCucK6QrrCu0K7wrxCvMK9Qr3CvkK+wr9Cv8LAQsDCwULBwsJ -CwsLDQsPCxELEwsVCxcLGQsbCx0LHwshCyMLJQsnCykLKwstCzALMws2CzkLPAs/C0ILRQtIC0sLTgtR -C1QLVwtaC10LYAtjC2YLaQtsC28Lcgt1C3gLewt+C4ELhAuHC4oLjQuQC5MLlguZC6YLrwu3C7kLuwu9 -C94L5gv6DAUMEwwdDCoMMQwzDDUMOgw8DEEMQwxFDEcMVAxgDGIMZQxoDG0Mbwx8DIsMjQyPDJEMmQyr -DLQMuQzMDNkM2wzdDN8M8gz7DQANCw0ZDSINKQ1BDVANYQ1vDXENcw11DXcNlA2mDa4NtQ2+DcgN1A3W -DdgN2g3cDd8N4A3iDfsOBg4JDgwODw4SDhUOLQ6ADowOqQ67DtEO5g71DwgPGg8kDzIPRA9ZD2cPeQ+G -D5QPpg+vD7APsg+0D7YPuA+6D7wPvg/AD8IPxA/FD8YPyQ/MD84P0w/kD+sP8g/7D/0QBhAIEAsQGBAh -ECYQLRA+EEAQQhBEEEUQThBQEIEQihCTEJkQoRCjEKUQpxCpEKsQrRCvELEQvhDAEMIQxBDpEP0RBhEI -ERMRHBEeESMRJREnEVARUhFUEVYRWBFaEVwRXhFgEXwRhRGMEZsRoxGsEbERuhHHEdsR6hH3EgQSDRIa -EigSMRI7EkISThJXElkSWxJtEoMSlBKWEpgSmhKcEqkSshK5EtAS3RLfEuES4xMIEwoTDBMOExATEhMU -ExYTIxMlEygTKxNEE0YTYBNtE28TcRNzE5QTlhOYE5oTnBOeE6ATpBOmE7MTwBPCE8QTxhPnE+kT6xPt -E+8T8RPzFAAUAhQFFAgUKxRBFE4UUBRSFFQUfRSLFI0UjhSQFJIUlxSZFJsUnRSfFKwUrhSxFLQUwhTE -FMwU3RTfFOEU4xTlFQYVCBUKFQwVDhUQFRIVIxUlFSgVKxUuFUAVQhVNFV4VYBViFWQVZhWDFYUVhxWJ -FYsVjRWPFaIVwhXPFdEV0xXVFfYV+BX6FfwV/hYAFgIWDRYgFjEWMxY1FjcWORZCFlMWVRZXFlkWWxZ8 -Fn4WgBaCFoQWhhaIFpoWnBaiFq8WsRazFrUW1hbYFtoW3BbeFuAW4hboFuoW8RcCFwQXBhcIFwoXJxcp -FysXLRcvFzAXMhdLF04XURdUF1cXWhdyF5sXoxevF7wXxxfSF98X6BftF+8X+Bf5GAIYCxgNGA8YEBgZ -GCIYMBg5GEQYThhcGGkYaxhtGG8YlBiWGJgYmhicGJ4YoBitGK8Yshi1GM0Y0xjgGOIY5BjmGQcZCRkL -GQ0ZDxkRGRMZIBkiGSUZKBlPGXEZfhmAGYIZhBmlGacZqRmrGa0ZrxmxGbYZuBm+GcsZzRnPGdEZ8hn0 -GfYZ+Bn6GfwZ/hoSGiQaMRozGjUaNxpYGloaXBpeGmAaYhpkGnEacxp2GnkaixqNGpcapBqmGqgaqhrL -Gs0azxrRGtMa1RrXGuMa7hr7Gv0a/xsBGyIbJBsmGygbKhssGy4bPRtRG14bYBtiG2QbjRuPG5AbkhuU -G5YbmBuaG60bvhvAG8IbxBvGG+cb6RvrG+0b7xvxG/Mb/BwVHCIcJBwmHCgcSRxLHE0cTxxRHFMcVRxh -HGMcdxyEHIYciByKHK8csRyzHLUctxy5HLscxhzTHOQc5hzoHOoc7B0NHQ8dER0THRUdFx0ZHSUdPh1L -HU0dTx1RHXIddB12HXgdeh18HX4dix2NHZAdkx2mHagduh3LHc0dzx3RHdMd+B36Hfwd/h4AHgIeBB4b -HigeNR43HjkeOx5cHl4eYB5iHmQeZh5oHnMedR6DHpAekh6UHpYetx65HrsevR6/HsEewx7IHsoe0B7d -Ht8e4R7jHwQfBh8IHwofDB8OHxAfHR8fHyEfJB8pHysfNR9CH0QfRh9IH2kfax9tH28fcR9zH3Uffh+A -H4kfmh+cH54foB+iH8MfxR/HH8kfyx/NH88f5R/yH/Qf9h/4IBkgGyAdIB8gISAjICUgMCAyID0gTiBQ -IFIgVCBWIHMgdSB3IHkgeyB8IH4gliC/IMEgwiDEIMUg0iDUINYg2CD5IPsg/SD/IQEhAyEFIQkhCyEQ -IR0hHyEhISMhRCFGIUghSiFMIU4hUCFhIWMhZiFpIWwhcSF+IYshjSGPIZEhsiG0IbYhuCG6IbwhviHL -Id8h7CHuIfAh8iITIhUiFyIZIhsiHSIfIjYiOCJHIlQiViJYIloigyKFIocijCKOIpAikiKUIpYinyKh -IrcixCLGIsgiyiLrIu0i7yLxIvMi9SL3IwQjBiMVIyYjKCMqIywjLiNTI1UjVyNZI1sjXSNfI4IjjyOR -I5MjlSO2I7gjuiO8I74jwCPCI+Mj9SQCJAQkBiQIJCkkKyQtJC8kMSQzJDUkRiRIJFokayRtJG8kcSRz -JHwkfiSAJI8kmSSmJKgkqiSsJM0kzyTRJNMk1STXJNkk7STvJQ8lHCUeJSElJCVFJUclSiVMJU4lUCVS -JWcleSWGJYgliyWNJbIltCW3JbolvCW+JcAlziXQJd0l3yXiJeQmDSYPJhImFSYXJhkmGyYwJjImPyZB -JkQmRiZvJnEmdCZ3JnkmeyZ9JokmiyaYJpomnSagJsEmwybGJskmyybNJs8m1ybZJuEm7ibwJvMm9icX -JxknHCceJyAnIickJ0EnYidvJ3EndCd3J5QnlieZJ5snnSefJ6EnqCfBJ84n0CfTJ9Yn9yf5J/wn/igA -KAIoBCgRKCcoNCg2KDkoPChdKF8oYihkKGYoaChrKHwofiiBKIQohyiSKKootyi5KLwovyjgKOIo5Sjo -KOoo7CjuKPMo9Sj7KQwpDikQKRMpFik3KTkpPCk+KUApQilEKUwpWilnKWkpbClvKZApkimVKZcpmSmb -KZ0ppSmxKb4pwCnDKcUp5inoKesp7SnvKfEp8yoBKg4qECoTKhUqOio8Kj8qQipEKkYqSCpSKlQqYSpj -KmYqaCqNKo8qkiqUKpYqmCqaKqgqtSq3KroqvSreKuAq4yrmKugq6irsKvsq/SsMKxkrGyseKyArQStD -K0YrSCtKK0wrTitVK2IrZCtnK2oriyuNK5ArkiuUK5YrmCufK6srvCu+K8ErxCvHK+gr6ivtK/Ar8iv0 -K/YsDywRLEosVyxwLH0siyyVLKMsvCzJLNMs5Sz5LQMtDy0SLRUtGC0bLR4tIy0mLSktLC0vLTItNS1P -LWgtcS1zLXwthS2HLYwtqS20Lckt1S3XLdot3S3gLekt6y3wLfMt9i4rLjUuQS5PLlwuZi54LoYuiS6M -Lo8uki6TLpYumS6cLp4upy6pLqwuri63Lrkuxi7JLswuzy7SLtQu1i7zLvUu+C77Lv4u/y8BLxgvOS9N -L1gvZC9pL2wvby9yL3Qvdy98L38vhC+ZL6Evri+6L8gvyy/OL9Av0y/WL90v6i/3L/8wAjAOMBcwHDAx -MDQwNzA6MD0wUDBdMGAwYzBsMHUwhzCQMJswpzDEMMYwyTDMMM8w0DDSMOkxCjENMRAxEzEVMRgxGzEg -MT0xPzFCMUUxSDFJMUsxYjGDMYYxiTGMMY4xkTGUMZoxtzG5MbwxvzHCMcMxxTHcMf0yADIDMgYyCDIL -Mg4yJDItMjQyTDJTMnAyczJ2MnkyfDJ/MowynTKfMqgyqjK/MsIyxTLIMssy4TLuMvEy9DMBMwQzEjMb -MyQzKjNfM2IzZTNoM2szbDNvM3IzdTN3M4AzgjOFM4czkDOSM5UzlzOtM8Uz4jPlM+gz6zPuM/E0CTQW -NBk0JDQ8NEc0UDRVNGg0gDSNNI80kjSUNLk0uzS+NMA0wjTENMY00TTeNOA04zTmNQc1CTUMNQ41EDUS -NRQ1IzUvNTw1PjVBNUQ1ZTVnNWo1bTVvNXE1czV5NXs1iTWWNZg1mzWeNb81wTXENcY1yDXKNcw11TXr -Nfg1+jX9NgA2ITYjNiY2KDYqNiw2LjY3NkA2TTZPNlI2VDZ5Nns2fjaBNoM2hTaHNpI2lDahNqM2pjao -NtE20zbUNtc22jbcNt424DbzNvU3BjcINws3DTcQNx03HzciNyU3Kzc0NzY3OTc8N2U3bzdxN3M3djd4 -N3o3fDd/N4I3kTeaN5w3ozemN6k3qzfQN9I31TfXN9k32zfdN/Q3/jgLOA04EDgSODs4PTg+OEE4RDhG -OEg4SjhUOGE4YzhmOGg4hTiPOJk4uDi7OL44wTjEOMY4yTjSOOU46DjpOPI4+TkUOSE5PzlIOVw5ZTls -OYQ5pTm7Ob45wTnEOcc5yjnMOc856znxOgY6JzoxOjQ6Nzo6Oj06QDpDOkY6YTpuOnY6eTp8On86gjqF -Op46szq8OsE6zjrrOu468Tr0Ovc6+Tr8Oxs7JDtFO0g7SztOO1E7VDtWO1k7ejt9O4A7gzuGO4k7jDuP -O5w7nzuiO6U7qDurO7w7xTvMO8870jvVO9g76zwFPA48EzwnPDA8Mz1KPU09UD1SPVQ9Vj1YPVs9XT1g -PWM9ZT1oPWo9bT1wPXM9dT14PXo9fD1+PYA9gz2GPYg9ij2MPY89kT2TPZY9mD2bPZ49oT2kPac9qT2r -Pa49sD2zPbY9uD27Pb49wT3EPcY9yT3MPc890j3UPdY92T3cPd894j3lPec96j3sPe498D3zPfY9+D37 -Pf09/z4CPgU+Bz4JPgw+Dz4SPhU+Fz4aPhw+Hj4hPiM+JT4nPio+LD4uPjE+ND43Pjk+PD4+PkA+Qz5G -Pkk+TD5PPlI+VD5WPlk+XD5fPmE+Yz5lPmg+aj5sPm8+cj50Pnc+eT58Pn8+gj6FPoc+iT6LPo0+jz6R -PpQ+lj6ZPpw+nz6iPqQ+pz6qPrM+tT64PsE+wz7QPtI+1T7YPts+3j7gPwk/Fz8kPyY/KD8pPys/LD8u -PzA/Mj9bP10/Xz9gP2I/Yz9lP2c/aT+SP5Q/lj+XP5k/mj+cP54/oD+pP6s/sD+5P7s/yj/MP84/0T/T -P9U/2D/bQARABkAIQAlAC0AMQA5AEEASQDtAPUA/QEBAQkBDQEVAR0BJQHJAdEB2QHhAekB8QH5AgUCE -QJVAl0CaQJ1AoEDJQMtAzUDQQNJA1EDWQNhA20DkQO1A70D2QPhA+0D+QSdBKUErQS5BMEEyQTRBN0E6 -QUNBRUFWQVhBWkFcQV9BYUFkQWdBaUGSQZRBlkGXQZlBmkGcQZ5BoEHJQctBzUHOQdBB0UHTQdVB10IA -QgJCBUIIQgpCDEIOQhBCE0IfQihCKkIzQjVCOEI7QlRCfUJ/QoFChEKGQohCikKNQpBCmUKbQqJCq0Kt -QrpCvUK/QsJCxULIQstC9EL2QvhC+UL7QvxC/kMAQwJDEUM6QzxDPkM/Q0FDQkNEQ0ZDSENxQ3NDdUN2 -Q3hDeUN7Q31Df0OoQ6pDrEOtQ69DsEOyQ7RDtkPfQ+FD40PmQ+hD6kPsQ+5D8UP2Q/9EAUQKRAxEF0Qa -RB1EIEQiRCRETURPRFFEUkRURFVEV0RZRFtEhESGRIhEi0SNRI9EkUSURJdEnESlRKdEsESyRMtEzUTP -RNJE1UTYRNpE3ETeROFE5ETmROhFEUUTRRVFFkUYRRlFG0UdRR9FKEUxRTNFREVHRUpFTUVQRVNFVkVZ -RVxFhUWHRYlFjEWORZBFkkWVRZhFo0WsRa5FxUXHRcpFzUXQRdNF1kXYRdpF3EXfReFGCkYMRg5GD0YR -RhJGFEYWRhhGQUZDRkZGSUZLRk1GT0ZRRlRGXUZuRnBGc0Z2RnlGgkaERo1Gj0aQRqJGy0bNRs9G0EbS -RtNG1UbXRtlHAkcERwZHB0cJRwpHDEcORxBHHUdGR0hHSkdNR09HUUdTR1ZHWUdeR2dHaUdyR3RHlUeY -R5pHnUefR6FHo0elR6hHq0euR7BHske1R7hHu0fkR+ZH6EfpR+tH7EfuR/BH8kgbSB1IH0giSCRIJkgo -SCtILkgzSDxIPkhXSFlIXEhfSGJIZUhnSGlIa0huSHFIc0h2SJ9IoUijSKZIqEiqSKxIr0iySL5Ix0jM -SNVI2EnvSfJJ9En2SfhJ+kn9Sf9KAkoFSgdKCUoLSg1KD0oRShRKFkoZShtKHUofSiFKI0olSidKKUor -Si1KL0oxSjRKN0o5SjxKPkpASkNKRkpISkpKTEpOSlFKU0pVSldKWUpbSl5KYEpiSmVKZ0ppSmtKbUpw -SnJKdUp3SnlKe0p9Sn9KgkqFSodKiUqLSo5KkEqTSpZKmUqbSp1Kn0qiSqVKqEqqSqxKr0qxSrNKtUq3 -SrlKvEq+SsBKwkrESsZKyErKSsxKzkrQStJK1ErXStlK20rdSt9K4UrjSuVK50rpSutK7krwSvJK9Er2 -SvlK+0r9Sv9LAUsESwZLCEsKSwxLD0sRSxRLF0saSx1LIEsiSyRLJksoSzFLNExNTFBMU0xVTFdMWUxb -TF5MYExjTGZMaExrTG5McExzTHZMeEx7TH1Mf0yBTINMhkyJTItMjUyPTJJMlEyWTJlMm0yeTKFMpEyn -TKpMrEyvTLJMtEy2TLlMu0y+TMFMxEzHTMlMzEzPTNJM1UzXTNlM3EzfTOJM5UzoTOpM7EzuTPFM80z2 -TPlM+0z9TP9NAk0FTQhNCk0MTQ9NEk0VTRhNGk0cTR5NIU0jTSZNKE0qTSxNLk0xTTNNNk05TTxNPk1B -TUNNRU1ITUtNTk1RTVRNV01ZTVtNXk1hTWRNZk1oTWpNbU1vTXFNdE13TXpNfU1/TYJNhU2ITYpNjE2O -TZBNkk2UTZZNmU2bTZ5NoU2kTadNqk2sTa9NuE27TtRO107aTt1O4E7jTuZO6U7sTu9O8k71TvhO+07+ -TwFPBE8HTwpPDU8QTxNPFk8ZTxxPH08iTyVPKE8rTy5PMU80TzdPOk89T0BPQ09GT0lPTE9PT1JPVU9Y -T1tPXk9hT2RPZ09qT21PcE9zT3ZPeU98T39Pgk+FT4hPi0+OT5FPlE+XT5pPnU+fT6JPpU+oT6tPrk+x -T7RPt0+6T71PwE/DT8ZPyU/MT89P0k/VT9hP20/eT+FP5E/nT+pP7U/wT/NP9k/5T/xP/1ACUAVQCFAL -UA5QEVAUUBdQGlAdUCBQI1AmUClQLFAvUDJQNVA4UDtQPlBBUERQR1BKUE1QUFBTUFZQWVBcUF9QYlBl -UGhQa1BuUHFQdFCAUJVQvlDSUPdRA1EQURxRL1FJUWhRgVGYUa9RzFHfUfRSD1I0UltSlVKoUr5SylLs -Ux1TL1NJU11ThVOeU7BTw1PNU+JT9FQSVCBUO1RHVGVUhFSRVKRUsFS8VNhU5FTsVRVVIlU7VU5VbFWr -VbdVzFXZVexWBFYeVjpWVVZsVnhWklaeVrxW0lb3VwxXGFc4V1lXZld7V5BXnFepV8BX2FflWARYHlhC -WFtYZ1hzWJNYr1jYWQtZGFktWWhZk1mqWbdZxFnlWfxaCFo5WnRai1qhWsRa+FsSWytbQFtPW2ZbeluO -W6FbrVvAW81b4Fv2XCNcVFxnXHlch1yRXMpc3VzxXQNdHF01XVFdXF11XYFdil2NXY5dl12aXZtdpF2n -X2RfZ19pX2tfbV9vX3JfdF93X3lffF9/X4Ffg1+GX4lfjF+PX5JflF+WX5hfml+cX55foF+jX6ZfqF+r -X65fsV+zX7VfuF+6X71fv1/CX8Rfxl/IX8pfzV/QX9Nf1l/ZX9xf31/iX+Vf51/qX+1f71/yX/Vf91/5 -X/xf/2ACYAVgCGALYA5gEGATYBZgGGAbYB1gH2AhYCRgJmApYCtgLWAwYDJgNWA4YDtgPmBAYENgRWBH -YEpgTGBPYFFgVGBWYFhgW2BeYGFgZGBnYGlgbGBuYHBgcmB0YHdgeWB8YH9ggWCEYIdgimCMYI5gkWCT -YJVgl2CZYJxgnmChYKNgpWCnYKpgrGCvYLJgtGC2YLhgu2C9YMBgwmDFYMhgymDMYM9g0mDVYNdg2mDc -YN9g4WDjYOZg6WDsYO5g8WD0YPdg+mD9YP9hAmEEYQZhCGEKYQ1hD2ERYRNhFmEZYRxhHmEhYSRhJmEo -YSphLGEuYTBhMmE1YThhO2E9YT9hQmFFYUdhSWFLYU5hUGFTYVVhV2FZYVxhX2FhYWNhZWFnYWlha2Fu -YXBhc2F2YXhhemF8YX9hgmGFYYhhi2GOYZdhmmNXY1pjXWNgY2NjZmNpY2xjb2NyY3VjeGN7Y35jgWOE -Y4djimONY5Bjk2OWY5ljnGOfY6JjpWOoY6tjrmOxY7Rjt2O6Y71jwGPDY8ZjyWPMY89j0mPVY9hj22Pe -Y+Fj5GPnY+pj7WPwY/Nj9mP5Y/xj/2QCZAVkCGQLZA5kEWQUZBdkGmQdZCBkI2QmZClkLGQvZDJkNWQ4 -ZDtkPmRBZERkR2RKZE1kUGRTZFZkWWRcZF9kYmRlZGhka2RuZHFkdGR3ZHpkfWSAZINkhmSJZIxkj2SS -ZJVkmGSbZJ5koWSkZKdkqmStZLBks2S2ZLlkvGS/ZMJkxWTIZMtkzmTRZNRk12TaZN1k4GTjZOZk6WTs -ZO9k8mT1ZPhk+2T+ZQFlBGUHZQplDWUQZRNlFmUZZRxlH2UiZSVlKGUrZS5lMWU0ZTdlOmU9ZUBlQ2VG -ZUllTGVPZVJlVWVYZVtlXmVhZWRlZ2VqZW1lcGVzZXZleWV8ZX9lgmWFZYhli2WOZZFllGWXZZplnWWg -ZaNlpmWpZaxlr2WyZbVluGW7Zb5lwWXEZcdlymXNZdBl02XWZdll3GXfZeJl5WXoZetl7mX3Zfxl/mYA -ZgJmB2YJZgxmEWYTZhhmGmYfZiRmJmYoZi1mMGYyZjdmPGZBZkNmRWZKZk1mUmZXZlxmXmZgZmJmZGZp -ZmtmbWZvZnRmd2Z5Zn5mgWaGZohmimaMZo5mkGaSZpRmmWaeZqBmomanZqlmq2atZq9msma0ZrlmvmbA -ZsJmxGbJZstm0GbVZthm2mbcZt5m4WbmZuhm6mbsZu9m8WbzZvVm92b5Zvtm/Wb/ZwRnBmcIZw1nEmcX -ZxxnHmcgZyVnKmcsZy5nMGcyZzVnOmc8Zz5nQGdFZ0pnT2dRZ1NnVWdXZ1lnXmdhZ2NnZWdqZ2xncWd2 -Z3hnemd8Z35ngGeFZ4pnj2eRZ5NnlWeXZ5lnm2edZ59noWekZ6Znq2euZ7Fns2e1Z7dnvGe/Z8RnyWfO -Z9Nn2GfdZ99n4WfjZ+Vn6mftZ/Jn92f5Z/tn/Wf/aAFoBmgIaApoDGgOaBFoFGgWaBhoG2ggaCVoKGgq -aCxoMWg2aDtoPWhCaERoSWhLaE1oT2hSaFRoVmhYaF1oYmhkaGZoa2hwaHJodGh2aHhoemh9aIJohGiG -aIhojWiSaJdomWiiaKRopWiuaLFosmi7aL5ov2jIaM0AAAAAAAACAgAAAAAAAA4UAAAAAAAAAAAAAAAA -AABo3A - diff --git a/Sources/VLDocument.h b/Sources/VLDocument.h index b3b7ccc..a7ef0de 100644 --- a/Sources/VLDocument.h +++ b/Sources/VLDocument.h @@ -65,6 +65,7 @@ enum { - (void) setDivisions:(int)divisions inSections:(NSRange)sections; - (void) setGroove:(NSString *)groove inSections:(NSRange)sections; - (void) playWithGroove:(NSString *)groove inSections:(NSRange)sections; +- (void) changeOctave:(BOOL)up inSections:(NSRange)sections; - (void) setRepeatVolta:(int)repeatVolta; diff --git a/Sources/VLDocument.mm b/Sources/VLDocument.mm index fd677f3..07cbdad 100644 --- a/Sources/VLDocument.mm +++ b/Sources/VLDocument.mm @@ -5,7 +5,7 @@ // // (MN) Matthias Neeracher // -// Copyright © 2005-2007 Matthias Neeracher +// Copyright © 2005-2008 Matthias Neeracher // #import "VLDocument.h" @@ -271,6 +271,14 @@ [self didChangeSong]; } +- (void) changeOctave:(BOOL)up inSections:(NSRange)sections +{ + [self willChangeSong]; + while (sections.length-- > 0) + song->ChangeOctave(sections.location++, up); + [self didChangeSong]; +} + - (void) setChordSize:(float)size { [[[self undoManager] prepareWithInvocationTarget:self] setChordSize:chordSize]; diff --git a/Sources/VLModel.cpp b/Sources/VLModel.cpp index 436c3cd..94ed7c4 100644 --- a/Sources/VLModel.cpp +++ b/Sources/VLModel.cpp @@ -964,6 +964,25 @@ void VLSong::ChangeKey(int section, int newKey, int newMode, bool transpose) } } +void VLSong::ChangeOctave(int section, bool transposeUp) +{ + int semi = transposeUp ? 12 : -12; + + for (size_t measure=0; measurefPitch == VLNote::kNoPitch) + continue; + i->fPitch += semi; + } + } +} + // // We try a table based approach for converting the beginning and end of // notes diff --git a/Sources/VLModel.h b/Sources/VLModel.h index 7ee6c42..2792f8e 100644 --- a/Sources/VLModel.h +++ b/Sources/VLModel.h @@ -5,7 +5,7 @@ // // (MN) Matthias Neeracher // -// Copyright © 2005-2007 Matthias Neeracher +// Copyright © 2005-2008 Matthias Neeracher // #include @@ -346,6 +346,7 @@ public: bool DoesTieWithNextRepeat(size_t measure) const; bool IsNonEmpty() const; void ChangeKey(int section, int newKey, int newMode, bool transpose); + void ChangeOctave(int section, bool transposeUp); void ChangeDivisions(int section, int newDivisions); void ChangeTime(int section, VLFraction newTime); diff --git a/Sources/VLSheetView.h b/Sources/VLSheetView.h index 8d31e23..35481cc 100644 --- a/Sources/VLSheetView.h +++ b/Sources/VLSheetView.h @@ -103,6 +103,7 @@ enum VLRecalc { - (IBAction) endSheetWithButton:(id)sender; - (IBAction) selectGroove:(id)sender; - (IBAction) editDisplayOptions:(id)sender; +- (IBAction) transposeOctave:(id)sender; - (VLDocument *) document; - (VLSong *) song; diff --git a/Sources/VLSheetView.mm b/Sources/VLSheetView.mm index eb017c1..2181f15 100644 --- a/Sources/VLSheetView.mm +++ b/Sources/VLSheetView.mm @@ -625,6 +625,12 @@ const char * sBreak[3] = {"", "\xE2\xA4\xBE", "\xE2\x8E\x98"}; [self setKey:nil returnCode:NSAlertOtherReturn contextInfo:sender]; } +- (IBAction) transposeOctave:(id)sender +{ + [[self document] changeOctave:[sender tag] > 0 + inSections:[self sectionsInSelection]]; +} + - (IBAction) setTime:(id)sender { int time = [[sender selectedItem] tag];