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

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -12,6 +12,7 @@
#import "DirectoryNode.h" #import "DirectoryNode.h"
#import "PathWatcher.h" #import "PathWatcher.h"
#import "FileTreeWindowController.h"
@implementation FileTreeDataSource @implementation FileTreeDataSource
@ -29,8 +30,18 @@
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.fileTreeRootURL" options:0 context:nil]; [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.fileTreeRootURL" options:0 context:nil];
[self setRootURL: [NSURL URLWithString:[[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"fileTreeRootURL"]]]; [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 - (void) observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object ofObject:(id)object
change:(NSDictionary *)change change:(NSDictionary *)change

View File

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

View File

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