##// END OF EJS Templates
Merge with upstream
Fernando Perez -
r1452:7e1a3ed6 merge
parent child Browse files
Show More
@@ -0,0 +1,123
1 # encoding: utf-8
2
3 """The IPython Core Notification Center.
4
5 See docs/source/development/notification_blueprint.txt for an overview of the
6 notification module.
7 """
8
9 __docformat__ = "restructuredtext en"
10
11 #-----------------------------------------------------------------------------
12 # Copyright (C) 2008 The IPython Development Team
13 #
14 # Distributed under the terms of the BSD License. The full license is in
15 # the file COPYING, distributed as part of this software.
16 #-----------------------------------------------------------------------------
17
18
19 class NotificationCenter(object):
20 """Synchronous notification center
21
22 Example
23 -------
24 >>> import IPython.kernel.core.notification as notification
25 >>> def callback(theType, theSender, args={}):
26 ... print theType,theSender,args
27 ...
28 >>> notification.sharedCenter.add_observer(callback, 'NOTIFICATION_TYPE', None)
29 >>> notification.sharedCenter.post_notification('NOTIFICATION_TYPE', object()) # doctest:+ELLIPSIS
30 NOTIFICATION_TYPE ...
31
32 """
33 def __init__(self):
34 super(NotificationCenter, self).__init__()
35 self._init_observers()
36
37
38 def _init_observers(self):
39 """Initialize observer storage"""
40
41 self.registered_types = set() #set of types that are observed
42 self.registered_senders = set() #set of senders that are observed
43 self.observers = {} #map (type,sender) => callback (callable)
44
45
46 def post_notification(self, theType, sender, **kwargs):
47 """Post notification (type,sender,**kwargs) to all registered
48 observers.
49
50 Implementation
51 --------------
52 * If no registered observers, performance is O(1).
53 * Notificaiton order is undefined.
54 * Notifications are posted synchronously.
55 """
56
57 if(theType==None or sender==None):
58 raise Exception("NotificationCenter.post_notification requires \
59 type and sender.")
60
61 # If there are no registered observers for the type/sender pair
62 if((theType not in self.registered_types and
63 None not in self.registered_types) or
64 (sender not in self.registered_senders and
65 None not in self.registered_senders)):
66 return
67
68 for o in self._observers_for_notification(theType, sender):
69 o(theType, sender, args=kwargs)
70
71
72 def _observers_for_notification(self, theType, sender):
73 """Find all registered observers that should recieve notification"""
74
75 keys = (
76 (theType,sender),
77 (theType, None),
78 (None, sender),
79 (None,None)
80 )
81
82
83 obs = set()
84 for k in keys:
85 obs.update(self.observers.get(k, set()))
86
87 return obs
88
89
90 def add_observer(self, callback, theType, sender):
91 """Add an observer callback to this notification center.
92
93 The given callback will be called upon posting of notifications of
94 the given type/sender and will receive any additional kwargs passed
95 to post_notification.
96
97 Parameters
98 ----------
99 observerCallback : callable
100 Callable. Must take at least two arguments::
101 observerCallback(type, sender, args={})
102
103 theType : hashable
104 The notification type. If None, all notifications from sender
105 will be posted.
106
107 sender : hashable
108 The notification sender. If None, all notifications of theType
109 will be posted.
110 """
111 assert(callback != None)
112 self.registered_types.add(theType)
113 self.registered_senders.add(sender)
114 self.observers.setdefault((theType,sender), set()).add(callback)
115
116 def remove_all_observers(self):
117 """Removes all observers from this notification center"""
118
119 self._init_observers()
120
121
122
123 sharedCenter = NotificationCenter() No newline at end of file
@@ -0,0 +1,171
1 # encoding: utf-8
2
3 """This file contains unittests for the notification.py module."""
4
5 __docformat__ = "restructuredtext en"
6
7 #-----------------------------------------------------------------------------
8 # Copyright (C) 2008 The IPython Development Team
9 #
10 # Distributed under the terms of the BSD License. The full license is in
11 # the file COPYING, distributed as part of this software.
12 #-----------------------------------------------------------------------------
13
14 #-----------------------------------------------------------------------------
15 # Imports
16 #-----------------------------------------------------------------------------
17
18 import unittest
19 import IPython.kernel.core.notification as notification
20 from nose.tools import timed
21
22 #
23 # Supporting test classes
24 #
25
26 class Observer(object):
27 """docstring for Observer"""
28 def __init__(self, expectedType, expectedSender,
29 center=notification.sharedCenter, **kwargs):
30 super(Observer, self).__init__()
31 self.expectedType = expectedType
32 self.expectedSender = expectedSender
33 self.expectedKwArgs = kwargs
34 self.recieved = False
35 center.add_observer(self.callback,
36 self.expectedType,
37 self.expectedSender)
38
39
40 def callback(self, theType, sender, args={}):
41 """callback"""
42
43 assert(theType == self.expectedType or
44 self.expectedType == None)
45 assert(sender == self.expectedSender or
46 self.expectedSender == None)
47 assert(args == self.expectedKwArgs)
48 self.recieved = True
49
50
51 def verify(self):
52 """verify"""
53
54 assert(self.recieved)
55
56 def reset(self):
57 """reset"""
58
59 self.recieved = False
60
61
62
63 class Notifier(object):
64 """docstring for Notifier"""
65 def __init__(self, theType, **kwargs):
66 super(Notifier, self).__init__()
67 self.theType = theType
68 self.kwargs = kwargs
69
70 def post(self, center=notification.sharedCenter):
71 """fire"""
72
73 center.post_notification(self.theType, self,
74 **self.kwargs)
75
76
77 #
78 # Test Cases
79 #
80
81 class NotificationTests(unittest.TestCase):
82 """docstring for NotificationTests"""
83
84 def tearDown(self):
85 notification.sharedCenter.remove_all_observers()
86
87 def test_notification_delivered(self):
88 """Test that notifications are delivered"""
89 expectedType = 'EXPECTED_TYPE'
90 sender = Notifier(expectedType)
91 observer = Observer(expectedType, sender)
92
93 sender.post()
94
95 observer.verify()
96
97
98 def test_type_specificity(self):
99 """Test that observers are registered by type"""
100
101 expectedType = 1
102 unexpectedType = "UNEXPECTED_TYPE"
103 sender = Notifier(expectedType)
104 unexpectedSender = Notifier(unexpectedType)
105 observer = Observer(expectedType, sender)
106
107 sender.post()
108 unexpectedSender.post()
109
110 observer.verify()
111
112
113 def test_sender_specificity(self):
114 """Test that observers are registered by sender"""
115
116 expectedType = "EXPECTED_TYPE"
117 sender1 = Notifier(expectedType)
118 sender2 = Notifier(expectedType)
119 observer = Observer(expectedType, sender1)
120
121 sender1.post()
122 sender2.post()
123
124 observer.verify()
125
126
127 def test_remove_all_observers(self):
128 """White-box test for remove_all_observers"""
129
130 for i in xrange(10):
131 Observer('TYPE', None, center=notification.sharedCenter)
132
133 self.assert_(len(notification.sharedCenter.observers[('TYPE',None)]) >= 10,
134 "observers registered")
135
136 notification.sharedCenter.remove_all_observers()
137
138 self.assert_(len(notification.sharedCenter.observers) == 0, "observers removed")
139
140
141 def test_any_sender(self):
142 """test_any_sender"""
143
144 expectedType = "EXPECTED_TYPE"
145 sender1 = Notifier(expectedType)
146 sender2 = Notifier(expectedType)
147 observer = Observer(expectedType, None)
148
149
150 sender1.post()
151 observer.verify()
152
153 observer.reset()
154 sender2.post()
155 observer.verify()
156
157
158 @timed(.01)
159 def test_post_performance(self):
160 """Test that post_notification, even with many registered irrelevant
161 observers is fast"""
162
163 for i in xrange(10):
164 Observer("UNRELATED_TYPE", None)
165
166 o = Observer('EXPECTED_TYPE', None)
167
168 notification.sharedCenter.post_notification('EXPECTED_TYPE', self)
169
170 o.verify()
171
@@ -0,0 +1,47
1 .. Notification:
2
3 ==========================================
4 IPython.kernel.core.notification blueprint
5 ==========================================
6
7 Overview
8 ========
9 The :mod:`IPython.kernel.core.notification` module will provide a simple implementation of a notification center and support for the observer pattern within the :mod:`IPython.kernel.core`. The main intended use case is to provide notification of Interpreter events to an observing frontend during the execution of a single block of code.
10
11 Functional Requirements
12 =======================
13 The notification center must:
14 * Provide synchronous notification of events to all registered observers.
15 * Provide typed or labeled notification types
16 * Allow observers to register callbacks for individual or all notification types
17 * Allow observers to register callbacks for events from individual or all notifying objects
18 * Notification to the observer consists of the notification type, notifying object and user-supplied extra information [implementation: as keyword parameters to the registered callback]
19 * Perform as O(1) in the case of no registered observers.
20 * Permit out-of-process or cross-network extension.
21
22 What's not included
23 ==============================================================
24 As written, the :mod:`IPython.kernel.core.notificaiton` module does not:
25 * Provide out-of-process or network notifications [these should be handled by a separate, Twisted aware module in :mod:`IPython.kernel`].
26 * Provide zope.interface-style interfaces for the notification system [these should also be provided by the :mod:`IPython.kernel` module]
27
28 Use Cases
29 =========
30 The following use cases describe the main intended uses of the notificaiton module and illustrate the main success scenario for each use case:
31
32 1. Dwight Schroot is writing a frontend for the IPython project. His frontend is stuck in the stone age and must communicate synchronously with an IPython.kernel.core.Interpreter instance. Because code is executed in blocks by the Interpreter, Dwight's UI freezes every time he executes a long block of code. To keep track of the progress of his long running block, Dwight adds the following code to his frontend's set-up code::
33 from IPython.kernel.core.notification import NotificationCenter
34 center = NotificationCenter.sharedNotificationCenter
35 center.registerObserver(self, type=IPython.kernel.core.Interpreter.STDOUT_NOTIFICATION_TYPE, notifying_object=self.interpreter, callback=self.stdout_notification)
36
37 and elsewhere in his front end::
38 def stdout_notification(self, type, notifying_object, out_string=None):
39 self.writeStdOut(out_string)
40
41 If everything works, the Interpreter will (according to its published API) fire a notification via the :data:`IPython.kernel.core.notification.sharedCenter` of type :const:`STD_OUT_NOTIFICATION_TYPE` before writing anything to stdout [it's up to the Intereter implementation to figure out when to do this]. The notificaiton center will then call the registered callbacks for that event type (in this case, Dwight's frontend's stdout_notification method). Again, according to its API, the Interpreter provides an additional keyword argument when firing the notificaiton of out_string, a copy of the string it will write to stdout.
42
43 Like magic, Dwight's frontend is able to provide output, even during long-running calculations. Now if Jim could just convince Dwight to use Twisted...
44
45 2. Boss Hog is writing a frontend for the IPython project. Because Boss Hog is stuck in the stone age, his frontend will be written in a new Fortran-like dialect of python and will run only from the command line. Because he doesn't need any fancy notification system and is used to worrying about every cycle on his rat-wheel powered mini, Boss Hog is adamant that the new notification system not produce any performance penalty. As they say in Hazard county, there's no such thing as a free lunch. If he wanted zero overhead, he should have kept using IPython 0.8. Instead, those tricky Duke boys slide in a suped-up bridge-out jumpin' awkwardly confederate-lovin' notification module that imparts only a constant (and small) performance penalty when the Interpreter (or any other object) fires an event for which there are no registered observers. Of course, the same notificaiton-enabled Interpreter can then be used in frontends that require notifications, thus saving the IPython project from a nasty civil war.
46
47 3. Barry is wrting a frontend for the IPython project. Because Barry's front end is the *new hotness*, it uses an asynchronous event model to communicate with a Twisted :mod:`~IPython.kernel.engineservice` that communicates with the IPython :class:`~IPython.kernel.core.interpreter.Interpreter`. Using the :mod:`IPython.kernel.notification` module, an asynchronous wrapper on the :mod:`IPython.kernel.core.notification` module, Barry's frontend can register for notifications from the interpreter that are delivered asynchronously. Even if Barry's frontend is running on a separate process or even host from the Interpreter, the notifications are delivered, as if by dark and twisted magic. Just like Dwight's frontend, Barry's frontend can now recieve notifications of e.g. writing to stdout/stderr, opening/closing an external file, an exception in the executing code, etc. No newline at end of file
@@ -1,505 +1,560
1 # encoding: utf-8
1 # encoding: utf-8
2 # -*- test-case-name: IPython.frontend.cocoa.tests.test_cocoa_frontend -*-
2 # -*- test-case-name: IPython.frontend.cocoa.tests.test_cocoa_frontend -*-
3
3
4 """PyObjC classes to provide a Cocoa frontend to the
4 """PyObjC classes to provide a Cocoa frontend to the
5 IPython.kernel.engineservice.IEngineBase.
5 IPython.kernel.engineservice.IEngineBase.
6
6
7 To add an IPython interpreter to a cocoa app, instantiate an
7 To add an IPython interpreter to a cocoa app, instantiate an
8 IPythonCocoaController in a XIB and connect its textView outlet to an
8 IPythonCocoaController in a XIB and connect its textView outlet to an
9 NSTextView instance in your UI. That's it.
9 NSTextView instance in your UI. That's it.
10
10
11 Author: Barry Wark
11 Author: Barry Wark
12 """
12 """
13
13
14 __docformat__ = "restructuredtext en"
14 __docformat__ = "restructuredtext en"
15
15
16 #-----------------------------------------------------------------------------
16 #-----------------------------------------------------------------------------
17 # Copyright (C) 2008 The IPython Development Team
17 # Copyright (C) 2008 The IPython Development Team
18 #
18 #
19 # Distributed under the terms of the BSD License. The full license is in
19 # Distributed under the terms of the BSD License. The full license is in
20 # the file COPYING, distributed as part of this software.
20 # the file COPYING, distributed as part of this software.
21 #-----------------------------------------------------------------------------
21 #-----------------------------------------------------------------------------
22
22
23 #-----------------------------------------------------------------------------
23 #-----------------------------------------------------------------------------
24 # Imports
24 # Imports
25 #-----------------------------------------------------------------------------
25 #-----------------------------------------------------------------------------
26
26
27 import sys
27 import sys
28 import objc
28 import objc
29 import uuid
29 import uuid
30
30
31 from Foundation import NSObject, NSMutableArray, NSMutableDictionary,\
31 from Foundation import NSObject, NSMutableArray, NSMutableDictionary,\
32 NSLog, NSNotificationCenter, NSMakeRange,\
32 NSLog, NSNotificationCenter, NSMakeRange,\
33 NSLocalizedString, NSIntersectionRange,\
33 NSLocalizedString, NSIntersectionRange,\
34 NSString, NSAutoreleasePool
34 NSString, NSAutoreleasePool
35
35
36 from AppKit import NSApplicationWillTerminateNotification, NSBeep,\
36 from AppKit import NSApplicationWillTerminateNotification, NSBeep,\
37 NSTextView, NSRulerView, NSVerticalRuler
37 NSTextView, NSRulerView, NSVerticalRuler
38
38
39 from pprint import saferepr
39 from pprint import saferepr
40
40
41 import IPython
41 import IPython
42 from IPython.kernel.engineservice import ThreadedEngineService
42 from IPython.kernel.engineservice import ThreadedEngineService
43 from IPython.frontend.frontendbase import AsyncFrontEndBase
43 from IPython.frontend.frontendbase import AsyncFrontEndBase
44
44
45 from twisted.internet.threads import blockingCallFromThread
45 from twisted.internet.threads import blockingCallFromThread
46 from twisted.python.failure import Failure
46 from twisted.python.failure import Failure
47
47
48 #------------------------------------------------------------------------------
48 #-----------------------------------------------------------------------------
49 # Classes to implement the Cocoa frontend
49 # Classes to implement the Cocoa frontend
50 #------------------------------------------------------------------------------
50 #-----------------------------------------------------------------------------
51
51
52 # TODO:
52 # TODO:
53 # 1. use MultiEngineClient and out-of-process engine rather than
53 # 1. use MultiEngineClient and out-of-process engine rather than
54 # ThreadedEngineService?
54 # ThreadedEngineService?
55 # 2. integrate Xgrid launching of engines
55 # 2. integrate Xgrid launching of engines
56
56
57 class AutoreleasePoolWrappedThreadedEngineService(ThreadedEngineService):
57 class AutoreleasePoolWrappedThreadedEngineService(ThreadedEngineService):
58 """Wrap all blocks in an NSAutoreleasePool"""
58 """Wrap all blocks in an NSAutoreleasePool"""
59
59
60 def wrapped_execute(self, msg, lines):
60 def wrapped_execute(self, msg, lines):
61 """wrapped_execute"""
61 """wrapped_execute"""
62 try:
62 try:
63 p = NSAutoreleasePool.alloc().init()
63 p = NSAutoreleasePool.alloc().init()
64 result = self.shell.execute(lines)
64 result = super(AutoreleasePoolWrappedThreadedEngineService,
65 except Exception,e:
65 self).wrapped_execute(msg, lines)
66 # This gives the following:
67 # et=exception class
68 # ev=exception class instance
69 # tb=traceback object
70 et,ev,tb = sys.exc_info()
71 # This call adds attributes to the exception value
72 et,ev,tb = self.shell.formatTraceback(et,ev,tb,msg)
73 # Add another attribute
74
75 # Create a new exception with the new attributes
76 e = et(ev._ipython_traceback_text)
77 e._ipython_engine_info = msg
78
79 # Re-raise
80 raise e
81 finally:
66 finally:
82 p.drain()
67 p.drain()
83
68
84 return result
69 return result
85
70
86 def execute(self, lines):
87 # Only import this if we are going to use this class
88 from twisted.internet import threads
89
71
90 msg = {'engineid':self.id,
91 'method':'execute',
92 'args':[lines]}
93
72
94 d = threads.deferToThread(self.wrapped_execute, msg, lines)
73 class Cell(NSObject):
95 d.addCallback(self.addIDToResult)
74 """
96 return d
75 Representation of the prompts, input and output of a cell in the
76 frontend
77 """
78
79 blockNumber = objc.ivar().unsigned_long()
80 blockID = objc.ivar()
81 inputBlock = objc.ivar()
82 output = objc.ivar()
83
84
85
86 class CellBlock(object):
87 """
88 Storage for information about text ranges relating to a single cell
89 """
90
91
92 def __init__(self, inputPromptRange, inputRange=None, outputPromptRange=None,
93 outputRange=None):
94 super(CellBlock, self).__init__()
95 self.inputPromptRange = inputPromptRange
96 self.inputRange = inputRange
97 self.outputPromptRange = outputPromptRange
98 self.outputRange = outputRange
99
100 def update_ranges_for_insertion(self, text, textRange):
101 """Update ranges for text insertion at textRange"""
102
103 for r in [self.inputPromptRange,self.inputRange,
104 self.outputPromptRange, self.outputRange]:
105 if(r == None):
106 continue
107 intersection = NSIntersectionRange(r,textRange)
108 if(intersection.length == 0): #ranges don't intersect
109 if r.location >= textRange.location:
110 r.location += len(text)
111 else: #ranges intersect
112 if(r.location > textRange.location):
113 offset = len(text) - intersection.length
114 r.length -= offset
115 r.location += offset
116 elif(r.location == textRange.location):
117 r.length += len(text) - intersection.length
118 else:
119 r.length -= intersection.length
120
121
122 def update_ranges_for_deletion(self, textRange):
123 """Update ranges for text deletion at textRange"""
124
125 for r in [self.inputPromptRange,self.inputRange,
126 self.outputPromptRange, self.outputRange]:
127 if(r==None):
128 continue
129 intersection = NSIntersectionRange(r, textRange)
130 if(intersection.length == 0): #ranges don't intersect
131 if r.location >= textRange.location:
132 r.location -= textRange.length
133 else: #ranges intersect
134 if(r.location > textRange.location):
135 offset = intersection.length
136 r.length -= offset
137 r.location += offset
138 elif(r.location == textRange.location):
139 r.length += intersection.length
140 else:
141 r.length -= intersection.length
142
143 def __repr__(self):
144 return 'CellBlock('+ str((self.inputPromptRange,
145 self.inputRange,
146 self.outputPromptRange,
147 self.outputRange)) + ')'
148
149
97
150
98
151
99 class IPythonCocoaController(NSObject, AsyncFrontEndBase):
152 class IPythonCocoaController(NSObject, AsyncFrontEndBase):
100 userNS = objc.ivar() #mirror of engine.user_ns (key=>str(value))
153 userNS = objc.ivar() #mirror of engine.user_ns (key=>str(value))
101 waitingForEngine = objc.ivar().bool()
154 waitingForEngine = objc.ivar().bool()
102 textView = objc.IBOutlet()
155 textView = objc.IBOutlet()
103
156
104 def init(self):
157 def init(self):
105 self = super(IPythonCocoaController, self).init()
158 self = super(IPythonCocoaController, self).init()
106 AsyncFrontEndBase.__init__(self,
159 AsyncFrontEndBase.__init__(self,
107 engine=AutoreleasePoolWrappedThreadedEngineService())
160 engine=AutoreleasePoolWrappedThreadedEngineService())
108 if(self != None):
161 if(self != None):
109 self._common_init()
162 self._common_init()
110
163
111 return self
164 return self
112
165
113 def _common_init(self):
166 def _common_init(self):
114 """_common_init"""
167 """_common_init"""
115
168
116 self.userNS = NSMutableDictionary.dictionary()
169 self.userNS = NSMutableDictionary.dictionary()
117 self.waitingForEngine = False
170 self.waitingForEngine = False
118
171
119 self.lines = {}
172 self.lines = {}
120 self.tabSpaces = 4
173 self.tabSpaces = 4
121 self.tabUsesSpaces = True
174 self.tabUsesSpaces = True
122 self.currentBlockID = self.next_block_ID()
175 self.currentBlockID = self.next_block_ID()
123 self.blockRanges = {} # blockID=>NSRange
176 self.blockRanges = {} # blockID=>CellBlock
124
177
125
178
126 def awakeFromNib(self):
179 def awakeFromNib(self):
127 """awakeFromNib"""
180 """awakeFromNib"""
128
181
129 self._common_init()
182 self._common_init()
130
183
131 # Start the IPython engine
184 # Start the IPython engine
132 self.engine.startService()
185 self.engine.startService()
133 NSLog('IPython engine started')
186 NSLog('IPython engine started')
134
187
135 # Register for app termination
188 # Register for app termination
136 nc = NSNotificationCenter.defaultCenter()
189 nc = NSNotificationCenter.defaultCenter()
137 nc.addObserver_selector_name_object_(
190 nc.addObserver_selector_name_object_(
138 self,
191 self,
139 'appWillTerminate:',
192 'appWillTerminate:',
140 NSApplicationWillTerminateNotification,
193 NSApplicationWillTerminateNotification,
141 None)
194 None)
142
195
143 self.textView.setDelegate_(self)
196 self.textView.setDelegate_(self)
144 self.textView.enclosingScrollView().setHasVerticalRuler_(True)
197 self.textView.enclosingScrollView().setHasVerticalRuler_(True)
145 r = NSRulerView.alloc().initWithScrollView_orientation_(
198 r = NSRulerView.alloc().initWithScrollView_orientation_(
146 self.textView.enclosingScrollView(),
199 self.textView.enclosingScrollView(),
147 NSVerticalRuler)
200 NSVerticalRuler)
148 self.verticalRulerView = r
201 self.verticalRulerView = r
149 self.verticalRulerView.setClientView_(self.textView)
202 self.verticalRulerView.setClientView_(self.textView)
150 self._start_cli_banner()
203 self._start_cli_banner()
204 self.start_new_block()
151
205
152
206
153 def appWillTerminate_(self, notification):
207 def appWillTerminate_(self, notification):
154 """appWillTerminate"""
208 """appWillTerminate"""
155
209
156 self.engine.stopService()
210 self.engine.stopService()
157
211
158
212
159 def complete(self, token):
213 def complete(self, token):
160 """Complete token in engine's user_ns
214 """Complete token in engine's user_ns
161
215
162 Parameters
216 Parameters
163 ----------
217 ----------
164 token : string
218 token : string
165
219
166 Result
220 Result
167 ------
221 ------
168 Deferred result of
222 Deferred result of
169 IPython.kernel.engineservice.IEngineBase.complete
223 IPython.kernel.engineservice.IEngineBase.complete
170 """
224 """
171
225
172 return self.engine.complete(token)
226 return self.engine.complete(token)
173
227
174
228
175 def execute(self, block, blockID=None):
229 def execute(self, block, blockID=None):
176 self.waitingForEngine = True
230 self.waitingForEngine = True
177 self.willChangeValueForKey_('commandHistory')
231 self.willChangeValueForKey_('commandHistory')
178 d = super(IPythonCocoaController, self).execute(block,
232 d = super(IPythonCocoaController, self).execute(block,
179 blockID)
233 blockID)
180 d.addBoth(self._engine_done)
234 d.addBoth(self._engine_done)
181 d.addCallback(self._update_user_ns)
235 d.addCallback(self._update_user_ns)
182
236
183 return d
237 return d
184
238
185
239
186 def push_(self, namespace):
240 def push_(self, namespace):
187 """Push dictionary of key=>values to python namespace"""
241 """Push dictionary of key=>values to python namespace"""
188
242
189 self.waitingForEngine = True
243 self.waitingForEngine = True
190 self.willChangeValueForKey_('commandHistory')
244 self.willChangeValueForKey_('commandHistory')
191 d = self.engine.push(namespace)
245 d = self.engine.push(namespace)
192 d.addBoth(self._engine_done)
246 d.addBoth(self._engine_done)
193 d.addCallback(self._update_user_ns)
247 d.addCallback(self._update_user_ns)
194
248
195
249
196 def pull_(self, keys):
250 def pull_(self, keys):
197 """Pull keys from python namespace"""
251 """Pull keys from python namespace"""
198
252
199 self.waitingForEngine = True
253 self.waitingForEngine = True
200 result = blockingCallFromThread(self.engine.pull, keys)
254 result = blockingCallFromThread(self.engine.pull, keys)
201 self.waitingForEngine = False
255 self.waitingForEngine = False
202
256
203 @objc.signature('v@:@I')
257 @objc.signature('v@:@I')
204 def executeFileAtPath_encoding_(self, path, encoding):
258 def executeFileAtPath_encoding_(self, path, encoding):
205 """Execute file at path in an empty namespace. Update the engine
259 """Execute file at path in an empty namespace. Update the engine
206 user_ns with the resulting locals."""
260 user_ns with the resulting locals."""
207
261
208 lines,err = NSString.stringWithContentsOfFile_encoding_error_(
262 lines,err = NSString.stringWithContentsOfFile_encoding_error_(
209 path,
263 path,
210 encoding,
264 encoding,
211 None)
265 None)
212 self.engine.execute(lines)
266 self.engine.execute(lines)
213
267
214
268
215 def _engine_done(self, x):
269 def _engine_done(self, x):
216 self.waitingForEngine = False
270 self.waitingForEngine = False
217 self.didChangeValueForKey_('commandHistory')
271 self.didChangeValueForKey_('commandHistory')
218 return x
272 return x
219
273
220 def _update_user_ns(self, result):
274 def _update_user_ns(self, result):
221 """Update self.userNS from self.engine's namespace"""
275 """Update self.userNS from self.engine's namespace"""
222 d = self.engine.keys()
276 d = self.engine.keys()
223 d.addCallback(self._get_engine_namespace_values_for_keys)
277 d.addCallback(self._get_engine_namespace_values_for_keys)
224
278
225 return result
279 return result
226
280
227
281
228 def _get_engine_namespace_values_for_keys(self, keys):
282 def _get_engine_namespace_values_for_keys(self, keys):
229 d = self.engine.pull(keys)
283 d = self.engine.pull(keys)
230 d.addCallback(self._store_engine_namespace_values, keys=keys)
284 d.addCallback(self._store_engine_namespace_values, keys=keys)
231
285
232
286
233 def _store_engine_namespace_values(self, values, keys=[]):
287 def _store_engine_namespace_values(self, values, keys=[]):
234 assert(len(values) == len(keys))
288 assert(len(values) == len(keys))
235 self.willChangeValueForKey_('userNS')
289 self.willChangeValueForKey_('userNS')
236 for (k,v) in zip(keys,values):
290 for (k,v) in zip(keys,values):
237 self.userNS[k] = saferepr(v)
291 self.userNS[k] = saferepr(v)
238 self.didChangeValueForKey_('userNS')
292 self.didChangeValueForKey_('userNS')
239
293
240
294
241 def update_cell_prompt(self, result, blockID=None):
295 def update_cell_prompt(self, result, blockID=None):
296 print self.blockRanges
242 if(isinstance(result, Failure)):
297 if(isinstance(result, Failure)):
243 self.insert_text(self.input_prompt(),
298 prompt = self.input_prompt()
244 textRange=NSMakeRange(self.blockRanges[blockID].location,0),
299
245 scrollToVisible=False
246 )
247 else:
300 else:
248 self.insert_text(self.input_prompt(number=result['number']),
301 prompt = self.input_prompt(number=result['number'])
249 textRange=NSMakeRange(self.blockRanges[blockID].location,0),
302
303 r = self.blockRanges[blockID].inputPromptRange
304 self.insert_text(prompt,
305 textRange=r,
250 scrollToVisible=False
306 scrollToVisible=False
251 )
307 )
252
308
253 return result
309 return result
254
310
255
311
256 def render_result(self, result):
312 def render_result(self, result):
257 blockID = result['blockID']
313 blockID = result['blockID']
258 inputRange = self.blockRanges[blockID]
314 inputRange = self.blockRanges[blockID].inputRange
259 del self.blockRanges[blockID]
315 del self.blockRanges[blockID]
260
316
261 #print inputRange,self.current_block_range()
317 #print inputRange,self.current_block_range()
262 self.insert_text('\n' +
318 self.insert_text('\n' +
263 self.output_prompt(number=result['number']) +
319 self.output_prompt(number=result['number']) +
264 result.get('display',{}).get('pprint','') +
320 result.get('display',{}).get('pprint','') +
265 '\n\n',
321 '\n\n',
266 textRange=NSMakeRange(inputRange.location+inputRange.length,
322 textRange=NSMakeRange(inputRange.location+inputRange.length,
267 0))
323 0))
268 return result
324 return result
269
325
270
326
271 def render_error(self, failure):
327 def render_error(self, failure):
328 print failure
329 blockID = failure.blockID
330 inputRange = self.blockRanges[blockID].inputRange
272 self.insert_text('\n' +
331 self.insert_text('\n' +
273 self.output_prompt() +
332 self.output_prompt() +
274 '\n' +
333 '\n' +
275 failure.getErrorMessage() +
334 failure.getErrorMessage() +
276 '\n\n')
335 '\n\n',
336 textRange=NSMakeRange(inputRange.location +
337 inputRange.length,
338 0))
277 self.start_new_block()
339 self.start_new_block()
278 return failure
340 return failure
279
341
280
342
281 def _start_cli_banner(self):
343 def _start_cli_banner(self):
282 """Print banner"""
344 """Print banner"""
283
345
284 banner = """IPython1 %s -- An enhanced Interactive Python.""" % \
346 banner = """IPython1 %s -- An enhanced Interactive Python.""" % \
285 IPython.__version__
347 IPython.__version__
286
348
287 self.insert_text(banner + '\n\n')
349 self.insert_text(banner + '\n\n')
288
350
289
351
290 def start_new_block(self):
352 def start_new_block(self):
291 """"""
353 """"""
292
354
293 self.currentBlockID = self.next_block_ID()
355 self.currentBlockID = self.next_block_ID()
356 self.blockRanges[self.currentBlockID] = self.new_cell_block()
357 self.insert_text(self.input_prompt(),
358 textRange=self.current_block_range().inputPromptRange)
294
359
295
360
296
361
297 def next_block_ID(self):
362 def next_block_ID(self):
298
363
299 return uuid.uuid4()
364 return uuid.uuid4()
300
365
366 def new_cell_block(self):
367 """A new CellBlock at the end of self.textView.textStorage()"""
368
369 return CellBlock(NSMakeRange(self.textView.textStorage().length(),
370 0), #len(self.input_prompt())),
371 NSMakeRange(self.textView.textStorage().length(),# + len(self.input_prompt()),
372 0))
373
374
301 def current_block_range(self):
375 def current_block_range(self):
302 return self.blockRanges.get(self.currentBlockID,
376 return self.blockRanges.get(self.currentBlockID,
303 NSMakeRange(self.textView.textStorage().length(),
377 self.new_cell_block())
304 0))
305
378
306 def current_block(self):
379 def current_block(self):
307 """The current block's text"""
380 """The current block's text"""
308
381
309 return self.text_for_range(self.current_block_range())
382 return self.text_for_range(self.current_block_range().inputRange)
310
383
311 def text_for_range(self, textRange):
384 def text_for_range(self, textRange):
312 """text_for_range"""
385 """text_for_range"""
313
386
314 ts = self.textView.textStorage()
387 ts = self.textView.textStorage()
315 return ts.string().substringWithRange_(textRange)
388 return ts.string().substringWithRange_(textRange)
316
389
317 def current_line(self):
390 def current_line(self):
318 block = self.text_for_range(self.current_block_range())
391 block = self.text_for_range(self.current_block_range().inputRange)
319 block = block.split('\n')
392 block = block.split('\n')
320 return block[-1]
393 return block[-1]
321
394
322
395
323 def insert_text(self, string=None, textRange=None, scrollToVisible=True):
396 def insert_text(self, string=None, textRange=None, scrollToVisible=True):
324 """Insert text into textView at textRange, updating blockRanges
397 """Insert text into textView at textRange, updating blockRanges
325 as necessary
398 as necessary
326 """
399 """
327
328 if(textRange == None):
400 if(textRange == None):
329 #range for end of text
401 #range for end of text
330 textRange = NSMakeRange(self.textView.textStorage().length(), 0)
402 textRange = NSMakeRange(self.textView.textStorage().length(), 0)
331
403
332 for r in self.blockRanges.itervalues():
333 intersection = NSIntersectionRange(r,textRange)
334 if(intersection.length == 0): #ranges don't intersect
335 if r.location >= textRange.location:
336 r.location += len(string)
337 else: #ranges intersect
338 if(r.location <= textRange.location):
339 assert(intersection.length == textRange.length)
340 r.length += textRange.length
341 else:
342 r.location += intersection.length
343
404
344 self.textView.replaceCharactersInRange_withString_(
405 self.textView.replaceCharactersInRange_withString_(
345 textRange, string)
406 textRange, string)
346 self.textView.setSelectedRange_(
407
347 NSMakeRange(textRange.location+len(string), 0))
408 for r in self.blockRanges.itervalues():
409 r.update_ranges_for_insertion(string, textRange)
410
411 self.textView.setSelectedRange_(textRange)
348 if(scrollToVisible):
412 if(scrollToVisible):
349 self.textView.scrollRangeToVisible_(textRange)
413 self.textView.scrollRangeToVisible_(textRange)
350
414
351
415
352
416
353
354 def replace_current_block_with_string(self, textView, string):
417 def replace_current_block_with_string(self, textView, string):
355 textView.replaceCharactersInRange_withString_(
418 textView.replaceCharactersInRange_withString_(
356 self.current_block_range(),
419 self.current_block_range().inputRange,
357 string)
420 string)
358 self.current_block_range().length = len(string)
421 self.current_block_range().inputRange.length = len(string)
359 r = NSMakeRange(textView.textStorage().length(), 0)
422 r = NSMakeRange(textView.textStorage().length(), 0)
360 textView.scrollRangeToVisible_(r)
423 textView.scrollRangeToVisible_(r)
361 textView.setSelectedRange_(r)
424 textView.setSelectedRange_(r)
362
425
363
426
364 def current_indent_string(self):
427 def current_indent_string(self):
365 """returns string for indent or None if no indent"""
428 """returns string for indent or None if no indent"""
366
429
367 return self._indent_for_block(self.current_block())
430 return self._indent_for_block(self.current_block())
368
431
369
432
370 def _indent_for_block(self, block):
433 def _indent_for_block(self, block):
371 lines = block.split('\n')
434 lines = block.split('\n')
372 if(len(lines) > 1):
435 if(len(lines) > 1):
373 currentIndent = len(lines[-1]) - len(lines[-1].lstrip())
436 currentIndent = len(lines[-1]) - len(lines[-1].lstrip())
374 if(currentIndent == 0):
437 if(currentIndent == 0):
375 currentIndent = self.tabSpaces
438 currentIndent = self.tabSpaces
376
439
377 if(self.tabUsesSpaces):
440 if(self.tabUsesSpaces):
378 result = ' ' * currentIndent
441 result = ' ' * currentIndent
379 else:
442 else:
380 result = '\t' * (currentIndent/self.tabSpaces)
443 result = '\t' * (currentIndent/self.tabSpaces)
381 else:
444 else:
382 result = None
445 result = None
383
446
384 return result
447 return result
385
448
386
449
387 # NSTextView delegate methods...
450 # NSTextView delegate methods...
388 def textView_doCommandBySelector_(self, textView, selector):
451 def textView_doCommandBySelector_(self, textView, selector):
389 assert(textView == self.textView)
452 assert(textView == self.textView)
390 NSLog("textView_doCommandBySelector_: "+selector)
453 NSLog("textView_doCommandBySelector_: "+selector)
391
454
392
455
393 if(selector == 'insertNewline:'):
456 if(selector == 'insertNewline:'):
394 indent = self.current_indent_string()
457 indent = self.current_indent_string()
395 if(indent):
458 if(indent):
396 line = indent + self.current_line()
459 line = indent + self.current_line()
397 else:
460 else:
398 line = self.current_line()
461 line = self.current_line()
399
462
400 if(self.is_complete(self.current_block())):
463 if(self.is_complete(self.current_block())):
401 self.execute(self.current_block(),
464 self.execute(self.current_block(),
402 blockID=self.currentBlockID)
465 blockID=self.currentBlockID)
403 self.start_new_block()
466 self.start_new_block()
404
467
405 return True
468 return True
406
469
407 return False
470 return False
408
471
409 elif(selector == 'moveUp:'):
472 elif(selector == 'moveUp:'):
410 prevBlock = self.get_history_previous(self.current_block())
473 prevBlock = self.get_history_previous(self.current_block())
411 if(prevBlock != None):
474 if(prevBlock != None):
412 self.replace_current_block_with_string(textView, prevBlock)
475 self.replace_current_block_with_string(textView, prevBlock)
413 else:
476 else:
414 NSBeep()
477 NSBeep()
415 return True
478 return True
416
479
417 elif(selector == 'moveDown:'):
480 elif(selector == 'moveDown:'):
418 nextBlock = self.get_history_next()
481 nextBlock = self.get_history_next()
419 if(nextBlock != None):
482 if(nextBlock != None):
420 self.replace_current_block_with_string(textView, nextBlock)
483 self.replace_current_block_with_string(textView, nextBlock)
421 else:
484 else:
422 NSBeep()
485 NSBeep()
423 return True
486 return True
424
487
425 elif(selector == 'moveToBeginningOfParagraph:'):
488 elif(selector == 'moveToBeginningOfParagraph:'):
426 textView.setSelectedRange_(NSMakeRange(
489 textView.setSelectedRange_(NSMakeRange(
427 self.current_block_range().location,
490 self.current_block_range().inputRange.location,
428 0))
491 0))
429 return True
492 return True
430 elif(selector == 'moveToEndOfParagraph:'):
493 elif(selector == 'moveToEndOfParagraph:'):
431 textView.setSelectedRange_(NSMakeRange(
494 textView.setSelectedRange_(NSMakeRange(
432 self.current_block_range().location + \
495 self.current_block_range().inputRange.location + \
433 self.current_block_range().length, 0))
496 self.current_block_range().inputRange.length, 0))
434 return True
497 return True
435 elif(selector == 'deleteToEndOfParagraph:'):
498 elif(selector == 'deleteToEndOfParagraph:'):
436 if(textView.selectedRange().location <= \
499 if(textView.selectedRange().location <= \
437 self.current_block_range().location):
500 self.current_block_range().location):
438 # Intersect the selected range with the current line range
501 raise NotImplemented()
439 if(self.current_block_range().length < 0):
440 self.blockRanges[self.currentBlockID].length = 0
441
442 r = NSIntersectionRange(textView.rangesForUserTextChange()[0],
443 self.current_block_range())
444
445 if(r.length > 0): #no intersection
446 textView.setSelectedRange_(r)
447
502
448 return False # don't actually handle the delete
503 return False # don't actually handle the delete
449
504
450 elif(selector == 'insertTab:'):
505 elif(selector == 'insertTab:'):
451 if(len(self.current_line().strip()) == 0): #only white space
506 if(len(self.current_line().strip()) == 0): #only white space
452 return False
507 return False
453 else:
508 else:
454 self.textView.complete_(self)
509 self.textView.complete_(self)
455 return True
510 return True
456
511
457 elif(selector == 'deleteBackward:'):
512 elif(selector == 'deleteBackward:'):
458 #if we're at the beginning of the current block, ignore
513 #if we're at the beginning of the current block, ignore
459 if(textView.selectedRange().location == \
514 if(textView.selectedRange().location == \
460 self.current_block_range().location):
515 self.current_block_range().inputRange.location):
461 return True
516 return True
462 else:
517 else:
463 self.current_block_range().length-=1
518 for r in self.blockRanges.itervalues():
519 deleteRange = textView.selectedRange
520 if(deleteRange.length == 0):
521 deleteRange.location -= 1
522 deleteRange.length = 1
523 r.update_ranges_for_deletion(deleteRange)
464 return False
524 return False
465 return False
525 return False
466
526
467
527
468 def textView_shouldChangeTextInRanges_replacementStrings_(self,
528 def textView_shouldChangeTextInRanges_replacementStrings_(self,
469 textView, ranges, replacementStrings):
529 textView, ranges, replacementStrings):
470 """
530 """
471 Delegate method for NSTextView.
531 Delegate method for NSTextView.
472
532
473 Refuse change text in ranges not at end, but make those changes at
533 Refuse change text in ranges not at end, but make those changes at
474 end.
534 end.
475 """
535 """
476
536
477 assert(len(ranges) == len(replacementStrings))
537 assert(len(ranges) == len(replacementStrings))
478 allow = True
538 allow = True
479 for r,s in zip(ranges, replacementStrings):
539 for r,s in zip(ranges, replacementStrings):
480 r = r.rangeValue()
540 r = r.rangeValue()
481 if(textView.textStorage().length() > 0 and
541 if(textView.textStorage().length() > 0 and
482 r.location < self.current_block_range().location):
542 r.location < self.current_block_range().inputRange.location):
483 self.insert_text(s)
543 self.insert_text(s)
484 allow = False
544 allow = False
485
545
486
487 self.blockRanges.setdefault(self.currentBlockID,
488 self.current_block_range()).length +=\
489 len(s)
490
491 return allow
546 return allow
492
547
493 def textView_completions_forPartialWordRange_indexOfSelectedItem_(self,
548 def textView_completions_forPartialWordRange_indexOfSelectedItem_(self,
494 textView, words, charRange, index):
549 textView, words, charRange, index):
495 try:
550 try:
496 ts = textView.textStorage()
551 ts = textView.textStorage()
497 token = ts.string().substringWithRange_(charRange)
552 token = ts.string().substringWithRange_(charRange)
498 completions = blockingCallFromThread(self.complete, token)
553 completions = blockingCallFromThread(self.complete, token)
499 except:
554 except:
500 completions = objc.nil
555 completions = objc.nil
501 NSBeep()
556 NSBeep()
502
557
503 return (completions,0)
558 return (completions,0)
504
559
505
560
This diff has been collapsed as it changes many lines, (1033 lines changed) Show them Hide them
@@ -1,3423 +1,3424
1 <?xml version="1.0" encoding="UTF-8"?>
1 <?xml version="1.0" encoding="UTF-8"?>
2 <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.01">
2 <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.01">
3 <data>
3 <data>
4 <int key="IBDocument.SystemTarget">1050</int>
4 <int key="IBDocument.SystemTarget">1050</int>
5 <string key="IBDocument.SystemVersion">9D34</string>
5 <string key="IBDocument.SystemVersion">9D34</string>
6 <string key="IBDocument.InterfaceBuilderVersion">629</string>
6 <string key="IBDocument.InterfaceBuilderVersion">629</string>
7 <string key="IBDocument.AppKitVersion">949.33</string>
7 <string key="IBDocument.AppKitVersion">949.33</string>
8 <string key="IBDocument.HIToolboxVersion">352.00</string>
8 <string key="IBDocument.HIToolboxVersion">352.00</string>
9 <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
9 <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
10 <bool key="EncodedWithXMLCoder">YES</bool>
10 <bool key="EncodedWithXMLCoder">YES</bool>
11 <integer value="416"/>
11 <integer value="416"/>
12 <integer value="29"/>
12 <integer value="29"/>
13 </object>
13 </object>
14 <object class="NSArray" key="IBDocument.PluginDependencies">
14 <object class="NSArray" key="IBDocument.PluginDependencies">
15 <bool key="EncodedWithXMLCoder">YES</bool>
15 <bool key="EncodedWithXMLCoder">YES</bool>
16 <string id="885801228">com.apple.InterfaceBuilderKit</string>
16 <string id="885801228">com.apple.InterfaceBuilderKit</string>
17 <string id="113577022">com.apple.InterfaceBuilder.CocoaPlugin</string>
17 <string id="113577022">com.apple.InterfaceBuilder.CocoaPlugin</string>
18 </object>
18 </object>
19 <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
19 <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
20 <bool key="EncodedWithXMLCoder">YES</bool>
20 <bool key="EncodedWithXMLCoder">YES</bool>
21 <object class="NSCustomObject" id="1021">
21 <object class="NSCustomObject" id="1021">
22 <string key="NSClassName" id="190635311">NSApplication</string>
22 <string key="NSClassName" id="190635311">NSApplication</string>
23 </object>
23 </object>
24 <object class="NSCustomObject" id="1014">
24 <object class="NSCustomObject" id="1014">
25 <string key="NSClassName">FirstResponder</string>
25 <string key="NSClassName">FirstResponder</string>
26 </object>
26 </object>
27 <object class="NSCustomObject" id="1050">
27 <object class="NSCustomObject" id="1050">
28 <reference key="NSClassName" ref="190635311"/>
28 <reference key="NSClassName" ref="190635311"/>
29 </object>
29 </object>
30 <object class="NSMenu" id="649796088">
30 <object class="NSMenu" id="649796088">
31 <string key="NSTitle">AMainMenu</string>
31 <string key="NSTitle">AMainMenu</string>
32 <object class="NSMutableArray" key="NSMenuItems">
32 <object class="NSMutableArray" key="NSMenuItems">
33 <bool key="EncodedWithXMLCoder">YES</bool>
33 <bool key="EncodedWithXMLCoder">YES</bool>
34 <object class="NSMenuItem" id="694149608">
34 <object class="NSMenuItem" id="694149608">
35 <reference key="NSMenu" ref="649796088"/>
35 <reference key="NSMenu" ref="649796088"/>
36 <string key="NSTitle" id="837240250">IPython1Sandbox</string>
36 <string key="NSTitle" id="837240250">IPython1Sandbox</string>
37 <string key="NSKeyEquiv" id="255189770"/>
37 <string key="NSKeyEquiv" id="255189770"/>
38 <int key="NSKeyEquivModMask">1048576</int>
38 <int key="NSKeyEquivModMask">1048576</int>
39 <int key="NSMnemonicLoc">2147483647</int>
39 <int key="NSMnemonicLoc">2147483647</int>
40 <object class="NSCustomResource" key="NSOnImage" id="985281305">
40 <object class="NSCustomResource" key="NSOnImage" id="271266416">
41 <string key="NSClassName" id="60114142">NSImage</string>
41 <string key="NSClassName" id="375865337">NSImage</string>
42 <string key="NSResourceName">NSMenuCheckmark</string>
42 <string key="NSResourceName">NSMenuCheckmark</string>
43 </object>
43 </object>
44 <object class="NSCustomResource" key="NSMixedImage" id="351279908">
44 <object class="NSCustomResource" key="NSMixedImage" id="508123839">
45 <reference key="NSClassName" ref="60114142"/>
45 <reference key="NSClassName" ref="375865337"/>
46 <string key="NSResourceName">NSMenuMixedState</string>
46 <string key="NSResourceName">NSMenuMixedState</string>
47 </object>
47 </object>
48 <string key="NSAction">submenuAction:</string>
48 <string key="NSAction">submenuAction:</string>
49 <object class="NSMenu" key="NSSubmenu" id="110575045">
49 <object class="NSMenu" key="NSSubmenu" id="110575045">
50 <reference key="NSTitle" ref="837240250"/>
50 <reference key="NSTitle" ref="837240250"/>
51 <object class="NSMutableArray" key="NSMenuItems">
51 <object class="NSMutableArray" key="NSMenuItems">
52 <bool key="EncodedWithXMLCoder">YES</bool>
52 <bool key="EncodedWithXMLCoder">YES</bool>
53 <object class="NSMenuItem" id="238522557">
53 <object class="NSMenuItem" id="238522557">
54 <reference key="NSMenu" ref="110575045"/>
54 <reference key="NSMenu" ref="110575045"/>
55 <string key="NSTitle">About IPython1Sandbox</string>
55 <string key="NSTitle">About IPython1Sandbox</string>
56 <reference key="NSKeyEquiv" ref="255189770"/>
56 <reference key="NSKeyEquiv" ref="255189770"/>
57 <int key="NSMnemonicLoc">2147483647</int>
57 <int key="NSMnemonicLoc">2147483647</int>
58 <reference key="NSOnImage" ref="985281305"/>
58 <reference key="NSOnImage" ref="271266416"/>
59 <reference key="NSMixedImage" ref="351279908"/>
59 <reference key="NSMixedImage" ref="508123839"/>
60 </object>
60 </object>
61 <object class="NSMenuItem" id="304266470">
61 <object class="NSMenuItem" id="304266470">
62 <reference key="NSMenu" ref="110575045"/>
62 <reference key="NSMenu" ref="110575045"/>
63 <bool key="NSIsDisabled">YES</bool>
63 <bool key="NSIsDisabled">YES</bool>
64 <bool key="NSIsSeparator">YES</bool>
64 <bool key="NSIsSeparator">YES</bool>
65 <reference key="NSTitle" ref="255189770"/>
65 <reference key="NSTitle" ref="255189770"/>
66 <reference key="NSKeyEquiv" ref="255189770"/>
66 <reference key="NSKeyEquiv" ref="255189770"/>
67 <int key="NSKeyEquivModMask">1048576</int>
67 <int key="NSKeyEquivModMask">1048576</int>
68 <int key="NSMnemonicLoc">2147483647</int>
68 <int key="NSMnemonicLoc">2147483647</int>
69 <reference key="NSOnImage" ref="985281305"/>
69 <reference key="NSOnImage" ref="271266416"/>
70 <reference key="NSMixedImage" ref="351279908"/>
70 <reference key="NSMixedImage" ref="508123839"/>
71 </object>
71 </object>
72 <object class="NSMenuItem" id="609285721">
72 <object class="NSMenuItem" id="609285721">
73 <reference key="NSMenu" ref="110575045"/>
73 <reference key="NSMenu" ref="110575045"/>
74 <string type="base64-UTF8" key="NSTitle">UHJlZmVyZW5jZXPigKY</string>
74 <string type="base64-UTF8" key="NSTitle">UHJlZmVyZW5jZXPigKY</string>
75 <string key="NSKeyEquiv">,</string>
75 <string key="NSKeyEquiv">,</string>
76 <int key="NSKeyEquivModMask">1048576</int>
76 <int key="NSKeyEquivModMask">1048576</int>
77 <int key="NSMnemonicLoc">2147483647</int>
77 <int key="NSMnemonicLoc">2147483647</int>
78 <reference key="NSOnImage" ref="985281305"/>
78 <reference key="NSOnImage" ref="271266416"/>
79 <reference key="NSMixedImage" ref="351279908"/>
79 <reference key="NSMixedImage" ref="508123839"/>
80 </object>
80 </object>
81 <object class="NSMenuItem" id="481834944">
81 <object class="NSMenuItem" id="481834944">
82 <reference key="NSMenu" ref="110575045"/>
82 <reference key="NSMenu" ref="110575045"/>
83 <bool key="NSIsDisabled">YES</bool>
83 <bool key="NSIsDisabled">YES</bool>
84 <bool key="NSIsSeparator">YES</bool>
84 <bool key="NSIsSeparator">YES</bool>
85 <reference key="NSTitle" ref="255189770"/>
85 <reference key="NSTitle" ref="255189770"/>
86 <reference key="NSKeyEquiv" ref="255189770"/>
86 <reference key="NSKeyEquiv" ref="255189770"/>
87 <int key="NSKeyEquivModMask">1048576</int>
87 <int key="NSKeyEquivModMask">1048576</int>
88 <int key="NSMnemonicLoc">2147483647</int>
88 <int key="NSMnemonicLoc">2147483647</int>
89 <reference key="NSOnImage" ref="985281305"/>
89 <reference key="NSOnImage" ref="271266416"/>
90 <reference key="NSMixedImage" ref="351279908"/>
90 <reference key="NSMixedImage" ref="508123839"/>
91 </object>
91 </object>
92 <object class="NSMenuItem" id="1046388886">
92 <object class="NSMenuItem" id="1046388886">
93 <reference key="NSMenu" ref="110575045"/>
93 <reference key="NSMenu" ref="110575045"/>
94 <string key="NSTitle" id="642338826">Services</string>
94 <string key="NSTitle" id="642338826">Services</string>
95 <reference key="NSKeyEquiv" ref="255189770"/>
95 <reference key="NSKeyEquiv" ref="255189770"/>
96 <int key="NSKeyEquivModMask">1048576</int>
96 <int key="NSKeyEquivModMask">1048576</int>
97 <int key="NSMnemonicLoc">2147483647</int>
97 <int key="NSMnemonicLoc">2147483647</int>
98 <reference key="NSOnImage" ref="985281305"/>
98 <reference key="NSOnImage" ref="271266416"/>
99 <reference key="NSMixedImage" ref="351279908"/>
99 <reference key="NSMixedImage" ref="508123839"/>
100 <string key="NSAction">submenuAction:</string>
100 <string key="NSAction">submenuAction:</string>
101 <object class="NSMenu" key="NSSubmenu" id="752062318">
101 <object class="NSMenu" key="NSSubmenu" id="752062318">
102 <reference key="NSTitle" ref="642338826"/>
102 <reference key="NSTitle" ref="642338826"/>
103 <object class="NSMutableArray" key="NSMenuItems">
103 <object class="NSMutableArray" key="NSMenuItems">
104 <bool key="EncodedWithXMLCoder">YES</bool>
104 <bool key="EncodedWithXMLCoder">YES</bool>
105 </object>
105 </object>
106 <string key="NSName">_NSServicesMenu</string>
106 <string key="NSName">_NSServicesMenu</string>
107 </object>
107 </object>
108 </object>
108 </object>
109 <object class="NSMenuItem" id="646227648">
109 <object class="NSMenuItem" id="646227648">
110 <reference key="NSMenu" ref="110575045"/>
110 <reference key="NSMenu" ref="110575045"/>
111 <bool key="NSIsDisabled">YES</bool>
111 <bool key="NSIsDisabled">YES</bool>
112 <bool key="NSIsSeparator">YES</bool>
112 <bool key="NSIsSeparator">YES</bool>
113 <reference key="NSTitle" ref="255189770"/>
113 <reference key="NSTitle" ref="255189770"/>
114 <reference key="NSKeyEquiv" ref="255189770"/>
114 <reference key="NSKeyEquiv" ref="255189770"/>
115 <int key="NSKeyEquivModMask">1048576</int>
115 <int key="NSKeyEquivModMask">1048576</int>
116 <int key="NSMnemonicLoc">2147483647</int>
116 <int key="NSMnemonicLoc">2147483647</int>
117 <reference key="NSOnImage" ref="985281305"/>
117 <reference key="NSOnImage" ref="271266416"/>
118 <reference key="NSMixedImage" ref="351279908"/>
118 <reference key="NSMixedImage" ref="508123839"/>
119 </object>
119 </object>
120 <object class="NSMenuItem" id="755159360">
120 <object class="NSMenuItem" id="755159360">
121 <reference key="NSMenu" ref="110575045"/>
121 <reference key="NSMenu" ref="110575045"/>
122 <string key="NSTitle">Hide IPython1Sandbox</string>
122 <string key="NSTitle">Hide IPython1Sandbox</string>
123 <string key="NSKeyEquiv" id="940330891">h</string>
123 <string key="NSKeyEquiv" id="940330891">h</string>
124 <int key="NSKeyEquivModMask">1048576</int>
124 <int key="NSKeyEquivModMask">1048576</int>
125 <int key="NSMnemonicLoc">2147483647</int>
125 <int key="NSMnemonicLoc">2147483647</int>
126 <reference key="NSOnImage" ref="985281305"/>
126 <reference key="NSOnImage" ref="271266416"/>
127 <reference key="NSMixedImage" ref="351279908"/>
127 <reference key="NSMixedImage" ref="508123839"/>
128 </object>
128 </object>
129 <object class="NSMenuItem" id="342932134">
129 <object class="NSMenuItem" id="342932134">
130 <reference key="NSMenu" ref="110575045"/>
130 <reference key="NSMenu" ref="110575045"/>
131 <string key="NSTitle">Hide Others</string>
131 <string key="NSTitle">Hide Others</string>
132 <reference key="NSKeyEquiv" ref="940330891"/>
132 <reference key="NSKeyEquiv" ref="940330891"/>
133 <int key="NSKeyEquivModMask">1572864</int>
133 <int key="NSKeyEquivModMask">1572864</int>
134 <int key="NSMnemonicLoc">2147483647</int>
134 <int key="NSMnemonicLoc">2147483647</int>
135 <reference key="NSOnImage" ref="985281305"/>
135 <reference key="NSOnImage" ref="271266416"/>
136 <reference key="NSMixedImage" ref="351279908"/>
136 <reference key="NSMixedImage" ref="508123839"/>
137 </object>
137 </object>
138 <object class="NSMenuItem" id="908899353">
138 <object class="NSMenuItem" id="908899353">
139 <reference key="NSMenu" ref="110575045"/>
139 <reference key="NSMenu" ref="110575045"/>
140 <string key="NSTitle">Show All</string>
140 <string key="NSTitle">Show All</string>
141 <reference key="NSKeyEquiv" ref="255189770"/>
141 <reference key="NSKeyEquiv" ref="255189770"/>
142 <int key="NSKeyEquivModMask">1048576</int>
142 <int key="NSKeyEquivModMask">1048576</int>
143 <int key="NSMnemonicLoc">2147483647</int>
143 <int key="NSMnemonicLoc">2147483647</int>
144 <reference key="NSOnImage" ref="985281305"/>
144 <reference key="NSOnImage" ref="271266416"/>
145 <reference key="NSMixedImage" ref="351279908"/>
145 <reference key="NSMixedImage" ref="508123839"/>
146 </object>
146 </object>
147 <object class="NSMenuItem" id="1056857174">
147 <object class="NSMenuItem" id="1056857174">
148 <reference key="NSMenu" ref="110575045"/>
148 <reference key="NSMenu" ref="110575045"/>
149 <bool key="NSIsDisabled">YES</bool>
149 <bool key="NSIsDisabled">YES</bool>
150 <bool key="NSIsSeparator">YES</bool>
150 <bool key="NSIsSeparator">YES</bool>
151 <reference key="NSTitle" ref="255189770"/>
151 <reference key="NSTitle" ref="255189770"/>
152 <reference key="NSKeyEquiv" ref="255189770"/>
152 <reference key="NSKeyEquiv" ref="255189770"/>
153 <int key="NSKeyEquivModMask">1048576</int>
153 <int key="NSKeyEquivModMask">1048576</int>
154 <int key="NSMnemonicLoc">2147483647</int>
154 <int key="NSMnemonicLoc">2147483647</int>
155 <reference key="NSOnImage" ref="985281305"/>
155 <reference key="NSOnImage" ref="271266416"/>
156 <reference key="NSMixedImage" ref="351279908"/>
156 <reference key="NSMixedImage" ref="508123839"/>
157 </object>
157 </object>
158 <object class="NSMenuItem" id="632727374">
158 <object class="NSMenuItem" id="632727374">
159 <reference key="NSMenu" ref="110575045"/>
159 <reference key="NSMenu" ref="110575045"/>
160 <string key="NSTitle">Quit IPython1Sandbox</string>
160 <string key="NSTitle">Quit IPython1Sandbox</string>
161 <string key="NSKeyEquiv">q</string>
161 <string key="NSKeyEquiv">q</string>
162 <int key="NSKeyEquivModMask">1048576</int>
162 <int key="NSKeyEquivModMask">1048576</int>
163 <int key="NSMnemonicLoc">2147483647</int>
163 <int key="NSMnemonicLoc">2147483647</int>
164 <reference key="NSOnImage" ref="985281305"/>
164 <reference key="NSOnImage" ref="271266416"/>
165 <reference key="NSMixedImage" ref="351279908"/>
165 <reference key="NSMixedImage" ref="508123839"/>
166 </object>
166 </object>
167 </object>
167 </object>
168 <string key="NSName">_NSAppleMenu</string>
168 <string key="NSName">_NSAppleMenu</string>
169 </object>
169 </object>
170 </object>
170 </object>
171 <object class="NSMenuItem" id="379814623">
171 <object class="NSMenuItem" id="379814623">
172 <reference key="NSMenu" ref="649796088"/>
172 <reference key="NSMenu" ref="649796088"/>
173 <string key="NSTitle" id="881404960">File</string>
173 <string key="NSTitle" id="881404960">File</string>
174 <reference key="NSKeyEquiv" ref="255189770"/>
174 <reference key="NSKeyEquiv" ref="255189770"/>
175 <int key="NSKeyEquivModMask">1048576</int>
175 <int key="NSKeyEquivModMask">1048576</int>
176 <int key="NSMnemonicLoc">2147483647</int>
176 <int key="NSMnemonicLoc">2147483647</int>
177 <reference key="NSOnImage" ref="985281305"/>
177 <reference key="NSOnImage" ref="271266416"/>
178 <reference key="NSMixedImage" ref="351279908"/>
178 <reference key="NSMixedImage" ref="508123839"/>
179 <string key="NSAction">submenuAction:</string>
179 <string key="NSAction">submenuAction:</string>
180 <object class="NSMenu" key="NSSubmenu" id="720053764">
180 <object class="NSMenu" key="NSSubmenu" id="720053764">
181 <reference key="NSTitle" ref="881404960"/>
181 <reference key="NSTitle" ref="881404960"/>
182 <object class="NSMutableArray" key="NSMenuItems">
182 <object class="NSMutableArray" key="NSMenuItems">
183 <bool key="EncodedWithXMLCoder">YES</bool>
183 <bool key="EncodedWithXMLCoder">YES</bool>
184 <object class="NSMenuItem" id="705341025">
184 <object class="NSMenuItem" id="705341025">
185 <reference key="NSMenu" ref="720053764"/>
185 <reference key="NSMenu" ref="720053764"/>
186 <string key="NSTitle">New</string>
186 <string key="NSTitle">New</string>
187 <string key="NSKeyEquiv">n</string>
187 <string key="NSKeyEquiv">n</string>
188 <int key="NSKeyEquivModMask">1048576</int>
188 <int key="NSKeyEquivModMask">1048576</int>
189 <int key="NSMnemonicLoc">2147483647</int>
189 <int key="NSMnemonicLoc">2147483647</int>
190 <reference key="NSOnImage" ref="985281305"/>
190 <reference key="NSOnImage" ref="271266416"/>
191 <reference key="NSMixedImage" ref="351279908"/>
191 <reference key="NSMixedImage" ref="508123839"/>
192 </object>
192 </object>
193 <object class="NSMenuItem" id="722745758">
193 <object class="NSMenuItem" id="722745758">
194 <reference key="NSMenu" ref="720053764"/>
194 <reference key="NSMenu" ref="720053764"/>
195 <string type="base64-UTF8" key="NSTitle">T3BlbuKApg</string>
195 <string type="base64-UTF8" key="NSTitle">T3BlbuKApg</string>
196 <string key="NSKeyEquiv">o</string>
196 <string key="NSKeyEquiv">o</string>
197 <int key="NSKeyEquivModMask">1048576</int>
197 <int key="NSKeyEquivModMask">1048576</int>
198 <int key="NSMnemonicLoc">2147483647</int>
198 <int key="NSMnemonicLoc">2147483647</int>
199 <reference key="NSOnImage" ref="985281305"/>
199 <reference key="NSOnImage" ref="271266416"/>
200 <reference key="NSMixedImage" ref="351279908"/>
200 <reference key="NSMixedImage" ref="508123839"/>
201 </object>
201 </object>
202 <object class="NSMenuItem" id="1025936716">
202 <object class="NSMenuItem" id="1025936716">
203 <reference key="NSMenu" ref="720053764"/>
203 <reference key="NSMenu" ref="720053764"/>
204 <string key="NSTitle" id="975517829">Open Recent</string>
204 <string key="NSTitle" id="975517829">Open Recent</string>
205 <reference key="NSKeyEquiv" ref="255189770"/>
205 <reference key="NSKeyEquiv" ref="255189770"/>
206 <int key="NSKeyEquivModMask">1048576</int>
206 <int key="NSKeyEquivModMask">1048576</int>
207 <int key="NSMnemonicLoc">2147483647</int>
207 <int key="NSMnemonicLoc">2147483647</int>
208 <reference key="NSOnImage" ref="985281305"/>
208 <reference key="NSOnImage" ref="271266416"/>
209 <reference key="NSMixedImage" ref="351279908"/>
209 <reference key="NSMixedImage" ref="508123839"/>
210 <string key="NSAction">submenuAction:</string>
210 <string key="NSAction">submenuAction:</string>
211 <object class="NSMenu" key="NSSubmenu" id="1065607017">
211 <object class="NSMenu" key="NSSubmenu" id="1065607017">
212 <reference key="NSTitle" ref="975517829"/>
212 <reference key="NSTitle" ref="975517829"/>
213 <object class="NSMutableArray" key="NSMenuItems">
213 <object class="NSMutableArray" key="NSMenuItems">
214 <bool key="EncodedWithXMLCoder">YES</bool>
214 <bool key="EncodedWithXMLCoder">YES</bool>
215 <object class="NSMenuItem" id="759406840">
215 <object class="NSMenuItem" id="759406840">
216 <reference key="NSMenu" ref="1065607017"/>
216 <reference key="NSMenu" ref="1065607017"/>
217 <string key="NSTitle">Clear Menu</string>
217 <string key="NSTitle">Clear Menu</string>
218 <reference key="NSKeyEquiv" ref="255189770"/>
218 <reference key="NSKeyEquiv" ref="255189770"/>
219 <int key="NSKeyEquivModMask">1048576</int>
219 <int key="NSKeyEquivModMask">1048576</int>
220 <int key="NSMnemonicLoc">2147483647</int>
220 <int key="NSMnemonicLoc">2147483647</int>
221 <reference key="NSOnImage" ref="985281305"/>
221 <reference key="NSOnImage" ref="271266416"/>
222 <reference key="NSMixedImage" ref="351279908"/>
222 <reference key="NSMixedImage" ref="508123839"/>
223 </object>
223 </object>
224 </object>
224 </object>
225 <string key="NSName">_NSRecentDocumentsMenu</string>
225 <string key="NSName">_NSRecentDocumentsMenu</string>
226 </object>
226 </object>
227 </object>
227 </object>
228 <object class="NSMenuItem" id="425164168">
228 <object class="NSMenuItem" id="425164168">
229 <reference key="NSMenu" ref="720053764"/>
229 <reference key="NSMenu" ref="720053764"/>
230 <bool key="NSIsDisabled">YES</bool>
230 <bool key="NSIsDisabled">YES</bool>
231 <bool key="NSIsSeparator">YES</bool>
231 <bool key="NSIsSeparator">YES</bool>
232 <reference key="NSTitle" ref="255189770"/>
232 <reference key="NSTitle" ref="255189770"/>
233 <reference key="NSKeyEquiv" ref="255189770"/>
233 <reference key="NSKeyEquiv" ref="255189770"/>
234 <int key="NSKeyEquivModMask">1048576</int>
234 <int key="NSKeyEquivModMask">1048576</int>
235 <int key="NSMnemonicLoc">2147483647</int>
235 <int key="NSMnemonicLoc">2147483647</int>
236 <reference key="NSOnImage" ref="985281305"/>
236 <reference key="NSOnImage" ref="271266416"/>
237 <reference key="NSMixedImage" ref="351279908"/>
237 <reference key="NSMixedImage" ref="508123839"/>
238 </object>
238 </object>
239 <object class="NSMenuItem" id="776162233">
239 <object class="NSMenuItem" id="776162233">
240 <reference key="NSMenu" ref="720053764"/>
240 <reference key="NSMenu" ref="720053764"/>
241 <string key="NSTitle">Close</string>
241 <string key="NSTitle">Close</string>
242 <string key="NSKeyEquiv">w</string>
242 <string key="NSKeyEquiv">w</string>
243 <int key="NSKeyEquivModMask">1048576</int>
243 <int key="NSKeyEquivModMask">1048576</int>
244 <int key="NSMnemonicLoc">2147483647</int>
244 <int key="NSMnemonicLoc">2147483647</int>
245 <reference key="NSOnImage" ref="985281305"/>
245 <reference key="NSOnImage" ref="271266416"/>
246 <reference key="NSMixedImage" ref="351279908"/>
246 <reference key="NSMixedImage" ref="508123839"/>
247 </object>
247 </object>
248 <object class="NSMenuItem" id="1023925487">
248 <object class="NSMenuItem" id="1023925487">
249 <reference key="NSMenu" ref="720053764"/>
249 <reference key="NSMenu" ref="720053764"/>
250 <string key="NSTitle">Save</string>
250 <string key="NSTitle">Save</string>
251 <string key="NSKeyEquiv">s</string>
251 <string key="NSKeyEquiv">s</string>
252 <int key="NSKeyEquivModMask">1048576</int>
252 <int key="NSKeyEquivModMask">1048576</int>
253 <int key="NSMnemonicLoc">2147483647</int>
253 <int key="NSMnemonicLoc">2147483647</int>
254 <reference key="NSOnImage" ref="985281305"/>
254 <reference key="NSOnImage" ref="271266416"/>
255 <reference key="NSMixedImage" ref="351279908"/>
255 <reference key="NSMixedImage" ref="508123839"/>
256 </object>
256 </object>
257 <object class="NSMenuItem" id="117038363">
257 <object class="NSMenuItem" id="117038363">
258 <reference key="NSMenu" ref="720053764"/>
258 <reference key="NSMenu" ref="720053764"/>
259 <string type="base64-UTF8" key="NSTitle">U2F2ZSBBc+KApg</string>
259 <string type="base64-UTF8" key="NSTitle">U2F2ZSBBc+KApg</string>
260 <string key="NSKeyEquiv">S</string>
260 <string key="NSKeyEquiv">S</string>
261 <int key="NSKeyEquivModMask">1179648</int>
261 <int key="NSKeyEquivModMask">1179648</int>
262 <int key="NSMnemonicLoc">2147483647</int>
262 <int key="NSMnemonicLoc">2147483647</int>
263 <reference key="NSOnImage" ref="985281305"/>
263 <reference key="NSOnImage" ref="271266416"/>
264 <reference key="NSMixedImage" ref="351279908"/>
264 <reference key="NSMixedImage" ref="508123839"/>
265 </object>
265 </object>
266 <object class="NSMenuItem" id="579971712">
266 <object class="NSMenuItem" id="579971712">
267 <reference key="NSMenu" ref="720053764"/>
267 <reference key="NSMenu" ref="720053764"/>
268 <string key="NSTitle">Revert to Saved</string>
268 <string key="NSTitle">Revert to Saved</string>
269 <reference key="NSKeyEquiv" ref="255189770"/>
269 <reference key="NSKeyEquiv" ref="255189770"/>
270 <int key="NSMnemonicLoc">2147483647</int>
270 <int key="NSMnemonicLoc">2147483647</int>
271 <reference key="NSOnImage" ref="985281305"/>
271 <reference key="NSOnImage" ref="271266416"/>
272 <reference key="NSMixedImage" ref="351279908"/>
272 <reference key="NSMixedImage" ref="508123839"/>
273 </object>
273 </object>
274 <object class="NSMenuItem" id="1010469920">
274 <object class="NSMenuItem" id="1010469920">
275 <reference key="NSMenu" ref="720053764"/>
275 <reference key="NSMenu" ref="720053764"/>
276 <bool key="NSIsDisabled">YES</bool>
276 <bool key="NSIsDisabled">YES</bool>
277 <bool key="NSIsSeparator">YES</bool>
277 <bool key="NSIsSeparator">YES</bool>
278 <reference key="NSTitle" ref="255189770"/>
278 <reference key="NSTitle" ref="255189770"/>
279 <reference key="NSKeyEquiv" ref="255189770"/>
279 <reference key="NSKeyEquiv" ref="255189770"/>
280 <int key="NSKeyEquivModMask">1048576</int>
280 <int key="NSKeyEquivModMask">1048576</int>
281 <int key="NSMnemonicLoc">2147483647</int>
281 <int key="NSMnemonicLoc">2147483647</int>
282 <reference key="NSOnImage" ref="985281305"/>
282 <reference key="NSOnImage" ref="271266416"/>
283 <reference key="NSMixedImage" ref="351279908"/>
283 <reference key="NSMixedImage" ref="508123839"/>
284 </object>
284 </object>
285 <object class="NSMenuItem" id="294629803">
285 <object class="NSMenuItem" id="294629803">
286 <reference key="NSMenu" ref="720053764"/>
286 <reference key="NSMenu" ref="720053764"/>
287 <string key="NSTitle">Page Setup...</string>
287 <string key="NSTitle">Page Setup...</string>
288 <string key="NSKeyEquiv">P</string>
288 <string key="NSKeyEquiv">P</string>
289 <int key="NSKeyEquivModMask">1179648</int>
289 <int key="NSKeyEquivModMask">1179648</int>
290 <int key="NSMnemonicLoc">2147483647</int>
290 <int key="NSMnemonicLoc">2147483647</int>
291 <reference key="NSOnImage" ref="985281305"/>
291 <reference key="NSOnImage" ref="271266416"/>
292 <reference key="NSMixedImage" ref="351279908"/>
292 <reference key="NSMixedImage" ref="508123839"/>
293 <reference key="NSToolTip" ref="255189770"/>
293 <reference key="NSToolTip" ref="255189770"/>
294 </object>
294 </object>
295 <object class="NSMenuItem" id="49223823">
295 <object class="NSMenuItem" id="49223823">
296 <reference key="NSMenu" ref="720053764"/>
296 <reference key="NSMenu" ref="720053764"/>
297 <string type="base64-UTF8" key="NSTitle">UHJpbnTigKY</string>
297 <string type="base64-UTF8" key="NSTitle">UHJpbnTigKY</string>
298 <string key="NSKeyEquiv">p</string>
298 <string key="NSKeyEquiv">p</string>
299 <int key="NSKeyEquivModMask">1048576</int>
299 <int key="NSKeyEquivModMask">1048576</int>
300 <int key="NSMnemonicLoc">2147483647</int>
300 <int key="NSMnemonicLoc">2147483647</int>
301 <reference key="NSOnImage" ref="985281305"/>
301 <reference key="NSOnImage" ref="271266416"/>
302 <reference key="NSMixedImage" ref="351279908"/>
302 <reference key="NSMixedImage" ref="508123839"/>
303 </object>
303 </object>
304 </object>
304 </object>
305 </object>
305 </object>
306 </object>
306 </object>
307 <object class="NSMenuItem" id="952259628">
307 <object class="NSMenuItem" id="952259628">
308 <reference key="NSMenu" ref="649796088"/>
308 <reference key="NSMenu" ref="649796088"/>
309 <string key="NSTitle" id="1037326483">Edit</string>
309 <string key="NSTitle" id="1037326483">Edit</string>
310 <reference key="NSKeyEquiv" ref="255189770"/>
310 <reference key="NSKeyEquiv" ref="255189770"/>
311 <int key="NSKeyEquivModMask">1048576</int>
311 <int key="NSKeyEquivModMask">1048576</int>
312 <int key="NSMnemonicLoc">2147483647</int>
312 <int key="NSMnemonicLoc">2147483647</int>
313 <reference key="NSOnImage" ref="985281305"/>
313 <reference key="NSOnImage" ref="271266416"/>
314 <reference key="NSMixedImage" ref="351279908"/>
314 <reference key="NSMixedImage" ref="508123839"/>
315 <string key="NSAction">submenuAction:</string>
315 <string key="NSAction">submenuAction:</string>
316 <object class="NSMenu" key="NSSubmenu" id="789758025">
316 <object class="NSMenu" key="NSSubmenu" id="789758025">
317 <reference key="NSTitle" ref="1037326483"/>
317 <reference key="NSTitle" ref="1037326483"/>
318 <object class="NSMutableArray" key="NSMenuItems">
318 <object class="NSMutableArray" key="NSMenuItems">
319 <bool key="EncodedWithXMLCoder">YES</bool>
319 <bool key="EncodedWithXMLCoder">YES</bool>
320 <object class="NSMenuItem" id="1058277027">
320 <object class="NSMenuItem" id="1058277027">
321 <reference key="NSMenu" ref="789758025"/>
321 <reference key="NSMenu" ref="789758025"/>
322 <string key="NSTitle">Undo</string>
322 <string key="NSTitle">Undo</string>
323 <string key="NSKeyEquiv">z</string>
323 <string key="NSKeyEquiv">z</string>
324 <int key="NSKeyEquivModMask">1048576</int>
324 <int key="NSKeyEquivModMask">1048576</int>
325 <int key="NSMnemonicLoc">2147483647</int>
325 <int key="NSMnemonicLoc">2147483647</int>
326 <reference key="NSOnImage" ref="985281305"/>
326 <reference key="NSOnImage" ref="271266416"/>
327 <reference key="NSMixedImage" ref="351279908"/>
327 <reference key="NSMixedImage" ref="508123839"/>
328 </object>
328 </object>
329 <object class="NSMenuItem" id="790794224">
329 <object class="NSMenuItem" id="790794224">
330 <reference key="NSMenu" ref="789758025"/>
330 <reference key="NSMenu" ref="789758025"/>
331 <string key="NSTitle">Redo</string>
331 <string key="NSTitle">Redo</string>
332 <string key="NSKeyEquiv">Z</string>
332 <string key="NSKeyEquiv">Z</string>
333 <int key="NSKeyEquivModMask">1179648</int>
333 <int key="NSKeyEquivModMask">1179648</int>
334 <int key="NSMnemonicLoc">2147483647</int>
334 <int key="NSMnemonicLoc">2147483647</int>
335 <reference key="NSOnImage" ref="985281305"/>
335 <reference key="NSOnImage" ref="271266416"/>
336 <reference key="NSMixedImage" ref="351279908"/>
336 <reference key="NSMixedImage" ref="508123839"/>
337 </object>
337 </object>
338 <object class="NSMenuItem" id="1040322652">
338 <object class="NSMenuItem" id="1040322652">
339 <reference key="NSMenu" ref="789758025"/>
339 <reference key="NSMenu" ref="789758025"/>
340 <bool key="NSIsDisabled">YES</bool>
340 <bool key="NSIsDisabled">YES</bool>
341 <bool key="NSIsSeparator">YES</bool>
341 <bool key="NSIsSeparator">YES</bool>
342 <reference key="NSTitle" ref="255189770"/>
342 <reference key="NSTitle" ref="255189770"/>
343 <reference key="NSKeyEquiv" ref="255189770"/>
343 <reference key="NSKeyEquiv" ref="255189770"/>
344 <int key="NSKeyEquivModMask">1048576</int>
344 <int key="NSKeyEquivModMask">1048576</int>
345 <int key="NSMnemonicLoc">2147483647</int>
345 <int key="NSMnemonicLoc">2147483647</int>
346 <reference key="NSOnImage" ref="985281305"/>
346 <reference key="NSOnImage" ref="271266416"/>
347 <reference key="NSMixedImage" ref="351279908"/>
347 <reference key="NSMixedImage" ref="508123839"/>
348 </object>
348 </object>
349 <object class="NSMenuItem" id="296257095">
349 <object class="NSMenuItem" id="296257095">
350 <reference key="NSMenu" ref="789758025"/>
350 <reference key="NSMenu" ref="789758025"/>
351 <string key="NSTitle">Cut</string>
351 <string key="NSTitle">Cut</string>
352 <string key="NSKeyEquiv">x</string>
352 <string key="NSKeyEquiv">x</string>
353 <int key="NSKeyEquivModMask">1048576</int>
353 <int key="NSKeyEquivModMask">1048576</int>
354 <int key="NSMnemonicLoc">2147483647</int>
354 <int key="NSMnemonicLoc">2147483647</int>
355 <reference key="NSOnImage" ref="985281305"/>
355 <reference key="NSOnImage" ref="271266416"/>
356 <reference key="NSMixedImage" ref="351279908"/>
356 <reference key="NSMixedImage" ref="508123839"/>
357 </object>
357 </object>
358 <object class="NSMenuItem" id="860595796">
358 <object class="NSMenuItem" id="860595796">
359 <reference key="NSMenu" ref="789758025"/>
359 <reference key="NSMenu" ref="789758025"/>
360 <string key="NSTitle">Copy</string>
360 <string key="NSTitle">Copy</string>
361 <string key="NSKeyEquiv">c</string>
361 <string key="NSKeyEquiv">c</string>
362 <int key="NSKeyEquivModMask">1048576</int>
362 <int key="NSKeyEquivModMask">1048576</int>
363 <int key="NSMnemonicLoc">2147483647</int>
363 <int key="NSMnemonicLoc">2147483647</int>
364 <reference key="NSOnImage" ref="985281305"/>
364 <reference key="NSOnImage" ref="271266416"/>
365 <reference key="NSMixedImage" ref="351279908"/>
365 <reference key="NSMixedImage" ref="508123839"/>
366 </object>
366 </object>
367 <object class="NSMenuItem" id="29853731">
367 <object class="NSMenuItem" id="29853731">
368 <reference key="NSMenu" ref="789758025"/>
368 <reference key="NSMenu" ref="789758025"/>
369 <string key="NSTitle">Paste</string>
369 <string key="NSTitle">Paste</string>
370 <string key="NSKeyEquiv">v</string>
370 <string key="NSKeyEquiv">v</string>
371 <int key="NSKeyEquivModMask">1048576</int>
371 <int key="NSKeyEquivModMask">1048576</int>
372 <int key="NSMnemonicLoc">2147483647</int>
372 <int key="NSMnemonicLoc">2147483647</int>
373 <reference key="NSOnImage" ref="985281305"/>
373 <reference key="NSOnImage" ref="271266416"/>
374 <reference key="NSMixedImage" ref="351279908"/>
374 <reference key="NSMixedImage" ref="508123839"/>
375 </object>
375 </object>
376 <object class="NSMenuItem" id="437104165">
376 <object class="NSMenuItem" id="437104165">
377 <reference key="NSMenu" ref="789758025"/>
377 <reference key="NSMenu" ref="789758025"/>
378 <string key="NSTitle">Delete</string>
378 <string key="NSTitle">Delete</string>
379 <reference key="NSKeyEquiv" ref="255189770"/>
379 <reference key="NSKeyEquiv" ref="255189770"/>
380 <int key="NSKeyEquivModMask">1048576</int>
380 <int key="NSKeyEquivModMask">1048576</int>
381 <int key="NSMnemonicLoc">2147483647</int>
381 <int key="NSMnemonicLoc">2147483647</int>
382 <reference key="NSOnImage" ref="985281305"/>
382 <reference key="NSOnImage" ref="271266416"/>
383 <reference key="NSMixedImage" ref="351279908"/>
383 <reference key="NSMixedImage" ref="508123839"/>
384 </object>
384 </object>
385 <object class="NSMenuItem" id="583158037">
385 <object class="NSMenuItem" id="583158037">
386 <reference key="NSMenu" ref="789758025"/>
386 <reference key="NSMenu" ref="789758025"/>
387 <string key="NSTitle">Select All</string>
387 <string key="NSTitle">Select All</string>
388 <string key="NSKeyEquiv">a</string>
388 <string key="NSKeyEquiv">a</string>
389 <int key="NSKeyEquivModMask">1048576</int>
389 <int key="NSKeyEquivModMask">1048576</int>
390 <int key="NSMnemonicLoc">2147483647</int>
390 <int key="NSMnemonicLoc">2147483647</int>
391 <reference key="NSOnImage" ref="985281305"/>
391 <reference key="NSOnImage" ref="271266416"/>
392 <reference key="NSMixedImage" ref="351279908"/>
392 <reference key="NSMixedImage" ref="508123839"/>
393 </object>
393 </object>
394 <object class="NSMenuItem" id="212016141">
394 <object class="NSMenuItem" id="212016141">
395 <reference key="NSMenu" ref="789758025"/>
395 <reference key="NSMenu" ref="789758025"/>
396 <bool key="NSIsDisabled">YES</bool>
396 <bool key="NSIsDisabled">YES</bool>
397 <bool key="NSIsSeparator">YES</bool>
397 <bool key="NSIsSeparator">YES</bool>
398 <reference key="NSTitle" ref="255189770"/>
398 <reference key="NSTitle" ref="255189770"/>
399 <reference key="NSKeyEquiv" ref="255189770"/>
399 <reference key="NSKeyEquiv" ref="255189770"/>
400 <int key="NSKeyEquivModMask">1048576</int>
400 <int key="NSKeyEquivModMask">1048576</int>
401 <int key="NSMnemonicLoc">2147483647</int>
401 <int key="NSMnemonicLoc">2147483647</int>
402 <reference key="NSOnImage" ref="985281305"/>
402 <reference key="NSOnImage" ref="271266416"/>
403 <reference key="NSMixedImage" ref="351279908"/>
403 <reference key="NSMixedImage" ref="508123839"/>
404 </object>
404 </object>
405 <object class="NSMenuItem" id="892235320">
405 <object class="NSMenuItem" id="892235320">
406 <reference key="NSMenu" ref="789758025"/>
406 <reference key="NSMenu" ref="789758025"/>
407 <string key="NSTitle" id="688083180">Find</string>
407 <string key="NSTitle" id="688083180">Find</string>
408 <reference key="NSKeyEquiv" ref="255189770"/>
408 <reference key="NSKeyEquiv" ref="255189770"/>
409 <int key="NSKeyEquivModMask">1048576</int>
409 <int key="NSKeyEquivModMask">1048576</int>
410 <int key="NSMnemonicLoc">2147483647</int>
410 <int key="NSMnemonicLoc">2147483647</int>
411 <reference key="NSOnImage" ref="985281305"/>
411 <reference key="NSOnImage" ref="271266416"/>
412 <reference key="NSMixedImage" ref="351279908"/>
412 <reference key="NSMixedImage" ref="508123839"/>
413 <string key="NSAction">submenuAction:</string>
413 <string key="NSAction">submenuAction:</string>
414 <object class="NSMenu" key="NSSubmenu" id="963351320">
414 <object class="NSMenu" key="NSSubmenu" id="963351320">
415 <reference key="NSTitle" ref="688083180"/>
415 <reference key="NSTitle" ref="688083180"/>
416 <object class="NSMutableArray" key="NSMenuItems">
416 <object class="NSMutableArray" key="NSMenuItems">
417 <bool key="EncodedWithXMLCoder">YES</bool>
417 <bool key="EncodedWithXMLCoder">YES</bool>
418 <object class="NSMenuItem" id="447796847">
418 <object class="NSMenuItem" id="447796847">
419 <reference key="NSMenu" ref="963351320"/>
419 <reference key="NSMenu" ref="963351320"/>
420 <string type="base64-UTF8" key="NSTitle">RmluZOKApg</string>
420 <string type="base64-UTF8" key="NSTitle">RmluZOKApg</string>
421 <string key="NSKeyEquiv" id="469505129">f</string>
421 <string key="NSKeyEquiv" id="469505129">f</string>
422 <int key="NSKeyEquivModMask">1048576</int>
422 <int key="NSKeyEquivModMask">1048576</int>
423 <int key="NSMnemonicLoc">2147483647</int>
423 <int key="NSMnemonicLoc">2147483647</int>
424 <reference key="NSOnImage" ref="985281305"/>
424 <reference key="NSOnImage" ref="271266416"/>
425 <reference key="NSMixedImage" ref="351279908"/>
425 <reference key="NSMixedImage" ref="508123839"/>
426 <int key="NSTag">1</int>
426 <int key="NSTag">1</int>
427 </object>
427 </object>
428 <object class="NSMenuItem" id="326711663">
428 <object class="NSMenuItem" id="326711663">
429 <reference key="NSMenu" ref="963351320"/>
429 <reference key="NSMenu" ref="963351320"/>
430 <string key="NSTitle">Find Next</string>
430 <string key="NSTitle">Find Next</string>
431 <string key="NSKeyEquiv" id="762398675">g</string>
431 <string key="NSKeyEquiv" id="762398675">g</string>
432 <int key="NSKeyEquivModMask">1048576</int>
432 <int key="NSKeyEquivModMask">1048576</int>
433 <int key="NSMnemonicLoc">2147483647</int>
433 <int key="NSMnemonicLoc">2147483647</int>
434 <reference key="NSOnImage" ref="985281305"/>
434 <reference key="NSOnImage" ref="271266416"/>
435 <reference key="NSMixedImage" ref="351279908"/>
435 <reference key="NSMixedImage" ref="508123839"/>
436 <int key="NSTag">2</int>
436 <int key="NSTag">2</int>
437 </object>
437 </object>
438 <object class="NSMenuItem" id="270902937">
438 <object class="NSMenuItem" id="270902937">
439 <reference key="NSMenu" ref="963351320"/>
439 <reference key="NSMenu" ref="963351320"/>
440 <string key="NSTitle">Find Previous</string>
440 <string key="NSTitle">Find Previous</string>
441 <string key="NSKeyEquiv" id="819654342">G</string>
441 <string key="NSKeyEquiv" id="819654342">G</string>
442 <int key="NSKeyEquivModMask">1179648</int>
442 <int key="NSKeyEquivModMask">1179648</int>
443 <int key="NSMnemonicLoc">2147483647</int>
443 <int key="NSMnemonicLoc">2147483647</int>
444 <reference key="NSOnImage" ref="985281305"/>
444 <reference key="NSOnImage" ref="271266416"/>
445 <reference key="NSMixedImage" ref="351279908"/>
445 <reference key="NSMixedImage" ref="508123839"/>
446 <int key="NSTag">3</int>
446 <int key="NSTag">3</int>
447 </object>
447 </object>
448 <object class="NSMenuItem" id="159080638">
448 <object class="NSMenuItem" id="159080638">
449 <reference key="NSMenu" ref="963351320"/>
449 <reference key="NSMenu" ref="963351320"/>
450 <string key="NSTitle">Use Selection for Find</string>
450 <string key="NSTitle">Use Selection for Find</string>
451 <string key="NSKeyEquiv">e</string>
451 <string key="NSKeyEquiv">e</string>
452 <int key="NSKeyEquivModMask">1048576</int>
452 <int key="NSKeyEquivModMask">1048576</int>
453 <int key="NSMnemonicLoc">2147483647</int>
453 <int key="NSMnemonicLoc">2147483647</int>
454 <reference key="NSOnImage" ref="985281305"/>
454 <reference key="NSOnImage" ref="271266416"/>
455 <reference key="NSMixedImage" ref="351279908"/>
455 <reference key="NSMixedImage" ref="508123839"/>
456 <int key="NSTag">7</int>
456 <int key="NSTag">7</int>
457 </object>
457 </object>
458 <object class="NSMenuItem" id="88285865">
458 <object class="NSMenuItem" id="88285865">
459 <reference key="NSMenu" ref="963351320"/>
459 <reference key="NSMenu" ref="963351320"/>
460 <string key="NSTitle">Jump to Selection</string>
460 <string key="NSTitle">Jump to Selection</string>
461 <string key="NSKeyEquiv">j</string>
461 <string key="NSKeyEquiv">j</string>
462 <int key="NSKeyEquivModMask">1048576</int>
462 <int key="NSKeyEquivModMask">1048576</int>
463 <int key="NSMnemonicLoc">2147483647</int>
463 <int key="NSMnemonicLoc">2147483647</int>
464 <reference key="NSOnImage" ref="985281305"/>
464 <reference key="NSOnImage" ref="271266416"/>
465 <reference key="NSMixedImage" ref="351279908"/>
465 <reference key="NSMixedImage" ref="508123839"/>
466 </object>
466 </object>
467 </object>
467 </object>
468 </object>
468 </object>
469 </object>
469 </object>
470 <object class="NSMenuItem" id="972420730">
470 <object class="NSMenuItem" id="972420730">
471 <reference key="NSMenu" ref="789758025"/>
471 <reference key="NSMenu" ref="789758025"/>
472 <string key="NSTitle" id="739167250">Spelling and Grammar</string>
472 <string key="NSTitle" id="739167250">Spelling and Grammar</string>
473 <reference key="NSKeyEquiv" ref="255189770"/>
473 <reference key="NSKeyEquiv" ref="255189770"/>
474 <int key="NSKeyEquivModMask">1048576</int>
474 <int key="NSKeyEquivModMask">1048576</int>
475 <int key="NSMnemonicLoc">2147483647</int>
475 <int key="NSMnemonicLoc">2147483647</int>
476 <reference key="NSOnImage" ref="985281305"/>
476 <reference key="NSOnImage" ref="271266416"/>
477 <reference key="NSMixedImage" ref="351279908"/>
477 <reference key="NSMixedImage" ref="508123839"/>
478 <string key="NSAction">submenuAction:</string>
478 <string key="NSAction">submenuAction:</string>
479 <object class="NSMenu" key="NSSubmenu" id="769623530">
479 <object class="NSMenu" key="NSSubmenu" id="769623530">
480 <reference key="NSTitle" ref="739167250"/>
480 <reference key="NSTitle" ref="739167250"/>
481 <object class="NSMutableArray" key="NSMenuItems">
481 <object class="NSMutableArray" key="NSMenuItems">
482 <bool key="EncodedWithXMLCoder">YES</bool>
482 <bool key="EncodedWithXMLCoder">YES</bool>
483 <object class="NSMenuItem" id="679648819">
483 <object class="NSMenuItem" id="679648819">
484 <reference key="NSMenu" ref="769623530"/>
484 <reference key="NSMenu" ref="769623530"/>
485 <string type="base64-UTF8" key="NSTitle">U2hvdyBTcGVsbGluZ+KApg</string>
485 <string type="base64-UTF8" key="NSTitle">U2hvdyBTcGVsbGluZ+KApg</string>
486 <string key="NSKeyEquiv">:</string>
486 <string key="NSKeyEquiv">:</string>
487 <int key="NSKeyEquivModMask">1048576</int>
487 <int key="NSKeyEquivModMask">1048576</int>
488 <int key="NSMnemonicLoc">2147483647</int>
488 <int key="NSMnemonicLoc">2147483647</int>
489 <reference key="NSOnImage" ref="985281305"/>
489 <reference key="NSOnImage" ref="271266416"/>
490 <reference key="NSMixedImage" ref="351279908"/>
490 <reference key="NSMixedImage" ref="508123839"/>
491 </object>
491 </object>
492 <object class="NSMenuItem" id="96193923">
492 <object class="NSMenuItem" id="96193923">
493 <reference key="NSMenu" ref="769623530"/>
493 <reference key="NSMenu" ref="769623530"/>
494 <string key="NSTitle">Check Spelling</string>
494 <string key="NSTitle">Check Spelling</string>
495 <string key="NSKeyEquiv">;</string>
495 <string key="NSKeyEquiv">;</string>
496 <int key="NSKeyEquivModMask">1048576</int>
496 <int key="NSKeyEquivModMask">1048576</int>
497 <int key="NSMnemonicLoc">2147483647</int>
497 <int key="NSMnemonicLoc">2147483647</int>
498 <reference key="NSOnImage" ref="985281305"/>
498 <reference key="NSOnImage" ref="271266416"/>
499 <reference key="NSMixedImage" ref="351279908"/>
499 <reference key="NSMixedImage" ref="508123839"/>
500 </object>
500 </object>
501 <object class="NSMenuItem" id="948374510">
501 <object class="NSMenuItem" id="948374510">
502 <reference key="NSMenu" ref="769623530"/>
502 <reference key="NSMenu" ref="769623530"/>
503 <string key="NSTitle">Check Spelling While Typing</string>
503 <string key="NSTitle">Check Spelling While Typing</string>
504 <reference key="NSKeyEquiv" ref="255189770"/>
504 <reference key="NSKeyEquiv" ref="255189770"/>
505 <int key="NSKeyEquivModMask">1048576</int>
505 <int key="NSKeyEquivModMask">1048576</int>
506 <int key="NSMnemonicLoc">2147483647</int>
506 <int key="NSMnemonicLoc">2147483647</int>
507 <reference key="NSOnImage" ref="985281305"/>
507 <reference key="NSOnImage" ref="271266416"/>
508 <reference key="NSMixedImage" ref="351279908"/>
508 <reference key="NSMixedImage" ref="508123839"/>
509 </object>
509 </object>
510 <object class="NSMenuItem" id="967646866">
510 <object class="NSMenuItem" id="967646866">
511 <reference key="NSMenu" ref="769623530"/>
511 <reference key="NSMenu" ref="769623530"/>
512 <string key="NSTitle">Check Grammar With Spelling</string>
512 <string key="NSTitle">Check Grammar With Spelling</string>
513 <reference key="NSKeyEquiv" ref="255189770"/>
513 <reference key="NSKeyEquiv" ref="255189770"/>
514 <int key="NSKeyEquivModMask">1048576</int>
514 <int key="NSKeyEquivModMask">1048576</int>
515 <int key="NSMnemonicLoc">2147483647</int>
515 <int key="NSMnemonicLoc">2147483647</int>
516 <reference key="NSOnImage" ref="985281305"/>
516 <reference key="NSOnImage" ref="271266416"/>
517 <reference key="NSMixedImage" ref="351279908"/>
517 <reference key="NSMixedImage" ref="508123839"/>
518 </object>
518 </object>
519 </object>
519 </object>
520 </object>
520 </object>
521 </object>
521 </object>
522 <object class="NSMenuItem" id="507821607">
522 <object class="NSMenuItem" id="507821607">
523 <reference key="NSMenu" ref="789758025"/>
523 <reference key="NSMenu" ref="789758025"/>
524 <string key="NSTitle" id="904739598">Substitutions</string>
524 <string key="NSTitle" id="904739598">Substitutions</string>
525 <reference key="NSKeyEquiv" ref="255189770"/>
525 <reference key="NSKeyEquiv" ref="255189770"/>
526 <int key="NSKeyEquivModMask">1048576</int>
526 <int key="NSKeyEquivModMask">1048576</int>
527 <int key="NSMnemonicLoc">2147483647</int>
527 <int key="NSMnemonicLoc">2147483647</int>
528 <reference key="NSOnImage" ref="985281305"/>
528 <reference key="NSOnImage" ref="271266416"/>
529 <reference key="NSMixedImage" ref="351279908"/>
529 <reference key="NSMixedImage" ref="508123839"/>
530 <string key="NSAction">submenuAction:</string>
530 <string key="NSAction">submenuAction:</string>
531 <object class="NSMenu" key="NSSubmenu" id="698887838">
531 <object class="NSMenu" key="NSSubmenu" id="698887838">
532 <reference key="NSTitle" ref="904739598"/>
532 <reference key="NSTitle" ref="904739598"/>
533 <object class="NSMutableArray" key="NSMenuItems">
533 <object class="NSMutableArray" key="NSMenuItems">
534 <bool key="EncodedWithXMLCoder">YES</bool>
534 <bool key="EncodedWithXMLCoder">YES</bool>
535 <object class="NSMenuItem" id="605118523">
535 <object class="NSMenuItem" id="605118523">
536 <reference key="NSMenu" ref="698887838"/>
536 <reference key="NSMenu" ref="698887838"/>
537 <string key="NSTitle">Smart Copy/Paste</string>
537 <string key="NSTitle">Smart Copy/Paste</string>
538 <reference key="NSKeyEquiv" ref="469505129"/>
538 <reference key="NSKeyEquiv" ref="469505129"/>
539 <int key="NSKeyEquivModMask">1048576</int>
539 <int key="NSKeyEquivModMask">1048576</int>
540 <int key="NSMnemonicLoc">2147483647</int>
540 <int key="NSMnemonicLoc">2147483647</int>
541 <reference key="NSOnImage" ref="985281305"/>
541 <reference key="NSOnImage" ref="271266416"/>
542 <reference key="NSMixedImage" ref="351279908"/>
542 <reference key="NSMixedImage" ref="508123839"/>
543 <int key="NSTag">1</int>
543 <int key="NSTag">1</int>
544 </object>
544 </object>
545 <object class="NSMenuItem" id="197661976">
545 <object class="NSMenuItem" id="197661976">
546 <reference key="NSMenu" ref="698887838"/>
546 <reference key="NSMenu" ref="698887838"/>
547 <string key="NSTitle">Smart Quotes</string>
547 <string key="NSTitle">Smart Quotes</string>
548 <reference key="NSKeyEquiv" ref="762398675"/>
548 <reference key="NSKeyEquiv" ref="762398675"/>
549 <int key="NSKeyEquivModMask">1048576</int>
549 <int key="NSKeyEquivModMask">1048576</int>
550 <int key="NSMnemonicLoc">2147483647</int>
550 <int key="NSMnemonicLoc">2147483647</int>
551 <reference key="NSOnImage" ref="985281305"/>
551 <reference key="NSOnImage" ref="271266416"/>
552 <reference key="NSMixedImage" ref="351279908"/>
552 <reference key="NSMixedImage" ref="508123839"/>
553 <int key="NSTag">2</int>
553 <int key="NSTag">2</int>
554 </object>
554 </object>
555 <object class="NSMenuItem" id="708854459">
555 <object class="NSMenuItem" id="708854459">
556 <reference key="NSMenu" ref="698887838"/>
556 <reference key="NSMenu" ref="698887838"/>
557 <string key="NSTitle">Smart Links</string>
557 <string key="NSTitle">Smart Links</string>
558 <reference key="NSKeyEquiv" ref="819654342"/>
558 <reference key="NSKeyEquiv" ref="819654342"/>
559 <int key="NSKeyEquivModMask">1179648</int>
559 <int key="NSKeyEquivModMask">1179648</int>
560 <int key="NSMnemonicLoc">2147483647</int>
560 <int key="NSMnemonicLoc">2147483647</int>
561 <reference key="NSOnImage" ref="985281305"/>
561 <reference key="NSOnImage" ref="271266416"/>
562 <reference key="NSMixedImage" ref="351279908"/>
562 <reference key="NSMixedImage" ref="508123839"/>
563 <int key="NSTag">3</int>
563 <int key="NSTag">3</int>
564 </object>
564 </object>
565 </object>
565 </object>
566 </object>
566 </object>
567 </object>
567 </object>
568 <object class="NSMenuItem" id="676164635">
568 <object class="NSMenuItem" id="676164635">
569 <reference key="NSMenu" ref="789758025"/>
569 <reference key="NSMenu" ref="789758025"/>
570 <string key="NSTitle" id="812002426">Speech</string>
570 <string key="NSTitle" id="812002426">Speech</string>
571 <reference key="NSKeyEquiv" ref="255189770"/>
571 <reference key="NSKeyEquiv" ref="255189770"/>
572 <int key="NSKeyEquivModMask">1048576</int>
572 <int key="NSKeyEquivModMask">1048576</int>
573 <int key="NSMnemonicLoc">2147483647</int>
573 <int key="NSMnemonicLoc">2147483647</int>
574 <reference key="NSOnImage" ref="985281305"/>
574 <reference key="NSOnImage" ref="271266416"/>
575 <reference key="NSMixedImage" ref="351279908"/>
575 <reference key="NSMixedImage" ref="508123839"/>
576 <string key="NSAction">submenuAction:</string>
576 <string key="NSAction">submenuAction:</string>
577 <object class="NSMenu" key="NSSubmenu" id="785027613">
577 <object class="NSMenu" key="NSSubmenu" id="785027613">
578 <reference key="NSTitle" ref="812002426"/>
578 <reference key="NSTitle" ref="812002426"/>
579 <object class="NSMutableArray" key="NSMenuItems">
579 <object class="NSMutableArray" key="NSMenuItems">
580 <bool key="EncodedWithXMLCoder">YES</bool>
580 <bool key="EncodedWithXMLCoder">YES</bool>
581 <object class="NSMenuItem" id="731782645">
581 <object class="NSMenuItem" id="731782645">
582 <reference key="NSMenu" ref="785027613"/>
582 <reference key="NSMenu" ref="785027613"/>
583 <string key="NSTitle">Start Speaking</string>
583 <string key="NSTitle">Start Speaking</string>
584 <reference key="NSKeyEquiv" ref="255189770"/>
584 <reference key="NSKeyEquiv" ref="255189770"/>
585 <int key="NSKeyEquivModMask">1048576</int>
585 <int key="NSKeyEquivModMask">1048576</int>
586 <int key="NSMnemonicLoc">2147483647</int>
586 <int key="NSMnemonicLoc">2147483647</int>
587 <reference key="NSOnImage" ref="985281305"/>
587 <reference key="NSOnImage" ref="271266416"/>
588 <reference key="NSMixedImage" ref="351279908"/>
588 <reference key="NSMixedImage" ref="508123839"/>
589 </object>
589 </object>
590 <object class="NSMenuItem" id="680220178">
590 <object class="NSMenuItem" id="680220178">
591 <reference key="NSMenu" ref="785027613"/>
591 <reference key="NSMenu" ref="785027613"/>
592 <string key="NSTitle">Stop Speaking</string>
592 <string key="NSTitle">Stop Speaking</string>
593 <reference key="NSKeyEquiv" ref="255189770"/>
593 <reference key="NSKeyEquiv" ref="255189770"/>
594 <int key="NSKeyEquivModMask">1048576</int>
594 <int key="NSKeyEquivModMask">1048576</int>
595 <int key="NSMnemonicLoc">2147483647</int>
595 <int key="NSMnemonicLoc">2147483647</int>
596 <reference key="NSOnImage" ref="985281305"/>
596 <reference key="NSOnImage" ref="271266416"/>
597 <reference key="NSMixedImage" ref="351279908"/>
597 <reference key="NSMixedImage" ref="508123839"/>
598 </object>
598 </object>
599 </object>
599 </object>
600 </object>
600 </object>
601 </object>
601 </object>
602 </object>
602 </object>
603 </object>
603 </object>
604 </object>
604 </object>
605 <object class="NSMenuItem" id="626404410">
605 <object class="NSMenuItem" id="626404410">
606 <reference key="NSMenu" ref="649796088"/>
606 <reference key="NSMenu" ref="649796088"/>
607 <string key="NSTitle" id="241242548">Format</string>
607 <string key="NSTitle" id="241242548">Format</string>
608 <reference key="NSKeyEquiv" ref="255189770"/>
608 <reference key="NSKeyEquiv" ref="255189770"/>
609 <int key="NSKeyEquivModMask">1048576</int>
609 <int key="NSKeyEquivModMask">1048576</int>
610 <int key="NSMnemonicLoc">2147483647</int>
610 <int key="NSMnemonicLoc">2147483647</int>
611 <reference key="NSOnImage" ref="985281305"/>
611 <reference key="NSOnImage" ref="271266416"/>
612 <reference key="NSMixedImage" ref="351279908"/>
612 <reference key="NSMixedImage" ref="508123839"/>
613 <string key="NSAction">submenuAction:</string>
613 <string key="NSAction">submenuAction:</string>
614 <object class="NSMenu" key="NSSubmenu" id="502084290">
614 <object class="NSMenu" key="NSSubmenu" id="502084290">
615 <reference key="NSTitle" ref="241242548"/>
615 <reference key="NSTitle" ref="241242548"/>
616 <object class="NSMutableArray" key="NSMenuItems">
616 <object class="NSMutableArray" key="NSMenuItems">
617 <bool key="EncodedWithXMLCoder">YES</bool>
617 <bool key="EncodedWithXMLCoder">YES</bool>
618 <object class="NSMenuItem" id="519768076">
618 <object class="NSMenuItem" id="519768076">
619 <reference key="NSMenu" ref="502084290"/>
619 <reference key="NSMenu" ref="502084290"/>
620 <string key="NSTitle">Show Fonts</string>
620 <string key="NSTitle">Show Fonts</string>
621 <string key="NSKeyEquiv" id="806579634">t</string>
621 <string key="NSKeyEquiv" id="806579634">t</string>
622 <int key="NSKeyEquivModMask">1048576</int>
622 <int key="NSKeyEquivModMask">1048576</int>
623 <int key="NSMnemonicLoc">2147483647</int>
623 <int key="NSMnemonicLoc">2147483647</int>
624 <reference key="NSOnImage" ref="985281305"/>
624 <reference key="NSOnImage" ref="271266416"/>
625 <reference key="NSMixedImage" ref="351279908"/>
625 <reference key="NSMixedImage" ref="508123839"/>
626 </object>
626 </object>
627 <object class="NSMenuItem" id="1028416764">
627 <object class="NSMenuItem" id="1028416764">
628 <reference key="NSMenu" ref="502084290"/>
628 <reference key="NSMenu" ref="502084290"/>
629 <string key="NSTitle">Show Colors</string>
629 <string key="NSTitle">Show Colors</string>
630 <string key="NSKeyEquiv">C</string>
630 <string key="NSKeyEquiv">C</string>
631 <int key="NSKeyEquivModMask">1179648</int>
631 <int key="NSKeyEquivModMask">1179648</int>
632 <int key="NSMnemonicLoc">2147483647</int>
632 <int key="NSMnemonicLoc">2147483647</int>
633 <reference key="NSOnImage" ref="985281305"/>
633 <reference key="NSOnImage" ref="271266416"/>
634 <reference key="NSMixedImage" ref="351279908"/>
634 <reference key="NSMixedImage" ref="508123839"/>
635 </object>
635 </object>
636 </object>
636 </object>
637 </object>
637 </object>
638 </object>
638 </object>
639 <object class="NSMenuItem" id="586577488">
639 <object class="NSMenuItem" id="586577488">
640 <reference key="NSMenu" ref="649796088"/>
640 <reference key="NSMenu" ref="649796088"/>
641 <string key="NSTitle" id="809723865">View</string>
641 <string key="NSTitle" id="809723865">View</string>
642 <reference key="NSKeyEquiv" ref="255189770"/>
642 <reference key="NSKeyEquiv" ref="255189770"/>
643 <int key="NSKeyEquivModMask">1048576</int>
643 <int key="NSKeyEquivModMask">1048576</int>
644 <int key="NSMnemonicLoc">2147483647</int>
644 <int key="NSMnemonicLoc">2147483647</int>
645 <reference key="NSOnImage" ref="985281305"/>
645 <reference key="NSOnImage" ref="271266416"/>
646 <reference key="NSMixedImage" ref="351279908"/>
646 <reference key="NSMixedImage" ref="508123839"/>
647 <string key="NSAction">submenuAction:</string>
647 <string key="NSAction">submenuAction:</string>
648 <object class="NSMenu" key="NSSubmenu" id="466310130">
648 <object class="NSMenu" key="NSSubmenu" id="466310130">
649 <reference key="NSTitle" ref="809723865"/>
649 <reference key="NSTitle" ref="809723865"/>
650 <object class="NSMutableArray" key="NSMenuItems">
650 <object class="NSMutableArray" key="NSMenuItems">
651 <bool key="EncodedWithXMLCoder">YES</bool>
651 <bool key="EncodedWithXMLCoder">YES</bool>
652 <object class="NSMenuItem" id="102151532">
652 <object class="NSMenuItem" id="102151532">
653 <reference key="NSMenu" ref="466310130"/>
653 <reference key="NSMenu" ref="466310130"/>
654 <string key="NSTitle">Show Toolbar</string>
654 <string key="NSTitle">Show Toolbar</string>
655 <reference key="NSKeyEquiv" ref="806579634"/>
655 <reference key="NSKeyEquiv" ref="806579634"/>
656 <int key="NSKeyEquivModMask">1572864</int>
656 <int key="NSKeyEquivModMask">1572864</int>
657 <int key="NSMnemonicLoc">2147483647</int>
657 <int key="NSMnemonicLoc">2147483647</int>
658 <reference key="NSOnImage" ref="985281305"/>
658 <reference key="NSOnImage" ref="271266416"/>
659 <reference key="NSMixedImage" ref="351279908"/>
659 <reference key="NSMixedImage" ref="508123839"/>
660 </object>
660 </object>
661 <object class="NSMenuItem" id="237841660">
661 <object class="NSMenuItem" id="237841660">
662 <reference key="NSMenu" ref="466310130"/>
662 <reference key="NSMenu" ref="466310130"/>
663 <string type="base64-UTF8" key="NSTitle">Q3VzdG9taXplIFRvb2xiYXLigKY</string>
663 <string type="base64-UTF8" key="NSTitle">Q3VzdG9taXplIFRvb2xiYXLigKY</string>
664 <reference key="NSKeyEquiv" ref="255189770"/>
664 <reference key="NSKeyEquiv" ref="255189770"/>
665 <int key="NSKeyEquivModMask">1048576</int>
665 <int key="NSKeyEquivModMask">1048576</int>
666 <int key="NSMnemonicLoc">2147483647</int>
666 <int key="NSMnemonicLoc">2147483647</int>
667 <reference key="NSOnImage" ref="985281305"/>
667 <reference key="NSOnImage" ref="271266416"/>
668 <reference key="NSMixedImage" ref="351279908"/>
668 <reference key="NSMixedImage" ref="508123839"/>
669 </object>
669 </object>
670 </object>
670 </object>
671 </object>
671 </object>
672 </object>
672 </object>
673 <object class="NSMenuItem" id="713487014">
673 <object class="NSMenuItem" id="713487014">
674 <reference key="NSMenu" ref="649796088"/>
674 <reference key="NSMenu" ref="649796088"/>
675 <string key="NSTitle" id="64165424">Window</string>
675 <string key="NSTitle" id="64165424">Window</string>
676 <reference key="NSKeyEquiv" ref="255189770"/>
676 <reference key="NSKeyEquiv" ref="255189770"/>
677 <int key="NSKeyEquivModMask">1048576</int>
677 <int key="NSKeyEquivModMask">1048576</int>
678 <int key="NSMnemonicLoc">2147483647</int>
678 <int key="NSMnemonicLoc">2147483647</int>
679 <reference key="NSOnImage" ref="985281305"/>
679 <reference key="NSOnImage" ref="271266416"/>
680 <reference key="NSMixedImage" ref="351279908"/>
680 <reference key="NSMixedImage" ref="508123839"/>
681 <string key="NSAction">submenuAction:</string>
681 <string key="NSAction">submenuAction:</string>
682 <object class="NSMenu" key="NSSubmenu" id="835318025">
682 <object class="NSMenu" key="NSSubmenu" id="835318025">
683 <reference key="NSTitle" ref="64165424"/>
683 <reference key="NSTitle" ref="64165424"/>
684 <object class="NSMutableArray" key="NSMenuItems">
684 <object class="NSMutableArray" key="NSMenuItems">
685 <bool key="EncodedWithXMLCoder">YES</bool>
685 <bool key="EncodedWithXMLCoder">YES</bool>
686 <object class="NSMenuItem" id="1011231497">
686 <object class="NSMenuItem" id="1011231497">
687 <reference key="NSMenu" ref="835318025"/>
687 <reference key="NSMenu" ref="835318025"/>
688 <string key="NSTitle">Minimize</string>
688 <string key="NSTitle">Minimize</string>
689 <string key="NSKeyEquiv">m</string>
689 <string key="NSKeyEquiv">m</string>
690 <int key="NSKeyEquivModMask">1048576</int>
690 <int key="NSKeyEquivModMask">1048576</int>
691 <int key="NSMnemonicLoc">2147483647</int>
691 <int key="NSMnemonicLoc">2147483647</int>
692 <reference key="NSOnImage" ref="985281305"/>
692 <reference key="NSOnImage" ref="271266416"/>
693 <reference key="NSMixedImage" ref="351279908"/>
693 <reference key="NSMixedImage" ref="508123839"/>
694 </object>
694 </object>
695 <object class="NSMenuItem" id="575023229">
695 <object class="NSMenuItem" id="575023229">
696 <reference key="NSMenu" ref="835318025"/>
696 <reference key="NSMenu" ref="835318025"/>
697 <string key="NSTitle">Zoom</string>
697 <string key="NSTitle">Zoom</string>
698 <reference key="NSKeyEquiv" ref="255189770"/>
698 <reference key="NSKeyEquiv" ref="255189770"/>
699 <int key="NSKeyEquivModMask">1048576</int>
699 <int key="NSKeyEquivModMask">1048576</int>
700 <int key="NSMnemonicLoc">2147483647</int>
700 <int key="NSMnemonicLoc">2147483647</int>
701 <reference key="NSOnImage" ref="985281305"/>
701 <reference key="NSOnImage" ref="271266416"/>
702 <reference key="NSMixedImage" ref="351279908"/>
702 <reference key="NSMixedImage" ref="508123839"/>
703 </object>
703 </object>
704 <object class="NSMenuItem" id="299356726">
704 <object class="NSMenuItem" id="299356726">
705 <reference key="NSMenu" ref="835318025"/>
705 <reference key="NSMenu" ref="835318025"/>
706 <bool key="NSIsDisabled">YES</bool>
706 <bool key="NSIsDisabled">YES</bool>
707 <bool key="NSIsSeparator">YES</bool>
707 <bool key="NSIsSeparator">YES</bool>
708 <reference key="NSTitle" ref="255189770"/>
708 <reference key="NSTitle" ref="255189770"/>
709 <reference key="NSKeyEquiv" ref="255189770"/>
709 <reference key="NSKeyEquiv" ref="255189770"/>
710 <int key="NSKeyEquivModMask">1048576</int>
710 <int key="NSKeyEquivModMask">1048576</int>
711 <int key="NSMnemonicLoc">2147483647</int>
711 <int key="NSMnemonicLoc">2147483647</int>
712 <reference key="NSOnImage" ref="985281305"/>
712 <reference key="NSOnImage" ref="271266416"/>
713 <reference key="NSMixedImage" ref="351279908"/>
713 <reference key="NSMixedImage" ref="508123839"/>
714 </object>
714 </object>
715 <object class="NSMenuItem" id="625202149">
715 <object class="NSMenuItem" id="625202149">
716 <reference key="NSMenu" ref="835318025"/>
716 <reference key="NSMenu" ref="835318025"/>
717 <string key="NSTitle">Bring All to Front</string>
717 <string key="NSTitle">Bring All to Front</string>
718 <reference key="NSKeyEquiv" ref="255189770"/>
718 <reference key="NSKeyEquiv" ref="255189770"/>
719 <int key="NSKeyEquivModMask">1048576</int>
719 <int key="NSKeyEquivModMask">1048576</int>
720 <int key="NSMnemonicLoc">2147483647</int>
720 <int key="NSMnemonicLoc">2147483647</int>
721 <reference key="NSOnImage" ref="985281305"/>
721 <reference key="NSOnImage" ref="271266416"/>
722 <reference key="NSMixedImage" ref="351279908"/>
722 <reference key="NSMixedImage" ref="508123839"/>
723 </object>
723 </object>
724 </object>
724 </object>
725 <string key="NSName">_NSWindowsMenu</string>
725 <string key="NSName">_NSWindowsMenu</string>
726 </object>
726 </object>
727 </object>
727 </object>
728 <object class="NSMenuItem" id="391199113">
728 <object class="NSMenuItem" id="391199113">
729 <reference key="NSMenu" ref="649796088"/>
729 <reference key="NSMenu" ref="649796088"/>
730 <string key="NSTitle" id="461919786">Help</string>
730 <string key="NSTitle" id="461919786">Help</string>
731 <reference key="NSKeyEquiv" ref="255189770"/>
731 <reference key="NSKeyEquiv" ref="255189770"/>
732 <int key="NSKeyEquivModMask">1048576</int>
732 <int key="NSKeyEquivModMask">1048576</int>
733 <int key="NSMnemonicLoc">2147483647</int>
733 <int key="NSMnemonicLoc">2147483647</int>
734 <reference key="NSOnImage" ref="985281305"/>
734 <reference key="NSOnImage" ref="271266416"/>
735 <reference key="NSMixedImage" ref="351279908"/>
735 <reference key="NSMixedImage" ref="508123839"/>
736 <string key="NSAction">submenuAction:</string>
736 <string key="NSAction">submenuAction:</string>
737 <object class="NSMenu" key="NSSubmenu" id="374024848">
737 <object class="NSMenu" key="NSSubmenu" id="374024848">
738 <reference key="NSTitle" ref="461919786"/>
738 <reference key="NSTitle" ref="461919786"/>
739 <object class="NSMutableArray" key="NSMenuItems">
739 <object class="NSMutableArray" key="NSMenuItems">
740 <bool key="EncodedWithXMLCoder">YES</bool>
740 <bool key="EncodedWithXMLCoder">YES</bool>
741 <object class="NSMenuItem" id="238773614">
741 <object class="NSMenuItem" id="238773614">
742 <reference key="NSMenu" ref="374024848"/>
742 <reference key="NSMenu" ref="374024848"/>
743 <string key="NSTitle">IPython1Sandbox Help</string>
743 <string key="NSTitle">IPython1Sandbox Help</string>
744 <string key="NSKeyEquiv">?</string>
744 <string key="NSKeyEquiv">?</string>
745 <int key="NSKeyEquivModMask">1048576</int>
745 <int key="NSKeyEquivModMask">1048576</int>
746 <int key="NSMnemonicLoc">2147483647</int>
746 <int key="NSMnemonicLoc">2147483647</int>
747 <reference key="NSOnImage" ref="985281305"/>
747 <reference key="NSOnImage" ref="271266416"/>
748 <reference key="NSMixedImage" ref="351279908"/>
748 <reference key="NSMixedImage" ref="508123839"/>
749 </object>
749 </object>
750 </object>
750 </object>
751 </object>
751 </object>
752 </object>
752 </object>
753 </object>
753 </object>
754 <string key="NSName">_NSMainMenu</string>
754 <string key="NSName">_NSMainMenu</string>
755 </object>
755 </object>
756 <object class="NSWindowTemplate" id="972006081">
756 <object class="NSWindowTemplate" id="972006081">
757 <int key="NSWindowStyleMask">15</int>
757 <int key="NSWindowStyleMask">15</int>
758 <int key="NSWindowBacking">2</int>
758 <int key="NSWindowBacking">2</int>
759 <string key="NSWindowRect">{{335, 413}, {725, 337}}</string>
759 <string key="NSWindowRect">{{335, 413}, {725, 337}}</string>
760 <int key="NSWTFlags">1946157056</int>
760 <int key="NSWTFlags">1946157056</int>
761 <string key="NSWindowTitle">IPython1 (Cocoa)</string>
761 <string key="NSWindowTitle">IPython1 (Cocoa)</string>
762 <string key="NSWindowClass">NSWindow</string>
762 <string key="NSWindowClass">NSWindow</string>
763 <nil key="NSViewClass"/>
763 <nil key="NSViewClass"/>
764 <object class="NSView" key="NSWindowView" id="439893737">
764 <object class="NSView" key="NSWindowView" id="439893737">
765 <reference key="NSNextResponder"/>
765 <reference key="NSNextResponder"/>
766 <int key="NSvFlags">256</int>
766 <int key="NSvFlags">256</int>
767 <object class="NSMutableArray" key="NSSubviews">
767 <object class="NSMutableArray" key="NSSubviews">
768 <bool key="EncodedWithXMLCoder">YES</bool>
768 <bool key="EncodedWithXMLCoder">YES</bool>
769 <object class="NSSplitView" id="741760375">
769 <object class="NSSplitView" id="741760375">
770 <reference key="NSNextResponder" ref="439893737"/>
770 <reference key="NSNextResponder" ref="439893737"/>
771 <int key="NSvFlags">274</int>
771 <int key="NSvFlags">274</int>
772 <object class="NSMutableArray" key="NSSubviews">
772 <object class="NSMutableArray" key="NSSubviews">
773 <bool key="EncodedWithXMLCoder">YES</bool>
773 <bool key="EncodedWithXMLCoder">YES</bool>
774 <object class="NSBox" id="554641139">
774 <object class="NSBox" id="554641139">
775 <reference key="NSNextResponder" ref="741760375"/>
775 <reference key="NSNextResponder" ref="741760375"/>
776 <int key="NSvFlags">22</int>
776 <int key="NSvFlags">22</int>
777 <object class="NSMutableArray" key="NSSubviews">
777 <object class="NSMutableArray" key="NSSubviews">
778 <bool key="EncodedWithXMLCoder">YES</bool>
778 <bool key="EncodedWithXMLCoder">YES</bool>
779 <object class="NSView" id="597872307">
779 <object class="NSView" id="597872307">
780 <reference key="NSNextResponder" ref="554641139"/>
780 <reference key="NSNextResponder" ref="554641139"/>
781 <int key="NSvFlags">256</int>
781 <int key="NSvFlags">256</int>
782 <object class="NSMutableArray" key="NSSubviews">
782 <object class="NSMutableArray" key="NSSubviews">
783 <bool key="EncodedWithXMLCoder">YES</bool>
783 <bool key="EncodedWithXMLCoder">YES</bool>
784 <object class="NSScrollView" id="188193463">
784 <object class="NSScrollView" id="188193463">
785 <reference key="NSNextResponder" ref="597872307"/>
785 <reference key="NSNextResponder" ref="597872307"/>
786 <int key="NSvFlags">274</int>
786 <int key="NSvFlags">274</int>
787 <object class="NSMutableArray" key="NSSubviews">
787 <object class="NSMutableArray" key="NSSubviews">
788 <bool key="EncodedWithXMLCoder">YES</bool>
788 <bool key="EncodedWithXMLCoder">YES</bool>
789 <object class="NSClipView" id="638544389">
789 <object class="NSClipView" id="638544389">
790 <reference key="NSNextResponder" ref="188193463"/>
790 <reference key="NSNextResponder" ref="188193463"/>
791 <int key="NSvFlags">2304</int>
791 <int key="NSvFlags">2304</int>
792 <object class="NSMutableArray" key="NSSubviews">
792 <object class="NSMutableArray" key="NSSubviews">
793 <bool key="EncodedWithXMLCoder">YES</bool>
793 <bool key="EncodedWithXMLCoder">YES</bool>
794 <object class="NSTextView" id="163417131">
794 <object class="NSTextView" id="163417131">
795 <reference key="NSNextResponder" ref="638544389"/>
795 <reference key="NSNextResponder" ref="638544389"/>
796 <int key="NSvFlags">2322</int>
796 <int key="NSvFlags">2322</int>
797 <object class="NSMutableSet" key="NSDragTypes">
797 <object class="NSMutableSet" key="NSDragTypes">
798 <bool key="EncodedWithXMLCoder">YES</bool>
798 <bool key="EncodedWithXMLCoder">YES</bool>
799 <object class="NSMutableArray" key="set.sortedObjects">
799 <object class="NSMutableArray" key="set.sortedObjects">
800 <bool key="EncodedWithXMLCoder">YES</bool>
800 <bool key="EncodedWithXMLCoder">YES</bool>
801 <string>Apple HTML pasteboard type</string>
801 <string>Apple HTML pasteboard type</string>
802 <string>Apple PDF pasteboard type</string>
802 <string>Apple PDF pasteboard type</string>
803 <string>Apple PICT pasteboard type</string>
803 <string>Apple PICT pasteboard type</string>
804 <string>Apple PNG pasteboard type</string>
804 <string>Apple PNG pasteboard type</string>
805 <string>Apple URL pasteboard type</string>
805 <string>Apple URL pasteboard type</string>
806 <string>CorePasteboardFlavorType 0x6D6F6F76</string>
806 <string>CorePasteboardFlavorType 0x6D6F6F76</string>
807 <string>CorePasteboardFlavorType 0x75726C20</string>
807 <string>CorePasteboardFlavorType 0x75726C20</string>
808 <string>NSColor pasteboard type</string>
808 <string>NSColor pasteboard type</string>
809 <string>NSFilenamesPboardType</string>
809 <string>NSFilenamesPboardType</string>
810 <string>NSStringPboardType</string>
810 <string>NSStringPboardType</string>
811 <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
811 <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
812 <string>NeXT RTFD pasteboard type</string>
812 <string>NeXT RTFD pasteboard type</string>
813 <string>NeXT Rich Text Format v1.0 pasteboard type</string>
813 <string>NeXT Rich Text Format v1.0 pasteboard type</string>
814 <string>NeXT TIFF v4.0 pasteboard type</string>
814 <string>NeXT TIFF v4.0 pasteboard type</string>
815 <string>NeXT font pasteboard type</string>
815 <string>NeXT font pasteboard type</string>
816 <string>NeXT ruler pasteboard type</string>
816 <string>NeXT ruler pasteboard type</string>
817 <string>WebURLsWithTitlesPboardType</string>
817 <string>WebURLsWithTitlesPboardType</string>
818 </object>
818 </object>
819 </object>
819 </object>
820 <string key="NSFrame">{{0, 38}, {433, 14}}</string>
820 <string key="NSFrame">{{0, 38}, {433, 14}}</string>
821 <reference key="NSSuperview" ref="638544389"/>
821 <reference key="NSSuperview" ref="638544389"/>
822 <reference key="NSWindow"/>
822 <reference key="NSWindow"/>
823 <object class="NSTextContainer" key="NSTextContainer" id="662117317">
823 <object class="NSTextContainer" key="NSTextContainer" id="662117317">
824 <object class="NSLayoutManager" key="NSLayoutManager">
824 <object class="NSLayoutManager" key="NSLayoutManager">
825 <object class="NSTextStorage" key="NSTextStorage">
825 <object class="NSTextStorage" key="NSTextStorage">
826 <object class="NSMutableString" key="NSString">
826 <object class="NSMutableString" key="NSString">
827 <characters key="NS.bytes"/>
827 <characters key="NS.bytes"/>
828 </object>
828 </object>
829 <nil key="NSDelegate"/>
829 <nil key="NSDelegate"/>
830 </object>
830 </object>
831 <object class="NSMutableArray" key="NSTextContainers">
831 <object class="NSMutableArray" key="NSTextContainers">
832 <bool key="EncodedWithXMLCoder">YES</bool>
832 <bool key="EncodedWithXMLCoder">YES</bool>
833 <reference ref="662117317"/>
833 <reference ref="662117317"/>
834 </object>
834 </object>
835 <int key="NSLMFlags">6</int>
835 <int key="NSLMFlags">6</int>
836 <nil key="NSDelegate"/>
836 <nil key="NSDelegate"/>
837 </object>
837 </object>
838 <reference key="NSTextView" ref="163417131"/>
838 <reference key="NSTextView" ref="163417131"/>
839 <double key="NSWidth">4.330000e+02</double>
839 <double key="NSWidth">4.330000e+02</double>
840 <int key="NSTCFlags">1</int>
840 <int key="NSTCFlags">1</int>
841 </object>
841 </object>
842 <object class="NSTextViewSharedData" key="NSSharedData">
842 <object class="NSTextViewSharedData" key="NSSharedData">
843 <int key="NSFlags">346991</int>
843 <int key="NSFlags">346991</int>
844 <object class="NSColor" key="NSBackgroundColor">
844 <object class="NSColor" key="NSBackgroundColor">
845 <int key="NSColorSpace">2</int>
845 <int key="NSColorSpace">2</int>
846 <bytes key="NSRGB">MSAwLjk1Mjk0MTI0IDAuODUwOTgwNDYAA</bytes>
846 <bytes key="NSRGB">MSAwLjk1Mjk0MTI0IDAuODUwOTgwNDYAA</bytes>
847 </object>
847 </object>
848 <object class="NSColor" key="NSInsertionColor" id="555789289">
848 <object class="NSColor" key="NSInsertionColor" id="555789289">
849 <int key="NSColorSpace">3</int>
849 <int key="NSColorSpace">3</int>
850 <bytes key="NSWhite">MAA</bytes>
850 <bytes key="NSWhite">MAA</bytes>
851 </object>
851 </object>
852 <object class="NSDictionary" key="NSSelectedAttributes">
852 <object class="NSDictionary" key="NSSelectedAttributes">
853 <bool key="EncodedWithXMLCoder">YES</bool>
853 <bool key="EncodedWithXMLCoder">YES</bool>
854 <object class="NSMutableArray" key="dict.sortedKeys">
854 <object class="NSMutableArray" key="dict.sortedKeys">
855 <bool key="EncodedWithXMLCoder">YES</bool>
855 <bool key="EncodedWithXMLCoder">YES</bool>
856 <string>NSBackgroundColor</string>
856 <string>NSBackgroundColor</string>
857 <string id="19777717">NSColor</string>
857 <string id="19777717">NSColor</string>
858 </object>
858 </object>
859 <object class="NSMutableArray" key="dict.values">
859 <object class="NSMutableArray" key="dict.values">
860 <bool key="EncodedWithXMLCoder">YES</bool>
860 <bool key="EncodedWithXMLCoder">YES</bool>
861 <object class="NSColor">
861 <object class="NSColor">
862 <int key="NSColorSpace">6</int>
862 <int key="NSColorSpace">6</int>
863 <string key="NSCatalogName" id="945274157">System</string>
863 <string key="NSCatalogName" id="484387293">System</string>
864 <string key="NSColorName">selectedTextBackgroundColor</string>
864 <string key="NSColorName">selectedTextBackgroundColor</string>
865 <object class="NSColor" key="NSColor" id="377165725">
865 <object class="NSColor" key="NSColor" id="377165725">
866 <int key="NSColorSpace">3</int>
866 <int key="NSColorSpace">3</int>
867 <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
867 <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
868 </object>
868 </object>
869 </object>
869 </object>
870 <object class="NSColor">
870 <object class="NSColor">
871 <int key="NSColorSpace">6</int>
871 <int key="NSColorSpace">6</int>
872 <reference key="NSCatalogName" ref="945274157"/>
872 <reference key="NSCatalogName" ref="484387293"/>
873 <string key="NSColorName">selectedTextColor</string>
873 <string key="NSColorName">selectedTextColor</string>
874 <reference key="NSColor" ref="555789289"/>
874 <reference key="NSColor" ref="555789289"/>
875 </object>
875 </object>
876 </object>
876 </object>
877 </object>
877 </object>
878 <nil key="NSMarkedAttributes"/>
878 <nil key="NSMarkedAttributes"/>
879 <object class="NSDictionary" key="NSLinkAttributes">
879 <object class="NSDictionary" key="NSLinkAttributes">
880 <bool key="EncodedWithXMLCoder">YES</bool>
880 <bool key="EncodedWithXMLCoder">YES</bool>
881 <object class="NSMutableArray" key="dict.sortedKeys">
881 <object class="NSMutableArray" key="dict.sortedKeys">
882 <bool key="EncodedWithXMLCoder">YES</bool>
882 <bool key="EncodedWithXMLCoder">YES</bool>
883 <reference ref="19777717"/>
883 <reference ref="19777717"/>
884 <string>NSUnderline</string>
884 <string>NSUnderline</string>
885 </object>
885 </object>
886 <object class="NSMutableArray" key="dict.values">
886 <object class="NSMutableArray" key="dict.values">
887 <bool key="EncodedWithXMLCoder">YES</bool>
887 <bool key="EncodedWithXMLCoder">YES</bool>
888 <object class="NSColor">
888 <object class="NSColor">
889 <int key="NSColorSpace">1</int>
889 <int key="NSColorSpace">1</int>
890 <bytes key="NSRGB">MCAwIDEAA</bytes>
890 <bytes key="NSRGB">MCAwIDEAA</bytes>
891 </object>
891 </object>
892 <integer value="1" id="9"/>
892 <integer value="1" id="9"/>
893 </object>
893 </object>
894 </object>
894 </object>
895 <nil key="NSDefaultParagraphStyle"/>
895 <nil key="NSDefaultParagraphStyle"/>
896 </object>
896 </object>
897 <int key="NSTVFlags">6</int>
897 <int key="NSTVFlags">6</int>
898 <string key="NSMaxSize">{480, 1e+07}</string>
898 <string key="NSMaxSize">{480, 1e+07}</string>
899 <string key="NSMinize">{84, 0}</string>
899 <string key="NSMinize">{84, 0}</string>
900 <nil key="NSDelegate"/>
900 <nil key="NSDelegate"/>
901 </object>
901 </object>
902 </object>
902 </object>
903 <string key="NSFrame">{{1, 1}, {433, 231}}</string>
903 <string key="NSFrame">{{1, 1}, {433, 231}}</string>
904 <string key="NSBounds">{{0, 38}, {433, 231}}</string>
904 <string key="NSBounds">{{0, 38}, {433, 231}}</string>
905 <reference key="NSSuperview" ref="188193463"/>
905 <reference key="NSSuperview" ref="188193463"/>
906 <reference key="NSWindow"/>
906 <reference key="NSWindow"/>
907 <reference key="NSNextKeyView" ref="163417131"/>
907 <reference key="NSNextKeyView" ref="163417131"/>
908 <reference key="NSDocView" ref="163417131"/>
908 <reference key="NSDocView" ref="163417131"/>
909 <object class="NSColor" key="NSBGColor" id="521347521">
909 <object class="NSColor" key="NSBGColor" id="521347521">
910 <int key="NSColorSpace">3</int>
910 <int key="NSColorSpace">3</int>
911 <bytes key="NSWhite">MQA</bytes>
911 <bytes key="NSWhite">MQA</bytes>
912 </object>
912 </object>
913 <object class="NSCursor" key="NSCursor">
913 <object class="NSCursor" key="NSCursor">
914 <string key="NSHotSpot">{4, -5}</string>
914 <string key="NSHotSpot">{4, -5}</string>
915 <int key="NSCursorType">1</int>
915 <int key="NSCursorType">1</int>
916 </object>
916 </object>
917 <int key="NScvFlags">4</int>
917 <int key="NScvFlags">4</int>
918 </object>
918 </object>
919 <object class="NSScroller" id="418410897">
919 <object class="NSScroller" id="418410897">
920 <reference key="NSNextResponder" ref="188193463"/>
920 <reference key="NSNextResponder" ref="188193463"/>
921 <int key="NSvFlags">-2147483392</int>
921 <int key="NSvFlags">-2147483392</int>
922 <string key="NSFrame">{{427, 1}, {15, 263}}</string>
922 <string key="NSFrame">{{427, 1}, {15, 263}}</string>
923 <reference key="NSSuperview" ref="188193463"/>
923 <reference key="NSSuperview" ref="188193463"/>
924 <reference key="NSWindow"/>
924 <reference key="NSWindow"/>
925 <reference key="NSTarget" ref="188193463"/>
925 <reference key="NSTarget" ref="188193463"/>
926 <string key="NSAction" id="688920982">_doScroller:</string>
926 <string key="NSAction" id="688920982">_doScroller:</string>
927 <double key="NSPercent">3.389175e-01</double>
927 <double key="NSPercent">3.389175e-01</double>
928 </object>
928 </object>
929 <object class="NSScroller" id="936733673">
929 <object class="NSScroller" id="936733673">
930 <reference key="NSNextResponder" ref="188193463"/>
930 <reference key="NSNextResponder" ref="188193463"/>
931 <int key="NSvFlags">256</int>
931 <int key="NSvFlags">256</int>
932 <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
932 <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
933 <reference key="NSSuperview" ref="188193463"/>
933 <reference key="NSSuperview" ref="188193463"/>
934 <reference key="NSWindow"/>
934 <reference key="NSWindow"/>
935 <int key="NSsFlags">1</int>
935 <int key="NSsFlags">1</int>
936 <reference key="NSTarget" ref="188193463"/>
936 <reference key="NSTarget" ref="188193463"/>
937 <reference key="NSAction" ref="688920982"/>
937 <reference key="NSAction" ref="688920982"/>
938 <double key="NSCurValue">1.000000e+00</double>
938 <double key="NSCurValue">1.000000e+00</double>
939 <double key="NSPercent">9.456522e-01</double>
939 <double key="NSPercent">9.456522e-01</double>
940 </object>
940 </object>
941 </object>
941 </object>
942 <string key="NSFrame">{{18, 14}, {435, 233}}</string>
942 <string key="NSFrame">{{18, 14}, {435, 233}}</string>
943 <reference key="NSSuperview" ref="597872307"/>
943 <reference key="NSSuperview" ref="597872307"/>
944 <reference key="NSWindow"/>
944 <reference key="NSWindow"/>
945 <reference key="NSNextKeyView" ref="638544389"/>
945 <reference key="NSNextKeyView" ref="638544389"/>
946 <int key="NSsFlags">530</int>
946 <int key="NSsFlags">530</int>
947 <reference key="NSVScroller" ref="418410897"/>
947 <reference key="NSVScroller" ref="418410897"/>
948 <reference key="NSHScroller" ref="936733673"/>
948 <reference key="NSHScroller" ref="936733673"/>
949 <reference key="NSContentView" ref="638544389"/>
949 <reference key="NSContentView" ref="638544389"/>
950 </object>
950 </object>
951 </object>
951 </object>
952 <string key="NSFrame">{{1, 1}, {471, 257}}</string>
952 <string key="NSFrame">{{1, 1}, {471, 257}}</string>
953 <reference key="NSSuperview" ref="554641139"/>
953 <reference key="NSSuperview" ref="554641139"/>
954 <reference key="NSWindow"/>
954 <reference key="NSWindow"/>
955 </object>
955 </object>
956 </object>
956 </object>
957 <string key="NSFrameSize">{473, 273}</string>
957 <string key="NSFrameSize">{473, 273}</string>
958 <reference key="NSSuperview" ref="741760375"/>
958 <reference key="NSSuperview" ref="741760375"/>
959 <reference key="NSWindow"/>
959 <reference key="NSWindow"/>
960 <string key="NSOffsets" id="1055927954">{0, 0}</string>
960 <string key="NSOffsets" id="1055927954">{0, 0}</string>
961 <object class="NSTextFieldCell" key="NSTitleCell">
961 <object class="NSTextFieldCell" key="NSTitleCell">
962 <int key="NSCellFlags">67239424</int>
962 <int key="NSCellFlags">67239424</int>
963 <int key="NSCellFlags2">0</int>
963 <int key="NSCellFlags2">0</int>
964 <string key="NSContents">Console</string>
964 <string key="NSContents">Console</string>
965 <object class="NSFont" key="NSSupport" id="26">
965 <object class="NSFont" key="NSSupport" id="26">
966 <string key="NSName" id="257617473">LucidaGrande</string>
966 <string key="NSName" id="378950370">LucidaGrande</string>
967 <double key="NSSize">1.100000e+01</double>
967 <double key="NSSize">1.100000e+01</double>
968 <int key="NSfFlags">3100</int>
968 <int key="NSfFlags">3100</int>
969 </object>
969 </object>
970 <object class="NSColor" key="NSBackgroundColor" id="131515055">
970 <object class="NSColor" key="NSBackgroundColor" id="131515055">
971 <int key="NSColorSpace">6</int>
971 <int key="NSColorSpace">6</int>
972 <reference key="NSCatalogName" ref="945274157"/>
972 <reference key="NSCatalogName" ref="484387293"/>
973 <string key="NSColorName">textBackgroundColor</string>
973 <string key="NSColorName">textBackgroundColor</string>
974 <reference key="NSColor" ref="521347521"/>
974 <reference key="NSColor" ref="521347521"/>
975 </object>
975 </object>
976 <object class="NSColor" key="NSTextColor">
976 <object class="NSColor" key="NSTextColor">
977 <int key="NSColorSpace">3</int>
977 <int key="NSColorSpace">3</int>
978 <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
978 <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
979 </object>
979 </object>
980 </object>
980 </object>
981 <reference key="NSContentView" ref="597872307"/>
981 <reference key="NSContentView" ref="597872307"/>
982 <int key="NSBorderType">1</int>
982 <int key="NSBorderType">1</int>
983 <int key="NSBoxType">0</int>
983 <int key="NSBoxType">0</int>
984 <int key="NSTitlePosition">2</int>
984 <int key="NSTitlePosition">2</int>
985 <bool key="NSTransparent">NO</bool>
985 <bool key="NSTransparent">NO</bool>
986 </object>
986 </object>
987 <object class="NSBox" id="764100755">
987 <object class="NSBox" id="764100755">
988 <reference key="NSNextResponder" ref="741760375"/>
988 <reference key="NSNextResponder" ref="741760375"/>
989 <int key="NSvFlags">51</int>
989 <int key="NSvFlags">51</int>
990 <object class="NSMutableArray" key="NSSubviews">
990 <object class="NSMutableArray" key="NSSubviews">
991 <bool key="EncodedWithXMLCoder">YES</bool>
991 <bool key="EncodedWithXMLCoder">YES</bool>
992 <object class="NSView" id="581281551">
992 <object class="NSView" id="581281551">
993 <reference key="NSNextResponder" ref="764100755"/>
993 <reference key="NSNextResponder" ref="764100755"/>
994 <int key="NSvFlags">256</int>
994 <int key="NSvFlags">256</int>
995 <object class="NSMutableArray" key="NSSubviews">
995 <object class="NSMutableArray" key="NSSubviews">
996 <bool key="EncodedWithXMLCoder">YES</bool>
996 <bool key="EncodedWithXMLCoder">YES</bool>
997 <object class="NSScrollView" id="516244966">
997 <object class="NSScrollView" id="516244966">
998 <reference key="NSNextResponder" ref="581281551"/>
998 <reference key="NSNextResponder" ref="581281551"/>
999 <int key="NSvFlags">274</int>
999 <int key="NSvFlags">274</int>
1000 <object class="NSMutableArray" key="NSSubviews">
1000 <object class="NSMutableArray" key="NSSubviews">
1001 <bool key="EncodedWithXMLCoder">YES</bool>
1001 <bool key="EncodedWithXMLCoder">YES</bool>
1002 <object class="NSClipView" id="119083427">
1002 <object class="NSClipView" id="119083427">
1003 <reference key="NSNextResponder" ref="516244966"/>
1003 <reference key="NSNextResponder" ref="516244966"/>
1004 <int key="NSvFlags">2304</int>
1004 <int key="NSvFlags">2304</int>
1005 <object class="NSMutableArray" key="NSSubviews">
1005 <object class="NSMutableArray" key="NSSubviews">
1006 <bool key="EncodedWithXMLCoder">YES</bool>
1006 <bool key="EncodedWithXMLCoder">YES</bool>
1007 <object class="NSTableView" id="23853726">
1007 <object class="NSTableView" id="23853726">
1008 <reference key="NSNextResponder" ref="119083427"/>
1008 <reference key="NSNextResponder" ref="119083427"/>
1009 <int key="NSvFlags">256</int>
1009 <int key="NSvFlags">256</int>
1010 <string key="NSFrameSize">{156, 200}</string>
1010 <string key="NSFrameSize">{156, 200}</string>
1011 <reference key="NSSuperview" ref="119083427"/>
1011 <reference key="NSSuperview" ref="119083427"/>
1012 <reference key="NSWindow"/>
1012 <reference key="NSWindow"/>
1013 <bool key="NSEnabled">YES</bool>
1013 <bool key="NSEnabled">YES</bool>
1014 <object class="NSTableHeaderView" key="NSHeaderView" id="1048357090">
1014 <object class="NSTableHeaderView" key="NSHeaderView" id="1048357090">
1015 <reference key="NSNextResponder" ref="746968320"/>
1015 <reference key="NSNextResponder" ref="746968320"/>
1016 <int key="NSvFlags">256</int>
1016 <int key="NSvFlags">256</int>
1017 <string key="NSFrameSize">{156, 17}</string>
1017 <string key="NSFrameSize">{156, 17}</string>
1018 <reference key="NSSuperview" ref="746968320"/>
1018 <reference key="NSSuperview" ref="746968320"/>
1019 <reference key="NSWindow"/>
1019 <reference key="NSWindow"/>
1020 <reference key="NSTableView" ref="23853726"/>
1020 <reference key="NSTableView" ref="23853726"/>
1021 </object>
1021 </object>
1022 <object class="_NSCornerView" key="NSCornerView" id="212282722">
1022 <object class="_NSCornerView" key="NSCornerView" id="212282722">
1023 <reference key="NSNextResponder" ref="516244966"/>
1023 <reference key="NSNextResponder" ref="516244966"/>
1024 <int key="NSvFlags">256</int>
1024 <int key="NSvFlags">256</int>
1025 <string key="NSFrame">{{157, 0}, {16, 17}}</string>
1025 <string key="NSFrame">{{157, 0}, {16, 17}}</string>
1026 <reference key="NSSuperview" ref="516244966"/>
1026 <reference key="NSSuperview" ref="516244966"/>
1027 <reference key="NSWindow"/>
1027 <reference key="NSWindow"/>
1028 </object>
1028 </object>
1029 <object class="NSMutableArray" key="NSTableColumns">
1029 <object class="NSMutableArray" key="NSTableColumns">
1030 <bool key="EncodedWithXMLCoder">YES</bool>
1030 <bool key="EncodedWithXMLCoder">YES</bool>
1031 <object class="NSTableColumn" id="920426212">
1031 <object class="NSTableColumn" id="920426212">
1032 <double key="NSWidth">7.100000e+01</double>
1032 <double key="NSWidth">7.100000e+01</double>
1033 <double key="NSMinWidth">4.000000e+01</double>
1033 <double key="NSMinWidth">4.000000e+01</double>
1034 <double key="NSMaxWidth">1.000000e+03</double>
1034 <double key="NSMaxWidth">1.000000e+03</double>
1035 <object class="NSTableHeaderCell" key="NSHeaderCell">
1035 <object class="NSTableHeaderCell" key="NSHeaderCell">
1036 <int key="NSCellFlags">75628032</int>
1036 <int key="NSCellFlags">75628032</int>
1037 <int key="NSCellFlags2">0</int>
1037 <int key="NSCellFlags2">0</int>
1038 <string key="NSContents">Variable</string>
1038 <string key="NSContents">Variable</string>
1039 <reference key="NSSupport" ref="26"/>
1039 <reference key="NSSupport" ref="26"/>
1040 <object class="NSColor" key="NSBackgroundColor" id="890615311">
1040 <object class="NSColor" key="NSBackgroundColor" id="890615311">
1041 <int key="NSColorSpace">3</int>
1041 <int key="NSColorSpace">3</int>
1042 <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
1042 <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
1043 </object>
1043 </object>
1044 <object class="NSColor" key="NSTextColor" id="866628999">
1044 <object class="NSColor" key="NSTextColor" id="866628999">
1045 <int key="NSColorSpace">6</int>
1045 <int key="NSColorSpace">6</int>
1046 <reference key="NSCatalogName" ref="945274157"/>
1046 <reference key="NSCatalogName" ref="484387293"/>
1047 <string key="NSColorName">headerTextColor</string>
1047 <string key="NSColorName">headerTextColor</string>
1048 <reference key="NSColor" ref="555789289"/>
1048 <reference key="NSColor" ref="555789289"/>
1049 </object>
1049 </object>
1050 </object>
1050 </object>
1051 <object class="NSTextFieldCell" key="NSDataCell" id="525071236">
1051 <object class="NSTextFieldCell" key="NSDataCell" id="525071236">
1052 <int key="NSCellFlags">337772096</int>
1052 <int key="NSCellFlags">337772096</int>
1053 <int key="NSCellFlags2">2048</int>
1053 <int key="NSCellFlags2">2048</int>
1054 <string key="NSContents" id="590184478">Text Cell</string>
1054 <string key="NSContents" id="456204663">Text Cell</string>
1055 <object class="NSFont" key="NSSupport" id="8196371">
1055 <object class="NSFont" key="NSSupport" id="8196371">
1056 <reference key="NSName" ref="257617473"/>
1056 <reference key="NSName" ref="378950370"/>
1057 <double key="NSSize">1.300000e+01</double>
1057 <double key="NSSize">1.300000e+01</double>
1058 <int key="NSfFlags">1044</int>
1058 <int key="NSfFlags">1044</int>
1059 </object>
1059 </object>
1060 <reference key="NSControlView" ref="23853726"/>
1060 <reference key="NSControlView" ref="23853726"/>
1061 <object class="NSColor" key="NSBackgroundColor" id="224028609">
1061 <object class="NSColor" key="NSBackgroundColor" id="224028609">
1062 <int key="NSColorSpace">6</int>
1062 <int key="NSColorSpace">6</int>
1063 <reference key="NSCatalogName" ref="945274157"/>
1063 <reference key="NSCatalogName" ref="484387293"/>
1064 <string key="NSColorName">controlBackgroundColor</string>
1064 <string key="NSColorName">controlBackgroundColor</string>
1065 <reference key="NSColor" ref="377165725"/>
1065 <reference key="NSColor" ref="377165725"/>
1066 </object>
1066 </object>
1067 <object class="NSColor" key="NSTextColor" id="205104690">
1067 <object class="NSColor" key="NSTextColor" id="205104690">
1068 <int key="NSColorSpace">6</int>
1068 <int key="NSColorSpace">6</int>
1069 <reference key="NSCatalogName" ref="945274157"/>
1069 <reference key="NSCatalogName" ref="484387293"/>
1070 <string key="NSColorName">controlTextColor</string>
1070 <string key="NSColorName">controlTextColor</string>
1071 <reference key="NSColor" ref="555789289"/>
1071 <reference key="NSColor" ref="555789289"/>
1072 </object>
1072 </object>
1073 </object>
1073 </object>
1074 <int key="NSResizingMask">3</int>
1074 <int key="NSResizingMask">3</int>
1075 <bool key="NSIsResizeable">YES</bool>
1075 <bool key="NSIsResizeable">YES</bool>
1076 <bool key="NSIsEditable">YES</bool>
1076 <bool key="NSIsEditable">YES</bool>
1077 <reference key="NSTableView" ref="23853726"/>
1077 <reference key="NSTableView" ref="23853726"/>
1078 </object>
1078 </object>
1079 <object class="NSTableColumn" id="857054683">
1079 <object class="NSTableColumn" id="857054683">
1080 <double key="NSWidth">7.900000e+01</double>
1080 <double key="NSWidth">7.900000e+01</double>
1081 <double key="NSMinWidth">4.000000e+01</double>
1081 <double key="NSMinWidth">4.000000e+01</double>
1082 <double key="NSMaxWidth">1.000000e+03</double>
1082 <double key="NSMaxWidth">1.000000e+03</double>
1083 <object class="NSTableHeaderCell" key="NSHeaderCell">
1083 <object class="NSTableHeaderCell" key="NSHeaderCell">
1084 <int key="NSCellFlags">75628032</int>
1084 <int key="NSCellFlags">75628032</int>
1085 <int key="NSCellFlags2">0</int>
1085 <int key="NSCellFlags2">0</int>
1086 <string key="NSContents">Value</string>
1086 <string key="NSContents">Value</string>
1087 <reference key="NSSupport" ref="26"/>
1087 <reference key="NSSupport" ref="26"/>
1088 <reference key="NSBackgroundColor" ref="890615311"/>
1088 <reference key="NSBackgroundColor" ref="890615311"/>
1089 <reference key="NSTextColor" ref="866628999"/>
1089 <reference key="NSTextColor" ref="866628999"/>
1090 </object>
1090 </object>
1091 <object class="NSTextFieldCell" key="NSDataCell" id="377147224">
1091 <object class="NSTextFieldCell" key="NSDataCell" id="377147224">
1092 <int key="NSCellFlags">337772096</int>
1092 <int key="NSCellFlags">337772096</int>
1093 <int key="NSCellFlags2">2048</int>
1093 <int key="NSCellFlags2">2048</int>
1094 <reference key="NSContents" ref="590184478"/>
1094 <reference key="NSContents" ref="456204663"/>
1095 <reference key="NSSupport" ref="8196371"/>
1095 <reference key="NSSupport" ref="8196371"/>
1096 <reference key="NSControlView" ref="23853726"/>
1096 <reference key="NSControlView" ref="23853726"/>
1097 <reference key="NSBackgroundColor" ref="224028609"/>
1097 <reference key="NSBackgroundColor" ref="224028609"/>
1098 <reference key="NSTextColor" ref="205104690"/>
1098 <reference key="NSTextColor" ref="205104690"/>
1099 </object>
1099 </object>
1100 <int key="NSResizingMask">3</int>
1100 <int key="NSResizingMask">3</int>
1101 <bool key="NSIsResizeable">YES</bool>
1101 <bool key="NSIsResizeable">YES</bool>
1102 <bool key="NSIsEditable">YES</bool>
1102 <bool key="NSIsEditable">YES</bool>
1103 <reference key="NSTableView" ref="23853726"/>
1103 <reference key="NSTableView" ref="23853726"/>
1104 </object>
1104 </object>
1105 </object>
1105 </object>
1106 <double key="NSIntercellSpacingWidth">3.000000e+00</double>
1106 <double key="NSIntercellSpacingWidth">3.000000e+00</double>
1107 <double key="NSIntercellSpacingHeight">2.000000e+00</double>
1107 <double key="NSIntercellSpacingHeight">2.000000e+00</double>
1108 <reference key="NSBackgroundColor" ref="521347521"/>
1108 <reference key="NSBackgroundColor" ref="521347521"/>
1109 <object class="NSColor" key="NSGridColor">
1109 <object class="NSColor" key="NSGridColor">
1110 <int key="NSColorSpace">6</int>
1110 <int key="NSColorSpace">6</int>
1111 <reference key="NSCatalogName" ref="945274157"/>
1111 <reference key="NSCatalogName" ref="484387293"/>
1112 <string key="NSColorName">gridColor</string>
1112 <string key="NSColorName">gridColor</string>
1113 <object class="NSColor" key="NSColor">
1113 <object class="NSColor" key="NSColor">
1114 <int key="NSColorSpace">3</int>
1114 <int key="NSColorSpace">3</int>
1115 <bytes key="NSWhite">MC41AA</bytes>
1115 <bytes key="NSWhite">MC41AA</bytes>
1116 </object>
1116 </object>
1117 </object>
1117 </object>
1118 <double key="NSRowHeight">1.700000e+01</double>
1118 <double key="NSRowHeight">1.700000e+01</double>
1119 <int key="NSTvFlags">-692060160</int>
1119 <int key="NSTvFlags">-692060160</int>
1120 <int key="NSGridStyleMask">1</int>
1120 <int key="NSGridStyleMask">1</int>
1121 <int key="NSColumnAutoresizingStyle">4</int>
1121 <int key="NSColumnAutoresizingStyle">4</int>
1122 <int key="NSDraggingSourceMaskForLocal">15</int>
1122 <int key="NSDraggingSourceMaskForLocal">15</int>
1123 <int key="NSDraggingSourceMaskForNonLocal">0</int>
1123 <int key="NSDraggingSourceMaskForNonLocal">0</int>
1124 <bool key="NSAllowsTypeSelect">YES</bool>
1124 <bool key="NSAllowsTypeSelect">YES</bool>
1125 </object>
1125 </object>
1126 </object>
1126 </object>
1127 <string key="NSFrame">{{1, 17}, {156, 200}}</string>
1127 <string key="NSFrame">{{1, 17}, {156, 200}}</string>
1128 <reference key="NSSuperview" ref="516244966"/>
1128 <reference key="NSSuperview" ref="516244966"/>
1129 <reference key="NSWindow"/>
1129 <reference key="NSWindow"/>
1130 <reference key="NSNextKeyView" ref="23853726"/>
1130 <reference key="NSNextKeyView" ref="23853726"/>
1131 <reference key="NSDocView" ref="23853726"/>
1131 <reference key="NSDocView" ref="23853726"/>
1132 <reference key="NSBGColor" ref="224028609"/>
1132 <reference key="NSBGColor" ref="224028609"/>
1133 <int key="NScvFlags">4</int>
1133 <int key="NScvFlags">4</int>
1134 </object>
1134 </object>
1135 <object class="NSScroller" id="512953560">
1135 <object class="NSScroller" id="512953560">
1136 <reference key="NSNextResponder" ref="516244966"/>
1136 <reference key="NSNextResponder" ref="516244966"/>
1137 <int key="NSvFlags">256</int>
1137 <int key="NSvFlags">256</int>
1138 <string key="NSFrame">{{157, 17}, {15, 200}}</string>
1138 <string key="NSFrame">{{157, 17}, {15, 200}}</string>
1139 <reference key="NSSuperview" ref="516244966"/>
1139 <reference key="NSSuperview" ref="516244966"/>
1140 <reference key="NSWindow"/>
1140 <reference key="NSWindow"/>
1141 <reference key="NSTarget" ref="516244966"/>
1141 <reference key="NSTarget" ref="516244966"/>
1142 <reference key="NSAction" ref="688920982"/>
1142 <reference key="NSAction" ref="688920982"/>
1143 <double key="NSPercent">9.961240e-01</double>
1143 <double key="NSPercent">9.961240e-01</double>
1144 </object>
1144 </object>
1145 <object class="NSScroller" id="47103270">
1145 <object class="NSScroller" id="47103270">
1146 <reference key="NSNextResponder" ref="516244966"/>
1146 <reference key="NSNextResponder" ref="516244966"/>
1147 <int key="NSvFlags">256</int>
1147 <int key="NSvFlags">256</int>
1148 <string key="NSFrame">{{1, 217}, {156, 15}}</string>
1148 <string key="NSFrame">{{1, 217}, {156, 15}}</string>
1149 <reference key="NSSuperview" ref="516244966"/>
1149 <reference key="NSSuperview" ref="516244966"/>
1150 <reference key="NSWindow"/>
1150 <reference key="NSWindow"/>
1151 <int key="NSsFlags">1</int>
1151 <int key="NSsFlags">1</int>
1152 <reference key="NSTarget" ref="516244966"/>
1152 <reference key="NSTarget" ref="516244966"/>
1153 <reference key="NSAction" ref="688920982"/>
1153 <reference key="NSAction" ref="688920982"/>
1154 <double key="NSPercent">7.179487e-01</double>
1154 <double key="NSPercent">7.179487e-01</double>
1155 </object>
1155 </object>
1156 <object class="NSClipView" id="746968320">
1156 <object class="NSClipView" id="746968320">
1157 <reference key="NSNextResponder" ref="516244966"/>
1157 <reference key="NSNextResponder" ref="516244966"/>
1158 <int key="NSvFlags">2304</int>
1158 <int key="NSvFlags">2304</int>
1159 <object class="NSMutableArray" key="NSSubviews">
1159 <object class="NSMutableArray" key="NSSubviews">
1160 <bool key="EncodedWithXMLCoder">YES</bool>
1160 <bool key="EncodedWithXMLCoder">YES</bool>
1161 <reference ref="1048357090"/>
1161 <reference ref="1048357090"/>
1162 </object>
1162 </object>
1163 <string key="NSFrame">{{1, 0}, {156, 17}}</string>
1163 <string key="NSFrame">{{1, 0}, {156, 17}}</string>
1164 <reference key="NSSuperview" ref="516244966"/>
1164 <reference key="NSSuperview" ref="516244966"/>
1165 <reference key="NSWindow"/>
1165 <reference key="NSWindow"/>
1166 <reference key="NSNextKeyView" ref="1048357090"/>
1166 <reference key="NSNextKeyView" ref="1048357090"/>
1167 <reference key="NSDocView" ref="1048357090"/>
1167 <reference key="NSDocView" ref="1048357090"/>
1168 <reference key="NSBGColor" ref="224028609"/>
1168 <reference key="NSBGColor" ref="224028609"/>
1169 <int key="NScvFlags">4</int>
1169 <int key="NScvFlags">4</int>
1170 </object>
1170 </object>
1171 <reference ref="212282722"/>
1171 <reference ref="212282722"/>
1172 </object>
1172 </object>
1173 <string key="NSFrame">{{18, 14}, {173, 233}}</string>
1173 <string key="NSFrame">{{18, 14}, {173, 233}}</string>
1174 <reference key="NSSuperview" ref="581281551"/>
1174 <reference key="NSSuperview" ref="581281551"/>
1175 <reference key="NSWindow"/>
1175 <reference key="NSWindow"/>
1176 <reference key="NSNextKeyView" ref="119083427"/>
1176 <reference key="NSNextKeyView" ref="119083427"/>
1177 <int key="NSsFlags">50</int>
1177 <int key="NSsFlags">50</int>
1178 <reference key="NSVScroller" ref="512953560"/>
1178 <reference key="NSVScroller" ref="512953560"/>
1179 <reference key="NSHScroller" ref="47103270"/>
1179 <reference key="NSHScroller" ref="47103270"/>
1180 <reference key="NSContentView" ref="119083427"/>
1180 <reference key="NSContentView" ref="119083427"/>
1181 <reference key="NSHeaderClipView" ref="746968320"/>
1181 <reference key="NSHeaderClipView" ref="746968320"/>
1182 <reference key="NSCornerView" ref="212282722"/>
1182 <reference key="NSCornerView" ref="212282722"/>
1183 <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
1183 <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
1184 </object>
1184 </object>
1185 </object>
1185 </object>
1186 <string key="NSFrame">{{1, 1}, {209, 257}}</string>
1186 <string key="NSFrame">{{1, 1}, {209, 257}}</string>
1187 <reference key="NSSuperview" ref="764100755"/>
1187 <reference key="NSSuperview" ref="764100755"/>
1188 <reference key="NSWindow"/>
1188 <reference key="NSWindow"/>
1189 </object>
1189 </object>
1190 </object>
1190 </object>
1191 <string key="NSFrame">{{474, 0}, {211, 273}}</string>
1191 <string key="NSFrame">{{474, 0}, {211, 273}}</string>
1192 <reference key="NSSuperview" ref="741760375"/>
1192 <reference key="NSSuperview" ref="741760375"/>
1193 <reference key="NSWindow"/>
1193 <reference key="NSWindow"/>
1194 <reference key="NSOffsets" ref="1055927954"/>
1194 <reference key="NSOffsets" ref="1055927954"/>
1195 <object class="NSTextFieldCell" key="NSTitleCell">
1195 <object class="NSTextFieldCell" key="NSTitleCell">
1196 <int key="NSCellFlags">67239424</int>
1196 <int key="NSCellFlags">67239424</int>
1197 <int key="NSCellFlags2">0</int>
1197 <int key="NSCellFlags2">0</int>
1198 <string key="NSContents">Workspace</string>
1198 <string key="NSContents">Workspace</string>
1199 <reference key="NSSupport" ref="26"/>
1199 <reference key="NSSupport" ref="26"/>
1200 <reference key="NSBackgroundColor" ref="131515055"/>
1200 <reference key="NSBackgroundColor" ref="131515055"/>
1201 <object class="NSColor" key="NSTextColor">
1201 <object class="NSColor" key="NSTextColor">
1202 <int key="NSColorSpace">3</int>
1202 <int key="NSColorSpace">3</int>
1203 <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
1203 <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
1204 </object>
1204 </object>
1205 </object>
1205 </object>
1206 <reference key="NSContentView" ref="581281551"/>
1206 <reference key="NSContentView" ref="581281551"/>
1207 <int key="NSBorderType">1</int>
1207 <int key="NSBorderType">1</int>
1208 <int key="NSBoxType">0</int>
1208 <int key="NSBoxType">0</int>
1209 <int key="NSTitlePosition">2</int>
1209 <int key="NSTitlePosition">2</int>
1210 <bool key="NSTransparent">NO</bool>
1210 <bool key="NSTransparent">NO</bool>
1211 </object>
1211 </object>
1212 </object>
1212 </object>
1213 <string key="NSFrame">{{20, 44}, {685, 273}}</string>
1213 <string key="NSFrame">{{20, 44}, {685, 273}}</string>
1214 <reference key="NSSuperview" ref="439893737"/>
1214 <reference key="NSSuperview" ref="439893737"/>
1215 <reference key="NSWindow"/>
1215 <reference key="NSWindow"/>
1216 <bool key="NSIsVertical">YES</bool>
1216 <bool key="NSIsVertical">YES</bool>
1217 <int key="NSDividerStyle">2</int>
1217 <int key="NSDividerStyle">2</int>
1218 <string key="NSAutosaveName">ipython1_console_workspace_split</string>
1218 <string key="NSAutosaveName">ipython1_console_workspace_split</string>
1219 </object>
1219 </object>
1220 <object class="NSProgressIndicator" id="74807016">
1220 <object class="NSProgressIndicator" id="74807016">
1221 <reference key="NSNextResponder" ref="439893737"/>
1221 <reference key="NSNextResponder" ref="439893737"/>
1222 <int key="NSvFlags">1313</int>
1222 <int key="NSvFlags">1313</int>
1223 <object class="NSPSMatrix" key="NSDrawMatrix"/>
1223 <object class="NSPSMatrix" key="NSDrawMatrix"/>
1224 <string key="NSFrame">{{689, 20}, {16, 16}}</string>
1224 <string key="NSFrame">{{689, 20}, {16, 16}}</string>
1225 <reference key="NSSuperview" ref="439893737"/>
1225 <reference key="NSSuperview" ref="439893737"/>
1226 <reference key="NSWindow"/>
1226 <reference key="NSWindow"/>
1227 <int key="NSpiFlags">28938</int>
1227 <int key="NSpiFlags">28938</int>
1228 <double key="NSMinValue">1.600000e+01</double>
1228 <double key="NSMinValue">1.600000e+01</double>
1229 <double key="NSMaxValue">1.000000e+02</double>
1229 <double key="NSMaxValue">1.000000e+02</double>
1230 </object>
1230 </object>
1231 </object>
1231 </object>
1232 <string key="NSFrameSize">{725, 337}</string>
1232 <string key="NSFrameSize">{725, 337}</string>
1233 <reference key="NSSuperview"/>
1233 <reference key="NSSuperview"/>
1234 <reference key="NSWindow"/>
1234 <reference key="NSWindow"/>
1235 </object>
1235 </object>
1236 <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
1236 <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
1237 <string key="NSFrameAutosaveName">ipython1_sandbox</string>
1237 <string key="NSFrameAutosaveName">ipython1_sandbox</string>
1238 </object>
1238 </object>
1239 <object class="NSCustomObject" id="610635028">
1239 <object class="NSCustomObject" id="610635028">
1240 <string key="NSClassName" id="982950837">IPython1SandboxAppDelegate</string>
1240 <string key="NSClassName" id="982950837">IPython1SandboxAppDelegate</string>
1241 </object>
1241 </object>
1242 <object class="NSDictionaryController" id="808393665">
1242 <object class="NSDictionaryController" id="808393665">
1243 <object class="NSMutableArray" key="NSDeclaredKeys">
1243 <object class="NSMutableArray" key="NSDeclaredKeys">
1244 <bool key="EncodedWithXMLCoder">YES</bool>
1244 <bool key="EncodedWithXMLCoder">YES</bool>
1245 <string>keys</string>
1245 <string>keys</string>
1246 <string id="181461860">key</string>
1246 <string id="181461860">key</string>
1247 <string id="276523235">value</string>
1247 <string id="276523235">value</string>
1248 </object>
1248 </object>
1249 <bool key="NSEditable">YES</bool>
1249 <bool key="NSEditable">YES</bool>
1250 <bool key="NSAvoidsEmptySelection">YES</bool>
1250 <bool key="NSAvoidsEmptySelection">YES</bool>
1251 <bool key="NSPreservesSelection">YES</bool>
1251 <bool key="NSPreservesSelection">YES</bool>
1252 <bool key="NSSelectsInsertedObjects">YES</bool>
1252 <bool key="NSSelectsInsertedObjects">YES</bool>
1253 <bool key="NSFilterRestrictsInsertion">YES</bool>
1253 <bool key="NSFilterRestrictsInsertion">YES</bool>
1254 <object class="NSArray" key="NSSortDescriptors">
1254 <object class="NSArray" key="NSSortDescriptors">
1255 <bool key="EncodedWithXMLCoder">YES</bool>
1255 <bool key="EncodedWithXMLCoder">YES</bool>
1256 <object class="NSSortDescriptor">
1256 <object class="NSSortDescriptor">
1257 <reference key="NSKey" ref="181461860"/>
1257 <reference key="NSKey" ref="181461860"/>
1258 <bool key="NSAscending">YES</bool>
1258 <bool key="NSAscending">YES</bool>
1259 <string key="NSSelector">compare:</string>
1259 <string key="NSSelector">compare:</string>
1260 </object>
1260 </object>
1261 </object>
1261 </object>
1262 <bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
1262 <bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
1263 <reference key="NSInitialKey" ref="181461860"/>
1263 <reference key="NSInitialKey" ref="181461860"/>
1264 <reference key="NSInitialValue" ref="276523235"/>
1264 <reference key="NSInitialValue" ref="276523235"/>
1265 </object>
1265 </object>
1266 <object class="NSCustomObject" id="631572152">
1266 <object class="NSCustomObject" id="631572152">
1267 <string key="NSClassName" id="695797635">IPythonCocoaController</string>
1267 <string key="NSClassName" id="695797635">IPythonCocoaController</string>
1268 </object>
1268 </object>
1269 </object>
1269 </object>
1270 <object class="IBObjectContainer" key="IBDocument.Objects">
1270 <object class="IBObjectContainer" key="IBDocument.Objects">
1271 <object class="NSMutableArray" key="connectionRecords">
1271 <object class="NSMutableArray" key="connectionRecords">
1272 <bool key="EncodedWithXMLCoder">YES</bool>
1272 <bool key="EncodedWithXMLCoder">YES</bool>
1273 <object class="IBConnectionRecord">
1273 <object class="IBConnectionRecord">
1274 <object class="IBActionConnection" key="connection">
1274 <object class="IBActionConnection" key="connection">
1275 <string key="label">performMiniaturize:</string>
1275 <string key="label">performMiniaturize:</string>
1276 <reference key="source" ref="1014"/>
1276 <reference key="source" ref="1014"/>
1277 <reference key="destination" ref="1011231497"/>
1277 <reference key="destination" ref="1011231497"/>
1278 </object>
1278 </object>
1279 <int key="connectionID">37</int>
1279 <int key="connectionID">37</int>
1280 </object>
1280 </object>
1281 <object class="IBConnectionRecord">
1281 <object class="IBConnectionRecord">
1282 <object class="IBActionConnection" key="connection">
1282 <object class="IBActionConnection" key="connection">
1283 <string key="label">arrangeInFront:</string>
1283 <string key="label">arrangeInFront:</string>
1284 <reference key="source" ref="1014"/>
1284 <reference key="source" ref="1014"/>
1285 <reference key="destination" ref="625202149"/>
1285 <reference key="destination" ref="625202149"/>
1286 </object>
1286 </object>
1287 <int key="connectionID">39</int>
1287 <int key="connectionID">39</int>
1288 </object>
1288 </object>
1289 <object class="IBConnectionRecord">
1289 <object class="IBConnectionRecord">
1290 <object class="IBActionConnection" key="connection">
1290 <object class="IBActionConnection" key="connection">
1291 <string key="label">print:</string>
1291 <string key="label">print:</string>
1292 <reference key="source" ref="1014"/>
1292 <reference key="source" ref="1014"/>
1293 <reference key="destination" ref="49223823"/>
1293 <reference key="destination" ref="49223823"/>
1294 </object>
1294 </object>
1295 <int key="connectionID">86</int>
1295 <int key="connectionID">86</int>
1296 </object>
1296 </object>
1297 <object class="IBConnectionRecord">
1297 <object class="IBConnectionRecord">
1298 <object class="IBActionConnection" key="connection">
1298 <object class="IBActionConnection" key="connection">
1299 <string key="label">runPageLayout:</string>
1299 <string key="label">runPageLayout:</string>
1300 <reference key="source" ref="1014"/>
1300 <reference key="source" ref="1014"/>
1301 <reference key="destination" ref="294629803"/>
1301 <reference key="destination" ref="294629803"/>
1302 </object>
1302 </object>
1303 <int key="connectionID">87</int>
1303 <int key="connectionID">87</int>
1304 </object>
1304 </object>
1305 <object class="IBConnectionRecord">
1305 <object class="IBConnectionRecord">
1306 <object class="IBActionConnection" key="connection">
1306 <object class="IBActionConnection" key="connection">
1307 <string key="label">clearRecentDocuments:</string>
1307 <string key="label">clearRecentDocuments:</string>
1308 <reference key="source" ref="1014"/>
1308 <reference key="source" ref="1014"/>
1309 <reference key="destination" ref="759406840"/>
1309 <reference key="destination" ref="759406840"/>
1310 </object>
1310 </object>
1311 <int key="connectionID">127</int>
1311 <int key="connectionID">127</int>
1312 </object>
1312 </object>
1313 <object class="IBConnectionRecord">
1313 <object class="IBConnectionRecord">
1314 <object class="IBActionConnection" key="connection">
1314 <object class="IBActionConnection" key="connection">
1315 <string key="label">orderFrontStandardAboutPanel:</string>
1315 <string key="label">orderFrontStandardAboutPanel:</string>
1316 <reference key="source" ref="1021"/>
1316 <reference key="source" ref="1021"/>
1317 <reference key="destination" ref="238522557"/>
1317 <reference key="destination" ref="238522557"/>
1318 </object>
1318 </object>
1319 <int key="connectionID">142</int>
1319 <int key="connectionID">142</int>
1320 </object>
1320 </object>
1321 <object class="IBConnectionRecord">
1321 <object class="IBConnectionRecord">
1322 <object class="IBActionConnection" key="connection">
1322 <object class="IBActionConnection" key="connection">
1323 <string key="label">performClose:</string>
1323 <string key="label">performClose:</string>
1324 <reference key="source" ref="1014"/>
1324 <reference key="source" ref="1014"/>
1325 <reference key="destination" ref="776162233"/>
1325 <reference key="destination" ref="776162233"/>
1326 </object>
1326 </object>
1327 <int key="connectionID">193</int>
1327 <int key="connectionID">193</int>
1328 </object>
1328 </object>
1329 <object class="IBConnectionRecord">
1329 <object class="IBConnectionRecord">
1330 <object class="IBActionConnection" key="connection">
1330 <object class="IBActionConnection" key="connection">
1331 <string key="label">toggleContinuousSpellChecking:</string>
1331 <string key="label">toggleContinuousSpellChecking:</string>
1332 <reference key="source" ref="1014"/>
1332 <reference key="source" ref="1014"/>
1333 <reference key="destination" ref="948374510"/>
1333 <reference key="destination" ref="948374510"/>
1334 </object>
1334 </object>
1335 <int key="connectionID">222</int>
1335 <int key="connectionID">222</int>
1336 </object>
1336 </object>
1337 <object class="IBConnectionRecord">
1337 <object class="IBConnectionRecord">
1338 <object class="IBActionConnection" key="connection">
1338 <object class="IBActionConnection" key="connection">
1339 <string key="label">undo:</string>
1339 <string key="label">undo:</string>
1340 <reference key="source" ref="1014"/>
1340 <reference key="source" ref="1014"/>
1341 <reference key="destination" ref="1058277027"/>
1341 <reference key="destination" ref="1058277027"/>
1342 </object>
1342 </object>
1343 <int key="connectionID">223</int>
1343 <int key="connectionID">223</int>
1344 </object>
1344 </object>
1345 <object class="IBConnectionRecord">
1345 <object class="IBConnectionRecord">
1346 <object class="IBActionConnection" key="connection">
1346 <object class="IBActionConnection" key="connection">
1347 <string key="label">copy:</string>
1347 <string key="label">copy:</string>
1348 <reference key="source" ref="1014"/>
1348 <reference key="source" ref="1014"/>
1349 <reference key="destination" ref="860595796"/>
1349 <reference key="destination" ref="860595796"/>
1350 </object>
1350 </object>
1351 <int key="connectionID">224</int>
1351 <int key="connectionID">224</int>
1352 </object>
1352 </object>
1353 <object class="IBConnectionRecord">
1353 <object class="IBConnectionRecord">
1354 <object class="IBActionConnection" key="connection">
1354 <object class="IBActionConnection" key="connection">
1355 <string key="label">checkSpelling:</string>
1355 <string key="label">checkSpelling:</string>
1356 <reference key="source" ref="1014"/>
1356 <reference key="source" ref="1014"/>
1357 <reference key="destination" ref="96193923"/>
1357 <reference key="destination" ref="96193923"/>
1358 </object>
1358 </object>
1359 <int key="connectionID">225</int>
1359 <int key="connectionID">225</int>
1360 </object>
1360 </object>
1361 <object class="IBConnectionRecord">
1361 <object class="IBConnectionRecord">
1362 <object class="IBActionConnection" key="connection">
1362 <object class="IBActionConnection" key="connection">
1363 <string key="label">paste:</string>
1363 <string key="label">paste:</string>
1364 <reference key="source" ref="1014"/>
1364 <reference key="source" ref="1014"/>
1365 <reference key="destination" ref="29853731"/>
1365 <reference key="destination" ref="29853731"/>
1366 </object>
1366 </object>
1367 <int key="connectionID">226</int>
1367 <int key="connectionID">226</int>
1368 </object>
1368 </object>
1369 <object class="IBConnectionRecord">
1369 <object class="IBConnectionRecord">
1370 <object class="IBActionConnection" key="connection">
1370 <object class="IBActionConnection" key="connection">
1371 <string key="label">stopSpeaking:</string>
1371 <string key="label">stopSpeaking:</string>
1372 <reference key="source" ref="1014"/>
1372 <reference key="source" ref="1014"/>
1373 <reference key="destination" ref="680220178"/>
1373 <reference key="destination" ref="680220178"/>
1374 </object>
1374 </object>
1375 <int key="connectionID">227</int>
1375 <int key="connectionID">227</int>
1376 </object>
1376 </object>
1377 <object class="IBConnectionRecord">
1377 <object class="IBConnectionRecord">
1378 <object class="IBActionConnection" key="connection">
1378 <object class="IBActionConnection" key="connection">
1379 <string key="label">cut:</string>
1379 <string key="label">cut:</string>
1380 <reference key="source" ref="1014"/>
1380 <reference key="source" ref="1014"/>
1381 <reference key="destination" ref="296257095"/>
1381 <reference key="destination" ref="296257095"/>
1382 </object>
1382 </object>
1383 <int key="connectionID">228</int>
1383 <int key="connectionID">228</int>
1384 </object>
1384 </object>
1385 <object class="IBConnectionRecord">
1385 <object class="IBConnectionRecord">
1386 <object class="IBActionConnection" key="connection">
1386 <object class="IBActionConnection" key="connection">
1387 <string key="label">showGuessPanel:</string>
1387 <string key="label">showGuessPanel:</string>
1388 <reference key="source" ref="1014"/>
1388 <reference key="source" ref="1014"/>
1389 <reference key="destination" ref="679648819"/>
1389 <reference key="destination" ref="679648819"/>
1390 </object>
1390 </object>
1391 <int key="connectionID">230</int>
1391 <int key="connectionID">230</int>
1392 </object>
1392 </object>
1393 <object class="IBConnectionRecord">
1393 <object class="IBConnectionRecord">
1394 <object class="IBActionConnection" key="connection">
1394 <object class="IBActionConnection" key="connection">
1395 <string key="label">redo:</string>
1395 <string key="label">redo:</string>
1396 <reference key="source" ref="1014"/>
1396 <reference key="source" ref="1014"/>
1397 <reference key="destination" ref="790794224"/>
1397 <reference key="destination" ref="790794224"/>
1398 </object>
1398 </object>
1399 <int key="connectionID">231</int>
1399 <int key="connectionID">231</int>
1400 </object>
1400 </object>
1401 <object class="IBConnectionRecord">
1401 <object class="IBConnectionRecord">
1402 <object class="IBActionConnection" key="connection">
1402 <object class="IBActionConnection" key="connection">
1403 <string key="label">selectAll:</string>
1403 <string key="label">selectAll:</string>
1404 <reference key="source" ref="1014"/>
1404 <reference key="source" ref="1014"/>
1405 <reference key="destination" ref="583158037"/>
1405 <reference key="destination" ref="583158037"/>
1406 </object>
1406 </object>
1407 <int key="connectionID">232</int>
1407 <int key="connectionID">232</int>
1408 </object>
1408 </object>
1409 <object class="IBConnectionRecord">
1409 <object class="IBConnectionRecord">
1410 <object class="IBActionConnection" key="connection">
1410 <object class="IBActionConnection" key="connection">
1411 <string key="label">startSpeaking:</string>
1411 <string key="label">startSpeaking:</string>
1412 <reference key="source" ref="1014"/>
1412 <reference key="source" ref="1014"/>
1413 <reference key="destination" ref="731782645"/>
1413 <reference key="destination" ref="731782645"/>
1414 </object>
1414 </object>
1415 <int key="connectionID">233</int>
1415 <int key="connectionID">233</int>
1416 </object>
1416 </object>
1417 <object class="IBConnectionRecord">
1417 <object class="IBConnectionRecord">
1418 <object class="IBActionConnection" key="connection">
1418 <object class="IBActionConnection" key="connection">
1419 <string key="label">delete:</string>
1419 <string key="label">delete:</string>
1420 <reference key="source" ref="1014"/>
1420 <reference key="source" ref="1014"/>
1421 <reference key="destination" ref="437104165"/>
1421 <reference key="destination" ref="437104165"/>
1422 </object>
1422 </object>
1423 <int key="connectionID">235</int>
1423 <int key="connectionID">235</int>
1424 </object>
1424 </object>
1425 <object class="IBConnectionRecord">
1425 <object class="IBConnectionRecord">
1426 <object class="IBActionConnection" key="connection">
1426 <object class="IBActionConnection" key="connection">
1427 <string key="label">performZoom:</string>
1427 <string key="label">performZoom:</string>
1428 <reference key="source" ref="1014"/>
1428 <reference key="source" ref="1014"/>
1429 <reference key="destination" ref="575023229"/>
1429 <reference key="destination" ref="575023229"/>
1430 </object>
1430 </object>
1431 <int key="connectionID">240</int>
1431 <int key="connectionID">240</int>
1432 </object>
1432 </object>
1433 <object class="IBConnectionRecord">
1433 <object class="IBConnectionRecord">
1434 <object class="IBActionConnection" key="connection">
1434 <object class="IBActionConnection" key="connection">
1435 <string key="label">performFindPanelAction:</string>
1435 <string key="label">performFindPanelAction:</string>
1436 <reference key="source" ref="1014"/>
1436 <reference key="source" ref="1014"/>
1437 <reference key="destination" ref="447796847"/>
1437 <reference key="destination" ref="447796847"/>
1438 </object>
1438 </object>
1439 <int key="connectionID">241</int>
1439 <int key="connectionID">241</int>
1440 </object>
1440 </object>
1441 <object class="IBConnectionRecord">
1441 <object class="IBConnectionRecord">
1442 <object class="IBActionConnection" key="connection">
1442 <object class="IBActionConnection" key="connection">
1443 <string key="label">centerSelectionInVisibleArea:</string>
1443 <string key="label">centerSelectionInVisibleArea:</string>
1444 <reference key="source" ref="1014"/>
1444 <reference key="source" ref="1014"/>
1445 <reference key="destination" ref="88285865"/>
1445 <reference key="destination" ref="88285865"/>
1446 </object>
1446 </object>
1447 <int key="connectionID">245</int>
1447 <int key="connectionID">245</int>
1448 </object>
1448 </object>
1449 <object class="IBConnectionRecord">
1449 <object class="IBConnectionRecord">
1450 <object class="IBActionConnection" key="connection">
1450 <object class="IBActionConnection" key="connection">
1451 <string key="label">toggleGrammarChecking:</string>
1451 <string key="label">toggleGrammarChecking:</string>
1452 <reference key="source" ref="1014"/>
1452 <reference key="source" ref="1014"/>
1453 <reference key="destination" ref="967646866"/>
1453 <reference key="destination" ref="967646866"/>
1454 </object>
1454 </object>
1455 <int key="connectionID">347</int>
1455 <int key="connectionID">347</int>
1456 </object>
1456 </object>
1457 <object class="IBConnectionRecord">
1457 <object class="IBConnectionRecord">
1458 <object class="IBActionConnection" key="connection">
1458 <object class="IBActionConnection" key="connection">
1459 <string key="label">toggleSmartInsertDelete:</string>
1459 <string key="label">toggleSmartInsertDelete:</string>
1460 <reference key="source" ref="1014"/>
1460 <reference key="source" ref="1014"/>
1461 <reference key="destination" ref="605118523"/>
1461 <reference key="destination" ref="605118523"/>
1462 </object>
1462 </object>
1463 <int key="connectionID">355</int>
1463 <int key="connectionID">355</int>
1464 </object>
1464 </object>
1465 <object class="IBConnectionRecord">
1465 <object class="IBConnectionRecord">
1466 <object class="IBActionConnection" key="connection">
1466 <object class="IBActionConnection" key="connection">
1467 <string key="label">toggleAutomaticQuoteSubstitution:</string>
1467 <string key="label">toggleAutomaticQuoteSubstitution:</string>
1468 <reference key="source" ref="1014"/>
1468 <reference key="source" ref="1014"/>
1469 <reference key="destination" ref="197661976"/>
1469 <reference key="destination" ref="197661976"/>
1470 </object>
1470 </object>
1471 <int key="connectionID">356</int>
1471 <int key="connectionID">356</int>
1472 </object>
1472 </object>
1473 <object class="IBConnectionRecord">
1473 <object class="IBConnectionRecord">
1474 <object class="IBActionConnection" key="connection">
1474 <object class="IBActionConnection" key="connection">
1475 <string key="label">toggleAutomaticLinkDetection:</string>
1475 <string key="label">toggleAutomaticLinkDetection:</string>
1476 <reference key="source" ref="1014"/>
1476 <reference key="source" ref="1014"/>
1477 <reference key="destination" ref="708854459"/>
1477 <reference key="destination" ref="708854459"/>
1478 </object>
1478 </object>
1479 <int key="connectionID">357</int>
1479 <int key="connectionID">357</int>
1480 </object>
1480 </object>
1481 <object class="IBConnectionRecord">
1481 <object class="IBConnectionRecord">
1482 <object class="IBActionConnection" key="connection">
1482 <object class="IBActionConnection" key="connection">
1483 <string key="label">showHelp:</string>
1483 <string key="label">showHelp:</string>
1484 <reference key="source" ref="1014"/>
1484 <reference key="source" ref="1014"/>
1485 <reference key="destination" ref="238773614"/>
1485 <reference key="destination" ref="238773614"/>
1486 </object>
1486 </object>
1487 <int key="connectionID">360</int>
1487 <int key="connectionID">360</int>
1488 </object>
1488 </object>
1489 <object class="IBConnectionRecord">
1489 <object class="IBConnectionRecord">
1490 <object class="IBActionConnection" key="connection">
1490 <object class="IBActionConnection" key="connection">
1491 <string key="label">orderFrontColorPanel:</string>
1491 <string key="label">orderFrontColorPanel:</string>
1492 <reference key="source" ref="1014"/>
1492 <reference key="source" ref="1014"/>
1493 <reference key="destination" ref="1028416764"/>
1493 <reference key="destination" ref="1028416764"/>
1494 </object>
1494 </object>
1495 <int key="connectionID">361</int>
1495 <int key="connectionID">361</int>
1496 </object>
1496 </object>
1497 <object class="IBConnectionRecord">
1497 <object class="IBConnectionRecord">
1498 <object class="IBActionConnection" key="connection">
1498 <object class="IBActionConnection" key="connection">
1499 <string key="label">saveDocument:</string>
1499 <string key="label">saveDocument:</string>
1500 <reference key="source" ref="1014"/>
1500 <reference key="source" ref="1014"/>
1501 <reference key="destination" ref="1023925487"/>
1501 <reference key="destination" ref="1023925487"/>
1502 </object>
1502 </object>
1503 <int key="connectionID">362</int>
1503 <int key="connectionID">362</int>
1504 </object>
1504 </object>
1505 <object class="IBConnectionRecord">
1505 <object class="IBConnectionRecord">
1506 <object class="IBActionConnection" key="connection">
1506 <object class="IBActionConnection" key="connection">
1507 <string key="label">saveDocumentAs:</string>
1507 <string key="label">saveDocumentAs:</string>
1508 <reference key="source" ref="1014"/>
1508 <reference key="source" ref="1014"/>
1509 <reference key="destination" ref="117038363"/>
1509 <reference key="destination" ref="117038363"/>
1510 </object>
1510 </object>
1511 <int key="connectionID">363</int>
1511 <int key="connectionID">363</int>
1512 </object>
1512 </object>
1513 <object class="IBConnectionRecord">
1513 <object class="IBConnectionRecord">
1514 <object class="IBActionConnection" key="connection">
1514 <object class="IBActionConnection" key="connection">
1515 <string key="label">revertDocumentToSaved:</string>
1515 <string key="label">revertDocumentToSaved:</string>
1516 <reference key="source" ref="1014"/>
1516 <reference key="source" ref="1014"/>
1517 <reference key="destination" ref="579971712"/>
1517 <reference key="destination" ref="579971712"/>
1518 </object>
1518 </object>
1519 <int key="connectionID">364</int>
1519 <int key="connectionID">364</int>
1520 </object>
1520 </object>
1521 <object class="IBConnectionRecord">
1521 <object class="IBConnectionRecord">
1522 <object class="IBActionConnection" key="connection">
1522 <object class="IBActionConnection" key="connection">
1523 <string key="label">runToolbarCustomizationPalette:</string>
1523 <string key="label">runToolbarCustomizationPalette:</string>
1524 <reference key="source" ref="1014"/>
1524 <reference key="source" ref="1014"/>
1525 <reference key="destination" ref="237841660"/>
1525 <reference key="destination" ref="237841660"/>
1526 </object>
1526 </object>
1527 <int key="connectionID">365</int>
1527 <int key="connectionID">365</int>
1528 </object>
1528 </object>
1529 <object class="IBConnectionRecord">
1529 <object class="IBConnectionRecord">
1530 <object class="IBActionConnection" key="connection">
1530 <object class="IBActionConnection" key="connection">
1531 <string key="label">toggleToolbarShown:</string>
1531 <string key="label">toggleToolbarShown:</string>
1532 <reference key="source" ref="1014"/>
1532 <reference key="source" ref="1014"/>
1533 <reference key="destination" ref="102151532"/>
1533 <reference key="destination" ref="102151532"/>
1534 </object>
1534 </object>
1535 <int key="connectionID">366</int>
1535 <int key="connectionID">366</int>
1536 </object>
1536 </object>
1537 <object class="IBConnectionRecord">
1537 <object class="IBConnectionRecord">
1538 <object class="IBActionConnection" key="connection">
1538 <object class="IBActionConnection" key="connection">
1539 <string key="label">hide:</string>
1539 <string key="label">hide:</string>
1540 <reference key="source" ref="1014"/>
1540 <reference key="source" ref="1014"/>
1541 <reference key="destination" ref="755159360"/>
1541 <reference key="destination" ref="755159360"/>
1542 </object>
1542 </object>
1543 <int key="connectionID">367</int>
1543 <int key="connectionID">367</int>
1544 </object>
1544 </object>
1545 <object class="IBConnectionRecord">
1545 <object class="IBConnectionRecord">
1546 <object class="IBActionConnection" key="connection">
1546 <object class="IBActionConnection" key="connection">
1547 <string key="label">hideOtherApplications:</string>
1547 <string key="label">hideOtherApplications:</string>
1548 <reference key="source" ref="1014"/>
1548 <reference key="source" ref="1014"/>
1549 <reference key="destination" ref="342932134"/>
1549 <reference key="destination" ref="342932134"/>
1550 </object>
1550 </object>
1551 <int key="connectionID">368</int>
1551 <int key="connectionID">368</int>
1552 </object>
1552 </object>
1553 <object class="IBConnectionRecord">
1553 <object class="IBConnectionRecord">
1554 <object class="IBActionConnection" key="connection">
1554 <object class="IBActionConnection" key="connection">
1555 <string key="label">terminate:</string>
1555 <string key="label">terminate:</string>
1556 <reference key="source" ref="1014"/>
1556 <reference key="source" ref="1014"/>
1557 <reference key="destination" ref="632727374"/>
1557 <reference key="destination" ref="632727374"/>
1558 </object>
1558 </object>
1559 <int key="connectionID">369</int>
1559 <int key="connectionID">369</int>
1560 </object>
1560 </object>
1561 <object class="IBConnectionRecord">
1561 <object class="IBConnectionRecord">
1562 <object class="IBActionConnection" key="connection">
1562 <object class="IBActionConnection" key="connection">
1563 <string key="label">unhideAllApplications:</string>
1563 <string key="label">unhideAllApplications:</string>
1564 <reference key="source" ref="1014"/>
1564 <reference key="source" ref="1014"/>
1565 <reference key="destination" ref="908899353"/>
1565 <reference key="destination" ref="908899353"/>
1566 </object>
1566 </object>
1567 <int key="connectionID">370</int>
1567 <int key="connectionID">370</int>
1568 </object>
1568 </object>
1569 <object class="IBConnectionRecord">
1569 <object class="IBConnectionRecord">
1570 <object class="IBOutletConnection" key="connection">
1570 <object class="IBOutletConnection" key="connection">
1571 <string key="label" id="606168085">delegate</string>
1571 <string key="label" id="606168085">delegate</string>
1572 <reference key="source" ref="1050"/>
1572 <reference key="source" ref="1050"/>
1573 <reference key="destination" ref="610635028"/>
1573 <reference key="destination" ref="610635028"/>
1574 </object>
1574 </object>
1575 <int key="connectionID">374</int>
1575 <int key="connectionID">374</int>
1576 </object>
1576 </object>
1577 <object class="IBConnectionRecord">
1577 <object class="IBConnectionRecord">
1578 <object class="IBBindingConnection" key="connection">
1578 <object class="IBBindingConnection" key="connection">
1579 <string key="label" id="187454546">contentDictionary: userNS</string>
1579 <string key="label" id="187454546">contentDictionary: userNS</string>
1580 <reference key="source" ref="808393665"/>
1580 <reference key="source" ref="808393665"/>
1581 <reference key="destination" ref="631572152"/>
1581 <reference key="destination" ref="631572152"/>
1582 <object class="NSNibBindingConnector" key="connector">
1582 <object class="NSNibBindingConnector" key="connector">
1583 <reference key="NSSource" ref="808393665"/>
1583 <reference key="NSSource" ref="808393665"/>
1584 <reference key="NSDestination" ref="631572152"/>
1584 <reference key="NSDestination" ref="631572152"/>
1585 <reference key="NSLabel" ref="187454546"/>
1585 <reference key="NSLabel" ref="187454546"/>
1586 <string key="NSBinding">contentDictionary</string>
1586 <string key="NSBinding">contentDictionary</string>
1587 <string key="NSKeyPath">userNS</string>
1587 <string key="NSKeyPath">userNS</string>
1588 <int key="NSNibBindingConnectorVersion">2</int>
1588 <int key="NSNibBindingConnectorVersion">2</int>
1589 </object>
1589 </object>
1590 </object>
1590 </object>
1591 <int key="connectionID">424</int>
1591 <int key="connectionID">424</int>
1592 </object>
1592 </object>
1593 <object class="IBConnectionRecord">
1593 <object class="IBConnectionRecord">
1594 <object class="IBBindingConnection" key="connection">
1594 <object class="IBBindingConnection" key="connection">
1595 <string key="label" id="688370141">value: arrangedObjects.value</string>
1595 <string key="label" id="688370141">value: arrangedObjects.value</string>
1596 <reference key="source" ref="857054683"/>
1596 <reference key="source" ref="857054683"/>
1597 <reference key="destination" ref="808393665"/>
1597 <reference key="destination" ref="808393665"/>
1598 <object class="NSNibBindingConnector" key="connector">
1598 <object class="NSNibBindingConnector" key="connector">
1599 <reference key="NSSource" ref="857054683"/>
1599 <reference key="NSSource" ref="857054683"/>
1600 <reference key="NSDestination" ref="808393665"/>
1600 <reference key="NSDestination" ref="808393665"/>
1601 <reference key="NSLabel" ref="688370141"/>
1601 <reference key="NSLabel" ref="688370141"/>
1602 <reference key="NSBinding" ref="276523235"/>
1602 <reference key="NSBinding" ref="276523235"/>
1603 <string key="NSKeyPath">arrangedObjects.value</string>
1603 <string key="NSKeyPath">arrangedObjects.value</string>
1604 <int key="NSNibBindingConnectorVersion">2</int>
1604 <int key="NSNibBindingConnectorVersion">2</int>
1605 </object>
1605 </object>
1606 </object>
1606 </object>
1607 <int key="connectionID">427</int>
1607 <int key="connectionID">427</int>
1608 </object>
1608 </object>
1609 <object class="IBConnectionRecord">
1609 <object class="IBConnectionRecord">
1610 <object class="IBBindingConnection" key="connection">
1610 <object class="IBBindingConnection" key="connection">
1611 <string key="label" id="764859820">value: arrangedObjects.key</string>
1611 <string key="label" id="764859820">value: arrangedObjects.key</string>
1612 <reference key="source" ref="920426212"/>
1612 <reference key="source" ref="920426212"/>
1613 <reference key="destination" ref="808393665"/>
1613 <reference key="destination" ref="808393665"/>
1614 <object class="NSNibBindingConnector" key="connector">
1614 <object class="NSNibBindingConnector" key="connector">
1615 <reference key="NSSource" ref="920426212"/>
1615 <reference key="NSSource" ref="920426212"/>
1616 <reference key="NSDestination" ref="808393665"/>
1616 <reference key="NSDestination" ref="808393665"/>
1617 <reference key="NSLabel" ref="764859820"/>
1617 <reference key="NSLabel" ref="764859820"/>
1618 <reference key="NSBinding" ref="276523235"/>
1618 <reference key="NSBinding" ref="276523235"/>
1619 <string key="NSKeyPath">arrangedObjects.key</string>
1619 <string key="NSKeyPath">arrangedObjects.key</string>
1620 <int key="NSNibBindingConnectorVersion">2</int>
1620 <int key="NSNibBindingConnectorVersion">2</int>
1621 </object>
1621 </object>
1622 </object>
1622 </object>
1623 <int key="connectionID">428</int>
1623 <int key="connectionID">428</int>
1624 </object>
1624 </object>
1625 <object class="IBConnectionRecord">
1625 <object class="IBConnectionRecord">
1626 <object class="IBOutletConnection" key="connection">
1626 <object class="IBOutletConnection" key="connection">
1627 <reference key="label" ref="606168085"/>
1627 <reference key="label" ref="606168085"/>
1628 <reference key="source" ref="972006081"/>
1628 <reference key="source" ref="972006081"/>
1629 <reference key="destination" ref="631572152"/>
1629 <reference key="destination" ref="631572152"/>
1630 </object>
1630 </object>
1631 <int key="connectionID">429</int>
1631 <int key="connectionID">429</int>
1632 </object>
1632 </object>
1633 <object class="IBConnectionRecord">
1633 <object class="IBConnectionRecord">
1634 <object class="IBBindingConnection" key="connection">
1634 <object class="IBBindingConnection" key="connection">
1635 <string key="label" id="97087091">animate: waitingForEngine</string>
1635 <string key="label" id="97087091">animate: waitingForEngine</string>
1636 <reference key="source" ref="74807016"/>
1636 <reference key="source" ref="74807016"/>
1637 <reference key="destination" ref="631572152"/>
1637 <reference key="destination" ref="631572152"/>
1638 <object class="NSNibBindingConnector" key="connector">
1638 <object class="NSNibBindingConnector" key="connector">
1639 <reference key="NSSource" ref="74807016"/>
1639 <reference key="NSSource" ref="74807016"/>
1640 <reference key="NSDestination" ref="631572152"/>
1640 <reference key="NSDestination" ref="631572152"/>
1641 <reference key="NSLabel" ref="97087091"/>
1641 <reference key="NSLabel" ref="97087091"/>
1642 <string key="NSBinding">animate</string>
1642 <string key="NSBinding">animate</string>
1643 <string key="NSKeyPath">waitingForEngine</string>
1643 <string key="NSKeyPath">waitingForEngine</string>
1644 <int key="NSNibBindingConnectorVersion">2</int>
1644 <int key="NSNibBindingConnectorVersion">2</int>
1645 </object>
1645 </object>
1646 </object>
1646 </object>
1647 <int key="connectionID">437</int>
1647 <int key="connectionID">437</int>
1648 </object>
1648 </object>
1649 <object class="IBConnectionRecord">
1649 <object class="IBConnectionRecord">
1650 <object class="IBBindingConnection" key="connection">
1650 <object class="IBBindingConnection" key="connection">
1651 <string key="label" id="289275654">filterPredicate: workspaceFilterPredicate</string>
1651 <string key="label" id="289275654">filterPredicate: workspaceFilterPredicate</string>
1652 <reference key="source" ref="808393665"/>
1652 <reference key="source" ref="808393665"/>
1653 <reference key="destination" ref="610635028"/>
1653 <reference key="destination" ref="610635028"/>
1654 <object class="NSNibBindingConnector" key="connector">
1654 <object class="NSNibBindingConnector" key="connector">
1655 <reference key="NSSource" ref="808393665"/>
1655 <reference key="NSSource" ref="808393665"/>
1656 <reference key="NSDestination" ref="610635028"/>
1656 <reference key="NSDestination" ref="610635028"/>
1657 <reference key="NSLabel" ref="289275654"/>
1657 <reference key="NSLabel" ref="289275654"/>
1658 <string key="NSBinding">filterPredicate</string>
1658 <string key="NSBinding">filterPredicate</string>
1659 <string key="NSKeyPath">workspaceFilterPredicate</string>
1659 <string key="NSKeyPath">workspaceFilterPredicate</string>
1660 <int key="NSNibBindingConnectorVersion">2</int>
1660 <int key="NSNibBindingConnectorVersion">2</int>
1661 </object>
1661 </object>
1662 </object>
1662 </object>
1663 <int key="connectionID">440</int>
1663 <int key="connectionID">440</int>
1664 </object>
1664 </object>
1665 <object class="IBConnectionRecord">
1665 <object class="IBConnectionRecord">
1666 <object class="IBOutletConnection" key="connection">
1666 <object class="IBOutletConnection" key="connection">
1667 <string key="label">ipythonController</string>
1667 <string key="label">ipythonController</string>
1668 <reference key="source" ref="610635028"/>
1668 <reference key="source" ref="610635028"/>
1669 <reference key="destination" ref="631572152"/>
1669 <reference key="destination" ref="631572152"/>
1670 </object>
1670 </object>
1671 <int key="connectionID">441</int>
1671 <int key="connectionID">441</int>
1672 </object>
1672 </object>
1673 <object class="IBConnectionRecord">
1673 <object class="IBConnectionRecord">
1674 <object class="IBOutletConnection" key="connection">
1674 <object class="IBOutletConnection" key="connection">
1675 <string key="label" id="684042788">textView</string>
1675 <string key="label" id="684042788">textView</string>
1676 <reference key="source" ref="631572152"/>
1676 <reference key="source" ref="631572152"/>
1677 <reference key="destination" ref="163417131"/>
1677 <reference key="destination" ref="163417131"/>
1678 </object>
1678 </object>
1679 <int key="connectionID">444</int>
1679 <int key="connectionID">444</int>
1680 </object>
1680 </object>
1681 <object class="IBConnectionRecord">
1681 <object class="IBConnectionRecord">
1682 <object class="IBOutletConnection" key="connection">
1682 <object class="IBOutletConnection" key="connection">
1683 <string key="label">initialFirstResponder</string>
1683 <string key="label">initialFirstResponder</string>
1684 <reference key="source" ref="972006081"/>
1684 <reference key="source" ref="972006081"/>
1685 <reference key="destination" ref="163417131"/>
1685 <reference key="destination" ref="163417131"/>
1686 </object>
1686 </object>
1687 <int key="connectionID">445</int>
1687 <int key="connectionID">445</int>
1688 </object>
1688 </object>
1689 </object>
1689 </object>
1690 <object class="IBMutableOrderedSet" key="objectRecords">
1690 <object class="IBMutableOrderedSet" key="objectRecords">
1691 <object class="NSArray" key="orderedObjects">
1691 <object class="NSArray" key="orderedObjects">
1692 <bool key="EncodedWithXMLCoder">YES</bool>
1692 <bool key="EncodedWithXMLCoder">YES</bool>
1693 <object class="IBObjectRecord">
1693 <object class="IBObjectRecord">
1694 <int key="objectID">0</int>
1694 <int key="objectID">0</int>
1695 <object class="NSArray" key="object" id="1049">
1695 <object class="NSArray" key="object" id="1049">
1696 <bool key="EncodedWithXMLCoder">YES</bool>
1696 <bool key="EncodedWithXMLCoder">YES</bool>
1697 </object>
1697 </object>
1698 <reference key="children" ref="1048"/>
1698 <reference key="children" ref="1048"/>
1699 <nil key="parent"/>
1699 <nil key="parent"/>
1700 </object>
1700 </object>
1701 <object class="IBObjectRecord">
1701 <object class="IBObjectRecord">
1702 <int key="objectID">-2</int>
1702 <int key="objectID">-2</int>
1703 <reference key="object" ref="1021"/>
1703 <reference key="object" ref="1021"/>
1704 <reference key="parent" ref="1049"/>
1704 <reference key="parent" ref="1049"/>
1705 <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
1705 <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
1706 </object>
1706 </object>
1707 <object class="IBObjectRecord">
1707 <object class="IBObjectRecord">
1708 <int key="objectID">-1</int>
1708 <int key="objectID">-1</int>
1709 <reference key="object" ref="1014"/>
1709 <reference key="object" ref="1014"/>
1710 <reference key="parent" ref="1049"/>
1710 <reference key="parent" ref="1049"/>
1711 <string key="objectName">First Responder</string>
1711 <string key="objectName">First Responder</string>
1712 </object>
1712 </object>
1713 <object class="IBObjectRecord">
1713 <object class="IBObjectRecord">
1714 <int key="objectID">-3</int>
1714 <int key="objectID">-3</int>
1715 <reference key="object" ref="1050"/>
1715 <reference key="object" ref="1050"/>
1716 <reference key="parent" ref="1049"/>
1716 <reference key="parent" ref="1049"/>
1717 <string key="objectName">Application</string>
1717 <string key="objectName">Application</string>
1718 </object>
1718 </object>
1719 <object class="IBObjectRecord">
1719 <object class="IBObjectRecord">
1720 <int key="objectID">29</int>
1720 <int key="objectID">29</int>
1721 <reference key="object" ref="649796088"/>
1721 <reference key="object" ref="649796088"/>
1722 <object class="NSMutableArray" key="children">
1722 <object class="NSMutableArray" key="children">
1723 <bool key="EncodedWithXMLCoder">YES</bool>
1723 <bool key="EncodedWithXMLCoder">YES</bool>
1724 <reference ref="713487014"/>
1724 <reference ref="713487014"/>
1725 <reference ref="694149608"/>
1725 <reference ref="694149608"/>
1726 <reference ref="391199113"/>
1726 <reference ref="391199113"/>
1727 <reference ref="952259628"/>
1727 <reference ref="952259628"/>
1728 <reference ref="379814623"/>
1728 <reference ref="379814623"/>
1729 <reference ref="586577488"/>
1729 <reference ref="586577488"/>
1730 <reference ref="626404410"/>
1730 <reference ref="626404410"/>
1731 </object>
1731 </object>
1732 <reference key="parent" ref="1049"/>
1732 <reference key="parent" ref="1049"/>
1733 <string key="objectName">MainMenu</string>
1733 <string key="objectName">MainMenu</string>
1734 </object>
1734 </object>
1735 <object class="IBObjectRecord">
1735 <object class="IBObjectRecord">
1736 <int key="objectID">19</int>
1736 <int key="objectID">19</int>
1737 <reference key="object" ref="713487014"/>
1737 <reference key="object" ref="713487014"/>
1738 <object class="NSMutableArray" key="children">
1738 <object class="NSMutableArray" key="children">
1739 <bool key="EncodedWithXMLCoder">YES</bool>
1739 <bool key="EncodedWithXMLCoder">YES</bool>
1740 <reference ref="835318025"/>
1740 <reference ref="835318025"/>
1741 </object>
1741 </object>
1742 <reference key="parent" ref="649796088"/>
1742 <reference key="parent" ref="649796088"/>
1743 </object>
1743 </object>
1744 <object class="IBObjectRecord">
1744 <object class="IBObjectRecord">
1745 <int key="objectID">56</int>
1745 <int key="objectID">56</int>
1746 <reference key="object" ref="694149608"/>
1746 <reference key="object" ref="694149608"/>
1747 <object class="NSMutableArray" key="children">
1747 <object class="NSMutableArray" key="children">
1748 <bool key="EncodedWithXMLCoder">YES</bool>
1748 <bool key="EncodedWithXMLCoder">YES</bool>
1749 <reference ref="110575045"/>
1749 <reference ref="110575045"/>
1750 </object>
1750 </object>
1751 <reference key="parent" ref="649796088"/>
1751 <reference key="parent" ref="649796088"/>
1752 </object>
1752 </object>
1753 <object class="IBObjectRecord">
1753 <object class="IBObjectRecord">
1754 <int key="objectID">103</int>
1754 <int key="objectID">103</int>
1755 <reference key="object" ref="391199113"/>
1755 <reference key="object" ref="391199113"/>
1756 <object class="NSMutableArray" key="children">
1756 <object class="NSMutableArray" key="children">
1757 <bool key="EncodedWithXMLCoder">YES</bool>
1757 <bool key="EncodedWithXMLCoder">YES</bool>
1758 <reference ref="374024848"/>
1758 <reference ref="374024848"/>
1759 </object>
1759 </object>
1760 <reference key="parent" ref="649796088"/>
1760 <reference key="parent" ref="649796088"/>
1761 <string key="objectName" id="508169456">1</string>
1761 <string key="objectName" id="508169456">1</string>
1762 </object>
1762 </object>
1763 <object class="IBObjectRecord">
1763 <object class="IBObjectRecord">
1764 <int key="objectID">217</int>
1764 <int key="objectID">217</int>
1765 <reference key="object" ref="952259628"/>
1765 <reference key="object" ref="952259628"/>
1766 <object class="NSMutableArray" key="children">
1766 <object class="NSMutableArray" key="children">
1767 <bool key="EncodedWithXMLCoder">YES</bool>
1767 <bool key="EncodedWithXMLCoder">YES</bool>
1768 <reference ref="789758025"/>
1768 <reference ref="789758025"/>
1769 </object>
1769 </object>
1770 <reference key="parent" ref="649796088"/>
1770 <reference key="parent" ref="649796088"/>
1771 </object>
1771 </object>
1772 <object class="IBObjectRecord">
1772 <object class="IBObjectRecord">
1773 <int key="objectID">83</int>
1773 <int key="objectID">83</int>
1774 <reference key="object" ref="379814623"/>
1774 <reference key="object" ref="379814623"/>
1775 <object class="NSMutableArray" key="children">
1775 <object class="NSMutableArray" key="children">
1776 <bool key="EncodedWithXMLCoder">YES</bool>
1776 <bool key="EncodedWithXMLCoder">YES</bool>
1777 <reference ref="720053764"/>
1777 <reference ref="720053764"/>
1778 </object>
1778 </object>
1779 <reference key="parent" ref="649796088"/>
1779 <reference key="parent" ref="649796088"/>
1780 </object>
1780 </object>
1781 <object class="IBObjectRecord">
1781 <object class="IBObjectRecord">
1782 <int key="objectID">81</int>
1782 <int key="objectID">81</int>
1783 <reference key="object" ref="720053764"/>
1783 <reference key="object" ref="720053764"/>
1784 <object class="NSMutableArray" key="children">
1784 <object class="NSMutableArray" key="children">
1785 <bool key="EncodedWithXMLCoder">YES</bool>
1785 <bool key="EncodedWithXMLCoder">YES</bool>
1786 <reference ref="1023925487"/>
1786 <reference ref="1023925487"/>
1787 <reference ref="117038363"/>
1787 <reference ref="117038363"/>
1788 <reference ref="49223823"/>
1788 <reference ref="49223823"/>
1789 <reference ref="722745758"/>
1789 <reference ref="722745758"/>
1790 <reference ref="705341025"/>
1790 <reference ref="705341025"/>
1791 <reference ref="1025936716"/>
1791 <reference ref="1025936716"/>
1792 <reference ref="294629803"/>
1792 <reference ref="294629803"/>
1793 <reference ref="776162233"/>
1793 <reference ref="776162233"/>
1794 <reference ref="425164168"/>
1794 <reference ref="425164168"/>
1795 <reference ref="579971712"/>
1795 <reference ref="579971712"/>
1796 <reference ref="1010469920"/>
1796 <reference ref="1010469920"/>
1797 </object>
1797 </object>
1798 <reference key="parent" ref="379814623"/>
1798 <reference key="parent" ref="379814623"/>
1799 </object>
1799 </object>
1800 <object class="IBObjectRecord">
1800 <object class="IBObjectRecord">
1801 <int key="objectID">75</int>
1801 <int key="objectID">75</int>
1802 <reference key="object" ref="1023925487"/>
1802 <reference key="object" ref="1023925487"/>
1803 <reference key="parent" ref="720053764"/>
1803 <reference key="parent" ref="720053764"/>
1804 <string key="objectName">3</string>
1804 <string key="objectName">3</string>
1805 </object>
1805 </object>
1806 <object class="IBObjectRecord">
1806 <object class="IBObjectRecord">
1807 <int key="objectID">80</int>
1807 <int key="objectID">80</int>
1808 <reference key="object" ref="117038363"/>
1808 <reference key="object" ref="117038363"/>
1809 <reference key="parent" ref="720053764"/>
1809 <reference key="parent" ref="720053764"/>
1810 <string key="objectName">8</string>
1810 <string key="objectName">8</string>
1811 </object>
1811 </object>
1812 <object class="IBObjectRecord">
1812 <object class="IBObjectRecord">
1813 <int key="objectID">78</int>
1813 <int key="objectID">78</int>
1814 <reference key="object" ref="49223823"/>
1814 <reference key="object" ref="49223823"/>
1815 <reference key="parent" ref="720053764"/>
1815 <reference key="parent" ref="720053764"/>
1816 <string key="objectName">6</string>
1816 <string key="objectName">6</string>
1817 </object>
1817 </object>
1818 <object class="IBObjectRecord">
1818 <object class="IBObjectRecord">
1819 <int key="objectID">72</int>
1819 <int key="objectID">72</int>
1820 <reference key="object" ref="722745758"/>
1820 <reference key="object" ref="722745758"/>
1821 <reference key="parent" ref="720053764"/>
1821 <reference key="parent" ref="720053764"/>
1822 </object>
1822 </object>
1823 <object class="IBObjectRecord">
1823 <object class="IBObjectRecord">
1824 <int key="objectID">82</int>
1824 <int key="objectID">82</int>
1825 <reference key="object" ref="705341025"/>
1825 <reference key="object" ref="705341025"/>
1826 <reference key="parent" ref="720053764"/>
1826 <reference key="parent" ref="720053764"/>
1827 <string key="objectName">9</string>
1827 <string key="objectName">9</string>
1828 </object>
1828 </object>
1829 <object class="IBObjectRecord">
1829 <object class="IBObjectRecord">
1830 <int key="objectID">124</int>
1830 <int key="objectID">124</int>
1831 <reference key="object" ref="1025936716"/>
1831 <reference key="object" ref="1025936716"/>
1832 <object class="NSMutableArray" key="children">
1832 <object class="NSMutableArray" key="children">
1833 <bool key="EncodedWithXMLCoder">YES</bool>
1833 <bool key="EncodedWithXMLCoder">YES</bool>
1834 <reference ref="1065607017"/>
1834 <reference ref="1065607017"/>
1835 </object>
1835 </object>
1836 <reference key="parent" ref="720053764"/>
1836 <reference key="parent" ref="720053764"/>
1837 </object>
1837 </object>
1838 <object class="IBObjectRecord">
1838 <object class="IBObjectRecord">
1839 <int key="objectID">77</int>
1839 <int key="objectID">77</int>
1840 <reference key="object" ref="294629803"/>
1840 <reference key="object" ref="294629803"/>
1841 <reference key="parent" ref="720053764"/>
1841 <reference key="parent" ref="720053764"/>
1842 <string key="objectName">5</string>
1842 <string key="objectName">5</string>
1843 </object>
1843 </object>
1844 <object class="IBObjectRecord">
1844 <object class="IBObjectRecord">
1845 <int key="objectID">73</int>
1845 <int key="objectID">73</int>
1846 <reference key="object" ref="776162233"/>
1846 <reference key="object" ref="776162233"/>
1847 <reference key="parent" ref="720053764"/>
1847 <reference key="parent" ref="720053764"/>
1848 <reference key="objectName" ref="508169456"/>
1848 <reference key="objectName" ref="508169456"/>
1849 </object>
1849 </object>
1850 <object class="IBObjectRecord">
1850 <object class="IBObjectRecord">
1851 <int key="objectID">79</int>
1851 <int key="objectID">79</int>
1852 <reference key="object" ref="425164168"/>
1852 <reference key="object" ref="425164168"/>
1853 <reference key="parent" ref="720053764"/>
1853 <reference key="parent" ref="720053764"/>
1854 <string key="objectName">7</string>
1854 <string key="objectName">7</string>
1855 </object>
1855 </object>
1856 <object class="IBObjectRecord">
1856 <object class="IBObjectRecord">
1857 <int key="objectID">112</int>
1857 <int key="objectID">112</int>
1858 <reference key="object" ref="579971712"/>
1858 <reference key="object" ref="579971712"/>
1859 <reference key="parent" ref="720053764"/>
1859 <reference key="parent" ref="720053764"/>
1860 <string key="objectName">10</string>
1860 <string key="objectName">10</string>
1861 </object>
1861 </object>
1862 <object class="IBObjectRecord">
1862 <object class="IBObjectRecord">
1863 <int key="objectID">74</int>
1863 <int key="objectID">74</int>
1864 <reference key="object" ref="1010469920"/>
1864 <reference key="object" ref="1010469920"/>
1865 <reference key="parent" ref="720053764"/>
1865 <reference key="parent" ref="720053764"/>
1866 <string key="objectName" id="464456376">2</string>
1866 <string key="objectName" id="464456376">2</string>
1867 </object>
1867 </object>
1868 <object class="IBObjectRecord">
1868 <object class="IBObjectRecord">
1869 <int key="objectID">125</int>
1869 <int key="objectID">125</int>
1870 <reference key="object" ref="1065607017"/>
1870 <reference key="object" ref="1065607017"/>
1871 <object class="NSMutableArray" key="children">
1871 <object class="NSMutableArray" key="children">
1872 <bool key="EncodedWithXMLCoder">YES</bool>
1872 <bool key="EncodedWithXMLCoder">YES</bool>
1873 <reference ref="759406840"/>
1873 <reference ref="759406840"/>
1874 </object>
1874 </object>
1875 <reference key="parent" ref="1025936716"/>
1875 <reference key="parent" ref="1025936716"/>
1876 </object>
1876 </object>
1877 <object class="IBObjectRecord">
1877 <object class="IBObjectRecord">
1878 <int key="objectID">126</int>
1878 <int key="objectID">126</int>
1879 <reference key="object" ref="759406840"/>
1879 <reference key="object" ref="759406840"/>
1880 <reference key="parent" ref="1065607017"/>
1880 <reference key="parent" ref="1065607017"/>
1881 </object>
1881 </object>
1882 <object class="IBObjectRecord">
1882 <object class="IBObjectRecord">
1883 <int key="objectID">205</int>
1883 <int key="objectID">205</int>
1884 <reference key="object" ref="789758025"/>
1884 <reference key="object" ref="789758025"/>
1885 <object class="NSMutableArray" key="children">
1885 <object class="NSMutableArray" key="children">
1886 <bool key="EncodedWithXMLCoder">YES</bool>
1886 <bool key="EncodedWithXMLCoder">YES</bool>
1887 <reference ref="437104165"/>
1887 <reference ref="437104165"/>
1888 <reference ref="583158037"/>
1888 <reference ref="583158037"/>
1889 <reference ref="1058277027"/>
1889 <reference ref="1058277027"/>
1890 <reference ref="212016141"/>
1890 <reference ref="212016141"/>
1891 <reference ref="296257095"/>
1891 <reference ref="296257095"/>
1892 <reference ref="29853731"/>
1892 <reference ref="29853731"/>
1893 <reference ref="860595796"/>
1893 <reference ref="860595796"/>
1894 <reference ref="1040322652"/>
1894 <reference ref="1040322652"/>
1895 <reference ref="790794224"/>
1895 <reference ref="790794224"/>
1896 <reference ref="892235320"/>
1896 <reference ref="892235320"/>
1897 <reference ref="972420730"/>
1897 <reference ref="972420730"/>
1898 <reference ref="676164635"/>
1898 <reference ref="676164635"/>
1899 <reference ref="507821607"/>
1899 <reference ref="507821607"/>
1900 </object>
1900 </object>
1901 <reference key="parent" ref="952259628"/>
1901 <reference key="parent" ref="952259628"/>
1902 </object>
1902 </object>
1903 <object class="IBObjectRecord">
1903 <object class="IBObjectRecord">
1904 <int key="objectID">202</int>
1904 <int key="objectID">202</int>
1905 <reference key="object" ref="437104165"/>
1905 <reference key="object" ref="437104165"/>
1906 <reference key="parent" ref="789758025"/>
1906 <reference key="parent" ref="789758025"/>
1907 </object>
1907 </object>
1908 <object class="IBObjectRecord">
1908 <object class="IBObjectRecord">
1909 <int key="objectID">198</int>
1909 <int key="objectID">198</int>
1910 <reference key="object" ref="583158037"/>
1910 <reference key="object" ref="583158037"/>
1911 <reference key="parent" ref="789758025"/>
1911 <reference key="parent" ref="789758025"/>
1912 </object>
1912 </object>
1913 <object class="IBObjectRecord">
1913 <object class="IBObjectRecord">
1914 <int key="objectID">207</int>
1914 <int key="objectID">207</int>
1915 <reference key="object" ref="1058277027"/>
1915 <reference key="object" ref="1058277027"/>
1916 <reference key="parent" ref="789758025"/>
1916 <reference key="parent" ref="789758025"/>
1917 </object>
1917 </object>
1918 <object class="IBObjectRecord">
1918 <object class="IBObjectRecord">
1919 <int key="objectID">214</int>
1919 <int key="objectID">214</int>
1920 <reference key="object" ref="212016141"/>
1920 <reference key="object" ref="212016141"/>
1921 <reference key="parent" ref="789758025"/>
1921 <reference key="parent" ref="789758025"/>
1922 </object>
1922 </object>
1923 <object class="IBObjectRecord">
1923 <object class="IBObjectRecord">
1924 <int key="objectID">199</int>
1924 <int key="objectID">199</int>
1925 <reference key="object" ref="296257095"/>
1925 <reference key="object" ref="296257095"/>
1926 <reference key="parent" ref="789758025"/>
1926 <reference key="parent" ref="789758025"/>
1927 </object>
1927 </object>
1928 <object class="IBObjectRecord">
1928 <object class="IBObjectRecord">
1929 <int key="objectID">203</int>
1929 <int key="objectID">203</int>
1930 <reference key="object" ref="29853731"/>
1930 <reference key="object" ref="29853731"/>
1931 <reference key="parent" ref="789758025"/>
1931 <reference key="parent" ref="789758025"/>
1932 </object>
1932 </object>
1933 <object class="IBObjectRecord">
1933 <object class="IBObjectRecord">
1934 <int key="objectID">197</int>
1934 <int key="objectID">197</int>
1935 <reference key="object" ref="860595796"/>
1935 <reference key="object" ref="860595796"/>
1936 <reference key="parent" ref="789758025"/>
1936 <reference key="parent" ref="789758025"/>
1937 </object>
1937 </object>
1938 <object class="IBObjectRecord">
1938 <object class="IBObjectRecord">
1939 <int key="objectID">206</int>
1939 <int key="objectID">206</int>
1940 <reference key="object" ref="1040322652"/>
1940 <reference key="object" ref="1040322652"/>
1941 <reference key="parent" ref="789758025"/>
1941 <reference key="parent" ref="789758025"/>
1942 </object>
1942 </object>
1943 <object class="IBObjectRecord">
1943 <object class="IBObjectRecord">
1944 <int key="objectID">215</int>
1944 <int key="objectID">215</int>
1945 <reference key="object" ref="790794224"/>
1945 <reference key="object" ref="790794224"/>
1946 <reference key="parent" ref="789758025"/>
1946 <reference key="parent" ref="789758025"/>
1947 </object>
1947 </object>
1948 <object class="IBObjectRecord">
1948 <object class="IBObjectRecord">
1949 <int key="objectID">218</int>
1949 <int key="objectID">218</int>
1950 <reference key="object" ref="892235320"/>
1950 <reference key="object" ref="892235320"/>
1951 <object class="NSMutableArray" key="children">
1951 <object class="NSMutableArray" key="children">
1952 <bool key="EncodedWithXMLCoder">YES</bool>
1952 <bool key="EncodedWithXMLCoder">YES</bool>
1953 <reference ref="963351320"/>
1953 <reference ref="963351320"/>
1954 </object>
1954 </object>
1955 <reference key="parent" ref="789758025"/>
1955 <reference key="parent" ref="789758025"/>
1956 </object>
1956 </object>
1957 <object class="IBObjectRecord">
1957 <object class="IBObjectRecord">
1958 <int key="objectID">216</int>
1958 <int key="objectID">216</int>
1959 <reference key="object" ref="972420730"/>
1959 <reference key="object" ref="972420730"/>
1960 <object class="NSMutableArray" key="children">
1960 <object class="NSMutableArray" key="children">
1961 <bool key="EncodedWithXMLCoder">YES</bool>
1961 <bool key="EncodedWithXMLCoder">YES</bool>
1962 <reference ref="769623530"/>
1962 <reference ref="769623530"/>
1963 </object>
1963 </object>
1964 <reference key="parent" ref="789758025"/>
1964 <reference key="parent" ref="789758025"/>
1965 </object>
1965 </object>
1966 <object class="IBObjectRecord">
1966 <object class="IBObjectRecord">
1967 <int key="objectID">200</int>
1967 <int key="objectID">200</int>
1968 <reference key="object" ref="769623530"/>
1968 <reference key="object" ref="769623530"/>
1969 <object class="NSMutableArray" key="children">
1969 <object class="NSMutableArray" key="children">
1970 <bool key="EncodedWithXMLCoder">YES</bool>
1970 <bool key="EncodedWithXMLCoder">YES</bool>
1971 <reference ref="948374510"/>
1971 <reference ref="948374510"/>
1972 <reference ref="96193923"/>
1972 <reference ref="96193923"/>
1973 <reference ref="679648819"/>
1973 <reference ref="679648819"/>
1974 <reference ref="967646866"/>
1974 <reference ref="967646866"/>
1975 </object>
1975 </object>
1976 <reference key="parent" ref="972420730"/>
1976 <reference key="parent" ref="972420730"/>
1977 </object>
1977 </object>
1978 <object class="IBObjectRecord">
1978 <object class="IBObjectRecord">
1979 <int key="objectID">219</int>
1979 <int key="objectID">219</int>
1980 <reference key="object" ref="948374510"/>
1980 <reference key="object" ref="948374510"/>
1981 <reference key="parent" ref="769623530"/>
1981 <reference key="parent" ref="769623530"/>
1982 </object>
1982 </object>
1983 <object class="IBObjectRecord">
1983 <object class="IBObjectRecord">
1984 <int key="objectID">201</int>
1984 <int key="objectID">201</int>
1985 <reference key="object" ref="96193923"/>
1985 <reference key="object" ref="96193923"/>
1986 <reference key="parent" ref="769623530"/>
1986 <reference key="parent" ref="769623530"/>
1987 </object>
1987 </object>
1988 <object class="IBObjectRecord">
1988 <object class="IBObjectRecord">
1989 <int key="objectID">204</int>
1989 <int key="objectID">204</int>
1990 <reference key="object" ref="679648819"/>
1990 <reference key="object" ref="679648819"/>
1991 <reference key="parent" ref="769623530"/>
1991 <reference key="parent" ref="769623530"/>
1992 </object>
1992 </object>
1993 <object class="IBObjectRecord">
1993 <object class="IBObjectRecord">
1994 <int key="objectID">220</int>
1994 <int key="objectID">220</int>
1995 <reference key="object" ref="963351320"/>
1995 <reference key="object" ref="963351320"/>
1996 <object class="NSMutableArray" key="children">
1996 <object class="NSMutableArray" key="children">
1997 <bool key="EncodedWithXMLCoder">YES</bool>
1997 <bool key="EncodedWithXMLCoder">YES</bool>
1998 <reference ref="270902937"/>
1998 <reference ref="270902937"/>
1999 <reference ref="88285865"/>
1999 <reference ref="88285865"/>
2000 <reference ref="159080638"/>
2000 <reference ref="159080638"/>
2001 <reference ref="326711663"/>
2001 <reference ref="326711663"/>
2002 <reference ref="447796847"/>
2002 <reference ref="447796847"/>
2003 </object>
2003 </object>
2004 <reference key="parent" ref="892235320"/>
2004 <reference key="parent" ref="892235320"/>
2005 </object>
2005 </object>
2006 <object class="IBObjectRecord">
2006 <object class="IBObjectRecord">
2007 <int key="objectID">213</int>
2007 <int key="objectID">213</int>
2008 <reference key="object" ref="270902937"/>
2008 <reference key="object" ref="270902937"/>
2009 <reference key="parent" ref="963351320"/>
2009 <reference key="parent" ref="963351320"/>
2010 </object>
2010 </object>
2011 <object class="IBObjectRecord">
2011 <object class="IBObjectRecord">
2012 <int key="objectID">210</int>
2012 <int key="objectID">210</int>
2013 <reference key="object" ref="88285865"/>
2013 <reference key="object" ref="88285865"/>
2014 <reference key="parent" ref="963351320"/>
2014 <reference key="parent" ref="963351320"/>
2015 </object>
2015 </object>
2016 <object class="IBObjectRecord">
2016 <object class="IBObjectRecord">
2017 <int key="objectID">221</int>
2017 <int key="objectID">221</int>
2018 <reference key="object" ref="159080638"/>
2018 <reference key="object" ref="159080638"/>
2019 <reference key="parent" ref="963351320"/>
2019 <reference key="parent" ref="963351320"/>
2020 </object>
2020 </object>
2021 <object class="IBObjectRecord">
2021 <object class="IBObjectRecord">
2022 <int key="objectID">208</int>
2022 <int key="objectID">208</int>
2023 <reference key="object" ref="326711663"/>
2023 <reference key="object" ref="326711663"/>
2024 <reference key="parent" ref="963351320"/>
2024 <reference key="parent" ref="963351320"/>
2025 </object>
2025 </object>
2026 <object class="IBObjectRecord">
2026 <object class="IBObjectRecord">
2027 <int key="objectID">209</int>
2027 <int key="objectID">209</int>
2028 <reference key="object" ref="447796847"/>
2028 <reference key="object" ref="447796847"/>
2029 <reference key="parent" ref="963351320"/>
2029 <reference key="parent" ref="963351320"/>
2030 </object>
2030 </object>
2031 <object class="IBObjectRecord">
2031 <object class="IBObjectRecord">
2032 <int key="objectID">106</int>
2032 <int key="objectID">106</int>
2033 <reference key="object" ref="374024848"/>
2033 <reference key="object" ref="374024848"/>
2034 <object class="NSMutableArray" key="children">
2034 <object class="NSMutableArray" key="children">
2035 <bool key="EncodedWithXMLCoder">YES</bool>
2035 <bool key="EncodedWithXMLCoder">YES</bool>
2036 <reference ref="238773614"/>
2036 <reference ref="238773614"/>
2037 </object>
2037 </object>
2038 <reference key="parent" ref="391199113"/>
2038 <reference key="parent" ref="391199113"/>
2039 <reference key="objectName" ref="464456376"/>
2039 <reference key="objectName" ref="464456376"/>
2040 </object>
2040 </object>
2041 <object class="IBObjectRecord">
2041 <object class="IBObjectRecord">
2042 <int key="objectID">111</int>
2042 <int key="objectID">111</int>
2043 <reference key="object" ref="238773614"/>
2043 <reference key="object" ref="238773614"/>
2044 <reference key="parent" ref="374024848"/>
2044 <reference key="parent" ref="374024848"/>
2045 </object>
2045 </object>
2046 <object class="IBObjectRecord">
2046 <object class="IBObjectRecord">
2047 <int key="objectID">57</int>
2047 <int key="objectID">57</int>
2048 <reference key="object" ref="110575045"/>
2048 <reference key="object" ref="110575045"/>
2049 <object class="NSMutableArray" key="children">
2049 <object class="NSMutableArray" key="children">
2050 <bool key="EncodedWithXMLCoder">YES</bool>
2050 <bool key="EncodedWithXMLCoder">YES</bool>
2051 <reference ref="238522557"/>
2051 <reference ref="238522557"/>
2052 <reference ref="755159360"/>
2052 <reference ref="755159360"/>
2053 <reference ref="908899353"/>
2053 <reference ref="908899353"/>
2054 <reference ref="632727374"/>
2054 <reference ref="632727374"/>
2055 <reference ref="646227648"/>
2055 <reference ref="646227648"/>
2056 <reference ref="609285721"/>
2056 <reference ref="609285721"/>
2057 <reference ref="481834944"/>
2057 <reference ref="481834944"/>
2058 <reference ref="304266470"/>
2058 <reference ref="304266470"/>
2059 <reference ref="1046388886"/>
2059 <reference ref="1046388886"/>
2060 <reference ref="1056857174"/>
2060 <reference ref="1056857174"/>
2061 <reference ref="342932134"/>
2061 <reference ref="342932134"/>
2062 </object>
2062 </object>
2063 <reference key="parent" ref="694149608"/>
2063 <reference key="parent" ref="694149608"/>
2064 </object>
2064 </object>
2065 <object class="IBObjectRecord">
2065 <object class="IBObjectRecord">
2066 <int key="objectID">58</int>
2066 <int key="objectID">58</int>
2067 <reference key="object" ref="238522557"/>
2067 <reference key="object" ref="238522557"/>
2068 <reference key="parent" ref="110575045"/>
2068 <reference key="parent" ref="110575045"/>
2069 </object>
2069 </object>
2070 <object class="IBObjectRecord">
2070 <object class="IBObjectRecord">
2071 <int key="objectID">134</int>
2071 <int key="objectID">134</int>
2072 <reference key="object" ref="755159360"/>
2072 <reference key="object" ref="755159360"/>
2073 <reference key="parent" ref="110575045"/>
2073 <reference key="parent" ref="110575045"/>
2074 </object>
2074 </object>
2075 <object class="IBObjectRecord">
2075 <object class="IBObjectRecord">
2076 <int key="objectID">150</int>
2076 <int key="objectID">150</int>
2077 <reference key="object" ref="908899353"/>
2077 <reference key="object" ref="908899353"/>
2078 <reference key="parent" ref="110575045"/>
2078 <reference key="parent" ref="110575045"/>
2079 </object>
2079 </object>
2080 <object class="IBObjectRecord">
2080 <object class="IBObjectRecord">
2081 <int key="objectID">136</int>
2081 <int key="objectID">136</int>
2082 <reference key="object" ref="632727374"/>
2082 <reference key="object" ref="632727374"/>
2083 <reference key="parent" ref="110575045"/>
2083 <reference key="parent" ref="110575045"/>
2084 <string key="objectName">1111</string>
2084 <string key="objectName">1111</string>
2085 </object>
2085 </object>
2086 <object class="IBObjectRecord">
2086 <object class="IBObjectRecord">
2087 <int key="objectID">144</int>
2087 <int key="objectID">144</int>
2088 <reference key="object" ref="646227648"/>
2088 <reference key="object" ref="646227648"/>
2089 <reference key="parent" ref="110575045"/>
2089 <reference key="parent" ref="110575045"/>
2090 </object>
2090 </object>
2091 <object class="IBObjectRecord">
2091 <object class="IBObjectRecord">
2092 <int key="objectID">129</int>
2092 <int key="objectID">129</int>
2093 <reference key="object" ref="609285721"/>
2093 <reference key="object" ref="609285721"/>
2094 <reference key="parent" ref="110575045"/>
2094 <reference key="parent" ref="110575045"/>
2095 <string key="objectName">121</string>
2095 <string key="objectName">121</string>
2096 </object>
2096 </object>
2097 <object class="IBObjectRecord">
2097 <object class="IBObjectRecord">
2098 <int key="objectID">143</int>
2098 <int key="objectID">143</int>
2099 <reference key="object" ref="481834944"/>
2099 <reference key="object" ref="481834944"/>
2100 <reference key="parent" ref="110575045"/>
2100 <reference key="parent" ref="110575045"/>
2101 </object>
2101 </object>
2102 <object class="IBObjectRecord">
2102 <object class="IBObjectRecord">
2103 <int key="objectID">236</int>
2103 <int key="objectID">236</int>
2104 <reference key="object" ref="304266470"/>
2104 <reference key="object" ref="304266470"/>
2105 <reference key="parent" ref="110575045"/>
2105 <reference key="parent" ref="110575045"/>
2106 </object>
2106 </object>
2107 <object class="IBObjectRecord">
2107 <object class="IBObjectRecord">
2108 <int key="objectID">131</int>
2108 <int key="objectID">131</int>
2109 <reference key="object" ref="1046388886"/>
2109 <reference key="object" ref="1046388886"/>
2110 <object class="NSMutableArray" key="children">
2110 <object class="NSMutableArray" key="children">
2111 <bool key="EncodedWithXMLCoder">YES</bool>
2111 <bool key="EncodedWithXMLCoder">YES</bool>
2112 <reference ref="752062318"/>
2112 <reference ref="752062318"/>
2113 </object>
2113 </object>
2114 <reference key="parent" ref="110575045"/>
2114 <reference key="parent" ref="110575045"/>
2115 </object>
2115 </object>
2116 <object class="IBObjectRecord">
2116 <object class="IBObjectRecord">
2117 <int key="objectID">149</int>
2117 <int key="objectID">149</int>
2118 <reference key="object" ref="1056857174"/>
2118 <reference key="object" ref="1056857174"/>
2119 <reference key="parent" ref="110575045"/>
2119 <reference key="parent" ref="110575045"/>
2120 </object>
2120 </object>
2121 <object class="IBObjectRecord">
2121 <object class="IBObjectRecord">
2122 <int key="objectID">145</int>
2122 <int key="objectID">145</int>
2123 <reference key="object" ref="342932134"/>
2123 <reference key="object" ref="342932134"/>
2124 <reference key="parent" ref="110575045"/>
2124 <reference key="parent" ref="110575045"/>
2125 </object>
2125 </object>
2126 <object class="IBObjectRecord">
2126 <object class="IBObjectRecord">
2127 <int key="objectID">130</int>
2127 <int key="objectID">130</int>
2128 <reference key="object" ref="752062318"/>
2128 <reference key="object" ref="752062318"/>
2129 <reference key="parent" ref="1046388886"/>
2129 <reference key="parent" ref="1046388886"/>
2130 </object>
2130 </object>
2131 <object class="IBObjectRecord">
2131 <object class="IBObjectRecord">
2132 <int key="objectID">24</int>
2132 <int key="objectID">24</int>
2133 <reference key="object" ref="835318025"/>
2133 <reference key="object" ref="835318025"/>
2134 <object class="NSMutableArray" key="children">
2134 <object class="NSMutableArray" key="children">
2135 <bool key="EncodedWithXMLCoder">YES</bool>
2135 <bool key="EncodedWithXMLCoder">YES</bool>
2136 <reference ref="299356726"/>
2136 <reference ref="299356726"/>
2137 <reference ref="625202149"/>
2137 <reference ref="625202149"/>
2138 <reference ref="575023229"/>
2138 <reference ref="575023229"/>
2139 <reference ref="1011231497"/>
2139 <reference ref="1011231497"/>
2140 </object>
2140 </object>
2141 <reference key="parent" ref="713487014"/>
2141 <reference key="parent" ref="713487014"/>
2142 </object>
2142 </object>
2143 <object class="IBObjectRecord">
2143 <object class="IBObjectRecord">
2144 <int key="objectID">92</int>
2144 <int key="objectID">92</int>
2145 <reference key="object" ref="299356726"/>
2145 <reference key="object" ref="299356726"/>
2146 <reference key="parent" ref="835318025"/>
2146 <reference key="parent" ref="835318025"/>
2147 </object>
2147 </object>
2148 <object class="IBObjectRecord">
2148 <object class="IBObjectRecord">
2149 <int key="objectID">5</int>
2149 <int key="objectID">5</int>
2150 <reference key="object" ref="625202149"/>
2150 <reference key="object" ref="625202149"/>
2151 <reference key="parent" ref="835318025"/>
2151 <reference key="parent" ref="835318025"/>
2152 </object>
2152 </object>
2153 <object class="IBObjectRecord">
2153 <object class="IBObjectRecord">
2154 <int key="objectID">239</int>
2154 <int key="objectID">239</int>
2155 <reference key="object" ref="575023229"/>
2155 <reference key="object" ref="575023229"/>
2156 <reference key="parent" ref="835318025"/>
2156 <reference key="parent" ref="835318025"/>
2157 </object>
2157 </object>
2158 <object class="IBObjectRecord">
2158 <object class="IBObjectRecord">
2159 <int key="objectID">23</int>
2159 <int key="objectID">23</int>
2160 <reference key="object" ref="1011231497"/>
2160 <reference key="object" ref="1011231497"/>
2161 <reference key="parent" ref="835318025"/>
2161 <reference key="parent" ref="835318025"/>
2162 </object>
2162 </object>
2163 <object class="IBObjectRecord">
2163 <object class="IBObjectRecord">
2164 <int key="objectID">295</int>
2164 <int key="objectID">295</int>
2165 <reference key="object" ref="586577488"/>
2165 <reference key="object" ref="586577488"/>
2166 <object class="NSMutableArray" key="children">
2166 <object class="NSMutableArray" key="children">
2167 <bool key="EncodedWithXMLCoder">YES</bool>
2167 <bool key="EncodedWithXMLCoder">YES</bool>
2168 <reference ref="466310130"/>
2168 <reference ref="466310130"/>
2169 </object>
2169 </object>
2170 <reference key="parent" ref="649796088"/>
2170 <reference key="parent" ref="649796088"/>
2171 </object>
2171 </object>
2172 <object class="IBObjectRecord">
2172 <object class="IBObjectRecord">
2173 <int key="objectID">296</int>
2173 <int key="objectID">296</int>
2174 <reference key="object" ref="466310130"/>
2174 <reference key="object" ref="466310130"/>
2175 <object class="NSMutableArray" key="children">
2175 <object class="NSMutableArray" key="children">
2176 <bool key="EncodedWithXMLCoder">YES</bool>
2176 <bool key="EncodedWithXMLCoder">YES</bool>
2177 <reference ref="102151532"/>
2177 <reference ref="102151532"/>
2178 <reference ref="237841660"/>
2178 <reference ref="237841660"/>
2179 </object>
2179 </object>
2180 <reference key="parent" ref="586577488"/>
2180 <reference key="parent" ref="586577488"/>
2181 </object>
2181 </object>
2182 <object class="IBObjectRecord">
2182 <object class="IBObjectRecord">
2183 <int key="objectID">297</int>
2183 <int key="objectID">297</int>
2184 <reference key="object" ref="102151532"/>
2184 <reference key="object" ref="102151532"/>
2185 <reference key="parent" ref="466310130"/>
2185 <reference key="parent" ref="466310130"/>
2186 </object>
2186 </object>
2187 <object class="IBObjectRecord">
2187 <object class="IBObjectRecord">
2188 <int key="objectID">298</int>
2188 <int key="objectID">298</int>
2189 <reference key="object" ref="237841660"/>
2189 <reference key="object" ref="237841660"/>
2190 <reference key="parent" ref="466310130"/>
2190 <reference key="parent" ref="466310130"/>
2191 </object>
2191 </object>
2192 <object class="IBObjectRecord">
2192 <object class="IBObjectRecord">
2193 <int key="objectID">299</int>
2193 <int key="objectID">299</int>
2194 <reference key="object" ref="626404410"/>
2194 <reference key="object" ref="626404410"/>
2195 <object class="NSMutableArray" key="children">
2195 <object class="NSMutableArray" key="children">
2196 <bool key="EncodedWithXMLCoder">YES</bool>
2196 <bool key="EncodedWithXMLCoder">YES</bool>
2197 <reference ref="502084290"/>
2197 <reference ref="502084290"/>
2198 </object>
2198 </object>
2199 <reference key="parent" ref="649796088"/>
2199 <reference key="parent" ref="649796088"/>
2200 </object>
2200 </object>
2201 <object class="IBObjectRecord">
2201 <object class="IBObjectRecord">
2202 <int key="objectID">300</int>
2202 <int key="objectID">300</int>
2203 <reference key="object" ref="502084290"/>
2203 <reference key="object" ref="502084290"/>
2204 <object class="NSMutableArray" key="children">
2204 <object class="NSMutableArray" key="children">
2205 <bool key="EncodedWithXMLCoder">YES</bool>
2205 <bool key="EncodedWithXMLCoder">YES</bool>
2206 <reference ref="519768076"/>
2206 <reference ref="519768076"/>
2207 <reference ref="1028416764"/>
2207 <reference ref="1028416764"/>
2208 </object>
2208 </object>
2209 <reference key="parent" ref="626404410"/>
2209 <reference key="parent" ref="626404410"/>
2210 </object>
2210 </object>
2211 <object class="IBObjectRecord">
2211 <object class="IBObjectRecord">
2212 <int key="objectID">344</int>
2212 <int key="objectID">344</int>
2213 <reference key="object" ref="519768076"/>
2213 <reference key="object" ref="519768076"/>
2214 <reference key="parent" ref="502084290"/>
2214 <reference key="parent" ref="502084290"/>
2215 </object>
2215 </object>
2216 <object class="IBObjectRecord">
2216 <object class="IBObjectRecord">
2217 <int key="objectID">345</int>
2217 <int key="objectID">345</int>
2218 <reference key="object" ref="1028416764"/>
2218 <reference key="object" ref="1028416764"/>
2219 <reference key="parent" ref="502084290"/>
2219 <reference key="parent" ref="502084290"/>
2220 </object>
2220 </object>
2221 <object class="IBObjectRecord">
2221 <object class="IBObjectRecord">
2222 <int key="objectID">211</int>
2222 <int key="objectID">211</int>
2223 <reference key="object" ref="676164635"/>
2223 <reference key="object" ref="676164635"/>
2224 <object class="NSMutableArray" key="children">
2224 <object class="NSMutableArray" key="children">
2225 <bool key="EncodedWithXMLCoder">YES</bool>
2225 <bool key="EncodedWithXMLCoder">YES</bool>
2226 <reference ref="785027613"/>
2226 <reference ref="785027613"/>
2227 </object>
2227 </object>
2228 <reference key="parent" ref="789758025"/>
2228 <reference key="parent" ref="789758025"/>
2229 </object>
2229 </object>
2230 <object class="IBObjectRecord">
2230 <object class="IBObjectRecord">
2231 <int key="objectID">212</int>
2231 <int key="objectID">212</int>
2232 <reference key="object" ref="785027613"/>
2232 <reference key="object" ref="785027613"/>
2233 <object class="NSMutableArray" key="children">
2233 <object class="NSMutableArray" key="children">
2234 <bool key="EncodedWithXMLCoder">YES</bool>
2234 <bool key="EncodedWithXMLCoder">YES</bool>
2235 <reference ref="680220178"/>
2235 <reference ref="680220178"/>
2236 <reference ref="731782645"/>
2236 <reference ref="731782645"/>
2237 </object>
2237 </object>
2238 <reference key="parent" ref="676164635"/>
2238 <reference key="parent" ref="676164635"/>
2239 </object>
2239 </object>
2240 <object class="IBObjectRecord">
2240 <object class="IBObjectRecord">
2241 <int key="objectID">195</int>
2241 <int key="objectID">195</int>
2242 <reference key="object" ref="680220178"/>
2242 <reference key="object" ref="680220178"/>
2243 <reference key="parent" ref="785027613"/>
2243 <reference key="parent" ref="785027613"/>
2244 </object>
2244 </object>
2245 <object class="IBObjectRecord">
2245 <object class="IBObjectRecord">
2246 <int key="objectID">196</int>
2246 <int key="objectID">196</int>
2247 <reference key="object" ref="731782645"/>
2247 <reference key="object" ref="731782645"/>
2248 <reference key="parent" ref="785027613"/>
2248 <reference key="parent" ref="785027613"/>
2249 </object>
2249 </object>
2250 <object class="IBObjectRecord">
2250 <object class="IBObjectRecord">
2251 <int key="objectID">346</int>
2251 <int key="objectID">346</int>
2252 <reference key="object" ref="967646866"/>
2252 <reference key="object" ref="967646866"/>
2253 <reference key="parent" ref="769623530"/>
2253 <reference key="parent" ref="769623530"/>
2254 </object>
2254 </object>
2255 <object class="IBObjectRecord">
2255 <object class="IBObjectRecord">
2256 <int key="objectID">348</int>
2256 <int key="objectID">348</int>
2257 <reference key="object" ref="507821607"/>
2257 <reference key="object" ref="507821607"/>
2258 <object class="NSMutableArray" key="children">
2258 <object class="NSMutableArray" key="children">
2259 <bool key="EncodedWithXMLCoder">YES</bool>
2259 <bool key="EncodedWithXMLCoder">YES</bool>
2260 <reference ref="698887838"/>
2260 <reference ref="698887838"/>
2261 </object>
2261 </object>
2262 <reference key="parent" ref="789758025"/>
2262 <reference key="parent" ref="789758025"/>
2263 </object>
2263 </object>
2264 <object class="IBObjectRecord">
2264 <object class="IBObjectRecord">
2265 <int key="objectID">349</int>
2265 <int key="objectID">349</int>
2266 <reference key="object" ref="698887838"/>
2266 <reference key="object" ref="698887838"/>
2267 <object class="NSMutableArray" key="children">
2267 <object class="NSMutableArray" key="children">
2268 <bool key="EncodedWithXMLCoder">YES</bool>
2268 <bool key="EncodedWithXMLCoder">YES</bool>
2269 <reference ref="605118523"/>
2269 <reference ref="605118523"/>
2270 <reference ref="197661976"/>
2270 <reference ref="197661976"/>
2271 <reference ref="708854459"/>
2271 <reference ref="708854459"/>
2272 </object>
2272 </object>
2273 <reference key="parent" ref="507821607"/>
2273 <reference key="parent" ref="507821607"/>
2274 </object>
2274 </object>
2275 <object class="IBObjectRecord">
2275 <object class="IBObjectRecord">
2276 <int key="objectID">350</int>
2276 <int key="objectID">350</int>
2277 <reference key="object" ref="605118523"/>
2277 <reference key="object" ref="605118523"/>
2278 <reference key="parent" ref="698887838"/>
2278 <reference key="parent" ref="698887838"/>
2279 </object>
2279 </object>
2280 <object class="IBObjectRecord">
2280 <object class="IBObjectRecord">
2281 <int key="objectID">351</int>
2281 <int key="objectID">351</int>
2282 <reference key="object" ref="197661976"/>
2282 <reference key="object" ref="197661976"/>
2283 <reference key="parent" ref="698887838"/>
2283 <reference key="parent" ref="698887838"/>
2284 </object>
2284 </object>
2285 <object class="IBObjectRecord">
2285 <object class="IBObjectRecord">
2286 <int key="objectID">354</int>
2286 <int key="objectID">354</int>
2287 <reference key="object" ref="708854459"/>
2287 <reference key="object" ref="708854459"/>
2288 <reference key="parent" ref="698887838"/>
2288 <reference key="parent" ref="698887838"/>
2289 </object>
2289 </object>
2290 <object class="IBObjectRecord">
2290 <object class="IBObjectRecord">
2291 <int key="objectID">371</int>
2291 <int key="objectID">371</int>
2292 <reference key="object" ref="972006081"/>
2292 <reference key="object" ref="972006081"/>
2293 <object class="NSMutableArray" key="children">
2293 <object class="NSMutableArray" key="children">
2294 <bool key="EncodedWithXMLCoder">YES</bool>
2294 <bool key="EncodedWithXMLCoder">YES</bool>
2295 <reference ref="439893737"/>
2295 <reference ref="439893737"/>
2296 </object>
2296 </object>
2297 <reference key="parent" ref="1049"/>
2297 <reference key="parent" ref="1049"/>
2298 </object>
2298 </object>
2299 <object class="IBObjectRecord">
2299 <object class="IBObjectRecord">
2300 <int key="objectID">372</int>
2300 <int key="objectID">372</int>
2301 <reference key="object" ref="439893737"/>
2301 <reference key="object" ref="439893737"/>
2302 <object class="NSMutableArray" key="children">
2302 <object class="NSMutableArray" key="children">
2303 <bool key="EncodedWithXMLCoder">YES</bool>
2303 <bool key="EncodedWithXMLCoder">YES</bool>
2304 <reference ref="741760375"/>
2304 <reference ref="741760375"/>
2305 <reference ref="74807016"/>
2305 <reference ref="74807016"/>
2306 </object>
2306 </object>
2307 <reference key="parent" ref="972006081"/>
2307 <reference key="parent" ref="972006081"/>
2308 </object>
2308 </object>
2309 <object class="IBObjectRecord">
2309 <object class="IBObjectRecord">
2310 <int key="objectID">373</int>
2310 <int key="objectID">373</int>
2311 <reference key="object" ref="610635028"/>
2311 <reference key="object" ref="610635028"/>
2312 <reference key="parent" ref="1049"/>
2312 <reference key="parent" ref="1049"/>
2313 <reference key="objectName" ref="982950837"/>
2313 <reference key="objectName" ref="982950837"/>
2314 </object>
2314 </object>
2315 <object class="IBObjectRecord">
2315 <object class="IBObjectRecord">
2316 <int key="objectID">385</int>
2316 <int key="objectID">385</int>
2317 <reference key="object" ref="808393665"/>
2317 <reference key="object" ref="808393665"/>
2318 <reference key="parent" ref="1049"/>
2318 <reference key="parent" ref="1049"/>
2319 <string key="objectName">User Namespace Controller</string>
2319 <string key="objectName">User Namespace Controller</string>
2320 </object>
2320 </object>
2321 <object class="IBObjectRecord">
2321 <object class="IBObjectRecord">
2322 <int key="objectID">421</int>
2322 <int key="objectID">421</int>
2323 <reference key="object" ref="741760375"/>
2323 <reference key="object" ref="741760375"/>
2324 <object class="NSMutableArray" key="children">
2324 <object class="NSMutableArray" key="children">
2325 <bool key="EncodedWithXMLCoder">YES</bool>
2325 <bool key="EncodedWithXMLCoder">YES</bool>
2326 <reference ref="554641139"/>
2326 <reference ref="554641139"/>
2327 <reference ref="764100755"/>
2327 <reference ref="764100755"/>
2328 </object>
2328 </object>
2329 <reference key="parent" ref="439893737"/>
2329 <reference key="parent" ref="439893737"/>
2330 </object>
2330 </object>
2331 <object class="IBObjectRecord">
2331 <object class="IBObjectRecord">
2332 <int key="objectID">420</int>
2332 <int key="objectID">420</int>
2333 <reference key="object" ref="554641139"/>
2333 <reference key="object" ref="554641139"/>
2334 <object class="NSMutableArray" key="children">
2334 <object class="NSMutableArray" key="children">
2335 <bool key="EncodedWithXMLCoder">YES</bool>
2335 <bool key="EncodedWithXMLCoder">YES</bool>
2336 <reference ref="188193463"/>
2336 <reference ref="188193463"/>
2337 </object>
2337 </object>
2338 <reference key="parent" ref="741760375"/>
2338 <reference key="parent" ref="741760375"/>
2339 </object>
2339 </object>
2340 <object class="IBObjectRecord">
2340 <object class="IBObjectRecord">
2341 <int key="objectID">416</int>
2341 <int key="objectID">416</int>
2342 <reference key="object" ref="188193463"/>
2342 <reference key="object" ref="188193463"/>
2343 <object class="NSMutableArray" key="children">
2343 <object class="NSMutableArray" key="children">
2344 <bool key="EncodedWithXMLCoder">YES</bool>
2344 <bool key="EncodedWithXMLCoder">YES</bool>
2345 <reference ref="418410897"/>
2345 <reference ref="418410897"/>
2346 <reference ref="936733673"/>
2346 <reference ref="936733673"/>
2347 <reference ref="163417131"/>
2347 <reference ref="163417131"/>
2348 </object>
2348 </object>
2349 <reference key="parent" ref="554641139"/>
2349 <reference key="parent" ref="554641139"/>
2350 </object>
2350 </object>
2351 <object class="IBObjectRecord">
2351 <object class="IBObjectRecord">
2352 <int key="objectID">417</int>
2352 <int key="objectID">417</int>
2353 <reference key="object" ref="418410897"/>
2353 <reference key="object" ref="418410897"/>
2354 <reference key="parent" ref="188193463"/>
2354 <reference key="parent" ref="188193463"/>
2355 </object>
2355 </object>
2356 <object class="IBObjectRecord">
2356 <object class="IBObjectRecord">
2357 <int key="objectID">418</int>
2357 <int key="objectID">418</int>
2358 <reference key="object" ref="936733673"/>
2358 <reference key="object" ref="936733673"/>
2359 <reference key="parent" ref="188193463"/>
2359 <reference key="parent" ref="188193463"/>
2360 </object>
2360 </object>
2361 <object class="IBObjectRecord">
2361 <object class="IBObjectRecord">
2362 <int key="objectID">419</int>
2362 <int key="objectID">419</int>
2363 <reference key="object" ref="163417131"/>
2363 <reference key="object" ref="163417131"/>
2364 <reference key="parent" ref="188193463"/>
2364 <reference key="parent" ref="188193463"/>
2365 </object>
2365 </object>
2366 <object class="IBObjectRecord">
2366 <object class="IBObjectRecord">
2367 <int key="objectID">406</int>
2367 <int key="objectID">406</int>
2368 <reference key="object" ref="764100755"/>
2368 <reference key="object" ref="764100755"/>
2369 <object class="NSMutableArray" key="children">
2369 <object class="NSMutableArray" key="children">
2370 <bool key="EncodedWithXMLCoder">YES</bool>
2370 <bool key="EncodedWithXMLCoder">YES</bool>
2371 <reference ref="516244966"/>
2371 <reference ref="516244966"/>
2372 </object>
2372 </object>
2373 <reference key="parent" ref="741760375"/>
2373 <reference key="parent" ref="741760375"/>
2374 </object>
2374 </object>
2375 <object class="IBObjectRecord">
2375 <object class="IBObjectRecord">
2376 <int key="objectID">407</int>
2376 <int key="objectID">407</int>
2377 <reference key="object" ref="516244966"/>
2377 <reference key="object" ref="516244966"/>
2378 <object class="NSMutableArray" key="children">
2378 <object class="NSMutableArray" key="children">
2379 <bool key="EncodedWithXMLCoder">YES</bool>
2379 <bool key="EncodedWithXMLCoder">YES</bool>
2380 <reference ref="23853726"/>
2380 <reference ref="23853726"/>
2381 <reference ref="47103270"/>
2381 <reference ref="47103270"/>
2382 <reference ref="512953560"/>
2382 <reference ref="512953560"/>
2383 <reference ref="1048357090"/>
2383 <reference ref="1048357090"/>
2384 </object>
2384 </object>
2385 <reference key="parent" ref="764100755"/>
2385 <reference key="parent" ref="764100755"/>
2386 </object>
2386 </object>
2387 <object class="IBObjectRecord">
2387 <object class="IBObjectRecord">
2388 <int key="objectID">411</int>
2388 <int key="objectID">411</int>
2389 <reference key="object" ref="23853726"/>
2389 <reference key="object" ref="23853726"/>
2390 <object class="NSMutableArray" key="children">
2390 <object class="NSMutableArray" key="children">
2391 <bool key="EncodedWithXMLCoder">YES</bool>
2391 <bool key="EncodedWithXMLCoder">YES</bool>
2392 <reference ref="857054683"/>
2392 <reference ref="857054683"/>
2393 <reference ref="920426212"/>
2393 <reference ref="920426212"/>
2394 </object>
2394 </object>
2395 <reference key="parent" ref="516244966"/>
2395 <reference key="parent" ref="516244966"/>
2396 </object>
2396 </object>
2397 <object class="IBObjectRecord">
2397 <object class="IBObjectRecord">
2398 <int key="objectID">410</int>
2398 <int key="objectID">410</int>
2399 <reference key="object" ref="47103270"/>
2399 <reference key="object" ref="47103270"/>
2400 <reference key="parent" ref="516244966"/>
2400 <reference key="parent" ref="516244966"/>
2401 </object>
2401 </object>
2402 <object class="IBObjectRecord">
2402 <object class="IBObjectRecord">
2403 <int key="objectID">409</int>
2403 <int key="objectID">409</int>
2404 <reference key="object" ref="512953560"/>
2404 <reference key="object" ref="512953560"/>
2405 <reference key="parent" ref="516244966"/>
2405 <reference key="parent" ref="516244966"/>
2406 </object>
2406 </object>
2407 <object class="IBObjectRecord">
2407 <object class="IBObjectRecord">
2408 <int key="objectID">408</int>
2408 <int key="objectID">408</int>
2409 <reference key="object" ref="1048357090"/>
2409 <reference key="object" ref="1048357090"/>
2410 <reference key="parent" ref="516244966"/>
2410 <reference key="parent" ref="516244966"/>
2411 </object>
2411 </object>
2412 <object class="IBObjectRecord">
2412 <object class="IBObjectRecord">
2413 <int key="objectID">413</int>
2413 <int key="objectID">413</int>
2414 <reference key="object" ref="857054683"/>
2414 <reference key="object" ref="857054683"/>
2415 <object class="NSMutableArray" key="children">
2415 <object class="NSMutableArray" key="children">
2416 <bool key="EncodedWithXMLCoder">YES</bool>
2416 <bool key="EncodedWithXMLCoder">YES</bool>
2417 <reference ref="377147224"/>
2417 <reference ref="377147224"/>
2418 </object>
2418 </object>
2419 <reference key="parent" ref="23853726"/>
2419 <reference key="parent" ref="23853726"/>
2420 </object>
2420 </object>
2421 <object class="IBObjectRecord">
2421 <object class="IBObjectRecord">
2422 <int key="objectID">412</int>
2422 <int key="objectID">412</int>
2423 <reference key="object" ref="920426212"/>
2423 <reference key="object" ref="920426212"/>
2424 <object class="NSMutableArray" key="children">
2424 <object class="NSMutableArray" key="children">
2425 <bool key="EncodedWithXMLCoder">YES</bool>
2425 <bool key="EncodedWithXMLCoder">YES</bool>
2426 <reference ref="525071236"/>
2426 <reference ref="525071236"/>
2427 </object>
2427 </object>
2428 <reference key="parent" ref="23853726"/>
2428 <reference key="parent" ref="23853726"/>
2429 </object>
2429 </object>
2430 <object class="IBObjectRecord">
2430 <object class="IBObjectRecord">
2431 <int key="objectID">415</int>
2431 <int key="objectID">415</int>
2432 <reference key="object" ref="525071236"/>
2432 <reference key="object" ref="525071236"/>
2433 <reference key="parent" ref="920426212"/>
2433 <reference key="parent" ref="920426212"/>
2434 </object>
2434 </object>
2435 <object class="IBObjectRecord">
2435 <object class="IBObjectRecord">
2436 <int key="objectID">414</int>
2436 <int key="objectID">414</int>
2437 <reference key="object" ref="377147224"/>
2437 <reference key="object" ref="377147224"/>
2438 <reference key="parent" ref="857054683"/>
2438 <reference key="parent" ref="857054683"/>
2439 </object>
2439 </object>
2440 <object class="IBObjectRecord">
2440 <object class="IBObjectRecord">
2441 <int key="objectID">422</int>
2441 <int key="objectID">422</int>
2442 <reference key="object" ref="631572152"/>
2442 <reference key="object" ref="631572152"/>
2443 <reference key="parent" ref="1049"/>
2443 <reference key="parent" ref="1049"/>
2444 </object>
2444 </object>
2445 <object class="IBObjectRecord">
2445 <object class="IBObjectRecord">
2446 <int key="objectID">436</int>
2446 <int key="objectID">436</int>
2447 <reference key="object" ref="74807016"/>
2447 <reference key="object" ref="74807016"/>
2448 <reference key="parent" ref="439893737"/>
2448 <reference key="parent" ref="439893737"/>
2449 </object>
2449 </object>
2450 </object>
2450 </object>
2451 </object>
2451 </object>
2452 <object class="NSMutableDictionary" key="flattenedProperties">
2452 <object class="NSMutableDictionary" key="flattenedProperties">
2453 <bool key="EncodedWithXMLCoder">YES</bool>
2453 <bool key="EncodedWithXMLCoder">YES</bool>
2454 <object class="NSMutableArray" key="dict.sortedKeys">
2454 <object class="NSMutableArray" key="dict.sortedKeys">
2455 <bool key="EncodedWithXMLCoder">YES</bool>
2455 <bool key="EncodedWithXMLCoder">YES</bool>
2456 <string>-1.IBPluginDependency</string>
2456 <string>-1.IBPluginDependency</string>
2457 <string>-2.IBPluginDependency</string>
2457 <string>-2.IBPluginDependency</string>
2458 <string>-3.IBPluginDependency</string>
2458 <string>-3.IBPluginDependency</string>
2459 <string>103.IBPluginDependency</string>
2459 <string>103.IBPluginDependency</string>
2460 <string>103.ImportedFromIB2</string>
2460 <string>103.ImportedFromIB2</string>
2461 <string>106.IBPluginDependency</string>
2461 <string>106.IBPluginDependency</string>
2462 <string>106.ImportedFromIB2</string>
2462 <string>106.ImportedFromIB2</string>
2463 <string>106.editorWindowContentRectSynchronizationRect</string>
2463 <string>106.editorWindowContentRectSynchronizationRect</string>
2464 <string>111.IBPluginDependency</string>
2464 <string>111.IBPluginDependency</string>
2465 <string>111.ImportedFromIB2</string>
2465 <string>111.ImportedFromIB2</string>
2466 <string>112.IBPluginDependency</string>
2466 <string>112.IBPluginDependency</string>
2467 <string>112.ImportedFromIB2</string>
2467 <string>112.ImportedFromIB2</string>
2468 <string>124.IBPluginDependency</string>
2468 <string>124.IBPluginDependency</string>
2469 <string>124.ImportedFromIB2</string>
2469 <string>124.ImportedFromIB2</string>
2470 <string>125.IBPluginDependency</string>
2470 <string>125.IBPluginDependency</string>
2471 <string>125.ImportedFromIB2</string>
2471 <string>125.ImportedFromIB2</string>
2472 <string>125.editorWindowContentRectSynchronizationRect</string>
2472 <string>125.editorWindowContentRectSynchronizationRect</string>
2473 <string>126.IBPluginDependency</string>
2473 <string>126.IBPluginDependency</string>
2474 <string>126.ImportedFromIB2</string>
2474 <string>126.ImportedFromIB2</string>
2475 <string>129.IBPluginDependency</string>
2475 <string>129.IBPluginDependency</string>
2476 <string>129.ImportedFromIB2</string>
2476 <string>129.ImportedFromIB2</string>
2477 <string>130.IBPluginDependency</string>
2477 <string>130.IBPluginDependency</string>
2478 <string>130.ImportedFromIB2</string>
2478 <string>130.ImportedFromIB2</string>
2479 <string>130.editorWindowContentRectSynchronizationRect</string>
2479 <string>130.editorWindowContentRectSynchronizationRect</string>
2480 <string>131.IBPluginDependency</string>
2480 <string>131.IBPluginDependency</string>
2481 <string>131.ImportedFromIB2</string>
2481 <string>131.ImportedFromIB2</string>
2482 <string>134.IBPluginDependency</string>
2482 <string>134.IBPluginDependency</string>
2483 <string>134.ImportedFromIB2</string>
2483 <string>134.ImportedFromIB2</string>
2484 <string>136.IBPluginDependency</string>
2484 <string>136.IBPluginDependency</string>
2485 <string>136.ImportedFromIB2</string>
2485 <string>136.ImportedFromIB2</string>
2486 <string>143.IBPluginDependency</string>
2486 <string>143.IBPluginDependency</string>
2487 <string>143.ImportedFromIB2</string>
2487 <string>143.ImportedFromIB2</string>
2488 <string>144.IBPluginDependency</string>
2488 <string>144.IBPluginDependency</string>
2489 <string>144.ImportedFromIB2</string>
2489 <string>144.ImportedFromIB2</string>
2490 <string>145.IBPluginDependency</string>
2490 <string>145.IBPluginDependency</string>
2491 <string>145.ImportedFromIB2</string>
2491 <string>145.ImportedFromIB2</string>
2492 <string>149.IBPluginDependency</string>
2492 <string>149.IBPluginDependency</string>
2493 <string>149.ImportedFromIB2</string>
2493 <string>149.ImportedFromIB2</string>
2494 <string>150.IBPluginDependency</string>
2494 <string>150.IBPluginDependency</string>
2495 <string>150.ImportedFromIB2</string>
2495 <string>150.ImportedFromIB2</string>
2496 <string>19.IBPluginDependency</string>
2496 <string>19.IBPluginDependency</string>
2497 <string>19.ImportedFromIB2</string>
2497 <string>19.ImportedFromIB2</string>
2498 <string>195.IBPluginDependency</string>
2498 <string>195.IBPluginDependency</string>
2499 <string>195.ImportedFromIB2</string>
2499 <string>195.ImportedFromIB2</string>
2500 <string>196.IBPluginDependency</string>
2500 <string>196.IBPluginDependency</string>
2501 <string>196.ImportedFromIB2</string>
2501 <string>196.ImportedFromIB2</string>
2502 <string>197.IBPluginDependency</string>
2502 <string>197.IBPluginDependency</string>
2503 <string>197.ImportedFromIB2</string>
2503 <string>197.ImportedFromIB2</string>
2504 <string>198.IBPluginDependency</string>
2504 <string>198.IBPluginDependency</string>
2505 <string>198.ImportedFromIB2</string>
2505 <string>198.ImportedFromIB2</string>
2506 <string>199.IBPluginDependency</string>
2506 <string>199.IBPluginDependency</string>
2507 <string>199.ImportedFromIB2</string>
2507 <string>199.ImportedFromIB2</string>
2508 <string>200.IBPluginDependency</string>
2508 <string>200.IBPluginDependency</string>
2509 <string>200.ImportedFromIB2</string>
2509 <string>200.ImportedFromIB2</string>
2510 <string>200.editorWindowContentRectSynchronizationRect</string>
2510 <string>200.editorWindowContentRectSynchronizationRect</string>
2511 <string>201.IBPluginDependency</string>
2511 <string>201.IBPluginDependency</string>
2512 <string>201.ImportedFromIB2</string>
2512 <string>201.ImportedFromIB2</string>
2513 <string>202.IBPluginDependency</string>
2513 <string>202.IBPluginDependency</string>
2514 <string>202.ImportedFromIB2</string>
2514 <string>202.ImportedFromIB2</string>
2515 <string>203.IBPluginDependency</string>
2515 <string>203.IBPluginDependency</string>
2516 <string>203.ImportedFromIB2</string>
2516 <string>203.ImportedFromIB2</string>
2517 <string>204.IBPluginDependency</string>
2517 <string>204.IBPluginDependency</string>
2518 <string>204.ImportedFromIB2</string>
2518 <string>204.ImportedFromIB2</string>
2519 <string>205.IBPluginDependency</string>
2519 <string>205.IBPluginDependency</string>
2520 <string>205.ImportedFromIB2</string>
2520 <string>205.ImportedFromIB2</string>
2521 <string>205.editorWindowContentRectSynchronizationRect</string>
2521 <string>205.editorWindowContentRectSynchronizationRect</string>
2522 <string>206.IBPluginDependency</string>
2522 <string>206.IBPluginDependency</string>
2523 <string>206.ImportedFromIB2</string>
2523 <string>206.ImportedFromIB2</string>
2524 <string>207.IBPluginDependency</string>
2524 <string>207.IBPluginDependency</string>
2525 <string>207.ImportedFromIB2</string>
2525 <string>207.ImportedFromIB2</string>
2526 <string>208.IBPluginDependency</string>
2526 <string>208.IBPluginDependency</string>
2527 <string>208.ImportedFromIB2</string>
2527 <string>208.ImportedFromIB2</string>
2528 <string>209.IBPluginDependency</string>
2528 <string>209.IBPluginDependency</string>
2529 <string>209.ImportedFromIB2</string>
2529 <string>209.ImportedFromIB2</string>
2530 <string>210.IBPluginDependency</string>
2530 <string>210.IBPluginDependency</string>
2531 <string>210.ImportedFromIB2</string>
2531 <string>210.ImportedFromIB2</string>
2532 <string>211.IBPluginDependency</string>
2532 <string>211.IBPluginDependency</string>
2533 <string>211.ImportedFromIB2</string>
2533 <string>211.ImportedFromIB2</string>
2534 <string>212.IBPluginDependency</string>
2534 <string>212.IBPluginDependency</string>
2535 <string>212.ImportedFromIB2</string>
2535 <string>212.ImportedFromIB2</string>
2536 <string>212.editorWindowContentRectSynchronizationRect</string>
2536 <string>212.editorWindowContentRectSynchronizationRect</string>
2537 <string>213.IBPluginDependency</string>
2537 <string>213.IBPluginDependency</string>
2538 <string>213.ImportedFromIB2</string>
2538 <string>213.ImportedFromIB2</string>
2539 <string>214.IBPluginDependency</string>
2539 <string>214.IBPluginDependency</string>
2540 <string>214.ImportedFromIB2</string>
2540 <string>214.ImportedFromIB2</string>
2541 <string>215.IBPluginDependency</string>
2541 <string>215.IBPluginDependency</string>
2542 <string>215.ImportedFromIB2</string>
2542 <string>215.ImportedFromIB2</string>
2543 <string>216.IBPluginDependency</string>
2543 <string>216.IBPluginDependency</string>
2544 <string>216.ImportedFromIB2</string>
2544 <string>216.ImportedFromIB2</string>
2545 <string>217.IBPluginDependency</string>
2545 <string>217.IBPluginDependency</string>
2546 <string>217.ImportedFromIB2</string>
2546 <string>217.ImportedFromIB2</string>
2547 <string>218.IBPluginDependency</string>
2547 <string>218.IBPluginDependency</string>
2548 <string>218.ImportedFromIB2</string>
2548 <string>218.ImportedFromIB2</string>
2549 <string>219.IBPluginDependency</string>
2549 <string>219.IBPluginDependency</string>
2550 <string>219.ImportedFromIB2</string>
2550 <string>219.ImportedFromIB2</string>
2551 <string>220.IBPluginDependency</string>
2551 <string>220.IBPluginDependency</string>
2552 <string>220.ImportedFromIB2</string>
2552 <string>220.ImportedFromIB2</string>
2553 <string>220.editorWindowContentRectSynchronizationRect</string>
2553 <string>220.editorWindowContentRectSynchronizationRect</string>
2554 <string>221.IBPluginDependency</string>
2554 <string>221.IBPluginDependency</string>
2555 <string>221.ImportedFromIB2</string>
2555 <string>221.ImportedFromIB2</string>
2556 <string>23.IBPluginDependency</string>
2556 <string>23.IBPluginDependency</string>
2557 <string>23.ImportedFromIB2</string>
2557 <string>23.ImportedFromIB2</string>
2558 <string>236.IBPluginDependency</string>
2558 <string>236.IBPluginDependency</string>
2559 <string>236.ImportedFromIB2</string>
2559 <string>236.ImportedFromIB2</string>
2560 <string>239.IBPluginDependency</string>
2560 <string>239.IBPluginDependency</string>
2561 <string>239.ImportedFromIB2</string>
2561 <string>239.ImportedFromIB2</string>
2562 <string>24.IBPluginDependency</string>
2562 <string>24.IBPluginDependency</string>
2563 <string>24.ImportedFromIB2</string>
2563 <string>24.ImportedFromIB2</string>
2564 <string>24.editorWindowContentRectSynchronizationRect</string>
2564 <string>24.editorWindowContentRectSynchronizationRect</string>
2565 <string>29.IBPluginDependency</string>
2565 <string>29.IBPluginDependency</string>
2566 <string>29.ImportedFromIB2</string>
2566 <string>29.ImportedFromIB2</string>
2567 <string>29.WindowOrigin</string>
2567 <string>29.WindowOrigin</string>
2568 <string>29.editorWindowContentRectSynchronizationRect</string>
2568 <string>29.editorWindowContentRectSynchronizationRect</string>
2569 <string>295.IBPluginDependency</string>
2569 <string>295.IBPluginDependency</string>
2570 <string>296.IBPluginDependency</string>
2570 <string>296.IBPluginDependency</string>
2571 <string>296.editorWindowContentRectSynchronizationRect</string>
2571 <string>296.editorWindowContentRectSynchronizationRect</string>
2572 <string>297.IBPluginDependency</string>
2572 <string>297.IBPluginDependency</string>
2573 <string>298.IBPluginDependency</string>
2573 <string>298.IBPluginDependency</string>
2574 <string>299.IBPluginDependency</string>
2574 <string>299.IBPluginDependency</string>
2575 <string>300.IBPluginDependency</string>
2575 <string>300.IBPluginDependency</string>
2576 <string>300.editorWindowContentRectSynchronizationRect</string>
2576 <string>300.editorWindowContentRectSynchronizationRect</string>
2577 <string>344.IBPluginDependency</string>
2577 <string>344.IBPluginDependency</string>
2578 <string>345.IBPluginDependency</string>
2578 <string>345.IBPluginDependency</string>
2579 <string>346.IBPluginDependency</string>
2579 <string>346.IBPluginDependency</string>
2580 <string>346.ImportedFromIB2</string>
2580 <string>346.ImportedFromIB2</string>
2581 <string>348.IBPluginDependency</string>
2581 <string>348.IBPluginDependency</string>
2582 <string>348.ImportedFromIB2</string>
2582 <string>348.ImportedFromIB2</string>
2583 <string>349.IBPluginDependency</string>
2583 <string>349.IBPluginDependency</string>
2584 <string>349.ImportedFromIB2</string>
2584 <string>349.ImportedFromIB2</string>
2585 <string>349.editorWindowContentRectSynchronizationRect</string>
2585 <string>349.editorWindowContentRectSynchronizationRect</string>
2586 <string>350.IBPluginDependency</string>
2586 <string>350.IBPluginDependency</string>
2587 <string>350.ImportedFromIB2</string>
2587 <string>350.ImportedFromIB2</string>
2588 <string>351.IBPluginDependency</string>
2588 <string>351.IBPluginDependency</string>
2589 <string>351.ImportedFromIB2</string>
2589 <string>351.ImportedFromIB2</string>
2590 <string>354.IBPluginDependency</string>
2590 <string>354.IBPluginDependency</string>
2591 <string>354.ImportedFromIB2</string>
2591 <string>354.ImportedFromIB2</string>
2592 <string>371.IBPluginDependency</string>
2592 <string>371.IBPluginDependency</string>
2593 <string>371.IBViewEditorWindowController.showingLayoutRectangles</string>
2593 <string>371.IBViewEditorWindowController.showingLayoutRectangles</string>
2594 <string>371.IBWindowTemplateEditedContentRect</string>
2594 <string>371.IBWindowTemplateEditedContentRect</string>
2595 <string>371.NSWindowTemplate.visibleAtLaunch</string>
2595 <string>371.NSWindowTemplate.visibleAtLaunch</string>
2596 <string>371.editorWindowContentRectSynchronizationRect</string>
2596 <string>371.editorWindowContentRectSynchronizationRect</string>
2597 <string>372.IBPluginDependency</string>
2597 <string>372.IBPluginDependency</string>
2598 <string>373.IBPluginDependency</string>
2598 <string>373.IBPluginDependency</string>
2599 <string>385.IBPluginDependency</string>
2599 <string>385.IBPluginDependency</string>
2600 <string>407.IBPluginDependency</string>
2600 <string>407.IBPluginDependency</string>
2601 <string>409.IBPluginDependency</string>
2601 <string>409.IBPluginDependency</string>
2602 <string>410.IBPluginDependency</string>
2602 <string>410.IBPluginDependency</string>
2603 <string>411.IBPluginDependency</string>
2603 <string>411.IBPluginDependency</string>
2604 <string>412.IBPluginDependency</string>
2604 <string>412.IBPluginDependency</string>
2605 <string>413.IBPluginDependency</string>
2605 <string>413.IBPluginDependency</string>
2606 <string>414.IBPluginDependency</string>
2606 <string>414.IBPluginDependency</string>
2607 <string>415.IBPluginDependency</string>
2607 <string>415.IBPluginDependency</string>
2608 <string>416.IBPluginDependency</string>
2608 <string>416.IBPluginDependency</string>
2609 <string>417.IBPluginDependency</string>
2609 <string>417.IBPluginDependency</string>
2610 <string>418.IBPluginDependency</string>
2610 <string>418.IBPluginDependency</string>
2611 <string>419.IBAttributePlaceholdersKey</string>
2611 <string>419.IBAttributePlaceholdersKey</string>
2612 <string>419.IBPluginDependency</string>
2612 <string>419.IBPluginDependency</string>
2613 <string>422.IBPluginDependency</string>
2613 <string>422.IBPluginDependency</string>
2614 <string>436.IBPluginDependency</string>
2614 <string>436.IBPluginDependency</string>
2615 <string>5.IBPluginDependency</string>
2615 <string>5.IBPluginDependency</string>
2616 <string>5.ImportedFromIB2</string>
2616 <string>5.ImportedFromIB2</string>
2617 <string>56.IBPluginDependency</string>
2617 <string>56.IBPluginDependency</string>
2618 <string>56.ImportedFromIB2</string>
2618 <string>56.ImportedFromIB2</string>
2619 <string>57.IBPluginDependency</string>
2619 <string>57.IBPluginDependency</string>
2620 <string>57.ImportedFromIB2</string>
2620 <string>57.ImportedFromIB2</string>
2621 <string>57.editorWindowContentRectSynchronizationRect</string>
2621 <string>57.editorWindowContentRectSynchronizationRect</string>
2622 <string>58.IBPluginDependency</string>
2622 <string>58.IBPluginDependency</string>
2623 <string>58.ImportedFromIB2</string>
2623 <string>58.ImportedFromIB2</string>
2624 <string>72.IBPluginDependency</string>
2624 <string>72.IBPluginDependency</string>
2625 <string>72.ImportedFromIB2</string>
2625 <string>72.ImportedFromIB2</string>
2626 <string>73.IBPluginDependency</string>
2626 <string>73.IBPluginDependency</string>
2627 <string>73.ImportedFromIB2</string>
2627 <string>73.ImportedFromIB2</string>
2628 <string>74.IBPluginDependency</string>
2628 <string>74.IBPluginDependency</string>
2629 <string>74.ImportedFromIB2</string>
2629 <string>74.ImportedFromIB2</string>
2630 <string>75.IBPluginDependency</string>
2630 <string>75.IBPluginDependency</string>
2631 <string>75.ImportedFromIB2</string>
2631 <string>75.ImportedFromIB2</string>
2632 <string>77.IBPluginDependency</string>
2632 <string>77.IBPluginDependency</string>
2633 <string>77.ImportedFromIB2</string>
2633 <string>77.ImportedFromIB2</string>
2634 <string>78.IBPluginDependency</string>
2634 <string>78.IBPluginDependency</string>
2635 <string>78.ImportedFromIB2</string>
2635 <string>78.ImportedFromIB2</string>
2636 <string>79.IBPluginDependency</string>
2636 <string>79.IBPluginDependency</string>
2637 <string>79.ImportedFromIB2</string>
2637 <string>79.ImportedFromIB2</string>
2638 <string>80.IBPluginDependency</string>
2638 <string>80.IBPluginDependency</string>
2639 <string>80.ImportedFromIB2</string>
2639 <string>80.ImportedFromIB2</string>
2640 <string>81.IBPluginDependency</string>
2640 <string>81.IBPluginDependency</string>
2641 <string>81.ImportedFromIB2</string>
2641 <string>81.ImportedFromIB2</string>
2642 <string>81.editorWindowContentRectSynchronizationRect</string>
2642 <string>81.editorWindowContentRectSynchronizationRect</string>
2643 <string>82.IBPluginDependency</string>
2643 <string>82.IBPluginDependency</string>
2644 <string>82.ImportedFromIB2</string>
2644 <string>82.ImportedFromIB2</string>
2645 <string>83.IBPluginDependency</string>
2645 <string>83.IBPluginDependency</string>
2646 <string>83.ImportedFromIB2</string>
2646 <string>83.ImportedFromIB2</string>
2647 <string>92.IBPluginDependency</string>
2647 <string>92.IBPluginDependency</string>
2648 <string>92.ImportedFromIB2</string>
2648 <string>92.ImportedFromIB2</string>
2649 </object>
2649 </object>
2650 <object class="NSMutableArray" key="dict.values">
2650 <object class="NSMutableArray" key="dict.values">
2651 <bool key="EncodedWithXMLCoder">YES</bool>
2651 <bool key="EncodedWithXMLCoder">YES</bool>
2652 <reference ref="113577022"/>
2652 <reference ref="113577022"/>
2653 <reference ref="885801228"/>
2653 <reference ref="885801228"/>
2654 <reference ref="885801228"/>
2654 <reference ref="885801228"/>
2655 <reference ref="113577022"/>
2655 <reference ref="113577022"/>
2656 <reference ref="9"/>
2656 <reference ref="9"/>
2657 <reference ref="113577022"/>
2657 <reference ref="113577022"/>
2658 <reference ref="9"/>
2658 <reference ref="9"/>
2659 <string>{{596, 852}, {216, 23}}</string>
2659 <string>{{596, 852}, {216, 23}}</string>
2660 <reference ref="113577022"/>
2660 <reference ref="113577022"/>
2661 <reference ref="9"/>
2661 <reference ref="9"/>
2662 <reference ref="113577022"/>
2662 <reference ref="113577022"/>
2663 <reference ref="9"/>
2663 <reference ref="9"/>
2664 <reference ref="113577022"/>
2664 <reference ref="113577022"/>
2665 <reference ref="9"/>
2665 <reference ref="9"/>
2666 <reference ref="113577022"/>
2666 <reference ref="113577022"/>
2667 <reference ref="9"/>
2667 <reference ref="9"/>
2668 <string>{{522, 812}, {146, 23}}</string>
2668 <string>{{522, 812}, {146, 23}}</string>
2669 <reference ref="113577022"/>
2669 <reference ref="113577022"/>
2670 <reference ref="9"/>
2670 <reference ref="9"/>
2671 <reference ref="113577022"/>
2671 <reference ref="113577022"/>
2672 <reference ref="9"/>
2672 <reference ref="9"/>
2673 <reference ref="113577022"/>
2673 <reference ref="113577022"/>
2674 <reference ref="9"/>
2674 <reference ref="9"/>
2675 <string>{{436, 809}, {64, 6}}</string>
2675 <string>{{436, 809}, {64, 6}}</string>
2676 <reference ref="113577022"/>
2676 <reference ref="113577022"/>
2677 <reference ref="9"/>
2677 <reference ref="9"/>
2678 <reference ref="113577022"/>
2678 <reference ref="113577022"/>
2679 <reference ref="9"/>
2679 <reference ref="9"/>
2680 <reference ref="113577022"/>
2680 <reference ref="113577022"/>
2681 <reference ref="9"/>
2681 <reference ref="9"/>
2682 <reference ref="113577022"/>
2682 <reference ref="113577022"/>
2683 <reference ref="9"/>
2683 <reference ref="9"/>
2684 <reference ref="113577022"/>
2684 <reference ref="113577022"/>
2685 <reference ref="9"/>
2685 <reference ref="9"/>
2686 <reference ref="113577022"/>
2686 <reference ref="113577022"/>
2687 <reference ref="9"/>
2687 <reference ref="9"/>
2688 <reference ref="113577022"/>
2688 <reference ref="113577022"/>
2689 <reference ref="9"/>
2689 <reference ref="9"/>
2690 <reference ref="113577022"/>
2690 <reference ref="113577022"/>
2691 <reference ref="9"/>
2691 <reference ref="9"/>
2692 <reference ref="113577022"/>
2692 <reference ref="113577022"/>
2693 <reference ref="9"/>
2693 <reference ref="9"/>
2694 <reference ref="113577022"/>
2694 <reference ref="113577022"/>
2695 <reference ref="9"/>
2695 <reference ref="9"/>
2696 <reference ref="113577022"/>
2696 <reference ref="113577022"/>
2697 <reference ref="9"/>
2697 <reference ref="9"/>
2698 <reference ref="113577022"/>
2698 <reference ref="113577022"/>
2699 <reference ref="9"/>
2699 <reference ref="9"/>
2700 <reference ref="113577022"/>
2700 <reference ref="113577022"/>
2701 <reference ref="9"/>
2701 <reference ref="9"/>
2702 <reference ref="113577022"/>
2702 <reference ref="113577022"/>
2703 <reference ref="9"/>
2703 <reference ref="9"/>
2704 <reference ref="113577022"/>
2704 <reference ref="113577022"/>
2705 <reference ref="9"/>
2705 <reference ref="9"/>
2706 <string>{{608, 612}, {275, 83}}</string>
2706 <string>{{608, 612}, {275, 83}}</string>
2707 <reference ref="113577022"/>
2707 <reference ref="113577022"/>
2708 <reference ref="9"/>
2708 <reference ref="9"/>
2709 <reference ref="113577022"/>
2709 <reference ref="113577022"/>
2710 <reference ref="9"/>
2710 <reference ref="9"/>
2711 <reference ref="113577022"/>
2711 <reference ref="113577022"/>
2712 <reference ref="9"/>
2712 <reference ref="9"/>
2713 <reference ref="113577022"/>
2713 <reference ref="113577022"/>
2714 <reference ref="9"/>
2714 <reference ref="9"/>
2715 <reference ref="113577022"/>
2715 <reference ref="113577022"/>
2716 <reference ref="9"/>
2716 <reference ref="9"/>
2717 <string>{{365, 632}, {243, 243}}</string>
2717 <string>{{365, 632}, {243, 243}}</string>
2718 <reference ref="113577022"/>
2718 <reference ref="113577022"/>
2719 <reference ref="9"/>
2719 <reference ref="9"/>
2720 <reference ref="113577022"/>
2720 <reference ref="113577022"/>
2721 <reference ref="9"/>
2721 <reference ref="9"/>
2722 <reference ref="113577022"/>
2722 <reference ref="113577022"/>
2723 <reference ref="9"/>
2723 <reference ref="9"/>
2724 <reference ref="113577022"/>
2724 <reference ref="113577022"/>
2725 <reference ref="9"/>
2725 <reference ref="9"/>
2726 <reference ref="113577022"/>
2726 <reference ref="113577022"/>
2727 <reference ref="9"/>
2727 <reference ref="9"/>
2728 <reference ref="113577022"/>
2728 <reference ref="113577022"/>
2729 <reference ref="9"/>
2729 <reference ref="9"/>
2730 <reference ref="113577022"/>
2730 <reference ref="113577022"/>
2731 <reference ref="9"/>
2731 <reference ref="9"/>
2732 <string>{{608, 612}, {167, 43}}</string>
2732 <string>{{608, 612}, {167, 43}}</string>
2733 <reference ref="113577022"/>
2733 <reference ref="113577022"/>
2734 <reference ref="9"/>
2734 <reference ref="9"/>
2735 <reference ref="113577022"/>
2735 <reference ref="113577022"/>
2736 <reference ref="9"/>
2736 <reference ref="9"/>
2737 <reference ref="113577022"/>
2737 <reference ref="113577022"/>
2738 <reference ref="9"/>
2738 <reference ref="9"/>
2739 <reference ref="113577022"/>
2739 <reference ref="113577022"/>
2740 <reference ref="9"/>
2740 <reference ref="9"/>
2741 <reference ref="113577022"/>
2741 <reference ref="113577022"/>
2742 <reference ref="9"/>
2742 <reference ref="9"/>
2743 <reference ref="113577022"/>
2743 <reference ref="113577022"/>
2744 <reference ref="9"/>
2744 <reference ref="9"/>
2745 <reference ref="113577022"/>
2745 <reference ref="113577022"/>
2746 <reference ref="9"/>
2746 <reference ref="9"/>
2747 <reference ref="113577022"/>
2747 <reference ref="113577022"/>
2748 <reference ref="9"/>
2748 <reference ref="9"/>
2749 <string>{{608, 612}, {241, 103}}</string>
2749 <string>{{608, 612}, {241, 103}}</string>
2750 <reference ref="113577022"/>
2750 <reference ref="113577022"/>
2751 <reference ref="9"/>
2751 <reference ref="9"/>
2752 <reference ref="113577022"/>
2752 <reference ref="113577022"/>
2753 <reference ref="9"/>
2753 <reference ref="9"/>
2754 <reference ref="113577022"/>
2754 <reference ref="113577022"/>
2755 <reference ref="9"/>
2755 <reference ref="9"/>
2756 <reference ref="113577022"/>
2756 <reference ref="113577022"/>
2757 <reference ref="9"/>
2757 <reference ref="9"/>
2758 <reference ref="113577022"/>
2758 <reference ref="113577022"/>
2759 <reference ref="9"/>
2759 <reference ref="9"/>
2760 <string>{{525, 802}, {197, 73}}</string>
2760 <string>{{525, 802}, {197, 73}}</string>
2761 <reference ref="113577022"/>
2761 <reference ref="113577022"/>
2762 <reference ref="9"/>
2762 <reference ref="9"/>
2763 <string>{74, 862}</string>
2763 <string>{74, 862}</string>
2764 <string>{{11, 736}, {489, 20}}</string>
2764 <string>{{11, 736}, {489, 20}}</string>
2765 <reference ref="113577022"/>
2765 <reference ref="113577022"/>
2766 <reference ref="113577022"/>
2766 <reference ref="113577022"/>
2767 <string>{{475, 832}, {234, 43}}</string>
2767 <string>{{475, 832}, {234, 43}}</string>
2768 <reference ref="113577022"/>
2768 <reference ref="113577022"/>
2769 <reference ref="113577022"/>
2769 <reference ref="113577022"/>
2770 <reference ref="113577022"/>
2770 <reference ref="113577022"/>
2771 <reference ref="113577022"/>
2771 <reference ref="113577022"/>
2772 <string>{{409, 832}, {176, 43}}</string>
2772 <string>{{409, 832}, {176, 43}}</string>
2773 <reference ref="113577022"/>
2773 <reference ref="113577022"/>
2774 <reference ref="113577022"/>
2774 <reference ref="113577022"/>
2775 <reference ref="113577022"/>
2775 <reference ref="113577022"/>
2776 <reference ref="9"/>
2776 <reference ref="9"/>
2777 <reference ref="113577022"/>
2777 <reference ref="113577022"/>
2778 <reference ref="9"/>
2778 <reference ref="9"/>
2779 <reference ref="113577022"/>
2779 <reference ref="113577022"/>
2780 <reference ref="9"/>
2780 <reference ref="9"/>
2781 <string>{{608, 612}, {215, 63}}</string>
2781 <string>{{608, 612}, {215, 63}}</string>
2782 <reference ref="113577022"/>
2782 <reference ref="113577022"/>
2783 <reference ref="9"/>
2783 <reference ref="9"/>
2784 <reference ref="113577022"/>
2784 <reference ref="113577022"/>
2785 <reference ref="9"/>
2785 <reference ref="9"/>
2786 <reference ref="113577022"/>
2786 <reference ref="113577022"/>
2787 <reference ref="9"/>
2787 <reference ref="9"/>
2788 <reference ref="113577022"/>
2788 <reference ref="113577022"/>
2789 <integer value="0"/>
2789 <integer value="0"/>
2790 <string>{{108, 368}, {725, 337}}</string>
2790 <string>{{27, 368}, {725, 337}}</string>
2791 <reference ref="9"/>
2791 <reference ref="9"/>
2792 <string>{{108, 368}, {725, 337}}</string>
2792 <string>{{27, 368}, {725, 337}}</string>
2793 <reference ref="113577022"/>
2793 <reference ref="113577022"/>
2794 <reference ref="113577022"/>
2794 <reference ref="113577022"/>
2795 <reference ref="113577022"/>
2795 <reference ref="113577022"/>
2796 <reference ref="113577022"/>
2796 <reference ref="113577022"/>
2797 <reference ref="113577022"/>
2797 <reference ref="113577022"/>
2798 <reference ref="113577022"/>
2798 <reference ref="113577022"/>
2799 <reference ref="113577022"/>
2799 <reference ref="113577022"/>
2800 <reference ref="113577022"/>
2800 <reference ref="113577022"/>
2801 <reference ref="113577022"/>
2801 <reference ref="113577022"/>
2802 <reference ref="113577022"/>
2802 <reference ref="113577022"/>
2803 <reference ref="113577022"/>
2803 <reference ref="113577022"/>
2804 <reference ref="113577022"/>
2804 <reference ref="113577022"/>
2805 <reference ref="113577022"/>
2805 <reference ref="113577022"/>
2806 <reference ref="113577022"/>
2806 <reference ref="113577022"/>
2807 <object class="NSMutableDictionary">
2807 <object class="NSMutableDictionary">
2808 <bool key="EncodedWithXMLCoder">YES</bool>
2808 <bool key="EncodedWithXMLCoder">YES</bool>
2809 <object class="NSArray" key="dict.sortedKeys">
2809 <object class="NSArray" key="dict.sortedKeys">
2810 <bool key="EncodedWithXMLCoder">YES</bool>
2810 <bool key="EncodedWithXMLCoder">YES</bool>
2811 </object>
2811 </object>
2812 <object class="NSMutableArray" key="dict.values">
2812 <object class="NSMutableArray" key="dict.values">
2813 <bool key="EncodedWithXMLCoder">YES</bool>
2813 <bool key="EncodedWithXMLCoder">YES</bool>
2814 </object>
2814 </object>
2815 </object>
2815 </object>
2816 <reference ref="113577022"/>
2816 <reference ref="113577022"/>
2817 <reference ref="113577022"/>
2817 <reference ref="113577022"/>
2818 <reference ref="113577022"/>
2818 <reference ref="113577022"/>
2819 <reference ref="113577022"/>
2819 <reference ref="113577022"/>
2820 <reference ref="9"/>
2820 <reference ref="9"/>
2821 <reference ref="113577022"/>
2821 <reference ref="113577022"/>
2822 <reference ref="9"/>
2822 <reference ref="9"/>
2823 <reference ref="113577022"/>
2823 <reference ref="113577022"/>
2824 <reference ref="9"/>
2824 <reference ref="9"/>
2825 <string>{{23, 794}, {245, 183}}</string>
2825 <string>{{23, 794}, {245, 183}}</string>
2826 <reference ref="113577022"/>
2826 <reference ref="113577022"/>
2827 <reference ref="9"/>
2827 <reference ref="9"/>
2828 <reference ref="113577022"/>
2828 <reference ref="113577022"/>
2829 <reference ref="9"/>
2829 <reference ref="9"/>
2830 <reference ref="113577022"/>
2830 <reference ref="113577022"/>
2831 <reference ref="9"/>
2831 <reference ref="9"/>
2832 <reference ref="113577022"/>
2832 <reference ref="113577022"/>
2833 <reference ref="9"/>
2833 <reference ref="9"/>
2834 <reference ref="113577022"/>
2834 <reference ref="113577022"/>
2835 <reference ref="9"/>
2835 <reference ref="9"/>
2836 <reference ref="113577022"/>
2836 <reference ref="113577022"/>
2837 <reference ref="9"/>
2837 <reference ref="9"/>
2838 <reference ref="113577022"/>
2838 <reference ref="113577022"/>
2839 <reference ref="9"/>
2839 <reference ref="9"/>
2840 <reference ref="113577022"/>
2840 <reference ref="113577022"/>
2841 <reference ref="9"/>
2841 <reference ref="9"/>
2842 <reference ref="113577022"/>
2842 <reference ref="113577022"/>
2843 <reference ref="9"/>
2843 <reference ref="9"/>
2844 <reference ref="113577022"/>
2844 <reference ref="113577022"/>
2845 <reference ref="9"/>
2845 <reference ref="9"/>
2846 <string>{{323, 672}, {199, 203}}</string>
2846 <string>{{323, 672}, {199, 203}}</string>
2847 <reference ref="113577022"/>
2847 <reference ref="113577022"/>
2848 <reference ref="9"/>
2848 <reference ref="9"/>
2849 <reference ref="113577022"/>
2849 <reference ref="113577022"/>
2850 <reference ref="9"/>
2850 <reference ref="9"/>
2851 <reference ref="113577022"/>
2851 <reference ref="113577022"/>
2852 <reference ref="9"/>
2852 <reference ref="9"/>
2853 </object>
2853 </object>
2854 </object>
2854 </object>
2855 <object class="NSMutableDictionary" key="unlocalizedProperties">
2855 <object class="NSMutableDictionary" key="unlocalizedProperties">
2856 <bool key="EncodedWithXMLCoder">YES</bool>
2856 <bool key="EncodedWithXMLCoder">YES</bool>
2857 <object class="NSArray" key="dict.sortedKeys">
2857 <object class="NSArray" key="dict.sortedKeys">
2858 <bool key="EncodedWithXMLCoder">YES</bool>
2858 <bool key="EncodedWithXMLCoder">YES</bool>
2859 </object>
2859 </object>
2860 <object class="NSMutableArray" key="dict.values">
2860 <object class="NSMutableArray" key="dict.values">
2861 <bool key="EncodedWithXMLCoder">YES</bool>
2861 <bool key="EncodedWithXMLCoder">YES</bool>
2862 </object>
2862 </object>
2863 </object>
2863 </object>
2864 <nil key="activeLocalization"/>
2864 <nil key="activeLocalization"/>
2865 <object class="NSMutableDictionary" key="localizations">
2865 <object class="NSMutableDictionary" key="localizations">
2866 <bool key="EncodedWithXMLCoder">YES</bool>
2866 <bool key="EncodedWithXMLCoder">YES</bool>
2867 <object class="NSArray" key="dict.sortedKeys">
2867 <object class="NSArray" key="dict.sortedKeys">
2868 <bool key="EncodedWithXMLCoder">YES</bool>
2868 <bool key="EncodedWithXMLCoder">YES</bool>
2869 </object>
2869 </object>
2870 <object class="NSMutableArray" key="dict.values">
2870 <object class="NSMutableArray" key="dict.values">
2871 <bool key="EncodedWithXMLCoder">YES</bool>
2871 <bool key="EncodedWithXMLCoder">YES</bool>
2872 </object>
2872 </object>
2873 </object>
2873 </object>
2874 <nil key="sourceID"/>
2874 <nil key="sourceID"/>
2875 <int key="maxID">445</int>
2875 <int key="maxID">445</int>
2876 </object>
2876 </object>
2877 <object class="IBClassDescriber" key="IBDocument.Classes">
2877 <object class="IBClassDescriber" key="IBDocument.Classes">
2878 <object class="NSMutableArray" key="referencedPartialClassDescriptions">
2878 <object class="NSMutableArray" key="referencedPartialClassDescriptions">
2879 <bool key="EncodedWithXMLCoder">YES</bool>
2879 <bool key="EncodedWithXMLCoder">YES</bool>
2880 <object class="IBPartialClassDescription">
2880 <object class="IBPartialClassDescription">
2881 <string key="className">IPython1SandboxAppDelegate</string>
2881 <reference key="className" ref="695797635"/>
2882 <string key="superclassName">NSObject</string>
2882 <nil key="superclassName"/>
2883 <object class="NSMutableDictionary" key="actions">
2883 <object class="NSMutableDictionary" key="actions">
2884 <bool key="EncodedWithXMLCoder">YES</bool>
2884 <bool key="EncodedWithXMLCoder">YES</bool>
2885 <object class="NSArray" key="dict.sortedKeys">
2885 <object class="NSArray" key="dict.sortedKeys">
2886 <bool key="EncodedWithXMLCoder">YES</bool>
2886 <bool key="EncodedWithXMLCoder">YES</bool>
2887 </object>
2887 </object>
2888 <object class="NSMutableArray" key="dict.values">
2888 <object class="NSMutableArray" key="dict.values">
2889 <bool key="EncodedWithXMLCoder">YES</bool>
2889 <bool key="EncodedWithXMLCoder">YES</bool>
2890 </object>
2890 </object>
2891 </object>
2891 </object>
2892 <object class="NSMutableDictionary" key="outlets">
2892 <object class="NSMutableDictionary" key="outlets">
2893 <string key="NS.key.0">ipythonController</string>
2893 <reference key="NS.key.0" ref="684042788"/>
2894 <string key="NS.object.0">id</string>
2894 <string key="NS.object.0">NSTextView</string>
2895 </object>
2895 </object>
2896 <object class="IBClassDescriptionSource" key="sourceIdentifier">
2896 <object class="IBClassDescriptionSource" key="sourceIdentifier">
2897 <string key="majorKey">IBProjectSource</string>
2897 <string key="majorKey">IBUserSource</string>
2898 <string key="minorKey">IPython1SandboxAppDelegate.py</string>
2898 <reference key="minorKey" ref="255189770"/>
2899 </object>
2899 </object>
2900 </object>
2900 </object>
2901 <object class="IBPartialClassDescription">
2901 <object class="IBPartialClassDescription">
2902 <reference key="className" ref="695797635"/>
2902 <string key="className">IPython1SandboxAppDelegate</string>
2903 <nil key="superclassName"/>
2903 <string key="superclassName">NSObject</string>
2904 <object class="NSMutableDictionary" key="actions">
2904 <object class="NSMutableDictionary" key="actions">
2905 <bool key="EncodedWithXMLCoder">YES</bool>
2905 <bool key="EncodedWithXMLCoder">YES</bool>
2906 <object class="NSArray" key="dict.sortedKeys">
2906 <object class="NSArray" key="dict.sortedKeys">
2907 <bool key="EncodedWithXMLCoder">YES</bool>
2907 <bool key="EncodedWithXMLCoder">YES</bool>
2908 </object>
2908 </object>
2909 <object class="NSMutableArray" key="dict.values">
2909 <object class="NSMutableArray" key="dict.values">
2910 <bool key="EncodedWithXMLCoder">YES</bool>
2910 <bool key="EncodedWithXMLCoder">YES</bool>
2911 </object>
2911 </object>
2912 </object>
2912 </object>
2913 <object class="NSMutableDictionary" key="outlets">
2913 <object class="NSMutableDictionary" key="outlets">
2914 <reference key="NS.key.0" ref="684042788"/>
2914 <string key="NS.key.0">ipythonController</string>
2915 <string key="NS.object.0">NSTextView</string>
2915 <string key="NS.object.0">id</string>
2916 </object>
2916 </object>
2917 <object class="IBClassDescriptionSource" key="sourceIdentifier">
2917 <object class="IBClassDescriptionSource" key="sourceIdentifier">
2918 <string key="majorKey">IBUserSource</string>
2918 <string key="majorKey">IBProjectSource</string>
2919 <reference key="minorKey" ref="255189770"/>
2919 <string key="minorKey">IPython1SandboxAppDelegate.py</string>
2920 </object>
2920 </object>
2921 </object>
2921 </object>
2922 </object>
2922 </object>
2923 </object>
2923 </object>
2924 <int key="IBDocument.localizationMode">0</int>
2924 <int key="IBDocument.localizationMode">0</int>
2925 <string key="IBDocument.LastKnownRelativeProjectPath">../../IPython1Sandbox.xcodeproj</string>
2925 <string key="IBDocument.LastKnownRelativeProjectPath">../../IPython1Sandbox.xcodeproj</string>
2926 <int key="IBDocument.defaultPropertyAccessControl">3</int>
2926 <int key="IBDocument.defaultPropertyAccessControl">3</int>
2927 <object class="NSMutableData" key="IBDocument.RunnableNib">
2927 <object class="NSMutableData" key="IBDocument.RunnableNib">
2928 <bytes key="NS.bytes">YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA
2928 <bytes key="NS.bytes">YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA
2929 AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEC/gALAAwAMQA1ADYAPAA9
2929 AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEC/gALAAwAMQA1ADYAPAA9
2930 AEIAWABZAFoAWwALAGgAbQB7AIAAlQCZAKAApAC0ALoAzQDRAOYA+gD7APwA/QD+AP8BAAEBAQIBAwEE
2930 AEIAWABZAFoAWwALAGgAbQB7AIAAlQCZAKAApAC0ALoAzQDRAOYA+gD7APwA/QD+AP8BAAEBAQIBAwEE
2931 AQUBBgEHAQgBCQEKAQsBDwEQARkBIQEmASoBLQExATUBOQE7AT0BTQFSAVUBWgFBAVQBYwFqAWsBbAFv
2931 AQUBBgEHAQgBCQEKAQsBDwEQARkBIQEmASoBLQExATUBOQE7AT0BTQFSAVUBWgFBAVQBYwFqAWsBbAFv
2932 AXQBdQF4AYAAkAGBAYQBhwGIAYkBjgGPAZABkwGYAZkBmwGeAasBrAGtAbEBvAG9Ab4BwQHCAcQBxQHG
2932 AXQBdQF4AYAAkAGBAYQBhwGIAYkBjgGPAZABkwGYAZkBmwGeAasBrAGtAbEBvAG9Ab4BwQHCAcQBxQHG
2933 AdIB0wHbAdwB3wHkAeUB6AHtAfAB/AIAAgcCCwIdAiUCLwIzAlECUgJaAmQCZQJoAm4CbwJyAncCiAKP
2933 AdIB0wHbAdwB3wHkAeUB6AHtAfAB/AIAAgcCCwIdAiUCLwIzAlECUgJaAmQCZQJoAm4CbwJyAncCiAKP
2934 ApACkwKYApkCnAKmAqcCrAKxArICtwK4ArsCwwLJAsoC0QLWAtcC2gLcAt0C5gLnAvAC8QL1AvYC9wL4
2934 ApACkwKYApkCnAKmAqcCrAKxArICtwK4ArsCwwLJAsoC0QLWAtcC2gLcAt0C5gLnAvAC8QL1AvYC9wL4
2935 AvkC/wMAAwIDAwMEAwcDFgMYAxsDHAMfAAsDIAMhAyIDJQNXA10DbgNzA3QDdQN6A3sDfAN/A4MDhAOH
2935 AvkC/wMAAwIDAwMEAwcDFgMYAxsDHAMfAAsDIAMhAyIDJQNXA10DbQNzASkDdAN5A3oDewN+A4IDgwOG
2936 A4gDjAOQA5cDmwOcA50DngOiA6kDqgOrA6wDsAO3A7sDvAO9A74DwgPJA80DzgPPA9AD1APcA90D3gPf
2936 A4cDiwOPA5YDmgObA5wDnQOhA6gDrAOtA64DrwOzA7wDwAPBA8IDwwPHA84D0gPTA9QD1QPZA+AD5APl
2937 A+MD6wPwA/ED8gPzA/cD/gQCBAMEBAQFBAkEEAQRBBIEEwQXBB4EHwQgBCQEKwQvASkEMAQxBDcEOgQ7
2937 A+YD6gPxA/UD9gP3A/gD/AQDBAQEBQQJBBAEEQQSBBMEFwQeBB8EIAQkBCsELwQwBDEENQQ9BD4EPwRA
2938 BDwEPwRDBEoESwRMBFAEVwRcBF0EXgRfBGMEagRrBGwEcAR3BHgEeQR9BIQEhQSGBIcEjASTBJQElQSZ
2938 BEQESwRMBE0ETgRUBFcEWgRbBFwEXwRjBGoEawRsBG0EcgR1BHYEdwR7BIIEgwSEBIUEiQSQBJUElgSX
2939 BKAEpASlBKYEpwSrBLIEswS0BLUEuQTABMEEwgTGBM0EzgTPBNME2gTbBNwE3QThBOgE6QTqBOsE7wT2
2939 BJgEnASjBKQEpQSmBKoEsQSyBLMEtAS4BL8EwwTEBMUExgTKBNEE0gTTBNQE2ATfBOAE4QTiBOYE7QTx
2940 BPcE+AT5BP0FBAUFBQYFBwUMBQ8FEAURBRUFHAUdBR4FIgUpBSoFKwUsBTAFNwU7BTwFPQU+BUMFRgVK
2940 BPIE8wT0BPgE/wUABQEFBgUNBQ4FDwUTBRwFHQUeBR8FJAUoBS8FMAUxBTIFNwU4BTwFQwVEBUUFRgVK
2941 BVEFUgVTBVcFXgViBWMFZAVlBWkFcAV1BXYFdwV7BYIFgwWEBYgFjwWQBZEFkgWXBZgFnQWeBaIFqwWs
2941 BVEFVgVXBVgFXAVjBWQFZQVpBXAFcQVyBXcFeAV8BYMFhAWFBYkFkAWRBZIFlgWdBZ4FnwWjBaoFqwWs
2942 Ba0FrgWyBbkFugW7BbwFwAXHBcgFyQXNBdQF1QXWBeAF9gX8Bf0F/gX/BgMGCwYMBg8GEQYXBhgGGQYc
2942 BbAFtwW4BbkFugW+BcUFxgXHBcgFzAXTBdQF1QXWBeAF9gX8Bf0F/gX/BgMGCwYMBg8GEQYXBhgGGQYa
2943 BiMGJAYlBiYGLQYuBi8GNgY3BjgGOQZABkEGQgZDBq0Gtwa4BrkGvgbABskGuAbKBs4GzwbYBrgG2Qbf
2943 Bh0GJAYlBiYGJwYuBi8GMAY3BjgGOQZABkEGQgZDBq0GuAbCBscGyAbJBs4G1QbWBtgG2QbdBt4GyAbn
2944 BuQG5QbvBvgGuAb5BwcHEgcZBxoHGwckBy0GuAcuBzMHNgc3B0AHSQdKB1MGuAdUB2IHaQdqB2sHcgdz
2944 BvAGyAbxBvgHAQbIBwIHEgcbByQHLQbIBy4HNgc9Bz4HRQdGB04HTwdQB1kGyAdaB2AHaQbIB2oHbwdw
2945 B3QHfQeGB48GuAeQB6AHqQeyB7sGuAe8B8QHywfMB9MH1AfcB90H3gfnBrgH6AfvB/gGuAf5B/4IBQgG
2945 B3oHgwbIB4QHkgebB6IHowekB60HtgbIB7cHvAe/B8AHyQfKB9MGyAfUB+IH6QfqB+sH8gfzB/QH/QgG
2946 CA8GuAgQCBUIHga4CB8IJggvCDAIOQa4CDoIPgg/CKkJFAl/CYAJgQmCCYMJhAmFCYYJhwmICYkJigmL
2946 CA8GyAgQCBUIHgbICB8IJggvCDAIOQbICDoIPgg/CKkJFAl/CYAJgQmCCYMJhAmFCYYJhwmICYkJigmL
2947 CYwJjQmOCY8JkAmRCZIJkwmUCZUJlgmXCZgJmQmaCZsJnAmdCZ4JnwmgCaEJogmjCaQJpQmmCacJqAmp
2947 CYwJjQmOCY8JkAmRCZIJkwmUCZUJlgmXCZgJmQmaCZsJnAmdCZ4JnwmgCaEJogmjCaQJpQmmCacJqAmp
2948 CaoJqwmsCa0JrgmvCbAJsQmyCbMJtAm1CbYJtwm4CbkJugm7CbwJvQm+Cb8JwAnBCcIJwwnECcUJxgnH
2948 CaoJqwmsCa0JrgmvCbAJsQmyCbMJtAm1CbYJtwm4CbkJugm7CbwJvQm+Cb8JwAnBCcIJwwnECcUJxgnH
2949 CcgJyQnKCcsJzAnNCc4JzwnQCdEJ0gnTCdQJ1QnWCdcJ2AnZCdoJ2wncCd0J3gnfCeAJ4QniCeMJ5Anl
2949 CcgJyQnKCcsJzAnNCc4JzwnQCdEJ0gnTCdQJ1QnWCdcJ2AnZCdoJ2wncCd0J3gnfCeAJ4QniCeMJ5Anl
2950 CeYJ6QnsCoYLIAshCyILIwskCyULJgsnCygLKQsqCysLLAstCy4LLwswCzELMgszCzQLNQs2CzcLOAs5
2950 CeYJ6QnsCoYLIAshCyILIwskCyULJgsnCygLKQsqCysLLAstCy4LLwswCzELMgszCzQLNQs2CzcLOAs5
2951 CzoLOws8Cz0LPgs/C0ALQQtCC0MLRAtFC0YLRwtIC0kLSgtLC0wLTQtOC08LUAtRC1ILUwtUC1ULVgtX
2951 CzoLOws8Cz0LPgs/C0ALQQtCC0MLRAtFC0YLRwtIC0kLSgtLC0wLTQtOC08LUAtRC1ILUwtUC1ULVgtX
2952 C1gLWQtaC1sLXAtdC14LXwtgC2ELYgtjC2QLZQtmC2cLaAtpC2oLawtsC20LbgtvC3ALcQtyC3MLdAt1
2952 C1gLWQtaC1sLXAtdC14LXwtgC2ELYgtjC2QLZQtmC2cLaAtpC2oLawtsC20LbgtvC3ALcQtyC3MLdAt1
2953 C3YLdwt4C3kLegt7C3wLfQt+C38LgAuBC4ILgwuEC4ULhguHC4gLiQuKC4sLjAuNC44LjwuQC5ELkguT
2953 C3YLdwt4C3kLegt7C3wLfQt+C38LgAuBC4ILgwuEC4ULhguHC4gLiQuKC4sLjAuNC44LjwuQC5ELkguT
2954 C5QLlQuWC5cLmAuZC5oLmwucC50LngufC6ALoQuiC6MLpAulC6YLpwuoC6kLqgurC6wLrQuuC68LsAux
2954 C5QLlQuWC5cLmAuZC5oLmwucC50LngufC6ALoQuiC6MLpAulC6YLpwuoC6kLqgurC6wLrQuuC68LsAux
2955 C7ILswu0C7ULtgu3C7oLvQvAVSRudWxs3xASAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwA
2955 C7ILswu0C7ULtgu3C7oLvQvAVSRudWxs3xASAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwA
2956 HQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwVk5TUm9vdFYkY2xhc3NdTlNPYmpl
2956 HQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwVk5TUm9vdFYkY2xhc3NdTlNPYmpl
2957 Y3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXNdTlNDb25u
2957 Y3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXNdTlNDb25u
2958 ZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1ld29ya11OU0NsYXNzZXNLZXlzWk5TT2lkc0tleXNdTlNO
2958 ZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1ld29ya11OU0NsYXNzZXNLZXlzWk5TT2lkc0tleXNdTlNO
2959 YW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNdTlNGb250TWFuYWdlcl8QEE5TVmlz
2959 YW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNdTlNGb250TWFuYWdlcl8QEE5TVmlz
2960 aWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1ZXNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c1lOU05l
2960 aWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1ZXNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c1lOU05l
2961 eHRPaWRcTlNPaWRzVmFsdWVzgAKBAv2BAZuBAmCBAvyArYEB9oAFgQJfgQJhgQH3gQL6gACABoEB9YEC
2961 eHRPaWRcTlNPaWRzVmFsdWVzgAKBAv2BAZuBAmCBAvyArYEB9oAFgQJfgQJhgQH3gQL6gACABoEB9YEC
2962 +xEBv4ECYtIADgAyADMANFtOU0NsYXNzTmFtZYAEgANdTlNBcHBsaWNhdGlvbtIANwA4ADkAOlgkY2xh
2962 +xEBv4ECYtIADgAyADMANFtOU0NsYXNzTmFtZYAEgANdTlNBcHBsaWNhdGlvbtIANwA4ADkAOlgkY2xh
2963 c3Nlc1okY2xhc3NuYW1logA6ADteTlNDdXN0b21PYmplY3RYTlNPYmplY3RfEBBJQkNvY29hRnJhbWV3
2963 c3Nlc1okY2xhc3NuYW1logA6ADteTlNDdXN0b21PYmplY3RYTlNPYmplY3RfEBBJQkNvY29hRnJhbWV3
2964 b3Jr0gAOAD4APwBAWk5TLm9iamVjdHOAK6EAQYAH2wBDAA4ARABFAEYARwBIAEkASgBLAEwATQBOAE8A
2964 b3Jr0gAOAD4APwBAWk5TLm9iamVjdHOAK6EAQYAH2wBDAA4ARABFAEYARwBIAEkASgBLAEwATQBOAE8A
2965 UABRAFIAUwBUAFUAVgArXE5TV2luZG93Vmlld1xOU1NjcmVlblJlY3RfEBNOU0ZyYW1lQXV0b3NhdmVO
2965 UABRAFIAUwBUAFUAVgArXE5TV2luZG93Vmlld1xOU1NjcmVlblJlY3RfEBNOU0ZyYW1lQXV0b3NhdmVO
2966 YW1lXU5TV2luZG93VGl0bGVZTlNXVEZsYWdzXU5TV2luZG93Q2xhc3NcTlNXaW5kb3dSZWN0XxAPTlNX
2966 YW1lXU5TV2luZG93VGl0bGVZTlNXVEZsYWdzXU5TV2luZG93Q2xhc3NcTlNXaW5kb3dSZWN0XxAPTlNX
2967 aW5kb3dCYWNraW5nXxARTlNXaW5kb3dTdHlsZU1hc2tbTlNWaWV3Q2xhc3OAC4CsgKqAq4AJEnQAAACA
2967 aW5kb3dCYWNraW5nXxARTlNXaW5kb3dTdHlsZU1hc2tbTlNWaWV3Q2xhc3OAC4CsgKqAq4AJEnQAAACA
2968 CoAIEAIQD4AAXxAYe3szMzUsIDQxM30sIHs3MjUsIDMzN319XxAQSVB5dGhvbjEgKENvY29hKVhOU1dp
2968 CoAIEAIQD4AAXxAYe3szMzUsIDQxM30sIHs3MjUsIDMzN319XxAQSVB5dGhvbjEgKENvY29hKVhOU1dp
2969 bmRvd9cAXAAOAF0AXgBfAFoAYABhAGIAYwBkAGUAYQBnXxAPTlNOZXh0UmVzcG9uZGVyWk5TU3Vidmll
2969 bmRvd9cAXAAOAF0AXgBfAFoAYABhAGIAYwBkAGUAYQBnXxAPTlNOZXh0UmVzcG9uZGVyWk5TU3Vidmll
2970 d3NYTlN2RmxhZ3NbTlNGcmFtZVNpemVbTlNTdXBlcnZpZXeADIBdgA0RAQCAqIAMgKnSAA4APgBpAGqA
2970 d3NYTlN2RmxhZ3NbTlNGcmFtZVNpemVbTlNTdXBlcnZpZXeADIBdgA0RAQCAqIAMgKnSAA4APgBpAGqA
2971 NKIAawBsgA6Ao9oAXAAOAG4AXQBeAG8AcABaAGAAcQBNAHMAdAB1AHYAdwBVAGEATQB6V05TRnJhbWVe
2971 NKIAawBsgA6Ao9oAXAAOAG4AXQBeAG8AcABaAGAAcQBNAHMAdAB1AHYAdwBVAGEATQB6V05TRnJhbWVe
2972 TlNBdXRvc2F2ZU5hbWVeTlNEaXZpZGVyU3R5bGVcTlNJc1ZlcnRpY2FsgAuAooCggA8RARKAoYAMgAsJ
2972 TlNBdXRvc2F2ZU5hbWVeTlNEaXZpZGVyU3R5bGVcTlNJc1ZlcnRpY2FsgAuAooCggA8RARKAoYAMgAsJ
2973 0gAOAD4AaQB9gDSiAH4Af4AQgGreAFwAgQAOAIIAgwBdAF4AXwCEAFoAhQCGAGAAhwBrAIkAigCLAIwA
2973 0gAOAD4AaQB9gDSiAH4Af4AQgGreAFwAgQAOAIIAgwBdAF4AXwCEAFoAhQCGAGAAhwBrAIkAigCLAIwA
2974 jQCOAI8AkABhAJIAVQBrAJRZTlNCb3hUeXBlW05TVGl0bGVDZWxsXU5TVHJhbnNwYXJlbnRcTlNCb3Jk
2974 jQCOAI8AkABhAJIAVQBrAJRZTlNCb3hUeXBlW05TVGl0bGVDZWxsXU5TVHJhbnNwYXJlbnRcTlNCb3Jk
2975 ZXJUeXBlWU5TT2Zmc2V0c18QD05TVGl0bGVQb3NpdGlvbl1OU0NvbnRlbnRWaWV3gA4QAIBpgGAIgBEQ
2975 ZXJUeXBlWU5TT2Zmc2V0c18QD05TVGl0bGVQb3NpdGlvbl1OU0NvbnRlbnRWaWV3gA4QAIBpgGAIgBEQ
2976 FoBeEAGADIBfgA6AEtIADgA+AGkAl4A0oQCUgBLXAFwADgBuAF0AXgBaAGAAfgBiAJwAnQBkAGEAfoAQ
2976 FoBeEAGADIBfgA6AEtIADgA+AGkAl4A0oQCUgBLXAFwADgBuAF0AXgBaAGAAfgBiAJwAnQBkAGEAfoAQ
2977 gF2AXIATgAyAENIADgA+AGkAooA0oQCjgBTcAFwApQAOAG4ApgBdAF4AWgBgAKcAqACHAJQAqgCrAKwA
2977 gF2AXIATgAyAENIADgA+AGkAooA0oQCjgBTcAFwApQAOAG4ApgBdAF4AWgBgAKcAqACHAJQAqgCrAKwA
2978 rQCuAHYAYQCUALEAsgCyW05TSFNjcm9sbGVyWE5Tc0ZsYWdzW05TVlNjcm9sbGVyXU5TTmV4dEtleVZp
2978 rQCuAHYAYQCUALEAsgCyW05TSFNjcm9sbGVyWE5Tc0ZsYWdzW05TVlNjcm9sbGVyXU5TTmV4dEtleVZp
2979 ZXeAEoBYgFuAWhECEoAVgAyAEoBUgBaAFtIADgA+AGkAtoA0owCyALEAqoAWgFSAWN0AXAAOAG4AuwC8
2979 ZXeAEoBYgFuAWhECEoAVgAyAEoBUgBaAFtIADgA+AGkAtoA0owCyALEAqoAWgFSAWN0AXAAOAG4AuwC8
2980 AL0AXQBeAL4AWgC/AGAAqACjAMEAwgDDAMQAxQDGAMcAyABhAMoAowDIWE5TQm91bmRzWE5TQ3Vyc29y
2980 AL0AXQBeAL4AWgC/AGAAqACjAMEAwgDDAMQAxQDGAMcAyABhAMoAowDIWE5TQm91bmRzWE5TQ3Vyc29y
2981 WU5TY3ZGbGFnc1lOU0RvY1ZpZXdZTlNCR0NvbG9ygBSAU4BNgE6AUBAEgBcRCQCAGIAMgE+AFIAY0gAO
2981 WU5TY3ZGbGFnc1lOU0RvY1ZpZXdZTlNCR0NvbG9ygBSAU4BNgE6AUBAEgBcRCQCAGIAMgE+AFIAY0gAO
2982 AD4AaQDPgDShAMiAGN0AXAAOAG4A0gDTANQA1QBeANYAWgDXAGAA2ACyANoA2wDcAN0A3gDfAOAA4QBh
2982 AD4AaQDPgDShAMiAGN0AXAAOAG4A0gDTANQA1QBeANYAWgDXAGAA2ACyANoA2wDcAN0A3gDfAOAA4QBh
2983 AOMAsgArXxAPTlNUZXh0Q29udGFpbmVyWU5TVFZGbGFnc1xOU1NoYXJlZERhdGFbTlNEcmFnVHlwZXNZ
2983 AOMAsgArXxAPTlNUZXh0Q29udGFpbmVyWU5TVFZGbGFnc1xOU1NoYXJlZERhdGFbTlNEcmFnVHlwZXNZ
2984 TlNNYXhTaXplWE5TTWluaXplWk5TRGVsZWdhdGWAFoBMgCyALRAGgDeAGREJEoBKgAyAS4AWgADSAA4A
2984 TlNNYXhTaXplWE5TTWluaXplWk5TRGVsZWdhdGWAFoBMgCyALRAGgDeAGREJEoBKgAyAS4AWgADSAA4A
2985 PgA/AOiAK68QEQDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APmAGoAbgByAHYAegB+AIIAh
2985 PgA/AOiAK68QEQDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APmAGoAbgByAHYAegB+AIIAh
2986 gCKAI4AkgCWAJoAngCiAKYAqXxAZTmVYVCBSVEZEIHBhc3RlYm9hcmQgdHlwZV8QEk5TU3RyaW5nUGJv
2986 gCKAI4AkgCWAJoAngCiAKYAqXxAZTmVYVCBSVEZEIHBhc3RlYm9hcmQgdHlwZV8QEk5TU3RyaW5nUGJv
2987 YXJkVHlwZV8QGk5lWFQgcnVsZXIgcGFzdGVib2FyZCB0eXBlXxAeTmVYVCBUSUZGIHY0LjAgcGFzdGVi
2987 YXJkVHlwZV8QGk5lWFQgcnVsZXIgcGFzdGVib2FyZCB0eXBlXxAeTmVYVCBUSUZGIHY0LjAgcGFzdGVi
2988 b2FyZCB0eXBlXxAZQXBwbGUgVVJMIHBhc3RlYm9hcmQgdHlwZV8QI0NvcmVQYXN0ZWJvYXJkRmxhdm9y
2988 b2FyZCB0eXBlXxAZQXBwbGUgVVJMIHBhc3RlYm9hcmQgdHlwZV8QI0NvcmVQYXN0ZWJvYXJkRmxhdm9y
2989 VHlwZSAweDZENkY2Rjc2XxAjQ29yZVBhc3RlYm9hcmRGbGF2b3JUeXBlIDB4NzU3MjZDMjBfEBtXZWJV
2989 VHlwZSAweDZENkY2Rjc2XxAjQ29yZVBhc3RlYm9hcmRGbGF2b3JUeXBlIDB4NzU3MjZDMjBfEBtXZWJV
2990 UkxzV2l0aFRpdGxlc1Bib2FyZFR5cGVfEBlBcHBsZSBQREYgcGFzdGVib2FyZCB0eXBlXxAZQXBwbGUg
2990 UkxzV2l0aFRpdGxlc1Bib2FyZFR5cGVfEBlBcHBsZSBQREYgcGFzdGVib2FyZCB0eXBlXxAZQXBwbGUg
2991 UE5HIHBhc3RlYm9hcmQgdHlwZV8QGkFwcGxlIEhUTUwgcGFzdGVib2FyZCB0eXBlXxAVTlNGaWxlbmFt
2991 UE5HIHBhc3RlYm9hcmQgdHlwZV8QGkFwcGxlIEhUTUwgcGFzdGVib2FyZCB0eXBlXxAVTlNGaWxlbmFt
2992 ZXNQYm9hcmRUeXBlXxAXTlNDb2xvciBwYXN0ZWJvYXJkIHR5cGVfEDFOZVhUIEVuY2Fwc3VsYXRlZCBQ
2992 ZXNQYm9hcmRUeXBlXxAXTlNDb2xvciBwYXN0ZWJvYXJkIHR5cGVfEDFOZVhUIEVuY2Fwc3VsYXRlZCBQ
2993 b3N0U2NyaXB0IHYxLjIgcGFzdGVib2FyZCB0eXBlXxAaQXBwbGUgUElDVCBwYXN0ZWJvYXJkIHR5cGVf
2993 b3N0U2NyaXB0IHYxLjIgcGFzdGVib2FyZCB0eXBlXxAaQXBwbGUgUElDVCBwYXN0ZWJvYXJkIHR5cGVf
2994 EBlOZVhUIGZvbnQgcGFzdGVib2FyZCB0eXBlXxAqTmVYVCBSaWNoIFRleHQgRm9ybWF0IHYxLjAgcGFz
2994 EBlOZVhUIGZvbnQgcGFzdGVib2FyZCB0eXBlXxAqTmVYVCBSaWNoIFRleHQgRm9ybWF0IHYxLjAgcGFz
2995 dGVib2FyZCB0eXBl0gA3ADgBDAENowENAQ4AO1xOU011dGFibGVTZXRVTlNTZXRfEBR7ezAsIDM4fSwg
2995 dGVib2FyZCB0eXBl0gA3ADgBDAENowENAQ4AO1xOU011dGFibGVTZXRVTlNTZXRfEBR7ezAsIDM4fSwg
2996 ezQzMywgMTR9fdUBEQAOARIBEwEUAJABFQDIARcBGFlOU1RDRmxhZ3NaTlNUZXh0Vmlld1dOU1dpZHRo
2996 ezQzMywgMTR9fdUBEQAOARIBEwEUAJABFQDIARcBGFlOU1RDRmxhZ3NaTlNUZXh0Vmlld1dOU1dpZHRo
2997 XxAPTlNMYXlvdXRNYW5hZ2VygDaAGCNAexAAAAAAAIAu1QAOARoBGwEcANgBHQEeAR8A3QArXxAQTlNU
2997 XxAPTlNMYXlvdXRNYW5hZ2VygDaAGCNAexAAAAAAAIAu1QAOARoBGwEcANgBHQEeAR8A3QArXxAQTlNU
2998 ZXh0Q29udGFpbmVyc11OU1RleHRTdG9yYWdlWU5TTE1GbGFnc4A1gDOAL4AA0wAOASIA2AEjASQAK1hO
2998 ZXh0Q29udGFpbmVyc11OU1RleHRTdG9yYWdlWU5TTE1GbGFnc4A1gDOAL4AA0wAOASIA2AEjASQAK1hO
2999 U1N0cmluZ4AygDCAANIADgEnASgBKVlOUy5zdHJpbmeAMVDSADcAOAErASyjASwBIgA7XxAPTlNNdXRh
2999 U1N0cmluZ4AygDCAANIADgEnASgBKVlOUy5zdHJpbmeAMVDSADcAOAErASyjASwBIgA7XxAPTlNNdXRh
3000 YmxlU3RyaW5n0gA3ADgBLgEbpAEbAS8BMAA7XxAZTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZ18QEk5T
3000 YmxlU3RyaW5n0gA3ADgBLgEbpAEbAS8BMAA7XxAZTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZ18QEk5T
3001 QXR0cmlidXRlZFN0cmluZ9IADgA+AGkBM4A0oQDcgC3SADcAOAE2ATejATcBOAA7Xk5TTXV0YWJsZUFy
3001 QXR0cmlidXRlZFN0cmluZ9IADgA+AGkBM4A0oQDcgC3SADcAOAE2ATejATcBOAA7Xk5TTXV0YWJsZUFy
3002 cmF5V05TQXJyYXnSADcAOAE6ARSiARQAO9IANwA4ATwA0qIA0gA72AAOAT4BPwFAAUEBQgFDAUQBRQFG
3002 cmF5V05TQXJyYXnSADcAOAE6ARSiARQAO9IANwA4ATwA0qIA0gA72AAOAT4BPwFAAUEBQgFDAUQBRQFG
3003 ACsBSAFJAUoAKwFMV05TRmxhZ3NfEBdOU0RlZmF1bHRQYXJhZ3JhcGhTdHlsZV8QEE5TSW5zZXJ0aW9u
3003 ACsBSAFJAUoAKwFMV05TRmxhZ3NfEBdOU0RlZmF1bHRQYXJhZ3JhcGhTdHlsZV8QEE5TSW5zZXJ0aW9u
3004 Q29sb3JfEBFOU0JhY2tncm91bmRDb2xvcl8QFE5TU2VsZWN0ZWRBdHRyaWJ1dGVzXxASTlNNYXJrZWRB
3004 Q29sb3JfEBFOU0JhY2tncm91bmRDb2xvcl8QFE5TU2VsZWN0ZWRBdHRyaWJ1dGVzXxASTlNNYXJrZWRB
3005 dHRyaWJ1dGVzXxAQTlNMaW5rQXR0cmlidXRlc4BJEgAFS2+AAIA6gDiAO4AAgEXTAA4BTgFPAVAAVQFR
3005 dHRyaWJ1dGVzXxAQTlNMaW5rQXR0cmlidXRlc4BJEgAFS2+AAIA6gDiAO4AAgEXTAA4BTgFPAVAAVQFR
3006 XE5TQ29sb3JTcGFjZVVOU1JHQoA5TxAYMSAwLjk1Mjk0MTI0IDAuODUwOTgwNDYA0gA3ADgBUwFUogFU
3006 XE5TQ29sb3JTcGFjZVVOU1JHQoA5TxAYMSAwLjk1Mjk0MTI0IDAuODUwOTgwNDYA0gA3ADgBUwFUogFU
3007 ADtXTlNDb2xvctMADgFOAVYBUAFYAVlXTlNXaGl0ZYA5EANCMADTAA4BWwA+AVwBXQFgV05TLmtleXOA
3007 ADtXTlNDb2xvctMADgFOAVYBUAFYAVlXTlNXaGl0ZYA5EANCMADTAA4BWwA+AVwBXQFgV05TLmtleXOA
3008 RKIBXgFfgDyAPaIBYQFigD6AQtUADgFUAU4BZAFlAVABZwDdAWgBaVtOU0NvbG9yTmFtZV1OU0NhdGFs
3008 RKIBXgFfgDyAPaIBYQFigD6AQtUADgFUAU4BZAFlAVABZwDdAWgBaVtOU0NvbG9yTmFtZV1OU0NhdGFs
3009 b2dOYW1lgDmAQYBAgD9WU3lzdGVtXxAbc2VsZWN0ZWRUZXh0QmFja2dyb3VuZENvbG9y0wAOAU4BVgFQ
3009 b2dOYW1lgDmAQYBAgD9WU3lzdGVtXxAbc2VsZWN0ZWRUZXh0QmFja2dyb3VuZENvbG9y0wAOAU4BVgFQ
3010 AVgBboA5SzAuNjY2NjY2NjkA1QAOAVQBTgFkAWUBUAFIAN0BcgFpgDmAOoBDgD9fEBFzZWxlY3RlZFRl
3010 AVgBboA5SzAuNjY2NjY2NjkA1QAOAVQBTgFkAWUBUAFIAN0BcgFpgDmAOoBDgD9fEBFzZWxlY3RlZFRl
3011 eHRDb2xvctIANwA4AXYBd6IBdwA7XE5TRGljdGlvbmFyedMADgFbAD4BXAF6AX2ARKIBewFfgEaAPaIB
3011 eHRDb2xvctIANwA4AXYBd6IBdwA7XE5TRGljdGlvbmFyedMADgFbAD4BXAF6AX2ARKIBewFfgEaAPaIB
3012 fgF/gEeASFtOU1VuZGVybGluZdMADgFOAU8BUACQAYOAOUYwIDAgMQDSADcAOAGFAYaiAYYAO18QFE5T
3012 fgF/gEeASFtOU1VuZGVybGluZdMADgFOAU8BUACQAYOAOUYwIDAgMQDSADcAOAGFAYaiAYYAO18QFE5T
3013 VGV4dFZpZXdTaGFyZWREYXRhXHs0ODAsIDFlKzA3fVd7ODQsIDB90gA3ADgBigESpQESAYsBjAGNADtW
3013 VGV4dFZpZXdTaGFyZWREYXRhXHs0ODAsIDFlKzA3fVd7ODQsIDB90gA3ADgBigESpQESAYsBjAGNADtW
3014 TlNUZXh0Vk5TVmlld1tOU1Jlc3BvbmRlcl8QFHt7MSwgMX0sIHs0MzMsIDIzMX19XxAVe3swLCAzOH0s
3014 TlNUZXh0Vk5TVmlld1tOU1Jlc3BvbmRlcl8QFHt7MSwgMX0sIHs0MzMsIDIzMX19XxAVe3swLCAzOH0s
3015 IHs0MzMsIDIzMX190wAOAU4BVgFQAVgBkoA5QjEA0wAOAZQBlQGWAZcAkFlOU0hvdFNwb3RcTlNDdXJz
3015 IHs0MzMsIDIzMX190wAOAU4BVgFQAVgBkoA5QjEA0wAOAZQBlQGWAZcAkFlOU0hvdFNwb3RcTlNDdXJz
3016 b3JUeXBlgFKAUVd7NCwgLTV90gA3ADgBmgC8ogC8ADvSADcAOAGcAZ2kAZ0BjAGNADtaTlNDbGlwVmll
3016 b3JUeXBlgFKAUVd7NCwgLTV90gA3ADgBmgC8ogC8ADvSADcAOAGcAZ2kAZ0BjAGNADtaTlNDbGlwVmll
3017 d9kAXAGfAA4AbgBeAFoBoABgAaEAowCjAaQBpQGmAGEBqACjAapYTlNUYXJnZXRYTlNBY3Rpb25ZTlNQ
3017 d9kAXAGfAA4AbgBeAFoBoABgAaEAowCjAaQBpQGmAGEBqACjAapYTlNUYXJnZXRYTlNBY3Rpb25ZTlNQ
3018 ZXJjZW50gBSAFIBXgFUT/////4AAAQCADIBWgBQjP9Ww0wAAAABfEBV7ezQyNywgMX0sIHsxNSwgMjYz
3018 ZXJjZW50gBSAFIBXgFUT/////4AAAQCADIBWgBQjP9Ww0wAAAABfEBV7ezQyNywgMX0sIHsxNSwgMjYz
3019 fX1cX2RvU2Nyb2xsZXI60gA3ADgBrgGvpQGvAbABjAGNADtaTlNTY3JvbGxlcllOU0NvbnRyb2zbAFwB
3019 fX1cX2RvU2Nyb2xsZXI60gA3ADgBrgGvpQGvAbABjAGNADtaTlNTY3JvbGxlcllOU0NvbnRyb2zbAFwB
3020 nwAOAG4ApgBeAFoBoABgAbIBoQCjAKMBpAG2AJAAZABhAagAowG6AbtaTlNDdXJWYWx1ZYAUgBSAV4BZ
3020 nwAOAG4ApgBeAFoBoABgAbIBoQCjAKMBpAG2AJAAZABhAagAowG6AbtaTlNDdXJWYWx1ZYAUgBSAV4BZ
3021 gAyAVoAUIz/wAAAAAAAAIz/uQshgAAAAXxAYe3stMTAwLCAtMTAwfSwgezg3LCAxOH19XxAWe3sxOCwg
3021 gAyAVoAUIz/wAAAAAAAAIz/uQshgAAAAXxAYe3stMTAwLCAtMTAwfSwgezg3LCAxOH19XxAWe3sxOCwg
3022 MTR9LCB7NDM1LCAyMzN9fdIANwA4Ab8BwKQBwAGMAY0AO1xOU1Njcm9sbFZpZXdfEBR7ezEsIDF9LCB7
3022 MTR9LCB7NDM1LCAyMzN9fdIANwA4Ab8BwKQBwAGMAY0AO1xOU1Njcm9sbFZpZXdfEBR7ezEsIDF9LCB7
3023 NDcxLCAyNTd9fdIANwA4AcMBjKMBjAGNADtaezQ3MywgMjczfVZ7MCwgMH3XAccADgFBAcgByQHKAcsB
3023 NDcxLCAyNTd9fdIANwA4AcMBjKMBjAGNADtaezQ3MywgMjczfVZ7MCwgMH3XAccADgFBAcgByQHKAcsB
3024 zAHNAc4BzwHQAIkB0VtOU0NlbGxGbGFnc1pOU0NvbnRlbnRzWU5TU3VwcG9ydFxOU0NlbGxGbGFnczJb
3024 zAHNAc4BzwHQAIkB0VtOU0NlbGxGbGFnc1pOU0NvbnRlbnRzWU5TU3VwcG9ydFxOU0NlbGxGbGFnczJb
3025 TlNUZXh0Q29sb3ISBAH+AIBogGWAYYBigGdXQ29uc29sZdQADgHUAdUB1gHXAdgB2QHaVk5TU2l6ZVZO
3025 TlNUZXh0Q29sb3ISBAH+AIBogGWAYYBigGdXQ29uc29sZdQADgHUAdUB1gHXAdgB2QHaVk5TU2l6ZVZO
3026 U05hbWVYTlNmRmxhZ3OAZCNAJgAAAAAAAIBjEQwcXEx1Y2lkYUdyYW5kZdIANwA4Ad0B3qIB3gA7Vk5T
3026 U05hbWVYTlNmRmxhZ3OAZCNAJgAAAAAAAIBjEQwcXEx1Y2lkYUdyYW5kZdIANwA4Ad0B3qIB3gA7Vk5T
3027 Rm9udNUADgFUAU4BZAFlAVAAygDdAeIBaYA5gE+AZoA/XxATdGV4dEJhY2tncm91bmRDb2xvctMADgFO
3027 Rm9udNUADgFUAU4BZAFlAVAAygDdAeIBaYA5gE+AZoA/XxATdGV4dEJhY2tncm91bmRDb2xvctMADgFO
3028 AVYBUAFYAeeAOU0wIDAuODAwMDAwMDEA0gA3ADgB6QHqpAHqAesB7AA7XxAPTlNUZXh0RmllbGRDZWxs
3028 AVYBUAFYAeeAOU0wIDAuODAwMDAwMDEA0gA3ADgB6QHqpAHqAesB7AA7XxAPTlNUZXh0RmllbGRDZWxs
3029 XE5TQWN0aW9uQ2VsbFZOU0NlbGzSADcAOAHuAe+kAe8BjAGNADtVTlNCb3jeAFwAgQAOAIIAbgCDAF0A
3029 XE5TQWN0aW9uQ2VsbFZOU0NlbGzSADcAOAHuAe+kAe8BjAGNADtVTlNCb3jeAFwAgQAOAIIAbgCDAF0A
3030 XgCEAFoAhQCGAGAAhwBrAIkAigHzAfQAjAH2AfcAkABhAJIAVQBrAfuADoBpgJ2AnAiAaxAzgAyAX4AO
3030 XgCEAFoAhQCGAGAAhwBrAIkAigHzAfQAjAH2AfcAkABhAJIAVQBrAfuADoBpgJ2AnAiAaxAzgAyAX4AO
3031 gGzSAA4APgBpAf6ANKEB+4Bs1wBcAA4AbgBdAF4AWgBgAH8AYgIDAgQAZABhAH+AaoBdgJuAbYAMgGrS
3031 gGzSAA4APgBpAf6ANKEB+4Bs1wBcAA4AbgBdAF4AWgBgAH8AYgIDAgQAZABhAH+AaoBdgJuAbYAMgGrS
3032 AA4APgBpAgmANKECCoBu3xAPAFwApQAOAG4ApgIMAg0AXQIOAF4AWgBgAKcAqACHAfsCEACrAhICEwIU
3032 AA4APgBpAgmANKECCoBu3xAPAFwApQAOAG4ApgIMAg0AXQIOAF4AWgBgAKcAqACHAfsCEACrAhICEwIU
3033 AhUCFgIXAHYAYQH7AhoCGwIbXE5TQ29ybmVyVmlld18QEE5TSGVhZGVyQ2xpcFZpZXdcTlNTY3JvbGxB
3033 AhUCFgIXAHYAYQH7AhoCGwIbXE5TQ29ybmVyVmlld18QEE5TSGVhZGVyQ2xpcFZpZXdcTlNTY3JvbGxB
3034 bXRzgGyAloBbgJoQMoB4gHWAb08QEEEgAABBIAAAQZgAAEGYAACADIBsgJSAcIBw0gAOAD4AaQIfgDSl
3034 bXRzgGyAloBbgJoQMoB4gHWAb08QEEEgAABBIAAAQZgAAEGYAACADIBsgJSAcIBw0gAOAD4AaQIfgDSl
3035 AhsCGgIQAhUCFIBwgJSAloB1gHjbAFwADgBuAL0AXQBeAL4AWgC/AGAAqAIKAMECKADFAikAxwIqAGEC
3035 AhsCGgIQAhUCFIBwgJSAloB1gHjbAFwADgBuAL0AXQBeAL4AWgC/AGAAqAIKAMECKADFAikAxwIqAGEC
3036 LAIKAiqAboBTgJOAcYBygAyAhoBugHLSAA4APgBpAjGANKECKoBy3xAVAFwCNAAOAjUCNgFBAjcCDAI4
3036 LAIKAiqAboBTgJOAcYBygAyAhoBugHLSAA4APgBpAjGANKECKoBy3xAVAFwCNAAOAjUCNgFBAjcCDAI4
3037 AjkCOgBeAF8COwBaAjwCPQBgAj4CPwJAAhsAiQJCAkMCRADKAHoCFAJIAMUCSQBkAkoAegBhAk0AkAIb
3037 AjkCOgBeAF8COwBaAjwCPQBgAj4CPwJAAhsAiQJCAkMCRADKAHoCFAJIAMUCSQBkAkoAegBhAk0AkAIb
3038 Ak8AVgJQXxAfTlNEcmFnZ2luZ1NvdXJjZU1hc2tGb3JOb25Mb2NhbFlOU1R2RmxhZ3NcTlNIZWFkZXJW
3038 Ak8AVgJQXxAfTlNEcmFnZ2luZ1NvdXJjZU1hc2tGb3JOb25Mb2NhbFlOU1R2RmxhZ3NcTlNIZWFkZXJW
3039 aWV3XxASTlNBbGxvd3NUeXBlU2VsZWN0XxAXTlNJbnRlcmNlbGxTcGFjaW5nV2lkdGhfEBlOU0NvbHVt
3039 aWV3XxASTlNBbGxvd3NUeXBlU2VsZWN0XxAXTlNJbnRlcmNlbGxTcGFjaW5nV2lkdGhfEBlOU0NvbHVt
3040 bkF1dG9yZXNpemluZ1N0eWxlXxAYTlNJbnRlcmNlbGxTcGFjaW5nSGVpZ2h0WU5TRW5hYmxlZFtOU0dy
3040 bkF1dG9yZXNpemluZ1N0eWxlXxAYTlNJbnRlcmNlbGxTcGFjaW5nSGVpZ2h0WU5TRW5hYmxlZFtOU0dy
3041 aWRDb2xvcl8QD05TR3JpZFN0eWxlTWFza15OU1RhYmxlQ29sdW1uc18QHE5TRHJhZ2dpbmdTb3VyY2VN
3041 aWRDb2xvcl8QD05TR3JpZFN0eWxlTWFza15OU1RhYmxlQ29sdW1uc18QHE5TRHJhZ2dpbmdTb3VyY2VN
3042 YXNrRm9yTG9jYWxbTlNSb3dIZWlnaHSAcICSE//////WwAAAgHSATwmAeCNACAAAAAAAACNAAAAAAAAA
3042 YXNrRm9yTG9jYWxbTlNSb3dIZWlnaHSAcICSE//////WwAAAgHSATwmAeCNACAAAAAAAACNAAAAAAAAA
3043 AIBzCYAMgI+AcIB7I0AxAAAAAAAAWnsxNTYsIDIwMH3XAFwADgBeAF8AWgBgAlMCFQJVAGQCVgBhAhUC
3043 AIBzCYAMgI+AcIB7I0AxAAAAAAAAWnsxNTYsIDIwMH3XAFwADgBeAF8AWgBgAlMCFQJVAGQCVgBhAhUC
3044 KltOU1RhYmxlVmlld4B1gHeAdoAMgHWActsAXAAOAG4AvQBdAF4AvgBaAL8AYACoAgoAwQJdAMUCXgDH
3044 KltOU1RhYmxlVmlld4B1gHeAdoAMgHWActsAXAAOAG4AvQBdAF4AvgBaAL8AYACoAgoAwQJdAMUCXgDH
3045 AkQAYQIsAgoCRIBugFOAmYCYgHSADICGgG6AdFl7MTU2LCAxN33SADcAOAJmAmekAmcBjAGNADtfEBFO
3045 AkQAYQIsAgoCRIBugFOAmYCYgHSADICGgG6AdFl7MTU2LCAxN33SADcAOAJmAmekAmcBjAGNADtfEBFO
3046 U1RhYmxlSGVhZGVyVmlld9YAXAAOAG4AXgBaAGACCgJqAmsAZABhAgqAboB6gHmADIBuXxAUe3sxNTcs
3046 U1RhYmxlSGVhZGVyVmlld9YAXAAOAG4AXgBaAGACCgJqAmsAZABhAgqAboB6gHmADIBuXxAUe3sxNTcs
3047 IDB9LCB7MTYsIDE3fX3SADcAOAJwAnGkAnEBjAGNADtdX05TQ29ybmVyVmlld9IADgA+AGkCdIA0ogJ1
3047 IDB9LCB7MTYsIDE3fX3SADcAOAJwAnGkAnEBjAGNADtdX05TQ29ybmVyVmlld9IADgA+AGkCdIA0ogJ1
3048 AnaAfICL2gJ4AA4CeQETAnoCewJ8An0CfgJTAHoCgAKBAoICgwFYAoQChQB6AipeTlNJc1Jlc2l6ZWFi
3048 AnaAfICL2gJ4AA4CeQETAnoCewJ8An0CfgJTAHoCgAKBAoICgwFYAoQChQB6AipeTlNJc1Jlc2l6ZWFi
3049 bGVcTlNIZWFkZXJDZWxsWk5TRGF0YUNlbGxeTlNSZXNpemluZ01hc2taTlNNaW5XaWR0aFpOU01heFdp
3049 bGVcTlNIZWFkZXJDZWxsWk5TRGF0YUNlbGxeTlNSZXNpemluZ01hc2taTlNNaW5XaWR0aFpOU01heFdp
3050 ZHRoXE5TSXNFZGl0YWJsZQmAioB9I0BRwAAAAAAAgIMjQEQAAAAAAAAjQI9AAAAAAAAJgHLXAccADgFB
3050 ZHRoXE5TSXNFZGl0YWJsZQmAioB9I0BRwAAAAAAAgIMjQEQAAAAAAAAjQI9AAAAAAAAJgHLXAccADgFB
3051 AcgByQHKAcsCiQKKAosCjAHQAIkCjhIEgf4AgIKAf4B+gGKAgFhWYXJpYWJsZdMADgFOAVYBUAFYApKA
3051 AcgByQHKAcsCiQKKAosCjAHQAIkCjhIEgf4AgIKAf4B+gGKAgFhWYXJpYWJsZdMADgFOAVYBUAFYApKA
3052 OUswLjMzMzMzMjk5ANUADgFUAU4BZAFlAVABSADdApYBaYA5gDqAgYA/XxAPaGVhZGVyVGV4dENvbG9y
3052 OUswLjMzMzMzMjk5ANUADgFUAU4BZAFlAVABSADdApYBaYA5gDqAgYA/XxAPaGVhZGVyVGV4dENvbG9y
3053 0gA3ADgCmgKbpQKbAeoB6wHsADtfEBFOU1RhYmxlSGVhZGVyQ2VsbNgBxwAOAUEByAHJAp0BygHLAp4B
3053 0gA3ADgCmgKbpQKbAeoB6wHsADtfEBFOU1RhYmxlSGVhZGVyQ2VsbNgBxwAOAUEByAHJAp0BygHLAp4B
3054 zQIsAqECogIqAqQCpV1OU0NvbnRyb2xWaWV3EhQh/kCAaICGgISAhYByEQgAgIhZVGV4dCBDZWxs1AAO
3054 zQIsAqECogIqAqQCpV1OU0NvbnRyb2xWaWV3EhQh/kCAaICGgISAhYByEQgAgIhZVGV4dCBDZWxs1AAO
3055 AdQB1QHWAdcCqQHZAquAZCNAKgAAAAAAAIBjEQQU1QAOAVQBTgFkAWUBUAFnAN0CrwFpgDmAQYCHgD9f
3055 AdQB1QHWAdcCqQHZAquAZCNAKgAAAAAAAIBjEQQU1QAOAVQBTgFkAWUBUAFnAN0CrwFpgDmAQYCHgD9f
3056 EBZjb250cm9sQmFja2dyb3VuZENvbG9y1QAOAVQBTgFkAWUBUAFIAN0CtQFpgDmAOoCJgD9fEBBjb250
3056 EBZjb250cm9sQmFja2dyb3VuZENvbG9y1QAOAVQBTgFkAWUBUAFIAN0CtQFpgDmAOoCJgD9fEBBjb250
3057 cm9sVGV4dENvbG9y0gA3ADgCuQK6ogK6ADtdTlNUYWJsZUNvbHVtbtoCeAAOAnkBEwJ6AnsCfAJ9An4C
3057 cm9sVGV4dENvbG9y0gA3ADgCuQK6ogK6ADtdTlNUYWJsZUNvbHVtbtoCeAAOAnkBEwJ6AnsCfAJ9An4C
3058 UwB6AoACvgK/AsABWAKEAoUAegIqCYCKgIwjQFPAAAAAAACAjgmActcBxwAOAUEByAHJAcoBywKJAooC
3058 UwB6AoACvgK/AsABWAKEAoUAegIqCYCKgIwjQFPAAAAAAACAjgmActcBxwAOAUEByAHJAcoBywKJAooC
3059 iwLGAdAAiQKOgIKAf4CNgGKAgFVWYWx1ZdgBxwAOAUEByAHJAp0BygHLAp4BzQIsAqECogIqAqQCpYBo
3059 iwLGAdAAiQKOgIKAf4CNgGKAgFVWYWx1ZdgBxwAOAUEByAHJAp0BygHLAp4BzQIsAqECogIqAqQCpYBo
3060 gIaAhICFgHKAiNUADgFUAU4BZAFlAVAC0wDdAtQBaYA5gJGAkIA/WWdyaWRDb2xvctMADgFOAVYBUAFY
3060 gIaAhICFgHKAiNUADgFUAU4BZAFlAVAC0wDdAtQBaYA5gJGAkIA/WWdyaWRDb2xvctMADgFOAVYBUAFY
3061 AtmAOUQwLjUA0gA3ADgC2wJTpQJTAbABjAGNADtfEBV7ezEsIDE3fSwgezE1NiwgMjAwfX3ZAFwBnwAO
3061 AtmAOUQwLjUA0gA3ADgC2wJTpQJTAbABjAGNADtfEBV7ezEsIDE3fSwgezE1NiwgMjAwfX3ZAFwBnwAO
3062 AG4AXgBaAaAAYAGhAgoCCgGkAuEAZABhAagCCgLlgG6AboBXgJWADIBWgG4jP+/gP4AAAABfEBZ7ezE1
3062 AG4AXgBaAaAAYAGhAgoCCgGkAuEAZABhAagCCgLlgG6AboBXgJWADIBWgG4jP+/gP4AAAABfEBZ7ezE1
3063 NywgMTd9LCB7MTUsIDIwMH192gBcAZ8ADgBuAKYAXgBaAaAAYAGhAgoCCgGkAusAkABkAGEBqAIKAu+A
3063 NywgMTd9LCB7MTUsIDIwMH192gBcAZ8ADgBuAKYAXgBaAaAAYAGhAgoCCgGkAusAkABkAGEBqAIKAu+A
3064 boBugFeAl4AMgFaAbiM/5vlvoAAAAF8QFXt7MSwgMjE3fSwgezE1NiwgMTV9fdIADgA+AGkC84A0oQJE
3064 boBugFeAl4AMgFaAbiM/5vlvoAAAAF8QFXt7MSwgMjE3fSwgezE1NiwgMTV9fdIADgA+AGkC84A0oQJE
3065 gHRfEBN7ezEsIDB9LCB7MTU2LCAxN319XxAWe3sxOCwgMTR9LCB7MTczLCAyMzN9fV8QFHt7MSwgMX0s
3065 gHRfEBN7ezEsIDB9LCB7MTU2LCAxN319XxAWe3sxOCwgMTR9LCB7MTczLCAyMzN9fV8QFHt7MSwgMX0s
3066 IHsyMDksIDI1N319XxAWe3s0NzQsIDB9LCB7MjExLCAyNzN9fdcBxwAOAUEByAHJAcoBywHMAc0BzgL8
3066 IHsyMDksIDI1N319XxAWe3s0NzQsIDB9LCB7MjExLCAyNzN9fdcBxwAOAUEByAHJAcoBywHMAc0BzgL8
3067 AdAAiQL+gGiAZYCegGKAn1lXb3Jrc3BhY2XTAA4BTgFWAVABWAHngDlfEBZ7ezIwLCA0NH0sIHs2ODUs
3067 AdAAiQL+gGiAZYCegGKAn1lXb3Jrc3BhY2XTAA4BTgFWAVABWAHngDlfEBZ7ezIwLCA0NH0sIHs2ODUs
3068 IDI3M319XxAgaXB5dGhvbjFfY29uc29sZV93b3Jrc3BhY2Vfc3BsaXTSADcAOAMFAwakAwYBjAGNADtb
3068 IDI3M319XxAgaXB5dGhvbjFfY29uc29sZV93b3Jrc3BhY2Vfc3BsaXTSADcAOAMFAwakAwYBjAGNADtb
3069 TlNTcGxpdFZpZXfaAFwADgBuAwgDCQBeAFoDCgBgAwsATQMNAw4DDwMQAxEAYQMTAE0DFVpOU01heFZh
3069 TlNTcGxpdFZpZXfaAFwADgBuAwgDCQBeAFoDCgBgAwsATQMNAw4DDwMQAxEAYQMTAE0DFVpOU01heFZh
3070 bHVlWk5TTWluVmFsdWVZTlNwaUZsYWdzXE5TRHJhd01hdHJpeIALgKeApiNAWQAAAAAAACNAMAAAAAAA
3070 bHVlWk5TTWluVmFsdWVZTlNwaUZsYWdzXE5TRHJhd01hdHJpeIALgKeApiNAWQAAAAAAACNAMAAAAAAA
3071 ABEFIYAMEXEKgAuApNEADgMXgKXSADcAOAMZAxqiAxoAO1pOU1BTTWF0cml4XxAVe3s2ODksIDIwfSwg
3071 ABEFIYAMEXEKgAuApNEADgMXgKXSADcAOAMZAxqiAxoAO1pOU1BTTWF0cml4XxAVe3s2ODksIDIwfSwg
3072 ezE2LCAxNn190gA3ADgDHQMepAMeAYwBjQA7XxATTlNQcm9ncmVzc0luZGljYXRvclp7NzI1LCAzMzd9
3072 ezE2LCAxNn190gA3ADgDHQMepAMeAYwBjQA7XxATTlNQcm9ncmVzc0luZGljYXRvclp7NzI1LCAzMzd9
3073 XxAVe3swLCAwfSwgezEyODAsIDc3OH19XxAQaXB5dGhvbjFfc2FuZGJveNIANwA4AyMDJKIDJAA7XxAQ
3073 XxAVe3swLCAwfSwgezEyODAsIDc3OH19XxAQaXB5dGhvbjFfc2FuZGJveNIANwA4AyMDJKIDJAA7XxAQ
3074 TlNXaW5kb3dUZW1wbGF0ZdIADgA+AGkDJ4A0rxAvAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2
3074 TlNXaW5kb3dUZW1wbGF0ZdIADgA+AGkDJ4A0rxAvAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2
3075 AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNU
3075 AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNU
3076 A1UDVoCugLyAwoDHgM2A04DYgN6A5IDpgO2A84D4gPyBAQKBAQaBAQqBAQ+BAROBARmBAR6BASKBASaB
3076 A1UDVoCugLyAwoDIgM6A1IDZgN+A44DogOyA8YD2gPuBAQGBAQaBAQqBAQ+BARWBARqBAR+BASWBASqB
3077 ASuBATCBATWBATqBAT6BAUKBAUeBAU2BAU+BAVOBAVmBAV6BAWKBAWeBAWmBAWuBAXCBAXWBAXmBAX2B
3077 AS+BATWBATmBAT2BAUKBAUOBAUiBAUqBAU+BAVSBAViBAVyBAV6BAWKBAWaBAWqBAW6BAXOBAXiBAX2B
3078 AYyBAZCBAZOBAZfTAA4DWANZA1oDWwNcWE5TU291cmNlV05TTGFiZWyAu4CvgLrZAA4DXgNfA2ADYQNi
3078 AY2BAZGBAZSBAZfTAA4DWANZA1oDWwNcWE5TU291cmNlV05TTGFiZWyAu4CvgLrYAA4DXgNfA2ADYQNi
3079 A2MDZANlA2YDZwNoA2kDagNrA2wDbQBVV05TVGl0bGVfEBFOU0tleUVxdWl2TW9kTWFza1pOU0tleUVx
3079 A2MDZANlA2YDZwNoA2kDagNrA2xXTlNUaXRsZV8QEU5TS2V5RXF1aXZNb2RNYXNrWk5TS2V5RXF1aXZd
3080 dWl2XU5TTW5lbW9uaWNMb2NZTlNPbkltYWdlXE5TTWl4ZWRJbWFnZVZOU01lbnVVTlNUYWeAuYCxEgAQ
3080 TlNNbmVtb25pY0xvY1lOU09uSW1hZ2VcTlNNaXhlZEltYWdlVk5TTWVudYC5gLESABAAAICyEn////+A
3081 AACAshJ/////gLOAt4Cw0wAOA14DbwNwA3EDcltOU01lbnVJdGVtc4EBoIEBp4EBqVxTbWFydCBRdW90
3081 s4C3gLDUAA4DXgHVA24DbwNwA3EDcltOU01lbnVJdGVtc4EBpIEByoEB2YEBzFhTaG93IEFsbNMADgAy
3082 ZXNRZ9MADgAyA3YDdwN4A3leTlNSZXNvdXJjZU5hbWWAtoC0gLVXTlNJbWFnZV8QD05TTWVudUNoZWNr
3082 A3UDdgN3A3heTlNSZXNvdXJjZU5hbWWAtoC0gLVXTlNJbWFnZV8QD05TTWVudUNoZWNrbWFya9IANwA4
3083 bWFya9IANwA4A30DfqIDfgA7XxAQTlNDdXN0b21SZXNvdXJjZdMADgAyA3YDdwN4A4KAtoC0gLhfEBBO
3083 A3wDfaIDfQA7XxAQTlNDdXN0b21SZXNvdXJjZdMADgAyA3UDdgN3A4GAtoC0gLhfEBBOU01lbnVNaXhl
3084 U01lbnVNaXhlZFN0YXRl0gA3ADgDhQOGogOGADtaTlNNZW51SXRlbV8QIXRvZ2dsZUF1dG9tYXRpY1F1
3084 ZFN0YXRl0gA3ADgDhAOFogOFADtaTlNNZW51SXRlbV8QFnVuaGlkZUFsbEFwcGxpY2F0aW9uczrSADcA
3085 b3RlU3Vic3RpdHV0aW9uOtIANwA4A4kDiqMDigOLADtfEBVOU05pYkNvbnRyb2xDb25uZWN0b3JeTlNO
3085 OAOIA4mjA4kDigA7XxAVTlNOaWJDb250cm9sQ29ubmVjdG9yXk5TTmliQ29ubmVjdG9y0wAOA1gDWQNa
3086 aWJDb25uZWN0b3LTAA4DWANZA1oDjgOPgLuAvYDB2AAOA14DXwNgA2EDYgNjA2QDZgOSA2gDkwNqA2sD
3086 A40DjoC7gL2AwdgADgNeA18DYANhA2IDYwNkA2UDkQNnA5IDaQNqA2sDlYC5gL+AwICzgLeAvtMADgNe
3087 bAOWgLmAv4DAgLOAt4C+0wAOA14DbwNwA5kDmoEBoIEB0oEB1F8QEUp1bXAgdG8gU2VsZWN0aW9uUWpf
3087 A24DbwOYA5mBAaSBAauBAa1eQ2hlY2sgU3BlbGxpbmdRO15jaGVja1NwZWxsaW5nOtMADgNYA1kDWgOf
3088 EB1jZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhOtMADgNYA1kDWgOgA6GAu4DDgMbZAA4DXgNfA2AD
3088 A6CAu4DDgMfYAA4DXgNfA2ADYQNiA2MDZANlA6MDZwOkA2kDagNrA6eAuYDFgMaAs4C3gMTTAA4DXgNu
3089 YQNiA2MDZANlA2YDpANoA6UDagNrA2wDbQCQgLmAxIDFgLOAt4CwXxAQU21hcnQgQ29weS9QYXN0ZVFm
3089 A28DqgOrgQGkgQHbgQHdZgBQAHIAaQBuAHQgJlFwVnByaW50OtMADgNYA1kDWgOxA7KAu4DJgM3ZAA4D
3090 XxAYdG9nZ2xlU21hcnRJbnNlcnREZWxldGU60wAOA1gDWQNaA64Dr4C7gMiAzNgADgNeA18DYANhA2ID
3090 XgNfA2ADYQNiA2MDZAO0A2UDtgO3A7gDaQNqA2sDuwFYVU5TVGFngLmAyxIAEgAAgMyAs4C3gMrTAA4D
3091 YwNkA2YDsgNoA7MDagNrA2wDtoC5gMqAy4CzgLeAydMADgNeA28DcAO5A7qBAaCBAcCBAcJUU2F2ZVFz
3091 XgNuA28DvgO/gQGkgQHAgQHCW1NtYXJ0IExpbmtzUUdfEB10b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0
3092 XXNhdmVEb2N1bWVudDrTAA4DWANZA1oDwAPBgLuAzoDS2AAOA14DXwNgA2EDYgNjA2QDZgPEA2gDxQNq
3092 aW9uOtMADgNYA1kDWgPFA8aAu4DPgNPYAA4DXgNfA2ADYQNiA2MDZANlA8kDtwPKA2kDagNrA82AuYDR
3093 A2sDbAPIgLmA0IDRgLOAt4DP0wAOA14DbwNwA8sDzIEBoIEBzIEBzlRVbmRvUXpVdW5kbzrTAA4DWANZ
3093 gNKAs4C3gNDTAA4DXgNuA28D0APRgQGkgQGvgQGxVFJlZG9RWlVyZWRvOtMADgNYA1kDWgPXA9iAu4DV
3094 A1oD0gPTgLuA1IDX2AAOA14DXwNgA2EDYgNjA2QDZgPWA9cD2ANqA2sDbAPIgLmA1RIAEgAAgNaAs4C3
3094 gNjYAA4DXgNfA2ADYQNiA2MDZANlA9sDZwNoA2kDagNrA9+AuYDXgLKAs4C3gNbTAA4DXgNuA28D4gPj
3095 gM9UUmVkb1FaVXJlZG860wAOA1gDWQNaA+ED4oC7gNmA3dgADgNeA18DYANhA2IDYwNkA2YD5QPmA+cD
3095 gQGkgQHEgQHGXlN0YXJ0IFNwZWFraW5nXnN0YXJ0U3BlYWtpbmc60wAOA1gDWQNaA+gD6YC7gNqA3tgA
3096 agNrA2wD6oC5gNsSABgAAIDcgLOAt4Da1AAOA14B1QNvA3AD7QPuA++BAaCBAa6BAb6BAbBbSGlkZSBP
3096 DgNeA18DYANhA2IDYwNkA2UD7ANnA+0DaQNqA2sD8IC5gNyA3YCzgLeA29MADgNeA24DbwPzA/SBAaSB
3097 dGhlcnNRaF8QFmhpZGVPdGhlckFwcGxpY2F0aW9uczrTAA4DWANZA1oD9QP2gLuA34Dj2AAOA14DXwNg
3097 AfGBAfNfEBRJUHl0aG9uMVNhbmRib3ggSGVscFE/WXNob3dIZWxwOtMADgNYA1kDWgP6A/uAu4DggOLY
3098 A2EDYgNjA2QDZgP5A9cD+gNqA2sDbAP9gLmA4YDigLOAt4Dg0wAOA14DbwNwBAAEAYEBoIEB4YEB41tT
3098 AA4DXgNfA2ADYQNiA2MDZANlA/4DZwNoA2kDagNrA5WAuYDhgLKAs4C3gL5fEBtDaGVjayBTcGVsbGlu
3099 aG93IENvbG9yc1FDXxAVb3JkZXJGcm9udENvbG9yUGFuZWw60wAOA1gDWQNaBAcECIC7gOWA6NgADgNe
3099 ZyBXaGlsZSBUeXBpbmdfEB50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZzrTAA4DWANZA1oEBwQI
3100 A18DYANhA2IDYwNkA2YECwNoBAwDagNrA2wDyIC5gOaA54CzgLeAz1VQYXN0ZVF2VnBhc3RlOtMADgNY
3100 gLuA5IDn2AAOA14DXwNgA2EDYgNjA2QDZQQLA2cEDANpA2oDawPNgLmA5YDmgLOAt4DQWlNlbGVjdCBB
3101 A1kDWgQVBBaAu4DqgOzZAA4DXgNfA2ADYQNiA2MDZANlA2YEGQNoA6UDagNrA2wDlgCQgLmA64DFgLOA
3101 bGxRYVpzZWxlY3RBbGw60wAOA1gDWQNaBBUEFoC7gOmA69gADgNeA18DYANhA2IDYwNkA2UEGQNnA2gD
3102 t4C+ZQBGAGkAbgBkICZfEBdwZXJmb3JtRmluZFBhbmVsQWN0aW9uOtMADgNYA1kDWgQiBCOAu4DugPLY
3102 aQNqA2sDlYC5gOqAsoCzgLeAvl8QG0NoZWNrIEdyYW1tYXIgV2l0aCBTcGVsbGluZ18QFnRvZ2dsZUdy
3103 AA4DXgNfA2ADYQNiA2MDZANmBCYDaAQnA2oDawNsBCqAuYDwgPGAs4C3gO/TAA4DXgNvA3AELQQugQGg
3103 YW1tYXJDaGVja2luZzrTAA4DWANZA1oEIgQjgLuA7YDw2AAOA14DXwNgA2EDYgNjA2QDZQQmA2cDaANp
3104 gQGdgQGfXVN0b3AgU3BlYWtpbmddc3RvcFNwZWFraW5nOtQADgQyA1gDWQQzBDQAQQQ2XU5TRGVzdGlu
3104 A2oDawQqgLmA74CygLOAt4Du0wAOA14DbgNvBC0ELoEBpIEB54EB6W8QEgBDAHUAcwB0AG8AbQBpAHoA
3105 YXRpb26A94D0gAeA9tIADgAyADMEOYAEgPVfEBZJUHl0aG9uQ29jb2FDb250cm9sbGVyWGRlbGVnYXRl
3105 ZQAgAFQAbwBvAGwAYgBhAHIgJl8QH3J1blRvb2xiYXJDdXN0b21pemF0aW9uUGFsZXR0ZTrTAA4DWANZ
3106 0gA3ADgEPQQ+owQ+A4sAO18QFE5TTmliT3V0bGV0Q29ubmVjdG9y0wAOA1gDWQNaBEEEQoC7gPmA+9gA
3106 A1oEMwQ0gLuA8oD12AAOA14DXwNgA2EDYgNjA2QDZQQ3BDgEOQNpA2oDawQqgLmA8xIAGAAAgPSAs4C3
3107 DgNeA18DYANhA2IDYwNkA2YERQNoBCcDagNrA2wDyIC5gPqA8YCzgLeAz1ZEZWxldGVXZGVsZXRlOtMA
3107 gO5cU2hvdyBUb29sYmFyUXRfEBN0b2dnbGVUb29sYmFyU2hvd2460wAOA1gDWQNaBEIEQ4C7gPeA+tgA
3108 DgNYA1kDWgROBE+Au4D9gQEB2AAOA14DXwNgA2EDYgNjA2QDZgRSA2gEUwNqA2sDbARWgLmA/4EBAICz
3108 DgNeA18DYANhA2IDYwNkA2UERgNnBEcDaQNqA2sDp4C5gPiA+YCzgLeAxFRTYXZlUXNdc2F2ZURvY3Vt
3109 gLeA/tQADgNeAdUDbwNwBFkEWgRbgQGggQHrgQHvgQHtWE1pbmltaXplUW1fEBNwZXJmb3JtTWluaWF0
3109 ZW50OtQADgRPA1gDWQRQBFEEUgRTXU5TRGVzdGluYXRpb26BAQCA/YD8gP/SAA4AMgAzADSABIAD0gAO
3110 dXJpemU60wAOA1gDWQNaBGEEYoC7gQEDgQEF2AAOA14DXwNgA2EDYgNjA2QDZgRlA2gEJwNqA2sDbARW
3110 ADIAMwRZgASA/l8QGklQeXRob24xU2FuZGJveEFwcERlbGVnYXRlWGRlbGVnYXRl0gA3ADgEXQReowRe
3111 gLmBAQSA8YCzgLeA/l8QEkJyaW5nIEFsbCB0byBGcm9udF8QD2FycmFuZ2VJbkZyb250OtMADgNYA1kD
3111 A4oAO18QFE5TTmliT3V0bGV0Q29ubmVjdG9y0wAOA1gDWQNaBGEEYoC7gQECgQEF2QAOA14DXwNgA2ED
3112 WgRuBG+Au4EBB4EBCdgADgNeA18DYANhA2IDYwNkA2YEcgNoBCcDagNrA2wD6oC5gQEIgPGAs4C3gNpY
3112 YgNjA2QDtANlBGUDZwRmA2kDagNrA7sAVYC5gQEDgQEEgLOAt4DKXFNtYXJ0IFF1b3Rlc1FnXxAhdG9n
3113 U2hvdyBBbGxfEBZ1bmhpZGVBbGxBcHBsaWNhdGlvbnM60wAOA1gDWQNaBHsEfIC7gQELgQEO2AAOA14D
3113 Z2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb2461AAOBE8DWANZBFAEbwRRBHGBAQCBAQeA/YEBCdIA
3114 XwNgA2EDYgNjA2QDZgR/A2gEgANqA2sDbAO2gLmBAQyBAQ2As4C3gMlVQ2xvc2VRd11wZXJmb3JtQ2xv
3114 DgAyADMEdIAEgQEIXxAWSVB5dGhvbkNvY29hQ29udHJvbGxlcl8QEWlweXRob25Db250cm9sbGVy0wAO
3115 c2U61AAOBDIDWANZA1oAHwSKBIuAu4ACgQEQgQES1wAOA14DYANhA2IDYwNkA2YEjgQnA2oDawNsA+qA
3115 A1gDWQNaBHkEeoC7gQELgQEO2AAOA14DXwNgA2EDYgNjA2QDZQR9A2cEfgNpA2oDawNsgLmBAQyBAQ2A
3116 uYEBEYDxgLOAt4DaXxAVQWJvdXQgSVB5dGhvbjFTYW5kYm94XxAdb3JkZXJGcm9udFN0YW5kYXJkQWJv
3116 s4C3gLBfEBRRdWl0IElQeXRob24xU2FuZGJveFFxWnRlcm1pbmF0ZTrTAA4DWANZA1oEhwSIgLuBARCB
3117 dXRQYW5lbDrTAA4DWANZA1oElwSYgLuBARSBARjYAA4DXgNfA2ADYQNiA2MDZANmBJsDaAScA2oDawNs
3117 ARTYAA4DXgNfA2ADYQNiA2MDZANlBIsDZwSMA2kDagNrBI+AuYEBEoEBE4CzgLeBARHUAA4DXgHVA24D
3118 BJ+AuYEBFoEBF4CzgLeBARXTAA4DXgNvA3AEogSjgQGggQHdgQHfXkNoZWNrIFNwZWxsaW5nUTteY2hl
3118 bwSSBJMElIEBpIEB64EB74EB7VhNaW5pbWl6ZVFtXxATcGVyZm9ybU1pbmlhdHVyaXplOtMADgNYA1kD
3119 Y2tTcGVsbGluZzrTAA4DWANZA1oEqQSqgLuBARqBAR3YAA4DXgNfA2ADYQNiA2MDZANmBK0DaASuA2oD
3119 WgSaBJuAu4EBFoEBGdgADgNeA18DYANhA2IDYwNkA2UEngNnBJ8DaQNqA2sDzYC5gQEXgQEYgLOAt4DQ
3120 awNsA8iAuYEBG4EBHICzgLeAz1pTZWxlY3QgQWxsUWFac2VsZWN0QWxsOtMADgNYA1kDWgS3BLiAu4EB
3120 VFVuZG9RelV1bmRvOtMADgNYA1kDWgSoBKmAu4EBG4EBHtgADgNeA18DYANhA2IDYwNkA2UErANnBK0D
3121 H4EBIdgADgNeA18DYANhA2IDYwNkA2YEuwNoA+cDagNrA2wD6oC5gQEggNyAs4C3gNpfEBRIaWRlIElQ
3121 aQNqA2sDlYC5gQEcgQEdgLOAt4C+bgBTAGgAbwB3ACAAUwBwAGUAbABsAGkAbgBnICZROl8QD3Nob3dH
3122 eXRob24xU2FuZGJveFVoaWRlOtMADgNYA1kDWgTEBMWAu4EBI4EBJdgADgNeA18DYANhA2IDYwNkA2YE
3122 dWVzc1BhbmVsOtMADgNYA1kDWgS2BLeAu4EBIIEBJNgADgNeA18DYANhA2IDYwNkA2UEugO3BLsDaQNq
3123 yANoBCcDagNrA2wEn4C5gQEkgPGAs4C3gQEVXxAbQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nXxAe
3123 A2sEvoC5gQEigQEjgLOAt4EBIdMADgNeA24DbwTBBMKBAaSBAZ+BAaFbU2hvdyBDb2xvcnNRQ18QFW9y
3124 dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmc60wAOA1gDWQNaBNEE0oC7gQEngQEq2AAOA14DXwNg
3124 ZGVyRnJvbnRDb2xvclBhbmVsOtMADgNYA1kDWgTIBMmAu4EBJoEBKdgADgNeA18DYANhA2IDYwNkA2UE
3125 A2EDYgNjA2QDZgTVA2gE1gNqA2sDbAO2gLmBASiBASmAs4C3gMlmAFAAcgBpAG4AdCAmUXBWcHJpbnQ6
3125 zAQ4BM0DaQNqA2sDbIC5gQEngQEogLOAt4CwW0hpZGUgT3RoZXJzUWhfEBZoaWRlT3RoZXJBcHBsaWNh
3126 0wAOA1gDWQNaBN8E4IC7gQEsgQEv2AAOA14DXwNgA2EDYgNjA2QDZgTjA9cE5ANqA2sDbAO2gLmBAS2B
3126 dGlvbnM60wAOA1gDWQNaBNYE14C7gQErgQEu2AAOA14DXwNgA2EDYgNjA2QDZQTaA2cE2wNpA2oDawPN
3127 AS6As4C3gMloAFMAYQB2AGUAIABBAHMgJlFTXxAPc2F2ZURvY3VtZW50QXM60wAOA1gDWQNaBO0E7oC7
3127 gLmBASyBAS2As4C3gNBUQ29weVFjVWNvcHk60wAOA1gDWQNaBOQE5YC7gQEwgQE02QAOA14DXwNgA2ED
3128 gQExgQE02AAOA14DXwNgA2EDYgNjA2QDZgTxA2gE8gNqA2sDbAPqgLmBATKBATOAs4C3gNpfEBRRdWl0
3128 YgNjA2QDtANlBOgDZwTpA2kDagNrBOwAkIC5gQEygQEzgLOAt4EBMdMADgNeA24DbwTvBPCBAaSBAbWB
3129 IElQeXRob24xU2FuZGJveFFxWnRlcm1pbmF0ZTrTAA4DWANZA1oE+wT8gLuBATaBATnZAA4DXgNfA2AD
3129 AbdlAEYAaQBuAGQgJlFmXxAXcGVyZm9ybUZpbmRQYW5lbEFjdGlvbjrTAA4DWANZA1oE9gT3gLuBATaB
3130 YQNiA2MDZANlA2YE/wPXBQADagNrA2wDbQFYgLmBATeBATiAs4C3gLBbU21hcnQgTGlua3NRR18QHXRv
3130 ATjYAA4DXgNfA2ADYQNiA2MDZANlBPoDZwNoA2kDagNrA9+AuYEBN4CygLOAt4DWXVN0b3AgU3BlYWtp
3131 Z2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb2461AAOBDIDWANZBDMENAUKBQuA94D0gQE7gQE90gAOADIA
3131 bmddc3RvcFNwZWFraW5nOtQADgRPA1gDWQNaAB8FBAUFgLuAAoEBOoEBPNcADgNeA2ADYQNiA2MDZANl
3132 MwUOgASBATxfEBpJUHl0aG9uMVNhbmRib3hBcHBEZWxlZ2F0ZV8QEWlweXRob25Db250cm9sbGVy0wAO
3132 BQgDaANpA2oDawNsgLmBATuAsoCzgLeAsF8QFUFib3V0IElQeXRob24xU2FuZGJveF8QHW9yZGVyRnJv
3133 A1gDWQNaBRMFFIC7gQE/gQFB2AAOA14DXwNgA2EDYgNjA2QDZgUXA2gEJwNqA2sDbARWgLmBAUCA8YCz
3133 bnRTdGFuZGFyZEFib3V0UGFuZWw60wAOA1gDWQNaBREFEoC7gQE+gQFB2QAOBRQDXgNfA2ADYQNiA2MD
3134 gLeA/lRab29tXHBlcmZvcm1ab29tOtMADgNYA1kDWgUgBSGAu4EBQ4EBRtgADgNeA18DYANhA2IDYwNk
3134 ZANlA2gFFwO3BRgDaQNqA2sDp1lOU1Rvb2xUaXCAuYCygQE/gQFAgLOAt4DEXVBhZ2UgU2V0dXAuLi5R
3135 A2YFJANoBSUDagNrA2wDyIC5gQFEgQFFgLOAt4DPVENvcHlRY1Vjb3B5OtMADgNYA1kDWgUuBS+Au4EB
3135 UF5ydW5QYWdlTGF5b3V0OtQADgRPA1gDWQRQBG8AQQRTgQEAgQEHgAeA/9MADgNYA1kDWgUmBSeAu4EB
3136 SIEBTNgADgNeA18DYANhA2IDYwNkA2YFMgPmBTMDagNrA2wFNoC5gQFKgQFLgLOAt4EBSdMADgNeA28D
3136 RIEBR9gADgNeA18DYANhA2IDYwNkA2UFKgNnBSsDaQNqA2sDzYC5gQFFgQFGgLOAt4DQVVBhc3RlUXZW
3137 cAU5BTqBAaCBAeeBAelcU2hvdyBUb29sYmFyUXRfEBN0b2dnbGVUb29sYmFyU2hvd2461AAOBDIDWANZ
3137 cGFzdGU61AAOBE8DWANZBFAAyABBBTaBAQCAGIAHgQFJXxAVaW5pdGlhbEZpcnN0UmVzcG9uZGVy0wAO
3138 BDMFCgVBBDaA94EBO4EBToD20gAOADIAMwA0gASAA9MADgNYA1kDWgVIBUmAu4EBUIEBUtgADgNeA18D
3138 A1gDWQNaBToFO4C7gQFLgQFO2AAOA14DXwNgA2EDYgNjA2QDZQU+A2cFPwNpA2oDawTsgLmBAUyBAU2A
3139 YANhA2IDYwNkA2YFTANoBCcDagNrA2wEKoC5gQFRgPGAs4C3gO9eU3RhcnQgU3BlYWtpbmdec3RhcnRT
3139 s4C3gQExXxARSnVtcCB0byBTZWxlY3Rpb25Ral8QHWNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWE6
3140 cGVha2luZzrTAA4DWANZA1oFVQVWgLuBAVSBAVjYAA4DXgNfA2ADYQNiA2MDZANmBVkDaAVaA2oDawNs
3140 0wAOA1gDWQNaBUgFSYC7gQFQgQFT2AAOA14DXwNgA2EDYgNjA2QDZQVMA2cDaANpA2oDawVQgLmBAVKA
3141 BV2AuYEBVoEBV4CzgLeBAVXTAA4DXgNvA3AFYAVhgQGggQHxgQHzXxAUSVB5dGhvbjFTYW5kYm94IEhl
3141 soCzgLeBAVHUAA4DXgHVA24DbwVTBVQFVYEBpIEBpYEBp4EBplpDbGVhciBNZW51XxAVY2xlYXJSZWNl
3142 bHBRP1lzaG93SGVscDrTAA4DWANZA1oFZwVogLuBAVqBAV3YAA4DXgNfA2ADYQNiA2MDZANmBWsDaAQn
3142 bnREb2N1bWVudHM60wAOA1gDWQNaBVoFW4C7gQFVgQFX2AAOA14DXwNgA2EDYgNjA2QDZQVeA2cDaANp
3143 A2oDawNsBW+AuYEBXIDxgLOAt4EBW9QADgNeAdUDbwNwBXIFcwV0gQGggQGigQGlgQGkWkNsZWFyIE1l
3143 A2oDawPNgLmBAVaAsoCzgLeA0FZEZWxldGVXZGVsZXRlOtMADgNYA1kDWgVnBWiAu4EBWYEBW9cADgNe
3144 bnVfEBVjbGVhclJlY2VudERvY3VtZW50czrTAA4DWANZA1oFeQV6gLuBAV+BAWHYAA4DXgNfA2ADYQNi
3144 A2ADYQNiA2MDZANlBWsDaANpA2oDawOngLmBAVqAsoCzgLeAxF8QD1JldmVydCB0byBTYXZlZF8QFnJl
3145 A2MDZANmBX0DaAQnA2oDawNsBTaAuYEBYIDxgLOAt4EBSW8QEgBDAHUAcwB0AG8AbQBpAHoAZQAgAFQA
3145 dmVydERvY3VtZW50VG9TYXZlZDrUAA4ETwNYA1kEUADIBG8FdoEBAIAYgQEHgQFdWHRleHRWaWV30wAO
3146 bwBvAGwAYgBhAHIgJl8QH3J1blRvb2xiYXJDdXN0b21pemF0aW9uUGFsZXR0ZTrTAA4DWANZA1oFhgWH
3146 A1gDWQNaBXoFe4C7gQFfgQFh2AAOA14DXwNgA2EDYgNjA2QDZQV+A2cDaANpA2oDawSPgLmBAWCAsoCz
3147 gLuBAWOBAWbYAA4DXgNfA2ADYQNiA2MDZANmBYoDaAWLA2oDawNsA8iAuYEBZIEBZYCzgLeAz1NDdXRR
3147 gLeBARFfEBJCcmluZyBBbGwgdG8gRnJvbnRfEA9hcnJhbmdlSW5Gcm9udDrTAA4DWANZA1oFhwWIgLuB
3148 eFRjdXQ61AAOBDIDWANZBDMAyAQ0BZaA94AYgPSBAWhYdGV4dFZpZXfUAA4EMgNYA1kEMwDIAEEFnID3
3148 AWOBAWXYAA4DXgNfA2ADYQNiA2MDZANlBYsDZwTNA2kDagNrA2yAuYEBZIEBKICzgLeAsF8QFEhpZGUg
3149 gBiAB4EBal8QFWluaXRpYWxGaXJzdFJlc3BvbmRlctMADgNYA1kDWgWgBaGAu4EBbIEBb9kADgWjA14D
3149 SVB5dGhvbjFTYW5kYm94VWhpZGU60wAOA1gDWQNaBZQFlYC7gQFngQFp2AAOA14DXwNgA2EDYgNjA2QD
3150 XwNgA2EDYgNjA2QDZgQnBaYD1wWnA2oDawNsA7ZZTlNUb29sVGlwgLmA8YEBbYEBboCzgLeAyV1QYWdl
3150 ZQWYA2cDaANpA2oDawSPgLmBAWiAsoCzgLeBARFUWm9vbVxwZXJmb3JtWm9vbTrTAA4DWANZA1oFoQWi
3151 IFNldHVwLi4uUVBecnVuUGFnZUxheW91dDrTAA4DWANZA1oFsAWxgLuBAXGBAXTYAA4DXgNfA2ADYQNi
3151 gLuBAWuBAW3ZAA4DXgNfA2ADYQNiA2MDZAO0A2UFpQNnBOkDaQNqA2sDuwCQgLmBAWyBATOAs4C3gMpf
3152 A2MDZANmBbQDaAW1A2oDawNsBJ+AuYEBcoEBc4CzgLeBARVuAFMAaABvAHcAIABTAHAAZQBsAGwAaQBu
3152 EBBTbWFydCBDb3B5L1Bhc3RlXxAYdG9nZ2xlU21hcnRJbnNlcnREZWxldGU60wAOA1gDWQNaBa4Fr4C7
3153 AGcgJlE6XxAPc2hvd0d1ZXNzUGFuZWw60wAOA1gDWQNaBb4Fv4C7gQF2gQF41wAOA14DYANhA2IDYwNk
3153 gQFvgQFy2AAOA14DXwNgA2EDYgNjA2QDZQWyA7cFswNpA2oDawOngLmBAXCBAXGAs4C3gMRoAFMAYQB2
3154 A2YFwgQnA2oDawNsA7aAuYEBd4DxgLOAt4DJXxAPUmV2ZXJ0IHRvIFNhdmVkXxAWcmV2ZXJ0RG9jdW1l
3154 AGUAIABBAHMgJlFTXxAPc2F2ZURvY3VtZW50QXM60wAOA1gDWQNaBbwFvYC7gQF0gQF32AAOA14DXwNg
3155 bnRUb1NhdmVkOtMADgNYA1kDWgXLBcyAu4EBeoEBfNgADgNeA18DYANhA2IDYwNkA2YFzwNoBCcDagNr
3155 A2EDYgNjA2QDZQXAA2cFwQNpA2oDawPNgLmBAXWBAXaAs4C3gNBTQ3V0UXhUY3V0OtMADgNYA1kDWgXK
3156 A2wEn4C5gQF7gPGAs4C3gQEVXxAbQ2hlY2sgR3JhbW1hciBXaXRoIFNwZWxsaW5nXxAWdG9nZ2xlR3Jh
3156 BcuAu4EBeYEBfNgADgNeA18DYANhA2IDYwNkA2UFzgNnBc8DaQNqA2sDp4C5gQF6gQF7gLOAt4DEVUNs
3157 bW1hckNoZWNraW5nOtcADgQyBdcF2ANYA1kF2QXaBdsF3AXdAnUF3wBVWU5TS2V5UGF0aFlOU0JpbmRp
3157 b3NlUXddcGVyZm9ybUNsb3NlOtcADgRPBdcF2ANYA1kF2QXaBFEF3AXdBd4F3wBVWU5TS2V5UGF0aFlO
3158 bmdfEBxOU05pYkJpbmRpbmdDb25uZWN0b3JWZXJzaW9ugQGLgQF+gQGKgQGCgHyBAYnbBeEADgXiBeMF
3158 U0JpbmRpbmdfEBxOU05pYkJpbmRpbmdDb25uZWN0b3JWZXJzaW9ugQGMgP2BAYuBAYqBAX6BAYnbBeEA
3159 5AXlBeYF5wXoBekF6gB6BewAegXuAHoF8AXdAHoAegB6BfVfEBpOU0ZpbHRlclJlc3RyaWN0c0luc2Vy
3159 DgXiBeMF5AXlBeYF5wXoBekF6gB6BewAegXuAHoF8AXxAHoAegB6BfVfEBpOU0ZpbHRlclJlc3RyaWN0
3160 dGlvbl8QFE5TUHJlc2VydmVzU2VsZWN0aW9uXE5TSW5pdGlhbEtleVpOU0VkaXRhYmxlXk5TRGVjbGFy
3160 c0luc2VydGlvbl8QFE5TUHJlc2VydmVzU2VsZWN0aW9uXE5TSW5pdGlhbEtleVpOU0VkaXRhYmxlXk5T
3161 ZWRLZXlzXk5TSW5pdGlhbFZhbHVlXxAiTlNDbGVhcnNGaWx0ZXJQcmVkaWNhdGVPbkluc2VydGlvbl8Q
3161 RGVjbGFyZWRLZXlzXk5TSW5pdGlhbFZhbHVlXxAiTlNDbGVhcnNGaWx0ZXJQcmVkaWNhdGVPbkluc2Vy
3162 GE5TU2VsZWN0c0luc2VydGVkT2JqZWN0c18QFk5TQXZvaWRzRW1wdHlTZWxlY3Rpb25fEBFOU1NvcnRE
3162 dGlvbl8QGE5TU2VsZWN0c0luc2VydGVkT2JqZWN0c18QFk5TQXZvaWRzRW1wdHlTZWxlY3Rpb25fEBFO
3163 ZXNjcmlwdG9ycwmBAYgJgQGBCYEBf4EBggkJCYEBg9IADgA+AGkF+IA0owX5Be4F3YEBgIEBgYEBglRr
3163 U1NvcnREZXNjcmlwdG9ycwmBAYgJgQGBCYEBf4EBggkJCYEBg9IADgA+AGkF+IA0owX5Be4F8YEBgIEB
3164 ZXlzU2tleVV2YWx1ZdIADgA+BgAGAYEBh6EGAoEBhNQADgYEBgUGBgYHBe4GCQB6VU5TS2V5Wk5TU2Vs
3164 gYEBglRrZXlzU2tleVV2YWx1ZdIADgA+BgAGAYEBh6EGAoEBhNQADgYEBgUGBgYHBe4GCQB6VU5TS2V5
3165 ZWN0b3JbTlNBc2NlbmRpbmeBAYaBAYGBAYUJWGNvbXBhcmU60gA3ADgGDQYOogYOADtfEBBOU1NvcnRE
3165 Wk5TU2VsZWN0b3JbTlNBc2NlbmRpbmeBAYaBAYGBAYUJWGNvbXBhcmU60gA3ADgGDQYOogYOADtfEBBO
3166 ZXNjcmlwdG9y0gA3ADgGEAE4ogE4ADvSADcAOAYSBhOlBhMGFAYVBhYAO18QFk5TRGljdGlvbmFyeUNv
3166 U1NvcnREZXNjcmlwdG9y0gA3ADgGEAE4ogE4ADvSADcAOAYSBhOlBhMGFAYVBhYAO18QFk5TRGljdGlv
3167 bnRyb2xsZXJfEBFOU0FycmF5Q29udHJvbGxlcl8QEk5TT2JqZWN0Q29udHJvbGxlclxOU0NvbnRyb2xs
3167 bmFyeUNvbnRyb2xsZXJfEBFOU0FycmF5Q29udHJvbGxlcl8QEk5TT2JqZWN0Q29udHJvbGxlclxOU0Nv
3168 ZXJfEBp2YWx1ZTogYXJyYW5nZWRPYmplY3RzLmtleV8QE2FycmFuZ2VkT2JqZWN0cy5rZXnSADcAOAYa
3168 bnRyb2xsZXJfEClmaWx0ZXJQcmVkaWNhdGU6IHdvcmtzcGFjZUZpbHRlclByZWRpY2F0ZV8QD2ZpbHRl
3169 BhujBhsDiwA7XxAVTlNOaWJCaW5kaW5nQ29ubmVjdG9y1wAOBDIF1wXYA1gDWQXZBdoENAYfBiAF2wYi
3169 clByZWRpY2F0ZV8QGHdvcmtzcGFjZUZpbHRlclByZWRpY2F0ZdIANwA4BhsGHKMGHAOKADtfEBVOU05p
3170 AFWBAYuA9IEBj4EBjoEBfoEBjV8QGWNvbnRlbnREaWN0aW9uYXJ5OiB1c2VyTlNfEBFjb250ZW50RGlj
3170 YkJpbmRpbmdDb25uZWN0b3LXAA4ETwXXBdgDWANZBdkF2gRvBiAGIQXeBiMAVYEBjIEBB4EBkIEBj4EB
3171 dGlvbmFyeVZ1c2VyTlPXAA4EMgXXBdgDWANZBdkF2gXbBikF3QJ2BiwAVYEBi4EBfoEBkoEBgoCLgQGR
3171 foEBjl8QGWNvbnRlbnREaWN0aW9uYXJ5OiB1c2VyTlNfEBFjb250ZW50RGljdGlvbmFyeVZ1c2VyTlPX
3172 XxAcdmFsdWU6IGFycmFuZ2VkT2JqZWN0cy52YWx1ZV8QFWFycmFuZ2VkT2JqZWN0cy52YWx1ZdcADgQy
3172 AA4ETwXXBdgDWANZBdkF2gXeBioF8QJ2Bi0AVYEBjIEBfoEBk4EBgoCLgQGSXxAcdmFsdWU6IGFycmFu
3173 BdcF2ANYA1kF2QXaBQoGMgYzBdsGNQBVgQGLgQE7gQGWgQGVgQF+gQGUXxApZmlsdGVyUHJlZGljYXRl
3173 Z2VkT2JqZWN0cy52YWx1ZV8QFWFycmFuZ2VkT2JqZWN0cy52YWx1ZdcADgRPBdcF2ANYA1kF2QXaBd4G
3174 OiB3b3Jrc3BhY2VGaWx0ZXJQcmVkaWNhdGVfEA9maWx0ZXJQcmVkaWNhdGVfEBh3b3Jrc3BhY2VGaWx0
3174 MwXxAnUGNgBVgQGMgQF+gQGWgQGCgHyBAZVfEBp2YWx1ZTogYXJyYW5nZWRPYmplY3RzLmtleV8QE2Fy
3175 ZXJQcmVkaWNhdGXXAA4EMgXXBdgDWANZBdkF2gQ0BjwGPQBsBj8AVYEBi4D0gQGagQGZgKOBAZhfEBlh
3175 cmFuZ2VkT2JqZWN0cy5rZXnXAA4ETwXXBdgDWANZBdkF2gRvBjwGPQBsBj8AVYEBjIEBB4EBmoEBmYCj
3176 bmltYXRlOiB3YWl0aW5nRm9yRW5naW5lV2FuaW1hdGVfEBB3YWl0aW5nRm9yRW5naW5l0gAOAD4GAAZF
3176 gQGYXxAZYW5pbWF0ZTogd2FpdGluZ0ZvckVuZ2luZVdhbmltYXRlXxAQd2FpdGluZ0ZvckVuZ2luZdIA
3177 gQGHrxBnA1sGRwTfAkQCdQZLBIoEQQUgBW8GUATRBbAFywZUBFYFLgZXBYYGWQIKA20GXATtBl4GXwS3
3177 DgA+BgAGRYEBh68QZwZGAGsE5AVaBkoCwAVQBk0CgwZPBlAE1gZSBlMGVARCAE0AfgPwA7sEBwT2A7EE
3178 BmEGYgBNBdsAawVVBHsFoAZpBmoAyAUKBGEGbgSpBnAAbAZyBBUD9QIaA8gAfwPqAnYEIgZ7BJcGfQOO
3178 FQP6AgoAfwNsBJoGYwOnAEECKgTIA1sEeQPfBSYFegRSBm4EbwPoAMgF3gWuBnQE7AONBUgGeAZ5BGED
3179 Bn8GgAV5AioGgwSfAhAETgPSBogEBwCqBb4D4QaNBo4D/QLAA64AfgaTBG4FEwTEAKMFXQT7BpoGmwOg
3179 nwOVA80GfgQqBoAEUQaCBREEMwIaBoYGhwaIBokAqgaLBCIFBASoA9cAbAWHBcoCRAaUA8UGlgJ2ALEF
3180 BTYDlgafBWcEKgPABDQFQQKDAEEAsQaoBqkFSAO2BqyAr4EBnIEBLIB0gHyBAaGBARCA+YEBQ4EBW4EB
3180 OgS+BpsFvAJ1Bp4FZwagBIcFoQS2AKMGpQIQBqcGqAWUBqoGqwSPgQGcgA6BATCBAVWBAZ2AjoEBUYEB
3181 poEBJ4EBcYEBeoEBqoD+gQFIgQHDgQFjgQHwgG6AsIEB2YEBMYEBv4EBz4EBH4EB5oEB5IALgQF+gA6B
3181 qICDgQGqgQGugQErgQGygQGegQG/gPeAC4AQgNuAyoDkgQE2gMmA6YDggG6AaoCwgQEWgQHYgMSAB4By
3182 AVSBAQuBAWyBAbaBAbWAGIEBO4EBA4EB6oEBGoEBxoCjgQG9gOqA34CUgM+AaoDagIuA7oEBrYEBFIEB
3182 gQEmgK+BAQuA1oEBRIEBX4D8gQHVgQEHgNqAGIEBfoEBb4EB6oEBMYC9gQFQgQHlgQHugQECgMOAvoDQ
3183 y4C9gQHQgQHugQFfgHKBAbGBARWAloD9gNSBAdGA5YBYgQF2gNmBAdeBAbyA4ICOgMiAEIEB1YEBB4EB
3183 gQG4gO6BAeGA/YEBzoEBPoDygJSBAbyBAcmBAd6BAeaAWIEBtIDtgQE6gQEbgNWAo4EBY4EBeYB0gQHN
3184 P4EBI4AUgQFVgQE2gQHcgQGygMOBAUmAvoEB4IEBWoDvgM6A9IEBToCDgAeAVIEBuYEByoEBUIDJgQHJ
3184 gM+BAdqAi4BUgQFLgQEhgQHwgQF0gHyBAbOBAVmBAcOBARCBAWuBASCAFIEB0YCWgQHSgQGigQFngQG6
3185 2gAOBq4DXgNfA2ADYQNiA2MDZAGgA2YEKgQtA2gEJwNqA2sDbAPIBrZZTlNTdWJtZW51gLmA74EBnYDx
3185 gQHkgQER2gAOA14DXwauA2AGrwNhA2IDYwNkA2UDaANnAHoDaAB6A2kDagNrA2xdTlNJc1NlcGFyYXRv
3186 gLOAt4DPgQGeVlNwZWVjaF5zdWJtZW51QWN0aW9uOtIADgA+AGkGu4A0ogVIBCKBAVCA7tIANwA4Br8D
3186 clxOU0lzRGlzYWJsZWSAuYCyCYCyCYCzgLeAsNoADga5A14DXwNgA2EDYgNjA2QBoANlBL4EwQNnA2gD
3187 ZKIDZAA72gAOBq4DXgNfA2ADYQNiA2MDZAGgA2YFbwVyA2gEJwNqA2sDbAO2BsiAuYEBW4EBooDxgLOA
3187 aQNqA2sGUwbBWU5TU3VibWVudYC5gQEhgQGfgLKAs4C3gQGegQGg1AAOA14B1QNuA28GxAbFBsaBAaSB
3188 t4DJgQGjW09wZW4gUmVjZW500gAOAD4AaQbMgDShBWeBAVpfEBZfTlNSZWNlbnREb2N1bWVudHNNZW51
3188 AceBAfSBAchWRm9ybWF0XnN1Ym1lbnVBY3Rpb2460gAOAD4AaQbLgDSiBqgEtoEBooEBINgADgNeA18D
3189 2gAOBq4DXgNfA2ADYQNiA2MDZAGgA2YDbQNxA2gEJwNqA2sDbAPIBteAuYCwgQGngPGAs4C3gM+BAahd
3189 YANhA2IDYwNkA2UG0ANnBDkDaQNqA2sEvoC5gQGjgPSAs4C3gQEhWlNob3cgRm9udHPSADcAOAbXA2Si
3190 U3Vic3RpdHV0aW9uc9IADgA+AGkG24A0owOgA1sE+4DDgK+BATbUAA4DXgHVA28DcAbhBuIG44EBoIEB
3190 A2QAO1tPcGVuIFJlY2VudNIADgA+AGkG24A0oQVIgQFQXxAWX05TUmVjZW50RG9jdW1lbnRzTWVuddoA
3191 q4EB9IEBrFlBTWFpbk1lbnXSAA4APgBpBueANKcGewZeBn0GnwZhBm4GWYEBrYEBv4EBy4EB4IEB5oEB
3191 Dga5A14DXwNgA2EDYgNjA2QBoANlBVAFUwNnA2gDaQNqA2sDpwbmgLmBAVGBAaWAsoCzgLeAxIEBqdoA
3192 6oEB8NoADgauA14DXwNgA2EDYgNjA2QBoANmA+oD7QNoBCcDagNrA2wGVAb3gLmA2oEBroDxgLOAt4EB
3192 Dga5A14DXwNgA2EDYgNjA2QBoANlA5UDmANnA2gDaQNqA2sDzQbvgLmAvoEBq4CygLOAt4DQgQGsXxAU
3193 qoEBr18QD0lQeXRob24xU2FuZGJveNIADgA+AGkG+4A0qwSKBoMGmwZqBmkGjgS3A+EEbgZyBO2BARCB
3193 U3BlbGxpbmcgYW5kIEdyYW1tYXLSAA4APgBpBvOANKQEqAONA/oEFYEBG4C9gOCA6doADga5A14DXwNg
3194 AbGBAbKBAbWBAbaBAbyBAR+A2YEBB4EBvYEBMdoADgNeA18HCANgBwkDYQNiA2MDZANmBCcDaAB6BCcA
3194 A2EDYgNjA2QBoANlA80D0ANnA2gDaQNqA2sGUwcAgLmA0IEBr4CygLOAt4EBnoEBsFRFZGl00gAOAD4A
3195 egNqA2sDbAPqXU5TSXNTZXBhcmF0b3JcTlNJc0Rpc2FibGVkgLmA8QmA8QmAs4C3gNrYAA4DXgNfA2AD
3195 aQcEgDStBJoDxQZSBbwE1gUmBVoEBwaeBosGTwZUBqCBARaAz4EBsoEBdIEBK4EBRIEBVYDkgQGzgQG0
3196 YQNiA2MDZANmBxQDaAcVA2oDawNsA+qAuYEBs4EBtICzgLeA2mwAUAByAGUAZgBlAHIAZQBuAGMAZQBz
3196 gQGqgQG/gQHD2gAOA14DXwauA2AGrwNhA2IDYwNkA2UDaANnAHoDaAB6A2kDagNrA82AuYCyCYCyCYCz
3197 ICZRLNoADgNeA18HCANgBwkDYQNiA2MDZANmBCcDaAB6BCcAegNqA2sDbAPqgLmA8QmA8QmAs4C3gNra
3197 gLeA0NoADgNeA18GrgNgBq8DYQNiA2MDZANlA2gDZwB6A2gAegNpA2oDawPNgLmAsgmAsgmAs4C3gNDa
3198 AA4GrgNeA18DYANhA2IDYwNkAaADZgaoBycDaAQnA2oDawNsA+oHLIC5gQG5gQG3gPGAs4C3gNqBAbhY
3198 AA4GuQNeA18DYANhA2IDYwNkAaADZQTsBO8DZwNoA2kDagNrA80HLIC5gQExgQG1gLKAs4C3gNCBAbZU
3199 U2VydmljZXPUAA4DXgHVA28DcAcnBzEHMoEBoIEBt4EBu4EButIADgA+AGkHNYA0oF8QD19OU1NlcnZp
3199 RmluZNIADgA+AGkHMIA0pQTkBn4GqgaGBTqBATCBAbiBAbqBAbyBAUvZAA4DXgNfA2ADYQNiA2MDZAO0
3200 Y2VzTWVuddoADgNeA18HCANgBwkDYQNiA2MDZANmBCcDaAB6BCcAegNqA2sDbAPqgLmA8QmA8QmAs4C3
3200 A2UHOANnBGYDaQNqA2sE7ABVgLmBAbmBAQSAs4C3gQExWUZpbmQgTmV4dNkADgNeA18DYANhA2IDYwNk
3201 gNraAA4DXgNfBwgDYAcJA2EDYgNjA2QDZgQnA2gAegQnAHoDagNrA2wD6oC5gPEJgPEJgLOAt4DaXF9O
3201 A7QDZQdAA7cDuANpA2oDawTsAViAuYEBu4DMgLOAt4EBMV1GaW5kIFByZXZpb3Vz2QAOA14DXwNgA2ED
3202 U0FwcGxlTWVuddoADgauA14DXwNgA2EDYgNjA2QBoANmA7YDuQNoBCcDagNrA2wGVAdSgLmAyYEBwIDx
3202 YgNjA2QDtANlB0gDZwdJA2kDagNrBOwHTYC5gQG9gQG+gLOAt4EBMRAHXxAWVXNlIFNlbGVjdGlvbiBm
3203 gLOAt4EBqoEBwVRGaWxl0gAOAD4AaQdWgDSrBlcGcAZLBqwEewOuBN8FvgapBaAE0YEBw4EBxoEBoYEB
3203 b3IgRmluZFFl2gAOBrkDXgNfA2ADYQNiA2MDZAGgA2UDuwO+A2cDaANpA2oDawPNB1iAuYDKgQHAgLKA
3204 yYEBC4DIgQEsgQF2gQHKgQFsgQEn2AAOA14DXwNgA2EDYgNjA2QDZgdkA2gHZQNqA2sDbAO2gLmBAcSB
3204 s4C3gNCBAcFdU3Vic3RpdHV0aW9uc9IADgA+AGkHXIA0owWhBGEDsYEBa4EBAoDJ2gAOBrkDXgNfA2AD
3205 AcWAs4C3gMlTTmV3UW7YAA4DXgNfA2ADYQNiA2MDZANmB20DaAduA2oDawNsA7aAuYEBx4EByICzgLeA
3205 YQNiA2MDZAGgA2UD3wPiA2cDaANpA2oDawPNB2iAuYDWgQHEgLKAs4C3gNCBAcVWU3BlZWNo0gAOAD4A
3206 yWUATwBwAGUAbiAmUW/aAA4DXgNfBwgDYAcJA2EDYgNjA2QDZgQnA2gAegQnAHoDagNrA2wDtoC5gPEJ
3206 aQdsgDSiA9cE9oDVgQE2WUFNYWluTWVuddIADgA+AGkHcoA0pwaHBpYGUAZKBokGdAabgQHJgQHagQGu
3207 gPEJgLOAt4DJ2gAOA14DXwcIA2AHCQNhA2IDYwNkA2YEJwNoAHoEJwB6A2oDawNsA7aAuYDxCYDxCYCz
3207 gQGdgQHmgQHqgQHw2gAOBrkDXgNfA2ADYQNiA2MDZAGgA2UDbANwA2cDaANpA2oDawZTB4KAuYCwgQHK
3208 gLeAydoADgauA14DXwNgA2EDYgNjA2QBoANmA8gDywNoBCcDagNrA2wGVAeOgLmAz4EBzIDxgLOAt4EB
3208 gLKAs4C3gQGegQHLXxAPSVB5dGhvbjFTYW5kYm940gAOAD4AaQeGgDSrBQQGlAaCBqUGpwZGBYcEyANb
3209 qoEBzVRFZGl00gAOAD4AaQeSgDStA8AD0gZfBYYFIAQHBEEEqQZ/BogGmgZQBkeAzoDUgQHPgQFjgQFD
3209 BmMEeYEBOoEBzYEBzoEB0YEB0oEBnIEBY4EBJoCvgQHYgQEL2gAOA14DXwauA2AGrwNhA2IDYwNkA2UD
3210 gOWA+YEBGoEB0IEB0YEB3IEBpoEBnNoADgNeA18HCANgBwkDYQNiA2MDZANmBCcDaAB6BCcAegNqA2sD
3210 aANnAHoDaAB6A2kDagNrA2yAuYCyCYCyCYCzgLeAsNgADgNeA18DYANhA2IDYwNkA2UHnQNnB54DaQNq
3211 bAPIgLmA8QmA8QmAs4C3gM/aAA4DXgNfBwgDYAcJA2EDYgNjA2QDZgQnA2gAegQnAHoDagNrA2wDyIC5
3211 A2sDbIC5gQHPgQHQgLOAt4CwbABQAHIAZQBmAGUAcgBlAG4AYwBlAHMgJlEs2gAOA14DXwauA2AGrwNh
3212 gPEJgPEJgLOAt4DP2gAOBq4DXgNfA2ADYQNiA2MDZAGgA2YDlgOZA2gEJwNqA2sDbAPIB7qAuYC+gQHS
3212 A2IDYwNkA2UDaANnAHoDaAB6A2kDagNrA2yAuYCyCYCyCYCzgLeAsNoADga5A14DXwNgA2EDYgNjA2QB
3213 gPGAs4C3gM+BAdNURmluZNIADgA+AGkHvoA0pQQVBpMGjQZcA46A6oEB1YEB14EB2YC92QAOA14DXwNg
3213 oANlBm4HsANnA2gDaQNqA2sDbAe1gLmBAdWBAdOAsoCzgLeAsIEB1FhTZXJ2aWNlc9QADgNeAdUDbgNv
3214 A2EDYgNjA2QDZQNmB8YDaANpA2oDawNsA5YAVYC5gQHWgLKAs4C3gL5ZRmluZCBOZXh02QAOA14DXwNg
3214 B7AHuge7gQGkgQHTgQHXgQHW0gAOAD4AaQe+gDSgXxAPX05TU2VydmljZXNNZW512gAOA14DXwauA2AG
3215 A2EDYgNjA2QDZQNmB84D1wUAA2oDawNsA5YBWIC5gQHYgQE4gLOAt4C+XUZpbmQgUHJldmlvdXPZAA4D
3215 rwNhA2IDYwNkA2UDaANnAHoDaAB6A2kDagNrA2yAuYCyCYCyCYCzgLeAsFxfTlNBcHBsZU1lbnXaAA4G
3216 XgNfA2ADYQNiA2MDZANlA2YH1gNoB9cDagNrA2wDlgfbgLmBAdqBAduAs4C3gL4QB18QFlVzZSBTZWxl
3216 uQNeA18DYANhA2IDYwNkAaADZQOnA6oDZwNoA2kDagNrBlMH0oC5gMSBAduAsoCzgLeBAZ6BAdxURmls
3217 Y3Rpb24gZm9yIEZpbmRRZdoADgauA14DXwNgA2EDYgNjA2QBoANmBJ8EogNoBCcDagNrA2wDyAfmgLmB
3217 ZdIADgA+AGkH1oA0qwaIBoAGTQarBcoEQgWuBWcGeAURA5+BAd6BAeGBAaiBAeSBAXmA94EBb4EBWYEB
3218 ARWBAd2A8YCzgLeAz4EB3l8QFFNwZWxsaW5nIGFuZCBHcmFtbWFy0gAOAD4AaQfqgDSkBbAElwTEBcuB
3218 5YEBPoDD2AAOA14DXwNgA2EDYgNjA2QDZQfkA2cH5QNpA2oDawOngLmBAd+BAeCAs4C3gMRTTmV3UW7Y
3219 AXGBARSBASOBAXraAA4GrgNeA18DYANhA2IDYwNkAaADZgP9BAADaAQnA2oDawNsBlQH94C5gOCBAeGA
3219 AA4DXgNfA2ADYQNiA2MDZANlB+0DZwfuA2kDagNrA6eAuYEB4oEB44CzgLeAxGUATwBwAGUAbiAmUW/a
3220 8YCzgLeBAaqBAeJWRm9ybWF00gAOAD4AaQf7gDSiBmID9YEB5IDf2AAOA14DXwNgA2EDYgNjA2QDZggA
3220 AA4DXgNfBq4DYAavA2EDYgNjA2QDZQNoA2cAegNoAHoDaQNqA2sDp4C5gLIJgLIJgLOAt4DE2gAOA14D
3221 A2gFMwNqA2sDbAP9gLmBAeWBAUuAs4C3gOBaU2hvdyBGb250c9oADgauA14DXwNgA2EDYgNjA2QBoANm
3221 XwauA2AGrwNhA2IDYwNkA2UDaANnAHoDaAB6A2kDagNrA6eAuYCyCYCyCYCzgLeAxNoADga5A14DXwNg
3222 BTYFOQNoBCcDagNrA2wGVAgOgLmBAUmBAeeA8YCzgLeBAaqBAehUVmlld9IADgA+AGkIEoA0ogUuBXmB
3222 A2EDYgNjA2QBoANlBCoELQNnA2gDaQNqA2sGUwgOgLmA7oEB54CygLOAt4EBnoEB6FRWaWV30gAOAD4A
3223 AUiBAV/aAA4GrgNeA18DYANhA2IDYwNkAaADZgRWBFkDaAQnA2oDawNsBlQIHYC5gP6BAeuA8YCzgLeB
3223 aQgSgDSiBDMEIoDygO3aAA4GuQNeA18DYANhA2IDYwNkAaADZQSPBJIDZwNoA2kDagNrBlMIHYC5gQER
3224 AaqBAexWV2luZG930gAOAD4AaQghgDSkBE4FEwaABGGA/YEBP4EB7oEBA9oADgNeA18HCANgBwkDYQNi
3224 gQHrgLKAs4C3gQGegQHsVldpbmRvd9IADgA+AGkIIYA0pASHBZQGeQV6gQEQgQFngQHugQFf2gAOA14D
3225 A2MDZANmBCcDaAB6BCcAegNqA2sDbARWgLmA8QmA8QmAs4C3gP5eX05TV2luZG93c01lbnXaAA4GrgNe
3225 XwauA2AGrwNhA2IDYwNkA2UDaANnAHoDaAB6A2kDagNrBI+AuYCyCYCyCYCzgLeBARFeX05TV2luZG93
3226 A18DYANhA2IDYwNkAaADZgVdBWADaAQnA2oDawNsBlQIOIC5gQFVgQHxgPGAs4C3gQGqgQHyVEhlbHDS
3226 c01lbnXaAA4GuQNeA18DYANhA2IDYwNkAaADZQPwA/MDZwNoA2kDagNrBlMIOIC5gNuBAfGAsoCzgLeB
3227 AA4APgBpCDyANKEFVYEBVFtfTlNNYWluTWVuddIADgA+BgAIQYEBh68QZwNtA8gDtgIKAioDtgPqA8gD
3227 AZ6BAfJUSGVscNIADgA+AGkIPIA0oQPogNpbX05TTWFpbk1lbnXSAA4APgYACEGBAYevEGcDbABNBOwD
3228 yAZLA8gDtgSfBJ8AHwZuBTYDtgPIBlQAfwZQA5YD6gZUA8gD6gZUA/0AQQAfAE0FXQO2A7YD6gPqAKMA
3228 zQZTAnYGTQOnAnUDzQZTA80DzQAfA80DpwBBAGsGmwZUA80D3wO7A5UDlQB/AGsGhwPNA2wGlgAfAgoD
3229 HwRWBlQDyAO2AE0D6gOWA/0CCgZ9AGsGewIqBCoGVASfBlQDlgPIBFYFNgIKA+oGmgIKBFYDyAPIA8gA
3229 bANsA2wGoAPNBI8AHwanAB8D8ACjAB8DpwZTBosDlQVQA6cEjwO7A6cGTwZQBOwGiQOnAB8DbAOnBCoC
3230 owO2A+oDlgPqBp8CdgO2AGsDlgPqBFYEnwB+BlkDbQPIA+oDbQZhBogGVAVvBkcDyAAfAB8CdQAfAKMG
3230 CgTsBlMDpwZTAKMDzQQqA2wDlQPfAE0DbAOnAgoDbAPNBlMCKgCjBOwGSgZTA80CKgPNA6cDzQSPA7sE
3231 aQO2BCoGXgO2gLCAz4DJgG6AcoDJgNqAz4DPgQGhgM+AyYEBFYEBFYACgQHqgQFJgMmAz4EBqoBqgQGm
3231 vgB+A2wCCgNsBL4EjwTsA6cGdICwgAuBATGA0IEBnoCLgQGogMSAfIDQgQGegNCA0IACgNCAxIAHgA6B
3232 gL6A2oEBqoDPgNqBAaqA4IAHgAKAC4EBVYDJgMmA2oDagBSAAoD+gQGqgM+AyYALgNqAvoDggG6BAcuA
3232 AfCBAb+A0IDWgMqAvoC+gGqADoEByYDQgLCBAdqAAoBugLCAsICwgQHDgNCBARGAAoEB0oACgNuAFIAC
3233 DoEBrYBygO+BAaqBARWBAaqAvoDPgP6BAUmAboDagQHcgG6A/oDPgM+Az4AUgMmA2oC+gNqBAeCAi4DJ
3233 gMSBAZ6BAbSAvoEBUYDEgQERgMqAxIEBqoEBroEBMYEB5oDEgAKAsIDEgO6AboEBMYEBnoDEgQGegBSA
3234 gA6AvoDagP6BARWAEIEB8ICwgM+A2oCwgQHmgQHRgQGqgQFbgQGcgM+AAoACgHyAAoAUgQG2gMmA74EB
3234 0IDugLCAvoDWgAuAsIDEgG6AsIDQgQGegHKAFIEBMYEBnYEBnoDQgHKA0IDEgNCBARGAyoEBIYAQgLCA
3235 v4DJ0gAOAD4GAAirgQGHrxBoA1sGRwTfAkQCdQZLBIoEQQUgBW8E0QZQBbAFywUuBlQEVgZXBYYGWQIK
3235 boCwgQEhgQERgQExgMSBAerSAA4APgYACKuBAYevEGgAawZGBOQFWgZKAsAFUAZNAoMGTwZQBNYGUgZT
3236 A20GXATtBl4GXwS3BmEGYgBNBdsAawVVBHsFoAZpBmoAyAUKBGEGbgZwBKkAbAZyBBUD9QIaA8gD6gB/
3236 BlQATQRCAH4D8AO7BAcE9gOxBBUCCgP6AH8DbABBA6cEmgZjAioEyANbBHkD3wUmBXoEUgZuBG8D6ADI
3237 BCICdgZ7BJcGfQOOBn8GgAV5AioGgwSfAhAETgPSBogEBwCqBb4D4QaNBo4D/QLAA64AfgaTBG4FEwTE
3237 Bd4AHwWuBnQGeATsA40FSAZ5BGEDnwOVA80EKgZ+BoAEUQaCBREEMwIaBoYGhwaJBogAqgaLBCIFBABs
3238 AKMFXQT7AB8GmgabBTYDoAafA5YFZwQqBDQDwAVBAoMAQQCxBqkGqAVIA7YGrICvgQGcgQEsgHSAfIEB
3238 BKgD1wWHBcoCRAaUA8UGlgJ2ALEEvgU6BpsFvAJ1Bp4FZwagBIcFoQS2AKMGpQIQBqcGqAWUBqoGqwSP
3239 oYEBEID5gQFDgQFbgQEngQGmgQFxgQF6gQFIgQGqgP6BAcOBAWOBAfCAboCwgQHZgQExgQG/gQHPgQEf
3239 gA6BAZyBATCBAVWBAZ2AjoEBUYEBqICDgQGqgQGugQErgQGygQGegQG/gAuA94AQgNuAyoDkgQE2gMmA
3240 gQHmgQHkgAuBAX6ADoEBVIEBC4EBbIEBtoEBtYAYgQE7gQEDgQHqgQHGgQEagKOBAb2A6oDfgJSAz4Da
3240 6YBugOCAaoCwgAeAxIEBFoEB2IBygQEmgK+BAQuA1oEBRIEBX4D8gQHVgQEHgNqAGIEBfoACgQFvgQHq
3241 gGqA7oCLgQGtgQEUgQHLgL2BAdCBAe6BAV+AcoEBsYEBFYCWgP2A1IEB0YDlgFiBAXaA2YEB14EBvIDg
3241 gQHlgQExgL2BAVCBAe6BAQKAw4C+gNCA7oEBuIEB4YD9gQHOgQE+gPKAlIEBvIEByYEB5oEB3oBYgQG0
3242 gI6AyIAQgQHVgQEHgQE/gQEjgBSBAVWBATaAAoEB3IEBsoEBSYDDgQHggL6BAVqA74D0gM6BAU6Ag4AH
3242 gO2BATqAo4EBG4DVgQFjgQF5gHSBAc2Az4EB2oCLgFSBASGBAUuBAfCBAXSAfIEBs4EBWYEBw4EBEIEB
3243 gFSBAcqBAbmBAVCAyYEBydIADgA+BgAJFoEBh68QaAkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJ
3243 a4EBIIAUgQHRgJaBAdKBAaKBAWeBAbqBAeSBARHSAA4APgYACRaBAYevEGgJFwkYCRkJGgkbCRwJHQke
3244 JQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwFDgk+CT8JQAlBCUIJ
3244 CR8JIAkhCSIJIwkkCSUJJgknCSgJKQkqCSsJLAktCS4JLwkwCTEJMgkzCTQJNQk2CTcJOAk5CToJOwk8
3245 QwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJ
3245 CT0JPgk/CUAJQQlCCUMJRAlFCUYJRwlICUkJSglLCUwJTQlOCU8JUAlRCVIEWQlUCVUJVglXCVgJWQla
3246 YQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX6B
3246 CVsJXAldCV4JXwlgCWEJYgljCWQJZQlmCWcJaAlpCWoJawlsCW0JbglvCXAJcQlyCXMJdAl1CXYJdwl4
3247 AfiBAfmBAfqBAfuBAfyBAf2BAf6BAf+BAgCBAgGBAgKBAgOBAgSBAgWBAgaBAgeBAgiBAgmBAgqBAguB
3247 CXkJegl7CXwJfQl+gQH4gQH5gQH6gQH7gQH8gQH9gQH+gQH/gQIAgQIBgQICgQIDgQIEgQIFgQIGgQIH
3248 AgyBAg2BAg6BAg+BAhCBAhGBAhKBAhOBAhSBAhWBAhaBAheBAhiBAhmBAhqBAhuBAhyBAh2BATyBAh6B
3248 gQIIgQIJgQIKgQILgQIMgQINgQIOgQIPgQIQgQIRgQISgQITgQIUgQIVgQIWgQIXgQIYgQIZgQIagQIb
3249 Ah+BAiCBAiGBAiKBAiOBAiSBAiWBAiaBAieBAiiBAimBAiqBAiuBAiyBAi2BAi6BAi+BAjCBAjGBAjKB
3249 gQIcgQIdgQIegQIfgQIggQIhgQIigQIjgQIkgQIlgQImgQIngQIogQIpgQIqgQIrgQIsgQItgQIugQIv
3250 AjOBAjSBAjWBAjaBAjeBAjiBAjmBAjqBAjuBAjyBAj2BAj6BAj+BAkCBAkGBAkKBAkOBAkSBAkWBAkaB
3250 gQIwgQIxgQIygQIzgP6BAjSBAjWBAjaBAjeBAjiBAjmBAjqBAjuBAjyBAj2BAj6BAj+BAkCBAkGBAkKB
3251 AkeBAkiBAkmBAkqBAkuBAkyBAk2BAk6BAk+BAlCBAlGBAlKBAlOBAlSBAlWBAlaBAleBAliBAlmBAlqB
3251 AkOBAkSBAkWBAkaBAkeBAkiBAkmBAkqBAkuBAkyBAk2BAk6BAk+BAlCBAlGBAlKBAlOBAlSBAlWBAlaB
3252 AluBAlyBAl2BAl5fEBhNZW51IEl0ZW0gKFNtYXJ0IFF1b3RlcylfEBJNZW51IEl0ZW0gKFNwZWVjaClR
3252 AleBAliBAlmBAlqBAluBAlyBAl2BAl5aU3BsaXQgVmlld1tTZXBhcmF0b3ItM28QEQBNAGUAbgB1ACAA
3253 OF8QEVRhYmxlIEhlYWRlciBWaWV3XxAXVGFibGUgQ29sdW1uIChWYXJpYWJsZSlfEBdNZW51IEl0ZW0g
3253 SQB0AGUAbQAgACgARgBpAG4AZCAmAClfEBJNZW51IEl0ZW0gKERlbGV0ZSlfEBJNZW51IEl0ZW0gKEZv
3254 KE9wZW4gUmVjZW50KV8QIU1lbnUgSXRlbSAoQWJvdXQgSVB5dGhvbjFTYW5kYm94KV8QEk1lbnUgSXRl
3254 cm1hdClfEBtUZXh0IEZpZWxkIENlbGwgKFRleHQgQ2VsbClfEBJNZW51IChPcGVuIFJlY2VudClfEBdN
3255 bSAoRGVsZXRlKV8QEE1lbnUgSXRlbSAoQ29weSlfEBJNZW51IChPcGVuIFJlY2VudClRNl8QGU1lbnUg
3255 ZW51IEl0ZW0gKE9wZW4gUmVjZW50KV8QHVRleHQgRmllbGQgQ2VsbCAoVGV4dCBDZWxsKS0xXxAgTWVu
3256 SXRlbSAoU3Vic3RpdHV0aW9ucylvEBoATQBlAG4AdQAgAEkAdABlAG0AIAAoAFMAaABvAHcAIABTAHAA
3256 dSBJdGVtIChTcGVsbGluZyBhbmQgR3JhbW1hcilfEBBNZW51IEl0ZW0gKEVkaXQpXxAQTWVudSBJdGVt
3257 ZQBsAGwAaQBuAGcgJgApXxAnTWVudSBJdGVtIChDaGVjayBHcmFtbWFyIFdpdGggU3BlbGxpbmcpXxAY
3257 IChDb3B5KVlTZXBhcmF0b3JYTWFpbk1lbnVfEBlNZW51IEl0ZW0gKFN1YnN0aXR1dGlvbnMpXENvbnRl
3258 TWVudSBJdGVtIChTaG93IFRvb2xiYXIpWE1haW5NZW51XU1lbnUgKFdpbmRvdylROV8QD01lbnUgSXRl
3258 bnQgVmlld1EzXUJveCAoQ29uc29sZSlRMl8QFE1lbnUgKFN1YnN0aXR1dGlvbnMpXxAWTWVudSBJdGVt
3259 bSAoQ3V0KVExW1Njcm9sbCBWaWV3XxAUTWVudSAoU3Vic3RpdHV0aW9ucylfECJNZW51IEl0ZW0gKFVz
3259 IChTZWxlY3QgQWxsKV8QGU1lbnUgSXRlbSAoU3RvcCBTcGVha2luZylfEBdNZW51IEl0ZW0gKFNtYXJ0
3260 ZSBTZWxlY3Rpb24gZm9yIEZpbmQpVDExMTFfEBBNZW51IEl0ZW0gKEZpbGUpW1NlcGFyYXRvci01XxAg
3260 IExpbmtzKV8QJ01lbnUgSXRlbSAoQ2hlY2sgR3JhbW1hciBXaXRoIFNwZWxsaW5nKV1TY3JvbGwgVmll
3261 TWVudSBJdGVtIChIaWRlIElQeXRob24xU2FuZGJveClfEBBNZW51IEl0ZW0gKFZpZXcpXxAWTWVudSBJ
3261 dy0xXxAnTWVudSBJdGVtIChDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmcpXxAPQm94IChXb3Jrc3Bh
3262 dGVtIChTaG93IEZvbnRzKVxDb250ZW50IFZpZXdfEBlVc2VyIE5hbWVzcGFjZSBDb250cm9sbGVyWlNw
3262 Y2UpXxAWTWVudSAoSVB5dGhvbjFTYW5kYm94KV8QGVdpbmRvdyAoSVB5dGhvbjEgKENvY29hKSlbTWVu
3263 bGl0IFZpZXdfECBNZW51IEl0ZW0gKElQeXRob24xU2FuZGJveCBIZWxwKVMxLTFRNV8QFE1lbnUgSXRl
3263 dSAoRmlsZSlfEBBNZW51IEl0ZW0gKFVuZG8pW1NlcGFyYXRvci00XxAcVGFibGUgVmlldyAoVmFyaWFi
3264 bSAoU2VydmljZXMpW1NlcGFyYXRvci0xWVRleHQgVmlld18QHk1lbnUgSXRlbSAoQnJpbmcgQWxsIHRv
3264 bGUsIFZhbHVlKV8QF01lbnUgSXRlbSAoSGlkZSBPdGhlcnMpXxAUTWVudSBJdGVtIChTaG93IEFsbClU
3265 IEZyb250KV8QEk1lbnUgSXRlbSAoV2luZG93KW8QEQBNAGUAbgB1ACAASQB0AGUAbQAgACgATwBwAGUA
3265 MTExMV1NZW51IChTcGVlY2gpXxARTWVudSBJdGVtIChQYXN0ZSlfEB5NZW51IEl0ZW0gKEJyaW5nIEFs
3266 biAmAClfEBZNZW51IEl0ZW0gKFNlbGVjdCBBbGwpXEFzeW5jIEFycm93c1tTZXBhcmF0b3ItMm8QEQBN
3266 bCB0byBGcm9udClbQXBwbGljYXRpb25fEA9NZW51IChTZXJ2aWNlcylfEBdQeXRob24gQ29jb2EgQ29u
3267 AGUAbgB1ACAASQB0AGUAbQAgACgARgBpAG4AZCAmAClfEBdNZW51IEl0ZW0gKFNob3cgQ29sb3JzKV8Q
3267 dHJvbGxlcl8QIE1lbnUgSXRlbSAoSVB5dGhvbjFTYW5kYm94IEhlbHApWVRleHQgVmlld18QGVVzZXIg
3268 EVZlcnRpY2FsIFNjcm9sbGVyW01lbnUgKEVkaXQpXxAWTWVudSAoSVB5dGhvbjFTYW5kYm94KV8QD0Jv
3268 TmFtZXNwYWNlIENvbnRyb2xsZXJcRmlsZSdzIE93bmVyUThfEBJNZW51IEl0ZW0gKFdpbmRvdylTMi0x
3269 eCAoV29ya3NwYWNlKV8QGU1lbnUgSXRlbSAoU3RvcCBTcGVha2luZylfEBRUYWJsZSBDb2x1bW4gKFZh
3269 W01lbnUgKEZpbmQpXxAaTWVudSBJdGVtIChDaGVjayBTcGVsbGluZylfEBZNZW51IEl0ZW0gKENsZWFy
3270 bHVlKV8QG01lbnUgSXRlbSAoSVB5dGhvbjFTYW5kYm94KV8QGk1lbnUgSXRlbSAoQ2hlY2sgU3BlbGxp
3270 IE1lbnUpW1NlcGFyYXRvci0yXxAYTWVudSBJdGVtIChTbWFydCBRdW90ZXMpUTZfEBtNZW51IChTcGVs
3271 bmcpXxAQTWVudSBJdGVtIChFZGl0KV8QHU1lbnUgSXRlbSAoSnVtcCB0byBTZWxlY3Rpb24pW1NlcGFy
3271 bGluZyBhbmQgR3JhbW1hcilbTWVudSAoRWRpdClbTWVudSAoVmlldylfEBVNZW51IEl0ZW0gKEZpbmQg
3272 YXRvci02WVNlcGFyYXRvcm8QHgBNAGUAbgB1ACAASQB0AGUAbQAgACgAQwB1AHMAdABvAG0AaQB6AGUA
3272 TmV4dClvEBEATQBlAG4AdQAgAEkAdABlAG0AIAAoAE8AcABlAG4gJgApUzEyMVE1XxAYTWVudSBJdGVt
3273 IABUAG8AbwBsAGIAYQByICYAKV8QHFRhYmxlIFZpZXcgKFZhcmlhYmxlLCBWYWx1ZSlbU2VwYXJhdG9y
3273 IChTaG93IFRvb2xiYXIpXxATVmVydGljYWwgU2Nyb2xsZXItMV8QIk1lbnUgSXRlbSAoVXNlIFNlbGVj
3274 LTNfEBtNZW51IChTcGVsbGluZyBhbmQgR3JhbW1hcilfEBNIb3Jpem9udGFsIFNjcm9sbGVyXxAUTWVu
3274 dGlvbiBmb3IgRmluZClfEBtNZW51IEl0ZW0gKElQeXRob24xU2FuZGJveClfEBBNZW51IEl0ZW0gKFZp
3275 dSBJdGVtIChNaW5pbWl6ZSlfEBBNZW51IEl0ZW0gKFJlZG8pXxAQTWVudSBJdGVtIChGaW5kKV8QEU1l
3275 ZXcpUTlfEBNIb3Jpem9udGFsIFNjcm9sbGVyXxAQTWVudSBJdGVtIChGaW5kKW8QHgBNAGUAbgB1ACAA
3276 bnUgSXRlbSAoUGFzdGUpXxAVSG9yaXpvbnRhbCBTY3JvbGxlci0xUjEwXxAXTWVudSBJdGVtIChIaWRl
3276 SQB0AGUAbQAgACgAQwB1AHMAdABvAG0AaQB6AGUAIABUAG8AbwBsAGIAYQByICYAKV8QIU1lbnUgSXRl
3277 IE90aGVycylfEBlNZW51IEl0ZW0gKEZpbmQgUHJldmlvdXMpW1NlcGFyYXRvci00XU1lbnUgKEZvcm1h
3277 bSAoQWJvdXQgSVB5dGhvbjFTYW5kYm94KVxBc3luYyBBcnJvd3NvEBoATQBlAG4AdQAgAEkAdABlAG0A
3278 dClfEB1UZXh0IEZpZWxkIENlbGwgKFRleHQgQ2VsbCktMVEzXUJveCAoQ29uc29sZSlfEBVNZW51IEl0
3278 IAAoAFMAaABvAHcAIABTAHAAZQBsAGwAaQBuAGcgJgApXxAaTWVudSBJdGVtIChTdGFydCBTcGVha2lu
3279 ZW0gKEZpbmQgTmV4dClfEBRNZW51IEl0ZW0gKFNob3cgQWxsKV8QEE1lbnUgSXRlbSAoWm9vbSlfECdN
3279 ZylfECBNZW51IEl0ZW0gKEhpZGUgSVB5dGhvbjFTYW5kYm94KVMxLTFfEBFUYWJsZSBIZWFkZXIgVmll
3280 ZW51IEl0ZW0gKENoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyldU2Nyb2xsIFZpZXctMVEyXxAXTWVu
3280 d1tTZXBhcmF0b3ItNV8QEE1lbnUgSXRlbSAoUmVkbylfEBBNZW51IEl0ZW0gKEZpbGUpXxAUVGFibGUg
3281 dSBJdGVtIChTbWFydCBMaW5rcylcRmlsZSdzIE93bmVyXxAgTWVudSBJdGVtIChTcGVsbGluZyBhbmQg
3281 Q29sdW1uIChWYWx1ZSlfEBFWZXJ0aWNhbCBTY3JvbGxlcl1NZW51IChGb3JtYXQpXxAdTWVudSBJdGVt
3282 R3JhbW1hcilTMTIxW01lbnUgKFZpZXcpXxAcTWVudSBJdGVtIChTbWFydCBDb3B5L1Bhc3RlKV8QEk1l
3282 IChKdW1wIHRvIFNlbGVjdGlvbilRMV8QD01lbnUgSXRlbSAoQ3V0KV8QF1RhYmxlIENvbHVtbiAoVmFy
3283 bnUgSXRlbSAoRm9ybWF0KVtNZW51IChGaW5kKV8QFk1lbnUgSXRlbSAoQ2xlYXIgTWVudSldTWVudSAo
3283 aWFibGUpW1NlcGFyYXRvci0xUjEwXxASTWVudSBJdGVtIChTcGVlY2gpXxAUTWVudSBJdGVtIChNaW5p
3284 U3BlZWNoKV8QF1B5dGhvbiBDb2NvYSBDb250cm9sbGVyXxAQTWVudSBJdGVtIChVbmRvKVtBcHBsaWNh
3284 bWl6ZSlfEBxNZW51IEl0ZW0gKFNtYXJ0IENvcHkvUGFzdGUpXxAXTWVudSBJdGVtIChTaG93IENvbG9y
3285 dGlvbl8QG1RleHQgRmllbGQgQ2VsbCAoVGV4dCBDZWxsKV8QGVdpbmRvdyAoSVB5dGhvbjEgKENvY29h
3285 cylbU2Nyb2xsIFZpZXdbU2VwYXJhdG9yLTZfEBVIb3Jpem9udGFsIFNjcm9sbGVyLTFfEBRNZW51IEl0
3286 KSlfEBNWZXJ0aWNhbCBTY3JvbGxlci0xUzItMV8QD01lbnUgKFNlcnZpY2VzKV8QGk1lbnUgSXRlbSAo
3286 ZW0gKFNlcnZpY2VzKV8QFk1lbnUgSXRlbSAoU2hvdyBGb250cylfEBBNZW51IEl0ZW0gKFpvb20pXxAZ
3287 U3RhcnQgU3BlYWtpbmcpW01lbnUgKEZpbGUpUTfSAA4APgYACeiBAYeg0gAOAD4GAAnrgQGHoNIADgA+
3287 TWVudSBJdGVtIChGaW5kIFByZXZpb3VzKVE3XU1lbnUgKFdpbmRvdynSAA4APgYACeiBAYeg0gAOAD4G
3288 BgAJ7oEBh68QlwNUA1sGRwNBA0kE3wJEAnUGSwSKBEEFIAVvA0IGUATRA0QDMgNOBbADMQNRA0sFywM+
3288 AAnrgQGHoNIADgA+BgAJ7oEBh68QlwZGAGsDUATkBVoGSgM8Az8CwAVQBk0DLQNHA1UCgwNEBk8GUAMr
3289 AzoGVARWBS4GVwNNBYYGWQMwAgoDbQZcBO0GXgZfAzkDOAS3AywDTAZhBmIDLwBNBdsDQAM0AGsFVQR7
3289 A08E1gZSAygDSAZTBlQEQgBNAH4D8AO7BAcE9gOxA0kEFQP6AgoAfwNsBJoGYwOnAEECKgTIA0EDWwNG
3290 BaAGaQZqAMgDKwUKBGEGbgSpBnAAbANHBnIEFQP1AhoDyAB/A+oCdgQiAz8GewSXBn0DjgZ/A0oDVgaA
3290 BHkD3wNKBSYFegRSAzQDTgNUA1EDMgM3A00GbgRvA+gAyAXeAB8FrgZ0BOwDjQVIBngDMQM6BnkEYQOf
3291 A1UFeQIqA0MGgwSfAhADKgROA9IGiAQHAKoDOwNIBb4D4QaNAzYDPAaOA0UD/QMoAsADrgMzAH4GkwRu
3291 AzsDlQPNAzkGfgQqAykGgARRBoIFEQQzAhoDOANFAyoGhgMwBocGiAaJAKoGiwQiAywFBASoA9cAbAWH
3292 BRMExACjA1IDKQVdBPsAHwaaBpsDoAU2A5YGnwMuBWcDUAQqA8AENANGBUEDNQKDA08AQQCxBqgGqQM3
3292 A0wFygM2AkQGlAPFBpYCdgNCAzMDLgCxBToEvgabBbwCdQaeBWcGoAM1Az0EhwNLBaEEtgM+AKMDUgal
3293 Az0DUwMtBUgDtgasgQGQgK+BAZyBATWBAVmBASyAdIB8gQGhgQEQgPmBAUOBAVuBATqBAaaBASeBAUKA
3293 AhADVganBqgDQANDBZQGqgMvA1MGqwSPgQGcgA6BAXOBATCBAVWBAZ2BAR+BAS+AjoEBUYEBqIDUgQFP
3294 7YEBa4EBcYDpgQF5gQFigQF6gQEmgQETgQGqgP6BAUiBAcOBAWmBAWOBAfCA5IBugLCBAdmBATGBAb+B
3294 gQGUgIOBAUOBAaqBAa6AyIEBboEBK4EBsoCugQFUgQGegQG/gPeAC4AQgNuAyoDkgQE2gMmBAViA6YDg
3295 Ac+BAQ+BAQqBAR+AzYEBZ4EB5oEB5IDegAuBAX6BATCA+IAOgQFUgQELgQFsgQG2gQG1gBiAx4EBO4EB
3295 gG6AaoCwgQEWgQHYgMSAB4BygQEmgQE5gK+BAUqBAQuA1oEBXIEBRIEBX4D8gPaBAWqBAZGBAXiA7IEB
3296 A4EB6oEBGoEBxoCjgQFPgQG9gOqA34CUgM+AaoDagIuA7oEBK4EBrYEBFIEBy4C9gQHQgQFegQGXgQHu
3296 BoEBZoEB1YEBB4DagBiBAX6AAoEBb4EB6oEBMYC9gQFQgQHlgOiBARWBAe6BAQKAw4EBGoC+gNCBAQ+B
3297 gQGTgQFfgHKBAT6BAbGBARWAloDCgP2A1IEB0YDlgFiBARmBAVOBAXaA2YEB14EBAoEBHoEBvIEBR4Dg
3297 AbiA7oC8gQHhgP2BAc6BAT6A8oCUgQEKgQFIgMKBAbyA44EByYEB3oEB5oBYgQG0gO2AzoEBOoEBG4DV
3298 gK6AjoDIgPOAEIEB1YEBB4EBP4EBI4AUgQF9gLyBAVWBATaAAoEB3IEBsoDDgQFJgL6BAeCA2IEBWoEB
3298 gKOBAWOBAWKBAXmBAQGAdIEBzYDPgQHagIuBAT2A8YDZgFSBAUuBASGBAfCBAXSAfIEBs4EBWYEBw4D7
3299 dYDvgM6A9IEBTYEBToD8gIOBAXCAB4BUgQG5gQHKgQEGgQEigQGMgNOBAVCAyYEBydIADgA+BgAKiIEB
3299 gQElgQEQgQFegQFrgQEggQEqgBSBAX2BAdGAloEBl4EB0oEBooEBNYEBQoEBZ4EBuoDfgQGNgQHkgQER
3300 h68QlwqJCooKiwqMCo0KjgqPCpAKkQqSCpMKlAqVCpYKlwqYCpkKmgqbCpwKnQqeCp8KoAqhCqIKowqk
3300 0gAOAD4GAAqIgQGHrxCXCokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4K
3301 CqUKpgqnCqgKqQqqCqsKrAqtCq4KrwqwCrEKsgqzCrQKtQq2CrcKuAq5CroKuwq8Cr0Kvgq/CsAKwQrC
3301 nwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwK
3302 CsMKxArFCsYKxwrICskKygrLCswKzQrOCs8K0ArRCtIK0wrUCtUK1grXCtgK2QraCtsK3ArdCt4K3wrg
3302 vQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK
3303 CuEK4grjCuQK5QrmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+
3303 2wrcCt0K3grfCuAK4QriCuMK5ArlCuYK5wroCukK6grrCuwK7QruCu8K8ArxCvIK8wr0CvUK9gr3CvgK
3304 Cv8LAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwsc
3304 +Qr6CvsK/Ar9Cv4K/wsACwELAgsDCwQLBQsGCwcLCAsJCwoLCwsMCw0LDgsPCxALEQsSCxMLFAsVCxYL
3305 Cx0LHgsfgQJjgQJkgQJlgQJmgQJngQJogQJpgQJqgQJrgQJsgQJtgQJugQJvgQJwgQJxgQJygQJzgQJ0
3305 FwsYCxkLGgsbCxwLHQseCx+BAmOBAmSBAmWBAmaBAmeBAmiBAmmBAmqBAmuBAmyBAm2BAm6BAm+BAnCB
3306 gQJ1gQJ2gQJ3gQJ4gQJ5gQJ6gQJ7gQJ8gQJ9gQJ+gQJ/gQKAgQKBgQKCgQKDgQKEgQKFgQKGgQKHgQKI
3306 AnGBAnKBAnOBAnSBAnWBAnaBAneBAniBAnmBAnqBAnuBAnyBAn2BAn6BAn+BAoCBAoGBAoKBAoOBAoSB
3307 gQKJgQKKgQKLgQKMgQKNgQKOgQKPgQKQgQKRgQKSgQKTgQKUgQKVgQKWgQKXgQKYgQKZgQKagQKbgQKc
3307 AoWBAoaBAoeBAoiBAomBAoqBAouBAoyBAo2BAo6BAo+BApCBApGBApKBApOBApSBApWBApaBApeBApiB
3308 gQKdgQKegQKfgQKggQKhgQKigQKjgQKkgQKlgQKmgQKngQKogQKpgQKqgQKrgQKsgQKtgQKugQKvgQKw
3308 ApmBApqBApuBApyBAp2BAp6BAp+BAqCBAqGBAqKBAqOBAqSBAqWBAqaBAqeBAqiBAqmBAqqBAquBAqyB
3309 gQKxgQKygQKzgQK0gQK1gQK2gQK3gQK4gQK5gQK6gQK7gQK8gQK9gQK+gQK/gQLAgQLBgQLCgQLDgQLE
3309 Aq2BAq6BAq+BArCBArGBArKBArOBArSBArWBAraBAreBAriBArmBArqBAruBAryBAr2BAr6BAr+BAsCB
3310 gQLFgQLGgQLHgQLIgQLJgQLKgQLLgQLMgQLNgQLOgQLPgQLQgQLRgQLSgQLTgQLUgQLVgQLWgQLXgQLY
3310 AsGBAsKBAsOBAsSBAsWBAsaBAseBAsiBAsmBAsqBAsuBAsyBAs2BAs6BAs+BAtCBAtGBAtKBAtOBAtSB
3311 gQLZgQLagQLbgQLcgQLdgQLegQLfgQLggQLhgQLigQLjgQLkgQLlgQLmgQLngQLogQLpgQLqgQLrgQLs
3311 AtWBAtaBAteBAtiBAtmBAtqBAtuBAtyBAt2BAt6BAt+BAuCBAuGBAuKBAuOBAuSBAuWBAuaBAueBAuiB
3312 gQLtgQLugQLvgQLwgQLxgQLygQLzgQL0gQL1gQL2gQL3gQL4gQL5EQGrEQFfENMRAWUQfxBQEQGYEQGc
3312 AumBAuqBAuuBAuyBAu2BAu6BAu+BAvCBAvGBAvKBAvOBAvSBAvWBAvaBAveBAviBAvkQkBEBpRDkENEQ
3313 EHwQOhDKEMUQfREBuREBXBBOEOAQ4xBXEMwQ8REBWxDkEQFaEFYQ4RAdEBgRASkQUhEBvRDHEGcQ4hEB
3313 yhEBKxEBaRDxEQGeEH0QfBDpEH8RAawRAZ8Q4hDYENkRAWURAWsQxRDOEQFyEOsQHREBXBBLEQF0EQGk
3314 lxEBXRDdEIgQUxDOEI4QwRCGEN8RAbwRAScRAVgRAWkRAXQRAYERAXEQ6xEBpRBvEEkQTRCDEI8RAaMR
3314 EGoRAV0QxhDDEQFiEQFsEQFaENsRAZcRAZYQORDPEJUQUREBcxEBmxCREI4QlhD1EIgQ1BEBvBDLEAUT
3315 AWoRAXUQBRATEMYQSBEBtBDpEJUQ0REBWREBmRDNEQGWEDkRAZ0QwxEBaxA4EMkQ2RDSENYRAW0RAbUQ
3315 //////////0RAWoRAWMRAasQwREBbREBuRDwEIIRAaYQbxEBoxEBgREBvhBQEBMQ3BDJEH4QShEBWxDf
3316 XBEBuBEBKhEBmxDwEOwQyBEBmhEBYxAXENcQ2hDLEQGiEOgRAWgQcBCRENUQJxEBbxCQEQFuEQEsEQFk
3316 EFwRAV8QThDmEMgQzRAlENARASgQ4RBIEQF1EIEQTREBKREBmREBcREBvRBWEN0Q6BA4EFIRAScRAaIQ
3317 EQGeEEsRAa0RAaQQ0BCWEO8Q2xEBoBEBrBD1EGoRAWIRAb4Q2BCBEQFeEQEoENwRASsRAXAQfhEBbBDU
3317 2hEBKhDnEDoQzBDEEQG0EIYRAW8QSREBZBEBmBDsENcQUxEBnRBXEQFuEQFoEQGhENIRASwQZxDHEQGc
3318 EM8RAaYRAXYT//////////0QJREBnxDmEQFzEQGhEIIQShEBchDeEQGoEOcQxBBREE/SAA4APgBpC7mA
3318 ENYQcBDTEQF2EQFwEBcQJxEBXhEBWRDgEQGgEQG4EI8RAZoRAbUQgxEBWBDjEQGtEO8Q1RDeEQGoEE8Q
3319 NKDSAA4APgYAC7yBAYeg0gAOAD4GAAu/gQGHoNIANwA4C8ELwqILwgA7Xk5TSUJPYmplY3REYXRhAAgA
3319 GNIADgA+AGkLuYA0oNIADgA+BgALvIEBh6DSAA4APgYAC7+BAYeg0gA3ADgLwQvCogvCADteTlNJQk9i
3320 GQAiACcAMQA6AD8ARABSAFQAZgZmBmwGtwa+BsUG0wblBwEHDwcbBycHNQdAB04Hagd4B4sHnQe3B8EH
3320 amVjdERhdGEACAAZACIAJwAxADoAPwBEAFIAVABmBmYGbAa3Br4GxQbTBuUHAQcPBxsHJwc1B0AHTgdq
3321 zgfQB9MH1gfZB9wH3gfhB+MH5gfpB+wH7wfxB/MH9gf5B/wH/wgICBQIFggYCCYILwg4CEMISAhXCGAI
3321 B3gHiwedB7cHwQfOB9AH0wfWB9kH3AfeB+EH4wfmB+kH7AfvB/EH8wf2B/kH/Af/CAgIFAgWCBgIJggv
3322 cwh8CIcIiQiMCI4IuwjICNUI6wj5CQMJEQkeCTAJRAlQCVIJVAlWCVgJWglfCWEJYwllCWcJaQmECZcJ
3322 CDgIQwhICFcIYAhzCHwIhwiJCIwIjgi7CMgI1QjrCPkJAwkRCR4JMAlECVAJUglUCVYJWAlaCV8JYQlj
3323 oAm9Cc8J2gnjCe8J+wn9Cf8KAQoECgYKCAoKChMKFQoaChwKHgpHCk8KXgptCnoKfAp+CoAKggqFCocK
3323 CWUJZwlpCYQJlwmgCb0JzwnaCeMJ7wn7Cf0J/woBCgQKBgoICgoKEwoVChoKHAoeCkcKTwpeCm0Kegp8
3324 iQqLCowKlQqXCpwKngqgCtkK4wrvCv0LCgsUCyYLNAs2CzgLOgs8Cz0LPwtBC0MLRQtHC0kLSwtNC1YL
3324 Cn4KgAqCCoUKhwqJCosKjAqVCpcKnAqeCqAK2QrjCu8K/QsKCxQLJgs0CzYLOAs6CzwLPQs/C0ELQwtF
3325 WAtbC10Legt8C34LgAuCC4QLhguPC5ELlAuWC8cL0wvcC+gL9gv4C/oL/Av+DAEMAwwFDAcMCQwLDA0M
3325 C0cLSQtLC00LVgtYC1sLXQt6C3wLfguAC4ILhAuGC48LkQuUC5YLxwvTC9wL6Av2C/gL+gv8C/4MAQwD
3326 FgwYDB8MIQwjDCUMWgxjDGwMdgyADIoMjAyODJAMkgyUDJYMmAybDJ0MnwyhDKMMpQyuDLAMswy1DOoM
3326 DAUMBwwJDAsMDQwWDBgMHwwhDCMMJQxaDGMMbAx2DIAMigyMDI4MkAySDJQMlgyYDJsMnQyfDKEMowyl
3327 /A0GDRMNHw0pDTINPQ0/DUENQw1FDUcNSQ1LDU4NUA1SDVQNVg1YDWENYw2IDYoNjA2ODZANkg2UDZYN
3327 DK4MsAyzDLUM6gz8DQYNEw0fDSkNMg09DT8NQQ1DDUUNRw1JDUsNTg1QDVINVA1WDVgNYQ1jDYgNig2M
3328 mA2aDZwNng2gDaINpA2mDagNqg3GDdsN+A4ZDjUOWw6BDp8Ouw7XDvQPDA8mD1oPdw+TD8APyQ/QD90P
3328 DY4NkA2SDZQNlg2YDZoNnA2eDaANog2kDaYNqA2qDcYN2w34DhkONQ5bDoEOnw67DtcO9A8MDyYPWg93
3329 4w/6EA8QGRAkECwQPhBAEEIQSxBNEGIQdRCDEI0QjxCREJMQlRCiEKsQrRCvELEQuhDEEMYQxxDQENcQ
3329 D5MPwA/JD9AP3Q/jD/oQDxAZECQQLBA+EEAQQhBLEE0QYhB1EIMQjRCPEJEQkxCVEKIQqxCtEK8QsRC6
3330 6RDyEPsRFxEsETURNxE6ETwRRRFMEVsRYxFsEXERehF/EaARqBHCEdUR6RIAEhUSKBIqEi8SMRIzEjUS
3330 EMQQxhDHENAQ1xDpEPIQ+xEXESwRNRE3EToRPBFFEUwRWxFjEWwRcRF6EX8RoBGoEcIR1RHpEgASFRIo
3331 NxI5EjsSSBJVElsSXRJ4EoEShhKOEpsSoxKlEqcSqhK3Er8SwRLGEsgSyhLPEtES0xLoEvQTAhMEEwYT
3331 EioSLxIxEjMSNRI3EjkSOxJIElUSWxJdEngSgRKGEo4SmxKjEqUSpxKqErcSvxLBEsYSyBLKEs8S0RLT
3332 CBMKExETLxM8Ez4TShNfE2ETYxNlE2cTexOEE4kTlhOjE6UTqhOsE64TsxO1E7cTwxPQE9IT2RPiE+cT
3332 EugS9BMCEwQTBhMIEwoTERMvEzwTPhNKE18TYRNjE2UTZxN7E4QTiROWE6MTpROqE6wTrhOzE7UTtxPD
3333 /hQLFBMUHBQnFC4UNRRBFFgUcBR9FH8UghSPFJkUphSoFKoUshS7FMAUyRTSFN0VAhULFRQVHhUgFSIV
3333 E9AT0hPZE+IT5xP+FAsUExQcFCcULhQ1FEEUWBRwFH0UfxSCFI8UmRSmFKgUqhSyFLsUwBTJFNIU3RUC
3334 JBUmFS8VMRUzFTUVPhVWFWMVbBV3FYIVjBW5FcQVxhXIFcoVzBXOFdAV0hXbFeQV/xYYFiEWKhY3Fk4W
3334 FQsVFBUeFSAVIhUkFSYVLxUxFTMVNRU+FVYVYxVsFXcVghWMFbkVxBXGFcgVyhXMFc4V0BXSFdsV5BX/
3335 VxZeFmkWcBaNFpkWpBauFrsWxxbMFs4W0BbSFtQW1hbeFu8W9hb9FwYXCBcRFxMXFhcjFywXMRc4F00X
3335 FhgWIRYqFjcWThZXFl4WaRZwFo0WmRakFq4WuxbHFswWzhbQFtIW1BbWFt4W7xb2Fv0XBhcIFxEXExcW
3336 TxdRF1MXVRdrF3gXeheIF5EXmhesF7kXwBfJF9IX2BgRGBMYFRgXGBkYGhgcGB4YIBgiGCQYJhgvGDEY
3336 FyMXLBcxFzgXTRdPF1EXUxdVF2sXeBd6F4gXkReaF6wXuRfAF8kX0hfYGBEYExgVGBcYGRgaGBwYHhgg
3337 NBg2GFMYVRhXGFkYWxhdGF8YaBhqGG0YbxiuGLsYzhjbGN0Y3xjhGOMY5RjnGOkY6xj+GQAZAhkEGQYZ
3337 GCIYJBgmGC8YMRg0GDYYUxhVGFcYWRhbGF0YXxhoGGoYbRhvGK4YuxjOGNsY3RjfGOEY4xjlGOcY6Rjr
3338 CBkRGRMZHhkgGSIZJBkmGSgZVRlXGVkZWxldGV8ZYRljGWUZZxlwGXIZdRl3Gc4Z8Bn6GgcaHBo2GlIa
3338 GP4ZABkCGQQZBhkIGREZExkeGSAZIhkkGSYZKBlVGVcZWRlbGV0ZXxlhGWMZZRlnGXAZchl1GXcZzhnw
3339 bRp3GoMalRqkGsMazxrRGtMa3BreGuAa4RrjGuwa9Rr3Gvga+hr8Gv4bABsJGxQbMRs9Gz8bQRtDG0Ub
3339 GfoaBxocGjYaUhptGncagxqVGqQawxrPGtEa0xrcGt4a4BrhGuMa7Br1Gvca+Br6Gvwa/hsAGwkbFBsx
3340 RxtJG3YbeBt6G3wbfhuAG4IbhBuGG4gbkhubG6QbuBvRG9Mb1RvXG9kb2xvyG/scBBwSHBscHRwiHCQc
3340 Gz0bPxtBG0MbRRtHG0kbdht4G3obfBt+G4AbghuEG4YbiBuSG5sbpBu4G9Eb0xvVG9cb2RvbG/Ib+xwE
3341 JhxPHF4caxx2HIUckBybHKgcqRyrHK0cthy4HMEcyhzLHM0c6hzvHPEc8xz1HPcc+R0CHQ8dER0dHTId
3341 HBIcGxwdHCIcJBwmHE8cXhxrHHYchRyQHJscqBypHKscrRy2HLgcwRzKHMsczRzqHO8c8RzzHPUc9xz5
3342 NB02HTgdOh1MHVUdYB10HZUdox2oHaodrB2uHbAdsh21HbcdwR3SHdQd3R3fHeId9x35Hfsd/R3/Hhge
3342 HQIdDx0RHR0dMh00HTYdOB06HUwdVR1gHXQdlR2jHagdqh2sHa4dsB2yHbUdtx3BHdId1B3dHd8d4h33
3343 LR4vHjEeMx41HkgeUR5WHmQejR6OHpAekh6bHp0enh6gHr0evx7BHsMexR7HHs0e7h7wHvIe9B72Hvge
3343 Hfkd+x39Hf8eGB4tHi8eMR4zHjUeSB5RHlYeZB6NHo4ekB6SHpsenR6eHqAevR6/HsEewx7FHscezR7u
3344 +h8PHxEfEx8VHxcfIR8uHzAfNR8+H0kfYR+GH4gfih+MH44fkB+SH5QfnR+2H98f4R/jH+Uf5x/pH+sf
3344 HvAe8h70HvYe+B76Hw8fER8THxUfFx8hHy4fMB81Hz4fSR9hH4YfiB+KH4wfjh+QH5IflB+dH7Yf3x/h
3345 7R/2IA4gFyAZIBwgHiA0IE0gZCB9IJognCCeIKAgoiCkIK4guyC9INYg+SECIQshFyFAIUshViFgIW0h
3345 H+Mf5R/nH+kf6x/tH/YgDiAXIBkgHCAeIDQgTSBkIH0gmiCcIJ4goCCiIKQgriC7IL0g1iD5IQIhCyEX
3346 byFxIXMhfCGFIYghiiGNIY8hkSGWIZghoSGmIbEhySHSIdsh8SH8IhQiJyIwIjUiSCJRIlMitCK2Irgi
3346 IUAhSyFWIWAhbSFvIXEhcyF8IYUhiCGKIY0hjyGRIZYhmCGhIaYhsSHJIdIh2yHxIfwiFCInIjAiNSJI
3347 uiK8Ir4iwCLCIsQixiLIIsoizCLOItAi0yLWItki3CLfIuIi5SLoIusi7iLxIvQi9yL6Iv0jACMDIwYj
3347 IlEiUyK0IrYiuCK6IrwiviLAIsIixCLGIsgiyiLMIs4i0CLTItYi2SLcIt8i4iLlIugi6yLuIvEi9CL3
3348 CSMMIw8jEiMVIxgjGyMeIyEjJCMnIyojLSMwIzMjQCNJI1EjUyNVI1cjfCOEI5gjoyOxI7sjyCPPI9Uj
3348 Ivoi/SMAIwMjBiMJIwwjDyMSIxUjGCMbIx4jISMkIycjKiMtIzAjMyNAI0kjUSNTI1UjVyN4I4AjlCOf
3349 1yPZI94j4CPlI+cj6SPrI/gkBCQHJAokDSQaJBwkKSQ4JDokPCQ+JEYkWCRhJGYkeSSGJIgkiiSMJJ8k
3349 I60jtyPEI8sjzSPPI9Qj1iPbI90j3yPhI/Ij/iQBJAQkByQKJBMkICQvJDEkMyQ1JD0kTyRYJF0kcCR9
3350 qCStJLgk3CTlJOwlBCUTJSAlIiUkJSYlRyVJJUslTSVPJVElUyVgJWMlZiVpJX0lfyWfJawlriWwJbIl
3350 JH8kgSSDJJYknySkJK8kyCTRJNgk8CT/JQwlDiUQJRIlMyU1JTclOSU7JT0lPyVMJU8lUiVVJWQlZiV1
3351 1yXZJdsl3SXfJeEl4yX2JfgmEyYgJiImJCYmJkcmSSZLJk0mTyZRJlMmYCZjJmYmaSZuJnAmfiaLJo0m
3351 JYIlhCWGJYglqSWrJa0lryWxJbMltSXCJcUlyCXLJdgl2iXhJe4l8CXyJfQmGSYfJiEmIyYoJiomLCYu
3352 jyaRJrImtCa2Jrgmuia8Jr4myybOJtEm1CbZJtsm4SbuJvAm8ib0JxUnFycZJx4nICciJyQnJicrJy0n
3352 JjAmPSZAJkMmRiZSJlQmdCaBJoMmhSaHJqgmqiasJq4msCayJrQmwSbEJscmyibPJtEm1ybkJuYm6Cbq
3353 MydAJ0InRCdGJ2cnaSdrJ3Ancid0J3YneCeJJ4wnjyeSJ5UnoSejJ7wnySfLJ80nzyfwJ/In9Cf2J/gn
3353 JwsnDScPJxEnEycVJxcnJCcnJyonLSc8J0snWCdaJ1wnXid/J4EngyeFJ4cniSeLJ5gnmyeeJ6EnuCe6
3354 +if8KAkoDCgPKBIoHiggKDgoRShHKEkoSyhsKG4ocChyKHQodih4KH4ogCiHKJQoliiYKJoovyjBKMMo
3354 J8Qn0SfTJ9Un1yf4J/on/Cf+KAAoAigEKCIoQyhQKFIoVChWKHcoeSh7KH0ofyiBKIMojiiQKJsoqCiq
3355 xSjHKMkoyyjWKPAo/Sj/KQEpAykkKSYpKCkqKSwpLikwKT0pQClDKUYpVCliKXMpgSmDKYUphymJKZIp
3355 KKworijPKNEo0yjVKNco2SjbKPkpEikfKSEpIyklKUYpSClKKUwpTilQKVIpXyliKWUpaCmPKbEpvinA
3356 lCmWKa8puCnBKcgp3ynsKe4p8CnyKhMqFSoXKhkqGyodKh8qJiouKjsqPSo/KkIqYyplKmcqaipsKm4q
3356 KcIpxCnlKecp6SnuKfAp8in0KfYqAyoFKhsqKCoqKiwqLipPKlEqUypVKlcqWSpbKmAqYipwKoEqjyqS
3357 cCqBKoQqhyqKKo0qliqYKq4quyq9KsAqwyrkKuYq6SrrKu0q7yrxKwYrGCslKycrKistK04rUCtTK1Ur
3357 KpQqliqYKqEqoyqlKq4qsCqyKs8q2CrhKugq/ysMKw4rESsUKzkrOys+K0ErQytFK0crVCtWK3oriyuO
3358 VytZK1srZCt9K4orjCuPK5Irsyu1K7gruyu9K78rwSvHK8kr1yvoK+or7CvvK/IsDywRLBQsFiwYLBos
3358 K5ErkyuWK58roSukK70r0SveK+Ar4yvmLAcsCSwMLA8sESwTLBUsLCwuLDksRixILEssTixvLHEsdCx3
3359 HCw0LFQsYSxjLGYsaSyKLIwsjyySLJQsliyZLKYsqSysLK8svizALM8s3CzeLOEs5C0FLQctCi0NLQ8t
3359 LHkseyx+LI8skiyVLJgsmyykLKYsvCzJLMsszizRLPIs9Cz3LPos/Cz+LQAtBS0HLQ0tGi0cLR8tIi1D
3360 ES0TLR4tIC0rLTgtOi09LUAtYS1jLWYtaC1qLWwtbi2FLYstmC2aLZ0toC3BLcMtxi3ILcotzC3PLe0u
3360 LUUtSC1LLU0tTy1RLW4tcC2CLY8tkS2ULZctuC26Lb0twC3CLcQtxy3ULdct2i3dLekt6y4DLhAuEi4V
3361 Di4bLh0uIC4jLkQuRi5JLkwuTi5QLlIuXy5hLmgudS53LnoufS6eLqAuoy6mLqguqi6sLr0uvy7RLt4u
3361 LhguOS47Lj4uQS5DLkUuRy5TLlUubi57Ln0ugC6DLqQupi6pLqwuri6wLrIuty65Lr8uzC7OLtEu1C75
3362 4C7jLuYvBy8JLwwvDy8RLxMvFS8sLy4vOS9GL0gvSy9OL3MvdS94L3svfS9/L4EvjS+PL68vwC/CL8Qv
3362 Lvsu/i8BLwMvBS8ILxUvGC8bLx4vKS8rL0UvUi9UL1cvWi97L30vgC+CL4Qvhi+IL5YvpC+1L7cvuS+8
3363 xy/KL9Mv1S/YL/UwCTAWMBgwGzAeMD8wQTBEMEYwSDBKMEwwUTBeMGswbTBwMHMwlDCWMJkwnDCeMKAw
3363 L78v3C/eL+Ev4y/lL+cv6TABMCEwLjAwMDMwNjBbMGUwZzBpMGwwbzBxMHMwdTCDMIUwlDClMKgwqzCt
3364 ojCnMKkwrzC8ML4wwTDEMOUw5zDqMO0w7zDxMPQxATEEMQcxCjEXMRkxLzFAMUIxRTFIMUoxUzFVMVcx
3364 MK8wvDC+MMEwxDDlMOcw6jDtMO8w8TDzMPkw+zECMRMxFjEYMRoxHTE1MUIxRDFHMUoxazFtMXAxczF1
3365 ZDFmMWkxbDGNMY8xkjGUMZYxmDGaMakxuDHFMccxyjHNMe4x8DHzMfYx+DH6Mf0yCjINMhAyEzIqMiwy
3365 MXcxejGOMZAxsDG9Mb8xwjHFMeYx6DHrMe0x7zHxMfQyBTIIMgsyDjIRMhwyNDJBMkMyRjJJMmoybDJv
3366 NjJDMkUySDJLMmwybjJxMnMydTJ3MnoyizKOMpEylDKXMqIyujLHMskyzDLPMvAy8jL1Mvcy+TL7Mv4z
3366 MnEyczJ1MncyfjKGMpMylTKYMpsyuDK6Mr0yvzLBMsMyxTLXMvAzATMEMwYzCTMMMxUzIjMkMyczKjNL
3367 JTNHM1QzVjNZM1wzfTN/M4IzhTOHM4kzizOPM5EzljOnM6kzqzOtM7AzuTPKM8wzzjPQM9Mz6zP4M/oz
3367 M00zUDNSM1QzVjNZM24zgDONM48zkjOVM7YzuDO7M74zwDPCM8Qz2zPhM+4z8DPzM/Y0FzQZNBw0HjQg
3368 /TQANCU0LzQxNDM0NjQ5NDs0PTQ/NE00TzReNGs0bTRwNHM0lDSWNJk0nDSeNKA0ozTANMI01DThNOM0
3368 NCI0JTQqNDc0RDRGNEk0TDRxNHM0djR5NHs0fTR/NJI0rTS6NLw0vzTCNOM05TToNOs07TTvNPE1AjUE
3369 5jTpNQY1CDULNQ01DzURNRM1JTU+NUs1TTVQNVM1dDV2NXk1ezV9NX81gjWgNbk11jXgNeo2CTYMNg82
3369 NRY1IzUlNSg1KzVMNU41UTVUNVY1WDVaNV41YDVlNXI1dDV3NXo1mzWdNaA1ozWlNac1qTWvNbE1vzXc
3370 EjYVNhc2GjZHNmQ2ezaINpM2ojaxNtY28TcKNx43HzciNyM3JjcnNyo3LTcuNy83MDczNzw3PjdFN0g3
3370 NeY18DYPNhI2FDYXNho2HTYgNk02ajaBNo42mTaoNrc23Db3NxA3JDclNyg3KTcsNy03MDczNzQ3NTc2
3371 SzdON1M3VzddN2Y3aTdsN283gDeGN5E3nTegN6M3pjenN7A3uTe+N9E32jffN+g38zgMOCA4NThCOF84
3371 Nzk3QjdEN0s3TjdRN1Q3WTddN2M3bDdvN3I3dTeGN4w3lzejN6Y3qTesN603tje/N8Q31zfgN+U37jf5
3372 dTh+OIU4nTi6OL04vzjCOMU4yDjLOOc4+zkCOR85IjklOSg5KzktOTA5TzlnOYQ5hzmKOY05kDmTOZY5
3372 OBI4Jjg7OEg4dDiGOKE4qjixOMk45jjpOOw47zjyOPU4+DkUOSg5LzlMOU85UjlVOVg5WjldOXw5lDmx
3373 wjnUOe86DDoPOhE6FDoXOhk6HDo4OkA6UzpcOl87MDsyOzU7ODs6Ozw7PztCO0Q7RztKO007UDtTO1Y7
3373 ObQ5tzm6Ob05vznCOd859ToSOhU6GDobOh46IDojOj86RzpaOmM6Zjs3Ozo7PDs/O0I7RTtHO0o7TTtP
3374 WTtbO147YTtkO2c7aTtrO247cTt0O3c7ejt9O4A7gjuFO4c7ijuNO5A7kzuWO5g7mzueO6E7pDunO6k7
3374 O1I7VTtYO1s7XjthO2M7ZTtnO2k7azttO3A7cjt0O3Y7eDt6O3w7fzuCO4Q7hjuIO4s7jTuQO5I7lTuY
3375 rDuuO7A7sju0O7Y7uDu6O7w7vzvCO8U7xzvKO8070DvSO9U72DvaO9w73jvhO+M75TvoO+o77TvwO/I7
3375 O5o7nTugO6I7pDunO6o7rTuwO7I7tTu4O7s7vjvAO8I7xDvHO8k7zDvOO9E71DvWO9g72zveO+E75Dvm
3376 9Dv2O/g7+zv+PAE8BDwGPAk8DDwPPBI8FDwXPBk8HDwfPCE8IzwlPCg8KjwsPC48MTw0PDc8OTw8PGU8
3376 O+k76zvuO/E78zv1O/g7+zv9PAA8AjwFPAc8CTwMPA88EjwVPBc8GjwdPCA8IzwmPCk8KzwuPDA8Mzw2
3377 bzxxPHM8djx4PHo8fDx+PIE8iDyXPKA8ojynPKo8rDy1PLo84zzlPOg86zztPO888TzzPPY9Aj0LPQ09
3377 PDk8PDw/PEI8azx5PIY8iDyKPIs8jTyOPJA8kjyUPL08xzzJPMw8zzzRPNM81TzYPNs87DzvPPI89Tz4
3378 ED0TPSw9VT1XPVk9XD1ePWA9Yj1kPWc9dT1+PYA9hz2JPYs9jj2fPaI9pT2oPas9tT2+PcA9zz3SPdU9
3378 PP89Dj0XPRk9Hj0hPSQ9RT1HPUo9TD1OPVA9Uz1ePWc9bD14PYE9gz2GPYk9oj3LPc090D3TPdU91z3Z
3379 2D3bPd494T3kPg0+Dz4RPhQ+Fj4YPho+HT4gPjI+Oz49PlQ+Vz5aPl0+YD5jPmY+aT5rPm4+cT50Pp0+
3379 Pds93j4HPgk+Cz4OPhA+Ej4UPhY+GT4wPjk+Oz5EPkc+ST5LPk0+dj54Pno+fT5/PoE+gz6GPok+jj6X
3380 qz64Pro+vD69Pr8+wD7CPsQ+xj7nPuk+7D7vPvE+8z71Pw4/ED85Pzs/PT8+P0A/QT9DP0U/Rz9wP3I/
3380 Ppk+tD63Prk+vD6/PsI+xT7IPso+zT7QPtM+1j7ZPwI/BD8GPwc/CT8KPww/Dj8QPzk/Oz89Pz4/QD9B
3381 dT94P3o/fD9+P4A/gz+MP50/oD+jP6Y/qT+yP7Q/tT/HP/A/8j/0P/U/9z/4P/o//D/+QCdAKUArQCxA
3381 P0M/RT9HP3A/cj91P3g/ej98P34/gD+DP4g/kT+TP54/oT+kP6c/qj+tP9I/1D/XP9o/3D/eP+E/60AQ
3382 LkAvQDFAM0A1QEJAa0BtQG9AckB0QHZAeEB7QH5Ag0CMQI5ApUCoQKtArkCxQLRAtkC5QLxAv0DCQMVA
3382 QBJAFUAXQBlAG0AeQCxAUUBTQFZAWUBbQF1AYEBiQHtAfUCmQKhAqkCtQK9AsUCzQLVAuEDGQM9A0UDY
3383 5kDoQOtA7kDwQPJA9ED4QPpBG0EdQSBBI0ElQSdBKUE0QTZBX0FhQWNBZEFmQWdBaUFrQW1BlkGYQZpB
3383 QNtA3kDgQQlBC0ENQRBBEkEUQRZBGEEbQSJBK0EtQTJBNEE3QUFBSkFMQVtBXkFhQWRBZ0FqQW1BcEGZ
3384 m0GdQZ5BoEGiQaRBzUHPQdFB1EHWQdhB2kHdQeBB5UHuQfBCC0INQg9CEkIVQhhCGkIcQh9CIkIlQihC
3384 QZtBnUGgQaJBpEGmQalBrEG+QcdByUHgQeNB5kHpQexB70HyQfVB+EH6Qf1CAEIpQitCLUIuQjBCMUIz
3385 K0IuQldCWUJbQlxCXkJfQmFCY0JlQo5CkEKSQpNClUKWQphCmkKcQsVCx0LJQsxCzkLQQtJC1ELXQtxC
3385 QjVCN0JYQlpCXUJgQmJCZEJmQn9CgUKqQqxCrkKvQrFCskK0QrZCuELhQuNC5kLpQutC7ULvQvFC9EL9
3386 5ULnQvJC9EL3QvpC/UL/QyRDJkMpQytDLUMvQzFDO0NgQ2JDZUNoQ2pDbENuQ3xDoUOjQ6ZDqUOrQ61D
3386 Qw5DEUMUQxdDGkMjQyVDJkM4Q2FDY0NlQ2ZDaENpQ2tDbUNvQ3xDpUOnQ6lDrEOuQ7BDskO1Q7hDvUPG
3387 r0OxQ8pDzEP1Q/dD+kP9Q/9EAUQDRAVECEQfRChEKkQzRDZEOUQ8RD9EaERqRGxEb0RxRHNEdUR4RHtE
3387 Q8hD30PiQ+VD6EPrQ+5D8EPzQ/ZD+UP8Q/5EH0QhRCREJ0QpRCtELUQxRDNEVERWRFlEXEReRGBEYkRt
3388 gkSLRI1EkkSVRJdEuES6RL1EwETCRMRExkTRRPpE/ET/RQJFBEUGRQhFC0UORRNFHEUeRSNFJkUpRVJF
3388 RG9EmESaRJxEnUSfRKBEokSkRKZEz0TRRNNE1ETWRNdE2UTbRN1FBkUIRQpFDUUPRRFFE0UWRRlFHkUn
3389 VEVWRVlFW0VdRV9FYkVlRWxFdUV3RYBFgkWFRYhFi0W0RbZFuEW5RbtFvEW+RcBFwkXRRfpF/EX/RgJG
3389 RSlFLkUwRTJFW0VdRWBFY0VlRWdFaUVsRW9FdkV/RYFFikWNRZBFk0WWRb9FwUXDRcRFxkXHRclFy0XO
3390 BEYGRghGC0YORhNGHEYeRiFGJEYwRjlGPEcNRw9HEUcTRxVHF0cZRxtHHUcfRyJHJEcmRylHLEcuRzFH
3390 Rd1GBkYIRgpGDUYPRhFGE0YWRhlGHkYnRilGLEYuRjpGQ0ZGRxdHGUcbRx5HIEcjRyVHKEcqRyxHLkcx
3391 NEc2RzhHO0c9R0BHQkdER0dHSUdLR05HUEdSR1RHVkdZR1tHXUdfR2FHY0dlR2dHakdsR25HcEdyR3RH
3391 RzNHNUc3RzlHO0c9Rz9HQkdFR0dHSUdLR01HT0dRR1NHVkdYR1pHXUdfR2FHY0dlR2dHakdsR29HcUd0
3392 dkd4R3tHfUeAR4JHhEeHR4pHjUePR5FHk0eWR5hHmkedR59HoUejR6VHp0epR6tHrUevR7FHtEe2R7hH
3392 R3ZHeEd6R3xHfkeBR4RHhkeJR4tHjkeQR5JHlUeYR5tHnkegR6JHpEemR6hHqketR7BHske1R7dHuUe7
3393 uke8R75HwEfDR8VHyEfKR8xHzkfQR9NH1kfZR9xH30fhR+NH5UfnR+lH60fuR/BH8kf1R/dIAEgDSNZI
3393 R71Hv0fBR8NHxUfHR8lHy0fNR9BH0kfUR9dH2kfdR99H4UfjR+VH50fqR+xH70fxR/NH9Uf3R/pH/UgA
3394 2EjbSN5I4EjiSOVI6EjqSO1I8EjzSPZI+Uj8SP9JAkkESQdJCkkNSQ9JEUkUSRdJGkkdSSBJI0kmSShJ
3394 SAJIBUgOSBFI5EjmSOlI7EjvSPJI9Ej3SPpI/Ej/SQJJBUkISQtJDkkQSRJJFEkWSRhJGkkdSR9JIUkj
3395 K0ktSTBJM0k2STlJPEk+SUFJRElHSUpJTUlPSVJJVElWSVhJWklcSV5JYEliSWVJaElrSW1JcElzSXZJ
3395 SSVJJ0kpSStJLUkwSTNJNUk4STpJPUk/SUJJRUlHSUpJTUlPSVFJVElWSVlJXElfSWJJZElnSWpJbUlv
3396 eEl7SX5JgEmCSYRJh0mJSYtJjkmQSZNJlkmYSZpJnEmeSaFJpEmnSapJrEmvSbJJtEm3SbpJvUm/ScJJ
3396 SXFJc0l1SXhJe0l9SYBJg0mFSYdJikmNSZBJk0mVSZhJmkmdSZ9JokmkSadJqkmsSa9JsUm0SbZJuEm7
3397 xEnHSclJy0nNSdBJ0knUSdZJ2UncSd9J4UnkSe1J8ErDSsZKyUrMSs9K0krVSthK20reSuFK5ErnSupK
3397 Sb5JwUnEScZJyUnMSc9J0knVSdhJ2kndSd9J4knlSehJ60nuSfFJ+kn9StBK00rWStlK3ErfSuJK5Uro
3398 7UrwSvNK9kr5SvxK/0sCSwVLCEsLSw5LEUsUSxdLGksdSyBLI0smSylLLEsvSzJLNUs4SztLPktBS0RL
3398 SutK7krxSvRK90r6Sv1LAEsDSwZLCUsMSw9LEksVSxhLG0seSyFLJEsnSypLLUswSzNLNks5SzxLP0tC
3399 R0tKS01LUEtTS1ZLWUtcS19LYktlS2hLa0tuS3FLdEt3S3pLfUuAS4NLhkuJS4xLj0uSS5VLmEubS55L
3399 S0VLSEtLS05LUUtUS1dLWktdS2BLY0tmS2lLbEtvS3JLdUt4S3tLfkuBS4RLhkuJS4xLj0uSS5VLmEub
3400 oUukS6dLqkutS7BLs0u2S7lLvEu/S8JLxUvIS8tLzkvRS9RL10vaS91L4EvjS+ZL6UvsS+9L8kv1S/hL
3400 S55LoUukS6dLqkutS7BLs0u2S7lLvEu/S8JLxUvIS8tLzkvRS9RL10vaS91L4EvjS+ZL6UvsS+9L8kv1
3401 +0wWTCtMLUxBTFtMdUyZTK5MwUzWTNhM9E0rTVVNcE15TYdNiU2bTZ1NqU3ATeVN6k39TglOLE4/TlhO
3401 S/hL+0v+TAFMBEwHTBJMHkxDTFhMbUyLTKBMukzaTP1NEE0jTS1NNk1STV9NYU1vTXFNiE2hTb1N104B
3402 ZU6BToxOr06zTrVOzE7YTuJPA08YTz1PVk9jT29PlE+uT8JPzk/nT/lQFVAsUEpQZ1B6UJpQplCwUO9R
3402 Tg9OOU5LTmROgE6MTp9Oq07KTuRO+08ATw5PIk9DT09PYU97T55PqE/ET9FP00/oT+xP+FAVUC5QOlBV
3403 DlEaUThRTlFlUXhRi1GfUbdRulHUUfBR/FIKUipSLFI6UlJSaVJ8UqZStFK2UtBS3VMAUwRTEFMvU0RT
3403 UFdQdVCBUI1QpVDKUM5Q0FDrUQFRJlFEUVdRWVFvUYJRwVHlUfJSKVJGUmlSbVKBUo1SoFKzUspS3lLs
3404 UFNpU3dTkVOkU7BTzlPqVABUBFQWVDNUP1RBVEpUTVROVFdUWlRbVGRUZ1WYVZtVnVWgVaNVplWpVatV
3404 UwxTDlMgUzpTRlNJU15TdVOUU65TulPGU95T9VQOVCFUPVQ/VE1UVlRZVFpUY1RmVGdUcFRzVaRVp1Wp
3405 rVWwVbNVtVW4VbtVvlXBVcRVx1XJVcxVz1XRVdRV11XaVd1V4FXjVeVV6FXrVe5V8VX0VfZV+FX6Vf1W
3405 VaxVr1WyVbVVuFW7Vb1VwFXDVcVVyFXLVc1V0FXTVdZV2FXbVd5V4VXjVeZV6VXsVe5V8FXyVfRV9lX4
3406 AFYDVgZWCVYMVg9WEVYUVhdWGlYcVh5WIVYkViZWKFYrVi5WMVY0VjdWOVY7Vj5WQVZEVkdWSlZMVk9W
3406 VftV/VYAVgJWBFYGVghWClYNVhBWElYUVhZWGVYcVh5WIVYkViZWKVYsVi9WMVYzVjZWOVY8Vj5WQVZE
3407 UlZUVlZWWFZaVlxWXlZgVmJWZVZoVmtWblZwVnNWdlZ5VnxWf1aCVoRWh1aKVo1Wj1aRVpNWlVaYVppW
3407 VkdWSlZMVk5WUVZTVlZWWVZcVl5WYVZkVmZWaVZsVm9WcVZ0VnZWeFZ7Vn5WgFaCVoVWh1aKVo1Wj1aR
3408 nFafVqJWpVanVqpWrVawVrNWtla4VrpWvFa+VsBWwlbFVshWy1bOVtBW01bVVthW21bdVuBW41blVuhW
3408 VpRWl1aZVpxWnlahVqRWp1apVqxWrlawVrNWtla4VrpWvVbAVsNWxlbIVstWzVbQVtJW1VbXVtlW21be
3409 6lbtVu9W8lb1VvdW+Vb7Vv5XAVcDVwVXCFcKVwxXD1cSVxVXGFcbVx1XIFciVyVXLlcxWGJYZVhoWGtY
3409 VuFW5FbnVulW7FbvVvJW9Fb3VvpW/VcAVwNXBlcIVwtXDlcQVxNXFlcZVxxXH1ciVyVXJ1cqVy1XMFc5
3410 blhxWHRYd1h6WH1YgFiDWIZYiViMWI9YkliVWJhYm1ieWKFYpFinWKpYrViwWLNYtli5WLxYv1jCWMVY
3410 VzxYbVhwWHNYdlh5WHxYf1iCWIVYiFiLWI5YkViUWJdYmlidWKBYo1imWKlYrFivWLJYtVi4WLtYvljB
3411 yFjLWM5Y0VjUWNdY2ljdWOBY41jmWOlY7FjvWPJY9Vj4WPtY/lkBWQRZB1kKWQ1ZEFkTWRZZGVkcWR9Z
3411 WMRYx1jKWM1Y0FjTWNZY2VjcWN9Y4ljlWOhY61juWPFY9Fj3WPpY/VkAWQNZBlkJWQxZD1kSWRVZGFkb
3412 IlklWShZK1kuWTFZNFk3WTpZPVlAWUNZRllJWUxZT1lSWVVZWFlbWV5ZYVlkWWdZalltWXBZc1l2WXlZ
3412 WR5ZIVkkWSdZKlktWTBZM1k2WTlZPFk/WUJZRVlIWUtZTllRWVRZV1laWV1ZYFljWWZZaVlsWW9Zcll1
3413 fFl/WYJZhVmIWYtZjlmRWZRZl1maWZ1ZoFmjWaZZqVmsWa9Zslm1WbhZu1m+WcFZxFnHWcpZzVnQWdNZ
3413 WXhZe1l+WYFZhFmHWYpZjVmQWZNZllmZWZxZn1miWaVZqFmrWa5ZsVm0WbdZulm9WcBZw1nGWclZzFnP
3414 1lnZWdxZ31niWeVZ6FnrWe5Z8Vn0WfdZ+ln9WgBaA1oGWglaDFoPWhJaFVoYWhtaHlohWiRaJ1oqWi1a
3414 WdJZ1VnYWdtZ3lnhWeRZ51nqWe1Z8FnzWfZZ+Vn8Wf9aAloFWghaC1oOWhFaFFoXWhpaHVogWiNaJlop
3415 L1oyWjRaNlo5WjxaPlpAWkJaRFpGWklaTFpOWlBaUlpUWlZaWFpbWl1aYFpiWmRaZlpoWmtabVpwWnJa
3415 WixaL1oyWjRaN1o5WjtaPVpAWkNaRVpIWkpaTFpOWlBaU1pWWlhaWlpcWl9aYlpkWmZaaVprWm1acFpy
3416 dFp2WnlafFp+WoBaglqEWoZaiFqKWoxaj1qSWpVamFqbWp5aoVqjWqZaqFqqWqxarlqwWrNatlq5Wrta
3416 WnVaeFp6Wn1af1qBWoRah1qKWoxaj1qSWpRallqYWppanVqgWqJapFqmWqhaqlqsWq9asVqzWrxav1rC
3417 vVq/WsFaxFrGWshaylrNWtBa0lrVWtda2lrcWt9a4VrjWuVa51rpWuxa71rxWvRa91r6Wvxa/lsAWwNb
3417 WsVax1rKWs1az1rRWtRa1lrZWtxa31rhWuNa5VrnWula61ruWvBa8lr1Wvda+Vr7Wv1a/1sBWwRbBlsI
3418 BlsIWwpbDFsOWxFbE1sWWxhbGlscWx5bIVsjWyZbKVssWy9bMVs0WzdbOVs7Wz1bP1tCW0VbR1tJW0xb
3418 WwtbDVsPWxJbFVsYWxtbHVsfWyFbI1slWyhbK1stWzBbMls0WzZbOFs7Wz1bQFtCW0VbSFtKW0xbTltR
3419 T1tRW1NbVltZW1tbXlthW2NbZltoW2pbbVtwW3lbe1t+W4Bbg1uGW4hbiluNW49bkluUW5ZbmFuaW6Nb
3419 W1NbVltZW1xbXlthW2NbZVtoW2pbbFtuW3FbdFt2W3hbe1t+W4Bbg1uGW4hbi1uOW5Bbk1uVW5hbmluc
3420 pVumW69bsluzW7xbv1vAW8lbzgAAAAAAAAICAAAAAAAAC8MAAAAAAAAAAAAAAAAAAFvdA</bytes>
3420 W55boVujW6VbrluwW7Fbulu9W75bx1vKW8tb1FvZAAAAAAAAAgIAAAAAAAALwwAAAAAAAAAAAAAAAAAA
3421 W+g</bytes>
3421 </object>
3422 </object>
3422 </data>
3423 </data>
3423 </archive>
3424 </archive>
@@ -1,407 +1,400
1 # encoding: utf-8
1 # encoding: utf-8
2 # -*- test-case-name: IPython.frontend.tests.test_frontendbase -*-
2 # -*- test-case-name: IPython.frontend.tests.test_frontendbase -*-
3 """
3 """
4 frontendbase provides an interface and base class for GUI frontends for
4 frontendbase provides an interface and base class for GUI frontends for
5 IPython.kernel/IPython.kernel.core.
5 IPython.kernel/IPython.kernel.core.
6
6
7 Frontend implementations will likely want to subclass FrontEndBase.
7 Frontend implementations will likely want to subclass FrontEndBase.
8
8
9 Author: Barry Wark
9 Author: Barry Wark
10 """
10 """
11 __docformat__ = "restructuredtext en"
11 __docformat__ = "restructuredtext en"
12
12
13 #-------------------------------------------------------------------------------
13 #-------------------------------------------------------------------------------
14 # Copyright (C) 2008 The IPython Development Team
14 # Copyright (C) 2008 The IPython Development Team
15 #
15 #
16 # Distributed under the terms of the BSD License. The full license is in
16 # Distributed under the terms of the BSD License. The full license is in
17 # the file COPYING, distributed as part of this software.
17 # the file COPYING, distributed as part of this software.
18 #-------------------------------------------------------------------------------
18 #-------------------------------------------------------------------------------
19
19
20 #-------------------------------------------------------------------------------
20 #-------------------------------------------------------------------------------
21 # Imports
21 # Imports
22 #-------------------------------------------------------------------------------
22 #-------------------------------------------------------------------------------
23 import string
23 import string
24 import uuid
24 import uuid
25 import _ast
25 import _ast
26
26
27 try:
27 try:
28 from zope.interface import Interface, Attribute, implements, classProvides
28 from zope.interface import Interface, Attribute, implements, classProvides
29 except ImportError:
29 except ImportError:
30 #zope.interface is not available
30 #zope.interface is not available
31 Interface = object
31 Interface = object
32 def Attribute(name, doc): pass
32 def Attribute(name, doc): pass
33 def implements(interface): pass
33 def implements(interface): pass
34 def classProvides(interface): pass
34 def classProvides(interface): pass
35
35
36 from IPython.kernel.core.history import FrontEndHistory
36 from IPython.kernel.core.history import FrontEndHistory
37 from IPython.kernel.core.util import Bunch
37 from IPython.kernel.core.util import Bunch
38 from IPython.kernel.engineservice import IEngineCore
38 from IPython.kernel.engineservice import IEngineCore
39
39
40 try:
41 from twisted.python.failure import Failure
42 except ImportError:
43 #Twisted not available
44 Failure = Exception
45
40
46 ##############################################################################
41 ##############################################################################
47 # TEMPORARY!!! fake configuration, while we decide whether to use tconfig or
42 # TEMPORARY!!! fake configuration, while we decide whether to use tconfig or
48 # not
43 # not
49
44
50 rc = Bunch()
45 rc = Bunch()
51 rc.prompt_in1 = r'In [$number]: '
46 rc.prompt_in1 = r'In [$number]: '
52 rc.prompt_in2 = r'...'
47 rc.prompt_in2 = r'...'
53 rc.prompt_out = r'Out [$number]: '
48 rc.prompt_out = r'Out [$number]: '
54
49
55 ##############################################################################
50 ##############################################################################
56
51
57 class IFrontEndFactory(Interface):
52 class IFrontEndFactory(Interface):
58 """Factory interface for frontends."""
53 """Factory interface for frontends."""
59
54
60 def __call__(engine=None, history=None):
55 def __call__(engine=None, history=None):
61 """
56 """
62 Parameters:
57 Parameters:
63 interpreter : IPython.kernel.engineservice.IEngineCore
58 interpreter : IPython.kernel.engineservice.IEngineCore
64 """
59 """
65
60
66 pass
61 pass
67
62
68
63
69
64
70 class IFrontEnd(Interface):
65 class IFrontEnd(Interface):
71 """Interface for frontends. All methods return t.i.d.Deferred"""
66 """Interface for frontends. All methods return t.i.d.Deferred"""
72
67
73 Attribute("input_prompt_template", "string.Template instance\
68 Attribute("input_prompt_template", "string.Template instance\
74 substituteable with execute result.")
69 substituteable with execute result.")
75 Attribute("output_prompt_template", "string.Template instance\
70 Attribute("output_prompt_template", "string.Template instance\
76 substituteable with execute result.")
71 substituteable with execute result.")
77 Attribute("continuation_prompt_template", "string.Template instance\
72 Attribute("continuation_prompt_template", "string.Template instance\
78 substituteable with execute result.")
73 substituteable with execute result.")
79
74
80 def update_cell_prompt(result, blockID=None):
75 def update_cell_prompt(result, blockID=None):
81 """Subclass may override to update the input prompt for a block.
76 """Subclass may override to update the input prompt for a block.
82 Since this method will be called as a
77 Since this method will be called as a
83 twisted.internet.defer.Deferred's callback/errback,
78 twisted.internet.defer.Deferred's callback/errback,
84 implementations should return result when finished.
79 implementations should return result when finished.
85
80
86 Result is a result dict in case of success, and a
81 Result is a result dict in case of success, and a
87 twisted.python.util.failure.Failure in case of an error
82 twisted.python.util.failure.Failure in case of an error
88 """
83 """
89
84
90 pass
85 pass
91
86
92
87
93 def render_result(result):
88 def render_result(result):
94 """Render the result of an execute call. Implementors may choose the
89 """Render the result of an execute call. Implementors may choose the
95 method of rendering.
90 method of rendering.
96 For example, a notebook-style frontend might render a Chaco plot
91 For example, a notebook-style frontend might render a Chaco plot
97 inline.
92 inline.
98
93
99 Parameters:
94 Parameters:
100 result : dict (result of IEngineBase.execute )
95 result : dict (result of IEngineBase.execute )
101 blockID = result['blockID']
96 blockID = result['blockID']
102
97
103 Result:
98 Result:
104 Output of frontend rendering
99 Output of frontend rendering
105 """
100 """
106
101
107 pass
102 pass
108
103
109 def render_error(failure):
104 def render_error(failure):
110 """Subclasses must override to render the failure. Since this method
105 """Subclasses must override to render the failure. Since this method
111 will be called as a twisted.internet.defer.Deferred's callback,
106 will be called as a twisted.internet.defer.Deferred's callback,
112 implementations should return result when finished.
107 implementations should return result when finished.
113
108
114 blockID = failure.blockID
109 blockID = failure.blockID
115 """
110 """
116
111
117 pass
112 pass
118
113
119
114
120 def input_prompt(number=''):
115 def input_prompt(number=''):
121 """Returns the input prompt by subsituting into
116 """Returns the input prompt by subsituting into
122 self.input_prompt_template
117 self.input_prompt_template
123 """
118 """
124 pass
119 pass
125
120
126 def output_prompt(number=''):
121 def output_prompt(number=''):
127 """Returns the output prompt by subsituting into
122 """Returns the output prompt by subsituting into
128 self.output_prompt_template
123 self.output_prompt_template
129 """
124 """
130
125
131 pass
126 pass
132
127
133 def continuation_prompt():
128 def continuation_prompt():
134 """Returns the continuation prompt by subsituting into
129 """Returns the continuation prompt by subsituting into
135 self.continuation_prompt_template
130 self.continuation_prompt_template
136 """
131 """
137
132
138 pass
133 pass
139
134
140 def is_complete(block):
135 def is_complete(block):
141 """Returns True if block is complete, False otherwise."""
136 """Returns True if block is complete, False otherwise."""
142
137
143 pass
138 pass
144
139
145 def compile_ast(block):
140 def compile_ast(block):
146 """Compiles block to an _ast.AST"""
141 """Compiles block to an _ast.AST"""
147
142
148 pass
143 pass
149
144
150
145
151 def get_history_previous(currentBlock):
146 def get_history_previous(currentBlock):
152 """Returns the block previous in the history. Saves currentBlock if
147 """Returns the block previous in the history. Saves currentBlock if
153 the history_cursor is currently at the end of the input history"""
148 the history_cursor is currently at the end of the input history"""
154 pass
149 pass
155
150
156 def get_history_next():
151 def get_history_next():
157 """Returns the next block in the history."""
152 """Returns the next block in the history."""
158
153
159 pass
154 pass
160
155
161
156
162 class FrontEndBase(object):
157 class FrontEndBase(object):
163 """
158 """
164 FrontEndBase manages the state tasks for a CLI frontend:
159 FrontEndBase manages the state tasks for a CLI frontend:
165 - Input and output history management
160 - Input and output history management
166 - Input/continuation and output prompt generation
161 - Input/continuation and output prompt generation
167
162
168 Some issues (due to possibly unavailable engine):
163 Some issues (due to possibly unavailable engine):
169 - How do we get the current cell number for the engine?
164 - How do we get the current cell number for the engine?
170 - How do we handle completions?
165 - How do we handle completions?
171 """
166 """
172
167
173 history_cursor = 0
168 history_cursor = 0
174
169
175 current_indent_level = 0
170 current_indent_level = 0
176
171
177
172
178 input_prompt_template = string.Template(rc.prompt_in1)
173 input_prompt_template = string.Template(rc.prompt_in1)
179 output_prompt_template = string.Template(rc.prompt_out)
174 output_prompt_template = string.Template(rc.prompt_out)
180 continuation_prompt_template = string.Template(rc.prompt_in2)
175 continuation_prompt_template = string.Template(rc.prompt_in2)
181
176
182 def __init__(self, shell=None, history=None):
177 def __init__(self, shell=None, history=None):
183 self.shell = shell
178 self.shell = shell
184 if history is None:
179 if history is None:
185 self.history = FrontEndHistory(input_cache=[''])
180 self.history = FrontEndHistory(input_cache=[''])
186 else:
181 else:
187 self.history = history
182 self.history = history
188
183
189
184
190 def input_prompt(self, number=''):
185 def input_prompt(self, number=''):
191 """Returns the current input prompt
186 """Returns the current input prompt
192
187
193 It would be great to use ipython1.core.prompts.Prompt1 here
188 It would be great to use ipython1.core.prompts.Prompt1 here
194 """
189 """
195 return self.input_prompt_template.safe_substitute({'number':number})
190 return self.input_prompt_template.safe_substitute({'number':number})
196
191
197
192
198 def continuation_prompt(self):
193 def continuation_prompt(self):
199 """Returns the current continuation prompt"""
194 """Returns the current continuation prompt"""
200
195
201 return self.continuation_prompt_template.safe_substitute()
196 return self.continuation_prompt_template.safe_substitute()
202
197
203 def output_prompt(self, number=''):
198 def output_prompt(self, number=''):
204 """Returns the output prompt for result"""
199 """Returns the output prompt for result"""
205
200
206 return self.output_prompt_template.safe_substitute({'number':number})
201 return self.output_prompt_template.safe_substitute({'number':number})
207
202
208
203
209 def is_complete(self, block):
204 def is_complete(self, block):
210 """Determine if block is complete.
205 """Determine if block is complete.
211
206
212 Parameters
207 Parameters
213 block : string
208 block : string
214
209
215 Result
210 Result
216 True if block can be sent to the engine without compile errors.
211 True if block can be sent to the engine without compile errors.
217 False otherwise.
212 False otherwise.
218 """
213 """
219
214
220 try:
215 try:
221 ast = self.compile_ast(block)
216 ast = self.compile_ast(block)
222 except:
217 except:
223 return False
218 return False
224
219
225 lines = block.split('\n')
220 lines = block.split('\n')
226 return (len(lines)==1 or str(lines[-1])=='')
221 return (len(lines)==1 or str(lines[-1])=='')
227
222
228
223
229 def compile_ast(self, block):
224 def compile_ast(self, block):
230 """Compile block to an AST
225 """Compile block to an AST
231
226
232 Parameters:
227 Parameters:
233 block : str
228 block : str
234
229
235 Result:
230 Result:
236 AST
231 AST
237
232
238 Throws:
233 Throws:
239 Exception if block cannot be compiled
234 Exception if block cannot be compiled
240 """
235 """
241
236
242 return compile(block, "<string>", "exec", _ast.PyCF_ONLY_AST)
237 return compile(block, "<string>", "exec", _ast.PyCF_ONLY_AST)
243
238
244
239
245 def execute(self, block, blockID=None):
240 def execute(self, block, blockID=None):
246 """Execute the block and return the result.
241 """Execute the block and return the result.
247
242
248 Parameters:
243 Parameters:
249 block : {str, AST}
244 block : {str, AST}
250 blockID : any
245 blockID : any
251 Caller may provide an ID to identify this block.
246 Caller may provide an ID to identify this block.
252 result['blockID'] := blockID
247 result['blockID'] := blockID
253
248
254 Result:
249 Result:
255 Deferred result of self.interpreter.execute
250 Deferred result of self.interpreter.execute
256 """
251 """
257
252
258 if(not self.is_complete(block)):
253 if(not self.is_complete(block)):
259 raise Exception("Block is not compilable")
254 raise Exception("Block is not compilable")
260
255
261 if(blockID == None):
256 if(blockID == None):
262 blockID = uuid.uuid4() #random UUID
257 blockID = uuid.uuid4() #random UUID
263
258
264 try:
259 try:
265 result = self.shell.execute(block)
260 result = self.shell.execute(block)
266 except Exception,e:
261 except Exception,e:
267 e = self._add_block_id_for_failure(e, blockID=blockID)
262 e = self._add_block_id_for_failure(e, blockID=blockID)
268 e = self.update_cell_prompt(e, blockID=blockID)
263 e = self.update_cell_prompt(e, blockID=blockID)
269 e = self.render_error(e)
264 e = self.render_error(e)
270 else:
265 else:
271 result = self._add_block_id_for_result(result, blockID=blockID)
266 result = self._add_block_id_for_result(result, blockID=blockID)
272 result = self.update_cell_prompt(result, blockID=blockID)
267 result = self.update_cell_prompt(result, blockID=blockID)
273 result = self.render_result(result)
268 result = self.render_result(result)
274
269
275 return result
270 return result
276
271
277
272
278 def _add_block_id_for_result(self, result, blockID):
273 def _add_block_id_for_result(self, result, blockID):
279 """Add the blockID to result or failure. Unfortunatley, we have to
274 """Add the blockID to result or failure. Unfortunatley, we have to
280 treat failures differently than result dicts.
275 treat failures differently than result dicts.
281 """
276 """
282
277
283 result['blockID'] = blockID
278 result['blockID'] = blockID
284
279
285 return result
280 return result
286
281
287 def _add_block_id_for_failure(self, failure, blockID):
282 def _add_block_id_for_failure(self, failure, blockID):
288 """_add_block_id_for_failure"""
283 """_add_block_id_for_failure"""
289
290 failure.blockID = blockID
284 failure.blockID = blockID
291 return failure
285 return failure
292
286
293
287
294 def _add_history(self, result, block=None):
288 def _add_history(self, result, block=None):
295 """Add block to the history"""
289 """Add block to the history"""
296
290
297 assert(block != None)
291 assert(block != None)
298 self.history.add_items([block])
292 self.history.add_items([block])
299 self.history_cursor += 1
293 self.history_cursor += 1
300
294
301 return result
295 return result
302
296
303
297
304 def get_history_previous(self, currentBlock):
298 def get_history_previous(self, currentBlock):
305 """ Returns previous history string and decrement history cursor.
299 """ Returns previous history string and decrement history cursor.
306 """
300 """
307 command = self.history.get_history_item(self.history_cursor - 1)
301 command = self.history.get_history_item(self.history_cursor - 1)
308
302
309 if command is not None:
303 if command is not None:
310 if(self.history_cursor == len(self.history.input_cache)):
304 if(self.history_cursor == len(self.history.input_cache)):
311 self.history.input_cache[self.history_cursor] = currentBlock
305 self.history.input_cache[self.history_cursor] = currentBlock
312 self.history_cursor -= 1
306 self.history_cursor -= 1
313 return command
307 return command
314
308
315
309
316 def get_history_next(self):
310 def get_history_next(self):
317 """ Returns next history string and increment history cursor.
311 """ Returns next history string and increment history cursor.
318 """
312 """
319 command = self.history.get_history_item(self.history_cursor+1)
313 command = self.history.get_history_item(self.history_cursor+1)
320
314
321 if command is not None:
315 if command is not None:
322 self.history_cursor += 1
316 self.history_cursor += 1
323 return command
317 return command
324
318
325 ###
319 ###
326 # Subclasses probably want to override these methods...
320 # Subclasses probably want to override these methods...
327 ###
321 ###
328
322
329 def update_cell_prompt(self, result, blockID=None):
323 def update_cell_prompt(self, result, blockID=None):
330 """Subclass may override to update the input prompt for a block.
324 """Subclass may override to update the input prompt for a block.
331 Since this method will be called as a
325 Since this method will be called as a
332 twisted.internet.defer.Deferred's callback, implementations should
326 twisted.internet.defer.Deferred's callback, implementations should
333 return result when finished.
327 return result when finished.
334 """
328 """
335
329
336 return result
330 return result
337
331
338
332
339 def render_result(self, result):
333 def render_result(self, result):
340 """Subclasses must override to render result. Since this method will
334 """Subclasses must override to render result. Since this method will
341 be called as a twisted.internet.defer.Deferred's callback,
335 be called as a twisted.internet.defer.Deferred's callback,
342 implementations should return result when finished.
336 implementations should return result when finished.
343 """
337 """
344
338
345 return result
339 return result
346
340
347
341
348 def render_error(self, failure):
342 def render_error(self, failure):
349 """Subclasses must override to render the failure. Since this method
343 """Subclasses must override to render the failure. Since this method
350 will be called as a twisted.internet.defer.Deferred's callback,
344 will be called as a twisted.internet.defer.Deferred's callback,
351 implementations should return result when finished.
345 implementations should return result when finished.
352 """
346 """
353
347
354 return failure
348 return failure
355
349
356
350
357
351
358 class AsyncFrontEndBase(FrontEndBase):
352 class AsyncFrontEndBase(FrontEndBase):
359 """
353 """
360 Overrides FrontEndBase to wrap execute in a deferred result.
354 Overrides FrontEndBase to wrap execute in a deferred result.
361 All callbacks are made as callbacks on the deferred result.
355 All callbacks are made as callbacks on the deferred result.
362 """
356 """
363
357
364 implements(IFrontEnd)
358 implements(IFrontEnd)
365 classProvides(IFrontEndFactory)
359 classProvides(IFrontEndFactory)
366
360
367 def __init__(self, engine=None, history=None):
361 def __init__(self, engine=None, history=None):
368 assert(engine==None or IEngineCore.providedBy(engine))
362 assert(engine==None or IEngineCore.providedBy(engine))
369 self.engine = IEngineCore(engine)
363 self.engine = IEngineCore(engine)
370 if history is None:
364 if history is None:
371 self.history = FrontEndHistory(input_cache=[''])
365 self.history = FrontEndHistory(input_cache=[''])
372 else:
366 else:
373 self.history = history
367 self.history = history
374
368
375
369
376 def execute(self, block, blockID=None):
370 def execute(self, block, blockID=None):
377 """Execute the block and return the deferred result.
371 """Execute the block and return the deferred result.
378
372
379 Parameters:
373 Parameters:
380 block : {str, AST}
374 block : {str, AST}
381 blockID : any
375 blockID : any
382 Caller may provide an ID to identify this block.
376 Caller may provide an ID to identify this block.
383 result['blockID'] := blockID
377 result['blockID'] := blockID
384
378
385 Result:
379 Result:
386 Deferred result of self.interpreter.execute
380 Deferred result of self.interpreter.execute
387 """
381 """
388
382
389 if(not self.is_complete(block)):
383 if(not self.is_complete(block)):
384 from twisted.python.failure import Failure
390 return Failure(Exception("Block is not compilable"))
385 return Failure(Exception("Block is not compilable"))
391
386
392 if(blockID == None):
387 if(blockID == None):
393 blockID = uuid.uuid4() #random UUID
388 blockID = uuid.uuid4() #random UUID
394
389
395 d = self.engine.execute(block)
390 d = self.engine.execute(block)
396 d.addCallback(self._add_history, block=block)
391 d.addCallback(self._add_history, block=block)
397 d.addCallbacks(self._add_block_id_for_result,
392 d.addCallback(self._add_block_id_for_result, blockID)
398 errback=self._add_block_id_for_failure,
393 d.addErrback(self._add_block_id_for_failure, blockID)
399 callbackArgs=(blockID,),
400 errbackArgs=(blockID,))
401 d.addBoth(self.update_cell_prompt, blockID=blockID)
394 d.addBoth(self.update_cell_prompt, blockID=blockID)
402 d.addCallbacks(self.render_result,
395 d.addCallbacks(self.render_result,
403 errback=self.render_error)
396 errback=self.render_error)
404
397
405 return d
398 return d
406
399
407
400
@@ -1,878 +1,903
1 # encoding: utf-8
1 # encoding: utf-8
2 # -*- test-case-name: IPython.kernel.tests.test_engineservice -*-
2 # -*- test-case-name: IPython.kernel.tests.test_engineservice -*-
3
3
4 """A Twisted Service Representation of the IPython core.
4 """A Twisted Service Representation of the IPython core.
5
5
6 The IPython Core exposed to the network is called the Engine. Its
6 The IPython Core exposed to the network is called the Engine. Its
7 representation in Twisted in the EngineService. Interfaces and adapters
7 representation in Twisted in the EngineService. Interfaces and adapters
8 are used to abstract out the details of the actual network protocol used.
8 are used to abstract out the details of the actual network protocol used.
9 The EngineService is an Engine that knows nothing about the actual protocol
9 The EngineService is an Engine that knows nothing about the actual protocol
10 used.
10 used.
11
11
12 The EngineService is exposed with various network protocols in modules like:
12 The EngineService is exposed with various network protocols in modules like:
13
13
14 enginepb.py
14 enginepb.py
15 enginevanilla.py
15 enginevanilla.py
16
16
17 As of 12/12/06 the classes in this module have been simplified greatly. It was
17 As of 12/12/06 the classes in this module have been simplified greatly. It was
18 felt that we had over-engineered things. To improve the maintainability of the
18 felt that we had over-engineered things. To improve the maintainability of the
19 code we have taken out the ICompleteEngine interface and the completeEngine
19 code we have taken out the ICompleteEngine interface and the completeEngine
20 method that automatically added methods to engines.
20 method that automatically added methods to engines.
21
21
22 """
22 """
23
23
24 __docformat__ = "restructuredtext en"
24 __docformat__ = "restructuredtext en"
25
25
26 #-------------------------------------------------------------------------------
26 #-------------------------------------------------------------------------------
27 # Copyright (C) 2008 The IPython Development Team
27 # Copyright (C) 2008 The IPython Development Team
28 #
28 #
29 # Distributed under the terms of the BSD License. The full license is in
29 # Distributed under the terms of the BSD License. The full license is in
30 # the file COPYING, distributed as part of this software.
30 # the file COPYING, distributed as part of this software.
31 #-------------------------------------------------------------------------------
31 #-------------------------------------------------------------------------------
32
32
33 #-------------------------------------------------------------------------------
33 #-------------------------------------------------------------------------------
34 # Imports
34 # Imports
35 #-------------------------------------------------------------------------------
35 #-------------------------------------------------------------------------------
36
36
37 import os, sys, copy
37 import os, sys, copy
38 import cPickle as pickle
38 import cPickle as pickle
39 from new import instancemethod
39 from new import instancemethod
40
40
41 from twisted.application import service
41 from twisted.application import service
42 from twisted.internet import defer, reactor
42 from twisted.internet import defer, reactor
43 from twisted.python import log, failure, components
43 from twisted.python import log, failure, components
44 import zope.interface as zi
44 import zope.interface as zi
45
45
46 from IPython.kernel.core.interpreter import Interpreter
46 from IPython.kernel.core.interpreter import Interpreter
47 from IPython.kernel import newserialized, error, util
47 from IPython.kernel import newserialized, error, util
48 from IPython.kernel.util import printer
48 from IPython.kernel.util import printer
49 from IPython.kernel.twistedutil import gatherBoth, DeferredList
49 from IPython.kernel.twistedutil import gatherBoth, DeferredList
50 from IPython.kernel import codeutil
50 from IPython.kernel import codeutil
51
51
52
52
53 #-------------------------------------------------------------------------------
53 #-------------------------------------------------------------------------------
54 # Interface specification for the Engine
54 # Interface specification for the Engine
55 #-------------------------------------------------------------------------------
55 #-------------------------------------------------------------------------------
56
56
57 class IEngineCore(zi.Interface):
57 class IEngineCore(zi.Interface):
58 """The minimal required interface for the IPython Engine.
58 """The minimal required interface for the IPython Engine.
59
59
60 This interface provides a formal specification of the IPython core.
60 This interface provides a formal specification of the IPython core.
61 All these methods should return deferreds regardless of what side of a
61 All these methods should return deferreds regardless of what side of a
62 network connection they are on.
62 network connection they are on.
63
63
64 In general, this class simply wraps a shell class and wraps its return
64 In general, this class simply wraps a shell class and wraps its return
65 values as Deferred objects. If the underlying shell class method raises
65 values as Deferred objects. If the underlying shell class method raises
66 an exception, this class should convert it to a twisted.failure.Failure
66 an exception, this class should convert it to a twisted.failure.Failure
67 that will be propagated along the Deferred's errback chain.
67 that will be propagated along the Deferred's errback chain.
68
68
69 In addition, Failures are aggressive. By this, we mean that if a method
69 In addition, Failures are aggressive. By this, we mean that if a method
70 is performing multiple actions (like pulling multiple object) if any
70 is performing multiple actions (like pulling multiple object) if any
71 single one fails, the entire method will fail with that Failure. It is
71 single one fails, the entire method will fail with that Failure. It is
72 all or nothing.
72 all or nothing.
73 """
73 """
74
74
75 id = zi.interface.Attribute("the id of the Engine object")
75 id = zi.interface.Attribute("the id of the Engine object")
76 properties = zi.interface.Attribute("A dict of properties of the Engine")
76 properties = zi.interface.Attribute("A dict of properties of the Engine")
77
77
78 def execute(lines):
78 def execute(lines):
79 """Execute lines of Python code.
79 """Execute lines of Python code.
80
80
81 Returns a dictionary with keys (id, number, stdin, stdout, stderr)
81 Returns a dictionary with keys (id, number, stdin, stdout, stderr)
82 upon success.
82 upon success.
83
83
84 Returns a failure object if the execution of lines raises an exception.
84 Returns a failure object if the execution of lines raises an exception.
85 """
85 """
86
86
87 def push(namespace):
87 def push(namespace):
88 """Push dict namespace into the user's namespace.
88 """Push dict namespace into the user's namespace.
89
89
90 Returns a deferred to None or a failure.
90 Returns a deferred to None or a failure.
91 """
91 """
92
92
93 def pull(keys):
93 def pull(keys):
94 """Pulls values out of the user's namespace by keys.
94 """Pulls values out of the user's namespace by keys.
95
95
96 Returns a deferred to a tuple objects or a single object.
96 Returns a deferred to a tuple objects or a single object.
97
97
98 Raises NameError if any one of objects doess not exist.
98 Raises NameError if any one of objects doess not exist.
99 """
99 """
100
100
101 def push_function(namespace):
101 def push_function(namespace):
102 """Push a dict of key, function pairs into the user's namespace.
102 """Push a dict of key, function pairs into the user's namespace.
103
103
104 Returns a deferred to None or a failure."""
104 Returns a deferred to None or a failure."""
105
105
106 def pull_function(keys):
106 def pull_function(keys):
107 """Pulls functions out of the user's namespace by keys.
107 """Pulls functions out of the user's namespace by keys.
108
108
109 Returns a deferred to a tuple of functions or a single function.
109 Returns a deferred to a tuple of functions or a single function.
110
110
111 Raises NameError if any one of the functions does not exist.
111 Raises NameError if any one of the functions does not exist.
112 """
112 """
113
113
114 def get_result(i=None):
114 def get_result(i=None):
115 """Get the stdin/stdout/stderr of command i.
115 """Get the stdin/stdout/stderr of command i.
116
116
117 Returns a deferred to a dict with keys
117 Returns a deferred to a dict with keys
118 (id, number, stdin, stdout, stderr).
118 (id, number, stdin, stdout, stderr).
119
119
120 Raises IndexError if command i does not exist.
120 Raises IndexError if command i does not exist.
121 Raises TypeError if i in not an int.
121 Raises TypeError if i in not an int.
122 """
122 """
123
123
124 def reset():
124 def reset():
125 """Reset the shell.
125 """Reset the shell.
126
126
127 This clears the users namespace. Won't cause modules to be
127 This clears the users namespace. Won't cause modules to be
128 reloaded. Should also re-initialize certain variables like id.
128 reloaded. Should also re-initialize certain variables like id.
129 """
129 """
130
130
131 def kill():
131 def kill():
132 """Kill the engine by stopping the reactor."""
132 """Kill the engine by stopping the reactor."""
133
133
134 def keys():
134 def keys():
135 """Return the top level variables in the users namspace.
135 """Return the top level variables in the users namspace.
136
136
137 Returns a deferred to a dict."""
137 Returns a deferred to a dict."""
138
138
139
139
140 class IEngineSerialized(zi.Interface):
140 class IEngineSerialized(zi.Interface):
141 """Push/Pull methods that take Serialized objects.
141 """Push/Pull methods that take Serialized objects.
142
142
143 All methods should return deferreds.
143 All methods should return deferreds.
144 """
144 """
145
145
146 def push_serialized(namespace):
146 def push_serialized(namespace):
147 """Push a dict of keys and Serialized objects into the user's namespace."""
147 """Push a dict of keys and Serialized objects into the user's namespace."""
148
148
149 def pull_serialized(keys):
149 def pull_serialized(keys):
150 """Pull objects by key from the user's namespace as Serialized.
150 """Pull objects by key from the user's namespace as Serialized.
151
151
152 Returns a list of or one Serialized.
152 Returns a list of or one Serialized.
153
153
154 Raises NameError is any one of the objects does not exist.
154 Raises NameError is any one of the objects does not exist.
155 """
155 """
156
156
157
157
158 class IEngineProperties(zi.Interface):
158 class IEngineProperties(zi.Interface):
159 """Methods for access to the properties object of an Engine"""
159 """Methods for access to the properties object of an Engine"""
160
160
161 properties = zi.Attribute("A StrictDict object, containing the properties")
161 properties = zi.Attribute("A StrictDict object, containing the properties")
162
162
163 def set_properties(properties):
163 def set_properties(properties):
164 """set properties by key and value"""
164 """set properties by key and value"""
165
165
166 def get_properties(keys=None):
166 def get_properties(keys=None):
167 """get a list of properties by `keys`, if no keys specified, get all"""
167 """get a list of properties by `keys`, if no keys specified, get all"""
168
168
169 def del_properties(keys):
169 def del_properties(keys):
170 """delete properties by `keys`"""
170 """delete properties by `keys`"""
171
171
172 def has_properties(keys):
172 def has_properties(keys):
173 """get a list of bool values for whether `properties` has `keys`"""
173 """get a list of bool values for whether `properties` has `keys`"""
174
174
175 def clear_properties():
175 def clear_properties():
176 """clear the properties dict"""
176 """clear the properties dict"""
177
177
178 class IEngineBase(IEngineCore, IEngineSerialized, IEngineProperties):
178 class IEngineBase(IEngineCore, IEngineSerialized, IEngineProperties):
179 """The basic engine interface that EngineService will implement.
179 """The basic engine interface that EngineService will implement.
180
180
181 This exists so it is easy to specify adapters that adapt to and from the
181 This exists so it is easy to specify adapters that adapt to and from the
182 API that the basic EngineService implements.
182 API that the basic EngineService implements.
183 """
183 """
184 pass
184 pass
185
185
186 class IEngineQueued(IEngineBase):
186 class IEngineQueued(IEngineBase):
187 """Interface for adding a queue to an IEngineBase.
187 """Interface for adding a queue to an IEngineBase.
188
188
189 This interface extends the IEngineBase interface to add methods for managing
189 This interface extends the IEngineBase interface to add methods for managing
190 the engine's queue. The implicit details of this interface are that the
190 the engine's queue. The implicit details of this interface are that the
191 execution of all methods declared in IEngineBase should appropriately be
191 execution of all methods declared in IEngineBase should appropriately be
192 put through a queue before execution.
192 put through a queue before execution.
193
193
194 All methods should return deferreds.
194 All methods should return deferreds.
195 """
195 """
196
196
197 def clear_queue():
197 def clear_queue():
198 """Clear the queue."""
198 """Clear the queue."""
199
199
200 def queue_status():
200 def queue_status():
201 """Get the queued and pending commands in the queue."""
201 """Get the queued and pending commands in the queue."""
202
202
203 def register_failure_observer(obs):
203 def register_failure_observer(obs):
204 """Register an observer of pending Failures.
204 """Register an observer of pending Failures.
205
205
206 The observer must implement IFailureObserver.
206 The observer must implement IFailureObserver.
207 """
207 """
208
208
209 def unregister_failure_observer(obs):
209 def unregister_failure_observer(obs):
210 """Unregister an observer of pending Failures."""
210 """Unregister an observer of pending Failures."""
211
211
212
212
213 class IEngineThreaded(zi.Interface):
213 class IEngineThreaded(zi.Interface):
214 """A place holder for threaded commands.
214 """A place holder for threaded commands.
215
215
216 All methods should return deferreds.
216 All methods should return deferreds.
217 """
217 """
218 pass
218 pass
219
219
220
220
221 #-------------------------------------------------------------------------------
221 #-------------------------------------------------------------------------------
222 # Functions and classes to implement the EngineService
222 # Functions and classes to implement the EngineService
223 #-------------------------------------------------------------------------------
223 #-------------------------------------------------------------------------------
224
224
225
225
226 class StrictDict(dict):
226 class StrictDict(dict):
227 """This is a strict copying dictionary for use as the interface to the
227 """This is a strict copying dictionary for use as the interface to the
228 properties of an Engine.
228 properties of an Engine.
229
229
230 :IMPORTANT:
230 :IMPORTANT:
231 This object copies the values you set to it, and returns copies to you
231 This object copies the values you set to it, and returns copies to you
232 when you request them. The only way to change properties os explicitly
232 when you request them. The only way to change properties os explicitly
233 through the setitem and getitem of the dictionary interface.
233 through the setitem and getitem of the dictionary interface.
234
234
235 Example:
235 Example:
236 >>> e = get_engine(id)
236 >>> e = get_engine(id)
237 >>> L = [1,2,3]
237 >>> L = [1,2,3]
238 >>> e.properties['L'] = L
238 >>> e.properties['L'] = L
239 >>> L == e.properties['L']
239 >>> L == e.properties['L']
240 True
240 True
241 >>> L.append(99)
241 >>> L.append(99)
242 >>> L == e.properties['L']
242 >>> L == e.properties['L']
243 False
243 False
244
244
245 Note that getitem copies, so calls to methods of objects do not affect
245 Note that getitem copies, so calls to methods of objects do not affect
246 the properties, as seen here:
246 the properties, as seen here:
247
247
248 >>> e.properties[1] = range(2)
248 >>> e.properties[1] = range(2)
249 >>> print e.properties[1]
249 >>> print e.properties[1]
250 [0, 1]
250 [0, 1]
251 >>> e.properties[1].append(2)
251 >>> e.properties[1].append(2)
252 >>> print e.properties[1]
252 >>> print e.properties[1]
253 [0, 1]
253 [0, 1]
254 """
254 """
255 def __init__(self, *args, **kwargs):
255 def __init__(self, *args, **kwargs):
256 dict.__init__(self, *args, **kwargs)
256 dict.__init__(self, *args, **kwargs)
257 self.modified = True
257 self.modified = True
258
258
259 def __getitem__(self, key):
259 def __getitem__(self, key):
260 return copy.deepcopy(dict.__getitem__(self, key))
260 return copy.deepcopy(dict.__getitem__(self, key))
261
261
262 def __setitem__(self, key, value):
262 def __setitem__(self, key, value):
263 # check if this entry is valid for transport around the network
263 # check if this entry is valid for transport around the network
264 # and copying
264 # and copying
265 try:
265 try:
266 pickle.dumps(key, 2)
266 pickle.dumps(key, 2)
267 pickle.dumps(value, 2)
267 pickle.dumps(value, 2)
268 newvalue = copy.deepcopy(value)
268 newvalue = copy.deepcopy(value)
269 except:
269 except:
270 raise error.InvalidProperty(value)
270 raise error.InvalidProperty(value)
271 dict.__setitem__(self, key, newvalue)
271 dict.__setitem__(self, key, newvalue)
272 self.modified = True
272 self.modified = True
273
273
274 def __delitem__(self, key):
274 def __delitem__(self, key):
275 dict.__delitem__(self, key)
275 dict.__delitem__(self, key)
276 self.modified = True
276 self.modified = True
277
277
278 def update(self, dikt):
278 def update(self, dikt):
279 for k,v in dikt.iteritems():
279 for k,v in dikt.iteritems():
280 self[k] = v
280 self[k] = v
281
281
282 def pop(self, key):
282 def pop(self, key):
283 self.modified = True
283 self.modified = True
284 return dict.pop(self, key)
284 return dict.pop(self, key)
285
285
286 def popitem(self):
286 def popitem(self):
287 self.modified = True
287 self.modified = True
288 return dict.popitem(self)
288 return dict.popitem(self)
289
289
290 def clear(self):
290 def clear(self):
291 self.modified = True
291 self.modified = True
292 dict.clear(self)
292 dict.clear(self)
293
293
294 def subDict(self, *keys):
294 def subDict(self, *keys):
295 d = {}
295 d = {}
296 for key in keys:
296 for key in keys:
297 d[key] = self[key]
297 d[key] = self[key]
298 return d
298 return d
299
299
300
300
301
301
302 class EngineAPI(object):
302 class EngineAPI(object):
303 """This is the object through which the user can edit the `properties`
303 """This is the object through which the user can edit the `properties`
304 attribute of an Engine.
304 attribute of an Engine.
305 The Engine Properties object copies all object in and out of itself.
305 The Engine Properties object copies all object in and out of itself.
306 See the EngineProperties object for details.
306 See the EngineProperties object for details.
307 """
307 """
308 _fix=False
308 _fix=False
309 def __init__(self, id):
309 def __init__(self, id):
310 self.id = id
310 self.id = id
311 self.properties = StrictDict()
311 self.properties = StrictDict()
312 self._fix=True
312 self._fix=True
313
313
314 def __setattr__(self, k,v):
314 def __setattr__(self, k,v):
315 if self._fix:
315 if self._fix:
316 raise error.KernelError("I am protected!")
316 raise error.KernelError("I am protected!")
317 else:
317 else:
318 object.__setattr__(self, k, v)
318 object.__setattr__(self, k, v)
319
319
320 def __delattr__(self, key):
320 def __delattr__(self, key):
321 raise error.KernelError("I am protected!")
321 raise error.KernelError("I am protected!")
322
322
323
323
324 _apiDict = {}
324 _apiDict = {}
325
325
326 def get_engine(id):
326 def get_engine(id):
327 """Get the Engine API object, whcih currently just provides the properties
327 """Get the Engine API object, whcih currently just provides the properties
328 object, by ID"""
328 object, by ID"""
329 global _apiDict
329 global _apiDict
330 if not _apiDict.get(id):
330 if not _apiDict.get(id):
331 _apiDict[id] = EngineAPI(id)
331 _apiDict[id] = EngineAPI(id)
332 return _apiDict[id]
332 return _apiDict[id]
333
333
334 def drop_engine(id):
334 def drop_engine(id):
335 """remove an engine"""
335 """remove an engine"""
336 global _apiDict
336 global _apiDict
337 if _apiDict.has_key(id):
337 if _apiDict.has_key(id):
338 del _apiDict[id]
338 del _apiDict[id]
339
339
340 class EngineService(object, service.Service):
340 class EngineService(object, service.Service):
341 """Adapt a IPython shell into a IEngine implementing Twisted Service."""
341 """Adapt a IPython shell into a IEngine implementing Twisted Service."""
342
342
343 zi.implements(IEngineBase)
343 zi.implements(IEngineBase)
344 name = 'EngineService'
344 name = 'EngineService'
345
345
346 def __init__(self, shellClass=Interpreter, mpi=None):
346 def __init__(self, shellClass=Interpreter, mpi=None):
347 """Create an EngineService.
347 """Create an EngineService.
348
348
349 shellClass: something that implements IInterpreter or core1
349 shellClass: something that implements IInterpreter or core1
350 mpi: an mpi module that has rank and size attributes
350 mpi: an mpi module that has rank and size attributes
351 """
351 """
352 self.shellClass = shellClass
352 self.shellClass = shellClass
353 self.shell = self.shellClass()
353 self.shell = self.shellClass()
354 self.mpi = mpi
354 self.mpi = mpi
355 self.id = None
355 self.id = None
356 self.properties = get_engine(self.id).properties
356 self.properties = get_engine(self.id).properties
357 if self.mpi is not None:
357 if self.mpi is not None:
358 log.msg("MPI started with rank = %i and size = %i" %
358 log.msg("MPI started with rank = %i and size = %i" %
359 (self.mpi.rank, self.mpi.size))
359 (self.mpi.rank, self.mpi.size))
360 self.id = self.mpi.rank
360 self.id = self.mpi.rank
361 self._seedNamespace()
361 self._seedNamespace()
362
362
363 # Make id a property so that the shell can get the updated id
363 # Make id a property so that the shell can get the updated id
364
364
365 def _setID(self, id):
365 def _setID(self, id):
366 self._id = id
366 self._id = id
367 self.properties = get_engine(id).properties
367 self.properties = get_engine(id).properties
368 self.shell.push({'id': id})
368 self.shell.push({'id': id})
369
369
370 def _getID(self):
370 def _getID(self):
371 return self._id
371 return self._id
372
372
373 id = property(_getID, _setID)
373 id = property(_getID, _setID)
374
374
375 def _seedNamespace(self):
375 def _seedNamespace(self):
376 self.shell.push({'mpi': self.mpi, 'id' : self.id})
376 self.shell.push({'mpi': self.mpi, 'id' : self.id})
377
377
378 def executeAndRaise(self, msg, callable, *args, **kwargs):
378 def executeAndRaise(self, msg, callable, *args, **kwargs):
379 """Call a method of self.shell and wrap any exception."""
379 """Call a method of self.shell and wrap any exception."""
380 d = defer.Deferred()
380 d = defer.Deferred()
381 try:
381 try:
382 result = callable(*args, **kwargs)
382 result = callable(*args, **kwargs)
383 except:
383 except:
384 # This gives the following:
384 # This gives the following:
385 # et=exception class
385 # et=exception class
386 # ev=exception class instance
386 # ev=exception class instance
387 # tb=traceback object
387 # tb=traceback object
388 et,ev,tb = sys.exc_info()
388 et,ev,tb = sys.exc_info()
389 # This call adds attributes to the exception value
389 # This call adds attributes to the exception value
390 et,ev,tb = self.shell.formatTraceback(et,ev,tb,msg)
390 et,ev,tb = self.shell.formatTraceback(et,ev,tb,msg)
391 # Add another attribute
391 # Add another attribute
392 ev._ipython_engine_info = msg
392 ev._ipython_engine_info = msg
393 f = failure.Failure(ev,et,None)
393 f = failure.Failure(ev,et,None)
394 d.errback(f)
394 d.errback(f)
395 else:
395 else:
396 d.callback(result)
396 d.callback(result)
397
397
398 return d
398 return d
399
399
400
400 # The IEngine methods. See the interface for documentation.
401 # The IEngine methods. See the interface for documentation.
401
402
402 def execute(self, lines):
403 def execute(self, lines):
403 msg = {'engineid':self.id,
404 msg = {'engineid':self.id,
404 'method':'execute',
405 'method':'execute',
405 'args':[lines]}
406 'args':[lines]}
406 d = self.executeAndRaise(msg, self.shell.execute, lines)
407 d = self.executeAndRaise(msg, self.shell.execute, lines)
407 d.addCallback(self.addIDToResult)
408 d.addCallback(self.addIDToResult)
408 return d
409 return d
409
410
410 def addIDToResult(self, result):
411 def addIDToResult(self, result):
411 result['id'] = self.id
412 result['id'] = self.id
412 return result
413 return result
413
414
414 def push(self, namespace):
415 def push(self, namespace):
415 msg = {'engineid':self.id,
416 msg = {'engineid':self.id,
416 'method':'push',
417 'method':'push',
417 'args':[repr(namespace.keys())]}
418 'args':[repr(namespace.keys())]}
418 d = self.executeAndRaise(msg, self.shell.push, namespace)
419 d = self.executeAndRaise(msg, self.shell.push, namespace)
419 return d
420 return d
420
421
421 def pull(self, keys):
422 def pull(self, keys):
422 msg = {'engineid':self.id,
423 msg = {'engineid':self.id,
423 'method':'pull',
424 'method':'pull',
424 'args':[repr(keys)]}
425 'args':[repr(keys)]}
425 d = self.executeAndRaise(msg, self.shell.pull, keys)
426 d = self.executeAndRaise(msg, self.shell.pull, keys)
426 return d
427 return d
427
428
428 def push_function(self, namespace):
429 def push_function(self, namespace):
429 msg = {'engineid':self.id,
430 msg = {'engineid':self.id,
430 'method':'push_function',
431 'method':'push_function',
431 'args':[repr(namespace.keys())]}
432 'args':[repr(namespace.keys())]}
432 d = self.executeAndRaise(msg, self.shell.push_function, namespace)
433 d = self.executeAndRaise(msg, self.shell.push_function, namespace)
433 return d
434 return d
434
435
435 def pull_function(self, keys):
436 def pull_function(self, keys):
436 msg = {'engineid':self.id,
437 msg = {'engineid':self.id,
437 'method':'pull_function',
438 'method':'pull_function',
438 'args':[repr(keys)]}
439 'args':[repr(keys)]}
439 d = self.executeAndRaise(msg, self.shell.pull_function, keys)
440 d = self.executeAndRaise(msg, self.shell.pull_function, keys)
440 return d
441 return d
441
442
442 def get_result(self, i=None):
443 def get_result(self, i=None):
443 msg = {'engineid':self.id,
444 msg = {'engineid':self.id,
444 'method':'get_result',
445 'method':'get_result',
445 'args':[repr(i)]}
446 'args':[repr(i)]}
446 d = self.executeAndRaise(msg, self.shell.getCommand, i)
447 d = self.executeAndRaise(msg, self.shell.getCommand, i)
447 d.addCallback(self.addIDToResult)
448 d.addCallback(self.addIDToResult)
448 return d
449 return d
449
450
450 def reset(self):
451 def reset(self):
451 msg = {'engineid':self.id,
452 msg = {'engineid':self.id,
452 'method':'reset',
453 'method':'reset',
453 'args':[]}
454 'args':[]}
454 del self.shell
455 del self.shell
455 self.shell = self.shellClass()
456 self.shell = self.shellClass()
456 self.properties.clear()
457 self.properties.clear()
457 d = self.executeAndRaise(msg, self._seedNamespace)
458 d = self.executeAndRaise(msg, self._seedNamespace)
458 return d
459 return d
459
460
460 def kill(self):
461 def kill(self):
461 drop_engine(self.id)
462 drop_engine(self.id)
462 try:
463 try:
463 reactor.stop()
464 reactor.stop()
464 except RuntimeError:
465 except RuntimeError:
465 log.msg('The reactor was not running apparently.')
466 log.msg('The reactor was not running apparently.')
466 return defer.fail()
467 return defer.fail()
467 else:
468 else:
468 return defer.succeed(None)
469 return defer.succeed(None)
469
470
470 def keys(self):
471 def keys(self):
471 """Return a list of variables names in the users top level namespace.
472 """Return a list of variables names in the users top level namespace.
472
473
473 This used to return a dict of all the keys/repr(values) in the
474 This used to return a dict of all the keys/repr(values) in the
474 user's namespace. This was too much info for the ControllerService
475 user's namespace. This was too much info for the ControllerService
475 to handle so it is now just a list of keys.
476 to handle so it is now just a list of keys.
476 """
477 """
477
478
478 remotes = []
479 remotes = []
479 for k in self.shell.user_ns.iterkeys():
480 for k in self.shell.user_ns.iterkeys():
480 if k not in ['__name__', '_ih', '_oh', '__builtins__',
481 if k not in ['__name__', '_ih', '_oh', '__builtins__',
481 'In', 'Out', '_', '__', '___', '__IP', 'input', 'raw_input']:
482 'In', 'Out', '_', '__', '___', '__IP', 'input', 'raw_input']:
482 remotes.append(k)
483 remotes.append(k)
483 return defer.succeed(remotes)
484 return defer.succeed(remotes)
484
485
485 def set_properties(self, properties):
486 def set_properties(self, properties):
486 msg = {'engineid':self.id,
487 msg = {'engineid':self.id,
487 'method':'set_properties',
488 'method':'set_properties',
488 'args':[repr(properties.keys())]}
489 'args':[repr(properties.keys())]}
489 return self.executeAndRaise(msg, self.properties.update, properties)
490 return self.executeAndRaise(msg, self.properties.update, properties)
490
491
491 def get_properties(self, keys=None):
492 def get_properties(self, keys=None):
492 msg = {'engineid':self.id,
493 msg = {'engineid':self.id,
493 'method':'get_properties',
494 'method':'get_properties',
494 'args':[repr(keys)]}
495 'args':[repr(keys)]}
495 if keys is None:
496 if keys is None:
496 keys = self.properties.keys()
497 keys = self.properties.keys()
497 return self.executeAndRaise(msg, self.properties.subDict, *keys)
498 return self.executeAndRaise(msg, self.properties.subDict, *keys)
498
499
499 def _doDel(self, keys):
500 def _doDel(self, keys):
500 for key in keys:
501 for key in keys:
501 del self.properties[key]
502 del self.properties[key]
502
503
503 def del_properties(self, keys):
504 def del_properties(self, keys):
504 msg = {'engineid':self.id,
505 msg = {'engineid':self.id,
505 'method':'del_properties',
506 'method':'del_properties',
506 'args':[repr(keys)]}
507 'args':[repr(keys)]}
507 return self.executeAndRaise(msg, self._doDel, keys)
508 return self.executeAndRaise(msg, self._doDel, keys)
508
509
509 def _doHas(self, keys):
510 def _doHas(self, keys):
510 return [self.properties.has_key(key) for key in keys]
511 return [self.properties.has_key(key) for key in keys]
511
512
512 def has_properties(self, keys):
513 def has_properties(self, keys):
513 msg = {'engineid':self.id,
514 msg = {'engineid':self.id,
514 'method':'has_properties',
515 'method':'has_properties',
515 'args':[repr(keys)]}
516 'args':[repr(keys)]}
516 return self.executeAndRaise(msg, self._doHas, keys)
517 return self.executeAndRaise(msg, self._doHas, keys)
517
518
518 def clear_properties(self):
519 def clear_properties(self):
519 msg = {'engineid':self.id,
520 msg = {'engineid':self.id,
520 'method':'clear_properties',
521 'method':'clear_properties',
521 'args':[]}
522 'args':[]}
522 return self.executeAndRaise(msg, self.properties.clear)
523 return self.executeAndRaise(msg, self.properties.clear)
523
524
524 def push_serialized(self, sNamespace):
525 def push_serialized(self, sNamespace):
525 msg = {'engineid':self.id,
526 msg = {'engineid':self.id,
526 'method':'push_serialized',
527 'method':'push_serialized',
527 'args':[repr(sNamespace.keys())]}
528 'args':[repr(sNamespace.keys())]}
528 ns = {}
529 ns = {}
529 for k,v in sNamespace.iteritems():
530 for k,v in sNamespace.iteritems():
530 try:
531 try:
531 unserialized = newserialized.IUnSerialized(v)
532 unserialized = newserialized.IUnSerialized(v)
532 ns[k] = unserialized.getObject()
533 ns[k] = unserialized.getObject()
533 except:
534 except:
534 return defer.fail()
535 return defer.fail()
535 return self.executeAndRaise(msg, self.shell.push, ns)
536 return self.executeAndRaise(msg, self.shell.push, ns)
536
537
537 def pull_serialized(self, keys):
538 def pull_serialized(self, keys):
538 msg = {'engineid':self.id,
539 msg = {'engineid':self.id,
539 'method':'pull_serialized',
540 'method':'pull_serialized',
540 'args':[repr(keys)]}
541 'args':[repr(keys)]}
541 if isinstance(keys, str):
542 if isinstance(keys, str):
542 keys = [keys]
543 keys = [keys]
543 if len(keys)==1:
544 if len(keys)==1:
544 d = self.executeAndRaise(msg, self.shell.pull, keys)
545 d = self.executeAndRaise(msg, self.shell.pull, keys)
545 d.addCallback(newserialized.serialize)
546 d.addCallback(newserialized.serialize)
546 return d
547 return d
547 elif len(keys)>1:
548 elif len(keys)>1:
548 d = self.executeAndRaise(msg, self.shell.pull, keys)
549 d = self.executeAndRaise(msg, self.shell.pull, keys)
549 @d.addCallback
550 @d.addCallback
550 def packThemUp(values):
551 def packThemUp(values):
551 serials = []
552 serials = []
552 for v in values:
553 for v in values:
553 try:
554 try:
554 serials.append(newserialized.serialize(v))
555 serials.append(newserialized.serialize(v))
555 except:
556 except:
556 return defer.fail(failure.Failure())
557 return defer.fail(failure.Failure())
557 return serials
558 return serials
558 return packThemUp
559 return packThemUp
559
560
560
561
561 def queue(methodToQueue):
562 def queue(methodToQueue):
562 def queuedMethod(this, *args, **kwargs):
563 def queuedMethod(this, *args, **kwargs):
563 name = methodToQueue.__name__
564 name = methodToQueue.__name__
564 return this.submitCommand(Command(name, *args, **kwargs))
565 return this.submitCommand(Command(name, *args, **kwargs))
565 return queuedMethod
566 return queuedMethod
566
567
567 class QueuedEngine(object):
568 class QueuedEngine(object):
568 """Adapt an IEngineBase to an IEngineQueued by wrapping it.
569 """Adapt an IEngineBase to an IEngineQueued by wrapping it.
569
570
570 The resulting object will implement IEngineQueued which extends
571 The resulting object will implement IEngineQueued which extends
571 IEngineCore which extends (IEngineBase, IEngineSerialized).
572 IEngineCore which extends (IEngineBase, IEngineSerialized).
572
573
573 This seems like the best way of handling it, but I am not sure. The
574 This seems like the best way of handling it, but I am not sure. The
574 other option is to have the various base interfaces be used like
575 other option is to have the various base interfaces be used like
575 mix-in intefaces. The problem I have with this is adpatation is
576 mix-in intefaces. The problem I have with this is adpatation is
576 more difficult and complicated because there can be can multiple
577 more difficult and complicated because there can be can multiple
577 original and final Interfaces.
578 original and final Interfaces.
578 """
579 """
579
580
580 zi.implements(IEngineQueued)
581 zi.implements(IEngineQueued)
581
582
582 def __init__(self, engine):
583 def __init__(self, engine):
583 """Create a QueuedEngine object from an engine
584 """Create a QueuedEngine object from an engine
584
585
585 engine: An implementor of IEngineCore and IEngineSerialized
586 engine: An implementor of IEngineCore and IEngineSerialized
586 keepUpToDate: whether to update the remote status when the
587 keepUpToDate: whether to update the remote status when the
587 queue is empty. Defaults to False.
588 queue is empty. Defaults to False.
588 """
589 """
589
590
590 # This is the right way to do these tests rather than
591 # This is the right way to do these tests rather than
591 # IEngineCore in list(zi.providedBy(engine)) which will only
592 # IEngineCore in list(zi.providedBy(engine)) which will only
592 # picks of the interfaces that are directly declared by engine.
593 # picks of the interfaces that are directly declared by engine.
593 assert IEngineBase.providedBy(engine), \
594 assert IEngineBase.providedBy(engine), \
594 "engine passed to QueuedEngine doesn't provide IEngineBase"
595 "engine passed to QueuedEngine doesn't provide IEngineBase"
595
596
596 self.engine = engine
597 self.engine = engine
597 self.id = engine.id
598 self.id = engine.id
598 self.queued = []
599 self.queued = []
599 self.history = {}
600 self.history = {}
600 self.engineStatus = {}
601 self.engineStatus = {}
601 self.currentCommand = None
602 self.currentCommand = None
602 self.failureObservers = []
603 self.failureObservers = []
603
604
604 def _get_properties(self):
605 def _get_properties(self):
605 return self.engine.properties
606 return self.engine.properties
606
607
607 properties = property(_get_properties, lambda self, _: None)
608 properties = property(_get_properties, lambda self, _: None)
608 # Queue management methods. You should not call these directly
609 # Queue management methods. You should not call these directly
609
610
610 def submitCommand(self, cmd):
611 def submitCommand(self, cmd):
611 """Submit command to queue."""
612 """Submit command to queue."""
612
613
613 d = defer.Deferred()
614 d = defer.Deferred()
614 cmd.setDeferred(d)
615 cmd.setDeferred(d)
615 if self.currentCommand is not None:
616 if self.currentCommand is not None:
616 if self.currentCommand.finished:
617 if self.currentCommand.finished:
617 # log.msg("Running command immediately: %r" % cmd)
618 # log.msg("Running command immediately: %r" % cmd)
618 self.currentCommand = cmd
619 self.currentCommand = cmd
619 self.runCurrentCommand()
620 self.runCurrentCommand()
620 else: # command is still running
621 else: # command is still running
621 # log.msg("Command is running: %r" % self.currentCommand)
622 # log.msg("Command is running: %r" % self.currentCommand)
622 # log.msg("Queueing: %r" % cmd)
623 # log.msg("Queueing: %r" % cmd)
623 self.queued.append(cmd)
624 self.queued.append(cmd)
624 else:
625 else:
625 # log.msg("No current commands, running: %r" % cmd)
626 # log.msg("No current commands, running: %r" % cmd)
626 self.currentCommand = cmd
627 self.currentCommand = cmd
627 self.runCurrentCommand()
628 self.runCurrentCommand()
628 return d
629 return d
629
630
630 def runCurrentCommand(self):
631 def runCurrentCommand(self):
631 """Run current command."""
632 """Run current command."""
632
633
633 cmd = self.currentCommand
634 cmd = self.currentCommand
634 f = getattr(self.engine, cmd.remoteMethod, None)
635 f = getattr(self.engine, cmd.remoteMethod, None)
635 if f:
636 if f:
636 d = f(*cmd.args, **cmd.kwargs)
637 d = f(*cmd.args, **cmd.kwargs)
637 if cmd.remoteMethod is 'execute':
638 if cmd.remoteMethod is 'execute':
638 d.addCallback(self.saveResult)
639 d.addCallback(self.saveResult)
639 d.addCallback(self.finishCommand)
640 d.addCallback(self.finishCommand)
640 d.addErrback(self.abortCommand)
641 d.addErrback(self.abortCommand)
641 else:
642 else:
642 return defer.fail(AttributeError(cmd.remoteMethod))
643 return defer.fail(AttributeError(cmd.remoteMethod))
643
644
644 def _flushQueue(self):
645 def _flushQueue(self):
645 """Pop next command in queue and run it."""
646 """Pop next command in queue and run it."""
646
647
647 if len(self.queued) > 0:
648 if len(self.queued) > 0:
648 self.currentCommand = self.queued.pop(0)
649 self.currentCommand = self.queued.pop(0)
649 self.runCurrentCommand()
650 self.runCurrentCommand()
650
651
651 def saveResult(self, result):
652 def saveResult(self, result):
652 """Put the result in the history."""
653 """Put the result in the history."""
653 self.history[result['number']] = result
654 self.history[result['number']] = result
654 return result
655 return result
655
656
656 def finishCommand(self, result):
657 def finishCommand(self, result):
657 """Finish currrent command."""
658 """Finish currrent command."""
658
659
659 # The order of these commands is absolutely critical.
660 # The order of these commands is absolutely critical.
660 self.currentCommand.handleResult(result)
661 self.currentCommand.handleResult(result)
661 self.currentCommand.finished = True
662 self.currentCommand.finished = True
662 self._flushQueue()
663 self._flushQueue()
663 return result
664 return result
664
665
665 def abortCommand(self, reason):
666 def abortCommand(self, reason):
666 """Abort current command.
667 """Abort current command.
667
668
668 This eats the Failure but first passes it onto the Deferred that the
669 This eats the Failure but first passes it onto the Deferred that the
669 user has.
670 user has.
670
671
671 It also clear out the queue so subsequence commands don't run.
672 It also clear out the queue so subsequence commands don't run.
672 """
673 """
673
674
674 # The order of these 3 commands is absolutely critical. The currentCommand
675 # The order of these 3 commands is absolutely critical. The currentCommand
675 # must first be marked as finished BEFORE the queue is cleared and before
676 # must first be marked as finished BEFORE the queue is cleared and before
676 # the current command is sent the failure.
677 # the current command is sent the failure.
677 # Also, the queue must be cleared BEFORE the current command is sent the Failure
678 # Also, the queue must be cleared BEFORE the current command is sent the Failure
678 # otherwise the errback chain could trigger new commands to be added to the
679 # otherwise the errback chain could trigger new commands to be added to the
679 # queue before we clear it. We should clear ONLY the commands that were in
680 # queue before we clear it. We should clear ONLY the commands that were in
680 # the queue when the error occured.
681 # the queue when the error occured.
681 self.currentCommand.finished = True
682 self.currentCommand.finished = True
682 s = "%r %r %r" % (self.currentCommand.remoteMethod, self.currentCommand.args, self.currentCommand.kwargs)
683 s = "%r %r %r" % (self.currentCommand.remoteMethod, self.currentCommand.args, self.currentCommand.kwargs)
683 self.clear_queue(msg=s)
684 self.clear_queue(msg=s)
684 self.currentCommand.handleError(reason)
685 self.currentCommand.handleError(reason)
685
686
686 return None
687 return None
687
688
688 #---------------------------------------------------------------------------
689 #---------------------------------------------------------------------------
689 # IEngineCore methods
690 # IEngineCore methods
690 #---------------------------------------------------------------------------
691 #---------------------------------------------------------------------------
691
692
692 @queue
693 @queue
693 def execute(self, lines):
694 def execute(self, lines):
694 pass
695 pass
695
696
696 @queue
697 @queue
697 def push(self, namespace):
698 def push(self, namespace):
698 pass
699 pass
699
700
700 @queue
701 @queue
701 def pull(self, keys):
702 def pull(self, keys):
702 pass
703 pass
703
704
704 @queue
705 @queue
705 def push_function(self, namespace):
706 def push_function(self, namespace):
706 pass
707 pass
707
708
708 @queue
709 @queue
709 def pull_function(self, keys):
710 def pull_function(self, keys):
710 pass
711 pass
711
712
712 def get_result(self, i=None):
713 def get_result(self, i=None):
713 if i is None:
714 if i is None:
714 i = max(self.history.keys()+[None])
715 i = max(self.history.keys()+[None])
715
716
716 cmd = self.history.get(i, None)
717 cmd = self.history.get(i, None)
717 # Uncomment this line to disable chaching of results
718 # Uncomment this line to disable chaching of results
718 #cmd = None
719 #cmd = None
719 if cmd is None:
720 if cmd is None:
720 return self.submitCommand(Command('get_result', i))
721 return self.submitCommand(Command('get_result', i))
721 else:
722 else:
722 return defer.succeed(cmd)
723 return defer.succeed(cmd)
723
724
724 def reset(self):
725 def reset(self):
725 self.clear_queue()
726 self.clear_queue()
726 self.history = {} # reset the cache - I am not sure we should do this
727 self.history = {} # reset the cache - I am not sure we should do this
727 return self.submitCommand(Command('reset'))
728 return self.submitCommand(Command('reset'))
728
729
729 def kill(self):
730 def kill(self):
730 self.clear_queue()
731 self.clear_queue()
731 return self.submitCommand(Command('kill'))
732 return self.submitCommand(Command('kill'))
732
733
733 @queue
734 @queue
734 def keys(self):
735 def keys(self):
735 pass
736 pass
736
737
737 #---------------------------------------------------------------------------
738 #---------------------------------------------------------------------------
738 # IEngineSerialized methods
739 # IEngineSerialized methods
739 #---------------------------------------------------------------------------
740 #---------------------------------------------------------------------------
740
741
741 @queue
742 @queue
742 def push_serialized(self, namespace):
743 def push_serialized(self, namespace):
743 pass
744 pass
744
745
745 @queue
746 @queue
746 def pull_serialized(self, keys):
747 def pull_serialized(self, keys):
747 pass
748 pass
748
749
749 #---------------------------------------------------------------------------
750 #---------------------------------------------------------------------------
750 # IEngineProperties methods
751 # IEngineProperties methods
751 #---------------------------------------------------------------------------
752 #---------------------------------------------------------------------------
752
753
753 @queue
754 @queue
754 def set_properties(self, namespace):
755 def set_properties(self, namespace):
755 pass
756 pass
756
757
757 @queue
758 @queue
758 def get_properties(self, keys=None):
759 def get_properties(self, keys=None):
759 pass
760 pass
760
761
761 @queue
762 @queue
762 def del_properties(self, keys):
763 def del_properties(self, keys):
763 pass
764 pass
764
765
765 @queue
766 @queue
766 def has_properties(self, keys):
767 def has_properties(self, keys):
767 pass
768 pass
768
769
769 @queue
770 @queue
770 def clear_properties(self):
771 def clear_properties(self):
771 pass
772 pass
772
773
773 #---------------------------------------------------------------------------
774 #---------------------------------------------------------------------------
774 # IQueuedEngine methods
775 # IQueuedEngine methods
775 #---------------------------------------------------------------------------
776 #---------------------------------------------------------------------------
776
777
777 def clear_queue(self, msg=''):
778 def clear_queue(self, msg=''):
778 """Clear the queue, but doesn't cancel the currently running commmand."""
779 """Clear the queue, but doesn't cancel the currently running commmand."""
779
780
780 for cmd in self.queued:
781 for cmd in self.queued:
781 cmd.deferred.errback(failure.Failure(error.QueueCleared(msg)))
782 cmd.deferred.errback(failure.Failure(error.QueueCleared(msg)))
782 self.queued = []
783 self.queued = []
783 return defer.succeed(None)
784 return defer.succeed(None)
784
785
785 def queue_status(self):
786 def queue_status(self):
786 if self.currentCommand is not None:
787 if self.currentCommand is not None:
787 if self.currentCommand.finished:
788 if self.currentCommand.finished:
788 pending = repr(None)
789 pending = repr(None)
789 else:
790 else:
790 pending = repr(self.currentCommand)
791 pending = repr(self.currentCommand)
791 else:
792 else:
792 pending = repr(None)
793 pending = repr(None)
793 dikt = {'queue':map(repr,self.queued), 'pending':pending}
794 dikt = {'queue':map(repr,self.queued), 'pending':pending}
794 return defer.succeed(dikt)
795 return defer.succeed(dikt)
795
796
796 def register_failure_observer(self, obs):
797 def register_failure_observer(self, obs):
797 self.failureObservers.append(obs)
798 self.failureObservers.append(obs)
798
799
799 def unregister_failure_observer(self, obs):
800 def unregister_failure_observer(self, obs):
800 self.failureObservers.remove(obs)
801 self.failureObservers.remove(obs)
801
802
802
803
803 # Now register QueuedEngine as an adpater class that makes an IEngineBase into a
804 # Now register QueuedEngine as an adpater class that makes an IEngineBase into a
804 # IEngineQueued.
805 # IEngineQueued.
805 components.registerAdapter(QueuedEngine, IEngineBase, IEngineQueued)
806 components.registerAdapter(QueuedEngine, IEngineBase, IEngineQueued)
806
807
807
808
808 class Command(object):
809 class Command(object):
809 """A command object that encapslates queued commands.
810 """A command object that encapslates queued commands.
810
811
811 This class basically keeps track of a command that has been queued
812 This class basically keeps track of a command that has been queued
812 in a QueuedEngine. It manages the deferreds and hold the method to be called
813 in a QueuedEngine. It manages the deferreds and hold the method to be called
813 and the arguments to that method.
814 and the arguments to that method.
814 """
815 """
815
816
816
817
817 def __init__(self, remoteMethod, *args, **kwargs):
818 def __init__(self, remoteMethod, *args, **kwargs):
818 """Build a new Command object."""
819 """Build a new Command object."""
819
820
820 self.remoteMethod = remoteMethod
821 self.remoteMethod = remoteMethod
821 self.args = args
822 self.args = args
822 self.kwargs = kwargs
823 self.kwargs = kwargs
823 self.finished = False
824 self.finished = False
824
825
825 def setDeferred(self, d):
826 def setDeferred(self, d):
826 """Sets the deferred attribute of the Command."""
827 """Sets the deferred attribute of the Command."""
827
828
828 self.deferred = d
829 self.deferred = d
829
830
830 def __repr__(self):
831 def __repr__(self):
831 if not self.args:
832 if not self.args:
832 args = ''
833 args = ''
833 else:
834 else:
834 args = str(self.args)[1:-2] #cut off (...,)
835 args = str(self.args)[1:-2] #cut off (...,)
835 for k,v in self.kwargs.iteritems():
836 for k,v in self.kwargs.iteritems():
836 if args:
837 if args:
837 args += ', '
838 args += ', '
838 args += '%s=%r' %(k,v)
839 args += '%s=%r' %(k,v)
839 return "%s(%s)" %(self.remoteMethod, args)
840 return "%s(%s)" %(self.remoteMethod, args)
840
841
841 def handleResult(self, result):
842 def handleResult(self, result):
842 """When the result is ready, relay it to self.deferred."""
843 """When the result is ready, relay it to self.deferred."""
843
844
844 self.deferred.callback(result)
845 self.deferred.callback(result)
845
846
846 def handleError(self, reason):
847 def handleError(self, reason):
847 """When an error has occured, relay it to self.deferred."""
848 """When an error has occured, relay it to self.deferred."""
848
849
849 self.deferred.errback(reason)
850 self.deferred.errback(reason)
850
851
851 class ThreadedEngineService(EngineService):
852 class ThreadedEngineService(EngineService):
852 """An EngineService subclass that defers execute commands to a separate
853 """An EngineService subclass that defers execute commands to a separate
853 thread.
854 thread.
854
855
855 ThreadedEngineService uses twisted.internet.threads.deferToThread to
856 ThreadedEngineService uses twisted.internet.threads.deferToThread to
856 defer execute requests to a separate thread. GUI frontends may want to
857 defer execute requests to a separate thread. GUI frontends may want to
857 use ThreadedEngineService as the engine in an
858 use ThreadedEngineService as the engine in an
858 IPython.frontend.frontendbase.FrontEndBase subclass to prevent
859 IPython.frontend.frontendbase.FrontEndBase subclass to prevent
859 block execution from blocking the GUI thread.
860 block execution from blocking the GUI thread.
860 """
861 """
861
862
862 zi.implements(IEngineBase)
863 zi.implements(IEngineBase)
863
864
864 def __init__(self, shellClass=Interpreter, mpi=None):
865 def __init__(self, shellClass=Interpreter, mpi=None):
865 EngineService.__init__(self, shellClass, mpi)
866 EngineService.__init__(self, shellClass, mpi)
866
867
868 def wrapped_execute(self, msg, lines):
869 """Wrap self.shell.execute to add extra information to tracebacks"""
870
871 try:
872 result = self.shell.execute(lines)
873 except Exception,e:
874 # This gives the following:
875 # et=exception class
876 # ev=exception class instance
877 # tb=traceback object
878 et,ev,tb = sys.exc_info()
879 # This call adds attributes to the exception value
880 et,ev,tb = self.shell.formatTraceback(et,ev,tb,msg)
881 # Add another attribute
882
883 # Create a new exception with the new attributes
884 e = et(ev._ipython_traceback_text)
885 e._ipython_engine_info = msg
886
887 # Re-raise
888 raise e
889
890 return result
891
867
892
868 def execute(self, lines):
893 def execute(self, lines):
869 # Only import this if we are going to use this class
894 # Only import this if we are going to use this class
870 from twisted.internet import threads
895 from twisted.internet import threads
871
896
872 msg = {'engineid':self.id,
897 msg = {'engineid':self.id,
873 'method':'execute',
898 'method':'execute',
874 'args':[lines]}
899 'args':[lines]}
875
900
876 d = threads.deferToThread(self.shell.execute, lines)
901 d = threads.deferToThread(self.wrapped_execute, msg, lines)
877 d.addCallback(self.addIDToResult)
902 d.addCallback(self.addIDToResult)
878 return d
903 return d
General Comments 0
You need to be logged in to leave comments. Login now