summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/app/nibs/BookmarkBarFolderWindow.xib2593
-rw-r--r--chrome/app/theme/menu_hierarchy_arrow.pdf1515
-rw-r--r--chrome/app/theme/menu_overflow_down.pdf1527
-rw-r--r--chrome/app/theme/menu_overflow_up.pdf1556
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h72
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm312
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm380
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h31
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.mm29
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell_unittest.mm24
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h227
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm2011
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm1682
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h78
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.mm173
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm77
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h21
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm206
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm151
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h33
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm90
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window_unittest.mm49
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h16
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm27
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_button.h6
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm70
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h14
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm52
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell_unittest.mm25
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target_unittest.mm41
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h54
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm110
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm48
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h19
-rw-r--r--chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm16
-rw-r--r--chrome/chrome_browser.gypi8
-rw-r--r--chrome/chrome_dll.gypi4
-rw-r--r--chrome/chrome_tests.gypi4
38 files changed, 12848 insertions, 503 deletions
diff --git a/chrome/app/nibs/BookmarkBarFolderWindow.xib b/chrome/app/nibs/BookmarkBarFolderWindow.xib
new file mode 100644
index 0000000..e004b8c
--- /dev/null
+++ b/chrome/app/nibs/BookmarkBarFolderWindow.xib
@@ -0,0 +1,2593 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1050</int>
+ <string key="IBDocument.SystemVersion">10F2108</string>
+ <string key="IBDocument.InterfaceBuilderVersion">823</string>
+ <string key="IBDocument.AppKitVersion">1038.29</string>
+ <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">823</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="100"/>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="1001">
+ <string key="NSClassName">BookmarkBarFolderController</string>
+ </object>
+ <object class="NSCustomObject" id="1003">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1004">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSWindowTemplate" id="1005">
+ <int key="NSWindowStyleMask">15</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
+ <int key="NSWTFlags">536870912</int>
+ <string key="NSWindowTitle">BmbPopUpWindow</string>
+ <string key="NSWindowClass">BookmarkBarFolderWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <object class="NSView" key="NSWindowView" id="1006">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomView" id="941574830">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSScrollView" id="680424923">
+ <reference key="NSNextResponder" ref="941574830"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="730183354">
+ <reference key="NSNextResponder" ref="680424923"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomView" id="762431297">
+ <reference key="NSNextResponder" ref="730183354"/>
+ <int key="NSvFlags">298</int>
+ <string key="NSFrameSize">{472, 270}</string>
+ <reference key="NSSuperview" ref="730183354"/>
+ <string key="NSClassName">BookmarkBarFolderView</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{472, 270}</string>
+ <reference key="NSSuperview" ref="680424923"/>
+ <reference key="NSNextKeyView" ref="762431297"/>
+ <reference key="NSDocView" ref="762431297"/>
+ <object class="NSColor" key="NSBGColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ </object>
+ </object>
+ <int key="NScvFlags">6</int>
+ </object>
+ <object class="NSScroller" id="453279292">
+ <reference key="NSNextResponder" ref="680424923"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {15, 285}}</string>
+ <reference key="NSSuperview" ref="680424923"/>
+ <reference key="NSTarget" ref="680424923"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ <double key="NSPercent">0.96363627910614014</double>
+ </object>
+ <object class="NSScroller" id="1057944048">
+ <reference key="NSNextResponder" ref="680424923"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {480, 15}}</string>
+ <reference key="NSSuperview" ref="680424923"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="680424923"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">0.50602412223815918</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{4, 0}, {472, 270}}</string>
+ <reference key="NSSuperview" ref="941574830"/>
+ <reference key="NSNextKeyView" ref="730183354"/>
+ <int key="NSsFlags">0</int>
+ <reference key="NSVScroller" ref="453279292"/>
+ <reference key="NSHScroller" ref="1057944048"/>
+ <reference key="NSContentView" ref="730183354"/>
+ </object>
+ <object class="NSCustomView" id="953069288">
+ <reference key="NSNextResponder" ref="941574830"/>
+ <int key="NSvFlags">-2147483358</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSImageView" id="865301746">
+ <reference key="NSNextResponder" ref="953069288"/>
+ <int key="NSvFlags">269</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{215, 1}, {48, 20}}</string>
+ <reference key="NSSuperview" ref="953069288"/>
+ <int key="NSViewLayerContentsRedrawPolicy">2</int>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="471443416">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">menu_overflow_down</string>
+ </object>
+ <int key="NSAlign">0</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ </object>
+ <string key="NSFrameSize">{480, 23}</string>
+ <reference key="NSSuperview" ref="941574830"/>
+ <int key="NSViewLayerContentsRedrawPolicy">2</int>
+ <string key="NSClassName">NSView</string>
+ </object>
+ <object class="NSCustomView" id="611357014">
+ <reference key="NSNextResponder" ref="941574830"/>
+ <int key="NSvFlags">-2147483382</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSImageView" id="334202585">
+ <reference key="NSNextResponder" ref="611357014"/>
+ <int key="NSvFlags">269</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{215, 1}, {48, 20}}</string>
+ <reference key="NSSuperview" ref="611357014"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="1868251">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">menu_overflow_up</string>
+ </object>
+ <int key="NSAlign">0</int>
+ <int key="NSScale">2</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">NO</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ </object>
+ <string key="NSFrame">{{0, 247}, {480, 23}}</string>
+ <reference key="NSSuperview" ref="941574830"/>
+ <string key="NSClassName">NSView</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{480, 270}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <string key="NSClassName">BookmarkBarFolderWindowContentView</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{480, 270}</string>
+ <reference key="NSSuperview"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ </object>
+ <object class="NSMenu" id="447628937">
+ <string key="NSTitle"/>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="875931014">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_IN_NEW_TAB</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSOnImage" id="259139760">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="1004300648">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="1056378252">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_IN_NEW_WINDOW</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="425700157">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_INCOGNITO</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="518061209">
+ <reference key="NSMenu" ref="447628937"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="642328622">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_EDIT</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="929181312">
+ <reference key="NSMenu" ref="447628937"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="359154687">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_CUT</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="632461975">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_COPY</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="202140151">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_PASTE</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="416998881">
+ <reference key="NSMenu" ref="447628937"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="464302674">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_REMOVE</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="896885093">
+ <reference key="NSMenu" ref="447628937"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="684143027">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_ADD_NEW_BOOKMARK</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="941759083">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_NEW_FOLDER</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="496552916">
+ <reference key="NSMenu" ref="447628937"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="60766120">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_BOOKMARK_MANAGER</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ <int key="NSTag">40011</int>
+ </object>
+ <object class="NSMenuItem" id="96803390">
+ <reference key="NSMenu" ref="447628937"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_ALWAYS_SHOW_MAC</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ <int key="NSTag">40009</int>
+ </object>
+ </object>
+ </object>
+ <object class="NSMenu" id="243908609">
+ <string key="NSTitle"/>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSMenuItem" id="727065194">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_ALL</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="236903630">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="233735276">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_ALL_INCOGNITO</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="370949212">
+ <reference key="NSMenu" ref="243908609"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="349508807">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_RENAME_FOLDER</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="668674447">
+ <reference key="NSMenu" ref="243908609"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="820503943">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_CUT</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="689396309">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_COPY</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="432629396">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_PASTE</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="147047106">
+ <reference key="NSMenu" ref="243908609"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="593857611">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_REMOVE</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="493723737">
+ <reference key="NSMenu" ref="243908609"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="92546710">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_ADD_NEW_BOOKMARK</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="682893323">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_NEW_FOLDER</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="913220344">
+ <reference key="NSMenu" ref="243908609"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ </object>
+ <object class="NSMenuItem" id="576055101">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_BOOKMARK_MANAGER</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ <int key="NSTag">40011</int>
+ </object>
+ <object class="NSMenuItem" id="636966313">
+ <reference key="NSMenu" ref="243908609"/>
+ <string key="NSTitle">^IDS_BOOKMARK_BAR_ALWAYS_SHOW_MAC</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="259139760"/>
+ <reference key="NSMixedImage" ref="1004300648"/>
+ <int key="NSTag">40009</int>
+ </object>
+ </object>
+ </object>
+ <object class="NSCustomObject" id="297726234">
+ <string key="NSClassName">GTMUILocalizerAndLayoutTweaker</string>
+ </object>
+ <object class="NSCustomObject" id="493003890">
+ <string key="NSClassName">ChromeUILocalizer</string>
+ </object>
+ <object class="NSWindowTemplate" id="793970913">
+ <int key="NSWindowStyleMask">1</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{196, 240}, {480, 270}}</string>
+ <int key="NSWTFlags">536871936</int>
+ <string key="NSWindowTitle">BmbPopUpWindow</string>
+ <string key="NSWindowClass">BookmarkBarFolderWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <object class="NSView" key="NSWindowView" id="382388938">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomView" id="898384138">
+ <reference key="NSNextResponder" ref="382388938"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrameSize">{480, 270}</string>
+ <reference key="NSSuperview" ref="382388938"/>
+ <string key="NSClassName">BookmarkBarFolderWindowContentView</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{480, 270}</string>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="1005"/>
+ </object>
+ <int key="connectionID">8</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="1005"/>
+ <reference key="destination" ref="1001"/>
+ </object>
+ <int key="connectionID">9</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">yetAnotherObjectToLocalize_</string>
+ <reference key="source" ref="493003890"/>
+ <reference key="destination" ref="243908609"/>
+ </object>
+ <int key="connectionID">53</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">localizer_</string>
+ <reference key="source" ref="297726234"/>
+ <reference key="destination" ref="493003890"/>
+ </object>
+ <int key="connectionID">54</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">owner_</string>
+ <reference key="source" ref="493003890"/>
+ <reference key="destination" ref="1001"/>
+ </object>
+ <int key="connectionID">55</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="243908609"/>
+ <reference key="destination" ref="1001"/>
+ </object>
+ <int key="connectionID">56</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">folderMenu_</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="243908609"/>
+ </object>
+ <int key="connectionID">58</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">otherObjectToLocalize_</string>
+ <reference key="source" ref="493003890"/>
+ <reference key="destination" ref="447628937"/>
+ </object>
+ <int key="connectionID">60</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">buttonMenu_</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="447628937"/>
+ </object>
+ <int key="connectionID">61</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="447628937"/>
+ <reference key="destination" ref="1001"/>
+ </object>
+ <int key="connectionID">62</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openAllBookmarks:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="727065194"/>
+ </object>
+ <int key="connectionID">63</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openAllBookmarksNewWindow:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="236903630"/>
+ </object>
+ <int key="connectionID">64</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openAllBookmarksIncognitoWindow:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="233735276"/>
+ </object>
+ <int key="connectionID">65</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">editBookmark:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="349508807"/>
+ </object>
+ <int key="connectionID">66</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cutBookmark:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="820503943"/>
+ </object>
+ <int key="connectionID">67</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyBookmark:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="689396309"/>
+ </object>
+ <int key="connectionID">68</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteBookmark:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="432629396"/>
+ </object>
+ <int key="connectionID">69</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">deleteBookmark:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="593857611"/>
+ </object>
+ <int key="connectionID">70</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addPage:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="92546710"/>
+ </object>
+ <int key="connectionID">71</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addFolder:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="682893323"/>
+ </object>
+ <int key="connectionID">72</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">commandDispatch:</string>
+ <reference key="source" ref="1003"/>
+ <reference key="destination" ref="576055101"/>
+ </object>
+ <int key="connectionID">73</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">commandDispatch:</string>
+ <reference key="source" ref="1003"/>
+ <reference key="destination" ref="636966313"/>
+ </object>
+ <int key="connectionID">74</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">commandDispatch:</string>
+ <reference key="source" ref="1003"/>
+ <reference key="destination" ref="60766120"/>
+ </object>
+ <int key="connectionID">75</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">commandDispatch:</string>
+ <reference key="source" ref="1003"/>
+ <reference key="destination" ref="96803390"/>
+ </object>
+ <int key="connectionID">76</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">editBookmark:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="642328622"/>
+ </object>
+ <int key="connectionID">80</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cutBookmark:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="359154687"/>
+ </object>
+ <int key="connectionID">81</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyBookmark:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="632461975"/>
+ </object>
+ <int key="connectionID">82</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteBookmark:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="202140151"/>
+ </object>
+ <int key="connectionID">83</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">deleteBookmark:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="464302674"/>
+ </object>
+ <int key="connectionID">84</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addPage:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="684143027"/>
+ </object>
+ <int key="connectionID">85</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">addFolder:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="941759083"/>
+ </object>
+ <int key="connectionID">86</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openBookmarkInIncognitoWindow:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="425700157"/>
+ </object>
+ <int key="connectionID">87</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openBookmarkInNewForegroundTab:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="875931014"/>
+ </object>
+ <int key="connectionID">88</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openBookmarkInNewWindow:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="1056378252"/>
+ </object>
+ <int key="connectionID">89</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">scrollView_</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="680424923"/>
+ </object>
+ <int key="connectionID">94</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">shadowWindow_</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="793970913"/>
+ </object>
+ <int key="connectionID">99</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">visibleView_</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="941574830"/>
+ </object>
+ <int key="connectionID">101</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">scrollUpArrowView_</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="953069288"/>
+ </object>
+ <int key="connectionID">108</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">scrollDownArrowView_</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="611357014"/>
+ </object>
+ <int key="connectionID">109</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">folderView_</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="762431297"/>
+ </object>
+ <int key="connectionID">110</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1001"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1003"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1004"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1</int>
+ <reference key="object" ref="1005"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1006"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="1006"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="941574830"/>
+ </object>
+ <reference key="parent" ref="1005"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="243908609"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="727065194"/>
+ <reference ref="236903630"/>
+ <reference ref="233735276"/>
+ <reference ref="370949212"/>
+ <reference ref="493723737"/>
+ <reference ref="349508807"/>
+ <reference ref="593857611"/>
+ <reference ref="92546710"/>
+ <reference ref="682893323"/>
+ <reference ref="576055101"/>
+ <reference ref="636966313"/>
+ <reference ref="913220344"/>
+ <reference ref="668674447"/>
+ <reference ref="820503943"/>
+ <reference ref="689396309"/>
+ <reference ref="432629396"/>
+ <reference ref="147047106"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Folder Menu</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">11</int>
+ <reference key="object" ref="297726234"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">12</int>
+ <reference key="object" ref="447628937"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="496552916"/>
+ <reference ref="96803390"/>
+ <reference ref="60766120"/>
+ <reference ref="941759083"/>
+ <reference ref="684143027"/>
+ <reference ref="464302674"/>
+ <reference ref="642328622"/>
+ <reference ref="896885093"/>
+ <reference ref="518061209"/>
+ <reference ref="425700157"/>
+ <reference ref="1056378252"/>
+ <reference ref="875931014"/>
+ <reference ref="359154687"/>
+ <reference ref="929181312"/>
+ <reference ref="632461975"/>
+ <reference ref="202140151"/>
+ <reference ref="416998881"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Button Menu</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">13</int>
+ <reference key="object" ref="493003890"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">16</int>
+ <reference key="object" ref="496552916"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">17</int>
+ <reference key="object" ref="96803390"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">18</int>
+ <reference key="object" ref="60766120"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="941759083"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">20</int>
+ <reference key="object" ref="684143027"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">21</int>
+ <reference key="object" ref="464302674"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">22</int>
+ <reference key="object" ref="642328622"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">23</int>
+ <reference key="object" ref="896885093"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="518061209"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">25</int>
+ <reference key="object" ref="425700157"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">26</int>
+ <reference key="object" ref="1056378252"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">27</int>
+ <reference key="object" ref="875931014"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">28</int>
+ <reference key="object" ref="359154687"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">29</int>
+ <reference key="object" ref="929181312"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">30</int>
+ <reference key="object" ref="632461975"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">31</int>
+ <reference key="object" ref="202140151"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">32</int>
+ <reference key="object" ref="416998881"/>
+ <reference key="parent" ref="447628937"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">35</int>
+ <reference key="object" ref="727065194"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">36</int>
+ <reference key="object" ref="236903630"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">37</int>
+ <reference key="object" ref="233735276"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">38</int>
+ <reference key="object" ref="370949212"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">39</int>
+ <reference key="object" ref="493723737"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">40</int>
+ <reference key="object" ref="349508807"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">41</int>
+ <reference key="object" ref="593857611"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">42</int>
+ <reference key="object" ref="92546710"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">43</int>
+ <reference key="object" ref="682893323"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">44</int>
+ <reference key="object" ref="576055101"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">45</int>
+ <reference key="object" ref="636966313"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">46</int>
+ <reference key="object" ref="913220344"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">47</int>
+ <reference key="object" ref="668674447"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">48</int>
+ <reference key="object" ref="820503943"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">49</int>
+ <reference key="object" ref="689396309"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">50</int>
+ <reference key="object" ref="432629396"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">51</int>
+ <reference key="object" ref="147047106"/>
+ <reference key="parent" ref="243908609"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">96</int>
+ <reference key="object" ref="793970913"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="382388938"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Shadow Window</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">97</int>
+ <reference key="object" ref="382388938"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="898384138"/>
+ </object>
+ <reference key="parent" ref="793970913"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">98</int>
+ <reference key="object" ref="898384138"/>
+ <reference key="parent" ref="382388938"/>
+ <string key="objectName">Visible Content View</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">100</int>
+ <reference key="object" ref="941574830"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="680424923"/>
+ <reference ref="953069288"/>
+ <reference ref="611357014"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ <string key="objectName">Visible Content View</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">90</int>
+ <reference key="object" ref="680424923"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="453279292"/>
+ <reference ref="1057944048"/>
+ <reference ref="762431297"/>
+ </object>
+ <reference key="parent" ref="941574830"/>
+ <string key="objectName">Scroll View</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">91</int>
+ <reference key="object" ref="453279292"/>
+ <reference key="parent" ref="680424923"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">92</int>
+ <reference key="object" ref="1057944048"/>
+ <reference key="parent" ref="680424923"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4</int>
+ <reference key="object" ref="762431297"/>
+ <reference key="parent" ref="680424923"/>
+ <string key="objectName">Folder Menu View</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">102</int>
+ <reference key="object" ref="953069288"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="865301746"/>
+ </object>
+ <reference key="parent" ref="941574830"/>
+ <string key="objectName">Scroll Up Arrow View</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">103</int>
+ <reference key="object" ref="865301746"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="471443416"/>
+ </object>
+ <reference key="parent" ref="953069288"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">104</int>
+ <reference key="object" ref="471443416"/>
+ <reference key="parent" ref="865301746"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">105</int>
+ <reference key="object" ref="611357014"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="334202585"/>
+ </object>
+ <reference key="parent" ref="941574830"/>
+ <string key="objectName">Scroll Down Arrow View</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">106</int>
+ <reference key="object" ref="334202585"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1868251"/>
+ </object>
+ <reference key="parent" ref="611357014"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">107</int>
+ <reference key="object" ref="1868251"/>
+ <reference key="parent" ref="334202585"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.IBPluginDependency</string>
+ <string>-2.IBPluginDependency</string>
+ <string>-3.IBPluginDependency</string>
+ <string>1.IBEditorWindowLastContentRect</string>
+ <string>1.IBPluginDependency</string>
+ <string>1.IBWindowTemplateEditedContentRect</string>
+ <string>1.NSWindowTemplate.visibleAtLaunch</string>
+ <string>1.WindowOrigin</string>
+ <string>1.editorWindowContentRectSynchronizationRect</string>
+ <string>10.CustomClassName</string>
+ <string>10.IBEditorWindowLastContentRect</string>
+ <string>10.IBPluginDependency</string>
+ <string>100.IBPluginDependency</string>
+ <string>100.IBViewBoundsToFrameTransform</string>
+ <string>102.IBPluginDependency</string>
+ <string>103.IBPluginDependency</string>
+ <string>104.IBPluginDependency</string>
+ <string>105.IBPluginDependency</string>
+ <string>106.IBPluginDependency</string>
+ <string>107.IBPluginDependency</string>
+ <string>11.IBPluginDependency</string>
+ <string>12.CustomClassName</string>
+ <string>12.IBEditorWindowLastContentRect</string>
+ <string>12.IBPluginDependency</string>
+ <string>13.IBPluginDependency</string>
+ <string>16.IBPluginDependency</string>
+ <string>17.IBPluginDependency</string>
+ <string>18.IBPluginDependency</string>
+ <string>19.IBPluginDependency</string>
+ <string>2.IBPluginDependency</string>
+ <string>20.IBPluginDependency</string>
+ <string>21.IBPluginDependency</string>
+ <string>22.IBPluginDependency</string>
+ <string>23.IBPluginDependency</string>
+ <string>24.IBPluginDependency</string>
+ <string>25.IBPluginDependency</string>
+ <string>26.IBPluginDependency</string>
+ <string>27.IBPluginDependency</string>
+ <string>28.IBPluginDependency</string>
+ <string>29.IBPluginDependency</string>
+ <string>30.IBPluginDependency</string>
+ <string>31.IBPluginDependency</string>
+ <string>32.IBPluginDependency</string>
+ <string>35.IBPluginDependency</string>
+ <string>36.IBPluginDependency</string>
+ <string>37.IBPluginDependency</string>
+ <string>38.IBPluginDependency</string>
+ <string>39.IBPluginDependency</string>
+ <string>4.IBPluginDependency</string>
+ <string>40.IBPluginDependency</string>
+ <string>41.IBPluginDependency</string>
+ <string>42.IBPluginDependency</string>
+ <string>43.IBPluginDependency</string>
+ <string>44.IBPluginDependency</string>
+ <string>45.IBPluginDependency</string>
+ <string>46.IBPluginDependency</string>
+ <string>47.IBPluginDependency</string>
+ <string>48.IBPluginDependency</string>
+ <string>49.IBPluginDependency</string>
+ <string>50.IBPluginDependency</string>
+ <string>51.IBPluginDependency</string>
+ <string>90.CustomClassName</string>
+ <string>90.IBViewBoundsToFrameTransform</string>
+ <string>96.IBEditorWindowLastContentRect</string>
+ <string>96.IBPluginDependency</string>
+ <string>96.IBWindowTemplateEditedContentRect</string>
+ <string>96.NSWindowTemplate.visibleAtLaunch</string>
+ <string>96.WindowOrigin</string>
+ <string>96.editorWindowContentRectSynchronizationRect</string>
+ <string>97.IBPluginDependency</string>
+ <string>98.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{333, 734}, {480, 270}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{333, 734}, {480, 270}}</string>
+ <boolean value="NO"/>
+ <string>{196, 240}</string>
+ <string>{{357, 418}, {480, 270}}</string>
+ <string>BookmarkMenu</string>
+ <string>{{222, 452}, {372, 293}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">AUMeAABCrgAAA</bytes>
+ </object>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>BookmarkMenu</string>
+ <string>{{230, 131}, {362, 293}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>BookmarkBarFolderWindowScrollView</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw4YAAA</bytes>
+ </object>
+ <string>{{673, 751}, {480, 270}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{673, 751}, {480, 270}}</string>
+ <boolean value="NO"/>
+ <string>{196, 240}</string>
+ <string>{{357, 418}, {480, 270}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">110</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">BookmarkBarFolderController</string>
+ <string key="superclassName">NSWindowController</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>addFolder:</string>
+ <string>addPage:</string>
+ <string>copyBookmark:</string>
+ <string>cutBookmark:</string>
+ <string>deleteBookmark:</string>
+ <string>editBookmark:</string>
+ <string>openAllBookmarks:</string>
+ <string>openAllBookmarksIncognitoWindow:</string>
+ <string>openAllBookmarksNewWindow:</string>
+ <string>openBookmark:</string>
+ <string>openBookmarkInIncognitoWindow:</string>
+ <string>openBookmarkInNewForegroundTab:</string>
+ <string>openBookmarkInNewWindow:</string>
+ <string>pasteBookmark:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>addFolder:</string>
+ <string>addPage:</string>
+ <string>copyBookmark:</string>
+ <string>cutBookmark:</string>
+ <string>deleteBookmark:</string>
+ <string>editBookmark:</string>
+ <string>openAllBookmarks:</string>
+ <string>openAllBookmarksIncognitoWindow:</string>
+ <string>openAllBookmarksNewWindow:</string>
+ <string>openBookmark:</string>
+ <string>openBookmarkInIncognitoWindow:</string>
+ <string>openBookmarkInNewForegroundTab:</string>
+ <string>openBookmarkInNewWindow:</string>
+ <string>pasteBookmark:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">addFolder:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">addPage:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">copyBookmark:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">cutBookmark:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">deleteBookmark:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">editBookmark:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openAllBookmarks:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openAllBookmarksIncognitoWindow:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openAllBookmarksNewWindow:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openBookmark:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openBookmarkInIncognitoWindow:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openBookmarkInNewForegroundTab:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openBookmarkInNewWindow:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">pasteBookmark:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>buttonMenu_</string>
+ <string>folderMenu_</string>
+ <string>folderView_</string>
+ <string>scrollDownArrowView_</string>
+ <string>scrollUpArrowView_</string>
+ <string>scrollView_</string>
+ <string>shadowWindow_</string>
+ <string>visibleView_</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSMenu</string>
+ <string>NSMenu</string>
+ <string>BookmarkBarFolderView</string>
+ <string>NSView</string>
+ <string>NSView</string>
+ <string>NSScrollView</string>
+ <string>BookmarkBarFolderWindow</string>
+ <string>BookmarkBarFolderWindowContentView</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>buttonMenu_</string>
+ <string>folderMenu_</string>
+ <string>folderView_</string>
+ <string>scrollDownArrowView_</string>
+ <string>scrollUpArrowView_</string>
+ <string>scrollView_</string>
+ <string>shadowWindow_</string>
+ <string>visibleView_</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">buttonMenu_</string>
+ <string key="candidateClassName">NSMenu</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">folderMenu_</string>
+ <string key="candidateClassName">NSMenu</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">folderView_</string>
+ <string key="candidateClassName">BookmarkBarFolderView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">scrollDownArrowView_</string>
+ <string key="candidateClassName">NSView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">scrollUpArrowView_</string>
+ <string key="candidateClassName">NSView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">scrollView_</string>
+ <string key="candidateClassName">NSScrollView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">shadowWindow_</string>
+ <string key="candidateClassName">BookmarkBarFolderWindow</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">visibleView_</string>
+ <string key="candidateClassName">BookmarkBarFolderWindowContentView</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">BookmarkBarFolderController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">BookmarkBarFolderView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">BookmarkBarFolderWindow</string>
+ <string key="superclassName">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="14500252">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">BookmarkBarFolderWindowContentView</string>
+ <string key="superclassName">NSView</string>
+ <reference key="sourceIdentifier" ref="14500252"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">BookmarkBarFolderWindowScrollView</string>
+ <string key="superclassName">NSScrollView</string>
+ <reference key="sourceIdentifier" ref="14500252"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">BookmarkMenu</string>
+ <string key="superclassName">NSMenu</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/bookmarks/bookmark_menu.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">ChromeUILocalizer</string>
+ <string key="superclassName">GTMUILocalizer</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/ui_localizer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">FirstResponder</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">commandDispatch:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <string key="NS.key.0">commandDispatch:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">commandDispatch:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBUserSource</string>
+ <string key="minorKey"/>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">GTMUILocalizer</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>otherObjectToLocalize_</string>
+ <string>owner_</string>
+ <string>yetAnotherObjectToLocalize_</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>otherObjectToLocalize_</string>
+ <string>owner_</string>
+ <string>yetAnotherObjectToLocalize_</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">otherObjectToLocalize_</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">owner_</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">yetAnotherObjectToLocalize_</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../third_party/GTM/AppKit/GTMUILocalizer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">GTMUILocalizerAndLayoutTweaker</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>localizerOwner_</string>
+ <string>localizer_</string>
+ <string>uiObject_</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>GTMUILocalizer</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>localizerOwner_</string>
+ <string>localizer_</string>
+ <string>uiObject_</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">localizerOwner_</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">localizer_</string>
+ <string key="candidateClassName">GTMUILocalizer</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">uiObject_</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenuItem</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/nsmenuitem_additions.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../third_party/GTM/Foundation/GTMNSObject+KeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/objc_zombie.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/status_bubble_mac.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/view_id_util.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/framed_browser_window.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/ui/cocoa/themed_window.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="890880056">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="571212825">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="905345038">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSCell</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSControl</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="116461416">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSFormatter</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSImageCell</string>
+ <string key="superclassName">NSCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSImageCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSImageView</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSImageView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenu</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="457004149">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenuItem</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="997115298">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AddressBook.framework/Headers/ABActions.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSAlert.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSAnimation.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="890880056"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="571212825"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="905345038"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSComboBox.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSComboBoxCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="116461416"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDatePickerCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="19368551">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSImage.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="457004149"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSRuleEditor.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSSound.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSSpeechRecognizer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSSpeechSynthesizer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSSplitView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTabView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSText.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextStorage.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTokenField.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTokenFieldCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSToolbar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="511176437">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="618026574">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSMetadata.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSSpellServer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Print.framework/Headers/PDEPluginInterface.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">SecurityInterface.framework/Headers/SFAuthorizationView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">SecurityInterface.framework/Headers/SFCertificatePanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">SecurityInterface.framework/Headers/SFChooseIdentityPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSResponder</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSScrollView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSScrollView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSScroller</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSScroller.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <reference key="sourceIdentifier" ref="997115298"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <string key="superclassName">NSResponder</string>
+ <reference key="sourceIdentifier" ref="511176437"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <reference key="sourceIdentifier" ref="19368551"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <string key="superclassName">NSResponder</string>
+ <reference key="sourceIdentifier" ref="618026574"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindowController</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">showWindow:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <string key="NS.key.0">showWindow:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">showWindow:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">../../chrome.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSMenuCheckmark</string>
+ <string>NSMenuMixedState</string>
+ <string>menu_overflow_down</string>
+ <string>menu_overflow_up</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>{9, 8}</string>
+ <string>{7, 2}</string>
+ <string>{19, 19}</string>
+ <string>{19, 19}</string>
+ </object>
+ </object>
+ </data>
+</archive>
diff --git a/chrome/app/theme/menu_hierarchy_arrow.pdf b/chrome/app/theme/menu_hierarchy_arrow.pdf
new file mode 100644
index 0000000..571078f
--- /dev/null
+++ b/chrome/app/theme/menu_hierarchy_arrow.pdf
@@ -0,0 +1,1515 @@
+%PDF-1.5 %âãÏÓ
+1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 29 0 R]/Order 30 0 R/RBGroups[]>>/OCGs[5 0 R 29 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 60187/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/pdf</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">HierarchyArrow</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xmp:MetadataDate>2010-04-20T11:15:52-07:00</xmp:MetadataDate>
+ <xmp:ModifyDate>2010-04-20T11:15:52-07:00</xmp:ModifyDate>
+ <xmp:CreateDate>2010-04-20T10:39:05-07:00</xmp:CreateDate>
+ <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool>
+ <xmp:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xmpGImg:width>208</xmpGImg:width>
+ <xmpGImg:height>256</xmpGImg:height>
+ <xmpGImg:format>JPEG</xmpGImg:format>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADQAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8Akvk3809c8v8AC1uCdQ0t&#xA;aAQSN8cY/wCKnNaU/lO3yyVIe2eXPNmh+YrX19MuA7KKy27fDLHX+dP4jb3yKU4xV2KuxV2KuxV2&#xA;KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvkbJIV7G/vbC6S6sp3t7mM1SWNirD6&#xA;Rir1zyb+dMM3Cz8yqIZdlXUYx8DH/i1B9n5rt7DBS29TgngnhSaCRZYZByjkQhlYHoQRsRgSvxV2&#xA;KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvkbJIdirsVZD5U89a/wCWph9S&#xA;m9S0JrLZS1aJvEgfst7r9NcVe3+UPzF0DzKixRP9V1GlXsZSOW3X022Dj5b+IGCkspwK7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+Rskh2KuxV2Kto7o6ujFXUgqwNCCNwQRir&#xA;0vyb+c1/Y8LPzAGvbQUVbxd50H+XX+8H/DfPBS29i0vVtN1WzS8064S5tn6SIeh8CDup9jvgSi8V&#xA;dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVfI2SQ7FXYq7FXYq7FUy0LzFrOhXgu9L&#xA;uWgk25qN0cDs6HZhir2nyb+bmj6zwtNU46dqJoAWP7iQ/wCQ5+yT/K33nBS2z7Al2KuxV2KuxV2K&#xA;uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvkbJIdirsVdirsVdirsVdirNfJv5p655f4WtwTqGlrQCCR&#xA;vjjH/FTmtKfynb5Y0r2zy55s0PzFa+vplwHZRWW3b4ZY6/zp/Ebe+RSnGKuxV2KuxV2KuxV2KuxV&#xA;2KuxV2KuxV2KuxV2KuxV8jZJDsVdirsVdirsVdirsVdiqvY397YXSXVlO9vcxmqSxsVYfSMVeueT&#xA;fzphm4WfmVRDLsq6jGPgY/8AFqD7PzXb2GClt6nBPBPCk0EiywyDlHIhDKwPQgjYjAlfirsVdirs&#xA;VdirsVdirsVdirsVdirsVdirsVfI2SQ7FXYq7FXYq7FXYq7FXYq7FXYqyHyp561/y1MPqU3qWhNZ&#xA;bKWrRN4kD9lvdfprir2/yh+YugeZUWKJ/quo0q9jKRy26+m2wcfLfxAwUllOBXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXyNkkOxV2KuxV2KuxV2KuxV2KuxV2KuxVtHdHV0Yq6kFWBoQRuCCMVel+Tfzm&#xA;v7HhZ+YA17aCireLvOg/y6/3g/4b54KW3sWl6tpuq2aXmnXCXNs/SRD0PgQd1Psd8CUXirsVdirs&#xA;VdirsVdirsVdirsVdir5GySHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqmWheYtZ0K8F3pdy0Em3N&#xA;RujgdnQ7MMVe0+Tfzc0fWeFpqnHTtRNACx/cSH/Ic/ZJ/lb7zgpbZ9gS7FXYq7FXYq7FXYq7FXYq&#xA;7FXyNkkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVmvk3809c8v8LW4J1DS1oBBI3xxj/ipz&#xA;WlP5Tt8saV7Z5c82aH5itfX0y4DsorLbt8Msdf50/iNvfIpTjFXYq7FXYq7FXYq7FXYq+Rskh2Ku&#xA;xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVXsb+9sLpLqyne3uYzVJY2KsPpGKvXPJv50wzcLP&#xA;zKohl2VdRjHwMf8Ai1B9n5rt7DBS29TgngnhSaCRZYZByjkQhlYHoQRsRgSvxV2KuxV2KuxV2Kvk&#xA;bJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVZD5U89a/5amH1Kb1LQmstlLVom8S&#xA;B+y3uv01xV7f5Q/MXQPMqLFE/wBV1GlXsZSOW3X022Dj5b+IGCkspwK7FXYq7FXYq+Rskh2KuxV2&#xA;KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kto7o6ujFXUgqwNCCNwQRir0vyb+c1/Y8LPz&#xA;AGvbQUVbxd50H+XX+8H/AA3zwUtvYtL1bTdVs0vNOuEubZ+kiHofAg7qfY74EovFXYq7FXyNkkOx&#xA;V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVMtC8xazoV4LvS7loJNuajdHA7&#xA;Oh2YYq9p8m/m5o+s8LTVOOnaiaAFj+4kP+Q5+yT/ACt95wUts+wJdir5GySHYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqzXyb+aeueX+FrcE6hpa0Agkb44x/wAVOa0p&#xA;/KdvljSvbPLnmzQ/MVr6+mXAdlFZbdvhljr/ADp/Ebe+RS+Xskh2KuxV2KuxV2KuxV2KuxV2KuxV&#xA;2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ks18m/lZrnmDhdXAOn6W1CJ5F+OQf8VIaVr/MdvnjavbP&#xA;LnlPQ/Ltr6GmW4RmFJbhvilkp/O/8Bt7ZFL5eySHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYqmWheXdZ128Fppds08m3NhsiA93c7KMVe0+Tfyj0fRuF3qnHUdRFCAw/cRn/I&#xA;Q/aI/mb7hgtaZ9gS7FXyNkkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVtEd3V&#xA;EUs7EBVAqSTsAAMVel+TfyZv77heeYC1laGjLZrtO4/y6/3Y/wCG+WC1p7Fpek6bpVmlnp1ultbJ&#xA;0jQdT4kndj7nfAlF4q7FXYq+Rskh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVkPl&#xA;TyLr/mWYfUofTtAaS3stViXxAP7Tey/TTFXt/lD8utA8tIssSfWtRpR76UDlv19Ndwg+W/iTgtLK&#xA;cCuxV2KuxV2KvkbJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVV7Gwvb+6S1soHuLmQ0S&#xA;KNSzH6Bir1zyb+S0MPC88ysJpdmXToz8Cn/i1x9r5Lt7nBa09TgggghSGCNYoYxxjjQBVUDoABsB&#xA;gSvxV2KuxV2KuxV2KvkbJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirNfJv5Wa55g4XVwDp&#xA;+ltQieRfjkH/ABUhpWv8x2+eNq9s8ueU9D8u2voaZbhGYUluG+KWSn87/wABt7ZFKcYq7FXYq7FX&#xA;Yq7FXYq7FXyNkkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVMtC8u6zrt4LTS7Zp5NubDZEB7u52U&#xA;Yq9p8m/lHo+jcLvVOOo6iKEBh+4jP+Qh+0R/M33DBa0z7Al2KuxV2KuxV2KuxV2KuxV2KvkbJIdi&#xA;rsVdirsVdirsVdirsVdirsVdiraI7uqIpZ2ICqBUknYAAYq9L8m/kzf33C88wFrK0NGWzXadx/l1&#xA;/ux/w3ywWtPYtL0nTdKs0s9Ot0trZOkaDqfEk7sfc74EovFXYq7FXYq7FXYq7FXYq7FXYq7FXyNk&#xA;kOxV2KuxV2KuxV2KuxV2KuxV2Ksh8qeRdf8AMsw+pQ+naA0lvZarEviAf2m9l+mmKvb/ACh+XWge&#xA;WkWWJPrWo0o99KBy36+mu4QfLfxJwWllOBXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXyNkkOxV2Kux&#xA;V2KuxV2KuxV2Kq9jYXt/dJa2UD3FzIaJFGpZj9AxV655N/JaGHheeZWE0uzLp0Z+BT/xa4+18l29&#xA;zgtaepwQQQQpDBGsUMY4xxoAqqB0AA2AwJX4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXyNkkOx&#xA;V2KuxV2KuxV2KuxVmvk38rNc8wcLq4B0/S2oRPIvxyD/AIqQ0rX+Y7fPG1e2eXPKeh+XbX0NMtwj&#xA;MKS3DfFLJT+d/wCA29silOMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir5GySHYq7FXYq7F&#xA;XYqmWheXdZ128Fppds08m3NhsiA93c7KMVe0+Tfyj0fRuF3qnHUdRFCAw/cRn/IQ/aI/mb7hgtaZ&#xA;9gS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXyNkkOxV2KuxVtEd3VEUs7EBVAqSTsA&#xA;AMVel+TfyZv77heeYC1laGjLZrtO4/y6/wB2P+G+WC1p7Fpek6bpVmlnp1ultbJ0jQdT4kndj7nf&#xA;AlF4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+Rskh2KuxVkPlTyLr/AJlmH1KH&#xA;07QGkt7LVYl8QD+03sv00xV7f5Q/LrQPLSLLEn1rUaUe+lA5b9fTXcIPlv4k4LSynArsVdirsVdi&#xA;rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir5GySFexsL2/uktbKB7i5kNEijUsx+gYq9c8&#xA;m/ktDDwvPMrCaXZl06M/Ap/4tcfa+S7e5wWtPU4IIIIUhgjWKGMcY40AVVA6AAbAYEr8VdirsVdi&#xA;rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir578m/lbrnmDhdXAOn6WaH15F+OQf8A&#xA;FSGla/zHb55K0PbPLnlPQ/Ltr6GmW4RmFJbhvilkp/O/8Bt7ZFKcYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9k=</xmpGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xmp:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#">
+ <xmpMM:InstanceID>uuid:ae020665-92cd-e442-a979-93a3969b7ce3</xmpMM:InstanceID>
+ <xmpMM:DocumentID>xmp.did:F77F11740720681194DFF4A5DEFE0840</xmpMM:DocumentID>
+ <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID>
+ <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>uuid:25309aba-6ddf-a941-9bd2-dd7653570218</stRef:instanceID>
+ <stRef:documentID>xmp.did:F77F117407206811818C85DF6A1A75C3</stRef:documentID>
+ <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID>
+ <stRef:renditionClass>proof:pdf</stRef:renditionClass>
+ </xmpMM:DerivedFrom>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:D27F11740720681191099C3B601C4548</stEvt:instanceID>
+ <stEvt:when>2008-04-17T14:19:15+05:30</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F1174072068118D4ED246B3ADB1C6</stEvt:instanceID>
+ <stEvt:when>2008-05-15T16:23:06-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F1174072068118D4ED246B3ADB1C6</stEvt:instanceID>
+ <stEvt:when>2008-05-15T17:10:45-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:EF7F117407206811A46CA4519D24356B</stEvt:instanceID>
+ <stEvt:when>2008-05-15T22:53:33-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F07F117407206811A46CA4519D24356B</stEvt:instanceID>
+ <stEvt:when>2008-05-15T23:07:07-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T10:35:43-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T10:40:59-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:26:55-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FB7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:29:01-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FC7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:29:20-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FD7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:30:54-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FE7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:31:22-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B233668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T12:23:46-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B333668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T13:27:54-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B433668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T13:46:13-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:47:57-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:51:06-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:52:22-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T13:28:01-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FF7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T16:23:53-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:07C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID>
+ <stEvt:when>2008-05-28T16:45:26-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F1174072068119098B097FDA39BEF</stEvt:instanceID>
+ <stEvt:when>2008-06-02T13:25:25-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BB1DBF8F242B6F84</stEvt:instanceID>
+ <stEvt:when>2008-06-09T14:58:36-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F117407206811ACAFB8DA80854E76</stEvt:instanceID>
+ <stEvt:when>2008-06-11T14:31:27-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:0180117407206811834383CD3A8D2303</stEvt:instanceID>
+ <stEvt:when>2008-06-11T22:37:35-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811818C85DF6A1A75C3</stEvt:instanceID>
+ <stEvt:when>2008-06-27T14:40:42-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F11740720681194DFF4A5DEFE0840</stEvt:instanceID>
+ <stEvt:when>2010-04-20T10:39:03-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
+ <illustrator:StartupProfile>Print</illustrator:StartupProfile>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
+ <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+ <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency>
+ <xmpTPg:NPages>1</xmpTPg:NPages>
+ <xmpTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>19.000000</stDim:w>
+ <stDim:h>19.000000</stDim:h>
+ <stDim:unit>Points</stDim:unit>
+ </xmpTPg:MaxPageSize>
+ <xmpTPg:PlateNames>
+ <rdf:Seq>
+ <rdf:li>Black</rdf:li>
+ </rdf:Seq>
+ </xmpTPg:PlateNames>
+ <xmpTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Default Swatch Group</xmpG:groupName>
+ <xmpG:groupType>0</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>White</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>Black</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>100.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Red</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Yellow</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Green</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Cyan</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Blue</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Magenta</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=15 M=100 Y=90 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>14.999998</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=90 Y=85 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>85.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=80 Y=95 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>80.000000</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=50 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=35 Y=85 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>35.000004</xmpG:magenta>
+ <xmpG:yellow>85.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=5 M=0 Y=90 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>5.000001</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=20 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>19.999998</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=10 Y=100 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=90 M=30 Y=95 K=30</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>90.000000</xmpG:cyan>
+ <xmpG:magenta>30.000002</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>30.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=0 Y=75 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>75.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=80 M=10 Y=45 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>80.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>45.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=70 M=15 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>70.000000</xmpG:cyan>
+ <xmpG:magenta>14.999998</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=50 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=95 Y=5 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>95.000000</xmpG:magenta>
+ <xmpG:yellow>5.000001</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=100 Y=25 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>25.000000</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=100 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=100 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=35 M=100 Y=35 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>35.000004</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>35.000004</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=10 M=100 Y=50 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>10.000002</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>50.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=95 Y=20 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>95.000000</xmpG:magenta>
+ <xmpG:yellow>19.999998</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=25 M=25 Y=40 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>25.000000</xmpG:cyan>
+ <xmpG:magenta>25.000000</xmpG:magenta>
+ <xmpG:yellow>39.999996</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=45 Y=50 K=5</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>45.000000</xmpG:magenta>
+ <xmpG:yellow>50.000000</xmpG:yellow>
+ <xmpG:black>5.000001</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=50 Y=60 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>60.000004</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=55 M=60 Y=65 K=40</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>55.000000</xmpG:cyan>
+ <xmpG:magenta>60.000004</xmpG:magenta>
+ <xmpG:yellow>65.000000</xmpG:yellow>
+ <xmpG:black>39.999996</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=25 M=40 Y=65 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>25.000000</xmpG:cyan>
+ <xmpG:magenta>39.999996</xmpG:magenta>
+ <xmpG:yellow>65.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=30 M=50 Y=75 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>30.000002</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>75.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=35 M=60 Y=80 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>35.000004</xmpG:cyan>
+ <xmpG:magenta>60.000004</xmpG:magenta>
+ <xmpG:yellow>80.000000</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=65 Y=90 K=35</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>65.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>35.000004</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=70 Y=100 K=50</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>70.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>50.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=70 Y=80 K=70</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>70.000000</xmpG:magenta>
+ <xmpG:yellow>80.000000</xmpG:yellow>
+ <xmpG:black>70.000000</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Grays</xmpG:groupName>
+ <xmpG:groupType>1</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=100</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>100.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=90</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>89.999405</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=80</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>79.998795</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=70</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>69.999702</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=60</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>59.999104</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=50</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>50.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=40</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>39.999401</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=30</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>29.998802</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=20</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>19.999701</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>9.999103</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=5</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>4.998803</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Brights</xmpG:groupName>
+ <xmpG:groupType>1</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=100 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=75 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>75.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=10 Y=95 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=10 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=90 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=60 M=90 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>60.000004</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>0.003099</xmpG:yellow>
+ <xmpG:black>0.003099</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpTPg:SwatchGroups>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <pdf:Producer>Adobe PDF library 9.00</pdf:Producer>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 1/Kids[31 0 R]/Type/Pages>> endobj 31 0 obj <</ArtBox[6.0 4.5 13.998 14.499]/BleedBox[0.0 0.0 19.0 19.0]/Contents 32 0 R/Group 33 0 R/LastModified(D:20100420111552-07'00')/MediaBox[0.0 0.0 19.0 19.0]/Parent 3 0 R/PieceInfo<</Illustrator 34 0 R>>/Resources<</ExtGState<</GS0 35 0 R>>/Properties<</MC0 29 0 R>>/XObject<</Fm0 36 0 R>>>>/Thumb 37 0 R/TrimBox[0.0 0.0 19.0 19.0]/Type/Page>> endobj 32 0 obj <</Filter/FlateDecode/Length 66>>stream
+H‰Ò÷wVÐ÷u6PprqVà*ä2P0´!] .Jå
+WÈ
+ê»(¤sé»å(¸äsr¹úUr
+8;V'i$O[%B0E;4a!JC~> endstream endobj 38 0 obj [/Indexed/DeviceRGB 255 39 0 R] endobj 39 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
+VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
+PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 36 0 obj <</BBox[6.0 14.499 13.998 4.5]/Group 40 0 R/Length 74/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 41 0 R>>>>/Subtype/Form>>stream
+0 0 0 1 k
+/GS0 gs
+q 1 0 0 1 6 14.499 cm
+0 0 m
+7.998 -5 l
+0 -9.999 l
+h
+f
+Q
+ endstream endobj 40 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 41 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 29 0 obj <</Intent 42 0 R/Name(Layer 1)/Type/OCG/Usage 43 0 R>> endobj 42 0 obj [/View/Design] endobj 43 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>> endobj 35 0 obj <</AIS false/BM/Normal/CA 0.669998/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.669998/op false>> endobj 34 0 obj <</LastModified(D:20100420111552-07'00')/Private 44 0 R>> endobj 44 0 obj <</AIMetaData 45 0 R/AIPDFPrivateData1 46 0 R/AIPDFPrivateData10 47 0 R/AIPDFPrivateData2 48 0 R/AIPDFPrivateData3 49 0 R/AIPDFPrivateData4 50 0 R/AIPDFPrivateData5 51 0 R/AIPDFPrivateData6 52 0 R/AIPDFPrivateData7 53 0 R/AIPDFPrivateData8 54 0 R/AIPDFPrivateData9 55 0 R/ContainerVersion 11/CreatorVersion 14/NumBlock 10/RoundtripVersion 14>> endobj 45 0 obj <</Length 914>>stream
+%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 14.0 %%AI8_CreatorVersion: 14.0.0 %%For: (Nicholas Jitkoff) () %%Title: (HierarchyArrow.pdf) %%CreationDate: 4/20/10 11:15 AM %%Canvassize: 16383 %%BoundingBox: 6 4 14 15 %%HiResBoundingBox: 6 4.5 13.998 14.499 %%DocumentProcessColors: Black %AI5_FileFormat 10.0 %AI12_BuildNumber: 367 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 1 1 1 ([Registration]) %AI3_Cropmarks: 0 0 19 19 %AI3_TemplateBox: 9.5 9.5 9.5 9.5 %AI3_TileBox: -296.5 -386.5 315.5 405.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -19 26 24 1351 758 90 0 0 52 138 0 0 0 1 1 0 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 72 72 72 72 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 46 0 obj <</Length 13044>>stream
+%%BoundingBox: 6 4 14 15 %%HiResBoundingBox: 6 4.5 13.998 14.499 %AI7_Thumbnail: 104 128 8 %%BeginData: 12914 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C457DA8FD66FF52537DFD65FF7D525259A8FD63FFFD05527DA8FD61FF %7D527D527D527DA8FD60FF52525259FD04527DFD5FFF7D527D527D527D52 %5352A8FD5DFFFD0B527DA8FD5BFF7D527D527D527D527D527D527D7DFD5A %FF52595252525952525259FD0552A8FD58FF7D527D527D527D527D527D52 %7D527D527DA8FD56FFFD12527DFD55FF7D527D527D527D527D527D527D52 %7D527D52537DA9FD53FF52525259525252595252525952525259FD05527D %A8FD51FF7D527D527D527D527D527D527D527D527D527D527D527DA8FD50 %FFFD1952FD4FFF7D527D527D527D527D527D527D527D527D527D527D527D %527D52A8FD4DFF52595252525952525259525252595252525952525259FD %05527DA8FD4BFF7D527D527D527D527D527D527D527D527D527D527D527D %527D527D52527DFD4AFFFD1F52A8FD48FF7D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527DA8FD46FF525252595252 %525952525259525252595252525952525259525252595252525352527DFD %45FF7D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D525252FD44FFFD25527DA8FD41FF7D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527DA8FD %40FF52595252525952525259525252595252525952525259525252595252 %52595252525952525259525253FD3FFF7D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D525252A8FD %3DFFFD2B527DA8FD3BFF7D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D52537DFD3AFF52 %525259525252595252525952525259525252595252525952525259525252 %59525252595252525952525259525252A8FD38FF7D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D5252527DA8FD36FFFD32527DFD35FF7D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D525253FD34FF525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %59525252595252527DA8FD31FF7D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D5259527DA8FD30FFFD385259A9FD2EFF7D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D525252A8FD2DFF5252525952525259 %525252595252525952525259525252595252525952525259525252595252 %5259525252595252525952525259525252595252527DA8FD2BFF7D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D52537DFD2A %FFFD3F52A8FD28FF7D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D5259527DA8FD26FF52595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %52525952525259525252595252525952525259525252537DFD25FF7D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D525259A8FD23FFFD45527DA8FD21FF7D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527DA8FD %20FF52525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %52595252525952525259FD04527DFD1FFF7D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D5253 %52A8FD1DFFFD4B527DA8FD1BFF7D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %7DFD1AFF5259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259FD0552A8FD18FF7D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527DA8FD16FFFD52527DFD15FF7D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D52537DA9FD13FF5252525952 %525259525252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259FD05527DA8FD11FF7D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527DA8FD10FFFD5952FD0FFF %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %A8FD0DFF5259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %FD05527DA8FD0BFF7D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D52527DFD0AFFFD5F52A8FD08FF7D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527DA8 %FD06FF525252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %59525252595252525352527DFD05FF7D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D525252FD04FFFD65 %527DA8FF7D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D7DFFFF525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %52595252525952525259525252595252525952525259FD05527DA8FFFFFF %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D525252A8FD05FFFD605259A9FD06FF7D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527DA8FD08FF52 %525259525252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259FD0552 %7DA8FD09FF7D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D525252FD0CFFFD5A527DFD0DFF7D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D5259527DA8FD0EFF52595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259FD0552A8FD10FF7D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D52527DFD12FFFD53527DA8FD13FF7D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D525252A8FD15FF5252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %5252525952525259FD04527DFD17FF7D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527DA8FD18FFFD4D527DA8FD19FF7D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %5253FD1CFF52595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252537DFD1DFF7D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527DA8FD1EFFFD4752A8FD20FF7D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D52537DFD22FF %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252527DA8FD23FF7D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D525352A8FD25FFFD4152FD27FF7D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7DA8FD28FF52595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %5252595252527DA8FD29FF7D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D525259A8FD2BFFFD3A527DFD2DFF7D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527DA8FD2EFF52525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252A8FD30FF7D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D52537DFD32FFFD33527DA8FD33FF7D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D52A8FD35FF525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %52525952525259525253FD37FF7D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D5259527D %A8FD38FFFD2D527DA8FD39FF7D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D52537DA9FD3BFF %525252595252525952525259525252595252525952525259525252595252 %5259525252595252525352527DFD3DFF7D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D5252527DA8FD3E %FFFD2752A8FD40FF7D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D7DFD42FF5259525252595252525952 %52525952525259525252595252525952525259FD05527DA8FD43FF7D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D5252 %52A8FD45FFFD205259A9FD46FF7D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527DA8FD48FF525252595252525952525259 %525252595252525952525259FD05527DA8FD49FF7D527D527D527D527D52 %7D527D527D527D527D527D527D527D525252FD4CFFFD1A527DFD4DFF7D52 %7D527D527D527D527D527D527D527D527D527D5259527DA8FD4EFF525952 %525259525252595252525952525259FD0552A8FD50FF7D527D527D527D52 %7D527D527D527D527D527D52527DFD52FFFD13527DA8FD53FF7D527D527D %527D527D527D527D527D525252A8FD55FF525252595252525952525259FD %04527DFD57FF7D527D527D527D527D527D527D527DA8FD58FFFD0D527DA8 %FD59FF7D527D527D527D527D525253FD5CFF525952525259525252537DFD %5DFF7D527D527D527D527DA8FD5EFFFD0752A8FD60FF7D527D52537DFD62 %FF5252527DA8FD63FF5352A8FD65FF52FD66FFFF %%EndData endstream endobj 47 0 obj <</Filter[/FlateDecode]/Length 8576>>stream
+H‰¬WëVÚL}‚<„@  ­´@ „ HEÅrYâg¥•Kàý¿™É}˜É$Æ?³X‚û\÷9ûȹâmã‹ßoJy±¶Ök¹×eƒ‡O</TåK|/ŠÕ×}á줞¾)êy½+VΫʅ6º+ÚB¯lRÏwbu¸ÈÁ¨PV”úðÓµñ?íöþ¤o‚‰Ýô7Û„]p[Qy±"©’ñÔO3u`å9©¼›
+‰ìéPëø€ÙPÅ5 Šã o_J©ío±z=«€Ÿßþ°²3èÉ­Y’7Ÿù¨á›Ê;R*‰uAOUæ±½f#nÐ'ÑÖ,A?©\´o¶•°r¢bÃX—§ðRwm¸RŸ¦ÌÐìy¿&/õÕ©•"³…ˆ¾mŸñ¼ñ,{Ùde“þ¾V,G¯í¨êJægÓ¿âŠ4P$ø<"+ÀÞ¸Aº:p<»Ý Ìü\¨°Þ Šsp’¥ª±Zºé2$D ‚5ä‹ÑµÃµ¼œOÄq£è«{ßêÄy¶£PÞ€N&â(±qô¨l+f÷·«ÎõÝ@{¢ Žh(vóváÈËý
+v²™ï³(“ʘóXW"¡XVBà|`nÕÇprŸ•ì x&LXÅãMcå ä^×bÙê¡îÚRJ•E!M^-€ ùÚÃEÛ5u]…—j€å®Ÿ‘Ñ°àÞwhXJIG4,¥… Ñ#!š0£‘ Ý2ÀÙbÞÍíJ%ˆê÷¾Å !`Ê
+K†õ¬B-,¼_\ÃÀY(ԼЕyBh‘w€{¸RI×c@l¬..}ƒ¼`)*´’R;Ìí °}!XšîWUé\‘ Âk˜…^¨ﺬ­éT ûJ:ªeÎvž FYùÚhj,À}BO`ë5Ñ€KþÁñÖCQ/J}«W_Èö,é—Íég­ò]c¥Ôk¹ö}#¾lßr|£*ÞÞ•×3ñ|Òz?r{¡ÞMšÏy¡k‹§5‹ .÷¬OqÈÔ48>bªþõWµï6:ÝÅ€ë½S±Ü?åx=>÷\­Ä ÀnÿN}mUJõDZÓJ¹î×wAΕG‡Ý®˜e W/ßIFw‡YIñÎdY¹)gº£çñÄ—~ú‰bt<¡±Äš›5VY‹? ¨F…ËEö?˨ö×môûIÚ1
+b‘p'¸w–w}N&ãŽQ]ø’ÜÙF £g¯éTõñ/É(ÇÃ?¹cõ5çYªQ¹ÙùÞ£=óÅ_2jê1o‚§>FµÄ9ݨv åxÔJüõŸîœœàâ¸O7úõWgH7ªªƒ&2jmd`6¿—ìOÆ/w‡L9ç­>åw…ºLýâ¾e{–)ý €(–Ö{ÕY“ æqÖ'åÎd÷ò¬;Ôñ@²õ|òžŒ ©gi87¹4LßÍøUl7ìòÆ­#Änž¨”ÐÓ7”„:Y5 c½k^_—`'Óªï0§¼.Å=£üˆ¼÷zIã©7¦uý•.péê@u‰ã‰yÊü\¨Ä<a›=`éL ãqê6ö)yZ;+ݪ>¾Ô?.1IoíöÝ×%#K\°~Ò†ë(ñÁÉoE¨¨OºF>ÃÅçÕݾNºwF0\âx?§úçô˜–O‡Z‡ì”éO
+ùMWꤒAãÊöAņ•£úÂŽ+ur¹cßbIÔ\TÍÿ[õ™ÎFæý¦³ëÇãÓlÂoVô˜¡õÚ8F Í5aŒà¨¡RúZ'iVÍãT}†+ 1HTË^6Iùê{­€@ÆÕ¢$¿Ûó¤J'ÑsÊ«ï*”´ñ9˜‰±Ó"ciÜÿØÕÁjŽ1(Ž'™™7ÃÈ 
+™7åga®úõy° Ó+«‹KŸL‚ya™¼JQÊ9oâ†Rø˜Ù)®Éä[ä·TCu?ûìs<©žÁCò‘äõ" É~­ŒÍc{ÍFÜxNÅâÚë»]^}Ý…×# Ç ¢Q‡þ’·Àè¸A¨®†t›yYÐIÀú>k^šáK 1\W'¬dYËs fÌãT¾öpѦ,5¦÷¸w\Bs;å/€¢ù\%ü—6ªè±
+áÑ–> 
+‰R6é 6 ­¡ÀÛOß—mèך£`±À-åšñ,{Ðkk²süQ–µÞ?vTI#*rW‚š{Ù 2F¨3 öÁ»Ž;=Z'‰ºÞ•Çl+$.¶Åð‰9N‹¹Èá„ñILÜæ¬HÏÆYJ'Cê’t-ÙÑÿªw{Ù+Ø;¸`Ç XCÁRã4É^¨ÄxÄfØt\sŒ6
+‚峆çÙ]žøÝ©|[f¥> aw²ÅJ¨×Ò`z=ÖÝVô•ÈËîË)ƒ GÁŽÄ;“ñÃ5©a]B+ öt¨u‚&)Øâš
+VH|ë\E㬾*p|T¡Zø-ãÂÅ‘¢xb±pN?%*"}Ì[, NŽ~微ŲÕCî!D¾,A¼4Ì» /ÕRæv-ws”<ˆh¯ NCð7F!üih“pˆHh*¥Óp¼ ç9> Xb$´o1 ,: A¶ñkñj¼Ä]ƒ1<1 çèP²Î‹„“ ¶Å˜82•†˜´§
+{kÂ
+o\|’îš óŸ=â»1 ýGiˆNi›I¨×äߦa„dÏÖ1Su±ƒÞm…r¨\˜¶¬2à$”H]XÁ„0çáâÅZã>4Fž»—6• ³¥‹ˆ©dA?@dÌsÁW*_ÏJt×­×Êÿc®„»¤ ç¯;SPÏÖqa¶žrVž£}##˜»“Úñ|ö™¦ý?„aš¾ÒŒMa¨N¯g¥açÒ|f-fC¹Ð‘ùT{Fœë¥
+âùÙ9×8ê•ðvâeϤ³j–<ÆSMaí
+ñæëK‹ ©A’à¿äÜI6—*¥ØÜçø‰Í] Eù“Ê6ôVÜÚAizu–‰µ÷Š"z^©ã£…r؆!`³ÙoFÙö×諾5D×G؇‡ny~?oàãÀËFûd8M+ûÎé}L–ŸN…Á€pw.t/‚ƒ8+:eFŽÜÓº½Õ};V
+“sñâ×Þ¾˜“x$Ý{!nËÂyÄÞ·«ð·Ê
+þ´¹×W'ë˜NP,úúP²oŽÒB«§ ¢¹ñwj¯´„eíñ 3½¿sfº¹i;cŸì³é÷|£¬¦'¶$³‹>%™íä!¶ÏëÙ·¤0
+žœXfGÒ°îÔJÌh·þÄ‘W>¹_ÁòÞ‹ ¸¡à7°Œùp…±»¡‹õx‘¦õ?æ˜\–¯„Àl¥2>ç>GŠEÎçž-³ã¹f™ø½;Šœ{ç¼iî!ý߈á`#FY6FŽtìΩo¥ýæŸê6úF‘17ÇÃ×£¾QãŒ[>æ5ß™'£¾ŸOû,[èlÍN²ðB¤}
+Åìáß·ßP
+Ë6£ýwÞcõ§É; º]9npl>,[B憞^‰ÿ¨ÈNËa_L[µ,ð×ÚÊFrèT+C§@3ƒV¶sžhU$üŒ»…šZ†pdBQ­½Åç ´ñDøäM mÀòQ˜¾J»@xe»bi~ñصXÆ…'ñ”€9VYiצ^¤” Ô_¼Z™Éí%3?"6‹M‰·ì‡ËNGCTu
+`¬îZ" åCK¯zÔ'gcøŒ¿G¡X ÐÕÄE®5Hª´µb–/y¸ìû6KÏéq-PduV"ê\„!’wNÈ»¤8IFôÊÁa\v‰êï’8“ÑHÒqÕaR øm­r›4›yŠ®Ù£úƒ«%ôõò  qÐTâðï*…ï ]mŠËh?zçÇHpùM„9RaXv ç²´ =_ ͨÄk×WbåjÁJŒù6šhÚŒ)«ð;§XÍ<³ç*+Ôá\‰MD/ž>41‹7‡^¤ ;$°š >£¦ìBïìð.´WU–«Ë?a©©«qUxDk¦‰çŸ&ö&
+®‚5UÄ7xó´ÄÅ8Tå¡PÆ›
+À1ôLoü=k}/2êŠZfX’îZ7´‡×%>t‰ãuu¢Dr4úP<Å<hP;ôH"—Z@¢çÉ);OE–pɹ!6:Xg©‹fÕªÁQæ¨÷’ò”p|šê{§mßMˆ€ÊÁ¡˜Oõ5öÇC&z órP^1á¾6×T¿çLÁG=Œk”à6ݛϨEó{- ôAÒAˆp&žtw2À ¨ÞX!e‚þë1Y¡kü±‚°‹ËG ü€`­š½2!€ÜßJ´y¬!}ß/ƒ`@@›Üok&«B ¤:=‚;§É„Ÿ<Hîubï BÜö\í <È·ÖØ
+‰Z>[mK_æYʼn;î#Úíú*˜M)nì¡©äù¬W×vâÊýþaÊŒÉIDŒ
+B1{eÃæ!‚C)[
+‡¶œûЭ=Rh%XÐ}‘é[´’ð
+gÿA6T”’o¿a;05Næ›9Þ^¹p'NÅñ‹eÍ@r Š+i¾ÚÇ‘/«×¨á Šª!Q,ˆc‹
+äseƒÇ
+¤ìCiæ!q1àõÙ„5Ù Cì¿g7'#C†ç¢é°Þj£Þ)l&^iöÌ(Vn(¡ôx¬€ Ì «bŒ¬Ç¬WQQ¯切ùÀ¨PŽú,¿…VH`7BBiœHYïr¸b…ÀÉ6´ L øÂGµºö=÷ùâujËÃGMÁ)ŠBÈVÒ4ðø5ƒØËà‚jp±2f›nì
+•]±ÒÀjþ¿OLˆ‰¿b"/üâÚçµ~h^–/›_aOÒÃåk‚ÐÝ,¶åƒ®ßéÿ9·óó›¾9ýJüâò¥V‹E‹ú|»Ðás”¾é•]ÉÓ,¦!¢„K¶ e¯D‡"ŧxeUõµÓ³âßÏØRÑl·»»=~~­zH‚™³$ž,†DX,wˆPõF۾Ѯ2é)% /g›ÓŒEã)$ü7í+ê‡Â¹Ä4êHÎrÇh5>½«¤=dé¡ ·sÜq™âªùÁMqP¾ï丿Å] þQ›î;ÓÓÞêÊ0vk¬LOëGèɧ
+û
+|¬nØ-da,Ü(ŽÆ?éCuþ/4ŠÁŒ·hi¤®c­x¬RÎõ»bm‘&L6õ{‚ÝE\
+¡ÎWõÄg«?“m×gnxiÍnÔ« l»œ {­Ç Z½FÁj(˜½F‹™xM„\i3ÉCZë…ŒU˜©]µ±Æ=µzÕãÌ¿WCÞZ´ib0[Ϙ֬’K0&¤‰Ù³ÄicOb_Ìè Â¥Dh…_‡ŠU½Èµ»ÌØUàû2ƒª%TMRhuY£Ö„÷»æŸËŒ]Ç~Ø¢áîý}“¾¸E#Œ}Û¤/nѸËפ/nÑÆÝû›&m÷€…†ñKî´]s’fvTÊ‚…Ü‘Þ¡!B…q¥ÑÁÓDW‡4÷ŠéŠ›¯{£PóØp!)ß[ü‚Üáããn§XA*ÛÁ
+`VÅ*j£0û^Ås¦;¡KÖHzìBƒ~J½ÃêÑïbg£ÇâµkTDïøRªi(ðèóÖ?Uœß©¨ªnªÈ Õ¯}ÐÅ·"”Ç ÂS•A+Ö~Çáw­µádú:ešãàÄŠý£É1œ{K‡ó4-bn`AHó·GP7å
+öÝU$ô†Œc"SÆ¥Ϥ’omÔÀ $À·Ÿ!H®»·®À`æy)P7Ø?œGÖûÚû™2ÊF0ÆÔ-¶‡
+e‡k'9ÈIÚˆ˜tÕ\ñ\ºwF¡С^óÐy³(qâÞ xHzx4+ Á ¥ c+€nw佂±;â²e‡`à„
+"xÿÜqÛ iŸ÷
+Öü)‡ìiòñøêðÄê!™Õ‰Ál=c ʬKðxç,Awîã+
+OÎÉ(/•㌸ølëórÄ@
+úZ‹Xsç™6;µÎâà€`UmóèB/Àc¶=C­”½ƒ{8Îåg)^WY
+3B‘ê\ôn‚Ùk"ã¥71E½*ƒpÙFh¦c
+†Jųمþ[õóÛçGáÌhAóUWÏOLðâP§ó,JÖºŠL“hÜw|Rû´ïy<ÖFSѨ¹¤lŠ2aÅ{AQõç·Õ<Ï’bM]VM΢ËaŸºd¸1¸¨kd 6 ›Ã1,Œ…¤
+H‰ÌWÛnä¸ýþƒò``üà^R"%шºÌÎfgƘön,Cã–mee©¡îžÍäësxÑ­m÷8ÉËè¸Õn^ŠÅªÃªâÙŸ®Öɦû\]+ꑳ³´¯Ê}×_z¦Õ{×4‡Ý¾×Mo>{Œ¯(%ïâ7ðתßÕ]{iºLg¡g¿ùPß>tM¹ó~ª÷¿wwwçÞ›st^×û¦B÷uÕ—ýíÃפï»?VÛÍÝù°8¤eåƒø>ýQ±K&¼ä½P¶_ÊÝ®þ7ºYÄÚTwh7u{¯º]z¡Ç¡‰Ç:~¬?U»ãÞ•ðX°’2Ö
+s)1.ënU»¿ê»Ûj·K»¦ëw—žjÊÛß ö*nŠº©°­Çrï1³ÉäóoÔ¡n6Ÿ+l8#Ýܘé¿ìÊ{¨hþ×ÍÑÍ»G´¬«ýº@¸6Túþ﯉-9¼ùíSu_»Ãÿ8w’ûnûXö¿ëé
+¡åþá j7»Q¦ý¹”gÛ¾-o}«IÑ{ª?ì¼ë®kF±Ë®Qºk6­zü÷±Æ•™Ð~l­ž®ä¯„HðÝ­‚Ñ/¯€ÎïYzZ6M}ß—Û‡úö¹žéW²}ÿ ±¾>~îšz÷8ñiÖrUöûú¶©Ö_wûêñ”4m»ºÝ€ˆ&èLÚv[´½õC¹­ŒÌýCaF®Gâqú..NÄÄ ôT;ëÛ—›á…HÚm·PáÊæœýF€çžÚß%&4¡
+Hiä´ £L?>0‹É@±ÈX>˜¯ŸÀçÄç¾ðC?b_‰¯€ÔÏ€Ü/ü" $~ ˆ $&f¢»i©b&øÃà B$ƒ$PAd@œBQŸœsÁCñ˜K®xÊ3žóBPÁ =\
+¤S!E"”HE&rQ„{ôÃÀhB)…ô¶h@!š
+Š~Ñ°Xb,–‹åÆbô”ÅÈi“=o1h¼³Õ+´Ti©ÔB­#WF1£u“Fµ…rF=v¤Þ¤ õÍÒ©91NZúÕ:˺K;̺L;-5NƒÛœã¬ë´ó¬ûà@b}$ÎÖ‘p¥s¦v§u¨u©vªu«4N×–/e¢‹#ŒYhɘgÈm–Äu G„a…1 Ã$Tafaðƒù‚+AÍ0Š¢˜D2J
+±õ€a¥æ¥f¦oâ®­ „‰R‘ail˜: Ê¥ZÍÚl8wQA¢ÂPØ‚9øÌ1;qdžKøóSóôÜ@2;:óÃ3Ÿ)í‰HýCòêW¹Ø
+ÀÔ
+Ðu€­¸IºÐõ€®†JF׺2ÈLt*LM£ F\i㻌Ä\–±‰{L‹l;Ï«cÓæ<Eºt8ä@2K}CºË‡:×ÕºÔ‘‘¹
+Ôw•¯¥¦¥§üB\.‹b9"1îаy@¶@Nx¾@±¬B§ä<^ž¿¥$î‚–.nu¾»¦ 5˜ÊØÚmÜ_œÂÐíétïN¢=ˆ–Î>:(嘠0UBHq‚,Á8…½sØ?…G8)†&!$qhçCO
+óå~Ÿ½ä)s›Êž¹Mññ6M½ùeŠØÛÔP#¦Óei¤-ŒDH6Ý™æ·&Òˆ¥“‘S!q4#Q–p‹(BLŽƒœâ@'8l1xˆƒÎ!ÞÇѧˆ]9BAjŽC‚à#H„02'О>2ÎÓ‡}þË ã]öøIˆ9ˆûrYÚä´U^²Ëh¸±Ê@»ìÿ$xú¶Z3õ”)øÌíMègKu°ÕªÎAúàÛЃSˆ Êtp TdÄÄ\SvêRUÇKí£sŠNL:Vë³g#™ÎšÂ ¾Î&.µè4ƒtCLæIŒ²Æ+'Üúj8ŠW°è9¼ø8¢Î/Kž
+9TB‘%Š@ ªXJUÚ?à G!ÏJ(¡ŒŠD#¦(²mŽ¼›"' kŒ3÷öËnGn܈ÂOÀwÐä¦!þSoôÈU››½0™‰adwpüþÈ©*Rbw«{ºgâXž–%’"¥ªÃ¯vi¿2ðÁû¸TNˆRšqä:Íó>byO!#m¹™©‚g’wöüºhu‘+<ÏNkÙuéÀ'æÂ…myd‹&«îض#[¸/ôÜ^Àµzãñj½Öˆñ×ÑZ¦ú´6°éà0Õ&±Àm¸›Zó¸šZbpkê{{
+N¯lkø¨–e™—i—ŒÜÁ„"*ʲ@lZæyžæqÀÑì)¢Jñ 1 \Ñȵeš§i‹—¨÷2x‰!7Q·Ø o‘o‰·DÏ[!m‚-ûêÄnJ>šÛ§gÓ$·lÙ#'vÆW“Ú#ƒ·€Ú# u—-Óg»«œ³Möl‘1Û£ekdcœ³)Š!Æl†–·+ÚŽv‚yÇ÷î­ÁÜ^ æöµÁü7œ=üZóéŒû#˜óÕ`¾=0_ü7óO¿ÿó›l#Íß¿|~~úöí ½wO°y—9˜õŸ.̲{‘Û6å_ÙpB:Øι&ÚCŠ©øãŦ5ÇÍÁkã<¡ŠÆFÛÚ&¬é.|¹ÇîøßA¯kîù
+ÜJ/k‹½»óÎ]útɆÐiä€5¼ÎVG”º[ÀuøBÚ…íÅÜÓ‰_wrÚ'j¥õèÉ°®h¶Á:£+b»§S~J‹’Z—öÁVÍõîëgÜÚEž`;m¹9<OÛ¼ðäêmýžniþ¶PÒi7˜pCÛ5œd7¡ý$‹ÃbÝ <ï¹Xfåíd‹&ƒ!\ŽK4÷èž®uáƒÁbÅHI爲+Ï'û•Ïýò
+pN*V/ö1öMJÔ·Žê{ûÊ3oŸçëV÷æéöC¤£ñ"ºl^ç'øìóûêÇ€oÖ¤¦·ã©Ôù%ÖpUýEu
+,{ª´£x¢p$¿I\l“­d*éUmZ4gñÒÿ”c`õY]VbEV`y–cY–aÑ8óøÂL>3—O<²=:1zbN'R'V'Z'^'b'fµƒ3—BîOjÈüN/βsÛLòÂòBó…ç…è3Ó«
+ë7°¯Ðd‰íÏél¯vá¾BûŠë Õ¦¢žšË+FyùŠ'†ÇæÌüNôÞ1¹·kfö‘y=2«lé
+5»êÇ€ÿ³¶·K½ÜÑz‡T>™oÒô‚`=ÊŽ».¨ßQWKñO:S<Q8’?’«¥l}˜JzU» y^4gmÖÎ>«øgÈ곺¬”³Ëg¹,™Z‡iEð”…}…$Û9;[²f‡ÕlÖ×!Áåà>žÈÑrþИr´0¥šÙšx7¢=‚üê E(@\ßQ\Ñ» ùPw¶°åVÇü:©«·§»Ä|¢–ñŠ†‹êwPKw¤t¢x¢p$_ɉÿl–¶%¬^Õ­ï¢` ˆþôY+eEV`y!›£xe©$½Â
+7veÍèYðÒg’,ä˜Y1bBÁAP”Ê(ô'Ü'Ä'°W ¯à]»ut-‘™InP+ÆEF88“ám^Á­+ж›ðZÍjA8M1¨ ¦ +¢9µÉ|&t¶±Y!³ÂeÞ;¢2|[f2(‹Éh›2Xºe›Ø|³˜O ‰%x!y Æ7ao –¶Q˜±ï«¾JG‡2ï|üWÔ·HÝÖ,«}Yjï¢^nÖ|*u~IOW4^”€Ë Êɪ~Wݙҙ˜zT†Ÿ 6ùxÅ}õkVº>ÚMíRi^5­W «€Vjå«n¥¬BZ…¶
+qê*äUèËl³` Ó͇OÃWõ NÚ¦=ÄØ„Æ· nÓŸÔ‡Oç7†çÖÁËÅØBlíqӛǽL:7Álra§ëi‹Ò·l:`¯è‡&­ÖGwn£g{HÑècRÛ5h{ÐÖÇèå4 _ŠÍºêÛ;`ôaRú¿øOóó㟿><~yzþ&†§Ï_žË¥?5øùùùá·§Çæs¾Ô Nþ¨ö/ch¼´G|š*ïü²÷Ëî_ (^Q(’=kádäí®Ë•EX«‰ÍO_ð Š ·¹uÐí†çq®Ú‚ë <oY™¬UV.oa”u´˜›Álf°†„ÕôXÕˆÕÍfÉóÃØŸ¯È38³&ÌóÖGI€¯îtÛYúÀÆú.ñ·¦Õ‡S}–·w hå¨q‹ŽÒ8XƒôÆÆ°ŽD¶'ÜÑIžrÔî\Á›ÃÜ§0÷%ÌaIO¶ð,ùhòɆò¹Ø¸4BÒÂu=|™œ:ÁÒ{Ø?í v•…£“#Cq@Sp”ð
+ÛŠ ä$† ›ƒ6Qºc짪C¹…ƒ_öÎAÏSð<–—#°bVbuY=kÈ•YSÖ¼*=Unœ©d+a)*¸,¤ã#ž(©+RÛ)Ô_ÐpUc-uüßJÓ«4«0¿¯îpyYê–F÷è;÷8ˆa÷ˆpŽ\ŽA~áÙ)zöˆ…ÝŒL¡g3XØÈ
+¡êeY9„ª©X¤Z)5l)QÖúÕJQâW$JF.A–Ì%v%“”Ùd¬èDj‰B()× ƒÊõAÍäV\‰×ûÌÚ Å„X+·¹8®G`NŠý‰¦@ 9ÕÈ 7¯0C–E@SƱ}°‰lc‚7J ™F!ö¶Yp‡=N¤3øˆl —½OT®7⪔µ}¥ BÆJ•c¨ Q›–S±ÃKïŠàË(ù9’}Qî²ÔÙ%ÿ6©ÝË+¸—¥ÞÒù;¢›Ÿ†¯J«öÒÉ/ª= õÖM{@îµ­ÇIêœn N‚ÿûå²Û¶ÎEá'à;h â,2u):.::ƒ @‚ ƒzÐöýñ¯½IÝl9qàà¯ùŽ"‘”xÙ‹{!.LE¥«\eëJÖÜô»¸¹{OÓô_UWI]Y¹«9c‡OÆúèœÜI”J›“Ö¬Úm×X·÷èÕ*W©z§UôíkLí½Ïƒ¨×æÛ¨‰„å¦ùfïúýÃ×_÷Ïû?ùFz|zÞ·¾TŸ~ì÷÷?ª§r«’Ê}۷ѵ®Ò–êV°ÄJH-°Ó39IÉ)ýhŒÆÀµ+ü„ó‘e1+ôêRସ|–<îÒ9ˆóªÏ;ä.ó¶’ãdqDÌ—gòJ¯U8¿ð€q"'œž‡¶Ãî48Ðwò8ì{û-R€†OÚ
+"<È^v²•‰*¡7¬Ø5‹lËJXüHàd‘°ËyÄâ¯Îå´­zñâãÓŽì¤K[»³CÒIšM bX Èð¸vÉþ£'Ô„œ˜S†q.ÆÒÚBê“ÀOSÈÒV¦g]è9Ä{Ë *{Í(T2šÂÜw'º®k™@IjE"µè »C
+HiÉŒm¡
+­nÚ­ä$gÀèMmJ©bH*æ’MФ“J!M+ÒãkÚ&‰rÎ>_,ŸtÔ,ñ«xÊíYŸ ˱dîYnYÈ+kª$§,¢$ Y8]–KÖɾè#)£eM$=$-$„²
+ÚÌ/8¿M~ÇôÆïÿð¦ŠÛ›*Ò¦²ySAOò*_Ü
+d<åÚáßÒ¡º$â‚qòr…P¼ç(¯‡Óˆ£[ýYt§å¢}t’柸IØÀá¡ÓmY¡8ß-OÁáÂåÚá¢ôïC¼ø¸{-!òŸ¤“4›Ä!
+úYð¸vÉþ£'Ô„œ˜C}œ‹±t…¶ú$ðÓ"
+žqŒe ÐŒb$ÈjAS˜ûîD×u-“@"À,0@$ E¡Iî¹)•š6¶Q´¡õÀÛ [$KÍ€1ЛZNSÇD5§ª9QUIBxhEz|MÛ$Ñ4M¡ñklcݨFB†Œ¿Ã+Ç¢H©¢‰:ª(!Hæ¥ )4!Âøà‚AN§DP¦ãkñêèƒ÷ÞyãµWЧغäœwÖ§t5&´C6ÝØ`½µÖXe%Ö¶Ã
+Æ°Ór^£·5Ê“?5S¸Uß©]TRo½äÕ6‡ïˆFn×—;¤~ó¯µ9|‡«ƒÙlPovÿBõn§z{?Õ´¡tÞPÈSŽ#ŸýW?¦é”só&Ù¬[6Ìü,·ÇæDÃA»¥ª¬—Ûesjs~ƒqA‚2Õ¸tR{]j)½ó*ª½ìúõÚGöÔG¼ñ›?ºÐvs--³ÍËŒÏó~|q+ºþ²üõ~¬°'ÅÕ&½@sŒ(Öðp€_áVØF°«åˆ*ȉ:Ó1çÌŒiGÿ)Ø‚f"ßÎ~ÔOJ®4ûRr¦£7ØŸŽµ)M6•ŒêhUɬZ6«dWÙ°.,+›V0»Öì[á\[×ѼÎöui`-lÇÃXÚX #«ÈÅ
+?LF¶a+ë¼]YÙãnÐëÚÌXŸag쬆­ÉÎ
+ò³lg쬆;t©jt„¢YZ…L¸gC•WvÃÐ*HèdhÅÂÑòT^¿§Ã8"æËC:ˆüçUü+¸1_N¡rˆ9B fGØL=Ã17ÒOŒ’5©Á4‘\D Íž_ÂÔ•Påpe4£JÜu‰^Š_ŠàNp·e^f
+g
+h?5…56…6÷ÿØ/ŸIm.Š?Á}‡ÚŒ”lZ6þK4lL”u”U£‘º5šEz1Éû+Ç× •îojñ%*ŽÔMQ`
+|}Îï–åxbçœ9–9Õ•^Öz^í
+Ê+kK~^ôó²Ï ßa鯋_B«ÂLÌ.`«tÕ {A¨nàØ4ü@²#$t±¿˜B§%±/ŒÕ¼²Õd7Uw:¿øƒ”“ÌðÔÅ#””bª.Ñ 'Lë{JüÞí1àcÀÇ€ÿ©>ñð1àcÀ>!/>…oô;vÄE<9w±#.hRò¿Ò‡O×_„?ëÙÖ”ƒ®²N¨íû/·Wuþ)÷Qkž”×öàÒýóõøJù'`Ñ8EH¹¹øàk\)ž¼“Çð$ÀKÓa'¿%×¼+-®÷î²<ýû/ÄÝÂH†_̧ôúüó·ÏÏ__^ÿ*ÂË—¯¯ó¡Ÿ.?üöúúù—çË—zè"Ýtx”,<c¢>Ò”¦qŠS
+E4ï‹ Å6k¼‡èô«ø¿‰Þ|jx›è­'î4œ‰Î¿z‡úUÔ~¸‡Ê€þL¥Žž³e½À5²L#M°¬YªQ»ÉFb,nUšEp½U±Qh44êùF®ˆøŸmdéEªQû“ÛMdQù'¦F©ÑØ(6
+†E½è)ÿaùF®‘mdéFj‰Í{n´£º„ÌVHî,SeYŽå«zÖÀ
+¬yY‰O¢8-O_æ°ø‚bé*ò,WåY=k`…,Ÿr“²%V5âúÊKåSUšeX¶Êeˆ'«g UUž£ÜcÞ8{ê<—bíªKÐJ°Š,˱<«¯XÅ•‹/ÁQ˜—'^RÂÙ%4˜Â‚-<c
+3¬°P誉êÖýNþJn'{%ΪñP¤wRWÚ#¨Ü‹F±×L§+WZ6ªÿÕ†ú+ù+Át©Æm‘½’¹’ÞIÍ*¾•î«÷ x0G{Ñ[NzþŸä)™&nas×6 i<Ç"y4¨ÃÚ €„dŠH¨Iå‘XÉ¥ñB;¬rNHH¶ˆˆËkÍ/ Ã+"×¼à"ÎE¸î<’áÒè`Ø‘­; k=2×"{5­ƒÁ$,䈔Ö©m‘ÞùÖÁŒ&aaG¤ü€´÷H}‹ô×H¸¦%À: Ë<à‚'pƒ?h¤\@¢„uÁxÃ;,øC#ç:ø 
+0 #20$cêaPF5°&À€„)™¡98[‡ «ay˜@¬ÐÀ¬±‡EXåËœÀª`¥–ê`­=,6ÀjGXî@ð`E0cSv0ç&`Ö#L{'H˜¸‚™˜:ˆ?Àè# -HD€BD‚C6ôȈà#!0’Ÿ
+qh‹ñØ#&ârDlNà ‰UˆSƒXuÈ×~ÖEÚ2Ú¿Z°ÚòR¡¡|ih0-š´Ì±Å ò,ÇòU=¡Xr¹ \2Ë&ré%;ZEÊr‡²©*Í2Y„³\gŽk­¨gýM}µëHŽ[Ñ/¸ÿÐÉvÒ(> '¤HŽ G Ì`±;ØõÿÇ—”DQRMÕL¶Ð]]­÷á=ÏŒ™+ƒUµ¾¡ò
+þ—O¸6³Ä½*$Ç}Fsù˜¸+ í#^H>¹d“I:©$ñBLv€V¦± Ïš% Å‘×üÀ‹8/ÒÀëÎòBR¼4<{€6'$–ÉÅ#ÁX$D#áƒÎ>$=agd d‘…42‘„]
+Ο
+¨É
+Ç­4÷ÒÀÝ4·ÓÈ 5#wI^ÿ¹J
+„1‰P¦Ñê,RšGZ‹Èm ÆiÌ×j35’^ÎzžóžãÌg9÷™zýr/e+÷ˆûå;âÄ\*bž…
+_áê]^¤ÌÛŒ¹GÌöÎùÙòÓy~€#fùYñ´ü¼?óؼãõýno·>±#ÜJ~ x!å…ûá€~‹Òõ%ÑúacŠëS.L’»‘á”{ÏŒÀ‘ÄÉ/Ùœ7>?‘â'±å ^l<j¡À(‰¼â-ÞÄTÆ „ ìKÝÙw”H½É+ñ<
+e§!¬Éͦˆèˆ’áT£ âÝ¡µ6Wyá r‡·¥ø¶&§ËÓ0 I5Œï¨G¦¹Ê •«ˆÁª, ÆR–»Ò@`¯Ü㩽LG†K!²’ˆUI ^P|öJ Õì±þëaÍÙª#l|_æ /ƒ¡89Ä
+‡È‘#ÈŒx’Æ%;,5˳] Í=,Òv™¶ u“ªX×kžºuÁI.0ÿ‘Ø„Uè¦h·h©m5
+”š%¡]Ù2F7d ¦Eh[ J—7ÝËž'9Y
+è!)bG"d„Pf¿òœK¬É›fK“]DŽmfȦ½ÍáfÎÁ–貕±Ij¿2§à)Ç7vRÌZØ[szÂËa¿Å³ecà å«äãò–ƒ×ÄÈfã¦þ Îh‰o—“[`Ÿç
+0
+H‰ì—I‹ÜÈ…Aüm íMóÐbš^7½ê…1”1^t-Üýÿy'îÕX¥LgÙ†÷0Ö—¬THŠá~ç„”wâþ[>ðÿúâ?B oÞ•ÏâA({*sSúº„º}Èë’Ó™Äz:ÞP»©º—8þW–›Ê7”Xb9y¦xCá–„ô7änÊbrúªPRK#-.y<3â{2ºS1£œ0Ü
+³e0ÓNyTTIeUTUMjÒS©µÑV;íu:ꤳ.ºê¦G=‰u 1Ö8ãM0Ñ$“M1Õ43šÉJ¬"mµÖYoƒ6Ùl‹­¶ÙÑNߪœvÆYçœwÁE—\vÅU×Üè&ôTyí·Þyïƒ>ù싯¾ùÑO&t0Á|"ÄB%ÔÐÂ&Œ²Š:šh£‹>†cŠ9–Xc‹cœ0C*éd’M.ùRL)åTRM-i˜a•u6Ùf—}9æ”s.¹æ–Ç<au¨¢‹)¶¸âK(±¤’K)µ´2– kKU]MµÕU_ƒ¨±¦šk©µ¶:Ö +S5ÝL³Í5ßB‹-µÜJ«­µ±MX×jÔ£íèhVG\¯Ó5Ö$ðº*}UæšÄd¯Ê]•¿ª ¦pEñªÒUå)‹þωÊUÕ«j]‚ÿ<Ó¹ØK­~×ãçÿÇ<Øëó²ïV;“8¹XïVy)qvÊw*=—xyiV¼Sá(ñüÂNþN¹½Äñ¿Ï´KATžðÑôm’à3B >Sá6žó€ûÄ`Dvä`J°DØ“ÆGÂ}‰f#Œ«ù*à`N–ág ®ÖÛôÃÁé,üÎÀõú7w§Ÿà„#ü°Áa2ðÇ —„ŸõwÀ5ûa,ÔÀJ5}¿$ÚÂ2à³p8nïÂäàÀ>Üß‚ðeX7Z£ŸH €7ŒÞÝL°ñ3Ï°tô½÷Ÿ…wô°|ÄŠ’Ü
+eg¢â˜¹¤ŠÖ´Ô Õ¹£ÏK¾‡ûDD(´ò+¢cš+@JÐLXK¥àˆ4a.ˆ^™XT©0jšËC½ ‰%¨y**Aõ’‰•ª¦'ªÞ%h⦥rDÓ@…Ä¥Ô‹©—S%
+ èÒ}Y„Õ ®û"a™•Û}É°äJpH¢Ê1eÂÑÛ¦lWØ°ú¤àÿêW‚Á2äE›àt?éõû ß<tùÁÉÜïíþoÞ½º]ù§¿K§î
+Ä®„ðÅA–£,Â,ÅY´šlÓR¬íÁ¶GÛn{¼í·GÜr{ÌEÐ|H»”wålNšr¯¡ìk)ÿöì)J‘Òp¢DÌG!!ߊþ2f£˜ÌšXE®šÝ°¬.\Ì*»ŠÒà?ÅŠ¥Ê{‰ùäÚQo¨Iœ\¿E¢ï¾§Ä÷}Üö@Š©Ä–x_Â]h¢A¤¤´¼òD‚'Dñ+Q*˜2Ñ~afŠ -B¢SEW,í˜+ù@µcËKºŒb˜ 1a—æç$?Çø%Äs„ßüßÅ.¿Ó;åw€gAÏ }ÊJ f($f I·+ŒG $FC‰±´ ‰á´
+ïU<•uš·(½Š§ykb¨VýºÉT„\v•Õ‘ ‚áZˆóB-³¥ÑnbÞAð®aÙ'øu#ÀqIò”ÏGÔX1hˆ­˜Šq¨èuE+±‹èÃ\èoäÔÏGƒFÒ$êT§&Ij–&’åfùYaVœµ‚GìdÛDÔŽÇxд×(»ÿ™¥N¤¯ÊœI¬§ör×%nýxSþ\âÚ_«ê`‰Þ¼+Ÿ…òÚÉ_B^‚C äŇ䣡“Nœ$©¼úoÊ~prP’þ!Þ¼{}Ãò¾HB~Pfpê"…åq'¿,÷_¼Ã^]§Ô`ìÅ+gíÎï8¶xªÓ~Ðòbt
+'íŸß±¶;!¶Ë¸Ðy“wïƧÇß>¿üôáé_¾P>|üô´\úuøåϧ§÷x>Η“ü[q~C¨‡òHÓ[ÀfóÖ‰Ú支 7Nv ƒµø„ݦõ+Ú¢ÿw¶»`^^®¤×7ý¦·gãmߢW–GûAt¯`´Ïœº`«’¬êõ=òÝ›a}+Å+]ý0$M¢GòãùUôRþ
+?ßÁ›’ÍI‰Ac
+ÛB÷”¸ƒ¢Šº¨¹Ü­„--ÂV•¸vqë%nqDŽÀÄQ8ñËGlñ¼æ},—8.D&$s\^ô¨¤ØðÛ' £…rŸzÈ»@;Ä+Aµp÷¨Kÿ8–2¶’ö-]¤m}dhäEr©‡;É®ÜWˆ’ã< KÑIä¼Ká^MøÀXV\Ô&)g½- ê¬ÝBñÌ ¹‹EäÑZÆHË£ÕY‡å‘u5)úp§z|`¬Ü3àÍŒTqŠt’⃷=—”Ç.©²úd¿¯,5q £M©Á‹Tò“›F¸;™I#? \ø馓Ætš‘ÉXÕ«â'ILç0mxgš²–EËJxtÿ{Ã8¢ ç7¹t‡ÆøfD??¶Äšs1qSäŒñ÷Æ]öócåž°“AÖšœ>n
+rÙg4vNÙE7¹LbÏR/BO2/"//_å=‹w"qWÅ:í¥ý]a/ùe· ›â„Ÿ§IMyšQëW6$:›lÑ© 9È5—ŠeÌ)㢜óÌþ`…iÁ³™ÍŒ 68;ªÍä¬æ¨fÜržf\=ÓAæbe—SS¿Ú¹jàªec“ÈyÐÄ—,
+6EŠ%Ù$Í`é'ÑƬŽw˜XHÌTÈjŨð2ÕÕ£˜Z´‹3ÍÔÙfí†jð”ÿâô*~G¸ ^zT³ˆ×ä›Ì·QåËòëmÔ½ïrãP·~øèñ#NøÓµ„-ˆ_1‡&53v°–™dl.2fYÆ d3 ™!!S¬dB–‘ék'eR– fs3Û\kõ¬½c-~UÃ:?Ö ²¬] ['mªS·ªo±À‰Ä­,q"r›ÌõBÇR§rîÔnåÜÅ«šWU¯Ó=ŠômâWäO±ÔT ì ݵ´}#»o`SSFVGUZµÚ¼Õckñ¶$Ö Ó°¬ ªÒ ·Ã_®ˆªû'Ý`ºKÞ£.O4æ¡.
+À˨ï7Õ;a‘0¬ d£v3¯ j
+Ûá
+žPü'4b#5¦Fî˜;– …½:œ÷8}¹Âö¨òe8d¼ÉÍC•¿þ!Âû¨«Sñ5ÔáéôqÔ+ƒÿœðš°I˜˜cñùšŠtQ9>ÙX¶D²D°ªZ¥"•R,SU¢D DžDœD˜6M=ê•È7bõQ"<EuŠÞ4©
+³)K•“MD6á`©P¬Mv"°åyŸÃûTÜ'LœÂG.Ì…âš'©­–n˜‚m åÇŽ^ ú#tÄé‚IùiG¾b>`¹•º´X…ó{}Œ:8i^Aû}y}Âaº<ñ*?â„?)súôsþ]¥o}ù7®Ñoi0:áï0¦éÄ8¦¨Ý‰¾ò'§OFóªO??3$ÿ—î
+±Pýtí<JÃSw×v[ŸAy.Û®?+i”j#F¾™T˜˜\˜ ³pðRYQIžIGH¨a¢#0$0 f@ÇÊÐ|(õq^µ³Ça1\Æ-­©“ê«p¹
+“ö`냮¾¾ˆúb¦K͉!’½ƒ©ÔhòJ@ãÐÇm ˜â–ìû¬}|PQ…£g;+¡/جÛ
+iGÜ.ð;Ün‹¤ ûÃìÐ{ú­)|ìå‚}àÝïXkËøǤçÜïùmÖW‚N•˜“ˆ -Ú$Öi%Ì$È$Ä$À–\ZXQµ¨Z(¤ ã ×€˜wÑ£jŘâsœQáWX|´h,Æä¼!ŔҔršQýWX
+­Ð^Ù¾fBµÇ
+×a70ç¡6_WC nÇÏÕ멦«$‚¤³œ!ð9|=‹«å ¥!£$¿ÊÈ‘™£„¥fÞkÏ)vd¶¾²œŒžS3VÞÊœ¶5²ÞEÆ{Šxsç£Üb,¶5ºŽëÌ¥0Öì2ˆ‘CLwå™dY©ÆÙÅ™E£–ß©ûƒ›‚ÕÑæ%¶Š %/t…ÙsM¢Z'Šþˆ#81ñ&c|¶´˜zX“ûÖP^™Ö.túðµüÌøùa§ûHÏþ‰ÃŠC#ñ{hˆ­ŠXëˆEIT-¡ºœˆU㊢¸®rEY¶uAúBFÓº¬3K)°*yYôÒ*ï»î,?šú%2u ¼ë:˜pT$íª 6,PlÆ$T<‹¹b•É©Je‘Ë‚©E£ª~TBe--èz§Á¬`Wà8(ùý  ®_ézÓQ'=¨ÜˆéÌ jùxvƒ:cÜ ÔÇ-ÿeÃó¶¹Ã¢#¸bOÀeÁ á
+…ÿΩô›¯ÃíPûãÃpзCÝuÃCAšÇ„zÜíþ7žãŒ=”…¬&˜5 " ÄI‡Ì’aÏBDɃ̒
+åÓ æ Xä¨ü¹e6ºþ{Ä‹5Ã0l…c´÷*¶:uK\¶zð^¡P×LhôaS4ü> Yïк'4]° Z{@›wÜôMÖ8ã%Áú€š\Aç§+r@µ@O@ò(–šƒs
+ª. Dò…Œ™ÆX6+H?1ÈW¨×º(!c‘ºÈoïéüTŸ.æL½Û,DÔ®,ëFD‹ýÚ §°ý'Þé;|±`à4©)ÂǿŲ4½·'F:²¬œK¤÷˜¡÷k¯F¦7ƒÛËXîB‘;¼¬¶KûZŸ$‹š1!&ÖwÉ8-‘@V5ȲæQ¿«yÜ÷Ùœ‹–ýýѪ­Õ#kðö8¡“©ÁëÆ8šDÒËÇ‘+7ee*€…r¶$®²¢F±RÖÅ]Ä’@Ùm”ƪÅÂÁ@[ÑÚ­ïóÐ}b.0?.†ê¨¬«ÆŒfh׶QFš$ë–ç5C+*vk¹«zNf‰v@ Òž'A€%blzöÈå2\ e{_(±J4Z÷Dpt,X°n‰è/4‹ôŽñûó4Ä k“?ÄJk!Bþ`Âé:„ü±¸g-Cší¿¼—ߊ·ÅŸà¼Ã¹)$>ý—.“‹7 …P—RB°Ý´OKê8øíû[’¶ŽÎqÚaƘÑ:ú¤­­­µÖÞ]Èúnš[ûye=w¥7{jB? ì•ÎOl—yûÌTÞÖ~‘·:¹Òx+”+‰·JY
+o¥ò)^rDo›¾ó¸RŠå"ïEÄ›7Ù–éVeW÷È ¹ä©›´ûDå³ù®ìÈoííÓTö5Þ”Ý0Sv­ã˜» ;ÕØZð #–n?L°pHéJÕ ò ù/LÒ­Á4½ªt$ ›¤+†4Ì{WtíWÐ(tÆCt7=kE59׸̱Ô† ê•œSÙ¹qVSsræ0/KÌm¼kù¦”ß^í•œãÇZÕ/¬+°¨ïà)š@¯~wSñ’GÂ×lw"¨¹‚6Q]ØT޵”æµË¦ß+›cqÚ7gy
+ñÆ0¥ÌµîÚ½°)Ý™øR©í¦æ°žîZº‹Ìi 刾•‹ ÀÕþZ·q~^\²ÀL#AU,Õ^ãM 3ͶELŒm§]±-œmN×ôڵɵÜôÚcr}›¼M­w–ú…RqÛü(rÁÛ©'Zp~J] §9ÿu–œLÁ´xÏgJ¿Ò,—½‡D1ÊÅR•t 3¤,š{|ïp£¹j%ä•„XÝã°0’s¤qçGÅÎxIñ6Íù¤Û17­Fnƒ˜xàž*W3¦ÈIži®ÏõÜøÔ2ö3
+ŠÄË3Æ×͆†Â©}
+­O¯£¦Beœ¦ÄSó5»5~5È¡Ë°ÀV”“m«êÉÆš¾Y˜jú¶5¨ÁÈ3±mæðÕ¬G2¡§FRe;ŠÆóÒÍÜ<.X7c+Ed˜¾í|›²G%{ç9YÒ‹ÜØžÇ=üÓN÷° /äB÷òXò•OÂ÷+¬ðWT;ã[TÆøÕ§¡|‡öþÚ9çu‰'è<O•I‹Ð2¥kc}^ô¥, iO•ƒëã8ü‘Üí+Aœ5™ßÆ;ù/lòu$QiW
+±wŸ»",lÒy£ð‚ØiÒ½ZIЦê쎋hP©ÖvYÁÆU/l²¹-1¹Þ6Ùä`ÅaS,N[áæ,O!j{±ºîJh’À{º êòL¨—CÆa×ÕPÎ~‰ãó-Âoâ¯DÁÙÄBèùʺTÁÆ;û.lªÂZd’¾m´É‚Åb3f¨¦ vœ]Ö™M.©šÊðQî6i¸aª_ªê2Œa¦Éo4A²Hy; ãÏ;{=S 2,¤/F(—’p³­3¬Àê‰7{7ðÔU`d¨9a8Q„K[!vIv<œ"ù
+j M%„Ô¼‡1j¡'2ÂÌA–?|FQ ÜçF·¸fy
+TT‡=è= Š0c¦ПD·ÝWGÝû§á¡ßïsxíÝ|j¡CîÆüSß_]+\i`(" |-ßУ†•m܃F$²'%6'ËÊS øÐTVze1uƒ{°ì4Ãd-Ä^;9SÈ.+ZG1£k%ÔäÂ^
+Ju¨©Ü4Þr‘^ïòöšÚ;$* £Û;å.gyˆz¶L®R†`_¯,òÈqdh%Ì€‘ê8Ò™EsÇÛ:ÌÝÆgªÒ)¶u8Kìi´Ý ŸÍ˜.³,êµÎÍÙžD;0ìåœÚL òîY„µ¥
+†™(`÷ Öy©B¡ÅñXù]Š,O KGߊÑ}ÑMâá7EÀPxï× º·Xè£Ll¼s­a¦¶„Ѽí²k²ÍéšØav!°›XBLn“fóÍéËÓ¯~ý›ðí—÷¯¿þîÝ»7?Ükœ4þö«Þ͵¼ãfž=ðo¾ÿûýþÃé«é—:~ùâ‡ÿý7[ç³oîï¿{ûæ5ëó—Ç/:ýÈ¿£¡þ½üÀà·üñ ŸÎñü»óŸÿrœ_kîNÏb8HÜÂ;£8E”Ï pè¨ÁØøÅ Œz…:¼Vø9l}~φ¿?˜t›Cæ£vöMõDv^,…³èïrÍs½€áƒÌËë\öx¥ï³úDè§Ã}"]`nmŸø‰ÈU„n·ßk"¨ðÛ¾9‚€¢…|åžy¢ç§ë¹^Ž¿/°-JÖZ
+7ÌT¾º‰ _ŸjÎýpsüËÜ-UsîûÓuVW {þW´·õüô×Ó7§vþìóóË?òW¯NÊùª6ÿ_Évô L'tU¼.ÝêðUí•S!Í;¹´Ž¼¸Bð¹}a_}ŒŒ¯¬J¿?¹±‡I©f>ixvWãØ<A¿E+A²á yP… QðÒƈ „¹›/šÙÜËYt"ï¦Èa‹³4קAHÌ…Ö2t#0ð{QcïÂXÀKÿc?]†ò¸_X.<ä˜[.`ê¦P[åãÈsÊüŒ#¸‰ëœ«¥ R?©ƒU:ÇV%”EDÀ' ¥æRîEn¥:¤¬ú ”­RG¶(5WúÓ
+˜ $ßØ8Á¬‘CÞgÎÅu„YO¸È>7 +$¬”àFátÃ:àäГ5l½žW.ÓœþXÆZ}~„±
+§“¿ Ÿ ¨°³-ðæ«'Ç»œž€;Ì FIìØÉZìYbì¸?åØ•÷º¿þ #Ä¢¥_—òÇÊåa!]ÿ|™3\Œ˜Ì‘¢²¯‡]½øÑ?µ0QðEchüËyA›§n‘ʽ¬R÷ZRjÁ³nÐùf«<të'= ÜÔÓS¯ïcqyд‰nRbV"ɯ§ðzÄMôÞ4ó,Èu¸Ð§uú96ËÑèðR@ãÌ^ÍÐæ‚{%]ÅÙÙ+EÖ§¿ÀßêÏ.8ÙyÛ=SoA“
+ÄâT„¿J2E‚s­ˆLh`Ü}у¥õ}‡Âl<ºGø¡¥ÄŽµ©N8Ðú¸Îî ̳Œ[ÔíŠ8ruLŒ_u´ª0ó”hxÀ‡ùœ»ì.{ ÐÀÖIPs pÓ±çan·ò·|ÃÄži¬£ÖÒ(Šc°8N £€£Z1(tÊ}Þ﫸V,1÷{™s²d;¿·ß‰= Üøò3 ø¯àÂ2àËÏB
+M—ͳÞôòC…V‘R–ܸí³[‹ÎLëì0Š9̯EƒJÌeÕô
+k Lc=ÄÉ;“Žº¥5HȲûƒ°DsœG´}cÍßQH°ŽÉ“ -Ðàš§œØhª0jÇ
+à£mŽMpže÷8
+ŸÍisa΀ã) p9fáö™à„œü§1ž}šQÏæ¤p°ÔÁ%Ð
+ÐÛùS¡Àjœ:Ö Ykç¼¼ð`™/IA~[äÌ• ¶Ò~îj¸_jˆ5@j
+ßÙ˜_šä%½Úb܇ü-™wy¦à7së°V:ÿó„æ:þ•!?vø›@1±k_kàr*L=W·UtÐJ–èn@ÔµŠ+—%h§ ‹›šÔayå}N^̼¬÷ŸJ„¹ôwJW²[ã( çf/Úg¼Þ’aØÝéN¨†e_–¾ Äø¦¯áa] 4^,©3s0\rŒ…c”Û(9¸\ã“wÆÌ•2~ɶ
+=ìÚ}$8îI5—£­*3s]KãR!‡·{Íò/J1
+x ËzÇcÇ]WÊé? ø­ÿÕL€»  |XÙ\ë.7d^×fcî_Ü?jVž4Œ
+u_ßúIôS>íÞnPJœxoó]
+…MÝãqkÚu+N'[¶$”h®Å<å}¥¶'ó`%P
+ò.^À¼vïZÃg³½ =9Õ/…¥ªù5Tc¯°á²âŒª·^ïRfÐrrÝca4UXÕQû•k-› ÇJIæ+WÚ¡öQ_÷ÂQ0“îZ|bDËâß3œw:E
+;HžMÕª »Êyß|]èxhý¦¾wPžÑbÆçQ×äƒ5™
+ø}ì¬rï
+Žƒ5A3Ý€>7AúôëóG0 6ò¯
+H‰¤—]‹¤·…Aÿ‡÷&`_¸‘J*©t¹r‘ì„' Á3»ùrfŽ—%ÿ>§¤Sêî™Yra–…é½G¥R}ÉòèçÒj9¾²\ò¹öÜËÃÎI²J×ê°Ÿ»ÿuwZ¸h#®ÖB ת ¶\6,Ö¹²t¥@:kÏ…keí•ÎU;¿7ÓN˜Ò0.lmžj‰¥ÙêqïXÆY³µ…‹ÙT;œ$Ì™°¶Îý³”%+
+«„›¥Rd.•s6—¶s×nó8Þ2a‚üȳ¦Ä£Ž¹¶â\ʵП~ÉÇB+:(ÎC“¦ð¡Hm„¹Âä. ICã`KEaËbUâ{IëM%ïïsƒvõy1iœÛø¾çP
+j:ÉpÄ& <ÖZw|.qØ4¯ Á¥tB1ÜŸ5ÓV9´Á‹Åí°f¥mA;#ÌhØH‰±á¸&#"KŠ{µT*' {;Â0cÁ‚­«q»‚èÄe,禄UÆ\Òä1ƒ(†ó„® wç +tÇ2v©s-¶¨=ayAÅg[ ×LrE)P4·¹V ÕéœéP‡ž6Ë°Jt.y9Òίµ‰Û–È•
+ þtú«ØP< ¸Ž|$Φ±>­’`ˆÜ:XSê˜Êseé„=W:Ò1¢damI¹VLdÁÈè—Ü-Óz…ƒò<òS°ñc`-ma³=€Ö×Åc-Ms¨7˜$’Ê\mᢳ.tEe’ºà¼XÂæ5p®´>.¦\›<?QDÂ;^=A­àj/–!à÷¦ÏŒ(ç.‰æŠ­Š8¤Ø‚%E%}©{Ï ó•+T¸a†¶P»Ó`êÒ,/„£ £s8®Êµ½X¬ÅÕRÕ'TŸp·-ëU©,H¤mY“œ‡°ê +(!„u}V=¡Â2Mž]smi±¶[§€Ö|¼º? kˆqq6¿ÇÀ9 ë+úšnæ‰ÕãdAüáÛe–¯ÔDk[i+QÐy™£¬Žðrû°«±YÍÍh˜t!K+ú¦ Ëʉæå=ñ¸3‡ï(Ð[™²…ϵƶåoW-™ªÍ¤mk«veœ«¬^7V{$V„/±÷›UfvͶñ3ª‹ÈÎõËÔ#q”vÈä:Ï(µFf¬ÉüLæ‰~²>E1ëWsÑƬÚñª¼#A’Tc1Ƚ3v8
+_ã Œ:¸* ¡y^𭈟ûÛÓ¯ÞüƾÿõÓû¯úøŸ¿ÿᇟþðÓÓ‚_øÛ?žnðß>=ýðøáý1é|è—§t¼ÁÿwŸNOùxóoü4ÿ½û/~üüèÓQßù.ï}ù7óžgÙã=š¬÷ñ#¯rN“×?Ö²'ìøÑ·÷=Z{æãÇÈX¼‹<Êçœ1/{l’ÑõC)(³az!ŒPšñ<™²ÁŠZ”ÑÜ®èý3Z–öýŸÁ+o‰ßÙôíûS;¾øòx÷çéÿŒ±ž?ü/ŠÐªy7…9’^é¹öÂ…¡Ò‹ÖA‹?%»vÉs??w„,ùû?ƒ/†Þ’Ï;^ð 4ëzëT½õÀ"·¸°¤kX†Ø¨F·4k·pðòüN_jÇ©^c-•k|}’ G c"¹>òý+äϽ~iaøe•A1Ïö5KðÞ6™ƒ¿F/…âÙG¿Ññ’ÁrñÍÉû-rz6Ίá)‹Õè@èðA«{{ÂØ çº*H½Ûs{Hÿuú#DÛ”TÌÒýð-rB'píÔq£o·”_¢?ži^b:zÇo¸Ýߎ.Ÿ§Ñ;`ºx{òÙåÆľÆÉç6OÝY-þ¯ö¸´©Û°¦Ï‹Ù9á!Ë1+kåžy,ØÐU¬œŠæSÒ¼g9æ·ðlžMʼ¶5! ÒIÖc"k>QµFŒ¡z ˆ÷]†ÍŸlºöÁÃÆgˆSï„ÈÙJè ?У5°- Š«Ò‚ùZ0Ûˆ'¼)Ì“A×
+¯Uº
+-cp-Z6‹·b`À)„ÕÂzåÄ5Þ‰$n…gªVQ®ó¾_í<Vó®Á«h8 —õäõÉÍbLø!€ÂGÄ~31ÐZ`Üšpà©wØ0‹P``*—À•ÎL¢qßÍ{ú"0<µí€LúÚJUäs%´’ztOŽNÙ¯ iYŒ²}ù°­±Á¶Æ@‡›†€Ñ v·X«îfFÆVmþ[pûÀFÜ‚”OÉó UAÖÅÓ¤ÌöëÐ=û°ÇƒÂ8.žÀ0c"\½¤8Ú
+‘Pˆ e‡ò¬|w¨u0™ªð™[QnkDb !€f#BYóÀÁuNõ ëªÆP)2?¡­šûˆ!W.G@ƒÐ° o™«-+-… ïò-¨½pm­+s­ Fbäøl×Ò#<Q—å5œˆ?t Dg›ÕwÁ>”Ì),èjåÙ `!0ýÅ­dØ| 3ÔX‘FåZÌßÊcu
+ÀžZ\c’¼ºJÔtŸ–T‹ÍêHq ¸-`#*vXžy ¦sC$JtÖQ")%n©y¯ÍQiu´pÄp0‹ß.†Yø>•žM5 z a3ŽÿÀÍ!ŽËz
+¤Þz¬U‰+Ÿ/YÂÍb´«k-cíèûnÍg¦€™Å°Ž¶}`"ea6
+ Û¾˜Á•Òô²ªF]é¼põŽÐ$DNtÂœ.q8ý¹p*kc(Ô%2ári©oÚ•kKn‘ ˜H¦[z?-ðd^ñ‚6Ÿw&F[3¼™dÞ½ŠyqÄç5ÑÕg¶K*7šUEb­¦Õ±?~F5ÒUÆjp»rî»vL½¼NW¾r„_grÜ¢Îb(V9ì ^GEoÒÃ
+´ºð2
+àX˜ Ir°¶Èa½ÓV(»Òý´ÙUàÁ¹¨Þ@ˆ”L°Sݪb\}ÂJ0)Õë%L€º°t°™
+m8³Ü9
+HXBôzI7’l Å@Yn±¹Ê@\±dj q÷ä H,÷XpÐpp”zqÞà^x’äúÀ–úñq…£Ø;ý$Œ\äDzSË)f°Ø fS¸ éRº —§XL”ƒhŽ€© {Ï/vfz^Á–P¯÷·Xȉz‹Lê`®;¸>æ:u‹Å(¹zǪwPdÅ,˜ƒK©éo±qNK¯kmŸA8¼#Á‚!Ä–V¬ÕÉý_n`*K©à‘Ç=vsÞA&àuO±ÙXú|,›¶LC¿ÇJ'8k|a9W‚ v·ƒ¤#ù·
+è TW²°àC¿ÅîàºÖW‚u±-6 c ¯·ƒîO
+­å 0‰\
+»ƒØW‡`?`L+!F*Xèív{=<ÇK[Ì+@(ÄÈÊbðwðz…-ü Eç¢Âå‡zƒ<ò2AYjw‹-Y<œÌG@÷UùïÕV~IŠÁ\鮼‰Š{‹lîJx]7…ºƒLC¨·ØìºÛ® ÌÖí÷*93Cƒës¨ÀÔé.àûvpy¡PÚ-öèÓ*9˜›l HMr‹•8\v ¼Œƒ ×d‚èkp‹Åãp¾,†Êã þÕEe×)öÐ×iô~3¬É‘ 1A8Ë«;¬ÞášbK?Ì‹i¸Ç¦”ݦ@hMšPÌO& û·]bË‹nµ…0Ë "Kžý 4D£ZÔH: ËŸg;ª×r%J¹%€iîtw0ÕHpº bÛ´Ãi™{\ƨnªJL¶Ü¢¥&SùŒbö‹N«š{å°uPTyU€m,ó4¦KqŒ>+÷ÙʧȆ©`êh³’Œ ¤KB#^cQÌ8ß{¨èHå¶ÊJ@˯ì,6!Öy©!1m ЊÕe‹ÍJ¿b ÎM ]åwE뮀HC3v7m­ É;
+5y¡¥õ„n®&‡õ¹½Ôì¤DPÊØÀµgú(·X‚‚úär[å–
+.x@xDcs=A«Í–LPé¬ VW·ñvд]¸¼¶XW}
+V#é TŽÜK_ †=T%å0H£kç+6‹Ù¯ pX—‚ã†Ñ½ÖæúJpÀH2<vº1Óa)ôOäF¹Ä¶%0Ç‹ÑRspš*›?±…‚ HŒÞE£0¶E?”úÆæÅNÒÙàæa}¬ÓëÚCißGobèäbHåçß*zDçxlr/76Ð~¯}fÛ{‹Å¶x¡sT0´(Û¢]}¦†Â¹ `’·¬Dvy"ÈÛdû oÆ´£ >tG,@ ä2øÂ;Ø"%ãC¬«!Àù§§ ,ý"©ÇuøW Òüûâè%V6¬ª@ë÷œµì[yÕ{q<Je_ž¼An%žc;úd¬ê²b³6¼Oâ'¿|)A2=è%ðÍá É$&[ö[,8®%Òa\ã „ýSeqA…w±G
+ü5S(Ñ”þw2Yyƒ„ã
+„!^jê¤×8ýÀ&y\jà ¯ÐÇÜ{l°½b¿Šk PÛíàçVÒŸ6„‚ìÁá›f’àê–&ùzöcT䶱ŒÌ—ZÇ9VÏ2–©ê±t)IKwwœrSõU|_FÊ)ÍHûÂ]ÄëâRž¬¥ž_AÁl»`D§m O00ï—X0ɘm¯Š¾Ú€èÓ´à zÍËâÓä5ÞbdªsÚÊ¢½d€—ÏKÇ/­',¼‰‡áË´¼ÈtuòA{*c!—gyAµh£{Ԩ̀$ù4ƒÚåykïN;\†ßlÏ; ÝÁPÚòc n±³ý®'¶ Òº[?{lB£tÆŽnàÜH¿ò¨~wöï¨Ü·oáù™o±Y­IÓh¼=/W§{9œŠr_÷û…ÚõZK‘3áý—í29Öì¡pC'Ð. ÒÚ[gá\ÕÙHH·wï}ÅÏÕ€à…µç’ô\[†‘
+q½…9ÌuFg<Š¨oc~b]é ä€4S‚Ýnn} ‹š´íSƒ‰ ÆÏe°ã'¶jÉ„²ô¸˜Y’Ät…¢÷…&rõ´^î›ýTÁ¿R"—ö‰XÛ)Ks±/P窳u .³D$—Óºuâ+߆^-k #Ûµ59\Þõ}Ã*Ïæ~‚³lúät â _±m
+ÝHR7i)GКù+‡–@ûÖOìýb2T'ûþ^z¥•<écŸdŒ¨W‡¢kÜ bý¤0§@=6P•¼/*Có“ ©†„O¬\F«üïP»eüÞǹPY¥×¼ôxÈÕf ©Wä í÷C¦ Ð'iÍ{L’8¤fwåк†>â;VD‚ 6IÕg@îÖᆉû­hÄ X7j¡#TRT)Ë+Zƒ*­e¸§GmóPÆ!´/\vïM ¹Q(p½Êfp~ÿ¸±lû;iTúÒçuá­#º:ÊêPE™ŸÏ$‡‘`T;š+/y˜îJ¥NìS¾…PÌ24ÐO!”Džá!¥>ã^u@u©¨v2D«¼©áZàÂX,¹ÔHíUy;ìØÜõä²òŠe¢,Ç z÷
+ f…o쪌c²Hå?íãHìB×Î Ö†.¿8T÷êÉâ§M•Õ­ÌG· ¤ž…_üœ¶ðJ±\q<9ZÊ<~~ð2E¿.pA÷££´°=±:e옫™—K݉ŃY£‚Ž»¨˜»ŒÔ-2 ‡c®á)°p‰”GÅU¦&²CXO”ßý4e:jû@ù&oCXg‹ {5´½;¾,5´…2ŒîÐîØ*¶ä†²pO×…¡‚dá²Çj˜±†ã¶Z²î°»;gàpb[JÿŽ“U1ù¥ÇõÏ-HGí<²JC,ý…òê‘á$€Àëî N«YÕ„ô2_ÚNXþÂ53*:
+R$þUƾéWœ:ØŽÂ<x"G‚Ú–Ó~çù†ŽBLØG;©2· bÒ­ƒ
+S-œ–'H±ÕzÀš
+¾¨ŒdºðþùÁEjÞc»øJ[”ˆÂÈ9æ€-¼ƒ2á‰Õá ðì*ù«0aY6öØկ âîÈ7æ¹c[@*uÃÁF×ÎwìDSg°’t˜aêÅ÷e º¯[G80fh VÒ¾µ>¥ƒˆ!d.6@bÐc©ÆûÍzÁaÌãŽù¡ë»õy›ÖÍÎp×ÁXr6ÇíFÑe}Ò$È*ÀbGçÈ8}»Õ…¯~ª4Jp2 ~b¥ÅEV0ÁpÁÕø"A`—£+Æ Ø/üœÁÕ ä…ÍÙ>±Ãü¦f­ð09‚^ÎS8¸“;Ë ¥w·û©¾*<ö™ó®Û\éÁ¶êϦĪ˜÷%8ÖÓ„8CÃh"•uj F%{ÑæXˆ†<T|#x?kh:\{ð ÝÏ0^sõæ)ÎoT¸…'©ó[/Ta©q‹*Šz<„î±½rèÑ6_8DL¶“à`éà±MF•Ašf|t!Á ;>±ªWíáN= r8êÌ0΀‘¾±"ÿ»AüG¨',[ÐÓ¸—%›Aóiª9´±¨•RèŽ(Ö-Ô{ÌÕ Wç‰#¸•R롈‰F$@—1¾Ö8D{ä²3ö:袦•Vñ¢{ˆÔ 3ôH ß"‡äý/‘Û’’'îô~í$ól—²'ÊÆ@³E'iö4TðõxÝuv‡M®c'@¬k¢è9Ä·Ùü&9‘=çbòŠ–²«w×狽F/Œ©ìpwZ$Çžî Ñßq†ë¹¼DÝvÅÂݶ°Ÿ¡ÀY2Œrë㉕Öß ú
+JƒGm8Œv.] ?±,oÖ¡×e‚×
+2îÄíÞî,Z8õÇ‘6K …ùŒ´)w{LùìHXÎhp`®ÏjÎw_Y$í»Áz—?¯ƒ(¿Éu½7…„i¢”UˆSÍ>u P®ã=Õ(åS‚Ì#¤3)Ð:ù
+Ši˜€[XØ´¿c”ÆT¿Òú'Ì!ÞÛm
+™ æ³/‡{ÞS¯ØY8f]è³eh †x<xc2¬nT2LN'ãµ3ûØä“u>ÿþñb¢VŸÕŠ¥@ŠŸX2|W›bÕ¬'&p¢›[½'Ê0ô6¾±Þ%n³–áÚÂN°ñVr#zÀV½2¬Î\°Œgµh2Ë?UF†{X¾±ËÙÁÌËâ23Œ<ÿ;¦i2ÝùÂ>¶–ºpéËÒ?}Y€ýÕ³…„cˆe¸UúYë¥EFôß«F
+|⪠mŽe”¦3ŠäK²òqUgÒ
+±±‹Ê†ß?þ`o±7êÛ &‘1K ŸSùª|Ÿ„D» Xå0x^oùËr˜Ö!jÒIKã'{lê†íPX”hã$CAÈ…ô5Œ›*Œz¯C ‰…Ü,áñ¾ÝÉ öF]Cß?tø÷NU1rIAA *¼àCfiZe¸}KE\–WRÙc…ÿt^Ô±œþ³Ñßý—ø'êð£k_S´¬:êà 3–Ò‹ ÝV$éC6è’xÌÓ«mbò]$Ú®€<XŸ3øf¦§Æ›í'º·ˆ¦¾Âm¡;ð:ÁòE|º},¢ìlÝ€è¶)VBTMW| U¯«˜xìX“BT¹ÍÑ(}_aOdª¾qôx!Ísc»ÍÏÇŸ1 =ŽœF¯lòÃ=eiÙz1ê eV˜ ÖÄY ­7¨d§ï´M½:,ª}ÈÄ›ƒ‰kM~ì·ÕnB±kA“B&ïöÀ¨Úü<w˜ á*X«ÛÅ\<YÆ19*yf¤$–Lí¦ûdbê~¸leùªÙ÷8
+Í ^~Ý ga¼EÅ1ºƒf2-H•t b`î¼dá´¥ØÉJ¦èÌÝàq‚§¤*Kþ”éyì§ò³YÉ,«Ò¼BOQeG pò3…©ÞaÁô\&n—ëò\ìHÐ*ó
+ —Þ=ˆ¹{ÍÝ$¥|*”z™Ÿ¶R®…\/´¤ç„ÒìªWK©1Š>=®B'>Ïooó®÷¼Aó¥h‡:lsoÞâ¼^w8¤˜;Xx^^M;coÌͽ¶£Bèªõä¬Á
+×°hvQ˜nBo²…¾A?
+£zTˆì;C{3–MkP\=…X æ®Ý¼dU~çUD˜Ö"SÑMä€è»Wh*ôê
+¯ öP°¡”¨Ü¡co Gî´
+{—z)Ú%>±B_”÷ØYáŒ*<Ø?üûGþùõO”<óüg…%çøÓð:Åó^ Š`3Û„§Dã„X–e¾±­ë£2Úƒ¶Eý⤃{Â"CaL­cÏ &hè6½\±P–6H R‹Mã ¡ç)Šôƒg¿¼aÎ)ବ =A³éò‰…«OÖ6´]¶ÐPÊï¦{Ë)ÙŽ»ÉÐ}5ýÀ†qcù¦olOK²Ï¬>rž*ø%¢Ÿ«5Yo„¯+‚ZÒ¢¢¢õä[•à#¥çG•@ÙKÊOl®‹âÎNH#Ö‰±ÂbIÅzâzCÛ‚_$é¸æü ‰p8¿žØD•ïXû;™(ë±ÆnÚÍ;úŸ€1”ð:«KÔ”sß-Žº‰&7fs|ô¶œdakÙ¥oYzá‹oÖ&{ÆN³º4 ÄW3˜ÌoÔC#÷+–½ÅL»Ô‚™B¬.þ§!t
+¡èÆjCnˆW?~“
+MN /µIü|Sô
+zB[µEah—õ¤ú†z’30ém¡.…é8î}„§Tü
+(­Ðàð-–Ró£iM2@(åboVp
+Û§r¬i$ñ‡Læ“P³óìÕ#p(+ÈGk«Ðxÿ>â{2½Vö0vø;'&ô`ÿw…¥v‡É´Á›1!#v>v꺌´šD÷®{`ÑkœãÂÆУ8$i¼GË'î0m8še­­ïªá’ãJUȪXlŽ6õ}òÃ%ð;y5‰žŠ¾›$Îe'ì*Œl¡$‹Ë‰k¾ÏÁŸLn ‰Ãp‰>8ŠlCÈ\®Alÿ„nw²]ñ'6l52°xጜ[”ùÐç 㤗‘°d±þÐæƒè®Ó÷C›¸Vzcõñœ¥ûMä~hç`Ú+澺 ÜVô°H°1ydkÃв[
+¹x),è?¯9ó»Tÿ÷-\;WOSr<+[!æM;ŽÛ`ý@O¦
+ë¶FÉ71±J—ol‹ª½/ ûÁÅ#k+VÝîn?°õ4ö÷ ìµV´±†?Bâô©0]±Ýk eHÑïù€.{˜Þ36à¼Ë¶Ð'†Æ¨¾‚1lY5ÕþÂÙ˜=ÁÆ4r¿V‹94B¨âäNJW~[UºÌeIóeÕ$'ôÈo¬IåÙn9És¦#A`oøócÃ'FÃ4`/¼·°±t+9Àâãipwèk5è ²”76U*v0ljr‚Ó ]z˜ÊøÆŠ4ƒ˜SùŸ-¤®Ø¬Ó y¢_OlŸŠû»Z@î!~F9á½ÚOlÏÝŒžÛ«)©j=¡'`›6ŸXîÉ4D6=pí+f±Û2Á´eý¥Õ­L7&ëµØRÀÖYb±VybMXÊ,© É#¼Äõ7¶J¶¬Zc†|0óðXNÝV0ûäÍpì¼ÏÐ0Ú‘[| «„íÍZfoQ kPÀÂ…Xx³ا…[p0çHÐLòÃÎJc‹eaƒä¦þƒÖ›&uDˆØj«Òþ›½ÿRNóêR€½Ä»›š~õ´é2sÛ“8äâÐzÄtŽ­ŽH`½˜›Ù)Àä±­›é8!FEÝ ÏÉ–úÏ"´L¹ôjh!^3ðŒM¸17tL"<|îÆÐÅJÊftÃúÁe¿…ÑXb (6\b»~ˆe±.ï·xÝ®Â&ÝaÏ~ Ø![ð3@!‘•ýÞÖM£\;ì2ž3€
+D/Éf "EÔ&õ~ãE‹¶Põ:¢¢‚>oå¾;>U>p©ãM¹ßÀ*y'Œx,ž‡¿fŽ9ç}¸É~
+‡ÓAy¦a°vñJô©lÐ+ÑõÆ'¶4UXAMòÀÃ*¸{µB¬52ü}u)ô*Àü¨W,´®%8võ%tÉ{ÉALH±*lË:¡pÊ‘À1Œ+[ól_×}¾ï=ÕÎ^0' |ð„³ãR·œæû¼y.ZÆ%5û~ÏÞϹ:ÝQ³g¿
+ZáÈtBM€€M¹bq,P¶–uôbY|lUØaõFµ-PSЧ7¡r@M@XmzcÛð÷½ZŸÁª#|*+*‘€H›Éî\€©ÄÅø²`
+©žkÕEñÓ6KP)× â¾íCÜï ¸i ÇÙ°ísxDã+þú4B½_±³sù `RÕ67[ª0‘Ryb¥5ƒËaÚ}µdã ó³Ç5Öª˜õW
+‰—O:ÚôÿدÚݶq,ú~ý ]4J¤(ræWÒÌ]dÚb3Ù-°XŠ-ךȒW–›dž~.E^‘²Ó˜ÞÁø#ëì£KŠ—ä=÷ø
+RÙqjÑÓ‹•œP‚õXaEjnY¡ÿ2Ûi!}Ÿu lû‡I'')[°© ƒáè’¥—  3m2TŠõ0é–“Da² m‡‹P¯6‰µûR2Æc ci6QišXë{
+¸ ¯b714î7Vgg­ðT‘)Õ
+uuAÁVa+H¶é‚ƒa@»¦˜àRSÄjLAWbAþ‹g@ë{p‚…ÏCÂ4$y$ ÈôE‡³ˆÈ•Ø(ŽØÒœZ?´@G$µ.
+ؾ…0 C0RÉb7R˜
+Û?€¿†ª‰¹ N`:G?Ô¢Cv îGâqØ?–ÉÁXŸ>(™3A7o¬ôËå`<ƒ ³=Æ‚Á5m7`ÚçouýqÃ)´IbÀö8û h[úµpëvúט\‚'x,Ã<Žñ<Ù*j⥮ç”:`÷2Ѷw7t„I[ikí*,ˆ– ÄÂ, ±Y
+nô7
+\BsdA X’ ·qašc£Ö‰Dëße0f‰´Xu'cÜ]¡ÔŠæ/Ðt …©6BPUKå ©† ãzµ°OL˜jg‰XÁZ …ã-LBc,
+ u@œ
+a®ù¹ÆD<2ùÔHð
+¤Rjtl„Ë
+õ¹°3•¦å;±Rˆ ˆ}@B9w@=A¨å~?–@-ë&÷(‰s‹ÔC¢µ8qBÚ»!áÆkKôsa1=\µÉû‘P¼¼Õ&jJi¦tAnÏÐ…cjrM$v !Ù*¨ÚN€0¡#06"­’W¹& AJ#Ä  #¬ÆJÑR ¼ T—ÞA¥s¨ M£‚G+±œ³Ú0¦4x²ªù·ëÁõ໳÷âæ§rt^/æ“OiÓdu©ÁóìK^öàW×e™N³QТÀAòz@‚3ø|¾,@CÍàû|€´ÿ??¿×ß
+ÀqQ(úå߀ÁJF°„Kw)Jf*÷¥6ç{ \ªP7Ø,ƒ
+` \4zÑB_Ë> ‡Ùjg‘«ð©ÒËC¿Ç߃0áfÙvY@‰p ž
+óyrñmš£ºw†ñ _ªë'±§Šà¬A¬k¥“ ª{¢£ªaòÖÍX½„)›™؃‰Cœ“(è/G)J .Ý€þáqÜU}%†¨b²‚ÙîceOL£±óõ¶biÛTÕ^dðêuðù_Ïo¬À›Uù©ÎË&/¿œœh¸­i÷ÁàÃL= ‰~tõÏw?çL38í¾? N?ÿrù¡eêëE>lòªLëÇçü¼z˜%<:eÕùí¢É毃7ƒÓ³ºN—"†“¼ÕY©žGÁéû²±ÏÔŸæq–©g¯ÎÞßœ³Iz¾N¯Ë|¯`öòKÀ×´Xèù"Ÿ
+QD¦"`*æͶS ùÎ7‰I–™4ÏG;ù`ø^çtŸš‰wJ&zëùçóèËã^çñàÇÃò¨nˆÍyµ(G°´ójÍjmZã–Ê ´™{'ØóÆ#£}¡ÉfQßúnLÍ…?·`øÖO^å´(²r˜ùf¦‡zæ…ïÙv]‚¯õÍç6g?×Ù° þl³4jëF¾é•‹éÇa“~Íü Ô²õÄÊêªÉ›ášfó›·Ñ¿æÅ öÆø0Ð7 ŸIäiyä0gö«[zϯø™SØcÌË5·Ô‹*vë—íªZÔÃì]Î&ùÐ?­ ²ÚARëÖg3©fY6Uí°³ªy[MgÕ<o|Šæ¯X@+^Ö¾ûô"?î¹ÛcG·wt{{å’Žnïèöö…&_¢Û×)ûâC•Ï_˜ß _¶ÝónÕG»w´{G»w´{G»w´{Ý;ϾfÅÕ$U÷7ÞrM{¦oƒœÃôD/Åöm’ɆÆïpÜngÅl’¾”Æy[,Ö´ÂÃ3xÞ>aÞŒ.²¯yª´víL¼Kóyž–çú
+à]Î&ùð¥´Ì"o>¥ù:+yx=3­óf2Íÿ“ú¿íë×¾/m·çYs^,ÖÒŸ(¿o.ü
+H‰ì—QoÛ8Ç?A¿ƒ_èÛµÆÛÅù)Ž·AuRĽâÞ‚15²Ù¥H-E:v?ýÒ²u–“k4J7¤äEÕš±øÓÌüg¦{¡5¬;ÿ~5ì¼^%Bªß°‘FùSççWýN÷ƒ4û{›_fâæ^§;5šËùáÝ%›ß~ãõ¯Ý‡?ý[ In:t?ÝÿNþؘº³tÇœ®$èÍɾy£td0îÛgÖ`¶ùºnÔÙP¯7KãŽüÉ™»õ4%—O[îsÓŸŸl±x¹z8uå³»cŒ;ÃWÝéç«÷¹ÇSÙç9-/>Ü]*%Fñ+’s3ªdÎmž¨¾—¡éŸ÷þE…X Ÿ/*ʱÄS˜ûgêÓ™îydd¤µw¢75¢´&Ó¬C È +2È*
+¹~.äcÇ`}h̳T
+.Él ›¸OÈh{‡
+`d4ˆ"nxUò–ÐöÞш»W<û:??•ðÐË;¦TôÌÆlbTÕi¯ähQÉ“í‘«6”¦ÌPSe5à ‘.€¼Ð'© cÔLTiõƒå†ÈbÇ©Ãâ<+j̓¹¹w¦wT ÌDc\r؈ŒuèHb¼›eähÀvÉÁ•†tÁ]Îj(ÂYÃ˨éòÆT’ªÌ °7¶¢ØÛ' Uï~O¤RÔ`}(ß;Ó„Ë"r-„>5 Ò5àÏ@yKy
+¤1^Í2r´ `[ä Ví4\"Ç6#wœ¦KAMœ¶¨Á€¬VÇnþ›º”>:y‡[£êžJ(ø|aÜý7L E_7ºy§ìSw)|©df@Ò“ó‘_s·uT/I|(«)Ý¢G^Xf8¯Ñ.vÖÞ£ âÖd&6º–Äníýgï€ UõÿrYÚj³ÕÔá\#Ê¡›WpÈeÄçj¸äJ jŒ†Jƒœ“[e~Uñ†JØ…¹wr‰Z’©b.™ikìÈEc.¹©1Ö¤f\#KKÞù—äÚ5
+0žFT¼:ã^ ð¡¥ó4En{ËîþåÌp^CowÖÞ£ âÖd&'Ÿt-¹ÝÚ¨Q2TTÕ@K@¹­w.#>WùF”Ã5
+¡î‡®ïãpÉ•@3t%;T䜼äWo¨„]˜£D-ÉT1‚Ì´5KŒ¹äU«`¹èR3®‘¥%ï|‚KòDêz›¸OÈh{‡
+×—É fqë’·¼aþÏ!@Ðè¼Dø7ûe×Ó6 …á_Ààf—£-_Câª]E„Äè¤LÜ"×vˆ!‰³Ø±_¿|´"EB~“©±SzYéÅOÏÇûžõn+s3«wÖ¤°0!¥y\¸MÓ°6ñ)ˆ±ÙÂ9K×OÊ;¹€Ï#òWĹñz¬ãí Š% ¦»AT†ösˆGÅò90P#ÃÒÄ|.
+§šè›UÍLƒ³•7ø«Óöfµ4À¾Ì3ʧQ¸ã“c¼åËØÞ{^­ê±Èñ1Æ»Þʹש¸áò¨ÕÉW…[0Ö(‘LyF´Éç4˜Þ¬í§ï2N¥ƒRuX2žðMðdcà '8È‰Ó §8È© bˆl‚L,€0¹‚÷E³v^FÒPÐ]‘ÍHèŸD$;§™$:Œ¹Æ+µ×NלãÚ‰ƒìµÓ5ǵ³Ó}æº~¶•š¡H'¼öÚ¹sÚi~»+²Ûº[[Ÿ¥:þàÙ/ÿH ŽÛ{€¥‹HóÌøíÑœ‡—#ÿλª2êËéõ½&_îñÎdFâ*¦÷Å)—œê™ÌV¼m&ÿ Du‹P­à¡ÛÈA¦Ï•Šû2Ï(ŸFiHvÅ
+,£Ü }Ãs;ù¤4›ógAÊÁX›IÖÄÃ#¹R‚$³º€}@ϵ1Üao„Ì°‚)C{o2äyu|¸¾Íd(®Ë‘È8kµ§;ï6K㿨H?Çнª»x ¸R•Ú yICA?sAö§™Ã§ì=Í&'ã/(DÈÅCˆ«Ø:¼¦SœéE0ÂH«èÞ‰¾NÎ`"ÜÚðƒmHpnâËå#§z&ó„O›IÃkßoÀ"T+p#Ñ-Wve­ãÛµUŸ4ÏLç(ÒlΟ)cm&Y³]É•$™ÕŠ¾@kÃð…ÉllL×0fCÄÚl
+ú™ ²½XúxeÏßÍypxy0òK*á1½¾÷uáÐð¾dFÞ*f˜9©t²+†·jYÄFçâ$C¹+ƒŒPM¢[)GÙêdlý¥ž¹ÆGg(Î’(~•ñß9O(~×¼Ëêp2Fù’<^5~æøÒl¦ôN–H_ MC”OUÑ¿DÔp#gHª0>ú©Ä‡Tº=¢A&c\ñ«àÞqHôB^?êÀ
+H‰ìWénÛH~½Cÿ "º»y'¿,{ld×G'‹EÐ"[VO(’ÃÉ÷é·š´BÊq¦wÍCC²åb»¾:¾ªòù<Œ|~Ë‚œ¿D¯f/žf,É^¢ƒ¡ðàÑU–ˆð½ø¶ äÉâxÈ6Åé7¨:ÿjvp}~vOÑëÙÁ±ð2…,¹ƒÿÞTÚ,ƒ×-󌧅Æa’°'¼µü„‡ò9EoÃl÷îì..-5Ó_YaòóDOq¶s, ßD·\ÏJ2 òpçˆDèó•E¦Œ*á1gÙq‹XÕ4:Lj³S+l ¼s(C«zÈÅ8`žrؘï‹L4%o Z¥Ð9´%KùIÂÿÊyèÝ)ÜÞQ`PE¹«Õ9Ô0
+ÕCèyù&XS­ÖáÕT^=ùtÐ`u(6¥É¿¶õÕs\¾âòd™H*ü4øgÅU”'? â5SMRå¬(Îvžê^ƒu,- ôÒ4U‘D1OX©÷ÊJ¡§r]ñ£hG©è­dEñ¤ñîƒc¾BofWŸNO
+_UiÇùqøösE;Ÿuå´÷Qg:Ïw‚ñoª Ö\ܬÕ÷’íñAcú*ül­ éþtçˆÔñ4ÌT5,wƒÆñMÇ·pDË?¹—-¢<ôÁ´EÔ`íC„£YÚf}¬tTZÇP¸2¢T_=Ó<Pç–íñÎ#ŸÕgN%d¥ª"®í=]×¥†MU<-6¸°Z#tTá…ùæÒËØ-W/кJ[æU&2¯¡‡UøÒâô´
+ð>ƒ¢0ÍX¨ž›?è bYFírtGG¥[ ¥Y]¹xÙÄ&ÏÖÊ>ù~¾óPåÔ0º§iXX àiŽ2 šFo3Ö±((áLMaÌz&
+z:»çáiÚëgŒ¹—,¹ÌËøF$åî³õAëû£b÷ •™jkìïßâ(äO@Y)NÓîø§Ýi^ê^šÆ¥i\Rµáêž…G8/]Eyâñà ^3õ±©a—Ø™›è8§iìmlr}…(Šy²­µR蟎¢M¥å1RPn_Ô™àKD DW¢ˆ¡Äòâ÷¥ádéˆ/V«<UÞ †ß4ËIà4añZxûÒ6‘½c"Ü»žÉ‘­7<SÔÔ;‡Fpïê@¦Þ94 ïOÚφÞ?Û¶š©uN­sà­³Ùö¡tÝhµJy¶ò$áþa¯Ù³•aO=çÉ —Ñ,ôì”8‚X<Ÿ#J„r·|ÞºìÒ‡<Yæ=¾o r•0/cÁE$Rel¥²"²íMãÒ°©
+gÉR~’ð¿rˆï2®ZÝolÊ B˜o.!Æ·òREpu•Î‘…ÑU&2o­Š/-NA €;:½µ–Z ½„ïûö]¢½â›zà¶ÇGІÞÔNA5õX°w=mÃàUßžµ›õ¶èQr¾…7ÆØÃð)ËçXÊÇPo¼þ1¿LÔ¢óÖ•z«¤S–§©`¡ äˆJi®¿
+Qó„eQ¢Œ©RèŸ
+ŠHEÆGD ç<¹á‡A0í:ÿc ¶&–ž’´¸ôf_´0 §ËE)4îƒc¾Bof¿¾%øóï¡õéô¤Ð”"SJ>_Dá;xEo™ÏKñ‚߈°þ`vï0ÊGWw›eÌ^è>zw—°ðÑ{&Âeôõå,‡Œ.áƒ\ñs}ÿü¾ü ¢¯È@çè_ÿÆÈéõûÙÜÖˆ¥›6šS3¨á Í kSà £šnRÍæRH ËDsjh–®;RøƒòÙl±ǾøJ'øè&a¾€Qýeaa‚¥iÛß‹›™£Ç4MTýum‚u4¯¾—h&9”8šcQ]ofD×\jP´ýûˆ"Ŧ PĆæꎉÞÌÔ°é€ÁÛ¿j7.
+ç¸ÄµuôýËcªŽ¥™<¢T†]©I5žhû÷'z†‰m©hh˜P[**€$Ž®™¦^(ZšK0• WãÅ8
+kf-º‹9.ƒnãÇ‚h ËrÁšcè"Döî¢9 ×!*÷!€+C`i–ëRtK£”:6"6„À¦+ÚšA ‘ˆëÊ ZÒÜ¥ÃEÒnb+Þ'ý߬ç¸$‰#ÝO5B!ijv:¶F Ó’Š6¤ÌðÙ=DºC‹u]¼¯c
+Ü 6¬Y&–
+šíØúÏãfQZÆ ã{=ÓÒ€ñp±õ¸ž£Y„8eÛŽKJESÝ°¡Âj ü¢‰ [šJ‘n»ÿ‡LùísŒÞËß
+ÆQïmõë±c
+±Õ¥¡àE“
+Nò‰ãð)c6È€"ä¼ò˜½
+°Y*i®-ôá¢}4íFá2'”©5¯O\Å®+R÷åZW
+:©iPj(:
+»¥‹ß¼r?Ü{Uܬˆ]Ló·Óû\=Þ¡\&‘…½Žà žŽ¤3 lâ¼òAh`™¨Rnƒ¸Z,˺v‹U¤–ØM™ô€Ü–š£Y¸ø+ôJ•JB(ä:²iðƒ¨§6‘‘tðºª:\—òªœõÂ>@&½r…'2ïÿÕ•ÐY.¡AîöÖŽÿ“bª#¤?œ¯§§ö“Έ4‚-£4$.p×_ä€÷à¸íÛ©H¨Û&PŽ¶!áV‡ïø¤2eìËAC¦œðJy²”BÎC 5Œ®¡î.ŸŒØ@OŒ¬Jdú´Ø©ãüNÔLÓÏWFÕ’•UUÇåQô>‹¥Ê“ZŒµø™\ÄI@·Ëqí5`Ù»A EÓÙÜ%¨ Ð
+ WÇë;4‹¦“nÚíLíÈćèw´‘W²Úi‡1nš“übÅdŽ„b4”],YMæ]Ť¾·b*”77D*p©€2ù2mP;ŸU2u_ø(+À¢©¨ô•GáÃ>Gè)jã¸ì,•Ô;2#+Å°ù\µÖqPO§a”¥Çômð$4Î*<>ãù¸Ø9Ûø”­Å“Gf’5xdÑä‘YuÓ¾œµ`9k¦|5V“ãã¼–ï^…ÔññäO|eÑ å•ù„éÁ“s*¯,xÂC;a\ŒwF›M>V£ælä²l#’XàƱ‰¹^—ÛV”à”UõúÀ*l±€D‡C5ªßÞh˜âÖVý¦–+`[ù‚?L«Ü)™$÷çö5ÁrFOu?0‚|MÛˆÑÜTL–㚦fè`4e=26¤²WÂáp!k*žˆ-ÑJZ‚Ð
+eð¸W–Æ9ŽTΡ”i‡ÑãA–éô`7bÔ~JÂÚ&).w‹^‹
+:à ¡È>š˜!Ãí1bƒñ®×¯çÀɇ³ü@e0@PÃÒˆÛqêìУJZ
+S•ð Ê<”$N"ò†>ˆÈj3–2¸Ñ6ºJ? ÈÐIÇPpM„­àK.´·Þä1ñÎ:Of¢G€Ît0{'\³=›PÌ';?)È~½8çJÏÐdûãQÉh!S>\0l!½^&<™ˆ†{™G.+ÃW„Ò/G´‹ÍZt›·
+ jѱ̛ˆ‚¡ãò|EV©*ù¨aò×KeSâ UŒqywþÐ÷¹«c‚cº:Ï””T†
+WÖ—8ž–7ÔŽÇÌ%Tþ¥eaÎBŠ± •<#IŸ×¤² ’^¢«z  ¬uïíHÒWßÊ#~†#Ew]ÒõõµqWh¢ ›wyäâ¹y¸Ër”GÞ/žšóx½³·¿ü´xûÇò~ýóß÷ëUåè’ÿYˆÚï âíWßä|ïÓýÿq&ˆ™æüv½üØœ]~X~Z?®ÿ¼mïêtCÍéú×íûëÁ»PPšÝ»ÛÏ_Ú»výð°yÿcsVÆa¦‰àñĦ!Çc›zÏ“›úñMÿ©ø7¥ÖúäïýfçZ¤7íÃã²]­—ËÇåâærñfy¿÷ÉÅMY\ýµ^}áw'
+PxùÏmã²hÑU#øj„ñ>MFÊ…u•|®u%é@äTÓ9¶ÜëÉì7îþ®m‘š»׿û°F…Ù´^%öFíŽþïìýôÈ¬Æ NËS—£bV¬&
+Ò¨ÖÀè#3“: ‚™¶L]!ÍVø¡Jî`äÈÔÃMg*AYÕË~ÝуÿX˜L¦œ éïsRÓAGéŽÏ¤—Ô™$ÎÙ‰W ÚÈ㚊ÇÞ3"¹if3Ía€LÏYˆÚK¬ðJ¢—•«ß:µ N› %ç!k0ÓÂ8Zùš¤B²ÆšU“”ݬ¦—’Ôðò’
+Må¬$ÕTÊŸÓû<dŸT¿re•–csó4A8rn„,Rç"¼É©„ƒäËÇ=C˜ŠîëalìÊɨlfÞK<vä„·1Öz
+©ü;õÔ9R)¦¹Ýu§GÔ¤e²|ÄNôzÒ¼©>SÓMcUñ
+tªœšMÃ4'<ÌÀ ²Öƒ~šÁ@´(‡á
+·âXÌ<º=¹âô«œmµM9ª ÆÀ rªƒ$Ö0mM”¢Ÿa Ï«ákuÄk5÷i_Mc— õX¶öÏpÄç½i@e³»¸7ÙÀœjpNè
+E.#í ¿KÖFuwÍiJ3,[õo‚+nhiTQ,›£á’ìaîVÌÜaÐ!,ù ¥­]`Ýaî0©/
+à›‡Gl6Eƒ­ÉAÛºòPÏ>k1öµ>£ÜV§Ÿ"œiPÁ¾î¸šl«LüÜöÃ%k j«X&8kç­Žù‚€5cêðK??è°ù·:Óùu¤mº.ÙÏgÁ]Ù9@f¾ëLÍs;SÖdß1IIt†þÌÉ ± €}…±”!°
+}Qa
+Pj8Ç™ušÝ3N sÊ´
+Tð&Ú@Û’Š¶3X€¾ ?>—ÊP‘#ôßÀÜ°eš$¥JkÐ`¶ÙÉŒgÂW54DÒnP|³Í”&0•ýÃ[…쀓kF)I1[¢5ÉÝ^›tw›é(KÍš»¹`¦±¡áÜ=$XWOUhâ ã@IG q+Û[*°:o3½oHé¾jk‚ì„Æ’¡LÈ¡WB S „ZŒ¾ÆßÔ^p#"Ûh²2„¡Â®àÈËø¥$øƒ¹= Â&JQHÇ”®åVrϬ+V+D«‡”ñ&ÛPŒªÌ]Mõhl ÿ'LÆ…„µGb/šœ^ƒ
+D~»àÛ@ÌÑàS®í€Œð·–æH§|3äËüj&Ö]_ækÀ´»L³ì.®ÝÕÐ/žò ¹.…üw㋧æüÞëìí/?-Þþ±¼_ÿü÷ýzgU9º$ UuþwÜö«or¾÷éþÿ4yh‰óÛõòcsvù¾ôqýçm{W§«>óýë‹öýÇõàÔ•ôïn?iïÚõÃÃæýÍY?ÅÊúø¦zåئ&”üä¦~|Ó*þM©u‡>ù{¿Ù¹éMûð¸lWëÅåòq¹¸¹\¼YÞï}rqSW­W_xÀÝ ƒ^þsÛ¸lµèª {e!ç
+¼„…T­fpSDDN”Û¨ˆÉ»0ªuYj]¢ÅY—뽞Ì~ãÞïÚ‰¹kpù»kÔ—ü Ýàu]kôgïI”,ßl~ Aœê³È@lÈmˆ`<A8îW¸>OWšþwl¢3jŽš w-ژ衚¡oûßÓvœ1\°b%‘Ⱥ‡‘©R2-fæÔLðõœŠðá ±éL´4«:Q"žf'ÝR
+ô€É–B߀CqËß‘ôÙLUmàÑ3Víê ™±:
+•;°V[ͧv/‰¹´xdƒ'p*Û9¥¡ yëYøÞgãé“<d—Qç)$žr?;,Ô>o!˜Çpebu!8Ër1kc¬c69úŲ9ëf ab7UO„boâ`„}îìçÑïÐïÚj)aŒ,û'ì\aðS‡àWÚ‡nŒ<"2ZÙ:5N †¾¤Å ‡Äǽ§ç5Y‰vHh2aPqÀ,2×2ü?ãõƒ„v¤¡‹Ìß^‘p3æ¸ ­Šš>ë2ìk©ÙhvŠ?®»OUêãtŽüŸùjÙmã‚_ÀØK
+Ç2
+™âÚ~ˆaøD ÔmuÁgH˜D’äq
+’!‰´óp†bcN@oœnàòìã’Ebm,ÂY*F
+þ9º)Ƚ›ÆÛþôW@’>ùý¸Ú¹Aôrq÷ùz1›_M®?__]N®~ºþ´óÊù¥^Mÿ™Ï¾0Áíðó<üÇE 䚥{±I7®Û‘aÅlÅ+Ä”øÔ0¥
+#'TÜTà±*>EïAœÁ˜UïŸÑ>1¿â›çBH5²¤ #M…‹øe7|Ssm'¥
+H‰ÌWmO[ÙþþçK$"•Ë™™óÚý„Á¬Ò&Úˆ„-RUY^ðZ0ˆeóïûÌœ{1&!j»[VYÛsÏœ;/ÏÌ3ãŽOGÉm½vÇ‘Ûyw8ò])’|p¾“àKÉŽð•Kʹ¸¿â~ÚÇ_p¶úZ˜ÝgH߶}ç=…qÇDÕ]Ž˜ºPCrÜÕZ=»·#
+E·:öµ&ˆTC §7¤,E |zÛÛÑíèÕôÿ|—³ä Ãbôw¨ §Ü¾Ø Sõ˜—‚¸Ïø±ÉºWÓ§ö½šn°Ðîzjã¦[Uªvá_íƒëÝîõèãŸF/0ÿ_k‘vÁ—BôÙ÷ÎýýÞBz|ø8Nâc†_¹£|rµc RœzÄ•\‚\pbðZ:_†œhž¢'”Z‚³Ÿ4,”ju+aò‘MÁw(9$!¼"vàhÐR*ÖHW²Xɧ*Ð9¡F„0tÄÑ….q¬ÅmsGA¼Æã!Æ”ˆD•Ì?©ðF¥±°·tYæ{Ý¥¨åç
+çXŠI½¯ðµtD¥?×Þ6d®× Êµ× ¸a£¤×[Šj—H¸¸åÛr׬2ój(hM‰êNšA¹_’"2g>ñY`{WèjTP"j
+RT"”4Wˆ¢¬¹ ÐAþ‘«¬¹èÝC\… Aä$YÓ—£b>tŒkð(wÉCBÈyÎЩ]ˆE] 9¢î‚÷sWb¸ DJJe`8 šçœÔuJ@%Âp`D_‚C”‚ /¨!#Š($ð´‘5îSÄQª¥ˆ¸h£òŒHZ:j
+îiAì~†bÜÚ=½úeîöfçŸnf×gç'n|s{æ>^]]¼¶²‹Ñ¿½òÅg ”83Éüæƒ]™Äz€Èįüíú°úÓC{íoß%2®Î'ìCJ{‰rPéÎîÍÝþùÉÝùÕbvóÅý"·óáîæ|ñÉ5˧fìütú~vwöÚý '~À?€ý¤¬ö |<4ø£Í—g·ófqç¶>üüãôÃÙìzþñËõüÑ­ôì•h•èh¿ok]|·;kG×kÔ
+óYó}ûô²·£ñ/úâ£ÅY9uðüô|p¥×VèhÔÅðÿñ'k¸>Y? ˜^~)è è|èo…*µ¦}Œ ©v=|lP ¨ A;-àDtÐÌn|2*躦 Ÿ/{ßør¤ÔªÄá–_6©zð@@ÑâÂX¼©¢qgÐðùŒ¢W60E»bü©V$&Ô"X->þŠlÇ#Öƶ҅þ ôƒ€
+Qìè G€—˜êK— g9ÅØ&k™Ì|"ãÿ]CÁ”.-ÒçÁä !¸Ò3šH¤N–H#WÓLœuË#½Bžñ¬ó94128Ò4KLü õ¥<ƒªôfší"ÿWÀÓ¯~6qè¦ÚŒRä¾òÅöÀÕÆ?QŠÔ¯­˜48w¹‚ŽI‰1þÒ„h¶H –²¯ÃH1GYÌø\J“ÎHoJ½pýίî…?^âËw,…Ë·³î˜¢•ÅQã/˜ø·YëZ7”HêŸú[©†:e³b«Â÷€å“8Fù£¶~À&cÈ&àÅ„¤Æ¬Ã¼æ+ é†
+¥¬m RËShkQlûΆÒï„
+RmÙÊ5)=a=ʹà ¬ŸdëIJUs¶l!kíŒöcðÚ­=4Û£ÑО¾5ÿk/‚)Çï±ëeòØjI&cæI™ÈäÀ—è«øGáÑ/h¯ýCàá;J
+W
+í7i/Qª³i |ØHÚ’aÆÎO§ïgwg+[…Ž!à›çÖZ]j•`Œ‚ÃIq+ÙåqGg¡Ü¹g–ÿõ|s;p" E“ jiÂT±ÙRãKÉpÅ}6‚zbœQÙóÏ®ØøqÍÄ —~•õö{æû¶õßÃ|ˆGA^¶zó
+ZÛ°“J#ˆœƒ6gmð9ÑJb1Í€¶Ý  VÂä3 ÁD yˆ! ARV‹û(r“ˆ$ƒˆ=`à6Η‚ðé@BÙ¦‰ öä\78Ó‚pÏç˜ä³*%•žC0»(Ÿ×j|¾–§½–'LR V¹Ïe!ã<®1<ÍÓÉÊ»h áýþ$³
+8dÎÜg']ìBh‚r´O‚B³iP‹6"Ûþ}¿µç!%R‘§Î‹(gÏ̾­µWá}Óo—oÞ¯_­W··Ûß¿žµÃÀ²ÆÇ.¥PÚ±K[¬__ú[u¿­²éÑOÞ·7÷ú¼Xß¾»^/WWç×ﮯ.ί¾¹~{oËÉE»zþËjù^Ü7Ø©='ç߬‡P“Õ[W ëfö°V–Ô~ém:T£§?èÞïÖk’òjÀñW?­¨­ò…5Á¼¨!zKlþžþ8› ñY…ÐiÊVTèóêp—Ù®1èk¼ÿÇ ¦è¯n 5Ö#–mQjÎÃ70N—3D‰
+ÉkVØÏgùìéÿ|é$f-ŒYƒ+½rù¨Þfhe¶cç¢x5Òa[ëyiÂﺭ,¤˜Ãj‹Çz;,JhfËçkšê(VgsçxÜ”s/¤jø$…4IJFÆárš3öåØy¹;ÞÝg´†4š¾é ŒÝQ¥Å¨^l²¡ƒG%…E.cŸK|Y”¦Ù[q«uuRŒÍ{MÄ™~}à¸G¥æßgOñâé2s{¹&t4ÀÍ,ƒàÖ8ãf‚FNxÊ'j$/ž
+$ÁäZ:LŠ´&­h
+ŒR‡x"vö¾G_$$3ŠRnìŸ*
+ÞÍ#Wç±Ò·¼r,Uâ3K Õ¼ÍtŠ —ë'g¦…Àôä™B–ìA8_[ê{|Q‰]
+Z ÉÚ6¥ËÙ¯KD„ÙE{¢oùÞ…¾g)ñ~nq} z®èæ†.ÕBànSNf¬ëY)£©»T¼çáj.›ÍT‚R–\|6“P-={A
+P „¯"n`?¯0@]ÕH<JÂœsÑ>‡eu± Ž÷câ“s:ól¹P²Q©´ù)Ú Å–Jú)§;mIšTæ0ˆUYhA/aæhä- ÷•Â!1˜²ý"W
+Á”S¡r¦Ùq†a9NÎ0µU936ZKÎxÃCœ±¼<8÷Ó9P<?iË`ŒUðDpê#ŒÃ¨ûŒ'BåBoðÑš¸Hmé@
+, ­…ÉYÍ‚iez×€ .fë ¼ôv!"©"½æžÝ8õ½í²º“Ћ^èY@FNp‹ºÅWþË]ƒ®{ósÓo085œ–°,„øŽ=žƒ»À`Bl÷>y Äm ùÿ?3tW( ¨¢'B°’À²ëz§¿0Ôu%oN¾Çy ^®²±P½àŽL½ž‰¢öoÂÔh–;|¯¾:ñ/=Ö’ÙD ér†Ï±,ÕB¼è:‘…æA
+ØH ~Ó€Œ¦š¤âpß‘G±) ì>1t‡†%¨ÆÏ=óÉ)n@\ â~¼µ®¹@•3p˜&ÜÕ`Ä’ Àb B4IÔ¯(×f ΪR–l¦@3Ôši7MVQÞ(4QÀŒ}—Þ5$M6ð”Îû2`Kjdì‡êªðˉ2²=×>usÕleØïÇþOià))ô›Œm.!³É–Šú
+}ßœ2ßéÈ¥[â|`íý$ÙÉÂl
+éÞùô0É~ñW®Nü“³@ì3?ª xáÿ;¹¯eO¦ÿ©]¸Û°æ(gÞî›…-©{¹ºââ$[¼¢ozSÁ,à`$ûþŽ>Ñ0‚1’àl߆éÜgi ¿HÔFÒò{N¼É3äP<DBðQ¿‰qkVuÌ …µ­¾ <˜ˆe–n: PëöŠÁ|dmƒÊÅNÒ$ñè´ÄÞwXݨ2éÇÍQ¡ÿv¥q%ýp‚_¬`l¥þÝR
+9Çž}¥fŽæ‘xØvüÿ:vÂI.wEͤŠ<ÉXqd.Ü‘aY¹†y HXÌ°èÌà¤S”ë.Ʊ}\³­û>3²ÎÔkžpÁ‡GZrÚ’\Ëœ‡
+~Úú¯‹å¬þÿáò;uÑi\USÃjP)Àº·0^_ÕÜW;UAIß’¡îËæTU(®îÞ¦?o@ýÝpº;ý%—Ò{ ¶P ~^¸y¢È,RŽ¶Ør²Ú1§y–w/¥—p*<þiÿ¿,—9¤ßW[Í‹éù"—mÍÚ:½¦g€Ð—·å0‰ižùJ@BóöIµåz¸¨k {2­©_"¬À×,F?NÈ7¦­.Ö§ëÒZh¯Ø,AuÁx~@–w>˜‰²þÎ0Û8µ{ÜlEŒ-,„óá°U­Ö@vqBŒüµÉ_rnúºi?w–Í.ÂöïŒÄs=ÛôåúµžÉ9mÿM=ÃŽGeïz£šôÍcx¨Šh4¾4ÇVf å…Ö×ÙÅ–ÅÊÖ:VÉXWì£ßã¼S*ÄÙE~ØÊ/N.._ëîÿ§“çK *¦läæì»F=Ar—ë*ðºwÜ­Gb%@¼
+…¥E¬A÷ }y3ï‰ýwß؆œ+ºUˆÐ¦AØ™ÝBmÖéìÖ䣔‹&:\L`IxÕS誡¾ßÈ烫 ­íù_ä­¦éý~mo‰ sÝq9Ì*›Á—/7þ6¹Û†â±=“`..UÆ€Fv]1¹'Ñ&]Òû–þ,Gûß=Ûcž‘Ò¨‚J)…á…­0§†ÆTEãuZ‡·'ý0Ÿ½gú9+tzÔ½;unšƒãLåêÊ#
+ÃAÍëU·¾Ÿôé¿:È-à›×Eo^kú×›³RMä}?Kƒlkuž.ë–ö GtNŠ)áQø¸I„•dSmºŒqê}!Ù»tªeSi/¨´Å&üÍš#=41·=­‡`ìPª5iŒÍr¨bí|×øê­Ê+±âÊæ§Å(lw›yîo®ãlc7œ±3Dqý{ô3ÔÚH2äG7Ú¯6:7ˆW¶À¥ñ«ÇùÔœø¿/ ÀúÆ ò¯ÿóbŠ½²›x2|U/N"æa:ìKM¬ýµÜî×—|Î5]ñvfIIJøÓÙ^†õô! S(#û[Á²ß_PµšzÓb[´ÁXä:K£Ê¯Þ¸ûåAÄú//ãŠ@ó%’Š½ÖœZ@ïf· ~Å¿žqA'XÄ.šÿ^;CíòE£²ïƒç,Ї¥îu­ªa5P>úØ!ŸŸÎúyvûŸ’… èÓ‡ÌÔ›Ââ·8Åç/Oh¿ËHo2j
+}9¼ìûÀ/WžéðnÁOlÔÞz¼q2`˜™¯O0ÜÍb—ªÀîås‚AG›ÍuÑí‡!ý´àç•ù`ÌApSé)‚`ø 8Uò"Ü[¯#d†²CŒÆ4€ÓÈPØ“AMm—¬˜šÉñ~ÍO?ći¦€ªý
+D%ÝVéÃ+SB®®Û{ýõ2œfï“ÛþðQ†o1C–+óŠ3†‹`‹ˆÂÝšKõfö¸ŸÁɃumÕè8ÞvñÜ?<ëóµ'°MÞ¹Ü3†À¸iïï> µ*ú×C4n§±´gwLE¹üa¡V>ÆžG7òôãôøÎÑ)J^w
+u~{áóS•§f$Ž×~¼Ž~Òí;OozC O[T¨·ÒÌBgL“ _n°›
+TPC£óŒôEj›—ÌL²ä¥‡s†–ïlà—
+DÀÔY—7LÉh|ôeì×n¨E…Ìø§ämÙ’/Pw±•F÷É4xõE¾¬—~)ó’ÄiU¹•]O};`’ÒKP’Ǽg|ÃLV¸îææBú½@Ój#áç<Rýˆf"3ð<“S“å9¶÷ëcòõ¹1²­>X-ÛÎ×SÁ)¸V,«vê¸ÎIÖòµÇŒM0’1©Ã²˜—ÆHQ‹&—ªaGT¼ Û¹ºT¡JAeÉ°ž[R-Æ'fa6‡€—Ðý§ÐÏ´Î 4m-äƒûX²ŸéWÐ6”·ÀÃO¦ê¹¸Ÿ:ØÒ´‹(ÅòÚ¾”éð±b‘H&Ñõ (l{®”°÷{Àn©ú™K”¾\:yÚØx èòH`yû.—;[ì…uÔ½u€ ©ž)[èSViÅåkP|):áÑèsH@_HsðÅÛµ’rÐF3¾„¨Pz*@ÙѨ9¥žuoû@ž1Æ(€d‹Bô†ÌS­Ò¼îÝAs‘»L`5eó¤ÀϧÚRíõxÿÁ¨ ÎNz°úw€@§²È¢˜E­Ôf°L1›ŸÀ4_–¤Ík!À
+<\é’bW5¤êlÝ´û`eò…ß(l4Ó;=#mXt_´ûÁo²] ·¶Fa* Iâ-ÜZ˜3I’¶“]àìö!–®™Û§ÜK
+Ũ̈́d}·*_"U»¬·{C0èÙ6ªó3í|xìsUþ³Û>>ùôxùý”Žt¼|uïÿö~íñ¥ýä—9}ñó¯_ýþÝ›¿¼}íßÛ?ýò¯_}}E>ùÅë·ß|õêxñåÃ?Þ~süöÏ?âOŸÞ¾½ýø[ý/?Ó·£)jVa¤AKü€Y|'rlk$Ò‘äÿ^¾Ó/¿ÒSèŸG;~}üñOéx¥èËßÝ溈u#Í k¼D|ý°5Ú®ÍÚ ½¤pîX݃¸µïËÊðᶿ÷- Öþ)’v¹"E©/˜–#²…»z/ÑÀ±ÑtEr¯×S¶JŠ$Ò!P@„RìÐ̚б‘¯Âÿ &äD$¤sJ þÞ±§–iVâzˆ ×€,}?ø¥+†– Eë½ÏÝ-/öÔ^g”|Æ g©›CGÚPNŠx»©Öw
+YæÇkвô‡ð`_‡«UV$y]‘><²zÏ2H±®nR$C²œŒö‘P‘²Ì2héÓ>.ÓR¯ŽÝ(xOkiT1´²œß)žcfc_ß×»]«'·Öa? G„÷¶YÿsÏ;R’¤.ðìÖ±õØ#²1ªÀPâÏjBTBQG"X="qUEV›3"súKj»ˆµ`lZ1kY;®'u¯%6lú‹0BìR!½ScàË➬PÏåF”()âW;ß‹šíõžn¬Ç LV!ÞhDF°Ñ-ËÈË Rb‘¿u{fiL÷ç=_rAÓªF§ïáœ:q Yu £ÖBjÊ‚Ès@!Z§¡gù*·õáÖ˜sõ5‹×ÒÛÊXrAWÍì§T‘Ìžmý“nópÓMWP'”— ¬8$Ô@mÅœ6Túwˆ7¸[šï%[4u"Û¹¸L64À‚‚̶bxõB½¿fö4âê/
+í õk¡DìãØ8"…
+,Õ1{V$šÔPDŠ–ù;ße÷±KU!õkT8-pŽ[uš7bŠ)Ó–‡t"P¹B¢Sêp_Îréû›…9V»îÒeÐ.ÉáMȃÈf’…ø½rL¡ÍÒ¡ 42¹Q“ŠÎãküjîœôavªzž·c“&²ØÕƒ¢ÜvT2¾U”cÍQïuŪ ·^wk›~{®=M=Jæ·žŠK‚‰aÂ꺳¾?kKæ
+¿n¯œJ»)†Cɸn ©ø ªûjdàÄÌÉA¢‰Ñ XbZÝå˜÷ûlû1qÆb:PÛ…6ê›+Ùñ›îwwS ”º“"^Eõj̻в*:ýV
+cÂQAk¥¤xGÆhWDãÉåÄžeMÇ’iŒˆƒÁ1¶*2€"]Á—ƒÌAM¨·úó5죈
+-IWøŸg´JÒuÚ’Xn¥4·"«H—Œ\HHÆÖ]ïB?Rp†ˆ¬""DžeÏð¼KU‹ÁïË3¬ÁaÎf Je8ä“Æb>î¾IÂw¼úgóUtªè+7Ç àTÞÁí…PBõ!6Ž¥eï9¼çÅ© Éƈ§¦¢é™½¯]éR‡•ÄQ½n¤1ì„ʺ†Wc±üi÷@—Š”‹Ù[éU›ãû¥Ü‚ñ9]õ{¸Ye4Ǻ^YY£H(Á¨]UØãz†ò+ ‰2,$4s„ïKm#’†oL)¶Uì
+\]°±5u\É ~ª†€+¶-´‘*ž`£%h °caîm·j°²›¬+g¹„$”ÂZ9ý‹ç27–$G¢ ­C)ðÇpô°C¯ÙÒ­ÃÊ¿îÕC•!*3Äñ ˜WÆLÃ-Û 7jÄh~Ã@_O_M¨ö?ÆH&ð»EA ü¯ E ˜])âÜÇJ4^î‡ÈZÉ(”Åéi·€’#ÜÿýKõau46\5s»Î‰œãª÷ºüÛ ‹ëÈÐÌ ¶‰õP+©—{Ü'g8æjÑ<$¹3ÚŸ3Þì¨Ç\ÞLÕ™=öÉM£òþþ¥Hº=O8,Áý¤ۮ邬ƒ¿}¡à8“,§Òu/Ýud“ÕfŽ
+›CWZÎ"c(°–û‘çå2ì ^GðÌp›À1ë3ƒk‹›ìCíÁ–#5¦²˜Å!(ÀŒß Ÿ/
+^ê”^rv[¡wåq5Ç
+ª ®7`càú1äíu~Lé²ìÀ­®®«ÏR’›5ž'ŠŸÜÜšÏÑI“ÃðD̨Dªþr-y¸.qaK§‰¼´é.·°ÛX‚gÙrân²D|kK)D0sÍÍh5±²Ú'K~Ú3»Ø¾X½Lž_21ëxÛÿùDÑõJ‘6“yczüEÍOÔ ÿ³ó(Aþ1Å­þẰÆúŒèÓœ6z³+Iý_˜çMÕ0u!bt ÅŠ‡˜±O,cš0ž]ÃƬï'û‰l¤½í€·©¦6þ
+IÀgú÷Üž®Ô¤!$d¸»‚³KË#çí“Ž&×µ
+Q€$‚üÓEïbªLê€,éôV={"mLª^iŒ§£u£Š‡êMÞÐ{PpYr*/¨>HŸë#¼¤“ÅÝòˆÃó‹÷I³…mm–íóþO½byÈ-òÄ¿Ú¢Éó|aékIƒhÅlë`¿²¦ÎáñJÁC\ßGùJƒ0Ð]GTXlŠ6µD¤õRú[®”û>9†v+Š8,÷|‰U•´¦EŒÛP”Íj9 ¨DL˜>$ë[n>û˜DµºòFT¯·_ì“ùdÛa]ϲ“Z,®H;‚Ôn9:ˆ­È[†ÒÙEÛQžúø­ÀCO#4^-ayþ‚õ€Ô\×f Ê ‡{WUÛŠ8íŒ3úÃk‡âŽ¢JÅÞæKÔ“ÔvG‰Þ¨?ìù’C'þTña :öPÓø5}J&Ý¥Èóíp‰²‡4&pߌšÂ! Ž•~¹”n±„)T[›
+Â+<ý i8ZŒ^f·7¯Iâ:äMë-y¨ŒGQ‰?ÚK/ n‘ÍžÃÜ0˜yš2ä¯qJ—´.EŸ¼ƒ6âÀ|USÆ„6±ür`„êWý[%xg•Ç$„b X2ê½—"é„Z€Øš–!üûWžé;;!¯Ï˜3$F§P/}Ø<SZûb÷g'4W­Ö|ÏäsÔŒ œêNÕž©+b 8õk좜*QDQ al"Áö„Ž¶’Îë)Š¨%¥ziõýûqWWéÿ@”C‹Á³wGȚ͎=ê6²‰§Ú¨hKò¦u¼r¢´Zn4Ã=¹úýz/Âm?^uæ†_Bé߈YUæ jª™QºyºŸò„J³!F8žÐ
+Zµ€¬‰¦çµ‘K0'­åéB?*Ι˱M¹¥¿ûî‘9ÈNÂfÙ—ŸëI§œ̆/vz½©bvT Ò^÷óJŠ«ÂKcDTOÄSû*ä&ÀÐæ°åà¿(ºƒÒ¥ì÷ö°D™îÌñ¶S;Õç[“Êlîþ
+§Ûõ9oʦ҂uµåÓ9|Ixšc?« íOe¾4tI˜n£Êï‰ùöQ%Ì•Ð’ %îû>¢Ms¹ê;«O™ Íóv¦‚_j£ß`ºOKÙÖë|÷9µ¤ZXVnMEx™òg;ÌÜÌDÍ—¹È~[«ZtÉn¼Ôe lcì"j7–çtKù>ƒÿç@Þì<×!ãÀŸãówC]­Oh é˜@½oÂ<ÿÍ#÷=²¢ù¡ôy÷ëÌ Èž}g*wtf5mxLÀGâÛDÕ¹ÛcÔ3è{DA© ãCfè~æ|Sn[.Àè3ÿvÒ¸—Fòü&s¼^îšÏ%Ébï!c‹,h€5q{+ÞúCFFñ³«HùJ}ˆ-ßו3‡ÛòúHºõ¼s–ï cÂHì³®Þ‹ƒ\ùíï_Š‚¶é}
+­$1”~ÍÈD\Fzj.aå-'á«åð&ÉAÿŒì2cZk¾ôÛÛ *Ë8aQZM·7£
+…ýyÕyÙ¶?øŽ'诩“ä}
+³¹¿^ÀIc"¯¢b  ÁÒ½¹å³y=áH¸ÔµÍñ¼n(öCMxmöº.¥›*žå1hÏKžheß{^{Ö<åÙ3¼mªqš äXÇßMåÌ—VÙkŸ"É5¼êàOóŸ À’™Ì‰\àØæ¦(秗ªMÐçàÞE1çzA¦IDÇK@V2‹CaxåvóÖ„´aÂOþôœ¸ƒ‹êxÿuÌ{EDˆêǽ oäšTÖï ™ü74
+Ž(Óô[ ;{Ù ¡¾<Q'¥tát>Á´Sq‚K…žUltèñ«³(f û‚IL¤ZM¯RX~"n@N œL茎8•qGtkFP­;r¿ÔR­·}Ô¡>zõh1á5óä½Ú MpðáˆàƒUÔs'ÕÂÄŒ´"zA•a
+!jrA5À©<
+°¤hW‰æóu O¨ê¶¾OˆZdU¬_ÎmÔÂs‡îͺ¡ýôºöûYIxÓÐèYq1ÆùÝÄÏ?^÷3=î`†>7Ú||™–É;jý!Y1[8³˜w/zº«&Dç_µ ¨%R°ÖÇŒ‡(rÃöì¾/oÅÁ¡NZmæÄ’K¬Sjày«8…—È`¿sÍ!wûí²‚™gïÛdj.zLÝj-ˆ–v=t2“º‘bk ö_ú!p,v‰¿ÍOÀNuÑ•’o D€Èy˜Ã»Éy"„› fK¨+|º¨¹4P
+«~ZCŽv¤VwžÀË+ÅEC }rñëJŒ; Ü(6<õœù»*p*éO…%/‹uOZPõ$ã¿pWTëf¤;õíýáCÂg-#
+Õ*K4¤óáçë1>ð3®aU_ „kGWiì9gÊqo*Ømc€/ä/oåìTtê)ðeŸ¡L8=C‹iògiZÐýl
+³íZF¼ÍŠ|;À›Fv+¶îsö¤xrš·(^™H‡m—BW©˜×aÓ´ r?E<Ü•S ]Pޭȼ˃Qý3§°¹(6¿ŸŽæq䙾µuïhQq½½)PÚß4y–´Å‰¡¯ýV ™–ÕÎð´Ø§NŠ™$(«ëFÅ£l8/f
+NØÚj5–­¤(aG¯f„{úöÏkíÁÏHìS«Ò"t+Õ Ä‹
+2˜ÈQ‹<]ñXo Øi3dtG4=ÿqY )ê Ä@bÓ™)hlì M­Å
+‡œf„ØØ^vŸo™õIÔWøH5Œ€ îø˜Ñ
+(Aí£Zc¤uwÿ„i*é–Ib·MÞVÀÞ-#»à_£€ÔÎIÈP<¨\ûÄ=T}êL!i}òj’^ÈUÉËÔ%R
+㢵⤾JÛý™€4ÅG‰wz‘5·jb)Ár;ÿýë#Ÿ}£« [Íù}“Ã{I@chJçÌ*ä2
+ ë·wÆ-Î@<ùJq¤YÕŸ^°kü܉£YîyrB]Ä£´ pø-ôòGõÛÈükç=¥ ²êÓýŠpݤGóúŠÊR ܯX²˜ÐZ‹¿ Uvó†åŸÐîwˆÙEàô4ÚÚ£ýäP{AQ|Ö¨åbÈUÀ¾å?Ÿ SKÆ•= @µŽ¦>C‘ØJšºQgvñ’ì
+ñSÞÄJ­}«ŸäÞª2W£
+×-SFþiÊmŸÞný85[¨UUûVBP|
+Ò©±ðКê»Ý7»aM׃y;Þ® 8@\54„Gɇ’™H”%´^GH“&e«¹ƒ‘,e«XÑ[Ú
+ÒÓkæ€ZÌG‚f•ï¾A°.[8å©Zú¡XúOJ})·NF‚ò© [ˆÛR‹=%H7MØÈkêz¿'¥ ›ôí62æpJ‘¦t«0;IÑÔÌ(OŽ:°/ ®Ô•]ÐT ˜µ@ôÝÏϪtD~ðojP8¹í}# ¿¡Ê:B6Iôñ²¸“‡ª-΃hNڋ婱”ã+ˆ?„+ˆö4\ÓèC)íõBuŸE@²DÝãG©;%©^MG „ªRd
+jI_ÁI;'Ñ„O¥ê!®Æfg *P­n^/±Œó)Mð(ðCb÷¢Üÿë‹ÖzÔkªÈDH›„Ë •ÑšµWH‹ß¶-æótõZ—”pÝï0\X¿Ë,ö´ï™v"l5¶A”Kyª{Ê<Ö pÿL”.OŒÃcfx0:N„ªNeÈÄâÒ*-65â}Þ÷WŒC~7Ù–²}E[MŠnA"‹RV]Ek{RÌK)oÇûÈDnø½ÄadÈàÑ”¸FôNá隊Vò¤<~ͳ–îb¬¨åM
+_mݹœOGÑ îÚ“'m·b_9 Åmr¦Šÿ—†´Í`-ʦ?£ÛÉ“:v[QÑÿïдœMxG)2€yõL«Js@„l2¥Ÿpº4Œ¼›
+§ì®Ø>ÎIÉœŽ6X®Œ-24Åä¥ÇO”¡zç½oëµJª)%- DßõA(&bñ¶G\IR¸#õ_[Òìã9 qˆ¹´"çj ®Utÿ
+#Â&íÐå)>—ì'e£ÐeIŠsíqäH½Êµñ¼Mö ýYrXE%CÚ‹ öëy`ªLªú +óZûžù¥‡`Y|‰RyíÞÔó«yë3éໃ$ãeÐ<
+Øeô«}Ž[
+e³C›BÆŒRÊÂCŸÓ#ë ë„0YÉ1-$eŸ³–Ö!Ñ É¥ŽeÐ1ͺo}¬‹ŽRë:d¡-ÊïêÿýGzå"
+‘óx¢Eš5¶`­ C¾¬Te¨yÙÍ„¢-P}ÄY4ó]i—L{ :´±ŠbÛ/æ þhcóRcUCj‘-û ]á*uò†PRó2&°Ö
+rS0›Ì.î®2 ‹$·¯ïè*þQ]`ÙÝZ•ÜH£¨P»Õ-&ù|ÐïJ¸¨$P#¾¹PÑz­Á.5tÚª/hØ©…¿sÔz$“¼xh§¤m¤ñ
+Úº†‘Ó<­±u€òA¡_höŽ„”ùªÒRÁ1imh8Æd³î²
+ü~„ÜYÞÒS‰Yšw ]´ÄF9 ÎeˆÕ±.]¼Rt4Z Ì÷–wã Ó2†r±>X¯†ŒŒu;«˜˜žvxÖ!
+Ç,E§G-ô8É—9d¯UÙÒè´lry=¥Pm–”‚;H àŒFsHåø6ZtpVÒ›$æ“#—4·yxr¡¶ŒéþØ™‚ŅƲ+V‚lJ ȺÔZG% [n $’E‹i€CMµ)|öIŠG@7­»ëá°­xoUŒ¢Â*~*¼S+ƒ¹õ¡møšœÖ¸s`Tµ÷ÓHÂ:#kµâÂʨCâFV.šVR€6¶x3H8…דWm‘:Ø=м9{è@eì î70ŠYjNO
+êŒ_ÄN*“ˆBÕ ÷Vþ²löi”*Ó
+lMLaIv|Â9×X;®wh¼P µ(Ü¢%µè.ˆspñGãÐD„Ÿ%G p86[öÚòä…Žó¥Äåæ]g-iˆ9õ¨½Ð+Y9𜊣ë™$vV×ËUË*ûig1^Ñ FÂÛÅ )ÅyPmš>%D—wàdáÕ!PNŃ!£ˆ€”m¦=µ á9›• ×RÛPíB•Åv\fß!¿ió 2bÙ·3–ÄˆĹ‰
+@k/K¤„¶Dh“[ sõŒ`ô¦M°€&R×»
+ÐiÕcÏ;XÁXR23xCil<81%Zê:¾íXˆÏ„i0xW0‡YjM¡ÕCöÔ‰öÁè”dŸC»æ°†aWC¤Á“
+€êC·™[¸C5-‚RÔN¾+c@íU±ZôÓ"sí!MA}àÈÜ¢!õì´ößÎÝ0=
+,[:VjIÃ.š’ p lWpt¹›¼‹ß6\É£ÜpqÊ>΀~ëÁÝŠÅìò&–ç[ô)g'Y·³ hCô&ª•8y®rkQ¹ñÂÃB®Ù¡U‘ ìîÉŠ1k2³›––REXÛ]ÁÙ Óª$'ÜtW•ø,NæG£ ˆõ6wÙay¬ bn®FÇ°A~äؼ¥¶sã1A‰V\ÎFH¸,Ó¶.>Y3ÆI¨í@Ì)[±Çui c£r鉥ÑÛ”¨&å`iõiYk5[ âL˜óX€=D!÷¨ºÜÂiÕ:0ÖA·±Ðº©½†™ëéD–mŽíʨmš'Ú[+NÉ{YrÀ~ÙÑŒ©òEÖ‘ì/”xqRUÓÓQG‘éàtq>š®ªþçCa8‰Ÿ€ÍXUæ:iÞT·U}ü“_}ùìùýÇWWw·ç÷ï¦ßzªºÌO§g/î¯n_OONOŸ_\¼½yq÷pîЧÓoø{þ†4®‹&ŠÂH7¾±bÕeÑÛLif?ïgOê7é‹À–çà¨D6Z8'  ">ý‰å?ýeÎýùIŸž<^ýõd™> ï¶6Naç»óM„Èåbh$î-—€Îòl I"£C|5¶rÜäGë^ü2§‡. ©21Iæy•#ö¡4A3À@Ig‰8SJ†‰ç¨„5 ¶™•ÿh¨ÅÓ×è?P@ŸK&°(ªÁa\˜=Ù/©ÓËæ¹ T¬ëûÀ)€#"Æœnë„Qk±j¢…d •xA9xÚUa¯¢ ͵ æ:‹]œ,ú&°ÛÆùɼq¡E¬¤ûþ++¿P¶ýùÿ¹Ê<=ûäöazòü“ež.înÞܽ½½œ¾þçù›ãtswyüA]þäV°yˆg.$z»øÖBz­ÓÌŸg/Žçןs”o™ûå?Ÿ?<ïoûËë«‹ãË‹ókŽùñýÕåïƶËw‡{üâøúêë‡û¸Á_Þ½9þÏ}ûæîþá»!áôîîú‡cnÏ¿º>~üöêòøõ÷.úØ~¿2)_~t{ùòÝÍWw×ñ½~yÊ n÷È“ïÇÛéùýýÝ7OOÞòg¦eçéOü]âÞóôêà‡úfZ§Ï¦¿ý}ž.‰¾z¨ «t@UÙÛlÑ!Å÷õwßi‰or<Ï¡¹j|ûëÞëã¯?÷Ù?Xü{“ûðÃüøûô+0èÉç··ç7ÇËéõýùåÕ‘<oéi\ ª[ö{>þ{úÚÎqèòÇÿm!èý-©ªdž¶ ƒz^ëôêæD“¸¡°ÿÿ©‰XªT»(~Õl§øþÿŸµãéÏÚqÁ‡µ…*n) µxjóÎÓé)•òê«m7®ã~ÿá¼,5÷ òÄ]’†6'ȱZn$AäRà±ÿ>U=—3»\ÉüÇ@"NïÌ™žîêî*4®4'úOŸMU}]~8šX›ÃkveèLBviŸ…¦ ‰Ò7&›#ƒÓ0皬 l‰v²ß IÑ7ØfÔɽ<º3¢^ƒ÷Ýõ³ÔåÿŸo¡äûÊ“ÝCYñ¦É`û±}#·™‡©rã‚ ¬Wºv‚ñ‡Ñ¸ NT¦)„ÆÆ9Æx¡§£õØN~R6±w¿ð’ÆGüíµu5}–fòÓÉ·DæÓ7·›ñvá÷À¨"S0(Š¿ÄgiÒX
+ ášl"HD.‡”Šx¥RUe—W`ø  0nx˜ƒN£AgE¦ †ïB´ÅGWª»S2*Ë”;ˆë¦=ø°R^ÐE(.€+(>7á<º¿n­ð¹.›ñ:qIdGõé…×Gž&ïO~~¿yhz„Ô× ÒD™Î;„Ý·LŒÕˆÅ
+ lßRÔëk )ø8ÁcЖæšÊ Š¬¯£€d<Aö¦yGN 2„ë _0‰ã„p½Ã Ss†*ÀP‡ƒn D•ê·¥´bu%(M¡Ô"•h°Ñ€%‡á$€9¢ƒAvð =‚'#'IÜÀKÓ4´dåK°p‹D⌑þ °Æµôyy±
+ì,¤hìååÙÅùÅÒ.Á^&×¥ÚûÏí­púà¿¥s¦ýf‡OCî]åBXPAž9¦„f©%ž_‹³Û›k¨ƒ¼0¢ÇqnNBŸýÓ1ÃqlÄ\VJxשFœ³ Úö3ús³ÏÇFø€.Œ/<(à‘hüCðd¥ƒ¢wøX^3Xª#¹
+Õrð¦ÙпràæÈùú¡Ã·³|•ÃýÞ“¿ÁÍcPEI3<0äoÕ‚´‰ÎõµG}›¬ÛZˆNˆ!Î'X ÎJP0,`"’©œª6KêàÇsè°&’‡fB2äŒÃ9hýcèÖ±›4ƒ|8Áu’&LQ70‚@‚Ô3!m„*¯ÓdP\^(ËiÀ:°‹ÅŒ10c#¶34IW¤ÉjÒ—•áaÏVÑÓ®=!wGèh°º9:.Ë´’e{g[·@´õ«f™Ú--èÝ0g¦›ØÑc(4 t¹åtMÛÏ
+ºêd
+•¡KÑAÚŒø·gÐ1ÖV$&|G\}]Šn0@ÄfÆ3 BE6ž²z8U³²·–´‰R åuùÃu‡àFwh©X ¨×¸£¬ë8Àîæò±¥^^Ú•½ŒúlµZÚ w~iÍÅ>;û_ó1Ì\4ï/ò±ÿø+ô(8’Ãëùšåòl³y¾»ºZsëÞú‹ü?’Ý Ê›ƒƒ‡kô´ˆéÍÕv};½:ÿ¸¾Û>m®v7å8~Fël?ŸíÞßn‡ß‡Sýíêþyw³Û>>ößÿ:½ÊÇ
+Nÿ£ç4dtÉ j¢óT@Áfà¤8h“0}:éYE°s,k&-"5Š`‹ÄiëŒ*7Ö¬ŒAJ<jsP䆚EðC v̱¼¤rð
+‡8B!
+Y±Ÿàhyœ4¸VçŠmÔ,{!áÓ±
+™Z‹>³ZÍæ`êý¥·¡ãü—òr9n$†hÎaÎ[%ÿ$Îr
+ÁæŸÃ¾Em|Ó@ä 4ºTÎ<ºT6¢κª5ñaú\tÚ®éOB°8¹ŒØQÅ:ÔÐÏ0ù¾¬kõN‰`OªßªÕIÄ¡ú
+$%sA‚€›Ÿç>Ô‹wõp½ä+þØDÆd«v
+ÞW+½•Ð\'ît3{Â7c¢ÄHt[1á‚œ¯š<TP‡nıAMy:oz
+ /ç-›ÊѶõ$îÌÝ®N3Jgv´ÿp§áÓá€I{9Ý*hƒ‚·JxñõvýEgN­ÞlÁxQ§Ãe-éémÛXœn.4À~™ànþ²ûƒ8èÎëD@9÷=-¶ÅöÖ;X¥s&£
+“£x3Š~Å’9LÚÕ>?6‘Ö909ÓR()9vÿš\쮟b9\8]ƒ-(¾\‹ÏYP
+ù\”ÿ„ç³dA­êþll6¥“*b²ÕÕŽ˜ÿ
+H‰ìWkOÙýýî$…æ¾É';–³X»‚u²Q¡1ÌZƒ5 Žù÷9§î<z¦'ÁVv•X+/tq«ûVÕ©S§²os±QÅÖ„hƒÊ¡M±\I>ªÛ裢NÞª“¦g:m~n~ó®¹k´zÙõÿ~:kBl“á¡ mqêš\59m“‚Á”èÄR´*„¶¸,oÙj‡™Ü¦âŠ:2º5ÖÂœ²NW‡“/EÁlK,p¡%áobJÎãHlµqV >˳e”|¶.ŠÏʔڷΤ6é²õ샱[>W1×Æ ]ÇéȵHndž CŽ[GRMëÚâ[mu0K?‰
+ -ò' ¨§!›à=
+îµ´AN^׎ÛØ\Ô.tN¹6ûݖŹJ"kº.ckRícêPÁXL× ¦œ·œ` aËPŒY5ªÄAÚR­#5EºySv<Çè;E´èI‹O¯3Z`-o²BEy­ ùÚ$)U­ :°kWõ `kœ¥ÓÊ´bûŽ!’äÖÏ©5Â@ÛœŽKïl ÌSÚr"#híU×P ºº‡¾“> —cåúyÕDuøLýôg™2Z}ÿu=-5Š¾Ö(š˜³$)eiÀ¡Î_0ì`01/yÛõ“ˆYVNFÊÔ Ä-¤E;Y‚Ú·¦u9Dü 0ňr11$h<— áƒz;>[¤/|NEðí‘ø„Ð-@ãY]‹¡§#¡!ó°ÍI?@¦ 6W\”âk5LFg©µŽ¦Òn¶˜Þ¤Jk¼/¸L¸³ 3²H”6µ:—¬v N&
+‚E"S2š$¥ƒ—ñË(1¢`ñ2†%ʤؠt°H:oôV"@ÐÈJFÕ¼³
+¹n¥ñ•ß€Ë/˜’­D›#nù—~rN›#Þ42¨9µ¥9½äî/P ˆ‹¦ÝkŸ6HX1UG#~/gG‹ºe´R¬Z·J(ÈÂ?5QSÃ\†ôRáQE€¡ÀeŽ•z¢<òCÚI¡¬P—T&8ì0MU/'HØÞ;$!xèsóLŸ£‹fÔá‹Ï//ï®ÏnÒ#Ø
+OCRùºù$‘üVøÉf,¡&ÛÌ”ðØqÄ
+ö§ Ú»±M™èÉ}»/ꪦf>acoc¶^oËåÿMM|‹¨¿Éà/ƒoÁÙ7;œÀ¨"ÿ‚v˜\mXòW¢^‡ ë—W¯ÃÄ!êõ›Z}¤Z&÷¢V]št˜À~ :P;ü÷DèPôÊÀv6
+/nn¦Ûgf£÷Óñë»ÉÕø¶ïj˜\܉ã÷ü?8I@Yûhïè=
+œÆ‡58N}…
+穇ux½Æ#•8œ¾B‹\ü¼JH &5ë<ìè¨ÜÃ}OÊNiìËtûB]n½+Õq›žX?¸ø¹ŽSìøÜS${MåÞ—,E
+èÈŒÚQð±ú˜gÄjvÆa¢°F}yÛS¾Düx‰·§ˆ|¹äce>œž ôáõ©?\% V”ôVí«= ÀÁÅ“V€ú®G/Ò8^àõ”E`¸LrmœÎÈ*)H ‡¬Ì±»%T6ÚÙhìo
+¤âÞ®
+çÿº]3 ;Wãë_³ïÉß¾~û”¨K€‡‡ÃtøüR›ƒOsœ‘éÌåtÿ¾ßF¡Œ“ï‘uºX-o¬
+~D k´G‹wûç¬tò,˜Nã‹`~‡™åg¸šmQk®­ÑÏ
+ÀàHAro¶¶>» aòxI°2[˜~æÑ"[PþÉ]´wÛԋߧÉ"˜Z×ó ó ]Û_ÁÖ'‹ErŸŽš-ž_õG¢!pàqŠ(€àžÆeIØ›!ÇWÌþ’þ3oYÅïóöE‡?‚ÛMñ×µ<¾>Ö9ȱìÉ•¡ÙX_xã·ñsÓPc­™c…•FÖ7‡=tc<Ô1±ëMƒìà\ïIá»^7ÈMV@Q½ƒ_90ÚÖ¥‚tjæ·­ü#e[&\ @st¾8t%m²O©W-vkí”Ó¬SÛúÄ-Jžq¦µ$—ñ-8œni@…(õžŽz7Snza( hÝ<Ô£ è…+]f ‹©‰—]ìé÷§ì†¬ð‚»ƒæ†…3ÚÚ Ò4„0Ÿ:Ã`¶Øx'Ä“œ9¼f<j#ÃOg
+Dó¯`¯{Ô|m>Y¼t½óÖÚ­;Û_T&c@>”ÏÜp9Ÿ¿ÒW¬4ÌYe@r¯XÄPÑéc_zÊÚ±Öcƒu=[_ÁË?ááç™Ç9³îaö£õ¯k “_¯hüu I„„¼·ÖÑÆè€xˆâ+nšho]ú½ePbm–Æ`ŸN!„5êbêl³ÙcÐàs wƒâ@4øv4Ãð¸C‰ÿ{®’•Få»Ô¬©ç0Á¹ëV„O|Ii}Leó@D7šL–‘ÆÛÍ~rK Ñ®”׶öZÚÞPÓ¬Ðo•žãÍyñÙ4žáÀ Å…Ÿ'“¥®ˆ÷žÈ{"_méCií
+×q…S¿vi÷ùú½cî’Ï'3¬´†b«N¡Œ¬£/Ëèüg¤Fã±Áñˆ®Q1n
+B„v
+f™t@"d²Ì> Q¼ä 0Éî×:ï^ÎEg‰¯b]ei =@¯‘{ \íúÒ“žUEæqÎê‹cÑ}qLð«&[üªe¥Qù.5kêYL¸¾¨„ Ÿø’Òú˜(Êæˆn4™,#m]úf?¹¥†hWÊk[{­ mo¨iVè·JÏñæ<‡ølÏp`ÐâÂχ“ÉRWÄ{Oä=‘¯‹¶ô¡´v…ë¸Â©_»´û|Ž]
+÷ûN¶>Ç¡^êj;Y¯‡H;‘…ˆ¨€fdag3ÌRG¹h ¿¯Ô Ïûü!
+Wè‚™0kö…JîUv0¨<³LRP™*³OBÔ.¹ED²»Ãµ»—SÑY¢Æ«XWYÚB ÐKä·,‘—”£ ö|F ýsÎsË¥1a˜Ô—Æ¢ûÒ˜à7M¶øMË*£ò]j–T!$éqÇ@Âc®ãLO:t&|âKJëc¢(›â¹Ñd²Œ´uè›ýÜ–¢])­míµæ³½¡¦Yß*=Ç›óâ³i<Ã!@‹ ?N&K]ï=÷<Nà‡™J-{(­]á:®pê×.í>ŸcÂý¾m§©«Ã6²^‘v0âv#¢Zš†M1m2Á¯Ô Ñûü!
+Wè‚™0kö…JîUv0=³L2 ™0³OB”/¹ET²»Ãµ»—“ÑY¢Æ«XWYÚBЫ䷬’%g’€Þ;v¨t¸H[[J=ß+—Ç„yœ³úòXt_üªÉ¿jYiT¾KÍš*Æó‰'ŽdÐ LÀ£³§eò‰/)­‰¢lˆèF“É2ÒÖe oö“[jˆv¥¼¶µ×šÐö†šf…~«ôoÎsˆÏ¦ñ †
+0\ßʶÑÊ:~êj;Y¯‡H+¡Ng!"ª YØÝ §ŽšNã¿Íï+u
+aŸ
+j1uýÿ°_­Km#Yx_€wÐf+S¦j0ºµ.›e«°™
+\v& •JQ²Õ¶rK%ÉÉûìsº[—n[Æ&3žØ`u:}®_Ÿc9|ÑÓpwƪa›¦ñøÎmg¬Ò;ÍÙà–WÆʶ<²¤j‡&W× ÑÏv`
+zÌÐ䪮£ëOº >Ý]‡)ΔŽ—¦8¤¸…ì&É*iíAëy¹ß’,¦–›E¦OÂ`B ÃLäËÑ0ÍVLûÿìt>_©¨](u i¯]}ûiŽ*¦»g72ì¨\Óƒ-gí]Šl$E´íM´šÖÓnm„íuø…&gôÞáoàÁ”ªÀ6Ø»{‡ç$úFòƒ¡Í#° 75´y[vx< ÍKX“ÌKèeÞàîIžÈf/2 !UÕtåÝÊYÿ#sÎF‡WýéiUjš ÒcovDüi­bÔ_ƒ¦ô— ©d0…Þ%“¿6U­%ºë'¼%3¯¶XRƒ¿ÄÐÜô‚BÐ §£€À+8Fc^8À>Ù¨+w¬:ß]öo»ÿV¤Ñv™i¹¦ð2¦©9ÉUc4pí?âǪé%™Ûéb8Òìc$n•£èì‹òø*¥Å»Åfý«¥dé]ÉæÃßI0ˆ|Èü$ #*0Cïž?î/º€l¤êè¦e»–c°/ª®Ó>ÓU5ËTÎëo&Æóß`çQ—šõD½Ò*s·dõ‹_qÈÙà÷] ä‚íЛ–ªZ4þMMu5wÍéPÈg"¹Ëá0Å™Òñ²ñÃÄÆ·Ó$Y%™=èe=/ò[’ÅÔr³ÈîILèÂÖÔ‹µh˜f+æùŽÁw ®ÂÇ %ºðËZ‹Vß~§·›é>'‡¯Å6>è\®<‘R$L«¿§æøÖ²¤ñ;! ¾Õë
+Äp­}z“˜HÓ,øbÈuèà 7m]u¬ü¼üÔ¦é8†¦+­Èmµž0L=_"¹›n¶" êboë\SLŒ³ö~Á9wÍ^iÎmGa”(§^8Ì"‚·jÒÝtóºjª>¾/1¬d«Ø´»êA³é]`XtÔTjj6B”N ýÉü°9Rдç`…Ÿ=_–ôš³¯ÐþÀÔØ—¦ dmUê<Ë…ò³§N]¾è*ˤ¹&åÃmº®íBÆØȵ¶)c
+gìz͇ã­íçRžµÕìôŽ}/†‡›8œŽrÓ“Ó}vÖ5Žý¨•³0œ¦YâeQÒôâº
+¬‘Ÿ¤$“ø/á…~% å‹×’Ì$ʼ ßtáêòJ3øÓøôæ­7
+ÿÄ^ÀšT^o¾—ܱީi£b-Š½ØMÒdð€?µ§ø3„IÞKòÃÇQò]ZøŠÖ‹YÅB?œ&¢zýøËiö'cÜÏ°êMÃì‹@º½`‡%éÎD· çùÊáÔòpv€ 2A™×ÇgîÍoÄ?N2v\JW]¹ù‘N而ør CŠw ÷†A†)Ñé3Éô§ñ¹ »lŒ{¿ÐÀ\¥{³«{`Kãã ÃÂ"ÍPð,Üù¢ÆìƒÅöûës¥‹ý,®_ã0„"£[ÚÌÖ;,H¹£
+;í{¯ØФV8ÅåñâÆ{oã†Ç÷š¢ÛM~™Úí#XyDÇ”ë#WUÎák¡-C9(—u¤Î¥0X:?ªPEJ(‡ “Q¨4A…ÐSEŒæ„%ùÀ¦J÷™nEÕ/•/@ºàÐ#]Í!ÒyM$bP=Æ–@6ªQ›,…OîÓYø”yÔÈý_Øev–.3¤³óòñ¶è‡«6Íç¨Å馴~µÇ`Ô¿sÆ(f
+‹V…Ò
+ ÔòLjç{jÀõp©#þGÀñtÓ)RG•¹š \••rÌ Rk1OqUñ0*iãÁ5¬(qHNMf®.•µU—’ÖšeêуuŠ4E¤™Ç«™;‘aM*ÕDÅÙ¨JSök ^De YªèCT
+Φ[#È„Vko_IzëùXÉ"…_ËäÈè\JqÏ´ÆT`Ž€¦deÕfñµB{Ñ0ã‡*Ÿ‚¡÷âRÁuïTvŸàÚ(¥7%)^®¤Œ®U±Å1´FÜœ¥e4t:V:¨™}émþóYõE‰g^àäÕ
+›éq„6 ¾ îÎêËïÍÙ;ÌÊ9Q…¡U_Ø;VÍ+VÙ­nÕüŠ]ñÞ‡˜÷Ïl§è / Û»z(x>¥DS_ÚQBp’*`O 5 øCg; 1ÌWû´Ã(QN½p˜E¸¡qœ Æ0³ä­ìlËÎ\Úµ×(®©|«w?éG!óªãàŽRIã-ö²1 X°„G@„Ÿ@=P«Cy«å¶ނ¦/íqi°gøJç>ñ&°ß…©£Ï\ÀlPŽ“„>q@kQƒÅ–äŽ>‰Ó 0ò‰—y{¯o‹g˜”è“0òÑç«÷"×n¾QLBÛÀVIПf8¥Ó@AEo3"Ö _@ ÆAè'' £+‡gà™r—þÉîcÌw¿ôæ«—¤o`öìt2’¡_=:
+q,]OàÌ­–k’JO[êB«o¹cBZ1þ*ž)¿¾¬]ý€ø ¨¶‚m=œ}`F,·OD¯)üOô„ö 'æMúS€
+H‰ÜWín¹}‚¾¢…ldI±³qòK¶×[µvì•œ¤@¶83”ÄŠCHŽlåé{ÉùâŒf8㤷M
+Þ€Å%${õœ&~¬Â]T9Ž¥–7„,Ûï/¤Hf’à„bG˜z4FÅÿÉhlÿ¡qñËäìð·ñè…=fÿU™Î-_3䆾~õæUil‘½ ÌwX-Ëp¼>=}uÚéš  ô܉”CQGˆBá`M
+®÷cØÄ A¬º`§6Ä#F[QF
+§§æùÛT'©†¯ÁÅ;iÛ›™¡w‚Ñbj naþ­íÅW`ÿLê!·×eR¬¸i;y†nˆÚ …µ˜~µ%š>ûŒ¾0~aÛ¡Qg®±OÅ…'WY(áû;£Dt%%NZUš›À*us3ïfØùcïfÎ, ȈMF‘¡¹àªŒ|ç³y J‰úʇµ¿zæ!Š‘mØó*€®h¡‰Ú¥iñú¯ï»ëõi³¨zÄtÚQé•ËOuk´~K1£z?äÕº«Oyô.W´³PŠ
+Í’è[Ê­hD5¨Å¹$ÓaÖ¹©­Im+}飑߫0ã×_ТÜ\NÎrÕ;)ËÍxD_f{ïpfÚÑ߆¹‹MÎÚ‡4ío°ô6z,Üö~Ðæ }Šø°£ )z¸6ŽDvú€&[JòÍ4¤ãqùšÌ–Û9¡tjud@ðBaR9dúÏT>:~Ïû'Xå"8R¸ mK+”™Ê‚Ÿ<µÂ8"3>H\óüGnšçËßT>EòŽ÷[àߎnø­ êØWt%?ót©gfFÀ÷T—L½£)>¤ÍŽÇ05«
+œm¦Ã&ÃÊË“FÙÆG†¼©¥¨V\³#|÷q@Ó¯]I®ô•²¡ÎÍ4E—ÆSCîÞQñü&yeËm›9[BG)4=“ .X1«hù 1ªj<¬0 jžmþ¶öYnVásþóÏ8“!¹äË#\ñt˜««ÓŠÕ2ҭƃžbÁñŠ›e};p“ëA˜^eR0;æMéâÔ±Ø%¬Pþ<˜îäÆÐÔb+!``€¹¿ÀÈÍòa!µšÅ‘¡§ko.‚')ýæãS^â†É¾˜_2údóå»)@d;Â…Ù×õ[ <
+~¹¾ý ÝËÕFPþüI¶¾ EåÒ{cï"îJøm 5Y_Eµ¾šôÓòisÙßxê†1º—È Ps÷3p¥Rã§Ýkôáþæ᥹;hþ ‡›°Xkƒ‹ýæ%EI ]¹–öêjU›B×ÜP¤©•J…ˆÁë© Ú…¾,B{,Þ,K„²5©(ŒU×¹Ÿl:·
+%¥Ö8ÆV å:=î¿Ê ŸÛ«ÇƒÞ¾JçUK‚+¤8-P³q6G‡jÎþ&ºˆÇ3X}ƒXUtýeV¼wtÚV Âo
+†’ùˆÁ¦"Z=>è|êP„5ŠÃš­JB/Öõ=BH¶ñ¢}‚C"К*2 Ù
++uþâû61þEZ@aËöÊI•çœÅ¾üH–€=E7çF‡àø …+ß‘útS]„M¡ðä¦ÍIö"÷hêœE»OJ¯qqîÝ]Æ<DUt² C&äo®
+g[Xµ‹NRì‹xD°ÿ–ê;~ÍD9ˆ>äÑÆ¿+€È5ûjþwiˆ‚ãmÈÆ:“¦ƒ´ÂôÛž²L+:|¸¾{y/×ç‹h+KŸO†Ül•ö†DÓ‘'òÀI*ÀÜõ&—Áƒs3$qTÕMê­·Âí)‹xïÚ‰»®àyJº—™ ܾ€'˜¼Íè XJ
+ã­_°ûã4År˯‰æ€G‡H4 ¸ˆôÁ¤X=ž'µRî+y¯EÌäú¾ñ*7ÎÅNZ±ÀãîÖ2Äçm¨¨á +(v›_rEUª°‡¹vW»bÀ
+»°GOïš –›¼Öeöìkæ14ü@NzE¹Ô®>ùjÙ+±ÉŸ*³ãµõ³<ÛQ{vˆþ>;ü>9Àîâ6;@0–}íÍJÚ¼vjÄVÕ.h›õ/÷Û‰øŸîïÃУ‹¸†œ …®µut”rÅÐÖíºZ31n¾# ¿ Ñ€qȲõéqú£kÛØö(ÉW°ÿ§É‚ IüÆè¡yJ[D‚9¬ –‡ Q«øÕ%ù®ÆV¢½Æꑧ‡YdÒ>jdãcvÔ±ûT ˆ~ 4áM7ì„aÎ_“óΟ†
+Ÿˆóܹ
+¡_—èB0ÕG%ÿ@Hw{S˜ô™ÙqlZí€V*‡ó!–ÂÎu)
+±ž­O b®º©ió~Dqú.»BÆñhí;’;êjXD²+×Gí0"ôéG&L½W±§W¿ð¥^xaÙ4Uª.ÐbOx:ú7°|m·zðï•„“uÜÒ©WÃn¦#.úªÇ-’颂fÞƒ.O¾YÌ+lÚ:<Õ  ¿:¼™j68@¥¼ZµH£åÇbXvc†oÚn€vÜÀüRLa>-5Ž
+SÅñÂ?Jݹ6u.  RÁ–¶üÙ@,¡Õ{˜ ]Æ€ùa†ß½DFضþ ΉN  3”%lÔëö\‡Ë„”GmÎÂf¿èIHbwaÏÓëAÕŽQ½ÒÂ5äÒY®¸¨Ð=zÑ´Aðëa°ô
+
+ÔÖ¬¥jÓ$qÄ^A‚ Š9`”àþ0wí“KzþÉ}kÝnJÚÖ›Ò'* ¤ fDO&‚“„íjò@{闳ʶº±»”£­ µÚØõ
+ßš©òuZŒ¶•°·Q[‹SâòêéÖ•}1véDÙi"Ù¨Õù–ÖŽ¼
+Jüö›3È–°‡*$žTôï Æ°MÈXeQ¶ÿ ècp.ÎŽyÿÿ¬“œ¡8lÂÞç´ô­Æ,î#SíÒ›ÄÃ?³ôÝËMuA‘Ç
+Sà±éÞ°FâÅYx¿í\ÔÀ¿š×òŸ¬ic¿í ½î¾áƒBÎ÷a+µK¨ð•cŸúÁ¼ ”¹ÄTG3 OF‘½^cÑ[b2}k)¥–‚…þõ>¿æÁÚ}8tÝHvªvòRº¤ðX ì²+@ãìM0#_ šªá{Æ%ê9DÁĦ|Ìå:ÒáN)ÈS¹óEðS[0t…i—;{º6T*OhÉŽlÀ Ï?‰DË*ÐÇ H2³šó_¿Ö¿¥a¸Êçñø2ôcε”ø¦¢z-M¨7Ê•anƒA¤™ó¯)ØÈåú”4gßA«¸sóÄ^wâºqÖ]¥¯<eB"X¼9€¤Vƒìú‹=a¾Î©L嬭޹“"ÉS˜n¢yvºCÞMpž`£âRìËÑTsI :¾…umšò”?`C²ÿ+gЖ‘±z?!MòAŒ4^Ô™±ŽÃåGøÀW@?%°K²~Ó <E\Áµ4iabv'¯lhmØ„¸Ç ZYØÒ|/ÙÍ,›¹kóÍcyB¦OžÝ£,®9\lY$†Â;|Ùß%ÿš,ÐÞÁ2–>y‹hÖ]6¡ÛÒù\o¬N Ž¼·Ï/™¿ƒsµpI?l'¿ù XŸ Pté$Gzs˜‡j¸/z=±d»¾B§¶ ì»W¤Öh¨ø.‡¬7¸.VÃäçIæ IÀŽr‚yŠ}_ 5†ýÕÉÇ¡Rßù»(X²Õ _Ë
+RN ¨#¾Ô÷PôÅYˆu‰sÍ6¢jù¨DG‰b‰Oæé.÷8’x|’íŸq&ÙÕ»@FŽÔ#ߨdŽ?žÎA¾þ1¯¡á¦žß‚Ö
+~ü°¤´ë=ŽT‚è NPî65ôXSPŠùÁ….³n©AÑq¿œ•½(Ènv­¬npº—þÒVÜðî.˹»/óJä nD}XÀ(Ò^ør˜¡³>ñú ÉdštG‚â0j°ÿŸ1*Êî?Ôwké¿îŒ;Ú•>ÿ!J[~«™¯3D×
+ n.
+/G÷Âñ[V"âEPôItW(wC8º[{Yq«“ê&궄´›?.'üðÊåì>¯þû:Á9 ¶¬‘^V…íõ358êKŠZ–ù¯½0äÿ£\m®¨úþþêMiPi4RqÌ»åÝšhÆWÉPq¼‰’ÑP;®…Qѱ\/ÃÜ ½Û/ÍeŠC¥ Ú˜Ú±îíç× 9'…›•åû‰`êy„ˆâ `RwÌ!Î4„w{`Z}FÐ%3@Âí7!È6MFó¿†)èÅdZnƒÅ±G6«SN1) è§iŽXq"¨ëÈ­i%ëK´1’TÈoJás§ùôœ– ©zî5‰Óظ*ͦ$;å&C._ÊPÁRR0(Œ¯ªÁ>àµ0wu‡"L+íSKLû –,IYy á t7Ì•É)NÓ ñˆ‘[ŒÒÈ/æ´Òœ”s`îÔ%T¨!˜æ¸¶/ì1•SµXê'{
+öÅšJÁâôéÅ›LH.Mv¡î+éëŸè'¨ %¹ùœƒøšð¢G¡]A×d-¼;Ckd çýɉu¡ö
+ìz«u¡¾¾×Èñó9ç m1èˆ{Êå¡ç¦Ç
+4YÅŽ—5 ðû ùZ|f¡íBu¹èÍçŽÐù˱¡AÕûåÑ×Ã$¾å ÐYŠœËß„3´s8Ÿ^Ò)Æ »l4À:!èdDV÷§¦#4Õ!<ÈÓœ
+aX’GP
+nÝ­ø-böM? ÖVH(Òpëæå3kZmKx_<›:äëT«çF²nýÄÒ¶oG¡ýµ8ý¤<™‡ˆ6Íàd×UŽ %¨õÝD¸uÆfò׈9ØWè"éƒZJ÷\‡ZcºÜ3­;¹Âö5XR/‡Z›t¬ðú!l-Øׂ5fA¨µZjox¨µI=<b%„ö2k¼NVóÁ«ÏÖf {rÑ°V"9û©¬Wµ`É´ÇäX¸oíÀ*ä¯ú³B¿UëÙhG¹e\—ž²(wô_£ŸÚaV¢™ž€ó0Tõ‡„Ù~E}¼jýÛ­{Ó5Âà­ûå«òIÏw CÏAŸc©Ç
+^6OÚÙP;»m§ô±o ­ ð>s7ž7ºÏo@<U鲊¹•<.ÔÄjšðª}λ346™B¡à9P¶zìÞW­ÓBÕ+ïÝÞCcŸ ½Ã¦:åÁt‹a^ªUÿ7(c ¯Zýß<­}[ ‰Ö½Þc-ÎÓP¨VýC  Õÿ„_,¾Î¡P`9‡ªÕ?êBÕúçìk‰ü
+Ú¡P­¦0¡êÙ·`ÕšbhÙU>}Åk¿ŒT¦ÛÓŸŒ[\NÂýÙ‡ŒLxÕ·—ߎ‹ïŒ¼3Ô¢ |ž• µ|8º+ÿINÿ–ý@¹‹dˆ 6x²øèÞ› ›ÂÙ¿— ÁtMRƒêB ç@î|›Ñ¯MQH×}m…tíµ®ªdÆ”&_¨¢Æ#Ü €V_·Ú¬8—?냮SÐ7Ù+Gw<‹ÞýûŠÌswpÁ`V¥ÔîÝ]5‹šòkKuÁ L-h/ÁktôºÝã;º˜5€ìÑ ÙŒ£¨öPòÕÚ%9-ê˜nØu¿¤å©ÛÓx‘l¨ñôßf险¢…¨åüR~þ]ÐÕ‡±ø˜ñG þ¹PÓCíÝÁëþ <¿ß?ïÍ¿ ‘cNªÅëèÁúóýµüÔ;‹? Ö/&£‚åÊõ'é~ V–ø«Ì2óÊr#ë™U›ýü}ä㊛©‘Éÿ:òtyšnþ:î.x°¬Òx”žEÕ*= Tz\¿KÝê¬!Ýð¶dK
+^.ò3ëõçߪƺм·Z30Wpø\ÅãRʼ·æ%Ýù$µ¨ÁÒ_qðì!W+àŠs`Ñ'ÿQŠ–_sü‚wp-üŠ³—•ìÏònºaðÊ5LÂüì*ƒè±ƒÍò…"ਠ*ÆÐã¢Ã;ø’|6ðÇgÐ
+]f‘œî˦ç´jåºçôc2Fd—^Ib* /Ë@U­n ôh–ERꋤ[ú½4•
+47ç1á=¹Š-:ùçBx¤ ‹aò7$
+Âœt4;¼èíB
+¶ïv3yIvÛÛ}_®åÓ²»n'ñ+ÐE„z™ÕÚs ð5Ïãú¶Xž›ù‘*¤N®Å½Daªg3[²TÏæ´îJ a*Ö†OÈ=ågë~.÷¿H%M>^õT‘…úëÙ¢”Ë5µú++¼ÁŠ÷›Zê‹7,øã;|ƒ•¢ÿt¿éÓ‘±ÏÁ,Æ$¼ng“,–}DNõD¦3ZIiNÄÖr9Šl¯®§g§ŸzoÒËÂéÁ7kµ*ZB™·ëq(=xh†2_K¡L§Ü !‚­ãŸF¡ôüåþ ÄðoÏCéÆM~fKßÊQÚИ²óÓxF+|•IÜÍWVÁ\±*)ÅÑ¿uÙœuÜ> +eÜ}å\ïø-žÏ 7«Õ—p ½÷ü…¾Á &ѱn®6Ù ;/Ü£©/Å?×£„“ɳG‘Hÿã¿;ù£‡£_à£Vøü¥
+&)*¬¶B1ÏwálS‚8-·£/ž»kð¶¸-e½w½n¤N¯âç2·M^‘úº€êïÞ]¢›’³/[IMKmà°}ë†9G];·\×ç¦R¤¯ µ˜5"ôž°O©”÷+¦„
+ÔŠ= G®Lš¿!È™z0éçÆ.íàë´)+ 3ÌöM´´LD]š{‹Í®²1èE(·®þUÅìª$sN&õ\X¾zõÁKx%µº1Æ’oµ©ߧÞ"ƒ…aK Ìx¥ušú!Mr³y¡l ìƒ-ò±ðá™»iq)Ô¼#'Oνd+¡³wZ
+ë4®¹ŠÇNž„{½KÎÉ ý]e äU\k¿Ê¡HêÇÒ5„ÓI/í|8R,bŽ×sÏ×ãDzwu/%ô¿}n|\3&9¨h¶ 5ìòF’k‚qJ|ŸZ¾¶K@êîëñ½â£I*ßÊ5 ÉÀ"P„ðÅÐËù&Uƒ)©­4w‹9IÍ#PRg´uZý£lO·rKsãBÁþ•ªƒ=uÿ S³ƒ+j?wÆ';Áün íÉZj/ç$”ËÉûóŸx}Ä
+“h¼ý·ã¹v¯"=FÛ 1[NÝA+Ö†£ ÝïtˆÛxUšœÛÍ`£ØOpÙùU¿AµÈCÌa¾B
+øó¨Üî¶Æ±G/>ŸcïO[û؃¦/Aø…ÈÏ&ã¾ú@0L§Ór[‰‡åömÏóþúâZùZ¬O-ßÝヲз5ö0ã•aj¡r.¨ Þ¹ˆ[ç•ÂGV,ÑGVµä†I‰ šä— ä™4%§’í”.°l럫€…,Þ[k©šïàÇ.t7ÞÛwн\ho¼ê¤D)U®{¸ûûã4Ï©GÀN xÄ£0HJìý‚“*êROJü2û«˜§CÝ”ì‹O•T={·#NëPË’8§åvôÅ ±èðÎLrÓq3Öüýz.™±–ô7c´tnð“12øR
+CN8ª>
+‰97L³¡­dcìNÓr7Ú¤ŸÙú¸N‰G=ú¥%d¥Ýç.ÞÙÎ[®åÖÕ¿ª˜])씘¡B=–o—‚:žÅK¼ƒ%³C>­n ”òR´¼<T÷\€…aK˜ñʘe°p¼pþ“Œ÷N¦È¼Y.U¬ó¼YîzfÙå1ñ=³\ªöSa0La¸‚?ºü¡!!
+:û‹I1( ¨<Jj‘ØI˪¯h'$‡Ùv²;É*'PI¹ñ4u²î"ùFBŽaÁ[ø´G×õ¤Ã³/CÀ½’ô‚“‚B~¡Æð!È®›½7³]Á© >†À9†
+{Œ;†½™ê
+Ø8ÄÛŸ^d6šù\§—'áŇãÃT¯¶Œ°’S»bR;y…h4jo#åS}âG%¬C¿yM¤íNËçûïîä€Z{¦J'½+£—‰S+m˜ü=ÄÜ@þ
+©ð²2šTH°.|œJSN±=_¥C³Ï
+Š¤¾[à„Pg^‹ð$—n¼‡`ò[`
+FáÍ䆤ùê§)nN_ùy6¿›ao¶›üh6
+ß²>W»Èo ÷ÞôšiçAþô/ªœî­C*…€¾N,Ƭé[¨­S¦@õÝÿϧ©“ÍÈ*ßìF`‘k”H2mÄS
+”c䨤 Z
+/+£ékeÂ+F*¢ª~¹ Qq¿<#î¾ë€áGW‚vWÒ•£N6ÊÛÉ—P*\x~ëN´­’œå¢HÉ?/IÄŠˆ¹tÃèÍXðÔª•›¶ý[P29‚‘$¢ör¹\‘#ÌÉÊjFµ÷ŠƒšvP+«7#·åFïØ‹2êlK^™èC΀ES†œY0xÝŠ
+Äa :
+èP÷ÜÍoæEûõlCº%7LåfOì
+0000000016 00000 n
+0000000159 00000 n
+0000060423 00000 n
+0000000007 00000 f
+0000196234 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000196304 00000 n
+0000196335 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000062176 00000 n
+0000196420 00000 n
+0000060475 00000 n
+0000060833 00000 n
+0000060967 00000 n
+0000062486 00000 n
+0000062363 00000 n
+0000061752 00000 n
+0000061033 00000 n
+0000061191 00000 n
+0000061239 00000 n
+0000062000 00000 n
+0000062063 00000 n
+0000062247 00000 n
+0000062278 00000 n
+0000062560 00000 n
+0000062920 00000 n
+0000063884 00000 n
+0000076980 00000 n
+0000085628 00000 n
+0000099054 00000 n
+0000116678 00000 n
+0000132569 00000 n
+0000136366 00000 n
+0000146460 00000 n
+0000172646 00000 n
+0000180842 00000 n
+0000196445 00000 n
+trailer <</Size 57/Root 1 0 R/Info 56 0 R/ID[<B8CF1A649DEB43E8BF5AAE2DE90894A7><28AD0D6C5C9F40C4AFA908E0A84C2F9A>]>> startxref 196623 %%EOF \ No newline at end of file
diff --git a/chrome/app/theme/menu_overflow_down.pdf b/chrome/app/theme/menu_overflow_down.pdf
new file mode 100644
index 0000000..a2082fc
--- /dev/null
+++ b/chrome/app/theme/menu_overflow_down.pdf
@@ -0,0 +1,1527 @@
+%PDF-1.5 %âãÏÓ
+1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 29 0 R]/Order 30 0 R/RBGroups[]>>/OCGs[5 0 R 29 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 60561/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/pdf</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">MenuOverflowDown</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xmp:MetadataDate>2010-04-20T11:15:53-07:00</xmp:MetadataDate>
+ <xmp:ModifyDate>2010-04-20T11:15:53-07:00</xmp:ModifyDate>
+ <xmp:CreateDate>2010-04-20T11:12:45-07:00</xmp:CreateDate>
+ <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool>
+ <xmp:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xmpGImg:width>256</xmpGImg:width>
+ <xmpGImg:height>208</xmpGImg:height>
+ <xmpGImg:format>JPEG</xmpGImg:format>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA0AEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8Akv5p+Tf8P64bi1TjpeoF&#xA;pIABtG/V4valar7fLJBDCsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir&#xA;sVdirsVdirsVdirsVdirNfys8m/4g1wXF0nLS9PKyTgjaR+qRe9aVb2+eJV7Z5s8uWvmLQ7jTJ6K&#xA;zjlbynf05V+w/wDA+1cil8y39jdWF7PZXSGO5t3aOVD2ZTQ5JChirsVdirsVdirsVdirsVdirsVd&#xA;irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVV7Cxur+9gsrVDJc3DrHEg7sxoMVfTXlP&#xA;y5a+XdDt9MgozIOVxKNvUlb7b/wHtTIpTjFXlP50+TfWhXzLZp+9hAj1FVG7J0SX/Y/ZPtTwwhBe&#xA;OYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir2P8lv&#xA;Jvowt5lvE/ezAx6crDdU6PL/ALL7I9q+OAqHq2BLsVWTwQzwSQTIJIZVKSRtuGVhQgjwIxV81eev&#xA;Kk3lrX5rKhNpJ+9spT+1Ex2BP8y/ZP398khj2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV&#xA;2KuxV2KuxV2KuxV2KuxV2KuxVkPkXypN5l1+GyoRaR/vb2UfsxKdwD/M32R9/bFX0rBBDBBHBCgj&#xA;hiUJHGuwVVFAAPADIpX4q7FXYqxb8xfKCeZdAeKJR+kbWsti52+KnxR18HAp86HthCvnB0dHZHUq&#xA;6khlIoQRsQQcKGsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiraI&#xA;7uqIpZ2ICqBUknYAAYq+j/y68oJ5a0BIpVH6RuqS3zjf4qfDHXwQGnzqe+ApZTgV2KuxV2KuxV4l&#xA;+c3k36jfjzBZpS0vW43iqNknO/P5Sf8AEvnhCC8zwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXpn5M+Tfr1+fMF4lbSybjZqw2ecb8/lH/AMS+WAqHtuBLsVdirsVd&#xA;irsVQmraXZ6rptxp14nO2uUKSDuO4I91O498VfMfmLQrzQtZudLux+8gaivSgdDujj2YZJCW4q7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUy8u6Fea7rNtpdoP3k7UZ6VCIN&#xA;3c+yjFX05pOl2elabb6dZpwtrZAkY7nuSfdjuffIpReKuxV2KuxV2KuxV2KsB/Nzyb+mdH/Slold&#xA;R05SxAG8kHV09yv2l+nxwhBeCYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs&#xA;Vdir3v8AKPyb+htH/Sl2lNR1FQwBG8cHVE9i32m+jwwFQz7Al2KuxV2KuxV2KuxV2KuxV89/mn5N&#xA;/wAP64bi1TjpeoFpIABtG/V4valar7fLJBDCsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir&#xA;sVdirsVdirNfys8m/wCINcFxdJy0vTysk4I2kfqkXvWlW9vniVfQmRS7FXYq7FXYq7FXYq7FXYq7&#xA;FUn82eXLXzFodxpk9FZxyt5Tv6cq/Yf+B9q4q+Zb+xurC9nsrpDHc27tHKh7MpockhQxV2KuxV2K&#xA;uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kq9hY3V/ewWVqhkubh1jiQd2Y0GKvpryn5ctfLuh2+&#xA;mQUZkHK4lG3qSt9t/wCA9qZFKcYq7FXYq7FXYq7FXYq7FXYq7FXYq8p/Onyb60K+ZbNP3sIEeoqo&#xA;3ZOiS/7H7J9qeGEILxzCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVex/kt5N9GFvMt&#xA;4n72YGPTlYbqnR5f9l9ke1fHAVD1bAl2KuxV2KuxV2KuxV2KuxV2KuxV2KrJ4IZ4JIJkEkMqlJI2&#xA;3DKwoQR4EYq+avPXlSby1r81lQm0k/e2Up/aiY7An+Zfsn7++SQx7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYqyHyL5Um8y6/DZUItI/3t7KP2YlO4B/mb7I+/tir6VgghggjghQRwxKEjjXYK&#xA;qigAHgBkUr8VdirsVdirsVdirsVdirsVdirsVdirsVYt+YvlBPMugPFEo/SNrWWxc7fFT4o6+DgU&#xA;+dD2whXzg6OjsjqVdSQykUII2IIOFDWKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVtEd3VEUs7EB&#xA;VAqSTsAAMVfR/wCXXlBPLWgJFKo/SN1SW+cb/FT4Y6+CA0+dT3wFLKcCuxV2KuxV2KuxV2KuxV2K&#xA;uxV2KuxV2KuxV2KvEvzm8m/Ub8eYLNKWl63G8VRsk535/KT/AIl88IQXmeFXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq9M/Jnyb9evz5gvEraWTcbNWGzzjfn8o/+JfLAVD23Al2KuxV2KuxV2KuxV2K&#xA;uxV2KuxV2KuxV2KuxV2KoTVtLs9V024068TnbXKFJB3HcEe6nce+KvmPzFoV5oWs3Ol3Y/eQNRXp&#xA;QOh3Rx7MMkhLcVdirsVdirsVdirsVdirsVdirsVdiqZeXdCvNd1m20u0H7ydqM9KhEG7ufZRir6c&#xA;0nS7PStNt9Os04W1sgSMdz3JPux3PvkUovFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FW&#xA;A/m55N/TOj/pS0Suo6cpYgDeSDq6e5X7S/T44QgvBMKuxV2KuxV2KuxV2KuxV2KuxV2KuxV73+Uf&#xA;k39DaP8ApS7Smo6ioYAjeODqiexb7TfR4YCoZ9gS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq+e/zT8m/wCH9cNxapx0vUC0kAA2jfq8XtStV9vlkghhWKuxV2KuxV2KuxV2KuxV2Kux&#xA;Vmv5WeTf8Qa4Li6TlpenlZJwRtI/VIvetKt7fPEq+hMil2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2&#xA;KuxV2KuxV2KuxV2KpP5s8uWvmLQ7jTJ6Kzjlbynf05V+w/8AA+1cVfMt/Y3Vhez2V0hjubd2jlQ9&#xA;mU0OSQoYq7FXYq7FXYq7FXYq7FVewsbq/vYLK1QyXNw6xxIO7MaDFX015T8uWvl3Q7fTIKMyDlcS&#xA;jb1JW+2/8B7UyKU4xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5T+dPk31&#xA;oV8y2afvYQI9RVRuydEl/wBj9k+1PDCEF45hV2KuxV2KuxV2KuxV2KvY/wAlvJvowt5lvE/ezAx6&#xA;crDdU6PL/svsj2r44CoerYEuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV&#xA;ZPBDPBJBMgkhlUpJG24ZWFCCPAjFXzV568qTeWtfmsqE2kn72ylP7UTHYE/zL9k/f3ySGPYq7FXY&#xA;q7FXYq7FWQ+RfKk3mXX4bKhFpH+9vZR+zEp3AP8AM32R9/bFX0rBBDBBHBCgjhiUJHGuwVVFAAPA&#xA;DIpX4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxb8xfKCeZdAeKJR&#xA;+kbWsti52+KnxR18HAp86HthCvnB0dHZHUq6khlIoQRsQQcKGsVdirsVdiraI7uqIpZ2ICqBUknY&#xA;AAYq+j/y68oJ5a0BIpVH6RuqS3zjf4qfDHXwQGnzqe+ApZTgV2KuxV2KuxV2KuxV2KuxV2KuxV2K&#xA;uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV4l+c3k36jfjzBZpS0vW43iqNknO/P5Sf8S+eEILzPCr&#xA;sVdirsVemfkz5N+vX58wXiVtLJuNmrDZ5xvz+Uf/ABL5YCoe24EuxV2KuxV2KuxV2KuxV2KuxV2K&#xA;uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVCatpdnqum3GnXic7a5QpIO47gj3U7j3xV8x+Yt&#xA;CvNC1m50u7H7yBqK9KB0O6OPZhkkJbirsVTLy7oV5rus22l2g/eTtRnpUIg3dz7KMVfTmk6XZ6Vp&#xA;tvp1mnC2tkCRjue5J92O598ilF4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYqwH83PJv6Z0f9KWiV1HTlLEAbyQdXT3K/aX6fHCEF4JhV2Kve/yj8m/obR/0&#xA;pdpTUdRUMARvHB1RPYt9pvo8MBUM+wJdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV&#xA;dirsVdirsVdirsVdirsVdirsVfPf5p+Tf8P64bi1TjpeoFpIABtG/V4valar7fLJBDvys8m/4g1w&#xA;XF0nLS9PKyTgjaR+qRe9aVb2+eJV9CZFLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd&#xA;irsVdirsVdirsVdirsVdirsVdirsVSfzZ5ctfMWh3GmT0VnHK3lO/pyr9h/4H2rirvKfly18u6Hb&#xA;6ZBRmQcriUbepK323/gPamKpxirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//2Q==</xmpGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xmp:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#">
+ <xmpMM:InstanceID>uuid:3d0954b8-243d-5c4a-b03e-6aa04a51b742</xmpMM:InstanceID>
+ <xmpMM:DocumentID>xmp.did:F87F11740720681194DFF4A5DEFE0840</xmpMM:DocumentID>
+ <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID>
+ <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>xmp.iid:F77F11740720681194DFF4A5DEFE0840</stRef:instanceID>
+ <stRef:documentID>xmp.did:F77F11740720681194DFF4A5DEFE0840</stRef:documentID>
+ <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID>
+ <stRef:renditionClass>proof:pdf</stRef:renditionClass>
+ </xmpMM:DerivedFrom>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:D27F11740720681191099C3B601C4548</stEvt:instanceID>
+ <stEvt:when>2008-04-17T14:19:15+05:30</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F1174072068118D4ED246B3ADB1C6</stEvt:instanceID>
+ <stEvt:when>2008-05-15T16:23:06-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F1174072068118D4ED246B3ADB1C6</stEvt:instanceID>
+ <stEvt:when>2008-05-15T17:10:45-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:EF7F117407206811A46CA4519D24356B</stEvt:instanceID>
+ <stEvt:when>2008-05-15T22:53:33-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F07F117407206811A46CA4519D24356B</stEvt:instanceID>
+ <stEvt:when>2008-05-15T23:07:07-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T10:35:43-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T10:40:59-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:26:55-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FB7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:29:01-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FC7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:29:20-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FD7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:30:54-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FE7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:31:22-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B233668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T12:23:46-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B333668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T13:27:54-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B433668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T13:46:13-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:47:57-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:51:06-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:52:22-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T13:28:01-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FF7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T16:23:53-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:07C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID>
+ <stEvt:when>2008-05-28T16:45:26-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F1174072068119098B097FDA39BEF</stEvt:instanceID>
+ <stEvt:when>2008-06-02T13:25:25-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BB1DBF8F242B6F84</stEvt:instanceID>
+ <stEvt:when>2008-06-09T14:58:36-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F117407206811ACAFB8DA80854E76</stEvt:instanceID>
+ <stEvt:when>2008-06-11T14:31:27-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:0180117407206811834383CD3A8D2303</stEvt:instanceID>
+ <stEvt:when>2008-06-11T22:37:35-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811818C85DF6A1A75C3</stEvt:instanceID>
+ <stEvt:when>2008-06-27T14:40:42-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F11740720681194DFF4A5DEFE0840</stEvt:instanceID>
+ <stEvt:when>2010-04-20T10:39:03-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F11740720681194DFF4A5DEFE0840</stEvt:instanceID>
+ <stEvt:when>2010-04-20T11:12:41-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
+ <illustrator:StartupProfile>Print</illustrator:StartupProfile>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
+ <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+ <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency>
+ <xmpTPg:NPages>1</xmpTPg:NPages>
+ <xmpTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>19.000000</stDim:w>
+ <stDim:h>19.000000</stDim:h>
+ <stDim:unit>Points</stDim:unit>
+ </xmpTPg:MaxPageSize>
+ <xmpTPg:PlateNames>
+ <rdf:Seq>
+ <rdf:li>Black</rdf:li>
+ </rdf:Seq>
+ </xmpTPg:PlateNames>
+ <xmpTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Default Swatch Group</xmpG:groupName>
+ <xmpG:groupType>0</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>White</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>Black</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>100.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Red</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Yellow</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Green</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Cyan</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Blue</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Magenta</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=15 M=100 Y=90 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>14.999998</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=90 Y=85 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>85.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=80 Y=95 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>80.000000</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=50 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=35 Y=85 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>35.000004</xmpG:magenta>
+ <xmpG:yellow>85.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=5 M=0 Y=90 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>5.000001</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=20 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>19.999998</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=10 Y=100 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=90 M=30 Y=95 K=30</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>90.000000</xmpG:cyan>
+ <xmpG:magenta>30.000002</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>30.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=0 Y=75 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>75.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=80 M=10 Y=45 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>80.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>45.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=70 M=15 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>70.000000</xmpG:cyan>
+ <xmpG:magenta>14.999998</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=50 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=95 Y=5 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>95.000000</xmpG:magenta>
+ <xmpG:yellow>5.000001</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=100 Y=25 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>25.000000</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=100 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=100 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=35 M=100 Y=35 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>35.000004</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>35.000004</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=10 M=100 Y=50 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>10.000002</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>50.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=95 Y=20 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>95.000000</xmpG:magenta>
+ <xmpG:yellow>19.999998</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=25 M=25 Y=40 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>25.000000</xmpG:cyan>
+ <xmpG:magenta>25.000000</xmpG:magenta>
+ <xmpG:yellow>39.999996</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=45 Y=50 K=5</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>45.000000</xmpG:magenta>
+ <xmpG:yellow>50.000000</xmpG:yellow>
+ <xmpG:black>5.000001</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=50 Y=60 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>60.000004</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=55 M=60 Y=65 K=40</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>55.000000</xmpG:cyan>
+ <xmpG:magenta>60.000004</xmpG:magenta>
+ <xmpG:yellow>65.000000</xmpG:yellow>
+ <xmpG:black>39.999996</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=25 M=40 Y=65 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>25.000000</xmpG:cyan>
+ <xmpG:magenta>39.999996</xmpG:magenta>
+ <xmpG:yellow>65.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=30 M=50 Y=75 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>30.000002</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>75.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=35 M=60 Y=80 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>35.000004</xmpG:cyan>
+ <xmpG:magenta>60.000004</xmpG:magenta>
+ <xmpG:yellow>80.000000</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=65 Y=90 K=35</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>65.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>35.000004</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=70 Y=100 K=50</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>70.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>50.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=70 Y=80 K=70</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>70.000000</xmpG:magenta>
+ <xmpG:yellow>80.000000</xmpG:yellow>
+ <xmpG:black>70.000000</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Grays</xmpG:groupName>
+ <xmpG:groupType>1</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=100</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>100.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=90</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>89.999405</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=80</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>79.998795</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=70</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>69.999702</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=60</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>59.999104</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=50</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>50.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=40</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>39.999401</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=30</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>29.998802</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=20</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>19.999701</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>9.999103</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=5</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>4.998803</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Brights</xmpG:groupName>
+ <xmpG:groupType>1</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=100 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=75 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>75.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=10 Y=95 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=10 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=90 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=60 M=90 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>60.000004</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>0.003099</xmpG:yellow>
+ <xmpG:black>0.003099</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpTPg:SwatchGroups>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <pdf:Producer>Adobe PDF library 9.00</pdf:Producer>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 1/Kids[31 0 R]/Type/Pages>> endobj 31 0 obj <</ArtBox[4.5 5.00195 14.499 13.0]/BleedBox[0.0 0.0 19.0 19.0]/Contents 32 0 R/Group 33 0 R/LastModified(D:20100420111553-07'00')/MediaBox[0.0 0.0 19.0 19.0]/Parent 3 0 R/PieceInfo<</Illustrator 34 0 R>>/Resources<</ExtGState<</GS0 35 0 R>>/Properties<</MC0 29 0 R>>/XObject<</Fm0 36 0 R>>>>/Thumb 37 0 R/TrimBox[0.0 0.0 19.0 19.0]/Type/Page>> endobj 32 0 obj <</Filter/FlateDecode/Length 66>>stream
+H‰Ò÷wVÐ÷u6PprqVà*ä2P0´!] .Jå
+WÈ
+ê»(¤sé»å(¸äsr¹úUr
+8;V'i$O[%B0E;4a!JC~> endstream endobj 38 0 obj [/Indexed/DeviceRGB 255 39 0 R] endobj 39 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
+VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
+PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 36 0 obj <</BBox[4.5 13.0 14.499 5.00195]/Group 40 0 R/Length 76/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 41 0 R>>>>/Subtype/Form>>stream
+0 0 0 1 k
+/GS0 gs
+q 1 0 0 1 14.499 13 cm
+0 0 m
+-5 -7.998 l
+-9.999 0 l
+h
+f
+Q
+ endstream endobj 40 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 41 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 29 0 obj <</Intent 42 0 R/Name(Layer 1)/Type/OCG/Usage 43 0 R>> endobj 42 0 obj [/View/Design] endobj 43 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>> endobj 35 0 obj <</AIS false/BM/Normal/CA 0.669998/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.669998/op false>> endobj 34 0 obj <</LastModified(D:20100420111553-07'00')/Private 44 0 R>> endobj 44 0 obj <</AIMetaData 45 0 R/AIPDFPrivateData1 46 0 R/AIPDFPrivateData10 47 0 R/AIPDFPrivateData2 48 0 R/AIPDFPrivateData3 49 0 R/AIPDFPrivateData4 50 0 R/AIPDFPrivateData5 51 0 R/AIPDFPrivateData6 52 0 R/AIPDFPrivateData7 53 0 R/AIPDFPrivateData8 54 0 R/AIPDFPrivateData9 55 0 R/ContainerVersion 11/CreatorVersion 14/NumBlock 10/RoundtripVersion 14>> endobj 45 0 obj <</Length 918>>stream
+%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 14.0 %%AI8_CreatorVersion: 14.0.0 %%For: (Nicholas Jitkoff) () %%Title: (MenuOverflowDown.pdf) %%CreationDate: 4/20/10 11:15 AM %%Canvassize: 16383 %%BoundingBox: 4 5 15 13 %%HiResBoundingBox: 4.5 5.00195 14.499 13 %%DocumentProcessColors: Black %AI5_FileFormat 10.0 %AI12_BuildNumber: 367 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 1 1 1 ([Registration]) %AI3_Cropmarks: 0 0 19 19 %AI3_TemplateBox: 9.5 9.5 9.5 9.5 %AI3_TileBox: -296.5 -386.5 315.5 405.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -19 26 24 1351 758 90 0 0 52 138 0 0 0 1 1 0 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 72 72 72 72 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 46 0 obj <</Length 12962>>stream
+%%BoundingBox: 4 5 15 13 %%HiResBoundingBox: 4.5 5.00195 14.499 13 %AI7_Thumbnail: 128 104 8 %%BeginData: 12830 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C457D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D52537DA8535252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %59525252595252525952525259FD0552FFFF7D52527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D52A8FFFFFFFD7B52 %7DA8FD04FF527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D5253A8FD05FF7D525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %5252525952525259FD04527DFD06FFA97D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D525252FD08FF7DFD7652A8FD09FF7D5252 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527DFD0BFF5252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525253A8FD0BFFA852 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D52527DFD0CFFA87DFD %7152FD0EFFA853527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D52A9FD %0FFF7D525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %52525259525252595252525952525259525252595252527DFD11FF525252 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527DA9FD11FFA8FD6C527DFD13FF7D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D7DFD14FFA8525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %52525259525252FD16FF7D52527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D52A8FD17FFFD %67527DFD18FFA9527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527DA8FD19FF7D525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952527DFD1BFF7D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D52FD1CFF7DFD6252A8FD1DFF7D %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527DFD1FFFFD05525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %5252525952525259525252595252A8FD1FFFA8527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D52527DFD21FF7DFD5D %52FD22FFA87D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D52FD24FF7DFD045259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %595252525952525259527DFD25FF527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527DFD26FFA8FD58527DFD27FF7D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D52527DFD28FFA8535252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259FD0552FD2AFF7D52527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D52A8FD2BFFFD53527DA8FD2C %FF527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D5253A8FD2DFF7D5252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %5259525252595252525952525259FD04527DFD2EFFA97D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D525252FD30FF7DFD4E52A8FD31FF7D52527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527DFD33FF52525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525253 %A8FD33FFA8527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D52527DFD34FFA87DFD4952FD36 %FFA853527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D52A9FD37FF7D5252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %52595252525952525259525252595252525952525259525252595252527D %FD39FF5252527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527DA9FD39FFA8FD44527DFD3BFF7D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D7DFD3CFFA85252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %52595252525952525259525252FD3EFF7D52527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D52A8FD3FFFFD3F527DFD %40FFA9527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527DA8FD41FF7D5259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952527DFD43FF7D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D52FD44FF7DFD3A52A8FD45FF7D7D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527DFD47FFFD055259 %525252595252525952525259525252595252525952525259525252595252 %5259525252595252525952525259525252595252A8FD47FFA8527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D52527DFD49FF7DFD3552FD4AFF %A87D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D52FD4CFF7DFD0452 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259527DFD4DFF527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527DFD4EFFA8FD30527DFD4FFF7D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D52527DFD50FFA85352525259525252595252525952525259 %525252595252525952525259525252595252525952525259FD0552FD52FF %7D52527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D52A8FD53FFFD2B527DA8FD54FF527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D5253A8FD55FF7D52525259525252595252525952525259 %5252525952525259525252595252525952525259FD04527DFD56FFA97D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D525252FD58FF7DFD2652A8FD59FF7D52527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527DFD5BFF %525252595252525952525259525252595252525952525259525252595252 %525952525253A8FD5BFFA8527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D52527DFD5CFFA87DFD2152FD5EFFA85352 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %A9FD5FFF7D52525952525259525252595252525952525259525252595252 %52595252527DFD61FF5252527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527DA9FD61FFA8FD1C527DFD63FF7D527D527D527D527D %527D527D527D527D527D527D527D527D527D7DFD64FFA852525952525259 %52525259525252595252525952525259525252FD66FF7D52527D527D527D %527D527D527D527D527D527D527D527D52A8FD67FFFD17527DFD68FFA952 %7D527D527D527D527D527D527D527D527D527D527DA8FD69FF7D52595252 %525952525259525252595252525952527DFD6BFF7D527D527D527D527D52 %7D527D527D527D527D52FD6CFF7DFD1252A8FD6DFF7D7D527D527D527D52 %7D527D527D527D527DFD6FFFFD05525952525259525252595252A8FD6FFF %A8527D527D527D527D527D527D52527DFD71FF7DFD0D52FD72FFA87D527D %527D527D527D527D52FD74FF7DFD04525952525259527DFD75FF527D527D %527D527D527DFD76FFA8FD08527DFD77FF7D527D527D52527DFD78FFA853 %FD0552FD7AFF7D52527D52A8FD7BFF5252527DA8FD7CFF5252A8FD7DFF7D %7DFD7EFFA8FDBFFFFF %%EndData endstream endobj 47 0 obj <</Filter[/FlateDecode]/Length 8606>>stream
+H‰¬WëVÚL}‚<„@H @[iAŠ(Šå²ÄÏJ+—Àû3“û0“IÄ?³X
+û\÷9ûä¤êʨf_u>ñœPQ.•láV’*¯»üÙI-uS0rFG*ŸÕ—å }x+•õ¹Q^‹ÏwRe0ÏÂ/ç ßoŠ9Ç€äütmþ¦¬ß¾Ã¯ô,0©sƒþæ8‚°óÞÿ–5^*Ëšl>µÓt XyNªï–|â{ÚWÛ`ÎÁ
+Åñ0ðמÛ0>Iyk^æ¨1ƃ‘‘FÍåXñ¶×=ä§~dÇWæ˜|a ™ÀØ2‡ #tX>ñ­}ÅÒLz;iåÝ7§`'[ù>;fR™ó`ëÈ$ÛJœÌM³úNöS¢R\ß„‰Š£ú¼©/]”ìëJ*Ù=ÔYÙJ©<ϧȫ$W}¸hy¦®§ðrp£Ô‘á“%26Üû. ‹¢|@âÈ(‰† Ñ„ƒhè•îóonO*AT¿÷ô-f
+K€‡•Ê¢˜ciC9uÑO’4°B˜–ƒÕ+‹bVÒ´Ž?cï¸ø&îýw%¨¤Þýþ®¤ ®É6hÓF†C´+ÇšS¾Ž% 3a8BVXÒ0”0¬eTjaáýâîB¡n乡ÎB“¼¼£À“Jºbcyq¤à©PЊ¨µ™Û>`ûB°ݯŠÚ¾"AE×0s#_ÜuX[Ó­$ΕtPˬã<Œ²rÕáÄ\2€û„žÀÖk¢—‚;‚ãC¬‡‚Q{v!®¾íÙÒ/“5Κ¥»úR­U³­ûz|ѺåøzEº½+­¦Ò9ø¤wdwB­17žsB9V7Os<îÙŸâ©)p|Ä4ãë¯JÏkt²×»§R©wþÊñF|0êz2ZŽç€ÝúœúÚ,k#·•²¯ï‚’- ÷Ûm!5Ìä¯^¾“Œn÷Ó¢êŸÉ>³JCIw(FÏã‰/½ÔÅèhL5
+b‰5Öyj¬ŠèS
+—ó̶Qý¯×è÷“”kÄ#áMp÷,ç1úœLÆ]£†ð%¹uŒæ}FÏ^Sbåñ/É(ÇÃ?ycõ5fªQ¥ÑþÞ¥=ó…_õ)2jé1‚'FõÄ9ݨ~ åxÔJüõŸÎŒœà¨G7úõW{@7ªiý2jod`6ÿ/;ŸÌon÷éRÖ_}Ê÷ò5…ú=Ä}Ûö4]üQ*®vš»&AÌ£.:íOÊ œÉÞåYs¨Ãd/:êùä?ARÏRpnþòh˜:¾›ñ«4ÜnØ¥µWGHQ)¡§g* m¼lÆz×¼.ÁN¦;UÛbNù]ŠûFù—5yïu“ÇSoLë+]àÒÕžêÇó”þ9׈yÂ6{ÈÒYÆçÔmìSò´rWº]}|©<b’Þúí{ Kf–¸pý¤VÇÄ'¿¡ª=:ù|ŒŸ_wø:éþÁp‰ãƒœšŸÓ`Z>í«m²S–?"ò›>®´q9ƕテ +WõEWÚør˾Œ¨¹¨šÿ·0ÍÌMgÏ—G§'Ø„!߬è±Bë
+%´QŒšg˜ÁQC ¥ôõvÒªšÏ¨úLWêR˜¨ÝL’&òµöÚŒªE Hy6CæI•J¢æ– VßS(yp"0ã¤EÁÒ¸ÿ±«‚©ÔcPO³2o…‘F>2k(ÏÂL êóp¦!•——5˜ìë²x%RÊ9kà†RøXÙ)¬Èä›ç6TCu?çìs=“¨žÁCò‘äõ*÷UÙyíŒÍb;ÝA\ûNÅÂÚëy]^~ÝF×# Ç ¢R‡þ’·Àè¨N¨®Žt›uYÐIÈú>ë~šáK‹0\—'¬dÙËs fÌçT®úpÑ¢,5¦÷¹w]Bó:å/„¢ù\&‚—6ªè±¬o:ÇÔÏŠ%KYÌ&ýÏieñ¶øöþQ`Æò>„_ðâcƒa[希½¨±Ñ'eì¥(>|ZÆ°‰vdÆ®
+c
+Øu›´$uhe,WŽNýú°ù9Ç,@~ÞÛ»’©„‰;@¼ž„
+¼ˆPt&©¢ M
+&„9/Ö÷¡1òܽ´©™-]DL% ú² cž ƸRùzV¢;¸Ž˜h½Vþs%Ü%m8ÕØ™‚
+x¶Ž ³õ”³Òð½èÁܜЎç³Ï4íÿ! Óô•fl
+Cuz=+ ;—æ3k)0Ê…ŽÌ§Ú3â\8(ðs Ê4-\Óc?Œå ×9c[Ä”ªa4cu·ûœ±à ÆnÒ0|ªcs]ïšöë•n2__™ÄÎ;“ŸÒöRË;Ý,êâ„S}ù&F\mjßgN´‡î%VkâÄU°¸)ú–RÏÏöȹÆQ¯„·÷({&U³ä1žj
+k DÊ÷GlÒ9 T5bK7À¢Í8Š<èôÚ†ejÓ gõ`-oÂog´•'‚êU,Óžß«ÅÁá¨Ä‹4K®fÜÛˆ‚2{ÊÅïá禗ô/=b _ÕG»¼O‰þh"ÀÓGÒ=\•šÜÈóNïÎy Åq¨’kÓ%Z!å¼ø‘jÌ›‰ÉK%ø6{Vr‹œ~:Þ=bæÛöÚ(Í#‹h{=M+yx/;•ä*X%Þª ·C óAçg¯Xôìgöž¸îO#ZîÓÌ6Pˆ7__ZM ’ÿ%·¨¨àN²¹T)Åæ>ÇOl>èj(ÊG˜T¶¡·âÖ>JÛ€Ô«³L¬½WÑóJÅÿ-”Ã6 ›Í~3ʶ¿~@ïìXõ¨!º>Â><tËÃðãøy^6Ú'ÃiZÙpNïc²üt
+, „»s¡{ÄÙXÑ)3räžÖí­îkܱR˜œ‹¿ööÅ„˜Ä#éÞq[Î#ö¾Xý€¿UVð· x̽¾:YÇt‚b Ôׇ’}s”>Z=mÍ¿S{¥%4(k§pˆéý3ÓÍMÛûdŸM¿çí`5=±%™]ô)Él'¹°}^Ͼ%…À¶Šç­vÿ±$$°Ó’u³ÎV35¿wÃ]uɇ2¡à¨—kÄäÇÒÛÛʶÚô×Ðü?ìЖó%|ÙQðäÄ2;’†åp§Vb&@»õ'Ž„¼ò‘€Èý
+–÷^dÀ §¸ė+ŒÝ ]¬§À‹4­ÿ1Çä²|%f ,•ñ9÷9²P,r>÷l™Ïå0ËÄï=ØQäÜ;çMséÿF 1ʲ1r¤cwN}+í7·øT·™Ð7ŠŒ¹!8¾õgl 4Øò1¯ùÎ<õý|ÚgÙBgkvòõ€„"íS(fÿ¾ý†˜opx)$š,ëIÓöþ!®á]·>ñrÙþ4…9–™£*Bu.`Ö
+ —,Ó)›°|˜§|
+Å…ƨ&~,"p­AR¥­³|ÉÃeß·y\zNk"«³ÑPç"Ô‘¼sBÞu ÅI2¢WŽƒä²ƒHT—Ä™ŒF’†Œ«J¨À—hk•Û¤ÙÌStÍÕ\-¡¨—eˆƒ¦‡W)|oèjS\~@ûÑ;?F‚Ëo"Ì‘
+òËH8—¥éùbhFý#^»F¸+ŸP VbÌ·ÑD ìÔ`LY…ß9Åjæ™8WøX¡çJl"šx±˜(ö}ô¡‰Y¼9ô"MØØ!Õéð5ezg‡w¡½ª²\]þ KM]«Â#Z3M<ÿ4±?0Qp¬©"¾¸Á›§%.ÖÀ¡*…2ŽØT
+>êa\« ·éÞ|F-šßk¡§’B„3A𤻓AõÆ
+( ¬ð_ψÉ]+à„]\>á£hÕ„@è-¸ äþûV¢Íc éû~Úä~›X3Y%Õé™Ü9M&üäAr¯{O˜ â¶ç2 h_àA¾µÆN=ýsTºh¢³¹•‹pû§MôÍ»üCÅ4
+ì_ÂØÛnðAÍý3^tíök>ðÛ¾i€p·f/V’´±tä_!!Må[}Ðrÿ§³?‘
+ Ì·­–Òj÷O}iË£N$É¿MqÝÀž°.ÇvÛa»ìê° ¤»ú°<Rúìt— aiÎt–±oäXöñl ãa'À̦ž+‡xhôk“j ¿EK˜1âY':Ïm<‘ê|6ÝΑ¨.xñ
+r¹ä±Î§áÝ(ùP&´AY7ÊÔØØð[7÷Ó;§±Å»_ÆgÙȧdFÕk}×$%ýãªÏºñ%Nðªc*‘à
+Ž$‹qä
+þœ€68 WH4ÐòÙj[ú¢0Ï*NÜØqÑn×WÁlJqc M%ϱÿ±^]Û‰+Kô ø‡ @(3&'m0ŒM2A cLf­ût¿ýV·¢}Æa÷E«[%UWØ»ª ÍNÂ<[CÑi™jç­.V _ʇÒÄÀ€{ ± "‘Ñ uç
+ŒHesItJRÊÞÚ…5»¤óêü©^¼©¨cÕéuÖ´è|”b
+Û£‚”‘ïôhã‰
+çÓ¨?| 9Ë£Õøô®’ö¥‡‚ÞÎqÇeŠ«æ7ÅAù¾“ãNüw%øGUlºïLO{«+Ãd Ø­±2=­¡'Ÿ•º•‰¼;WEðÅ_ŒqD˜ÊåÐÛk‚iyo‘·H%"yiA„½*Aï}p¿˜íc&wP÷ZDƨٴ"$MD•'‹’êƒ祳ÂË%‚Æýž×Uî+/‹ÿ–üñ·χXo‹BæêUÇí‘2 Ü3h˘ÛD(b¶€Û§ºlªxê&N˜ÿ˜"6Z§¸ý+ʸ=Ȥ—`æWÒ–@‰xHG$ݬ%ªqŽ@ò'—yKð,äóÄyç>¹¢„±
+w¥J[À[)Û%`«æÝøC†Ê¢–1Éi¡4Ò hÜKZƒ¼ ›OL˜y›ZµÉ¡ª†ö~Øv±ZÚH§%®ÑY¡ª|ǸZæ"À¾A·¨GìC§Ö)ìˆX‘›¥‰å&Ø-§Jò«M¾ ¾iYõ+ð±º!`·…q°p£8ÿ¤Õù¿Ð(3Þ¢¥‘ºŽµâ±J9ÔEš0ÙÔï vq)„:o\ÖŸ ¯þL¶]Ÿ¹á¥5#¸i@P¯6°ír&ìµ/hõ«¡`öm,fâ5r¥Í$i­2Va¦vÕÆ#ôÔêU3ÿ^ yk5vЦ‰Ál=cZ³ZH.Á˜&fϧ=‰}1£ƒ
+—¡~*Võ"×î2cWïË ª–PhP5I¡Õ5zdZÞïš.3vûa‹†»÷÷Múâ0öm“¾¸Eã.ÿ]“¾¸Ewïoš´Ý_
+N.Ÿ×h¶¥Ù|é»asØUXt…¬²öSºïU‘5#){¿+X󧲧ÉÇãª#À«‡tfVG$³õŒ%(³.Áãyœ³uÞ¸¯$(<>9'£¼TrŒ3ââ³­ÏËG
+1)–ÔÇÔ“òü»Ü,¬c¾ÂŽhâ¥v*†2ì•ýÈ쨔5zöÛœ£ÏCþ?4vyGãïn:¡ä»äTy¾ºÙåïò›¨c
+cÛM tyº·íš›Ÿ^ÕÙÕË7ÖÅE5ºÆL[iãYz®¸Â Q¤Ü‹ãîÕ¿Øõ'2^êÙð)j§üõƒÇ6B3ø‚.óM0ðÆø8_êhìwµ4z5À¡×0 ¹{xSþ=È+ Tø1[œÅª^>º3Ü HNãêé : â$ÍFÑ:.„¢ºI4î]Ôþ{Ú×ÍÒÑL˜.)‹F™0–_T½t^¥ykê°hz2:ô¨C57÷™°F†`²1ÂÂPHòñLWèÆB>/}Ç#»íR-˜®1ÿŒÁ-°9tBßJZ°âD(Çv<XúŽî…ÇC­HÛR*OÓR8¶fh¹C[Šëÿn6•­]ézm‹Z§U‘f ™AàÏáºI^EÌÝ1}Ô„?7ûl6áܯQŸQº„?“2úS”e¬?
+H‰ÌWÛrܸýüó *ëA³
+[{,w3MÞ1ÿFíëfý~ÿø©Â¦ƒ0ÒÍÁ™þ붼‡’æÝݼ{DËUµÛA×ÆJ/þñ·ùšØ”Ûß?V÷µ±=ìñÏS'¹ï6eÿYOÔ—¶çºzÜ4°šÙ¦Ä6g7;0½g¾ ÑqÄú+`oNÅ0n²Eõ¥®¾ž{ﻶ²FHúÝ•5=ç”Ú·íù¸oªþ׶ÞA3_7Ik…‹n]5®ÉÌ/šòÞiÓÛ¸.ûûj¯uÍ~gx+ÀÊ¿”ß*ífø°©Úëî7£ãLᇞÏáOÁ¼HÄž´kMñ¸ ÞVª–¡% ¢áÁ“K¸éC_ß×í¹S,ºyÛ×ëÉu‘?ýíWñì#‡U;ÞíªÖ© Ò¤3ÐÕÅÖÌÛuÚ=j³o5£áú¼hº{Û7þoz0}¿±ú›ß7ðÐe_·Z&yozâ›Ëf®·}·ß¼kï:òÆžèë¾¼Å0ïçU·;K×0ýwµ¯wÕª¬7§Ga[}åÙNL6?‡ïïÏΪ;¦iºmÍÛ/UÓmfbÇ–²]{/ûÍ÷E_6e[öži%ÿRAO M²§¶W-wU»ÞŽ2íÏ¥<Ûö}yW·š½§úýöÁ»îºf»ì¥»fÓªÇÿk\š í‡ÖèéJnÀáJˆ?Ü*ýò
+èü‘¥§eÓÔ÷}¹y¨oŸ[à™þq%Û÷ßëÛ㧮©·Ÿf-—e¿«o›êêÛvW=“¦­qW·kÑIÛîq£Ó¶wõPn*#s÷P˜‘W£@qƒÀ8}ggGbbzªõ¿íËup‹b$í6¨ð esJ~#ÀsO­Éï„’Ÿ M¨Rš9-hÁ(ÓŒ‚…@Äb@²P,2–…Oæë'ð9ñ¹/üЀؗ@â+ õ3 ÷ ¿h
+Š~Ñ°Xb,–‹åÆbô˜ÅÈq“=o1h¼“Õ*´Ti©ÔB­WF1£u“Fµ…rF=v Þ¤ õÍÒ©91NZúÕ:˺K;̺L;-5NƒÛœã¬ë´ó¬ûà@b}$ÎÖ‘p¥s¦v§u¨u©vªu«4N×–/e¢‹#ŒYhɘgÈm–Äu G„a…1 Ã$Tafaðƒù‚+AÍ0Š¢˜D2J
+†Dz° õ4> ¦^¯(‚ï(õ5cLè!>^qŒ—§qŒÒIÞwÆA–Êƪw(^Ÿ¯g³j[á>qµo·Õõìò7lÚz„²•áîó‘^ÁŠ $›×Å"éºÇ8WX¸@•ºÐT8îM
+Ca æà0ÇìÈ‘y.áÏOÍÓs]ÈìèÌÏt|¦´?$þ!õɨ[\åb+
+’óxxþ–’¸ Zº¸Õùîš6\Ô`*ck·qq
+C·§ã5¾;‰ö Z:ûè ”c‚ÂT !Ä °ãöÎaÿIच„Ä¡=)4Ηû}ö’§Ìm*{æ6ÅÇÛT4]ôæ—)boSC˜N—¥‘rl´X0m Ùtgšßš\H#–NF6N…ÄÑŒpDXÀA,¢19rŠà°Å8à!:‡xGŸ"vå©9 ‚CŒ ÂÈœ@ xúÀ8Oö]ø/ƒŒwÙcàG!æ îËYdi“ãVyÉ.£UtàÆ*í²ÿ“xàAêÛjÍÔS¦à3·7e Cœ}t,ÕIÀV«:éƒoCN!‚*ÓÁ5. P‘sMÙ©KU/M<¶Î):1éX­Ïžd:Sh
+ƒø:›¸Ô¢Ó Ò 1™'1ʯqë«á(B^Á¢çðâãˆ:¿d,y<Ϧ—8øuý×èfÌž: xê%ë'9úiò”p‘ßøŠŒîšVŒË\0ù —ˆìŠÑ¢lá">®4-Pág¸‘(äP E"”(18@¨b)Ujÿ 7…<+¡d„2F(N˜¢È¶9ònŠœ€®1Î\ˆ,ýûe·#7nDá'à;èÆ@rÓÿ©À7ú ä*‹ÍÍ^ƒÌÄ0²; 8~äT)±»Õ=Ý3q¬OËI‘RÕáW~eàƒ-öq©œ¥4ãÈušç}ÄòžBFÚr52SÏ$ïìùuÑê"WxžÖ²ëÒOÌ… ÛòÈMVݱmG¶p_>踼.€kõÆã'Ôz­ã¯!¢µLõim`ÓÁaªM„cÛp7µæq5µ4ÄàÖÔöö
+I¶rv¶dÍ«Ù:5¬®C‚ËÁ}<;£å(ü¡1åhaJ 4³5ñnD{ù;ÔA ŠP€¸¾£¸¢wAó¡îlaË;?¬ŽùuRWoOw‰ùD-ã Õï
+$ –îHéDñDáH¾’)þÙ,mKX½ª-ZßE9
+À )üé³:VÊŠ¬Àò, C6GñÊRI,z…oìÊ,šÑ³à¥Ï$YÈ1³b&Ä…‚ƒ (• PèO¸OˆO`¯@^Á»vêèZþ"3“Ü VŒ‹Œpp&ÃÛ¼‚[W m%6ᵚՂpšbPLVDs0j“ùLèlc³Bf…˼wDeø¶Ìd
+P3’Ñ7e °tË46±ù&f1ŸKðBò@o2ÂÞ,m£0cßW?|•ŽeÞùø¯¨o‘º­YVû²ÔÞE½Ü¬ùTêü’ž®h¼(—A•“Uý®º3¥31õ¨ ?mò':ðŠûê׬t}´›Ú¥Ò¼jZ5®V­ÔÊWÝJY…´
+mâ*ÔUȫЗÙfÁ¦›Ÿ†¯êœ´M{ˆ± oܦ?©ŸÎo ÿέƒ—‹±;„ØÚã§7{™t ?n‚?ØäÂN×Ó¥?nÙtÀ^Ñ5MZ­:ïÜFÏö¢ÑÆ6>¤¶kÐö ­ÑËi@¿›uÕ·wÀèä>ôñŸæçÇ?}xüòôüM. OŸ¿<—KjþðóóóÃoOÍç|©AœüQí_ÆÐxiø4UÞùeï—Ý¿@Q¼¢P${ÖÂ%ÈÈÛ]—+‹°V›Ÿ¾à=n-$rë2 Û Ïã ]µ#ÖxÞ²2Y«¬\ÞÂ(ëh17ƒÙ:Ì<` «é±ª«›Í’燱?_‘g6pfM˜1æ­’
+žA[?9íðä´‡‹[ˆWЦ[œB|¢˜DmÙ¹{Cñq…>;ÂœÍÀ°86‚È&°À¼¦>ÒžÞqÂK²—4—çäÎIÍé¼fqX³¶äê I©r6–¼Û«$ËÂXјX˜˜˜JNn9&’gÖBš¸Ð˜t–aÙ,—Uø§lê[-Ä5…ª
+‹­¸¨KŒ\héô˜7)þYÎ5·¤¯KÍæfÙ[¤nk6»[¥noú3àæ –+˜ÄBÕ˲rU-R±HµRjØR¢¬õ«•¢Ä)®H
+”Œ\‚,™KìJ&)³ÉXщÔ…PR®•ëƒ*š È­¸3®÷™µŠ ±Vnrq\Àœû!Lrª‘n^a†,‹€¦ cû*`ÙÆo:•:2ŒB:ìm³à{œHgðÙ @.{Ÿ(¨\oÄU)k;úJ„Œ•*ÇP¢6-§b‡=–ÞÁ—Qòs$û¢Üe©³KþmR»—/Vp/K½¥ów: D7> _•Ví¥“_T{@ê­›ö€Ük[“Ô9Ýœ¼pÿa¿\vÛÖ¹(ü|M´C¼“E&¢.EÇEGgHdPÚ¾?þµ7©›-'Nâü5?ÀQ$’/{q¯ŠJW¹ÊÖ•¬¹éwqs÷ž¦é7¾ª®’º²rW#rÆ7žŒõÑ8¹“(•6;'­YµÛ®±nïÑ«U®RõN«è7ÚÖ˜Ú{ŸQ¯Í·Q ËMóÍÞõû‡¯¿îž÷òôøô¼o}©>ýØïï>>TOåV%•û,¶o£k]¥,Õ­`‰•Z`¦gr’’SúÑ5jW(ø ' ç#ËbVè#Ô ¤ÀYq!ø,yÜ9¤sçU;Ÿ vÈ]æ l%‡GÉ∘/Ïä•"^«p~áãDN8=m‡Ýip +î8äqØ÷8ö[¤
+¹Uêcêáˆþˆ®îýL´+ÒÍ‚¸"̈Ú/p ì„™Ðjb1*|¶5.×ÿ­ãûå"¼ÿ?î$Ûù¨Ù@ˆéR°ÖÏe  ú!òŸØN¤Â<-c ¾À ýhe£!~4£
+YQs˜LÏtLË$'4¿!°÷ œ` B&Ä°!+¢X]ëbHÈ’)![BÆ$ñÜæ„ìÉhPØ¢ö(’=ÊèRZr)Å¢dƒ’íI6'Ù–ÔÅŠtÅs4<ê`½€)°l(ó’—ô¦3­IX¾ˆ§—;T1Få­õ {ÝéV'¬fÄ°<,ÕFk­äwP½êT«7bÄ–Ä(­Dx½ìd+TBoX±kÙ–•2°ø‘ÀÉ"a—óˆÅ)^;œËi[õ"âÅǧÙI—¶vg‡¤“4›@1Ä°!àp+ì“üGO¨ 91§ ã\Œ¥+´…Ô'Ÿ¦¥­LϺÐsˆ÷–ATöšQ ©d"4…¹ïNt]×2 4€$’ÔŠDjÑA:„w‡
++ xÏQ^§G·ú³èN!ÊEûé$Í1?q“°?ÂB§Û³Bp:¿[ž‚Å˵ÃEé߇xñq÷&ZBä?'H'i6‰Cô³ àp+ì“üGO¨ 91‡ú8cé
+m!õIà§)D&<ãË ÅHÕ‚¦0÷݉®ëZ&D€X`€
+H@ŠB“ÜsS* 4ml£hCë¶5@·
+H–šc 7µœ¦Ž‰jNUs¢ª’„ðЊôøš¶I¢išBã×ØÆ4ºQ„ ‡W&<Ž1D‘REuTQBÌKRhB„'ðÁƒœN‰ ¡L=Æ×âÕÑï½óÆk¯ O&°uÉ5.8ï¬3N;éjLh‡lº±Ázk­±ÊJ¬m‡6ÂY±Æ½0QI7:h‡´QãP0mI5
+NBc•he#ƒtÒàÔ”X“º ‡¢v•°½Ã«„]%ì*aÿ¶„%oäÚáµÃk‡ïïP½ñ‘ÆoéP¾qvÕ3 $LV7wé—øuUO\eë
+]ЃïâæîøAú]j;›oú¸s¾Öë‡×­TØ‘WÎît0n£éa±=é°ÃY+ƒ*µ”«ÆѲÞÕÞ([I€k©bùR:4¾š†{FMô—:qÓ|³wýþáë¯û‡çÇýŸ|#=>=ïÇ[_ªO?öûûŸÕS¹UIýYlÞEǦJX
+¼EKJ‘ÓÐÑ*Í÷Ê‚-ë´¯ÖH›5æ7ax1ªZÛ<è|àŒa§å¼Fok”'j,¦p«¾S»¨¤ÞzÉ«mßÜ®/wH%üæ;^ksøW³Ù Þìþ…êÜNõö~ªiC鼡§G>û¯~LÓ)çæM²Y·l˜ùYn͉†ƒvKUY/#¶Ëæ,Ôæüã‚eªqé¤öºÔRzçUT{Ùõëµ6ì©xã7t¡íæ:[Zf›—žçýøâVtýeùë;üXaO&Š«;MzæQ¬á!á
+¶®£yíëÒÀ[ØŽ‡±´±FV‘‹~˜ŒlÃVÖy»²²ÆÝ ×µ™°->)ÂÎ:ØY ;[“ägÙÎ:ØY w:èSÕèE³0´
+™pφ6*¯ì†¡UÐÉЊ…£å©¼ O‡qDÌ—†6tùÏ«øWp#b¾œBås„>@ÍŽ°™z†cn¤Ÿ%kRƒi"¹ˆš9<3¾„©+¡ÊáÊhF•¸%꽿Áà0n˼6ÌÎÐ~
+j
+k
+l
+m
+îÞàÿc¿|v$µ¹(þ÷j3R²iÙø/Ñl°±£¬£¬²Ô­Ñ,Ò‹IÞ_9\0Tº¿©Å—¨8R7E)ðõ9¿›Ø9çEŽeNu¥—µ>­vM+kK~^ô󲟾ÃÒ_¿„V„™˜]ÀVèª$ö‚PÝÀ±hødGH0èb ~1…NKb_«3xe«7È.Ww:¿øƒ”YNðÔÅ#””"W—è…¦õ‰=%~ïöð1àcÀÿÔ€Ÿx øð1à? Ÿ—ŸÂ7ú;â"žœ»Ø‹4)Ó¿Ò‡O×_„?ëÙÖ”ƒ®²N¨íû/·Wuþiê£.Ö<)¯íÁ¥û3æëñ•òO Àþ¢qŠrsñÁ׸R<y'5ŽáI€—¦ÃÎô”\w¦]iq½w—åéß!îFú0üb>¥×矿}~þúòúW9^¾|}ýtùá·××ϼ<_¾ÔCé~¤Ã£ü`áõ‘rÊcŽ9€ë{0²Ë6›¬³Ê]–ÀÆœRSL´ßƒŸ]²É$Tê’LbÌcÇ1Ž]@¶v4ÚÑŒzTc7ÊQÄScŒÍAðvÑFuT±‹2ŠC
+cˆ!pï广1ܦL½úâ6#rKÑsÿ`¹cPÜ%î Fn n·
+E4ï‹ Å6k¼‡èô«ø¿‰Þ|jx›è­'î4œ‰Î¿z‡úUÔ~¸‡Ê€þL¥Žž³e½À5²L#M°¬YªQ»ÉFb,nUšEp½U±Qh44êùF®ˆøŸmdéEªQû“ÛML¢òOäF©ÑØ(6
+†E½èiúÃò\#ÛÈ4ÒÔ*›÷ÜhGu ™­Ü“L•e9–¯êY+°æmd%<‰b^ž¾ÌañÅÒU†eY®Ê³zÖÀ
+“ÊMÊ–XÕˆë+/•SüMUi–aÙ*7‰@<“zÖPXå9Ê=泧Îs)Ö®J±4­4
+]5RݺßÉ_Éíd¯Ä¹@5ŠôNêJ{•{Ñ(öº‚ét¥ñJËFõ¸Ò°S%%˜.Õ¸-²W2WÒ;©YÅ·Ò}õ¾æh/zËIïÑÿó€<%9s ;um’Æ#q,’G#:¬]HH¦ˆ„T‰e‘\/´Ã*à„„d‹ˆ¸i­yâdxEL5/¸ˆ§" \wž Épit0ìHÈÖˆŒµ™k‘½áÖÁ`NrDJHkÔ¶Ho|ë`F “°°#R~@Ú{¤¾Eúk$\Ó`„e pÁ¸Á‚4R®ƒ¿ QºàŒ¼áÁü¡‘s|P
+†T/4_ˆî JëPÚ‹Ò‚”€Ÿc¥ ñ¦UÝnùHYœ¨B$e¹Ñ1©«Cé#BîHöDîP~5úC ‡
+‡BjÒžYã¡N^꺭+Elº•mϲï\¶ý˾‹©.»µß½9o­{oì[Û´ †mhìay8ûºY“jÓ ÉÍm{´o’j–Ú¶!ìwÚxîm´ˆí¶Ÿ¡ã™º1kt2}'S¹‘=NïÙDŸOù¢}è_÷»×ÚsĦ4èªB®«äFÅl+g[=gUt\M§•E§%Æ*@~WÝLJL÷Åqïè¾8n2Ý Çq="ÏRÐ RR‚3‚tD´DmèucƒtVÈk †ÌÈó à=ƒ¹a➨èLLÈŒ·ŽÁU3JfNî̶۱ÉÇBQŽã<‰'TtYUt’sEþ†ŽÃÔQÝ9Ë`Ëká–®B¾ýxLEÇ<1KžaȤ3)mÑ­YÃF'” Æmlßi{ øïpE…ßI<MG”¼ˆ§ÞÙ÷Ø‘fêé.ËW“ìň ÜdºîWúðéÝ×…?q¯¾‡=ºËt•œÌØL;Ö{cד}s7žÏc;¸6ŸÐ)d@Ç;ŽÎ¿G¬×Kls‹÷]ÆwòFùé1'“–ªü:ÑyÝü(ÝÜám§óÈÂõJÚKûr•ðí‘å’®Šw]Vî´œÙk×ñš×w멇s}ãlŒFú0üb>¥×矿}~þúòúW9^¾|}ýtùá·××ϼ<_¾ÔCé¤Ã£<~xF©>¸öÁµ®}píƒk\ûàÚÇ€×_/\û‘`$†â`,= &ÀhFNH‚’ƒ1õ0¨
+Ff`hÎÖÃáÁêFX^HX ‚X¢ƒ5ö°È
+Vj`©ÖÚÃb¬v„åf
+fn`ê jü
+~Áù‡I°“Dñi8!EÊpl8r°Xà^,6ð¶ÿ.REI½Ýs'°UÀLOÞÅSÀ˜±"1XUë*€s_¢l’¡ša¶Â1<#0fF¬HL
+‹èõv©È·:~#ÿ×nqí0ò
+tãcwîwmœµRóǵ/_›ùµýߦ†ë qóR÷íhg»M×gî« ]t–Ç夯"]û ‡¥ãq¿¸ìtÛt…SEP;¨óæ
+Ùa:At{йàVg:!ž°mT‡|w‚=FFùÇ}‚:Av˜Vð¸À˜¿¯ð‚£ôÌN¯àù„k3KÜ«rArÜg4—‰»ÂÀÑ>bá…ä“K6™¤“J/TÀdheŠË0ð¬YâR<yͼˆó" ¼î,/$ÅKCÀ³hsBb™‘\<ŒE’ÑH4>(àìAÒyFöñÈ@YH#IØ¥ÀÈ0‚„Áž‘<2”E–ÒÈT¦* ì#aÌg„/f iL#•Ix¯€š °„¹Ÿ‘Ý<2œE–ÓÈt- >Ì*Afd? h‘52¡„“ hÕ@p¹M˜‘=R¤EšÔH•†/ nÌ1A#f¤Oj‘F5R©D,PÖšWçŒøš)i­“:× ¡épуÂfE¸—hÑá¸5æÆЗîu8š’§Î¶zS;Z^oˆG»l|´àh¶½‹GïÚ
+KY¶UðŠ\•³(jQÚ¢¿ëV»9fŽ8†S(VQæsµ–b8ʼnV*ÎU­ø\È ü()‡Æ-ÒjJ:.áuÕFÉP ]a2Ÿá¾"0ÊsÄC0m£ç1WÖäHÙ°M~Çh·E·&§ñ5Š|iÓÓ’>ÑôÒÿo×Ëk…x‘,¼,/ÅÔ[f;0¿‰™Cɤ&Ê35™†kyÉðáb­E–öÌCè‡PTKØäCÜlT‹8ÉìÑAšn:YEºÇÚMÎ}äÜAv¡<WŽCÍ ®_œ+ŹFªÃ¡5À`èTÎõàÜÎ`µÊ@c¨˜+ö°]e¯é»»è¯Ž·o•;rƒªÐL…Ýà*ü†ÑZÈצ­hèkÓ–_èkÓ–5ôµiK-ôUi‹¥šBYxÊó¸<[Q̠΃L Š5ˆ—X«dÀêIXQ3Ö™çDf8kIŽPcNFÄ(ÇÏéÅp.‘7FŽ¼|K;¨ýã+ðÊ ã3 çv{W'œôc‡7(Á%Ðúá¼áŽ_ºý×ü9ÐÓ»†ç@ÏîØÁßîÿõÜjÿø
+”Ú;”…põœíYöLÝ@5­{µ‘¤ÝÚÂ׶ ¥Áj‰?›Çά„;îÚëEo¥SiU ®›ê]CÝ›i×MïZé]=ÔPºì wíSÝÔÎ&ÕÑmÛŽmó4¼ço¦ñmxwNñ–?!Ô|ßô›Þ†¼÷ß觟ŸÜ;ü;Ÿ×¸iÔoí!JLóÍv„h/ðÒa|%«&kñÿ¼ljï aÔJ½ï*›+<·;ŸÙ •÷0êS«æfts…×ã+9‡aÊÍä¼’µµª¹+Û\âÉý Û›´jt.ï©rüx¥X!W\?u®"ýäÿª~Nßþò¯_¾ýöýã?å‹ðý×ß>Ö¯þôö‡¿|üòÏïßÞ~­_½‰?ÒÕ—XLò-|ÃBý3±È¬m©lŠ¡Hw¬pÜJs/ ÜMs;ÜP3r—äõŸ«¤@“e­Î"¥y¤µˆÜ¶`œÆ|­6S#éå¬ç9ï9Î|–sŸ©×/÷R¶r¸_¾#NÌ©"Vì[¨ð®ÞåEʼ͘{Äl-?ç' 8bÆq‘ŸOËÏ;ð3Í;^ßïövë;­ä×€R^¸oè·Ø!P_­6¦¸>åÂ$¹nA¹÷ÌI,¼ñ’ÍyãSð)~[ž àÅÆ£
+Œ’È+ÞâMLe¼pA˜À¾Ô}G‰Ôû˜¼rÏ£PvòÀšÜlŠˆŽ(N5º ÞZks•*Wqx[Šokrº0 šTsÀøŽzdš«¼pP¹Š¬ÊÒ`Ü(e¹+! öÊ=žÚûÇtd¸’!+‰X•âÅg¯”pQÍká¿Öœ­:ÂÆøeÞðB1Š“ƒA¬pˆ9‚̈'i\²ÃR³<ÛÚ,ÑÃ"m—i»P7é¡:u½æ©[,äó9MQ…nŠv‹–êÐV0£»&µp`‘Ù& c/´\rh½^=먓^ô‚çó¦<å8“Î*Žñ&˜ÙD“€©dD0Äm[IVÁÚÀ6g½ v¶HvA9KNI…¥“ÏdsÞuvÑ%· ûäô& JÒ+¯ ·d¼õÎ{€ÙGŸüÂqiD`²þâÙt0Áœ ;hL XX‰*¯¢òZ˜µ³¡2Ûs[Ø5»¾²i%¸ò»
+ÐÊð*B=Ç»u,ÓªH›Ç¬ºÔ3]¸N×cåºc›˜ðLwG8 ™ï3ãÌ9çÊÂùT9gÖ©¡½¿lÄgê%xï™/ܧû±rÏìSCY
+ðuÄ×±òÚO¬¯¼®3;T^û©u•×¹ðZ˜·É]­¥ŸÝÕ`Öé=2[†N#<Vf×6•Ù~Šs\¸Å ¦n” ·cåVVnMÇm?Ï¢r v‰GÚVnû¡+·’¹-ìºm® »Ëq² ä–á¶Ûp‡:ÜGvë€oóÍÞÎë®Â»ï
+¼ë﮾»ör}"ŒÇhÐ-¢ÊÏ®²«Æî
+»RÒŠë&­°²¬ÒFA®MSå6V»œîbºKé.¤<EÄ/zSÑFBw]åsÏ]:ØÝ›f9+¬ CàÛq›9 !…A Ò¢„Èèh òƒßbLqžŽI`åK,S}ÌSF œŒ´qÚNüa
+úæXWÄÖw†{
+H‰ì—ËŠÜÈE¿ þAC{’ÄûÑâ!5=nzÔƒÂP…ñ kàîÿçî8GRJUÊt¦m¸cmpÉJ…¤xœµwHy×!î»ýçÿo(þ#Ôðî±|BÙC™«Ò—%ÔõC^–œŽ$ÖÓñŠÚUÕ­Äþ¿²\U¾¢ÄËÉ+Å+
+×$¤¿"wU“ûÐW…’ZiqÉã™ß“ÑŠÑå„áV˜-ƒ™vÊ« ¢J*«¢ªjjT“–˜J­¶Úi¯ƒÐQ'uÑU7=êÉH¬mŒ±Æo‚‰&™lŠ©¦™ÑLVbik¬µÎzl´Éf[lµÍŽvøVå´3Î:ç¼ .ºä²+®ºæF7¡§Êko¼õÎ{|ôÉg_|õÍ~Â0© ƒ 6¸àC!†r(¡†Æ0a”UÔÑD]ô1ÄS̱Ä[ã„RI'“lrɧbJ)§’jjiL“À «¬³É6»ìsÈ1§œsÉ5·<æ «C]L±Å_B‰%•\J©¥•±LX[ªêjª­®úD5Õ\K­µÕ±NX™ªéfšm®ùZl©åVZm­mºV£ÍhGG³:âêxù˜.é°® ÔEé‹2—$&{Qî¢üE1… Š•.*OYôT.ª^Tëüç•®ÌÅöXjõ»?ø?~àÎ^_—Õx³Ú‘ÄÁÅz³Ê[‰£‹P¾QéµÄÛK³â
+{‰×6ò7Êm%öÿ}¥M
+¢ò„øˆ¦o“Ÿjð™
+·)ð˜Ü'†
+eg¢â˜¹¤ŠÖ´Ô Õ¹£ÏK¾‡ûDD(´ò+¢cš+@JÐLXK¥àˆ4a.ˆ^™XT©0jšËC½ ‰%¨y**Aõ’‰•ª¦'ªÞ%h⦥rDÓ@…Ä¥Ô‹©—S%
+ èÒ}Y„Õ ®û"a™•Û}É°äJpHì¢Ê>eìÂÞÛ÷¦lWØ°ú àÿêW‚Á2äI›àt?éõû ß<tùÁÉÜïíþïïnWþéïRÁ©€;@ûïýf… ˜o6î·0CH§œÙ¼íÞ–ü¾Œòç/Â7¬/ðμŠÛîÝÛ”Þˆ™”©ß[”Áõ»ƒváhT¬=%k6¯üŠ¶ôNŒ Š»P6ÚÙ>%Χt8éûVçw~E[¼³4ñ.ÿîÇ—§ß>xúôüò/_(Ï?½,—~~ùóååÃßÏOÃÇùÒ`Þ‹£‹º4”'^¼DûÖSÿo–ðöþnTdS_¼³?O=¼ïü „ á+i^nûñHñ„üã7KæŽF¼<—¾cÊ6ðú”´2o¹¡Ñþ-L“ñ¸:Éá¨/_nôº/Ñ{Ø@öâÊí߶ÔôáZÓ}±9^l};ªá)ž•z+‚ð„X܃mµ‰m³=Ìö(Ûƒl±b»³s€äãˆø^—èº×mlýBhÝgVñ&´ncë9¸ž£ë^9¾.–#,B¬@ìJ_d9Ê"ÌRœå@«É6-ÅÚl{´íá¶ÇÛp{Äí!·Ç\]À‡´KyWÎæ¤)÷ʾ–òoOÀžRp $) 'JÄ|ò­èÿ c6ŠÉ¬‰UäªÙ ËêÂŬ²«(ÝþSüNa§¸Sz£¼•˜O.õŠÚ‘ÄÁÅñ[$úþá{J|ßÇý`¤˜J,1`‰Gñ%¬Ñ…&4AzAJË+O$xb@¿¥‚)íf¦Ú"$Ú0U$qÅÒ€¹’wdQ¶¼¥Ë(6€9#&lÒüœäç¿„xŽðç
+.efË™.g¾æ eÄ4{Ô˜•2Ç´9fŽ‡èù„v8ÚëN·aêð7ßùʽ¥ÝwÒõÀ3K,‘„v8JE<å¤Ê"œDíl˜Èsü)zð†&Šy?Ó)ÑÑùÐéÀI£c‘À8X¶/ãŒ
+FûLÁ© ¶*ÉZ¡^_Ѓ ß½ÖÏ¥ø p¥«†¤IôH~<¿Š^Ê€OY_æ”û/ûe³ë8nDá'à;xÓ@²¹ )ñ/h JruUƒº1˜Ez1Éû#§ªHŠ²e_ûºgÕ£ðõ•EŠ”ªNÒãJ» ’e8Í‹pÇZ¾ò Œ%,, ¾_
+'W&zŸº+ÍÌVèæ}äj™WHp¹Ò  Üve—pï\÷Rv¹£ìr»ì‚ŠÐá®wξ¸ô¦Ü²9­ªm]ªô©¥SåAg9ÖBõLs!¦BâAÅìÎÜÖžß÷º}z[Xáގݶ\·ÙpeÙ,ÊbÈ¥’Õ•¦:ÝÈÐA•-Óæ9‘ùqˆ–܇'„¡%IžÈY,àüðC$@‡-59a²4˜'„™_àŸ3Œ{B݆€é!%M€Æø»™ñÀ&<¸ˆ¥{<ÈÔâÁjÜcáÒÞâîQn†w;6ƒ¼ÙæÍJ§Ž«S·¬±½³ò%ôСK¢>ÉŠdz:&ê™<÷MÁc[èžwPÔCQ5—»•°å Eت·Ã.n½Ä-ŽÈ˜8
+'~ù‚-ž÷ѼåÇ…È„‚dŽ+Ћ•~û„a´PîSyh‡x%è¢îuéÇÒAÆÖCÒ¾¥‹´­ ­“¼H.õp'Ùõ‘û*Qrœ‡¢a)cb#¢1‰¼ƒw)Ü« ËŠ‹Ú„"Eã¬÷£eAƒ5£»S(ž$w±ˆ<ZËiy´:ë°<²®&EîTŒ•{¼™‘*N@‘NR|ð¶‡ã’òØå/U–CŸì÷•¥&®aô¢)58`‘J~rÓwc'3iä„ ?ÝtÒ˜N32«zU¼ó¤1É€é¦ ïLSÖ²hY ¯€îoG´£óü¦ —îÐߌèçÇ–Xs.&nŠœ1þÞ¸ëÀ~~¬Üv2ÈZ“ÓÇ ÀÍø~~lÙ§Žœ†íÞq}˜?3êµhׇá®)Þ]wÜÒÂ{õ¤g½cð&Qª¢™ÌlV ›îáÁÉ/¨ñ†·‡ë&Ͻ”f…¼v“BKA.ûŒFÃÂÎÃ)»è&—IìYêEèIæEäEâEૼgñN$îªX§½´¿+ì%¿ì–aSœðó4©)O3jýʆDg“-:4Ù¡æR±Œ9e\”sžÙ¬0-x6³™Ñ £ÁgGµ™œÕÕŒ[ÎÓŒ«g:È\¬ìrjêW;W \µllÒ
+Y­Ø^¦š¢z3P‹v±s¦™:Û¬ÝP ž’â_œ^ÅïÄ Rjñš|“ù6ª|Yžb½º÷ã]nêÖ=~Ä º–°ñK"æÐÁ¤&bÆÖÁ2“ŒÍEÆ,ËX„lf!3$dŠ•,BÈ22}í¤ÌCÊÄlnbf›k­žµw¬Å¯ªbXçǺA–µkaë¤MuêVõ­S88‘¸•%NDn“¹^èXêTÎÚ­œ[¢xUóªêuºR‘¾MüŠü)–šª½²»–¶od÷ ljÊÈê¨J«V›·zl-ޖĺa¶ƒTuBºávø ÂqCuÿ¤LwÉ{Ôå‰Æü1ÔExõý¦úq',f€Õ„lÔbæu€ A j”Â3'ÒÊå™.6šÆ^m„Ô986ˆ\[„è%ÝCÎSúræQ
+P5׬„ÆÒùƒ±¡ŠöÎCI#I4’Ì1³Z.ªäÍPBŽ8Æ3‰LbX¬à‰Y‘¤ E $›¿ÐÞÛh Ca;\ÁŠÿ„Fl¤ÆÔÈsDz¡ð±W‡ó§/0WØU¾ ‡Œ7¹y¨ò×?Dxuu*¾†:<>ŽzeðŸþA6 s,^"_S‘.*Çç"[Ë–H–VU«¢T¤RŠeªJ””È“ˆ“Ó¦I¢G½ù¦@¬>J„§¨NÑ›¦3Ua6e©r²‰È&,Šu¢ ÃN¶<ïsxŸŠûd€‰SøÈ…¹PRó$µÕÒ S°¡¢üØÑ«A„Ž¸#]0)?íÈWÌ,7€£R—«p~ Q'Í+¨`¿/¯O8ìQ—'^åGœð'eNŸ~ο+£ô­/ÿÆ5ú- F'üÆ”"ǵ;ÑWãOþäôÉhòOõéçg†äÿÒ€?™áäÌ›Fï×MtùK½þÍ;üàÍäÕœ†ñÍ7îÆ_±0+”öd±P›ÂÁøË+Úødz?h;+ó¢>Mÿp?¯ß¾üý÷_¾üöõÛÿäDþúëoßê©¿þò¯oß~ùÏ×/§_Ë),û¯êð,&Nù ½T ‹&é~¯u‹®[S7Û¸r4a|upŠj1Ê *Dš‹)*VT·¨~Q%£ŠF•jœTªTtˆÏ×MµQ+*“Åž¯1îs!¦FjÄŽ’oª|ñÜðÇŒªÿ§œ¢'Á{μÛÈût¼?Ú—æÍÈ&2/XèËÌì™
+M6]\GfBmù‘À5—ž·<1j‰èàöŒ.j¼ÀÊ,…™éQì|2P%uÄ (XêàT'nŸkÌ<¹wSF]Úå!¿vdþÒ‘]²½«fL¬X5bbòª¬°f½Øxñ=Ù\Šµcɶ²xJWüd*^’œ¤¸HËRÜc,«¤®Š—'KË¢¢,‡Ý`{È¥LÀéÆ_¬v£ ø¢cGs"‹ÄCDrß’…»öTR¬ó6Ò,žK
+]l‡7ì.Ò þªwywIOîàÅBŽê@ 20ve`Xíæ
+]‘îeë[ö]KíY¶~…CJ™¶cØ1
+y8|/x1,DŽˆÄG³ä,,2+IÀúö1`7¡tÆîì2c· »ؽ#—½ÑI!ªŸ®GixêîÚnë3(ÏeÛõg%RíaÄÈ"“
+“ saaÖ^*+*É3éI5LÔ`&‚&Á èXšÂ€B‚¥>Ϋvö8,†ËÀ¸¥5uR}.WaÒl}ÐõÁ×Q_Ìt©91D²w0•MÞ@ hú¸-S|Ã’}Ÿµ*ªcôlge#ô›õaà-´>µ¿ËÃê]’/Ë!’Xé›ï˜·BØÝåáA¸ Ë;’`áåyÍ—ãLùâ„îÉQ¯é=<KŠgEñ>«ù;™p¹‡ºÿóó¼6ázâÎÐÔÒ\½¦zMöšî’ð5åKÒ·´—ÄGê+öÕiT¯Án£ùê8ªç×Q};£â‹0£*î£úê@rsCÕ Y6É£sÈjï‚‹ ¹Ée0C"WpöZyì–ìÙˆ+éHÿ&Ÿý ¿‚34ˆvnaâȹà •Âr˜Á¢ÂD˜ÏõXw,Ì;òŽ©Gá#íˆ;Â~‡ÛÁm‘Ô#aØaw˜zO¿5…ý±\°¼ûkmÿ˜‚ôœû=0¿ÍúJЩsq¡E›Ä"­„™™„˜ØÒ‚KBK+ªU …tÜ áó.zT­SœbŽ3*ü
+ë ‘Ř‚7¤˜RšRN3ªÿ
+K¡Ú+Û×LH¸ö
+u×»Œ–‘ug<¶íxÛ…ŠX‘*rGé˜ÿ™7øàs­)pÍàõÓ•‰ŸˆÏ&Hš>‘*–œ®ÈA‚Qüž+¦Š¢q„åJ+ÄkwAm¾’Óà焧–yšgÄdf ¬9ö®Æ;Öø–Æ Ëd0BÅVu],ÊX´qSÇ¢sWÉ ¦› 6_Yƒ{<Ãâ‘àÈN‘kN&N‹
+_á:ìæ<Ôæëj(áÀíØã¹z=Õt•Dt–3>‡¯gqµ¤4d”äW9#2s”°ÔÌ{í9ÅŽÌVÂW–“ÑsjÆÊ[™Ó¶Fv»ÈxOoî|”[Œ%¶F÷Àq9¢Æš]1rˆ`€é®<“,+5Ã8»8³hÔò["u`pS°:ZâÀ¢³ÄV± ¡ä…®0{®IôAë„@ÑŸQb'f"ÞdŒÏ–SkrߺÊ+ÓÚ…N¾–Ÿù
+%¢?A8Áõ+]Co:ꤕ1ݹA-oÀîaPgŒûú¸å¿lx~Ã6wX”bWLà‰¢,#xa#À–I ¡øg*z¼å2O\Ü; W0êVqÁR‘R]R-RíQ­É¨ ƒ‚Œ 2$Ôa5 Ä:uòt 4lǃՀ@#O“%y.ù8%Ö~e¢kfm°çéì8ƒ7YLXÖ!¾öÔȪ%sg-,hfÅ vÇJçÐÛ¬ÞÈéEL/2z-Ÿ§E1«IܦÉc×~Mÿu È»ÁŸˆA†Z½õ´B¾·:œO¡ðß9•~óu¸j|úv¨»nx(hCó˜P»ÝÿfÃsœ±‡²0Ð
+>¬-éÌúí}}Jr}ºh1ãNè‡O¦ß†ç‡ËW¿yÿâÕÅëË+1̯ß\\6ÓçÓ?_^¾xûúÕ𦚆žª³Vlì†ù^Ò
+,KŠF@xŠÉ/0w‚ rù
+Ç°¦Cýç‡ö'Øm0ŸÅ¤¶¬u”›Áï+RG^¡œ`:Á¼‹µ‘?·ÌF÷ƒÂxñ¡±£f†­pŒö¾BÅ6@g‚£n‰ËVÞ+êšéã>lŠ†ß4ëZ÷„¦ vAkh󎛾Ég<°$ØAP“+èütE®¨è HÅòBsp
+!ÒŽk§†·
+²yà ¼v»ÙV~/ëÄñ¾÷Ïâ9Þš‘‚àWf¬=^òà‘7VNâýèµFÀÓhQ†ƒ‰nÄfÈpI§ÈGéFG‘Ãô¥y, ÒàN…P=öi69HÑCcõCÂûÐãoÛ)³tJÈþ°¸j!‡qJ§u–SzøN§L©ð)?eŒv£+ÙŸ&M.˜HàLKx9¢—瓬‰qÔ±¸Ó´)fŒhKÞàäÆ…ôøÏq5щÞÖ¼‹Ê>‰¬A)XÎéÚ‚·ÀôÚmNG_t¢‡¹‚YN˜_ÐoØh 8à?£‰8Ö{3B%¥Åò’HƒY߇v:´CqcÉÁó•Ú ;¬+e$A38ƒ.4ôï Ål¤„š-G¬CTx#3˜b`ø ;€î—°k3²GÞ•!yø¬8nbîöi¤^ÚïŠà!íQ•Q
+¿”ì ä»CFÊ2
+žó\…Ó5¢[D ¸áÊTi0V!CAÕeH¾1Óˆ`Å
+õZ%d,Rùí=Ÿê³ÀÅœ©w›Å€¨‘Ú•e݈hQ¢_{ᶿñÄ;}'ƒ/ œ&5E¸óâ·X–¦÷öÄH'B–€•s‰ô3ô~íÕÈôf`{yË](r‡—Õvi_ë“dQ3&ÄÄ"Ãú.§%èϪYÖ<êw5û>›sѲ¿?ZµÕ zd Þ't25xÝG“Hzù8r…à¦Ò ¬,P°PΖĵBV´Ã(VʲX£‹X(Û ÒXµX8h+Z»õ}º/@,ÂæÇÅP•uÕ˜ñ íÚ6ÊH“dÝò¼fhEÅn-wUÏÉÀ,уAÚóñ$°DŒMCÒ¹\†k¡lïë%V)F랎Ž Ö-ý…f‘Þá žbž†¸amò‡Xi-DÈL8]‡?÷¬eH³ý—÷ò[±ó¶¢øœw87…äÂçÿÒecrÑ⦡êRJ¶›¶àiI¿}KÒÖÑ9NÛ!Ì2ZGŸ´µµµÖÚ» YßMbk"²¬ç®ôfOM觽Òù‰í2oŸ™ÊÛÚO"òV'Wo…r%ñV)Ká­T>…ÀK.ƒèmÓwWJ±\佈xó&Û² ݪìê¹!·ƒ<Õc“vŸ¨|6ß•ù­½}šÊ¾Æ›²fÊ®uswa§[ ~aÄÒí‡ ¶)]©zA>!ÿ…IºÕ#˜¦W•Žt“tņyý
+e‚Îxˆî¦ç`- ¨&ç—9–š#ÐD½’s*;7ÎjjNÎæe‰¹w-_Ø”òÛ«} ’süXk¸ò…uõ<EèÕïn*^òHøšƒíN5W°Ñ&ª ›Ê»V˜Ò¼vÙô{Ebs,N[ãæ,O!Þ¦”¹Ö]»6¥;_*õ¢ÝÔÖÓ]Kw‘9-á¢Ü
+áŽÂGV åfë¤ÎñL^§ÆöÓ£ÝØO'[H>šG2mÜ·PÓxä…)§n¤UéAÞÜ`ÃN ²Ä5 A ¨©ŸFV ãI‹þooï¡ êSúu¡ `TÄ/Qï¯õ}Jï+hyq¶6mè8öš\ÓZÃÆs›Y&K¼7þ¿Ö€<5¶ÏžcÆbsf¨¶Äõaž‚ö=ÌÖpº ÚÈáK'Æi“£ÐE(n
+€yî=Ü.ÂDB¦Œ=E¿D@ã´k
+D†…ôÅáRnö±Õa†X=ñf¯ÂâáÆžº
+Œ 5‡ ¬À'ŠpÉc+Ä.ÉŽ‡S$_Am¡É¡„š‚÷p F-ôDF˜9È2ð‡Ï(ªƒûÜè×,OŠê°½TfÌôú“èö£ûê¨{_ã4<ôû}¯½›O-tÈÝøÁ€êû«k…+ ìEd¯åzÔ°²{ЈDö¤ÄædYyª’ÊJ¯,¦np–f˜¬…Øk'g
+ÙeEë(ft­„Ú\Ø  ?—ñYR-7i~U’ã8†cPÂ|ûòüJ6έ[ÄéÄÇ![A©.
+ïýšA÷ }”éw®5ÌÔÀ–0š·]v-°@¶9=PS;Ì.v`SKˆ ÁmÒìb¾9}yúÕ¯¾ýòþõ×ß½{÷æ‡{“Æß~õÏû¯¹–wÜ̳gþâÍ÷¿ß8}õ/ýRÇ/_üðã¿ÿfë|öÍýýwoß¼æa}~âòøïåO§ùwt"Ô¿—ü–?þôÓ9žwþó_ŽókÍýÃéY ‰ƒ[xg§ˆò5û¿¸Q¯C‡×
+?‡­ÏïÙð÷§“ãnsÈ\ sÔξ©¾“È΋¥pVý]®y®0œ`y9`˯ô}VŸýt¸O¤ Ì­í?0Ñ!¹ŠÐm¢óñvâ{Mä~Û7GP´¯¢Ü³3Oôüt=×Ëñ÷¶EÉZKá&€™ÊW7‘"`"áëS͹nŽ™»¥jÎ}ºÎêŠaÏÿŠöö¢žŸþzúæÔΟ}~~ùGþêÕI9_Õæÿ+ÙŽžé„®Š÷Á¥[^¢ª=¢r*¤yç#—Ö‘Wˆ#¾"·/ì«‘ñ•Ué÷'7öÐ")ÕÌ' Ïîj»‘'è·h%H6$ª!
+^ZÀ±A€0wóE3›»s9‹NCàÝ9lQb–æú4‰¹ÐZ†n~/Š@bì] xéì§ËP÷+Ë…‡sËLÝj«|y.@¹‘Ÿq× qsµ4Aê'u°JGâت„2# ˆƒè⤡Ô\ʽȭT‡”U²UêÈ¥æJÀGSú°Þ㸚{”C9¨X€ÔÃÒÌ,Fî[E¥s,€0Ô¾
+¾h r9/hóÔ-R¹—U*ã^Kj@-xÖ :ßl•‡ný¤4ƒ›z:`êõ}ì!.š6ÑMJÌ
+C$ùõ^¸‰Þ›fž¹ú´N?Çf9ý^JhœÙ«ZÃüOp¯¤«8;{¥Èúôø[=@âÙ';#o»gŠà-h²€ýÒø×€6“œÏ-Ê>ä'1ø­ž }ò²a™ÐÀíÑ6ÆObp l7¦¶Î‚f0ø^ùþ¶øÐy'<OW¬¸Î'@©}[ç{‹Å’óØ»&wh6ü™›ÓØc×ëÅž‘Úc
+M9̒뿶Áoß6Çß¿è©£}þú'û£Ög}ÕcÉûDVÌ}Š¬—RºBJòŸ”¯(¨’ºÎŸôÿɨee|5¤õ½ã"ÏE;í(ûϗߣﯿƒÿöc˜ÿ•bÎFl~ÝøûÑÏJºå5_ØÇë˜÷ ª¯÷ÿ~[øþ¹·p5ù£›‡¿ÿQý2_ØÇë±|ãåwèûûïàoœüãKYþ_KYOë·À§ÚÕÿ¢lõ‡Š?Ôëø¡,õ{äSêï)OýZ™tç©+ºóÔŸ~ |ªEýß—¡þî“ra–¢¤«9kwE4Å¢òÀŸàXZÌg%äù ü2òÏKußSåbêê;+DbOÌ&Ìŧ¤ð{ÝŒ“k•® XÒÏ0Ùfu?#5Ôtóo/…œ›\7¯Óª]+0##Í h´³«4ôC ý8+G¯4Ìâå­,ïØ«rCÄŽÔr«
+†·þ9:È[«Â q&
+¶Ž¡Ÿ2æLö¬³c´²z„^XœÊƒPø×@I¦Hp®5
+õÉéóäÆ‚Ù7xî/b¶Ó@#8–_Ðæ5ð”xÛ^Ê°z÷GŽ%¶F—W´Á”k kš­Ï/©‰‹Ò
+ ¶Ó1y’¡\óôQ‚MFí
+t½¯õõ@§ä#á8ÑOq6/0;îVR˜w'Šâ.*ÀøÑMŽ¬M  ÞŽs§D{í»-X¾”—UÀ=W–‡#Ó
+”ÍŠY‹„°5&¡Wa#˜òæî÷ä ÔnãaQØ›S1Z»À®Ì¢TÍžÄƢ׀ث9×%ö³'³–BvLJÎ4ãTÜ„ßSÐJì<œ('E bûà Ó~¿IsÕ¨= ‚˪?¢-c=\¥Û·¸‚e>
+ÆÊé‘£VñšÐ÷ù®˜( öm V|rÌ–Ή²kN|´ÍQ£ γì kË@£©}v
+5•@_M^5—°”<z:–8:–ãêÝy8Û/OÎZ*
+0¨äàŒ Ÿ‡CX1 îgnWZK ·P7‚37{~¬,¬ôIüoØÐÞ÷i*¶fu^½˜àÊŠ«Ï"
+±Ú¿¤Z4-À½ |oîWw^ï 25a 8áf!‘àUuI<sU€PÚßWZY˜^Ø»À6nï 5¾÷áö›åß
++×™Få¶
+°ø,¤žu•œ®§ö[£O±7-!sWœ¼cNgæ[T.|åèÝ31îá\8ÔMXÝÆ j˜9.\¡° ©{<nM»nÅ)âdË–„͵˜§¼¯ÔÁöd¬
+`u¹7s_ ô7ðvbÖÈÕx#­ý» À^Ÿ‹=grE¿5ÿ¨<qk)žK?2mh®…ã4&ÝÅ>ÎL¤|÷á½´Ížk×äh¡³ò “/»è`€¾¢[§ñ[ãP$B¬íw‘§À JæT€O>/ŸM4CÕÆw;Xæ£7^ŽWÊܺ²ûáê%JÓ˜Ò ‘‘êœy</€Uœ«Æ ÖêšT ©ç Œ/);.{¸&eǧÄׄœ/ƒ\VfvÉ؆ÞÛöÒû˪­ŒÄÙnù®J§AËfê9ÌÝ’d·•àÜBë È
+•U0&×ÎÅ!æ
+žiVÑ2µ_:­ÉÌ  >ŠÉÔð­>n,“QVÌB”Ý"V(êƲ¸2;¾äú¿‘M8j€býiú*Ío~$Šº+¢ò¶Få›p‚ûçÇù¨–ü¶qüAÿÙ;Ò œ+4¦Ÿh·RïN§ŒŽw§qÈû¤íû1Í&§º
+P®Roh jÂüRÉ€Õ;÷Çl‡Ú{õÅ7Œ¶¸O`Ç*@;‹ÏeÁÚX Ï'XlÕ—%SýeÜ·<l×sÍì¡”ÙŽÙÉ……ü\&9
+næ©®$vV`Lé;4\½ò!ï„X‡ÏÕö÷$èå/ x¹€gc¾¬Ñlª¨dbž‚jm§Žó|íÁ)iIY
+«:j¿r­esáX)É|åj#@;Ô>ê+â^8
+fÒ]‹OŒhYü{f€ò.@§¢àÏÁN¾§ýIƒ}P0ŸÂДƒýÝÃS[«$t±¡ÃxæüšLàW‡½SÈ; Ñž«[V€¶V^ nIDvyµÅ¢5Ò|²Û׌Û÷žïÂÎ\þZ‚"¼\Pî¿ÔYaɳi¸RuaW9 Ï
+ì½9/¶ ®ç9Vù¶"ÀvÄ®ÍZl«ñs~ŠaBòJZî˜Åùæ°X¿Uî F¶«Çk¶Í€“N^/Qip†x;sPúÅ:Úì€Çå½Æ¤o˜°s}ž\àÝý.¸ÐŸ›…²•=XöŒÇª=3A,|SI,›@ksÕÔM€Ë»ÞØtê7³‘.Ìx†Îµ ¥p‚·€D—îÁ+ä¶siÚè\p‡ì›¢\Eï-f9e€8ùPL´]Ñú`!
+H‰¤W[‹¤·ýý¾—€ýàF*©¤ÒãzÈC²œ,cÌìææÌ/Kþ}NI§ÔÝ3³äÁ, Ó‡úŽê~‘1Ë£ŸK«åøÊrÉçÚswÐÎI²”®uIvÿëî´à¢pµ¹V]`ËeƒÅ:%KW¤³ö\(+ë­t®Úù½™v‚) £`kûóTKˆf«Ç½Ã2Κ­Ñ.³É v9I¨52ÁÚ:ßÏR­(´>–J‘)*ç>lŠ¶s×næq½e‚ ô“ ƒÌšuLÙ
+»”²àŸ~Éf A+:HÎC†I¿ ¦ð¡Hms“»0$ Ã:EE+ëÄ÷’– M%ïïs[©½ú Lç6$¾ïy(…¦šfF2˜ØdÁ#%ëŽÏ%ŒM3 Î(¥£ÉýYÃ1me‘ƒ6XDµP+m ÚiFÅFJÌ ‡k2ÂCdÃ’"£–J椡oGºÌX`ëj|® 
+<d©šƒê  ‚I¢¨œÀÙ\tö…®èLR8K°yœ’ÖÇ…À”²Éëƒ šHh`Ç«„i¡½h†„{ ¸7}¦D9wITWlu<€CŠ-°¤è¤/yïù`¾rE Ìàrwz˜z‡t š‚£ Æäp¸*e{±EhIŠî¬Ï¸ÛšõªdÒÖ¬Iαê VÐBÖaôYõ‚
+Í4yuMÙÒB¶['Ö|¼ú>kÈqa›Gà1àŠõ•}Í7Óbõ<Y þðíRË%5QÛVZ§$:ƒ9Êš/Ÿ½‡Õ|ŒJ“.ÄÒÊ>Ó˪‰æí=ÑÜYÃw$è-’L9§¬†²mùÛYK&k3i›àZ+¦]ç*kÖÕã +Ò—°/÷7«¬ìšmÃÏHÈ.Þ ;å‡7©GÂÑÚA“ë´ Ô•±v$Çàgb^èwAë[«~Í7'mÑ`̪¯*À Š¤›Aî¹ãðÑøÀ胫†ç¾%q»¿=ýêÍoìû_?½ÿú§ÿùû~øùç?=-ðëûÇÓ üÅ·OO?<~xLô
+ʘÞ#•f>OÌ?ÙÀÊZ´ÑÜ®ÐûghYÜ÷7
+~¾hy‹x̦oߟÚñÅ—Ç»?OÀü3Örxþ<ð?¼ hB«ä=æJzÅȵ.:m±‘´XñS²k7yîÂÏ!‹þþFÇÏÀEo‘Ï;^ð 4ëzët½õÀBn=pÁ’®ed£ÝÒ¬Ý:À—ö;úÒüÉV½†µT®ákK&8úK06’k“ï_A^ñÜ+À/m ¿¬3(öÙ¾v Æm#sòkôÒ(^ Ûôolßœ|Þ¢¦çà¬X~P²Æ„ FÝÛÖN8ÿÓUCÂêÝžëCô_§?‚´MJÅ.Ý"'LçN}»©<ˆ~<ã
+x‘éè?|àv¿>O¥ ^Àvñöä»ËŠ}­“Ïu$<yg·ø¿Ü?"h“·A¦Ï‹ÅìœpÈrM€d­|³##6LÕVnEó”4Ÿ™EŽ‡ù-<›ç2…mmèt’u±‘5ߨZ#AÆR½Äç®/Ãæ'›®wpØø±ÀÔ;AÔl%è?0£5`[g¥óZ`¶ N>øP˜“› k
+¯Uº
+#cP#›æâV ,8…`µð^9q­÷€DŸÂ™*«(å|.Å×C;ÍjnàZ¼Š†zY'¯onï`ÃXöÈÄBkA€uk‚§FÄ°a!ÁÀV.W: `x7#ØÛÐI€å©mdzÐe+YQÏ• • g÷$蘔m0MË: °ÊöåöÖþ¶µ:Øñh}Рw Yu7336kólÛN0"
+Rzœ&’ç VAÕÅiRæøuÐ=û°×ƒÂ<.^À$0c!\]R\m
+!Ç3’Ñ®}Õ¢¼Rc%åRÊž73ýì–}Å[pkÙÓ
+ ¼Àb°ÏCjÂmåŒÏŤ5ì*A ¾B/° Ûh:l¥AÙHe7w³â¢]8rú6¡#/okÙW€žù*;¬N/ß® ÚÇVL÷Â$Ñ!1AÙ©<;ß j,¦*<s+ÚmLŒ% Ùˆ”CÕ<pq[ý‚uuc°Ž•Ÿ0Öšûˆ)W.&`@hhÐ7ÁˆÊÕ–•HŽÆ…û°l j/”­uU.@kƒ™5>ǵôHO4ÄåE{ 'âÝ1Ùf÷]`J æ‚tµòÌXLñ)v>Pƒ™jìH£Rûw¤òX“`O-˜$o‚®=Ý·åªÅcu$ ‰<Pd؈Ž„W@ÞM‚å܉“u”H$dJ‰[jÞ²9:­ŽÖ±Ìæ÷@‚‹b;Oe„gS 3†`3®ÿ€3†C˜Ë~
+zqZÊÌó^6…ùée†LÀæL
+q°KPÑ+Ád§\‚‹ùb:Tx¤¹ì÷Æl:äž 4_C~2L
+ô¹},5eÇ"œªsîtiu¾‚ñã'Ã?4Õn,m &0NîÀØònvzÇJñ ×t‹–K¤l!¯;/¡ÃÜ6únnõ=&n²k ¬ßäsN̸ò'fF}®#û& 9Óƒ´fn61ȳºó”n-D‰t6—I¢Î<6kQËÙçpr¶>³¾s
+~úæoÿxwþå»w_¿}óú9Ð'à'—_<Âó%þýêÃã‡G|¾ü7þŽÏ0þùêGüÇoñÇ?}xæçïžúsx¾–ð/äüÌ¢¶q*Ñ_o/ÈTâ¯nEäW¯Ž<¯ïäLr/¸6
+‹ã4Æ8ˆÖá€l8dì€Ï$»ùƒuÕèf•m
+pËu߀¿}üñ¡£Ù›¨Ïyƒ‰ÄŽ’ði PÌ㣅Jíà8HŠ…oKÒ„cDY»óÕZ+çÜ«S7ØŽ!†0Ñ(
+Ã^uÈ˂˼WhÎÏIªô¸¹ø5üx½®Ãrþ_JŸ}†×ýýÿQÕ!öƒ­í–um3¨µx{ÀÉ…
+’ŒÕ‚8•šœñˆcZZ™kû
+Âá­†›Z±##ô?`â©Ô.pÏýŒÝÀœwÐøu/±YYúz,›ºž ‡vÆRspÔø
+z»ž`+Ës,˜êìd¿„BŒ^Y þÞ¯°Å‚¡èLT˜üo{Þ@OÀSín±œÉÀÉ|x&(¯NXtú:)u¥ œy“+î-v°¹)áyÝÊz‚B9bØd·ÝA˜­ã÷"9³‡ÓçP©¹»€ïÛÁé…×#v ôa• Ì•6ÐPItÄRì&» ^Æ@Ðëz‚hkp‹Åc7>-†—Çü«‰&—]—Ø¥¯Soí
+ Eâ#|L5§»ƒ©D‡  ¶M]NKÝ `©â˜ ¬¹F3J•†òé¬öËVQ÷ÒyÙ:(ª<Œ*ÀÚ§yêÃ¥æ>+·ÑʗȺ}‰1un³õ t—„F¼Ç¢˜q¼wÑ‘ø
+¼‹>ÈÛGU"ñPT›¡M ;è“@5Å#6)Iþ˜d¾<Á‚9©²Á Böz–¹«®YÄâϺÖÑÉ!x,Ç`]?”ðLX…3Á‚«q >@¿€«¥ùñ9E¾ÄÉ1¡³À½6æ ÷9ó9Y[EÒ£lL _"ˆ5Õ‰€[µm€ÕèLˆål à8ÖF´=˜)úA:¸ç+ؤ™x›c„åWZò‘µÆÄš$ölmuB§.&¯lÑâ†>ÆÜÛ
+áY¥¼ïW0sõÁöo¯‹.jtÐ+Í-ÜŠÒDÀæ®`é½ µÜ&ß,Ø¥ƒ|,kù„{­•C‹³' û9ù½ûý#ćŸ x¥2¼Ëb<ŠT
+RT¥„ÿTV^À@a]Áaˆ—’šÓkþ`¥Üo50ЯÐúØ{lн¢¿Šs Pëqðså´Á— ! ÷`Çð 3éàì–Jùˆ -Û±zb:ÀÚ§‘Ùa.¥_cå,}jОŠK–9iÉîŽCnŠ¾
+Á_Á–‘pJUÒ¾€pñ¾¸„' —ë+˜uwŒè´ ôtÌû-LÒGÛ‹¢/: ò45(^ó¶øäyŽ7)™ÊœVž´—ôðòyêø©¢å„Üœ7ñ0þ25O2¼hO$`dç’`,Oè£uÀb4zeƒi
+:î¢bî2R·È4Ž¹†§ÀÂ%PW]˜šÈa=Q~÷Ó”é¨í囼 m`-6ìÕÐöîpø²ÔÐÊ0¸C»c«Ø’ÊÂE< _†
+’…Ë«aÆ:ŒÛjɺÃî:ìœÃ}ˆm)ý;6NV}Ää”×?· µC<ðÈ* ±ôÊ«G†“
+óà‰ j[Lû?æ6:
+1aí¤ÊÜ€ŠI·*LMD8´rZž ÅVëk*ø¢2’éÂûç©yíâ+mQ"
+#瘴òÊ„'V‡/À³« ç®Â„eØØcW\¼
+/ˆ»#ߘçŽm©Ô g \;ß±MAœÁJÒa†©ß—%èV¼VlYàÀ˜¡1XIûÖú”"†8D¹Ø|
+‡ÿè5d"µ›pS0MøÄŽÕôA]AüüàÂ3bÙœ¥¬•¦uƒ ±$\0nÍð
+ìÃôBÆ ÷
+¨ŒO¬{µ¡º‰Vu³¨±fa¶%ìÓÆOÖ`Eôê.•Jok F1¡í0A†ˆ¢ ÿö¢¤ÿg¼l[6=j0ü îÿp´`™™dÞ>nÕÚŠRY(ˆHÙ]_w¤¶.ûï=3Iæ床ˆOÍk&É$gl3øjÏ÷¿<Âó—ãeï’[c£ŸnƒWoˆË†1dà ºå ,e‡zj\¶¦«-. ÜVÔ®páAÌQ+ê¹ñ¸ŠÈ{œë¬ßتµ€Ã¶Öæ¶9ßaîÉàcAg$d.¤Ðó
+Ñüëó?[©8óK°`¿BQŒõ Z ¯“}ÿ”K´¡?œgrºJ¸{ÆÞ ª8£J(NTbÓTŠhmyÇ
+¹ªª¥ºN¡Ümñ£ÂæÊjA'äå`îØàµè ¤lc½AÈÀ´N0±¿¡"ë¦ü}ÛEþ‚¯Šk-…ÚOK<á:&.«¹\Pö­´62ÃPí^4kõÙ!nJe‡~~êÚF7[¸.•€s2HXq7¨Ð'©÷›-7mc}ø3Ï8´»-—å D‡¢3Üõf8SþO]G¬50®.Œ5¬õËôöZÖ~UU¬­׺ç4ö™ÝV^±öwLŠíQoÒÝc<xÓ$Û€ÂÆ}>qô£îó˜2ç«%«¶œpVщãóêñŸãµÏ@¥²F¡X¼]o¸{kÌõSœß_8BÝeÿþb…lb
+B.¤‡¨aܼPaÔƒ|¹H,äf Ç°ˆ÷íNN°7êúþ¡Ã¿wªŠ©K
+
+*HPá×Ò0KÓ*Ã…ì[*â²¼’Ê+Ôø§ó¢ŽåôŸý€Œþîÿ¸Ä?Q‡]ûš¢eÕQn˜±”^é¶"I
+´A—Äcž^m“ï"ÑväÁúœÁ73=5ÞlÇ8ѽE4õn Ý× –×(*àÓícegëD·M±¢jj4¸âcp¨zýXÅÄcÇò˜¢ÊmŽFéû
+{"Sõ£Ç ižÓØm~>þŒièiüsä4ze“§†è)KsÈÞЋQ€X(³Â±6 Îi½Au ;åx§mêÕaQí{@&ÞL\kò`¿­vƒŠ] z˜2y·FÕæç¹ÃLW¹èÀ:àXÝ.äâÉ2ŽÉQÉ3#%©°dj7Ý'S÷Ãe+ËW;ÇQhñòë= ã-*ŽÑ4“iAª¤[sßà% §-ÅNV2Egîì8%UYò§LÏc?•ŸÍJfY•æzŠ*;bЀ ”Ÿ)Lõ ¦çr0qƒ°¸\—çbw@‚V™WX¸ôîAÌ-Økî&)åS¡ìÐÓÈœø´•:p-äšx¡%='”fW½ZrðHµˆQôéqÅ:ñy~{ƒ˜w½ç ú›/E;Ôa›{óçõºÃ!ÅÜÁÂó¢ðjÚ{cnîµåBW­'g ˜²?Y&2…OÞt8j\ÚÖöî’ŸÌ~
+¿ÆÔúŒcÔLwÓž«• ÕèÝe¬W
+eÒ\C ù,S'X²þó ­`fÏžMÍû{ÌÝLêì£-¡mÐC@1óÅVv9¶:Â^‘¼ j´š‡ôͳ”= M'ÌÖЊ¢9À‹ŸÑÐ+Ë`¼Ø²Ï8 l膩C¥Ï>àÒµ&5¬MgôÝóÑ£rö·ØóXVÑ k´U|B_ BL–Åú¹ÛýuvBÇ]¥½uÍ ‚ÚÅmŒ‘wèE”ÊÖiK¥&…øàrHm:X¸Æ^ÏÉü)CíÖ¡'
+öâÖ¹g‡p-ÝæX­ØÍ…’ÍŽBùs˜‹ÌŽ â—…\ÔÓv|ƒR¸~€E³‹"Àt:x“-ô ú¸E>m‘­ÚÜAF‹õàh
+?ñ"jS-­v^Ð6¨Ó—"ïLGýÃ"w¬W[TI.ÖãSUeÈ5ر™7À©ÙL"U!µr‰@æzp²Ó¶s´}Ì ‘Å`*#ÐÐ#²¢à¥eâ˵°jP¼•0¡¼.¶¶h"õ DÔà'Øñµ
+{ì|Ö>…ö ú 0Çî¶Ü¦æÕ –;_Ë´r¨§%úÏT0Õ£Bdß:Ø#˜±lZƒâê)Äš`0wíæ%«ò8¯"Âä°™Šn"Dß½BS¡W$ÌÅVš‚5Sˆ³AèÙ4€ØðÂR›ìt-M Z<o -õ´AH) uÚ¢¿d…%çfкCwPÝmQ§ÿÊÐÿÅÍHÆ÷7œz›.Ø]¤¨²[zA.¼A?
+±_lE¥¸¶!û6ÒriœsFc{ÚRI6×[¯Þ¤X›‰CwÀeTòiÛB¶ä@¢û±ZëeƒsPÅRN[À‚ÁÀ|…¸6õùûEG¿¼Â­O'í’ÝAê1ßlsJKËÙ¡ÉKƒî ·ß`)?qm­Á<:ðxÏïï8Îi·\„>¡i>‡~0ì<ýf õd ãh×ÓÖáÂ=Þm1û R ñ7)x`¦y‚¤‚¼Švé7ˆÍ`ewá¹­+
+È(55ÝçHl¤+•™ý=þ¼j(ò×’PË9¹6 ¾„CO€–ó›Ø¿†¼õô'Í!bËÔ^Vúþý»j3Õ˜„øÙÖ‚±€ØØÛ¤´ë`Ñv‰Nx‰Á+öÿÀó6>VÀ¹®Õ¶9oÊ‹øøâÊ^ÊÄ?&o@n'ô¾Ý#¶èy.(Ù*¹Ìû8¡ ZÌœßÄ„½i/DÓýM‚µî¿ŠX¦êAóûï§æg;2dÙ°r> ,5íiGlqû0ÍR­¡ßñôú]]Åû×0a&G³P25
+»ƒ8àì¿®ØivرfmtS±’xã„þ1jõm6Y;¼ÂÞå„ž@Šv‰O¬PÀå=vV8£
+öÏÿþ‘þcý%Á<ÿXaIà9þ4¼N@ñ¼ƒ¢ÅØÌ6á)Ñ8á–€eÙƒolëzǨŒö mQ¿8éàž°ÈPS«ÇØ3¨ ºM/W,”¥ ˆÔbÓxCèyŠ"ýàÙ/o˜s
+8+kCOÐlº|b!Æꓵ m—€-´”òð«éÞÃðbJ¶ãn2t_M?°aœÁX¾éÛÓ’ì3«œ§
+þ@‰èçjMÖá«Äʃ –tҨ¨h=ùV%øHéùQ%Pö’ò[‡ë¢¸³Òˆ†ub¬°ØARñž¸Þжà×I:®9B"ί'6Qå;ÖþŸL”õXc7íæ}ˆOÀJxÕ%jʹïGÝD“³9>z[β°µìÒ·,½áÐÅ7k“=c§ÎY]â«Læ· j‚Ž¡‘ûËÞb¦]jÁÌ¡VÿÓ:…Ptcµ!·FÄ«¿I€b“+~Oô†Ê¿¯jœ†±Æ `p«¤n­f‹Ee…&§†—Ú$~¾)z=¡­Ú¢0´ËzR}C=É ˜ô¶P—Âô@÷>ÂS*~
+”Vè pøK©ùÑŒ´& ”r±7+¸…mŒÇS9ÖÆ4’øC&óI¨Ùyöê8”䣵Uè@¼ñ=™^+{;üˆz°Œ»ÂR»ÃdÚÎ`ŒÍ˜;;u]FÚ M¢{×=°è5Îqach
+ƒQ’´Þ£å‹w˜6ͲÖÖw‚FÕpÉq ¥ª
+dU,6G›úƒ>ùáøŠ¼šDOEßÍç²v•F6P’ÅåÄ5ßçàO¦ ·…Äa¸Ä?E¶!d .× ¶B·;Ù®ø›F¶ ™ X¼pFÎ-Ê|èó†qÒËHØ@²XhóAt×éû¡M\+½±úxÎÒýÀ&r?´ó °ís_Ýî +zX$ؘ<²µahÙ-…\¼ôŸ×œù‰]ªÿûN‹®«'È)9ž•­ó¦Çm°~ 'HS
+Dl5‹U iÿÍÞ)§€yu)À^âÝMM¿zÚt™9 ‹íIrqh=b:ÇVG$°ÞÌÍì`òØÖÍtœ£¢î†çdKýç Ú ¦\ú5´¯xÆ&ܘ:&‘>wchwÊÅb%e3ºaý`‹²ßÂh,±” .±]?IJ‡Ø —wŒ[¼nWa“î°g¿…Fì-ø ÈÊ~ï ë¦Q.ˆvÏ@
+OS×î[÷æÕ
+Œ„¾Ïº ¶ýC¤““”­‚@ØÔNÐÁptÉÒËЙ6*E‰z˜tŒ ËI¢0YŠ…¶ÃE¨W›ÄÚ}) ã1†±4›¨4M¬u„½
+$ÛtÁÁ0 ]SLp©©b5&‰ +± ÿÅ3 õŠ=8ÁÂç!a’<’dúÆ"ˆÃYDäJlGliN­Z #’ZlßBŠ˜@!©d±H) L…‰íˆÀŽ_CÕÄ\'0£ jÑ€! ;P÷#q‚8l‰¿Ëd„`¬O”Ì™ ›7Vúår0„Á…ÙcÁàš¶0íó·ºþ¸áÚ$1`{œ}´‰Œ-ýZ¸u;ýkL.Á<–aÇx‰lµñÒ×sJ°{™hÛ» :¤­´µvDËŠba–„Ø,€I45î4
+Šª§KŠû…­ÍʦÕÂqjé&HËŠN‚@ã˜=•Ä\ÅK¢t7zŠ.¡ŠŒ9² ,IÐÛ¸0MHˆ±QëƒD¢õï2³DÚ ¬º“±‚ î®PjEóh:†ÂT!¨ª¥rTÄq½ZØ'&Lµ³D¬`­†Âñ&¡1
+¦1H$tqöÀ¶]àh„¡"E™Ø„’8èû$¸£°7ˆ‚D4ëÇ'A6ÆÕ +²T<±Ž¿,ÜÉ å9"“:ÃÒ ZZ· :pÌ梋¥¸wI¸
+Å‘3ÜÂÒèwNaÈx&L ‡s.Y?Rñ2nªŸ‰Ì€0Ì„üß5Dd‘^«éQ‹ºfšIXeÓx·Uh©,(”zÆÛï­”Ñ 5þ®&çè  Èª@ Š0×üÜc"ž
+)Äľ ¡œ; ž Ôr¿K –u“{
+”ĹE ê!ÑZœƒ8!íÝpãµ% ú¹°˜®ZäýH(^Þj5¥4Sº ·gèÂ15¹&;†lTm'@˜€Ð‘VÉ«\† ¥‘ âÐVc¥h)^ªKï Ò9Ô‡¦¿QÁ£•XΈYmS<Ù U‹üÛõàzðÝÙ{qóS9:¯óɧ´i²ºÔàyö%/{ð«ë²L§Ù(hÑ
+¾PbVz2¬Šªþá~¢mŒ'??k‚{ÄÜF èOä2ŸeË5õpxŠÀÛï©üEZ¿­Êy“–þ©­Ü~’dÓ,z˜Ueö?din=ËØ;ÉE=N‡ÙÕ0Ý„CzƒÉ›€Aƒ¾›ó»÷Žü¾ ³n’‹¿¾Ú…¼:‰7HÅ_ó>ìPƒ|ªò²¹T}ÝC‡ü%+¸2<tiÄÅé¡«jQ³³b6IýEC´jˆö_6UÐNTкm·U³¬N›j¬ur²vÆJo«é¬škwq(dà­KïüànàŸõO„î ïV}Çüa{Èš³s ÷ŸŒ÷¿Yjð®Ng“|øRZf‘7ŸÒ|•<¼ž™Öy3™fÿIýßöÎõkß—¶[Çó¬9/kéO”ß“ ÿC€
+H‰ì—QoÛ8Ç?A¿ƒ_híÆNëíâüÇÛ @q¯¸·`Llv)RK‘ŽÝO¿´dåäÒ )¥FÐDµf,þ43ÿ™yÕûåÅəְéýûŨ÷r©"|Í–\Då+wÐ;ù ÍþÞö—Ù¤¸½×;™Íåâðî
+„Ío¿ŒqŠz—îÃWÿßVB’›Ž¶'ùïôãÖÔåd™áJ‚Þžì»7*Gã¾}n f¯P§@½Ü|.;ò$gîÖÔ\>l¹gÌMyü±ýÅâéèá\ÔµÏ>™`ܽ8™}¹xŸ{<”}žÓòìÃ͹Rb¬¿!97£ZæÜæê{šÁÛþ¿¨Kä‹eM9VxJsÿL:Ó-Ì’Œ´³öNôºA”6dšM’!dMY
+cï0ýšimO3ÇEYÜY{çq 2“ º‘¨öÞ¹†d¦ÈÒרÜÖ;K¬¿ÕÌ:•*âBЫ(7öN$¸D¨yí{"‚MÝ'dª½ƒw2ùrKEƒ(↯èh{ïhôþ[á+™#P!½¼“J%édÌ&V€i€Wq ´’€äIqäºeäIö¡ °YÆAŽE.¾]Yˆ^ÿNn*zOÙ„X#žËfÇÈÓeÛ7;:É£7» RãUgh:Tç ’ªíåqúlʃLòèòð>Ö3 .ÏÈÓFáL$+Ÿä™«ÿkHå™C†ï5þeQ2z˼ãåpЧòI›\¹ ¯°f­ÀU]L¾3à [Rù²Üú3
+¹y,ä}Ç`}h³T
+PüÖˆ½äšŠG NQ/pû;$áócZø™ƒðtôp. Ö‹øÉãÞèÅÉìËÅûÜ£EÚ|öáf¼¡ïuQ-ñn êN‹"Ãkˆ¸Íè£ÔÎÜû(5SV3¼Ð.9{.³{”g*•F¥¨Á(MfÚ;„SS¥Ó¥Û›£¢ý°¢ýö3+þ¨hGE;*ZËíí>8ŽhGAk» á6QzvÔ3Šž´£žõì¨gÝ׳ °YÆAŽ…Õ7ofY#Ãg&šàŠÃö@ä‚9t
+V4ÕpËæ*›w?sÙáes,›O|â“€ÍÍàŸ¯Ï8jþ™++#w¶±ZS‰ŠP:SCŸ|¼£û½a¿Þ56…».Úåë×î_É Ö…µ÷(ƒ¸… ™Icf@úvWÚ{çÐYú
+”Ûú‡é F§ýÞ`è~÷{îßÈ]»¿#w£GÅ̯èõYš{‡Õ˜¨y‰u2"šhŽ@Äe„1w2N¦Ò˜"˜IƒÄ¬xxçËRÁ%™`S÷ mï SŒŒQÄ ¯KÞ
+ÚÞÁ;±cWàÊg_æç§zyÇ”Šž™À˜M¬€º:­âU\-* yR¹nCiË 5SV3<éÈ }’
+2FÍEVßYnˆ,!vœ&,nÀ³¢Ñ<˜›{gzGÊL4Á‡íÈX‡Nt Æ °YÆAŽ‹
+2
+ÚÞÁ;±KWàÊg_æç§zyÇ”JÒÃǘM¬€º:­âU\­E y?¶ÞzŽÉLYÍðL¤Kx² Õ3Ò\Ôiõ…†Èb¯iÂâ†:+Í€¹¹w¦wT ÌD\q؈ŒuèHb¼
+Ž¸ŒøBV\ 4#ÑHi r«Ì¯jÞP»4÷N®1Q+2UÌ… 3ÆÞ‰\ä0æ’›cMŠ`& ²´âáOp‰@¨]`S÷ mï Sá+*D7¼.y+h{‡
+×—É fqÃë’·ºaþÏ!@Ðè¼Bø7ûe×Ó6 …á_Ààf—£-_Câª]E„Äè¤LÜ"×vˆ!‰³Ø±_¿|´"EH~“©±SzYéÅOÏÇûžõn+s3«wÖ¤°0!¥y\¸MÓ°6ñ)ˆ±ÙÂ9K×OÊ;¹€Ï#òWĹñz¬ãí Š% ¦»AT†ösˆGÅò90P#ÃÒÄ|.
+§šè›UÍLƒ³•7ø«Óöfµ4À¾Ì3ʧQ¸ã“c¼åËØÞ{^­ê±Èñ1Æ»Þʹש¸áò¨ÕÉW…[0Ö(‘LyF´Éç4˜Þ¬í§ï2N¥ƒRuX2žðMðdcà '8È‰Ó §8È© bˆl‚L,€0¹‚÷E³v^FÒPÐ]‘ÍHèŸD$;§™$:Œ¹Æ+µ×NלãÚ‰ƒìµÓ5ǵ³Ó}æº~¶•š¡H'¼öÚ¹sÚi~»+²Ûº[[Ÿ¥:þàÙ/ÿH ŽÛ{€¥‹HóÌøíÑœ‡—#ÿλª2êËéõ½&_îñÎdFâ*¦÷Å)—œê™ÌV¼m&ÿ Du‹P­à¡ÛÈA¦Ï•Šû2Ï(ŸFiHvÅ
+,£Ü }Ãs;ù¤4›ógAÊÁX›IÖÄÃ#¹R‚$³º€}@ϵ1Üao„Ì°‚)C{o2äyu|¸¾Íd(®Ë‘È8kµ§;ï6K㿨H?Çнª»x ¸R•Ú yICA?sAö§™Ã§ì=Í&'ã/(DÈÅCˆ«Ø:¼¦SœéE0ÂH«èÞ‰¾NÎ`"ÜÚðƒmHpnâËå#§z&ó„O›IÃkßoÀ"T+p#Ñ-Wve­ãÛµUŸ4ÏLç(ÒlΟ)cm&Y³]É•$™ÕŠ¾@kÃð…ÉllL×0fCÄÚl
+ú™ ²½XúxeÏßÍypxy0òK*á1½¾÷uáÐð¾dFÞ*f˜9©t²+†·jYÄFçâ$C¹+ƒŒPM¢[)GÙêdlý¥ž¹ÆGg(Î’(~•ñß9O(~×¼Ëêp2Fù’<^5~æøÒl¦ôN–H_ MC”OUÑ¿DÔp#gHª0>ú©Ä‡Tº=¢A&c\ñ«àÞqHôB^?êÀ
+H‰ìWénÛH~½Cÿ "º»y'¿,{ld×G'‹EÐ"[VO(’ÃÉ÷é·š´BÊq¦wÍCC²åb»¾:¾ªÚaäó¹üuË‚œ¿D¯f/žf,É^¢ƒ¡ðàÑU–ˆð½ø¶©Ž‡lSœ~ƒªó¯f×çg𽞠/QÈ’;øïM¥Í2xÝ2ÏxZh& {pÂ[‹ÀOx(ŸStð6ÌvïÎîâÒR3ýµ‘&?O”ñg;Ç’ðMtËUñ¬D(*wŽH„>_‰Pdʨs–·ˆUM£s|9k0µÂæ±À;‰2´J¡‡\Œæ)‡ù¾ÈDSòÖ U
+C[²”Ÿ$ü¯œ‡Þ2ÀíýU”»ZC £P=„ž—oò€5Õj^MåÕÓ!_@@ V‡bSšük[_=Çå+þ!O–y
+bÍÅÍZ}/Ù4¦¯ÂÏÖÊîOwŽHOÃLUÃr7hß”q|ëG´ü“{Ù"ÊCL[D Ö>d@8š¥mÖÇJG¥u …+3 JõÕ3ÍunÙï<òY}æTBVª*âÚÞÓu]jØTÅÓbƒ«{ Õ9BG^˜o.½ŒÝrõ­«ô°e^e"ózX…/-NA €;:½ ¯Óº7”u¯ ±O ß´ðíϧÜ%§…o ˜¦…o˜8¦…oZø†¸ð­³}p‰tÏV>c¿7>exÓÆ7m|ÓÆ7m|?"™6¾öìÅÆ÷Gù7 SÏ”á®{æ®{-0cÝ›“}YøÚ ™V¾ñ¯|å´sš°x-¼}™–AÞÐó0¿"–>@, Oó@½lwµK3ÿ˜ß
+& j±ûÔ•zäNYž¦‚…‹2€cY”cã«Ó¿ßÿ«QïÈ~-¹› œ™£Õ*å 5n.ÑÈO¸ÄköìLÝ™]nã6[°ν(ˆ’×Ë€y_Þ RÅÌÙÝk¬µèBwoÑ~ŠÓ'cu_*«˜±Ó‰LÄÕÒÓiN„´E?¢CO´¡w×tÍüèëÑ>A-¶c„MIU!Šbž°¬)¶5L•Bo\wmâ(ßíÓÀí‹Õ*O¦—ñÐAK8cá
+ÓŒ…ê¹ùƒÞp!–eÔ.GwtTºÕPšÑ•‹—ýGlòl­ì“ïç;uQN £ûxš†…U‘ð
+Ê@Ž¨”æÊÁñ°y´ó,›+Ïç¾úPî÷1‰?… †Îo—«UʳNY®'"(‘ŽˆžÒYGÇ0’½ŽŽ¢M,C%·‡}›š|_!Šbž°,J”1U
+=ŽÚ›8JEÆGD Oɶ1UP}¯„ˆ¦<MÃvçå´—ÝèzÅ“‘(czÆyn(qÎØR=Æ¥–¢7¶Wt ˆ"¬ Gbÿ$ÿMÕQÕuz#•“<ôÞˆMö.Ë4aô÷ȳÓ)ÏzÌ3òw¡³…Bš=ß²ò0û°0… aDù~å‰ÇaV‹×ÂSŸÔv‰QŽdVÃüY†«“ ´ctMÞ¯E1OX%ʘ*…Þø© ˆTd|DÔpΓ~Ó®ó?–`kbé)I‹€KoöÕH zº\™Bã>8æ+ôföÛá[‚?ÿúWŸNO
+M)2¥äóE¾ƒWdð–ù¼/øëfqñ£|tu·YFÁì…î£ww Û½g"\F__ÎrøÁè>0È?×wðÏ?àËŸ úŠ tŽþõoŒ|^¿ŸÍmXºi£915ƒÚÌ°†15 2ªé&5ÑÙl.…Ä°L4§†féº#…?(ŸÍKpì‹¡t‚næ uÑ_Ö&XQš¶ý½¸™9qLÓDÕ_×&XGóê q‰faBC‰£9ÕÑõfFtÍ¥EÛ¿(Rlj€Á
+^4 'Õ ˆ7”…;ˆe¡:Hxé…Žf…Ðq¨S¡Üâ5¤Š9&\Pˆ€»­Ê?¥ª)¹|N\Í6Í­&uávHX¸K//uuÈùï.¼¿ÔvLZu˶Ës¦ã:…š%E»Þ· ÈgP•° (@f@l"™të%
+’2å)ÃÀ…ÄÔˆ!Ýòƒc½YííÔ”üRY Ãˆ±c(øP>+1Ú„JJ¡ŽK÷ÀËœ{_噶Q¹Ç+Tu|ûÀØ|èl`lT1)U+!)¨Ò± 1u¬£Ýl·°¹õk™.@:&¨–RÀ
+vé±~õ¤_ ‡Þ0¡ŸÐÂûä¿ÌWÛnÇüýþЋé¹_'^'H ÛAÞŠˆ È”`Épò÷©ê’»ä®BÁŽm½ˆlNÏôt÷TWÌøR¤º'¯S<ñ·»—r9¾¹ûÿ¦™®no߯ïß½_7“ŸÞ5oîî ¼ø,
++;njçÁÙ‰_Ø™›…ŸÙ©êü¹Î7xýMœ3»Ï3Ø]6È…0 ::ú,¡6;¢êÅòÀ%ò¥»¹Yþ¶z|G†üb r¼”I‡m½iü»¹õÚº™]ÜZX“ÃÙMÓº°0Ê**+ž}õáù°ÝvLÑaÑ1ÎÁ#‡ÁgbOeã@SOCéÛâILãêi”Ï
+ÎlÙ€ÇÖ×Adr¬#Æ÷$t* uÔRbSž°:ó4§mOB×_
+ c= Z‹‰1s5· ã#ªcçmxo
+3N
+f™º,ʾ¸Óe–Z—ì-ëp`!¶×1Ƴ¦ sš¥†¢àÚLêFÓéÌ#E|Rr:A~m4ÇCŸ'†4Ø+=y%ŒV¸ÑsÈ4 ãÉ:j@®8F ¨žœyÍhFŠžØ)ñȽpåˆ÷-ù6EOþG«ºÆ„¶¿óŠZtÏyU?ÏÑDyÀÑ°7ôsjY[J'¢°[ºøÍ+÷ýWÅÍŠØÅ4x;½ÏÕãÊ¥aYØë¾àéH:Â&žÁ+„FùÊ!å6ˆ«Å²¬k·XEj‰Ý”HÈm©9š…‹¿B¯T©$„B®#›?ˆzjS‰A¯«ª£Áep)!¯ÊY/ìdÒ+Wxb óþ_] M‘åänoíø?)¦:BjðÃùzêp:`?éŒèñA#xÑ2JCâw­ñExŽÛ¾J„ºmråhnuøŽO*SÖȾ4dÊ ¯”'K)!ä<RÓÉèªêîrðɈ ôÄȪD¦O‹ ‘:ÎïD@Í4ý|ÕhTm!YYUu\Eï³Xª<©ÅX‹ŸÉEœt»§Ñ^–½ÔP4Í]‚
+
+(“/ÓµóY% S÷…²,šŠJ_y>ìàs„žÒ¨6ŽË΂QI½#3R°PÁ›ÏUkõtFYzHßOBã¬Âã1ž‹³OI€ÑZÌ1yd&YƒGMðA™UQ7íËY –³fÚÁWc59.1ÎkùîUHOþÄW úW^™O˜<9§òÊ‚'<´ÆÅxg´Ùäc5jÎF.Ë0"‰n›˜ëu¹mE9
+‹ip“Y´s§Æn¶°Ó6Ž¿7^*ÎÂ4ˆ—oû7Í«+ÐöË׿ÿ¼|ýnu¿yó÷ý¦³«ÜòÅR aülûìˆ_-=þ®¨²à½YÝ6—³÷.›×Û›âlDî~oÿ¼Ý´~ã
+»ß®ï>mo¶›‡‡ýï?5—¹?šÐêÇ‚çÛ¡CÑ1þÉC]ÿ¡ÿÖäû–ªAŸ½ÞíO.Íxµ}x\m×›ålõ¸Z^Í–¿¬î–Œ¯òrþ×fý‰vZ¦yù»mc“’æ*l^F‡ê¿ÇÒ$s
+ÃöJ8Ð&Q>ÐX¨)[ÈÄY ÞÛÚ‚ŠëN7”²¶(YW©EWÈB¿ fÿß‘6™uå˜ZÅ ‚Kå2] dAwÜÿ?u4ÀMALl øOHG1­ •CùÞ‰"GµÆ(4ì>ôºšÂŒqºPº‚£
+°B*Âx¥¡uÏ.¤ÈEаäXÊ@I'K!}ÒÕÍ'ºЬÔï*fÀŸà†‚Zl.n òØ Û¤'< ¤DÅ
+¾äBûqûèMÞï¬ód&zèL³wÂ51Û³ Å|²ó“‚ì׋s®ô M¶?•Œ2åÃÃvÒëe“‰h¸—yä²2|E( ùrD»Ø¬E·y p
+䣅Èß.U\MƒT1vNËîüaØä® Ž©mž«9› êè`¤öÇ]ÚšÖHÈ‘jOu›—ÂdKhÜó8بËkòFsâRÕОÀUFBÖMýÔ5RÀ\N-•+ÛKÏÊjÇŽc–ÿ€ÒŠÅ°!Å ‰Xc#Oõi$éç-éŽlƒ¤×¤Mo”M# îƒIúòKy$Ìp¤¤W5_]]9½Dù²Ë#gßšG€K°,yäÍøâ¹;½†×;yýËOó×,îV?ÿ}·ÚYU.ùŸ¹˜ÝøÊ ¾þ웜î}ºÿ?Î1ÓÞ¬ﻓ‹w‹«‡ÕŸ7ëÛ6ÝQsêæõÙúíûÕà]¬(ÍþÝÍÇOëÛõêþ~ûþÇÂM3Áã™McI‡6 (žg7 ã›þSñoK­?ôÑ߇íέH¯×÷‹õr5¿X<,æ×óW‹»½Oήëüò¯Õò¸;aP€ÂË\wZÄŠ®Á#Œ÷a2R.¬«J«+ÉODN3c˽œÌ~ãîoÖk¤æ¶Ãõoß­Paþ뇙½Ñºcówövzd6c'Ž•©–d˜•š
+¨±x¾¥#ùõ§‚4š5p¶ÄÈÌl¨b¦¯SM ¤Ùr?@84ɘútÓ™ APVór _=xbð “Éô‰s!ýCÉf:è(õðLzI›IâœyÕ¢M<®Ë xì=#’»n63ÑÈô-ëQû+¼’é¥@åæ·Ž-ˆãfBÉÈÌô0Ž^>'©¬©eÕe$e7«ù{Ijüþ’
+M¥^²i*„ÀäÏñ}KȦ_¹²I˱¹eš!97AVisÞ¬&á ùÊ¡F/¦bûŸúrr&›™÷š9ãmJ­žb®ÿN=õŽÔDŠënvÝéÁ3©CÙc,Ÿ°½žt¯Ú@(TÆtÕyS<
+PÏ¡X1nj|F3øXaŠpæA‡¶ãròXå¨`âçc(.ÙÑZÅ3ÁÅ"ˆ8çäm,T„¨™r_öù“;ÿRgz~•h›®j 糨—þ s¾ëLÝ·v¦¬%ȾC6’&’è ýYrb
+
+M@«jjÜÁbÁÿÝÿhaGOZs¶OO×kÿ|ãË>K=a>úñDñ¸9<Ôt$k´& zÅÎ[ ú’Á
+¬ÍÛŽ¥:RzhšÇ»(;¡„±d(3rŒPãÔb¡–RhñµW
+±ê¡e¼É6£&s—D=9ÉÿÙEWp!aí‘Ø«%g§× ‘ß>ø>R s4†\Z; #üm¥9Ò)_ ùr~9¯Wå
+0­yVôìJ/‡€~ö­!ß‘ëÊAÈ3¾xîN¯á½N^ÿòÓüõ‹»ÕÏß­vV•ƒKRMçeÀ]öMN÷>ÝÿŸ&-qz³Z¼ïN.ÞÁ—>¬þ¼Y߶é¦ÏÂæõÙúíûÕàÔ•lÞÝ|ü´¾]¯îï·ïìNêø!(öPÖ‡7Uè•C›ºX˳›†ñMÿ©ø·¥ÖúèïÃvçV¤×ëû‡Åz¹š_,óë‹ù«ÅÝÞ'g×u~ù×jù‰Ü0(@áå?®;-ÞŠ®Ù°r®ÂKxHÕf·EDäD¹=)+° £V—µÕ%Zœuùd½—“ÙoÜûÍzÄÜv¸üí»êK~°n€º¾56goI”,ßm+AœêsóP€ØÛÁx‚PîW¸¾@W»ÍïØDufŽºw-ژ衚¡o7¿Çí8c¸`Åj&‘õ#S¥ZÌ©…à8áÃAR·ù=0ÑÓ¬ÚDIxšuK©Ðÿz¤x
+}Å-GÒg3Sµq€Gß°
+|_ÙÕˆ¦@Œ@Ay>‚èDI¤@ ú@K
+/‹lÖLÖfT„Xð§ŠB¬ÇæáØÅ2"j «Uõ…ÖôàzÔ†LÈ1ó *Ü¡=ùR,“ÇœÔAEÐá ºÇÝËdþ.)õûJ¤ËQ|×¾OG'Æ·2PBÿP"3jOÖOtÉ µ6míuŠî¬ííJ?±$Ÿ*î6Õì fG'B+Tž6ÏÿJíô–ФMlÓŽhó̃ÙÄ¡˜1N—Ò;Z(pøÂ;ÁYz¨bX_q(Ø»½8
+ZÙ«§ŠCßÒR´Câã‚^MӀΠ–¬L»$tˆ0¨8à 9·2ˆü?U샌v¤¡KÌß^‘p…SnB«b¦Ïk}­-ÝN±ãGûû4¥Î1NçˆþŸùjÙmã‚_ÀØK
+p½mràZ–ì}íÕ¨ÿ[¿],З›g¿y?¼Ò·v^^‹v1–ûw#ø¹9Ú¼¹ŠPÈ\燘¤H„†d¥Æ¤>†qüív•èŽJàƒ ƒ‘ 7 â­Ÿ0/ *¼¹ —j:uÇÞT[,06~áŸ(Ó-N˜v\\ ¶Ç›\ Æ¥‡ÉÓ¤[WÜ”­+ýiÇL<ü™W˜ØLžó´½ïMÞ¦ >z2}v@ð!à´˜²U Û
+¨?—Ž­<|¯³ËÁÔhΩ¹7
++¡—j UG3U]8zNBHc.…~E© BwÝ4^&>Â$X8Ô Bxz#ƒÐàM†ÐÙ¶‘ }ÕTê‘f7… —¡9ùÁæZ Vð’Ö€<¨i€=ðš]•½6MŸzÓC”BWôjXQD*dÀqÜüâ½FòçÑ)9ÝK®7¯ J3â<÷]ÔlšÖ
+ð%È#2`e/$ .–-n‹,„*K„¾¡u÷Bxk]ôɱŽÍö1`S±æd Š"ÇÆl‘¨Ëí!0´-ð˜¸Ó"¹Û¦F´v<‚tn ¸Ä°!lºŠ’Ev:³†‚Z„Åç
+´ UÂ^?™"¤&Xl¾QÆ­_¯†Û_©¨g£‘Ndê+¸†¡ýKHÓÏfu±õß)9XЙpÁ®%:#tRÅçnï.ŒkQ°‡\Œ'Ò»©L§ã±+*Ûð‰ "!ú]²Å
+H‰ÌWko[É ýúó%€Ô×CržÝO–‹´ 6pâ­¢´¶6vkˆÈæß÷s¯,Érâ ín8’¨á\>yÈ‘wÞœ’ÛzíNþ6"·?òîhä»R$ùà|'Á—’á#—”sqÅ|µ'_p¶úZ˜ÝgH߶}ç=…qÇDÕ]˜ºPCrÜÕZ=»·#
+E·:öµ&ˆTC §7¤,E |zÛÛÑÝèÕä¾ËYr†a1ú‚;TSn
+솩zÌKAÜg|ÙdÝ«ÉSû^M6Xhw=µqÓ­*U;ñWûàz·{3zÀ›Æø§Ñ Ìÿ×Z¤Ý_ðáŸ}vÁ½sÿ‡wgž­ÆI|Ìð+w”‚O®v,AŠS¸’K N ^Kç+ÃSÍSô¤‚RKpöU‚†…R­n)L>²)ø.%‡ƒ$„GÄŽ
+RT"”4Wˆ¢¬¹ ÐAþ‘«¬¹èÝC\… Aä$YÓ—£b>tŒkð(wÉCBÈyÎЩ]ˆE] 9¢î‚çsWb¸ DJJe`8 šçœÔuJ@%Âp`D‚C”‚ ¨!#Š($pÚÈ÷)â(ÕRD\´QyF$-5÷´ öF¿ŽŽGC1níž]ÿ2s{ÓËË‹O·Ó›ó‹S7¾}¸;w¯¯/_[ÙÅèNÞ^ùâ³GJ<3É!üæÃ]9ˆõ9¿ôÚõaù«‡öÚkŸ%2®Î؇”öå :“ÝÛûý‹Óû‹ëùôö‹û3DnçÃýíÅü“k–OÌØÙÙäýôþüµûNü€?€ý¤,÷Œ•¼ùòìvÞÌïÝÖ‡Ÿœ|8ŸÞÌ>~¹™­ÜJÏ^‰V‰Žöû¶Öùw»±³vtý»F àÛ9šM/ÝÖþÅôjv?»=šŸ5u@4Ç4ü¼;ÿt9[ú¤Ôá·£ë‡ùÙ|vw·øý·U7‚þÚCÅ£„Ÿy(:|õ¡aóC¿…üÎz£_|>,žÜúf~w?ŸÎ&ûÓûéäÍþäÝôfíÈî›:9ømvú ®*,¡Ôù빓 qÆŸÛ\ºÑ]áöF‡U’Y+ìJCÅóYó}ûô²·£ñ/úàãùY9sðüìbp¥×VèhÔÅðÿø“5\È ï¬ïL/>tt>ô·B•ZÓ>Á„T»ŠÞ6¨T p":hf7>tÝ
+µOˆ`ÁŒPĪ
+&~ÐzˆRžÁ@Uz3MŒv‘ÿ+àéW?›8tSmƒF)r_ù`{àò c„Ÿ(Eê×VLœ»\AǤÄeB4[$ KÙ×a$‰˜Ç£,f¼/¤Ig¤7¥^¸~çW÷ŸF/ñå;–ÂÅÓYwLÑÊâ¨ÀqHƒLüÛ¬u­J$õOý­TC²Y±Uá{Àr‚I£|ŽQ[?`“1d“NpÈbBRcÖa^óˆtÃ
+
+Yà°I²v¶¡Š›Þ£ uo§¼*4e€ÔPýèX–1½ÓGÅx4Hok½ãšÜÁe¼[åhW`'_Z¡TJP‘­²N«­Ô"‚h«Ò¢©¶Šlåš”ž°žå\pÐÖO²ujÙª9[¶µvÆ@ û1xmÈÖšíñhhOßšÿµÁ”“÷Øu È2ylµÆ$cæƒr ‡¾D_åЯ¼ÂÊ7h¯½Æ!ðð%…«…í7i/Qª³i |ÜHÚ’aÆÎÎ&ï§÷çK[…Ž!à›çÖZ]j•`Œ‚ÃIq+Ùeµ#ƒ³PîÜ3Ëÿz¾¹8†¢Éµ4aªØl©ñ¥d¸â>A=1Ψì‰yg× lü¸fâ†K¿Êzû=ó}Ûúïa¾G Ä£ ¯Z½y
+$PYD³)-D¨;S2ìPNåö}È
+r®œŽiA¸çsLòY•’JÏ!˜]”Ïk5>_ËÓ^Ë&©«Üç²qמæéô?eˆ]4È
+†ð~ÿ ³š~?ë÷Ç×îÍè3¨ùgâxóåÙí¼Á~¹õáç'Χ7³_nf+·Ò³W¾šm6¿_[ž·;kG׿+¶¦£ÙôÒmí_L¯f÷³Û£ùYS·kñóîüÓå¿™/·Þ¶Ž+
+ÿþ‡óRÀy sæ>ƒ<ébB“ }šMƒZ´Ùnôïû­=‡ )‘ŠŒ8u^Dq8{föm­½V;¿ùÂû¦ß.ß¼_¿Z¯no·¿5<k‡e]J¡´c—¶X¿4¾ô·ê~[eÓ£Ÿ¼?noîõy±¾}w½^®®Î¯ß]_]œ_}sýöÞ–“‹võü—Õò½¸o°S{NοY¡&«·®:ÖÍìa­<,©ýÒ Út¨FOн߭×$åÕ€ã¯~ZQ[å k‚yQCô–Øü=ýq 6:â³, ¡Ó”­¨ÐçÕ%à. ²]cÐ×xÿLÑ_Ýj¬G,Û¢Ôœ†;o`<œ.g‰Ú²ˆÆùO¼óôF¡@XNH[þˆ1#vdƼ.3sÃÁxÔ46½X¦Á!èNŸê«JÜéÒZy§<ý‰?=µ8íÀÑç©„ìþŒ¥àÿ  <;fz¨žhÊZŽ²”¤sîc²YsÑ’׬°ŸÏòÙÓ9þùÒIÌZ³Wz;äòQ½ÍÐÊlÇÎEñj¤Ã¶8ÖóÒ„Þu[YH%0‡ÕõvX”ÐÌ–!Ï×4ÕQ¬Îæ>&Îñ¸)ÿæ^H%ÔðI
+i’”6ŒŒÃå4gì˱#òrw¼1ºÏh i47|Ó»£J‹Q½ØdCJ
+‹\Æ>—ø²(M³·âVë4ꤛ÷šˆ3)üúÀqJÍ¿ÏžâÅÓeæörMèh€›YÁ­qÆÍœð”OÔH^<H‚ɵt˜iMZ!Ñ
+¥ÜØ?U¼›G®Îc¥oyåXªÄg–þ@ªy›éA.×O(4ÎL; ÿèÉ3…,Ùƒp¾¶Ô÷ø¢ »@´@“µmJ—³_—ˆ³‹öDßò½
+}Ï&RâýÜâúô\ÑÍ ]ª…À ܦœÌ&X׳RFSw©xÏÃ%Ô\6›©¥,¹øl&¡Zzö‚&
+Æ ê”4ø6lJ¸ñàê,›ïz–@–.ÇD:¹dK*0SÇ<ÜoŒ³ß«ÇSsèÄvÊh^8ÖžíëÅñsëE‚
+é-‚ƾ†mx”¯1§ýg˜2*2A8dæcÃSÅŽ}}Å.Ù¤vºd³–ÇqcÉàÁ•Éî×%GBüî[Ê¢ô¦R±•8YtoÜPŽv¼a.8FÔKè•J’/@¯, ós1 óBÐLä7Å/G‚¯èàX˜‹4¬òœ¶oÊS•¯m&±˜>yóÁXePÉèh”æs/ž$nR*Õ}&^@8ʆª¡À3/dcîTšÓ•ÎkÑÈ‘å8;£SfUxXæ…¡«"gwïwœëiñðbO* À¨q Ýó°Y~7ÞŸćç™ãˆÏóâÂy> /vÑüäsãý(ž«Gñþ»Ã‡—áË TÒ³—ßÿõê忯߮¾½{»Ú;Õ=R˜|þÿÛõGûðå½­÷¿kÆ|¾¼\]¿žÿ„v|·úùrýª›Óq‘"Ÿ~>Yÿøzµó[Õû¦ß.ß¼_¿Z¯no·¿5<k‡1ªÍÃ#—6—ŽÝÉ$Þ½3¾ó·ª~[cÓ›Ÿ¼?noîÕy±¾}w½^®®Î¯ß]_]œ_}sýöÞ–“‹võü—Õò½¸o°SyNοY¡æÇ
+Øönzû/'n¼z¾~õòîæ‡7¯í{¼:]ýøÓzZyöbEÛ¬~þ’~¿CÔDVPD&yúïé]DÙÒ0…yµH{•‰+ç1IªÄ¡á!ßA%¨nø^[b‰Z
+]ñ²0¢]X
+]%â™ÎkôÁãCÒe}‚ð|¬:—†Í<«Ð^$Kû—ºy1`Ç
++ys
+²*¶%Fán–aû,˜8<Üñz–AB”æÒ–R 9uq9ïz# ÿœehNô7—u:‘T•QcŠ`ïiM´'d^š0ZÒ9ÖÜ&<Ý.0A©«å,1)$ñ;KÞa $_EÜÀ~^a€ºª‘x” …9ç¢}!Ë.êbïÇÄ' ætæÙ,r¡d£RióS´A‹-•ôSNwÚ’4©Ìa«²Ð‚^ÂÌÑÈ[î+%„Cb0 dûE®
+ihÅÞ®T<·œœ«Ò¥yåæ³ûp24[®êö¸–f!ølR|‡ùzx\'âš^Á¨©Z€âí«"« ÚëR¢\Ò€ÌáãväñÖÍÉ>°*·ÞKÍO"‘n^äÃF ŠG Ž ™9‹'bb‚¾#|8…bT¹Î€¯¿¿éÏc—Ð
+,asú'ý‰}íË˾%r4a-9‡í–Û8-F©ZϤO%0)y¾?§}“øä-H£Vÿo6uB•pÚÖHëVo™eƒñ,!Q‡_ >ñ*1Kt óÜÐ.2é…Ò/¨òUFõ zpb“ØÕ[Vç¯÷ý#OT§èŒ‹ #nƒ|†ãVÊGÔ¯N_Gì!s®W„¬û»æUi•ï}ÖŸ¡·é&_­æ3_uHƒ¢ê‹,– D‡Ó+jñÕ™éÄ,@E)‡_}±n½¨{yÒÒ—wÏÃ[ú¶e酪ßtÅþúá?K42‘ñH'°¾|—:ß.«Ìn£b¿ŸKü]Ké·™’Uâí«yï’1\VGó¥$}Ñ0d™HÚ=ŠTq÷c(<¦L½÷I“™—õñå·ì’Žý–WÊ8tCͼ'ö¡*®`9Rèûæ”ÁøNG.Ýwàkï'ÉNfSH÷Χ‡Iö‹7¸úƒtu⟜bŸùQ]À ÿßÉ}x-{2…øOÍèÂ݆•x0G9óvß,ìhI¥ØËÕ'Ùâ}Ó›
+f9
+ý·+;(é‡ü²`c+õï¦zTÈ9öì+5s4Äöãÿ×±Nr¹+j¶ UÔàIÆŠ#sᎠËʽ0ÌA¢À²`†Eg'Ú \w1Žuè›àr˜mÝ÷™‘u¦^ó„ ><Ò’Ó–äZæ<TðÓÖ],gõÿ—ß©‹N㪚"VƒJÔ½…ñúªæ¾Ú©
+Jú– u_Þ0§ªBqu÷>08øyêï†Óݱè/¹”Þkð°…JðóÂÈE~d‘zt´Å–“ÕŽ9ͳ¼{)½„«PáùðOûÿe¹Ì!ýþ»Új^LϹühkþÐÖé5}8„¾¼-‡ILëôÌW¢
+(­k&-g µÑ£ê+;õËÝÙôM´cXMïllÔk„Ó¿…!ýµ·cJì9|óU~Lè¿
+–ýþ‚ªÕÔ›ãØ¢ Æ"×YU>xõÆÝ/"ÖyWš/‘TìµæÔz7»Mð+þõŒ :ÉÀ"ŽpÑü÷Új—/2Í}<g>,u¨klUõèh «òÑÇùütÖϳÛÿ”,l(@Ÿ>d¦ÞG¸Å)>yBû]Fz3QSxøèËéàeß~¹òL‡w ~b£ö¦èÐã“¡
+£Q·ò3÷ê*G[Ïí¡‚Ñ^®+ž\U‚ÿ;Ô!ª9÷ËGmDQ2N Ú$:“`"óö®ßÚÕ2-ÂhK Ó½»êÔ>û².Vªb o
+µvj1x ¨ÔçŠq¨c1!úr—<òZêÁM~4dr3h髃ðdîúQ°Ùa³¡f~”73j"$€@8œlMcM±ÌìËú‹Û€—†ª@54:ÏH_¤¶yÉÌD K^jp8ghùÎ~©@LuyÔŒÆG_Æ~í†ZTÈŒJÞ–-ù2uq[itŸLƒÇQ_äËzIà—2/IœV•[ÙõÔ·&)½%yÌ{Æ7Ìd…ënn.¤ß 4­¡6~Î#Õh&2Ï39Å1Ync{/±>&_ŸCQ!ÛêƒÕ²í|=œ‚{`Ųj§Žëœd-_{ÌØ#“:,‹yiŒu±hr©vDÅÛ°«Kø¨T– ë¹%Õb|bfshà
+ýLë<±@ÓÖB>¸%û™~ÕmCyq <üdªž‹û©ƒ-M»ˆR,¯íKÙ‘Ž
+¥§”šSêY÷¶äcŒH¶(DoÈ<Õ*ÍëÞ4×¹ËVS6O
+ü|ª-Õ^÷ÿŒºèì¤k t*‹,ÚYÔJÝi˳ù©\AóeIÚ¼Ö ÀSG¨ÜÇ“3¿{fíùCe¾¬&$¨½ÒoÐ?µ!·rl%"`È0MáTÄ©¼þê£[{Ž˜šºcOiûÜâ^לÍoÑ꺆_îíoô¤VòL‚ÒI3¥é’‹èl™ÆãIú÷Ï¥Õ0#…l»Ó}…x”Êš£K
+çŽÕÝ9ˆ[û¾¬ nû{pßbíŸ"i—+ÒQ”ú‚i9"[¸«÷ ÜMwP$÷z=e«¤H"Dx Åžͬ ù*üŸ`BNDB:§Äàï{j™f%®‡˜p ÈÒ÷³_ºbh¹P´Þû,ÐÝòhOíuFÉg\‘pæj°9t¤ 夈·Ë‘j}§e~¼-Köu¸ZeE’×éÃ#«÷,ƒëjqñáf!E2$ËÉh ©!ˬ!€–>íCà2-õêØ‚÷´–FC+Ëùbà9f6öõ}½ÛµzrköÓptAèQqo›õ?÷¼Ó(%IêÏn[="û£
+õ\nD‰’"~µó-±¨Ù^ïéÆz\!Ê´aâFd„‘ݲŒ¼ ò  ù[·g–ÆtÞó!”1­jtúΩ·U×0j-¤¦,ˆ<¢uêp–¯r[n9W_³èp-½­Œ%tÕÌ~JÉìÙ–1Ü;é67Ýt•uBy¹ÀŠCÂA ÔVÌiC¥‡pƒ»¥ù^²ES'²‹{ÁdC,(ÈlÛ)†W/ÔûkfO#®þ¢ÐÎP¿JÄ>Ž#bPÐ.(Y¢¶:Ê
+zëu·¶é·çÚÓÔ£4lz멸$˜&¬®;ëû³ö¸d®ðëöÈ©´ë‘b8”Ñ‘Œë’ŠÁ º_ F NlÁœ$š ‚%¦Õ]Žy¿Ï¶g,¦µ]h£¾¹’¿é~w7•@©‹1)âUT¯Æ ¹ -«¢Óo¥
+Ž3Ér*]÷Ò]GA6Ymæ`j{[„Tþ=Š®uÍþó+
+“7_´ {vZÒÎ`0Måu†¹v‘&9ƒÆÌ‚ÑSº…ªA.s$DúáƒÑ¸UÁª°9t¥å,2†k¹y^.3ÁÞàu/À ×± ³>3ر¶¸É>Ôl9Rc*‹Y‚Ìø½Áðù¢à¥Né… g·zWWSp¬ 
+âz6®? CÞ^çÇ”~!ÛÉ>
+bšÿybSñÇ€¯ç«Ú“U±•U•p5¨9d,õxtE›pìâx×
+Sc;¹îAk,ÀʺÜ/½Ï•Ch.«bÙ†]Å-ü6õçÙCv` žò?@Ù)ßu¼Ð Ña|`8T±=~×7€l[Fí‰kû<¼FUä‹\ !Ã=¼pk'øÛN&ï”]Î+ßöDªÚÀò·®ûJùÍ‘7œ/‹C/=ª<xèŠXh‰ud‘åÂý=z“Å@£ݦê¤ y¦ÏíéJMêBB†»+8»´<rÞ>éhr]«H"È?]ô.¦Ê¤È’NoÕS°'ÒƤê•Æx8Z7ªx¨Þäm½—E §ò‚êƒñ¹>ÂK:)PÜ-8<¿xï‘4[ØÖ¶aÙ>ÿàÿÔ+–‡ÜÒ)Oü«-š<Ïf¾–4ˆV̶ö+[`ꞯ<Áõ}”¯4ÓÝuD…ŦhSKDZ/¥¿åJ¹ï“sah·¢ˆÃrÏ—XUYAkZĸ EÙì¡–Šú@Ä„éSA²¾åæ±IT«+oDõz ùÅ>™O¶fÑõ,;©Å⊴C!Hí–£ƒØŠ¼e8!]´å©ß
+<ñ42AÓèÕ"–ç/XHÍum¶ Üp¸wUµ­ˆÓÎ8£?¼v(î(ªTìm¾D=Imw”è*ñóÁž/9t"áO– c5_ÓW ô`Ò]Š<ÿ×—({Hc÷Í8¡)ŒÒéXé—KéK˜‚@µµ  «U‚MÍ3þõ¥h¾çKÉ2ÌîÌgkþLxÍðšà¨ ¼ÂÓ’€C Åèev{óš$n CÞ´Þ’‡ÊxÔ•ø£½ô’àÙì9Ì ƒ ‘§)CþjA§tIëRôÉ;h#ÌW5eLhË/
+2>¤a†îgÎ7å¶åŒ>Sðo'{i$Ïo2Çëå®ù\b| ö2¶È‚†áX··â­?dd?»Š”¯Ô×Øòýx]9s¸-¯¤ÛQÏ;gù2&ŒÄ>ëê½8È•ßþþ¥(Ha›ÞÐ\¶#åUÁ@)'B_«Èö‰[Dä¬×ðüS¥9sÃµí±¥ìË
+0¢Oã [ŽRp3RŸs"‡«Š’8È ;Ãÿíë<ŽBè>$ÂöíÏYÞç‘p5QªÐQØŸW—m@aûóÿçx‚þš:IÞçÐO9 úEÉæW€­ÿ³^.«–Gý‚ûgbÀGªÊʧ=’®†ÙÐÐ##d4h DÛà¿÷Z;ë
+${؃†>q3³22"öc¨ÑìñÒö €š-Û »£ìHÛKÊ(÷Ç€ß!•ßüÁh_mV*}‹ò!áñrOH岉˜­ÿ'¶ºL£uñc‘PM ÔaàŸ
+æ’ëÇâ( VZÝ›ÂÎ/káï38ÀÈ5ê—€ œÀ¥&ðC™i-…ÈL`yÀ¥ˆêNDÙ+ÎÍ]nc‡„|SAb`J7X
+,½Ñ›[>›×¾„K]ÛÏë†b?Ô„×fð¡ëRŠ°©âYƒö¼ä‰Vö½çµgÍS.‘=ÃÛ¦§é±@ŽuÜøÝTÎ|i•½ö)’œQënþ4ÿÉ
+oêriКï ï¯[vÕ:ÔyœfÊ”*bú5¹Tµ!¡*Ý ½ü]ºˆÆÕ°“ë±H¤Ö+Uá¼Æßh”îŸt6ÍŒõ1h ár쀌‹fÃÛdÆ9äؽ{h{‘V°côºíùᥚ¸ݶþ3MRºÆ
+çÏH›~ »V}F„3òÐË)©×›œç½`ÙûcŠáætN<cHUâAX½J•£ œgÆïœ×ø¿'ÏÅf^˹F¬ÎÊû|Lˆ¢]†FU2sQ$á#zví§
+ŽB{‰ú9öP¨1¢¨8öÚ ì$Á ë<ºÉÊk‚£þŒM„¤C¹¸§Å
+«SHÇðÞ>p/BxÀöuep¢íÆÜžT‰y jÓµ˜ÇnÞ²ª²ÖbV²¦Ã£A34éP™Ëƒ¼{**[
+õ r#ð«0Û®eÄ۬ȷœ±YQad·âaë>gOŠ'§¡y‹â•itxÐv)t•Šy6m@[‘ —0ðSÄÃ]9ÚåÝŠÌ»<Õ?s
+››bóûé(aGžé[[÷Ž×Û›¥ýMógI[œøúÚoÅiYí O‹­qê¤Ø‘I‚²Ê±nT<Êöˆób¦à„=±¡M VcÙJŠvðjF¸§o€ñ¼ÖüŒÄ>µj! Ù(B·RÍ@¼0y•±¿Tb ª*s;³Ú
+{CSkq@yîS5"`?ä¬øá’ó„r`QÅ/\Ô–47³ÝËSäѬ‰,ãûqÐ’_hèéDjjš×,‹¡2ˆ™ûî¼@™íxòv
+ •êšE5žn6LÜ¢+\ÝL5ÄGþçlž¼lÅœZê“ç2›ÇÙ—ê^ê'³`TTT;×ã
+ûÓ‚8¬pÈiFˆíåa÷ù–YŸ@}…ßT3ÁØàŽ Y·‡²Ú9Ár®VOˆoFÁ[³=n<­¶¾Æ6µ7æ2RÞ@ïŠÆúG„öTÚÈ2ÿ·Î©>ð%L»{n^, ˆÛ«µXÖT±ÊÕ‚Rú›˜Ô€¼¯]SÆ)WøÃÐ ÎÇ¥ßr«ÊP'…{¿¡"¥+O(…ÿÛí÷/asÙãŒõ<Ñðíþø}Fâ‹!2}dõR~~9¼ÎØ
+Ç=
+J¹$fµ¥»AزۣÀ#Ô
+1}f=Ì ½õkA㧉ruH•$ç ´¯8ñEÓ£(O520lj”‚‚Ãûp\ðøíåª08äV@ jÕ&­»û'LSI·Ls¸mò¶ööhÙÿ¤vNB†ŠàAåÚ¯ î¡ê3Pg
+Ië“W“ôò@®‚L^¦.‘R­'õUÚîϤ)>J¼Ó‹¬¹UK –ÛùïoùìÅXmØjÎï뤘æØKCƒT:gV!—èü8°Ê«º.$üþ%&DÂ.Éœ $%Í®A+9pK Ž®bÑx€©‹Xnš(s}Dø Ì÷C·dì,g—®k Aa)§ª‘ÒNLÃ|¤ {Õ§ŽáÚ¦
+ ò";*ŠQõ /ØÝ‘€Ê॑ÅØÒ±UšþmÊ#fÒ U¬Í/ýÇ óXò?¿š.’ Þ"Ù ›: á ›Kün¹ñ)„ËlËv!…ô8\•–¦<ÁÍù?„š’ ÔÛP-rFûoýììàš=üAÄÂb_”ïô¤ÚYœÕ§~Œ±«Ô±t…¡‹eªç±¾ Íwêœïa‹±‚½å‘3ÜîŒu4ˆð¯Þ…3QÔü­3soÑÊéV ý é&ÎÄF€ûGÏX‡#t4OeBçþ–$fƒo„e½ÙrJÙ²±c³àKäZ´ð[uGà™ WT;Љ[aŸ‹¼ºQñ©D·Ó‡xýÙ!)ÕßãU±ýŽ'šBÁÞP)¢ž–Åg?]F¥‡†b)‡AŽ¡-¸¢(7€ëŠ;}5U-]cÛÈÜŒSµ<Å0b!Ôøè¾M'ÀÙ]éŽdÿ‹õJù÷–FÁý<õ-Ãüxƒ©’tDf6E4¿;Ðñ$D AXy¶¸ì¤/tëHïÙiÃÏø¦4VÊ™ð”BÏz¦ Àw¼-'. ÐßO4—­XZ¬Q´é¨O%[þ½ ô£<ØÍ
+ Û¤Žö9#–Á÷nqÉÝdäðÞ]…
+d¤'P¢N(Ø”lÐo¤A»ö¨i:‰lòÊŒŠ¯»±Ã`(GÄ Wø·°~{gÜXÐâ Ä“¯GšUýé»ÆÏ8šåž‘''ÔE<J»Ð‡ßB/ßqT¿]Ì¿vÞPº Û©>ݯˆ×Mz4¯¯X¡,ÅÀ½ñŠ%› ­µø Ze7oXþ
+í~‡˜]NO£­=ÚO.
+³“AÍŒòTè¨û²àJ]Ù]Aõ·€Y Dßýü¬JGäÿ¦Ö …ƒÛÞ7’ðª¬#d³‘D/‹;y¨Úâ<ˆæØ©½XžK9¾‚øCx@±‚hOÃ5€>”Ò^/T÷Y$KTaÐ=~”ºS’êÕtB¨*Eà iÖ¾$²û¢é“$‰ó¦hH±-ÃÊ×× ‹T’+7÷_Õ
+kn˜’槆 çrÿm©›5E1‚ZT›m)Ó® –ôœ´sòmAøTªâjlvªÕêæõË8ŸÒ?$v/Êý¿¾h] G¸¦ŠL„´I¸ R­Y{…´øaÛb>OW¡5A!qI ×ýSÁ…Uñ»ÌbOûži'ÂVc@ ¹”§ºG¡ÌÓiÍ
+”Ð ¡Êµÿ#_"סͷçyÎ¬Ó EªD%ñÏõÌ9¿Ë¶ yr¦.O™ßI²³ÑBÉQœg>–cµ„˜N  ÚvQv$´Ífm ]úÓLȵI;@7—ÖXàHU/qr`1©eÙ•ræ4OßÙö\Ù4r‘KH#1£K¡ôxš–õ<Ð&t9B‰È2Sòõ˜0 ™M·¦ŠiÚ¾h= Bi}HbO=8Þ"f6&s*~Ây:@sÆúðq û·’&$Aô G4!…á@“vèrŸKö“²Qè²$Źö8r¤^åÚxÞ&{Ðþ,9¬¢‡’!íÅûõ<0U&U}•y­}Ï‚üÒC°,¾D©¼voêùÕ¼õ™tðÝA’ñ2hì2úÕ>Ç-€„3„a³óÙ%§2¹åýyœ@^è£Àä‹%¢W*±§)‘YewÐÅéL©]¬¬Š‰¡ vnìÛC¯ÄÅÑgÈ-2ÕB¿;'”Ì•×(o*ts¾R»(п™0Ž@Ú7ÊKµèmú%…2¿Ù¡M!cF)eá¡Ïé‘õ…uB˜¬ä˜
+’²ÏYKëh†äRÇ2è˜fÝ·>ÖEÇ )Œu²P„åwõˆþ#½r€h:iã·q˜#ï£<Äù¼gJzìAN¥•!ì)šZm€‚¾j]ƒÛïd³³¥8Í
+…Èy<Ñ¢@Í[°V†!_Vª2Ô¼ìfBQ‹¨>â,šù®´K¦‡=‹ÚXE±í—? ó´±y©±Îª!µÈ–}á…®p•ºyC(©yXk
+蕬xNÅÑõL;«ë倪e•ý´³¯è#áíÎb”â<¨6MŸ¢Ë;p²ðê(§âÁQD@Ê6Ó‡Z†ƒðœMJ†k ©m¨v¡Ê€b;.³Žoß´y±ìÛKbaDâÜD
+Rew BÒlÆ¡_mÕo׫¼KþpßN{àâ!Pb!T4w+šÃèceÙâ]E°8nÇy
+b_] àR%j¹†´Tú
+˜–-+µ¤aMI‰
+ŸþÄòŸþ2çþü¤OOžN¯þz²L†w[§°óÝù&Bär14
+÷ŒK@gy6†$‘Ñ!¾
+ŒXÕà0. Ìžì—ÔéåaÓÜ*Öõ}à” ÀcN·uH ¨µX5ÑB2J¼ <íª°× Ñ?f ŠZsÅ.N}Øí ãüdaÞ¸Ð"VÒ}ÿ••_(Û¿þüÿ\ežž}rû0=yþÉ2Ow7oîÞÞ^N_ÿóüÍqº¹»<þ .r+Ø<ijŒ?’
+Añ—ø,M  •NƒibòņF¥KžeY|TUà°–¬‰oõËœ|?ƒ!b
+Çr¦ZÈR´¶àBçâl
+ áÆ sÐi4è¬È”Áð]ˆ¶øèJuwJ¦Qe™r1CbÝ´?VÊë
+ú7TF‚¯Înîßm§Õúöö#Êç7ÓòáùñÃô ˆük™xÞOÿúùä;|ìC…½¼<»8¿XÚ%ØKÀäºT{ÿ¹½Nü·tδ¿ÑìðiȽ £\«
+&°qƒLÄA2•SÕfIüxÖ¤@òÐLh@†œq8-° ½Â:v“f€'¸NòÑ„)ê&FHzæ1¤°"Råuš ŠË e9 Xv±˜1flÄv†&éŠ4YMz㲡2<ì9Ã*zÚ50 'äî V7GÇe™V²lïl눶žcÕ,s@»¥½æÌt;z …¦.·ü‚¢iû
+½yûÂV(ý”¨þæß³ŠÂàŠßý@–0ñûAëTÆ´dƒÙ BYãA6=¶HœÍ©;ê¼å‘
+Gu>²¾‚ĔǓ¸U¦ ÚN gÌÓaÍήi*2”­Ÿ:€È$¼ÛwQµcô1fqØL†ÝEtŽ cÑëÂðéÃ:òæƒ'­N°/¸à›®ÛV½µ
+´¼Îã¯#¿c¸îÜè#µ‹õw”uØÝüQ>¶ÔËK»²—QŸ­VK{áÎ/­¹Øçcgÿk>†™‹æýE>öã…Grx=_³\žm6ÏwW÷OknÝ»Cñ‚ÿG²³ûƒAyspðpÞƒ1½¹Ú®o§Wç×wÛ§íÃÕî¦ÇÏhíç³ÝûÛíð›âpª¿]Ý?ïnvÛÇÇþû_§Wù¸ i]éË—‚º¹/]jsL_½Ô¿ô÷ªªÇ±:ýÍû]¿¹ ÿíîñi½Ûl¯Ï×Oëë·ç×?®?l9{›¯/~ÝnžéàþËÛ6(¤éû‡ív÷µ"ÑÓ›·»'ì«-ªÑÜ]mß||z,üòÛçmù°y¹ñâ×Ï÷Oó5½Yâ…û{vëw·ÛïŸ?Þl[Çú[ÕõÅîæï¿Ý½»¿•µ»^ƒ]µ¼‚;ÈØ?·›§û‡éçõæÓ´\ïvۇוºëéý·PsMjž@«CÊ2<èþ-ÊE±xmã”0ùL¼*Áž0¥x8hR o[Ì& '28“0(|ÀNT‚9Å8ĸqüÃs¢¢j1/@I ¦iâT–ñ:£5‰©öhu˜À`3\'
+ 쯋ÞïÙy Nâ°v«æ .a`ô-ä^–3o6Dp3ž!I`FCR6LVrCyŠ8/¦Œoo£Ae{¾œç!DHZ2d4B¨ÿò"§@âälœ°Éâ>¨
+ ¬c
+B²Á£
+t1â·LÅ.•0ñ§ˆ¸+Š"<Õ{E pé8¢aÅÄG0ø&øI·qÆ ¨O †¼'’ëÐún ™þÙ˜a¹zÔ0çȇ×`8=‘¾KŒš†  )#Cƒ¨>æ+¹(†ê‚ì==á‡Ï–“鞌=äEÇ<8ˆSô~ÑË\MtŠÔ ô V‘Ÿtž
+ÂÀ»‰¹ú$ P¸ž2Æ•GÀCÇs>;Ñ4 Íð‘(1Cóäß Ìþ"bRQT-SxºA§á¡–ÍpZUWM7ÖQi3u@À`hóêd0yß4îI@¤› õ
+ñ5bÓc ÌHÃ×Zø[$ЈFàáÃ0XpÖ鯫&ªû2Ã)#Ê@M€¶Ág³ƒ)OŸåhH¶:‚Þo˜§ÍI7)9_#V @§Pö¶¦Èµr¤~Öx܇ö‹©z)x}[Áé¿`ôœ†Œ.™AMCtž
+(Øl
+H‰ìWkOÙýýî$…æ¾É';–³X»‚u²Q¡1ÌZƒ5 Žù÷9§î<z¦'ÁVv•X+/tq«ûVÕ©S§’:i²os±QÅÖ„hƒÊ¡M±\I>ªÛ裢NÞÒi×tÚüÜüæ]s×hõ²1êþýtÖ„Ø&ÃCAÛâÔ5 >¸jrÚ&ƒ)щ!¤hUmqYÞ²Õ3¹MÅudtk¬…7,.8e œ
+®'_Š‚Ù–XàBKÂßÄ”œÇ‘Øjã¬|–gË(ùl]Ÿ•)µ%nImÒeëÙc·|4®b:>®A»ŽÓ‘k‘ÜŽ A‡·Ž¤šÖµÅ·Úê`–~N•Âϯƒ¤%–äÖ‰ Á+7\æêH·1ûÔ:›Î¶.†NÆmn³tZW…&­³Z× †Ä|.+ËGMuY|Ѷówëìæ82›Bì7­Na}ÜøÖ$—W µó¾óö„ ĨְJŸÚAÙÉ.ì›@fKfIðKBýøÓk"~IÞ˜ÕGÀ—°ídD—ܵɠM¬Ûd w¶o]òmƒßn.>l€‹/f^qÜÔëý¸bÁå즠
+’B-X¡.©LpØašª^2N°½=vHBðÐçæ™:>GÍ>¨Ã/ž_^Þ]ŸÝ,¤:F°ú“=1îr"" HˆÐÌJ7¡PÑøªD‹î¡3ø7Œ þø™’­‚Ö3Ûèñ˜™+$°#s
+k¼Oæã ¬(% ’µ/Î~.v³µ'£»9ïÕd·n' º
+Vµj7s—Õ36sàêÚ-½Ë]7ž“Á¥:û± á;Î.d'k¬I0`üÒ€ÆbíOä=ž³&É6À^Š–E¬&‚±öÔµWû>:ziègª—Ë~¾‡ÉÝ»5oÓMq%çŽ?’4ѬƒM®šé±Uï#'Ó†¼ˆáå)e*l¸gt D$Á{0"LÒdè Š6¬†6ÊOž5CâÛýæt H¡üñ>èK`[cñdã¶ZØß@Pd hÚ6 ÚGDVà!2@ø#J!‡q¿q+MÔÐ,b1ÔTøFIØs%+;Ÿ*£žêA“¨F¶2ó•tMÖ^`”¯EAá–ÚÀügÞ›,,ž‘ôTý;¦S1AŠ¹€#º?!°d3_ÃoRÁPcFY‰0Uñ—À?՟„’7Ü8ÐVœ-6‘vÐÅ0„‚ïó‚5n×tJSÑNLXKê^*:× b>Ì; ^ºö¤ŸÓ¡&k¡—J…ª´l7¢S{a Q×äoÌÐ3•/,CB·-ÈÝgb)Æ ®M÷Dgtì}ÈŒ¬á}OpeD‹p qJ¦†t•79c‚ÚùøçÁBF~7!‚5½P"T@ÉÅxèj땮μ
+»x2Ü<1c¤gð›ó ^
+ÎSëðzG*q8}…?¸øy•LjÖyØ#ÐQ¹‡%úž”ÒØ—é0ö…ºÜzWªã6=±~pñ5r§/Øñ¹§HöšÊÿ¼/YŠ0Ð3µ£àcõ1ψÕìŒÃDaúò¶§|‰øñnOùrÉÇÊ|8=AèÃë R¸J¬(é­ÚW{€ƒ‹'­
+Ößö|:`ü{¶Ô¤·7
+U–%6eØt“¾ýÎP’cÇ’#eeeµQ’9$‡3gŽÎ@Ü7/\Ъ˜JÛiVÐùvÅ0ËÓ†Åäq§e)8ªÑ
+Üi\`l§uAÎ{Ú¼°n·/û¶ÛÀìѤû%]ŠýõãŸ_þñÁú»ut•„w‘þƾ½³Þ›F|{˜Ì[ˆnö3©DY®pþ¯Û5“°s5¾þ5ûžLñ]àë·O‰ºxhðw8L‡OÁ/µ91ø4Ç™Î\NWðÿèûmêÁÑÉ8ùY§‹ÕòÆú¨àG´°F‹q´x·ÎJ'Ï‚é4þ±æ7q˜Y~†«ÙµæúØý ày×ô5„-6íÅ^ûS³ÅïÓ@?kÏŒýU²Rãm[³EÁ¯lÁ®mzGì®
+4Gç‹CWâÑ&û”zåÐb·ÖN9Í:µÍ¡OÜ¢ägZKrß‚Ã)á–TˆÂQï騡w3妆‚ÖÍC=
+Š^¸Òeð`²Hª‘xÙÅž~ÊnÈ
+/¸;hnX8£­pà Mƒ@ó©#0 f‹wB<É™ÃkÆ£62üt0|­M£åÀ¾Pɽ2/ ^À…>à\
+ßÌä7PÍö_ñ2ʼnîîp­ƒð®Æ§Á27HÔxë*Kß,û2Xèb?êÞä‰û¹Þä²d§£t‘±Fãã žC
+ÒTÃ’(KÆÑîæ`ö9Öfj¶ŸŽ)ÿ ‡›} ¤4ÑWQ˜€¦äŸõ&ØÒü˜šfÁþpuM°ƒÛø [Ï]ÍÞ%6|™k¿ HÞŸà¢y¤ÆË‘Ú™¹Šà€ÙçdsÊ|U´\>]˜ºý!†¨@4ÿ
+ñºGÍ×æ“ÅK×;o­Ýº³ýEÅa2äCùüÀ —óið+}5ÁJÃœU$÷j€E  ™>ö¥Ç¡¬k=v1X׳õõ¼ünqžyœ3ëf?Zÿú7±Æ0ùõj€Æ_ÇDHÈ{k`mˆˆ§(¾âÖ¨‰öÖ¥ß[%Öfi<öéBX£.ö¡Î6›= >r7(DƒoGã1 ;”ø¿ç*YiT¾KÍšzœ»n%LøÄ—”ÖÇDQ6Dt£Édiü¸Ýì'·ÔíJymk¯5¡í 5Í
+ýVé9ÞœçŸMã Z\øùp2YêŠx'òuÑ–>”Ö®pW8õk—vŸÏ¡ß;æþ!ù¼q2ÃJk(°êÊÈ:ú²ŒÎFj4|áè㦠Dh€9ýÐ8Ê[
+(Ûq)ìnýÔUd}亭µNÀâÓÓ ¯}øŸÀˆ×C¤ˆ0ÒYˆˆjhFv8é§\4àWjè}þ…+tÁL˜µûB%÷*;dž‚Y&¡DìL–Ù'!Š—Ü¢&ÙÝáZáÝ˹è,QãU¬«,m¡è5ò[ÖÈŒ‡pìV}Î(7-÷ö¸¥â˜0sV_‹î‹c‚_5ÙâW-+Êw©YS…˜p\é¹ÙÇè˜HáYŸø’Òú`(Jãn4™,#m]úf?«¥†hWJh[{­™loŒiVá·JÏñæ<ÇölÏp`˜âÂχ“ÉRWzÏà=ƒøa¦RËJkW¸Ž+œúµK»OäØžp¿oaÛhp$O=v°…õzˆ´Ñ]ˆˆjhFv6ÃrÀ+iÿ$z`Ÿ?Dá
+]0fíÀ¾PɽÊ™§`–I$B&Ëì“ÅKnÑ
+bÏgÔÐÏ1çŒ1·\æI}i,º/ ~Ód‹ß´¬2*ߥfIB‘w $<æ:žÁñ¤C÷`Â'¾¤´>&Š²y žM&ËH[—¾ÙÏm©!Ú•ÒÚÖ^k>ÛjšÕù­Òs¼9Ï!>›Æ3´¸ðóád²ÔñÞóxÏã~˜©Ô²‡ÒÚ®ã
+§~íÒîó9ö(ÜïûØvúX‘º:ì`#ëõi#nw1"ªE aØÙÓ&üJMÀ=°Ï¢p….˜ ³v`_¨ä^eƒÐS0Ë$‘ 3û$Dù’[4@%»;\ë ¼{9%j¼Šu•¥-t½J~Ë*Yr& è½c‡J‡‹´µ¥Ôó½ryL˜Ç9«/E÷å1Á¯šlñ«–•Få»Ô¬©bL0Ÿx1áHÍ€Á<:{Z&Ÿø’Òú˜(Êæˆn4™,#m]úf?¹¥†hWÊk[{­ mo¨iVè·JÏñæ<‡ølÏp`ÐâÂχ“ÉRWÄ{Oä=‘øa¦RËJkW¸Ž+œúµK»ÏçØ¥
+™0sV_!‹î+d‚“-~Ú²©|—š•Uˆ )™K8Ü” ¤‡ 8¦ÒX”cÂ'¾¤´>&Š²y ºM&ËH[—¾ÙOq©!Ú•²ÛÖ^kZÛjš•û­Òs¼9Ï!>›Æ3´¸ðóád²ÔñÞÓyOç~VjéCií
+×q…S¿vi÷ù[î÷ílÍ£©§Ã¶³^‘6 âùÝ…ˆ¨€fdag3,šLð+µ
+§~íÒî³:¶,ÜïÛÚ6š'ëz:ØÕz=BZAˆ#; Q-
+\v& •JQ²Õ¶rK%ÉÉûìsº[—n[Æ&3žØ`u:}®_Ÿc¹–ãÀÍ1 wqg¬¶iïŒÑöwÆ*½Óœ Þiye¬lË#KªvhruÍpmðl¦ Ç M®ê:ºþøÔ¨ ê3ÑÝåp˜âLéxÙøaŠã@Š[Èn’¬’Öô¸ž—û-Ébj¹Ydú$ &tá
+lƒ½»wxN¢o$?Ú<»pSC‹·e‡ÇÚ¼ˆ50ɼ„^æ îž$á‰lö"“RUMWÞ­œõ?2çltxÕÑß™žV¥¦™ =öiGÄŸÙ*Fý5hJ šJcPè]‚1ùkSÕZ¢»~Â[2ój‹%5øK MÁM/ˆ!p:
+¼‚ó`4æ…ìcýºòpǪóÝeÿ¶ ÉñoEm—™–k
+/cšz“\5FgÐ>ð#Np ©š^’¹.†s Í>FâV9ŠÎ¾(¯ÒXZ¼[lÖ¿ZJ–Þ•l>üƒÈ‡ÌO2¢Ó8ôîùãþ¢ ÈFªnZ¶k9û¢ê:í3]U³Lå¼þfb<ÿ vu9¡YOÔÛ(­2wKV¿ø‡œ ^q/Ñ•@.رi©ªEãßÔTWsלu|&’»Sœ)/?LlHq 9M’U’Ùƒ^Öó"¿%YL-7‹ìž„Á„.hM½X‹†i¶bžï|Çà*| Z¢ ¿¬µhõíçpz»™îsrøÚYlãƒÎåÊ)ÅA´ú{jŽo!K¿ â+P½~€¡@ ×Ú§7‰‰4Í‚/†\‡zÓÖUÇÊÏËOmšŽchºÒÜVë ÃÔó%’»éf`+Ò .ö¶Î55ÀÄ8k?àœs×è•æÜvF‰rê…Ã,"x«&ÝM7¯«¦êãûÒÃÚñ§A¶ŠM»{¡Ž4›Þ†EGMå
+i@ÖV¥Î³\(?{êÔå‹®²|AškR®1ܦëÚ.dŒ\k›2¦pÆ®×|8ÞÚ~.åY[ÍNïØ÷bx¸‰Ãé( 7í09Ýgg-ðQãØúX9 Ãiš%^%M/Ž¡¡ë0ðÎ[»ùžïc­’/A±qÜkŸ9è6}úÞëÂçÕ›³ÛñÝ÷vpd4è³kýëâ?AùüÊ¡Ï·Õ3¡ÏþÕ/ô9¬Þÿðÿÿ‚Ó¾—yûÜXæQDS9<ƒx°ý^ðýå+èåzø hÔ•.†^¿Úõð[Üÿ4Mþ žÀtœ¶>&I‡Q2YÇ W£·Ò?YñfÇË@’æìÃ؆L'í(0[,_I^ˆ/R.w±Ë“è+>½éd2ÄûÑ$g, û©Àùiq@:Q@2‰ÿ^èW²P¾x-ÉL¢ÌËðM®.¯4ƒo1OoÞzp"ÛQÕ™½N˜Ÿ=+ñŒk$~z@â'QâOÊÔ]JžJ;JNRÚ¥ÇÙsÒum©I:<\n Úô‚ú›´Z™iU.AZNÓEÉ°»iv7Íšoš¿#¡ôÆž}Ûµ|[\ˆk§ù—òåžšûønouk+ìúËì$‰b¥(‚‡®2
+丅÷™$kÅÛ¬ðOì¬éAåõæ{Éëš6*֢؈Ýä MøS{Š?ÓA˜ä½$?|%ߥ…¯8a½˜U,ôÃi"ª×‰¿œf2Æý «Þ4̾¤Û &qX’îlAtËpž¯N-g˜ ”y}|æÞüFüã$cÇ¥tÑ•›é$€Èèà€/·0¤xzod˜>“LŸ»°ËÆ(°÷ ÌUº7»º×¶4þ72,,Ò ÏÂ}/jÌ>Xl¿¿>WºØ/Áâú5C(2º¥Íl½ƒÁ‚”;ª°Ó¾÷Š MÚh…S\/n¼÷F0nx|¯©!ºÝtá—©Ý>‚•÷GtL¹>rUå¾Ú2”ƒrYG*à\
+ƒ¥ó£
+åP¤„r˜0…JQ=UÄhî@X’lªtŸéÆQTýRù¤ =ÒÕ"×D"Õcl d£ZÕ¸ÉâQøÔá>-‘…O™GÜ_ð…]fgé2C:;ÿ'o‹þpرjÓ,qŽZœnŠ@[aáWKq Fý;gŒ€b¦°hU(­°@-Ϥv¾§\!G‘:âO7"uT™« ÊUY)ÇLÀ µcð7P£’f 1\CÁŠ‡äÔdæêR)P[u)éPa­Y¦=X§HSDšy¼š¹Ö¤RMTœª4e¿–àET–¥Š>DÐâZp0ÕÁb`j»)©kæ`A]³„–ÍU°E—–*Ø’GBGÐ×(Up$}‹Óy]ˆ~°PQÒ†¶óxU@»ª2$T6Ëv‡ý¯<f—ØÚêCcݸö ]Ï€*÷•‚Ö5¥àlú·5‚Lhµöæ𕤷ž•,Røe°LŽŒÎ¥÷LkLváhJVVm_+´ 3~¨ò)z/.\÷Ne÷ N¡RzS’âåJÊèZÛQCkÄÍY*PFSÐH§c¥ãš Ù—Þæ?ŸQ_”xæN^ pã}J;êÎH¼êyý´¹'6MÇ…9se˜ (Ç™‡92Ì¢Òìy˜-Ã…Õ(gÍÀæHF ´7e˜¾@{C†i ´×e˜º@{mfÖŠŠxµ’`4ΪˆU}ØQEì³M‡=әبTÜx¢°™Ghê›
+H‰ÜWín¹}‚¾¢…ldI±³qòK¶×[µvì•œ¤@¶83”ÄŠCHŽlåé{ÉùâŒf8㤷u€À–Éûuî=WDä%Ùa–’è§?ýåËÑKŠFÔ t¼Ô’ò5:zŒ™Y,Çq}gÿ?þçÍõ{ø½5\ÒPSÁ±Ügû¾|W]Œ5¼¤Ú¼j/I‰PᆲHža¦èxÎuÝ8½O
+?þÊÕðE½ëðÃõÙ|®Þîx\A{}ÿñî…©Ò"ìà`÷j}«ý¯ýý&ïÞ*'Œ\b—D-ÇgOÎ °ådÊÿKÕêáykøGúÿ½¹VŒ†ÿë½øçÑÙÙt¼ ˜u;º!t½B­ù¼ø œ:ësêFz3ħø¼.ŽÆãiŸKû!îìŸÛ•“ÑiŸ#ƒzÉs;ýã\Ð ®ÉJßJº¦|ˆW‡gþ
+®÷cØÄ A¬º`§6Ä#F[QF
+§§æùÛT'©†¯ÁÅ;iÛ›™¡w‚Ñbj naþ­íÅW`ÿLê!·×eR¬¸i;y†nˆÚ …µ˜~µ%š>ûŒ¾0~aÛ¡Qg®±OÅ…'WY(áû;£Dt%%NZUš›À*us3ïfØùcïfÎ, ȈMF‘¡¹àªŒ|ç³y J‰úʇµ¿zæ!Š‘mØó*€®h¡‰Ú¥iñú¯ï»ëõi³¨zÄtÚQé•ËOuk´~K1£z?äÕº«Oyô.W´³PŠ
+Ö‰Uõ<U(å[Õ9ÌüPÒ¤—X ±]š\ØŸ³[ÐÞ‰90 Ò²¦z/1W $“‡†‚¥ây¹ÃúÛ©!ÖA7í©LgOñîgË402Cp½0¹ë$øùî«sMY% _á(& à8``š "Ž9眳žëߦ™ÝïìÙ_ûǧ¥+¾ºêxœýAeßÇCK:É8çÄÑq„^ÏÕ}‚K+dÁ‹‰øx¸Æ€Ãa«ï«•Ñ_³<¬‘ì^°ð­4$„Àê¾ 
+1›~H3=ƒôËHªàê\ãÓ5ý껫
+gÛé«´îH;àvíݽ.É$ã¸)RÄÙ
+EZ7âjÍ„ó±Pņ
+š/§HÞicsç>Œþõ,‘©úè„J2ÑŸ¨^ß„ªz½}wíY ÷@4Ïö»¨
+¬œ‚xµr{J,ÂC.%QJ—G)À 9E‚Ùáó“àë¿ÆêYk`ïÀ™“Z^n%è‹'UK •FÑÇÄPñÌsAâªí°×Ùç°!Ïp0·rl¦x\G¯¸dʙԂŠ™©°
+°¡<_º![ÏR[âné•æî ­=,q”ëÍ̽…C¹^õ]áŸM½Á¥qdÙjÄäòLçÊÕÎ6ºÞ8ÔÑ̇
+÷rHw{êî>~>¡ZÏíÞ=«ÂI¶>1aßÊ…¦ ó­¸b÷á+FÍÆñèýµ8áä"mø†£¶Wý/O6'~Ê,ãÄǵøû:c;ÈZgà.ö¼Ð C¥EÀ›Â£_1ëíšoÜÓ¶E9øºÛ—·r[ÊåNÀêÌ„ò^*ð•þy 'Ø-¿£ŸµhwˆQÛ*‡×ÛЛ·—ÐúQžø«!ÀøÃËÞHƒñBšùäŒ9[é“’z‹™ÀSX7Z°¬nÖ!®¦únÛ*‡9Ͼ hF [àÊ—»‚nœ”à´þÑþ'Ëɬ&ú¤ô—“?XMŒ©ï‘¡ݵ1žllÎÖK®PûsC‰nƒçŒƒ±1棦
+ÐkâdŠúÿÚ,ØóÊ9¼ïS™®”Œ*ðŽA‰ïø@‰è]Ñ8L©išý'ë.‚Ò>Éä‚RvÍŽLØàf¡gÀ/ì3l}«U…B-ÓV'NNÓß–
+Œg’a|Hƒ-³è éßF˜óÿwCg)½!f°¼JpÀæ·xò_ÓÇ·q,F&"_Ïbµ_–Î;LZ¨lyr/Nô¤œ*„ùš=flªUß ‚µ‰è«ó{]…Û‡¸ìÚãÐàÁàý^º„µ6y."ÅyäQ q}1èƒMøÓn^<’ŠOw[J“jÙÏ
+NîRX¥ßó9yƒU&b»(Î,¿3Ô‰²M¥"_ {[»/ÃÐ[‹J_•º"y§÷‹ÆúÝÀøà¢ØÍm\¤´cp›¾fçÍFU¾èþ_k¶”TøóyY‹ÄóR R‰¡¾Ý‰Ô<&f-² G‘ híbŠAç_ŒWçzªZ}‚<„]Q
+¢²ivŠ=bC°wßÿX‚9æÜó'_·3{ϬYk‚¨T ~ ÇŽÁ%2w11Àžìż„ù1 «ì7uêÔ¤‘϶0^e™©²c;u¿›^ø›K?jeâÜÂε2V2žVºMj†ÌãBñ„oû161s;ùœß—`ÿ6½¹MŒýïüF(Nÿaz-1¦VÁ½Æ/ÏKf_ÃàÄ#ÿ#"µž—xË åz Þ,FˆH.Vù¶nå~Lo4œãKóNÚª0û¾Þç•zaõÖÆt©ª
+ê–
+<Àçµ š'K|Þq#|o˃á|;`J”q¹8=»ç÷:å?CÜ&ØCÐæδ®[Æj+9GŠk
+—¼E¼Í‡[ÛsjN»·ðæ†Ïš9sÜš.ÒàäìlþÊ–W”œt‹$˜„Û¯OòàõöDJ»ÎO?©w !Ë7nÖöšy SMðÛMIbu
+°wp‡w„zc ùÙOÈ£ëîÃ'ù´ ÇI;¸~-ÉÌa ÂŽ#Íîh|òÓ“šœtç±ó}©øtûÓlÂ.À’?ÃE†|¢©îp㧂?ñ-Òª:“éÈûä6xXÎuûÝôåÂ=«x?RU¦Wi<¼.„‚Z𘻾 È1³Öf— ¼Åì†Â;Ðø–í¦úùÉm/•ÈÖÔ@z©UnãÊz^öÁ¼*W(`Ï´V¿~zÃXÉ­„ü];jÍ®ÊðòmÇbJoUw@¢ÄLõð=š·bqF°ehÆz%%#ž{ o1gõiˆ~«ü£9w‡'‚™âf¨VÊO@õžQ‡ÈË•êv‡ù 5éìW°½†Ä•K©ýRTº‹Þ{s|L¶jƒÕaÊÒׯ±%ß%µg¤/ÎU|¾ebW¨ÃfÁÅú¸ÕÃIÐýŠä8;û"ÞKê\¬Å-Ý_*ÉÂ#¥I6ý%̽°\1á×|Ï(XæeJ¯ÓÂpÙsX€öŒ“hoÊ2hÎö·Ñ:¿`U\(løÎÉ'"õ/‡ä-qIèËg?°·¼ßBðÙ2˜aiìŸqq*‹ñof|ÉÜ7ŒC^êÁ÷ÄÔ^ˆÿ£ØNÝïþp%:QBµò}'M‹“ñ*€vYÛ§4ö#Æ0| E›F|_ï{¤¤
+µ|ƒ¤»­)¼e.Ý-"@íÎEB‡îƒÍóA‚/ÜòV’v ÉT{ÈšÁÿéeº,“Äñ+ðDE\
+e{Jô?å}ÅÙÉ,àÅ…»ZY*Ó‰n02TÉ`þ »cÃ1ŠÛ§1²5L`¾Í˜æŒ:'»˜¯ù^Äüt“¥ƒ™GÅG°Ùˬ ŽÝHqÎ>ϹP>ŠƒMv¦ýs^Twƒa¥+3¡`Ã%‰Ë,s¾S«öTOÈ\¼’~ ðâ0üZ’ÆCº8ä=>“ˬÐuJÈÕ¦
+~oðQT¸Z@P#áŠ=¼Ô%)%÷
+À«RÕ¯Æ
+ å¡VQ šeê~S!ôÂ-í¤ ¹’…º
+…ë’¤Åò¡´ *I9A¼äo 3AåÈ.©Ÿ4Ùd;`’×!
+óžMï„Å,z?©JŸ˜ŠI¤uÐf¯(놮Ìñ³a}¨ü ô Ä×` ªp™×Nˆ™¬Ñ83ëéVyØ•ÑãÆñne׊âK59FZ㬷3G[7‹©ûªØ£=ÇÃÒÚ ŽYm]>¤ «I±¨óÙ±ZV_Ç+D%Ý—5ë‡û;aú¶Om/ÍéãH>(Ö_ÖºG+»VåŠÔ^BZßðeC[ÇÅd梘…}ŽOc.¤u§¼œ*Hëþ•Í· ëƒb‡=ÏMQ_ƒ)µS¤µÆ†¹w´bøê¸ì6P_Q{‘ÖR®¹Ö›u0hÅrë"“k¤B—2ÞKÌIOÊd¥zm9«[ ´yWVzó²7gØÃrØ×¹¿èµ{TÐëÏÿ‚Ö“~åg­ôäE¹¥ýº«c¬â‚7Ìæ¯%à†¹ëÁ!
+ûŸPË]¬$,‡ÑPØý#¡6öÿëXÓXà'hĪ=……{ÿ {ŠÞݪ
+‰ ^ý¥/Y®¿yoz>o÷>âͨó{Zzþã{‘žwzµÈƒ˜Ç9½Z>lݹç
+Ȫ€Ü×¹÷m¯Ûð6Ïç$&÷^D,“ïÄ,\îŠ:Ëÿ. >¥7"•¹dÎM&/C$Êó[gV®TÝaŸ¬‡á}Üw þ·ûîç]ÎÊ…ãýüãZ:_ŸñÁa¤]ŸÖÄ࿬WëVK}‚y.ÃEî`Œp¢Ax båˆñÓƒ
+ïÿu÷Ìôt7]==Œfe¹BuÕ®ª½wKÆ1cªÕ“µ!Æ6PCñSi`“Q}”7gãü’¦ÄäEjYµ¥™¶§TäQq¶6\ØfK¼‹¯ŸÙlÉcÛÏ…éRÏë¾e˜ 0ixFï?#7s³eÉ0ƒô·1éwO²Ýló<-«ÿî ¯"¥U½ jåù•“Ž¥C)Á†Îmaêu°W ?ÏÏuðÍT‹
+Ò}ñoÓ¡¥>ñ„DœIÞLŇ´¼åv˜ø¬=“Fl÷:HÔßNñ©™¿Ñ\$<çµSš=>(V1ô›ò­5Íã,~Ð|NñÌ·<°û.Å9ÁˆÂÃHéXSµí0Ì IŶ$
+ýMgÀ­c&¹‰òÉ¿kpŸj"F×2µóœ’ŸÞ‰ÁáëùŽWÂtö4N°
+çIâ.²)Þqâå;P“F¬””²øcóúÅøXÂ?8Tse˜þk¨!78X9¯ç`ñGm"Š³—ÙŽ”Œý¬-8ÍzMo0šõš ÎhÎõ*Ô€9Z„e´ÇhîõÄÁ‹ÁüÍ`8MÉhƒ0ŒF·²=|ÿFC]“1ZàÝGq‚3šÓ}1NxFÃQ(£ÙZ¹mžÑÊl”l#åŒÏA¿`˜27À‰Ðð]4ûnÝmüù%嚬ܣìf¯ì­tVß<¢¡'{L>´ôysœKúò”\À4¤éÌšhÏÏW²eFˆ¦Yl D²† Ò,
+6Ž†¥™!öÁ}â”ÂÔ5$y †ñ£gíÁ(¸u¾ª§Rt,‹‚´2XœZê7°9
+KNÝ… ^C?/j!ª/ƒÝ¯†è¯¹0þžÒ‡è•úâý’ù{™¦¿þ
+äïeZè]8Xxÿg!Ó *†»¦ö÷z*†ã„ñ÷Lª…Û«‰#ñ÷²(ôzâ誡Z ÃüY„VCN 'KA É+è¯aÕЩ¾–*Ê6ÚÑÊÂó{æ
+t¡^æµöœ| Âsȸ¾ –ç&B~¤
+)kñ_/Q˜šù܆,5ó­»RC˜ÊÑãrOGÅÙjP(ü/VË’W=Ud¡þf¾¬¥ÆrM-FÅ€þŠÁJo`°òíºÑƒúâ þ8ÁvßÁ`•ø?½3}:R"ö5˜Åxˆ®Ú@''yÅ$‹Á€e“G=†éÌ„VRš±±\Ž"Û«ëéÙá—þ›ô²pzpf-—eëo$÷v9‰d‡w­Hî{å.’ëV[D°Mü¯q$ûüòbø¯'‘ìñU~å+gÕ8mhBHÙù×dE+|‘Ë\í=/­’¹dU,VI¢Ÿuçù‚µßÙ–kUÜ}åBÿ-Y,ŒÖËå·h½÷ô¾à¦Ñ±m-×÷ù;/Ü£™o志£„“ɳ{±Øàã¿ù£»ãßà£Vôä¥>Z<yúqÍ_¯L­{±D©;ùzô‘}t÷:Î<ºÿ£qÍ<ú˜HÄðî»ÏZ±ç™g*À‡‹øœVÚþ{4=Eð”9ׇŸek­
+·­Ý»cå¾èƒ^ž’­•›I5ó7[âÄsMšDÁµ¸lƒBܵx®‘Øf®iá—Û^š¨ûò2 Ó!7ËãìJmIjņ#W¦­?ÃäL =˜ôse—¶ó}Ú’•†fó¦ ZZ.¦.ͽÅfùt"”ÛsÿªvU’9'“Œz.,ßV½úà%¼’Ú½cÉ7Út ߧÞ"ƒ…aK Ìd©ušú!-r³y¡l ìƒ-ò¾ôá™»iy!Ô¼%'?œ:zÉVBgï´Õiþ8\s‘Lœüí—ô.9'3ôÿj ¯ò¢Üø]í
+ER?–m œúYçãÀ‘as¼ž{†¼î Ò»iz)¡ß¸ñqÍšä v¢ Ú.Ô°ó+I®)Æ)ñý}lûÚ.E¨»¯ûkôŠ&©|+Ö4"‹@eÂC¿à›T5
+¦¤¶ÒÜ-æ$õƒ’:¢­Óêe{º•š›:ö¯Rþì«ûg˜š\Rû¹Å00>Ù æwchOÖ²´Óx9!¡\NÌâõ+=Ä“ÏBŒçÚPEzŒ¶b¶œºƒVnŒÆ9<º?èwðª´8?¶ÁF±×à²ó«~…j‘‡x†ùBxòŠ, q_¾+áϽr»;ǽø|Ž½¿íc
+`˜¾á¢8{˜ Ô‚a:–ÛJ<,×o!;4)úë‹kiäk±:´|w¿ÿn˜>p@GÜÆØÃ`L–†© ‡Ê¹ ‚xç"dlœW
+Y³DYO¯4 7LJ\Ð$¿œj Ϥ)9•l§tŠ}dGÿ\,dùÖZIÕ| ?vª»ñÞ¾ƒ~ìåT{ãU'%J©vÙÇÝÓsA=†pJÀ# …ARbïœTY—
+|Râ—Ù_Å8íê¦d_|ª¤šù›-qrX‡ªXžÄ9¬vâ/nˆy—wf’›Ž›±ÖŸ×ÉŒu±¤·¹£¥sƒŸNÁ—RrÂqõQH̹ajœ •x-Ÿ`wšî»Ñ&ý\ÉÖÇuJ¤8êÑC”–’•FtŸ»xg8o¹Z ”ÛsÿªvUt¤°Sb†
+õ\X¾m
+ê®y¯ð–Ìù´{ PÊ+ñêbWÝs†-y`&K`b”2ÀÂ!lðÂùO2Þ;™"óf¹Rÿ¹*òf¹ç™e—ÇÄôÌr¥>ÈÄ4†Á0…qà
+þèñ‡†„
+S $uMp^ìeÐNŽ®ñ+¯ÕSE/'ë$6þYZs
+ &šN
+]íT ªv›3†ñÞrù˜B·fš&ìì˶qJ;—lì»R‡½-³1ÌÐH⨹Û0½ÑvwZIÃÁ¸óHi3”£ÈžÙÄ¿I¢±É¦xåÃTq ViøÌ2Lq ÍU‡÷Ö«t+q$Œ>!Ⱦ[PÁ „¨E[âÒ¨-=Œ¨ ÈûOUR¤REm!ü©ãéßr¿í^ÂT¹à,3ÀÇ”oÊ·QF ¥WøÈIdki°½î[~/‹IV|–h-–áMüCÞ7¤ƒ®²¸tÜv˜„kêq©[rné°:å«ìXÝ°³¿˜TÂÒ€èÀƒL$¾;9YõíäÃDãò1ÇNa+Y*©8žfV]$ßh`@È1,û ŸÓSèºõŠxöEc¸W†Cðo’BPCèÓ/ÔÞ†ÃU³Û3ÇœÊðcŒ‘c¨°Ç¸chÏTÇPÀÆ!ÞÁô"³ÑŒ‡6½< /ì¦zuìla|€•¢Ú“Ú))DQ öŽ1R>µ'ATÂ
+1ô›§tÎù¨Q;Ù}ó&üÐÜ1„T:ã_v>E­ ´aJ´(sð9:XJÔ+Ÿè¬FÑÀ-yD{‰…•.ÿ@Ù#ß&›êá ’Î±•ˆšÅäŸ0ÑÀ\ °\á³=d+h1¹zêŽÍÅ¥×>Xf}<y­d óeá/|¶Wö
+\}ß‹ÿÅê9î’C˜GÕ'Çpz ÑÖS%Á#h
+4–æÇÕÔ¬®|*a äˆUš·×½mèJPË‚¼TW \doqDoù‹91„!áŽp½Ð=AQC1lòkÄ°UðLÔ…G y¥µEÄп
+Àæ÷
+÷"—õÁx‡wˆU
+eíü…ú¼®øÝë;8/Ô—Õ‡®’Åjºï~‡NgwADÏW*©ÑY¾Óõ5q4ç.)¼ïx’Šd°ÙO7—+ÿ^í'¦b¥ªv¯ïÛZFëøØE™Myàƒüý˜±W}?ñ¥œyP ^ 'ß-4&êºêµMóß“§³¦ÿe…T~\ê¬ §ê”ƒSr'PéÐ쳂"©ï8!”À™Äy’KG7ÞG0ù-0£ðlpCŠê§)nÎ@ùù6¿—¡=ÛN~4úp®RD§²~W;Ûʼ˜£oEœ®0—Ed
+ý"íxiÔNvßVúËpÚÂÝce¥›!’H7F  M'%ÇFÌÎ}‡ÖÐ øzËU(˜";Ï•›ZæZS³º\žŒ’“¦–)H‰Ò¨_H`
+LÏ‹¡HünVìíjN€£ZòZÍ4ãqa
+:ÇyL+át%d°ë ”©] Ì:,hfáN–Ê¡R3m$V2‘¸ÐI´ÙIx)Éú\í"?w¼OxÓkäÜùÓ>©rz·ò¥U)|Ððõ“IfMŸ£=2ªïýq<Í­GVÿb7
+S¦§¯¦” ²ëçmKçÎ:ÞJ3Ìé»ʘ˜FÛ¬ãÙˆI‹z\N±·…˜˜JsiÞªÑÊúÀÎÃÖ=÷šøŽŠ!TX™ˆKîÐdÙùs²ôÁë28óÄÀNÖcÕ}Á4 L¢bÀËSù—Ÿ'átŸd›)Ã
+/
+á`7³ÈåY!¼íÀo†æ&.bLËÝh9øÜS”ÛÜMºÙ-Î&ÝTj˜r» –ßé¢ÔŽÒªýéãct(4óÞ`pAŵŒþÖñéÊÍŠWZ3"]kíVn0¸3 xùSOÝÉ€4GL !:$æv2g~Iþ›žcI˜Ë¹—U ü[ꃛs$®pêP­ÌþwîÄ•\m~§Z ©ò²- Æ[¡©"6…˜s£ÃGÌ7¡±Røk9»/d ~Â\
+)a½mù¿
+0000000016 00000 n
+0000000159 00000 n
+0000060797 00000 n
+0000000007 00000 f
+0000196494 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000196564 00000 n
+0000196595 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000062556 00000 n
+0000196680 00000 n
+0000060849 00000 n
+0000061209 00000 n
+0000061343 00000 n
+0000062866 00000 n
+0000062743 00000 n
+0000062128 00000 n
+0000061409 00000 n
+0000061567 00000 n
+0000061615 00000 n
+0000062380 00000 n
+0000062443 00000 n
+0000062627 00000 n
+0000062658 00000 n
+0000062940 00000 n
+0000063300 00000 n
+0000064268 00000 n
+0000077282 00000 n
+0000085960 00000 n
+0000099385 00000 n
+0000117008 00000 n
+0000132899 00000 n
+0000136696 00000 n
+0000146789 00000 n
+0000172974 00000 n
+0000181172 00000 n
+0000196705 00000 n
+trailer <</Size 57/Root 1 0 R/Info 56 0 R/ID[<5D4216194DFA42A0B71EE1DAB45EAD1E><C48FDA5E73B84B12B951588E8420725C>]>> startxref 196885 %%EOF \ No newline at end of file
diff --git a/chrome/app/theme/menu_overflow_up.pdf b/chrome/app/theme/menu_overflow_up.pdf
new file mode 100644
index 0000000..2677757
--- /dev/null
+++ b/chrome/app/theme/menu_overflow_up.pdf
@@ -0,0 +1,1556 @@
+%PDF-1.5 %âãÏÓ
+1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 29 0 R]/Order 30 0 R/RBGroups[]>>/OCGs[5 0 R 29 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 61633/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/pdf</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">MenuOverflowUp</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
+ <xmp:MetadataDate>2010-04-20T11:15:51-07:00</xmp:MetadataDate>
+ <xmp:ModifyDate>2010-04-20T11:15:51-07:00</xmp:ModifyDate>
+ <xmp:CreateDate>2010-04-20T11:14:56-07:00</xmp:CreateDate>
+ <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool>
+ <xmp:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xmpGImg:width>256</xmpGImg:width>
+ <xmpGImg:height>208</xmpGImg:height>
+ <xmpGImg:format>JPEG</xmpGImg:format>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA0AEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYqwD83fOX6H0f8ARdpJTUdRUqxU7xwdGb2LfZX6fDCEF35Recv0xo/6Lu5K&#xA;6jpyhVLHeSDore5X7LfR44lQz/Al2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku&#xA;xV2KuxV2KuxV2KuxV2KuxVCavqtnpOm3Go3j8La2Qu57mnRRXux2Hvir5i8xa7ea7rFzqd2f3k7V&#xA;VK1CINlRfZRkkO8u67eaFrFtqdof3kDVZK0DodmRvZhir6d0jVbPVtNt9Rs3521ygdD3FeqmndTs&#xA;ffIpReKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV4&#xA;j+cvnL6/qA0CzkraWTcrtlOzz/y7do/+JV8MIQXmmFXYq9L/ACa85fUNQOgXklLS9blaMx2Sf+Xf&#xA;tJ/xKnjgKh7dgS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYqxb8xfN6eW9AeSJh+kbqsVkncMR8UlPBB+NMIV84O7u7O7FnYksxNSSdySThQ1irsVbR3R1dGK&#xA;upBVgaEEbggjFX0f+XXm9PMmgJJKw/SNrSK9TuWA+GSng4/GuApZTgV2KuxV2KuxV2KuxV2KuxV2&#xA;KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVZPPDbwSTzuI4YlLySMaBVUVJJ9hir5p88+a5v&#xA;MuvzXpJW0j/dWUR/ZiU7Ej+ZupySGP4q7FXYq7FWQeRvNc3lrX4b0EtaSfur2IftRMdyB/MvUYq+&#xA;loJ4biCOeBxJDKoeORTUMrCoIPuMilfirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd&#xA;irsVdirsVdirsVeU/nT5y9KFfLdlJ+8lAk1FlPROqRbfzfab2p44QgvHMKuxV2KuxV2KuxV7H+S3&#xA;nL1YW8t3sn7yIGTTmY9U6vFv/L9pfavhgKh6tgS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYqk/m3zJa+XdDuNSnozoONvEf92St9hf4n2rir5lv766v72e9unMlxcOZJXP&#xA;dmNTkkKGKuxV2KuxV2KuxVXsL66sL2C9tXMdxbuJInHZlNRir6a8peZLXzFodvqUFFdxxuIh/uuV&#xA;ftr/ABHtTIpTjFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+evzS84/4&#xA;g1029q9dLsC0dvQ7SP0eX3qRRfb55IIYXirsVdirsVdirsVdirsVZp+VvnH/AA/rot7p6aXflY7i&#xA;p2jfokvtQmje3yxKvoXIpdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYB+bv&#xA;nL9D6P8Aou0kpqOoqVYqd44OjN7Fvsr9PhhCC8Fwq7FXYq7FXYq7FXYq7FXYq7FXvX5Recv0xo/6&#xA;Lu5K6jpyhVLHeSDore5X7LfR44CoZ/gS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;qhNX1Wz0nTbjUbx+FtbIXc9zToor3Y7D3xV8xeYtdvNd1i51O7P7ydqqlahEGyovsoySEuxV2Kux&#xA;V2KuxV2KuxV2KuxV2Kpj5d1280LWLbU7Q/vIGqyVoHQ7MjezDFX07pGq2erabb6jZvztrlA6HuK9&#xA;VNO6nY++RSi8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirxH85fOX1/UBoFnJW0sm5&#xA;XbKdnn/l27R/8Sr4YQgvNMKuxV2KuxV2KuxV2KuxV2KuxV2KuxV6X+TXnL6hqB0C8kpaXrcrRmOy&#xA;T/y79pP+JU8cBUPbsCXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWLfmL5vTy3oDyRMP0j&#xA;dVisk7hiPikp4IPxphCvnB3d3Z3Ys7ElmJqSTuSScKGsVdirsVdirsVdirsVdirsVdirsVdiraO6&#xA;OroxV1IKsDQgjcEEYq+j/wAuvN6eZNASSVh+kbWkV6ncsB8MlPBx+NcBSynArsVdirsVdirsVdir&#xA;sVdirsVdirsVdirsVdiqyeeG3gknncRwxKXkkY0CqoqST7DFXzT5581zeZdfmvSStpH+6soj+zEp&#xA;2JH8zdTkkMfxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ksg8jea5vLWvw3oJa0k/dXsQ/aiY7kD+&#xA;ZeoxV9LQTw3EEc8DiSGVQ8cimoZWFQQfcZFK/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8p/On&#xA;zl6UK+W7KT95KBJqLKeidUi2/m+03tTxwhBeOYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi&#xA;r2P8lvOXqwt5bvZP3kQMmnMx6p1eLf8Al+0vtXwwFQ9WwJdirsVdirsVdirsVdirsVdirsVdirsV&#xA;Sfzb5ktfLuh3GpT0Z0HG3iP+7JW+wv8AE+1cVfMt/fXV/ez3t05kuLhzJK57sxqckhQxV2KuxV2K&#xA;uxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kq9hfXVhewXtq5juLdxJE47MpqMVfTXlLzJa+YtDt9Sgoru&#xA;ONxEP91yr9tf4j2pkUpxirsVdirsVdirsVdirsVdirsVdirsVfPX5pecf8Qa6be1eul2BaO3odpH&#xA;6PL71Iovt88kEMLxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ks0/K3zj/h/XRb3T00&#xA;u/Kx3FTtG/RJfahNG9vliVfQuRS7FXYq7FXYq7FXYq7FXYq7FXYqwD83fOX6H0f9F2klNR1FSrFT&#xA;vHB0ZvYt9lfp8MIQXguFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq96/KLzl+&#xA;mNH/AEXdyV1HTlCqWO8kHRW9yv2W+jxwFQz/AAJdirsVdirsVdirsVdirsVQmr6rZ6TptxqN4/C2&#xA;tkLue5p0UV7sdh74q+YvMWu3mu6xc6ndn95O1VStQiDZUX2UZJCXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FUx8u67eaFrFtqdof3kDVZK0DodmRvZhir6d0jVbPVtNt9Rs3521&#xA;ygdD3FeqmndTsffIpReKuxV2KuxV2KuxV2KuxV4j+cvnL6/qA0CzkraWTcrtlOzz/wAu3aP/AIlX&#xA;wwhBeaYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir0v8mvOX1DUDoF5J&#xA;S0vW5WjMdkn/AJd+0n/EqeOAqHt2BLsVdirsVdirsVdirFvzF83p5b0B5ImH6RuqxWSdwxHxSU8E&#xA;H40whXzg7u7s7sWdiSzE1JJ3JJOFDWKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K&#xA;uxV2KuxVtHdHV0Yq6kFWBoQRuCCMVfR/5deb08yaAkkrD9I2tIr1O5YD4ZKeDj8a4CllOBXYq7FX&#xA;Yq7FVk88NvBJPO4jhiUvJIxoFVRUkn2GKvmnzz5rm8y6/NeklbSP91ZRH9mJTsSP5m6nJIY/irsV&#xA;dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVZB5G81zeWtfhvQS1pJ+6v&#xA;Yh+1Ex3IH8y9Rir6WgnhuII54HEkMqh45FNQysKgg+4yKV+KuxV2KuxV5T+dPnL0oV8t2Un7yUCT&#xA;UWU9E6pFt/N9pvanjhCC8cwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXsf5LecvVhby3eyfvIgZNOZj1Tq8W/8v2l9q+GAqHq2BLsVdiqT+bfMlr5d0O41Kej&#xA;Og428R/3ZK32F/ifauKvmW/vrq/vZ726cyXFw5klc92Y1OSQoYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVewvrqwvYL21cx3Fu4kicdmU1GKvpryl5ktfMWh&#xA;2+pQUV3HG4iH+65V+2v8R7UyKU4xV2Kvnr80vOP+INdNvavXS7AtHb0O0j9Hl96kUX2+eSCGF4q7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWaflb5x/w/&#xA;rot7p6aXflY7ip2jfokvtQmje3yxKvoXIpYB+bvnL9D6P+i7SSmo6ipVip3jg6M3sW+yv0+GEILw&#xA;XCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVe&#xA;9flF5y/TGj/ou7krqOnKFUsd5IOit7lfst9HjgKhjnmL8p/POu6xc6nd3lh6k7VVPVnIRBsqL+56&#xA;KMbVLf8AlRXm3/lrsP8AkZN/1Rxtad/yorzb/wAtdh/yMm/6o42tO/5UV5t/5a7D/kZN/wBUcbWn&#xA;f8qK82/8tdh/yMm/6o42tO/5UV5t/wCWuw/5GTf9UcbWnf8AKivNv/LXYf8AIyb/AKo42tO/5UV5&#xA;t/5a7D/kZN/1Rxtad/yorzb/AMtdh/yMm/6o42tO/wCVFebf+Wuw/wCRk3/VHG1p3/KivNv/AC12&#xA;H/Iyb/qjja07/lRXm3/lrsP+Rk3/AFRxtad/yorzb/y12H/Iyb/qjja07/lRXm3/AJa7D/kZN/1R&#xA;xtad/wAqK82/8tdh/wAjJv8Aqjja07/lRXm3/lrsP+Rk3/VHG1p3/KivNv8Ay12H/Iyb/qjja07/&#xA;AJUV5t/5a7D/AJGTf9UcbWnf8qK82/8ALXYf8jJv+qONrTv+VFebf+Wuw/5GTf8AVHG1p3/KivNv&#xA;/LXYf8jJv+qONrTv+VFebf8AlrsP+Rk3/VHG1p3/ACorzb/y12H/ACMm/wCqONrTv+VFebf+Wuw/&#xA;5GTf9UcbWnf8qK82/wDLXYf8jJv+qONrTv8AlRXm3/lrsP8AkZN/1Rxtad/yorzb/wAtdh/yMm/6&#xA;o42tO/5UV5t/5a7D/kZN/wBUcbWnf8qK82/8tdh/yMm/6o42tO/5UV5t/wCWuw/5GTf9UcbWnf8A&#xA;KivNv/LXYf8AIyb/AKo42tJl5d/KfzzoWsW2p2l5YepA1WT1ZwHQ7MjfuejDG1f/2Q==</xmpGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xmp:Thumbnails>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#">
+ <xmpMM:InstanceID>uuid:830a1556-d6bd-7948-8f77-9a670459e4b5</xmpMM:InstanceID>
+ <xmpMM:DocumentID>xmp.did:F97F11740720681194DFF4A5DEFE0840</xmpMM:DocumentID>
+ <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID>
+ <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>xmp.iid:F87F11740720681194DFF4A5DEFE0840</stRef:instanceID>
+ <stRef:documentID>xmp.did:F87F11740720681194DFF4A5DEFE0840</stRef:documentID>
+ <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID>
+ <stRef:renditionClass>proof:pdf</stRef:renditionClass>
+ </xmpMM:DerivedFrom>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:D27F11740720681191099C3B601C4548</stEvt:instanceID>
+ <stEvt:when>2008-04-17T14:19:15+05:30</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F1174072068118D4ED246B3ADB1C6</stEvt:instanceID>
+ <stEvt:when>2008-05-15T16:23:06-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F1174072068118D4ED246B3ADB1C6</stEvt:instanceID>
+ <stEvt:when>2008-05-15T17:10:45-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:EF7F117407206811A46CA4519D24356B</stEvt:instanceID>
+ <stEvt:when>2008-05-15T22:53:33-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F07F117407206811A46CA4519D24356B</stEvt:instanceID>
+ <stEvt:when>2008-05-15T23:07:07-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T10:35:43-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T10:40:59-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to &lt;unknown&gt;</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:26:55-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FB7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:29:01-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FC7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:29:20-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FD7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:30:54-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FE7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T11:31:22-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B233668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T12:23:46-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B333668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T13:27:54-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:B433668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
+ <stEvt:when>2008-05-16T13:46:13-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:47:57-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:51:06-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F11740720681197C1BF14D1759E83</stEvt:instanceID>
+ <stEvt:when>2008-05-16T15:52:22-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FA7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T13:28:01-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:FF7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
+ <stEvt:when>2008-05-22T16:23:53-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:07C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID>
+ <stEvt:when>2008-05-28T16:45:26-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>converted</stEvt:action>
+ <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F1174072068119098B097FDA39BEF</stEvt:instanceID>
+ <stEvt:when>2008-06-02T13:25:25-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811BB1DBF8F242B6F84</stEvt:instanceID>
+ <stEvt:when>2008-06-09T14:58:36-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F117407206811ACAFB8DA80854E76</stEvt:instanceID>
+ <stEvt:when>2008-06-11T14:31:27-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:0180117407206811834383CD3A8D2303</stEvt:instanceID>
+ <stEvt:when>2008-06-11T22:37:35-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F117407206811818C85DF6A1A75C3</stEvt:instanceID>
+ <stEvt:when>2008-06-27T14:40:42-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>
+ <rdf:Bag>
+ <rdf:li>/</rdf:li>
+ </rdf:Bag>
+ </stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F77F11740720681194DFF4A5DEFE0840</stEvt:instanceID>
+ <stEvt:when>2010-04-20T10:39:03-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F87F11740720681194DFF4A5DEFE0840</stEvt:instanceID>
+ <stEvt:when>2010-04-20T11:12:41-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:F97F11740720681194DFF4A5DEFE0840</stEvt:instanceID>
+ <stEvt:when>2010-04-20T11:14:54-07:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
+ <illustrator:StartupProfile>Print</illustrator:StartupProfile>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
+ <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+ <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency>
+ <xmpTPg:NPages>1</xmpTPg:NPages>
+ <xmpTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>19.000000</stDim:w>
+ <stDim:h>19.000000</stDim:h>
+ <stDim:unit>Points</stDim:unit>
+ </xmpTPg:MaxPageSize>
+ <xmpTPg:PlateNames>
+ <rdf:Seq>
+ <rdf:li>Black</rdf:li>
+ </rdf:Seq>
+ </xmpTPg:PlateNames>
+ <xmpTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Default Swatch Group</xmpG:groupName>
+ <xmpG:groupType>0</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>White</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>Black</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>100.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Red</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Yellow</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Green</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Cyan</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Blue</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>CMYK Magenta</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=15 M=100 Y=90 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>14.999998</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=90 Y=85 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>85.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=80 Y=95 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>80.000000</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=50 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=35 Y=85 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>35.000004</xmpG:magenta>
+ <xmpG:yellow>85.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=5 M=0 Y=90 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>5.000001</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=20 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>19.999998</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=0 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=10 Y=100 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=90 M=30 Y=95 K=30</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>90.000000</xmpG:cyan>
+ <xmpG:magenta>30.000002</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>30.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=0 Y=75 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>75.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=80 M=10 Y=45 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>80.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>45.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=70 M=15 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>70.000000</xmpG:cyan>
+ <xmpG:magenta>14.999998</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=50 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=95 Y=5 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>95.000000</xmpG:magenta>
+ <xmpG:yellow>5.000001</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=100 Y=25 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>25.000000</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=75 M=100 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>75.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=100 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=35 M=100 Y=35 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>35.000004</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>35.000004</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=10 M=100 Y=50 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>10.000002</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>50.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=95 Y=20 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>95.000000</xmpG:magenta>
+ <xmpG:yellow>19.999998</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=25 M=25 Y=40 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>25.000000</xmpG:cyan>
+ <xmpG:magenta>25.000000</xmpG:magenta>
+ <xmpG:yellow>39.999996</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=45 Y=50 K=5</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>45.000000</xmpG:magenta>
+ <xmpG:yellow>50.000000</xmpG:yellow>
+ <xmpG:black>5.000001</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=50 Y=60 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>60.000004</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=55 M=60 Y=65 K=40</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>55.000000</xmpG:cyan>
+ <xmpG:magenta>60.000004</xmpG:magenta>
+ <xmpG:yellow>65.000000</xmpG:yellow>
+ <xmpG:black>39.999996</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=25 M=40 Y=65 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>25.000000</xmpG:cyan>
+ <xmpG:magenta>39.999996</xmpG:magenta>
+ <xmpG:yellow>65.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=30 M=50 Y=75 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>30.000002</xmpG:cyan>
+ <xmpG:magenta>50.000000</xmpG:magenta>
+ <xmpG:yellow>75.000000</xmpG:yellow>
+ <xmpG:black>10.000002</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=35 M=60 Y=80 K=25</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>35.000004</xmpG:cyan>
+ <xmpG:magenta>60.000004</xmpG:magenta>
+ <xmpG:yellow>80.000000</xmpG:yellow>
+ <xmpG:black>25.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=65 Y=90 K=35</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>65.000000</xmpG:magenta>
+ <xmpG:yellow>90.000000</xmpG:yellow>
+ <xmpG:black>35.000004</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=40 M=70 Y=100 K=50</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>39.999996</xmpG:cyan>
+ <xmpG:magenta>70.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>50.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=50 M=70 Y=80 K=70</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>50.000000</xmpG:cyan>
+ <xmpG:magenta>70.000000</xmpG:magenta>
+ <xmpG:yellow>80.000000</xmpG:yellow>
+ <xmpG:black>70.000000</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Grays</xmpG:groupName>
+ <xmpG:groupType>1</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=100</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>100.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=90</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>89.999405</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=80</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>79.998795</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=70</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>69.999702</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=60</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>59.999104</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=50</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>50.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=40</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>39.999401</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=30</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>29.998802</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=20</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>19.999701</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=10</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>9.999103</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=0 Y=0 K=5</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>0.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>4.998803</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>Brights</xmpG:groupName>
+ <xmpG:groupType>1</xmpG:groupType>
+ <xmpG:Colorants>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=100 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>100.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=75 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>75.000000</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=0 M=10 Y=95 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>0.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>95.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=85 M=10 Y=100 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>85.000000</xmpG:cyan>
+ <xmpG:magenta>10.000002</xmpG:magenta>
+ <xmpG:yellow>100.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=100 M=90 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>100.000000</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>0.000000</xmpG:yellow>
+ <xmpG:black>0.000000</xmpG:black>
+ </rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:swatchName>C=60 M=90 Y=0 K=0</xmpG:swatchName>
+ <xmpG:mode>CMYK</xmpG:mode>
+ <xmpG:type>PROCESS</xmpG:type>
+ <xmpG:cyan>60.000004</xmpG:cyan>
+ <xmpG:magenta>90.000000</xmpG:magenta>
+ <xmpG:yellow>0.003099</xmpG:yellow>
+ <xmpG:black>0.003099</xmpG:black>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpG:Colorants>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpTPg:SwatchGroups>
+ </rdf:Description>
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <pdf:Producer>Adobe PDF library 9.00</pdf:Producer>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 1/Kids[31 0 R]/Type/Pages>> endobj 31 0 obj <</ArtBox[4.50098 6.0 14.5 13.998]/BleedBox[0.0 0.0 19.0 19.0]/Contents 32 0 R/Group 33 0 R/LastModified(D:20100420111551-07'00')/MediaBox[0.0 0.0 19.0 19.0]/Parent 3 0 R/PieceInfo<</Illustrator 34 0 R>>/Resources<</ExtGState<</GS0 35 0 R>>/Properties<</MC0 29 0 R>>/XObject<</Fm0 36 0 R>>>>/Thumb 37 0 R/TrimBox[0.0 0.0 19.0 19.0]/Type/Page>> endobj 32 0 obj <</Filter/FlateDecode/Length 66>>stream
+H‰Ò÷wVÐ÷u6PprqVà*ä2P0´!] .Jå
+WÈ
+ê»(¤sé»å(¸äsr¹úUr
+8;V'i$O[%B0E;4a!JC~> endstream endobj 38 0 obj [/Indexed/DeviceRGB 255 39 0 R] endobj 39 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
+VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
+PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 36 0 obj <</BBox[4.50098 13.998 14.5 6.0]/Group 40 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 41 0 R>>>>/Subtype/Form>>stream
+0 0 0 1 k
+/GS0 gs
+q 1 0 0 1 4.501 6 cm
+0 0 m
+5 7.998 l
+9.999 0 l
+h
+f
+Q
+ endstream endobj 40 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 41 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 29 0 obj <</Intent 42 0 R/Name(Layer 1)/Type/OCG/Usage 43 0 R>> endobj 42 0 obj [/View/Design] endobj 43 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>> endobj 35 0 obj <</AIS false/BM/Normal/CA 0.669998/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.669998/op false>> endobj 34 0 obj <</LastModified(D:20100420111551-07'00')/Private 44 0 R>> endobj 44 0 obj <</AIMetaData 45 0 R/AIPDFPrivateData1 46 0 R/AIPDFPrivateData10 47 0 R/AIPDFPrivateData2 48 0 R/AIPDFPrivateData3 49 0 R/AIPDFPrivateData4 50 0 R/AIPDFPrivateData5 51 0 R/AIPDFPrivateData6 52 0 R/AIPDFPrivateData7 53 0 R/AIPDFPrivateData8 54 0 R/AIPDFPrivateData9 55 0 R/ContainerVersion 11/CreatorVersion 14/NumBlock 10/RoundtripVersion 14>> endobj 45 0 obj <</Length 916>>stream
+%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 14.0 %%AI8_CreatorVersion: 14.0.0 %%For: (Nicholas Jitkoff) () %%Title: (MenuOverflowUp.pdf) %%CreationDate: 4/20/10 11:15 AM %%Canvassize: 16383 %%BoundingBox: 4 6 15 14 %%HiResBoundingBox: 4.50098 6 14.5 13.998 %%DocumentProcessColors: Black %AI5_FileFormat 10.0 %AI12_BuildNumber: 367 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 1 1 1 ([Registration]) %AI3_Cropmarks: 0 0 19 19 %AI3_TemplateBox: 9.5 9.5 9.5 9.5 %AI3_TileBox: -296.5 -386.5 315.5 405.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -19 26 24 1351 758 90 0 0 52 138 0 0 0 1 1 0 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 72 72 72 72 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 46 0 obj <</Length 12848>>stream
+%%BoundingBox: 4 6 15 14 %%HiResBoundingBox: 4.50098 6 14.5 13.998 %AI7_Thumbnail: 128 104 8 %%BeginData: 12716 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD3FFF7EA8FD7DFFA85252FD7DFF8452527DFD7BFFA8FD0452A8FD %7AFF527D527D527DFD79FF7D525259525252A8FD77FFA87D527D527D5253 %52FD77FF7DFD0952FD75FFA8527D527D527D527D5259A8FD74FF52525259 %525252595252527DA8FD72FF7D52527D527D527D527D527D5284FD71FFA8 %FD0E52A8FD70FF7D527D527D527D527D527D527D527D7DFD6FFFA8525252 %595252525952525259FD04527DFD6EFF527D527D527D527D527D527D527D %527D527DA8FD6CFF53FD12527DFD6BFFA852527D527D527D527D527D527D %527D527D527D52A8FD69FFA87D52525259525252595252525952525259FD %0552FD69FF7D527D527D527D527D527D527D527D527D527D527D52527DFD %67FFA8FD1852A8FD66FF7D53527D527D527D527D527D527D527D527D527D %527D527D527DFD65FF7DFD04525952525259525252595252525952525259 %52525259527EFD63FFA853527D527D527D527D527D527D527D527D527D52 %7D527D527D527D52FD63FF7DFD1C5253FD61FFA8527D527D527D527D527D %527D527D527D527D527D527D527D527D527D5252A8FD60FFFD0552595252 %525952525259525252595252525952525259525252595253A8FD5EFF7D52 %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527DFD5DFFA8FD2252A8FD5CFF7D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D525352FD5BFF7E52595252525952 %52525952525259525252595252525952525259525252595252525952527D %FD5AFF5253527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D5253A8FD58FFFD27527DFD57FFA859527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D52A8FD55FFA853525952525259525252595252525952525259525252 %5952525259525252595252525952525259525252FD55FF84527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D52527DFD53FFA8FD2C52A8FD52FF527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527DFD51FF7D52525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252A8FD4FFFA87D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D525352FD4FFF7DFD3152FD4DFFA8527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D5259A8FD4CFF5252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252527DA8FD4AFF7D52527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D5284FD49FFA8FD3652A8FD48FF7D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D7DFD47FFA852525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259FD04527DFD46FF527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527DA8FD44FF53FD3A527DFD %43FFA852527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D52A8FD41FFA87D525252595252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %5952525259FD0552FD41FF7D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D52527DFD3FFFA8FD4052A8FD3EFF7D53527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527DFD3DFF7DFD0452595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %52595252525952525259527EFD3BFFA853527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D52FD3BFF7DFD44 %5253FD39FFA8527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D5252A8FD38FFFD055259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595253 %A8FD36FF7D52527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527DFD35FFA8FD4A52A8FD34FF7D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D525352FD33FF7E5259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %52525952527DFD32FF5253527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D5253A8FD30 %FFFD4F527DFD2FFFA859527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D52A8 %FD2DFFA85352595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %5252595252525952525259525252595252525952525259525252FD2DFF84 %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D52527DFD2BFFA8FD5452 %A8FD2AFF527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %FD29FF7D5252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %A8FD27FFA87D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %525352FD27FF7DFD5952FD25FFA8527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D5259A8FD24FF525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252527DA8FD22FF7D52527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D5284FD21 %FFA8FD5E52A8FD20FF7D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D7DFD1FFFA85252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259FD04527DFD1EFF527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527DA8FD1CFF53FD62527DFD1BFFA852527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D52A8 %FD19FFA87D52525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %5252595252525952525259FD0552FD19FF7D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D5252 %7DFD17FFA8FD6852A8FD16FF7D53527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527DFD15 %FF7DFD045259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %52525259525252595252525952525259527EFD13FFA853527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D52FD13FF7DFD6C5253FD11FFA8527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D5252A8FD10FFFD05525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595252525952525259525252595252525952525259525252595252 %525952525259525252595252525952525259525252595252525952525259 %525252595253A8FD0EFF7D52527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527DFD0DFFA8FD7252A8FD0CFF7D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D525352FD0BFF7E525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %59525252595252525952527DFD0AFF5253527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D5253A8FD08FFFD77527DFD07FFA859527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D52A8FD05FFA8 %535259525252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %525259525252595252525952525259525252595252525952525259525252 %595252525952525259525252595252525952525259525252595252525952 %5252FD05FF84527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D527D527D52527DFFFFFFA8FD7C52A8FFFF527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527DFF7DFD7D52 %277DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87D %A87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87E %A87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87D %A87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87E %A87DA87EA87DA87EA87DFD7FFFFF %%EndData endstream endobj 47 0 obj <</Filter[/FlateDecode]/Length 8605>>stream
+H‰¬WëVÚL}‚<„@H @[iAŠ(Šå²ÄÏJ+—Àû3“û0“IÄ?³X
+û\÷9ûÕìë¢ÎÃ'ž*Ê¥’-ÜJRåu—?;©¥n
+FÎèHå³ú²|¡o¥²>7ÊkñùNª æYøå|áûM1'UWÅñ`¹?]›¿)ë·ïð+= LêÜ ¿9Ž ì¼÷¿e—ʲ&›Oí4]Vž“ê»e Ÿ¸ÁÁžöÕv
+°7ªS ®öÏîFoÓ?ç¬{B…â\œ¤ F©j_ªo:ÌI%Qƒ`ùbví`¥,f“þq¼(Æò>°ú!q^„Í0’7 “‰8jlt|T «û[çúÆi ™=Ñú4”:9§ð?”Å®ê’ý/ÊÙ?¥ù=›†† 1º°i
+‘‰DC¬ÙÔîÚøz÷I4ÔÆœ9Ì9F¥¡6ÅØŒ6Iè™0XUÇÐÐn´Ñ‘ñåXœCb(\(œÈ4$m1ˆs< !Š:$3Ùƒ÷‹Õ°ÅM
+A¢!FB4a†Ã ze€»Åü›Û“JÕï=}‹™BÀ’àa¥²(æXAÚPN]ô“$ ¬¦åàcAuÆÊ¢†•4­ãÏØ;.¾‰{?Ä] *©wÿ…¿+)ƒk² Ú´Ñ„áíÊñ†æ”¯#B à AŽ–4 % k•ZXx¿x†»P¨yn¨³„Ð$ï
+1Íøú«ÒólcÀõî©Tê¿r¼ŒºžŒ–ãy`·þ§¾6ËÅÚãÈm¥lçë» dKÃýv[H 3ù«—ï$£Ûý´¨úg²Ï¬ÒPÒŠÑóxâK/õD1:S‚Xbuž«¢ÇúT£Âå<óŸmTÿë5úý$å±€ÆHxÜ=ËyŒ>'“qר!|In£yŸÑ³×”XyüK2Êñ0ÁOÞXýFcY†jTi´¿w)FÏã|áW}ŠŒZzÌŸàI€Q=qN7ªßÄHF9µý§3#'¸0êÑ~ýÕÐjZ¿ŒÚ˜MÀÿËÎ'ó›Û}º”õWŸò½|M¡~q߶=M†@”Š«æ®I󨀋Nû“€rg²wyÖÜêp Ù‹Žz>ùOFÔ³œ›¿<¦Žïfü* ·›viíÕR'GTJèé™JB/„±^Ç5o K°“éNÕ¶˜S~—â¾QþeMÞ{ݤÁñÔÓºÁJ¸tµ§ºÄñÄ<¥Î5bž°Í²t–†ñ9uû”<­Ü•nW_êÀ˜¤·€~ûè’™%.\?éƒÕ1ñÁÉoG¨jO†N>£Åç×ݾ„NºF0\âø §æÆçô˜–Oûj›ì”åˆü¦+m\N£qåø aÃÊU}QÇ•6¾Ü²o±$j.ªæÿ­Lg3óAÓÙóåÑé 6aÈ7+z¬Ðº‚@ m£†æ™0fpÔÐB)}½´ªæsª>Ó•º&ªE7“¤‰|퀽v@ c„jQR^„ÍyR¥’h„¹e‚Õ÷J^œÌÄ8iQ°´
++2ùæ¹ •ÇP]€ÃÏ9û\Ï$ªgð|¤y}£Ê}UvžG;c³ØNw×¾S±°öz^——_·Ñõè1B¨†Ô¡ÿƒä-0:ªª«#Ýf]4E²¾ÏºŸføRã" ×åÅ +Yö2Â\‚ó9•«>\´(K©Æ}.Å]—PƼN¹Å ¡(A>—‰à¥êz,D+Å›Î1õ³bAÉR³IÿsšAY¼-¾½˜±¼á¼øØ`ØV9.c/jlôI{)ŠŸ–1l¢™±«Â˜vÝÃ&-IZËU‡£S¿>l~Î1 Ÿ÷ö®d*a⎯'!
+Ÿi ­›PÈZ; 1¦øu¿¥(õû¯™O|k_‘f Çãj€
+áÓ– 
+ ÍU°îX`„&‡f>‹.ôÚžìe½ûUÒŒŠÜ• æ~ö‚ŒªÅ ¨µ÷/‚ÃÎAÞN¢®„wå!Ûò‰‹M!zbÓb-r8aw8+ѳƒq–Òɺ$]àHvô›|ån§ø{ì¸{(Øjœ&Ùó•¾?²ÖmÏ£
+ƒ ÄQÓÕ·Æ1£
+L¯Çš×Š±”XbÙ{9¥±áá*Øa?„xg2~°"õ"¬Kd%ÀžöÕvØ"[XQÁò‰oí«ã8k,ó¬P­ü–FáÂâÈÇxb±qN?%*"}¬[,
+N–~å¾®¤’ÝCÞ!D¾,Aü4Ìy /WEk»–:ÙJÄ´W§!ø£Á4tH8@$´”ÒÇi8Z‡óŽ†
+ 1:·˜ v< A¶ñkñj¼Ä]1<1 çèP2î;
+'n‹1q* 1iOöö„`ê`ko LS2úJù¢™x³X ¹~¨ŸhÌ™ìÓÞ¡1:Éí¥Æˆ Œ:Çf±á>ºÌ¡ôØ,6‰±¯02@ÍãìéroÈNðœâØ“j¼¢³̼ƒs áËû#ç&@ÃeHBA=G¢{ƒMKˆS¼$ž¶*6Îÿ¬WçZúN½/"Ô@ ¤IGª(H$€ò—š
+åP¹0mYeÀI(‘º°‚ aÎÃÅ‹µÆ}hŒ<w/m*AfKSÉ‚~€,Șç‚1®T¾ž•è®#&$Z¯•ÿÇ\ wIÎ_5v¦ ž­ãÂl=å¬4<G/úFF0w''´ãùì3MûÃ4}¥›ÂP^ÏJÃÎ¥ùÌZ
+̆r¡#ó©öŒ8×Jü\ƒ2M ×ôØcyÂuÎXà1¥jÍXÝí>g,xƒ±›4 ŸêØ\×»¦ýz%†›Ì×—G¦
+V‰·jÂíÈ|ÐùÙ+=û™½'®ûÓˆ–û4³ âÍ×—ASƒ$ÁÉ-**¸“l.UJ±¹Ïñ›ºŠò&•mè­¸µ‚Ò6 õê,kïEô¼R1ÆÿF å° CÀf³ßŒ²í¯Ð;;V}'jˆ®°Ýò0ü8~ÞÀÇ—öÉpšVöœÓû˜,? ƒáî\è^q6VtÊŒ¹§u{«ûw¬&çâů½}1!&ñHº÷BÜ–…óˆ½o#V?ào•ü-h's¯¯NÖ1 Xõõ¡dߥ„VODsãïÔ^i ÊÚ)âAgzçÌtsÓvÆ>ÙgÓïùF;XMOlIf}J2ÛÉC.lŸ×³oIa
+cwCë)ð"MëÌ1¹,_ ÙKe|Î}Ž,‹œÏ=[fÇs9Ì2ñ{v9÷ÎyÓÜCú¿ÃÁFŒ²lŒéØSßJûÍ->Õm&ô"cnŽ‡¯G}£Æ ¶|Ìk¾3OF}?ŸöY¶ÐÙš<d= á…HûŠÙÿo¿¡
+‰&ËzÒ´=„ˆkx—ó¡O¼\¶?MaŽeæ¨
+†P ˜5À®^c
+ߺڗÐ~ôΑàò›s¤Â°ì2ÎeiAz¾šQÿˆ×®®ÄÊ'Ô‚•óm4Ñ;µSVáwN±šyf'ÎU>V¨Ã¹›ˆ&^,&Š}}hbo½H6vH`5A:|FMÙ…ÞÙá]h¯ª,W—ÂRSWãªðˆÖLÏ?MìL\kªˆ/nðæi‰‹5p¨ÊC¡Œ#6€cè™6Þ2ø-zÖú^dÔ!µÌ°$ݵ oh¯3J|è#ÆëêD‰ähô¡xŠyÐ0 vè‘D.µ€DÏ;’SvžŠ>,á’sCmt°ÎR7ͪUƒ£ÌQï%å)áø4Õ÷NÛ¾›•ƒC1Ÿêkì‡Lôæå  ½*bÂ}m®©>~Ï™‚z×*(Ámº7ŸQ‹æ÷Z@è)‚¤ƒáL<éîd€AP½±B Ê+ü×3b²B×
+øca—@øÁ(Z5!z .dB
+±ÕþrÑÄjÿ—0À€B`û—0ö¶|PsÿŒ]»ýšü¶o Ü­Ù‹Õ€$m,ùWHHSùV´ÜÿéÅìO¤óí_«¥´ÚýSBÚò¨IòoS\7°'¬Ë±ÝvXÇÆ.»:,¨é.A>,”>;Ý%CX`š3eì9–}<ÛÂxØ 0³iÆçÊ!ýÚ¤èoÑfŒxÖ‰ÎsO¤:ŸM·s$ª ^<
+B1{eÃæ!‚C)[
+‡¶œûЭ=Rh%XÐ}‘é[´’ð
+gÿA6T”’o¿a;05Næ›9Þ^¹p'NÅñ‹eÍ@r Š+i¾ÚÇ‘/«×¨á Šª!Q,ˆc‹
+äseƒÇ
+¤ìCiæ!q1àõÙ„5Ù Cì¿g7'#C†ç¢é°Þj£Þ)l&^iöÌ(Vn(¡ôx¬€ Ì «bŒ¬Ç¬WQQ¯切ùÀ¨PŽú,¿…VH`7BBiœHYïr¸b…ÀÉ6´ L øÂGµºö=÷ùâujËÃGMÁ)ŠBÈVÒ4ðø5ƒØËà‚jp±2f›nì
+•]±ÒÀjþ¿OLˆ‰¿b"/üâÚçµ~h^–/›_aOÒÃåk‚ÐÝ,¶åƒ®ßéÿ9·óó›¾9ýJüâò¥V‹E‹ú|»Ðás”¾é•]ÉÓ,¦!¢„K¶ e¯D‡"ŧxeUõµÓ³âßÏØRÑl·»»=~~­zH‚™³$ž,†DX,wˆPõF۾Ѯ2é)% /g›ÓŒEã)$ü7í+ê‡Â¹Ä4êHÎrÇh5>½«¤=dé¡ ·sÜq™âªùÁMqP¾ï丿Å] þQ›î;ÓÓÞêÊ0vk¬LOëGèɧ
+û
+|¬nØ-da,Ü(ŽÆ?éCuþ/4ŠÁŒ·hi¤®c­x¬RÎõ»bm‘&L6õ{‚ÝE\
+¡ÎWõÄg«?“m×gnxiÍnÔ« l»œ {­Ç Z½FÁj(˜½F‹™xM„\i3ÉCZë…ŒU˜©]µ±Æ=µzÕãÌ¿WCÞZ´ib0[Ϙ֬’K0&¤‰Ù³ÄicOb_Ìè Â¥Dh…_‡ŠU½Èµ»ÌØUàû2ƒª%TMRhuY£Ö„÷»æŸËŒ]Ç~Ø¢áîý}“¾¸E#Œ}Û¤/nѸËפ/nÑÆÝû›&m÷€…†ñKî´]s’fvTÊ‚…Ü‘Þ¡!B…q¥ÑÁÓDW‡4÷ŠéŠ›¯{£PóØp!)ß[ü‚Üáããn§XA*ÛÁ
+`VÅ*j£0û^Ås¦;¡KÖHzìBƒ~J½ÃêÑïbg£ÇâµkTDïøRªi(ðèóÖ?Uœß©¨ªnªÈ Õ¯}ÐÅ·"”Ç ÂS•A+Ö~Çáw­µádú:ešãàÄŠý£É1œ{K‡ó4-bn`AHó·GP7å
+öÝU$ô†Œc"SÆ¥Ϥ’omÔÀ $À·Ÿ!H®»·®À`æy)P7Ø?œGÖûÚû™2ÊF0ÆÔ-¶‡
+e‡k'9ÈIÚˆ˜tÕ\ñ\ºwF¡С^óÐy³(qâÞ xHzx4+ Á ¥ c+€nw佂±;â²e‡`à„
+"xÿÜqÛ iŸ÷
+Öü)‡ìiòñøêðÄê!™Õ‰Ál=c ʬKðxç,Awîã+
+OÎÉ(/•㌸ølëórÄ@
+úZ‹Xsç™6;µÎâà€`UmóèB/Àc¶=C­”½ƒ{8Îåg)^WY
+×m‡T³CMÛFÇfÔŸ }£%eŸ
+-h¸yÙOæe’¥a¾¦.CÓ3ÿrا.UÚ
+Ó”ÇFO`(Σ¢ÌòˆŠ»lņ¼ÉñaÆŸÅ?
+H‰ÌWÛrܸýüó *ëA³
+¶úʳ˜l~ŸßŸUw8LÓtÛš·_«¦ÛÌÄŽ-e»öþ^ö›ï‹¾lʶì=Ó>Jþ¥þŠž6šdOm¯Zîªv½eÚŸKy¶íûò®n5)zOõûíƒwÝuÍ(vÙ5JwͦUÿ1Ö¸4Ú­5Ðӕ܀Õ ~¸U0úåÐù#KO˦©ïûróPß>·À3ýãJ¶ï¿!Ö·ÇÏ]So'>ÍZ.Ë~Wß6ÕÕ·í®z<&M[ã®n× ¢ :“¶ÝãF§mïê¡ÜTFæî¡0#¯FÁ ã<ô‰‰~è©vÖÿ¶/×5Â-J‘´Ûl ÂG4”Í)9ø
+Hiä´ £L?ð™
+#èmQŸB4 (úiDc@Âb‰±Xj,–‹Ñc#ÇMö¼Å  óNnT¨ÐR¥¥R µ\éÅŒjdÔMÕÊõØz“‚Ö7K§æÄ8iéWë,ë.í0ë2í´Ô8 nsŽ³®Óγõ!87ZG•ΙÚÖ¡Ö¥Ú©Ö­Ò8q\[¾@–‰.Ž0f¡%cfœ!´YÔœ Ã(Œ&¡
+Ó0 s €ŸÌçGX j†QÅ$’Q¨(²(
+8R{…Ã\" %âXÆI¬â4Îâ($…×86%¤Þk(#K)©ˆLLæ²
+U¤b%U¢”JU¦rU€þ,å ˜€‡B¨Ã&IªÒ4ÍÒ<-å8ëg" ²0‹Hg2K2•¥Y–åY“Ã@hT àº6—y’«<ͳ<Ï }ªt Ó4´aË„CdO 8„9A”Øñ8ÍÁŸàð
+ ¨Rš
+ǽ©
+SÓèWÚp—‘„ƒË26qIx‘mçyuÌ¡cÚœ§H—‡Hf©oHwùPçºZ—:22WrWùZjZzZÀ/Äå²È!v#’ã ›d äDä KÀ*tJÎãEàù[Jâ.héâVÇÝ5m¸¨ÁTÆÖnã|q
+C·§ã5¾;‰ö Z:stP Ê1Aaª„âö±öÎaÿIच„$ ‡žçËý>{ÉSæ6•=s›ãm*š.zó˱·©¡FL§ËÒH96Z̉6lº3ÍoM.¤K'#§BâhF8¢XâÃA,¢19rŠà°Å8à!º€xŽ£O»r„‚Ô‡Á!FadA <}`œ§û.øË ã]öÄQs÷á,²´Éq«¼d—Ñ*: c•vÙÿI<ð å¶Z3õ”)øÌíMègKu°ÕªÎAúàÛЃSˆ Êtp TdÄÄ\SvêRUÇKí£sŠNL:Vë³g#™ÎšÂ ¾Î&.µè4ƒtCLæIŒ²Æ+GÜúj8ŠW°è9¼ø8¢Î/Kž
+\ä7¾"£»&‡£Ã2W#L>Ã%"»bô…([‚ǵƒ¦*ü 7…*¡H„%@ öªXJUÚ?à G!ÏJ(¡Œ ” ˆFLQdÛy7EN@×gîöËnGn܈ÂOÀwÐä¦!þSoôÈU››½0™‰adwpüþÈ©*Rbw«{ºgâXž–%’"¥ªÃ¯vi¿2ðÁû¸TNˆRšqä:Íó>byO!#m¹™©‚g’wöüºhu‘+<ÏNkÙuéÀ'æÂ…myd‹&«îض#[¸/ôÜ^Àµzãñj½Öˆñ×ÑZ¦ú´6°éà0Õ&±Àm¸›Zó¸šZbpkê{{
+N¯lkø¨–e™—i—ŒÜÁ„"*ʲ@lZæyžæqÀÑì)¢Jñ 1 \Ñȵeš§i‹—¨÷2x‰!7Q·Ø o‘o‰·DÏ[!m‚-ûêÄnJ>šÛ§gÓ$·lÙ#'vÆW“Ú#ƒ·€Ú# u—-Óg»«œ³Möl‘1Û£ekdcœ³)Š!Æl†–·+ÚŽv‚yÇ÷î­ÁÜ^ æöµÁü7œ=üZóéŒû#˜óÕ`¾=0_ü7óO¿ÿó›l#Íß¿|~~úöí ½wO°y—9˜õŸ.̲{‘Û6å_ÙpB:Øι&ÚCŠ©øãŦ5ÇÍÁkã<¡ŠÆFÛÚ&¬é.|¹ÇîøßA¯kîù
+ÜJ/k‹½»óÎ]útɆÐiä€5¼ÎVG”º[ÀuøBÚ…íÅÜÓ‰_wrÚ'j¥õèÉ°®h¶Á:£+b»§S~J‹’Z—öÁVÍõîëgÜÚEž`;m¹9<OÛ¼ðäêmýžniþ¶PÒi7˜pCÛ5œd7¡ý$‹ÃbÝ <ï¹Xfåíd‹&ƒ!\ŽK4÷èž®uáƒÁbÅHI爲+Ï'û•Ïýò
+pN*V/ö1öMJÔ·Žê{ûÊ3oŸçëV÷æéöC¤£ñ"ºl^ç'øìóûêÇ€oÖ¤¦·ã©Ôù%ÖpUýEu
+,{ª´£x¢p$¿I\l“­d*éUmZ4gñÒÿ”c`õY]VbEV`y–cY–aÑ8óøÂL>3—O<²=:1zbN'R'V'Z'^'b'fµƒ3—BîOjÈüN/βsÛLòÂòBó…ç…è3Ó«
+ë7°¯Ðd‰íÏél¯vá¾BûŠë Õ¦¢žšË+FyùŠ'†ÇæÌüNôÞ1¹·kfö‘y=2«lé
+5»êÇ€ÿ³¶·K½ÜÑz‡T>™oÒô‚`=ÊŽ».¨ßQWKñO:S<Q8’?’«¥l}˜JzU» y^4gmÖÎ>«øgÈ곺¬”³Ëg¹,™Z‡iEð”…}…$Û9;[²f‡ÕlÖ×!Áåà>žÈÑrþИr´0¥šÙšx7¢=‚üê E(@\ßQ\Ñ» ùPw¶°åVÇü:©«·§»Ä|¢–ñŠ†‹êwPKw¤t¢x¢p$_ɉÿl–¶%¬^Õ­ï¢` ˆþôY+eEV`y!›£xe©$½Â
+7veÍèYðÒg’,ä˜Y1bBÁAP”Ê(ô'Ü'Ä'°W ¯à]»ut-‘™InP+ÆEF88“ám^Á­+ж›ðZÍjA8M1¨ ¦ +¢9µÉ|&t¶±Y!³ÂeÞ;¢2|[f2(‹Éh›2Xºe›Ø|³˜O ‰%x!y Æ7ao –¶Q˜±ï«¾JG‡2ï|üWÔ·HÝÖ,«}Yjï¢^nÖ|*u~IOW4^”€Ë Êɪ~Wݙҙ˜zT†Ÿ 6ùxÅ}õkVº>ÚMíRi^5­W «€Vjå«n¥¬BZ…¶
+qê*äUèËl³` Ó͇OÃWõ NÚ¦=ÄØ„Æ· nÓŸÔ‡Oç7†çÖÁËÅØBlíqӛǽL:7Álra§ëi‹Ò·l:`¯è‡&­ÖGwn£g{HÑècRÛ5h{ÐÖÇèå4 _ŠÍºêÛ;`ôaRú¿øOóó㟿><~yzþ&†§Ï_žË¥?5øùùùá·§Çæs¾Ô Nþ¨ö/ch¼´G|š*ïü²÷Ëî_ (^Q(’=kádäí®Ë•EX«‰ÍO_ð Š ·¹uÐí†çq®Ú‚ë <oY™¬UV.oa”u´˜›Álf°†„ÕôXÕˆÕÍfÉóÃØŸ¯È38³&ÌóÖGI€¯îtÛYúÀÆú.ñ·¦Õ‡S}–·w hå¨q‹ŽÒ8XƒôÆÆ°ŽD¶'ÜÑIžrÔî\Á›ÃÜ§0÷%ÌaIO¶ð,ùhòɆò¹Ø¸4BÒÂu=|™œ:ÁÒ{Ø?í v•…£“#Cq@Sp”ð
+ÛŠ ä$† ›ƒ6Qºc짪C¹…ƒ_öÎAÏSð<–—#°bVbuY=kÈ•YSÖ¼*=Unœ©d+a)*¸,¤ã#ž(©+RÛ)Ô_ÐpUc-uüßJÓ«4«0¿¯îpyYê–F÷è;÷8ˆa÷ˆpŽ\ŽA~áÙ)zöˆ…ÝŒL¡g3XØÈ
+¡êeY9„ª©X¤Z)5l)QÖúÕJQâW$JF.A–Ì%v%“”Ùd¬èDj‰B()× ƒÊõAÍäV\‰×ûÌÚ Å„X+·¹8®G`NŠý‰¦@ 9ÕÈ 7¯0C–E@SƱ}°‰lc‚7J ™F!ö¶Yp‡=N¤3øˆl —½OT®7⪔µ}¥ BÆJ•c¨ Q›–S±ÃKïŠàË(ù9’}Qî²ÔÙ%ÿ6©ÝË+¸—¥ÞÒù;¢›Ÿ†¯J«öÒÉ/ª= õÖM{@îµ­ÇIêœn N‚ÿûå²Û¶ÎEá'à;h â,2u):.::ƒ @‚ ƒzÐöýñ¯½IÝl9qàà¯ùŽ"‘”xÙ‹{!.LE¥«\eëJÖÜô»¸¹{OÓô_UWI]Y¹«9c‡OÆúèœÜI”J›“Ö¬Úm×X·÷èÕ*W©z§UôíkLí½Ïƒ¨×æÛ¨‰„å¦ùfïúýÃ×_÷Ïû?ùFz|zÞ·¾TŸ~ì÷÷?ª§r«’Ê}۷ѵ®Ò–êV°ÄJH-°Ó39IÉ)ýhŒÆÀµ+ü„ó‘e1+ôêRସ|–<îÒ9ˆóªÏ;ä.ó¶’ãdqDÌ—gòJ¯U8¿ð€q"'œž‡¶Ãî48Ðwò8ì{û-R€†OÚ
+"<È^v²•‰*¡7¬Ø5‹lËJXüHàd‘°ËyÄâ¯Îå´­zñâãÓŽì¤K[»³CÒIšM bX Èð¸vÉþ£'Ô„œ˜S†q.ÆÒÚBê“ÀOSÈÒV¦g]è9Ä{Ë *{Í(T2šÂÜw'º®k™@IjE"µè »C
+HiÉŒm¡
+­nÚ­ä$gÀèMmJ©bH*æ’MФ“J!M+ÒãkÚ&‰rÎ>_,ŸtÔ,ñ«xÊíYŸ ˱dîYnYÈ+kª$§,¢$ Y8]–KÖɾè#)£eM$=$-$„²
+ÚÌ/8¿M~ÇôÆïÿð¦ŠÛ›*Ò¦²ySAOò*_Ü
+d<åÚáßÒ¡º$â‚qòr…P¼ç(¯‡Óˆ£[ýYt§å¢}t’柸IØÀá¡ÓmY¡8ß-OÁáÂåÚá¢ôïC¼ø¸{-!òŸ¤“4›Ä!
+úYð¸vÉþ£'Ô„œ˜C}œ‹±t…¶ú$ðÓ"
+žqŒe ÐŒb$ÈjAS˜ûîD×u-“@"À,0@$ E¡Iî¹)•š6¶Q´¡õÀÛ [$KÍ€1ЛZNSÇD5§ª9QUIBxhEz|MÛ$Ñ4M¡ñklcݨFB†Œ¿Ã+Ç¢H©¢‰:ª(!Hæ¥ )4!Âøà‚AN§DP¦ãkñêèƒ÷ÞyãµWЧغäœwÖ§t5&´C6ÝØ`½µÖXe%Ö¶Ã
+Æ°Ór^£·5Ê“?5S¸Uß©]TRo½äÕ6‡ïˆFn×—;¤~ó¯µ9|‡«ƒÙlPovÿBõn§z{?Õ´¡tÞPÈSŽ#ŸýW?¦é”só&Ù¬[6Ìü,·ÇæDÃA»¥ª¬—Ûesjs~ƒqA‚2Õ¸tR{]j)½ó*ª½ìúõÚGöÔG¼ñ›?ºÐvs--³ÍËŒÏó~|q+ºþ²üõ~¬°'ÅÕ&½@sŒ(Öðp€_áVØF°«åˆ*ȉ:Ó1çÌŒiGÿ)Ø‚f"ßÎ~ÔOJ®4ûRr¦£7ØŸŽµ)M6•ŒêhUɬZ6«dWÙ°.,+›V0»Öì[á\[×ѼÎöui`-lÇÃXÚX #«ÈÅ
+?LF¶a+ë¼]YÙãnÐëÚÌXŸag쬆­ÉÎ
+ò³lg쬆;t©jt„¢YZ…L¸gC•WvÃÐ*HèdhÅÂÑòT^¿§Ã8"æËC:ˆüçUü+¸1_N¡rˆ9B fGØL=Ã17ÒOŒ’5©Á4‘\D Íž_ÂÔ•Påpe4£JÜu‰^Š_ŠàNp·e^f
+g
+h?5…56…6÷ÿØ/ŸIm.Š?Á}‡ÚŒ”lZ6þK4lL”u”U£‘º5šEz1Éû+Ç× •îojñ%*ŽÔMQ`
+|}Îï–åxbçœ9–9Õ•^Öz^í
+Ê+kK~^ôó²Ï ßa鯋_B«ÂLÌ.`«tÕ {A¨nàØ4ü@²#$t±¿˜B§%±/ŒÕ¼²Õd7Uw:¿øƒ”“ÌðÔÅ#””bª.Ñ 'Lë{JüÞí1àcÀÇ€ÿ©>ñð1àcÀ>!/>…oô;vÄE<9w±#.hRò¿Ò‡O×_„?ëÙÖ”ƒ®²N¨íû/·Wuþ)÷Qkž”×öàÒýóõøJù'`Ñ8EH¹¹øàk\)ž¼“Çð$ÀKÓa'¿%×¼+-®÷î²<ýû/ÄÝÂH†_̧ôúüó·ÏÏ__^ÿ*ÂË—¯¯ó¡Ÿ.?üöúúù—çË—zè"Ýtx”,<c¢>Ò”¦qŠS
+E4ï‹ Å6k¼‡èô«ø¿‰Þ|jx›è­'î4œ‰Î¿z‡úUÔ~¸‡Ê€þL¥Žž³e½À5²L#M°¬YªQ»ÉFb,nUšEp½U±Qh44êùF®ˆøŸmdéEªQû“ÛMdQù'¦F©ÑØ(6
+†E½è)ÿaùF®‘mdéFj‰Í{n´£º„ÌVHî,SeYŽå«zÖÀ
+¬yY‰O¢8-O_æ°ø‚bé*ò,WåY=k`…,Ÿr“²%V5âúÊKåSUšeX¶Êeˆ'«g UUž£ÜcÞ8{ê<—bíªKÐJ°Š,˱<«¯XÅ•‹/ÁQ˜—'^RÂÙ%4˜Â‚-<c
+3¬°P誉êÖýNþJn'{%ΪñP¤wRWÚ#¨Ü‹F±×L§+WZ6ªÿÕ†ú+ù+Át©Æm‘½’¹’ÞIÍ*¾•î«÷ x0G{Ñ[NzþŸä)™&nas×6 i<Ç"y4¨ÃÚ €„dŠH¨Iå‘XÉ¥ñB;¬rNHH¶ˆˆËkÍ/ Ã+"×¼à"ÎE¸î<’áÒè`Ø‘­; k=2×"{5­ƒÁ$,䈔Ö©m‘ÞùÖÁŒ&aaG¤ü€´÷H}‹ô×H¸¦%À: Ë<à‚'pƒ?h¤\@¢„uÁxÃ;,øC#ç:ø 
+0 #20$cêaPF5°&À€„)™¡98[‡ «ay˜@¬ÐÀ¬±‡EXåËœÀª`¥–ê`­=,6ÀjGXî@ð`E0cSv0ç&`Ö#L{'H˜¸‚™˜:ˆ?Àè# -HD€BD‚C6ôȈà#!0’Ÿ
+qh‹ñØ#&ârDlNà ‰UˆSƒXuÈ×~ÖEÚ2Ú¿Z°ÚòR¡¡|ih0-š´Ì±Å ò,ÇòU=¡Xr¹ \2Ë&ré%;ZEÊr‡²©*Í2Y„³\gŽk­¨gýM}µëHŽ[Ñ/¸ÿÐÉvÒ(> '¤HŽ G Ì`±;ØõÿÇ—”DQRMÕL¶Ð]]­÷á=ÏŒ™+ƒUµ¾¡ò
+þ—O¸6³Ä½*$Ç}Fsù˜¸+ í#^H>¹d“I:©$ñBLv€V¦± Ïš% Å‘×üÀ‹8/ÒÀëÎòBR¼4<{€6'$–ÉÅ#ÁX$D#áƒÎ>$=agd d‘…42‘„]
+Ο
+¨É
+Ç­4÷ÒÀÝ4·ÓÈ 5#wI^ÿ¹J
+„1‰P¦Ñê,RšGZ‹Èm ÆiÌ×j35’^ÎzžóžãÌg9÷™zýr/e+÷ˆûå;âÄ\*bž…
+_áê]^¤ÌÛŒ¹GÌöÎùÙòÓy~€#fùYñ´ü¼?óؼãõýno·>±#ÜJ~ x!å…ûá€~‹Òõ%ÑúacŠëS.L’»‘á”{ÏŒÀ‘ÄÉ/Ùœ7>?‘â'±å ^l<j¡À(‰¼â-ÞÄTÆ „ ìKÝÙw”H½É+ñ<
+e§!¬Éͦˆèˆ’áT£ âÝ¡µ6Wyá r‡·¥ø¶&§ËÓ0 I5Œï¨G¦¹Ê •«ˆÁª, ÆR–»Ò@`¯Ü㩽LG†K!²’ˆUI ^P|öJ Õì±þëaÍÙª#l|_æ /ƒ¡89Ä
+‡È‘#ÈŒx’Æ%;,5˳] Í=,Òv™¶ u“ªX×kžºuÁI.0ÿ‘Ø„Uè¦h·h©m5
+”š%¡]Ù2F7d ¦Eh[ J—7ÝËž'9Y
+è!)bG"d„Pf¿òœK¬É›fK“]DŽmfȦ½ÍáfÎÁ–貕±Ij¿2§à)Ç7vRÌZØ[szÂËa¿Å³ecà å«äãò–ƒ×ÄÈfã¦þ Îh‰o—“[`Ÿç
+0
+H‰ì—ËŠÜÈE¿ þAC{’ÄûÑâ!5=nzÔƒÂP…ñ kàîÿçî8GRJUÊt¦m¸cmpÉJ…¤xœµwHyÇ!î¹ùçÿ(þ#Ôðî±|BÙC™«Ò—%ÔõC^–œŽ$ÖÓñŠÚUÕ­Äþ¿²\U¾¢ÄËÉ+Å+
+×$¤¿"wU“ûÐW…’ZiqÉã™ß“ÑŠÑå„áV˜-ƒ™vÊ« ¢J*«¢ªjjT“–˜J­¶Úi¯ƒÐQ'uÑU7=êÉH¬mŒ±Æo‚‰&™lŠ©¦™ÑLVbik¬µÎzl´Éf[lµÍŽvøVå´3Î:ç¼ .ºä²+®ºæF7¡§Êko¼õÎ{|ôÉg_|õÍ~Â0© ƒ 6¸àC!†r(¡†Æ0a”UÔÑD]ô1ÄS̱Ä[ã„RI'“lrɧbJ)§’jjiL“À «¬³É6»ìsÈ1§œsÉ5·<æ «C]L±Å_B‰%•\J©¥•±LX[ªêjª­®úD5Õ\K­µÕ±NX™ªéfšm®ùZl©åVZm­mºV£ÍhGG³:âêxù˜.é°® ÔEé‹2—$&{Qî¢üE1… Š•.*OYôT.ª^Tëüç•®ÌÅöXjõ»?ø?~àÎ^_—Õx³Ú‘ÄÁÅz³Ê[‰£‹P¾QéµÄÛK³â
+{‰×6ò7Êm%öÿ}¥M
+¢ò„øˆ¦o“Ÿjð™
+·)ð˜Ü'†
+eg¢â˜¹¤ŠÖ´Ô Õ¹£ÏK¾‡ûDD(´ò+¢cš+@JÐLXK¥àˆ4a.ˆ^™XT©0jšËC½ ‰%¨y**Aõ’‰•ª¦'ªÞ%h⦥rDÓ@…Ä¥Ô‹©—S%
+ èÒ}Y„Õ ®û"a™•Û}É°äJpHì¢Ê>eìÂÞÛ÷¦lWØ°ú àÿêW‚Á2äI›àt?éõû ß<tùÁÉÜïíþïïnWþéïRÁ©€;@ûïýf… ˜o6î·0CH§œÙ¼íÞ–ü¾Œòç/Â7¬/ðμŠÛîÝÛ”Þˆ™”©ß[”Áõ»ƒváhT¬=%k6¯üŠ¶ôNŒ Š»P6ÚÙ>%Χt8éûVçw~E[¼³4ñ.ÿîÇ—§ß>xúôüò/_(Ï?½,—~~ùóååÃßÏOÃÇùÒ`Þ‹£‹º4”'^¼DûÖSÿo–ðöþnTdS_¼³?O=¼ïü „ á+i^nûñHñ„üã7KæŽF¼<—¾cÊ6ðú”´2o¹¡Ñþ-L“ñ¸:Éá¨/_nôº/Ñ{Ø@öâÊí߶ÔôáZÓ}±9^l};ªá)ž•z+‚ð„X܃mµ‰m³=Ìö(Ûƒl±b»³s€äãˆø^—èº×mlýBhÝgVñ&´ncë9¸ž£ë^9¾.–#,B¬@ìJ_d9Ê"ÌRœå@«É6-ÅÚl{´íá¶ÇÛp{Äí!·Ç\]À‡´KyWÎæ¤)÷ʾ–òoOÀžRp $) 'JÄ|ò­èÿ c6ŠÉ¬‰UäªÙ ËêÂŬ²«(ÝþSüNa§¸Sz£¼•˜O.õŠÚ‘ÄÁÅñ[$úþá{J|ßÇý`¤˜J,1`‰Gñ%¬Ñ…&4AzAJË+O$xb@¿¥‚)íf¦Ú"$Ú0U$qÅÒ€¹’wdQ¶¼¥Ë(6€9#&lÒüœäç¿„xŽðç
+.efË™.g¾æ eÄ4{Ô˜•2Ç´9fŽ‡èù„v8ÚëN·aêð7ßùʽ¥ÝwÒõÀ3K,‘„v8JE<å¤Ê"œDíl˜Èsü)zð†&Šy?Ó)ÑÑùÐéÀI£c‘À8X¶/ãŒ
+FûLÁ© ¶*ÉZ¡^_Ѓ ß½ÖÏ¥ø p¥«†¤IôH~<¿Š^Ê€OY_æ”û/ûe³ë8nDá'à;xÓ@²¹ )ñ/h JruUƒº1˜Ez1Éû#§ªHŠ²e_ûºgÕ£ðõ•EŠ”ªNÒãJ» ’e8Í‹pÇZ¾ò Œ%,, ¾_
+'W&zŸº+ÍÌVèæ}äj™WHp¹Ò  Üve—pï\÷Rv¹£ìr»ì‚ŠÐá®wξ¸ô¦Ü²9­ªm]ªô©¥SåAg9ÖBõLs!¦BâAÅìÎÜÖžß÷º}z[Xáގݶ\·ÙpeÙ,ÊbÈ¥’Õ•¦:ÝÈÐA•-Óæ9‘ùqˆ–܇'„¡%IžÈY,àüðC$@‡-59a²4˜'„™_àŸ3Œ{B݆€é!%M€Æø»™ñÀ&<¸ˆ¥{<ÈÔâÁjÜcáÒÞâîQn†w;6ƒ¼ÙæÍJ§Ž«S·¬±½³ò%ôСK¢>ÉŠdz:&ê™<÷MÁc[èžwPÔCQ5—»•°å Eت·Ã.n½Ä-ŽÈ˜8
+'~ù‚-ž÷ѼåÇ…È„‚dŽ+Ћ•~û„a´PîSyh‡x%è¢îuéÇÒAÆÖCÒ¾¥‹´­ ­“¼H.õp'Ùõ‘û*Qrœ‡¢a)cb#¢1‰¼ƒw)Ü« ËŠ‹Ú„"Eã¬÷£eAƒ5£»S(ž$w±ˆ<ZËiy´:ë°<²®&EîTŒ•{¼™‘*N@‘NR|ð¶‡ã’òØå/U–CŸì÷•¥&®aô¢)58`‘J~rÓwc'3iä„ ?ÝtÒ˜N32«zU¼ó¤1É€é¦ ïLSÖ²hY ¯€îoG´£óü¦ —îÐߌèçÇ–Xs.&nŠœ1þÞ¸ëÀ~~¬Üv2ÈZ“ÓÇ ÀÍø~~lÙ§Žœ†íÞq}˜?3êµhׇá®)Þ]wÜÒÂ{õ¤g½cð&Qª¢™ÌlV ›îáÁÉ/¨ñ†·‡ë&Ͻ”f…¼v“BKA.ûŒFÃÂÎÃ)»è&—IìYêEèIæEäEâEૼgñN$îªX§½´¿+ì%¿ì–aSœðó4©)O3jýʆDg“-:4Ù¡æR±Œ9e\”sžÙ¬0-x6³™Ñ £ÁgGµ™œÕÕŒ[ÎÓŒ«g:È\¬ìrjêW;W \µllÒ
+Y­Ø^¦š¢z3P‹v±s¦™:Û¬ÝP ž’â_œ^ÅïÄ Rjñš|“ù6ª|Yžb½º÷ã]nêÖ=~Ä º–°ñK"æÐÁ¤&bÆÖÁ2“ŒÍEÆ,ËX„lf!3$dŠ•,BÈ22}í¤ÌCÊÄlnbf›k­žµw¬Å¯ªbXçǺA–µkaë¤MuêVõ­S88‘¸•%NDn“¹^èXêTÎÚ­œ[¢xUóªêuºR‘¾MüŠü)–šª½²»–¶od÷ ljÊÈê¨J«V›·zl-ޖĺa¶ƒTuBºávø ÂqCuÿ¤LwÉ{Ôå‰Æü1ÔExõý¦úq',f€Õ„lÔbæu€ A j”Â3'ÒÊå™.6šÆ^m„Ô986ˆ\[„è%ÝCÎSúræQ
+P5׬„ÆÒùƒ±¡ŠöÎCI#I4’Ì1³Z.ªäÍPBŽ8Æ3‰LbX¬à‰Y‘¤ E $›¿ÐÞÛh Ca;\ÁŠÿ„Fl¤ÆÔÈsDz¡ð±W‡ó§/0WØU¾ ‡Œ7¹y¨ò×?Dxuu*¾†:<>ŽzeðŸþA6 s,^"_S‘.*Çç"[Ë–H–VU«¢T¤RŠeªJ””È“ˆ“Ó¦I¢G½ù¦@¬>J„§¨NÑ›¦3Ua6e©r²‰È&,Šu¢ ÃN¶<ïsxŸŠûd€‰SøÈ…¹PRó$µÕÒ S°¡¢üØÑ«A„Ž¸#]0)?íÈWÌ,7€£R—«p~ Q'Í+¨`¿/¯O8ìQ—'^åGœð'eNŸ~ο+£ô­/ÿÆ5ú- F'üÆ”"ǵ;ÑWãOþäôÉhòOõéçg†äÿÒ€?™áäÌ›Fï×MtùK½þÍ;üàÍäÕœ†ñÍ7îÆ_±0+”öd±P›ÂÁøË+Úødz?h;+ó¢>Mÿp?¯ß¾üý÷_¾üöõÛÿäDþúëoßê©¿þò¯oß~ùÏ×/§_Ë),û¯êð,&Nù ½T ‹&é~¯u‹®[S7Û¸r4a|upŠj1Ê *Dš‹)*VT·¨~Q%£ŠF•jœTªTtˆÏ×MµQ+*“Åž¯1îs!¦FjÄŽ’oª|ñÜðÇŒªÿ§œ¢'Á{μÛÈût¼?Ú—æÍÈ&2/XèËÌì™
+M6]\GfBmù‘À5—ž·<1j‰èàöŒ.j¼ÀÊ,…™éQì|2P%uÄ (XêàT'nŸkÌ<¹wSF]Úå!¿vdþÒ‘]²½«fL¬X5bbòª¬°f½Øxñ=Ù\Šµcɶ²xJWüd*^’œ¤¸HËRÜc,«¤®Š—'KË¢¢,‡Ý`{È¥LÀéÆ_¬v£ ø¢cGs"‹ÄCDrß’…»öTR¬ó6Ò,žK
+]l‡7ì.Ò þªwywIOîàÅBŽê@ 20ve`Xíæ
+]‘îeë[ö]KíY¶~…CJ™¶cØ1
+y8|/x1,DŽˆÄG³ä,,2+IÀúö1`7¡tÆîì2c· »ؽ#—½ÑI!ªŸ®GixêîÚnë3(ÏeÛõg%RíaÄÈ"“
+“ saaÖ^*+*É3éI5LÔ`&‚&Á èXšÂ€B‚¥>Ϋvö8,†ËÀ¸¥5uR}.WaÒl}ÐõÁ×Q_Ìt©91D²w0•MÞ@ hú¸-S|Ã’}Ÿµ*ªcôlge#ô›õaà-´>µ¿ËÃê]’/Ë!’Xé›ï˜·BØÝåáA¸ Ë;’`áåyÍ—ãLùâ„îÉQ¯é=<KŠgEñ>«ù;™p¹‡ºÿóó¼6ázâÎÐÔÒ\½¦zMöšî’ð5åKÒ·´—ÄGê+öÕiT¯Án£ùê8ªç×Q};£â‹0£*î£úê@rsCÕ Y6É£sÈjï‚‹ ¹Ée0C"WpöZyì–ìÙˆ+éHÿ&Ÿý ¿‚34ˆvnaâȹà •Âr˜Á¢ÂD˜ÏõXw,Ì;òŽ©Gá#íˆ;Â~‡ÛÁm‘Ô#aØaw˜zO¿5…ý±\°¼ûkmÿ˜‚ôœû=0¿ÍúJЩsq¡E›Ä"­„™™„˜ØÒ‚KBK+ªU …tÜ áó.zT­SœbŽ3*ü
+ë ‘Ř‚7¤˜RšRN3ªÿ
+K¡Ú+Û×LH¸ö
+u×»Œ–‘ug<¶íxÛ…ŠX‘*rGé˜ÿ™7øàs­)pÍàõÓ•‰ŸˆÏ&Hš>‘*–œ®ÈA‚Qüž+¦Š¢q„åJ+ÄkwAm¾’Óà焧–yšgÄdf ¬9ö®Æ;Öø–Æ Ëd0BÅVu],ÊX´qSÇ¢sWÉ ¦› 6_Yƒ{<Ãâ‘àÈN‘kN&N‹
+_á:ìæ<Ôæëj(áÀíØã¹z=Õt•Dt–3>‡¯gqµ¤4d”äW9#2s”°ÔÌ{í9ÅŽÌVÂW–“ÑsjÆÊ[™Ó¶Fv»ÈxOoî|”[Œ%¶F÷Àq9¢Æš]1rˆ`€é®<“,+5Ã8»8³hÔò["u`pS°:ZâÀ¢³ÄV± ¡ä…®0{®IôAë„@ÑŸQb'f"ÞdŒÏ–SkrߺÊ+ÓÚ…N¾–Ÿù
+%¢?A8Áõ+]Co:ꤕ1ݹA-oÀîaPgŒûú¸å¿lx~Ã6wX”bWLà‰¢,#xa#À–I ¡øg*z¼å2O\Ü; W0êVqÁR‘R]R-RíQ­É¨ ƒ‚Œ 2$Ôa5 Ä:uòt 4lǃՀ@#O“%y.ù8%Ö~e¢kfm°çéì8ƒ7YLXÖ!¾öÔȪ%sg-,hfÅ vÇJçÐÛ¬ÞÈéEL/2z-Ÿ§E1«IܦÉc×~Mÿu È»ÁŸˆA†Z½õ´B¾·:œO¡ðß9•~óu¸j|úv¨»nx(hCó˜P»ÝÿfÃsœ±‡²0Ð
+>¬-éÌúí}}Jr}ºh1ãNè‡O¦ß†ç‡ËW¿yÿâÕÅëË+1̯ß\\6ÓçÓ?_^¾xûúÕ𦚆žª³Vlì†ù^Ò
+,KŠF@xŠÉ/0w‚ rù
+Ç°¦Cýç‡ö'Øm0ŸÅ¤¶¬u”›Áï+RG^¡œ`:Á¼‹µ‘?·ÌF÷ƒÂxñ¡±£f†­pŒö¾BÅ6@g‚£n‰ËVÞ+êšéã>lŠ†ß4ëZ÷„¦ vAkh󎛾Ég<°$ØAP“+èütE®¨è HÅòBsp
+!ÒŽk§†·
+²yà ¼v»ÙV~/ëÄñ¾÷Ïâ9Þš‘‚àWf¬=^òà‘7VNâýèµFÀÓhQ†ƒ‰nÄfÈpI§ÈGéFG‘Ãô¥y, ÒàN…P=öi69HÑCcõCÂûÐãoÛ)³tJÈþ°¸j!‡qJ§u–SzøN§L©ð)?eŒv£+ÙŸ&M.˜HàLKx9¢—瓬‰qÔ±¸Ó´)fŒhKÞàäÆ…ôøÏq5щÞÖ¼‹Ê>‰¬A)XÎéÚ‚·ÀôÚmNG_t¢‡¹‚YN˜_ÐoØh 8à?£‰8Ö{3B%¥Åò’HƒY߇v:´CqcÉÁó•Ú ;¬+e$A38ƒ.4ôï Ål¤„š-G¬CTx#3˜b`ø ;€î—°k3²GÞ•!yø¬8nbîöi¤^ÚïŠà!íQ•Q
+¿”ì ä»CFÊ2
+žó\…Ó5¢[D ¸áÊTi0V!CAÕeH¾1Óˆ`Å
+õZ%d,Rùí=Ÿê³ÀÅœ©w›Å€¨‘Ú•e݈hQ¢_{ᶿñÄ;}'ƒ/ œ&5E¸óâ·X–¦÷öÄH'B–€•s‰ô3ô~íÕÈôf`{yË](r‡—Õvi_ë“dQ3&ÄÄ"Ãú.§%èϪYÖ<êw5û>›sѲ¿?ZµÕ zd Þ't25xÝG“Hzù8r…à¦Ò ¬,P°PΖĵBV´Ã(VʲX£‹X(Û ÒXµX8h+Z»õ}º/@,ÂæÇÅP•uÕ˜ñ íÚ6ÊH“dÝò¼fhEÅn-wUÏÉÀ,уAÚóñ$°DŒMCÒ¹\†k¡lïë%V)F랎Ž Ö-ý…f‘Þá žbž†¸amò‡Xi-DÈL8]‡?÷¬eH³ý—÷ò[±ó¶¢øœw87…äÂçÿÒecrÑ⦡êRJ¶›¶àiI¿}KÒÖÑ9NÛ!Ì2ZGŸ´µµµÖÚ» YßMbk"²¬ç®ôfOM觽Òù‰í2oŸ™ÊÛÚO"òV'Wo…r%ñV)Ká­T>…ÀK.ƒèmÓwWJ±\佈xó&Û² ݪìê¹!·ƒ<Õc“vŸ¨|6ß•ù­½}šÊ¾Æ›²fÊ®uswa§[ ~aÄÒí‡ ¶)]©zA>!ÿ…IºÕ#˜¦W•Žt“tņyý
+e‚Îxˆî¦ç`- ¨&ç—9–š#ÐD½’s*;7ÎjjNÎæe‰¹w-_Ø”òÛ«} ’süXk¸ò…uõ<EèÕïn*^òHøšƒíN5W°Ñ&ª ›Ê»V˜Ò¼vÙô{Ebs,N[ãæ,O!Þ¦”¹Ö]»6¥;_*õ¢ÝÔÖÓ]Kw‘9-á¢Ü
+áŽÂGV åfë¤ÎñL^§ÆöÓ£ÝØO'[H>šG2mÜ·PÓxä…)§n¤UéAÞÜ`ÃN ²Ä5 A ¨©ŸFV ãI‹þooï¡ êSúu¡ `TÄ/Qï¯õ}Jï+hyq¶6mè8öš\ÓZÃÆs›Y&K¼7þ¿Ö€<5¶ÏžcÆbsf¨¶Äõaž‚ö=ÌÖpº ÚÈáK'Æi“£ÐE(n
+€yî=Ü.ÂDB¦Œ=E¿D@ã´k
+D†…ôÅáRnö±Õa†X=ñf¯ÂâáÆžº
+Œ 5‡ ¬À'ŠpÉc+Ä.ÉŽ‡S$_Am¡É¡„š‚÷p F-ôDF˜9È2ð‡Ï(ªƒûÜè×,OŠê°½TfÌôú“èö£ûê¨{_ã4<ôû}¯½›O-tÈÝøÁ€êû«k…+ ìEd¯åzÔ°²{ЈDö¤ÄædYyª’ÊJ¯,¦np–f˜¬…Øk'g
+ÙeEë(ft­„Ú\Ø  ?—ñYR-7i~U’ã8†cPÂ|ûòüJ6έ[ÄéÄÇ![A©.
+ïýšA÷ }”éw®5ÌÔÀ–0š·]v-°@¶9=PS;Ì.v`SKˆ ÁmÒìb¾9}yúÕ¯¾ýòþõ×ß½{÷æ‡{“Æß~õÏû¯¹–wÜ̳gþâÍ÷¿ß8}õ/ýRÇ/_üðã¿ÿfë|öÍýýwoß¼æa}~âòøïåO§ùwt"Ô¿—ü–?þôÓ9žwþó_ŽókÍýÃéY ‰ƒ[xg§ˆò5û¿¸Q¯C‡×
+?‡­ÏïÙð÷§“ãnsÈ\ sÔξ©¾“È΋¥pVý]®y®0œ`y9`˯ô}VŸýt¸O¤ Ì­í?0Ñ!¹ŠÐm¢óñvâ{Mä~Û7GP´¯¢Ü³3Oôüt=×Ëñ÷¶EÉZKá&€™ÊW7‘"`"áëS͹nŽ™»¥jÎ}ºÎêŠaÏÿŠöö¢žŸþzúæÔΟ}~~ùGþêÕI9_Õæÿ+ÙŽžé„®Š÷Á¥[^¢ª=¢r*¤yç#—Ö‘Wˆ#¾"·/ì«‘ñ•Ué÷'7öÐ")ÕÌ' Ïîj»‘'è·h%H6$ª!
+^ZÀ±A€0wóE3›»s9‹NCàÝ9lQb–æú4‰¹ÐZ†n~/Š@bì] xéì§ËP÷+Ë…‡sËLÝj«|y.@¹‘Ÿq× qsµ4Aê'u°JGâت„2# ˆƒè⤡Ô\ʽȭT‡”U²UêÈ¥æJÀGSú°Þ㸚{”C9¨X€ÔÃÒÌ,Fî[E¥s,€0Ô¾
+¾h r9/hóÔ-R¹—U*ã^Kj@-xÖ :ßl•‡ný¤4ƒ›z:`êõ}ì!.š6ÑMJÌ
+C$ùõ^¸‰Þ›fž¹ú´N?Çf9ý^JhœÙ«ZÃüOp¯¤«8;{¥Èúôø[=@âÙ';#o»gŠà-h²€ýÒø×€6“œÏ-Ê>ä'1ø­ž }ò²a™ÐÀíÑ6ÆObp l7¦¶Î‚f0ø^ùþ¶øÐy'<OW¬¸Î'@©}[ç{‹Å’óØ»&wh6ü™›ÓØc×ëÅž‘Úc
+M9̒뿶Áoß6Çß¿è©£}þú'û£Ög}ÕcÉûDVÌ}Š¬—RºBJòŸ”¯(¨’ºÎŸôÿɨee|5¤õ½ã"ÏE;í(ûϗߣﯿƒÿöc˜ÿ•bÎFl~ÝøûÑÏJºå5_ØÇë˜÷ ª¯÷ÿ~[øþ¹·p5ù£›‡¿ÿQý2_ØÇë±|ãåwèûûïàoœüãKYþ_KYOë·À§ÚÕÿ¢lõ‡Š?Ôëø¡,õ{äSêï)OýZ™tç©+ºóÔŸ~ |ªEýß—¡þî“ra–¢¤«9kwE4Å¢òÀŸàXZÌg%äù ü2òÏKußSåbêê;+DbOÌ&Ìŧ¤ð{ÝŒ“k•® XÒÏ0Ùfu?#5Ôtóo/…œ›\7¯Óª]+0##Í h´³«4ôC ý8+G¯4Ìâå­,ïØ«rCÄŽÔr«
+†·þ9:È[«Â q&
+¶Ž¡Ÿ2æLö¬³c´²z„^XœÊƒPø×@I¦Hp®5
+õÉéóäÆ‚Ù7xî/b¶Ó@#8–_Ðæ5ð”xÛ^Ê°z÷GŽ%¶F—W´Á”k kš­Ï/©‰‹Ò
+ ¶Ó1y’¡\óôQ‚MFí
+t½¯õõ@§ä#á8ÑOq6/0;îVR˜w'Šâ.*ÀøÑMŽ¬M  ÞŽs§D{í»-X¾”—UÀ=W–‡#Ó
+”ÍŠY‹„°5&¡Wa#˜òæî÷ä ÔnãaQØ›S1Z»À®Ì¢TÍžÄƢ׀ث9×%ö³'³–BvLJÎ4ãTÜ„ßSÐJì<œ('E bûà Ó~¿IsÕ¨= ‚˪?¢-c=\¥Û·¸‚e>
+ÆÊé‘£VñšÐ÷ù®˜( öm V|rÌ–Ή²kN|´ÍQ£ γì kË@£©}v
+5•@_M^5—°”<z:–8:–ãêÝy8Û/OÎZ*
+0¨äàŒ Ÿ‡CX1 îgnWZK ·P7‚37{~¬,¬ôIüoØÐÞ÷i*¶fu^½˜àÊŠ«Ï"
+±Ú¿¤Z4-À½ |oîWw^ï 25a 8áf!‘àUuI<sU€PÚßWZY˜^Ø»À6nï 5¾÷áö›åß
++×™Få¶
+°ø,¤žu•œ®§ö[£O±7-!sWœ¼cNgæ[T.|åèÝ31îá\8ÔMXÝÆ j˜9.\¡° ©{<nM»nÅ)âdË–„͵˜§¼¯ÔÁöd¬
+`u¹7s_ ô7ðvbÖÈÕx#­ý» À^Ÿ‹=grE¿5ÿ¨<qk)žK?2mh®…ã4&ÝÅ>ÎL¤|÷á½´Ížk×äh¡³ò “/»è`€¾¢[§ñ[ãP$B¬íw‘§À JæT€O>/ŸM4CÕÆw;Xæ£7^ŽWÊܺ²ûáê%JÓ˜Ò ‘‘êœy</€Uœ«Æ ÖêšT ©ç Œ/);.{¸&eǧÄׄœ/ƒ\VfvÉ؆ÞÛöÒû˪­ŒÄÙnù®J§AËfê9ÌÝ’d·•àÜBë È
+•U0&×ÎÅ!æ
+žiVÑ2µ_:­ÉÌ  >ŠÉÔð­>n,“QVÌB”Ý"V(êƲ¸2;¾äú¿‘M8j€býiú*Ío~$Šº+¢ò¶Få›p‚ûçÇù¨–ü¶qüAÿÙ;Ò œ+4¦Ÿh·RïN§ŒŽw§qÈû¤íû1Í&§º
+P®Roh jÂüRÉ€Õ;÷Çl‡Ú{õÅ7Œ¶¸O`Ç*@;‹ÏeÁÚX Ï'XlÕ—%SýeÜ·<l×sÍì¡”ÙŽÙÉ……ü\&9
+næ©®$vV`Lé;4\½ò!ï„X‡ÏÕö÷$èå/ x¹€gc¾¬Ñlª¨dbž‚jm§Žó|íÁ)iIY
+«:j¿r­esáX)É|åj#@;Ô>ê+â^8
+fÒ]‹OŒhYü{f€ò.@§¢àÏÁN¾§ýIƒ}P0ŸÂДƒýÝÃS[«$t±¡ÃxæüšLàW‡½SÈ; Ñž«[V€¶V^ nIDvyµÅ¢5Ò|²Û׌Û÷žïÂÎ\þZ‚"¼\Pî¿ÔYaɳi¸RuaW9 Ï
+ì½9/¶ ®ç9Vù¶"ÀvÄ®ÍZl«ñs~ŠaBòJZî˜Åùæ°X¿Uî F¶«Çk¶Í€“N^/Qip†x;sPúÅ:Úì€Çå½Æ¤o˜°s}ž\àÝý.¸ÐŸ›…²•=XöŒÇª=3A,|SI,›@ksÕÔM€Ë»ÞØtê7³‘.Ìx†Îµ ¥p‚·€D—îÁ+ä¶siÚè\p‡ì›¢\Eï-f9e€8ùPL´]Ñú`!
+H‰¤—]‹¤·…Aÿ‡÷&`_¸‘J*©t¹r‘ì„' Á3»ùrfŽ—%ÿ>§¤Sêî™Yra–…é½G¥R}i–G?—VËñ•å’ϵçîÐÎI²J׺Vvÿëî´pÑF\­…@®Ul¹lX¬seéJtÖž ×ÊÚ+«v~o¦0¥a\ØÚþ<ÕK³ÕãÞ±Œ³fk<—ÙT;œ$Ì™°¶Îý³”%+
+«„›¥Rd.•s6—¶s×nó8Þ2a‚üȳ¦Ä£Ž¹¶â\ʵП~ÉÇB+:(ÎC“¦ð¡Hm„¹Âä. ICã`KEaËbUâ{IëM%ïïsƒvõy1iœÛø¾çP
+j:ÉpÄ& <ÖZw|.qØ4¯ Á¥tB1ÜŸ5ÓV9´Á‹Åí°f¥mA;#ÌhØH‰±á¸&#"KŠ{µT*' {;Â0cÁ‚­«q»‚èÄe,禄UÆ\Òä1ƒ(†ó„® wç +tÇ2v©s-¶¨=ayAÅg[ ×LrE)P4·¹V ÕéœéP‡ž6Ë°Jt.y9Òίµ‰Û–È•
+ þtú«ØP< ¸Ž|$Φ±>­’`ˆÜ:XSê˜Êseé„=W:Ò1¢damI¹VLdÁÈè—Ü-Óz…ƒò<òS°ñc`-ma³=€Ö×Åc-Ms¨7˜$’Ê\mᢳ.tEe’ºà¼XÂæ5p®´>.¦\›<?QDÂ;^=A­àj/–!à÷¦ÏŒ(ç.‰æŠ­Š8¤Ø‚%E%}©{Ï ó•+T¸a†¶P»Ó`êÒ,/„£ £s8®Êµ½X¬ÅÕRÕ'TŸp·-ëU©,H¤mY“œ‡°ê +(!„u}V=¡Â2Mž]smi±¶[§€Ö|¼º? kˆqq6¿ÇÀ9 ë+úšnæ‰ÕãdAüáÛe–¯ÔDk[i+QÐy™£¬Žðrû°«±YÍÍh˜t!K+ú¦ Ëʉæå=ñ¸3‡ï(Ð[™²…ϵƶåoW-™ªÍ¤mk«veœ«¬^7V{$V„/±÷›UfvͶñ3ª‹ÈÎõËÔ#q”vÈä:Ï(µFf¬ÉüLæ‰~²>E1ëWsÑƬÚñª¼#A’Tc1Ƚ3v8
+_ã Œ:¸* ¡y^𭈟ûÛÓ¯ÞüƾÿõÓû¯úøŸ¿ÿᇟþðÓÓ‚_øÛ?žnðß>=ýðøáý1é|è—§t¼ÁÿwŸNOùxóoü4ÿ½û/~üüèÓQßù.ï}ù7óžgÙã=š¬÷ñ#¯rN“×?Ö²'ìøÑ·÷=Z{æãÇÈX¼‹<Êçœ1/{l’ÑõC)(³az!ŒPšñ<™²ÁŠZ”ÑÜ®èý3Z–öýŸÁ+o‰ßÙôíûS;¾øòx÷çéÿŒ±ž?ü/ŠÐªy7…9’^é¹öÂ…¡Ò‹ÖA‹?%»vÉs??w„,ùû?ƒ/†Þ’Ï;^ð 4ëzëT½õÀ"·¸°¤kX†Ø¨F·4k·pðòüN_jÇ©^c-•k|}’ G c"¹>òý+äϽ~iaøe•A1Ïö5KðÞ6™ƒ¿F/…âÙG¿Ññ’ÁrñÍÉû-rz6Ίá)‹Õè@èðA«{{ÂØ çº*H½Ûs{Hÿuú#DÛ”TÌÒýð-rB'píÔq£o·”_¢?ži^b:zÇo¸Ýߎ.Ÿ§Ñ;`ºx{òÙåÆľÆÉç6OÝY-þ¯ö¸´©Û°¦Ï‹Ù9á!Ë1+kåžy,ØÐU¬œŠæSÒ¼g9æ·ðlžMʼ¶5! ÒIÖc"k>QµFŒ¡z ˆ÷]†ÍŸlºöÁÃÆgˆSï„ÈÙJè ?У5°- Š«Ò‚ùZ0Ûˆ'¼)Ì“A×
+¯Uº
+-cp-Z6‹·b`À)„ÕÂzåÄ5Þ‰$n…gªVQ®ó¾_í<Vó®Á«h8 —õäõÉÍbLø!€ÂGÄ~31ÐZ`Üšpà©wØ0‹P``*—À•ÎL¢qßÍ{ú"0<µí€LúÚJUäs%´’ztOŽNÙ¯ iYŒ²}ù°­±Á¶Æ@‡›†€Ñ v·X«îfFÆVmþ[pûÀFÜ‚”OÉó UAÖÅÓ¤ÌöëÐ=û°ÇƒÂ8.žÀ0c"\½¤8Ú
+‘Pˆ e‡ò¬|w¨u0™ªð™[QnkDb !€f#BYóÀÁuNõ ëªÆP)2?¡­šûˆ!W.G@ƒÐ° o™«-+-… ïò-¨½pm­+s­ Fbäøl×Ò#<Q—å5œˆ?t Dg›ÕwÁ>”Ì),èjåÙ `!0ýÅ­dØ| 3ÔX‘FåZÌßÊcu
+ÀžZ\c’¼ºJÔtŸ–T‹ÍêHq ¸-`#*vXžy ¦sC$JtÖQ")%n©y¯ÍQiu´pÄp0‹ß.†Yø>•žM5 z a3ŽÿÀÍ!ŽËz
+¤Þz¬U‰+Ÿ/YÂÍb´«k-cíèûnÍg¦€™Å°Ž¶}`"ea6
+ Û¾˜Á•Òô²ªF]é¼põŽÐ$DNtÂœ.q8ý¹p*kc(Ô%2ári©oÚ•kKn‘ ˜H¦[z?-ðd^ñ‚6Ÿw&F[3¼™dÞ½ŠyqÄç5ÑÕg¶K*7šUEb­¦Õ±?~F5ÒUÆjp»rî»vL½¼NW¾r„_grÜ¢Îb(V9ì ^GEoÒÃ
+´ºð2
+zqZÊÌó^6…ùée†LÀæL
+q°KPÑ+Ád§\‚‹ùb:Tx¤¹ì÷Æl:äž 4_C~2L
+ô¹},5eÇ"œªsîtiu¾‚ñã'Ã?4Õn,m &0NîÀØònvzÇJñ ×t‹–K¤l!¯;/¡ÃÜ6únnõ=&n²k ¬ßäsN̸ò'fF}®#û& 9Óƒ´fn61ȳºó”n-D‰t6—I¢Î<6kQËÙçpr¶>³¾s
+~úæoÿxwþå»w_¿}óú9Ð'à'—_<Âó%þýêÃã‡G|¾ü7þŽÏ0þùêGüÇoñÇ?}xæçïžúsx¾–ð/äüÌ¢¶q*Ñ_o/ÈTâ¯nEäW¯Ž<¯ïäLr/¸6
+‹ã4Æ8ˆÖá€l8dì€Ï$»ùƒuÕèf•m
+pËu߀¿}üñ¡£Ù›¨Ïyƒ‰ÄŽ’ði PÌ㣅Jíà8HŠ…oKÒ„cDY»óÕZ+çÜ«S7ØŽ!†0Ñ(
+Ã^uÈ˂˼WhÎÏIªô¸¹ø5üx½®Ãrþ_JŸ}†×ýýÿQÕ!öƒ­í–um3¨µx{ÀÉ…
+’ŒÕ‚8•šœñˆcZZ™kû
+Âá­†›Z±##ô?`â©Ô.pÏýŒÝÀœwÐøu/±YYúz,›ºž ‡vÆRspÔø
+z»ž`+Ës,˜êìd¿„BŒ^Y þÞ¯°Å‚¡èLT˜üo{Þ@OÀSín±œÉÀÉ|x&(¯NXtú:)u¥ œy“+î-v°¹)áyÝÊz‚B9bØd·ÝA˜­ã÷"9³‡ÓçP©¹»€ïÛÁé…×#v ôa• Ì•6ÐPItÄRì&» ^Æ@Ðëz‚hkp‹Åc7>-†—Çü«‰&—]—Ø¥¯Soí
+ Eâ#|L5§»ƒ©D‡  ¶M]NKÝ `©â˜ ¬¹F3J•†òé¬öËVQ÷ÒyÙ:(ª<Œ*ÀÚ§yêÃ¥æ>+·ÑʗȺ}‰1un³õ t—„F¼Ç¢˜q¼wÑ‘ø
+¼‹>ÈÛGU"ñPT›¡M ;è“@5Å#6)Iþ˜d¾<Á‚9©²Á Böz–¹«®YÄâϺÖÑÉ!x,Ç`]?”ðLX…3Á‚«q >@¿€«¥ùñ9E¾ÄÉ1¡³À½6æ ÷9ó9Y[EÒ£lL _"ˆ5Õ‰€[µm€ÕèLˆål à8ÖF´=˜)úA:¸ç+ؤ™x›c„åWZò‘µÆÄš$ölmuB§.&¯lÑâ†>ÆÜÛ
+áY¥¼ïW0sõÁöo¯‹.jtÐ+Í-ÜŠÒDÀæ®`é½ µÜ&ß,Ø¥ƒ|,kù„{­•C‹³' û9ù½ûý#ćŸ x¥2¼Ëb<ŠT
+RT¥„ÿTV^À@a]Áaˆ—’šÓkþ`¥Üo50ЯÐúØ{lн¢¿Šs Pëqðså´Á— ! ÷`Çð 3éàì–Jùˆ -Û±zb:ÀÚ§‘Ùa.¥_cå,}jОŠK–9iÉîŽCnŠ¾
+Á_Á–‘pJUÒ¾€pñ¾¸„' —ë+˜uwŒè´ ôtÌû-LÒGÛ‹¢/: ò45(^ó¶øäyŽ7)™ÊœVž´—ôðòyêø©¢å„Üœ7ñ0þ25O2¼hO$`dç’`,Oè£uÀb4zeƒi
+Eï Mäê h½Ü7û©‚¥D.í)°¶S—æb_ *ÎUgë@]f‰H0.§uëÄ)V¾ ½ZÖF¶kkr¸¼ëû†UžÍýg ØôÉé0ľbÛ
+¸›—¹b}D©ë´at±c». îo»‘¤nÒRŽ 5óW-ö/¬ŸØûÅd¨Nöý½ôJ+yÒÇ>ÉQ¯E׸AÄúI`N?€6zl6 *y_T†2æ'AS ŸX¹Œ8Vùß¡vËø½s¡²J¯!yéñ«ÍR¯ÈÚï‡L O,Òš÷™*$qHÍîÊ¡u }>Äw¬ˆ l’ªÏ€Ü­Ã ÷[ш°nÔBG¨¤¨>R–W´UZËpOÚæ'6 ŒCh_¸ìÞ›@r£P2àz•ÍàüþqcÙöwÒ¨ô¥/<ÎëÂ[Gtu”Õ¡Š2?ŸI#Á¨v4)V^ò0Ý• Jا| ¡˜eh ŸB(‰<ÃCJ}ƽê€êRQídˆVySõÀ…±Xr©‘Úªòvر%¸ëÉeåËDYŽôî0Ì
+ßØU Æd‘Ê+~Ú'Æ‘Ø…¯¬ ]~q¨îÕ“ ÄO›*«;
+Z™nH= ¿ø9má•b¹âxr´”yüüàeŠ~]6à‚îGFia%zbuÊØ1W3/—º‹³3FwQ1w©[dÇ\ÃS`á(Š«.LMd‡°ž(¿ûiÊtÔöòMÞ†6°Îöjh{w8|Yjh e ܡݱUlÉ eá"ž†/ CÉÂeÕ0c ÆmµdÝawvÎÀá>Ķ”þ'«>bòJëŸ[ŽÚ!xd•†Xú åÕ#ÃI
+2ŽÎ%qúv« _ýTi”à.d@üÄJ‹‹¬`‚á‚«ñE‚À2.;F%VŒA±_ø9ƒ«È ›³}b‡ùMÍZáar½œ§pp'w–Jïn÷S}Uxì32ç]·¹<ÒƒmÕŸM-ˆ8T1ïKp¬§ q† †Ñ:D*êÔŒJö¢Í± y¨øFð~ÖÐt¸öàA»Ÿ!`¼æêÍSœß¨p ORç·^¨ÂRãUõx6Ýc{åУm¾pˆ˜l'ÁÁÒ Àc›Œ*ƒ4Íøè
+B‚1v|bU¯ÚÃzäpÔ™aœ#}cEþwƒ2(øPOX¶ §q/K6ƒæ5ÒTshcQ+¥Ð+P¬[¨÷˜«®Î Fp=*¥ÖCH€.c|­qˆöÈegìuÐE%„M+­âE;÷©fè‘@¾EÉû9(^"·%%OÜéýÚIæ;Ø.eO”f‹NÒìi¨àëñºëì›\ÇN€X×DÑsˆo ²ùMr"{ÎÄä/,eWï®%Î{^SÙáî$´:IŽ=ÝA ¢¿ã ×sy;‰ºì‹…»ma?C³d äÖÇ+­¿Aõ”Úpí\º~bYÞ¬C¯Ë¯d܉۽ÝY´pêŽ#m–
+óiSîö˜òÙ%°œ-ÐàÀ\ŸÕ*œï¾²HÚw ‚õ.^#P~’ êzo
+ ÓD)«§š#|ê@ \Ç{0ªQʧ#˜GHg S uòÓ0·°°iÇ(#Œ¨~¥õO™C¼·Û
+¼§^±³p̺ÐgËÐ ñxðÆ
+d
+Xݨd˜œNÆkgö±1È'ë|þýãÅD­>«K>±dø®6Ū9XOLàD7·zO”a$èm|c½KÜf-õ…`ã­äFô­zdX+œ?¸`ÏjÑd–ªŒ ÷
+°|c—³ƒ™3–Åef xþ!vLÓ2dºó…}l-uáÒ#–¥ú²
+ÚTG,^øWv*w‚ÚZÀ=Côòh…Ãô2‘ÚˆM¸)  ˆ&|bGêú ®Š ~~pá±lÎRÖJÓºÁÆØ .·ÀfxöaúF!c†{TÆ'Ö½ÚPÝD«ºYÔX ³°Ûöiã'k°"zu—Ê¥·µ#˜Ðö‰ ˜Î CDQ†{QÒîLD|ýÏxÙ¶lzÔ`øÜÿáþ"hÁ23ɼ}ܪ´¥²P‘²»¾î>Hm]öß{f’ÌËuž›;×L’IδçûÇ_áùËñ²÷ Iƒ­±QˆÏ7ŒÁ«7ÄeزaÝò–²C=5.[ÓÕÐn+ê×F¸pƒ 樕õÜx\Eä½ÎuV‡oì
+ÕZÀa[ksÛœï0÷äð± 32Rèy…hþõùŸ‹­Tœù%X°_¡¨ ÆÇzP­„×ɾÊ%ÚЈ‚Î39]%Ü=coNUœQ% '*±i*E´¶¼c…\UŒÕ¿
+‰Ò]
+§Pî¶xQaseµ ‚òr°aWlðZôR¶±Þ d`Z'˜ØßP‘ˆuSþ¾í"ÁWŵ–Bí‡Î§%žp —Õ\.(ûVZ™a¨v/šµúì7¥²C??um£›-
+\—JÀÆ9$¬¸Tè“ÔûÍ–›¶±> ü€™gÚÝ–ËrP¢CÑî€z3Š)ŒFÿ§®#ÖšWÆÖúez{-k¿ª*ÖVkÝsûÌn+¯Xû;& Åv¨7éƒîÀ1¼i’m@aã‹>Ÿ8úQ÷yL™óÕ’ˆŒU[N8«èÄñyu‰øÏñÚg RY£Ð,Þ®7ܽÇ5æzƒ)Îï/¡î² ±B61€¬à‘Å NUI!_l×r°‚ºAú<Šˆw §Ö®Ú÷êÝ—Î%nДà!œ¶¨G\ìŒÈÒ™ë§,Œ¹Ýlñ—µÿnS 0Ç°Cw­¥¶%7‡9ºØ­œvèZÈõf ea× ‘î&.sm ÍH²‰å¥á¡\Bð^T}0×bËv­ä[W xB,¤æ`ǽ´iÛ4‹XŸª>ÎÖ0wÄ…‘Žœ»u 4᦭·ÕÚÁÑîó„e343‘ÙB§Ë˜»D™•Ÿ½~¼~üäÕ¯ÛŸõòö‹ï~ø÷ß~ÿí÷ß¿ûîEáïþú÷—ÿôõËË·Þ½}ú~æú3H¨Wøÿ7?<âóÕ¿ðw|†ñ¿o>á?~ƒ?þôñÉÏß>ÿø§ð|+æ_Ër¶,$W\“˜tª*÷ÛùÕW7?_=^äLr¯Ad*ð‰?¨6´t:–]PšÎ(’/aDÈÊÇTQH+ÄÆv,*~ÿøƒ½ÅÞ¨o7˜DÆ,%|ZLå«òi|"í&`]”ÃàyU¼å/ÈaZ‡¨I'-Ÿì±©¶C@aQ¢=Œ“ !ÒCÔ0n^¨0êA¾\$r³„cX Äûv''Øu }ÿÐáß;UÅTÈ%$¨ð‚k i˜¥i•áBö-qY^IejüÓyQÇrúÏ~@F÷\⟨î}MѲê¨7ÌXJ/‚t[‘¤Ú Kâ1O¯¶‰Éw‘h»ò`}Îà›™žo¶cœèÞ"šú
+·…îÀëËkðéö±ˆ²³u¢Û¦X Q55\ñ18T½~¬bâ±cyL
+Qå6G£ô}…=‘©úÆÑã…4Ïiì6?Æ4ô4þ9r½²ÉS Cô”¥9doèŨ @,”Ya‚Xg´Þ :rH¼Ó6õê°¨ö= o&®5ù °ßV»AÅ®=L
+™¼Û£jóóÜa&„«\t`p¬nrñdÇä¨ä™‘’TX2µ›î“‰©ûᲕå«fßã(4ƒxùuƒž…ñÇèšÉ´ UÒ-ˆ¹oð’…Ó–b'+™¢3wƒÇ vœ’ª,ùS¦ç±ŸÊÏf%³¬Jó
+=E•1hÀÊϦz‡Ós9˜¸AX\®Ës±; A«Ì+,\z÷ æì5w“”ò©PvèidN|ÚJ¸rM¼Ð’žJ³«^-9x¤ZÄ(úô¸bø<¿½AÌ»ÞóýÍ—¢ê°Í½y‹ózÝábî`áyQx5팽17÷ÚrŒ
+¡«Ö“³LÙŸ,™Âƒ'o:5.mk{ wÉOf?
+Ø0™ˆ½àëØl¡4½Ø|p8ûM
+ýbÛt† ÈA…ßcj}ÆÀ1j¦»iÏÕJjôî2Ö+…2i®!|–©, Yÿù„V0³gOŒ¦æý=æn&uöÑ‹–Ð6è! ˜ùb+»[a¯H^5ZÍCúæÙJž„¦fkhEÑàÅÏhè•Œe0^lÙgœ6ô ÃÔ¡Ògp éZ“¿ÖƦ3úîùèQ9û[ìy,«è…5ÚÇ*>¡¯!&ËbýÜíÆþ:;¡ã®ÒÞºfPAmƒâ¶ÆÈ;ô"Jeë´¥R“B|ð9¤6,\c¯çÇäþ”¡vëЀ¥õ-‡=®^€ÜYaËoÙäåÀ°ˆ{SE 4é i•68b-õb‹ÛÔN[Àˆ6žŒ×±c©=ò‰ZµIbJÂÔߧM9‡óT£°—L—, Ô9‹ÌAï‡ÚŒ*Š¯%›g7KdŸ‹¡Áñû"zW“pØƦuLP!Þ`-žÅ#„ùb ¥ÑUVÊ HËÀ ;ðƒ¶{‹ ¶R‡a†
+jðìxŒZ…=v>kŸÂ ûý˜cw[nSój˯eZ9ÔÓýg*HŒêQ!²ï ìÌX6­AqõbM0˜»vó’Uù HœWarX‹LE7‘¢ï^¡©Ð«„æb+MÁš)ÄÙ ôlš@lxa©Möº–&-ž·ƒ–zÚ ?¤”††:mÑ_²Â’s3hÝ¡;(Óÿ eèÿâæ€ $ãûN½Mì.RTÙ-½ Þ  …Ø/¶¢R\ÛŒ}i¹´ Î9£±=m©$›ë­WoR¬ÍÄ¡;à2*ù´m![r ÑýX­õ²Á9¨b)§-` Á``¾B\›úüý¢£_^áÖ§“vI‡î õ˜o¶9%ƒ¥åìÐä¥AwÛo°”¸¶V‡`x¼ç÷wç´[.BŸÐ4ŸC?vž~³…z²„q´ëÎiëpáﶘý©†xƒ›<0Ó<ARA^E»ôÄf°²»ð܉Ö
+È(55ÝçHl¤+•™ý=þ¼j(òœœ\P_BÈ¡'@ËùMì_CÞzúƒ‡æ±ej/+}ÿþÀ‰]µ™jLBülkÁX@lìˆmRÚu°h»D'¼Äàûày +à\×jÛœ7åE||q å/eâ“7 ·zßî[ô<”l•\æ}œÐ-fÎobÂÞ´¢éþ&ÁZ÷ßNE,Sõ ùý÷ǃSó³™ ²lX9Ð?–šö´#¶¸}˜f©ÖÐïxú ý®®âŠýk˜0“#Y(™…ÝApö¿_Wì4;ìÇX³6º©XɼŽqBÿµúÆ6ƒ¬^aïrBO E»Ä'V(à‹òž
+òÑÚ*t Þ¿øžL¯•=Œ~ÄΉ =Ø?ÆÝFa©Ýa2mg0ÆfLȈº®
+ úÏkÎüÄ.Õÿ}§€E ×ÎÕä”ÏÊVˆyÓŽã6X?Ф)
+0ylëf:NˆQQwÃs²¥þó†mS.ý€š
+„‡% ¹óÕIPÎþŽc,
+‘?­VUôVDªÎØÝf¦«Å
+ŠOHžN2«'Ú±Èê$óÊS÷NbÍpžÞÔn2¬è:³bÙòÀ\ã7ÆågòÝBÍ*k2øç§g9ŒNÂz G,´‹ƒ°<ã‚SOó`c¡Ø­M¯.êb?³Þá5ÒÎØ4¥¤gM­<£}ÏÇ°Bñ1éë¼ù,?>Ë
+0?ê ­k Ž]}` ]òÁ^rR¬
+Û²N(œr$p ãÊÖ<Ûß×uŸï{Oµ³Ì (<áì¸Ô-§ùÇ>ož‹–qI;߳7äs®NwÔìÙ¯‚V82P `S®X ”­eý†XV'_Á[vX½Qm ÔÔ#ôéM¨PV›ÞØ6ü}¯Ög°êŸÊŠJ$ Òf²;`*q1¾,˜BªçZ5DÑð…Eì´ÃTÊõ‚¸¯Dû7FÅ{nZèq6lûÑøŠ¿ƒ>PïWìì\>(˜TµÍÍ–*ŒC¤TžXiÍàr˜v_-ÙøÂüìqµ*fý•Bâå“Ž6B*ŸÐüýªÝmÇ¢OàwПÚE3¡DŠ"g~%ÍLÑE¦-6“Ý‹E Ør­‰,ye¹IæéçRä);éŒ?²náÀ>º¤xIÞsÏ¡=½XÉ©%X%V Q¤öà–ú/³F‚Ð÷Y7¶(tr’²U›Ú :Ž.Yz™
+OÉ‘R­PW”l¦±BÄa›.8´kŠ .5u@¬Æ$t%ä¿x´^±'Xø<$LC’GÒ€LßXq8‹ˆ\‰âˆ-Í©õC tD¡Q뢀í[Hñ2#•,v)¥©0±ñØñk¨š˜ â¦sôcA-0¤aê~„ N‡-ñ÷c™ŒŒµñ郒9tóÆJ¿\ƃ0¸0Ûc,\Óv¦}þV×7œB›$l³‚6‘±¥_ ·n§€É%x‚ÇÁ2ÌãÏ#‘­¢V ^zàzN©v/m{wcAG˜´•¶Ö®Â‚hY±@,Ì’›0)‚¦Æ`@l‚°åØnµêeŠ•—AAQõôaIq¿°µYÙ´zbC8N-ÝiYQÂIhS£§’˜«xI”®àFOq£À%T‘1G‚% z¦ 16j}H´þ]c–H;Uw2V0ÁÝJ­hþM'ÀP˜j#UµT’j˜0®W ûÄ„©v–ˆ¬ÕP8ÞÂ$4Æ@›K:ÁÖÀZ'ైVbcS#
+-•…RÏxû]¸•2¤Æ¿ÂÕä=!ã¡C¨`A暟{`LÄ “OM€¯@*¥AÇF¸¬PŸ‹;SiZ¾K!…Ø€Øw
+uƒÍ2¨
+¼ùP•Ÿê¼lòòËɉ†Ûšv >ÌÔ“èGWÿ|÷s^À4ƒÓîkðÃàôó/—ªQ¦¾^äÃ&¯Ê´~|îÁÁ«‡iQ£XVß.šlþ:x38=«ët)b8É‹Q•êyœ¾/ûLýig™zöêìýÍY1›¤7áëàôºÌ‡ðð
+f/¿ô|M‹…‘ ò©Ed*–¡bÞl;•ï|“˜dù—Ió|´“†ïuN÷ù¨™x§d¢·ž‘>Þ¹<îuÞy<ì êö·lØœW‹rK;¯Ö¬Ö¦5n© B›¹w‚½1o<2Úšlõ­ïÆÔÙ|Qøs †oýäUN‹"+‡™ofz¨g^øžm×%øZß|nÓyösýw›àÏ6K£¶žaä›^¹˜~6é×Ì¿@Ý![O¬¬®š¼®éa6¿yýk^l`oŒ}#‘ð™Dž–Gsf¿º¥÷üŠŸ9…=æÀ¼\sK]±¨b·~Ù®ªE=ÌÞÕél’ýÓÚ «$µn}6“j–ÕiSÕÞùØ;«š·ÕtVÍóƧhþŠ´âeí»O/²qðãž»=vt{G··W.éèöŽno_hò%º½q‚°/>Tùü…ù½ðeÛ=ïV}´{G»w´{G»w´{G»×Ù½óìkV\MÒQuãÝ(÷×ô±hú6Èé0LßIôRlß&™lhüÇ éÖyVÌ&éKiœ·ÅbM+<<ƒçíæÍè"ûš§jAiwÐÎ4Á»t1Ÿçiy®ðP´´÷ÙŒüYdô°Ï—läOì£]0û& °ïlVÇó¬9ߧí¨ì?¶PÁJLÂJO†UQÕ?ÜO´ñäçÇbMp˜Ûècý‰\æ³løq±¦Oxû=•ÿ¢Hë·U9oÒÒ?µÕÛO’lšåO³ªÌþ‡,íÀ­g{'¹¨Çé0»¦›pHoÐ!y0hðÏws~÷Þ‘ßwa6ÃMrñ×W»W'ñ©økÞ‡jOU^6—ª¯{è¿dW†‡.¸8 =tU-êavVÌ&©¿hˆ6P Ñþˆ£
+Ú‰
+Z·í6£j–ÕiS­‘µNNvÀÎXém5Usí.… ¼ué?Üí‚
+H‰ì—QoÛ8Ç?A¾ƒ_èíÚNãíâüÇÛ @q¯¸·`Llv)RK‘ŽÝO¿´låäÒ )¥F‘Dµf,þ43ÿ™y}Ò=×ÖŸ ;¯V‰*Â7lÁE¤QþÒy}Òït?H³¿·ùeÖ)nîuºS£¹œÞ]‚°ùíW1NPÏñÊ}øËÿ·•ä¦C÷ÓýïäãÆÔ¥;æÌp%AoNöÝ¥#ƒqß>³³Í×UA>õJpó ¸4îÈÿ‘œ¹[Srù¸åž17}ýôcû‹Åó Ðù0¨+ŸÝcÜžt§_.ßçeŸç´<ÿp{¡”iÄoHÎͨ’9·y¤úž‡¦Öûb|¾¨(ÇOaOgºã‘Y‘vÖÞ‰ÞÔˆÒšL³A2 ƒ¬È «
+ÓƒF{Úèñ­ñ3ÃÛ33IÚ23ÜPV Å2£4í¡£wÈs*äú©ƒõ¡1ÏR ”fi‹šQ¯SüÛýéï’ÏüŠ>Hæ Ö•ÆkýÙ‹Ñz2I[´>÷U«gÝ iÞ…JO
+¼¶è]ZizÕ^LÕ“IÚRõä5"3Ñ—6¢ozNÁàl–q#aõ(@õñ#ô’«+b8A=ÇÍl‘„ÏŽQh@àgÂó Ðù0X-âÝ1ÆáIwúåò}îÑ m>ÿp;æ ÞÒ÷º¨’x7µ§E‘á5DÜfôQjgî}”š*«^jHœ½”Ù=Ê3•J£RÔ`”&3í©©ÒéÂmˆóõQÑ~XÑ~û™ T´£¢­áŠö‡vG´£ 5]Ðp“¨G=;êEÏŽÚQÏŽzvÔ³öëÙ%Ø,ã GÂêÛ³ŸYÖÈð™‰Æ¸ä°9¹`‚M9ÜDzù‡ÊæÝÏ\6døcÙËæ_¡ø$`}ÛÿçkÆ3Žš}EfFÊÊÈm¤VT¢m(©¡ÏÆ>ÞQ½Î WïëÂÝlÚåëUî_É ç5Ö…µ÷(ƒ¸ƒ5™Icf@úvWØ{çêÓYú
+”Ûú‡éô‡§½Nà~÷:îgè®Ýß¡»Ñ¡bæWôú,̽ÃjLÔ’¼Ä:u4G â2˜;'SiL̸Fb–<¼óe©à’ÌÆ@°‰û„Œ¶w‹©
+2FÍD•Vß[nˆ,!vœ:,nÀ³¢Ö<˜›{gzGÊL4Æ%‡ÍÈX‡Nt ÆK°YÆAŽ¶l—\jHœÑá´†"œ6¼Œš.oL%©ÊÜ
+jâ´E d5°:vóßÔ ô™àÐÉ;Ü…PwTBÁç ãî¿aJ(úºqßÍ;eŸ
+¸Ká %3’žœüš‹¸­£zIzàCéXMé=òÂ2Ãyv±³öew°&3¹°е$vkï?{d¨¨ªÿ—ËÒ†P›­¦çQݼ‚C.#>WÃ%WÍPc4TäœÜ*ó«Š7TÂ.̽“kLÔ’Ls!ÈL[cïD.rsÉM±&E0ãYZòðÎ'¸D Ô®°‰û„Œ¶w‹©pƒ ¢ˆ^•¼%´½C€ ÑÇ°aq€«‚ŠyèåU*I!c6±ªŠµŒWr¡ 6ßAè?‚ÐéVœZòd{äÇÏúÈ«÷Ý­ï‘Cò'Ö,èñ(ì½'Úod&î?›ã©J’,Æ1ÏW“í äÚ3!_“>îô«E)ïÆ8²ÐÖØ#‚,YŠÌIž¾¶«Áý¥±æ¾b qñ.”Ìë‚ÌöÐ1À¶T—òUêúè(÷ŽM¦´:v£ÞÔM›ôÎè`<¨xuƽà}7JçiŠÜö*–Ýý˙ἆÞGĬÉLN> èZr»µP£d¨¨ª–€r[ï0\F|®†s(‡kBÝ ]ßÇá’+fèJv¨4È9y!ɯ*ÞP »0 F‰Z’©b.™ik"–sÉ«VÁrÑ¥f\#KKÞù—ä‰Ôõ86qŸÑör1®/“Ì(â†W%oyÃüŸC€ Ñùßì—]OÛ0†ÿ›]Ž¶| ‰«v£“2q‹\Û!†$ÎbÆ~ýòÑŠ!ùM¦ÆNée¥s?=ï{„ëÜV(æfVï¬IaaBJó¸p›¦amâ5Rc³…s–$"®Ÿ<”#vrŸG䯈sâõXÇÛ*KLwƒ¨ íæ.Šås` F†¥‰ ø\N5Ñ7«š™g+oðW§íÍjh€}™g”O£4$pÇ'ÇxË—±½÷¼ZÕc‘ãcŒw½•s¯RqÃåQ«“¯
+·`¬Q"™òŒh“Ïi0½%XÛOßeœJ%¥ê°d<á›àÉÆ"ÀANp§ANqS ÄÙ™X
+H‰ìWénÛH~½Cÿ "º»y'¿,{ld×G'‹EÐ"[VO(’ÃÉ÷é·š´BÊq¦wÍCC²åb»¾:¾ª
+#ŸÏCøuË‚œ¿D¯f/žf,É^¢ƒ¡ðàÑU–ˆð½ø¶ ÂíñmŠÓoPuþÕìàúü잢׳ƒcáe"
+Yrÿ½©´Y¯[æO Ã$aNxkø åsŠÞ†ÙîÝÙ]\Zj¦¿6²Âäç‰2žâlçX¾‰n¹*ž•e@åáΉÐç+ŠLUÂcβ㱪itŽ/!g ¦VØ<xç Q†V)ô‹qÀ<å°1ß™hJÞ´J¡shK–ò“„ÿ•óлS¸½ÿ¢À ŠrW«s¨aª‡ÐóòM°¦Z­Ã«©¼z:ò è ÁêPlJ“më«ç¸|Å?äÉ2 ‘T,øið;Ί«(O<~Äk¦š"¤ÊYQœí<Õ½ëXZ@é¥iª"‰bž°,Rï••BOåºâGÑ&ŽRÑ[ÉŠ ãIãÝÇ|…ÞÌ®>ž¿ªÒŽóãðíçŠv>ëÊiï7¢.ÎtžïãßTA¬¹¸Y«ï%ÛãƒÆôUøÙZÒýéΩãi˜©jXîã›2Žo=àˆ–r/[Dyèƒi‹¨ÁÚ‡ G³´ÍúX騴Ž¡peD©¾z¦y Î-ÛãG>«ÏœJÈJUE\Û{º®K ›ªxZlp5`´:Gè¨Â óÍ¥—±[®^ u•¶Ì«Ld^C«ð¥Åé"hpG§·áuZ÷†²îµ!öi᛾ýYø”»ä´ð Ó´ð Ç´ðM ß¾UÂ`¶."‘îÙÊgì÷Ƨ oÚø¦oÚø¦ïG$ÓÆ×Þ€½Øøþˆ"ÿ&aê™2ÜuÏÜÃu¯¦q¬{s²/ _$ÓÊ7þ•¯œvN¯…·/Â2ÈzþæWÄÒGhƒ%ái¨7€íñá®viæó[Á¤A-vŸºRoƒÜ)ËÓT°pQp,ërl|uú÷ûàu êÙï£%·b³3s´Z¥¼¡ÆÃÍ%Yà ÷ƒxÍž©{"³ËmÜÆBc«
+Qó„e-Zk¥Ð?E›8JË)b,¤ Ü2¾¨3Á—>ˆ@ˆ®D4Cˆ1äÅïKÃÉ:Ò_¬Vyª¼ ¿i–“ÀiÂâµðö¥m"{ÇD¸w=“%"[ox¦©©wàÞ;ÕL½sh@Þ;Ÿ´Ÿ ½¶m5SëœZçÀ[g³íCéºÑj•òläIÂýà ^³g+ÞzΓ.=:¢YèÙ)q±x>F”ånù¼uÙ1¤y²Ìz|ßä*a^Æ‚‹H¤ÊØJeEdÛ›:Æ¥aSÎ’¥ü$áåß;e\´ºßØ”„0ß\BŒo奊àê*# £«LdÞZ_Zœþ ‚
+j ¯ñ•Ñ”§ iØö²]¯xr"eLÏ8Ï %Î[ªÇ¸ÔRôÆöŠŽQ„•áHìŸä¿©:ªºNo¤r’‡Þû±ÉÞe™f#Œþyv:åYyFþ.t¶PH³ç[vBf¦0!Œ(߯¢<ñ8ÌjñZxê“ZÃ.±3ªÑ‘Ìjc˜?Ëpu2vŒ®Éû¢(æ Ë¢DS¥Ð?‘ŠŒˆÎyrÃ`ÚuþÇlM,=%ipé;ia@O—‹ ShÜÇ|…ÞÌ~;|KðçßCÿêÓéI¡)E¦”|¾ˆÂwðŠ Þ2Ÿ—â¿aýÁì".Þa”®î6Ë(˜½Ð}ôî.aá£÷L„ËèëËY?]¹âçúþù|ùD_‘ÎÑ¿þ‘Òë÷³¹­K7m4'¦fPÃA›Ö0¦†A@F5ݤ&:›Í¥–‰æÔÐ,]w¤ðå³Ùb Ž}ñ1”NðÑMÂ|£"úËÂÃ+JÓ¶¿73G#Žiš¨úëÚëh^}!.Ñ,Lr(q4Ç¢:ºÞ̈®¹Ô hû÷EŠM 0 ˆ ÍÕ-¼™©aÓƒ·Õn\Îq‰këèû—ÇTK3 xD©4 »R“j<7ÐöïOô ÛRÑÐ0¡¶TT
+!T€[œ²†T‘"Ç„
+p·Uù§T5%—ω«Ù¦¹Õ¤.Ü wé奮9ÿÝ…÷—ÚŽI ¡nÙvyÎt\§A³¤h×û¶ù ªÈ ˆ­Q$“î`½ä
+YARF
+XÁ.=öÀ¯žô«áÐÂ&ôZxÿ¿ÌWÛnÇüýþЋé¹_'^'H ÛAÞŠˆ È”`Épò÷©ê’»ä®BÁŽm½ˆlNÏôt÷TWiƒ_êT÷äuŠ'þöb÷R.Ç7wÿß4ÓÕíí{àõý»÷ëfòñÓûæÍÝ„Ÿ
+ yjº)&ÖoS
+åÁÏsxeA8<xŸ0Ö:‰ñ`ñ<¶ìêcvu‘ |É^ œäÇáSÆlEÈy ä1!{´'1l’“©£½‘ëi< %w1\Þ´òK ™ýC˜•r·D=°ŽN
+/ èÛþÍcóê
+„ÿòõï?/_¿[ÝoÞü}¿é쪷|±$*ÿ‡ˆ¶}v̯Ž–WÅׯ®7«Ûærö²çqóñz{S܉hØúóxûçí¦ýH×î·ë»OÛ›íæáaÿûOÍeîšÀ‚ù 
+^膻sOêúý·6ß7U úìõnriÇ«íÃãj»Þ,g«ÇÕòj¶üeu´d|•—ó¿6ëO °ëÐj5ÍËßm¥µŠ`³TÒ\[èÃEûhÚÂeN(Sk^Ÿ¸Š]W¤îË'´®
+W z™ƒ&a<ùAG ÈǨÕ“3¯Í(CÁ;%¹®ñ¾2ߦèÉÿhUטÐÖâw^Q‹î9¯êç9º‘(8ö†~Ní kKéDvK¿yå~¸÷ª¸Y»˜æo§÷¹z¼C¹4L" {Á<Ig@ØÄ3xåƒÐÀ2?P9¤ÜqµX–uí«H-±›2é¹-5G³pñWè•*•„0PÈudÓàQOm
+"#1èàuUu4¸ .%äU9ë…}€Lzå
+O dÞÿ«+¡)²\BƒÜí­ÿ'ÅTGH ~8_ONì'=>h/ZFiH\à®5¾ÈïÁqÛ·S)P·M. mC­ßñIeÊÙ—ƒ†L9á•òd)%„œ‡@j:]5BÝ]>±žY•Èôi±!RÇù¨™¦Ÿ¯ª-$+«ªŽË£è}K•'µkñ3¹ˆ“€n—ã4ÚkÀ²wƒŠ¦³¹KPA¡
+VŠ#8`ó¹j­ã  žNÃ(KéÛàIhœUx|"Æóq±s¶ñ) 0Z‹9&Ì$kðÈ¢ >È#³*ê¦}9kÁrÖL;øj¬&Ç%Æy-ß½
+©ããÉŸøÊ¢AÿÊ+ó Óƒ'çT^Yð„‡v¸ïŒ6›|¬FÍÙÈeÙF$±Àcs½.·­(À)«êõU.Øb‰‡jT¿½Ñ0Å­­úM-WÀ¶ò˜V¹S2Iî Îík‚匞ê~`/øš¶ £¹©˜,Ç51LÍÐÁhÊzdlHe¯„ÃáBÖT0
+<[¢•´¡Êàq¯,5Œ# s©œC))Ò2£Çƒ,ÓèÁnÄ4¨ý”„;µ;LR\î½DVrg2îVÒ’nN[sú¥x9ŸO3Za1 n2‹vîÔØÍvÚFÃñ÷ÆKÅY˜ñòmÿæ±yuÚ~ùú÷Ÿ—¯ß­î7oþ¾ßtvÕƒ[¾Xj!Œÿ’mŸñ«£¥ÇßUü¯7«ÛæröÒåqóñz{SÜèÁÝÏãퟷ›Öo`\a÷ÛõݧíÍvóð°ÿý§æ2÷CZ}øPð|;t(:Æ?y¨ë?ôßš|ßR5è³×»ýÉ¥¯¶«íz³œ­WË«Ùò—ÕýÑ’ñU^ÎÿÚ¬?1À®C«Ñ4/·mlRÒ\…ÍËè0@ý—àXšdîCaøÂ^ Ú$Ê 5e ™8«Ñ‚Á{[[PqÝ醃RÖ%ë*µè
+YèWƒ¡Óìÿ;ÒF#³®|
+[Ü\-I%׵̊öxâM»0˽ÄÊLY/&™ê4´ ¼rMÉq ‘ÔýÞŽT1ɇz¾2äôm7¤µ»¤FKÎ-jftYˆ¾’,áΩHWo³÷ív­«
+Ý,â G×Mµ^”\-Iõ¬F)‰Oq71ykc§ & th[Dï¡£ÐwòË¡ï
+³?h?¼JìÚýßÙû èY8œ8–§.GŬXM
+85›0†iN.x˜Ad­ý4ƒhQÔ*iŽ}$$š›€AI{T´à[p˜3QhnûÜà Ñnű˜yt{rÅéW9Ûj›rT;ŒäT'I¬aÚš(E?ÞWÃ×>êˆ×jîÓ¾š Æ,.ê±líŸáˆÏ{Ó€Êfwqo³18€+8Õàœ:ÑŠ\FÚ~—¬êîšÓ”fX¶êßWÜÐÒ¨¢X6!FÿÂ%ÙÃÜ­˜;¸Ã CX&òJ[»À,ºÃÜaR_À7ØlŠ[“ƒ¶uå¡ž}Öbìk|F3¸­N?E8Ó ‚}Ýq5ÙV9*˜ø¹í‡KÖ@ÔV±LpÖ"Î)Zó!jÆÔá—~~Ðaóou¦óëHÛt]²ŸÏ‚»²s€Ì|×™šçv¦¬%Ⱦc6’&’è ý™“b
+
+c)C`”walZL7v€ü]”ÂCÏ'´­Öë9Q…* „s±r‹ÿ7ÿ£…=haÌÙž®2ÖþùÆ—}’,.;Â8~ôÓ‰b»9,Ô4$k´& zEÏ[ú¢Â
+Ù'׌S’b¶Dj’»½6éî6ÓQ–š5wsÁLcCù;{H°®žªÐÄAÆ*’Ž@ãV¶·T`uÞf,zßÒ}Õ<ÖÙ %Œ%C™C¯„¦µ}¿¨½ àFD4¶ÑdeC…]Á3—ñKHðs{„M”¢Ž(]Ë ¬äžYW¬VˆV-(ãM¶¡U™»š êÑØ@þO&˜Œ kÄ^49;½ˆüvÁ·™£Á§\Ûáo-Í‘NùfÈ—ùÕL¬»¾Ì×€iw™fÙ]\»«! _<7är]>
+ùïÆOÍù ¼×ÙÛ_~Z¼ýcy¿þùïûõΪrtI@ªêüï ¸íWßä|ïÓýÿiòÐç·ëåÇæìò|éãúÏÛö®NW}æû×íûëÁ;¨+éßÝ~þÒ޵뇇Íû›³2~Š=”õñMôʱMM(ùÉMýø¦ÿTü›Rë}ò÷~³s-Ò›öáqÙ®Ö‹Ëåãrqs¹x³¼ßûäâ¦,®þZ¯¾ð€»(¼üç¶qÙjÑUöÊBÎx ©ZÍঈˆœ(·Q“vaTë²ÔºD‹³.Ö{=™ýƽߵ-s×àòwÖ¨/ùA»ÁêºÖèÿÎÞ“(-X¾Ùü‚8ÕgÿØÛÁx‚p8ܯp}ž®,4ýïØDgÔ5îZ ´1#ÐC5Cßö¿§í8c¸`ÅJ"‘u#S¥dZÌÌ©™àë9áÃAbÓÿ™hiVu¢D<ÍNº¥èÿ
+
+B,øÎRE!Öcóp쬑5œVõ…Ö´àzÒ†LÈ)ó 
+Ü¡>Ùœ5“§œÔ@EÐá ºÇÝËdz‰”ò²iRÛÔïãɉ„ñ-L ”…Ð?–ÈÄ€ê“@uM´B­M[{dG7Ew–F÷6¹›˜£w›ºd fG'B;¨4<Elžþ•Úé,¡JšØª Ñ扵‰C1£ !.¥s´Pá°™w‚³ôPÅ°¾$àP°Áv;qê"E¼-¡ßŒºâU:£<»ÑýeŸ´ÿœr¯°ŽýO­IÐc2íüŠ€>lQ»ƒlVyV² 4—ÑWÚiÖ¦Qº©ÐÞPþ'ôbÃ9UpÆ¡¬éAÙ¢œ‡*w`­,¶šOí^þshñÈOàT¶sJ+BAòÖ)²ð½ÏÆÓ'yÈ.£Î RH<å~v6X¨}ÞB0áÊ6Äê
+Bp–äbÖÆXÇlrô‹esÖÍ ÂÄnªžÅ,ÞÄÁûÜÙϣߡߵÕRÂYö)NعÂà5¦,Á¯µÝ7xD d´²ujœ
+ } H‹A‰3z5N=:Ïk²íÐd  â€3Xd®eø,Æë íHC™¿½"áfÌqZ5}ÖeØ×R³Ñì;~\wŸªÔ9Æéù?óÕ²ÛÆ¿€ÿ°—
+Å8,Úˆl$ùûTõ,ߤBA€¥‹Àmíìôt×TWIu°ˆ G"„Ôò’´ò‰¢‚2°œ©Õ· EUKjŸ\\]¹¶.zUΓÕµ'Wª·_
+­øþ¶±°—Xe;©ÙX9\M»éøî½ãf2Œœ{2Ȭ¶†`Ð
+&ä‡_­³Ñv2ŵý1Âð‰¨Ûê‚Ï0‰$/È$â$Ciçá ÅÆœ€Þ8ÝÀåÙÇ%‹ÄÚX„³TŒ
+
+÷òõüúCw6yKûyþ×ëÅM[N‡Ÿ/Þ}˜oü‡,Ëÿ½þøeq³˜ßÝ­þÿ}w¦‡“ 9AÃßüstS
+{7‡7ý?诀6$}òûqµsƒèåâîóõb6¿š\¾¾ºœ\ýtýiç•óK½šþ3Ÿ}a‚Û 6àçyø‹@1È5K÷b“n \·#Êي%Vˆ)ñ©aJ®W£M\Ë’½¯½õ¿së·‹úrÓáì7ïç€Wú֮‹ÂkÑ.Æòoÿn?#G›7·C
+™ë|à“ɂìÔ˜‚ÔÇ0Ž¿ÝŽ RÝ"B |p!b02ã&A¼õ³æD…77áRM§îØ›j‹æÀÆ/üeú¡Å Óƒ‹‹Áöx“‹Á¸ôP yš´cëJ‚›²u…²?혉ǃ?ó
+ó›Ésþ¶÷½ÉÛ´ÁGO†ƒ¢Ï>œS¶
+dÛ€pâRåèm)\nmKOl§§ìµ~Ƥ;í,Ï ›žY7á2¼[õçÒ±•‡ïuv9˜Í9•#·3ãCAc%ô2Bm¡jâh¦ª GÏ Ci̥Я(µAÈá®›Æ+ÐÄG˜+‡šAOa„cœ¢É:Û6’¡¯šJ=òÃÌ㦰á2Ô#'?Ø\ Ä
+þBÒ5 °^³«’¢×¦ià3PozˆRèŠ^ ‹#ŠH… 8®ƒ›_¼×Hþ<:å §{Éõæ5AiFœ'⾋šMÓ€Qn~"ðó0ZÑÁó€R Ñòf_Ì¢ÄñAOƒ‚ãƒä¥[–•!Ø×õÑ âèÖϨV-Ï;cö€=Éð™ ö‘yeO[”¿SIŽqïr¤“šèY(ô FN¨¸©ÀcU|ŠÞƒ8ƒ1«Þ%>£}b~Å7Ï…jdIFš
+;ñËnø¦æÚ<NJ¾ydc@Ìã Là…dÃŲÅm‘…Pe‰p#·"´î^ïo­‹>9Ö±Ù>Ìa*Öœ,AQä¸Â˜-u¹"æ¶wZ$w›ÀÔˆÖŽG —6„MW±SÒ¢ÈnCgÖPP Áƒ°ø\4°JØë'03@„Ô˃͗ ʸuàë5Ðpû+õl´#Ò‰L}×0´ iúÙ¬.¶¾â;% :.صäBg„NªøÜíÝ…ñc "êö‹ñDz7•ét<vEåbÛ
+H‰ÌWko[É ýúó%€Ô×CržÝO–‹´ 6pâ­¢´¶6vkˆÈæß÷s¯,Érâ ín½ÈJâÎåã‡tÞœ’ÛzíNþ6"·?òîhä»R$ùà|'Á—’á+—”sqÅü´ÿN¾àlõµ0»Ï¾mûÎ{
+):⎉ª»1u¡†ä¸«µzvoG:Šn;uìkM©‡@NoHYŠ@øô¶·£»Ñ«Éþù.gɆÅè îPAN¹})°¦ê1/9qŸñc“u¯&Oí{5Ù`¡ÝõÔÆM·ªTí<Æ¿Ú׻ݛÑ>4Æ?^`þ¿Ö"íþ‚/ÿ„è³ îûû?¼;ƒôäh5Nâc†_¹£|rµc RœzÄ•\‚\pbðZ:_†œjž¢'”Z‚³Ÿ4,”juKaò‘MÁw(9$!¼"vàhÐR*ÖHW²Xɧ*Ð9¡F„0tÄÑ….q¬ÅmsGA¼Æã1Æ”ˆD•Ì?©ðF¥±°·pYæ{Ý…¨åç
+çXŠI½¯ðµtD¥?×Þ6d®× Êµ× ¸a£¤×[ˆj—H¸¸ÅÛr׬2ój(hM‰êNšA¹_’"2g>ñY`{WèjTP"j
+RT"”4Wˆ¢¬¹ ÐAþ‘«¬¹èÝC\… Aä$YÓ—£b>tŒkð(wÉCBÈyÎЩ]ˆE] 9¢î‚÷sWb¸ DJJe`8 šçœÔuJ@%Âp`D_‚C”‚ /¨!#Š($pÚÈ÷)â(ÕRD\´QyF$-5÷´ öF¿ŽŽGC1níž]ÿ2s{ÓËË‹O·Ó›ó‹S7¾}¸;w¯¯/_[ÙÅèNÞ^ùâ³GJ<3É!üæÃ]9ˆõ9¿ô·ëÃòOíµ¿q<|—ȸ:>`RÚK”ƒêLvvoï÷/Nï/®çÓÛ/îϹ÷·óO®Y>1cgg“÷Óûó×îO8ñþìè'e¹g¬4øãÍ—g·óf~ï¶>üüãäÃùôföñËÍlåVzöJ´Jt´ß·µÎ¿Ûµ£ë¿5j
+µOˆ`ÁŒPĪ
+&~ÐzˆRžÁ@Uz3MŒv‘ÿ+àéW?›8tSmƒF)r_ùb{àò c„Ÿ(Eê×VLœ»\AǤÄeB4[$ KÙ×a$‰˜Ç£,f|.¤Ig¤7¥^¸~çW÷ŸF/ñå;–ÂÅÛYwLÑÊâ¨ÀqHƒLüÛ¬u­J$õOý­TC²Y±Uá{Àr‚I£|ŽQ[?`“1d“NpÈbBRcÖa^óˆtÃ
+
+%¨ÈVY§ÕVjA´UiQ‹Š‚T[E¶rMJOXO‡r.8èë'Ù:µlÕœ-[ÈZ;c †ý¼6dkÍöx4´§oÍÿÚ‹`ÊÉ{ìºd™<¶Ú@c’ƒ1óA9ƒC_¢¯rèWþÂÊ/h¯ýCàá;J
+W
+ÚoÒ^¢TgÓø¸‘´%ÃŒMÞOïÏ—¶
+CÀ7Ï­µºÔ*Á )7‡“âV6²ËjGg¡Ü¹g–ÿõ|s7p" E“ jiÂT±ÙRãKÉpÅ}6‚zbœQÙóÏ®ØøqÍÄ —~•õö{æû¶õßÃ|ˆGA^µzó
+r®œŽiA¸çsLòY•’JÏ!˜]”Ïk5>_ËÓ^Ë&©«Üç²qמæéô?eˆ]4È
+†ð~ÿ ³š~?ëïÇ¿Ý?š!ÐgPóÏ2Äñæ˳ÛyƒýrëÃÏ?N>œOof¿ÜÌVn¥g¯|5!Ûl~¿¶<ÿn'vÖŽ®ÿVlL;G³é¥ÛÚ¿˜^Íîg·Gó³¦n#ÖâñîüÓåléÙ¿™/·Þ¶Ž+
+ÿþ‡óRÀy sæ>ƒ<ébB“ }šMƒZ´Ùnôïû­=‡ )‘ŠŒ8u^Dq8{föm­½|á}Óo—oÞ¯_­W··Ûß¿žµÃÀ²ÆÇ.¥PÚ±K[¬__ú[u¿­²éÑOÞ·7÷ú¼Xß¾»^/WWç×ﮯ.ί¾¹~{oËÉE»zþËjù^Ü7Ø©='ç߬‡P“Õ[W ëfö°V–Ô~ém:T£§?èÞïÖk’òjÀñW?­¨­ò…5Á¼¨!zKlþžþ8› ñY…ÐiÊVTèóêp—Ù®1èk¼ÿÇ ¦è¯n 5Ö#–mQjÎÃ70N—3D‰
+ÉkVØÏgùìéÿ|é$f-ŒYƒ+½rù¨Þfhe¶cç¢x5Òa[ëyiÂﺭ,¤˜Ãj‹Çz;,JhfËçkšê(VgsçxÜ”s/¤jø$…4IJFÆárš3öåØy¹;ÞÝg´†4š¾é ŒÝQ¥Å¨^l²¡ƒG%…E.cŸK|Y”¦Ù[q«uuRŒÍ{MÄ™~}à¸G¥æßgOñâé2s{¹&t4ÀÍ,ƒàÖ8ãf‚FNxÊ'j$/ž
+$ÁäZ:LŠ´&­h
+ŒR‡x"vö¾G_$$3ŠRnìŸ*
+ÞÍ#Wç±Ò·¼r,Uâ3K Õ¼ÍtŠ —ë'g¦…Àôä™B–ìA8_[ê{|Q‰]
+Z ÉÚ6¥ËÙ¯KD„ÙE{¢oùÞ…¾g)ñ~nq} z®èæ†.ÕBànSNf¬ëY)£©»T¼çáj.›ÍT‚R–\|6“P-={A
+P „¯"n`?¯0@]ÕH<JÂœsÑ>‡eu± Ž÷câ“s:ól¹P²Q©´ù)Ú Å–Jú)§;mIšTæ0ˆUYhA/aæhä- ÷•Â!1˜²ý"W
+Á”S¡r¦Ùq†a9NÎ0µU936ZKÎxÃCœ±¼<8÷Ó9P<?iË`ŒUðDpê#ŒÃ¨ûŒ'BåBoðÑš¸Hmé@
+, ­…ÉYÍ‚iez×€ .fë ¼ôv!"©"½æžÝ8õ½í²º“Ћ^èY@FNp‹ºÅWþË]ƒ®{ósÓo085œ–°,„øŽ=žƒ»À`Bl÷>y Äm ùÿ?3tW( ¨¢'B°’À²ëz§¿0Ôu%oN¾Çy ^®²±P½àŽL½ž‰¢öoÂÔh–;|¯¾:ñ/=Ö’ÙD ér†Ï±,ÕB¼è:‘…æA
+ØH ~Ó€Œ¦š¤âpß‘G±) ì>1t‡†%¨ÆÏ=óÉ)n@\ â~¼µ®¹@•3p˜&ÜÕ`Ä’ Àb B4IÔ¯(×f ΪR–l¦@3Ôši7MVQÞ(4QÀŒ}—Þ5$M6ð”Îû2`Kjdì‡êªðˉ2²=×>usÕleØïÇþOià))ô›Œm.!³É–Šú
+œÂ× ðNÙåáÎ
+ĺõ¢îåIK_^PÜ=WléÛ–½“f~Óûë‡[ü,ÑÈDÆ#ÀZüùò]ê|»¬2»~ˆý~.ñw-¥ßf6JV‰·¯æ½Kþa@ÄpYeÍ—’ôEÃ=f"i÷(RÅÝ¡tòš2õÞ'Mf^ÖÇ—ß²K:ö[^)ãÐ 5óNthœØ‡ª¸‚åH¡ï›Sã;¹tKܬ½Ÿ$;Y˜M!Ý;Ÿ&Ù/ÞàêÒÕ‰rˆ}æGu/ü'÷áµìÉâ?5£ wVâÁåÌÛ}³°£%•b/WW\œd‹WôMo*˜å
+ò7‘#nͪŽ¤°¶Õ„±ÌÒM‡jÝ^1˜¬mÐ@¹ØIš$–Øû«U&ýã¸9*ôß®4î ¤NðË‚Œ­Ô¿›BêQ!çس¯ÔÌÑ<ÛŽÿ_ÇN8É宨قTQƒ'+ŽÌ…;2,+÷Â0‰Ë‚œtjƒrÝÅ8Ö¡o‚Ëa¶ußgFÖ™zÍ.øðHKN[’k™óPÁO[ÿu±œÕÿ?\~§.:«jŠ`X *eP÷Æë«šûj§*(é[2Ô}yÃœª
+ÅÕÝûÀTààç ¨¿NwÇ¢¿äRz¯ÁÃ*ÁÏ 7"Où‘EêÑÑ[NV;æ4Ïòî¥ô®B…çÃ?íÿ—å2‡ôûïj«y1=_äò£­ùC[§×ôá úò¶&1­Ó3_‰HcÞ>©¶\u tO¦5õK„øšÅèÇ ùÆ´ÕÅút]@Z í›%¨.ÏÈòÃ3±@Ößf§v›­ˆ±……p>¶ªÕÈ.Nˆ‘¿6ùKÎM_7íç®Ñ²YÂEØþÑ€x®g›¾ó¡\¿Ö39§í¿©gØñè¡ìñ]ÏbT“#¢y UñÁÁ
+]5Ô÷ù¼`pµ¡µ=ÿ‹¼Õ4½ß¯í-1a®;.‡Ye3øòåÆß&wÛP\ ¶gÌÅ¥ÊÐÈ®+&÷$Ú¤KzÿÃÒŸåhÿ»g[`Ì3RU°B)¥0¼°æÔИÊb h"â`¼Nëðö¤æ³÷L?g…Nºw‡£ÎMspœ©\]y`÷²»ù».J‘’%¹|_ãlŽ.âÁÚw¬vRKŽk®Ôë •;{wfŠB…¶cI{3ãߘµŸvg:Š›Ö3bñ6?\a8¨y½êÖ÷“>ýW¹%
+7É€°’lªM—1N½/${—Nµl*핶؄¿Ys¤‡&#æáV£§õŒJµ&±Y®U¬ï_½Uy%V\ÙÜ ó´…ín3ÏýÍUbœmì&€3v†(®~†ZI†üèFûÕFç±óʸ4~õø!Ÿšÿ÷%XßTþõ^ÌB±WvO†¯êÅIÄ<L‡}©‰µ³¿–ÛýúòϹ¦+ÞÎ,)I :ÛË°ž^!$a
+ed+Xöû ªVSoZŒc‹6‹\giTùàÕw¿<ˆXÿåe\h¾DR±×šS èÝì6Á¯ø×3.è$‹8ÂEóßkg¨]¾È`4Cö}ðœú°Ô] ®±UÕ££1¬ÊG;äóÓY?ÏnÿS²°¡
+{2¨©í’C39Þ¯ùé‡ø0ÍP•¢àãOÒw£_WOKîÙVœ!ì˜él¡gújA*]9[×±È1™0i€¯²ôüZnÅs|£¬Õè}cZ¢N>cå‹2áo¦åhQûÕâr¬&nwåø¬Uz¿ö¸ÚÖ~ òly—›}÷ŒLÀ3ex ¢ì«D:Hœª´[ˆÝ½ë?¼QÆé°ŸJõ‰œ P¾*ƒ¼¨«vñf<-áÅÉ4¤mPíRО’ëÐË”@þz™Wx?jÛ.ÄT¨¤Ûj#}xeJÈÕuûa¯¿^†ÓløõqrÛ>JÂð-fÈre^qÆplQø±[s©Þ,Â÷38y°®m ý
+õVšYè ’i²áË và|v#Fó Qâ ¬ë’"v
+; º·}‰lèËnÒ¹Ÿƒ*ŒFÝÊÏÜ«;¨m=·‡
+BªL‹Ñ^®+ž\U‚ÿ;Ô!ª9÷ËGmDQ2N Ú$:“`"óö®ßÚÕ2-ÂhK Ó½»êÔ>û².Þ
+H
+jhtž‘¾Hm󒙉@–¼ÔàpÎÐò üR˜:ëò†)¾ŒýÚ µ¨ÿ”¼-[òeêâ.¶Òè>™£¾È—õ’À/e^’8­*·²ë©oLRz Jò˜÷Œo˜É
+×ÝÜ\H¿hZCm$üœGªÑLdžgrŠc²Ü Çö^b}L¾>7†¢B¶Õ«eÛùz*8÷ÀŠeÕN×9ÉZ¾ö˜± F2&uXóÒ)êbÑäR5숊·a;W—*4ðQ)¨,ÖsKªÅøÄ,ÌæÐÀðºÿú™Öyb¦­…|pKö3ýªÚ†òâxøÉT=÷S[šv¥X^Û—²#>V,ɤ"º~…mÏ•ö~Ø-U?3p)ƒÒ—+@'ï¡B¯]éâ,Ïbßårg‹½°Žº·°!Õ3ekuÊ*­¸|MŠ/ÃB'<ú
+¢Õu ¿ÜÛ ÞèI­ä™¥“fJÓ%ÑØ2Ç“ôïŸK«aF
+Ùv§û2 ñ(•5G—
+dòaež½ºÂûfLzÁ˜V2(! Þ¸ŒæºÌBP5ûX0[‘,´§`\ìg'),v2_røɹϵ|Yj¦2S#MÂúQimF¡µ™,  ïâVåK¤j—õvo=ÛFu~¦}®ÊvÛÇ'Ÿ/ÿ ŸÒ‘Ž—¯nã}àß~À¯=¾ô£Ÿü2§/~þõ«ß¿{ó—·¯ý{ûâ§_þõ«¯¯È'¿xýö›¯^/¾|øÇÛoŽßþùáïGüéÓÛ··«ÿåãgúöo4CÍ*Œ€4h‰0«€ïDŽmD:ò‘üßËwúåWúáo
+ýóhǯ?þ)¯}ù»Û\±n¤ya—ˆo¢¶Æ@ÛµY¤—Ϋ»s·ö}Y>Üö÷à¾ÄÚ?EÒ.W¤£(õÓrD¶pWï%¸#6šî HîõzÊVI‘D:
+ˆð@Š=šY:6òUø?Á„œˆ„tN‰Áß;öÔ2ÍJ\1á¥ïg¿tÅÐr¡h½÷Y »å%ОÚ댒ϸ"áÌ!Õ`sèHÊIo—#ÕúN!Ëüx Z–þìëpµÊŠ$¯+Ò‡GVïY)ÖÕââÃÍBŠdH–“Ñ>*RC–YC&
+4›9Wm’j\š_1–ÄV&?"²™Wd´+BÝYíúÜÌý¬dÛî9Ìî`¨
+vb‡·•  ¤aCWë²þX¼[£Z«ŸZö.êJeÅ9ILéÁ×\jrÈ
+c3á×îÅ¢‡»æH€F„­T–
+I”FH0¿+2©ÅàÔ²æHšÛY*¦±¾jPW¼·k¹j—Ð% Ó¢šÍUA‚¥º"fÏŠD“ŠHÑ2ç»ìÞ"v©*¤~
+§Îq«NóFL1¥c`ÚòN*WHtJîËY.}3£0Çj×]º Ú…"Ùà/¼écÙL²Ÿ£WŽ)4"°Y:4F&7jRÑy|­‚_Í“>Ì®@UÏóvlÒD»zP”ÛŽJæ·Šr¬9ê½®XôÖënmÓoϵ§©GiØôÖSqI01LX]wÖ÷gíqÉ\á×í5Si×#Åp(£#× $ƒAu¿@ œØ‚99H41KL«»ó~Ÿm?&ÎXLj»ÐF}s%;~Óýîn*RcRÄ«¨^rZVE§ßJrŒ@8*h­ƒ£”oàÈíŠh<¹œØ³¬éX2ñb08ÆVE¦P¤Ë!ørY ¨ õV¾†R`q 
+.òž‰DF@°BmyTÒâ4g¸ G†“Ì!ðÕFærŠíGO|á9±H£kËN÷*^‰üžÔ‰‰®›«_Oœ)R±S~ZQ“¡FðÞd^Vl|5 N1B¡%Iã
+ÿóŒVIºN[Ë­”æVdé‘ éÏغ³ë]èG
+΃UD„ȳìžw©j1ø}y†58ÌÙ,A© ‡|bÒXÌÇÝW ‰CøŽWÿl¾ŠNÕ]bâæ!œÊ;¸½Š@¨>¤ÃƱ´ì=‡÷¡8u!ùÂñÔT4=³÷µ+]Jâ ’8ª×4†PY×ðj,–?íhãR‘rQ  »c+½js|¿”[0>G «~7«ŒæX×++k %µ«
+{\ÏP~$Q…„fŽð}É¡mDÒð)ŶŠ
+9r,”h|G Ð|[åkõ}¬{ÑøŠq²h3‰ ©‡[@˜6nKõíÝŒ|RჀ« 6¶¦ŽK`"yÁOÕpÅ– åö"RÅl´¤­a
+Ü­¶[QNŒ™'ò‰û.ŠšMNŒW\Å­¡+máNØ ´7lð| ÍÇ Ú5À{ À9ôüº¹¨B!þ§Ñ¬]ó*‰ Œ·Wõ®®}Î1.4ù•EtÃKôgÄd³@ ƒ ‰MuÚ«ç:'n@8!slŒäyrñ 3â$î˜
+º2ÎpH—dõÇQæ GÚ_zPèÑ<Ÿñ$-w”ª a
+Dºè]L•I%Þª§`O¤IÕ+ñ4p´nTñP½ÉÛz
+.‹@NåÕ âs}„—tR ¸[qx~ñÞ#i¶°­mò}þÁÿ©W,¹¥SžøW[4yž/Ì }-i­˜mìW¶ÀÔ9<"^)x(‚ëû(_i¦ºëˆ
+‹MѦ–ˆ´^JË•rß'çÂÐnE‡åž/±ª²‚Ö´ˆqŠ²ÙC-õˆ Ó§‚d}ËÍb“¨VWÞˆêõò‹}2Ÿl;Ì¢ëYvR‹Åi‡BÚ-G±yËpB:»h;ÊS¿x(âid‚¦Ñ«E ,Ï_°šëÚlA¹ápïªj[§qFxíPÜQT©ØÛ|‰z’Úî(ÑUâçƒ=_rèDŸ*>,AÇj¿¦¯@éÁ¤»yþ¯.QöÆî›qBS!¤Ó±Ò/—Ò-–0jk@W«2›šgüëKÑ|Ï—’e˜Ý™ÏÖý™ð:!šá5ÁQAx…§$-
+‘™À,òKÕˆ²Wœ›7ºÜ8Æ ù¦‚ÄÀ •>n°6
+Ÿ)·ç¹4“Jë4·›o1†{oGâf0Š‰8x¯{_;«TsKlœo;ÅëDøÐŽ\÷Y¿»ÃçJ¬*,Á6_ØpÔk>&[
+ËOÄà ȉ“ ч£2îˆnͪuGŽà—Zªõ¶:ÔGÏ¢-&<£fž¼W´)>|°Šzî¤Zøø‘VDï#¨2  ¦ìoû%=yöPä%vÈáEN`ŒaÁ‘˶vœÍIgm¹%
+ëbf òh.·EmŸG‡R}Ëâ Uf(fæK¸Ö9²j(þ}˜Ý‹_Ú¢vPbÈ< ÇX"0)™"îú*VÉÓKñy¹8!É4•>
+e)µ¨ëóP{AÚ9=ª€ö)Ê[bkí+µCþ‹÷9"xþé÷!b&+Õ䀞›kΔªÑu®
+.2ë9bÐÂåØ
+ÖàÑú˜ñEîaX£ÑžÝ÷å­88Ô©C«ÍœX2âoéƒuJ <o§ðìw®9än¿]V0 #óì}›LÍE©[­ÅÑÒ®g€NfR7Rl­ÁþK?ŽÅn"ñ·ù Ø©.ºRò-9sx79O„pc“¡Ól u…O—5—
+àk`
+p®jºÜø 5nUÃÐjYØUùöèe›
+×dß¿tf{)lÚܘÉ9 ëJJ‘ï<5¸C—è×åyu10(›z͈õýÖ¯~ü\õÚçøÚ¼aÓ‹fÓÊ9MâìÂXCû˜Ùè2„öõsì!¡PcDQqì ´ØI‚…Öyt“•×Gý›I†rqN‹¦´ì€zšcRÚþÒ™œ”^²¾Œîµ6-²©ÎÌ ƒÔ×õœ®±¼-
+´ Ê»™wy0ªæ67Åæ÷ÓQÂ<Ž<Ó·¶î-*®·7Jû›æ!Ï’¶8ñ!ôµßŠ!Ó²Úž[ãÔI±#“e•cݨx”íçÅLÁ {bC›@­Æ²•%ì(àÕŒpOß>
+5¬Û¼ƒùÊ‹Í>¡ØŸEä¢ô±sáÀù.¯­¯ÆQê‘‚êÇR’Üf~Ç ýõoèm×jbàób!\У<‘´¸0-׺±Jó©Ûú4]NyEk¨ ñX È£o¾°=)sž·¥Zt$ÑâÛ-S
+¿©f‚°Á3@.²neµs‚å\­žߌ‚· f{ÜxZm |mjoÌ;d¤¼Þõí©´‘eþoS}àK˜v÷ܼX'¶ Vk±¬©b•/ª¥ô71©y/^»¦Œ!R®ð‡¡œK¿åV;”¡N
+÷~CEJWžP
+ÿ·ÛïÂæ²Çëy¢áÛýñûŒÄCdúȆk¥üüáXð:cƒ³{âö-§JUEͺŒÚü¨ ºNs$ >K¥
+x"
+(÷((eä’˜Õ–îaËnPä(¹ê
+ ïÃqÁã·—«Âà[%¨}TkL˜´îîŸ0M%Ý2IÌá¶ÉÛ
+ØÛ£edükÚ9 *‚•k¿‚¸‡ªÏ@)$­O^MÒ˹
+2y™ºDJa\´VœÔWi»?¦ø(ñN/²æVM,%Xnç¿}ä³ocµa«9¿¯“br˜c/ h RéœY…\ óãÀ*¯êºðû‡˜ »$s‚”4»z­äÀ-5÷ºŠEã¦j,b¹i¢ÌõMà30kÜÝZ±Gh°œ]
+¸®-M„¥ŸªFBzH;1 ó‘6ìUŸ:†k›T~½¼N°¦?ÖÙS ¨ŸÑeH†ÈsªŠž«‰dz\^ýXØ_²ÑR‹sØŸ¤ú…Û€¿†c÷x^¥Âܶ[ BŽCÑ8DÃT0£€¡S\Ù’.õ¾ù<éh"(0tZÈ‹ì¨(FÕƒ¼`wG*ƒ—Fc?JCÄViú·)˜I7T±6¿ô'ÌcÉÿüÑtAõ!Èž`ØÔIOØ\âwË—Hq \f[¶ )¤Ç᪴4å nÎ'àø!Ô”¡Þ†j‘3‚Øÿêgg×ìÁà"û¢|× 'ÕÎâ¬>õc¼ˆ]¥Ž¥+ ],S=õi¾Sç|[Œ´è-œávg¬£A„õ.œ‰¢æm™{‹~TN·bèI7q&6Ü/=cŽÐÑ<• û[’˜ ¾–õfË)adËÆŽÍ‚/‘kYÐÂoÕod2\}Pî@'n…I|.ðêRDŧUÜNâõ/³CRª¿Ç«búO84…‚½¡RD=-‹Ï~º J Å RƒC[.pEQn
+ZºÆ¶¹§jyŠaÄB¨ñÑ}›*N€³»Ò9Éþë•òï-‚ûyê[†ùé ¦JÒ™ÙÑüî@Ç“-A`åÙâ²G ¾Ð­#½g§ ?ã›ÒX)gÂS
+=뙂ßñ¶œ¸,@?Ñ\¶bi±FѦ£>•lù÷&Ðò`c|t4+$l“:ÚçŒXß»Å%t“EÃ{wØ6
+¦=›%7žu^ÉRÔUIc±¥¬ö»QÊùŽå”;/­ÕÛ‹ßȯc6E`¥y­ÁÊj¼e¢E3B€ª½;ó}Yöý»mD:ÐÕ .ï…O»8@Ý$­I#ß­Cz¦='ØQSš£ÖàÄõy¬¿(*‘J8œ@‰:¡`S²A¿YíÚ£¦é$²É+3*¾îÆ~ o€¡3\áoaýöθ± Åˆ'_)Ž4«úÓ vŸ;q4Ë=#ON¨‹x”v¡¿…^¾ã¨~»™í¼' tA¶S}º_®›ôh^_±BYŠ{ãK6Zkñ´ÊnÞ°üÚý1»œžF[{´Ÿ\
+Ø÷ üç3ajɸ²g¨ÖÑÔg([IS7êÌ.^’]!~ÊÛ‚X©µoõ“Ü[UæjTáºeÊèÑ?M¹íÓÛ­§f+µªjßJŠà-Mý±¹ÝõµaÔ‹K6¿ÑŽËä“ï=$æ.ãê7PIh‡aýÞDZè eÎè+ž,:Ôêq#dÄüÌ*ÖáT)è–Hˆ¬ÅÓAtêZÛC¡@:5ÖZS`·ûf7¬éz0oÇÛµˆ+¢††ð(ùP2‰ƒ²„ÖëÈ
+!·½o$á7TYGÈf#‰>^wòPµÅyÍ)°S{±<5–r|ñ‡ð€bÑž†k}(¥½^¨î³H–¨Â {ü(u§$Õ«é„PUŠ ÀÒ¬}Id÷EÓ'IçMÑ:‘b[†=>”¯¯©$WnÖÝ0%ÍO AÎåþÛR7kŠb7´¨6%ÚR¦]A-é+8içä#Ú‚ð©T=ÄÕØì TªÕÍë%–q>¥ ~Hì^”û}Ѻ@:pM™i“p¤2Z³ö
+iñ;¶Å|ž®>Bk‚Bâ’®û¦ ƒ «âw™Åžö=ÓN„­Æ6(0€r)OuB™§ÓšÒ剑‚bxÌ ¦CljPÕ© ™X\Z¥Å¦F¼ÏûþŠqÈïá&ÛR¶¯h«IÑ-HdQÊ
+¢«hmOŠ"€y)åâíxy"ƒÈ ¿—¸1Œ ù<š÷ÁˆÞ)#<]SÑJ¾‘”Çï±yÖÒ]¬“µ¼ `…>…<ƒQ.¸Ë ÐÓ$Óo Š™ÛV•r{ ¯0Vá«­;—óé(:cÁ]{ò„
+w¤þkKš}<41—Vä\ÁµŠîß &ЙòXÜ i²‚%¦s“‚ÖÌX
+DìiJdVÙtq:Sj+«bbh‚ûöÐëqqAôYr‹LµÐïÎ e#så5Ê›
+ÝÆœï…Ôn
+ôo@&Œ€ƒ#öòR-z›~I¡ BàovhSȘQJYxèszd}a&+9¦…‚¤ìsÖÒ:$‚!¹Ô± :¦Y÷­uÑ1C
+c]‡,¡Eù]ý¢ÿH¯\ šNÚxãmæÈû(q>ï™’{Sie{Š¦„Và€ ¯ÚF×àö»Ùìl)ND3€C‰À¦¦7Àº«Ð¼¤Ì)IÏÁQT‹ë¢í5›UÉGKži^êlSź5É­® ùw¼@
+f“Ù…ÃÝUfa‘äöõ½]Å?ª ,¢[+  2€ cµj·ºÅ¤"Ÿ¯ú}‚C •jÄ7*Z¯5Ø¥†N;@õ ;µ¢ðwŽZd’í”´ô/àƒ±OØzŠ9Ü>]A[×0rš§5¶P>(ô íÁÞ‘°ƒ2ßC5@Z*ø &­ ǘlbÖ]VßP€;+À[@zª#1KóŽ¡‹–Ø('Á¹ ±:Ö¥‹7CŠ®ƒFkáùÞòn<¡aZÆP.ÖëÂ@ãÕ‘±ngÓÓÏ:À˜Ô‚+Ø 2˜€W^C¶õ=4{XÅ­ qØ
+C6ñjÿbdIᘥèô¨…€'ù2‡ì5¢*[–M.¯§ªÍ’Rp‰œÑh©ßF‹ÎJšb“ƒÄ|räRæ6ïA.ÔÃÁ–±1Ý;S°¸ÐXv¥ÑJM‰Y—Zë¨da‹Â-
+ÐÆo §ðzòª-Rû ³š7gϨ¢Œ½ÁýF1KÍéIAñ˃ØIeQ¨ÚäÞÊ_–Í>ReZ­‰),ÉŽO8çkÇõªá¡…[´$°Ýq.>ðhšˆð³ä¨N
+æ0K­)´zÈž:qÂ>’ìsh×Öð"Lâjˆ4xRP½qè6s w¨¦EPŠÚÉwe ¨½*VË€~Zd®=¤)¨ù‚›C´#¤žÖþÛ¹›¦GeKÇJ-iØESD"
+Ž.w“wñÛ†+y”.NÙÇÐo=¸[±˜]ÞÄò|‹>åì$ë–bmˆÞDµ’"
+èsɤãE58Œ ³'û%uzyØ4·Šu}8%p„@ĘÓmÒ‚0j-VM´ ¤/(O»*ìõBô¤Y‚¢Ä\g±‹“Eßv{Ã8?Y˜7.´ˆ•tßeåÊö¯?ÿ?W™§gŸÜ>LOž²ÌÓÅÝÍ›»··—Ó×ÿ<sœnî.?¨ËŸÜ
+6ñ,ãÏ…$@o`?ÀZH¯ušùóìÅñüú³sŽò-sb¿üçó‡‡ãýmy}uq|yq~Í1?¾¿ºüãñÝØvùîpƒ___}ýp7øË»7Çÿ9ð£oßÜÝ?|7„#œÞÝ]ÿpÌíùW×Çß^]¿þÞEÛïW&åËn/_¾»ùêî:¾×/O9Áíyòñýñx;=¿¿¿ûæéÉ[þÌ´ì<ý‰¿KÜ{ž^½ããüð/BßLëôÙô·¿ÏÓ%ÑW/Tb•¨*{’-:¤ø¾þî;-ñMŽç94WoÝ{}üõãç>û‹oòa~øÑ€Ÿ~=ùüööüæx9½¾?¿¼:’ç-=«AuË~ÏÇO_Û¹ ]þø¿Í!½ÿ¡%U•ÌÓtPÏk^Ýœh7öãÿ?5KÕƒjůšíô"°b£ßÿÿ³v<ýY;.ø°¶PÅ-$¡OmÞy:=ýõÕ¶×q¿€ÿp^ H–šûyâ.ICˆ ŒäX-7’ r)ð‚ØŸªžË™]®d~ˆc §wæLOwuw‚Æ•æDÿ鳩ª¯ËGksxÍ® ½€IÈ.í3¢Ðt!Ñ@úÆdsÄcpæ\“5-ÑNö4)â»ÑŒ:¹—GwFÔkð¾»~–º¼âÿó-”|_ùão²{(+Ã4ùl?¶oä6ó0Uî`\A‚õJ×N0þ0Ô‰Ê#¥€ÐøÁ8Ç/ôb´ÛÉOÊÆ#¶ñî^Òøˆÿ±½¶Î£¦³ÏÒL~:ù–È|úæv3Þ.üUd
+Añ—ø,M  •NƒibòņF¥KžeY|TUà°–¬‰oõËœ|?ƒ!b
+Çr¦ZÈR´¶àBçâl
+ áÆ sÐi4è¬È”Áð]ˆ¶øèJuwJ¦Qe™r1CbÝ´?VÊë
+ú7TF‚¯Înîßm§Õúöö#Êç7ÓòáùñÃô ˆük™xÞOÿúùä;|ìC…½¼<»8¿XÚ%ØKÀäºT{ÿ¹½Nü·tδ¿ÑìðiȽ £\«
+&°qƒLÄA2•SÕfIüxÖ¤@òÐLh@†œq8-° ½Â:v“f€'¸NòÑ„)ê&FHzæ1¤°"Råuš ŠË e9 Xv±˜1flÄv†&éŠ4YMz㲡2<ì9Ã*zÚ50 'äî V7GÇe™V²lïl눶žcÕ,s@»¥½æÌt;z …¦.·ü‚¢iû
+½yûÂV(ý”¨þæß³ŠÂàŠßý@–0ñûAëTÆ´dƒÙ BYãA6=¶HœÍ©;ê¼å‘
+Gu>²¾‚ĔǓ¸U¦ ÚN gÌÓaÍήi*2”­Ÿ:€È$¼ÛwQµcô1fqØL†ÝEtŽ cÑëÂðéÃ:òæƒ'­N°/¸à›®ÛV½µ
+´¼Îã¯#¿c¸îÜè#µ‹õw”uØÝüQ>¶ÔËK»²—QŸ­VK{áÎ/­¹Øçcgÿk>†™‹æýE>öã…Grx=_³\žm6ÏwW÷OknÝ»Cñ‚ÿG²³ûƒAyspðpÞƒ1½¹Ú®o§Wç×wÛ§íÃÕî¦ÇÏhíç³ÝûÛíð›âpª¿]Ý?ïnvÛÇÇþû_§Wù¸ i]éË—‚º¹/]jsL_½Ô¿ô÷ªªÇ±:ýÍû]¿¹ ÿíîñi½Ûl¯Ï×Oëë·ç×?®?l9{›¯/~ÝnžéàþËÛ6(¤éû‡ív÷µ"ÑÓ›·»'ì«-ªÑÜ]mß||z,üòÛçmù°y¹ñâ×Ï÷Oó5½Yâ…û{vëw·ÛïŸ?Þl[Çú[ÕõÅîæï¿Ý½»¿•µ»^ƒ]µ¼‚;ÈØ?·›§û‡éçõæÓ´\ïvۇוºëéý·PsMjž@«CÊ2<èþ-ÊE±xmã”0ùL¼*Áž0¥x8hR o[Ì& '28“0(|ÀNT‚9Å8ĸqüÃs¢¢j1/@I ¦iâT–ñ:£5‰©öhu˜À`3\'
+ 쯋ÞïÙy Nâ°v«æ .a`ô-ä^–3o6Dp3ž!I`FCR6LVrCyŠ8/¦Œoo£Ae{¾œç!DHZ2d4B¨ÿò"§@âälœ°Éâ>¨
+ ¬c
+B²Á£
+t1â·LÅ.•0ñ§ˆ¸+Š"<Õ{E pé8¢aÅÄG0ø&øI·qÆ ¨O †¼'’ëÐún ™þÙ˜a¹zÔ0çȇ×`8=‘¾KŒš†  )#Cƒ¨>æ+¹(†ê‚ì==á‡Ï–“鞌=äEÇ<8ˆSô~ÑË\MtŠÔ ô V‘Ÿtž
+ÂÀ»‰¹ú$ P¸ž2Æ•GÀCÇs>;Ñ4 Íð‘(1Cóäß Ìþ"bRQT-SxºA§á¡–ÍpZUWM7ÖQi3u@À`hóêd0yß4îI@¤› õ
+ñ5bÓc ÌHÃ×Zø[$ЈFàáÃ0XpÖ鯫&ªû2Ã)#Ê@M€¶Ág³ƒ)OŸåhH¶:‚Þo˜§ÍI7)9_#V @§Pö¶¦Èµr¤~Öx܇ö‹©z)x}[Áé¿`ôœ†Œ.™AMCtž
+(Øl
+„ÅÉmdÄŽ*Ö¡&€~†É¿Ððe]«wŠH{RýV­N"ÕXÖ&ó@j£½.•†Í^
+vлMtj‚ÅV݃4díå:•eÊîF²,ÓDòR,ö²éÚåV )™ Üü<o”ð¡^¼«ï€ëè _ñÇ&2&[µà]*´Ÿ»×ªž{4­Ø´Ñr¾ÞÀú|ǯíÏ_8íËm)ÆÇ |ð\¦ö‡]Üeæ°ü¨0Vy.‹nY(Yý÷±CÒª6ö’@©à™´tiO¡kË|)Þ/C•ôÁúªäS*ðv²ß°Ú8Ïv×µQð¾Z쵨„æ‚<‘p§›Ù¾%F¢Û¢ˆ ä|Õä¡‚:t#Ž jÊÓyÓS
+H‰ìWkOÙýýî$…æ¾É'{ìXÎbí
+ÖÉFQ„Æ0kM<  Žù÷9§î<z¦'ÁVv•X+/tq«ûVÕ©S§FMöm.6ª£ØšmP9´)–@ƒ+ÉG•c}CÔÉ[5jz¦“æçæ7ïš»F«—Qðï§Ó&Ä6
+Ú§®hðÁU“Ó6)L‰N !E«Bh‹Ëòæ­vø˜Ém*®¨#£[c-¼aqÁ)kàTpu8ùR̶ÄZþ&¦ä<ŽÄVgÅà³<[FÉgë¢ø¬L©-qëLj“.[Ï>»å£qÓñqm ÚuœŽ\‹äv\`:ä¸u$Õ´®-¾ÕV³ô“pª~~$-±$·N ¾X¹á2WGºÙ‡¤ÖÙt¶u1t2ns›m¤Óº*4iÕºn0$æsYY>úhªËÒà‹¶¿[g7Ç‘Ùbç¸iu
+ëãÆ·&¹¼zL¨÷·'d Fµ†U"øÔÊF»°l™m,™%Á/ õãOW¬‰ø%ycRT_¶“\"p×&ƒ6±n“5ÜÙ¼umHÈ· ~¸¹ø°.¾˜yÅpS¬÷KàŠ—³›‚ÖÆØ-0î›b§ÀºÕ9à£=
+*Þ gÔüýù² Àq6h[ZoSª ZbÌÕTŒíT¾´Á§Nœ4ðõ8®åðž5è œ£›{{T&§°Æ3(€¶ÈŸ0 ž†l‚gô(¸×Ò9y];ncsQ»Ð9åÚìst[ç*‰¬mèºHŒ­ Hµ©k@c1]'˜rÞrB€%„-C1fÕ¨MhKµŽÔéæMÙñ£ïÑ¢'->½Îh´¼Éz@ntåµ2äk“¤Tµv0èÀ®]Õ7€­q–N+ÓŠí;†H’[?§Ö_t|
+‚E"S2š$¥ƒ—ñË(1¢`ñ2†%ʤؠt°H:oôV"@ÐÈJFÕ¼³
+/®¯gÛgæã÷³Éë»éå䶞ú=þ5eÙ8ªÏ_Í/Ïî¯Þ_ÏäÙŸ¿À æKËáéõÅÇÉâ´Ùè3v 2‹q
+ #CÏHÐb÷xø#~ù;LÿP^½Uý›V—u.rŽyp¾â|5€ ‰bÉ$š\Mà„AK†œó¹9t£ÍÂw.€ïˆzè
+ )¨ELh©°šy‚ã°¾hDEFà'¯®·Â=@Cm
+)B®Di|å7 Çò ¦d+Ñæˆ[þ¥Ÿœ“æˆ7M  jNm©DŽ@/9û Tâ¢i÷Ú' VLÁшŸÃËÙQGÆ¢n­«Ö­
+²ðOÃDÔ”Ãp—!½TxT`(p™£F¥ÞD€hüvDAR¨+Ôe#• ;LSÕKÆ ÛÛc‡$}nž©ã3tÑüƒ:|ñâùÅÅÝÕéõBÚ¡ƒ` ?Ùóã.'"Ò€„Íì tjE¯J´‰á:ƒyØàŸ)Ù*h=³™¹BB
+Q°ªU»™»¨nœ±™W×né]îªñœ .ÕÙµHßqv!;YcM‚ã—4k?’÷xÎ~˜$Û
+v¾Ï[4
+Ö¸]Ó ME;1a-©{©èX\'hˆAú0ï0xéÚQ?;'CM ÖB/•
+U hÙn„ D§ö¢®Èߘ' !g*_X†„n)Z»ÏÄR4Œ\› ï‰ÎèØûYÃûžàÊ6ˆ5àâ”L é*orƵóñσ…ŒünBkz¡D¨€’‹#ðÐÕÖ+]yvñd¸ybÆHÏà7çA¼
+RÂá+sìn •vöû›©¸·+À¸g[@ÁúûžïÏŒÏÖ€šôö@®·9À¹¿;à`o{Ûîþ°çÓCÆ%[ľFÙ³Yˆññ»#èmÕøØýìo4>aÇ@Ðý-CŒÞ3ödëdÈyTk´}U&ðmW)õ¶™î#‚¹7áîN"²à­dÈ$ü“ýªÝm[G¢OàwПRà:¢ø!QÛ_Iš{±›Û:HÚ‹‹E¡Êr£Ä¦ ›nÒ·ßJrìXr¤¬¬¬6JÒB"‡äpæÌшûæ… ZSi;Í
+:¿Ó®fyÚ°˜<î´,G5Z; Œí´.ÈyO›Öíöåoßv˜Ý#št¿¤K±¿~üóË?>X·Ž®’ð.ÒßØ·wÖ{Ó(o`“y ÑÍ~Æ#•(ËÎÿu»fv®Æ׿fß“)¾ |ýö)Q—
+þ}¿B=8:'ß#ët±ZÞXüˆÖh1ŽïöÏYéäY0Æ?Áü&3ËÏp5Û¢Ö\[£Ÿ<ïš¾³†°Å¦½Øk_`j¶ø}ègí™±¿JVj¼mk¶(Xà•-صM/âˆÝ€Á‘‚äÞlm}v,Âäñ’`e¶(0ýÌ£E4¶ ü“»hﶩ¿O“E0µ®çæº
+¶¿‚­O‹ä>5[<¿êDCàÀãQ
++¬oþ{è:Æx¨cb×›Ù9À¹Þ“ Ãw½n›¬€¢z¿r1`´­/J3(èÔÌ-n[ù/FʶL¸@æè|qèJ<ÚdŸR¯ZìÖÚ)§Y§¶9ô‰[”<ãLkI.ã[p8%ÜÒ€
+Q8ê=5ôn¦ÜôÂP@кy¨GAÑ Wº Ì@ R5/»ØÓïOÙ YáwÍ g´µ¤ia>u†Ál±ñNˆ'9sxÍxÔF†ŸÎ
+ÐÔc˜ô³Þ[šSÓ,Ø
+§~íÒîó9ô{ÇÜ?$Ÿ7NfXi ÅVBYG_–ÑùÏHÆcƒ/<â]£bÜ„í
+×q…S¿vi÷‰Ûî÷-l Žä©§Ã¶°^‘V "º Q-
+×q…S¿vi÷ù»î÷l}ŽC½ÔÕv²^‘v "; Q-
+f™¤ 2UfŸ„¨]r‹ˆdw‡k„w/§¢³DW±®²´… —ÈoY"3.)GAìùŒú9æœ1æ–KcÂ<0©/E÷¥1Áošlñ›–UFå»Ô,©BH8Ò㎄Ç\Ç3˜ žtèLøÄ—”ÖÇDQ6Äs£Édië2Ð7û¹-5D»RZÛÚkÍg{CM³:¿UzŽ7ç9ÄgÓx†C€~>œL–º"Þ{ïyœÀ3•ZöPZ»Âu\áÔ¯]Ú}>Ç…û}ÛN+RW‡ld½#í`Äí.FDµ4# ;›bÚd‚_© 8@¢öùC®Ð3aÖì •Ü«ì`z
+f™d 2afŸ„(_r‹¨dw‡k„w/'£³DW±®²´…. WÉoY%KÎ$½wìPép‘¶¶”z¾W. ó8gõå±è¾<&øU“-~Õ²Ò¨|—š5UŒ æO"&É 0˜€GgOËä_RZEÙ<Ñ&“e¤­Ë@ßì'·ÔíJymk¯5¡í 5Í
+ýVé9ÞœçŸMã Z\øùp2YêŠx'r?ÌTjÙCií
+×q…S¿vi÷ù»`¸¾•m£•uüÔÕv²^‘V BÎBDT @3²°»N5Æ›ßWê
+‘!%s ‡›2€ôÇTº
+ùí*dÂ>Ô(búö«u©m$ ï ðÚleÊT F·Öe³l6“@A‚ËÎd¡R)J¶Ú¶@n©$9òcŸ}NwëÒmËØcÆ›¬îO§Ïõës,×rø¢9¦á.îŒUÃ6Mãñ1ÚþÎX¥wš³Á;-¯Œ•mydIÕM®®¢ žíÀô˜¡ÉU]GןuA}&º»Sœ)/?LqHq ÙM’UÒÚƒ×ór¿%YL-7‹LŸ„Á„.@†™È-–£aš­˜ö;:ÿÙé|¾RQ»PêÒ_»úöÓ:ULw7ÎndØQ¹¦[8ÎÚ»ÙHŠhÛ›"h5¬§;ÜÚÛë ð MÏè½ÃßþÀƒ)Um°w÷ÏIôäC›G`njhò¶ìðx@›—±&™—Ð˼ÁÝ“$<‘Í^dBªªéÊ»•³þG术:ú;ÓÓªÔ4¤ÇÞ íˆøÓ [Ũ¿Mé/ASÉ`
+½K0&mªZKt×OxKf^m±¤‰¡)¸é1„ NGWpŒÆ¼p€} ²!PWîXu¾»ìßv!9þ­H£í2ÓrMáeLSr’«Æhà Ú~Ä Ž!UÓK2·ÓÅp¤ÙÇHÜ*GÑÙåñUK‹w‹ÍúWKÉÒ»’͇¿“`ùùI@FT`‡Þ=Ü_tÙHÕ!ÐMËv-Ç`_T]§}¦«j–©œ×ßLŒç¿ÁΣ.'4ë‰z¥UænÉê¿â³Á+î%ºÈÛ¡16-Uµhü›šêjîšÓ¡.ÏDr—ÃaŠ3¥ãe㇉)n!§I²J2{ÐËz^ä·$‹©åf‘Ý“0˜Ð…­©kÑ0ÍVÌóƒï\…AKtá—µ­¾ýNo7Ó}N_;‹m|й\y"¥8H˜VOÍñ­1dIãwB A|ª×0ˆáZûô&1‘¦YðÅ0ëÐÁAoÚºêXùyù©MÓq MWZ#Ûj=a˜z¾Dr7Ý lEÔÅÞÖ¹¦&˜gíü‚sҜێÂ(QN½p˜EoÕ¤»éæuÕT}|_:cX;"þ4ÈV±iw/Ô‚fÓ»À°è¨© ÔÔl„(ú“ùas¤ iÏÁ
+?{¾,é#4g_9 ý©±ÿ.M! ÈÚªÔy– ågOº|ÑU–/HsMÊ5†Ût]Û…Œ±‘kmSÆÎØõšÇ[ÛÏ¥<k«Ùéû^ 7q8ä¦&§ûì¬>jûQ+ga8M³ÄË¢¤éÅ14t&
+H&ñ_ ýJʯ%™I”y¾éÂÕå•fð-¦ñéÍ[o
+¡§ŠÍKòM•î3Ý8Šª_*_€tÁ¡GºšC¤óšHÄ zŒ-lT ¢7Y<
+Ÿ:ܧ%²ð)ó¨‘û ¾0°Ëì,]fHgçÿäãmÑ;Vmš%ÎQ‹ÓMh+,üj)ŽÁ¨çŒPÌ­
+¥¨å™ÔÎ÷Ô€ë#$à(RGü€ãé¦S¤Ž*s5A¹*+å˜ ¤Öb žâªâaTÒ $ƃk(XQ✚Ì\]*j«.%*¬5ËÔ£ëiŠH3W3w"ÚTª‰Š³Q•¦ì×¼ˆÊ²Tч¨
+¶èÒR[ò¨Q¨àú¥
+Ž¤oq:¯ Ñ*JÚÁv¯
+hWU†„ÊfÙî°ÿ•ÇìR›C[}h¬Á^¤ëùPå¾Rк¦œMÿ¶F ­ÖÞ¾’ôÖó±’E
+¿ –ɑѹ”âži©À.MÉʪÍâk…ö¢aÆU>#BïÅ¥‚ëÞ©ì>Á)´QJoJR¼\I]«b;Šch¸9KÊh*ét¬t<P3!ûÒÛüç³ ê‹ϼÀÉ«n¼OiG݉W=¯ÿ‚v ÷Ä¡é¸ð1çq® ³å8ó0G†YTš=³e¢°å¬Ø<Écö¦ ÓhoÈ0möº Sh¯ÍÀÌúCQ¯VŒÆY±ª;ªˆ}¶é°g:Õ€ŠO6Óãm@} ÜÕ–ß›³w˜•s¢
+C«¾°w¬šW:­².Zݪù»â½1ïŸÙNÑA_@·+võPð|J‰¦0¾´£„à$UÀžj8ð+†Îvb˜®öi †Q¢œzá0‹pCã8ŒafÉ[ÙÙ–¸´k¯Q\SùVï~ÒB*æTÇÁ¥’Æ[ìec°` €?z V‡òVË#„m½M_ÚãÒ`Ïð•Î}âM`¿ SGŸ¹€Ù ' }â:€Ö¢‹-É} ¦`ä/óö^ßÏ0)Ñ'aä£ÏWï/>D>®Ý|£4þ˜„¶€­’ ?ÍpJ§9€‚ŠÞfD¬A¾€ŒƒÐO OFWÏÀ3å.ý“Ýǘï6~!éÍW/IßÀìÙéd$C¿ztâXºž.À˜[9,×$•ž¶Ô;„VßrÇ„´büU<S }Y»úñAQmÛ 9z8ûÀŒXnŸˆ^SøŸè íAOÌšô§
+H‰ÜWmoÛºþû† )pëØnÒÛ´ŸœäæÎ[ÒäÚi; w((‰¶9S¤@RNÜ_¿Cê’%JiWän-P4ÑCò¼=ç<‡¼ä"";ÌRòýô§¿|9ÚaIqÀˆzŽ—ZR¾FG130‹å8Ρïì¿Çÿ¼¹~¿GoÍ—4ÔTp,÷ÙϾ懲±†—‚T›Wí¥3)ñ*ÜPIÂ3ÌϹ®§÷IáÇ_¹ú¾¨w~¸>›ß«·»WÐ^ß¼{aª´ˆ;8ؽÚOßjÿÄk¿É»·
+Ç #—Xã%ÑCËñÇÙ“ólù™òÿÀRµzxÞþ‘þo®£áÿz/þytvö/fÝŽn]o†P«D>o>§Îúœz ‘Þ ñ)>¯K¯ûÜÙqeÿÜnœŒNÇ“>Wu’çvÜ8ÂãF 4H€k²Ò·’®)âÕá™?À¸·}n)R’s‘òèÙç=L¥ç6!&G ¾×Ž³ï´ãÏ‘Ó˜ðAÝÙÛßoHDÓ-ˆ,5Ìù\óÓN·Íæ“ ºÌ"Ð5i‚®Ô!áD¢;IÑè}ùL“ƒã‚&˜Ñ¼fOsŸCÁdö›Wãqþ»(¡£üweËKp58§‘;QÞcµ-=ÍÑ,Õ-°ÒDÒ¯¤žÍÏP‚p@Ñ8oÀâ’½zΉ ?Vá.ªÆÇRËB–‡í÷ )’™$x¡Ø‘¦Qñw2Û?h\ügrvø¿ñè…=fÿT™Î-_3䆾~õæUil‘½ ÌwX-Ëp¼>=}uÚéš  ô܉”CQGˆBá`M
+†J7ÙÂx›ò¬|-Gè ŠÐB"ôûÑòÓíÝï/Ðnêg\“H±¢ŒÔ¥I| ”ëî.‘$²×dƒ‰È
+§,¿è5T]Ó&îFz“'÷¬µ!fhç1¸$+ÈG„‚=º” ž¥ßss¾ZrÆmO„ KºA®!má± +õ÷Úm‡2éä¿Ý0„\¼Æç˜]žµq'J¶"Å]½¸Çr JX¸÷·Å„\ùB
+ òÓÙ+noGJï™'’׃ a[ê6yÅõ(bµ”´bT^½j{IX%
+Ù
+ׂû1lb† Ö]°S âÀ£­(#
+fÛFȯªmH”ÝLÝ»:äXÈpÒ/sœGºÙ!PëY=ìÉt“¥O•Í!g ešê2ÿ£éiçB›…°.ÓÛMO€ ”¯<²ÀÂ$l Ð¾{•ù&˜–ÊÇøÚèìk5pÙ"`eméC»mb€<¨¬
+úØ'|¤ä¡ŸwN¹}½ß˜¾Ñ‘ÅÅ0kr¿Iã€cÊŠ!y¿Š°nŠ²¶† ëƒ1k…6„#…w¦¼0Gn 4£ae~=‹D
+E¹”¡Ê^ ÿÖ/Û‹% œ´vbjn6Og×­1åˆÖú ÁcåQ#-Ì!AT0F Ã7p’@ä²±¡ÒpcÌ›sˆ,]óêšì5AMÁ:±ªž§
+¥|Ë¡:Gƒ™JšôË‚!"¶Ë@S‚ ûsv Ú;1TZÖTï%æ*dòpÀP°T</wX;5Ä:è¦=•éì)Þýl™Ff®&wý‘?“„ü‡ûê\SVIÂWàE8Š 8
+¢¨ÐqÌ9çœõ\ÿ64
+:3»ßÙ³¿öOKW|+tÕTöc<´¤“„rNŸÆúë¹~LBpi…,h1ž÷Óp<î´}µ:þk^€5²†Ý öïɾ•†„X?T¾*är±¨8×2H»Œ¤‹®.Î6“îĸåW>]Å
+i&‰Ð˜¾¬£øz ÌÀK»¼wçÕªë¬ÙïåÊêÓ†Q‰FŸãS÷O!zßK®i:t]|ò—iŽÄ·qò)q**ׄvÏéæ'1‹¯…ÐÆ—,$=ÿìèÒyÐV1NȱŽ¦äg¢W—\—r¤há8ÀÙƬO}]lê€A‡R”Ï¡…¤K5©òAÃ)¶^*`¤fc¦dßQCcÖ%ÛñÎEÓBi]ŠNbÈÉG.¢Ÿñ”Ì'¶)å¹à—FHX¸ÎÁÔmx*%ùÃbz™4ä4“lb¶ùè‘| åAÔЉ€ò4 o@z’hÑ¿Eí@êPÃ^œŽPj3åkâ¡üYÝN@Mêe¦„µê|Q
+7&ufØ2<bÓ"!÷¸O=Ø+‹0;|~™Á{¬^‘µö”9éÕõ®£}±â¤¨~¨zÆ°ø)1’=‹|'ØZ'ìuXdÈ+Ô½ÂÌeëäVTe+ájP63@û¨u˜ª4Ó2”ƒEµwA×^a¹’®tbZ¯ðt'Ü|A)»k¼ÈþÈHÿ„ù)$Ìvžl_+ÌpØaRŒÔöö'kuJ ]¦M/`ÑHa"œ‰¾gέ${K»„,F;a<•l˜éôjº%1J*Plè 'Hf~]©|`s›íÁîÐ8òµUË Eäñ§€“ä?~…eW€îò•ÅÊ Ùú.@áê
+uK¯¸pg)híq…º Ôhe-*È÷kŸ2·L¶´?'‘U“¯cÓë+‹¯Ôº»Øf`õŽf>P‹yTl=§µÌfH¥·w*¾±ø–Xš5ILî’'ynš/ÍÛ-ÌdÏ^BóæÕo÷±žÈ]°cOQ@Þw]¾:Rã–áG›‚dÔ€]@u²sòÕ{-bÞêÄ°Á{î2»P´¬õj³é¢p éüØA(·.Gä={ þÌ
+î2×âüò¦Ù¨Ê7ÝÿkÍ6ì™’2w¹¬ê‘x¡™Ö$ˆtb¤mw±`„œEvñ² ré¯_í/1èxæ_ŒWçzªZ}‚<„]P* Òí{Ć`ï¾ÿ@ æ˜sÏŸ|IÜÎì=³f­5T{~ ÇO¡kîbb9;K E‚q «.ì7AuêÔ”¤1âX/1ôLÙ3ÝFÀK.­ˆ_zmâÜÆÎõ
+Z6žV¶&5K0¡tF'ÆþDŒCÌZ'Ÿóûìߦ7J°^Scÿ;¿1AÃK³˜^ÛEŒé…Uð ñ«ËŠ€Ù×°!øñÄÿˆ˜Þ,ʼmÐòý¤o£x4¯þ Ûp€r?¦7Éóå­y„Œ¤5˜}¤ÿyeËýˆjµ1S®©‚ºKàó;͗þà²Ä;8²¡P¤Ð še\.A.&ÞŽN…Ï0· 5#´µ7mLJÇÊXk§FâXñ áòºƒ9qŠÿ©XË'î€u ·*‘.š£‹³ð`õêaLƃ&:½ëuE§”ìV­Wí¶N&阸•úl Þ„2GCÄy
+j˜¦yØ™n½»|Jöº[ÒØåí Ô‹Û¦ÜA¡äGü¦¹yξé$tÏ0‘vRš»µ|“4"Ú¼ˆ”Ðìòfôê8æ¦ã¾^Ÿ™+ÐbÝA\+l|\Ba/ùxq˜§ï!žúj\™¬®5\ùU°tAVúôÝÓ^Î%jt~ýíPMÖæTýÇj¡ ^_Š²¦S+1xD€¶•FùÝõçÖ†ùE® hIui™ÑËó5¾“û ÂE2í|öì‚m>5¡ÉÌÉæï¡ð”·{üðúÞQzÓƒÌg™ 2Ò©@ ÛJâÛß›¨¸‚Öšø•Ó
+Êå"g’H#nO°Ø?q»z6ñ'^N¯ÍÀpJTÄ<÷€U“Â&ŸaÙõm‹—Ñ$ï‘eæìR®‚v8‡Þ
+ù¬g#MBˆóÎàò KIþ¢Ú5–Ë/ƒ#z‚VŒUáø^
+ÇÓãpð`:ÂR¾ÏlÙýÜ·»»‹@¦4(Ùªª3â¶IÆm®P§¼…¨wàAèÍà‹&‰iôùùR°I’³vÄjÁ¹íö81LÞîÆl²=g8í³;ø{DÂú€ÝNlS[º`[tálóP¹
+ÁúI}8¥Ííyk»¾˜Y¼âÜIŒ`“qœ%1Õ,ü4§B³û›ÏMi;¯—9ßÖÄ·zã
+~„®²­ }Ñѽ=‹ Nq~sŽÙr†ø/£ý‚‹oT•è´GT2ÇøåPu–“¡1E(—i`ù¾<~÷5ðcÒÔ+2Ô¨ ¶3ÙàÑài,?Ø€æjG¶¹Mt_HxÚc.HÏ)”K1€½‹;¾#T‹A²Äç )oûœä3‚ž œtðöµ"²'T„-=I´4¿£ñÉOOjzpÒÇ.÷¥âÓÈ0I§
+öÄ·Hªê\&£Sô“Ûb9ßôöЗ+÷¬âýHM™Ý¤É越jÑgîFØ>(ÇÍFØ›_§ð³ZëBãÛ~v?Ó/On{‰¨Dw¦’+¥¤r[OÎ÷¶æU¹Aû µÆíûS c]Vn'åïÚ¥7̺/ßum¦Ôªò¤ uÄ/,N׎ߣi‹óѲ€®Âs:Ø/sl*X4âyWðsVŸ†è·Ê?šswx"˜)nÎÖË…)( Þ7ê}¹Rà â°RÓîa ÛkX\{$1}X‰JoÙÂÁúoŽOˆv}¸¾3LEúú5¶„\©ƒ8'WEUr_lÀfÁŘÝÃIÐýªä8»"ÖOé\¼ÃlÝ_)A•… JœÊÓ\æKXøa¹¢#¯ùžQÐ ÌËŒÜd„Ѫï²í'ÙÙVdÐœÝo!b ~ɨ˜PÜòÝ’G_.É_æRЗÏAð`{¿à²e0ÃÊØ?âLßÌø’y`‡‚
+Ôƒð™³7þ—fº€÷ÓìÆpÕÎ÷Ý )N'ë »Ï9>¥‰5†áK(94üûzØc…*Ö M‚ìµgð–…t·ˆ
+Ù|vIƒþH2(¬§EC6àÕã¨põ€Âl=åŠÝ½TWåAíH°JE¢= sfjR8¾2yGP+‚ÖÈϦ[eL©à;y"¹2FhkëÂïÂ5YŽ&¿¶àoù |Ýço¡#eܵì¡åÄ$–®N¶Љ§ n¬ ožÊ¸=4ƒù•Æ{è =Šº˜tÀ„:p«zƒ[ûæÞ~ÉõÈ ói©K˜D¸»wøªÛÅJ …§G4îöHŠ?‹€ö'”ðÑì˜P˶Œeº6íÚB˦‹”—pÝ™¹¸(Ý®éÈäщ«C¬ÿ~U}}vøEû4*ߥR*Я×ÅöÓƒ 53YÇN•ñZê" óxBðжÐInÖFA+ÜÃúFö±f°±ê^‹m{h«èç¾=ûº”|øJs&¬Ëm*rƒÇg{h´ß§„Õ´…º„Ï„§½gží œÆckÜï¤FSåàìÕZ¦ò^Ñ—èkPnøèæ h?䳜kF³†¼¥ÑN¸2T=¢!4`:pÕUåx{b
+Ue"k@9Ò)6šý:´Ð§«·…0¨¨=€ ßW¥jH‹@‹Ç»RXqÅuhŽ~
+Y
+aðmê' ëIŸ4(¤X¢Ì„R¨¢äEùœ¿5ÌUcÛ´qÒäÒ­°E^—,κ£çÓøí¤*=b"§‘Ö~‹Þ¿¢¬kª2ÃO¦õ®òƒÒˈ¯Ádñ<¯­˜°XãIzÚ5¬ê.y·+ãÒÚõng׋âK5=BZ“L =C[×ó‰÷¢Ø½=σ%ÒZ'¥ƒ¶.ž?L«E±¸ûÙµ\T_'+D%ÓSuë‡÷;eù¶GnÎÍéíJß)Ö[Ô:’]¯r<¹SÖ7|ÁÐ֟Ξ³±ÏðIƒ´n/‡
+Òº{e
+-Óz§Ø~'pÔ×`J­‡ÒZc¢Ü;Z1|)-:uÔ×FTG¤µ”o,D¤µÆä\4Z±<Æxüi„5V¡JÙÀ9æ´ïÁb%»-5gX‹áŒuWVº³r oÚ£j4ؾ½©•wX4êÏ ÿ‚Öƒq¦1½ôdµ©ÿº©cÌÑo˜E,TKõÁ sÛ…C>° ß.ÂáM»¿]noz0xóvá\ùã;„Œzî97ýçf½àÃÚ^Ûð¦sµ#"¤ä÷Ø÷(­.ð>2ž;²É.ü :¹JÊiÝ”[ÅåÀM¬vÓA@ãnxÏÚC£ý
+‘-méÇ®cÕn:H(<ò–(èêíxø6Ù,t® +‚p›P­û¿@Y‹¼°û¿DZþºúûÚíõ{#p–ABµî÷AÐýOL(ˆå&Ö1
+V£h(ìþ‘Pûÿµ}¬,ü´îEBµžÂ„½ƒ…=E÷fUÅÔ¯ý2Â_¬ö¿yorÚK×{ñfÜý=)½?ÿñ½ØÚÈ;£Z@Ì£¼Q-ï¶îÌ·‡ê´/ÙJ¸pRŒâBt-;>²q§ƒæÀ|+pø—1B¯IPTÎü™ÃÅ£OsÁ¥*ž­6 .Uò pÍKÌš¥ÉÀs%Ü‚ Ù
+[éÊñ›t?‹õú«Ì2óêæDÖ3«<úþ{åmuÍÍÀÈäÿ[y¦0HÕ~ÖÝë¶ôøïKϤt[zXdéqü)uK£ªr-àeÊ7zé±×nR‚=Œ!0b>ÁRP íhÉ^»~C–mÔ®|ñz¡õ]Úõ)¦Çæ^»?I]~"à¼Ûˆ‰ð¤%ªëSì**ñ%L«WFK€ò*ÿU@vä¸Î½_i{Ù†×y>ó`rï<b™‚zîñV´9€Xþwa(ô)½–Éì9s®2yÁúQÎèß:³s¥éûd#ŒÀý¾› ¿Ýw?ï:pVÎ]ï§×ÒM{tCýú´"ú¼MZ€Êø_Ö«u+¥‰>Á<—á"w0F8Q ˆ H¼1ŠrÄøéA…÷ÿº{fzº›®žÆ?³²\¡ºjWÕÞ»R­ž¬1¶¡øƒŠŸJ›Œê£,¸9ç—4%&/R˪-Íì°=µ "Š³Õ °áÂ6[â]|ýÌfKÛ~.L—z^÷-Ã…IÃ3zÿ¹™›(K†¤¿mŒI'¸{’íþc›çi XýwOx)­ê]P+ϯœ|t,J 6tnë S¯ƒÕ¸ÚXøy~®ƒo¦ÒXè_ûbî…²'9D°ë7¼ÐVjã%h^6óÓ`cõ¤HÖÕ…Fl²üDÄxF ˜Ñ*î¿.7×Õ¡µ¥;örE¯ |:²c2´R.7FÏc ¶|+Wõè§mec´ˆûÛ}Óv@ïÓ–¤“L½Ô;ó°1ÌmÐGºÇõ–":‡•eÕ‘F<…ÜvRî‹›-õ‰'$âLòf*>, •ˆà-·ÃÄgí™D0b»×@¢þvŠOÍüæ"á9¯-˜ÒìñAñ°Š¡ß”o­igñƒæsŠg¾àÝw)vÈ FFJÀ‚œªm‡aI*¶%ðl‰WîveªeY—
+¸âXtÅÉ/*ñêk_ð.®…_qö²’=ðõCÞR/
+^¹†éAXœ]ä=v±Y>UdTÅzœwy_‘Ïþø Z©Ç,’Ó}Ùtø”V¯]öý€¾O'ˆìÒ+IL¥»æe¨ªÝK€þ
+B}‘tK¿W‚¦Rææ<a8´'W±y·øTŠŽua1Lþ†€ñ¨`ZICèìiM2ÛÑUÛ3Óœ•>Z‹VÍA|Àád 3Qî‰V:v¶#ù˜ê|ÔN˜Á®>øš&‚¹Å aOpÂÛíKí2­.ÍÎ{žøQ}&]5ç=Q÷ ‚°‡'Í/zÛ@}`~1|z® /t›°‚ÔA^¡#Ÿ±^Ö®…‘ºâìa’,>&ošLUèo:Ã
+Öø]ín)¢Q8¿Hw‘MñŽ/ßš4b¥ì ”Å›Ð/ÆÇþÁ¡š+Ãô_C ¹ÁÁÊy=‹?jQœ½Ìv´ dìgmÁ©˜ÈhÖkzƒÑ¬×LpFs®W¡~ÌÑ",£ <Fs¯× ^ æÏhÃiJF„a4º•íáû'0ꚌÑï>ŠœÑœî‹qÂ3ŽBÍÖÊmãðŒVf£d)g|úÔ¹N„†ï¢±èÜwënãÏ/)×dåe7{eo¥³*øæ =ùÛcò¡¥Ï›ã\
+З§ä¦!MgÖD{~¾’-3B,0Í¢`ÃH ’5LfQ°q4,Í ±î§Æ  ®!Éh0Œ=kFÁµà8¨û£ðU=•¢cY¤•ÁâÔR¿ÍQXrê.„`ðúù{Q Q}ì.x5DÍ…ñ÷Ì>D¯¬Ðßè—ÌßË´Ð0ýÕðW /ÓBï²ÀÁÂûû? ™U1Ü5µ¿×S1'Œ¿g¢P-Ü^ÅH‰¿—E¡×+GW ÕZHæÏ"´rZ8Y
+ZH^A «†NõµTQ¶ÑŽVžß3(N+kü¼Àd©h ¥]=žd¡~v!GºÛ­ÞmÂÉ(XØífò’춷û¾\Ë#¦ewÝNâW ‹õ2¯µç$àkžCÆõm°<7ò#UH œ\‹ÿz‰ÂÔÌç6d©™/hÝ•ÂTnŒ×{:*ÎVƒBá±Z–|¼ê©" õ7óe=(5–kj1*ôW Vzƒ•o×ÔoXðÇ ¶û«ÄÿééÓ‘±¯Á,ÆCtÕ:9É+&Y ,û˜œ8ê‰0Lg&´’ÒœˆårÙ^]OÏ¿ôߤ—…Óƒ3k¹,[#¹·ËI$;¼kErß+w‘\·ÚŠ ‚mâ#Ùç—ŸøƒÃ=‰d¯šøó+_9«ÆiCBÊο&Ë(Zá‹\æàjïyi•Ì%«b±Jý¬;ϬýÎn´\«âî»(úûoÉbá`´^.¿E轧oô½5Žhk¹¾ÏçØyáÍ|+ÿ½%œLžÝ‹ÅÿÝÈÝÿµ¢'/%ðÑâÉÓkþzejÝ‹%JÝɿУ죻×qæÑýkæÑÇD"†wß}ÖŠ=Ï<›P
+®Åeâ®ÅsÄ6ëpM ¿ÜöÒDÝ—ß陹YgWjK*P+ö0¹2=hýF gJèÁ¤Ÿ+»´ïÓ–¬4Ì0›7mÐÒr1uiî-6»È'  ¡Ü¾˜ûW•°«’Ì9™dÔsaù¶êÕ/ à•Ôî%K¾Ñ¦cø>õÎ, [b`&K­ÓÔï i‘›Í eóX `l‘÷¥ÏD8ØMË ¡æ-9ùá$ÐÑK¶:{§•¨N#ðÇáš‹dàä‡h¿¤wÉ9™¡ÿW[
+[ɪ(PIÅñ4{´ê"ùFBŽaÙ_øœžB×õ¨Wij/CÀ½2ô‚“‚BŸ~¡Æð6Ì®šÝž9®àT†C`ŒC…=ÆC{¦:†6ñ¦™f<´éåIx `'Øø0Õ«cg ã¬Õ®˜ÔNI!šˆµwŒ‘ò©= ¢Vˆ¡ß<¥sÎGÚÉî›79à‡æŽ!¤ÒÿÊ°ó)je  Sú£E™(€ÏÑÁR¢^ùDgÝØ0ˆæ
+“L’¦Rüº ²Í”aI[> U ±4?®¦fuåS k G¬Ò¼½îmCW‚Z¼à¥º’X¨à"{‹ zË_ÌÁˆ! w„ë…î Šʈa«_#†­‚/`¢.<jÈ+­-"†þU
+ÅÅþIìfö~)öö?“P% –óùáÎ}¡Òýs衃¹¦Š‹ýËzßß^Ãyl†~>{tµ7Îü¾èùúÅïô¯q&~¸3óBºEN«ö€ï4Úy-r–:×ú%åÔ©‹ãv/¿ø¯÷Ìsú$pjæk>§¯‰D ;/êÙ…{Å.Ü•I\Œ»+§æ»ßéa4åwZý¹‹Î—OZrê\äÀ‡W§{±Ø×Þòí´jßsx?Ê„² s-u¦××\§‰îhüÊs:¢œºfÕJç—¾SãüÞä»ûY9òœ»VU0°(kç/ÔçuÅïXßÁy¡¾¬>t•,VÓ}÷;t:»{ "z¾RIÎò>¨¯‰£9wIá}Ç“T$ƒÍ~º¹\ù÷j?1+Uµ{}ßÖ2ú[ÇÇ.ÊlÊäïÇŒ½êû‰/…à¼Èƒ"HðzH€8ùn¡ñ0éP·ÐU¯mšÿž<5ø/+¤òãR·¨`]ø8U§œ’;J‡fŸI}7À ¡Î|$Γ\:ºñ>‚Éo)…gƒR$P?MqsÊÏ·ù½ íÙvò£ÙxЇs…"*8•õ»ÚÙVæÅ}+ât…¹,"SèiÇK£v²û¶êÔ_†Óîã(+%Ø ‘¼@º1eh:á(96bvî;´€^Àç Ð[®BÁÙy®ÜÔ2¿ÌÔššÕåòd”œ4µ|LAJ”FýBS`z^ EâŸp³bo'Ps’øÄÕ’×j¦ SÐ9ÎcZ §+!ƒ]×X Líbp`ÖaA3 w²T~•šáh#±’‰Ä…ÆHš ÍÖHÂKùKÖçjù¹ã}›^#ç>ÈŸöI•Ó»•/•¨J!àƒ†¯ŸL2kúíi”)P}ïÿ‹ãiöh=²ú»Ñ
+ KòûH3Eì±øn,¤³Ï³q
+&
+õðµ!NØ)D Eª­8‘
+Sºa8•—ºheÂ+F*¢¦v¶ Qe·6#î¾ç€áGW‚vWÒ•£~!ÁÛÉgP*œú~ëM´£’Üå¢HÉ?ÎHÄ*kˆytÃhV2|jÍúeÏù-¨ ™ÁHÒ gH9œ-ÉædeZ‰Hœ{ÅAÍ¿Ê[¨•iÏÈm¹Ö;΢L¸Û’W&ú3`‰¨
+Äa :{
+èP÷ÜËoæGûéx Cº"7LýrGì
+á…l~34o4qcZîFËÁ瞢Üî¼àž°hÒÍnq6é¦RÔÛe°üN¥v”VíO£C¡™÷ƒ *®eô·ŽOWn–P¼ªÐšñèZk·rƒÁYÀËŸzêN ¤9b Ñ! 4·“9óKòß$ðKÂ\ν¬ZàßRÜœ#q…S‡jeö?¸s'®äjó;ÕM•—m5Þ
+M±)Ä”˜>b¾ •Â÷XËÙ}!{lðæðm‡¢¬Ìê+Ú±gFƒU’c'ô:VH ëmKhç
+0000000016 00000 n
+0000000159 00000 n
+0000061869 00000 n
+0000000007 00000 f
+0000197445 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000197515 00000 n
+0000197546 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000063623 00000 n
+0000197631 00000 n
+0000061921 00000 n
+0000062281 00000 n
+0000062415 00000 n
+0000063933 00000 n
+0000063810 00000 n
+0000063200 00000 n
+0000062481 00000 n
+0000062639 00000 n
+0000062687 00000 n
+0000063447 00000 n
+0000063510 00000 n
+0000063694 00000 n
+0000063725 00000 n
+0000064007 00000 n
+0000064367 00000 n
+0000065333 00000 n
+0000078233 00000 n
+0000086910 00000 n
+0000100337 00000 n
+0000117961 00000 n
+0000133851 00000 n
+0000137649 00000 n
+0000147743 00000 n
+0000173928 00000 n
+0000182126 00000 n
+0000197656 00000 n
+trailer <</Size 57/Root 1 0 R/Info 56 0 R/ID[<9A57AF8007714670AF99EA4CDB557920><20191AD98DD549F08F8DFE656D492EED>]>> startxref 197834 %%EOF \ No newline at end of file
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h
index 1d61605..0db88f4 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h
@@ -17,6 +17,7 @@
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
#include "chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h"
+#import "content/common/chrome_application_mac.h"
#include "webkit/glue/window_open_disposition.h"
@class BookmarkBarController;
@@ -45,10 +46,80 @@ const CGFloat kBookmarkHorizontalPadding = 1.0;
// Vertical frame inset for buttons in the bookmark bar.
const CGFloat kBookmarkVerticalPadding = 2.0;
+// Used as a min/max width for buttons on menus (not on the bar).
+const CGFloat kBookmarkMenuButtonMinimumWidth = 100.0;
+const CGFloat kBookmarkMenuButtonMaximumWidth = 485.0;
+
+// The minimum separation between a folder menu and the edge of the screen.
+// If the menu gets closer to the edge of the screen (either right or left)
+// then it is pops up in the opposite direction.
+// (See -[BookmarkBarFolderController childFolderWindowLeftForWidth:]).
+const CGFloat kBookmarkHorizontalScreenPadding = 8.0;
+
+// Our NSScrollView is supposed to be just barely big enough to fit its
+// contentView. It is actually a hair too small.
+// This turns on horizontal scrolling which, although slight, is awkward.
+// Make sure our window (and NSScrollView) are wider than its documentView
+// by at least this much.
+const CGFloat kScrollViewContentWidthMargin = 2;
+
+// Make subfolder menus overlap their parent menu a bit to give a better
+// perception of a menuing system.
+const CGFloat kBookmarkMenuOverlap = 2.0;
+
+// When constraining a scrolling bookmark bar folder window to the
+// screen, shrink the "constrain" by this much vertically. Currently
+// this is 0.0 to avoid a problem with tracking areas leaving the
+// window, but should probably be 8.0 or something.
+const CGFloat kScrollWindowVerticalMargin = 6.0;
+
// How far to offset a folder menu from the top of the bookmark bar. This
// is set just above the bar so that it become distinctive when drawn.
const CGFloat kBookmarkBarMenuOffset = 2.0;
+// How far to offset a folder menu's left edge horizontally in relation to
+// the left edge of the button from which it springs. Because of drawing
+// differences, simply aligning the |frame| of each does not render the
+// pproper result, so we have to offset.
+const CGFloat kBookmarkBarButtonOffset = 2.0;
+
+// Delay before opening a subfolder (and closing the previous one)
+// when hovering over a folder button.
+const NSTimeInterval kHoverOpenDelay = 0.3;
+
+// Delay on hover before a submenu opens when dragging.
+// Experimentally a drag hover open delay needs to be bigger than a
+// normal (non-drag) menu hover open such as used in the bookmark folder.
+// TODO(jrg): confirm feel of this constant with ui-team.
+// http://crbug.com/36276
+const NSTimeInterval kDragHoverOpenDelay = 0.7;
+
+// Notes on use of kDragHoverCloseDelay in
+// -[BookmarkBarFolderController draggingEntered:].
+//
+// We have an implicit delay on stop-hover-open before a submenu
+// closes. This cannot be zero since it's nice to move the mouse in a
+// direct line from "current position" to "position of item in
+// submenu". However, by doing so, it's possible to overlap a
+// different button on the current menu. Example:
+//
+// Folder1
+// Folder2 ---> Sub1
+// Folder3 Sub2
+// Sub3
+//
+// If you hover over the F in Folder2 to open the sub, and then want to
+// select Sub3, a direct line movement of the mouse may cross over
+// Folder3. Without this delay, that'll cause Sub to be closed before
+// you get there, since a "hover over" of Folder3 gets activated.
+// It's subtle but without the delay it feels broken.
+//
+// This is only really a problem with vertical menu --> vertical menu
+// movement; the bookmark bar (horizontal menu, sort of) seems fine,
+// perhaps because mouse move direction is purely vertical so there is
+// no opportunity for overlap.
+const NSTimeInterval kDragHoverCloseDelay = 0.4;
+
} // namespace bookmarks
// The interface for the bookmark bar controller's delegate. Currently, the
@@ -78,6 +149,7 @@ willAnimateFromState:(bookmarks::VisualState)oldState
BookmarkBarToolbarViewController,
BookmarkButtonDelegate,
BookmarkButtonControllerProtocol,
+ CrApplicationEventHookProtocol,
NSUserInterfaceValidations> {
@private
// The visual state of the bookmark bar. If an animation is running, this is
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm
index 3569a61..6740237 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm
@@ -21,6 +21,7 @@
#import "chrome/browser/ui/cocoa/background_gradient_view.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_bridge.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_view.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
@@ -210,6 +211,7 @@ void RecordAppLaunch(Profile* profile, GURL url) {
- (void)addButtonsToView;
- (void)centerNoItemsLabel;
- (void)setNodeForBarMenu;
+- (void)watchForExitEvent:(BOOL)watch;
- (void)resetAllButtonPositionsWithAnimation:(BOOL)animate;
- (BOOL)animationEnabled;
@@ -325,6 +327,7 @@ void RecordAppLaunch(Profile* profile, GURL url) {
bridge_.reset(NULL);
[[NSNotificationCenter defaultCenter] removeObserver:self];
+ [self watchForExitEvent:NO];
[super dealloc];
}
@@ -366,6 +369,18 @@ void RecordAppLaunch(Profile* profile, GURL url) {
name:NSViewFrameDidChangeNotification
object:[self view]];
+ // Watch for things going to or from fullscreen.
+ [[NSNotificationCenter defaultCenter]
+ addObserver:self
+ selector:@selector(willEnterOrLeaveFullscreen:)
+ name:kWillEnterFullscreenNotification
+ object:nil];
+ [[NSNotificationCenter defaultCenter]
+ addObserver:self
+ selector:@selector(willEnterOrLeaveFullscreen:)
+ name:kWillLeaveFullscreenNotification
+ object:nil];
+
// Don't pass ourself along (as 'self') until our init is completely
// done. Thus, this call is (almost) last.
bridge_.reset(new BookmarkBarBridge(self, bookmarkModel_));
@@ -396,6 +411,23 @@ void RecordAppLaunch(Profile* profile, GURL url) {
object:[[self view] window]];
}
+// When going fullscreen we can run into trouble. Our view is removed
+// from the non-fullscreen window before the non-fullscreen window
+// loses key, so our parentDidResignKey: callback never gets called.
+// In addition, a bookmark folder controller needs to be autoreleased
+// (in case it's in the event chain when closed), but the release
+// implicitly needs to happen while it's connected to the original
+// (non-fullscreen) window to "unlock bar visibility". Such a
+// contract isn't honored when going fullscreen with the menu option
+// (not with the keyboard shortcut). We fake it as best we can here.
+// We have a similar problem leaving fullscreen.
+- (void)willEnterOrLeaveFullscreen:(NSNotification*)notification {
+ if (folderController_) {
+ [self childFolderWillClose:folderController_];
+ [self closeFolderAndStopTrackingMenus];
+ }
+}
+
// NSNotificationCenter callback.
- (void)parentWindowWillClose:(NSNotification*)notification {
[self closeFolderAndStopTrackingMenus];
@@ -516,9 +548,79 @@ void RecordAppLaunch(Profile* profile, GURL url) {
#pragma mark Actions
+// Helper methods called on the main thread by runMenuFlashThread.
+
+- (void)setButtonFlashStateOn:(id)sender {
+ [sender highlight:YES];
+}
+
+- (void)setButtonFlashStateOff:(id)sender {
+ [sender highlight:NO];
+}
+
+-(void)cleanupAfterMenuFlashThread:(id)sender {
+ [self closeFolderAndStopTrackingMenus];
+
+ // Items retained by doMenuFlashOnSeparateThread below.
+ [sender release];
+ [self release];
+}
+
+// End runMenuFlashThread helper methods.
+
+// This call is invoked only by doMenuFlashOnSeparateThread below.
+// It makes the selected BookmarkButton (which is masquerading as a menu item)
+// flash a few times to give confirmation feedback, then it closes the menu.
+// It spends all its time sleeping or scheduling UI work on the main thread.
+- (void)runMenuFlashThread:(id)sender {
+
+ // Check this is not running on the main thread, as it sleeps.
+ DCHECK(![NSThread isMainThread]);
+
+ // Duration of flash phases and number of flashes designed to evoke a
+ // slightly retro "more mac-like than the Mac" feel.
+ // Current Cocoa UI has a barely perceptible flash,probably because Apple
+ // doesn't fire the action til after the animation and so there's a hurry.
+ // As this code is fully asynchronous, it can take its time.
+ const float kBBOnFlashTime = 0.08;
+ const float kBBOffFlashTime = 0.08;
+ const int kBookmarkButtonMenuFlashes = 3;
+
+ for (int count = 0 ; count < kBookmarkButtonMenuFlashes ; count++) {
+ [self performSelectorOnMainThread:@selector(setButtonFlashStateOn:)
+ withObject:sender
+ waitUntilDone:NO];
+ [NSThread sleepForTimeInterval:kBBOnFlashTime];
+ [self performSelectorOnMainThread:@selector(setButtonFlashStateOff:)
+ withObject:sender
+ waitUntilDone:NO];
+ [NSThread sleepForTimeInterval:kBBOffFlashTime];
+ }
+ [self performSelectorOnMainThread:@selector(cleanupAfterMenuFlashThread:)
+ withObject:sender
+ waitUntilDone:NO];
+}
+
+// Non-blocking call which starts the process to make the selected menu item
+// flash a few times to give confirmation feedback, after which it closes the
+// menu. The item is of course actually a BookmarkButton masquerading as a menu
+// item).
+- (void)doMenuFlashOnSeparateThread:(id)sender {
+
+ // Ensure that self and sender don't go away before the animation completes.
+ // These retains are balanced in cleanupAfterMenuFlashThread above.
+ [self retain];
+ [sender retain];
+ [NSThread detachNewThreadSelector:@selector(runMenuFlashThread:)
+ toTarget:self
+ withObject:sender];
+}
+
- (IBAction)openBookmark:(id)sender {
- BOOL isMenuItem = [sender isFolder];
+ BOOL isMenuItem = [[sender cell] isFolderButtonCell];
BOOL animate = isMenuItem && [self animationEnabled];
+ if (animate)
+ [self doMenuFlashOnSeparateThread:sender];
DCHECK([sender respondsToSelector:@selector(bookmarkNode)]);
const BookmarkNode* node = [sender bookmarkNode];
WindowOpenDisposition disposition =
@@ -537,6 +639,9 @@ void RecordAppLaunch(Profile* profile, GURL url) {
showFolderMenus_ = !showFolderMenus_;
+ if (sender == offTheSideButton_)
+ [[sender cell] setStartingChildIndex:displayedButtonCount_];
+
// Toggle presentation of bar folder menus.
[folderTarget_ openBookmarkFolderFromButton:sender];
}
@@ -754,8 +859,16 @@ void RecordAppLaunch(Profile* profile, GURL url) {
// Configure the off-the-side button (e.g. specify the node range,
// check if we should enable or disable it, etc).
- (void)configureOffTheSideButtonContentsAndVisibility {
+ // If deleting a button while off-the-side is open, buttons may be
+ // promoted from off-the-side to the bar. Accomodate.
+ if (folderController_ &&
+ ([folderController_ parentButton] == offTheSideButton_)) {
+ [folderController_ reconfigureMenu];
+ }
+
+ [[offTheSideButton_ cell] setStartingChildIndex:displayedButtonCount_];
[[offTheSideButton_ cell]
- setBookmarkNode:bookmarkModel_->bookmark_bar_node()];
+ setBookmarkNode:bookmarkModel_->bookmark_bar_node()];
int bookmarkChildren = bookmarkModel_->bookmark_bar_node()->child_count();
if (bookmarkChildren > displayedButtonCount_) {
[offTheSideButton_ setHidden:NO];
@@ -770,6 +883,59 @@ void RecordAppLaunch(Profile* profile, GURL url) {
}
}
+// Main menubar observation code, so we can know to close our fake menus if the
+// user clicks on the actual menubar, as multiple unconnected menus sharing
+// the screen looks weird.
+// Needed because the hookForEvent method doesn't see the click on the menubar.
+
+// Gets called when the menubar is clicked.
+- (void)begunTracking:(NSNotification *)notification {
+ [self closeFolderAndStopTrackingMenus];
+}
+
+// Install the callback.
+- (void)startObservingMenubar {
+ NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
+ [nc addObserver:self
+ selector:@selector(begunTracking:)
+ name:NSMenuDidBeginTrackingNotification
+ object:[NSApp mainMenu]];
+}
+
+// Remove the callback.
+- (void)stopObservingMenubar {
+ NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
+ [nc removeObserver:self
+ name:NSMenuDidBeginTrackingNotification
+ object:[NSApp mainMenu]];
+}
+
+// End of menubar observation code.
+
+// Begin (or end) watching for a click outside this window. Unlike
+// normal NSWindows, bookmark folder "fake menu" windows do not become
+// key or main. Thus, traditional notification (e.g. WillResignKey)
+// won't work. Our strategy is to watch (at the app level) for a
+// "click outside" these windows to detect when they logically lose
+// focus.
+- (void)watchForExitEvent:(BOOL)watch {
+ CrApplication* app = static_cast<CrApplication*>([NSApplication
+ sharedApplication]);
+ DCHECK([app isKindOfClass:[CrApplication class]]);
+ if (watch) {
+ if (!watchingForExitEvent_) {
+ [app addEventHook:self];
+ [self startObservingMenubar];
+ }
+ } else {
+ if (watchingForExitEvent_) {
+ [app removeEventHook:self];
+ [self stopObservingMenubar];
+ }
+ }
+ watchingForExitEvent_ = watch;
+}
+
// Keep the "no items" label centered in response to a frame size change.
- (void)centerNoItemsLabel {
// Note that this computation is done in the parent's coordinate system,
@@ -1641,6 +1807,66 @@ void RecordAppLaunch(Profile* profile, GURL url) {
[[otherBookmarksButton_ cell] setTextColor:color];
}
+// Return YES if the event indicates an exit from the bookmark bar
+// folder menus. E.g. "click outside" of the area we are watching.
+// At this time we are watching the area that includes all popup
+// bookmark folder windows.
+- (BOOL)isEventAnExitEvent:(NSEvent*)event {
+ NSWindow* eventWindow = [event window];
+ NSWindow* myWindow = [[self view] window];
+ switch ([event type]) {
+ case NSLeftMouseDown:
+ case NSRightMouseDown:
+ // If the click is in my window but NOT in the bookmark bar, consider
+ // it a click 'outside'. Clicks directly on an active button (i.e. one
+ // that is a folder and for which its folder menu is showing) are 'in'.
+ // All other clicks on the bookmarks bar are counted as 'outside'
+ // because they should close any open bookmark folder menu.
+ if (eventWindow == myWindow) {
+ NSView* hitView =
+ [[eventWindow contentView] hitTest:[event locationInWindow]];
+ if (hitView == [folderController_ parentButton])
+ return NO;
+ if (![hitView isDescendantOf:[self view]] || hitView == buttonView_)
+ return YES;
+ }
+ // If a click in a bookmark bar folder window and that isn't
+ // one of my bookmark bar folders, YES is click outside.
+ if (![eventWindow isKindOfClass:[BookmarkBarFolderWindow
+ class]]) {
+ return YES;
+ }
+ break;
+ case NSKeyDown: {
+ // Event hooks often see the same keydown event twice due to the way key
+ // events get dispatched and redispatched, so ignore if this keydown
+ // event has the EXACT same timestamp as the previous keydown.
+ static NSTimeInterval lastKeyDownEventTime;
+ NSTimeInterval thisTime = [event timestamp];
+ if (lastKeyDownEventTime != thisTime) {
+ lastKeyDownEventTime = thisTime;
+ if ([event modifierFlags] & NSCommandKeyMask)
+ return YES;
+ else if (folderController_)
+ return [folderController_ handleInputText:[event characters]];
+ }
+ return NO;
+ }
+ case NSKeyUp:
+ return NO;
+ case NSLeftMouseDragged:
+ // We can get here with the following sequence:
+ // - open a bookmark folder
+ // - right-click (and unclick) on it to open context menu
+ // - move mouse to window titlebar then click-drag it by the titlebar
+ // http://crbug.com/49333
+ return NO;
+ default:
+ break;
+ }
+ return NO;
+}
+
#pragma mark Drag & Drop
// Find something like std::is_between<T>? I can't believe one doesn't exist.
@@ -1979,6 +2205,9 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
return;
}
}
+
+ if (folderController_)
+ [folderController_ faviconLoadedForNode:node];
}
// TODO(jrg): for now this is brute force.
@@ -2087,6 +2316,16 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
// If already opened, then we exited but re-entered the button, so do nothing.
if ([folderController_ parentButton] == sender)
return;
+ // Else open a new one if it makes sense to do so.
+ if ([sender bookmarkNode]->is_folder()) {
+ // Update |hoverButton_| so that it corresponds to the open folder.
+ hoverButton_.reset([sender retain]);
+ [folderTarget_ openBookmarkFolderFromButton:sender];
+ } else {
+ // We're over a non-folder bookmark so close any old folders.
+ [folderController_ close];
+ folderController_ = nil;
+ }
}
// BookmarkButtonDelegate protocol implementation.
@@ -2127,7 +2366,8 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
// Close all bookmark folders. "Folder" here is the fake menu for
// bookmark folders, not a button context menu.
- (void)closeAllBookmarkFolders {
- [folderController_ closeMenu];
+ [self watchForExitEvent:NO];
+ [folderController_ close];
folderController_ = nil;
}
@@ -2182,9 +2422,17 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
hoverButton_.reset();
}
hoverButton_.reset([button retain]);
+ DCHECK([[hoverButton_ target]
+ respondsToSelector:@selector(openBookmarkFolderFromButton:)]);
+ [[hoverButton_ target]
+ performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:hoverButton_
+ afterDelay:bookmarks::kDragHoverOpenDelay
+ inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
}
if (!button) {
if (hoverButton_) {
+ [NSObject cancelPreviousPerformRequestsWithTarget:[hoverButton_ target]];
[[hoverButton_ target] closeBookmarkFolder:hoverButton_];
hoverButton_.reset();
}
@@ -2289,6 +2537,29 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
return x;
}
+- (void)childFolderWillShow:(id<BookmarkButtonControllerProtocol>)child {
+ // If the bookmarkbar is not in detached mode, lock bar visibility, forcing
+ // the overlay to stay open when in fullscreen mode.
+ if (![self isInState:bookmarks::kDetachedState] &&
+ ![self isAnimatingToState:bookmarks::kDetachedState]) {
+ BrowserWindowController* browserController =
+ [BrowserWindowController browserWindowControllerForView:[self view]];
+ [browserController lockBarVisibilityForOwner:child
+ withAnimation:NO
+ delay:NO];
+ }
+}
+
+- (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child {
+ // Release bar visibility, allowing the overlay to close if in fullscreen
+ // mode.
+ BrowserWindowController* browserController =
+ [BrowserWindowController browserWindowControllerForView:[self view]];
+ [browserController releaseBarVisibilityForOwner:child
+ withAnimation:NO
+ delay:NO];
+}
+
// Add a new folder controller as triggered by the given folder button.
- (void)addNewFolderControllerWithParentButton:(BookmarkButton*)parentButton {
@@ -2308,15 +2579,13 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
// Folder controller, like many window controllers, owns itself.
folderController_ =
[[BookmarkBarFolderController alloc] initWithParentButton:parentButton
- bookmarkModel:bookmarkModel_
+ parentController:nil
barController:self];
- [folderController_ autorelease];
+ [folderController_ showWindow:self];
- // If this is for the off-the-side menu, set the display count.
- if (parentButton == offTheSideButton_)
- [folderController_ setOffTheSideNodeStartIndex:displayedButtonCount_];
-
- [folderController_ openMenu];
+ // Only BookmarkBarController has this; the
+ // BookmarkBarFolderController does not.
+ [self watchForExitEvent:YES];
// No longer need to hold the lock; the folderController_ now owns it.
[browserController releaseBarVisibilityForOwner:self
@@ -2357,6 +2626,7 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
// A button from somewhere else (not the bar) is being moved to the
// off-the-side so insure it gets redrawn if its showing.
[self reconfigureBookmarkBar];
+ [folderController_ reconfigureMenu];
}
}
@@ -2424,6 +2694,7 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
// while possibly re-laying out the bookmark bar.
[self removeButton:fromIndex animate:NO];
[self reconfigureBookmarkBar];
+ [folderController_ reconfigureMenu];
} else if (toIndex < buttonCount) {
// A button is being added to the bar and removed from off-the-side.
// By now the node has already been inserted into the model so the
@@ -2433,6 +2704,11 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
DCHECK(movedNode);
[self addButtonForNode:movedNode atIndex:toIndex];
[self reconfigureBookmarkBar];
+ } else {
+ // A button is being moved within the off-the-side.
+ fromIndex -= buttonCount;
+ toIndex -= buttonCount;
+ [folderController_ moveButtonFromIndex:fromIndex toIndex:toIndex];
}
}
}
@@ -2457,6 +2733,12 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
--displayedButtonCount_;
[self resetAllButtonPositionsWithAnimation:YES];
[self reconfigureBookmarkBar];
+ } else if (folderController_ &&
+ [folderController_ parentButton] == offTheSideButton_) {
+ // The button being removed is in the OTS (off-the-side) and the OTS
+ // menu is showing so we need to remove the button.
+ NSInteger index = buttonIndex - displayedButtonCount_;
+ [folderController_ removeButton:index animate:YES];
}
}
@@ -2466,7 +2748,15 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
// folder menus.
if (bookmarkModel_->bookmark_bar_node() == node)
return self;
- return nil;
+ return [folderController_ controllerForNode:node];
+}
+
+#pragma mark BookmarkButtonControllerProtocol
+
+// NOT an override of a standard Cocoa call made to NSViewControllers.
+- (void)hookForEvent:(NSEvent*)theEvent {
+ if ([self isEventAnExitEvent:theEvent])
+ [self closeFolderAndStopTrackingMenus];
}
#pragma mark TestingAPI Only
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm
index e84f8da..c6f06bd 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm
@@ -16,13 +16,12 @@
#import "chrome/browser/ui/cocoa/animation_utils.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h"
-#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_view.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu.h"
-#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h"
#include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
#import "chrome/browser/ui/cocoa/view_resizer_pong.h"
#include "chrome/test/base/model_test_utils.h"
@@ -577,6 +576,80 @@ TEST_F(BookmarkBarControllerTest, OffTheSideButtonHidden) {
GURL("http://superfriends.hall-of-justice.edu"));
}
EXPECT_FALSE([bar_ offTheSideButtonIsHidden]);
+
+ // Open the "off the side" and start deleting nodes. Make sure
+ // deletion of the last node in "off the side" causes the folder to
+ // close.
+ EXPECT_FALSE([bar_ offTheSideButtonIsHidden]);
+ NSButton* offTheSideButton = [bar_ offTheSideButton];
+ // Open "off the side" menu.
+ [bar_ openOffTheSideFolderFromButton:offTheSideButton];
+ BookmarkBarFolderController* bbfc = [bar_ folderController];
+ EXPECT_TRUE(bbfc);
+ [bbfc setIgnoreAnimations:YES];
+ while (!parent->empty()) {
+ // We've completed the job so we're done.
+ if ([bar_ offTheSideButtonIsHidden])
+ break;
+ // Delete the last button.
+ model->Remove(parent, parent->child_count() - 1);
+ // If last one make sure the menu is closed and the button is hidden.
+ // Else make sure menu stays open.
+ if ([bar_ offTheSideButtonIsHidden]) {
+ EXPECT_FALSE([bar_ folderController]);
+ } else {
+ EXPECT_TRUE([bar_ folderController]);
+ }
+ }
+}
+
+// http://crbug.com/46175 is a crash when deleting bookmarks from the
+// off-the-side menu while it is open. This test tries to bang hard
+// in this area to reproduce the crash.
+TEST_F(BookmarkBarControllerTest, DeleteFromOffTheSideWhileItIsOpen) {
+ BookmarkModel* model = profile()->GetBookmarkModel();
+ [bar_ setIgnoreAnimations:YES];
+ [bar_ loaded:model];
+
+ // Add a lot of bookmarks (per the bug).
+ const BookmarkNode* parent = model->bookmark_bar_node();
+ for (int i = 0; i < 100; i++) {
+ std::ostringstream title;
+ title << "super duper wide title " << i;
+ model->AddURL(parent, parent->child_count(), ASCIIToUTF16(title.str()),
+ GURL("http://superfriends.hall-of-justice.edu"));
+ }
+ EXPECT_FALSE([bar_ offTheSideButtonIsHidden]);
+
+ // Open "off the side" menu.
+ NSButton* offTheSideButton = [bar_ offTheSideButton];
+ [bar_ openOffTheSideFolderFromButton:offTheSideButton];
+ BookmarkBarFolderController* bbfc = [bar_ folderController];
+ EXPECT_TRUE(bbfc);
+ [bbfc setIgnoreAnimations:YES];
+
+ // Start deleting items; try and delete randomish ones in case it
+ // makes a difference.
+ int indices[] = { 2, 4, 5, 1, 7, 9, 2, 0, 10, 9 };
+ while (!parent->empty()) {
+ for (unsigned int i = 0; i < arraysize(indices); i++) {
+ if (indices[i] < parent->child_count()) {
+ // First we mouse-enter the button to make things harder.
+ NSArray* buttons = [bbfc buttons];
+ for (BookmarkButton* button in buttons) {
+ if ([button bookmarkNode] == parent->GetChild(indices[i])) {
+ [bbfc mouseEnteredButton:button event:nil];
+ break;
+ }
+ }
+ // Then we remove the node. This triggers the button to get
+ // deleted.
+ model->Remove(parent, indices[i]);
+ // Force visual update which is otherwise delayed.
+ [[bbfc window] displayIfNeeded];
+ }
+ }
+ }
}
// Test whether |-dragShouldLockBarVisibility| returns NO iff the bar is
@@ -1214,10 +1287,109 @@ TEST_F(BookmarkBarControllerTest, TestClearOnDealloc) {
}
}
+TEST_F(BookmarkBarControllerTest, TestFolders) {
+ BookmarkModel* model = profile()->GetBookmarkModel();
+
+ // Create some folder buttons.
+ const BookmarkNode* parent = model->bookmark_bar_node();
+ const BookmarkNode* folder = model->AddFolder(parent,
+ parent->child_count(),
+ ASCIIToUTF16("folder"));
+ model->AddURL(folder, folder->child_count(),
+ ASCIIToUTF16("f1"), GURL("http://framma-lamma.com"));
+ folder = model->AddFolder(parent, parent->child_count(),
+ ASCIIToUTF16("empty"));
+
+ EXPECT_EQ([[bar_ buttons] count], 2U);
+
+ // First confirm mouseEntered does nothing if "menus" aren't active.
+ NSEvent* event = cocoa_test_event_utils::MakeMouseEvent(NSOtherMouseUp, 0);
+ [bar_ mouseEnteredButton:[[bar_ buttons] objectAtIndex:0] event:event];
+ EXPECT_FALSE([bar_ folderController]);
+
+ // Make one active. Entering it is now a no-op.
+ [bar_ openBookmarkFolderFromButton:[[bar_ buttons] objectAtIndex:0]];
+ BookmarkBarFolderController* bbfc = [bar_ folderController];
+ EXPECT_TRUE(bbfc);
+ [bar_ mouseEnteredButton:[[bar_ buttons] objectAtIndex:0] event:event];
+ EXPECT_EQ(bbfc, [bar_ folderController]);
+
+ // Enter a different one; a new folderController is active.
+ [bar_ mouseEnteredButton:[[bar_ buttons] objectAtIndex:1] event:event];
+ EXPECT_NE(bbfc, [bar_ folderController]);
+
+ // Confirm exited is a no-op.
+ [bar_ mouseExitedButton:[[bar_ buttons] objectAtIndex:1] event:event];
+ EXPECT_NE(bbfc, [bar_ folderController]);
+
+ // Clean up.
+ [bar_ closeBookmarkFolder:nil];
+}
+
+// Verify that the folder menu presentation properly tracks mouse movements
+// over the bar. Until there is a click no folder menus should show. After a
+// click on a folder folder menus should show until another click on a folder
+// button, and a click outside the bar and its folder menus.
+TEST_F(BookmarkBarControllerTest, TestFolderButtons) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2b ] 3b 4f:[ 4f1b 4f2b ] ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model and that we do not have a folder controller.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+ EXPECT_FALSE([bar_ folderController]);
+
+ // Add a real bookmark so we can click on it.
+ const BookmarkNode* folder = root->GetChild(3);
+ model.AddURL(folder, folder->child_count(), ASCIIToUTF16("CLICK ME"),
+ GURL("http://www.google.com/"));
+
+ // Click on a folder button.
+ BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"4f"];
+ EXPECT_TRUE(button);
+ [bar_ openBookmarkFolderFromButton:button];
+ BookmarkBarFolderController* bbfc = [bar_ folderController];
+ EXPECT_TRUE(bbfc);
+
+ // Make sure a 2nd click on the same button closes things.
+ [bar_ openBookmarkFolderFromButton:button];
+ EXPECT_FALSE([bar_ folderController]);
+
+ // Next open is a different button.
+ button = [bar_ buttonWithTitleEqualTo:@"2f"];
+ EXPECT_TRUE(button);
+ [bar_ openBookmarkFolderFromButton:button];
+ EXPECT_TRUE([bar_ folderController]);
+
+ // Mouse over a non-folder button and confirm controller has gone away.
+ button = [bar_ buttonWithTitleEqualTo:@"1b"];
+ EXPECT_TRUE(button);
+ NSEvent* event = cocoa_test_event_utils::MouseEventAtPoint([button center],
+ NSMouseMoved, 0);
+ [bar_ mouseEnteredButton:button event:event];
+ EXPECT_FALSE([bar_ folderController]);
+
+ // Mouse over the original folder and confirm a new controller.
+ button = [bar_ buttonWithTitleEqualTo:@"2f"];
+ EXPECT_TRUE(button);
+ [bar_ mouseEnteredButton:button event:event];
+ BookmarkBarFolderController* oldBBFC = [bar_ folderController];
+ EXPECT_TRUE(oldBBFC);
+
+ // 'Jump' over to a different folder and confirm a new controller.
+ button = [bar_ buttonWithTitleEqualTo:@"4f"];
+ EXPECT_TRUE(button);
+ [bar_ mouseEnteredButton:button event:event];
+ BookmarkBarFolderController* newBBFC = [bar_ folderController];
+ EXPECT_TRUE(newBBFC);
+ EXPECT_NE(oldBBFC, newBBFC);
+}
+
// Make sure the "off the side" folder looks like a bookmark folder
// but only contains "off the side" items.
-// TODO(rsesek): Fix the off the side folder.
-TEST_F(BookmarkBarControllerTest, DISABLED_OffTheSideFolder) {
+TEST_F(BookmarkBarControllerTest, OffTheSideFolder) {
// It starts hidden.
EXPECT_TRUE([bar_ offTheSideButtonIsHidden]);
@@ -1250,15 +1422,54 @@ TEST_F(BookmarkBarControllerTest, DISABLED_OffTheSideFolder) {
// making sure that none of the nodes in the off-the-side folder are
// found in bar buttons. Be careful since not all the bar buttons
// may be currently displayed.
- NSArray* folderItems = [[[bbfc menuBridge]->controller() menu] itemArray];
+ NSArray* folderButtons = [bbfc buttons];
NSArray* barButtons = [bar_ buttons];
- for (NSMenuItem* folderItem in folderItems) {
+ for (BookmarkButton* folderButton in folderButtons) {
for (BookmarkButton* barButton in barButtons) {
if ([barButton superview]) {
- EXPECT_NE([folderItem tag], [barButton bookmarkNode]->id());
+ EXPECT_NE([folderButton bookmarkNode], [barButton bookmarkNode]);
}
}
}
+
+ // Delete a bookmark in the off-the-side and verify it's gone.
+ BookmarkButton* button = [bbfc buttonWithTitleEqualTo:@"DELETE_ME"];
+ EXPECT_TRUE(button);
+ model->Remove(parent, parent->child_count() - 2);
+ button = [bbfc buttonWithTitleEqualTo:@"DELETE_ME"];
+ EXPECT_FALSE(button);
+}
+
+TEST_F(BookmarkBarControllerTest, EventToExitCheck) {
+ NSEvent* event = cocoa_test_event_utils::MakeMouseEvent(NSMouseMoved, 0);
+ EXPECT_FALSE([bar_ isEventAnExitEvent:event]);
+
+ BookmarkBarFolderWindow* folderWindow = [[[BookmarkBarFolderWindow alloc]
+ init] autorelease];
+ [[[bar_ view] window] addChildWindow:folderWindow
+ ordered:NSWindowAbove];
+ event = cocoa_test_event_utils::LeftMouseDownAtPointInWindow(NSMakePoint(1,1),
+ folderWindow);
+ EXPECT_FALSE([bar_ isEventAnExitEvent:event]);
+
+ event = cocoa_test_event_utils::LeftMouseDownAtPointInWindow(
+ NSMakePoint(100,100), test_window());
+ EXPECT_TRUE([bar_ isEventAnExitEvent:event]);
+
+ // Many components are arbitrary (e.g. location, keycode).
+ event = [NSEvent keyEventWithType:NSKeyDown
+ location:NSMakePoint(1,1)
+ modifierFlags:0
+ timestamp:0
+ windowNumber:0
+ context:nil
+ characters:@"x"
+ charactersIgnoringModifiers:@"x"
+ isARepeat:NO
+ keyCode:87];
+ EXPECT_FALSE([bar_ isEventAnExitEvent:event]);
+
+ [[[bar_ view] window] removeChildWindow:folderWindow];
}
TEST_F(BookmarkBarControllerTest, DropDestination) {
@@ -1300,6 +1511,45 @@ TEST_F(BookmarkBarControllerTest, DropDestination) {
}
}
+TEST_F(BookmarkBarControllerTest, NodeDeletedWhileMenuIsOpen) {
+ BookmarkModel* model = profile()->GetBookmarkModel();
+ [bar_ loaded:model];
+
+ const BookmarkNode* parent = model->bookmark_bar_node();
+ const BookmarkNode* initialNode = model->AddURL(
+ parent, parent->child_count(),
+ ASCIIToUTF16("initial"),
+ GURL("http://www.google.com"));
+
+ NSMenuItem* item = ItemForBookmarkBarMenu(initialNode);
+ EXPECT_EQ(0U, noOpenBar()->urls_.size());
+
+ // Basic check of the menu item and an IBOutlet it can call.
+ EXPECT_EQ(initialNode, [bar_ nodeFromMenuItem:item]);
+ [bar_ openBookmarkInNewWindow:item];
+ EXPECT_EQ(1U, noOpenBar()->urls_.size());
+ [bar_ clear];
+
+ // Now delete the node and make sure things are happy (no crash,
+ // NULL node caught).
+ model->Remove(parent, parent->GetIndexOf(initialNode));
+ EXPECT_EQ(nil, [bar_ nodeFromMenuItem:item]);
+ // Should not crash by referencing a deleted node.
+ [bar_ openBookmarkInNewWindow:item];
+ // Confirm the above did nothing in case it somehow didn't crash.
+ EXPECT_EQ(0U, noOpenBar()->urls_.size());
+
+ // Confirm some more non-crashes.
+ [bar_ openBookmarkInNewForegroundTab:item];
+ [bar_ openBookmarkInIncognitoWindow:item];
+ [bar_ editBookmark:item];
+ [bar_ copyBookmark:item];
+ [bar_ deleteBookmark:item];
+ [bar_ openAllBookmarks:item];
+ [bar_ openAllBookmarksNewWindow:item];
+ [bar_ openAllBookmarksIncognitoWindow:item];
+}
+
TEST_F(BookmarkBarControllerTest, NodeDeletedWhileContextMenuIsOpen) {
BookmarkModel* model = profile()->GetBookmarkModel();
[bar_ loaded:model];
@@ -1326,6 +1576,39 @@ TEST_F(BookmarkBarControllerTest, NodeDeletedWhileContextMenuIsOpen) {
EXPECT_OCMOCK_VERIFY(fakeMenu);
}
+TEST_F(BookmarkBarControllerTest, CloseFolderOnAnimate) {
+ BookmarkModel* model = profile()->GetBookmarkModel();
+ const BookmarkNode* parent = model->bookmark_bar_node();
+ const BookmarkNode* folder = model->AddFolder(parent,
+ parent->child_count(),
+ ASCIIToUTF16("folder"));
+ model->AddFolder(parent, parent->child_count(),
+ ASCIIToUTF16("sibbling folder"));
+ model->AddURL(folder, folder->child_count(), ASCIIToUTF16("title a"),
+ GURL("http://www.google.com/a"));
+ model->AddURL(folder, folder->child_count(),
+ ASCIIToUTF16("title super duper long long whoa momma title you betcha"),
+ GURL("http://www.google.com/b"));
+ BookmarkButton* button = [[bar_ buttons] objectAtIndex:0];
+ EXPECT_FALSE([bar_ folderController]);
+ [bar_ openBookmarkFolderFromButton:button];
+ BookmarkBarFolderController* bbfc = [bar_ folderController];
+ // The following tells us that the folder menu is showing. We want to make
+ // sure the folder menu goes away if the bookmark bar is hidden.
+ EXPECT_TRUE(bbfc);
+ EXPECT_TRUE([bar_ isVisible]);
+
+ // Hide the bookmark bar.
+ [bar_ updateAndShowNormalBar:NO
+ showDetachedBar:YES
+ withAnimation:YES];
+ EXPECT_TRUE([bar_ isAnimationRunning]);
+
+ // Now that we've closed the bookmark bar (with animation) the folder menu
+ // should have been closed thus releasing the folderController.
+ EXPECT_FALSE([bar_ folderController]);
+}
+
TEST_F(BookmarkBarControllerTest, MoveRemoveAddButtons) {
BookmarkModel& model(*profile()->GetBookmarkModel());
const BookmarkNode* root = model.bookmark_bar_node();
@@ -1587,9 +1870,7 @@ class BookmarkBarControllerDragDropTest : public BookmarkBarControllerTestBase {
}
};
-// TODO(rsesek): Fix off the side menu for new-style menus.
-TEST_F(BookmarkBarControllerDragDropTest,
- DISABLED_DragMoveBarBookmarkToOffTheSide) {
+TEST_F(BookmarkBarControllerDragDropTest, DragMoveBarBookmarkToOffTheSide) {
BookmarkModel& model(*profile()->GetBookmarkModel());
const BookmarkNode* root = model.bookmark_bar_node();
const std::string model_string("1bWithLongName 2fWithLongName:[ "
@@ -1614,33 +1895,90 @@ TEST_F(BookmarkBarControllerDragDropTest,
// Pop up the off-the-side menu.
BookmarkButton* otsButton = (BookmarkButton*)[bar_ offTheSideButton];
ASSERT_TRUE(otsButton);
-
+ [[otsButton target] performSelector:@selector(openOffTheSideFolderFromButton:)
+ withObject:otsButton];
BookmarkBarFolderController* otsController = [bar_ folderController];
EXPECT_TRUE(otsController);
-
+ NSWindow* toWindow = [otsController window];
+ EXPECT_TRUE(toWindow);
BookmarkButton* draggedButton =
[bar_ buttonWithTitleEqualTo:@"3bWithLongName"];
ASSERT_TRUE(draggedButton);
-
- int oldOTSCount = NumberOfMenuItems(otsController);
+ int oldOTSCount = (int)[[otsController buttons] count];
EXPECT_EQ(oldOTSCount, oldChildCount - oldDisplayedButtons);
-
- NSRect frame = [otsButton frame];
- [bar_ dragButton:draggedButton
- to:NSMakePoint(NSMidX(frame), NSMidY(frame))
- copy:YES];
-
+ BookmarkButton* targetButton = [[otsController buttons] objectAtIndex:0];
+ ASSERT_TRUE(targetButton);
+ [otsController dragButton:draggedButton
+ to:[targetButton center]
+ copy:YES];
// There should still be the same number of buttons in the bar
// and off-the-side should have one more.
int newDisplayedButtons = [bar_ displayedButtonCount];
int newChildCount = root->child_count();
- int newOTSCount = NumberOfMenuItems(otsController);
+ int newOTSCount = (int)[[otsController buttons] count];
EXPECT_EQ(oldDisplayedButtons, newDisplayedButtons);
EXPECT_EQ(oldChildCount + 1, newChildCount);
EXPECT_EQ(oldOTSCount + 1, newOTSCount);
EXPECT_EQ(newOTSCount, newChildCount - newDisplayedButtons);
}
+TEST_F(BookmarkBarControllerDragDropTest, DragOffTheSideToOther) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1bWithLongName 2bWithLongName "
+ "3bWithLongName 4bWithLongName 5bWithLongName 6bWithLongName "
+ "7bWithLongName 8bWithLongName 9bWithLongName 10bWithLongName "
+ "11bWithLongName 12bWithLongName 13bWithLongName 14bWithLongName "
+ "15bWithLongName 16bWithLongName 17bWithLongName 18bWithLongName "
+ "19bWithLongName 20bWithLongName ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ const BookmarkNode* other = model.other_node();
+ const std::string other_string("1other 2other 3other ");
+ model_test_utils::AddNodesFromModelString(model, other, other_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+ std::string actualOtherString = model_test_utils::ModelStringFromNode(other);
+ EXPECT_EQ(other_string, actualOtherString);
+
+ // Insure that the off-the-side is showing.
+ ASSERT_FALSE([bar_ offTheSideButtonIsHidden]);
+
+ // Remember how many buttons are showing and are available.
+ int oldDisplayedButtons = [bar_ displayedButtonCount];
+ int oldRootCount = root->child_count();
+ int oldOtherCount = other->child_count();
+
+ // Pop up the off-the-side menu.
+ BookmarkButton* otsButton = (BookmarkButton*)[bar_ offTheSideButton];
+ ASSERT_TRUE(otsButton);
+ [[otsButton target] performSelector:@selector(openOffTheSideFolderFromButton:)
+ withObject:otsButton];
+ BookmarkBarFolderController* otsController = [bar_ folderController];
+ EXPECT_TRUE(otsController);
+ int oldOTSCount = (int)[[otsController buttons] count];
+ EXPECT_EQ(oldOTSCount, oldRootCount - oldDisplayedButtons);
+
+ // Pick an off-the-side button and drag it to the other bookmarks.
+ BookmarkButton* draggedButton =
+ [otsController buttonWithTitleEqualTo:@"20bWithLongName"];
+ ASSERT_TRUE(draggedButton);
+ BookmarkButton* targetButton = [bar_ otherBookmarksButton];
+ ASSERT_TRUE(targetButton);
+ [bar_ dragButton:draggedButton to:[targetButton center] copy:NO];
+
+ // There should one less button in the bar, one less in off-the-side,
+ // and one more in other bookmarks.
+ int newRootCount = root->child_count();
+ int newOTSCount = (int)[[otsController buttons] count];
+ int newOtherCount = other->child_count();
+ EXPECT_EQ(oldRootCount - 1, newRootCount);
+ EXPECT_EQ(oldOTSCount - 1, newOTSCount);
+ EXPECT_EQ(oldOtherCount + 1, newOtherCount);
+}
+
TEST_F(BookmarkBarControllerDragDropTest, DragBookmarkData) {
BookmarkModel& model(*profile()->GetBookmarkModel());
const BookmarkNode* root = model.bookmark_bar_node();
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h
new file mode 100644
index 0000000..f768e27
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h
@@ -0,0 +1,31 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_BUTTON_CELL_H_
+#define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_BUTTON_CELL_H_
+#pragma once
+
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h"
+
+class BookmarkNode;
+
+// A button cell that handles drawing/highlighting of buttons in the
+// bookmark bar. This cell forwards mouseEntered/mouseExited events
+// to its control view so that pseudo-menu operations
+// (e.g. hover-over to open) can be implemented.
+@interface BookmarkBarFolderButtonCell : BookmarkButtonCell {
+ @private
+ scoped_nsobject<NSColor> frameColor_;
+}
+
+// Create a button cell which draws without a theme and with a frame
+// color provided by the ThemeService defaults.
++ (id)buttonCellForNode:(const BookmarkNode*)node
+ contextMenu:(NSMenu*)contextMenu
+ cellText:(NSString*)cellText
+ cellImage:(NSImage*)cellImage;
+
+@end
+
+#endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_BUTTON_CELL_H_
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.mm
new file mode 100644
index 0000000..4c05c72
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.mm
@@ -0,0 +1,29 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h"
+
+@implementation BookmarkBarFolderButtonCell
+
++ (id)buttonCellForNode:(const BookmarkNode*)node
+ contextMenu:(NSMenu*)contextMenu
+ cellText:(NSString*)cellText
+ cellImage:(NSImage*)cellImage {
+ id buttonCell =
+ [[[BookmarkBarFolderButtonCell alloc] initForNode:node
+ contextMenu:contextMenu
+ cellText:cellText
+ cellImage:cellImage]
+ autorelease];
+ return buttonCell;
+}
+
+- (BOOL)isFolderButtonCell {
+ return YES;
+}
+
+- (void)setMouseInside:(BOOL)flag animate:(BOOL)animated {
+}
+
+@end
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell_unittest.mm
new file mode 100644
index 0000000..dff15be
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell_unittest.mm
@@ -0,0 +1,24 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/memory/scoped_nsobject.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h"
+#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
+
+namespace {
+
+class BookmarkBarFolderButtonCellTest : public CocoaTest {
+};
+
+// Basic creation.
+TEST_F(BookmarkBarFolderButtonCellTest, Create) {
+ scoped_nsobject<BookmarkBarFolderButtonCell> cell;
+ cell.reset([[BookmarkBarFolderButtonCell buttonCellForNode:nil
+ contextMenu:nil
+ cellText:nil
+ cellImage:nil] retain]);
+ EXPECT_TRUE(cell);
+}
+
+} // namespace
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h
index a26aa49..fae30ab 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h
@@ -9,55 +9,224 @@
#import <Cocoa/Cocoa.h>
#include "base/memory/scoped_nsobject.h"
-#include "base/memory/scoped_ptr.h"
-#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
+#import "chrome/browser/ui/cocoa/tracking_area.h"
@class BookmarkBarController;
-@class BookmarkButton;
-class BookmarkMenuBridge;
-class BookmarkModel;
-
-// A controller for the menus that are attached to the folder buttons on the
-// bookmark bar.
-@interface BookmarkBarFolderController : NSObject<BookmarkMenuDelegate> {
+@class BookmarkBarFolderView;
+@class BookmarkFolderTarget;
+@class BookmarkBarFolderHoverState;
+@class BookmarkBarFolderWindow;
+@class BookmarkBarFolderWindowContentView;
+
+// A controller for the pop-up windows from bookmark folder buttons
+// which look sort of like menus.
+@interface BookmarkBarFolderController :
+ NSWindowController<BookmarkButtonDelegate,
+ BookmarkButtonControllerProtocol,
+ NSUserInterfaceValidations> {
@private
// The button whose click opened us.
scoped_nsobject<BookmarkButton> parentButton_;
- // The bookmark bar controller. Weak.
- BookmarkBarController* barController_;
-
- // The root menu for this node.
- scoped_nsobject<NSMenu> menu_;
-
- // The class that builds the menu.
- scoped_ptr<BookmarkMenuBridge> menuBridge_;
+ // Bookmark bar folder controller chains are torn down in two ways:
+ // 1. Clicking "outside" the folder (see use of
+ // CrApplicationEventHookProtocol in the bookmark bar controller).
+ // 2. Engaging a different folder (via hover over or explicit click).
+ //
+ // In either case, the BookmarkButtonControllerProtocol method
+ // closeAllBookmarkFolders gets called. For bookmark bar folder
+ // controllers, this is passed up the chain so we begin with a top
+ // level "close".
+ // When any bookmark folder window closes, it necessarily tells
+ // subcontroller windows to close (down the chain), and autoreleases
+ // the controller. (Must autorelease since the controller can still
+ // get delegate events such as windowDidClose).
+ //
+ // Bookmark bar folder controllers own their buttons. When doing
+ // drag and drop of a button from one sub-sub-folder to a different
+ // sub-sub-folder, we need to make sure the button's pointers stay
+ // valid until we've dropped (or cancelled). Note that such a drag
+ // causes the source sub-sub-folder (previous parent window) to go
+ // away (windows close, controllers autoreleased) since you're
+ // hovering over a different folder chain for dropping. To keep
+ // things valid (like the button's target, its delegate, the parent
+ // cotroller that we have a pointer to below [below], etc), we heep
+ // strong pointers to our owning controller, so the entire chain
+ // stays owned.
+
+ // Our parent controller, if we are a nested folder, otherwise nil.
+ // Strong to insure the object lives as long as we need it.
+ scoped_nsobject<BookmarkBarFolderController> parentController_;
+
+ // The main bar controller from whence we or a parent sprang.
+ BookmarkBarController* barController_; // WEAK: It owns us.
+
+ // Our buttons. We do not have buttons for nested folders.
+ scoped_nsobject<NSMutableArray> buttons_;
+
+ // The scroll view that contains our main button view (below).
+ IBOutlet NSScrollView* scrollView_;
+
+ // The view defining the visible area in which we draw our content.
+ IBOutlet BookmarkBarFolderWindowContentView* visibleView_;
+
+ // The main view of this window (where the buttons go) within the scroller.
+ IBOutlet BookmarkBarFolderView* folderView_;
+
+ // A window used to show the shadow behind the main window when it is
+ // scrollable. (A 'shadow' window is needed because the main window, when
+ // scrollable in either or both directions, will reach completely to the
+ // top and/or bottom edge of the screen in order to support mouse tracking
+ // during scrolling operations. In that case, though, the 'visible'
+ // window must be inset a bit from the edge of the screen for aesthetics;
+ // it will also be inset much more from the bottom of the screen when the
+ // Dock is showing. When scrollable, the main window would show a shadow
+ // incorrectly positioned, hence the 'shadow' window.)
+ IBOutlet BookmarkBarFolderWindow* shadowWindow_;
+
+ // The up and down scroll arrow views. These arrows are hidden and shown
+ // as necessary (when scrolling is possible) and are contained in the nib
+ // as siblings to the scroll view.
+ IBOutlet NSView* scrollDownArrowView_; // Positioned at the top.
+ IBOutlet NSView* scrollUpArrowView_; // Positioned at the bottom.
+
+ // YES if subfolders should grow to the right (the default).
+ // Direction switches if we'd grow off the screen.
+ BOOL subFolderGrowthToRight_;
+
+ // Weak; we keep track to work around a
+ // setShowsBorderOnlyWhileMouseInside bug.
+ BookmarkButton* buttonThatMouseIsIn_;
+
+ // The context menu for a bookmark button which represents an URL.
+ IBOutlet NSMenu* buttonMenu_;
+
+ // The context menu for a bookmark button which represents a folder.
+ IBOutlet NSMenu* folderMenu_;
+
+ // We model hover state as a state machine with specific allowable
+ // transitions. |hoverState_| is the state of this machine at any
+ // given time.
+ scoped_nsobject<BookmarkBarFolderHoverState> hoverState_;
+
+ // Logic for dealing with a click on a bookmark folder button.
+ scoped_nsobject<BookmarkFolderTarget> folderTarget_;
+
+ // A controller for a pop-up bookmark folder window (custom menu).
+ // We (self) are the parentController_ for our folderController_.
+ // This is not a scoped_nsobject because it owns itself (when its
+ // window closes the controller gets autoreleased).
+ BookmarkBarFolderController* folderController_;
+
+ // Implement basic menu scrolling through this tracking area.
+ ScopedCrTrackingArea scrollTrackingArea_;
+
+ // Timer to continue scrolling as needed. We own the timer but
+ // don't release it when done (we invalidate it).
+ NSTimer* scrollTimer_;
+
+ // Precalculated sum of left and right edge padding of buttons in a
+ // folder menu window. This is calculated from the widths of the main
+ // folder menu window and the scroll view within.
+ CGFloat padding_;
+
+ // Amount to scroll by on each timer fire. Can be + or -.
+ CGFloat verticalScrollDelta_;
+
+ // We need to know the size of the vertical scrolling arrows so we
+ // can obscure/unobscure them.
+ CGFloat verticalScrollArrowHeight_;
+
+ // Set to YES to prevent any node animations. Useful for unit testing so that
+ // incomplete animations do not cause valgrind complaints.
+ BOOL ignoreAnimations_;
+
+ int selectedIndex_;
+ NSString* typedPrefix_;
}
// Designated initializer.
- (id)initWithParentButton:(BookmarkButton*)button
- bookmarkModel:(BookmarkModel*)model
+ parentController:(BookmarkBarFolderController*)parentController
barController:(BookmarkBarController*)barController;
// Return the parent button that owns the bookmark folder we represent.
- (BookmarkButton*)parentButton;
-// Opens the menu. This will retain itself before it runs the menu and will
-// release itself when the menu closes.
-- (void)openMenu;
+// Text typed by user, for type-select and arrow key support.
+// Returns YES if the menu should be closed now.
+- (BOOL)handleInputText:(NSString*)newText;
+
+// If you wanted to clear the type-select buffer. Currently only used
+// internally.
+- (void)clearInputText;
+
+// Gets notified when a fav icon asynchronously loads, so we can now use the
+// real icon instead of a generic placeholder.
+- (void)faviconLoadedForNode:(const BookmarkNode*)node;
+
+- (void)setSelectedButtonByIndex:(int)index;
+
+// Offset our folder menu window. This is usually needed in response to a
+// parent folder menu window or the bookmark bar changing position due to
+// the dragging of a bookmark node from the parent into this folder menu.
+- (void)offsetFolderMenuWindow:(NSSize)offset;
+
+// Re-layout the window menu in case some buttons were added or removed,
+// specifically as a result of the bookmark bar changing configuration
+// and altering the contents of the off-the-side folder.
+- (void)reconfigureMenu;
+
+// Actions from a context menu over a button or folder.
+- (IBAction)cutBookmark:(id)sender;
+- (IBAction)copyBookmark:(id)sender;
+- (IBAction)pasteBookmark:(id)sender;
+- (IBAction)deleteBookmark:(id)sender;
+
+// Passed up by a child view to tell us of a desire to scroll.
+- (void)scrollWheel:(NSEvent *)theEvent;
+
+- (void)mouseDragged:(NSEvent*)theEvent;
+
-// Closes the menu.
-- (void)closeMenu;
+// Forwarded to the associated BookmarkBarController.
+- (IBAction)addFolder:(id)sender;
+- (IBAction)addPage:(id)sender;
+- (IBAction)editBookmark:(id)sender;
+- (IBAction)openBookmark:(id)sender;
+- (IBAction)openAllBookmarks:(id)sender;
+- (IBAction)openAllBookmarksIncognitoWindow:(id)sender;
+- (IBAction)openAllBookmarksNewWindow:(id)sender;
+- (IBAction)openBookmarkInIncognitoWindow:(id)sender;
+- (IBAction)openBookmarkInNewForegroundTab:(id)sender;
+- (IBAction)openBookmarkInNewWindow:(id)sender;
-// For the "Off The Side" chevron menu, this sets the index in the bookmark_bar
-// node at which the folder should start showing menu items. Forwarded to the
-// bridge.
-- (void)setOffTheSideNodeStartIndex:(size_t)index;
+@property(assign, nonatomic) BOOL subFolderGrowthToRight;
@end
-@interface BookmarkBarFolderController (ExposedForTesting)
-- (BookmarkMenuBridge*)menuBridge;
+@interface BookmarkBarFolderController(TestingAPI)
+- (NSPoint)windowTopLeftForWidth:(int)windowWidth
+ height:(int)windowHeight;
+- (NSArray*)buttons;
+- (BookmarkBarFolderController*)folderController;
+- (id)folderTarget;
+- (void)configureWindowLevel;
+- (void)performOneScroll:(CGFloat)delta;
+- (BookmarkButton*)buttonThatMouseIsIn;
+// Set to YES in order to prevent animations.
+- (void)setIgnoreAnimations:(BOOL)ignore;
+
+// Return YES if the scroll-up or scroll-down arrows are showing.
+- (BOOL)canScrollUp;
+- (BOOL)canScrollDown;
+- (CGFloat)verticalScrollArrowHeight;
+- (NSView*)visibleView;
+- (NSScrollView*)scrollView;
+- (NSView*)folderView;
+
+- (BookmarkButton*)buttonForDroppingOnAtPoint:(NSPoint)point;
@end
#endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_CONTROLLER_H_
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm
index 342c30a..e237f44 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm
@@ -5,103 +5,1990 @@
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
#include "base/mac/mac_util.h"
+#include "base/sys_string_conversions.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
+#include "chrome/browser/bookmarks/bookmark_utils.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h"
-#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
-#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h"
+#import "chrome/browser/ui/cocoa/browser_window_controller.h"
+#import "chrome/browser/ui/cocoa/event_utils.h"
+#include "ui/base/theme_provider.h"
-// Forward-declare symbols that are part of the 10.6 SDK.
-#if !defined(MAC_OS_X_VERSION_10_6) || \
- MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
+using bookmarks::kBookmarkBarMenuCornerRadius;
+
+namespace {
+
+// Frequency of the scrolling timer in seconds.
+const NSTimeInterval kBookmarkBarFolderScrollInterval = 0.1;
+
+// Amount to scroll by per timer fire. We scroll rather slowly; to
+// accomodate we do several at a time.
+const CGFloat kBookmarkBarFolderScrollAmount =
+ 3 * bookmarks::kBookmarkFolderButtonHeight;
+
+// Amount to scroll for each scroll wheel roll.
+const CGFloat kBookmarkBarFolderScrollWheelAmount =
+ 1 * bookmarks::kBookmarkFolderButtonHeight;
+
+// Determining adjustments to the layout of the folder menu window in response
+// to resizing and scrolling relies on many visual factors. The following
+// struct is used to pass around these factors to the several support
+// functions involved in the adjustment calculations and application.
+struct LayoutMetrics {
+ // Metrics applied during the final layout adjustments to the window,
+ // the main visible content view, and the menu content view (i.e. the
+ // scroll view).
+ CGFloat windowLeft;
+ NSSize windowSize;
+ // The proposed and then final scrolling adjustment made to the scrollable
+ // area of the folder menu. This may be modified during the window layout
+ // primarily as a result of hiding or showing the scroll arrows.
+ CGFloat scrollDelta;
+ NSRect windowFrame;
+ NSRect visibleFrame;
+ NSRect scrollerFrame;
+ NSPoint scrollPoint;
+ // The difference between 'could' and 'can' in these next four data members
+ // is this: 'could' represents the previous condition for scrollability
+ // while 'can' represents what the new condition will be for scrollability.
+ BOOL couldScrollUp;
+ BOOL canScrollUp;
+ BOOL couldScrollDown;
+ BOOL canScrollDown;
+ // Determines the optimal time during folder menu layout when the contents
+ // of the button scroll area should be scrolled in order to prevent
+ // flickering.
+ BOOL preScroll;
+
+ // Intermediate metrics used in determining window vertical layout changes.
+ CGFloat deltaWindowHeight;
+ CGFloat deltaWindowY;
+ CGFloat deltaVisibleHeight;
+ CGFloat deltaVisibleY;
+ CGFloat deltaScrollerHeight;
+ CGFloat deltaScrollerY;
+
+ // Convenience metrics used in multiple functions (carried along here in
+ // order to eliminate the need to calculate in multiple places and
+ // reduce the possibility of bugs).
+ CGFloat minimumY;
+ CGFloat oldWindowY;
+ CGFloat folderY;
+ CGFloat folderTop;
+
+ LayoutMetrics(CGFloat windowLeft, NSSize windowSize, CGFloat scrollDelta) :
+ windowLeft(windowLeft),
+ windowSize(windowSize),
+ scrollDelta(scrollDelta),
+ couldScrollUp(NO),
+ canScrollUp(NO),
+ couldScrollDown(NO),
+ canScrollDown(NO),
+ preScroll(NO),
+ deltaWindowHeight(0.0),
+ deltaWindowY(0.0),
+ deltaVisibleHeight(0.0),
+ deltaVisibleY(0.0),
+ deltaScrollerHeight(0.0),
+ deltaScrollerY(0.0),
+ oldWindowY(0.0),
+ folderY(0.0),
+ folderTop(0.0) {}
+};
+
+} // namespace
+
+
+// Required to set the right tracking bounds for our fake menus.
+@interface NSView(Private)
+- (void)_updateTrackingAreas;
+@end
+
+@interface BookmarkBarFolderController(Private)
+- (void)configureWindow;
+- (void)addOrUpdateScrollTracking;
+- (void)removeScrollTracking;
+- (void)endScroll;
+- (void)addScrollTimerWithDelta:(CGFloat)delta;
+
+// Helper function to configureWindow which performs a basic layout of
+// the window subviews, in particular the menu buttons and the window width.
+- (void)layOutWindowWithHeight:(CGFloat)height;
+
+// Determine the best button width (which will be the widest button or the
+// maximum allowable button width, whichever is less) and resize all buttons.
+// Return the new width so that the window can be adjusted.
+- (CGFloat)adjustButtonWidths;
+
+// Returns the total menu height needed to display |buttonCount| buttons.
+// Does not do any fancy tricks like trimming the height to fit on the screen.
+- (int)menuHeightForButtonCount:(int)buttonCount;
+
+// Adjust layout of the folder menu window components, showing/hiding the
+// scroll up/down arrows, and resizing as necessary for a proper disaplay.
+// In order to reduce window flicker, all layout changes are deferred until
+// the final step of the adjustment. To accommodate this deferral, window
+// height and width changes needed by callers to this function pass their
+// desired window changes in |size|. When scrolling is to be performed
+// any scrolling change is given by |scrollDelta|. The ultimate amount of
+// scrolling may be different from |scrollDelta| in order to accommodate
+// changes in the scroller view layout. These proposed window adjustments
+// are passed to helper functions using a LayoutMetrics structure.
+//
+// This function should be called when: 1) initially setting up a folder menu
+// window, 2) responding to scrolling of the contents (which may affect the
+// height of the window), 3) addition or removal of bookmark items (such as
+// during cut/paste/delete/drag/drop operations).
+- (void)adjustWindowLeft:(CGFloat)windowLeft
+ size:(NSSize)windowSize
+ scrollingBy:(CGFloat)scrollDelta;
+
+// Support function for adjustWindowLeft:size:scrollingBy: which initializes
+// the layout adjustments by gathering current folder menu window and subviews
+// positions and sizes. This information is set in the |layoutMetrics|
+// structure.
+- (void)gatherMetrics:(LayoutMetrics*)layoutMetrics;
+
+// Support function for adjustWindowLeft:size:scrollingBy: which calculates
+// the changes which must be applied to the folder menu window and subviews
+// positions and sizes. |layoutMetrics| contains the proposed window size
+// and scrolling along with the other current window and subview layout
+// information. The values in |layoutMetrics| are then adjusted to
+// accommodate scroll arrow presentation and window growth.
+- (void)adjustMetrics:(LayoutMetrics*)layoutMetrics;
+
+// Support function for adjustMetrics: which calculates the layout changes
+// required to accommodate changes in the position and scrollability
+// of the top of the folder menu window.
+- (void)adjustMetricsForMenuTopChanges:(LayoutMetrics*)layoutMetrics;
+
+// Support function for adjustMetrics: which calculates the layout changes
+// required to accommodate changes in the position and scrollability
+// of the bottom of the folder menu window.
+- (void)adjustMetricsForMenuBottomChanges:(LayoutMetrics*)layoutMetrics;
+
+// Support function for adjustWindowLeft:size:scrollingBy: which applies
+// the layout adjustments to the folder menu window and subviews.
+- (void)applyMetrics:(LayoutMetrics*)layoutMetrics;
+
+// This function is called when buttons are added or removed from the folder
+// menu, and which may require a change in the layout of the folder menu
+// window. Such layout changes may include horizontal placement, width,
+// height, and scroller visibility changes. (This function calls through
+// to -[adjustWindowLeft:size:scrollingBy:].)
+// |buttonCount| should contain the updated count of menu buttons.
+- (void)adjustWindowForButtonCount:(NSUInteger)buttonCount;
+
+// A helper function which takes the desired amount to scroll, given by
+// |scrollDelta|, and calculates the actual scrolling change to be applied
+// taking into account the layout of the folder menu window and any
+// changes in it's scrollability. (For example, when scrolling down and the
+// top-most menu item is coming into view we will only scroll enough for
+// that item to be completely presented, which may be less than the
+// scroll amount requested.)
+- (CGFloat)determineFinalScrollDelta:(CGFloat)scrollDelta;
+
+// |point| is in the base coordinate system of the destination window;
+// it comes from an id<NSDraggingInfo>. |copy| is YES if a copy is to be
+// made and inserted into the new location while leaving the bookmark in
+// the old location, otherwise move the bookmark by removing from its old
+// location and inserting into the new location.
+- (BOOL)dragBookmark:(const BookmarkNode*)sourceNode
+ to:(NSPoint)point
+ copy:(BOOL)copy;
-@interface NSMenu (SnowLeopardSDK)
-- (BOOL)popUpMenuPositioningItem:(NSMenuItem*)item
- atLocation:(NSPoint)location
- inView:(NSView*)view;
@end
-#endif // MAC_OS_X_VERSION_10_6
+@interface BookmarkButton (BookmarkBarFolderMenuHighlighting)
+
+// Make the button's border frame always appear when |forceOn| is YES,
+// otherwise only border the button when the mouse is inside the button.
+- (void)forceButtonBorderToStayOnAlways:(BOOL)forceOn;
+
+@end
+
+@implementation BookmarkButton (BookmarkBarFolderMenuHighlighting)
+
+- (void)forceButtonBorderToStayOnAlways:(BOOL)forceOn {
+ [self setShowsBorderOnlyWhileMouseInside:!forceOn];
+ [self setNeedsDisplay];
+}
+
+@end
@implementation BookmarkBarFolderController
+@synthesize subFolderGrowthToRight = subFolderGrowthToRight_;
+
- (id)initWithParentButton:(BookmarkButton*)button
- bookmarkModel:(BookmarkModel*)model
+ parentController:(BookmarkBarFolderController*)parentController
barController:(BookmarkBarController*)barController {
- if ((self = [super init])) {
+ NSString* nibPath =
+ [base::mac::MainAppBundle() pathForResource:@"BookmarkBarFolderWindow"
+ ofType:@"nib"];
+ if ((self = [super initWithWindowNibPath:nibPath owner:self])) {
parentButton_.reset([button retain]);
- barController_ = barController;
- menu_.reset([[NSMenu alloc] initWithTitle:@""]);
- menuBridge_.reset(new BookmarkMenuBridge([parentButton_ bookmarkNode],
- model->profile(), menu_));
- [menuBridge_->controller() setDelegate:self];
+ selectedIndex_ = -1;
+
+ // We want the button to remain bordered as part of the menu path.
+ [button forceButtonBorderToStayOnAlways:YES];
+
+ parentController_.reset([parentController retain]);
+ if (!parentController_)
+ [self setSubFolderGrowthToRight:YES];
+ else
+ [self setSubFolderGrowthToRight:[parentController
+ subFolderGrowthToRight]];
+ barController_ = barController; // WEAK
+ buttons_.reset([[NSMutableArray alloc] init]);
+ folderTarget_.reset([[BookmarkFolderTarget alloc] initWithController:self]);
+ [self configureWindow];
+ hoverState_.reset([[BookmarkBarFolderHoverState alloc] init]);
}
return self;
}
+- (void)dealloc {
+ [self clearInputText];
+
+ // The button is no longer part of the menu path.
+ [parentButton_ forceButtonBorderToStayOnAlways:NO];
+ [parentButton_ setNeedsDisplay];
+
+ [self removeScrollTracking];
+ [self endScroll];
+ [hoverState_ draggingExited];
+
+ // Delegate pattern does not retain; make sure pointers to us are removed.
+ for (BookmarkButton* button in buttons_.get()) {
+ [button setDelegate:nil];
+ [button setTarget:nil];
+ [button setAction:nil];
+ }
+
+ // Note: we don't need to
+ // [NSObject cancelPreviousPerformRequestsWithTarget:self];
+ // Because all of our performSelector: calls use withDelay: which
+ // retains us.
+ [super dealloc];
+}
+
+- (void)awakeFromNib {
+ NSRect windowFrame = [[self window] frame];
+ NSRect scrollViewFrame = [scrollView_ frame];
+ padding_ = NSWidth(windowFrame) - NSWidth(scrollViewFrame);
+ verticalScrollArrowHeight_ = NSHeight([scrollUpArrowView_ frame]);
+}
+
+// Overriden from NSWindowController to call childFolderWillShow: before showing
+// the window.
+- (void)showWindow:(id)sender {
+ [barController_ childFolderWillShow:self];
+ [super showWindow:sender];
+}
+
+- (int)buttonCount {
+ return [[self buttons] count];
+}
+
- (BookmarkButton*)parentButton {
return parentButton_.get();
}
-- (void)openMenu {
- // Retain self so that whatever created this can forefit ownership if it
- // wants. This call is balanced in |-bookmarkMenuDidClose:|.
- [self retain];
+- (void)offsetFolderMenuWindow:(NSSize)offset {
+ NSWindow* window = [self window];
+ NSRect windowFrame = [window frame];
+ windowFrame.origin.x -= offset.width;
+ windowFrame.origin.y += offset.height; // Yes, in the opposite direction!
+ [window setFrame:windowFrame display:YES];
+ [folderController_ offsetFolderMenuWindow:offset];
+}
+
+- (void)reconfigureMenu {
+ [NSObject cancelPreviousPerformRequestsWithTarget:self];
+ for (BookmarkButton* button in buttons_.get()) {
+ [button setDelegate:nil];
+ [button removeFromSuperview];
+ }
+ [buttons_ removeAllObjects];
+ [self configureWindow];
+}
+
+#pragma mark Private Methods
+
+- (BookmarkButtonCell*)cellForBookmarkNode:(const BookmarkNode*)child {
+ NSImage* image = child ? [barController_ faviconForNode:child] : nil;
+ NSMenu* menu = child ? child->is_folder() ? folderMenu_ : buttonMenu_ : nil;
+ BookmarkBarFolderButtonCell* cell =
+ [BookmarkBarFolderButtonCell buttonCellForNode:child
+ contextMenu:menu
+ cellText:nil
+ cellImage:image];
+ [cell setTag:kStandardButtonTypeWithLimitedClickFeedback];
+ return cell;
+}
+
+// Redirect to our logic shared with BookmarkBarController.
+- (IBAction)openBookmarkFolderFromButton:(id)sender {
+ [folderTarget_ openBookmarkFolderFromButton:sender];
+}
+
+// Create a bookmark button for the given node using frame.
+//
+// If |node| is NULL this is an "(empty)" button.
+// Does NOT add this button to our button list.
+// Returns an autoreleased button.
+// Adjusts the input frame width as appropriate.
+//
+// TODO(jrg): combine with addNodesToButtonList: code from
+// bookmark_bar_controller.mm, and generalize that to use both x and y
+// offsets.
+// http://crbug.com/35966
+- (BookmarkButton*)makeButtonForNode:(const BookmarkNode*)node
+ frame:(NSRect)frame {
+ BookmarkButtonCell* cell = [self cellForBookmarkNode:node];
+ DCHECK(cell);
+
+ // We must decide if we draw the folder arrow before we ask the cell
+ // how big it needs to be.
+ if (node && node->is_folder()) {
+ // Warning when combining code with bookmark_bar_controller.mm:
+ // this call should NOT be made for the bar buttons; only for the
+ // subfolder buttons.
+ [cell setDrawFolderArrow:YES];
+ }
+
+ // The "+2" is needed because, sometimes, Cocoa is off by a tad when
+ // returning the value it thinks it needs.
+ CGFloat desired = [cell cellSize].width + 2;
+ // The width is determined from the maximum of the proposed width
+ // (provided in |frame|) or the natural width of the title, then
+ // limited by the abolute minimum and maximum allowable widths.
+ frame.size.width =
+ std::min(std::max(bookmarks::kBookmarkMenuButtonMinimumWidth,
+ std::max(frame.size.width, desired)),
+ bookmarks::kBookmarkMenuButtonMaximumWidth);
+
+ BookmarkButton* button = [[[BookmarkButton alloc] initWithFrame:frame]
+ autorelease];
+ DCHECK(button);
+
+ [button setCell:cell];
+ [button setDelegate:self];
+ if (node) {
+ if (node->is_folder()) {
+ [button setTarget:self];
+ [button setAction:@selector(openBookmarkFolderFromButton:)];
+ } else {
+ // Make the button do something.
+ [button setTarget:self];
+ [button setAction:@selector(openBookmark:)];
+ // Add a tooltip.
+ [button setToolTip:[BookmarkMenuCocoaController tooltipForNode:node]];
+ [button setAcceptsTrackIn:YES];
+ }
+ } else {
+ [button setEnabled:NO];
+ [button setBordered:NO];
+ }
+ return button;
+}
+
+- (id)folderTarget {
+ return folderTarget_.get();
+}
+
+
+// Our parent controller is another BookmarkBarFolderController, so
+// our window is to the right or left of it. We use a little overlap
+// since it looks much more menu-like than with none. If we would
+// grow off the screen, switch growth to the other direction. Growth
+// direction sticks for folder windows which are descendents of us.
+// If we have tried both directions and neither fits, degrade to a
+// default.
+- (CGFloat)childFolderWindowLeftForWidth:(int)windowWidth {
+ // We may legitimately need to try two times (growth to right and
+ // left but not in that order). Limit us to three tries in case
+ // the folder window can't fit on either side of the screen; we
+ // don't want to loop forever.
+ CGFloat x;
+ int tries = 0;
+ while (tries < 2) {
+ // Try to grow right.
+ if ([self subFolderGrowthToRight]) {
+ tries++;
+ x = NSMaxX([[parentButton_ window] frame]) -
+ bookmarks::kBookmarkMenuOverlap;
+ // If off the screen, switch direction.
+ if ((x + windowWidth +
+ bookmarks::kBookmarkHorizontalScreenPadding) >
+ NSMaxX([[[self window] screen] visibleFrame])) {
+ [self setSubFolderGrowthToRight:NO];
+ } else {
+ return x;
+ }
+ }
+ // Try to grow left.
+ if (![self subFolderGrowthToRight]) {
+ tries++;
+ x = NSMinX([[parentButton_ window] frame]) +
+ bookmarks::kBookmarkMenuOverlap -
+ windowWidth;
+ // If off the screen, switch direction.
+ if (x < NSMinX([[[self window] screen] visibleFrame])) {
+ [self setSubFolderGrowthToRight:YES];
+ } else {
+ return x;
+ }
+ }
+ }
+ // Unhappy; do the best we can.
+ return NSMaxX([[[self window] screen] visibleFrame]) - windowWidth;
+}
+
+
+// Compute and return the top left point of our window (screen
+// coordinates). The top left is positioned in a manner similar to
+// cascading menus. Windows may grow to either the right or left of
+// their parent (if a sub-folder) so we need to know |windowWidth|.
+- (NSPoint)windowTopLeftForWidth:(int)windowWidth height:(int)windowHeight {
+ CGFloat kMinSqueezedMenuHeight = bookmarks::kBookmarkFolderButtonHeight * 2.0;
+ NSPoint newWindowTopLeft;
+ if (![parentController_ isKindOfClass:[self class]]) {
+ // If we're not popping up from one of ourselves, we must be
+ // popping up from the bookmark bar itself. In this case, start
+ // BELOW the parent button. Our left is the button left; our top
+ // is bottom of button's parent view.
+ NSPoint buttonBottomLeftInScreen =
+ [[parentButton_ window]
+ convertBaseToScreen:[parentButton_
+ convertPoint:NSZeroPoint toView:nil]];
+ NSPoint bookmarkBarBottomLeftInScreen =
+ [[parentButton_ window]
+ convertBaseToScreen:[[parentButton_ superview]
+ convertPoint:NSZeroPoint toView:nil]];
+ newWindowTopLeft = NSMakePoint(
+ buttonBottomLeftInScreen.x + bookmarks::kBookmarkBarButtonOffset,
+ bookmarkBarBottomLeftInScreen.y + bookmarks::kBookmarkBarMenuOffset);
+ // Make sure the window is on-screen; if not, push left. It is
+ // intentional that top level folders "push left" slightly
+ // different than subfolders.
+ NSRect screenFrame = [[[parentButton_ window] screen] visibleFrame];
+ CGFloat spillOff = (newWindowTopLeft.x + windowWidth) - NSMaxX(screenFrame);
+ if (spillOff > 0.0) {
+ newWindowTopLeft.x = std::max(newWindowTopLeft.x - spillOff,
+ NSMinX(screenFrame));
+ }
+ // The menu looks bad when it is squeezed up against the bottom of the
+ // screen and ends up being only a few pixels tall. If it meets the
+ // threshold for this case, instead show the menu above the button.
+ NSRect visFrame = [[[parentButton_ window] screen] visibleFrame];
+ CGFloat availableVerticalSpace = newWindowTopLeft.y -
+ (NSMinY(visFrame) + bookmarks::kScrollWindowVerticalMargin);
+ if ((availableVerticalSpace < kMinSqueezedMenuHeight) &&
+ (windowHeight > availableVerticalSpace)) {
+ newWindowTopLeft.y = std::min(
+ newWindowTopLeft.y + windowHeight + NSHeight([parentButton_ frame]),
+ NSMaxY(visFrame));
+ }
+ } else {
+ // Parent is a folder: expose as much as we can vertically; grow right/left.
+ newWindowTopLeft.x = [self childFolderWindowLeftForWidth:windowWidth];
+ NSPoint topOfWindow = NSMakePoint(0,
+ NSMaxY([parentButton_ frame]) -
+ bookmarks::kBookmarkVerticalPadding);
+ topOfWindow = [[parentButton_ window]
+ convertBaseToScreen:[[parentButton_ superview]
+ convertPoint:topOfWindow toView:nil]];
+ newWindowTopLeft.y = topOfWindow.y;
+ }
+ return newWindowTopLeft;
+}
+
+// Set our window level to the right spot so we're above the menubar, dock, etc.
+// Factored out so we can override/noop in a unit test.
+- (void)configureWindowLevel {
+ [[self window] setLevel:NSPopUpMenuWindowLevel];
+}
+
+- (int)menuHeightForButtonCount:(int)buttonCount {
+ // This does not take into account any padding which may be required at the
+ // top and/or bottom of the window.
+ return (buttonCount * bookmarks::kBookmarkFolderButtonHeight) +
+ 2 * bookmarks::kBookmarkVerticalPadding;
+}
+
+- (void)adjustWindowLeft:(CGFloat)windowLeft
+ size:(NSSize)windowSize
+ scrollingBy:(CGFloat)scrollDelta {
+ // Callers of this function should make adjustments to the vertical
+ // attributes of the folder view only (height, scroll position).
+ // This function will then make appropriate layout adjustments in order
+ // to accommodate screen/dock margins, scroll-up and scroll-down arrow
+ // presentation, etc.
+ // The 4 views whose vertical height and origins may be adjusted
+ // by this function are:
+ // 1) window, 2) visible content view, 3) scroller view, 4) folder view.
+
+ LayoutMetrics layoutMetrics(windowLeft, windowSize, scrollDelta);
+ [self gatherMetrics:&layoutMetrics];
+ [self adjustMetrics:&layoutMetrics];
+ [self applyMetrics:&layoutMetrics];
+}
+
+- (void)gatherMetrics:(LayoutMetrics*)layoutMetrics {
+ LayoutMetrics& metrics(*layoutMetrics);
+ NSWindow* window = [self window];
+ metrics.windowFrame = [window frame];
+ metrics.visibleFrame = [visibleView_ frame];
+ metrics.scrollerFrame = [scrollView_ frame];
+ metrics.scrollPoint = [scrollView_ documentVisibleRect].origin;
+ metrics.scrollPoint.y -= metrics.scrollDelta;
+ metrics.couldScrollUp = ![scrollUpArrowView_ isHidden];
+ metrics.couldScrollDown = ![scrollDownArrowView_ isHidden];
+
+ metrics.deltaWindowHeight = 0.0;
+ metrics.deltaWindowY = 0.0;
+ metrics.deltaVisibleHeight = 0.0;
+ metrics.deltaVisibleY = 0.0;
+ metrics.deltaScrollerHeight = 0.0;
+ metrics.deltaScrollerY = 0.0;
+
+ metrics.minimumY = NSMinY([[window screen] visibleFrame]) +
+ bookmarks::kScrollWindowVerticalMargin;
+ metrics.oldWindowY = NSMinY(metrics.windowFrame);
+ metrics.folderY =
+ metrics.scrollerFrame.origin.y + metrics.visibleFrame.origin.y +
+ metrics.oldWindowY - metrics.scrollPoint.y;
+ metrics.folderTop = metrics.folderY + NSHeight([folderView_ frame]);
+}
+
+- (void)adjustMetrics:(LayoutMetrics*)layoutMetrics {
+ LayoutMetrics& metrics(*layoutMetrics);
+ NSScreen* screen = [[self window] screen];
+ CGFloat effectiveFolderY = metrics.folderY;
+ if (!metrics.couldScrollUp && !metrics.couldScrollDown)
+ effectiveFolderY -= metrics.windowSize.height;
+ metrics.canScrollUp = effectiveFolderY < metrics.minimumY;
+ CGFloat maximumY =
+ NSMaxY([screen visibleFrame]) - bookmarks::kScrollWindowVerticalMargin;
+ metrics.canScrollDown = metrics.folderTop > maximumY;
+
+ // Accommodate changes in the bottom of the menu.
+ [self adjustMetricsForMenuBottomChanges:layoutMetrics];
+
+ // Accommodate changes in the top of the menu.
+ [self adjustMetricsForMenuTopChanges:layoutMetrics];
+
+ metrics.scrollerFrame.origin.y += metrics.deltaScrollerY;
+ metrics.scrollerFrame.size.height += metrics.deltaScrollerHeight;
+ metrics.visibleFrame.origin.y += metrics.deltaVisibleY;
+ metrics.visibleFrame.size.height += metrics.deltaVisibleHeight;
+ metrics.preScroll = metrics.canScrollUp && !metrics.couldScrollUp &&
+ metrics.scrollDelta == 0.0 && metrics.deltaWindowHeight >= 0.0;
+ metrics.windowFrame.origin.y += metrics.deltaWindowY;
+ metrics.windowFrame.origin.x = metrics.windowLeft;
+ metrics.windowFrame.size.height += metrics.deltaWindowHeight;
+ metrics.windowFrame.size.width = metrics.windowSize.width;
+}
+
+- (void)adjustMetricsForMenuBottomChanges:(LayoutMetrics*)layoutMetrics {
+ LayoutMetrics& metrics(*layoutMetrics);
+ if (metrics.canScrollUp) {
+ if (!metrics.couldScrollUp) {
+ // Couldn't -> Can
+ metrics.deltaWindowY = -metrics.oldWindowY;
+ metrics.deltaWindowHeight = -metrics.deltaWindowY;
+ metrics.deltaVisibleY = metrics.minimumY;
+ metrics.deltaVisibleHeight = -metrics.deltaVisibleY;
+ metrics.deltaScrollerY = verticalScrollArrowHeight_;
+ metrics.deltaScrollerHeight = -metrics.deltaScrollerY;
+ // Adjust the scroll delta if we've grown the window and it is
+ // now scroll-up-able, but don't adjust it if we've
+ // scrolled down and it wasn't scroll-up-able but now is.
+ if (metrics.canScrollDown == metrics.couldScrollDown) {
+ CGFloat deltaScroll = metrics.deltaWindowY + metrics.deltaScrollerY +
+ metrics.deltaVisibleY;
+ metrics.scrollPoint.y += deltaScroll + metrics.windowSize.height;
+ }
+ } else if (!metrics.canScrollDown && metrics.windowSize.height > 0.0) {
+ metrics.scrollPoint.y += metrics.windowSize.height;
+ }
+ } else {
+ if (metrics.couldScrollUp) {
+ // Could -> Can't
+ metrics.deltaWindowY = metrics.folderY - metrics.oldWindowY;
+ metrics.deltaWindowHeight = -metrics.deltaWindowY;
+ metrics.deltaVisibleY = -metrics.visibleFrame.origin.y;
+ metrics.deltaVisibleHeight = -metrics.deltaVisibleY;
+ metrics.deltaScrollerY = -verticalScrollArrowHeight_;
+ metrics.deltaScrollerHeight = -metrics.deltaScrollerY;
+ // We are no longer scroll-up-able so the scroll point drops to zero.
+ metrics.scrollPoint.y = 0.0;
+ } else {
+ // Couldn't -> Can't
+ // Check for menu height change by looking at the relative tops of the
+ // menu folder and the window folder, which previously would have been
+ // the same.
+ metrics.deltaWindowY = NSMaxY(metrics.windowFrame) - metrics.folderTop;
+ metrics.deltaWindowHeight = -metrics.deltaWindowY;
+ }
+ }
+}
- // If the system supports opening the menu at a specific point, do so.
- // Otherwise, it will be opened at the mouse event location. Eventually these
- // should be switched to NSPopUpButtonCells so that this is taken care of
- // automatically.
- if ([menu_ respondsToSelector:
- @selector(popUpMenuPositioningItem:atLocation:inView:)]) {
- NSPoint point = [parentButton_ frame].origin;
- point.y -= bookmarks::kBookmarkBarMenuOffset;
- [menu_ popUpMenuPositioningItem:nil
- atLocation:point
- inView:[parentButton_ superview]];
+- (void)adjustMetricsForMenuTopChanges:(LayoutMetrics*)layoutMetrics {
+ LayoutMetrics& metrics(*layoutMetrics);
+ if (metrics.canScrollDown == metrics.couldScrollDown) {
+ if (!metrics.canScrollDown) {
+ // Not scroll-down-able but the menu top has changed.
+ metrics.deltaWindowHeight += metrics.scrollDelta;
+ }
} else {
- [NSMenu popUpContextMenu:menu_
- withEvent:[NSApp currentEvent]
- forView:parentButton_];
+ if (metrics.canScrollDown) {
+ // Couldn't -> Can
+ metrics.deltaWindowHeight += (NSMaxY([[[self window] screen]
+ visibleFrame]) -
+ NSMaxY(metrics.windowFrame));
+ metrics.deltaVisibleHeight -= bookmarks::kScrollWindowVerticalMargin;
+ metrics.deltaScrollerHeight -= verticalScrollArrowHeight_;
+ } else {
+ // Could -> Can't
+ metrics.deltaWindowHeight -= bookmarks::kScrollWindowVerticalMargin;
+ metrics.deltaVisibleHeight += bookmarks::kScrollWindowVerticalMargin;
+ metrics.deltaScrollerHeight += verticalScrollArrowHeight_;
+ }
}
}
-- (void)closeMenu {
- NSArray* modes = [NSArray arrayWithObject:NSRunLoopCommonModes];
- [menu_ performSelector:@selector(cancelTracking)
- withObject:nil
- afterDelay:0.0
- inModes:modes];
+- (void)applyMetrics:(LayoutMetrics*)layoutMetrics {
+ LayoutMetrics& metrics(*layoutMetrics);
+ // Hide or show the scroll arrows.
+ if (metrics.canScrollUp != metrics.couldScrollUp)
+ [scrollUpArrowView_ setHidden:metrics.couldScrollUp];
+ if (metrics.canScrollDown != metrics.couldScrollDown)
+ [scrollDownArrowView_ setHidden:metrics.couldScrollDown];
+
+ // Adjust the geometry. The order is important because of sizer dependencies.
+ [scrollView_ setFrame:metrics.scrollerFrame];
+ [visibleView_ setFrame:metrics.visibleFrame];
+ // This little bit of trickery handles the one special case where
+ // the window is now scroll-up-able _and_ going to be resized -- scroll
+ // first in order to prevent flashing.
+ if (metrics.preScroll)
+ [[scrollView_ documentView] scrollPoint:metrics.scrollPoint];
+
+ [[self window] setFrame:metrics.windowFrame display:YES];
+
+ // In all other cases we defer scrolling until the window has been resized
+ // in order to prevent flashing.
+ if (!metrics.preScroll)
+ [[scrollView_ documentView] scrollPoint:metrics.scrollPoint];
+
+ // TODO(maf) find a non-SPI way to do this.
+ // Hack. This is the only way I've found to get the tracking area cache
+ // to update properly during a mouse tracking loop.
+ // Without this, the item tracking-areas are wrong when using a scrollable
+ // menu with the mouse held down.
+ NSView *contentView = [[self window] contentView] ;
+ if ([contentView respondsToSelector:@selector(_updateTrackingAreas)])
+ [contentView _updateTrackingAreas];
+
+
+ if (metrics.canScrollUp != metrics.couldScrollUp ||
+ metrics.canScrollDown != metrics.couldScrollDown ||
+ metrics.scrollDelta != 0.0) {
+ if (metrics.canScrollUp || metrics.canScrollDown)
+ [self addOrUpdateScrollTracking];
+ else
+ [self removeScrollTracking];
+ }
+}
+
+- (void)adjustWindowForButtonCount:(NSUInteger)buttonCount {
+ NSRect folderFrame = [folderView_ frame];
+ CGFloat newMenuHeight =
+ (CGFloat)[self menuHeightForButtonCount:[buttons_ count]];
+ CGFloat deltaMenuHeight = newMenuHeight - NSHeight(folderFrame);
+ // If the height has changed then also change the origin, and adjust the
+ // scroll (if scrolling).
+ if ([self canScrollUp]) {
+ NSPoint scrollPoint = [scrollView_ documentVisibleRect].origin;
+ scrollPoint.y += deltaMenuHeight;
+ [[scrollView_ documentView] scrollPoint:scrollPoint];
+ }
+ folderFrame.size.height += deltaMenuHeight;
+ [folderView_ setFrameSize:folderFrame.size];
+ CGFloat windowWidth = [self adjustButtonWidths] + padding_;
+ NSPoint newWindowTopLeft = [self windowTopLeftForWidth:windowWidth
+ height:deltaMenuHeight];
+ CGFloat left = newWindowTopLeft.x;
+ NSSize newSize = NSMakeSize(windowWidth, deltaMenuHeight);
+ [self adjustWindowLeft:left size:newSize scrollingBy:0.0];
+}
+
+// Determine window size and position.
+// Create buttons for all our nodes.
+// TODO(jrg): break up into more and smaller routines for easier unit testing.
+- (void)configureWindow {
+ const BookmarkNode* node = [parentButton_ bookmarkNode];
+ DCHECK(node);
+ int startingIndex = [[parentButton_ cell] startingChildIndex];
+ DCHECK_LE(startingIndex, node->child_count());
+ // Must have at least 1 button (for "empty")
+ int buttons = std::max(node->child_count() - startingIndex, 1);
+
+ // Prelim height of the window. We'll trim later as needed.
+ int height = [self menuHeightForButtonCount:buttons];
+ // We'll need this soon...
+ [self window];
+
+ // TODO(jrg): combine with frame code in bookmark_bar_controller.mm
+ // http://crbug.com/35966
+ NSRect buttonsOuterFrame = NSMakeRect(
+ 0,
+ height - bookmarks::kBookmarkFolderButtonHeight -
+ bookmarks::kBookmarkVerticalPadding,
+ bookmarks::kDefaultBookmarkWidth,
+ bookmarks::kBookmarkFolderButtonHeight);
+
+ // TODO(jrg): combine with addNodesToButtonList: code from
+ // bookmark_bar_controller.mm (but use y offset)
+ // http://crbug.com/35966
+ if (node->empty()) {
+ // If no children we are the empty button.
+ BookmarkButton* button = [self makeButtonForNode:nil
+ frame:buttonsOuterFrame];
+ [buttons_ addObject:button];
+ [folderView_ addSubview:button];
+ } else {
+ for (int i = startingIndex; i < node->child_count(); ++i) {
+ const BookmarkNode* child = node->GetChild(i);
+ BookmarkButton* button = [self makeButtonForNode:child
+ frame:buttonsOuterFrame];
+ [buttons_ addObject:button];
+ [folderView_ addSubview:button];
+ buttonsOuterFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight;
+ }
+ }
+ [self layOutWindowWithHeight:height];
+}
+
+- (void)layOutWindowWithHeight:(CGFloat)height {
+ // Lay out the window by adjusting all button widths to be consistent, then
+ // base the window width on this ideal button width.
+ CGFloat buttonWidth = [self adjustButtonWidths];
+ CGFloat windowWidth = buttonWidth + padding_;
+ NSPoint newWindowTopLeft = [self windowTopLeftForWidth:windowWidth
+ height:height];
+ // Make sure as much of a submenu is exposed (which otherwise would be a
+ // problem if the parent button is close to the bottom of the screen).
+ if ([parentController_ isKindOfClass:[self class]]) {
+ CGFloat minimumY = NSMinY([[[self window] screen] visibleFrame]) +
+ bookmarks::kScrollWindowVerticalMargin +
+ height;
+ newWindowTopLeft.y = MAX(newWindowTopLeft.y, minimumY);
+ }
+ NSWindow* window = [self window];
+ NSRect windowFrame = NSMakeRect(newWindowTopLeft.x,
+ newWindowTopLeft.y - height,
+ windowWidth, height);
+ [window setFrame:windowFrame display:NO];
+ NSRect folderFrame = NSMakeRect(0, 0, windowWidth, height);
+ [folderView_ setFrame:folderFrame];
+ NSSize newSize = NSMakeSize(windowWidth, 0.0);
+ [self adjustWindowLeft:newWindowTopLeft.x size:newSize scrollingBy:0.0];
+ [self configureWindowLevel];
+ [window display];
+}
+
+// TODO(mrossetti): See if the following can be moved into view's viewWillDraw:.
+- (CGFloat)adjustButtonWidths {
+ CGFloat width = bookmarks::kBookmarkMenuButtonMinimumWidth;
+ // Use the cell's size as the base for determining the desired width of the
+ // button rather than the button's current width. -[cell cellSize] always
+ // returns the 'optimum' size of the cell based on the cell's contents even
+ // if it's less than the current button size. Relying on the button size
+ // would result in buttons that could only get wider but we want to handle
+ // the case where the widest button gets removed from a folder menu.
+ for (BookmarkButton* button in buttons_.get())
+ width = std::max(width, [[button cell] cellSize].width);
+ width = std::min(width, bookmarks::kBookmarkMenuButtonMaximumWidth);
+ // Things look and feel more menu-like if all the buttons are the
+ // full width of the window, especially if there are submenus.
+ for (BookmarkButton* button in buttons_.get()) {
+ NSRect buttonFrame = [button frame];
+ buttonFrame.size.width = width;
+ [button setFrame:buttonFrame];
+ }
+ return width;
+}
+
+// Start a "scroll up" timer.
+- (void)beginScrollWindowUp {
+ [self addScrollTimerWithDelta:kBookmarkBarFolderScrollAmount];
}
-- (void)setOffTheSideNodeStartIndex:(size_t)index {
- menuBridge_->set_off_the_side_node_start_index(index);
+// Start a "scroll down" timer.
+- (void)beginScrollWindowDown {
+ [self addScrollTimerWithDelta:-kBookmarkBarFolderScrollAmount];
}
-- (void)bookmarkMenuDidClose:(BookmarkMenuCocoaController*)controller {
- // Inform the bookmark bar that the folder has closed on the next iteration
- // of the event loop. If the menu was closed via a click event on a folder
- // button, this message will be received before dispatching the click event
- // to the button. If the button is the same folder button that ran the menu
- // in the first place, this will recursively pop open the menu because the
- // active folder will be nil-ed by |-closeBookmarkFolder:|. To prevent that,
- // perform the selector on the next iteration of the loop.
- [barController_ performSelector:@selector(closeBookmarkFolder:)
- withObject:self
- afterDelay:0.0];
+// End a scrolling timer. Can be called excessively with no harm.
+- (void)endScroll {
+ if (scrollTimer_) {
+ [scrollTimer_ invalidate];
+ scrollTimer_ = nil;
+ verticalScrollDelta_ = 0;
+ }
+}
+
+- (int)indexOfButton:(BookmarkButton*)button {
+ if (button == nil)
+ return -1;
+ int index = [buttons_ indexOfObject:button];
+ return (index == NSNotFound) ? -1 : index;
+}
+
+- (BookmarkButton*)buttonAtIndex:(int)which {
+ if (which < 0 || which >= [self buttonCount])
+ return nil;
+ return [buttons_ objectAtIndex:which];
+}
+
+// Private, called by performOneScroll only.
+// If the button at index contains the mouse it will select it and return YES.
+// Otherwise returns NO.
+- (BOOL)selectButtonIfHoveredAtIndex:(int)index {
+ BookmarkButton *btn = [self buttonAtIndex:index];
+ if ([[btn cell] isMouseReallyInside]) {
+ buttonThatMouseIsIn_ = btn;
+ [self setSelectedButtonByIndex:index];
+ return YES;
+ }
+ return NO;
+}
+
+// Perform a single scroll of the specified amount.
+- (void)performOneScroll:(CGFloat)delta {
+ if (delta == 0.0)
+ return;
+ CGFloat finalDelta = [self determineFinalScrollDelta:delta];
+ if (finalDelta == 0.0)
+ return;
+ int index = [self indexOfButton:buttonThatMouseIsIn_];
+ // Check for a current mouse-initiated selection.
+ BOOL maintainHoverSelection =
+ (buttonThatMouseIsIn_ &&
+ [[buttonThatMouseIsIn_ cell] isMouseReallyInside] &&
+ selectedIndex_ != -1 &&
+ index == selectedIndex_);
+ NSRect windowFrame = [[self window] frame];
+ NSSize newSize = NSMakeSize(NSWidth(windowFrame), 0.0);
+ [self adjustWindowLeft:windowFrame.origin.x
+ size:newSize
+ scrollingBy:finalDelta];
+ // We have now scrolled.
+ if (!maintainHoverSelection)
+ return;
+ // Is mouse still in the same hovered button?
+ if ([[buttonThatMouseIsIn_ cell] isMouseReallyInside])
+ return;
+ // The finalDelta scroll direction will tell us us whether to search up or
+ // down the buttons array for the newly hovered button.
+ if (finalDelta < 0.0) { // Scrolled up, so search backwards for new hover.
+ index--;
+ while (index >= 0) {
+ if ([self selectButtonIfHoveredAtIndex:index])
+ return;
+ index--;
+ }
+ } else { // Scrolled down, so search forward for new hovered button.
+ index++;
+ int btnMax = [self buttonCount];
+ while (index < btnMax) {
+ if ([self selectButtonIfHoveredAtIndex:index])
+ return;
+ index++;
+ }
+ }
+}
+
+- (CGFloat)determineFinalScrollDelta:(CGFloat)delta {
+ if ((delta > 0.0 && ![scrollUpArrowView_ isHidden]) ||
+ (delta < 0.0 && ![scrollDownArrowView_ isHidden])) {
+ NSWindow* window = [self window];
+ NSRect windowFrame = [window frame];
+ NSScreen* screen = [window screen];
+ NSPoint scrollPosition = [scrollView_ documentVisibleRect].origin;
+ CGFloat scrollY = scrollPosition.y;
+ NSRect scrollerFrame = [scrollView_ frame];
+ CGFloat scrollerY = NSMinY(scrollerFrame);
+ NSRect visibleFrame = [visibleView_ frame];
+ CGFloat visibleY = NSMinY(visibleFrame);
+ CGFloat windowY = NSMinY(windowFrame);
+ CGFloat offset = scrollerY + visibleY + windowY;
+
+ if (delta > 0.0) {
+ // Scrolling up.
+ CGFloat minimumY = NSMinY([screen visibleFrame]) +
+ bookmarks::kScrollWindowVerticalMargin;
+ CGFloat maxUpDelta = scrollY - offset + minimumY;
+ delta = MIN(delta, maxUpDelta);
+ } else {
+ // Scrolling down.
+ NSRect screenFrame = [screen visibleFrame];
+ CGFloat topOfScreen = NSMaxY(screenFrame);
+ NSRect folderFrame = [folderView_ frame];
+ CGFloat folderHeight = NSHeight(folderFrame);
+ CGFloat folderTop = folderHeight - scrollY + offset;
+ CGFloat maxDownDelta =
+ topOfScreen - folderTop - bookmarks::kScrollWindowVerticalMargin;
+ delta = MAX(delta, maxDownDelta);
+ }
+ } else {
+ delta = 0.0;
+ }
+ return delta;
+}
+
+// Perform a scroll of the window on the screen.
+// Called by a timer when scrolling.
+- (void)performScroll:(NSTimer*)timer {
+ DCHECK(verticalScrollDelta_);
+ [self performOneScroll:verticalScrollDelta_];
+}
+
+
+// Add a timer to fire at a regular interval which scrolls the
+// window vertically |delta|.
+- (void)addScrollTimerWithDelta:(CGFloat)delta {
+ if (scrollTimer_ && verticalScrollDelta_ == delta)
+ return;
+ [self endScroll];
+ verticalScrollDelta_ = delta;
+ scrollTimer_ = [NSTimer timerWithTimeInterval:kBookmarkBarFolderScrollInterval
+ target:self
+ selector:@selector(performScroll:)
+ userInfo:nil
+ repeats:YES];
+
+ [[NSRunLoop mainRunLoop] addTimer:scrollTimer_ forMode:NSRunLoopCommonModes];
+}
+
+
+// Called as a result of our tracking area. Warning: on the main
+// screen (of a single-screened machine), the minimum mouse y value is
+// 1, not 0. Also, we do not get events when the mouse is above the
+// menubar (to be fixed by setting the proper window level; see
+// initializer).
+// Note [theEvent window] may not be our window, as we also get these messages
+// forwarded from BookmarkButton's mouse tracking loop.
+- (void)mouseMovedOrDragged:(NSEvent*)theEvent {
+ NSPoint eventScreenLocation =
+ [[theEvent window] convertBaseToScreen:[theEvent locationInWindow]];
+
+ // Base hot spot calculations on the positions of the scroll arrow views.
+ NSRect testRect = [scrollDownArrowView_ frame];
+ NSPoint testPoint = [visibleView_ convertPoint:testRect.origin
+ toView:nil];
+ testPoint = [[self window] convertBaseToScreen:testPoint];
+ CGFloat closeToTopOfScreen = testPoint.y;
+
+ testRect = [scrollUpArrowView_ frame];
+ testPoint = [visibleView_ convertPoint:testRect.origin toView:nil];
+ testPoint = [[self window] convertBaseToScreen:testPoint];
+ CGFloat closeToBottomOfScreen = testPoint.y + testRect.size.height;
+ if (eventScreenLocation.y <= closeToBottomOfScreen &&
+ ![scrollUpArrowView_ isHidden]) {
+ [self beginScrollWindowUp];
+ } else if (eventScreenLocation.y > closeToTopOfScreen &&
+ ![scrollDownArrowView_ isHidden]) {
+ [self beginScrollWindowDown];
+ } else {
+ [self endScroll];
+ }
+}
+
+- (void)mouseMoved:(NSEvent*)theEvent {
+ [self mouseMovedOrDragged:theEvent];
+}
+
+- (void)mouseDragged:(NSEvent*)theEvent {
+ [self mouseMovedOrDragged:theEvent];
+}
+
+- (void)mouseExited:(NSEvent*)theEvent {
+ [self endScroll];
+}
+
+// Add a tracking area so we know when the mouse is pinned to the top
+// or bottom of the screen. If that happens, and if the mouse
+// position overlaps the window, scroll it.
+- (void)addOrUpdateScrollTracking {
+ [self removeScrollTracking];
+ NSView* view = [[self window] contentView];
+ scrollTrackingArea_.reset([[CrTrackingArea alloc]
+ initWithRect:[view bounds]
+ options:(NSTrackingMouseMoved |
+ NSTrackingMouseEnteredAndExited |
+ NSTrackingActiveAlways |
+ NSTrackingEnabledDuringMouseDrag
+ )
+ proxiedOwner:self
+ userInfo:nil]);
+ [view addTrackingArea:scrollTrackingArea_.get()];
+}
+
+// Remove the tracking area associated with scrolling.
+- (void)removeScrollTracking {
+ if (scrollTrackingArea_.get()) {
+ [[[self window] contentView] removeTrackingArea:scrollTrackingArea_.get()];
+ [scrollTrackingArea_.get() clearOwner];
+ }
+ scrollTrackingArea_.reset();
+}
+
+// Close the old hover-open bookmark folder, and open a new one. We
+// do both in one step to allow for a delay in closing the old one.
+// See comments above kDragHoverCloseDelay (bookmark_bar_controller.h)
+// for more details.
+- (void)openBookmarkFolderFromButtonAndCloseOldOne:(id)sender {
+ // Ignore if sender button is in a window that's just been hidden - that
+ // would leave us with an orphaned menu. BUG 69002
+ if ([[sender window] isVisible] != YES)
+ return;
+ // If an old submenu exists, close it immediately.
+ [self closeBookmarkFolder:sender];
+
+ // Open a new one if meaningful.
+ if ([sender isFolder])
+ [folderTarget_ openBookmarkFolderFromButton:sender];
+}
+
+- (NSArray*)buttons {
+ return buttons_.get();
+}
+
+- (void)close {
+ [folderController_ close];
+ [super close];
+}
+
+- (void)scrollWheel:(NSEvent *)theEvent {
+ if (![scrollUpArrowView_ isHidden] || ![scrollDownArrowView_ isHidden]) {
+ // We go negative since an NSScrollView has a flipped coordinate frame.
+ CGFloat amt = kBookmarkBarFolderScrollWheelAmount * -[theEvent deltaY];
+ [self performOneScroll:amt];
+ }
+}
+
+#pragma mark Actions Forwarded to Parent BookmarkBarController
+
+- (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)item {
+ return [barController_ validateUserInterfaceItem:item];
+}
+
+- (IBAction)openBookmark:(id)sender {
+ [barController_ openBookmark:sender];
+}
+
+- (IBAction)openBookmarkInNewForegroundTab:(id)sender {
+ [barController_ openBookmarkInNewForegroundTab:sender];
+}
+
+- (IBAction)openBookmarkInNewWindow:(id)sender {
+ [barController_ openBookmarkInNewWindow:sender];
+}
+
+- (IBAction)openBookmarkInIncognitoWindow:(id)sender {
+ [barController_ openBookmarkInIncognitoWindow:sender];
+}
+
+- (IBAction)editBookmark:(id)sender {
+ [barController_ editBookmark:sender];
+}
+
+- (IBAction)cutBookmark:(id)sender {
+ [self closeBookmarkFolder:self];
+ [barController_ cutBookmark:sender];
+}
+
+- (IBAction)copyBookmark:(id)sender {
+ [barController_ copyBookmark:sender];
+}
+
+- (IBAction)pasteBookmark:(id)sender {
+ [barController_ pasteBookmark:sender];
+}
+
+- (IBAction)deleteBookmark:(id)sender {
+ [self closeBookmarkFolder:self];
+ [barController_ deleteBookmark:sender];
+}
+
+- (IBAction)openAllBookmarks:(id)sender {
+ [barController_ openAllBookmarks:sender];
+}
- // This controller is created on-demand and should be released when the menu
- // closes because a new one will be created when it is opened again.
+- (IBAction)openAllBookmarksNewWindow:(id)sender {
+ [barController_ openAllBookmarksNewWindow:sender];
+}
+
+- (IBAction)openAllBookmarksIncognitoWindow:(id)sender {
+ [barController_ openAllBookmarksIncognitoWindow:sender];
+}
+
+- (IBAction)addPage:(id)sender {
+ [barController_ addPage:sender];
+}
+
+- (IBAction)addFolder:(id)sender {
+ [barController_ addFolder:sender];
+}
+
+#pragma mark Drag & Drop
+
+// Find something like std::is_between<T>? I can't believe one doesn't exist.
+// http://crbug.com/35966
+static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) {
+ return ((value >= low) && (value <= high));
+}
+
+// Return the proposed drop target for a hover open button, or nil if none.
+//
+// TODO(jrg): this is just like the version in
+// bookmark_bar_controller.mm, but vertical instead of horizontal.
+// Generalize to be axis independent then share code.
+// http://crbug.com/35966
+- (BookmarkButton*)buttonForDroppingOnAtPoint:(NSPoint)point {
+ for (BookmarkButton* button in buttons_.get()) {
+ // No early break -- makes no assumption about button ordering.
+
+ // Intentionally NOT using NSPointInRect() so that scrolling into
+ // a submenu doesn't cause it to be closed.
+ if (ValueInRangeInclusive(NSMinY([button frame]),
+ point.y,
+ NSMaxY([button frame]))) {
+
+ // Over a button but let's be a little more specific
+ // (e.g. over the middle half).
+ NSRect frame = [button frame];
+ NSRect middleHalfOfButton = NSInsetRect(frame, 0, frame.size.height / 4);
+ if (ValueInRangeInclusive(NSMinY(middleHalfOfButton),
+ point.y,
+ NSMaxY(middleHalfOfButton))) {
+ // It makes no sense to drop on a non-folder; there is no hover.
+ if (![button isFolder])
+ return nil;
+ // Got it!
+ return button;
+ } else {
+ // Over a button but not over the middle half.
+ return nil;
+ }
+ }
+ }
+ // Not hovering over a button.
+ return nil;
+}
+
+// TODO(jrg): again we have code dup, sort of, with
+// bookmark_bar_controller.mm, but the axis is changed. One minor
+// difference is accomodation for the "empty" button (which may not
+// exist in the future).
+// http://crbug.com/35966
+- (int)indexForDragToPoint:(NSPoint)point {
+ // Identify which buttons we are between. For now, assume a button
+ // location is at the center point of its view, and that an exact
+ // match means "place before".
+ // TODO(jrg): revisit position info based on UI team feedback.
+ // dropLocation is in bar local coordinates.
+ // http://crbug.com/36276
+ NSPoint dropLocation =
+ [folderView_ convertPoint:point
+ fromView:[[self window] contentView]];
+ BookmarkButton* buttonToTheTopOfDraggedButton = nil;
+ // Buttons are laid out in this array from top to bottom (screen
+ // wise), which means "biggest y" --> "smallest y".
+ for (BookmarkButton* button in buttons_.get()) {
+ CGFloat midpoint = NSMidY([button frame]);
+ if (dropLocation.y > midpoint) {
+ break;
+ }
+ buttonToTheTopOfDraggedButton = button;
+ }
+
+ // TODO(jrg): On Windows, dropping onto (empty) highlights the
+ // entire drop location and does not use an insertion point.
+ // http://crbug.com/35967
+ if (!buttonToTheTopOfDraggedButton) {
+ // We are at the very top (we broke out of the loop on the first try).
+ return 0;
+ }
+ if ([buttonToTheTopOfDraggedButton isEmpty]) {
+ // There is a button but it's an empty placeholder.
+ // Default to inserting on top of it.
+ return 0;
+ }
+ const BookmarkNode* beforeNode = [buttonToTheTopOfDraggedButton
+ bookmarkNode];
+ DCHECK(beforeNode);
+ // Be careful if the number of buttons != number of nodes.
+ return ((beforeNode->parent()->GetIndexOf(beforeNode) + 1) -
+ [[parentButton_ cell] startingChildIndex]);
+}
+
+// TODO(jrg): Yet more code dup.
+// http://crbug.com/35966
+- (BOOL)dragBookmark:(const BookmarkNode*)sourceNode
+ to:(NSPoint)point
+ copy:(BOOL)copy {
+ DCHECK(sourceNode);
+
+ // Drop destination.
+ const BookmarkNode* destParent = NULL;
+ int destIndex = 0;
+
+ // First check if we're dropping on a button. If we have one, and
+ // it's a folder, drop in it.
+ BookmarkButton* button = [self buttonForDroppingOnAtPoint:point];
+ if ([button isFolder]) {
+ destParent = [button bookmarkNode];
+ // Drop it at the end.
+ destIndex = [button bookmarkNode]->child_count();
+ } else {
+ // Else we're dropping somewhere in the folder, so find the right spot.
+ destParent = [parentButton_ bookmarkNode];
+ destIndex = [self indexForDragToPoint:point];
+ // Be careful if the number of buttons != number of nodes.
+ destIndex += [[parentButton_ cell] startingChildIndex];
+ }
+
+ // Prevent cycles.
+ BOOL wasCopiedOrMoved = NO;
+ if (!destParent->HasAncestor(sourceNode)) {
+ if (copy)
+ [self bookmarkModel]->Copy(sourceNode, destParent, destIndex);
+ else
+ [self bookmarkModel]->Move(sourceNode, destParent, destIndex);
+ wasCopiedOrMoved = YES;
+ // Movement of a node triggers observers (like us) to rebuild the
+ // bar so we don't have to do so explicitly.
+ }
+
+ return wasCopiedOrMoved;
+}
+
+// TODO(maf): Implement live drag & drop animation using this hook.
+- (void)setDropInsertionPos:(CGFloat)where {
+}
+
+// TODO(maf): Implement live drag & drop animation using this hook.
+- (void)clearDropInsertionPos {
+}
+
+#pragma mark NSWindowDelegate Functions
+
+- (void)windowWillClose:(NSNotification*)notification {
+ // Also done by the dealloc method, but also doing it here is quicker and
+ // more reliable.
+ [parentButton_ forceButtonBorderToStayOnAlways:NO];
+
+ // If a "hover open" is pending when the bookmark bar folder is
+ // closed, be sure it gets cancelled.
+ [NSObject cancelPreviousPerformRequestsWithTarget:self];
+
+ [self endScroll]; // Just in case we were scrolling.
+ [barController_ childFolderWillClose:self];
+ [self closeBookmarkFolder:self];
[self autorelease];
}
-@end
+#pragma mark BookmarkButtonDelegate Protocol
+
+- (void)fillPasteboard:(NSPasteboard*)pboard
+ forDragOfButton:(BookmarkButton*)button {
+ [[self folderTarget] fillPasteboard:pboard forDragOfButton:button];
+
+ // Close our folder menu and submenus since we know we're going to be dragged.
+ [self closeBookmarkFolder:self];
+}
+
+// Called from BookmarkButton.
+// Unlike bookmark_bar_controller's version, we DO default to being enabled.
+- (void)mouseEnteredButton:(id)sender event:(NSEvent*)event {
+ [[NSCursor arrowCursor] set];
+
+ buttonThatMouseIsIn_ = sender;
+ [self setSelectedButtonByIndex:[self indexOfButton:sender]];
-////////////////////////////////////////////////////////////////////////////////
+ // Cancel a previous hover if needed.
+ [NSObject cancelPreviousPerformRequestsWithTarget:self];
-@implementation BookmarkBarFolderController (ExposedForTesting)
+ // If already opened, then we exited but re-entered the button
+ // (without entering another button open), do nothing.
+ if ([folderController_ parentButton] == sender)
+ return;
-- (BookmarkMenuBridge*)menuBridge {
- return menuBridge_.get();
+ [self performSelector:@selector(openBookmarkFolderFromButtonAndCloseOldOne:)
+ withObject:sender
+ afterDelay:bookmarks::kHoverOpenDelay
+ inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
}
-@end
+// Called from the BookmarkButton
+- (void)mouseExitedButton:(id)sender event:(NSEvent*)event {
+ if (buttonThatMouseIsIn_ == sender)
+ buttonThatMouseIsIn_ = nil;
+ [self setSelectedButtonByIndex:-1];
+
+ // Stop any timer about opening a new hover-open folder.
+
+ // Since a performSelector:withDelay: on self retains self, it is
+ // possible that a cancelPreviousPerformRequestsWithTarget: reduces
+ // the refcount to 0, releasing us. That's a bad thing to do while
+ // this object (or others it may own) is in the event chain. Thus
+ // we have a retain/autorelease.
+ [self retain];
+ [NSObject cancelPreviousPerformRequestsWithTarget:self];
+ [self autorelease];
+}
+
+- (NSWindow*)browserWindow {
+ return [parentController_ browserWindow];
+}
+
+- (BOOL)canDragBookmarkButtonToTrash:(BookmarkButton*)button {
+ return [barController_ canEditBookmarks] &&
+ [barController_ canEditBookmark:[button bookmarkNode]];
+}
+
+- (void)didDragBookmarkToTrash:(BookmarkButton*)button {
+ [barController_ didDragBookmarkToTrash:button];
+}
+
+- (void)bookmarkDragDidEnd:(BookmarkButton*)button
+ operation:(NSDragOperation)operation {
+ [barController_ bookmarkDragDidEnd:button
+ operation:operation];
+}
+
+
+#pragma mark BookmarkButtonControllerProtocol
+
+// Recursively close all bookmark folders.
+- (void)closeAllBookmarkFolders {
+ // Closing the top level implicitly closes all children.
+ [barController_ closeAllBookmarkFolders];
+}
+
+// Close our bookmark folder (a sub-controller) if we have one.
+- (void)closeBookmarkFolder:(id)sender {
+ if (folderController_) {
+ // Make this menu key, so key status doesn't go back to the browser
+ // window when the submenu closes.
+ [[self window] makeKeyWindow];
+ [self setSubFolderGrowthToRight:YES];
+ [[folderController_ window] close];
+ folderController_ = nil;
+ }
+}
+
+- (BookmarkModel*)bookmarkModel {
+ return [barController_ bookmarkModel];
+}
+
+- (BOOL)draggingAllowed:(id<NSDraggingInfo>)info {
+ return [barController_ draggingAllowed:info];
+}
+
+// TODO(jrg): Refactor BookmarkBarFolder common code. http://crbug.com/35966
+// Most of the work (e.g. drop indicator) is taken care of in the
+// folder_view. Here we handle hover open issues for subfolders.
+// Caution: there are subtle differences between this one and
+// bookmark_bar_controller.mm's version.
+- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)info {
+ NSPoint currentLocation = [info draggingLocation];
+ BookmarkButton* button = [self buttonForDroppingOnAtPoint:currentLocation];
+
+ // Don't allow drops that would result in cycles.
+ if (button) {
+ NSData* data = [[info draggingPasteboard]
+ dataForType:kBookmarkButtonDragType];
+ if (data && [info draggingSource]) {
+ BookmarkButton* sourceButton = nil;
+ [data getBytes:&sourceButton length:sizeof(sourceButton)];
+ const BookmarkNode* sourceNode = [sourceButton bookmarkNode];
+ const BookmarkNode* destNode = [button bookmarkNode];
+ if (destNode->HasAncestor(sourceNode))
+ button = nil;
+ }
+ }
+ // Delegate handling of dragging over a button to the |hoverState_| member.
+ return [hoverState_ draggingEnteredButton:button];
+}
+
+- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)info {
+ return NSDragOperationMove;
+}
+
+// Unlike bookmark_bar_controller, we need to keep track of dragging state.
+// We also need to make sure we cancel the delayed hover close.
+- (void)draggingExited:(id<NSDraggingInfo>)info {
+ // NOT the same as a cancel --> we may have moved the mouse into the submenu.
+ // Delegate handling of the hover button to the |hoverState_| member.
+ [hoverState_ draggingExited];
+}
+
+- (BOOL)dragShouldLockBarVisibility {
+ return [parentController_ dragShouldLockBarVisibility];
+}
+
+// TODO(jrg): ARGH more code dup.
+// http://crbug.com/35966
+- (BOOL)dragButton:(BookmarkButton*)sourceButton
+ to:(NSPoint)point
+ copy:(BOOL)copy {
+ DCHECK([sourceButton isKindOfClass:[BookmarkButton class]]);
+ const BookmarkNode* sourceNode = [sourceButton bookmarkNode];
+ return [self dragBookmark:sourceNode to:point copy:copy];
+}
+
+// TODO(mrossetti,jrg): Identical to the same function in BookmarkBarController.
+// http://crbug.com/35966
+- (BOOL)dragBookmarkData:(id<NSDraggingInfo>)info {
+ BOOL dragged = NO;
+ std::vector<const BookmarkNode*> nodes([self retrieveBookmarkNodeData]);
+ if (nodes.size()) {
+ BOOL copy = !([info draggingSourceOperationMask] & NSDragOperationMove);
+ NSPoint dropPoint = [info draggingLocation];
+ for (std::vector<const BookmarkNode*>::const_iterator it = nodes.begin();
+ it != nodes.end(); ++it) {
+ const BookmarkNode* sourceNode = *it;
+ dragged = [self dragBookmark:sourceNode to:dropPoint copy:copy];
+ }
+ }
+ return dragged;
+}
+
+// TODO(mrossetti,jrg): Identical to the same function in BookmarkBarController.
+// http://crbug.com/35966
+- (std::vector<const BookmarkNode*>)retrieveBookmarkNodeData {
+ std::vector<const BookmarkNode*> dragDataNodes;
+ BookmarkNodeData dragData;
+ if(dragData.ReadFromDragClipboard()) {
+ BookmarkModel* bookmarkModel = [self bookmarkModel];
+ Profile* profile = bookmarkModel->profile();
+ std::vector<const BookmarkNode*> nodes(dragData.GetNodes(profile));
+ dragDataNodes.assign(nodes.begin(), nodes.end());
+ }
+ return dragDataNodes;
+}
+
+// Return YES if we should show the drop indicator, else NO.
+// TODO(jrg): ARGH code dup!
+// http://crbug.com/35966
+- (BOOL)shouldShowIndicatorShownForPoint:(NSPoint)point {
+ return ![self buttonForDroppingOnAtPoint:point];
+}
+
+// Button selection change code to support type to select and arrow key events.
+#pragma mark Keyboard Support
+
+// Scroll the menu to show the selected button, if it's not already visible.
+- (void)showSelectedButton {
+ int bMaxIndex = [self buttonCount] - 1; // Max array index in button array.
+
+ // Is there a valid selected button?
+ if (bMaxIndex < 0 || selectedIndex_ < 0 || selectedIndex_ > bMaxIndex)
+ return;
+
+ // Is the menu scrollable anyway?
+ if (![self canScrollUp] && ![self canScrollDown])
+ return;
+
+ // Now check to see if we need to scroll, which way, and how far.
+ CGFloat delta = 0.0;
+ NSPoint scrollPoint = [scrollView_ documentVisibleRect].origin;
+ CGFloat itemBottom = (bMaxIndex - selectedIndex_) *
+ bookmarks::kBookmarkFolderButtonHeight;
+ CGFloat itemTop = itemBottom + bookmarks::kBookmarkFolderButtonHeight;
+ CGFloat viewHeight = NSHeight([scrollView_ frame]);
+
+ if (scrollPoint.y > itemBottom) { // Need to scroll down.
+ delta = scrollPoint.y - itemBottom;
+ } else if ((scrollPoint.y + viewHeight) < itemTop) { // Need to scroll up.
+ delta = -(itemTop - (scrollPoint.y + viewHeight));
+ } else { // No need to scroll.
+ return;
+ }
+
+ [self performOneScroll:delta];
+}
+
+// All changes to selectedness of buttons (aka fake menu items) ends up
+// calling this method to actually flip the state of items.
+// Needs to handle -1 as the invalid index (when nothing is selected) and
+// greater than range values too.
+- (void)setStateOfButtonByIndex:(int)index
+ state:(bool)state {
+ if (index >= 0 && index < [self buttonCount])
+ [[buttons_ objectAtIndex:index] highlight:state];
+}
+
+// Selects the required button and deselects the previously selected one.
+// An index of -1 means no selection.
+- (void)setSelectedButtonByIndex:(int)index {
+ if (index == selectedIndex_)
+ return;
+
+ [self setStateOfButtonByIndex:selectedIndex_ state:NO];
+ [self setStateOfButtonByIndex:index state:YES];
+ selectedIndex_ = index;
+
+ [self showSelectedButton];
+}
+
+- (void)clearInputText {
+ [typedPrefix_ release];
+ typedPrefix_ = nil;
+}
+
+// Find the earliest item in the folder which has the target prefix.
+// Returns nil if there is no prefix or there are no matches.
+// These are in no particular order, and not particularly numerous, so linear
+// search should be OK.
+// -1 means no match.
+- (int)earliestBookmarkIndexWithPrefix:(NSString*)prefix {
+ if ([prefix length] == 0) // Also handles nil.
+ return -1;
+ int maxButtons = [buttons_ count];
+ NSString *lowercasePrefix = [prefix lowercaseString];
+ for (int i = 0 ; i < maxButtons ; ++i) {
+ BookmarkButton* button = [buttons_ objectAtIndex:i];
+ if ([[[button title] lowercaseString] hasPrefix:lowercasePrefix])
+ return i;
+ }
+ return -1;
+}
+
+- (void)setSelectedButtonByPrefix:(NSString*)prefix {
+ [self setSelectedButtonByIndex:[self earliestBookmarkIndexWithPrefix:prefix]];
+}
+
+- (void)selectPrevious {
+ int newIndex;
+ if (selectedIndex_ == 0)
+ return;
+ if (selectedIndex_ < 0)
+ newIndex = [self buttonCount] -1;
+ else
+ newIndex = std::max(selectedIndex_ - 1, 0);
+ [self setSelectedButtonByIndex:newIndex];
+}
+
+- (void) selectNext {
+ if (selectedIndex_ + 1 < [self buttonCount])
+ [self setSelectedButtonByIndex:selectedIndex_ + 1];
+}
+
+- (BOOL)handleInputText:(NSString*)newText {
+ const unichar kUnicodeEscape = 0x001B;
+ const unichar kUnicodeSpace = 0x0020;
+
+ // Event goes to the deepest nested open submenu.
+ if (folderController_)
+ return [folderController_ handleInputText:newText];
+
+ // Look for arrow keys or other function keys.
+ if ([newText length] == 1) {
+ // Get the 16-bit unicode char.
+ unichar theChar = [newText characterAtIndex:0];
+ switch (theChar) {
+
+ // Keys that trigger opening of the selection.
+ case kUnicodeSpace: // Space.
+ case NSNewlineCharacter:
+ case NSCarriageReturnCharacter:
+ case NSEnterCharacter:
+ if (selectedIndex_ >= 0 && selectedIndex_ < [self buttonCount]) {
+ [self openBookmark:[buttons_ objectAtIndex:selectedIndex_]];
+ return NO; // NO because the selection-handling code will close later.
+ } else {
+ return YES; // Triggering with no selection closes the menu.
+ }
+ // Keys that cancel and close the menu.
+ case kUnicodeEscape:
+ case NSDeleteCharacter:
+ case NSBackspaceCharacter:
+ [self clearInputText];
+ return YES;
+ // Keys that change selection directionally.
+ case NSUpArrowFunctionKey:
+ [self clearInputText];
+ [self selectPrevious];
+ return NO;
+ case NSDownArrowFunctionKey:
+ [self clearInputText];
+ [self selectNext];
+ return NO;
+ // Keys that open and close submenus.
+ case NSRightArrowFunctionKey: {
+ BookmarkButton* btn = [self buttonAtIndex:selectedIndex_];
+ if (btn && [btn isFolder]) {
+ [self openBookmarkFolderFromButtonAndCloseOldOne:btn];
+ [folderController_ selectNext];
+ }
+ [self clearInputText];
+ return NO;
+ }
+ case NSLeftArrowFunctionKey:
+ [self clearInputText];
+ [parentController_ closeBookmarkFolder:self];
+ return NO;
+
+ // Check for other keys that should close the menu.
+ default: {
+ if (theChar > NSUpArrowFunctionKey &&
+ theChar <= NSModeSwitchFunctionKey) {
+ [self clearInputText];
+ return YES;
+ }
+ break;
+ }
+ }
+ }
+
+ // It is a char or string worth adding to the type-select buffer.
+ NSString *newString = (!typedPrefix_) ?
+ newText : [typedPrefix_ stringByAppendingString:newText];
+ [typedPrefix_ release];
+ typedPrefix_ = [newString retain];
+ [self setSelectedButtonByPrefix:typedPrefix_];
+ return NO;
+}
+
+// Return the y position for a drop indicator.
+//
+// TODO(jrg): again we have code dup, sort of, with
+// bookmark_bar_controller.mm, but the axis is changed.
+// http://crbug.com/35966
+- (CGFloat)indicatorPosForDragToPoint:(NSPoint)point {
+ CGFloat y = 0;
+ int destIndex = [self indexForDragToPoint:point];
+ int numButtons = static_cast<int>([buttons_ count]);
+
+ // If it's a drop strictly between existing buttons or at the very beginning
+ if (destIndex >= 0 && destIndex < numButtons) {
+ // ... put the indicator right between the buttons.
+ BookmarkButton* button =
+ [buttons_ objectAtIndex:static_cast<NSUInteger>(destIndex)];
+ DCHECK(button);
+ NSRect buttonFrame = [button frame];
+ y = NSMaxY(buttonFrame) + 0.5 * bookmarks::kBookmarkVerticalPadding;
+
+ // If it's a drop at the end (past the last button, if there are any) ...
+ } else if (destIndex == numButtons) {
+ // and if it's past the last button ...
+ if (numButtons > 0) {
+ // ... find the last button, and put the indicator below it.
+ BookmarkButton* button =
+ [buttons_ objectAtIndex:static_cast<NSUInteger>(destIndex - 1)];
+ DCHECK(button);
+ NSRect buttonFrame = [button frame];
+ y = buttonFrame.origin.y - 0.5 * bookmarks::kBookmarkVerticalPadding;
+
+ }
+ } else {
+ NOTREACHED();
+ }
+
+ return y;
+}
+
+- (ui::ThemeProvider*)themeProvider {
+ return [parentController_ themeProvider];
+}
+
+- (void)childFolderWillShow:(id<BookmarkButtonControllerProtocol>)child {
+ // Do nothing.
+}
+
+- (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child {
+ // Do nothing.
+}
+
+- (BookmarkBarFolderController*)folderController {
+ return folderController_;
+}
+
+- (void)faviconLoadedForNode:(const BookmarkNode*)node {
+ for (BookmarkButton* button in buttons_.get()) {
+ if ([button bookmarkNode] == node) {
+ [button setImage:[barController_ faviconForNode:node]];
+ [button setNeedsDisplay:YES];
+ return;
+ }
+ }
+
+ // Node was not in this menu, try submenu.
+ if (folderController_)
+ [folderController_ faviconLoadedForNode:node];
+}
+
+// Add a new folder controller as triggered by the given folder button.
+- (void)addNewFolderControllerWithParentButton:(BookmarkButton*)parentButton {
+ if (folderController_)
+ [self closeBookmarkFolder:self];
+
+ // Folder controller, like many window controllers, owns itself.
+ folderController_ =
+ [[BookmarkBarFolderController alloc] initWithParentButton:parentButton
+ parentController:self
+ barController:barController_];
+ [folderController_ showWindow:self];
+}
+
+- (void)openAll:(const BookmarkNode*)node
+ disposition:(WindowOpenDisposition)disposition {
+ [barController_ openAll:node disposition:disposition];
+}
+
+- (void)addButtonForNode:(const BookmarkNode*)node
+ atIndex:(NSInteger)buttonIndex {
+ // Propose the frame for the new button. By default, this will be set to the
+ // topmost button's frame (and there will always be one) offset upward in
+ // anticipation of insertion.
+ NSRect newButtonFrame = [[buttons_ objectAtIndex:0] frame];
+ newButtonFrame.origin.y += bookmarks::kBookmarkFolderButtonHeight;
+ // When adding a button to an empty folder we must remove the 'empty'
+ // placeholder button. This can be detected by checking for a parent
+ // child count of 1.
+ const BookmarkNode* parentNode = node->parent();
+ if (parentNode->child_count() == 1) {
+ BookmarkButton* emptyButton = [buttons_ lastObject];
+ newButtonFrame = [emptyButton frame];
+ [emptyButton setDelegate:nil];
+ [emptyButton removeFromSuperview];
+ [buttons_ removeLastObject];
+ }
+
+ if (buttonIndex == -1 || buttonIndex > (NSInteger)[buttons_ count])
+ buttonIndex = [buttons_ count];
+
+ // Offset upward by one button height all buttons above insertion location.
+ BookmarkButton* button = nil; // Remember so it can be de-highlighted.
+ for (NSInteger i = 0; i < buttonIndex; ++i) {
+ button = [buttons_ objectAtIndex:i];
+ // Remember this location in case it's the last button being moved
+ // which is where the new button will be located.
+ newButtonFrame = [button frame];
+ NSRect buttonFrame = [button frame];
+ buttonFrame.origin.y += bookmarks::kBookmarkFolderButtonHeight;
+ [button setFrame:buttonFrame];
+ }
+ [[button cell] mouseExited:nil]; // De-highlight.
+ BookmarkButton* newButton = [self makeButtonForNode:node
+ frame:newButtonFrame];
+ [buttons_ insertObject:newButton atIndex:buttonIndex];
+ [folderView_ addSubview:newButton];
+
+ // Close any child folder(s) which may still be open.
+ [self closeBookmarkFolder:self];
+
+ [self adjustWindowForButtonCount:[buttons_ count]];
+}
+
+// More code which essentially duplicates that of BookmarkBarController.
+// TODO(mrossetti,jrg): http://crbug.com/35966
+- (BOOL)addURLs:(NSArray*)urls withTitles:(NSArray*)titles at:(NSPoint)point {
+ DCHECK([urls count] == [titles count]);
+ BOOL nodesWereAdded = NO;
+ // Figure out where these new bookmarks nodes are to be added.
+ BookmarkButton* button = [self buttonForDroppingOnAtPoint:point];
+ BookmarkModel* bookmarkModel = [self bookmarkModel];
+ const BookmarkNode* destParent = NULL;
+ int destIndex = 0;
+ if ([button isFolder]) {
+ destParent = [button bookmarkNode];
+ // Drop it at the end.
+ destIndex = [button bookmarkNode]->child_count();
+ } else {
+ // Else we're dropping somewhere in the folder, so find the right spot.
+ destParent = [parentButton_ bookmarkNode];
+ destIndex = [self indexForDragToPoint:point];
+ // Be careful if the number of buttons != number of nodes.
+ destIndex += [[parentButton_ cell] startingChildIndex];
+ }
+
+ // Create and add the new bookmark nodes.
+ size_t urlCount = [urls count];
+ for (size_t i = 0; i < urlCount; ++i) {
+ GURL gurl;
+ const char* string = [[urls objectAtIndex:i] UTF8String];
+ if (string)
+ gurl = GURL(string);
+ // We only expect to receive valid URLs.
+ DCHECK(gurl.is_valid());
+ if (gurl.is_valid()) {
+ bookmarkModel->AddURL(destParent,
+ destIndex++,
+ base::SysNSStringToUTF16([titles objectAtIndex:i]),
+ gurl);
+ nodesWereAdded = YES;
+ }
+ }
+ return nodesWereAdded;
+}
+
+- (void)moveButtonFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex {
+ if (fromIndex != toIndex) {
+ if (toIndex == -1)
+ toIndex = [buttons_ count];
+ BookmarkButton* movedButton = [buttons_ objectAtIndex:fromIndex];
+ if (movedButton == buttonThatMouseIsIn_)
+ buttonThatMouseIsIn_ = nil;
+ [buttons_ removeObjectAtIndex:fromIndex];
+ NSRect movedFrame = [movedButton frame];
+ NSPoint toOrigin = movedFrame.origin;
+ [movedButton setHidden:YES];
+ if (fromIndex < toIndex) {
+ BookmarkButton* targetButton = [buttons_ objectAtIndex:toIndex - 1];
+ toOrigin = [targetButton frame].origin;
+ for (NSInteger i = fromIndex; i < toIndex; ++i) {
+ BookmarkButton* button = [buttons_ objectAtIndex:i];
+ NSRect frame = [button frame];
+ frame.origin.y += bookmarks::kBookmarkFolderButtonHeight;
+ [button setFrameOrigin:frame.origin];
+ }
+ } else {
+ BookmarkButton* targetButton = [buttons_ objectAtIndex:toIndex];
+ toOrigin = [targetButton frame].origin;
+ for (NSInteger i = fromIndex - 1; i >= toIndex; --i) {
+ BookmarkButton* button = [buttons_ objectAtIndex:i];
+ NSRect buttonFrame = [button frame];
+ buttonFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight;
+ [button setFrameOrigin:buttonFrame.origin];
+ }
+ }
+ [buttons_ insertObject:movedButton atIndex:toIndex];
+ [movedButton setFrameOrigin:toOrigin];
+ [movedButton setHidden:NO];
+ }
+}
+
+// TODO(jrg): Refactor BookmarkBarFolder common code. http://crbug.com/35966
+- (void)removeButton:(NSInteger)buttonIndex animate:(BOOL)animate {
+ // TODO(mrossetti): Get disappearing animation to work. http://crbug.com/42360
+ BookmarkButton* oldButton = [buttons_ objectAtIndex:buttonIndex];
+ NSPoint poofPoint = [oldButton screenLocationForRemoveAnimation];
+
+ // If a hover-open is pending, cancel it.
+ if (oldButton == buttonThatMouseIsIn_) {
+ [NSObject cancelPreviousPerformRequestsWithTarget:self];
+ buttonThatMouseIsIn_ = nil;
+ }
+
+ // Deleting a button causes rearrangement that enables us to lose a
+ // mouse-exited event. This problem doesn't appear to exist with
+ // other keep-menu-open options (e.g. add folder). Since the
+ // showsBorderOnlyWhileMouseInside uses a tracking area, simple
+ // tricks (e.g. sending an extra mouseExited: to the button) don't
+ // fix the problem.
+ // http://crbug.com/54324
+ for (NSButton* button in buttons_.get()) {
+ if ([button showsBorderOnlyWhileMouseInside]) {
+ [button setShowsBorderOnlyWhileMouseInside:NO];
+ [button setShowsBorderOnlyWhileMouseInside:YES];
+ }
+ }
+
+ [oldButton setDelegate:nil];
+ [oldButton removeFromSuperview];
+ [buttons_ removeObjectAtIndex:buttonIndex];
+ for (NSInteger i = 0; i < buttonIndex; ++i) {
+ BookmarkButton* button = [buttons_ objectAtIndex:i];
+ NSRect buttonFrame = [button frame];
+ buttonFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight;
+ [button setFrame:buttonFrame];
+ }
+ // Search for and adjust submenus, if necessary.
+ NSInteger buttonCount = [buttons_ count];
+ if (buttonCount) {
+ BookmarkButton* subButton = [folderController_ parentButton];
+ for (NSButton* aButton in buttons_.get()) {
+ // If this button is showing its menu then we need to move the menu, too.
+ if (aButton == subButton)
+ [folderController_ offsetFolderMenuWindow:NSMakeSize(0.0,
+ bookmarks::kBookmarkBarHeight)];
+ }
+ } else {
+ // If all nodes have been removed from this folder then add in the
+ // 'empty' placeholder button.
+ NSRect buttonFrame =
+ NSMakeRect(0.0, 0.0, bookmarks::kDefaultBookmarkWidth,
+ bookmarks::kBookmarkFolderButtonHeight);
+ BookmarkButton* button = [self makeButtonForNode:nil
+ frame:buttonFrame];
+ [buttons_ addObject:button];
+ [folderView_ addSubview:button];
+ buttonCount = 1;
+ }
+
+ [self adjustWindowForButtonCount:buttonCount];
+
+ if (animate && !ignoreAnimations_)
+ NSShowAnimationEffect(NSAnimationEffectDisappearingItemDefault, poofPoint,
+ NSZeroSize, nil, nil, nil);
+}
+
+- (id<BookmarkButtonControllerProtocol>)controllerForNode:
+ (const BookmarkNode*)node {
+ // See if we are holding this node, otherwise see if it is in our
+ // hierarchy of visible folder menus.
+ if ([parentButton_ bookmarkNode] == node)
+ return self;
+ return [folderController_ controllerForNode:node];
+}
+
+#pragma mark TestingAPI Only
+
+- (BOOL)canScrollUp {
+ return ![scrollUpArrowView_ isHidden];
+}
+
+- (BOOL)canScrollDown {
+ return ![scrollDownArrowView_ isHidden];
+}
+
+- (CGFloat)verticalScrollArrowHeight {
+ return verticalScrollArrowHeight_;
+}
+
+- (NSView*)visibleView {
+ return visibleView_;
+}
+
+- (NSScrollView*)scrollView {
+ return scrollView_;
+}
+
+- (NSView*)folderView {
+ return folderView_;
+}
+
+- (void)setIgnoreAnimations:(BOOL)ignore {
+ ignoreAnimations_ = ignore;
+}
+
+- (BookmarkButton*)buttonThatMouseIsIn {
+ return buttonThatMouseIsIn_;
+}
+
+@end // BookmarkBarFolderController
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm
index 3c2df2b..8a52dd2c 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm
@@ -8,11 +8,11 @@
#include "base/memory/scoped_nsobject.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
+#import "chrome/browser/ui/cocoa/animation_utils.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
-#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h"
-#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h"
#include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
@@ -22,164 +22,1550 @@
#import "testing/gtest_mac.h"
#include "testing/platform_test.h"
+// Add a redirect to make testing easier.
+@interface BookmarkBarFolderController(MakeTestingEasier)
+- (IBAction)openBookmarkFolderFromButton:(id)sender;
+- (void)validateMenuSpacing;
+@end
+
+@implementation BookmarkBarFolderController(MakeTestingEasier)
+- (IBAction)openBookmarkFolderFromButton:(id)sender {
+ [[self folderTarget] openBookmarkFolderFromButton:sender];
+}
+
+// Utility function to verify that the buttons in this folder are all
+// evenly spaced in a progressive manner.
+- (void)validateMenuSpacing {
+ BOOL firstButton = YES;
+ CGFloat lastVerticalOffset = 0.0;
+ for (BookmarkButton* button in [self buttons]) {
+ if (firstButton) {
+ firstButton = NO;
+ lastVerticalOffset = [button frame].origin.y;
+ } else {
+ CGFloat nextVerticalOffset = [button frame].origin.y;
+ EXPECT_CGFLOAT_EQ(lastVerticalOffset -
+ bookmarks::kBookmarkFolderButtonHeight,
+ nextVerticalOffset);
+ lastVerticalOffset = nextVerticalOffset;
+ }
+ }
+}
+@end
+
+// Don't use a high window level when running unit tests -- it'll
+// interfere with anything else you are working on.
+// For testing.
+@interface BookmarkBarFolderControllerNoLevel : BookmarkBarFolderController
+@end
+
+@implementation BookmarkBarFolderControllerNoLevel
+- (void)configureWindowLevel {
+ // Intentionally empty.
+}
+@end
+
+@interface BookmarkBarFolderControllerPong : BookmarkBarFolderController {
+ BOOL childFolderWillShow_;
+ BOOL childFolderWillClose_;
+}
+@property (nonatomic, readonly) BOOL childFolderWillShow;
+@property (nonatomic, readonly) BOOL childFolderWillClose;
+@end
+
+@implementation BookmarkBarFolderControllerPong
+@synthesize childFolderWillShow = childFolderWillShow_;
+@synthesize childFolderWillClose = childFolderWillClose_;
+
+- (void)childFolderWillShow:(id<BookmarkButtonControllerProtocol>)child {
+ childFolderWillShow_ = YES;
+}
+
+- (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child {
+ childFolderWillClose_ = YES;
+}
+
+// We don't have a real BookmarkBarController as our parent root so
+// we fake this one out.
+- (void)closeAllBookmarkFolders {
+ [self closeBookmarkFolder:self];
+}
+
+@end
+
namespace {
const int kLotsOfNodesCount = 150;
};
+// Redirect certain calls so they can be seen by tests.
+
+@interface BookmarkBarControllerChildFolderRedirect : BookmarkBarController {
+ BookmarkBarFolderController* childFolderDelegate_;
+}
+@property (nonatomic, assign) BookmarkBarFolderController* childFolderDelegate;
+@end
+
+@implementation BookmarkBarControllerChildFolderRedirect
+
+@synthesize childFolderDelegate = childFolderDelegate_;
+
+- (void)childFolderWillShow:(id<BookmarkButtonControllerProtocol>)child {
+ [childFolderDelegate_ childFolderWillShow:child];
+}
+
+- (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child {
+ [childFolderDelegate_ childFolderWillClose:child];
+}
+
+@end
+
+
class BookmarkBarFolderControllerTest : public CocoaProfileTest {
public:
- BookmarkModel* GetModel() {
- return profile()->GetBookmarkModel();
+ scoped_nsobject<BookmarkBarControllerChildFolderRedirect> bar_;
+ const BookmarkNode* folderA_; // Owned by model.
+ const BookmarkNode* longTitleNode_; // Owned by model.
+
+ virtual void SetUp() {
+ CocoaProfileTest::SetUp();
+ ASSERT_TRUE(profile());
+
+ CreateModel();
+ }
+
+ void CreateModel() {
+ BookmarkModel* model = profile()->GetBookmarkModel();
+ const BookmarkNode* parent = model->bookmark_bar_node();
+ const BookmarkNode* folderA = model->AddFolder(parent,
+ parent->child_count(),
+ ASCIIToUTF16("folder"));
+ folderA_ = folderA;
+ model->AddFolder(parent, parent->child_count(),
+ ASCIIToUTF16("sibbling folder"));
+ const BookmarkNode* folderB = model->AddFolder(folderA,
+ folderA->child_count(),
+ ASCIIToUTF16("subfolder 1"));
+ model->AddFolder(folderA,
+ folderA->child_count(),
+ ASCIIToUTF16("subfolder 2"));
+ model->AddURL(folderA, folderA->child_count(), ASCIIToUTF16("title a"),
+ GURL("http://www.google.com/a"));
+ longTitleNode_ = model->AddURL(
+ folderA, folderA->child_count(),
+ ASCIIToUTF16("title super duper long long whoa momma title you betcha"),
+ GURL("http://www.google.com/b"));
+ model->AddURL(folderB, folderB->child_count(), ASCIIToUTF16("t"),
+ GURL("http://www.google.com/c"));
+
+ bar_.reset(
+ [[BookmarkBarControllerChildFolderRedirect alloc]
+ initWithBrowser:browser()
+ initialWidth:300
+ delegate:nil
+ resizeDelegate:nil]);
+ [bar_ loaded:model];
+ // Make parent frame for bookmark bar then open it.
+ NSRect frame = [[test_window() contentView] frame];
+ frame = NSMakeRect(frame.origin.x,
+ frame.size.height - bookmarks::kNTPBookmarkBarHeight,
+ frame.size.width, bookmarks::kNTPBookmarkBarHeight);
+ NSView* fakeToolbarView = [[[NSView alloc] initWithFrame:frame]
+ autorelease];
+ [[test_window() contentView] addSubview:fakeToolbarView];
+ [fakeToolbarView addSubview:[bar_ view]];
+ [bar_ setBookmarkBarEnabled:YES];
}
- BookmarkBarFolderController* CreateController(const BookmarkNode* node) {
- // The button will be owned by the controller.
- scoped_nsobject<BookmarkButton> button(
- [[BookmarkButton alloc] initWithFrame:NSMakeRect(0, 0, 500, 500)]);
- scoped_nsobject<BookmarkButtonCell> cell(
- [[BookmarkButtonCell alloc] initTextCell:@"foo"]);
- [button setCell:cell];
- [cell setBookmarkNode:node];
+ // Remove the bookmark with the long title.
+ void RemoveLongTitleNode() {
+ BookmarkModel* model = profile()->GetBookmarkModel();
+ model->Remove(longTitleNode_->parent(),
+ longTitleNode_->parent()->GetIndexOf(longTitleNode_));
+ }
- BookmarkModel* model = GetModel();
- return [[BookmarkBarFolderController alloc] initWithParentButton:button
- bookmarkModel:model
- barController:nil];
+ // Add LOTS of nodes to our model if needed (e.g. scrolling).
+ // Returns the number of nodes added.
+ int AddLotsOfNodes() {
+ BookmarkModel* model = profile()->GetBookmarkModel();
+ for (int i = 0; i < kLotsOfNodesCount; i++) {
+ model->AddURL(folderA_, folderA_->child_count(),
+ ASCIIToUTF16("repeated title"),
+ GURL("http://www.google.com/repeated/url"));
+ }
+ return kLotsOfNodesCount;
}
- NSMenu* GetMenu(BookmarkBarFolderController* controller) {
- return [[controller menuBridge]->controller() menu];
+ // Return a simple BookmarkBarFolderController.
+ BookmarkBarFolderControllerPong* SimpleBookmarkBarFolderController() {
+ BookmarkButton* parentButton = [[bar_ buttons] objectAtIndex:0];
+ BookmarkBarFolderControllerPong* c =
+ [[BookmarkBarFolderControllerPong alloc]
+ initWithParentButton:parentButton
+ parentController:nil
+ barController:bar_];
+ [c window]; // Force nib load.
+ return c;
}
};
-TEST_F(BookmarkBarFolderControllerTest, SimpleFolder) {
- // Create the model.
- BookmarkModel* model = GetModel();
- const BookmarkNode* root = model->bookmark_bar_node();
-
- model->AddURL(root, root->child_count(), ASCIIToUTF16("ignored"),
- GURL("http://example.com"));
-
- const BookmarkNode* folder = model->AddFolder(root, root->child_count(),
- ASCIIToUTF16("folder"));
- model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 1"),
- GURL("http://www.google.com/"));
- model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 2"),
- GURL("http://www.chromium.org/"));
- model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 3"),
- GURL("http://build.chromium.org/"));
-
- model->AddURL(root, root->child_count(), ASCIIToUTF16("ignored 2"),
- GURL("http://example2.com"));
-
- // Create the controller and menu.
- scoped_nsobject<BookmarkBarFolderController> bbfc(CreateController(folder));
- CloseFolderAfterDelay(bbfc, 0.1);
- [bbfc openMenu];
-
- NSArray* items = [GetMenu(bbfc) itemArray];
- ASSERT_EQ(3u, [items count]);
-
- EXPECT_NSEQ(@"item 1", [[items objectAtIndex:0] title]);
- EXPECT_NSEQ(@"item 2", [[items objectAtIndex:1] title]);
- EXPECT_NSEQ(@"item 3", [[items objectAtIndex:2] title]);
-}
-
-TEST_F(BookmarkBarFolderControllerTest, NestedFolder) {
- // Create the model.
- BookmarkModel* model = GetModel();
- const BookmarkNode* root = model->bookmark_bar_node();
-
- model->AddURL(root, root->child_count(), ASCIIToUTF16("ignored"),
- GURL("http://example.com"));
- model->AddURL(root, root->child_count(), ASCIIToUTF16("ignored 2"),
- GURL("http://example2.com"));
-
- const BookmarkNode* folder = model->AddFolder(root, root->child_count(),
- ASCIIToUTF16("folder"));
- model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 1"),
- GURL("http://www.google.com/"));
- model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 2"),
- GURL("http://www.chromium.org/"));
- model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 3"),
- GURL("http://build.chromium.org/"));
- const BookmarkNode* subfolder = model->AddFolder(folder,
- folder->child_count(), ASCIIToUTF16("subfolder"));
- model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 4"),
- GURL("http://dev.chromium.org/"));
-
- model->AddURL(subfolder, subfolder->child_count(), ASCIIToUTF16("subitem 1"),
- GURL("http://gmail.com"));
- model->AddURL(subfolder, subfolder->child_count(), ASCIIToUTF16("subitem 2"),
- GURL("http://google.com/+"));
-
- // Create the controller and menu.
- scoped_nsobject<BookmarkBarFolderController> bbfc(CreateController(folder));
- CloseFolderAfterDelay(bbfc, 0.1);
- [bbfc openMenu];
-
- NSArray* items = [GetMenu(bbfc) itemArray];
- ASSERT_EQ(5u, [items count]);
-
- EXPECT_NSEQ(@"item 1", [[items objectAtIndex:0] title]);
- EXPECT_NSEQ(@"item 2", [[items objectAtIndex:1] title]);
- EXPECT_NSEQ(@"item 3", [[items objectAtIndex:2] title]);
- EXPECT_NSEQ(@"subfolder", [[items objectAtIndex:3] title]);
- EXPECT_NSEQ(@"item 4", [[items objectAtIndex:4] title]);
-
- NSArray* subitems = [[[items objectAtIndex:3] submenu] itemArray];
- ASSERT_EQ(2u, [subitems count]);
- EXPECT_NSEQ(@"subitem 1", [[subitems objectAtIndex:0] title]);
- EXPECT_NSEQ(@"subitem 2", [[subitems objectAtIndex:1] title]);
-}
-
-TEST_F(BookmarkBarFolderControllerTest, OffTheSide) {
- // Create the model.
- BookmarkModel* model = GetModel();
- const BookmarkNode* root = model->bookmark_bar_node();
-
- model->AddURL(root, root->child_count(), ASCIIToUTF16("item 1"),
- GURL("http://example.com"));
- model->AddURL(root, root->child_count(), ASCIIToUTF16("item 2"),
- GURL("http://www.google.com/"));
- model->AddURL(root, root->child_count(), ASCIIToUTF16("item 3"),
- GURL("http://www.chromium.org/"));
- model->AddURL(root, root->child_count(), ASCIIToUTF16("item 4"),
- GURL("http://build.chromium.org/"));
- model->AddURL(root, root->child_count(), ASCIIToUTF16("item 5"),
- GURL("http://example2.com"));
-
- // Create the controller and menu.
- scoped_nsobject<BookmarkBarFolderController> bbfc(CreateController(root));
- CloseFolderAfterDelay(bbfc, 0.1);
- [bbfc openMenu];
-
- NSArray* items = [GetMenu(bbfc) itemArray];
- ASSERT_EQ(5u, [items count]);
-
- EXPECT_NSEQ(@"item 1", [[items objectAtIndex:0] title]);
- EXPECT_NSEQ(@"item 2", [[items objectAtIndex:1] title]);
- EXPECT_NSEQ(@"item 3", [[items objectAtIndex:2] title]);
- EXPECT_NSEQ(@"item 4", [[items objectAtIndex:3] title]);
- EXPECT_NSEQ(@"item 5", [[items objectAtIndex:4] title]);
-
- [bbfc setOffTheSideNodeStartIndex:1];
- CloseFolderAfterDelay(bbfc, 0.1);
- [bbfc openMenu];
- items = [GetMenu(bbfc) itemArray];
- ASSERT_EQ(4u, [items count]);
- EXPECT_NSEQ(@"item 2", [[items objectAtIndex:0] title]);
-
- [bbfc setOffTheSideNodeStartIndex:4];
- CloseFolderAfterDelay(bbfc, 0.1);
- [bbfc openMenu];
- items = [GetMenu(bbfc) itemArray];
- ASSERT_EQ(1u, [items count]);
- EXPECT_NSEQ(@"item 5", [[items objectAtIndex:0] title]);
-
- [bbfc setOffTheSideNodeStartIndex:0];
- CloseFolderAfterDelay(bbfc, 0.1);
- [bbfc openMenu];
- items = [GetMenu(bbfc) itemArray];
- EXPECT_EQ(5u, [items count]);
+TEST_F(BookmarkBarFolderControllerTest, InitCreateAndDelete) {
+ scoped_nsobject<BookmarkBarFolderController> bbfc;
+ bbfc.reset(SimpleBookmarkBarFolderController());
+
+ // Make sure none of the buttons overlap, that all are inside
+ // the content frame, and their cells are of the proper class.
+ NSArray* buttons = [bbfc buttons];
+ EXPECT_TRUE([buttons count]);
+ for (unsigned int i = 0; i < ([buttons count]-1); i++) {
+ EXPECT_FALSE(NSContainsRect([[buttons objectAtIndex:i] frame],
+ [[buttons objectAtIndex:i+1] frame]));
+ }
+ Class cellClass = [BookmarkBarFolderButtonCell class];
+ for (BookmarkButton* button in buttons) {
+ NSRect r = [[bbfc folderView] convertRect:[button frame] fromView:button];
+ // TODO(jrg): remove this adjustment.
+ NSRect bigger = NSInsetRect([[bbfc folderView] frame], -2, 0);
+ EXPECT_TRUE(NSContainsRect(bigger, r));
+ EXPECT_TRUE([[button cell] isKindOfClass:cellClass]);
+ }
+
+ // Confirm folder buttons have no tooltip. The important thing
+ // really is that we insure folders and non-folders are treated
+ // differently; not sure of any other generic way to do this.
+ for (BookmarkButton* button in buttons) {
+ if ([button isFolder])
+ EXPECT_FALSE([button toolTip]);
+ else
+ EXPECT_TRUE([button toolTip]);
+ }
+}
+
+// Make sure closing of the window releases the controller.
+// (e.g. valgrind shouldn't complain if we do this).
+TEST_F(BookmarkBarFolderControllerTest, ReleaseOnClose) {
+ scoped_nsobject<BookmarkBarFolderController> bbfc;
+ bbfc.reset(SimpleBookmarkBarFolderController());
+ EXPECT_TRUE(bbfc.get());
+
+ [bbfc retain]; // stop the scoped_nsobject from doing anything
+ [[bbfc window] close]; // trigger an autorelease of bbfc.get()
+}
+
+TEST_F(BookmarkBarFolderControllerTest, BasicPosition) {
+ BookmarkButton* parentButton = [[bar_ buttons] objectAtIndex:0];
+ EXPECT_TRUE(parentButton);
+
+ // If parent is a BookmarkBarController, grow down.
+ scoped_nsobject<BookmarkBarFolderController> bbfc;
+ bbfc.reset([[BookmarkBarFolderController alloc]
+ initWithParentButton:parentButton
+ parentController:nil
+ barController:bar_]);
+ [bbfc window];
+ NSPoint pt = [bbfc windowTopLeftForWidth:0 height:100]; // screen coords
+ NSPoint buttonOriginInScreen =
+ [[parentButton window]
+ convertBaseToScreen:[parentButton
+ convertRectToBase:[parentButton frame]].origin];
+ // Within margin
+ EXPECT_LE(abs(pt.x - buttonOriginInScreen.x),
+ bookmarks::kBookmarkMenuOverlap+1);
+ EXPECT_LE(abs(pt.y - buttonOriginInScreen.y),
+ bookmarks::kBookmarkMenuOverlap+1);
+
+ // Make sure we see the window shift left if it spills off the screen
+ pt = [bbfc windowTopLeftForWidth:0 height:100];
+ NSPoint shifted = [bbfc windowTopLeftForWidth:9999999 height:100];
+ EXPECT_LT(shifted.x, pt.x);
+
+ // If parent is a BookmarkBarFolderController, grow right.
+ scoped_nsobject<BookmarkBarFolderController> bbfc2;
+ bbfc2.reset([[BookmarkBarFolderController alloc]
+ initWithParentButton:[[bbfc buttons] objectAtIndex:0]
+ parentController:bbfc.get()
+ barController:bar_]);
+ [bbfc2 window];
+ pt = [bbfc2 windowTopLeftForWidth:0 height:100];
+ // We're now overlapping the window a bit.
+ EXPECT_EQ(pt.x, NSMaxX([[bbfc.get() window] frame]) -
+ bookmarks::kBookmarkMenuOverlap);
+}
+
+// Confirm we grow right until end of screen, then start growing left
+// until end of screen again, then right.
+TEST_F(BookmarkBarFolderControllerTest, PositionRightLeftRight) {
+ BookmarkModel* model = profile()->GetBookmarkModel();
+ const BookmarkNode* parent = model->bookmark_bar_node();
+ const BookmarkNode* folder = parent;
+
+ const int count = 100;
+ int i;
+ // Make some super duper deeply nested folders.
+ for (i = 0; i < count; i++) {
+ folder = model->AddFolder(folder, 0, ASCIIToUTF16("nested folder"));
+ }
+
+ // Setup initial state for opening all folders.
+ folder = parent;
+ BookmarkButton* parentButton = [[bar_ buttons] objectAtIndex:0];
+ BookmarkBarFolderController* parentController = nil;
+ EXPECT_TRUE(parentButton);
+
+ // Open them all.
+ scoped_nsobject<NSMutableArray> folder_controller_array;
+ folder_controller_array.reset([[NSMutableArray array] retain]);
+ for (i=0; i<count; i++) {
+ BookmarkBarFolderControllerNoLevel* bbfcl =
+ [[BookmarkBarFolderControllerNoLevel alloc]
+ initWithParentButton:parentButton
+ parentController:parentController
+ barController:bar_];
+ [folder_controller_array addObject:bbfcl];
+ [bbfcl autorelease];
+ [bbfcl window];
+ parentController = bbfcl;
+ parentButton = [[bbfcl buttons] objectAtIndex:0];
+ }
+
+ // Make vector of all x positions.
+ std::vector<CGFloat> leftPositions;
+ for (i=0; i<count; i++) {
+ CGFloat x = [[[folder_controller_array objectAtIndex:i] window]
+ frame].origin.x;
+ leftPositions.push_back(x);
+ }
+
+ // Make sure the first few grow right.
+ for (i=0; i<3; i++)
+ EXPECT_TRUE(leftPositions[i+1] > leftPositions[i]);
+
+ // Look for the first "grow left".
+ while (leftPositions[i] > leftPositions[i-1])
+ i++;
+ // Confirm the next few also grow left.
+ int j;
+ for (j=i; j<i+3; j++)
+ EXPECT_TRUE(leftPositions[j+1] < leftPositions[j]);
+ i = j;
+
+ // Finally, confirm we see a "grow right" once more.
+ while (leftPositions[i] < leftPositions[i-1])
+ i++;
+ // (No need to EXPECT a final "grow right"; if we didn't find one
+ // we'd get a C++ array bounds exception).
+}
+
+TEST_F(BookmarkBarFolderControllerTest, DropDestination) {
+ scoped_nsobject<BookmarkBarFolderController> bbfc;
+ bbfc.reset(SimpleBookmarkBarFolderController());
+ EXPECT_TRUE(bbfc.get());
+
+ // Confirm "off the top" and "off the bottom" match no buttons.
+ NSPoint p = NSMakePoint(NSMidX([[bbfc folderView] frame]), 10000);
+ EXPECT_FALSE([bbfc buttonForDroppingOnAtPoint:p]);
+ EXPECT_TRUE([bbfc shouldShowIndicatorShownForPoint:p]);
+ p = NSMakePoint(NSMidX([[bbfc folderView] frame]), -1);
+ EXPECT_FALSE([bbfc buttonForDroppingOnAtPoint:p]);
+ EXPECT_TRUE([bbfc shouldShowIndicatorShownForPoint:p]);
+
+ // Confirm "right in the center" (give or take a pixel) is a match,
+ // and confirm "just barely in the button" is not. Anything more
+ // specific seems likely to be tweaked. We don't loop over all
+ // buttons because the scroll view makes them not visible.
+ for (BookmarkButton* button in [bbfc buttons]) {
+ CGFloat x = NSMidX([button frame]);
+ CGFloat y = NSMidY([button frame]);
+ // Somewhere near the center: a match (but only if a folder!)
+ if ([button isFolder]) {
+ EXPECT_EQ(button,
+ [bbfc buttonForDroppingOnAtPoint:NSMakePoint(x-1, y+1)]);
+ EXPECT_EQ(button,
+ [bbfc buttonForDroppingOnAtPoint:NSMakePoint(x+1, y-1)]);
+ EXPECT_FALSE([bbfc shouldShowIndicatorShownForPoint:NSMakePoint(x, y)]);;
+ } else {
+ // If not a folder we don't drop into it.
+ EXPECT_FALSE([bbfc buttonForDroppingOnAtPoint:NSMakePoint(x-1, y+1)]);
+ EXPECT_FALSE([bbfc buttonForDroppingOnAtPoint:NSMakePoint(x+1, y-1)]);
+ EXPECT_TRUE([bbfc shouldShowIndicatorShownForPoint:NSMakePoint(x, y)]);;
+ }
+ }
}
+
+TEST_F(BookmarkBarFolderControllerTest, OpenFolder) {
+ scoped_nsobject<BookmarkBarFolderController> bbfc;
+ bbfc.reset(SimpleBookmarkBarFolderController());
+ EXPECT_TRUE(bbfc.get());
+
+ EXPECT_FALSE([bbfc folderController]);
+ BookmarkButton* button = [[bbfc buttons] objectAtIndex:0];
+ [bbfc openBookmarkFolderFromButton:button];
+ id controller = [bbfc folderController];
+ EXPECT_TRUE(controller);
+ EXPECT_EQ([controller parentButton], button);
+
+ // Click the same one --> it gets closed.
+ [bbfc openBookmarkFolderFromButton:[[bbfc buttons] objectAtIndex:0]];
+ EXPECT_FALSE([bbfc folderController]);
+
+ // Open a new one --> change.
+ [bbfc openBookmarkFolderFromButton:[[bbfc buttons] objectAtIndex:1]];
+ EXPECT_NE(controller, [bbfc folderController]);
+ EXPECT_NE([[bbfc folderController] parentButton], button);
+
+ // Close it --> all gone!
+ [bbfc closeBookmarkFolder:nil];
+ EXPECT_FALSE([bbfc folderController]);
+}
+
+TEST_F(BookmarkBarFolderControllerTest, ChildFolderCallbacks) {
+ scoped_nsobject<BookmarkBarFolderControllerPong> bbfc;
+ bbfc.reset(SimpleBookmarkBarFolderController());
+ EXPECT_TRUE(bbfc.get());
+ [bar_ setChildFolderDelegate:bbfc.get()];
+
+ EXPECT_FALSE([bbfc childFolderWillShow]);
+ [bbfc openBookmarkFolderFromButton:[[bbfc buttons] objectAtIndex:0]];
+ EXPECT_TRUE([bbfc childFolderWillShow]);
+
+ EXPECT_FALSE([bbfc childFolderWillClose]);
+ [bbfc closeBookmarkFolder:nil];
+ EXPECT_TRUE([bbfc childFolderWillClose]);
+
+ [bar_ setChildFolderDelegate:nil];
+}
+
+// Make sure bookmark folders have variable widths.
+TEST_F(BookmarkBarFolderControllerTest, ChildFolderWidth) {
+ scoped_nsobject<BookmarkBarFolderController> bbfc;
+
+ bbfc.reset(SimpleBookmarkBarFolderController());
+ EXPECT_TRUE(bbfc.get());
+ [bbfc showWindow:bbfc.get()];
+ CGFloat wideWidth = NSWidth([[bbfc window] frame]);
+
+ RemoveLongTitleNode();
+ bbfc.reset(SimpleBookmarkBarFolderController());
+ EXPECT_TRUE(bbfc.get());
+ CGFloat thinWidth = NSWidth([[bbfc window] frame]);
+
+ // Make sure window size changed as expected.
+ EXPECT_GT(wideWidth, thinWidth);
+}
+
+// Simple scrolling tests.
+// Currently flaky due to a changed definition of the correct menu boundaries.
+TEST_F(BookmarkBarFolderControllerTest, DISABLED_SimpleScroll) {
+ scoped_nsobject<BookmarkBarFolderController> bbfc;
+ NSRect screenFrame = [[NSScreen mainScreen] visibleFrame];
+ CGFloat screenHeight = NSHeight(screenFrame);
+ int nodecount = AddLotsOfNodes();
+ bbfc.reset(SimpleBookmarkBarFolderController());
+ EXPECT_TRUE(bbfc.get());
+ [bbfc showWindow:bbfc.get()];
+ NSWindow* window = [bbfc window];
+
+ // The window should be shorter than the screen but reach exactly to the
+ // bottom of the screen since it's scrollable.
+ EXPECT_LT(NSHeight([window frame]), screenHeight);
+ EXPECT_CGFLOAT_EQ(0.0, [window frame].origin.y);
+
+ // Initially, should show scroll-up but not scroll-down.
+ EXPECT_TRUE([bbfc canScrollUp]);
+ EXPECT_FALSE([bbfc canScrollDown]);
+
+ // Scroll up a bit. Make sure the window has gotten bigger each time.
+ // Also, for each scroll, make sure our hit test finds a new button
+ // (to confirm the content area changed).
+ NSView* savedHit = nil;
+ NSScrollView* scrollView = [bbfc scrollView];
+
+ // Find the next-to-last button showing at the bottom of the window and
+ // use its center for hit testing.
+ BookmarkButton* targetButton = nil;
+ NSPoint scrollPoint = [scrollView documentVisibleRect].origin;
+ for (BookmarkButton* button in [bbfc buttons]) {
+ NSRect buttonFrame = [button frame];
+ buttonFrame.origin.y -= scrollPoint.y;
+ if (buttonFrame.origin.y < 0.0)
+ break;
+ targetButton = button;
+ }
+ EXPECT_TRUE(targetButton != nil);
+ NSPoint hitPoint = [targetButton frame].origin;
+ hitPoint.x += 50.0;
+ hitPoint.y += (bookmarks::kBookmarkFolderButtonHeight / 2.0) - scrollPoint.y;
+ hitPoint = [targetButton convertPoint:hitPoint toView:scrollView];
+
+ for (int i = 0; i < 3; i++) {
+ CGFloat height = NSHeight([window frame]);
+ [bbfc performOneScroll:60];
+ EXPECT_GT(NSHeight([window frame]), height);
+ NSView* hit = [scrollView hitTest:hitPoint];
+ // We should hit a bookmark button.
+ EXPECT_TRUE([[hit className] isEqualToString:@"BookmarkButton"]);
+ EXPECT_NE(hit, savedHit);
+ savedHit = hit;
+ }
+
+ // Keep scrolling up; make sure we never get bigger than the screen.
+ // Also confirm we never scroll the window off the screen.
+ bool bothAtOnce = false;
+ while ([bbfc canScrollUp]) {
+ [bbfc performOneScroll:60];
+ EXPECT_TRUE(NSContainsRect([[NSScreen mainScreen] frame], [window frame]));
+ // Make sure, sometime during our scroll, we have the ability to
+ // scroll in either direction.
+ if ([bbfc canScrollUp] &&
+ [bbfc canScrollDown])
+ bothAtOnce = true;
+ }
+ EXPECT_TRUE(bothAtOnce);
+
+ // Once we've scrolled to the end, our only option should be to scroll back.
+ EXPECT_FALSE([bbfc canScrollUp]);
+ EXPECT_TRUE([bbfc canScrollDown]);
+
+ NSRect wholeScreenRect = [[NSScreen mainScreen] frame];
+
+ // Now scroll down and make sure the window size does not change.
+ // Also confirm we never scroll the window off the screen the other
+ // way.
+ for (int i = 0; i < nodecount+50; ++i) {
+ [bbfc performOneScroll:-60];
+ // Once we can no longer scroll down the window height changes.
+ if (![bbfc canScrollDown])
+ break;
+ EXPECT_TRUE(NSContainsRect(wholeScreenRect, [window frame]));
+ }
+
+ EXPECT_GT(NSHeight(wholeScreenRect), NSHeight([window frame]));
+ EXPECT_TRUE(NSContainsRect(wholeScreenRect, [window frame]));
+}
+
+// Folder menu sizing and placement while deleting bookmarks
+// and scrolling tests.
+TEST_F(BookmarkBarFolderControllerTest, MenuPlacementWhileScrollingDeleting) {
+ scoped_nsobject<BookmarkBarFolderController> bbfc;
+ AddLotsOfNodes();
+ bbfc.reset(SimpleBookmarkBarFolderController());
+ [bbfc showWindow:bbfc.get()];
+ NSWindow* menuWindow = [bbfc window];
+ BookmarkBarFolderController* folder = [bar_ folderController];
+ NSArray* buttons = [folder buttons];
+
+ // Before scrolling any, delete a bookmark and make sure the window top has
+ // not moved. Pick a button which is near the top and visible.
+ CGFloat oldTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]);
+ BookmarkButton* button = [buttons objectAtIndex:3];
+ [folder deleteBookmark:button];
+ CGFloat newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]);
+ EXPECT_CGFLOAT_EQ(oldTop, newTop);
+
+ // Scroll so that both the top and bottom scroll arrows show, make sure
+ // the top of the window has moved up, then delete a visible button and
+ // make sure the top has not moved.
+ oldTop = newTop;
+ const CGFloat scrollOneBookmark = bookmarks::kBookmarkFolderButtonHeight +
+ bookmarks::kBookmarkVerticalPadding;
+ NSUInteger buttonCounter = 0;
+ NSUInteger extraButtonLimit = 3;
+ while (![bbfc canScrollDown] || extraButtonLimit > 0) {
+ [bbfc performOneScroll:scrollOneBookmark];
+ ++buttonCounter;
+ if ([bbfc canScrollDown])
+ --extraButtonLimit;
+ }
+ newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]);
+ EXPECT_NE(oldTop, newTop);
+ oldTop = newTop;
+ button = [buttons objectAtIndex:buttonCounter + 3];
+ [folder deleteBookmark:button];
+ newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]);
+ EXPECT_CGFLOAT_EQ(oldTop, newTop);
+
+ // Scroll so that the top scroll arrow is no longer showing, make sure
+ // the top of the window has not moved, then delete a visible button and
+ // make sure the top has not moved.
+ while ([bbfc canScrollDown]) {
+ [bbfc performOneScroll:-scrollOneBookmark];
+ --buttonCounter;
+ }
+ button = [buttons objectAtIndex:buttonCounter + 3];
+ [folder deleteBookmark:button];
+ newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]);
+ EXPECT_CGFLOAT_EQ(oldTop - bookmarks::kScrollWindowVerticalMargin, newTop);
+}
+
+@interface FakedDragInfo : NSObject {
+@public
+ NSPoint dropLocation_;
+ NSDragOperation sourceMask_;
+}
+@property (nonatomic, assign) NSPoint dropLocation;
+- (void)setDraggingSourceOperationMask:(NSDragOperation)mask;
+@end
+
+@implementation FakedDragInfo
+
+@synthesize dropLocation = dropLocation_;
+
+- (id)init {
+ if ((self = [super init])) {
+ dropLocation_ = NSZeroPoint;
+ sourceMask_ = NSDragOperationMove;
+ }
+ return self;
+}
+
+// NSDraggingInfo protocol functions.
+
+- (id)draggingPasteboard {
+ return self;
+}
+
+- (id)draggingSource {
+ return self;
+}
+
+- (NSDragOperation)draggingSourceOperationMask {
+ return sourceMask_;
+}
+
+- (NSPoint)draggingLocation {
+ return dropLocation_;
+}
+
+// Other functions.
+
+- (void)setDraggingSourceOperationMask:(NSDragOperation)mask {
+ sourceMask_ = mask;
+}
+
+@end
+
+
+class BookmarkBarFolderControllerMenuTest : public CocoaProfileTest {
+ public:
+ scoped_nsobject<NSView> parent_view_;
+ scoped_nsobject<ViewResizerPong> resizeDelegate_;
+ scoped_nsobject<BookmarkBarController> bar_;
+
+ virtual void SetUp() {
+ CocoaProfileTest::SetUp();
+ ASSERT_TRUE(browser());
+
+ resizeDelegate_.reset([[ViewResizerPong alloc] init]);
+ NSRect parent_frame = NSMakeRect(0, 0, 800, 50);
+ parent_view_.reset([[NSView alloc] initWithFrame:parent_frame]);
+ [parent_view_ setHidden:YES];
+ bar_.reset([[BookmarkBarController alloc]
+ initWithBrowser:browser()
+ initialWidth:NSWidth(parent_frame)
+ delegate:nil
+ resizeDelegate:resizeDelegate_.get()]);
+ InstallAndToggleBar(bar_.get());
+ }
+
+ void InstallAndToggleBar(BookmarkBarController* bar) {
+ // Force loading of the nib.
+ [bar view];
+ // Awkwardness to look like we've been installed.
+ [parent_view_ addSubview:[bar view]];
+ NSRect frame = [[[bar view] superview] frame];
+ frame.origin.y = 400;
+ [[[bar view] superview] setFrame:frame];
+
+ // Make sure it's on in a window so viewDidMoveToWindow is called
+ [[test_window() contentView] addSubview:parent_view_];
+
+ // Make sure it's open so certain things aren't no-ops.
+ [bar updateAndShowNormalBar:YES
+ showDetachedBar:NO
+ withAnimation:NO];
+ }
+};
+
+TEST_F(BookmarkBarFolderControllerMenuTest, DragMoveBarBookmarkToFolder) {
+ WithNoAnimation at_all;
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b "
+ "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b "
+ "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ // Pop up a folder menu and drag in a button from the bar.
+ BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"2f"];
+ NSRect oldToFolderFrame = [toFolder frame];
+ [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:toFolder];
+ BookmarkBarFolderController* folderController = [bar_ folderController];
+ EXPECT_TRUE(folderController);
+ NSWindow* toWindow = [folderController window];
+ EXPECT_TRUE(toWindow);
+ NSRect oldToWindowFrame = [toWindow frame];
+ // Drag a bar button onto a bookmark (i.e. not a folder) in a folder
+ // so it should end up below the target bookmark.
+ BookmarkButton* draggedButton = [bar_ buttonWithTitleEqualTo:@"1b"];
+ ASSERT_TRUE(draggedButton);
+ CGFloat horizontalShift =
+ NSWidth([draggedButton frame]) + bookmarks::kBookmarkHorizontalPadding;
+ BookmarkButton* targetButton =
+ [folderController buttonWithTitleEqualTo:@"2f1b"];
+ ASSERT_TRUE(targetButton);
+ [folderController dragButton:draggedButton
+ to:[targetButton center]
+ copy:NO];
+ // The button should have landed just after "2f1b".
+ const std::string expected_string("2f:[ 2f1b 1b 2f2f:[ 2f2f1b "
+ "2f2f2b 2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ "
+ "4f2f1b 4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ EXPECT_EQ(expected_string, model_test_utils::ModelStringFromNode(root));
+
+ // Verify the window still appears by looking for its controller.
+ EXPECT_TRUE([bar_ folderController]);
+
+ // Gather the new frames.
+ NSRect newToFolderFrame = [toFolder frame];
+ NSRect newToWindowFrame = [toWindow frame];
+ // The toFolder should have shifted left horizontally but not vertically.
+ NSRect expectedToFolderFrame =
+ NSOffsetRect(oldToFolderFrame, -horizontalShift, 0);
+ EXPECT_NSRECT_EQ(expectedToFolderFrame, newToFolderFrame);
+ // The toWindow should have shifted left horizontally, down vertically,
+ // and grown vertically.
+ NSRect expectedToWindowFrame = oldToWindowFrame;
+ expectedToWindowFrame.origin.x -= horizontalShift;
+ expectedToWindowFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight;
+ expectedToWindowFrame.size.height += bookmarks::kBookmarkFolderButtonHeight;
+ EXPECT_NSRECT_EQ(expectedToWindowFrame, newToWindowFrame);
+
+ // Check button spacing.
+ [folderController validateMenuSpacing];
+
+ // Move the button back to the bar at the beginning.
+ draggedButton = [folderController buttonWithTitleEqualTo:@"1b"];
+ ASSERT_TRUE(draggedButton);
+ targetButton = [bar_ buttonWithTitleEqualTo:@"2f"];
+ ASSERT_TRUE(targetButton);
+ [bar_ dragButton:draggedButton
+ to:[targetButton left]
+ copy:NO];
+ EXPECT_EQ(model_string, model_test_utils::ModelStringFromNode(root));
+ // Don't check the folder window since it's not supposed to be showing.
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, DragCopyBarBookmarkToFolder) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b "
+ "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b "
+ "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ // Pop up a folder menu and copy in a button from the bar.
+ BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"2f"];
+ ASSERT_TRUE(toFolder);
+ NSRect oldToFolderFrame = [toFolder frame];
+ [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:toFolder];
+ BookmarkBarFolderController* folderController = [bar_ folderController];
+ EXPECT_TRUE(folderController);
+ NSWindow* toWindow = [folderController window];
+ EXPECT_TRUE(toWindow);
+ NSRect oldToWindowFrame = [toWindow frame];
+ // Drag a bar button onto a bookmark (i.e. not a folder) in a folder
+ // so it should end up below the target bookmark.
+ BookmarkButton* draggedButton = [bar_ buttonWithTitleEqualTo:@"1b"];
+ ASSERT_TRUE(draggedButton);
+ BookmarkButton* targetButton =
+ [folderController buttonWithTitleEqualTo:@"2f1b"];
+ ASSERT_TRUE(targetButton);
+ [folderController dragButton:draggedButton
+ to:[targetButton center]
+ copy:YES];
+ // The button should have landed just after "2f1b".
+ const std::string expected_1("1b 2f:[ 2f1b 1b 2f2f:[ 2f2f1b "
+ "2f2f2b 2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ "
+ "4f2f1b 4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ EXPECT_EQ(expected_1, model_test_utils::ModelStringFromNode(root));
+
+ // Gather the new frames.
+ NSRect newToFolderFrame = [toFolder frame];
+ NSRect newToWindowFrame = [toWindow frame];
+ // The toFolder should have shifted.
+ EXPECT_NSRECT_EQ(oldToFolderFrame, newToFolderFrame);
+ // The toWindow should have shifted down vertically and grown vertically.
+ NSRect expectedToWindowFrame = oldToWindowFrame;
+ expectedToWindowFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight;
+ expectedToWindowFrame.size.height += bookmarks::kBookmarkFolderButtonHeight;
+ EXPECT_NSRECT_EQ(expectedToWindowFrame, newToWindowFrame);
+
+ // Copy the button back to the bar after "3b".
+ draggedButton = [folderController buttonWithTitleEqualTo:@"1b"];
+ ASSERT_TRUE(draggedButton);
+ targetButton = [bar_ buttonWithTitleEqualTo:@"4f"];
+ ASSERT_TRUE(targetButton);
+ [bar_ dragButton:draggedButton
+ to:[targetButton left]
+ copy:YES];
+ const std::string expected_2("1b 2f:[ 2f1b 1b 2f2f:[ 2f2f1b "
+ "2f2f2b 2f2f3b ] 2f3b ] 3b 1b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ "
+ "4f2f1b 4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ EXPECT_EQ(expected_2, model_test_utils::ModelStringFromNode(root));
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, DragMoveBarBookmarkToSubfolder) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b "
+ "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b "
+ "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ // Pop up a folder menu and a subfolder menu.
+ BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"4f"];
+ ASSERT_TRUE(toFolder);
+ [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:toFolder];
+ BookmarkBarFolderController* folderController = [bar_ folderController];
+ EXPECT_TRUE(folderController);
+ NSWindow* toWindow = [folderController window];
+ EXPECT_TRUE(toWindow);
+ NSRect oldToWindowFrame = [toWindow frame];
+ BookmarkButton* toSubfolder =
+ [folderController buttonWithTitleEqualTo:@"4f2f"];
+ ASSERT_TRUE(toSubfolder);
+ [[toSubfolder target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:toSubfolder];
+ BookmarkBarFolderController* subfolderController =
+ [folderController folderController];
+ EXPECT_TRUE(subfolderController);
+ NSWindow* toSubwindow = [subfolderController window];
+ EXPECT_TRUE(toSubwindow);
+ NSRect oldToSubwindowFrame = [toSubwindow frame];
+ // Drag a bar button onto a bookmark (i.e. not a folder) in a folder
+ // so it should end up below the target bookmark.
+ BookmarkButton* draggedButton = [bar_ buttonWithTitleEqualTo:@"5b"];
+ ASSERT_TRUE(draggedButton);
+ BookmarkButton* targetButton =
+ [subfolderController buttonWithTitleEqualTo:@"4f2f3b"];
+ ASSERT_TRUE(targetButton);
+ [subfolderController dragButton:draggedButton
+ to:[targetButton center]
+ copy:NO];
+ // The button should have landed just after "2f".
+ const std::string expected_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b "
+ "2f2f2b 2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ "
+ "4f2f1b 4f2f2b 4f2f3b 5b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] ");
+ EXPECT_EQ(expected_string, model_test_utils::ModelStringFromNode(root));
+
+ // Check button spacing.
+ [folderController validateMenuSpacing];
+ [subfolderController validateMenuSpacing];
+
+ // Check the window layouts. The folder window should not have changed,
+ // but the subfolder window should have shifted vertically and grown.
+ NSRect newToWindowFrame = [toWindow frame];
+ EXPECT_NSRECT_EQ(oldToWindowFrame, newToWindowFrame);
+ NSRect newToSubwindowFrame = [toSubwindow frame];
+ NSRect expectedToSubwindowFrame = oldToSubwindowFrame;
+ expectedToSubwindowFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight;
+ expectedToSubwindowFrame.size.height +=
+ bookmarks::kBookmarkFolderButtonHeight;
+ EXPECT_NSRECT_EQ(expectedToSubwindowFrame, newToSubwindowFrame);
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, DragMoveWithinFolder) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b "
+ "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b "
+ "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ // Pop up a folder menu.
+ BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"4f"];
+ ASSERT_TRUE(toFolder);
+ [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:toFolder];
+ BookmarkBarFolderController* folderController = [bar_ folderController];
+ EXPECT_TRUE(folderController);
+ NSWindow* toWindow = [folderController window];
+ EXPECT_TRUE(toWindow);
+ NSRect oldToWindowFrame = [toWindow frame];
+ // Drag a folder button to the top within the same parent.
+ BookmarkButton* draggedButton =
+ [folderController buttonWithTitleEqualTo:@"4f2f"];
+ ASSERT_TRUE(draggedButton);
+ BookmarkButton* targetButton =
+ [folderController buttonWithTitleEqualTo:@"4f1f"];
+ ASSERT_TRUE(targetButton);
+ [folderController dragButton:draggedButton
+ to:[targetButton top]
+ copy:NO];
+ // The button should have landed above "4f1f".
+ const std::string expected_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b "
+ "2f2f2b 2f2f3b ] 2f3b ] 3b 4f:[ 4f2f:[ 4f2f1b 4f2f2b 4f2f3b ] "
+ "4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ EXPECT_EQ(expected_string, model_test_utils::ModelStringFromNode(root));
+
+ // The window should not have gone away.
+ EXPECT_TRUE([bar_ folderController]);
+
+ // The folder window should not have changed.
+ NSRect newToWindowFrame = [toWindow frame];
+ EXPECT_NSRECT_EQ(oldToWindowFrame, newToWindowFrame);
+
+ // Check button spacing.
+ [folderController validateMenuSpacing];
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, DragParentOntoChild) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b "
+ "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b "
+ "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ // Pop up a folder menu.
+ BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"4f"];
+ ASSERT_TRUE(toFolder);
+ [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:toFolder];
+ BookmarkBarFolderController* folderController = [bar_ folderController];
+ EXPECT_TRUE(folderController);
+ NSWindow* toWindow = [folderController window];
+ EXPECT_TRUE(toWindow);
+ // Drag a folder button to one of its children.
+ BookmarkButton* draggedButton = [bar_ buttonWithTitleEqualTo:@"4f"];
+ ASSERT_TRUE(draggedButton);
+ BookmarkButton* targetButton =
+ [folderController buttonWithTitleEqualTo:@"4f3f"];
+ ASSERT_TRUE(targetButton);
+ [folderController dragButton:draggedButton
+ to:[targetButton top]
+ copy:NO];
+ // The model should not have changed.
+ EXPECT_EQ(model_string, model_test_utils::ModelStringFromNode(root));
+
+ // Check button spacing.
+ [folderController validateMenuSpacing];
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, DragMoveChildToParent) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b "
+ "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b "
+ "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ // Pop up a folder menu and a subfolder menu.
+ BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"4f"];
+ ASSERT_TRUE(toFolder);
+ [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:toFolder];
+ BookmarkBarFolderController* folderController = [bar_ folderController];
+ EXPECT_TRUE(folderController);
+ BookmarkButton* toSubfolder =
+ [folderController buttonWithTitleEqualTo:@"4f2f"];
+ ASSERT_TRUE(toSubfolder);
+ [[toSubfolder target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:toSubfolder];
+ BookmarkBarFolderController* subfolderController =
+ [folderController folderController];
+ EXPECT_TRUE(subfolderController);
+
+ // Drag a subfolder bookmark to the parent folder.
+ BookmarkButton* draggedButton =
+ [subfolderController buttonWithTitleEqualTo:@"4f2f3b"];
+ ASSERT_TRUE(draggedButton);
+ BookmarkButton* targetButton =
+ [folderController buttonWithTitleEqualTo:@"4f2f"];
+ ASSERT_TRUE(targetButton);
+ [folderController dragButton:draggedButton
+ to:[targetButton top]
+ copy:NO];
+ // The button should have landed above "4f2f".
+ const std::string expected_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b "
+ "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f3b 4f2f:[ "
+ "4f2f1b 4f2f2b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b ");
+ EXPECT_EQ(expected_string, model_test_utils::ModelStringFromNode(root));
+
+ // Check button spacing.
+ [folderController validateMenuSpacing];
+ // The window should not have gone away.
+ EXPECT_TRUE([bar_ folderController]);
+ // The subfolder should have gone away.
+ EXPECT_FALSE([folderController folderController]);
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, DragWindowResizing) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string
+ model_string("a b:[ b1 b2 b3 ] reallyReallyLongBookmarkName c ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ // Pop up a folder menu.
+ BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"b"];
+ ASSERT_TRUE(toFolder);
+ [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:toFolder];
+ BookmarkBarFolderController* folderController = [bar_ folderController];
+ EXPECT_TRUE(folderController);
+ NSWindow* toWindow = [folderController window];
+ EXPECT_TRUE(toWindow);
+ CGFloat oldWidth = NSWidth([toWindow frame]);
+ // Drag the bookmark with a long name to the folder.
+ BookmarkButton* draggedButton =
+ [bar_ buttonWithTitleEqualTo:@"reallyReallyLongBookmarkName"];
+ ASSERT_TRUE(draggedButton);
+ BookmarkButton* targetButton =
+ [folderController buttonWithTitleEqualTo:@"b1"];
+ ASSERT_TRUE(targetButton);
+ [folderController dragButton:draggedButton
+ to:[targetButton center]
+ copy:NO];
+ // Verify the model change.
+ const std::string
+ expected_string("a b:[ b1 reallyReallyLongBookmarkName b2 b3 ] c ");
+ EXPECT_EQ(expected_string, model_test_utils::ModelStringFromNode(root));
+ // Verify the window grew. Just test a reasonable width gain.
+ CGFloat newWidth = NSWidth([toWindow frame]);
+ EXPECT_LT(oldWidth + 30.0, newWidth);
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, MoveRemoveAddButtons) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2b 2f3b ] 3b 4b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ // Pop up a folder menu.
+ BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"2f"];
+ ASSERT_TRUE(toFolder);
+ [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:toFolder];
+ BookmarkBarFolderController* folder = [bar_ folderController];
+ EXPECT_TRUE(folder);
+
+ // Remember how many buttons are showing.
+ NSArray* buttons = [folder buttons];
+ NSUInteger oldDisplayedButtons = [buttons count];
+
+ // Move a button around a bit.
+ [folder moveButtonFromIndex:0 toIndex:2];
+ EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:0] title]);
+ EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:1] title]);
+ EXPECT_NSEQ(@"2f1b", [[buttons objectAtIndex:2] title]);
+ EXPECT_EQ(oldDisplayedButtons, [buttons count]);
+ [folder moveButtonFromIndex:2 toIndex:0];
+ EXPECT_NSEQ(@"2f1b", [[buttons objectAtIndex:0] title]);
+ EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:1] title]);
+ EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:2] title]);
+ EXPECT_EQ(oldDisplayedButtons, [buttons count]);
+
+ // Add a couple of buttons.
+ const BookmarkNode* node = root->GetChild(2); // Purloin an existing node.
+ [folder addButtonForNode:node atIndex:0];
+ EXPECT_NSEQ(@"3b", [[buttons objectAtIndex:0] title]);
+ EXPECT_NSEQ(@"2f1b", [[buttons objectAtIndex:1] title]);
+ EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:2] title]);
+ EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:3] title]);
+ EXPECT_EQ(oldDisplayedButtons + 1, [buttons count]);
+ node = root->GetChild(3);
+ [folder addButtonForNode:node atIndex:-1];
+ EXPECT_NSEQ(@"3b", [[buttons objectAtIndex:0] title]);
+ EXPECT_NSEQ(@"2f1b", [[buttons objectAtIndex:1] title]);
+ EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:2] title]);
+ EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:3] title]);
+ EXPECT_NSEQ(@"4b", [[buttons objectAtIndex:4] title]);
+ EXPECT_EQ(oldDisplayedButtons + 2, [buttons count]);
+
+ // Remove a couple of buttons.
+ [folder removeButton:4 animate:NO];
+ [folder removeButton:1 animate:NO];
+ EXPECT_NSEQ(@"3b", [[buttons objectAtIndex:0] title]);
+ EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:1] title]);
+ EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:2] title]);
+ EXPECT_EQ(oldDisplayedButtons, [buttons count]);
+
+ // Check button spacing.
+ [folder validateMenuSpacing];
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, ControllerForNode) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2b ] 3b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ // Find the main bar controller.
+ const void* expectedController = bar_;
+ const void* actualController = [bar_ controllerForNode:root];
+ EXPECT_EQ(expectedController, actualController);
+
+ // Pop up the folder menu.
+ BookmarkButton* targetFolder = [bar_ buttonWithTitleEqualTo:@"2f"];
+ ASSERT_TRUE(targetFolder);
+ [[targetFolder target]
+ performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:targetFolder];
+ BookmarkBarFolderController* folder = [bar_ folderController];
+ EXPECT_TRUE(folder);
+
+ // Find the folder controller using the folder controller.
+ const BookmarkNode* targetNode = root->GetChild(1);
+ expectedController = folder;
+ actualController = [bar_ controllerForNode:targetNode];
+ EXPECT_EQ(expectedController, actualController);
+
+ // Find the folder controller from the bar.
+ actualController = [folder controllerForNode:targetNode];
+ EXPECT_EQ(expectedController, actualController);
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, MenuSizingAndScrollArrows) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2b 3b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ const BookmarkNode* parent = model.bookmark_bar_node();
+ const BookmarkNode* folder = model.AddFolder(parent,
+ parent->child_count(),
+ ASCIIToUTF16("BIG"));
+
+ // Pop open the new folder window and verify it has one (empty) item.
+ BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"BIG"];
+ [[button target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:button];
+ BookmarkBarFolderController* folderController = [bar_ folderController];
+ EXPECT_TRUE(folderController);
+ NSWindow* folderWindow = [folderController window];
+ EXPECT_TRUE(folderWindow);
+ CGFloat expectedHeight = (CGFloat)bookmarks::kBookmarkFolderButtonHeight +
+ (2*bookmarks::kBookmarkVerticalPadding);
+ NSRect windowFrame = [folderWindow frame];
+ CGFloat windowHeight = NSHeight(windowFrame);
+ EXPECT_CGFLOAT_EQ(expectedHeight, windowHeight);
+ EXPECT_FALSE([folderController canScrollUp]);
+ EXPECT_FALSE([folderController canScrollDown]);
+
+ // Now add a real bookmark and reopen.
+ model.AddURL(folder, folder->child_count(), ASCIIToUTF16("a"),
+ GURL("http://a.com/"));
+ folderController = [bar_ folderController];
+ EXPECT_TRUE(folderController);
+ NSView* folderView = [folderController folderView];
+ EXPECT_TRUE(folderView);
+ NSRect menuFrame = [folderView frame];
+ NSView* visibleView = [folderController visibleView];
+ NSRect visibleFrame = [visibleView frame];
+ NSScrollView* scrollView = [folderController scrollView];
+ NSRect scrollFrame = [scrollView frame];
+
+ // Determine the margins between the scroll frame and the visible frame.
+ CGFloat widthDelta = NSWidth(visibleFrame) - NSWidth(scrollFrame);
+
+ CGFloat menuHeight = NSHeight(menuFrame);
+ EXPECT_CGFLOAT_EQ(expectedHeight, menuHeight);
+ CGFloat scrollerWidth = NSWidth(scrollFrame);
+ button = [folderController buttonWithTitleEqualTo:@"a"];
+ CGFloat buttonWidth = NSWidth([button frame]);
+ EXPECT_CGFLOAT_EQ(scrollerWidth, buttonWidth);
+ CGFloat visibleWidth = NSWidth(visibleFrame);
+ EXPECT_CGFLOAT_EQ(visibleWidth - widthDelta, buttonWidth);
+ EXPECT_LT(scrollerWidth, NSWidth([folderView frame]));
+
+ // Add a wider bookmark and make sure the button widths match.
+ int reallyWideButtonNumber = folder->child_count();
+ model.AddURL(folder, reallyWideButtonNumber,
+ ASCIIToUTF16("A really, really, really, really, really, "
+ "really long name"),
+ GURL("http://www.google.com/a"));
+ BookmarkButton* bigButton =
+ [folderController buttonWithTitleEqualTo:
+ @"A really, really, really, really, really, really long name"];
+ EXPECT_TRUE(bigButton);
+ CGFloat buttonWidthB = NSWidth([bigButton frame]);
+ EXPECT_LT(buttonWidth, buttonWidthB);
+ // Add a bunch of bookmarks until the window becomes scrollable, then check
+ // for a scroll up arrow.
+ NSUInteger tripWire = 0; // Prevent a runaway.
+ while (![folderController canScrollUp] && ++tripWire < 1000) {
+ model.AddURL(folder, folder->child_count(), ASCIIToUTF16("B"),
+ GURL("http://b.com/"));
+ }
+ EXPECT_TRUE([folderController canScrollUp]);
+
+ // Remove one bookmark and make sure the scroll down arrow has been removed.
+ // We'll remove the really long node so we can see if the buttons get resized.
+ scrollerWidth = NSWidth([folderView frame]);
+ buttonWidth = NSWidth([button frame]);
+ model.Remove(folder, reallyWideButtonNumber);
+ EXPECT_FALSE([folderController canScrollUp]);
+ EXPECT_FALSE([folderController canScrollDown]);
+
+ // Check the size. It should have reduced.
+ EXPECT_GT(scrollerWidth, NSWidth([folderView frame]));
+ EXPECT_GT(buttonWidth, NSWidth([button frame]));
+
+ // Check button spacing.
+ [folderController validateMenuSpacing];
+}
+
+// See http://crbug.com/46101
+TEST_F(BookmarkBarFolderControllerMenuTest, HoverThenDeleteBookmark) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const BookmarkNode* folder = model.AddFolder(root,
+ root->child_count(),
+ ASCIIToUTF16("BIG"));
+ for (int i = 0; i < kLotsOfNodesCount; i++)
+ model.AddURL(folder, folder->child_count(), ASCIIToUTF16("kid"),
+ GURL("http://kid.com/smile"));
+
+ // Pop open the new folder window and hover one of its kids.
+ BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"BIG"];
+ [[button target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:button];
+ BookmarkBarFolderController* bbfc = [bar_ folderController];
+ NSArray* buttons = [bbfc buttons];
+
+ // Hover over a button and verify that it is now known.
+ button = [buttons objectAtIndex:3];
+ BookmarkButton* buttonThatMouseIsIn = [bbfc buttonThatMouseIsIn];
+ EXPECT_FALSE(buttonThatMouseIsIn);
+ [bbfc mouseEnteredButton:button event:nil];
+ buttonThatMouseIsIn = [bbfc buttonThatMouseIsIn];
+ EXPECT_EQ(button, buttonThatMouseIsIn);
+
+ // Delete the bookmark and verify that it is now not known.
+ model.Remove(folder, 3);
+ buttonThatMouseIsIn = [bbfc buttonThatMouseIsIn];
+ EXPECT_FALSE(buttonThatMouseIsIn);
+}
+
+// Just like a BookmarkBarFolderController but intercedes when providing
+// pasteboard drag data.
+@interface BookmarkBarFolderControllerDragData : BookmarkBarFolderController {
+ const BookmarkNode* dragDataNode_; // Weak
+}
+- (void)setDragDataNode:(const BookmarkNode*)node;
+@end
+
+@implementation BookmarkBarFolderControllerDragData
+
+- (id)initWithParentButton:(BookmarkButton*)button
+ parentController:(BookmarkBarFolderController*)parentController
+ barController:(BookmarkBarController*)barController {
+ if ((self = [super initWithParentButton:button
+ parentController:parentController
+ barController:barController])) {
+ dragDataNode_ = NULL;
+ }
+ return self;
+}
+
+- (void)setDragDataNode:(const BookmarkNode*)node {
+ dragDataNode_ = node;
+}
+
+- (std::vector<const BookmarkNode*>)retrieveBookmarkNodeData {
+ std::vector<const BookmarkNode*> dragDataNodes;
+ if(dragDataNode_) {
+ dragDataNodes.push_back(dragDataNode_);
+ }
+ return dragDataNodes;
+}
+
+@end
+
+TEST_F(BookmarkBarFolderControllerMenuTest, DragBookmarkData) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b 2f2f3b ] "
+ "2f3b ] 3b 4b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+ const BookmarkNode* other = model.other_node();
+ const std::string other_string("O1b O2b O3f:[ O3f1b O3f2f ] "
+ "O4f:[ O4f1b O4f2f ] 05b ");
+ model_test_utils::AddNodesFromModelString(model, other, other_string);
+
+ // Validate initial model.
+ std::string actual = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actual);
+ actual = model_test_utils::ModelStringFromNode(other);
+ EXPECT_EQ(other_string, actual);
+
+ // Pop open a folder.
+ BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"2f"];
+ scoped_nsobject<BookmarkBarFolderControllerDragData> folderController;
+ folderController.reset([[BookmarkBarFolderControllerDragData alloc]
+ initWithParentButton:button
+ parentController:nil
+ barController:bar_]);
+ BookmarkButton* targetButton =
+ [folderController buttonWithTitleEqualTo:@"2f1b"];
+ ASSERT_TRUE(targetButton);
+
+ // Gen up some dragging data.
+ const BookmarkNode* newNode = other->GetChild(2);
+ [folderController setDragDataNode:newNode];
+ scoped_nsobject<FakedDragInfo> dragInfo([[FakedDragInfo alloc] init]);
+ [dragInfo setDropLocation:[targetButton top]];
+ [folderController dragBookmarkData:(id<NSDraggingInfo>)dragInfo.get()];
+
+ // Verify the model.
+ const std::string expected("1b 2f:[ O3f:[ O3f1b O3f2f ] 2f1b 2f2f:[ 2f2f1b "
+ "2f2f2b 2f2f3b ] 2f3b ] 3b 4b ");
+ actual = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(expected, actual);
+
+ // Now drag over a folder button.
+ targetButton = [folderController buttonWithTitleEqualTo:@"2f2f"];
+ ASSERT_TRUE(targetButton);
+ newNode = other->GetChild(2); // Should be O4f.
+ EXPECT_EQ(newNode->GetTitle(), ASCIIToUTF16("O4f"));
+ [folderController setDragDataNode:newNode];
+ [dragInfo setDropLocation:[targetButton center]];
+ [folderController dragBookmarkData:(id<NSDraggingInfo>)dragInfo.get()];
+
+ // Verify the model.
+ const std::string expectedA("1b 2f:[ O3f:[ O3f1b O3f2f ] 2f1b 2f2f:[ "
+ "2f2f1b 2f2f2b 2f2f3b O4f:[ O4f1b O4f2f ] ] "
+ "2f3b ] 3b 4b ");
+ actual = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(expectedA, actual);
+
+ // Check button spacing.
+ [folderController validateMenuSpacing];
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, DragBookmarkDataToTrash) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b 2f2f3b ] "
+ "2f3b ] 3b 4b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actual = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actual);
+
+ const BookmarkNode* folderNode = root->GetChild(1);
+ int oldFolderChildCount = folderNode->child_count();
+
+ // Pop open a folder.
+ BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"2f"];
+ scoped_nsobject<BookmarkBarFolderControllerDragData> folderController;
+ folderController.reset([[BookmarkBarFolderControllerDragData alloc]
+ initWithParentButton:button
+ parentController:nil
+ barController:bar_]);
+
+ // Drag a button to the trash.
+ BookmarkButton* buttonToDelete =
+ [folderController buttonWithTitleEqualTo:@"2f1b"];
+ ASSERT_TRUE(buttonToDelete);
+ EXPECT_TRUE([folderController canDragBookmarkButtonToTrash:buttonToDelete]);
+ [folderController didDragBookmarkToTrash:buttonToDelete];
+
+ // There should be one less button in the folder.
+ int newFolderChildCount = folderNode->child_count();
+ EXPECT_EQ(oldFolderChildCount - 1, newFolderChildCount);
+ // Verify the model.
+ const std::string expected("1b 2f:[ 2f2f:[ 2f2f1b 2f2f2b 2f2f3b ] "
+ "2f3b ] 3b 4b ");
+ actual = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(expected, actual);
+
+ // Check button spacing.
+ [folderController validateMenuSpacing];
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, AddURLs) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b 2f2f3b ] "
+ "2f3b ] 3b 4b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actual = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actual);
+
+ // Pop open a folder.
+ BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"2f"];
+ [[button target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:button];
+ BookmarkBarFolderController* folderController = [bar_ folderController];
+ EXPECT_TRUE(folderController);
+ NSArray* buttons = [folderController buttons];
+ EXPECT_TRUE(buttons);
+
+ // Remember how many buttons are showing.
+ int oldDisplayedButtons = [buttons count];
+
+ BookmarkButton* targetButton =
+ [folderController buttonWithTitleEqualTo:@"2f1b"];
+ ASSERT_TRUE(targetButton);
+
+ NSArray* urls = [NSArray arrayWithObjects: @"http://www.a.com/",
+ @"http://www.b.com/", nil];
+ NSArray* titles = [NSArray arrayWithObjects: @"SiteA", @"SiteB", nil];
+ [folderController addURLs:urls withTitles:titles at:[targetButton top]];
+
+ // There should two more buttons in the folder.
+ int newDisplayedButtons = [buttons count];
+ EXPECT_EQ(oldDisplayedButtons + 2, newDisplayedButtons);
+ // Verify the model.
+ const std::string expected("1b 2f:[ SiteA SiteB 2f1b 2f2f:[ 2f2f1b 2f2f2b "
+ "2f2f3b ] 2f3b ] 3b 4b ");
+ actual = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(expected, actual);
+
+ // Check button spacing.
+ [folderController validateMenuSpacing];
+}
+
+TEST_F(BookmarkBarFolderControllerMenuTest, DropPositionIndicator) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b 2f2f3b ] "
+ "2f3b ] 3b 4b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actual = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actual);
+
+ // Pop open the folder.
+ BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"2f"];
+ [[button target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:button];
+ BookmarkBarFolderController* folder = [bar_ folderController];
+ EXPECT_TRUE(folder);
+
+ // Test a series of points starting at the top of the folder.
+ const CGFloat yOffset = 0.5 * bookmarks::kBookmarkVerticalPadding;
+ BookmarkButton* targetButton = [folder buttonWithTitleEqualTo:@"2f1b"];
+ ASSERT_TRUE(targetButton);
+ NSPoint targetPoint = [targetButton top];
+ CGFloat pos = [folder indicatorPosForDragToPoint:targetPoint];
+ EXPECT_CGFLOAT_EQ(targetPoint.y + yOffset, pos);
+ pos = [folder indicatorPosForDragToPoint:[targetButton bottom]];
+ targetButton = [folder buttonWithTitleEqualTo:@"2f2f"];
+ EXPECT_CGFLOAT_EQ([targetButton top].y + yOffset, pos);
+ pos = [folder indicatorPosForDragToPoint:NSMakePoint(10,0)];
+ targetButton = [folder buttonWithTitleEqualTo:@"2f3b"];
+ EXPECT_CGFLOAT_EQ([targetButton bottom].y - yOffset, pos);
+}
+
+@interface BookmarkBarControllerNoDelete : BookmarkBarController
+- (IBAction)deleteBookmark:(id)sender;
+@end
+
+@implementation BookmarkBarControllerNoDelete
+- (IBAction)deleteBookmark:(id)sender {
+ // NOP
+}
+@end
+
+class BookmarkBarFolderControllerClosingTest : public
+ BookmarkBarFolderControllerMenuTest {
+ public:
+ virtual void SetUp() {
+ BookmarkBarFolderControllerMenuTest::SetUp();
+ ASSERT_TRUE(browser());
+
+ bar_.reset([[BookmarkBarControllerNoDelete alloc]
+ initWithBrowser:browser()
+ initialWidth:NSWidth([parent_view_ frame])
+ delegate:nil
+ resizeDelegate:resizeDelegate_.get()]);
+ InstallAndToggleBar(bar_.get());
+ }
+};
+
+TEST_F(BookmarkBarFolderControllerClosingTest, DeleteClosesFolder) {
+ BookmarkModel& model(*profile()->GetBookmarkModel());
+ const BookmarkNode* root = model.bookmark_bar_node();
+ const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b ] "
+ "2f3b ] 3b ");
+ model_test_utils::AddNodesFromModelString(model, root, model_string);
+
+ // Validate initial model.
+ std::string actualModelString = model_test_utils::ModelStringFromNode(root);
+ EXPECT_EQ(model_string, actualModelString);
+
+ // Open the folder menu and submenu.
+ BookmarkButton* target = [bar_ buttonWithTitleEqualTo:@"2f"];
+ ASSERT_TRUE(target);
+ [[target target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:target];
+ BookmarkBarFolderController* folder = [bar_ folderController];
+ EXPECT_TRUE(folder);
+ BookmarkButton* subTarget = [folder buttonWithTitleEqualTo:@"2f2f"];
+ ASSERT_TRUE(subTarget);
+ [[subTarget target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:subTarget];
+ BookmarkBarFolderController* subFolder = [folder folderController];
+ EXPECT_TRUE(subFolder);
+
+ // Delete the folder node and verify the window closed down by looking
+ // for its controller again.
+ [folder deleteBookmark:folder];
+ EXPECT_FALSE([folder folderController]);
+}
+
+// TODO(jrg): draggingEntered: and draggingExited: trigger timers so
+// they are hard to test. Factor out "fire timers" into routines
+// which can be overridden to fire immediately to make behavior
+// confirmable.
+// There is a similar problem with mouseEnteredButton: and
+// mouseExitedButton:.
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h
new file mode 100644
index 0000000..20ea39e
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h
@@ -0,0 +1,78 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import <Cocoa/Cocoa.h>
+
+#include "base/memory/scoped_nsobject.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
+
+// Hover state machine. Encapsulates the hover state for
+// BookmarkBarFolderController.
+// A strict call order is implied with these calls. It is ONLY valid to make
+// the following state transitions:
+// From: To: Via:
+// closed opening scheduleOpen...:
+// opening closed cancelPendingOpen...: or
+// open scheduleOpen...: completes.
+// open closing scheduleClose...:
+// closing open cancelPendingClose...: or
+// closed scheduleClose...: completes.
+//
+@interface BookmarkBarFolderHoverState : NSObject {
+ @private
+ // Enumeration of the valid states that the |hoverButton_| member can be in.
+ // Because the opening and closing of hover views can be done asyncronously
+ // there are periods where the hover state is in transtion between open and
+ // closed. During those times of transition the opening or closing operation
+ // can be cancelled. We serialize the opening and closing of the
+ // |hoverButton_| using this state information. This serialization is to
+ // avoid race conditions where one hover button is being opened while another
+ // is closing.
+ enum HoverState {
+ kHoverStateClosed = 0,
+ kHoverStateOpening = 1,
+ kHoverStateOpen = 2,
+ kHoverStateClosing = 3
+ };
+
+ // Like normal menus, hovering over a folder button causes it to
+ // open. This variable is set when a hover is initiated (but has
+ // not necessarily fired yet).
+ scoped_nsobject<BookmarkButton> hoverButton_;
+
+ // We model hover state as a state machine with specific allowable
+ // transitions. |hoverState_| is the state of this machine at any
+ // given time.
+ HoverState hoverState_;
+}
+
+// Designated initializer.
+- (id)init;
+
+// The BookmarkBarFolderHoverState decides when it is appropriate to hide
+// and show the button that the BookmarkBarFolderController drags over.
+- (NSDragOperation)draggingEnteredButton:(BookmarkButton*)button;
+
+// The BookmarkBarFolderHoverState decides the fate of the hover button
+// when the BookmarkBarFolderController's view is exited.
+- (void)draggingExited;
+
+@end
+
+// Exposing these for unit testing purposes. They are used privately in the
+// implementation as well.
+@interface BookmarkBarFolderHoverState(PrivateAPI)
+// State change APIs.
+- (void)scheduleCloseBookmarkFolderOnHoverButton;
+- (void)cancelPendingCloseBookmarkFolderOnHoverButton;
+- (void)scheduleOpenBookmarkFolderOnHoverButton:(BookmarkButton*)hoverButton;
+- (void)cancelPendingOpenBookmarkFolderOnHoverButton;
+@end
+
+// Exposing these for unit testing purposes. They are used only in tests.
+@interface BookmarkBarFolderHoverState(TestingAPI)
+// Accessors and setters for button and hover state.
+- (BookmarkButton*)hoverButton;
+- (HoverState)hoverState;
+@end
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.mm
new file mode 100644
index 0000000..5470084
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.mm
@@ -0,0 +1,173 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h"
+
+@interface BookmarkBarFolderHoverState(Private)
+- (void)setHoverState:(HoverState)state;
+- (void)closeBookmarkFolderOnHoverButton:(BookmarkButton*)button;
+- (void)openBookmarkFolderOnHoverButton:(BookmarkButton*)button;
+@end
+
+@implementation BookmarkBarFolderHoverState
+
+- (id)init {
+ if ((self = [super init])) {
+ hoverState_ = kHoverStateClosed;
+ }
+ return self;
+}
+
+- (NSDragOperation)draggingEnteredButton:(BookmarkButton*)button {
+ if ([button isFolder]) {
+ if (hoverButton_ == button) {
+ // CASE A: hoverButton_ == button implies we've dragged over
+ // the same folder so no need to open or close anything new.
+ } else if (hoverButton_ &&
+ hoverButton_ != button) {
+ // CASE B: we have a hoverButton_ but it is different from the new button.
+ // This implies we've dragged over a new folder, so we'll close the old
+ // and open the new.
+ // Note that we only schedule the open or close if we have no other tasks
+ // currently pending.
+
+ if (hoverState_ == kHoverStateOpen) {
+ // Close the old.
+ [self scheduleCloseBookmarkFolderOnHoverButton];
+ } else if (hoverState_ == kHoverStateClosed) {
+ // Open the new.
+ [self scheduleOpenBookmarkFolderOnHoverButton:button];
+ }
+ } else if (!hoverButton_) {
+ // CASE C: we don't have a current hoverButton_ but we have dragged onto
+ // a new folder so we open the new one.
+ [self scheduleOpenBookmarkFolderOnHoverButton:button];
+ }
+ } else if (!button) {
+ if (hoverButton_) {
+ // CASE D: We have a hoverButton_ but we've moved onto an area that
+ // requires no hover. We close the hoverButton_ in this case. This
+ // means cancelling if the open is pending (i.e. |kHoverStateOpening|)
+ // or closing if we don't alrealy have once in progress.
+
+ // Intiate close only if we have not already done so.
+ if (hoverState_ == kHoverStateOpening) {
+ // Cancel the pending open.
+ [self cancelPendingOpenBookmarkFolderOnHoverButton];
+ } else if (hoverState_ != kHoverStateClosing) {
+ // Schedule the close.
+ [self scheduleCloseBookmarkFolderOnHoverButton];
+ }
+ } else {
+ // CASE E: We have neither a hoverButton_ nor a new button that requires
+ // a hover. In this case we do nothing.
+ }
+ }
+
+ return NSDragOperationMove;
+}
+
+- (void)draggingExited {
+ if (hoverButton_) {
+ if (hoverState_ == kHoverStateOpening) {
+ [self cancelPendingOpenBookmarkFolderOnHoverButton];
+ } else if (hoverState_ == kHoverStateClosing) {
+ [self cancelPendingCloseBookmarkFolderOnHoverButton];
+ }
+ }
+}
+
+// Schedule close of hover button. Transition to kHoverStateClosing state.
+- (void)scheduleCloseBookmarkFolderOnHoverButton {
+ DCHECK(hoverButton_);
+ [self setHoverState:kHoverStateClosing];
+ [self performSelector:@selector(closeBookmarkFolderOnHoverButton:)
+ withObject:hoverButton_
+ afterDelay:bookmarks::kDragHoverCloseDelay
+ inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
+}
+
+// Cancel pending hover close. Transition to kHoverStateOpen state.
+- (void)cancelPendingCloseBookmarkFolderOnHoverButton {
+ [self setHoverState:kHoverStateOpen];
+ [NSObject
+ cancelPreviousPerformRequestsWithTarget:self
+ selector:@selector(closeBookmarkFolderOnHoverButton:)
+ object:hoverButton_];
+}
+
+// Schedule open of hover button. Transition to kHoverStateOpening state.
+- (void)scheduleOpenBookmarkFolderOnHoverButton:(BookmarkButton*)button {
+ DCHECK(button);
+ hoverButton_.reset([button retain]);
+ [self setHoverState:kHoverStateOpening];
+ [self performSelector:@selector(openBookmarkFolderOnHoverButton:)
+ withObject:hoverButton_
+ afterDelay:bookmarks::kDragHoverOpenDelay
+ inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
+}
+
+// Cancel pending hover open. Transition to kHoverStateClosed state.
+- (void)cancelPendingOpenBookmarkFolderOnHoverButton {
+ [self setHoverState:kHoverStateClosed];
+ [NSObject
+ cancelPreviousPerformRequestsWithTarget:self
+ selector:@selector(openBookmarkFolderOnHoverButton:)
+ object:hoverButton_];
+ hoverButton_.reset();
+}
+
+// Hover button accessor. For testing only.
+- (BookmarkButton*)hoverButton {
+ return hoverButton_;
+}
+
+// Hover state accessor. For testing only.
+- (HoverState)hoverState {
+ return hoverState_;
+}
+
+// This method encodes the rules of our |hoverButton_| state machine. Only
+// specific state transitions are allowable (encoded in the DCHECK).
+// Note that there is no state for simultaneously opening and closing. A
+// pending open must complete before scheduling a close, and vice versa. And
+// it is not possible to make a transition directly from open to closed, and
+// vice versa.
+- (void)setHoverState:(HoverState)state {
+ DCHECK(
+ (hoverState_ == kHoverStateClosed && state == kHoverStateOpening) ||
+ (hoverState_ == kHoverStateOpening && state == kHoverStateClosed) ||
+ (hoverState_ == kHoverStateOpening && state == kHoverStateOpen) ||
+ (hoverState_ == kHoverStateOpen && state == kHoverStateClosing) ||
+ (hoverState_ == kHoverStateClosing && state == kHoverStateOpen) ||
+ (hoverState_ == kHoverStateClosing && state == kHoverStateClosed)
+ ) << "bad transition: old = " << hoverState_ << " new = " << state;
+
+ hoverState_ = state;
+}
+
+// Called after a delay to close a previously hover-opened folder.
+// Note: this method is not meant to be invoked directly, only through
+// a delayed call to |scheduleCloseBookmarkFolderOnHoverButton:|.
+- (void)closeBookmarkFolderOnHoverButton:(BookmarkButton*)button {
+ [NSObject
+ cancelPreviousPerformRequestsWithTarget:self
+ selector:@selector(closeBookmarkFolderOnHoverButton:)
+ object:hoverButton_];
+ [self setHoverState:kHoverStateClosed];
+ [[button target] closeBookmarkFolder:button];
+ hoverButton_.reset();
+}
+
+// Called after a delay to open a new hover folder.
+// Note: this method is not meant to be invoked directly, only through
+// a delayed call to |scheduleOpenBookmarkFolderOnHoverButton:|.
+- (void)openBookmarkFolderOnHoverButton:(BookmarkButton*)button {
+ [self setHoverState:kHoverStateOpen];
+ [[button target] performSelector:@selector(openBookmarkFolderFromButton:)
+ withObject:button];
+}
+
+@end
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm
new file mode 100644
index 0000000..2cab85f
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm
@@ -0,0 +1,77 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import <Cocoa/Cocoa.h>
+
+#include "base/message_loop.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h"
+#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
+
+namespace {
+
+class BookmarkBarFolderHoverStateTest : public CocoaTest {
+};
+
+// Hover state machine interface.
+// A strict call order is implied with these calls. It is ONLY valid to make
+// these specific state transitions.
+TEST_F(BookmarkBarFolderHoverStateTest, HoverState) {
+ MessageLoopForUI message_loop;
+ scoped_nsobject<BookmarkBarFolderHoverState> bbfhs;
+ bbfhs.reset([[BookmarkBarFolderHoverState alloc] init]);
+
+ // Initial state.
+ EXPECT_FALSE([bbfhs hoverButton]);
+ ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]);
+
+ scoped_nsobject<BookmarkButton> button;
+ button.reset([[BookmarkButton alloc] initWithFrame:NSMakeRect(0, 0, 20, 20)]);
+
+ // Test transition from closed to opening.
+ ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]);
+ [bbfhs scheduleOpenBookmarkFolderOnHoverButton:button];
+ ASSERT_EQ(kHoverStateOpening, [bbfhs hoverState]);
+
+ // Test transition from opening to closed (aka cancel open).
+ [bbfhs cancelPendingOpenBookmarkFolderOnHoverButton];
+ ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]);
+ ASSERT_EQ(nil, [bbfhs hoverButton]);
+
+ // Test transition from closed to opening.
+ ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]);
+ [bbfhs scheduleOpenBookmarkFolderOnHoverButton:button];
+ ASSERT_EQ(kHoverStateOpening, [bbfhs hoverState]);
+
+ // Test transition from opening to opened.
+ message_loop.PostDelayedTask(
+ FROM_HERE,
+ new MessageLoop::QuitTask,
+ bookmarks::kDragHoverOpenDelay * 1000.0 * 1.5);
+ message_loop.Run();
+ ASSERT_EQ(kHoverStateOpen, [bbfhs hoverState]);
+ ASSERT_EQ(button, [bbfhs hoverButton]);
+
+ // Test transition from opening to opened.
+ [bbfhs scheduleCloseBookmarkFolderOnHoverButton];
+ ASSERT_EQ(kHoverStateClosing, [bbfhs hoverState]);
+
+ // Test transition from closing to open (aka cancel close).
+ [bbfhs cancelPendingCloseBookmarkFolderOnHoverButton];
+ ASSERT_EQ(kHoverStateOpen, [bbfhs hoverState]);
+ ASSERT_EQ(button, [bbfhs hoverButton]);
+
+ // Test transition from closing to closed.
+ [bbfhs scheduleCloseBookmarkFolderOnHoverButton];
+ ASSERT_EQ(kHoverStateClosing, [bbfhs hoverState]);
+ message_loop.PostDelayedTask(
+ FROM_HERE,
+ new MessageLoop::QuitTask,
+ bookmarks::kDragHoverCloseDelay * 1000.0 * 1.5);
+ message_loop.Run();
+ ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]);
+ ASSERT_EQ(nil, [bbfhs hoverButton]);
+}
+
+} // namespace
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h
new file mode 100644
index 0000000..0dc9194
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h
@@ -0,0 +1,21 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import <Cocoa/Cocoa.h>
+
+@protocol BookmarkButtonControllerProtocol;
+@class BookmarkBarFolderController;
+
+// Main content view for a bookmark bar folder "menu" window. This is
+// logically similar to a BookmarkBarView but is oriented vertically.
+@interface BookmarkBarFolderView : NSView {
+ @private
+ BOOL inDrag_; // Are we in the middle of a drag?
+ BOOL dropIndicatorShown_;
+ CGFloat dropIndicatorPosition_; // y position
+ // The following |controller_| is weak; used for testing only. See the imple-
+ // mentation comment for - (id<BookmarkButtonControllerProtocol>)controller.
+ id<BookmarkButtonControllerProtocol> controller_;
+}
+@end
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm
new file mode 100644
index 0000000..c108b42
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm
@@ -0,0 +1,206 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h"
+
+#include "chrome/browser/bookmarks/bookmark_pasteboard_helper_mac.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h"
+#include "content/browser/user_metrics.h"
+
+#import "third_party/mozilla/NSPasteboard+Utils.h"
+
+@interface BookmarkBarFolderView()
+
+@property(readonly, nonatomic) id<BookmarkButtonControllerProtocol> controller;
+
+@end
+
+@implementation BookmarkBarFolderView
+
+- (void)awakeFromNib {
+ NSArray* types = [NSArray arrayWithObjects:
+ NSStringPboardType,
+ NSHTMLPboardType,
+ NSURLPboardType,
+ kBookmarkButtonDragType,
+ kBookmarkDictionaryListPboardType,
+ nil];
+ [self registerForDraggedTypes:types];
+}
+
+- (void)dealloc {
+ [self unregisterDraggedTypes];
+ [super dealloc];
+}
+
+- (id<BookmarkButtonControllerProtocol>)controller {
+ // When needed for testing, set the local data member |controller_| to
+ // the test controller.
+ return controller_ ? controller_ : [[self window] windowController];
+}
+
+- (void)drawRect:(NSRect)rect {
+ // TODO(jrg): copied from bookmark_bar_view but orientation changed.
+ // Code dup sucks but I'm not sure I can take 16 lines and make it
+ // generic for horiz vs vertical while keeping things simple.
+ // TODO(jrg): when throwing it all away and using animations, try
+ // hard to make a common routine for both.
+ // http://crbug.com/35966, http://crbug.com/35968
+
+ // Draw the bookmark-button-dragging drop indicator if necessary.
+ if (dropIndicatorShown_) {
+ const CGFloat kBarHeight = 1;
+ const CGFloat kBarHorizPad = 4;
+ const CGFloat kBarOpacity = 0.85;
+
+ NSRect uglyBlackBar =
+ NSMakeRect(kBarHorizPad, dropIndicatorPosition_,
+ NSWidth([self bounds]) - 2*kBarHorizPad,
+ kBarHeight);
+ NSColor* uglyBlackBarColor = [NSColor blackColor];
+ [[uglyBlackBarColor colorWithAlphaComponent:kBarOpacity] setFill];
+ [[NSBezierPath bezierPathWithRect:uglyBlackBar] fill];
+ }
+}
+
+// TODO(mrossetti,jrg): Identical to -[BookmarkBarView
+// dragClipboardContainsBookmarks]. http://crbug.com/35966
+// Shim function to assist in unit testing.
+- (BOOL)dragClipboardContainsBookmarks {
+ return bookmark_pasteboard_helper_mac::DragClipboardContainsBookmarks();
+}
+
+// Virtually identical to [BookmarkBarView draggingEntered:].
+// TODO(jrg): find a way to share code. Lack of multiple inheritance
+// makes things more of a pain but there should be no excuse for laziness.
+// http://crbug.com/35966
+- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)info {
+ inDrag_ = YES;
+ if (![[self controller] draggingAllowed:info])
+ return NSDragOperationNone;
+ if ([[info draggingPasteboard] dataForType:kBookmarkButtonDragType] ||
+ [self dragClipboardContainsBookmarks] ||
+ [[info draggingPasteboard] containsURLData]) {
+ // Find the position of the drop indicator.
+ BOOL showIt = [[self controller]
+ shouldShowIndicatorShownForPoint:[info draggingLocation]];
+ if (!showIt) {
+ if (dropIndicatorShown_) {
+ dropIndicatorShown_ = NO;
+ [self setNeedsDisplay:YES];
+ }
+ } else {
+ CGFloat y =
+ [[self controller]
+ indicatorPosForDragToPoint:[info draggingLocation]];
+
+ // Need an update if the indicator wasn't previously shown or if it has
+ // moved.
+ if (!dropIndicatorShown_ || dropIndicatorPosition_ != y) {
+ dropIndicatorShown_ = YES;
+ dropIndicatorPosition_ = y;
+ [self setNeedsDisplay:YES];
+ }
+ }
+
+ [[self controller] draggingEntered:info]; // allow hover-open to work
+ return [info draggingSource] ? NSDragOperationMove : NSDragOperationCopy;
+ }
+ return NSDragOperationNone;
+}
+
+- (void)draggingExited:(id<NSDraggingInfo>)info {
+ [[self controller] draggingExited:info];
+
+ // Regardless of the type of dragging which ended, we need to get rid of the
+ // drop indicator if one was shown.
+ if (dropIndicatorShown_) {
+ dropIndicatorShown_ = NO;
+ [self setNeedsDisplay:YES];
+ }
+}
+
+- (void)draggingEnded:(id<NSDraggingInfo>)info {
+ // Awkwardness since views open and close out from under us.
+ if (inDrag_) {
+ inDrag_ = NO;
+ }
+
+ [self draggingExited:info];
+}
+
+- (BOOL)wantsPeriodicDraggingUpdates {
+ // TODO(jrg): This should probably return |YES| and the controller should
+ // slide the existing bookmark buttons interactively to the side to make
+ // room for the about-to-be-dropped bookmark.
+ // http://crbug.com/35968
+ return NO;
+}
+
+- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)info {
+ // For now it's the same as draggingEntered:.
+ // TODO(jrg): once we return YES for wantsPeriodicDraggingUpdates,
+ // this should ping the [self controller] to perform animations.
+ // http://crbug.com/35968
+ return [self draggingEntered:info];
+}
+
+- (BOOL)prepareForDragOperation:(id<NSDraggingInfo>)info {
+ return YES;
+}
+
+// This code is practically identical to the same function in BookmarkBarView
+// with the only difference being how the controller is retrieved.
+// TODO(mrossetti,jrg): http://crbug.com/35966
+// Implement NSDraggingDestination protocol method
+// performDragOperation: for URLs.
+- (BOOL)performDragOperationForURL:(id<NSDraggingInfo>)info {
+ NSPasteboard* pboard = [info draggingPasteboard];
+ DCHECK([pboard containsURLData]);
+
+ NSArray* urls = nil;
+ NSArray* titles = nil;
+ [pboard getURLs:&urls andTitles:&titles convertingFilenames:YES];
+
+ return [[self controller] addURLs:urls
+ withTitles:titles
+ at:[info draggingLocation]];
+}
+
+// This code is practically identical to the same function in BookmarkBarView
+// with the only difference being how the controller is retrieved.
+// http://crbug.com/35966
+// Implement NSDraggingDestination protocol method
+// performDragOperation: for bookmark buttons.
+- (BOOL)performDragOperationForBookmarkButton:(id<NSDraggingInfo>)info {
+ BOOL doDrag = NO;
+ NSData* data = [[info draggingPasteboard]
+ dataForType:kBookmarkButtonDragType];
+ // [info draggingSource] is nil if not the same application.
+ if (data && [info draggingSource]) {
+ BookmarkButton* button = nil;
+ [data getBytes:&button length:sizeof(button)];
+ BOOL copy = !([info draggingSourceOperationMask] & NSDragOperationMove);
+ doDrag = [[self controller] dragButton:button
+ to:[info draggingLocation]
+ copy:copy];
+ UserMetrics::RecordAction(UserMetricsAction("BookmarkBarFolder_DragEnd"));
+ }
+ return doDrag;
+}
+
+- (BOOL)performDragOperation:(id<NSDraggingInfo>)info {
+ if ([[self controller] dragBookmarkData:info])
+ return YES;
+ NSPasteboard* pboard = [info draggingPasteboard];
+ if ([pboard dataForType:kBookmarkButtonDragType] &&
+ [self performDragOperationForBookmarkButton:info])
+ return YES;
+ if ([pboard containsURLData] && [self performDragOperationForURL:info])
+ return YES;
+ return NO;
+}
+
+@end
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm
new file mode 100644
index 0000000..aecb48f
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm
@@ -0,0 +1,151 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/memory/scoped_nsobject.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h"
+#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
+#import "chrome/browser/ui/cocoa/url_drop_target.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/platform_test.h"
+#import "third_party/mozilla/NSPasteboard+Utils.h"
+#import "third_party/ocmock/OCMock/OCMock.h"
+#import "third_party/ocmock/ocmock_extensions.h"
+
+// Allows us to verify BookmarkBarFolderView.
+@interface BookmarkBarFolderView(TestingAPI)
+
+@property(readonly, nonatomic) BOOL dropIndicatorShown;
+@property(readonly, nonatomic) CGFloat dropIndicatorPosition;
+
+-(void)setController:(id<BookmarkButtonControllerProtocol>)controller;
+
+@end
+
+@implementation BookmarkBarFolderView(TestingAPI)
+
+-(void)setController:(id<BookmarkButtonControllerProtocol>)controller {
+ controller_ = controller;
+}
+
+-(BOOL)dropIndicatorShown {
+ return dropIndicatorShown_;
+}
+
+-(CGFloat)dropIndicatorPosition {
+ return dropIndicatorPosition_;
+}
+
+@end
+
+namespace {
+
+// Some values used for mocks and fakes.
+const CGFloat kFakeIndicatorPos = 7.0;
+const NSPoint kPoint = {10, 10};
+
+class BookmarkBarFolderViewTest : public CocoaTest {
+ public:
+ virtual void SetUp() {
+ CocoaTest::SetUp();
+ view_.reset([[BookmarkBarFolderView alloc] init]);
+ mock_controller_.reset([GetMockController(YES) retain]);
+ [view_ awakeFromNib];
+ [view_ setController:mock_controller_];
+ }
+
+ virtual void TearDown() {
+ [mock_controller_ verify];
+ CocoaTest::TearDown();
+ }
+
+ id GetFakePasteboardForType(NSString* dataType) {
+ id pasteboard = [OCMockObject mockForClass:[NSPasteboard class]];
+ [[[pasteboard stub] andReturn:[NSData data]] dataForType:dataType];
+ [[[pasteboard stub] andReturn:nil] dataForType:OCMOCK_ANY];
+ [[[pasteboard stub] andReturnBool:YES] containsURLData];
+ [[pasteboard stub] getURLs:[OCMArg setTo:nil]
+ andTitles:[OCMArg setTo:nil]
+ convertingFilenames:YES];
+ return pasteboard;
+ }
+
+ id GetFakeDragInfoForType(NSString* dataType) {
+ // Need something non-nil to return as the draggingSource.
+ id source = [OCMockObject mockForClass:[NSObject class]];
+ id drag_info = [OCMockObject mockForProtocol:@protocol(NSDraggingInfo)];
+ id pasteboard = GetFakePasteboardForType(dataType);
+ [[[drag_info stub] andReturn:pasteboard] draggingPasteboard];
+ [[[drag_info stub] andReturnNSPoint:kPoint] draggingLocation];
+ [[[drag_info stub] andReturn:source] draggingSource];
+ [[[drag_info stub]
+ andReturnUnsignedInteger:NSDragOperationCopy | NSDragOperationMove]
+ draggingSourceOperationMask];
+ return drag_info;
+ }
+
+ id GetMockController(BOOL show_indicator) {
+ id mock_controller
+ = [OCMockObject mockForClass:[BookmarkBarFolderController class]];
+ [[[mock_controller stub] andReturnBool:YES]
+ draggingAllowed:OCMOCK_ANY];
+ [[[mock_controller stub] andReturnBool:show_indicator]
+ shouldShowIndicatorShownForPoint:kPoint];
+ [[[mock_controller stub] andReturnFloat:kFakeIndicatorPos]
+ indicatorPosForDragToPoint:kPoint];
+ return mock_controller;
+ }
+
+ scoped_nsobject<id> mock_controller_;
+ scoped_nsobject<BookmarkBarFolderView> view_;
+};
+
+TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDragAndDrop) {
+ id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType);
+ [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
+ draggingEntered:drag_info];
+ [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info];
+ [[[mock_controller_ expect] andReturnBool:YES] dragButton:OCMOCK_ANY
+ to:kPoint
+ copy:NO];
+
+ EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
+ EXPECT_TRUE([view_ performDragOperation:drag_info]);
+}
+
+TEST_F(BookmarkBarFolderViewTest, URLDragAndDrop) {
+ NSArray* dragTypes = [URLDropTargetHandler handledDragTypes];
+ for (NSString* type in dragTypes) {
+ id drag_info = GetFakeDragInfoForType(type);
+ [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
+ draggingEntered:drag_info];
+ [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info];
+ [[[mock_controller_ expect] andReturnBool:YES] addURLs:OCMOCK_ANY
+ withTitles:OCMOCK_ANY
+ at:kPoint];
+ EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
+ EXPECT_TRUE([view_ performDragOperation:drag_info]);
+ [mock_controller_ verify];
+ }
+}
+
+TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDropIndicator) {
+ id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType);
+ [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
+ draggingEntered:drag_info];
+ EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
+ [mock_controller_ verify];
+ EXPECT_TRUE([view_ dropIndicatorShown]);
+ EXPECT_EQ([view_ dropIndicatorPosition], kFakeIndicatorPos);
+ mock_controller_.reset([GetMockController(NO) retain]);
+ [view_ setController:mock_controller_];
+ [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone]
+ draggingEntered:drag_info];
+ EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
+ EXPECT_FALSE([view_ dropIndicatorShown]);
+}
+
+} // namespace
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h
new file mode 100644
index 0000000..4a245f0
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h
@@ -0,0 +1,33 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_WINDOW_H_
+#define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_WINDOW_H_
+#pragma once
+
+#import <Cocoa/Cocoa.h>
+#import "base/mac/cocoa_protocols.h"
+#include "base/memory/scoped_nsobject.h"
+
+
+// Window for a bookmark folder "menu". This menu pops up when you
+// click on a bookmark button that represents a folder of bookmarks.
+// This window is borderless but has a shadow, at least initially.
+// Once the down scroll arrow is shown, the shadow is turned off and
+// a secondary window is added which is sized to match the visible
+// area of the menu and which provides the shadow.
+@interface BookmarkBarFolderWindow : NSWindow
+@end
+
+// Content view for the above window. "Stock" other than the drawing
+// of rounded corners. Only used in the nib.
+@interface BookmarkBarFolderWindowContentView : NSView
+@end
+
+// Scroll view that contains the main view (where the buttons go).
+@interface BookmarkBarFolderWindowScrollView : NSScrollView
+@end
+
+
+#endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_WINDOW_H_
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm
new file mode 100644
index 0000000..413cce4
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm
@@ -0,0 +1,90 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h"
+
+#import "base/logging.h"
+#import "base/memory/scoped_nsobject.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
+#import "chrome/browser/ui/cocoa/image_utils.h"
+#import "third_party/GTM/AppKit/GTMNSColor+Luminance.h"
+#import "third_party/GTM/AppKit/GTMNSBezierPath+RoundRect.h"
+
+using bookmarks::kBookmarkBarMenuCornerRadius;
+
+@implementation BookmarkBarFolderWindow
+
+- (id)initWithContentRect:(NSRect)contentRect
+ styleMask:(NSUInteger)windowStyle
+ backing:(NSBackingStoreType)bufferingType
+ defer:(BOOL)deferCreation {
+ if ((self = [super initWithContentRect:contentRect
+ styleMask:NSBorderlessWindowMask // override
+ backing:bufferingType
+ defer:deferCreation])) {
+ [self setBackgroundColor:[NSColor clearColor]];
+ [self setOpaque:NO];
+ }
+ return self;
+}
+
+- (BOOL)canBecomeKeyWindow {
+ return YES;
+}
+
+- (BOOL)canBecomeMainWindow {
+ return NO;
+}
+
+// Override of keyDown as the NSWindow default implementation beeps.
+- (void)keyDown:(NSEvent *)theEvent {
+}
+
+@end
+
+
+@implementation BookmarkBarFolderWindowContentView
+
+- (void)drawRect:(NSRect)rect {
+ // Like NSMenus, only the bottom corners are rounded.
+ NSBezierPath* bezier =
+ [NSBezierPath gtm_bezierPathWithRoundRect:[self bounds]
+ topLeftCornerRadius:kBookmarkBarMenuCornerRadius
+ topRightCornerRadius:kBookmarkBarMenuCornerRadius
+ bottomLeftCornerRadius:kBookmarkBarMenuCornerRadius
+ bottomRightCornerRadius:kBookmarkBarMenuCornerRadius];
+ NSColor* startColor = [NSColor colorWithCalibratedWhite:0.91 alpha:1.0];
+ NSColor* midColor =
+ [startColor gtm_colorAdjustedFor:GTMColorationLightMidtone faded:YES];
+ NSColor* endColor =
+ [startColor gtm_colorAdjustedFor:GTMColorationLightPenumbra faded:YES];
+
+ scoped_nsobject<NSGradient> gradient(
+ [[NSGradient alloc] initWithColorsAndLocations:startColor, 0.0,
+ midColor, 0.25,
+ endColor, 0.5,
+ midColor, 0.75,
+ startColor, 1.0,
+ nil]);
+ [gradient drawInBezierPath:bezier angle:0.0];
+}
+
+@end
+
+
+@implementation BookmarkBarFolderWindowScrollView
+
+// We want "draw background" of the NSScrollView in the xib to be NOT
+// checked. That allows us to round the bottom corners of the folder
+// window. However that also allows some scrollWheel: events to leak
+// into the NSWindow behind it (even in a different application).
+// Better to plug the scroll leak than to round corners for M5.
+- (void)scrollWheel:(NSEvent *)theEvent {
+ DCHECK([[[self window] windowController]
+ respondsToSelector:@selector(scrollWheel:)]);
+ [[[self window] windowController] scrollWheel:theEvent];
+}
+
+@end
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window_unittest.mm
new file mode 100644
index 0000000..d1d1005
--- /dev/null
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window_unittest.mm
@@ -0,0 +1,49 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h"
+#include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/platform_test.h"
+
+class BookmarkBarFolderWindowTest : public CocoaTest {
+};
+
+TEST_F(BookmarkBarFolderWindowTest, Borderless) {
+ scoped_nsobject<BookmarkBarFolderWindow> window_;
+ window_.reset([[BookmarkBarFolderWindow alloc]
+ initWithContentRect:NSMakeRect(0,0,20,20)
+ styleMask:0
+ backing:NSBackingStoreBuffered
+ defer:NO]);
+ EXPECT_EQ(NSBorderlessWindowMask, [window_ styleMask]);
+}
+
+
+class BookmarkBarFolderWindowContentViewTest : public CocoaTest {
+ public:
+ BookmarkBarFolderWindowContentViewTest() {
+ view_.reset([[BookmarkBarFolderWindowContentView alloc]
+ initWithFrame:NSMakeRect(0, 0, 100, 100)]);
+ [[test_window() contentView] addSubview:view_.get()];
+ }
+ scoped_nsobject<BookmarkBarFolderWindowContentView> view_;
+ scoped_nsobject<BookmarkBarFolderWindowScrollView> scroll_view_;
+};
+
+TEST_VIEW(BookmarkBarFolderWindowContentViewTest, view_);
+
+
+class BookmarkBarFolderWindowScrollViewTest : public CocoaTest {
+ public:
+ BookmarkBarFolderWindowScrollViewTest() {
+ scroll_view_.reset([[BookmarkBarFolderWindowScrollView alloc]
+ initWithFrame:NSMakeRect(0, 0, 100, 100)]);
+ [[test_window() contentView] addSubview:scroll_view_.get()];
+ }
+ scoped_nsobject<BookmarkBarFolderWindowScrollView> scroll_view_;
+};
+
+TEST_VIEW(BookmarkBarFolderWindowScrollViewTest, scroll_view_);
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h
index 3c96d43..d520f6f1 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h
@@ -12,13 +12,6 @@
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
-// Returns the number of items in a given bookmark folder
-NSUInteger NumberOfMenuItems(BookmarkBarFolderController* folder);
-
-// Closes a bookmark menu folder after some delay.
-void CloseFolderAfterDelay(BookmarkBarFolderController* folder,
- NSTimeInterval delay);
-
@interface BookmarkBarController (BookmarkBarUnitTestHelper)
// Return the bookmark button from this bar controller with the given
@@ -28,6 +21,15 @@ void CloseFolderAfterDelay(BookmarkBarFolderController* folder,
@end
+@interface BookmarkBarFolderController (BookmarkBarUnitTestHelper)
+
+// Return the bookmark button from this folder controller with the given
+// |title|, otherwise nil. This does not recurse into subfolders.
+- (BookmarkButton*)buttonWithTitleEqualTo:(NSString*)title;
+
+@end
+
+
@interface BookmarkButton (BookmarkBarUnitTestHelper)
// Return the center of the button in the base coordinate system of the
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm
index ba6d534..03022ba 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm
@@ -4,25 +4,6 @@
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h"
-#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
-#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h"
-
-NSUInteger NumberOfMenuItems(BookmarkBarFolderController* folder) {
- if (![folder menuBridge])
- return 0;
- return [[[[folder menuBridge]->controller() menu] itemArray] count];
-}
-
-void CloseFolderAfterDelay(BookmarkBarFolderController* folder,
- NSTimeInterval delay) {
- NSArray* modes = [NSArray arrayWithObjects:NSDefaultRunLoopMode,
- NSEventTrackingRunLoopMode, nil];
- [folder performSelector:@selector(closeMenu)
- withObject:nil
- afterDelay:delay
- inModes:modes];
-}
-
@interface NSArray (BookmarkBarUnitTestHelper)
// A helper function for scanning an array of buttons looking for the
@@ -52,6 +33,14 @@ void CloseFolderAfterDelay(BookmarkBarFolderController* folder,
@end
+@implementation BookmarkBarFolderController(BookmarkBarUnitTestHelper)
+
+- (BookmarkButton*)buttonWithTitleEqualTo:(NSString*)title {
+ return [[self buttons] buttonWithTitleEqualTo:title];
+}
+
+@end
+
@implementation BookmarkButton(BookmarkBarUnitTestHelper)
- (NSPoint)center {
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_button.h
index 6b5635b..7bbfc9f 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button.h
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button.h
@@ -133,6 +133,12 @@ class ThemeProvider;
// Return the theme provider associated with this browser window.
- (ui::ThemeProvider*)themeProvider;
+// Called just before a child folder puts itself on screen.
+- (void)childFolderWillShow:(id<BookmarkButtonControllerProtocol>)child;
+
+// Called just before a child folder closes.
+- (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child;
+
// Return a controller's folder controller for a subfolder, or nil.
- (BookmarkBarFolderController*)folderController;
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm
index 82dc69d..1a51241 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm
@@ -10,6 +10,7 @@
#import "base/memory/scoped_nsobject.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h"
#import "chrome/browser/ui/cocoa/browser_window_controller.h"
#import "chrome/browser/ui/cocoa/view_id_util.h"
#include "content/browser/user_metrics.h"
@@ -259,11 +260,77 @@ BookmarkButton* gDraggedButton = nil; // Weak
}
- (DraggableButtonResult)performMouseDownAction:(NSEvent*)theEvent {
+ int eventMask = NSLeftMouseUpMask | NSMouseEnteredMask | NSMouseExitedMask |
+ NSLeftMouseDraggedMask;
+
+ BOOL keepGoing = YES;
[[self target] performSelector:[self action] withObject:self];
self.draggableButton.actionHasFired = YES;
+
+ DraggableButton* insideBtn = nil;
+
+ while (keepGoing) {
+ theEvent = [[self window] nextEventMatchingMask:eventMask];
+ if (!theEvent)
+ continue;
+
+ NSPoint mouseLoc = [self convertPoint:[theEvent locationInWindow]
+ fromView:nil];
+ BOOL isInside = [self mouse:mouseLoc inRect:[self bounds]];
+
+ switch ([theEvent type]) {
+ case NSMouseEntered:
+ case NSMouseExited: {
+ NSView* trackedView = (NSView*)[[theEvent trackingArea] owner];
+ if (trackedView && [trackedView isKindOfClass:[self class]]) {
+ BookmarkButton* btn = static_cast<BookmarkButton*>(trackedView);
+ if (![btn acceptsTrackInFrom:self])
+ break;
+ if ([theEvent type] == NSMouseEntered) {
+ [[NSCursor arrowCursor] set];
+ [[btn cell] mouseEntered:theEvent];
+ insideBtn = btn;
+ } else {
+ [[btn cell] mouseExited:theEvent];
+ if (insideBtn == btn)
+ insideBtn = nil;
+ }
+ }
+ break;
+ }
+ case NSLeftMouseDragged: {
+ if (insideBtn)
+ [insideBtn mouseDragged:theEvent];
+ break;
+ }
+ case NSLeftMouseUp: {
+ self.draggableButton.durationMouseWasDown =
+ [theEvent timestamp] - self.draggableButton.whenMouseDown;
+ if (!isInside && insideBtn && insideBtn != self) {
+ // Has tracked onto another BookmarkButton menu item, and released,
+ // so fire its action.
+ [[insideBtn target] performSelector:[insideBtn action]
+ withObject:insideBtn];
+
+ } else {
+ [self secondaryMouseUpAction:isInside];
+ [[self cell] mouseExited:theEvent];
+ [[insideBtn cell] mouseExited:theEvent];
+ }
+ keepGoing = NO;
+ break;
+ }
+ default:
+ /* Ignore any other kind of event. */
+ break;
+ }
+ }
return kDraggableButtonMixinDidWork;
}
+
+
+// mouseEntered: and mouseExited: are called from our
// BookmarkButtonCell. We redirect this information to our delegate.
// The controller can then perform menu-like actions (e.g. "hover over
// to open menu").
@@ -291,7 +358,8 @@ BookmarkButton* gDraggedButton = nil; // Weak
}
- (BOOL)canBecomeKeyView {
- return NO;
+ // If button is an item in a folder menu, don't become key.
+ return ![[self cell] isFolderButtonCell];
}
// This only gets called after a click that wasn't a drag, and only on folders.
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h
index e9cc012..4ebee07 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h
@@ -19,11 +19,23 @@ class BookmarkNode;
@private
BOOL empty_; // is this an "empty" button placeholder button cell?
+ // Starting index of bookmarkFolder children that we care to use.
+ int startingChildIndex_;
+
+ // Should we draw the folder arrow as needed? Not used for the bar
+ // itself but used on the folder windows.
+ BOOL drawFolderArrow_;
+
+ // Arrow for folders
+ scoped_nsobject<NSImage> arrowImage_;
+
// Text color for title.
scoped_nsobject<NSColor> textColor_;
}
@property(nonatomic, readwrite, assign) const BookmarkNode* bookmarkNode;
+@property(nonatomic, readwrite, assign) int startingChildIndex;
+@property(nonatomic, readwrite, assign) BOOL drawFolderArrow;
// Create a button cell which draws with a theme.
+ (id)buttonCellForNode:(const BookmarkNode*)node
@@ -51,6 +63,8 @@ class BookmarkNode;
// Set the color of text in this cell.
- (void)setTextColor:(NSColor*)color;
+- (BOOL)isFolderButtonCell;
+
@end
#endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BUTTON_CELL_H_
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm
index 21db378..392c7ca 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm
@@ -13,6 +13,7 @@
#include "content/browser/user_metrics.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util_mac.h"
+#include "ui/gfx/mac/nsimage_cache.h"
@interface BookmarkButtonCell(Private)
@@ -23,6 +24,9 @@
@implementation BookmarkButtonCell
+@synthesize startingChildIndex = startingChildIndex_;
+@synthesize drawFolderArrow = drawFolderArrow_;
+
+ (id)buttonCellForNode:(const BookmarkNode*)node
contextMenu:(NSMenu*)contextMenu
cellText:(NSString*)cellText
@@ -69,6 +73,10 @@
[self configureBookmarkButtonCell];
}
+- (BOOL)isFolderButtonCell {
+ return NO;
+}
+
// Perform all normal init routines specific to the BookmarkButtonCell.
- (void)configureBookmarkButtonCell {
[self setButtonType:NSMomentaryPushInButton];
@@ -200,4 +208,48 @@
[super mouseExited:event];
}
+- (void)setDrawFolderArrow:(BOOL)draw {
+ drawFolderArrow_ = draw;
+ if (draw && !arrowImage_) {
+ arrowImage_.reset(
+ [gfx::GetCachedImageWithName(@"menu_hierarchy_arrow.pdf") retain]);
+ }
+}
+
+// Add extra size for the arrow so it doesn't overlap the text.
+// Does not sanity check to be sure this is actually a folder node.
+- (NSSize)cellSize {
+ NSSize cellSize = [super cellSize];
+ if (drawFolderArrow_) {
+ cellSize.width += [arrowImage_ size].width; // plus margin?
+ }
+ return cellSize;
+}
+
+// Override cell drawing to add a submenu arrow like a real menu.
+- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView*)controlView {
+ // First draw "everything else".
+ [super drawInteriorWithFrame:cellFrame inView:controlView];
+
+ // If asked to do so, and if a folder, draw the arrow.
+ if (!drawFolderArrow_)
+ return;
+ BookmarkButton* button = static_cast<BookmarkButton*>([self controlView]);
+ DCHECK([button respondsToSelector:@selector(isFolder)]);
+ if ([button isFolder]) {
+ NSRect imageRect = NSZeroRect;
+ imageRect.size = [arrowImage_ size];
+ const CGFloat kArrowOffset = 1.0; // Required for proper centering.
+ CGFloat dX = NSWidth(cellFrame) - NSWidth(imageRect);
+ CGFloat dY = (NSHeight(cellFrame) / 2.0) - (NSHeight(imageRect) / 2.0) +
+ kArrowOffset;
+ NSRect drawRect = NSOffsetRect(imageRect, dX, dY);
+ [arrowImage_ drawInRect:drawRect
+ fromRect:imageRect
+ operation:NSCompositeSourceOver
+ fraction:[self isEnabled] ? 1.0 : 0.5
+ neverFlipped:YES];
+ }
+}
+
@end
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell_unittest.mm
index 7fd08e3..650004e 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell_unittest.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell_unittest.mm
@@ -152,4 +152,29 @@ TEST_F(BookmarkButtonCellTest, Awake) {
EXPECT_EQ(NSLeftTextAlignment, [cell alignment]);
}
+// Subfolder arrow details.
+TEST_F(BookmarkButtonCellTest, FolderArrow) {
+ BookmarkModel* model = profile()->GetBookmarkModel();
+ const BookmarkNode* bar = model->bookmark_bar_node();
+ const BookmarkNode* node = model->AddURL(bar, bar->child_count(),
+ ASCIIToUTF16("title"),
+ GURL("http://www.google.com"));
+ scoped_nsobject<BookmarkButtonCell> cell(
+ [[BookmarkButtonCell alloc] initForNode:node
+ contextMenu:nil
+ cellText:@"small"
+ cellImage:nil]);
+ EXPECT_TRUE(cell.get());
+
+ NSSize size = [cell cellSize];
+ // sanity check
+ EXPECT_GE(size.width, 2);
+ EXPECT_GE(size.height, 2);
+
+ // Once we turn on arrow drawing make sure there is now room for it.
+ [cell setDrawFolderArrow:YES];
+ NSSize arrowSize = [cell cellSize];
+ EXPECT_GT(arrowSize.width, size.width);
+}
+
} // namespace
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target_unittest.mm
index ee1177b..69022fc 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target_unittest.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target_unittest.mm
@@ -42,6 +42,27 @@ class BookmarkFolderTargetTest : public CocoaProfileTest {
const BookmarkNode* bmbNode_;
};
+TEST_F(BookmarkFolderTargetTest, StartWithNothing) {
+ // Need a fake "button" which has a bookmark node.
+ id sender = [OCMockObject mockForClass:[BookmarkButton class]];
+ [[[sender stub] andReturnValue:OCMOCK_VALUE(bmbNode_)] bookmarkNode];
+
+ // Fake controller
+ id controller = [OCMockObject mockForClass:[BookmarkBarFolderController
+ class]];
+ // No current folder
+ [[[controller stub] andReturn:nil] folderController];
+
+ // Make sure we get an addNew
+ [[controller expect] addNewFolderControllerWithParentButton:sender];
+
+ scoped_nsobject<BookmarkFolderTarget> target(
+ [[BookmarkFolderTarget alloc] initWithController:controller]);
+
+ [target openBookmarkFolderFromButton:sender];
+ EXPECT_OCMOCK_VERIFY(controller);
+}
+
TEST_F(BookmarkFolderTargetTest, ReopenSameFolder) {
// Need a fake "button" which has a bookmark node.
id sender = [OCMockObject mockForClass:[BookmarkButton class]];
@@ -53,22 +74,18 @@ TEST_F(BookmarkFolderTargetTest, ReopenSameFolder) {
// YES a current folder. Self-mock that as well, so "same" will be
// true. Note this creates a retain cycle in OCMockObject; we
// accomodate at the end of this function.
+ [[[controller stub] andReturn:controller] folderController];
[[[controller stub] andReturn:sender] parentButton];
- // Fake bookmark bar.
- id barController = [OCMockObject mockForClass:[BookmarkBarController class]];
- [[[barController stub] andReturn:controller] folderController];
-
// The folder is open, so a click should close just that folder (and
// any subfolders).
- [[barController expect] closeBookmarkFolder:barController];
+ [[controller expect] closeBookmarkFolder:controller];
scoped_nsobject<BookmarkFolderTarget> target(
- [[BookmarkFolderTarget alloc] initWithController:barController]);
+ [[BookmarkFolderTarget alloc] initWithController:controller]);
[target openBookmarkFolderFromButton:sender];
EXPECT_OCMOCK_VERIFY(controller);
- EXPECT_OCMOCK_VERIFY(barController);
// Our use of OCMockObject means an object can return itself. This
// creates a retain cycle, since OCMock retains all objects used in
@@ -86,22 +103,18 @@ TEST_F(BookmarkFolderTargetTest, ReopenNotSame) {
id controller = [OCMockObject mockForClass:[BookmarkBarFolderController
class]];
// YES a current folder but NOT same.
+ [[[controller stub] andReturn:controller] folderController];
[[[controller stub] andReturn:nil] parentButton];
- // Fake bookmark bar.
- id barController = [OCMockObject mockForClass:[BookmarkBarController class]];
- [[[barController stub] andReturn:controller] folderController];
-
// Insure the controller gets a chance to decide which folders to
// close and open.
- [[barController expect] addNewFolderControllerWithParentButton:sender];
+ [[controller expect] addNewFolderControllerWithParentButton:sender];
scoped_nsobject<BookmarkFolderTarget> target(
- [[BookmarkFolderTarget alloc] initWithController:barController]);
+ [[BookmarkFolderTarget alloc] initWithController:controller]);
[target openBookmarkFolderFromButton:sender];
EXPECT_OCMOCK_VERIFY(controller);
- EXPECT_OCMOCK_VERIFY(barController);
// Break retain cycles.
[controller clearRecordersAndExpectations];
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h
index cda5392..5fd4f62 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h
@@ -2,14 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-
-// C++ class that connects a BookmarkNode (or the entire model) to a Cocoa class
-// that manages an NSMenu. Commonly this is for the main menu and that instance
-// is owned by the AppController. This is also used by the folder menus on the
-// bookmark bar.
+// C++ controller for the bookmark menu; one per AppController (which
+// means there is only one). When bookmarks are changed, this class
+// takes care of updating Cocoa bookmark menus. This is not named
+// BookmarkMenuController to help avoid confusion between languages.
+// This class needs to be C++, not ObjC, since it derives from
+// BookmarkModelObserver.
//
-// In the main menu case, most Chromium Cocoa menu items are static from a nib
-// (e.g. New Tab), but may be enabled/disabled under certain circumstances
+// Most Chromium Cocoa menu items are static from a nib (e.g. New
+// Tab), but may be enabled/disabled under certain circumstances
// (e.g. Cut and Paste). In addition, most Cocoa menu items have
// firstResponder: as a target. Unusually, bookmark menu items are
// created dynamically. They also have a target of
@@ -36,14 +37,7 @@ class Profile;
class BookmarkMenuBridge : public BookmarkModelObserver,
public MainMenuItem {
public:
- // Constructor for the main menu which lists all bookmarks.
BookmarkMenuBridge(Profile* profile, NSMenu* menu);
-
- // Constructor for a submenu.
- BookmarkMenuBridge(const BookmarkNode* root_node,
- Profile* profile,
- NSMenu* menu);
-
virtual ~BookmarkMenuBridge();
// BookmarkModelObserver:
@@ -78,17 +72,9 @@ class BookmarkMenuBridge : public BookmarkModelObserver,
// Rebuilds a bookmark menu that's a submenu of another menu.
void UpdateSubMenu(NSMenu* bookmark_menu);
- // If this bridge is managing a menu for the "Off the Side" chevron button,
- // this sets the index in the menu of the first node to display.
- void set_off_the_side_node_start_index(size_t index) {
- off_the_side_node_start_index_ = index;
- InvalidateMenu();
- }
-
// I wish I had a "friend @class" construct.
BookmarkModel* GetBookmarkModel();
Profile* GetProfile();
- BookmarkMenuCocoaController* controller() { return controller_.get(); }
protected:
// Rebuilds the bookmark content of supplied menu.
@@ -98,7 +84,7 @@ class BookmarkMenuBridge : public BookmarkModelObserver,
void ClearBookmarkMenu(NSMenu* menu);
// Mark the bookmark menu as being invalid.
- void InvalidateMenu() { menu_is_valid_ = false; }
+ void InvalidateMenu() { menuIsValid_ = false; }
// Helper for adding the node as a submenu to the menu with the
// given title.
@@ -114,8 +100,7 @@ class BookmarkMenuBridge : public BookmarkModelObserver,
// If |add_extra_items| is true, also adds extra menu items at bottom of
// menu, such as "Open All Bookmarks".
// TODO(jrg): add a counter to enforce maximum nodes added
- void AddNodeToMenu(const BookmarkNode* node,
- NSMenu* menu,
+ void AddNodeToMenu(const BookmarkNode* node, NSMenu* menu,
bool add_extra_items);
// Helper for adding an item to our bookmark menu. An item which has a
@@ -148,24 +133,11 @@ class BookmarkMenuBridge : public BookmarkModelObserver,
private:
friend class BookmarkMenuBridgeTest;
- // Performs the actual work for AddNodeToMenu(), keeping count of the
- // recursion depth.
- void AddNodeToMenuRecursive(const BookmarkNode* node,
- NSMenu* menu,
- bool add_extra_items,
- int recursion_depth);
-
// True iff the menu is up-to-date with the actual BookmarkModel.
- bool menu_is_valid_;
-
- // The root node of the menu.
- const BookmarkNode* root_node_;
-
- // Index from which to start adding children from the model.
- size_t off_the_side_node_start_index_;
+ bool menuIsValid_;
- Profile* profile_; // Weak.
- scoped_nsobject<BookmarkMenuCocoaController> controller_;
+ Profile* profile_; // weak
+ BookmarkMenuCocoaController* controller_; // strong
// The folder image so we can use one copy for all.
scoped_nsobject<NSImage> folder_image_;
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm
index 79766db..0af4b23 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm
@@ -4,8 +4,6 @@
#import <AppKit/AppKit.h>
-#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h"
-
#include "base/sys_string_conversions.h"
#include "chrome/app/chrome_command_ids.h"
#import "chrome/browser/app_controller_mac.h"
@@ -13,6 +11,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/browser_list.h"
+#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
@@ -24,22 +23,7 @@
BookmarkMenuBridge::BookmarkMenuBridge(Profile* profile,
NSMenu *menu)
- : menu_is_valid_(false),
- root_node_(NULL),
- off_the_side_node_start_index_(0),
- profile_(profile),
- controller_([[BookmarkMenuCocoaController alloc] initWithBridge:this
- andMenu:menu]) {
- if (GetBookmarkModel())
- ObserveBookmarkModel();
-}
-
-BookmarkMenuBridge::BookmarkMenuBridge(const BookmarkNode* root_node,
- Profile* profile,
- NSMenu* menu)
- : menu_is_valid_(false),
- root_node_(root_node),
- off_the_side_node_start_index_(0),
+ : menuIsValid_(false),
profile_(profile),
controller_([[BookmarkMenuCocoaController alloc] initWithBridge:this
andMenu:menu]) {
@@ -51,6 +35,7 @@ BookmarkMenuBridge::~BookmarkMenuBridge() {
BookmarkModel *model = GetBookmarkModel();
if (model)
model->RemoveObserver(this);
+ [controller_ release];
}
NSMenu* BookmarkMenuBridge::BookmarkMenu() {
@@ -72,7 +57,7 @@ void BookmarkMenuBridge::UpdateSubMenu(NSMenu* bookmark_menu) {
void BookmarkMenuBridge::UpdateMenuInternal(NSMenu* bookmark_menu,
bool is_submenu) {
DCHECK(bookmark_menu);
- if (menu_is_valid_)
+ if (menuIsValid_)
return;
BookmarkModel* model = GetBookmarkModel();
if (!model || !model->IsLoaded())
@@ -86,31 +71,27 @@ void BookmarkMenuBridge::UpdateMenuInternal(NSMenu* bookmark_menu,
ClearBookmarkMenu(bookmark_menu);
- if (!root_node_) {
- // Add bookmark bar items, if any.
- const BookmarkNode* bar_node = model->bookmark_bar_node();
- CHECK(bar_node);
- if (!bar_node->empty()) {
- [bookmark_menu addItem:[NSMenuItem separatorItem]];
- AddNodeToMenu(bar_node, bookmark_menu, !is_submenu);
- }
+ // Add bookmark bar items, if any.
+ const BookmarkNode* barNode = model->bookmark_bar_node();
+ CHECK(barNode);
+ if (!barNode->empty()) {
+ [bookmark_menu addItem:[NSMenuItem separatorItem]];
+ AddNodeToMenu(barNode, bookmark_menu, !is_submenu);
+ }
- // If the "Other Bookmarks" folder has any content, make a submenu for it
- // and fill it in.
- if (!model->other_node()->empty()) {
- NSString* other_items_title =
- l10n_util::GetNSString(IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME);
- [bookmark_menu addItem:[NSMenuItem separatorItem]];
- AddNodeAsSubmenu(bookmark_menu,
- model->other_node(),
- other_items_title,
- !is_submenu);
- }
- } else {
- AddNodeToMenu(root_node_, bookmark_menu, false);
+ // If the "Other Bookmarks" folder has any content, make a submenu for it and
+ // fill it in.
+ if (!model->other_node()->empty()) {
+ NSString* other_items_title =
+ l10n_util::GetNSString(IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME);
+ [bookmark_menu addItem:[NSMenuItem separatorItem]];
+ AddNodeAsSubmenu(bookmark_menu,
+ model->other_node(),
+ other_items_title,
+ !is_submenu);
}
- menu_is_valid_ = true;
+ menuIsValid_ = true;
}
void BookmarkMenuBridge::BookmarkModelBeingDeleted(BookmarkModel* model) {
@@ -228,16 +209,9 @@ void BookmarkMenuBridge::AddNodeAsSubmenu(NSMenu* menu,
AddNodeToMenu(node, other_submenu, add_extra_items);
}
-void BookmarkMenuBridge::AddNodeToMenu(const BookmarkNode* node,
- NSMenu* menu,
+// TODO(jrg): limit the number of bookmarks in the menubar?
+void BookmarkMenuBridge::AddNodeToMenu(const BookmarkNode* node, NSMenu* menu,
bool add_extra_items) {
- AddNodeToMenuRecursive(node, menu, add_extra_items, 0);
-}
-
-void BookmarkMenuBridge::AddNodeToMenuRecursive(const BookmarkNode* node,
- NSMenu* menu,
- bool add_extra_items,
- int recursion_depth) {
int child_count = node->child_count();
if (!child_count) {
NSString* empty_string = l10n_util::GetNSString(IDS_MENU_EMPTY_SUBMENU);
@@ -245,27 +219,21 @@ void BookmarkMenuBridge::AddNodeToMenuRecursive(const BookmarkNode* node,
action:nil
keyEquivalent:@""] autorelease];
[menu addItem:item];
- } else {
- // If this is the first recursive pass, start adding children from the
- // start index, which defaults to 0.
- const int start = recursion_depth == 0 ? off_the_side_node_start_index_ : 0;
- for (int i = start; i < child_count; i++) {
- const BookmarkNode* child = node->GetChild(i);
- NSString* title = [BookmarkMenuCocoaController menuTitleForNode:child];
- NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title
- action:nil
- keyEquivalent:@""] autorelease];
- [menu addItem:item];
- bookmark_nodes_[child] = item;
- if (child->is_folder()) {
- [item setImage:folder_image_];
- NSMenu* submenu = [[[NSMenu alloc] initWithTitle:title] autorelease];
- [menu setSubmenu:submenu forItem:item];
- AddNodeToMenuRecursive(child, submenu, add_extra_items,
- recursion_depth + 1); // Recursive call.
- } else {
- ConfigureMenuItem(child, item, false);
- }
+ } else for (int i = 0; i < child_count; i++) {
+ const BookmarkNode* child = node->GetChild(i);
+ NSString* title = [BookmarkMenuCocoaController menuTitleForNode:child];
+ NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title
+ action:nil
+ keyEquivalent:@""] autorelease];
+ [menu addItem:item];
+ bookmark_nodes_[child] = item;
+ if (child->is_folder()) {
+ [item setImage:folder_image_];
+ NSMenu* submenu = [[[NSMenu alloc] initWithTitle:title] autorelease];
+ [menu setSubmenu:submenu forItem:item];
+ AddNodeToMenu(child, submenu, add_extra_items); // recursive call
+ } else {
+ ConfigureMenuItem(child, item, false);
}
}
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm
index d22360a..b777c2f 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm
@@ -59,10 +59,7 @@ class BookmarkMenuBridgeTest : public CocoaProfileTest {
}
void InvalidateMenu() { bridge_->InvalidateMenu(); }
- bool menu_is_valid() { return bridge_->menu_is_valid_; }
- void set_root_node(const BookmarkNode* node) {
- bridge_->root_node_ = node;
- }
+ bool menu_is_valid() { return bridge_->menuIsValid_; }
void AddNodeToMenu(BookmarkMenuBridge* bridge,
const BookmarkNode* root,
@@ -85,7 +82,7 @@ class BookmarkMenuBridgeTest : public CocoaProfileTest {
}
NSMenuItem* AddTestMenuItem(NSMenu *menu, NSString *title, SEL selector) {
- NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title action:NULL
+ NSMenuItem *item = [[[NSMenuItem alloc] initWithTitle:title action:NULL
keyEquivalent:@""] autorelease];
if (selector)
[item setAction:selector];
@@ -244,47 +241,6 @@ TEST_F(BookmarkMenuBridgeTest, TestAddNodeToMenu) {
EXPECT_TRUE([long_item image]);
}
-// Test that AddNodeToMenu() properly generates a menu for an off the side
-// button
-TEST_F(BookmarkMenuBridgeTest, TestOffTheSideButtonMenu) {
- string16 empty;
- NSMenu* menu = bridge_->menu_;
-
- BookmarkModel* model = bridge_->GetBookmarkModel();
- const BookmarkNode* root = model->bookmark_bar_node();
- ASSERT_TRUE(model && root);
-
- set_root_node(root);
-
- // 3 nodes; First node is not in the off the side button. Second node is in
- // the off the side button. Third node is a folder in the off the side button
- // and it should have one submenu.
- model->AddURL(root, 0, ASCIIToUTF16("not in button"), GURL("http://foo"));
- model->AddURL(root, 1, ASCIIToUTF16("in button"), GURL("http://bar"));
- const BookmarkNode* node = model->AddFolder(root, 2,
- ASCIIToUTF16("folder in button"));
- // Add submenu to the folder node.
- model->AddURL(node, 0, empty, GURL("http://sub"));
-
- bridge_->set_off_the_side_node_start_index(1);
- bridge_->UpdateSubMenu(menu);
- ASSERT_EQ(2, [menu numberOfItems]);
-
- // Verify that the 1st node is not in the menu.
- NSMenuItem* item = [menu itemWithTitle:@"not in button"];
- EXPECT_FALSE(item);
-
- // Verify the 2nd node is there with the right action.
- item = [menu itemWithTitle:@"in button"];
- EXPECT_TRUE(item);
- EXPECT_EQ(@selector(openBookmarkMenuItem:), [item action]);
- EXPECT_FALSE([item hasSubmenu]);
-
- item = [menu itemWithTitle:@"folder in button"];
- EXPECT_TRUE(item);
- EXPECT_TRUE([item hasSubmenu]);
-}
-
// Test that AddItemToMenu() properly added versions of
// 'Open All Bookmarks' as menu items.
TEST_F(BookmarkMenuBridgeTest, TestAddItemToMenu) {
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h
index cc27553..aeedcdb 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h
@@ -17,17 +17,15 @@
class BookmarkNode;
class BookmarkMenuBridge;
-@protocol BookmarkMenuDelegate;
@interface BookmarkMenuCocoaController : NSObject<NSMenuDelegate> {
@private
BookmarkMenuBridge* bridge_; // weak; owns me
- NSMenu* menu_;
- id<BookmarkMenuDelegate> delegate_;
+ NSMenu *menu_;
}
+// The Bookmarks menu
@property(nonatomic, readonly) NSMenu* menu;
-@property(nonatomic, assign) id<BookmarkMenuDelegate> delegate;
// Return an autoreleased string to be used as a menu title for the
// given bookmark node.
@@ -48,19 +46,6 @@ class BookmarkMenuBridge;
@end // BookmarkMenuCocoaController
-////////////////////////////////////////////////////////////////////////////////
-
-// This protocol is used to forward relevant methods from NSMenuDelegate to
-// some other object.
-@protocol BookmarkMenuDelegate <NSObject>
-@optional
-
-- (void)bookmarkMenuWillOpen:(BookmarkMenuCocoaController*)controller;
-- (void)bookmarkMenuDidClose:(BookmarkMenuCocoaController*)controller;
-
-@end
-
-////////////////////////////////////////////////////////////////////////////////
@interface BookmarkMenuCocoaController (ExposedForUnitTests)
- (const BookmarkNode*)nodeForIdentifier:(int)identifier;
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm
index 18176c2..ca2e615 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm
@@ -26,8 +26,6 @@ const NSUInteger kMaximumMenuPixelsWide = 300;
@implementation BookmarkMenuCocoaController
-@synthesize delegate = delegate_;
-
+ (NSString*)menuTitleForNode:(const BookmarkNode*)node {
NSFont* nsfont = [NSFont menuBarFontOfSize:0]; // 0 means "default"
gfx::Font font(base::SysNSStringToUTF16([nsfont fontName]),
@@ -76,25 +74,11 @@ const NSUInteger kMaximumMenuPixelsWide = 300;
return [controller keyWindowIsNotModal];
}
-// NSMenuDelegate //////////////////////////////////////////////////////////////
-
// NSMenu delegate method: called just before menu is displayed.
- (void)menuNeedsUpdate:(NSMenu*)menu {
bridge_->UpdateMenu(menu);
}
-- (void)menuWillOpen:(NSMenu*)menu {
- if ([delegate_ respondsToSelector:@selector(bookmarkMenuWillOpen:)])
- [delegate_ bookmarkMenuWillOpen:self];
-}
-
-- (void)menuDidClose:(NSMenu*)menu {
- if ([delegate_ respondsToSelector:@selector(bookmarkMenuDidClose:)])
- [delegate_ bookmarkMenuDidClose:self];
-}
-
-// Private /////////////////////////////////////////////////////////////////////
-
// Return the a BookmarkNode that has the given id (called
// "identifier" here to avoid conflict with objc's concept of "id").
- (const BookmarkNode*)nodeForIdentifier:(int)identifier {
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 7a4eb01..2432109 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -2377,8 +2377,16 @@
'browser/ui/cocoa/bookmarks/bookmark_bar_constants.h',
'browser/ui/cocoa/bookmarks/bookmark_bar_controller.h',
'browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.mm',
'browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h',
'browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.mm',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm',
'browser/ui/cocoa/bookmarks/bookmark_bar_state.h',
'browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view.h',
'browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view.mm',
diff --git a/chrome/chrome_dll.gypi b/chrome/chrome_dll.gypi
index 4a856d7..3267709 100644
--- a/chrome/chrome_dll.gypi
+++ b/chrome/chrome_dll.gypi
@@ -223,6 +223,7 @@
'app/nibs/AvatarMenuItem.xib',
'app/nibs/BookmarkAllTabs.xib',
'app/nibs/BookmarkBar.xib',
+ 'app/nibs/BookmarkBarFolderWindow.xib',
'app/nibs/BookmarkBubble.xib',
'app/nibs/BookmarkEditor.xib',
'app/nibs/BookmarkNameFolder.xib',
@@ -269,6 +270,9 @@
'app/theme/chevron.pdf',
'app/theme/find_next_Template.pdf',
'app/theme/find_prev_Template.pdf',
+ 'app/theme/menu_hierarchy_arrow.pdf',
+ 'app/theme/menu_overflow_down.pdf',
+ 'app/theme/menu_overflow_up.pdf',
'app/theme/nav.pdf',
'app/theme/newtab.pdf',
'app/theme/newtab_h.pdf',
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index debc31e..93fd464 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -1577,7 +1577,11 @@
'browser/ui/cocoa/bookmarks/bookmark_all_tabs_controller_unittest.mm',
'browser/ui/cocoa/bookmarks/bookmark_bar_bridge_unittest.mm',
'browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell_unittest.mm',
'browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm',
+ 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_window_unittest.mm',
'browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view_unittest.mm',
'browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h',
'browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm',