Added double click support in the File Tree. Ticket #37.

CQTexperiment
areff 2008-02-20 19:36:34 +00:00
parent 91e5833a40
commit a9aa9be81a
6 changed files with 2482 additions and 2390 deletions

View File

@ -12,7 +12,7 @@
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string id="34123527">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string id="796939136">com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -74,7 +74,7 @@
<int key="NSCellFlags2">0</int>
<string key="NSContents" id="607347959"/>
<object class="NSFont" key="NSSupport" id="26">
<string key="NSName" id="819564220">LucidaGrande</string>
<string key="NSName" id="698818143">LucidaGrande</string>
<double key="NSSize">1.100000e+01</double>
<int key="NSfFlags">3100</int>
</object>
@ -84,7 +84,7 @@
</object>
<object class="NSColor" key="NSTextColor">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName" id="903547761">System</string>
<string key="NSCatalogName" id="827918298">System</string>
<string key="NSColorName">headerTextColor</string>
<object class="NSColor" key="NSColor" id="1016173790">
<int key="NSColorSpace">3</int>
@ -97,14 +97,14 @@
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<object class="NSFont" key="NSSupport">
<reference key="NSName" ref="819564220"/>
<reference key="NSName" ref="698818143"/>
<double key="NSSize">1.300000e+01</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="846237243"/>
<object class="NSColor" key="NSBackgroundColor" id="518416176">
<int key="NSColorSpace">6</int>
<reference key="NSCatalogName" ref="903547761"/>
<reference key="NSCatalogName" ref="827918298"/>
<string key="NSColorName">controlBackgroundColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
@ -113,7 +113,7 @@
</object>
<object class="NSColor" key="NSTextColor">
<int key="NSColorSpace">6</int>
<reference key="NSCatalogName" ref="903547761"/>
<reference key="NSCatalogName" ref="827918298"/>
<string key="NSColorName">controlTextColor</string>
<reference key="NSColor" ref="1016173790"/>
</object>
@ -128,7 +128,7 @@
<reference key="NSBackgroundColor" ref="518416176"/>
<object class="NSColor" key="NSGridColor">
<int key="NSColorSpace">6</int>
<reference key="NSCatalogName" ref="903547761"/>
<reference key="NSCatalogName" ref="827918298"/>
<string key="NSColorName">gridColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
@ -217,7 +217,7 @@
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<reference key="NSFrameAutosaveName" ref="1024058341"/>
</object>
<object class="NSUserDefaultsController" id="419060898">
@ -292,12 +292,20 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label" id="353012604">watcher</string>
<string key="label">watcher</string>
<reference key="source" ref="381152635"/>
<reference key="destination" ref="257353879"/>
</object>
<int key="connectionID">34</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label" id="205615699">fileTreeController</string>
<reference key="source" ref="381152635"/>
<reference key="destination" ref="1001"/>
</object>
<int key="connectionID">35</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@ -457,31 +465,31 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="34123527"/>
<reference ref="34123527"/>
<reference ref="34123527"/>
<reference ref="34123527"/>
<reference ref="796939136"/>
<reference ref="796939136"/>
<reference ref="796939136"/>
<reference ref="796939136"/>
<string id="255536364">{{384, 347}, {306, 398}}</string>
<integer value="1" id="9"/>
<reference ref="255536364"/>
<reference ref="34123527"/>
<reference ref="34123527"/>
<reference ref="796939136"/>
<reference ref="796939136"/>
<reference ref="9"/>
<reference ref="34123527"/>
<reference ref="796939136"/>
<reference ref="9"/>
<reference ref="34123527"/>
<reference ref="796939136"/>
<reference ref="9"/>
<reference ref="34123527"/>
<reference ref="796939136"/>
<reference ref="9"/>
<reference ref="34123527"/>
<reference ref="796939136"/>
<reference ref="9"/>
<string>FileIconCell</string>
<reference ref="34123527"/>
<reference ref="796939136"/>
<reference ref="9"/>
<reference ref="34123527"/>
<reference ref="34123527"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="34123527"/>
<reference ref="796939136"/>
<reference ref="796939136"/>
<reference ref="796939136"/>
<reference ref="796939136"/>
<reference ref="9"/>
</object>
</object>
@ -505,14 +513,14 @@
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">34</int>
<int key="maxID">35</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">PathWatcher</string>
<string key="superclassName" id="696656415">NSObject</string>
<string key="className" id="696656415">NSObject</string>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@ -523,17 +531,22 @@
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<reference key="NS.key.0" ref="1005462213"/>
<string key="NS.object.0">id</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey" id="599007926">IBProjectSource</string>
<string key="minorKey">FileTreeWindow/PathWatcher.h</string>
<string key="majorKey" id="794364647">IBProjectSource</string>
<string key="minorKey">ThirdParty/AppleRemote/AppleRemote.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">FileIconCell</string>
<string key="superclassName">ImageTextCell</string>
<reference key="className" ref="696656415"/>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@ -553,13 +566,13 @@
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="599007926"/>
<string key="minorKey">FileTreeWindow/FileIconCell.h</string>
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">ThirdParty/NDHotKeys/NDHotKeyEvent.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">FileTreeWindowController</string>
<string key="superclassName">NSWindowController</string>
<reference key="className" ref="696656415"/>
<nil key="superclassName"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@ -579,37 +592,60 @@
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="599007926"/>
<string key="minorKey">FileTreeWindow/FileTreeWindowController.h</string>
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">ThirdParty/GCWindowMenu/GCOneShotEffectTimer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">ImageTextCell</string>
<string key="superclassName">NSTextFieldCell</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">ThirdParty/ImageTextCell/ImageTextCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">FileTreeDataSource</string>
<reference key="superclassName" ref="696656415"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<string key="NS.key.0">doubleClickSelector:</string>
<string key="NS.object.0" id="193476439">id</string>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="205615699"/>
<string>outlineView</string>
<reference ref="353012604"/>
<string>watcher</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>FileTreeWindowController</string>
<string>NSOutlineView</string>
<string>PathWatcher</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="599007926"/>
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">FileTreeWindow/FileTreeDataSource.h</string>
</object>
</object>
@ -640,8 +676,8 @@
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="696656415"/>
<nil key="superclassName"/>
<string key="className">PathWatcher</string>
<reference key="superclassName" ref="696656415"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@ -652,48 +688,63 @@
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="NS.key.0" ref="1005462213"/>
<reference key="NS.object.0" ref="193476439"/>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="599007926"/>
<string key="minorKey">ThirdParty/UKKQueue/UKFileWatcher.h</string>
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">FileTreeWindow/PathWatcher.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="696656415"/>
<nil key="superclassName"/>
<string key="className">PlaylistController</string>
<string key="superclassName">DNDArrayController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>clear:</string>
<string>clearFilterPredicate:</string>
<string>searchByAlbum:</string>
<string>searchByArtist:</string>
<string>showEntryInFinder:</string>
<string>takeShuffleFromObject:</string>
<string>toggleRepeat:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="193476439"/>
<reference ref="193476439"/>
<reference ref="193476439"/>
<reference ref="193476439"/>
<reference ref="193476439"/>
<reference ref="193476439"/>
<reference ref="193476439"/>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>entriesController</string>
<string>playlistLoader</string>
<string>spotlightWindowController</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>EntriesController</string>
<string>PlaylistLoader</string>
<string>SpotlightWindowController</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="599007926"/>
<string key="minorKey">ThirdParty/UKKQueue/UKKQueue.h</string>
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">Playlist/PlaylistController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="696656415"/>
<nil key="superclassName"/>
<string key="className">FileIconCell</string>
<string key="superclassName">ImageTextCell</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@ -713,13 +764,13 @@
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="599007926"/>
<string key="minorKey">ThirdParty/UKKQueue/UKMainThreadProxy.h</string>
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">FileTreeWindow/FileIconCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="696656415"/>
<nil key="superclassName"/>
<string key="className">PlaylistLoader</string>
<reference key="superclassName" ref="696656415"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@ -730,22 +781,17 @@
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<string key="NS.key.0">playlistController</string>
<string key="NS.object.0">PlaylistController</string>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="599007926"/>
<string key="minorKey">ThirdParty/GCWindowMenu/GCOneShotEffectTimer.h</string>
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">Playlist/PlaylistLoader.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="696656415"/>
<nil key="superclassName"/>
<string key="className">FileTreeWindowController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@ -756,48 +802,67 @@
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<string key="NS.key.0">playlistLoader</string>
<string key="NS.object.0">PlaylistLoader</string>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="599007926"/>
<string key="minorKey">ThirdParty/AppleRemote/AppleRemote.h</string>
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">FileTreeWindow/FileTreeWindowController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<reference key="className" ref="696656415"/>
<nil key="superclassName"/>
<string key="className">SpotlightWindowController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<string key="NS.key.0">addToPlaylist:</string>
<reference key="NS.object.0" ref="193476439"/>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>pathControl</string>
<string>playlistController</string>
<string>playlistLoader</string>
<string>searchField</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSPathControl</string>
<string>NSArrayController</string>
<string>PlaylistLoader</string>
<string>NSSearchField</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="599007926"/>
<string key="minorKey">ThirdParty/NDHotKeys/NDHotKeyEvent.h</string>
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">Spotlight/SpotlightWindowController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">ImageTextCell</string>
<string key="superclassName">NSTextFieldCell</string>
<string key="className">DNDArrayController</string>
<string key="superclassName">NSArrayController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">tableView</string>
<string key="NS.object.0">NSTableView</string>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">Playlist/DNDArrayController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">EntriesController</string>
<reference key="superclassName" ref="696656415"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@ -817,8 +882,8 @@
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<reference key="majorKey" ref="599007926"/>
<string key="minorKey">ThirdParty/ImageTextCell/ImageTextCell.h</string>
<reference key="majorKey" ref="794364647"/>
<string key="minorKey">Playlist/EntriesController.h</string>
</object>
</object>
</object>
@ -828,127 +893,129 @@
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableData" key="IBDocument.RunnableNib">
<bytes key="NS.bytes">YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA
AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxCfAAsADAAxADUANgA8AD0A
AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxCiAAsADAAxADUANgA8AD0A
QgBYAFkAWgBbAAsAaQBuAIIAiACXAJsAvwDAAMYAxwDMANAA4gDuAO8A9wD4APsBAAEDAQsBDAENARAB
FgEjARMBJAElASoBLwEwATMBOAE5ATwBPwFDAUgBSQFMAU0AvwFRAVQBYAFhAWIBZQFvAL8BcAFzAX4B
gwGEAYUBiQGKAZUBmAGbAZ4ACwGfAaEBogGlAa8BtwG6AbsBvgG/AcABxAHJAcoBzwHQAdUB2gHbAeAB
4QHtAfEB9QH2AfcB+AH/AgACAQIEAgcCGAIbAhwCHgIvAkECUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4C
XwJgAmECZQJpAoICmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAFYCqQKqALsCqwKsAq0CrgKvArIC
tQK4VSRudWxs3xASAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAk
ACUAJgAnACgAKQAqACsALAAtAC4ALwAwVk5TUm9vdFYkY2xhc3NdTlNPYmplY3RzS2V5c18QD05TQ2xh
c3Nlc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXNdTlNDb25uZWN0aW9uc1tOU05hbWVz
S2V5c1tOU0ZyYW1ld29ya11OU0NsYXNzZXNLZXlzWk5TT2lkc0tleXNdTlNOYW1lc1ZhbHVlc18QGU5T
QWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNdTlNGb250TWFuYWdlcl8QEE5TVmlzaWJsZVdpbmRvd3NfEA9O
U09iamVjdHNWYWx1ZXNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c1lOU05leHRPaWRcTlNPaWRzVmFs
dWVzgAKAnoBsgIKAnYBQgHGABYCBgIOAcoCbgACABoBwgJwQJICE0gAOADIAMwA0W05TQ2xhc3NOYW1l
gASAA18QGEZpbGVUcmVlV2luZG93Q29udHJvbGxlctIANwA4ADkAOlgkY2xhc3Nlc1okY2xhc3NuYW1l
ogA6ADteTlNDdXN0b21PYmplY3RYTlNPYmplY3RfEBBJQkNvY29hRnJhbWV3b3Jr0gAOAD4APwBAWk5T
Lm9iamVjdHOARaEAQYAH2wBDAA4ARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABQAFIAUwBUAFUAVgAr
XE5TV2luZG93Vmlld1xOU1NjcmVlblJlY3RfEBNOU0ZyYW1lQXV0b3NhdmVOYW1lXU5TV2luZG93VGl0
bGVZTlNXVEZsYWdzXU5TV2luZG93Q2xhc3NcTlNXaW5kb3dSZWN0XxAPTlNXaW5kb3dCYWNraW5nXxAR
TlNXaW5kb3dTdHlsZU1hc2tbTlNWaWV3Q2xhc3OAC4BPgE6ACYAJE/////+kAAQAgAqACBACEB+AAF8Q
GHt7MTk2LCAxMTJ9LCB7MzA2LCAzOTh9fVlGaWxlIFRyZWVXTlNQYW5lbNcAXAAOAF0AXgBfAGAAYQBi
AGMAZABlAGYAYgBoXxAPTlNOZXh0UmVzcG9uZGVyWk5TU3Vidmlld3NYTlN2RmxhZ3NbTlNGcmFtZVNp
emVYTlNXaW5kb3dbTlNTdXBlcnZpZXeADIBNgA0RAQCAS4AMgEzSAA4APgBqAGuAMaIAbABtgA6AQd0A
XABvAA4AcABdAHEAXgBfAGAAYQByAHMAdABNAHYAdwB4AHkAegB7AHwAYgBNAH8AgACAW05TSFNjcm9s
bGVyWE5Tc0ZsYWdzXE5TU2Nyb2xsQW10c1tOU1ZTY3JvbGxlcl1OU05leHRLZXlWaWV3XU5TQ29udGVu
dFZpZXeAC4A9gEARAjCAD08QEEEgAABBIAAAQZgAAEGYAAARARKAP4AMgAuAOYAQgBDSAA4APgBqAISA
MaMAgAB/AHaAEIA5gD3bAFwADgCJAF0AXgBfAIoAYACLAGEAcwBsAI0AjgCPAJAAkQCSAGIAlABsAJJZ
TlNjdkZsYWdzWU5TRG9jVmlld1lOU0JHQ29sb3KADoA4EASAEREJAIA3gBKADIAqgA6AEtIADgA+AGoA
mYAxoQCSgBLfEBUAXACcAA4AnQCeAJ8AoAChAKIAowBeAF8ApAClAGAApgCnAKgAYQCpAKoAgACsAK0A
rgCUALAAsQCyAI4AswC0ALUAsAC3AGIAsAC6ALsAgAC9AL5fEB9OU0RyYWdnaW5nU291cmNlTWFza0Zv
ck5vbkxvY2FsWU5TVHZGbGFnc18QEU5TQmFja2dyb3VuZENvbG9yXxASTlNBbGxvd3NUeXBlU2VsZWN0
XE5TQ29ybmVyVmlld18QF05TSW50ZXJjZWxsU3BhY2luZ1dpZHRoXxAZTlNDb2x1bW5BdXRvcmVzaXpp
bmdTdHlsZV8QGE5TSW50ZXJjZWxsU3BhY2luZ0hlaWdodFlOU0VuYWJsZWReTlNBdXRvc2F2ZU5hbWVf
ECVOU091dGxpbmVWaWV3QXV0b3NhdmVFeHBhbmRlZEl0ZW1zS2V5W05TR3JpZENvbG9yXxAcTlNEcmFn
Z2luZ1NvdXJjZU1hc2tGb3JMb2NhbF5OU1RhYmxlQ29sdW1uc1tOU1Jvd0hlaWdodIAQEACANhJawAAA
gCoJgBQjQAgAAAAAAAAjQAAAAAAAAAAREQCAEwmANYAMCYAyEA+AEIAXI0AxAAAAAAAAWnszMDYsIDM3
N33UAFwADgDBAF4AKwDDAMQAxVdOU0ZyYW1lgACAFoAVE/////+AAAEAXxAUe3stMjYsIDB9LCB7MTYs
IDE3fX3SADcAOADIAMmkAMkAygDLADtdX05TQ29ybmVyVmlld1ZOU1ZpZXdbTlNSZXNwb25kZXLSAA4A
PgBqAM6AMaEAz4AY2QDRAA4A0gDTANQA1QDWANcA2ACwANoA2wDcAN0A3gDfAOAAkl5OU0lzUmVzaXpl
YWJsZVxOU0hlYWRlckNlbGxXTlNXaWR0aFpOU0RhdGFDZWxsXk5TUmVzaXppbmdNYXNrWk5TTWluV2lk
dGhaTlNNYXhXaWR0aFtOU1RhYmxlVmlldwmAMIAZI0By8AAAAAAAgCUQAyNAMAAAAAAAACNAj0AAAAAA
AIAS1wDjAA4AngDkAOUA5gDnAOgA6QDqAOsA7ACsAO1bTlNDZWxsRmxhZ3NaTlNDb250ZW50c1lOU1N1
cHBvcnRcTlNDZWxsRmxhZ3MyW05TVGV4dENvbG9yEgSB/gCAJIAegBqAG4AgUNQADgDwAPEA8gDzAPQA
9QD2Vk5TU2l6ZVZOU05hbWVYTlNmRmxhZ3OAHSNAJgAAAAAAAIAcEQwcXEx1Y2lkYUdyYW5kZdIANwA4
APkA+qIA+gA7Vk5TRm9udNMADgD8AP0A/gDeAP9cTlNDb2xvclNwYWNlV05TV2hpdGWAH0swLjMzMzMz
Mjk5ANIANwA4AQEBAqIBAgA7V05TQ29sb3LVAA4BAgD8AQQBBQD+AQcBCAEJAQpbTlNDb2xvck5hbWVd
TlNDYXRhbG9nTmFtZYAfgCMQBoAigCFWU3lzdGVtXxAPaGVhZGVyVGV4dENvbG9y0wAOAPwA/QD+AN4B
D4AfQjAA0gA3ADgBEQESpQESARMBFAEVADtfEBFOU1RhYmxlSGVhZGVyQ2VsbF8QD05TVGV4dEZpZWxk
Q2VsbFxOU0FjdGlvbkNlbGxWTlNDZWxs2gDjAA4BFwCeAOQA5QEYAOYAMgDnARkBGgEbAJQBHQEeAJIB
IAEhASJfEBNOU09yaWdpbmFsQ2xhc3NOYW1lXU5TQ29udHJvbFZpZXcSFCH+QYAvgCeAKoAogCmAEhEI
AIAmgC1cRmlsZUljb25DZWxsWVRleHQgQ2VsbNQADgDwAPEA8gDzAScA9QEpgB0jQCoAAAAAAACAHBEE
FNUADgECAPwBBAEFAP4BLAEIAS0BCoAfgCyAK4AhXxAWY29udHJvbEJhY2tncm91bmRDb2xvctMADgD8
AP0A/gDeATKAH0swLjY2NjY2NjY5ANUADgECAPwBBAEFAP4BBwEIATYBCoAfgCOALoAhXxAQY29udHJv
bFRleHRDb2xvctIANwA4AToBO6IBOwA7Xk5TQ2xhc3NTd2FwcGVy0gA3ADgBPQE+ogE+ADtdTlNUYWJs
ZUNvbHVtbtIANwA4AUABQaMBQQFCADteTlNNdXRhYmxlQXJyYXlXTlNBcnJhedUADgECAPwBBAEFAP4B
RQEIAUYBCoAfgDSAM4AhWWdyaWRDb2xvctMADgD8AP0A/gDeAUuAH0QwLjUAWEZpbGVUcmVl0gA3ADgB
TgFPpgFPANgBUADKAMsAO11OU091dGxpbmVWaWV3WU5TQ29udHJvbNIANwA4AVIBU6QBUwDKAMsAO1pO
U0NsaXBWaWV32QBcAVUADgDBAF4AYAFWAGEBVwBsAGwBWgFbAMUAYgFdAGwBX1hOU1RhcmdldFhOU0Fj
dGlvbllOU1BlcmNlbnSADoAOgDyAOoAMgDuADiM/7+pioAAAAF8QFXt7MjYxLCAwfSwgezE1LCAzNjN9
fVxfZG9TY3JvbGxlcjrSADcAOAFjAWSlAWQBUADKAMsAO1pOU1Njcm9sbGVy2gBcAVUADgDBAHAAXgBg
AVYAYQFXAGwAbAFaAWkBagDFAGIBXQBsAW6ADoAOgDyAPhABgAyAO4AOIz/v4m0gAAAAXxAVe3swLCAz
NjN9LCB7MjYxLCAxNX190gA3ADgBcQFypAFyAMoAywA7XE5TU2Nyb2xsVmlld9kAXAAOAMEBFQF0AF4A
pABgAGEATQF2AXcBeAF5AXoAsABiAE1bTlNEcmFnVHlwZXOAC4BKgEaAR4BCEQEOCYAMgAvSAA4APgA/
AYCARaIBgQGCgEOARF8QGUFwcGxlIFVSTCBwYXN0ZWJvYXJkIHR5cGVfEBVOU0ZpbGVuYW1lc1Bib2Fy
ZFR5cGXSADcAOAGGAYejAYcBiAA7XE5TTXV0YWJsZVNldFVOU1NldF8QFnt7LTEsIDM3N30sIHszMDcs
IDIyfX3YAYsA4wAOAOUBGADmAYwBjQBVAY4BjwDsAG0BkgGTAG1bTlNQYXRoU3R5bGVfEBROU1BhdGhD
b21wb25lbnRDZWxsc1pOU0RlbGVnYXRlEhQh/gGASYAbgEESAAKAAIBIgEHSAA4APgBqAZeAMaDSADcA
OAGZAZqkAZoBFAEVADtaTlNQYXRoQ2VsbNIANwA4AZwBnaUBnQFQAMoAywA7XU5TUGF0aENvbnRyb2xa
ezMwNiwgMzk4fdIANwA4AaAAyqMAygDLADtfEBZ7ezAsIDB9LCB7MTY4MCwgMTAyOH190gA3ADgBowGk
ogGkADtfEBBOU1dpbmRvd1RlbXBsYXRl0gAOAD4AagGngDGnAagBqQGqAasBrAGtAa6AUYBYgFqAXIBd
gF+AYdQADgGwAbEBsgGzAbQBtQG2XU5TRGVzdGluYXRpb25YTlNTb3VyY2VXTlNMYWJlbIBXgFSAUoBW
0gAOADIAMwG5gASAU1tQYXRoV2F0Y2hlctIADgAyADMBvYAEgFVfEBJGaWxlVHJlZURhdGFTb3VyY2VY
ZGVsZWdhdGXSADcAOAHBAcKjAcIBwwA7XxAUTlNOaWJPdXRsZXRDb25uZWN0b3JeTlNOaWJDb25uZWN0
b3LUAA4BsAGxAbIBswG1AbQByIBXgFKAVIBZV3dhdGNoZXLUAA4BsAGxAbIBswBBAB8BzoBXgAeAAoBb
VndpbmRvd9QADgGwAbEBsgGzAB8AkgG2gFeAAoASgFbUAA4BsAGxAbIBswG0AJIB2YBXgFSAEoBeWmRh
dGFTb3VyY2XUAA4BsAGxAbIBswCSAbQB34BXgBKAVIBgW291dGxpbmVWaWV32AAOAbAB4gHjAbEBsgHk
AeUB5gHnAegB6QBtAesB7ABVWU5TS2V5UGF0aFlOU0JpbmRpbmdZTlNPcHRpb25zXxAcTlNOaWJCaW5k
aW5nQ29ubmVjdG9yVmVyc2lvboBrgGKAZoBlgEGAZIBn0gAOAe4B7wCwXxAQTlNTaGFyZWRJbnN0YW5j
ZYBjCdIANwA4AfIB86MB8wH0ADtfEBhOU1VzZXJEZWZhdWx0c0NvbnRyb2xsZXJcTlNDb250cm9sbGVy
XxAddmFsdWU6IHZhbHVlcy5maWxlVHJlZVJvb3RVUkxVdmFsdWVfEBZ2YWx1ZXMuZmlsZVRyZWVSb290
VVJM0wAOAfkAPgH6AfsB/VdOUy5rZXlzgGqhAfyAaKEB/oBpXxAWTlNWYWx1ZVRyYW5zZm9ybWVyTmFt
ZV8QFlN0cmluZ1RvVVJMVHJhbnNmb3JtZXLSADcAOAICAgOiAgMAO1xOU0RpY3Rpb25hcnnSADcAOAIF
AgajAgYBwwA7XxAVTlNOaWJCaW5kaW5nQ29ubmVjdG9y0gAOAD4CCAIJgG+uAN0ATQIMAH8AbQBBAHYB
tADPAXgB5wG1AJIAbIAlgAuAbYA5gEGAB4A9gFSAGIBHgGKAUoASgA7SAA4AMgAzAhqABIBuXU5TQXBw
bGljYXRpb27SADcAOAIdAUKiAUIAO9IADgA+AggCIIBvrgDPAEEAHwBsAE0AHwBsAB8AkgBtAB8AHwBs
AE2AGIAHgAKADoALgAKADoACgBKAQYACgAKADoAL0gAOAD4CCAIxgG+vEA8A3QBNAgwAbQAfAH8AQQB2
AbQBeAHnAM8BtQCSAGyAJYALgG2AQYACgDmAB4A9gFSAR4BigBiAUoASgA7SAA4APgIIAkOAb68QDwJE
AkUCRgJHAkgCSQJKAksBvQJNAk4CTwJQAlECUoBzgHSAdYB2gHeAeIB5gHqAVYB7gHyAfYB+gH+AgF8Q
GkZpbGUgSWNvbiBDZWxsIChUZXh0IENlbGwpXENvbnRlbnQgVmlld1tBcHBsaWNhdGlvbl8QGlBvcCBV
cCBQYXRoIENvbnRyb2wgV2lkZ2V0XEZpbGUncyBPd25lcl8QEVZlcnRpY2FsIFNjcm9sbGVyXxARUGFu
ZWwgKEZpbGUgVHJlZSlfEBNIb3Jpem9udGFsIFNjcm9sbGVyWVBhdGggQ2VsbF8QH1NoYXJlZCBVc2Vy
IERlZmF1bHRzIENvbnRyb2xsZXJcVGFibGUgQ29sdW1uXFBhdGggV2F0Y2hlclxPdXRsaW5lIFZpZXdb
U2Nyb2xsIFZpZXfSAA4APgIIAmOAb6EA3YAl0gAOAD4CCAJngG+hASGAJtIADgA+AggCa4BvrxAWAakA
3QGtAE0AbQIMAB8AfwBBAHYBtADPAXgB5wG1AagBqgCSAGwBrgGrAayAWIAlgF+AC4BBgG2AAoA5gAeA
PYBUgBiAR4BigFKAUYBagBKADoBhgFyAXdIADgA+AggChIBvrxAWAoUChgKHAogCiQKKAosCjAKNAo4C
jwKQApECkgKTApQClQKWApcCmAKZApqAhYCGgIeAiICJgIqAi4CMgI2AjoCPgJCAkYCSgJOAlICVgJaA
l4CYgJmAmhAiEBQQFRALEBkT//////////0QIxAQEAoQERAJEBMQGhAbECEQGBAOEB4QFxAW0gAOAD4A
agKxgDGg0gAOAD4CCAK0gG+g0gAOAD4CCAK3gG+g0gA3ADgCuQK6ogK6ADteTlNJQk9iamVjdERhdGEA
CAAZACIAJwAxADoAPwBEAFIAVABmAacBrQH4Af8CBgIUAiYCQgJQAlwCaAJ2AoECjwKrArkCzALeAvgD
AgMPAxEDEwMVAxcDGQMbAx0DHwMhAyMDJQMnAykDKwMtAy8DMQMzAzwDSANKA0wDZwNwA3kDhAOJA5gD
oQO0A70DyAPKA80DzwP8BAkEFgQsBDoERARSBF8EcQSFBJEEkwSVBJcEmQSbBKQEpgSoBKoErASuBMkE
0wTbBPgFCgUVBR4FKgUzBT8FQQVDBUUFSAVKBUwFTgVXBVkFXgVgBWIFlwWjBawFuQXFBdMF4QXjBeUF
5wXqBewF/wYCBgQGBgYIBgoGDAYOBhcGGQYgBiIGJAYmBlMGXQZnBnEGcwZ1BncGeQZ8Bn4GgAaCBoQG
hgaIBpEGkwaWBpgG7wcRBxsHLwdEB1EHaweHB6IHrAe7B+MH7wgOCB0IKQgrCC0ILwg0CDYINwg5CEII
SwhOCFAIUQhTCFUIVghYCFoIXAheCGcIcgiDCIsIjQiPCJEImgixCLoIwwjRCNgI5AjtCO8I8gj0CRkJ
KAk1CT0JSAlXCWIJbQl5CXoJfAl+CYcJiQmLCZQJnQmfCbwJyAnTCd0J6gn2CfsJ/Qn/CgEKAwoFCgYK
FwoeCiUKLgowCjkKOwo+CksKVApZCmAKbQp6CoIKhAqQCpkKngqmCrsKxwrVCtcK2QrbCt0K3wrmCvgL
BQsHCwoLEwseCzILRAtRC1gLgQuXC6ULqgusC64LsAuyC7QLtgu5C7sLvQvKC9QL5QvnC/AL8gv1DAoM
DAwODBAMEgwrDDgMOgxGDFsMXQxfDGEMYwx2DH8MhAyTDJwMoQyvDLgMvwzODNYM6wztDO8M8QzzDP0N
Cg0MDRENGg0jDTANPg1IDVENWg1lDYoNkw2cDaYNqA2qDawNrg2wDbINtA29DdUN4g3rDfYOAQ4qDiwO
Lg4wDjIONA42DjgOOg5DDlsOZA5tDnoOnw6rDq0Orw6xDrMOtQ64DrkOuw69DsYOyA7NDs8O0Q7tDwUP
Dg8VDyIPKA9BD2IPbg+FD5APlQ+XD5kPmw+gD6IPpA+tD68PsA+5D8IPzQ/WD+EP7w/6EAMQChAjECwQ
MRBEEE0QTxBeEGAQYhBkEGYQaBBqEGwQfRCLEJQQnBCeEKAQohCkEK0QrxCxEL0QxhDIEMoQ3xDoEPEQ
+BEPER4RLxExETMRNRE3ET8RUBFSEVQRVhFYEV8RcBFyEXQRdhF4EYkRixGNEY8RkRGcEa0RrxGxEbMR
tRHBEeIR7BH2EgASHxIhEiMSJRInEikSKxItEjYSSRJLEkwSVRJcEncShBKkEqoSwxLQEtgS2hLdEt8S
4hLkEv0TFhMfEyQTMRM6E0ETWRNiE2QTgRODE4UThxOJE4sTjROPE5ETkxOVE5cTmRObE50TphOoE6oT
uBPBE8YTzxPRE+4T8BPyE/QT9hP4E/oT/BP+FAAUAhQEFAYUCBQKFBMUFRQ2FDgUOhQ8FD4UQBRCFEQU
RhRIFEoUTBROFFAUUhRUFF0UXxSAFIIUhBSGFIgUihSMFI4UkBSSFJQUlhSYFJoUnBSeFLsUyBTUFPEU
/hUSFSYVPBVGFWgVdRWCFY8VmxWkFaYVqRWrFbQVthW5FbsVxBXGFfUV9xX5FfsV/RX/FgEWAxYFFgcW
CRYLFg0WDxYRFhMWFRYXFhkWGxYdFh8WIRYqFiwWWxZdFl8WYRZjFmUWZxZpFmsWbRZvFnEWcxZ1FncW
eRZ7Fn0WfxaBFoMWhRaHFokWixaNFo8WkRaaFpwWnhagFqIWpBamFqgWqhasFq4WsBayFrQWtha/FsEW
whbLFs0WzhbXFtkW2hbjFugAAAAAAAACAgAAAAAAAAK7AAAAAAAAAAAAAAAAAAAW9w</bytes>
gwGEAYUBiQGKAZUBmAGbAZ4ACwGfAaEBogGlAbABuAG7AbwBvwHAAcEBxQHKAcsB0AHRAdYB1wHcAeEB
4gHnAegB9AH4AfwB/QH+Af8CBgIHAggCCwIOAh8CIgIjAiUCNgJIAloCWwJcAl0CXgJfAmACYQJiAmMC
ZAJlAmYCZwJoAmwCcAKKAqQCpQKmAFYCpwKoAqkCqgKrAqwCrQKuAq8AuwKwArECsgKzArQCtQK2ArcC
uAK5ArwCvwLCVSRudWxs3xASAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAh
ACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwVk5TUm9vdFYkY2xhc3NdTlNPYmplY3RzS2V5c18Q
D05TQ2xhc3Nlc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXNdTlNDb25uZWN0aW9uc1tO
U05hbWVzS2V5c1tOU0ZyYW1ld29ya11OU0NsYXNzZXNLZXlzWk5TT2lkc0tleXNdTlNOYW1lc1ZhbHVl
c18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNdTlNGb250TWFuYWdlcl8QEE5TVmlzaWJsZVdpbmRv
d3NfEA9OU09iamVjdHNWYWx1ZXNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c1lOU05leHRPaWRcTlNP
aWRzVmFsdWVzgAKAoYBugISAoIBQgHOABYCDgIWAdICegACABoBygJ8QJYCG0gAOADIAMwA0W05TQ2xh
c3NOYW1lgASAA18QGEZpbGVUcmVlV2luZG93Q29udHJvbGxlctIANwA4ADkAOlgkY2xhc3Nlc1okY2xh
c3NuYW1logA6ADteTlNDdXN0b21PYmplY3RYTlNPYmplY3RfEBBJQkNvY29hRnJhbWV3b3Jr0gAOAD4A
PwBAWk5TLm9iamVjdHOARaEAQYAH2wBDAA4ARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABQAFIAUwBU
AFUAVgArXE5TV2luZG93Vmlld1xOU1NjcmVlblJlY3RfEBNOU0ZyYW1lQXV0b3NhdmVOYW1lXU5TV2lu
ZG93VGl0bGVZTlNXVEZsYWdzXU5TV2luZG93Q2xhc3NcTlNXaW5kb3dSZWN0XxAPTlNXaW5kb3dCYWNr
aW5nXxARTlNXaW5kb3dTdHlsZU1hc2tbTlNWaWV3Q2xhc3OAC4BPgE6ACYAJE/////+kAAQAgAqACBAC
EB+AAF8QGHt7MTk2LCAxMTJ9LCB7MzA2LCAzOTh9fVlGaWxlIFRyZWVXTlNQYW5lbNcAXAAOAF0AXgBf
AGAAYQBiAGMAZABlAGYAYgBoXxAPTlNOZXh0UmVzcG9uZGVyWk5TU3Vidmlld3NYTlN2RmxhZ3NbTlNG
cmFtZVNpemVYTlNXaW5kb3dbTlNTdXBlcnZpZXeADIBNgA0RAQCAS4AMgEzSAA4APgBqAGuAMaIAbABt
gA6AQd0AXABvAA4AcABdAHEAXgBfAGAAYQByAHMAdABNAHYAdwB4AHkAegB7AHwAYgBNAH8AgACAW05T
SFNjcm9sbGVyWE5Tc0ZsYWdzXE5TU2Nyb2xsQW10c1tOU1ZTY3JvbGxlcl1OU05leHRLZXlWaWV3XU5T
Q29udGVudFZpZXeAC4A9gEARAjCAD08QEEEgAABBIAAAQZgAAEGYAAARARKAP4AMgAuAOYAQgBDSAA4A
PgBqAISAMaMAgAB/AHaAEIA5gD3bAFwADgCJAF0AXgBfAIoAYACLAGEAcwBsAI0AjgCPAJAAkQCSAGIA
lABsAJJZTlNjdkZsYWdzWU5TRG9jVmlld1lOU0JHQ29sb3KADoA4EASAEREJAIA3gBKADIAqgA6AEtIA
DgA+AGoAmYAxoQCSgBLfEBUAXACcAA4AnQCeAJ8AoAChAKIAowBeAF8ApAClAGAApgCnAKgAYQCpAKoA
gACsAK0ArgCUALAAsQCyAI4AswC0ALUAsAC3AGIAsAC6ALsAgAC9AL5fEB9OU0RyYWdnaW5nU291cmNl
TWFza0Zvck5vbkxvY2FsWU5TVHZGbGFnc18QEU5TQmFja2dyb3VuZENvbG9yXxASTlNBbGxvd3NUeXBl
U2VsZWN0XE5TQ29ybmVyVmlld18QF05TSW50ZXJjZWxsU3BhY2luZ1dpZHRoXxAZTlNDb2x1bW5BdXRv
cmVzaXppbmdTdHlsZV8QGE5TSW50ZXJjZWxsU3BhY2luZ0hlaWdodFlOU0VuYWJsZWReTlNBdXRvc2F2
ZU5hbWVfECVOU091dGxpbmVWaWV3QXV0b3NhdmVFeHBhbmRlZEl0ZW1zS2V5W05TR3JpZENvbG9yXxAc
TlNEcmFnZ2luZ1NvdXJjZU1hc2tGb3JMb2NhbF5OU1RhYmxlQ29sdW1uc1tOU1Jvd0hlaWdodIAQEACA
NhJawAAAgCoJgBQjQAgAAAAAAAAjQAAAAAAAAAAREQCAEwmANYAMCYAyEA+AEIAXI0AxAAAAAAAAWnsz
MDYsIDM3N33UAFwADgDBAF4AKwDDAMQAxVdOU0ZyYW1lgACAFoAVE/////+AAAEAXxAUe3stMjYsIDB9
LCB7MTYsIDE3fX3SADcAOADIAMmkAMkAygDLADtdX05TQ29ybmVyVmlld1ZOU1ZpZXdbTlNSZXNwb25k
ZXLSAA4APgBqAM6AMaEAz4AY2QDRAA4A0gDTANQA1QDWANcA2ACwANoA2wDcAN0A3gDfAOAAkl5OU0lz
UmVzaXplYWJsZVxOU0hlYWRlckNlbGxXTlNXaWR0aFpOU0RhdGFDZWxsXk5TUmVzaXppbmdNYXNrWk5T
TWluV2lkdGhaTlNNYXhXaWR0aFtOU1RhYmxlVmlldwmAMIAZI0By8AAAAAAAgCUQAyNAMAAAAAAAACNA
j0AAAAAAAIAS1wDjAA4AngDkAOUA5gDnAOgA6QDqAOsA7ACsAO1bTlNDZWxsRmxhZ3NaTlNDb250ZW50
c1lOU1N1cHBvcnRcTlNDZWxsRmxhZ3MyW05TVGV4dENvbG9yEgSB/gCAJIAegBqAG4AgUNQADgDwAPEA
8gDzAPQA9QD2Vk5TU2l6ZVZOU05hbWVYTlNmRmxhZ3OAHSNAJgAAAAAAAIAcEQwcXEx1Y2lkYUdyYW5k
ZdIANwA4APkA+qIA+gA7Vk5TRm9udNMADgD8AP0A/gDeAP9cTlNDb2xvclNwYWNlV05TV2hpdGWAH0sw
LjMzMzMzMjk5ANIANwA4AQEBAqIBAgA7V05TQ29sb3LVAA4BAgD8AQQBBQD+AQcBCAEJAQpbTlNDb2xv
ck5hbWVdTlNDYXRhbG9nTmFtZYAfgCMQBoAigCFWU3lzdGVtXxAPaGVhZGVyVGV4dENvbG9y0wAOAPwA
/QD+AN4BD4AfQjAA0gA3ADgBEQESpQESARMBFAEVADtfEBFOU1RhYmxlSGVhZGVyQ2VsbF8QD05TVGV4
dEZpZWxkQ2VsbFxOU0FjdGlvbkNlbGxWTlNDZWxs2gDjAA4BFwCeAOQA5QEYAOYAMgDnARkBGgEbAJQB
HQEeAJIBIAEhASJfEBNOU09yaWdpbmFsQ2xhc3NOYW1lXU5TQ29udHJvbFZpZXcSFCH+QYAvgCeAKoAo
gCmAEhEIAIAmgC1cRmlsZUljb25DZWxsWVRleHQgQ2VsbNQADgDwAPEA8gDzAScA9QEpgB0jQCoAAAAA
AACAHBEEFNUADgECAPwBBAEFAP4BLAEIAS0BCoAfgCyAK4AhXxAWY29udHJvbEJhY2tncm91bmRDb2xv
ctMADgD8AP0A/gDeATKAH0swLjY2NjY2NjY5ANUADgECAPwBBAEFAP4BBwEIATYBCoAfgCOALoAhXxAQ
Y29udHJvbFRleHRDb2xvctIANwA4AToBO6IBOwA7Xk5TQ2xhc3NTd2FwcGVy0gA3ADgBPQE+ogE+ADtd
TlNUYWJsZUNvbHVtbtIANwA4AUABQaMBQQFCADteTlNNdXRhYmxlQXJyYXlXTlNBcnJhedUADgECAPwB
BAEFAP4BRQEIAUYBCoAfgDSAM4AhWWdyaWRDb2xvctMADgD8AP0A/gDeAUuAH0QwLjUAWEZpbGVUcmVl
0gA3ADgBTgFPpgFPANgBUADKAMsAO11OU091dGxpbmVWaWV3WU5TQ29udHJvbNIANwA4AVIBU6QBUwDK
AMsAO1pOU0NsaXBWaWV32QBcAVUADgDBAF4AYAFWAGEBVwBsAGwBWgFbAMUAYgFdAGwBX1hOU1Rhcmdl
dFhOU0FjdGlvbllOU1BlcmNlbnSADoAOgDyAOoAMgDuADiM/7+pioAAAAF8QFXt7MjYxLCAwfSwgezE1
LCAzNjN9fVxfZG9TY3JvbGxlcjrSADcAOAFjAWSlAWQBUADKAMsAO1pOU1Njcm9sbGVy2gBcAVUADgDB
AHAAXgBgAVYAYQFXAGwAbAFaAWkBagDFAGIBXQBsAW6ADoAOgDyAPhABgAyAO4AOIz/v4m0gAAAAXxAV
e3swLCAzNjN9LCB7MjYxLCAxNX190gA3ADgBcQFypAFyAMoAywA7XE5TU2Nyb2xsVmlld9kAXAAOAMEB
FQF0AF4ApABgAGEATQF2AXcBeAF5AXoAsABiAE1bTlNEcmFnVHlwZXOAC4BKgEaAR4BCEQEOCYAMgAvS
AA4APgA/AYCARaIBgQGCgEOARF8QGUFwcGxlIFVSTCBwYXN0ZWJvYXJkIHR5cGVfEBVOU0ZpbGVuYW1l
c1Bib2FyZFR5cGXSADcAOAGGAYejAYcBiAA7XE5TTXV0YWJsZVNldFVOU1NldF8QFnt7LTEsIDM3N30s
IHszMDcsIDIyfX3YAYsA4wAOAOUBGADmAYwBjQBVAY4BjwDsAG0BkgGTAG1bTlNQYXRoU3R5bGVfEBRO
U1BhdGhDb21wb25lbnRDZWxsc1pOU0RlbGVnYXRlEhQh/gGASYAbgEESAAKAAIBIgEHSAA4APgBqAZeA
MaDSADcAOAGZAZqkAZoBFAEVADtaTlNQYXRoQ2VsbNIANwA4AZwBnaUBnQFQAMoAywA7XU5TUGF0aENv
bnRyb2xaezMwNiwgMzk4fdIANwA4AaAAyqMAygDLADtfEBZ7ezAsIDB9LCB7MTkyMCwgMTE3OH190gA3
ADgBowGkogGkADtfEBBOU1dpbmRvd1RlbXBsYXRl0gAOAD4AagGngDGoAagBqQGqAasBrAGtAa4Br4BR
gFiAWoBcgF6AX4BhgGPUAA4BsQGyAbMBtAG1AbYBt11OU0Rlc3RpbmF0aW9uWE5TU291cmNlV05TTGFi
ZWyAV4BUgFKAVtIADgAyADMBuoAEgFNbUGF0aFdhdGNoZXLSAA4AMgAzAb6ABIBVXxASRmlsZVRyZWVE
YXRhU291cmNlWGRlbGVnYXRl0gA3ADgBwgHDowHDAcQAO18QFE5TTmliT3V0bGV0Q29ubmVjdG9yXk5T
TmliQ29ubmVjdG9y1AAOAbEBsgGzAbQBtgG1AcmAV4BSgFSAWVd3YXRjaGVy1AAOAbEBsgGzAbQBtQCS
Ac+AV4BUgBKAW1pkYXRhU291cmNl1AAOAbEBsgGzAbQAkgG1AdWAV4ASgFSAXVtvdXRsaW5lVmlld9QA
DgGxAbIBswG0AB8AkgG3gFeAAoASgFbUAA4BsQGyAbMBtABBAB8B4IBXgAeAAoBgVndpbmRvd9QADgGx
AbIBswG0AB8BtQHmgFeAAoBUgGJfEBJmaWxlVHJlZUNvbnRyb2xsZXLYAA4BsQHpAeoBsgGzAesB7AHt
Ae4B7wHwAG0B8gHzAFVZTlNLZXlQYXRoWU5TQmluZGluZ1lOU09wdGlvbnNfEBxOU05pYkJpbmRpbmdD
b25uZWN0b3JWZXJzaW9ugG2AZIBogGeAQYBmgGnSAA4B9QH2ALBfEBBOU1NoYXJlZEluc3RhbmNlgGUJ
0gA3ADgB+QH6owH6AfsAO18QGE5TVXNlckRlZmF1bHRzQ29udHJvbGxlclxOU0NvbnRyb2xsZXJfEB12
YWx1ZTogdmFsdWVzLmZpbGVUcmVlUm9vdFVSTFV2YWx1ZV8QFnZhbHVlcy5maWxlVHJlZVJvb3RVUkzT
AA4CAAA+AgECAgIEV05TLmtleXOAbKECA4BqoQIFgGtfEBZOU1ZhbHVlVHJhbnNmb3JtZXJOYW1lXxAW
U3RyaW5nVG9VUkxUcmFuc2Zvcm1lctIANwA4AgkCCqICCgA7XE5TRGljdGlvbmFyedIANwA4AgwCDaMC
DQHEADtfEBVOU05pYkJpbmRpbmdDb25uZWN0b3LSAA4APgIPAhCAca4BeABtAbYCFABNAEEB7gG1AJIA
3QB/AHYAbADPgEeAQYBSgG+AC4AHgGSAVIASgCWAOYA9gA6AGNIADgAyADMCIYAEgHBdTlNBcHBsaWNh
dGlvbtIANwA4AiQBQqIBQgA70gAOAD4CDwIngHGuAG0ATQAfAB8AQQAfAB8AHwBsAM8AbABsAE0AkoBB
gAuAAoACgAeAAoACgAKADoAYgA6ADoALgBLSAA4APgIPAjiAca8QDwF4AG0BtgIUAe4AQQBNAbUAkgDd
AH8AdgAfAGwAz4BHgEGAUoBvgGSAB4ALgFSAEoAlgDmAPYACgA6AGNIADgA+Ag8CSoBxrxAPAksCTAJN
Ak4CTwJQAlEBvgJTAlQCVQJWAlcCWAJZgHWAdoB3gHiAeYB6gHuAVYB8gH2AfoB/gICAgYCCWVBhdGgg
Q2VsbF8QGlBvcCBVcCBQYXRoIENvbnRyb2wgV2lkZ2V0XFBhdGggV2F0Y2hlcltBcHBsaWNhdGlvbl8Q
H1NoYXJlZCBVc2VyIERlZmF1bHRzIENvbnRyb2xsZXJfEBFQYW5lbCAoRmlsZSBUcmVlKVxDb250ZW50
IFZpZXdcT3V0bGluZSBWaWV3XxAaRmlsZSBJY29uIENlbGwgKFRleHQgQ2VsbClfEBFWZXJ0aWNhbCBT
Y3JvbGxlcl8QE0hvcml6b250YWwgU2Nyb2xsZXJcRmlsZSdzIE93bmVyW1Njcm9sbCBWaWV3XFRhYmxl
IENvbHVtbtIADgA+Ag8CaoBxoQDdgCXSAA4APgIPAm6AcaEBIYAm0gAOAD4CDwJygHGvEBcBeABtAa4B
tgGoAakCFAGsAE0AQQHuAbUBrQCSAN0AfwB2AB8AbAGvAM8BqgGrgEeAQYBhgFKAUYBYgG+AXoALgAeA
ZIBUgF+AEoAlgDmAPYACgA6AY4AYgFqAXNIADgA+Ag8CjIBxrxAXAo0CjgKPApACkQKSApMClAKVApYC
lwKYApkCmgKbApwCnQKeAp8CoAKhAqICo4CHgIiAiYCKgIuAjICNgI6Aj4CQgJGAkoCTgJSAlYCWgJeA
mICZgJqAm4CcgJ0QGhAZECMQIRAiE//////////9EBcQCxAKEBsQCRAYEBQQEBARECQQDhAeEBMQFhAV
0gAOAD4AagK7gDGg0gAOAD4CDwK+gHGg0gAOAD4CDwLBgHGg0gA3ADgCwwLEogLEADteTlNJQk9iamVj
dERhdGEACAAZACIAJwAxADoAPwBEAFIAVABmAa0BswH+AgUCDAIaAiwCSAJWAmICbgJ8AocClQKxAr8C
0gLkAv4DCAMVAxcDGQMbAx0DHwMhAyMDJQMnAykDKwMtAy8DMQMzAzUDNwM5A0IDTgNQA1IDbQN2A38D
igOPA54DpwO6A8MDzgPQA9MD1QQCBA8EHAQyBEAESgRYBGUEdwSLBJcEmQSbBJ0EnwShBKoErASuBLAE
sgS0BM8E2QThBP4FEAUbBSQFMAU5BUUFRwVJBUsFTgVQBVIFVAVdBV8FZAVmBWgFnQWpBbIFvwXLBdkF
5wXpBesF7QXwBfIGBQYIBgoGDAYOBhAGEgYUBh0GHwYmBigGKgYsBlkGYwZtBncGeQZ7Bn0GfwaCBoQG
hgaIBooGjAaOBpcGmQacBp4G9QcXByEHNQdKB1cHcQeNB6gHsgfBB+kH9QgUCCMILwgxCDMINQg6CDwI
PQg/CEgIUQhUCFYIVwhZCFsIXAheCGAIYghkCG0IeAiJCJEIkwiVCJcIoAi3CMAIyQjXCN4I6gjzCPUI
+Aj6CR8JLgk7CUMJTgldCWgJcwl/CYAJggmECY0JjwmRCZoJowmlCcIJzgnZCeMJ8An8CgEKAwoFCgcK
CQoLCgwKHQokCisKNAo2Cj8KQQpEClEKWgpfCmYKcwqACogKigqWCp8KpAqsCsEKzQrbCt0K3wrhCuMK
5QrsCv4LCwsNCxALGQskCzgLSgtXC14LhwudC6sLsAuyC7QLtgu4C7oLvAu/C8ELwwvQC9oL6wvtC/YL
+Av7DBAMEgwUDBYMGAwxDD4MQAxMDGEMYwxlDGcMaQx8DIUMigyZDKIMpwy1DL4MxQzUDNwM8QzzDPUM
9wz5DQMNEA0SDRcNIA0pDTYNRA1ODVcNYA1rDZANmQ2iDawNrg2wDbINtA22DbgNug3DDdsN6A3xDfwO
Bw4wDjIONA42DjgOOg48Dj4OQA5JDmEOag5zDoAOpQ6xDrMOtQ63DrkOuw6+Dr8OwQ7DDswOzg7TDtUO
1w7zDwsPFA8bDygPLg9HD2gPdA+LD5YPmw+dD58PoQ+mD6gPqg+zD7UPtg+/D8gP0w/cD+cP9RAAEAkQ
EBApEDIQNxBKEFMQVRBmEGgQahBsEG4QcBByEHQQdhCHEJUQnhCmEKgQqhCsEK4QtxC5ELsQxxDQENIQ
1BDpEPIQ+xECERkRKBE5ETsRPRE/EUERSRFaEVwRXhFgEWIRbRF+EYARghGEEYYRkhGjEaURpxGpEasR
vBG+EcARwhHEEcsR3BHeEeAR4hHkEfkSGhIkEi4SOBJXElkSWxJdEl8SYRJjEmUSbhKBEoMShBKNEpQS
rxK8EtwS4hL7EwgTEBMSExUTFxMaExwTNRNOE1cTXBNpE3ITeRORE5oTnBO5E7sTvRO/E8ETwxPFE8cT
yRPLE80TzxPRE9MT1RPeE+AT4hPwE/kT/hQHFAkUJhQoFCoULBQuFDAUMhQ0FDYUOBQ6FDwUPhRAFEIU
SxRNFG4UcBRyFHQUdhR4FHoUfBR+FIAUghSEFIYUiBSKFIwUlRSXFLgUuhS8FL4UwBTCFMQUxhTIFMoU
zBTOFNAU0hTUFNYU4BT9FQoVFhU4FUwVWRVmFYMVlxWtFboVxhXTFdwV3hXhFeMV7BXuFfEV8xX8Ff4W
LxYxFjMWNRY3FjkWOxY9Fj8WQRZDFkUWRxZJFksWTRZPFlEWUxZVFlcWWRZbFl0WZhZoFpkWmxadFp8W
oRajFqUWpxapFqsWrRavFrEWsxa1FrcWuRa7Fr0WvxbBFsMWxRbHFskWyxbNFs8W0RbaFtwW3hbgFuIW
5BbmFugW6hbsFu4W8BbyFvQW9hb4FwEXAxcEFw0XDxcQFxkXGxccFyUXKgAAAAAAAAICAAAAAAAAAsUA
AAAAAAAAAAAAAAAAABc5A</bytes>
</object>
</data>
</archive>

File diff suppressed because it is too large Load Diff

View File

@ -10,10 +10,12 @@
@class PathNode;
@class PathWatcher;
@class FileTreeWindowController;
@interface FileTreeDataSource : NSObject {
PathNode *rootNode;
IBOutlet FileTreeWindowController *fileTreeController;
IBOutlet PathWatcher *watcher;
IBOutlet NSOutlineView *outlineView;
}
@ -21,6 +23,8 @@
- (NSURL *)rootURL;
- (void)setRootURL:(NSURL *)rootURL;
- (IBAction)doubleClickSelector:(id)sender;
- (void)reloadPathNode:(PathNode *)item;
@end

View File

@ -12,6 +12,7 @@
#import "DirectoryNode.h"
#import "PathWatcher.h"
#import "FileTreeWindowController.h"
@implementation FileTreeDataSource
@ -29,8 +30,18 @@
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.fileTreeRootURL" options:0 context:nil];
[self setRootURL: [NSURL URLWithString:[[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"fileTreeRootURL"]]];
[outlineView setDoubleAction:@selector(doubleClickSelector:)];
[outlineView setTarget:self];
}
// double click in file tree view
- (IBAction)doubleClickSelector:(id)sender
{
NSArray *urls = [NSArray arrayWithObject:[[outlineView itemAtRow:[outlineView clickedRow]] URL]];
[fileTreeController addToPlaylist:urls];
}
- (void) observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change

View File

@ -7,10 +7,14 @@
//
#import <Cocoa/Cocoa.h>
#import "PlaylistLoader.h"
@class PlaylistLoader;
@interface FileTreeWindowController : NSWindowController {
IBOutlet PlaylistLoader *playlistLoader;
}
- (void)addToPlaylist:(NSArray *)urls;
@end

View File

@ -16,5 +16,9 @@
return [super initWithWindowNibName:@"FileTreePanel"];
}
- (void)addToPlaylist:(NSArray *)urls
{
[playlistLoader addURLs:urls sort:NO];
}
@end