Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Scrap big html view in favor of cocoa controls

  • Loading branch information...
commit a6ad7f3ed651ee1b1332e58fd2a3f7ddd8c0fbee 1 parent 3f411c6
@Caged Caged authored
View
17 ApplicationController.rb
@@ -9,22 +9,17 @@
require 'osx/cocoa'
require 'rubygems'
require 'grit'
-require 'erubis'
include OSX
+OSX.ns_import 'ImageTextCell'
class ApplicationController < OSX::NSObject
- ib_outlet :main_view
attr_reader :repo
+ ib_outlet :commits_table, :commits_controller
def awakeFromNib
- @main_view.drawsBackground = false
- @repo = Grit::Repo.new("/Users/Caged/dev/clients/digisynd/code/client.rails")
- render 'log', {:repo => @repo, :branches => @repo.branches }
- end
-
- def render(file, context)
- log_template = File.join(NSBundle.mainBundle.bundlePath, "Contents", "Resources", "#{file}.html.erb")
- eruby = Erubis::FastEruby.load_file(log_template)
- @main_view.mainFrame.loadHTMLString_baseURL(eruby.evaluate(context), NSURL.fileURLWithPath(File.join(NSBundle.mainBundle.bundlePath, "Contents", "Resources")))
+ column = @commits_table.tableColumns[0]
+ cell = ImageTextCell.alloc.init
+ column.dataCell = cell
+ cell.dataDelegate = @commits_controller
end
end
View
51 CommitsController.rb
@@ -0,0 +1,51 @@
+#
+# CommitsController.rb
+# GitNub
+#
+# Created by Justin Palmer on 3/2/08.
+# Copyright (c) 2008 Active Reload, LLC. All rights reserved.
+#
+
+require 'osx/cocoa'
+
+class CommitsController < OSX::NSObject
+ attr_reader :commits, :commit
+ ib_outlet :commits_table
+ ib_outlet :app_controller
+
+ def awakeFromNib
+ @repo = Grit::Repo.new("/Users/Caged/dev/clients/digisynd/code/client.rails")
+ @commits = @repo.commits('master', 100)
+ @commits_table.reloadData
+ end
+
+ # DataSource Methods
+ def tableViewSelectionDidChange(notification)
+
+ end
+
+ def numberOfRowsInTableView(table_view)
+ @commits ? @commits.size : 0
+ end
+
+ def tableView_objectValueForTableColumn_row(table_view, table_column, row)
+ @commit = @commits[row]
+ return nil
+ end
+
+ def primaryTextForCell_data(cell, data)
+ return data.message.to_s
+ end
+
+ def secondaryTextForCell_data(cell, data)
+ return %(by #{data.committer.name} <#{data.committer.email}> on #{data.committed_date.strftime("%A, %b %d, %I:%m %p")})
+ end
+
+ def iconForCell_data(icon, data)
+ NSImage.imageNamed('bubble.png')
+ end
+
+ def dataElementForCell(cell)
+ return @commit
+ end
+end
View
1,037 English.lproj/MainMenu.nib/designable.nib
@@ -9,12 +9,11 @@
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="29"/>
- <integer value="254"/>
+ <integer value="255"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string id="120688243">com.apple.WebKitIBPlugin</string>
- <string id="130404900">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string id="1045291949">com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="290257322">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -32,109 +31,231 @@
<object class="NSWindowTemplate" id="469667931">
<int key="NSWindowStyleMask">12319</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{330, 424}, {556, 412}}</string>
+ <string key="NSWindowRect">{{330, 365}, {708, 471}}</string>
<int key="NSWTFlags">813170688</int>
<string key="NSWindowTitle">GitNub</string>
- <string key="NSWindowClass">NSWindow</string>
+ <string key="NSWindowClass" id="875846733">TexturedWindow</string>
<nil key="NSViewClass"/>
<object class="NSView" key="NSWindowView" id="831824449">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSSplitView" id="67017650">
+ <object class="NSPopUpButton" id="60591724">
+ <reference key="NSNextResponder" ref="831824449"/>
+ <int key="NSvFlags">292</int>
+ <string key="NSFrame">{{17, 11}, {170, 26}}</string>
+ <reference key="NSSuperview" ref="831824449"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSPopUpButtonCell" key="NSCell" id="399670599">
+ <int key="NSCellFlags">71433792</int>
+ <int key="NSCellFlags2">2048</int>
+ <object class="NSFont" key="NSSupport" id="98627494">
+ <string key="NSName" id="500339367">LucidaGrande</string>
+ <double key="NSSize">1.300000e+01</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="60591724"/>
+ <int key="NSButtonFlags">142754047</int>
+ <int key="NSButtonFlags2">35</int>
+ <string key="NSAlternateContents" id="1005950920"/>
+ <reference key="NSKeyEquivalent" ref="1005950920"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ <object class="NSMenuItem" key="NSMenuItem" id="12649420">
+ <reference key="NSMenu" ref="629832535"/>
+ <string key="NSTitle">Item 1</string>
+ <reference key="NSKeyEquiv" ref="1005950920"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <int key="NSState">1</int>
+ <object class="NSCustomResource" key="NSOnImage" id="59519207">
+ <string key="NSClassName" id="829032652">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="826119115">
+ <reference key="NSClassName" ref="829032652"/>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="399670599"/>
+ </object>
+ <bool key="NSMenuItemRespectAlignment">YES</bool>
+ <object class="NSMenu" key="NSMenu" id="629832535">
+ <string key="NSTitle">OtherViews</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="12649420"/>
+ <object class="NSMenuItem" id="49844324">
+ <reference key="NSMenu" ref="629832535"/>
+ <string key="NSTitle">Item 2</string>
+ <reference key="NSKeyEquiv" ref="1005950920"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="399670599"/>
+ </object>
+ <object class="NSMenuItem" id="941872528">
+ <reference key="NSMenu" ref="629832535"/>
+ <string key="NSTitle">Item 3</string>
+ <reference key="NSKeyEquiv" ref="1005950920"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="399670599"/>
+ </object>
+ </object>
+ </object>
+ <int key="NSPreferredEdge">1</int>
+ <bool key="NSUsesItemFromMenu">YES</bool>
+ <bool key="NSAltersState">YES</bool>
+ <int key="NSArrowPosition">2</int>
+ </object>
+ </object>
+ <object class="NSScrollView" id="1052727212">
<reference key="NSNextResponder" ref="831824449"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="WebView" id="720666767">
- <reference key="NSNextResponder" ref="67017650"/>
- <int key="NSvFlags">4370</int>
- <object class="NSMutableSet" key="NSDragTypes">
+ <object class="NSClipView" id="648361966">
+ <reference key="NSNextResponder" ref="1052727212"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="set.sortedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string id="678486299">Apple HTML pasteboard type</string>
- <string id="990913919">Apple PICT pasteboard type</string>
- <string id="39586249">Apple URL pasteboard type</string>
- <string id="680195946">Apple Web Archive pasteboard type</string>
- <string id="203715882">NSColor pasteboard type</string>
- <string id="1056696483">NSFilenamesPboardType</string>
- <string id="873197552">NSStringPboardType</string>
- <string id="37097498">NeXT RTFD pasteboard type</string>
- <string id="278571769">NeXT Rich Text Format v1.0 pasteboard type</string>
- <string id="322153226">NeXT TIFF v4.0 pasteboard type</string>
- <string id="94641855">WebURLsWithTitlesPboardType</string>
- <string id="1033338511">public.url</string>
- <string id="239638926">public.url-name</string>
- </object>
- </object>
- <string key="NSFrameSize">{556, 216}</string>
- <reference key="NSSuperview" ref="67017650"/>
- <reference key="NSWindow"/>
- <reference key="NSNextKeyView"/>
- <string key="FrameName" id="1065384583"/>
- <reference key="GroupName" ref="1065384583"/>
- <object class="WebPreferences" key="Preferences" id="313841479">
- <reference key="Identifier" ref="1065384583"/>
- <object class="NSMutableDictionary" key="Values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>WebKitDefaultFixedFontSize</string>
- <string>WebKitDefaultFontSize</string>
- <string>WebKitMinimumFontSize</string>
+ <object class="NSTableView" id="95565757">
+ <reference key="NSNextResponder" ref="648361966"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{708, 426}</string>
+ <reference key="NSSuperview" ref="648361966"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="_NSCornerView" key="NSCornerView">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-26, 0}, {16, 17}}</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="12" id="1006839156"/>
- <reference ref="1006839156"/>
- <integer value="1" id="9"/>
+ <object class="NSTableColumn" id="778667112">
+ <double key="NSWidth">7.050000e+02</double>
+ <double key="NSMinWidth">4.000000e+01</double>
+ <double key="NSMaxWidth">1.000000e+03</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">0</int>
+ <reference key="NSContents" ref="1005950920"/>
+ <object class="NSFont" key="NSSupport">
+ <reference key="NSName" ref="500339367"/>
+ <double key="NSSize">1.100000e+01</double>
+ <int key="NSfFlags">3100</int>
+ </object>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
+ </object>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName" id="866327061">System</string>
+ <string key="NSColorName">headerTextColor</string>
+ <object class="NSColor" key="NSColor" id="96157912">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="674973576">
+ <int key="NSCellFlags">337772097</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">Text Cell</string>
+ <reference key="NSSupport" ref="98627494"/>
+ <reference key="NSControlView" ref="95565757"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <int key="NSTextBezelStyle">1</int>
+ <object class="NSColor" key="NSBackgroundColor" id="1046813822">
+ <int key="NSColorSpace">6</int>
+ <reference key="NSCatalogName" ref="866327061"/>
+ <string key="NSColorName">controlBackgroundColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <reference key="NSCatalogName" ref="866327061"/>
+ <string key="NSColorName">controlTextColor</string>
+ <reference key="NSColor" ref="96157912"/>
+ </object>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="95565757"/>
+ </object>
+ </object>
+ <double key="NSIntercellSpacingWidth">3.000000e+00</double>
+ <double key="NSIntercellSpacingHeight">2.000000e+00</double>
+ <reference key="NSBackgroundColor" ref="1046813822"/>
+ <object class="NSColor" key="NSGridColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MC44OTUyNDM0NyAwLjkyMTQzMjYxIDEAA</bytes>
</object>
+ <double key="NSRowHeight">3.200000e+01</double>
+ <int key="NSTvFlags">-759169024</int>
+ <int key="NSGridStyleMask">2</int>
+ <int key="NSColumnAutoresizingStyle">4</int>
+ <int key="NSDraggingSourceMaskForLocal">15</int>
+ <int key="NSDraggingSourceMaskForNonLocal">0</int>
+ <bool key="NSAllowsTypeSelect">YES</bool>
</object>
</object>
- <bool key="UseBackForwardList">YES</bool>
- <bool key="AllowsUndo">YES</bool>
+ <string key="NSFrameSize">{708, 426}</string>
+ <reference key="NSSuperview" ref="1052727212"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="95565757"/>
+ <reference key="NSDocView" ref="95565757"/>
+ <reference key="NSBGColor" ref="1046813822"/>
+ <int key="NScvFlags">4</int>
</object>
- <object class="WebView" id="152109774">
- <reference key="NSNextResponder" ref="67017650"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableSet" key="NSDragTypes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="set.sortedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="678486299"/>
- <reference ref="990913919"/>
- <reference ref="39586249"/>
- <reference ref="680195946"/>
- <reference ref="203715882"/>
- <reference ref="1056696483"/>
- <reference ref="873197552"/>
- <reference ref="37097498"/>
- <reference ref="278571769"/>
- <reference ref="322153226"/>
- <reference ref="94641855"/>
- <reference ref="1033338511"/>
- <reference ref="239638926"/>
- </object>
- </object>
- <string key="NSFrame">{{0, 225}, {556, 202}}</string>
- <reference key="NSSuperview" ref="67017650"/>
+ <object class="NSScroller" id="728533113">
+ <reference key="NSNextResponder" ref="1052727212"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{541, 0}, {15, 326}}</string>
+ <reference key="NSSuperview" ref="1052727212"/>
+ <reference key="NSWindow"/>
+ <reference key="NSTarget" ref="1052727212"/>
+ <string key="NSAction" id="262304036">_doScroller:</string>
+ <double key="NSPercent">9.969419e-01</double>
+ </object>
+ <object class="NSScroller" id="439200232">
+ <reference key="NSNextResponder" ref="1052727212"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {541, 15}}</string>
+ <reference key="NSSuperview" ref="1052727212"/>
<reference key="NSWindow"/>
- <reference key="NSNextKeyView"/>
- <reference key="FrameName" ref="1065384583"/>
- <reference key="GroupName" ref="1065384583"/>
- <reference key="Preferences" ref="313841479"/>
- <bool key="UseBackForwardList">YES</bool>
- <bool key="AllowsUndo">YES</bool>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="1052727212"/>
+ <reference key="NSAction" ref="262304036"/>
+ <double key="NSPercent">5.714286e-01</double>
</object>
</object>
- <string key="NSFrame">{{0, -15}, {556, 427}}</string>
+ <string key="NSFrame">{{0, 45}, {708, 426}}</string>
<reference key="NSSuperview" ref="831824449"/>
<reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="648361966"/>
+ <int key="NSsFlags">528</int>
+ <reference key="NSVScroller" ref="728533113"/>
+ <reference key="NSHScroller" ref="439200232"/>
+ <reference key="NSContentView" ref="648361966"/>
+ <bytes key="NSScrollAmts">QSAAAEEgAABCCAAAQggAAA</bytes>
</object>
</object>
- <string key="NSFrameSize">{556, 412}</string>
+ <string key="NSFrameSize">{708, 471}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
</object>
@@ -149,17 +270,11 @@
<object class="NSMenuItem" id="273211888">
<reference key="NSMenu" ref="613528524"/>
<string key="NSTitle" id="1045736176">NewApplication</string>
- <reference key="NSKeyEquiv" ref="1065384583"/>
+ <reference key="NSKeyEquiv" ref="1005950920"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <object class="NSCustomResource" key="NSOnImage" id="248023520">
- <string key="NSClassName" id="915298329">NSImage</string>
- <string key="NSResourceName">NSMenuCheckmark</string>
- </object>
- <object class="NSCustomResource" key="NSMixedImage" id="16133015">
- <reference key="NSClassName" ref="915298329"/>
- <string key="NSResourceName">NSMenuMixedState</string>
- </object>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="514001054">
<reference key="NSTitle" ref="1045736176"/>
@@ -168,10 +283,10 @@
<object class="NSMenuItem" id="905696592">
<reference key="NSMenu" ref="514001054"/>
<string key="NSTitle">About NewApplication</string>
- <reference key="NSKeyEquiv" ref="1065384583"/>
+ <reference key="NSKeyEquiv" ref="1005950920"/>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="248023520"/>
- <reference key="NSMixedImage" ref="16133015"/>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
</object>
<object class="NSMenuItem" id="747573612">
<reference key="NSMenu" ref="514001054"/>
@@ -179,28 +294,28 @@
<string key="NSKeyEquiv">,</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="248023520"/>
- <reference key="NSMixedImage" ref="16133015"/>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
</object>
<object class="NSMenuItem" id="229578624">
<reference key="NSMenu" ref="514001054"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
- <reference key="NSTitle" ref="1065384583"/>
- <reference key="NSKeyEquiv" ref="1065384583"/>
+ <reference key="NSTitle" ref="1005950920"/>
+ <reference key="NSKeyEquiv" ref="1005950920"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="248023520"/>
- <reference key="NSMixedImage" ref="16133015"/>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
</object>
<object class="NSMenuItem" id="109844319">
<reference key="NSMenu" ref="514001054"/>
<string key="NSTitle">Services</string>
- <reference key="NSKeyEquiv" ref="1065384583"/>
+ <reference key="NSKeyEquiv" ref="1005950920"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="248023520"/>
- <reference key="NSMixedImage" ref="16133015"/>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="174149785">
<object class="NSMutableString" key="NSTitle">
@@ -216,12 +331,12 @@
<reference key="NSMenu" ref="514001054"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
- <reference key="NSTitle" ref="1065384583"/>
- <reference key="NSKeyEquiv" ref="1065384583"/>
+ <reference key="NSTitle" ref="1005950920"/>
+ <reference key="NSKeyEquiv" ref="1005950920"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="248023520"/>
- <reference key="NSMixedImage" ref="16133015"/>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
</object>
<object class="NSMenuItem" id="75149726">
<reference key="NSMenu" ref="514001054"/>
@@ -229,8 +344,8 @@
<string key="NSKeyEquiv" id="320699075">h</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="248023520"/>
- <reference key="NSMixedImage" ref="16133015"/>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
</object>
<object class="NSMenuItem" id="1018314984">
<reference key="NSMenu" ref="514001054"/>
@@ -238,28 +353,28 @@
<reference key="NSKeyEquiv" ref="320699075"/>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="248023520"/>
- <reference key="NSMixedImage" ref="16133015"/>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
</object>
<object class="NSMenuItem" id="370569521">
<reference key="NSMenu" ref="514001054"/>
<string key="NSTitle">Show All</string>
- <reference key="NSKeyEquiv" ref="1065384583"/>
+ <reference key="NSKeyEquiv" ref="1005950920"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="248023520"/>
- <reference key="NSMixedImage" ref="16133015"/>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
</object>
<object class="NSMenuItem" id="1015539911">
<reference key="NSMenu" ref="514001054"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
- <reference key="NSTitle" ref="1065384583"/>
- <reference key="NSKeyEquiv" ref="1065384583"/>
+ <reference key="NSTitle" ref="1005950920"/>
+ <reference key="NSKeyEquiv" ref="1005950920"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="248023520"/>
- <reference key="NSMixedImage" ref="16133015"/>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
</object>
<object class="NSMenuItem" id="826738325">
<reference key="NSMenu" ref="514001054"/>
@@ -267,8 +382,8 @@
<string key="NSKeyEquiv">q</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="248023520"/>
- <reference key="NSMixedImage" ref="16133015"/>
+ <reference key="NSOnImage" ref="59519207"/>
+ <reference key="NSMixedImage" ref="826119115"/>
</object>
</object>
<string key="NSName">_NSAppleMenu</string>
@@ -279,7 +394,10 @@
<bool key="NSNoAutoenable">YES</bool>
</object>
<object class="NSCustomObject" id="620275248">
- <string key="NSClassName" id="738185439">ApplicationController</string>
+ <string key="NSClassName" id="304877996">ApplicationController</string>
+ </object>
+ <object class="NSCustomObject" id="53201312">
+ <string key="NSClassName" id="556143770">CommitsController</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
@@ -327,11 +445,51 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">main_view</string>
+ <string key="label">delegate</string>
+ <reference key="source" ref="95565757"/>
+ <reference key="destination" ref="53201312"/>
+ </object>
+ <int key="connectionID">265</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label" id="774395229">commits_table</string>
+ <reference key="source" ref="53201312"/>
+ <reference key="destination" ref="95565757"/>
+ </object>
+ <int key="connectionID">267</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">app_controller</string>
+ <reference key="source" ref="53201312"/>
+ <reference key="destination" ref="620275248"/>
+ </object>
+ <int key="connectionID">269</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <reference key="label" ref="774395229"/>
<reference key="source" ref="620275248"/>
- <reference key="destination" ref="720666767"/>
+ <reference key="destination" ref="95565757"/>
+ </object>
+ <int key="connectionID">280</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">commits_controller</string>
+ <reference key="source" ref="620275248"/>
+ <reference key="destination" ref="53201312"/>
+ </object>
+ <int key="connectionID">281</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">dataSource</string>
+ <reference key="source" ref="95565757"/>
+ <reference key="destination" ref="53201312"/>
</object>
- <int key="connectionID">200</int>
+ <int key="connectionID">282</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
@@ -372,7 +530,8 @@
<reference key="object" ref="831824449"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="67017650"/>
+ <reference ref="60591724"/>
+ <reference ref="1052727212"/>
</object>
<reference key="parent" ref="469667931"/>
</object>
@@ -484,24 +643,97 @@
<reference key="parent" ref="269908025"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">254</int>
- <reference key="object" ref="67017650"/>
+ <int key="objectID">255</int>
+ <reference key="object" ref="1052727212"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="720666767"/>
- <reference ref="152109774"/>
+ <reference ref="728533113"/>
+ <reference ref="439200232"/>
+ <reference ref="95565757"/>
</object>
<reference key="parent" ref="831824449"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">197</int>
- <reference key="object" ref="720666767"/>
- <reference key="parent" ref="67017650"/>
+ <int key="objectID">256</int>
+ <reference key="object" ref="728533113"/>
+ <reference key="parent" ref="1052727212"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">253</int>
- <reference key="object" ref="152109774"/>
- <reference key="parent" ref="67017650"/>
+ <int key="objectID">257</int>
+ <reference key="object" ref="439200232"/>
+ <reference key="parent" ref="1052727212"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">258</int>
+ <reference key="object" ref="95565757"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="778667112"/>
+ </object>
+ <reference key="parent" ref="1052727212"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">260</int>
+ <reference key="object" ref="778667112"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="674973576"/>
+ </object>
+ <reference key="parent" ref="95565757"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">263</int>
+ <reference key="object" ref="674973576"/>
+ <reference key="parent" ref="778667112"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">264</int>
+ <reference key="object" ref="53201312"/>
+ <reference key="parent" ref="269908025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">270</int>
+ <reference key="object" ref="60591724"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="399670599"/>
+ </object>
+ <reference key="parent" ref="831824449"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">271</int>
+ <reference key="object" ref="399670599"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="629832535"/>
+ </object>
+ <reference key="parent" ref="60591724"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">272</int>
+ <reference key="object" ref="629832535"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="12649420"/>
+ <reference ref="49844324"/>
+ <reference ref="941872528"/>
+ </object>
+ <reference key="parent" ref="399670599"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">273</int>
+ <reference key="object" ref="12649420"/>
+ <reference key="parent" ref="629832535"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">274</int>
+ <reference key="object" ref="49844324"/>
+ <reference key="parent" ref="629832535"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">275</int>
+ <reference key="object" ref="941872528"/>
+ <reference key="parent" ref="629832535"/>
</object>
</object>
</object>
@@ -532,7 +764,6 @@
<string>149.ImportedFromIB2</string>
<string>150.IBPluginDependency</string>
<string>150.ImportedFromIB2</string>
- <string>197.IBPluginDependency</string>
<string>198.IBPluginDependency</string>
<string>2.IBPluginDependency</string>
<string>2.ImportedFromIB2</string>
@@ -545,7 +776,19 @@
<string>21.windowTemplate.hasMinSize</string>
<string>21.windowTemplate.maxSize</string>
<string>21.windowTemplate.minSize</string>
- <string>253.IBPluginDependency</string>
+ <string>255.IBPluginDependency</string>
+ <string>256.IBPluginDependency</string>
+ <string>257.IBPluginDependency</string>
+ <string>258.IBPluginDependency</string>
+ <string>260.IBPluginDependency</string>
+ <string>263.IBPluginDependency</string>
+ <string>264.IBPluginDependency</string>
+ <string>270.IBPluginDependency</string>
+ <string>271.IBPluginDependency</string>
+ <string>272.IBPluginDependency</string>
+ <string>273.IBPluginDependency</string>
+ <string>274.IBPluginDependency</string>
+ <string>275.IBPluginDependency</string>
<string>29.IBPluginDependency</string>
<string>29.ImportedFromIB2</string>
<string>29.editorWindowContentRectSynchronizationRect</string>
@@ -559,52 +802,63 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="130404900"/>
- <reference ref="130404900"/>
- <reference ref="130404900"/>
- <reference ref="9"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <integer value="1" id="9"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
<string>{{358, 757}, {64, 6}}</string>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
- <reference ref="120688243"/>
- <reference ref="130404900"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
- <reference ref="130404900"/>
- <string>{{252, 406}, {556, 412}}</string>
+ <reference ref="1045291949"/>
+ <string>{{274, 285}, {708, 471}}</string>
<reference ref="9"/>
<reference ref="9"/>
- <string>{{252, 406}, {556, 412}}</string>
+ <string>{{274, 285}, {708, 471}}</string>
<reference ref="9"/>
<reference ref="9"/>
<string>{3.40282e+38, 3.40282e+38}</string>
<string>{213, 107}</string>
- <reference ref="120688243"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
<string>{{143, 807}, {156, 20}}</string>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
<string>{{113, 640}, {245, 173}}</string>
- <reference ref="130404900"/>
+ <reference ref="1045291949"/>
<reference ref="9"/>
</object>
</object>
@@ -628,13 +882,13 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">254</int>
+ <int key="maxID">287</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
- <reference key="className" ref="738185439"/>
+ <string key="className">CommitsController</string>
<string key="superclassName" id="24545869">NSObject</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -647,6 +901,62 @@
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>app_controller</string>
+ <string>commits_table</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string id="780986731">id</string>
+ <reference ref="780986731"/>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey" id="157218430">IBProjectSource</string>
+ <string key="minorKey">CommitsController.rb</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <reference key="className" ref="556143770"/>
+ <reference key="superclassName" ref="24545869"/>
+ <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">
+ <string key="majorKey" id="1018692519">IBUserSource</string>
+ <reference key="minorKey" ref="1005950920"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">TexturedWindow</string>
+ <string key="superclassName" id="561835078">NSWindow</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>
@@ -655,8 +965,86 @@
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey" id="445799262">IBUserSource</string>
- <reference key="minorKey" ref="1065384583"/>
+ <reference key="majorKey" ref="157218430"/>
+ <string key="minorKey">TexturedWindow.rb</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <reference key="className" ref="875846733"/>
+ <reference key="superclassName" ref="561835078"/>
+ <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="1018692519"/>
+ <reference key="minorKey" ref="1005950920"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <reference key="className" ref="466632593"/>
+ <nil key="superclassName"/>
+ <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="1018692519"/>
+ <reference key="minorKey" ref="1005950920"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <reference key="className" ref="24545869"/>
+ <nil key="superclassName"/>
+ <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="157218430"/>
+ <string key="minorKey">ImageTextCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
@@ -672,17 +1060,26 @@
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">main_view</string>
- <string key="NS.object.0">id</string>
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMutableArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>commits_controller</string>
+ <string>commits_table</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="780986731"/>
+ <reference ref="780986731"/>
+ </object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
+ <reference key="majorKey" ref="157218430"/>
<string key="minorKey">ApplicationController.rb</string>
</object>
</object>
<object class="IBPartialClassDescription">
- <reference key="className" ref="466632593"/>
- <nil key="superclassName"/>
+ <reference key="className" ref="304877996"/>
+ <reference key="superclassName" ref="24545869"/>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@@ -702,8 +1099,8 @@
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
- <reference key="majorKey" ref="445799262"/>
- <reference key="minorKey" ref="1065384583"/>
+ <reference key="majorKey" ref="1018692519"/>
+ <reference key="minorKey" ref="1005950920"/>
</object>
</object>
</object>
@@ -713,127 +1110,185 @@
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<object class="NSMutableData" key="IBDocument.RunnableNib">
<bytes key="NS.bytes">YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA
-AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxC4AAsADAAxADUAOQBAAEMA
-RABJAGEAYgBjAGQACwBwAHQAfQCCAJcApwCoAKkAqgCrAKwArQCuAK8AsACxALIAswC0ALgACwC5ALoA
-wADLAMwAzQDOAM8A0ADUANcA3ADpAPkACwD6AP4A/wECAAsBAwEFAQYBBwEIAQsBFAEcASwBMwE0ATUB
-OgE7ATwBPwFDAUQBRwFIAUwBUQFYAVkBWgFfAWIBYwFkAWcBbAFzAXQBdQF6AYIBgwGEAYkBkAGRAZIB
-kwGrAbYBvQG+Ab8BxAHHAcoBywHNADgB0AHRAd4BxgHpAeoB8wH8Af0CBAIFAgkB6QISAhMCFQItAkYC
-XwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ3AnoCmQK4ArkCugK7ArwC
-vQK+Ar8CwALBAsICwwLEAsUAXQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1gLZAtxVJG51bGzf
-EBIADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAAp
-ACoAKwAsAC0ALgAvADBWTlNSb290ViRjbGFzc11OU09iamVjdHNLZXlzXxAPTlNDbGFzc2VzVmFsdWVz
-XxAZTlNBY2Nlc3NpYmlsaXR5T2lkc1ZhbHVlc11OU0Nvbm5lY3Rpb25zW05TTmFtZXNLZXlzW05TRnJh
-bWV3b3JrXU5TQ2xhc3Nlc0tleXNaTlNPaWRzS2V5c11OU05hbWVzVmFsdWVzXxAZTlNBY2Nlc3NpYmls
-aXR5Q29ubmVjdG9yc11OU0ZvbnRNYW5hZ2VyXxAQTlNWaXNpYmxlV2luZG93c18QD05TT2JqZWN0c1Zh
-bHVlc18QF05TQWNjZXNzaWJpbGl0eU9pZHNLZXlzWU5TTmV4dE9pZFxOU09pZHNWYWx1ZXOAAoC3gGGA
-lYC2gDyAfYAGgJSAloB+gLSAAIAHgHyAtREBAICX0gAOADIAMwA0W05TQ2xhc3NOYW1lgAWAA9IADgA2
-ADcAOFlOUy5zdHJpbmeABF1OU0FwcGxpY2F0aW9u0gA6ADsAPAA9WCRjbGFzc2VzWiRjbGFzc25hbWWj
-AD0APgA/XxAPTlNNdXRhYmxlU3RyaW5nWE5TU3RyaW5nWE5TT2JqZWN00gA6ADsAQQBCogBCAD9eTlND
-dXN0b21PYmplY3RfEBBJQkNvY29hRnJhbWV3b3Jr0gAOAEUARgBHWk5TLm9iamVjdHOAIKEASIAI3ABK
-AA4ASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AK1xOU1dpbmRvd1ZpZXdc
-TlNTY3JlZW5SZWN0XU5TV2luZG93VGl0bGVZTlNXVEZsYWdzXU5TV2luZG93Q2xhc3NcTlNXaW5kb3dS
-ZWN0WU5TTWF4U2l6ZV8QD05TV2luZG93QmFja2luZ18QEU5TV2luZG93U3R5bGVNYXNrWU5TTWluU2l6
-ZVtOU1ZpZXdDbGFzc4AMgDuAOIAKEjB4AACAC4AJgDoQAhEwH4A5gABfEBh7ezMzMCwgNDI0fSwgezU1
-NiwgNDEyfX1WR2l0TnViWE5TV2luZG931wBlAA4AZgBnAGgAYwBpAGoAawBsAC8AbQBqAG9fEA9OU05l
-eHRSZXNwb25kZXJaTlNTdWJ2aWV3c1hOU3ZGbGFnc1tOU0ZyYW1lU2l6ZVtOU1N1cGVydmlld4ANgDeA
-DoA1gA2ANtIADgBFAHEAcoAyoQBzgA/XAGUADgB1AGYAZwBjAGkAVQB3AHgAeQB6AGoAVVdOU0ZyYW1l
-gAyANIAzgBARARKADYAM0gAOAEUAcQB/gDKiAIAAgYARgC7dAGUADgCDAIQAhQBnAGgAhgCHAGMAiABp
-AIkAcwCLAIwAjQCOAI8AkACRAIwAagCRAHMAllpBbGxvd3NVbmRvW1ByZWZlcmVuY2VzW05TRHJhZ1R5
-cGVzWUdyb3VwTmFtZV8QElVzZUJhY2tGb3J3YXJkTGlzdFlGcmFtZU5hbWVdTlNOZXh0S2V5Vmlld4AP
-gC0JgCSAEhEREoAhgCMJgA2AI4APgCLSAA4ARQBGAJmAIK0AmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUA
-poATgBSAFYAWgBeAGIAZgBqAG4AcgB2AHoAfXxAZTmVYVCBSVEZEIHBhc3RlYm9hcmQgdHlwZVpwdWJs
-aWMudXJsXxASTlNTdHJpbmdQYm9hcmRUeXBlXxAeTmVYVCBUSUZGIHY0LjAgcGFzdGVib2FyZCB0eXBl
-XxAZQXBwbGUgVVJMIHBhc3RlYm9hcmQgdHlwZV8QIUFwcGxlIFdlYiBBcmNoaXZlIHBhc3RlYm9hcmQg
-dHlwZV8QG1dlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZV8QD3B1YmxpYy51cmwtbmFtZV8QGkFwcGxl
-IEhUTUwgcGFzdGVib2FyZCB0eXBlXxAVTlNGaWxlbmFtZXNQYm9hcmRUeXBlXxAXTlNDb2xvciBwYXN0
-ZWJvYXJkIHR5cGVfEBpBcHBsZSBQSUNUIHBhc3RlYm9hcmQgdHlwZV8QKk5lWFQgUmljaCBUZXh0IEZv
-cm1hdCB2MS4wIHBhc3RlYm9hcmQgdHlwZdIAOgA7ALUAtqMAtgC3AD9cTlNNdXRhYmxlU2V0VU5TU2V0
-Wns1NTYsIDIxNn1Q0wAOALsAvAC9AJEAv1pJZGVudGlmaWVyVlZhbHVlc4AsgCOAJdMADgDBAEUAwgDD
-AMdXTlMua2V5c4ArowDEAMUAxoAmgCeAKKMAyADJAMiAKYAqgClfEBpXZWJLaXREZWZhdWx0Rml4ZWRG
-b250U2l6ZV8QFVdlYktpdE1pbmltdW1Gb250U2l6ZV8QFVdlYktpdERlZmF1bHRGb250U2l6ZRAMEAHS
-ADoAOwDRANKjANIA0wA/XxATTlNNdXRhYmxlRGljdGlvbmFyeVxOU0RpY3Rpb25hcnnSADoAOwDVANai
-ANYAP15XZWJQcmVmZXJlbmNlc9IAOgA7ANgA2aQA2QDaANsAP1dXZWJWaWV3Vk5TVmlld1tOU1Jlc3Bv
-bmRlct0AZQAOAHUAgwCEAIUAZwCGAIcAYwCIAGkAiQBzAIsA3wCMAI0A4gAvAJEAjABqAJEAcwDogA+A
-LYAwCYAkgC+AIwmADYAjgA+AMdIADgBFAEYA64AgrQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmgBOA
-FIAVgBaAF4AYgBmAGoAbgByAHYAegB9fEBZ7ezAsIDIyNX0sIHs1NTYsIDIwMn190gA6ADsA+wD8owD8
-AP0AP15OU011dGFibGVBcnJheVdOU0FycmF5XxAWe3swLCAtMTV9LCB7NTU2LCA0Mjd9fdIAOgA7AQAB
-AaQBAQDaANsAP1tOU1NwbGl0Vmlld1p7NTU2LCA0MTJ90gA6ADsBBADaowDaANsAP18QFXt7MCwgMH0s
-IHsxNDQwLCA4Nzh9fVp7MjEzLCAxMjl9XxAaezMuNDAyODJlKzM4LCAzLjQwMjgyZSszOH3SADoAOwEJ
-AQqiAQoAP18QEE5TV2luZG93VGVtcGxhdGXSAA4ARQBxAQ2AMqYBDgEPARABEQESAROAPYBLgE+AVIBY
-gFzUAA4BFQEWARcBGAAfARoBG11OU0Rlc3RpbmF0aW9uWE5TU291cmNlV05TTGFiZWyASoACgD6ASdgA
-DgEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBK1dOU1RpdGxlXxARTlNLZXlFcXVpdk1vZE1hc2ta
-TlNLZXlFcXVpdl1OU01uZW1vbmljTG9jWU5TT25JbWFnZVxOU01peGVkSW1hZ2VWTlNNZW51gEiAQBIA
-EAAAgEESf////4BCgEaAP9QADgEdAS0BLgEvATABMQEyVk5TTmFtZVtOU01lbnVJdGVtc4BqgG2AdIBu
-XxATSGlkZSBOZXdBcHBsaWNhdGlvblFo0wAOADIBNgE3ATgBOV5OU1Jlc291cmNlTmFtZYBFgEOARFdO
-U0ltYWdlXxAPTlNNZW51Q2hlY2ttYXJr0gA6ADsBPQE+ogE+AD9fEBBOU0N1c3RvbVJlc291cmNl0wAO
-ADIBNgE3ATgBQoBFgEOAR18QEE5TTWVudU1peGVkU3RhdGXSADoAOwFFAUaiAUYAP1pOU01lbnVJdGVt
-VWhpZGU60gA6ADsBSQFKowFKAUsAP18QFU5TTmliQ29udHJvbENvbm5lY3Rvcl5OU05pYkNvbm5lY3Rv
-ctQADgEVARYBFwEYAB8BTwFQgEqAAoBMgE7XAA4BHQEfASABIQEiASMBJAFTAJEBKAEpASoBK4BIgE2A
-I4BCgEaAP18QFEFib3V0IE5ld0FwcGxpY2F0aW9uXxAdb3JkZXJGcm9udFN0YW5kYXJkQWJvdXRQYW5l
-bDrUAA4BFQEWARcBWwCAAV0BXoBTgBGAUIBS0gAOADIAMwFhgAWAUV8QFUFwcGxpY2F0aW9uQ29udHJv
-bGxlclltYWluX3ZpZXfSADoAOwFlAWajAWYBSwA/XxAUTlNOaWJPdXRsZXRDb25uZWN0b3LUAA4BFQEW
-ARcBGAAfAWoBa4BKgAKAVYBX2AAOAR0BHgEfASABIQEiASMBJAFuASYAkQEoASkBKgErgEiAVoAjgEKA
-RoA/WFNob3cgQWxsXxAWdW5oaWRlQWxsQXBwbGljYXRpb25zOtQADgEVARYBFwEYAB8BeAF5gEqAAoBZ
-gFvYAA4BHQEeAR8BIAEhASIBIwEkAXwBfQEnASgBKQEqASuASIBaEgAYAACAQYBCgEaAP1tIaWRlIE90
-aGVyc18QFmhpZGVPdGhlckFwcGxpY2F0aW9uczrUAA4BFQEWARcBGAAfAYcBiIBKgAKAXYBg2AAOAR0B
-HgEfASABIQEiASMBJAGLASYBjAEoASkBKgErgEiAXoBfgEKARoA/XxATUXVpdCBOZXdBcHBsaWNhdGlv
-blFxWnRlcm1pbmF0ZTrSAA4ARQGUAZWAe68QFQGWAYcAVQFqAZoBmwGcAIABKwGfAV0BeABzAIEBGgGl
-AaYASAFPAakBqoBigF2ADIBVgGOAZoBrgBGAP4BvgFCAWYAPgC6APoBygHWACIBMgHiAc9oADgEdAR4B
-rAEfAa0BIAEhASIBIwEkAJEBJgCMAJEAjAEoASkBKgErXU5TSXNTZXBhcmF0b3JcTlNJc0Rpc2FibGVk
-gEiAIwmAIwmAQoBGgD/YAA4BHQEeAR8BIAEhASIBIwEkAbgBJgG5ASgBKQEqASuASIBkgGWAQoBGgD9e
-UHJlZmVyZW5jZXMuLi5RLNQADgEdAS0BLgEvAcEBwgHDgGqAZ4BpgGjSAA4ANgA3AcaABFhTZXJ2aWNl
-c9IADgBFAHEByYAyoF8QD19OU1NlcnZpY2VzTWVuddIAOgA7AcwBI6IBIwA/0gAOADIAMwHPgAWAbF5O
-ZXdBcHBsaWNhdGlvbtIADgBFAHEB04AyqgFPAZoBlgGfAaUBGgF4AWoBqgGHgEyAY4BigG+AcoA+gFmA
-VYBzgF3aAA4B3wEdAR4BHwEgASEBIgEjAeABJAGbAeMBJgCRASgBKQEqASsB6FlOU1N1Ym1lbnVYTlNB
-Y3Rpb26ASIBmgHCAI4BCgEaAP4BxXnN1Ym1lbnVBY3Rpb2462gAOAR0BHgGsAR8BrQEgASEBIgEjASQA
-kQEmAIwAkQCMASgBKQEqASuASIAjCYAjCYBCgEaAP9oADgEdAR4BrAEfAa0BIAEhASIBIwEkAJEBJgCM
-AJEAjAEoASkBKgErgEiAIwmAIwmAQoBGgD9cX05TQXBwbGVNZW511QAOAR0BLQEuAf4BLwIAAgECAgCM
-Xk5TTm9BdXRvZW5hYmxlgGqAdoB6gHcJWE1haW5NZW510gAOAEUAcQIHgDKhAamAeNoADgHfAR0BHgEf
-ASABIQEiASMB4AEkASsBMAEmAJEBKAEpASoBpgIRgEiAP4BtgCOAQoBGgHWAeVtfTlNNYWluTWVuddIA
-OgA7AhQA/aIA/QA/0gAOAEUBlAIXgHuvEBUBKwErAEgBKwErAZ8AHwBzAakBKwAfASsAVQBzASsBKwAf
-AB8BKwGmASuAP4A/gAiAP4A/gG+AAoAPgHiAP4ACgD+ADIAPgD+AP4ACgAKAP4B1gD/SAA4ARQGUAi+A
-e68QFgGWAYcAVQFqAZoBmwGcAV0BKwCAAZ8BeAAfAHMAgQEaAaUBpgBIAU8BqQGqgGKAXYAMgFWAY4Bm
-gGuAUIA/gBGAb4BZgAKAD4AugD6AcoB1gAiATIB4gHPSAA4ARQGUAkiAe68QFgJJAkoCSwJMAk0CTgJP
-AlACUQJSAlMCVAJVAlYCVwJYAlkCAAJbAlwCXQJegH+AgICBgIKAg4CEgIWAhoCHgIiAiYCKgIuAjICN
-gI6Aj4B2gJCAkYCSgJNZU2VwYXJhdG9yXxAfTWVudSBJdGVtIChRdWl0IE5ld0FwcGxpY2F0aW9uKVxD
-b250ZW50IFZpZXdfEBRNZW51IEl0ZW0gKFNob3cgQWxsKV8QGk1lbnUgSXRlbSAoUHJlZmVyZW5jZXMu
-Li4pXxAPTWVudSAoU2VydmljZXMpW0FwcGxpY2F0aW9uXxAWQXBwbGljYXRpb24gQ29udHJvbGxlcl8Q
-FU1lbnUgKE5ld0FwcGxpY2F0aW9uKVhXZWIgVmlld18QFE1lbnUgSXRlbSAoU2VydmljZXMpXxAXTWVu
-dSBJdGVtIChIaWRlIE90aGVycylcRmlsZSdzIE93bmVyWlNwbGl0IFZpZXdaV2ViIFZpZXctMV8QH01l
-bnUgSXRlbSAoSGlkZSBOZXdBcHBsaWNhdGlvbilbU2VwYXJhdG9yLTFWV2luZG93XxAgTWVudSBJdGVt
-IChBYm91dCBOZXdBcHBsaWNhdGlvbilfEBpNZW51IEl0ZW0gKE5ld0FwcGxpY2F0aW9uKVtTZXBhcmF0
-b3ItMtIADgBFAZQCdoB7oNIADgBFAZQCeYB7oNIADgBFAZQCfIB7rxAcAWoBEgGbAZwBnwBzARoBpQGm
-AEgBTwEQAZYBhwBVAZoBEwCAASsBXQF4AB8AgQERAakBqgEOAQ+AVYBYgGaAa4BvgA+APoBygHWACIBM
-gE+AYoBdgAyAY4BcgBGAP4BQgFmAAoAugFSAeIBzgD2AS9IADgBFAZQCm4B7rxAcApwCnQKeAp8CoAKh
-AqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2AreAmICZgJqAm4CcgJ2AnoCf
-gKCAoYCigKOApIClgKaAp4CogKmAqoCrgKyArYCugK+AsICxgLKAsxCWEJIQghP//////////RCDEP4Q
-hhCQEB0QFRA6EMgQjxCIEIEQixDFEDkQxhCREP8Q/RCZEDgQlRCYEI7SAA4ARQBxAtWAMqDSAA4ARQGU
-AtiAe6DSAA4ARQGUAtuAe6DSADoAOwLdAt6iAt4AP15OU0lCT2JqZWN0RGF0YQAIABkAIgAnADEAOgA/
-AEQAUgBUAGYB2QHfAioCMQI4AkYCWAJ0AoICjgKaAqgCswLBAt0C6wL+AxADKgM0A0EDQwNFA0cDSQNL
-A00DTwNRA1MDVQNXA1kDWwNdA18DYQNkA2YDbwN7A30DfwOIA5IDlAOiA6sDtAO/A8YD2APhA+oD8wP4
-BAcEGgQjBC4EMAQzBDUEZgRzBIAEjgSYBKYEswS9BM8E4wTtBPkE+wT9BP8FAQUGBQgFCgUMBQ4FEQUT
-BRUFMAU3BUAFXQVvBXoFgwWPBZsFnQWfBaEFowWlBacFsAWyBbUFtwXUBdwF3gXgBeIF5AXnBekF6wX0
-BfYF+wX9Bf8GNAY/BksGVwZhBnYGgAaOBpAGkgaTBpUGlwaaBpwGngafBqEGowalBqcGsAayBs0GzwbR
-BtMG1QbXBtkG2wbdBt8G4QbjBuUG5wcDBw4HIwdEB2AHhAeiB7QH0QfpCAMIIAhNCFYIXQhqCHAIewh8
-CIkIlAibCJ0InwihCK4Itgi4CL8IwQjDCMUIzAjOCNAI0gjvCQcJHwkhCSMJLAkzCUkJVglfCWQJcwl8
-CYUJjQmUCaAJ1QnXCdkJ2wncCd4J4AniCeMJ5QnnCekJ6wn0CfYKEQoTChUKFwoZChsKHQofCiEKIwol
-CicKKQorCkQKTQpUCmMKawqECo0KlgqiCq0Ktgq9CtUK4Ar9CwYLCwseCycLKQs2CzgLOgs8Cz4LQAtC
-C1MLYQtqC3ILdAt2C3gLegubC6MLtwvCC9AL2gvnC+4L8AvyC/cL+Qv+DAAMAgwEDBUMHAwoDCoMLAwu
-DDAMRgxIDFUMZAxmDGgMagxyDIQMjQySDKUMsgy0DLYMuAzLDNQM2QzkDOoM8wz6DRINIQ0yDTQNNg04
-DToNVw1ZDVsNXQ1fDWENYw16DZoNqw2tDa8NsQ2zDbwNvg3ADdgN4g3rDfIOCQ4aDhwOHg4gDiIOQw5F
-DkcOSQ5LDk0OTw5YDnEOgg6EDoYOiA6KDqsOrQ6vDrQOtg64DroOvA7IDuEO8g70DvYO+A76DxsPHQ8f
-DyEPIw8lDycPPQ8/D0oPUw9VD4IPhA+GD4gPig+MD44PkA+SD5QPlg+YD5oPnA+eD6APog+kD6YPqA+q
-D6wP1Q/jD/AP8g/0D/UP9w/4D/oP/A/+EB8QIRAjECUQJxApECsQOhA8EE0QTxBREFMQVRBeEGAQaRBy
-EHQQdRCHEJAQlRCeEKAQohCxELoQvBDRENMQ1RDXENkQ2xDdEN8Q4RDjEOURDhEYESERIxElEScRKREr
-ES0RLxExEUARaRFrEW0RbhFwEXERcxF1EXcRoBGiEaQRpRGnEagRqhGsEa4RuxHQEd8R4RHjEeUR5xHo
-EfER+hH8Ef8SARIqEiwSLhIwEjISNBI2EjgSOhJGEk8SVBJdEl8SjBKOEpASkhKUEpYSmBKaEpwSnhKg
-EqISpBKmEqgSqhKsEq4SsBKyErQSthK/EsES8BLyEvQS9hL4EvoS/BL+EwATAhMEEwYTCBMKEwwTDhMQ
-ExITFBMWExgTGhMcEyUTJxNWE1gTWhNcE14TYBNiE2QTZhNoE2oTbBNuE3ATchN0E3YTeBN6E3wTfhOA
-E4ITjBOuE7sT0hPvFAEUDRQmFD4URxReFHgUhRSQFJsUvRTJFNAU8xUQFRwVJRUnFSgVMRUzFTQVPRU/
-FXoVfBV+FYAVghWEFYYViBWKFYwVjhWQFZIVlBWWFZgVmhWcFZ4VoBWiFaQVphWoFaoVrBWuFbAVshW7
-Fb0V+BX6FfwV/hYAFgIWBBYGFggWChYMFg4WEBYSFhQWFhYYFhoWHBYeFiAWIhYkFiYWKBYqFiwWLhYw
-FjIWNBY2Fj8WQRZDFkUWRxZJFksWTRZPFlEWUxZVFlcWWRZbFl0WXxZhFmMWZRZnFmkWaxZtFnYWeBZ5
-FoIWhBaFFo4WkBaRFpoWnwAAAAAAAAICAAAAAAAAAt8AAAAAAAAAAAAAAAAAABauA</bytes>
+AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxD2AAsADAAxADUAOQBAAEMA
+RABJAGEAYgBjAGQACwByAHcAgwCEAKcArwCwALMAtADIAM0AzgDTANQA1QDYANwA3QDeAOAA4QDnAPAA
+3QDxAPoA3QD7AP8BAQEHAQ4BIgEoATcBOwFaAVsBYAFhAWQBaAF8AYUBigGPAZIBmgGbAZwBnwGjAa4B
+rwG0AbUBuAG9Ab4BwAHDAccBWgHJAcwB1gHXAdgB2wHkAeUB5gHpAAsB6gHsAe0B7gHvAfIB9gIEAgwC
+EwIYAhkCGgIeAiMCJgInAigCKwIwAjcCOAI5AjoCPwJCAkMCRAJJAk4CVgJXAlgCXQJeAmMCagJrAmwC
+bQJyAnMCeAJ/AoACgQKGAocCqQKuArECtAK1AsACxwLIAskCsALTAtQAOALXAuAC5wLTAugC9QL+AwcD
+CAMJAw0DDgMQAzIDVQN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44D
+jwOQA5EDkgOTA5QDlQOWA5cDmgOdA8sAbgP5A/oD+wP8A/0D/gP/BAAEAQQCBAMEBAQFBAYEBwQIBAkE
+CgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgBdARwEFwQYBBkEGgQbBBwEHQQeBB8EIAQhBCQEJwQqVSRu
+dWxs3xASAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAn
+ACgAKQAqACsALAAtAC4ALwAwVk5TUm9vdFYkY2xhc3NdTlNPYmplY3RzS2V5c18QD05TQ2xhc3Nlc1Zh
+bHVlc18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXNdTlNDb25uZWN0aW9uc1tOU05hbWVzS2V5c1tO
+U0ZyYW1ld29ya11OU0NsYXNzZXNLZXlzWk5TT2lkc0tleXNdTlNOYW1lc1ZhbHVlc18QGU5TQWNjZXNz
+aWJpbGl0eUNvbm5lY3RvcnNdTlNGb250TWFuYWdlcl8QEE5TVmlzaWJsZVdpbmRvd3NfEA9OU09iamVj
+dHNWYWx1ZXNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c1lOU05leHRPaWRcTlNPaWRzVmFsdWVzgAKA
+9YCHgMSA9IBegKKABoDDgMWAo4DygACAB4ChgPMRASGAxtIADgAyADMANFtOU0NsYXNzTmFtZYAFgAPS
+AA4ANgA3ADhZTlMuc3RyaW5ngARdTlNBcHBsaWNhdGlvbtIAOgA7ADwAPVgkY2xhc3Nlc1okY2xhc3Nu
+YW1lowA9AD4AP18QD05TTXV0YWJsZVN0cmluZ1hOU1N0cmluZ1hOU09iamVjdNIAOgA7AEEAQqIAQgA/
+Xk5TQ3VzdG9tT2JqZWN0XxAQSUJDb2NvYUZyYW1ld29ya9IADgBFAEYAR1pOUy5vYmplY3RzgF2hAEiA
+CNwASgAOAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfACtcTlNXaW5kb3dW
+aWV3XE5TU2NyZWVuUmVjdF1OU1dpbmRvd1RpdGxlWU5TV1RGbGFnc11OU1dpbmRvd0NsYXNzXE5TV2lu
+ZG93UmVjdFlOU01heFNpemVfEA9OU1dpbmRvd0JhY2tpbmdfEBFOU1dpbmRvd1N0eWxlTWFza1lOU01p
+blNpemVbTlNWaWV3Q2xhc3OADIBcgFmAChIweAAAgAuACYBbEAIRMB+AWoAAXxAYe3szMzAsIDM2NX0s
+IHs3MDgsIDQ3MX19VkdpdE51Yl5UZXh0dXJlZFdpbmRvd9cAZQAOAGYAZwBoAGkAagBrAGwAbQBuAG8A
+awBxXxAPTlNOZXh0UmVzcG9uZGVyWk5TU3Vidmlld3NYTlN2RmxhZ3NbTlNGcmFtZVNpemVYTlNXaW5k
+b3dbTlNTdXBlcnZpZXeADYBYgA4RAQCAVoANgFfSAA4ARQBzAHSAKaIAdQB2gA+ALdgAZQAOAHgAeQBn
+AHoAaQBqAFUAfAB9AH4AfwCAAGsAVVdOU0ZyYW1lVk5TQ2VsbFlOU0VuYWJsZWSADIAsgBCAEREBJAmA
+DYAMXxAVe3sxNywgMTF9LCB7MTcwLCAyNn193xASAIUAhgCHAIgAiQAOAIoAiwCMAI0AjgCPAJAAkQCS
+AJMAlACVAJYAgABdAJgAmQCaAJsAmACdAJ4AdQCgAIAAgACjAKQApQCmW05TQ2VsbEZsYWdzXxAaTlNN
+ZW51SXRlbVJlc3BlY3RBbGlnbm1lbnRfEA9OU0Fycm93UG9zaXRpb25fEBNOU0FsdGVybmF0ZUNvbnRl
+bnRzXxASTlNQZXJpb2RpY0ludGVydmFsXk5TQnV0dG9uRmxhZ3MyXxAPTlNLZXlFcXVpdmFsZW50WU5T
+U3VwcG9ydFpOU01lbnVJdGVtXU5TQ29udHJvbFZpZXdfEA9OU1ByZWZlcnJlZEVkZ2VfEBJOU1VzZXNJ
+dGVtRnJvbU1lbnVdTlNBbHRlcnNTdGF0ZV8QD05TUGVyaW9kaWNEZWxheVxOU0NlbGxGbGFnczJWTlNN
+ZW51XU5TQnV0dG9uRmxhZ3MSBEH+QAmAFRBLgCsQI4AVgBKAFoAPEAEJCREBkBEIAIAXEgiCQP/UAA4A
+qACpAKoAqwCsAK0ArlZOU1NpemVWTlNOYW1lWE5TZkZsYWdzgBQjQCoAAAAAAACAExEEFFxMdWNpZGFH
+cmFuZGXSADoAOwCxALKiALIAP1ZOU0ZvbnRQ2wC1AA4AtgC3ALgAuQC6ALsAlAC8AL0AfgC/AMAAwQCY
+AMMAxADFAKUAxwCgWE5TVGFyZ2V0V05TVGl0bGVfEBFOU0tleUVxdWl2TW9kTWFza1pOU0tleUVxdWl2
+XU5TTW5lbW9uaWNMb2NZTlNPbkltYWdlXE5TTWl4ZWRJbWFnZVhOU0FjdGlvbldOU1N0YXRlgBGAIIAY
+EgAQAACAFRJ/////gBmAHYAXgB/TAA4AtgDJAMoAywDMW05TTWVudUl0ZW1zgCqAIYAiVkl0ZW0gMdMA
+DgAyAM8A0ADRANJeTlNSZXNvdXJjZU5hbWWAHIAagBtXTlNJbWFnZV8QD05TTWVudUNoZWNrbWFya9IA
+OgA7ANYA16IA1wA/XxAQTlNDdXN0b21SZXNvdXJjZdMADgAyAM8A0ADRANuAHIAagB5fEBBOU01lbnVN
+aXhlZFN0YXRlXxARX3BvcFVwSXRlbUFjdGlvbjrSADoAOwDfAI2iAI0AP1pPdGhlclZpZXdz0gAOAEUA
+cwDjgCmjAJ4A5QDmgBaAI4Am2gC1AA4AtgC3ALgAuQC6ALsAlAC8AH4AvwDqAMEAmADDAMQAxQClAO+A
+EYAggCSAFYAZgB2AF4AlVkl0ZW0gMtoAtQAOALYAtwC4ALkAugC7AJQAvAB+AL8A9ADBAJgAwwDEAMUA
+pQD5gBGAIIAngBWAGYAdgBeAKFZJdGVtIDPSADoAOwD8AP2jAP0A/gA/Xk5TTXV0YWJsZUFycmF5V05T
+QXJyYXnSADoAOwEAAJSiAJQAP9IAOgA7AQIBA6YBAwEEAQUBBgB5AD9fEBFOU1BvcFVwQnV0dG9uQ2Vs
+bF5OU01lbnVJdGVtQ2VsbFxOU0J1dHRvbkNlbGxcTlNBY3Rpb25DZWxs0gA6ADsBCAEJpgEJAQoBCwEM
+AQ0AP11OU1BvcFVwQnV0dG9uWE5TQnV0dG9uWU5TQ29udHJvbFZOU1ZpZXdbTlNSZXNwb25kZXLdAGUB
+DwAOAHgBEABmAREAZwBpAGoBEgETARQAVQEWARcBGAEZARoBGwEcAGsAVQEfASABIFtOU0hTY3JvbGxl
+clhOU3NGbGFnc1xOU1Njcm9sbEFtdHNbTlNWU2Nyb2xsZXJdTlNOZXh0S2V5Vmlld11OU0NvbnRlbnRW
+aWV3gAyAUoBVgFQRAhCALk8QEEEgAABBIAAAQggAAEIIAAARARKADYAMgE6AL4Av0gAOAEUAcwEkgCmj
+ASABHwEWgC+AToBS2wBlAA4BKQBmAGcAaAEqAGkBKwBqARMAdgEtAS4BLwEwATEBMgBrATQAdgEyWU5T
+Y3ZGbGFnc1lOU0RvY1ZpZXdZTlNCR0NvbG9ygC2ATRAEgDARCQCATIAxgA2AQ4AtgDHSAA4ARQBzATmA
+KaEBMoAx3xAUAGUBPAAOAT0BPgE/AUABQQFCAUMAZwBoAHoAaQFEAUUAagFGAUcBSAEgAUoBSwFMATQA
+gAFPAVABLgFRARwBUgCAAGsBVQBdASABVwFYAVlfEB9OU0RyYWdnaW5nU291cmNlTWFza0Zvck5vbkxv
+Y2FsWU5TVHZGbGFnc18QEU5TQmFja2dyb3VuZENvbG9yXxASTlNBbGxvd3NUeXBlU2VsZWN0XE5TQ29y
+bmVyVmlld18QF05TSW50ZXJjZWxsU3BhY2luZ1dpZHRoXxAZTlNDb2x1bW5BdXRvcmVzaXppbmdTdHls
+ZV8QGE5TSW50ZXJjZWxsU3BhY2luZ0hlaWdodFtOU0dyaWRDb2xvcl8QD05TR3JpZFN0eWxlTWFza15O
+U1RhYmxlQ29sdW1uc18QHE5TRHJhZ2dpbmdTb3VyY2VNYXNrRm9yTG9jYWxbTlNSb3dIZWlnaHSALxAA
+gEsT/////9LAAACAQwmAMyNACAAAAAAAACNAAAAAAAAAAIAyCYANgEqAL4A2EA8jQEAAAAAAAABaezcw
+OCwgNDI2fdQAZQAOAHgAZwArAV0BXgFfgACANYA0E/////+AAAEAXxAUe3stMjYsIDB9LCB7MTYsIDE3
+fX3SADoAOwFiAWOkAWMBDAENAD9dX05TQ29ybmVyVmlld9IADgBFAHMBZoApoQFngDfaAWkADgFqAWsB
+bAFtAW4BbwFwAXEAgAFzAXQBdQF2AXcBeAF5AIABMl5OU0lzUmVzaXplYWJsZVxOU0hlYWRlckNlbGxX
+TlNXaWR0aFpOU0RhdGFDZWxsXk5TUmVzaXppbmdNYXNrWk5TTWluV2lkdGhaTlNNYXhXaWR0aFxOU0lz
+RWRpdGFibGVbTlNUYWJsZVZpZXcJgEmAOCNAhggAAAAAAIBBEAMjQEQAAAAAAAAjQI9AAAAAAAAJgDHX
+AIUADgE+AX0AjACTAX4BfwGAAYEAmAGDAUoBhFpOU0NvbnRlbnRzW05TVGV4dENvbG9yEgSB/gCAQIA6
+gBWAOYA81AAOAKgAqQCqAKsBhwCtAYmAFCNAJgAAAAAAAIATEQwc0wAOAYsBjAGNAXcBjlxOU0NvbG9y
+U3BhY2VXTlNXaGl0ZYA7SzAuMzMzMzMyOTkA0gA6ADsBkAGRogGRAD9XTlNDb2xvctUADgGRAYsBkwGU
+AY0BlgGXAZgBmVtOU0NvbG9yTmFtZV1OU0NhdGFsb2dOYW1lgDuAPxAGgD6APVZTeXN0ZW1fEA9oZWFk
+ZXJUZXh0Q29sb3LTAA4BiwGMAY0BdwGegDtCMADSADoAOwGgAaGlAaEBogEGAHkAP18QEU5TVGFibGVI
+ZWFkZXJDZWxsXxAPTlNUZXh0RmllbGRDZWxs2gCFAA4BPgF9AIwAjgCTAaQBpQF+AaYBpwE0AakAnQEy
+AKQAoACAAa1fEBBOU1RleHRCZXplbFN0eWxlXxARTlNEcmF3c0JhY2tncm91bmQSFCH+QYBIgEOAQoAS
+gDEJgEZZVGV4dCBDZWxs1QAOAZEBiwGTAZQBjQGxAZcBsgGZgDuARYBEgD1fEBZjb250cm9sQmFja2dy
+b3VuZENvbG9y0wAOAYsBjAGNAXcBt4A7SzAuNjY2NjY2NjkA1QAOAZEBiwGTAZQBjQGWAZcBuwGZgDuA
+P4BHgD1fEBBjb250cm9sVGV4dENvbG9y0gA6ADsBvwGipAGiAQYAeQA/0gA6ADsBwQHCogHCAD9dTlNU
+YWJsZUNvbHVtbtMADgGLAcQBjQCgAcZVTlNSR0KAO08QGDAuODk1MjQzNDcgMC45MjE0MzI2MSAxANIA
+OgA7AcgBcaUBcQELAQwBDQA/0gA6ADsBygHLpAHLAQwBDQA/Wk5TQ2xpcFZpZXfZAGUAtQAOAHgAZwBp
+ALwAagHNAHYAdgHQAdEBXwBrAdMAdgHVWU5TUGVyY2VudIAtgC2AUYBPgA2AUIAtIz/v5vLAAAAAXxAV
+e3s1NDEsIDB9LCB7MTUsIDMyNn19XF9kb1Njcm9sbGVyOtIAOgA7AdkB2qUB2gELAQwBDQA/Wk5TU2Ny
+b2xsZXLaAGUAtQAOAHgBEABnAGkAvABqAc0AdgB2AdAB3wCgAV8AawHTAHYB44AtgC2AUYBTgA2AUIAt
+Iz/iSSSgAAAAXxAZe3stMTAwLCAtMTAwfSwgezU0MSwgMTV9fV8QFXt7MCwgNDV9LCB7NzA4LCA0MjZ9
+fdIAOgA7AecB6KQB6AEMAQ0AP1xOU1Njcm9sbFZpZXdaezcwOCwgNDcxfdIAOgA7AesBDKMBDAENAD9f
+EBV7ezAsIDB9LCB7MTQ0MCwgODc4fX1aezIxMywgMTI5fV8QGnszLjQwMjgyZSszOCwgMy40MDI4MmUr
+Mzh90gA6ADsB8AHxogHxAD9fEBBOU1dpbmRvd1RlbXBsYXRl0gA6ADsB8wH0owH0AfUAP1xOU011dGFi
+bGVTZXRVTlNTZXTSAA4ARQBzAfiAKasB+QH6AfsB/AH9Af4B/wIAAgECAgIDgF+AZYBqgG+Ac4B0gHiA
+eoB/gIGAhdQADgIFAgYCBwIIAB8CCgILXU5TRGVzdGluYXRpb25YTlNTb3VyY2VXTlNMYWJlbIBkgAKA
+YIBj1wAOALYAuAC5ALoAuwCUAL8CDgCYAMMAxADFAhKAIIBigBWAGYAdgGHUAA4AtgCpAMkAygIVAhYC
+F4AqgJeAnICZXxAUQWJvdXQgTmV3QXBwbGljYXRpb25fEB1vcmRlckZyb250U3RhbmRhcmRBYm91dFBh
+bmVsOtIAOgA7AhsCHKMCHAIdAD9fEBVOU05pYkNvbnRyb2xDb25uZWN0b3JeTlNOaWJDb25uZWN0b3LU
+AA4CBQIGAgcCHwEyAiECIoBpgDGAZoBo0gAOADIAMwIlgAWAZ18QEUNvbW1pdHNDb250cm9sbGVyXWNv
+bW1pdHNfdGFibGXSADoAOwIpAiqjAioCHQA/XxAUTlNOaWJPdXRsZXRDb25uZWN0b3LUAA4CBQIGAgcC
+CAAfAi4CL4BkgAKAa4Bu2AAOALYAtwC4ALkAugC7AJQAvwIyAMECMwDDAMQAxQISgCCAbIBtgBmAHYBh
+XxATSGlkZSBOZXdBcHBsaWNhdGlvblFoVWhpZGU61AAOAgUCBgIHAh8CPAIhAj6AaYBwgGaActIADgAy
+ADMCQYAFgHFfEBVBcHBsaWNhdGlvbkNvbnRyb2xsZXJeYXBwX2NvbnRyb2xsZXLUAA4CBQIGAgcCHwEy
+AjwCIoBpgDGAcIBo1AAOAgUCBgIHAggAHwJMAk2AZIACgHWAd9gADgC2ALcAuAC5ALoAuwCUAL8CUAJR
+AjMAwwDEAMUCEoAggHYSABgAAIBtgBmAHYBhW0hpZGUgT3RoZXJzXxAWaGlkZU90aGVyQXBwbGljYXRp
+b25zOtQADgIFAgYCBwIfAiECPAJcgGmAZoBwgHlfEBJjb21taXRzX2NvbnRyb2xsZXLUAA4CBQIGAgcC
+CAAfAmECYoBkgAKAe4B+2AAOALYAtwC4ALkAugC7AJQAvwJlAMECZgDDAMQAxQISgCCAfIB9gBmAHYBh
+XxATUXVpdCBOZXdBcHBsaWNhdGlvblFxWnRlcm1pbmF0ZTrUAA4CBQIGAgcCHwIhATICcYBpgGaAMYCA
+WGRlbGVnYXRl1AAOAgUCBgIHAggAHwJ2AneAZIACgIKAhNgADgC2ALcAuAC5ALoAuwCUAL8CegDBAJgA
+wwDEAMUCEoAggIOAFYAZgB2AYVhTaG93IEFsbF8QFnVuaGlkZUFsbEFwcGxpY2F0aW9uczrUAA4CBQIG
+AgcCHwIhATIChYBpgGaAMYCGWmRhdGFTb3VyY2XSAA4ARQKIAomAoK8QHwEfAosAdgDmAgoCTAEWApEC
+PAIhAmEClQKWAHUAfgEyAJ4ApQFnAp0CngKfAhICoQBVAOUCpAF2AnYASAIugE6AiIAtgCaAYIB1gFKA
+jIBwgGaAe4CNgJCAD4ARgDGAFoAXgDeAk4CVgJaAYYCbgAyAI4CagEGAgoAIgGvUAA4AtgCpAMkAygKr
+AqwCrYAqgImAi4CK0gAOADYANwKwgARYU2VydmljZXPSAA4ARQBzArOAKaBfEA9fTlNTZXJ2aWNlc01l
+bnXaAA4AtgC3ArYAuAK3ALkAugC7AJQAvwCYAMEAgACYAIAAwwDEAMUCEl1OU0lzU2VwYXJhdG9yXE5T
+SXNEaXNhYmxlZIAggBUJgBUJgBmAHYBh2AAOALYAtwC4ALkAugC7AJQAvwLCAMECwwDDAMQAxQISgCCA
+joCPgBmAHYBhXlByZWZlcmVuY2VzLi4uUSzaAA4CygC2ALcAuAC5ALoAuwCUALwAvwKLAs0AwQCYAMMA
+xADFAhIC0llOU1N1Ym1lbnWAIICIgJGAFYAZgB2AYYCSXnN1Ym1lbnVBY3Rpb2460gAOADIAMwLWgAWA
+lNoADgLKALYAtwC4ALkAugC7AJQAvAC/AhICFQDBAJgAwwDEAMUCnwLfgCCAYYCXgBWAGYAdgJaAmNUA
+DgC2AKkAyQLhAMoC4wLkAuUAgF5OU05vQXV0b2VuYWJsZYAqgJ2An4CeCV5OZXdBcHBsaWNhdGlvbtIA
+DgBFAHMC6oApqgIKApUCpAKWAqECLgJMAnYCkQJhgGCAjYCagJCAm4BrgHWAgoCMgHvaAA4AtgC3ArYA
+uAK3ALkAugC7AJQAvwCYAMEAgACYAIAAwwDEAMUCEoAggBUJgBUJgBmAHYBh2gAOALYAtwK2ALgCtwC5
+ALoAuwCUAL8AmADBAIAAmACAAMMAxADFAhKAIIAVCYAVCYAZgB2AYVxfTlNBcHBsZU1lbnVYTWFpbk1l
+bnXSAA4ARQBzAwuAKaECnoCVW19OU01haW5NZW510gA6ADsDDwD+ogD+AD/SAA4ARQKIAxKAoK8QHwB2
+ApYAVQClAhICEgB2AhIAHwAfAhICEgISAFUAdQB2AKUAfgEyAB8CnwAfAp4CEgBIAKUCEgFnAhIAHwIS
+gC2AkIAMgBeAYYBhgC2AYYACgAKAYYBhgGGADIAPgC2AF4ARgDGAAoCWgAKAlYBhgAiAF4BhgDeAYYAC
+gGHSAA4ARQKIAzSAoK8QIAEfAosAdgDmAgoCTAEWApECPAIhAmEClQKWAHUCngEyAH4BZwClAp0CoQAf
+Ap8CEgCeAFUA5QKkAXYCdgBIAi6AToCIgC2AJoBggHWAUoCMgHCAZoB7gI2AkIAPgJWAMYARgDeAF4CT
+gJuAAoCWgGGAFoAMgCOAmoBBgIKACIBr0gAOAEUCiANXgKCvECADWANZA1oDWwNcA10DXgNfA2ADYQNi
+A2MDZANlA2YDZwNoA2kDagNrA2wDbQLjA28DcANxA3IDcwN0A3UDdgN3gKSApYCmgKeAqICpgKqAq4Cs
+gK2AroCvgLCAsYCygLOAtIC1gLaAt4C4gLmAnYC6gLuAvIC9gL6Av4DAgMGAwl8QEVZlcnRpY2FsIFNj
+cm9sbGVyXxAPTWVudSAoU2VydmljZXMpW1Njcm9sbCBWaWV3XxASTWVudSBJdGVtIChJdGVtIDMpXxAg
+TWVudSBJdGVtIChBYm91dCBOZXdBcHBsaWNhdGlvbilfEBdNZW51IEl0ZW0gKEhpZGUgT3RoZXJzKV8Q
+E0hvcml6b250YWwgU2Nyb2xsZXJZU2VwYXJhdG9yXxAWQXBwbGljYXRpb24gQ29udHJvbGxlcl8QEkNv
+bW1pdHMgQ29udHJvbGxlcl8QH01lbnUgSXRlbSAoUXVpdCBOZXdBcHBsaWNhdGlvbilfEBpNZW51IEl0
+ZW0gKFByZWZlcmVuY2VzLi4uKV8QFE1lbnUgSXRlbSAoU2VydmljZXMpXxAWU3F1YXJlIEJ1dHRvbiAo
+SXRlbSAxKV8QGk1lbnUgSXRlbSAoTmV3QXBwbGljYXRpb24pWlRhYmxlIFZpZXdfEBtQb3AgVXAgQnV0
+dG9uIENlbGwgKEl0ZW0gMSlcVGFibGUgQ29sdW1uXxARTWVudSAoT3RoZXJWaWV3cylbQXBwbGljYXRp
+b25bU2VwYXJhdG9yLTFcRmlsZSdzIE93bmVyXxAVTWVudSAoTmV3QXBwbGljYXRpb24pXxASTWVudSBJ
+dGVtIChJdGVtIDEpXENvbnRlbnQgVmlld18QEk1lbnUgSXRlbSAoSXRlbSAyKVtTZXBhcmF0b3ItMl8Q
+G1RleHQgRmllbGQgQ2VsbCAoVGV4dCBDZWxsKV8QFE1lbnUgSXRlbSAoU2hvdyBBbGwpVldpbmRvd18Q
+H01lbnUgSXRlbSAoSGlkZSBOZXdBcHBsaWNhdGlvbinSAA4ARQKIA5mAoKDSAA4ARQKIA5yAoKDSAA4A
+RQKIA5+AoK8QKwEfAosB/gB2AOYCCgJMARYCkQH8AjwCIQH6AfkB/QIBAmEClQKWAHUAfgEyAJ4ApQFn
+Ap0CngAfAp8CEgKhAFUA5QH/AgACAgKkAfsBdgJ2AgMASAIugE6AiIB0gC2AJoBggHWAUoCMgG+AcIBm
+gGWAX4BzgH+Ae4CNgJCAD4ARgDGAFoAXgDeAk4CVgAKAloBhgJuADIAjgHiAeoCBgJqAaoBBgIKAhYAI
+gGvSAA4ARQKIA82AoK8QKwPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPj
+A+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4gMeAyIDJgMqAy4DMgM2AzoDP
+gNCA0YDSgNOA1IDVgNaA14DYgNmA2oDbgNyA3YDegN+A4IDhgOKA44DkgOWA5oDngOiA6YDqgOuA7IDt
+gO6A74DwgPEQghCSEP8RARMQOhCREQEBEJURAQ0QxhEBCBEBCxCOEQEYEQEJEIgQgRCDEQEOEQEPEQEC
+EQEREQEQEQEEE//////////9EDgRASAQHRA5EJARARkQixCZEI8QmBEBBxCWEQEaEBUQhtIADgBFAHME
+I4ApoNIADgBFAogEJoCgoNIADgBFAogEKYCgoNIAOgA7BCsELKIELAA/Xk5TSUJPYmplY3REYXRhAAgA
+GQAiACcAMQA6AD8ARABSAFQAZgJVAlsCpgKtArQCwgLUAvAC/gMKAxYDJAMvAz0DWQNnA3oDjAOmA7AD
+vQO/A8EDwwPFA8cDyQPLA80DzwPRA9MD1QPXA9kD2wPdA+AD4gPrA/cD+QP7BAQEDgQQBB4EJwQwBDsE
+QgRUBF0EZgRvBHQEgwSWBJ8EqgSsBK8EsQTiBO8E/AUKBRQFIgUvBTkFSwVfBWkFdQV3BXkFewV9BYIF
+hAWGBYgFigWNBY8FkQWsBbMFwgXfBfEF/AYFBhEGGgYmBigGKgYsBi8GMQYzBjUGPgZABkUGRwZJBmoG
+cgZ5BoMGhQaHBokGiwaOBo8GkQaTBqsG9gcCBx8HMQdHB1wHawd9B4cHkgegB7IHxwfVB+cH9Af7CAkI
+DggPCBEIEwgVCBcIGQgbCB0IHwghCCIIIwgmCCkIKwgwCEEISAhPCFgIWghjCGUIaAh1CH4IgwiKCIsI
+uAjBCMkI3QjoCPYJAAkNCRYJHgkgCSIJJAkpCSsJMAkyCTQJNgk4CUUJUQlTCVUJVwleCWsJegl8CX4J
+gAmICZoJowmoCbsJyAnKCcwJzgnhCfUJ/goDCg4KFwoZCiAKIgokCiYKTwpRClMKVQpXClkKWwpdCl8K
+ZgqPCpEKkwqVCpcKmQqbCp0KnwqmCq8KtgrFCs0K1grbCuQK8QsFCxQLIQsuCzcLRAtSC1sLZQtsC3gL
+rQu5C8ILzwvbC+kL9wv5C/sL/Qv/DAIMBAwXDBoMHAweDCAMIgwkDC0MLww2DDgMOgw8DGkMcwx9DIcM
+iQyLDI0MjwySDJQMlgyYDJoMnAyeDKcMqQysDK4NAQ0jDS0NQQ1WDWMNfQ2ZDbQNwA3SDeEOAA4MDg4O
+EA4SDhsOHQ4eDiAOKQ4yDjQONQ43DjkOOw49Dj8OSA5TDmQOZg5oDmoOcw6KDpMOnA6qDrMOtQ64DroO
+4w7yDv8PBw8SDyEPLA83D0QPUA9RD1MPVQ9eD2APYg9rD3QPdQ93D5QPnw+rD7APsg+0D7YPuA+6D8sP
+zQ/WD9gP2w/oD/UP/Q//EAsQFBAZECEQNhBCEFAQUhBUEFYQWBBaEGEQcxCAEIIQhRCOEJkQrRC/EOgQ
++xEPERQRFhEYERoRHBEeER8RIRErEUARQhFEEUYRSBFhEW4RcBF8EZERkxGVEZcRmRGsEbURvhHHEcwR
+2hHnEe0R7xIKEhMSHhInEjASOxJgEmoSbBJuEnASchJ0EnYSeBKBEpkSphKvEroSxRLuEvAS8hL0EvYS
++BL6EvwTBRMhEzkTQhNLE1gTYxNsE3MTixOWE7MTvBPBE9QT3RPkE/ET9xQAFAIUGRQbFB0UHxQhFCMU
+JRQnFCkUKxQtFC8UQBROFFcUXxRhFGMUZRRnFIQUhhSIFIoUjBSOFJAUoRSjFKUUpxSpFMAU4BTpFPAV
+CBUXFSgVKhUsFS4VMBU5FTsVPRVRFV8VaBVvFYYVlxWZFZsVnRWfFcAVwhXEFcYVyBXKFcwV4hXkFeoV
++xX9Ff8WARYDFgwWDhYQFigWNxZIFkoWTBZOFlAWYRZjFmUWZxZpFooWjBaOFpMWlRaXFpkWmxanFsAW
+0RbTFtUW1xbZFu4W/xcBFwMXBRcHFygXKhcsFy4XMBcyFzQXShdMF1cXaBdqF2wXbhdwF3kXiheMF44X
+kBeSF7MXtRe3F7kXuxe9F78XyBfhF/IX9Bf2F/gX+hgFGA4YEBhRGFMYVRhXGFkYWxhdGF8YYRhjGGUY
+ZxhpGGsYbRhvGHEYcxh1GHcYeRh7GH0YfxiBGIMYhRiHGIkYixiNGI8YoBiiGKQYphioGLEYsxi8GMUY
+xxjIGNoZAxkRGR4ZIBkiGSMZJRkmGSgZKhksGU0ZTxlRGVMZVRlXGVkZaBlqGZMZnRmfGaEZoxmlGacZ
+qRmrGa0ZvBnFGccZyRnyGfQZ9hn4GfoZ/Bn+GgAaAhoXGiYaKBoqGiwaLhovGj4aRxpJGl4aYBpiGmQa
+ZhpoGmoabBpuGnAachqbGp0anxqgGqIaoxqlGqcaqRrSGtQa1hrXGtka2hrcGt4a4BrtGvYa/xsBGwQb
+BhsSGxsbIBspGysbbBtuG3Abcht0G3YbeBt6G3wbfhuAG4IbhBuGG4gbihuMG44bkBuSG5QblhuYG5ob
+nBueG6AbohukG6YbqBuqG7MbtRv4G/ob/Bv+HAAcAhwEHAYcCBwKHAwcDhwQHBIcFBwWHBgcGhwcHB4c
+IBwiHCQcJhwoHCocLBwuHDAcMhw0HDYcOBxBHEMchhyIHIocjByOHJAckhyUHJYcmByaHJwcnhygHKIc
+pBymHKgcqhysHK4csByyHLQcthy4HLocvBy+HMAcwhzEHMYc2hzsHPgdDR0wHUodYB1qHYMdmB26Hdcd
+7h4HHiQeLx5NHloebh56HoYekx6rHsAezR7iHu4fDB8jHyofTB9VH1cfWB9hH2MfZB9tH28fyB/KH8wf
+zh/QH9If1B/WH9gf2h/cH94f4B/iH+Qf5h/oH+of7B/uH/Af8h/0H/Yf+B/6H/wf/iAAIAIgBCAGIAgg
+CiAMIA4gECASIBQgFiAYIBogHCAeICcgKSCCIIQghiCIIIogjCCOIJAgkiCUIJYgmCCaIJwgniCgIKIg
+pCCmIKggqiCsIK4gsCCyILQgtiC4ILogvCC+IMAgwiDEIMYgyCDKIMwgziDQINIg1CDWINgg2iDcIN4g
+4SDjIOUg6CDqIO0g7yDyIPUg9yD6IP0g/yEBIQMhBiEJIQwhDyESIRUhHiEgISMhJSEnISkhLCEuITAh
+MiE0ITchOSE8IT4hQCFJIUshTCFVIVchWCFhIWMhZCFtIXIAAAAAAAACAgAAAAAAAAQtAAAAAAAAAAAA
+AAAAAAAhgQ</bytes>
</object>
</data>
</archive>
View
BIN  English.lproj/MainMenu.nib/keyedobjects.nib
Binary file not shown
View
61 GitNub.xcodeproj/Caged.mode1v3
@@ -269,16 +269,11 @@
<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
<array>
<string>29B97314FDCFA39411CA2CEA</string>
- <string>1C37FBAC04509CD000000102</string>
- <string>286F10BE0D7A4E5B0055A0D1</string>
- <string>286F10BF0D7A4E5B0055A0D1</string>
- <string>286F10C00D7A4E5B0055A0D1</string>
<string>1C37FABC05509CD000000102</string>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>5</integer>
<integer>0</integer>
</array>
</array>
@@ -302,7 +297,7 @@
<real>186</real>
</array>
<key>RubberWindowFrame</key>
- <string>198 416 746 431 0 0 1440 878 </string>
+ <string>72 368 746 431 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -339,7 +334,7 @@
<key>Frame</key>
<string>{{0, 0}, {538, 0}}</string>
<key>RubberWindowFrame</key>
- <string>198 416 746 431 0 0 1440 878 </string>
+ <string>72 368 746 431 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -359,7 +354,7 @@
<key>Frame</key>
<string>{{0, 5}, {538, 385}}</string>
<key>RubberWindowFrame</key>
- <string>198 416 746 431 0 0 1440 878 </string>
+ <string>72 368 746 431 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -383,9 +378,9 @@
</array>
<key>TableOfContents</key>
<array>
- <string>286F10860D7A47040055A0D1</string>
+ <string>284B70160D7BCED60075DA6C</string>
<string>1CE0B1FE06471DED0097A5F4</string>
- <string>286F10870D7A47040055A0D1</string>
+ <string>284B70170D7BCED60075DA6C</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
@@ -519,16 +514,16 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>286F11410D7A7F320055A0D1</string>
- <string>286F11420D7A7F320055A0D1</string>
- <string>286F11430D7A7F320055A0D1</string>
+ <string>284B70180D7BCED60075DA6C</string>
+ <string>284B70190D7BCED60075DA6C</string>
+ <string>284B701A0D7BCED60075DA6C</string>
<string>1CD10A99069EF8BA00B06720</string>
<string>286F10A50D7A49D20055A0D1</string>
+ <string>/Users/Caged/dev/git/gitnub/GitNub.xcodeproj</string>
<string>1C78EAAD065D492600B07095</string>
- <string>/Users/Caged/dev/xcode/GitNub/GitNub.xcodeproj</string>
</array>
<key>WindowString</key>
- <string>198 416 746 431 0 0 1440 878 </string>
+ <string>72 368 746 431 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
@@ -605,7 +600,7 @@
<key>TableOfContents</key>
<array>
<string>286F10A50D7A49D20055A0D1</string>
- <string>286F10A60D7A49D20055A0D1</string>
+ <string>284B70030D7BCD990075DA6C</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
@@ -647,8 +642,8 @@
<string>yes</string>
<key>sizes</key>
<array>
- <string>{{0, 0}, {316, 185}}</string>
- <string>{{316, 0}, {378, 185}}</string>
+ <string>{{0, 0}, {316, 201}}</string>
+ <string>{{316, 0}, {378, 201}}</string>
</array>
</dict>
<key>VerticalSplitView</key>
@@ -663,8 +658,8 @@
<string>yes</string>
<key>sizes</key>
<array>
- <string>{{0, 0}, {694, 185}}</string>
- <string>{{0, 185}, {694, 196}}</string>
+ <string>{{0, 0}, {694, 201}}</string>
+ <string>{{0, 201}, {694, 180}}</string>
</array>
</dict>
</dict>
@@ -697,7 +692,7 @@
<real>148</real>
</array>
<key>Frame</key>
- <string>{{316, 0}, {378, 185}}</string>
+ <string>{{316, 0}, {378, 201}}</string>
<key>RubberWindowFrame</key>
<string>301 294 694 422 0 0 1440 878 </string>
</dict>
@@ -725,13 +720,13 @@
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
- <string>286F10A70D7A49D20055A0D1</string>
+ <string>284B70040D7BCD990075DA6C</string>
<string>1C162984064C10D400B95A72</string>
- <string>286F10A80D7A49D20055A0D1</string>
- <string>286F10A90D7A49D20055A0D1</string>
- <string>286F10AA0D7A49D20055A0D1</string>
- <string>286F10AB0D7A49D20055A0D1</string>
- <string>286F10AC0D7A49D20055A0D1</string>
+ <string>284B70050D7BCD990075DA6C</string>
+ <string>284B70060D7BCD990075DA6C</string>
+ <string>284B70070D7BCD990075DA6C</string>
+ <string>284B70080D7BCD990075DA6C</string>
+ <string>284B70090D7BCD990075DA6C</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
@@ -870,18 +865,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {802, 395}}</string>
+ <string>{{0, 0}, {934, 470}}</string>
<key>RubberWindowFrame</key>
- <string>602 222 802 436 0 0 1440 878 </string>
+ <string>140 223 934 511 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXDebugCLIModule</string>
<key>Proportion</key>
- <string>395pt</string>
+ <string>470pt</string>
</dict>
</array>
<key>Proportion</key>
- <string>395pt</string>
+ <string>470pt</string>
</dict>
</array>
<key>Name</key>
@@ -895,13 +890,13 @@
<key>TableOfContents</key>
<array>
<string>1C78EAAD065D492600B07095</string>
- <string>286F10AD0D7A49D20055A0D1</string>
+ <string>284B700A0D7BCD990075DA6C</string>
<string>1C78EAAC065D492600B07095</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.consoleV3</string>
<key>WindowString</key>
- <string>602 222 802 436 0 0 1440 878 </string>
+ <string>140 223 934 511 0 0 1440 878 </string>
<key>WindowToolGUID</key>
<string>1C78EAAD065D492600B07095</string>
<key>WindowToolIsVisible</key>
View
22 GitNub.xcodeproj/Caged.pbxuser
@@ -37,25 +37,9 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
- 286F10BC0D7A4E3D0055A0D1 /* log.html.erb */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1074, 683}}";
- sepNavSelRange = "{4, 0}";
- sepNavVisRange = "{0, 4}";
- sepNavWindowFrame = "{{15, 67}, {1133, 811}}";
- };
- };
- 286F10C20D7A4EB40055A0D1 /* application.css */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1074, 683}}";
- sepNavSelRange = "{27, 0}";
- sepNavVisRange = "{0, 28}";
- sepNavWindowFrame = "{{15, 67}, {1133, 811}}";
- };
- };
29B97313FDCFA39411CA2CEA /* Project object */ = {
activeArchitecture = i386;
- activeBuildConfigurationName = Debug;
+ activeBuildConfigurationName = Release;
activeExecutable = 2804BC800D7A465B00A0FAA7 /* GitNub */;
activeTarget = 4DDCA7030ACC9A6100E082CE /* GitNub */;
addToTargets = (
@@ -110,8 +94,8 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
- PBXPerProjectTemplateStateSaveDate = 226132801;
- PBXWorkspaceStateSaveDate = 226132801;
+ PBXPerProjectTemplateStateSaveDate = 226216114;
+ PBXWorkspaceStateSaveDate = 226216114;
};
sourceControlManager = 2804BC860D7A467A00A0FAA7 /* Source Control */;
userBuildSettings = {
View
36 GitNub.xcodeproj/project.pbxproj
@@ -7,12 +7,13 @@
objects = {
/* Begin PBXBuildFile section */
+ 284B70780D7BEC830075DA6C /* bubble.png in Resources */ = {isa = PBXBuildFile; fileRef = 284B70770D7BEC830075DA6C /* bubble.png */; };
286F10980D7A47DB0055A0D1 /* ApplicationController.rb in Resources */ = {isa = PBXBuildFile; fileRef = 286F10970D7A47DB0055A0D1 /* ApplicationController.rb */; };
286F109E0D7A49380055A0D1 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 286F109D0D7A49380055A0D1 /* WebKit.framework */; };
- 286F10BD0D7A4E590055A0D1 /* log.html.erb in Resources */ = {isa = PBXBuildFile; fileRef = 286F10BC0D7A4E3D0055A0D1 /* log.html.erb */; };
- 286F10C30D7A4EB40055A0D1 /* application.css in Resources */ = {isa = PBXBuildFile; fileRef = 286F10C20D7A4EB40055A0D1 /* application.css */; };
- 286F110A0D7A71350055A0D1 /* bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 286F11080D7A71350055A0D1 /* bg.png */; };
- 286F110B0D7A71350055A0D1 /* select.png in Resources */ = {isa = PBXBuildFile; fileRef = 286F11090D7A71350055A0D1 /* select.png */; };
+ 28D2BF1F0D7B3E25003BCF14 /* CommitsController.rb in Resources */ = {isa = PBXBuildFile; fileRef = 28D2BF1E0D7B3E25003BCF14 /* CommitsController.rb */; };
+ 28D2BF5B0D7B4F88003BCF14 /* ImageTextCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 28D2BF590D7B4F88003BCF14 /* ImageTextCell.h */; };
+ 28D2BF5C0D7B4F88003BCF14 /* ImageTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D2BF5A0D7B4F88003BCF14 /* ImageTextCell.m */; };
+ 28D2BF5E0D7BAEF9003BCF14 /* TexturedWindow.rb in Resources */ = {isa = PBXBuildFile; fileRef = 28D2BF5D0D7BAEF9003BCF14 /* TexturedWindow.rb */; };
4DDCA7060ACC9A6100E082CE /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };
4DDCA7070ACC9A6100E082CE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
4DDCA7080ACC9A6100E082CE /* rb_main.rb in Resources */ = {isa = PBXBuildFile; fileRef = E8F5E25803AEB7C803A81C6F /* rb_main.rb */; };
@@ -24,12 +25,13 @@
/* Begin PBXFileReference section */
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
+ 284B70770D7BEC830075DA6C /* bubble.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bubble.png; sourceTree = "<group>"; };
286F10970D7A47DB0055A0D1 /* ApplicationController.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = ApplicationController.rb; sourceTree = "<group>"; };
286F109D0D7A49380055A0D1 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /System/Library/Frameworks/WebKit.framework; sourceTree = "<absolute>"; };
- 286F10BC0D7A4E3D0055A0D1 /* log.html.erb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = log.html.erb; sourceTree = "<group>"; };
- 286F10C20D7A4EB40055A0D1 /* application.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = application.css; sourceTree = "<group>"; };
- 286F11080D7A71350055A0D1 /* bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bg.png; sourceTree = "<group>"; };
- 286F11090D7A71350055A0D1 /* select.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = select.png; sourceTree = "<group>"; };
+ 28D2BF1E0D7B3E25003BCF14 /* CommitsController.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = CommitsController.rb; sourceTree = "<group>"; };
+ 28D2BF590D7B4F88003BCF14 /* ImageTextCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageTextCell.h; sourceTree = "<group>"; };
+ 28D2BF5A0D7B4F88003BCF14 /* ImageTextCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageTextCell.m; sourceTree = "<group>"; };
+ 28D2BF5D0D7BAEF9003BCF14 /* TexturedWindow.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = TexturedWindow.rb; sourceTree = "<group>"; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = "<group>"; };
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
@@ -57,6 +59,8 @@
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
+ 28D2BF590D7B4F88003BCF14 /* ImageTextCell.h */,
+ 28D2BF5A0D7B4F88003BCF14 /* ImageTextCell.m */,
);
name = Classes;
sourceTree = "<group>";
@@ -90,6 +94,7 @@
29B97314FDCFA39411CA2CEA /* GitNub */ = {
isa = PBXGroup;
children = (
+ 28D2BF5D0D7BAEF9003BCF14 /* TexturedWindow.rb */,
286F10970D7A47DB0055A0D1 /* ApplicationController.rb */,
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
@@ -97,8 +102,6 @@
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
4DDCA7110ACC9A6100E082CE /* Info.plist */,
- 286F10BC0D7A4E3D0055A0D1 /* log.html.erb */,
- 286F10C20D7A4EB40055A0D1 /* application.css */,
);
name = GitNub;
sourceTree = "<group>";
@@ -115,10 +118,10 @@
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
- 286F11080D7A71350055A0D1 /* bg.png */,
- 286F11090D7A71350055A0D1 /* select.png */,
+ 284B70770D7BEC830075DA6C /* bubble.png */,
29B97318FDCFA39411CA2CEA /* MainMenu.nib */,
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
+ 28D2BF1E0D7B3E25003BCF14 /* CommitsController.rb */,
);
name = Resources;
sourceTree = "<group>";
@@ -140,6 +143,7 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
+ 28D2BF5B0D7B4F88003BCF14 /* ImageTextCell.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -187,14 +191,13 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 286F10C30D7A4EB40055A0D1 /* application.css in Resources */,
- 286F10BD0D7A4E590055A0D1 /* log.html.erb in Resources */,
4DDCA7060ACC9A6100E082CE /* MainMenu.nib in Resources */,
4DDCA7070ACC9A6100E082CE /* InfoPlist.strings in Resources */,
4DDCA7080ACC9A6100E082CE /* rb_main.rb in Resources */,
286F10980D7A47DB0055A0D1 /* ApplicationController.rb in Resources */,
- 286F110A0D7A71350055A0D1 /* bg.png in Resources */,
- 286F110B0D7A71350055A0D1 /* select.png in Resources */,
+ 28D2BF1F0D7B3E25003BCF14 /* CommitsController.rb in Resources */,
+ 28D2BF5E0D7BAEF9003BCF14 /* TexturedWindow.rb in Resources */,
+ 284B70780D7BEC830075DA6C /* bubble.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -206,6 +209,7 @@
buildActionMask = 2147483647;
files = (
4DDCA70A0ACC9A6100E082CE /* main.m in Sources */,
+ 28D2BF5C0D7B4F88003BCF14 /* ImageTextCell.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
View
42 ImageTextCell.h
@@ -0,0 +1,42 @@
+//
+// ImageTextCell.h
+// SofaControl
+//
+// Created by Martin Kahr on 10.10.06.
+// Copyright 2006 CASE Apps. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+
+@interface ImageTextCell : NSTextFieldCell {
+ NSObject* delegate;
+ NSString* iconKeyPath;
+ NSString* primaryTextKeyPath;
+ NSString* secondaryTextKeyPath;
+}
+
+- (void) setDataDelegate: (NSObject*) aDelegate;
+
+- (void) setIconKeyPath: (NSString*) path;
+- (void) setPrimaryTextKeyPath: (NSString*) path;
+- (void) setSecondaryTextKeyPath: (NSString*) path;
+
+@end
+
+@interface NSObject(ImageTextCellDelegate)
+
+- (NSImage*) iconForCell: (ImageTextCell*) cell data: (NSObject*) data;
+- (NSString*) primaryTextForCell: (ImageTextCell*) cell data: (NSObject*) data;
+- (NSString*) secondaryTextForCell: (ImageTextCell*) cell data: (NSObject*) data;
+
+// optional: give the delegate a chance to set a different data object
+// This is especially useful for those cases where you do not want that NSCell creates copies of your data objects (e.g. Core Data objects).
+// In this case you bind a value to the NSTableColumn that enables you to retrieve the correct data object. You retrieve the objects
+// in the method dataElementForCell
+- (NSObject*) dataElementForCell: (ImageTextCell*) cell;
+
+// optional
+- (BOOL) disabledForCell: (ImageTextCell*) cell data: (NSObject*) data;
+
+@end
View
131 ImageTextCell.m
@@ -0,0 +1,131 @@
+//
+// ImageTextCell.m
+// SofaControl
+//
+// Created by Martin Kahr on 10.10.06.
+// Copyright 2006 CASE Apps. All rights reserved.
+//
+
+#import "ImageTextCell.h"
+
+@implementation ImageTextCell
+
+- (void)dealloc {
+ [self setDataDelegate: nil];
+ [self setIconKeyPath: nil];
+ [self setPrimaryTextKeyPath: nil];
+ [self setSecondaryTextKeyPath: nil];
+ [super dealloc];
+}
+
+- copyWithZone:(NSZone *)zone {
+ ImageTextCell *cell = (ImageTextCell *)[super copyWithZone:zone];
+ cell->delegate = nil;
+ [cell setDataDelegate: delegate];
+ return cell;
+}
+
+- (void) setIconKeyPath: (NSString*) path {
+ [iconKeyPath autorelease];
+ iconKeyPath = [path retain];
+}
+- (void) setPrimaryTextKeyPath: (NSString*) path {
+ [primaryTextKeyPath autorelease];
+ primaryTextKeyPath = [path retain];
+}
+- (void) setSecondaryTextKeyPath: (NSString*) path {
+ [secondaryTextKeyPath autorelease];
+ secondaryTextKeyPath = [path retain];
+}
+
+- (void) setDataDelegate: (NSObject*) aDelegate {
+ [aDelegate retain];
+ [delegate autorelease];
+ delegate = aDelegate;
+}
+
+- (id) dataDelegate {
+ if (delegate) return delegate;
+ return self; // in case there is no delegate we try to resolve values by using key paths
+}
+
+- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
+ [self setTextColor:[NSColor blackColor]];
+
+ NSObject* data = [self objectValue];
+
+ // give the delegate a chance to set a different data object
+ if ([[self dataDelegate] respondsToSelector: @selector(dataElementForCell:)]) {
+ data = [[self dataDelegate] dataElementForCell:self];
+ }
+
+ //TODO: Selection with gradient and selection color in white with shadow
+ // check out http://www.cocoadev.com/index.pl?NSTableView
+
+ BOOL elementDisabled = NO;
+ if ([[self dataDelegate] respondsToSelector: @selector(disabledForCell:data:)]) {
+ elementDisabled = [[self dataDelegate] disabledForCell: self data: data];
+ }
+
+ NSColor* primaryColor = [self isHighlighted] ? [NSColor alternateSelectedControlTextColor] : (elementDisabled? [NSColor disabledControlTextColor] : [NSColor textColor]);
+ NSString* primaryText = [[self dataDelegate] primaryTextForCell:self data: data];
+
+ NSDictionary* primaryTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys: primaryColor, NSForegroundColorAttributeName,
+ [NSFont systemFontOfSize:13], NSFontAttributeName, nil];
+ [primaryText drawAtPoint:NSMakePoint(cellFrame.origin.x+cellFrame.size.height+18, cellFrame.origin.y) withAttributes:primaryTextAttributes];
+
+ NSColor* secondaryColor = [self isHighlighted] ? [NSColor alternateSelectedControlTextColor] : [NSColor disabledControlTextColor];
+ NSString* secondaryText = [[self dataDelegate] secondaryTextForCell:self data: data];
+ NSDictionary* secondaryTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys: secondaryColor, NSForegroundColorAttributeName,
+ [NSFont systemFontOfSize:10], NSFontAttributeName, nil];
+ [secondaryText drawAtPoint:NSMakePoint(cellFrame.origin.x+cellFrame.size.height+18, cellFrame.origin.y+cellFrame.size.height/2)
+ withAttributes:secondaryTextAttributes];
+
+
+ [[NSGraphicsContext currentContext] saveGraphicsState];
+ float yOffset = cellFrame.origin.y;
+ if ([controlView isFlipped]) {
+ NSAffineTransform* xform = [NSAffineTransform transform];
+ [xform translateXBy:0.0 yBy: cellFrame.size.height];
+ [xform scaleXBy:1.0 yBy:-1.0];
+ [xform concat];
+ yOffset = 0-cellFrame.origin.y;
+ }
+ NSImage* icon = [[self dataDelegate] iconForCell:self data: data];
+
+ NSImageInterpolation interpolation = [[NSGraphicsContext currentContext] imageInterpolation];
+ [[NSGraphicsContext currentContext] setImageInterpolation: NSImageInterpolationHigh];
+
+ [icon drawInRect:NSMakeRect(cellFrame.origin.x+9,yOffset+3,cellFrame.size.height-6, cellFrame.size.height-6)
+ fromRect:NSMakeRect(0,0,[icon size].width, [icon size].height)
+ operation:NSCompositeSourceOver
+ fraction:1.0];
+
+ [[NSGraphicsContext currentContext] setImageInterpolation: interpolation];
+
+ [[NSGraphicsContext currentContext] restoreGraphicsState];
+}
+
+#pragma mark -
+#pragma mark Delegate methods
+
+- (NSImage*) iconForCell: (ImageTextCell*) cell data: (NSObject*) data {
+ if (iconKeyPath) {
+ return [data valueForKeyPath: iconKeyPath];
+ }
+ return nil;
+}
+- (NSString*) primaryTextForCell: (ImageTextCell*) cell data: (NSObject*) data {
+ if (primaryTextKeyPath) {
+ return [data valueForKeyPath: primaryTextKeyPath];
+ }
+ return nil;
+}
+- (NSString*) secondaryTextForCell: (ImageTextCell*) cell data: (NSObject*) data {
+ if (primaryTextKeyPath) {
+ return [data valueForKeyPath: secondaryTextKeyPath];
+ }
+ return nil;
+}
+
+@end
View
2  Rakefile
@@ -19,7 +19,7 @@ RELEASE_CONFIGURATION = 'Release'
# Tasks
task :default => [:run]
-rake :launch
+task :launch do
sh %{open "build/Release/#{APPNAME}.app"}
end
View
18 TexturedWindow.rb
@@ -0,0 +1,18 @@
+#
+# TexturedWindow.rb
+# GitNub
+#
+# Created by Justin Palmer on 3/2/08.
+# Copyright (c) 2008 Active Reload, LLC. All rights reserved.
+#
+
+require 'osx/cocoa'
+
+class TexturedWindow < OSX::NSWindow
+ def initWithContentRect_styleMask_backing_defer(rect, mask, backing, defer)
+ if super_initWithContentRect_styleMask_backing_defer(rect, mask, backing, defer)
+ self.setContentBorderThickness_forEdge(44.0, NSMinYEdge)
+ end
+ return self
+ end
+end
View
134 application.css
@@ -1,134 +0,0 @@
-html, body, div, span, applet, object, iframe,
-h1, h2, h3, h4, h5, h6, p, blockquote, pre,
-a, abbr, acronym, address, big, cite, code,
-del, dfn, em, font, img, ins, kbd, q, s, samp,
-small, strike, strong, sub, sup, tt, var,
-b, u, i, center,
-dl, dt, dd, ol, ul, li,
-fieldset, form, label, legend,
-table, caption, tbody, tfoot, thead, tr, th, td {
- margin: 0;
- padding: 0;
- border: 0;
- outline: 0;
- font-size: 100%;
- vertical-align: baseline;
- background: transparent;
-}
-
-body {
- margin: 0;
- text-align: center;
- padding: 0;
- font: normal 12px/1.5em "Helvetica Neue", Helvetica, Arial, sans-serif;
- background: #fff;
- color: #333;
-}
-
-
-ol, ul {
- list-style: none;
-}
-blockquote, q {
- quotes: none;
-}
-
-/* remember to define focus styles! */
-:focus {
- outline: 0;
-}
-
-/* remember to highlight inserts somehow! */
-ins {
- text-decoration: none;
-}
-
-del {
- text-decoration: line-through;
-}
-
-/* tables still need 'cellspacing="0"' in the markup */
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-/* @group structure */
-
-#container {
- text-align: left;
-}
-
-#toolbar {
- background: #ccc url(bg.png) repeat-x;
- height: 24px;
- padding: 4px 9px;
- border-bottom: 1px solid #555;
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- font-weight: bold;
- font-size: 92%;
- color: #333;
- text-shadow: 1px 1px #ccc;
-}
-/* @end */
-
-/* @group commits */
-
-#commits {
- margin-top: 35px;
-}
-
-#commits li {
- padding: 6px 9px;
- border-bottom: 1px solid #eee;
-}
-
-.shade {
- background-color: #f7f7f7;
-}
-
-#commits .message {
- font-weight: bold;
- margin-right: 200px;
-}
-
-#commits .meta {
- color: #999;
- font-size: 92%;
- margin-right: 200px;
-}
-
-.date {
- float: right;
- color: #888;
- font-size: 92%;
- margin-top: -27px;
-}
-
-#commits .author {
- color: #333;
-}
-
-.select {
- font-family: "Helvetica Neue", Helvetica, sans-serif;
- -webkit-appearance: none;
- background: url(select.png) no-repeat;
- border: none;
- height: 25px;
- text-overflow: ellipsis;
- white-space: pre;
- padding: 3px 24px 3px 6px;
- width: 139px;
- font-weight: bold;
- color: #555;
- text-shadow: 1px 1px #ccc;
-}
-
-.select option {
- font-family: "Lucida Grande", sans-serif;
-}
-
-/* @end */
View
BIN  bg.png
Deleted file not rendered
View
BIN  bubble.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
32 log.html.erb
@@ -1,32 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
- <head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
- <title>Logs</title>
- <link rel="stylesheet" href="application.css" type="text/css" charset="utf-8" />
- </head>
- <body>
- <div id="container">
- <div id="toolbar">
- Branch:
- <select name="test" class="select">
- <% @branches.each do |branch| %>
- <option><%= branch.name %></option>
- <% end %>
- </select>
- </div>
- <div id="commits">
- <ol>
- <% @repo.commits('master', 100).each_with_index do |commit, i| %>
- <li<%= %( class="shade") if i % 2 == 0 %>>
- <p class="message"><%= commit.message %></p>
- <span class="meta"><%= commit %> by <span class="author"><%= commit.committer %></span></span>
- <span class="date"><%= commit.committed_date.strftime("%a, %b %d, %I:%M %p") %></span>
- </li>
- <% end %>
- </ol>
- </div>
- </div>
- </body>
-</html>
View
BIN  select.png
Deleted file not rendered
Please sign in to comment.
Something went wrong with that request. Please try again.