Index: t/Mac-Growl.t
===================================================================
--- t/Mac-Growl.t	(revision 1494)
+++ t/Mac-Growl.t	(working copy)
@@ -18,7 +18,10 @@
 my $app    = 'PerlApp';
 my $as_app = 'Software Update';
 my @names  = ('a', 'b');
-my $image = '/Applications/Utilities/Installer.app/Contents/Resources/Caut.tiff';
+my($image) = grep { -e } (
+	'/Applications/Utilities/Installer.app/Contents/Resources/Caut.tiff',
+	'/Applications/Utilities/Installer.app/Contents/Plugins/TargetSelect.bundle/Contents/Resources/Caut.tiff'
+);
 
 my %pkgs = map { $_ => 0 } qw(
 	Foundation
Index: lib/Mac/Growl.pm
===================================================================
--- lib/Mac/Growl.pm	(revision 1494)
+++ lib/Mac/Growl.pm	(working copy)
@@ -4,7 +4,7 @@
 use strict;
 use warnings;
 
-our $VERSION = '0.60';
+our $VERSION = '0.61';
 
 use base 'Exporter';
 our @EXPORT = qw();
@@ -14,7 +14,7 @@
 #### we have various options here ...
 #### in declining order of preference, we pick an implementation to use,
 #### and stick with it.
-our($base, $glue, $helper);
+our($base, $glue, $helper, $appkit);
 
 # we could use gotos or something, but this is the most efficient and reliable
 # way; we could also try to put all the implementations in one function, but
@@ -49,10 +49,24 @@
 sub BEGIN {
 	$helper = 'GrowlHelperApp';
 
-# Foundation not currently working properly, see TODO
-#	eval 'require Foundation';
-#	$base = 'Foundation' unless $@;
+	eval 'require Foundation';
+	if (!$@) {
+		$base = 'Foundation';
 
+		# load classes for images
+		my $path = NSString->stringWithCString_('/System/Library/Frameworks/AppKit.framework');
+		$appkit = NSBundle->alloc->init->initWithPath_($path);
+		$appkit->load if $appkit;
+		if ($appkit->isLoaded) {
+			no strict 'refs';
+			for my $class (qw(NSWorkspace NSImage)) {
+				@{$class . '::ISA'} = 'PerlObjCBridge';
+			}
+		} else {
+			undef $appkit;
+		}
+	}
+
 	if (!$base) {
 		eval 'require Mac::Glue';
 		unless ($@) {
@@ -110,23 +124,31 @@
 {
 	my($appName, $allNotes, $defaultNotes, $iconOfApp) = @_;
 	
-	my $appString = NSString->stringWithCString_($appName);
-	my $notesArray = NSMutableArray->array();
-	my $defaultArray = NSMutableArray->array();
+	my $appString    = NSString->stringWithCString_($appName);
+	my $notesArray   = NSMutableArray->array;
+	my $defaultArray = NSMutableArray->array;
 
-	# can't do this, because NSImage not available in Foundation
-	if ($iconOfApp) {
-	}
-
 	$notesArray->addObject_($_)   for @$allNotes;
 	$defaultArray->addObject_($_) for @$defaultNotes;
 
-	my $regDict = NSMutableDictionary->dictionary();
-	$regDict->setObject_forKey_($appName,GROWL_APP_NAME);
-	$regDict->setObject_forKey_($notesArray,GROWL_NOTIFICATIONS_ALL);
-	$regDict->setObject_forKey_($defaultArray,GROWL_NOTIFICATIONS_DEFAULT);
+	my $regDict = NSMutableDictionary->dictionary;
+	$regDict->setObject_forKey_($appName,      GROWL_APP_NAME);
+	$regDict->setObject_forKey_($notesArray,   GROWL_NOTIFICATIONS_ALL);
+	$regDict->setObject_forKey_($defaultArray, GROWL_NOTIFICATIONS_DEFAULT);
 
-	NSDistributedNotificationCenter->defaultCenter()->postNotificationName_object_userInfo_(
+	if ($appkit && defined $iconOfApp) {
+		my $path = NSWorkspace->sharedWorkspace->fullPathForApplication_(
+			NSString->stringWithCString_($iconOfApp)
+		);
+		if ($path) {
+			my $icon = NSWorkspace->sharedWorkspace->iconForFile_($path);
+			if ($icon && $icon->isValid) {
+				$regDict->setObject_forKey_($icon->TIFFRepresentation, GROWL_APP_ICON);
+			}
+		}
+	}
+
+	NSDistributedNotificationCenter->defaultCenter->postNotificationName_object_userInfo_(
 		GROWL_APP_REGISTRATION,
 		undef,
 		$regDict
@@ -138,19 +160,27 @@
 	my($appName, $noteName, $noteTitle, $noteDescription, $sticky, $priority, $image) = @_;
 	$sticky = $sticky ? 1 : 0;
 
-	my $noteDict = NSMutableDictionary->dictionary();
-	$noteDict->setObject_forKey_($noteName,GROWL_NOTIFICATION_NAME);
-	$noteDict->setObject_forKey_($appName,GROWL_APP_NAME);
-	$noteDict->setObject_forKey_($noteTitle,GROWL_NOTIFICATION_TITLE);
-	$noteDict->setObject_forKey_($noteDescription,GROWL_NOTIFICATION_DESCRIPTION);
-	$noteDict->setObject_forKey_(NSNumber->numberWithBool_($sticky),GROWL_NOTIFICATION_STICKY);
-	$noteDict->setObject_forKey_(NSNumber->numberWithInt_($priority),GROWL_NOTIFICATION_PRIORITY);
+	my $noteDict = NSMutableDictionary->dictionary;
+	$noteDict->setObject_forKey_($noteName,        GROWL_NOTIFICATION_NAME);
+	$noteDict->setObject_forKey_($appName,         GROWL_APP_NAME);
+	$noteDict->setObject_forKey_($noteTitle,       GROWL_NOTIFICATION_TITLE);
+	$noteDict->setObject_forKey_($noteDescription, GROWL_NOTIFICATION_DESCRIPTION);
+	$noteDict->setObject_forKey_(NSNumber->numberWithBool_($sticky),  GROWL_NOTIFICATION_STICKY)
+		if defined $sticky;
+	$noteDict->setObject_forKey_(NSNumber->numberWithInt_($priority), GROWL_NOTIFICATION_PRIORITY)
+		if defined $priority;
 
-	# can't do this, because NSImage not available in Foundation
-	if ($image) {
+	if ($appkit && defined $image && -e $image) {
+		my $path = NSString->stringWithCString_($image);
+		if ($path) {
+			my $icon = NSImage->alloc->initWithContentsOfFile_($path);
+			if ($icon && $icon->isValid) {
+				$noteDict->setObject_forKey_($icon->TIFFRepresentation, GROWL_NOTIFICATION_ICON);
+			}
+		}
 	}
 
-	NSDistributedNotificationCenter->defaultCenter()->postNotificationName_object_userInfo_(
+	NSDistributedNotificationCenter->defaultCenter->postNotificationName_object_userInfo_(
 		GROWL_NOTIFICATION,
 		undef,
 		$noteDict
@@ -195,7 +225,9 @@
 	$params{priority} = $priority if defined $priority;
 
 	my $image_url = _Fix_Image_Path($image);
-	$params{image_from_url} = $image_url if $image_url;
+	$params{image_from_location} = Mac::Glue::param_type(
+		Mac::Glue::typeChar(), $image_url
+	) if $image_url;
 
 	$glue->notify(%params);
 }
@@ -252,7 +284,7 @@
 	}
 
 	my $image_url = _Fix_Image_Path($image);
-	$script .= qq' image from url "$image_url"' if $image_url;
+	$script .= qq' image from location "$image_url"' if $image_url;
 
 	_Execute_AppleScript($script);
 }
@@ -268,7 +300,6 @@
 {
 	my($script, $return) = @_;
 	my $reply;
-
 	# warn $script, "\n";
 
 	if ($base eq 'Mac::OSA::Simple')
@@ -286,7 +317,7 @@
 		$reply = Mac::AppleScript::RunAppleScript($script);
 	}
 
-	elsif ($base eq 'osascript')
+	else # ($base eq 'osascript')
 	{
 		if ($return) {
 			$script =~ s/\\/\\\\/g;
@@ -324,9 +355,10 @@
 	if (defined $image && length $image) {
 		$path = File::Spec->rel2abs($image);
 		if (-e $path) {
+			my $reply;
 			if ($uri_file) {
 				my $uri = URI::file->new($path);
-				return $uri->as_string if $uri;
+				$reply = $uri->as_string if $uri;
 			} else {
 				# URI::file will be available if Mac::Glue
 				# is, so this only needs to be implemented
@@ -335,14 +367,16 @@
 				# to not
 				my $script = <<EOT;
 tell application "Finder"
-   set thisfile to POSIX file "$path"
+   set thisfile to POSIX file "$path" as string
    set thisdoc to document file thisfile
    return URL of thisdoc
 end tell
 EOT
-				my $reply = _Execute_AppleScript($script, 1);
+				$reply = _Execute_AppleScript($script, 1);
+			}
+			if ($reply) {
 				# Growl being excessively anal
-				$reply =~ s|file://localhost/|file:///|;
+				$reply =~ s#^file:/(/localhost/)?(?!/)#file:///#;
 				return $reply;
 			}
 		}
@@ -372,7 +406,9 @@
 
 =head1 DESCRIPTION
 
-Mac::Growl provides a simple notification for perl apps to register themselves with and send notifications to the Mac OS X notification application Growl.
+Mac::Growl provides a simple notification for perl apps to register
+themselves with and send notifications to the Mac OS X notification
+application Growl.
 
 Mac::Growl defines two methods:
 
@@ -380,29 +416,47 @@
 
 =item RegisterNotifications(appname, allNotifications, defaultNotifications[, iconOfApp]);
 
-RegisterNotifications takes the name of the application sending notifications, as well as a reference to a list of all notifications the app sends out, and a reference to an array of all the notifications to be enabled by default.  Also, optionally accepts the name of an application whose icon to use by default.
+RegisterNotifications takes the name of the application sending
+notifications, as well as a reference to a list of all notifications the
+app sends out, and a reference to an array of all the notifications to
+be enabled by default.  Also, optionally accepts the name of an
+application whose icon to use by default.
 
 =item PostNotification(appname, name, title, description[, sticky, priority, image_path]);
 
-PostNotification takes the name of the sending application (normally the same as passed to the Register call), the name of the notification (should be one of the allNotification list passed to Register), and a title and description to be displayed by Growl. Also, optionally accepts a "sticky" flag, which, if true, will cause the notification to remain until dismissed, instead of timing out normally; a "priority" value (range from -2 for low to 2 for high); and an image path, a path to a file containing the image for the notification.
+PostNotification takes the name of the sending application (normally the
+same as passed to the Register call), the name of the notification
+(should be one of the allNotification list passed to Register), and a
+title and description to be displayed by Growl. Also, optionally accepts
+a "sticky" flag, which, if true, will cause the notification to remain
+until dismissed, instead of timing out normally; a "priority" value
+(range from -2 for low to 2 for high); and an image path, a path to a
+file containing the image for the notification.
 
 =back
 
+For more information, see
+L<http://growl.info/documentation/applescript-support.php>, which
+details how this all fits together.  It is specific to AppleScript, but
+the concepts apply to this module as well, except that file paths for
+images are Unix paths, not URLs.
 
+
 =head1 CAVEATS
 
-This module is designed to use L<Foundation>, a perl module included with Mac OS X that is probably only available if you are using the default system perl.  If Foundation is not available, this module will attempt to talk to Growl using Apple events instead of the Cocoa API.  (L<TODO>: currently, Foundation is disabled.)
+This module is designed to use L<Foundation>, a perl module included
+with Mac OS X that is probably only available if you are using the
+default system perl.  If Foundation is not available (such as if you
+built your own version of perl), this module will attempt to talk to
+Growl using Apple events instead of the Cocoa API.
 
-It tries various perl modules to accomplish this, in descending order of preference: L<Mac::Glue>*, L<Mac::OSA::Simple>, L<MacPerl> (which defines C<DoAppleScript>), and L<Mac::AppleScript>.  As a last resort, it will use C<osascript(1)>, a command line program that should be available on all Mac OS X machines.
+It tries various perl modules to accomplish this, in descending order of
+preference: L<Mac::Glue>, L<Mac::OSA::Simple>, L<MacPerl> (which defines
+C<DoAppleScript>), and L<Mac::AppleScript>.  As a last resort, it will
+use C<osascript(1)>, a command line program that should be available on
+all Mac OS X machines.
 
-*In order to use Mac::Glue, you must run C<sudo gluemac GrowlHelper.app> (from the F</Library/PreferencePanes/Growl.prefPane/Contents/Resources/> directory) first on the command line, to create the glue file.
 
-
-=head1 TODO
-
-For the Foundation implementation, make the iconOfApp argument work in C<RegisterNotifications> and image argument work for C<PostNotification>.  Somebody else ... ?
-
-
 =head1 EXPORT
 
 None by default.
@@ -418,26 +472,38 @@
 =head1 AUTHORS
 
 Nelson Elhage E<lt>nelhage@gmail.comE<gt>,
-Chris Nandor E<lt>pudge@perl.orgE<gt>
+Chris Nandor E<lt>projects@pudge.netE<gt>
 
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (C) 2004 by Nelson Elhage
+Copyright (C) 2004-2005 The Growl Project.  All rights reserved.
 
-Copyright (c) The Growl Project, 2004 
-All rights reserved.
 
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
 
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
 
+1) Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
 
-1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2) Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
 
-2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
 
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-
 =cut
Index: Makefile.PL
===================================================================
--- Makefile.PL	(revision 1494)
+++ Makefile.PL	(working copy)
@@ -1,12 +1,50 @@
 use 5.008001;
 use ExtUtils::MakeMaker;
-# See lib/ExtUtils/MakeMaker.pm for details of how to influence
-# the contents of the Makefile that is written.
+use File::Spec::Functions;
+use Getopt::Long;
+
+my $opt = {};
+GetOptions($opt, 'growlhelperapp=s');
+
+my($GHA) = grep { -e } (
+	$opt->{growlhelperapp},
+	'/Library/PreferencePanes/Growl.prefPane/Contents/Resources/GrowlHelperApp.app'
+);
+
 WriteMakefile(
-    NAME              => 'Mac::Growl',
-    VERSION_FROM      => 'lib/Mac/Growl.pm', # finds $VERSION
-    PREREQ_PM         => {}, # e.g., Module::Name => 1.1
-    ($] >= 5.005 ?     ## Add these new keywords supported since 5.005
-      (ABSTRACT_FROM  => 'lib/Mac/Growl.pm', # retrieve abstract from module
-       AUTHOR         => 'Nelson Elhage <nelson@ne2.client2.attbi.com>') : ()),
+	NAME		=> 'Mac::Growl',
+	VERSION_FROM	=> 'lib/Mac/Growl.pm',
+	clean		=> {
+		'FILES'		=> 'Mac-Growl-* .makeglue'
+	},
+	NO_META		=> 1,
 );
+
+sub findbin {
+	my($name) = @_;
+	chomp(my $path = `which $name 2>/dev/null`);
+	if (!$path || $path =~ /\bno gluemac\b/) {
+		my @paths = qw(/usr/local/bin /System/Library/Perl/Extras/bin @PREFIX@/bin /usr/bin);
+		for (@paths) {
+			my $test = catfile($_, $name);
+			if (-e $test) {
+				$path = $test;
+				last;
+			}
+		}
+	}
+	return $path;
+}
+
+sub MY::postamble {
+	return '' unless -e $GHA;
+	my $path = findbin('gluemac') or return '';
+	return <<"MAKE_FRAG";
+.makeglue:
+	@\$(PERL) '$path' -I '$GHA'
+	@\$(TOUCH) .makeglue
+
+all :: .makeglue
+
+MAKE_FRAG
+}
Index: Changes
===================================================================
--- Changes	(revision 1494)
+++ Changes	(working copy)
@@ -1,16 +1,22 @@
-Revision history for Perl extension Mac::Growl.
+0.61  Mon Mar  2 10:06:30 20004
+	- Updated to Growl 0.6, Mac OS X 10.4
+	- Made images work with Foundation again
 
-0.01  Wed Jun  2 16:53:51 2004
-	- original version; created by h2xs 1.23 with options
-		-A -n Mac::Growl
-0.20  Wed Jun  2 21:27  2004
-    - Implemented RegisterNotifications and PostNotification
-	  Both work now, but there is no image support.
+0.60  Mon Nov 15 21:32:08 20004
+	- Rewrote to work with images and alternate implementations
+
+0.26  Tue Aug 16 16:33:18 2004
+	- Modified to use modified notification posting protocol
+
 0.25  Thu Jun 10 16:23:53 2004
 	- Recreated by h2xs 1.23 with options
 		-A -n Mac::Growl -X
 	- Reimplemented using PerlObjCBridge
-0.26  Tue Aug 16 16:33:18 2004
-	- Modified to use modified notification posting protocol
-0.60  Mon Nov 15 21:32:08 20004
-	- Rewrote to work with images and alternate implementations
+
+0.20  Wed Jun  2 21:27  2004
+    - Implemented RegisterNotifications and PostNotification
+	  Both work now, but there is no image support.
+
+0.01  Wed Jun  2 16:53:51 2004
+	- original version; created by h2xs 1.23 with options
+		-A -n Mac::Growl
Index: README
===================================================================
--- README	(revision 1494)
+++ README	(working copy)
@@ -1,6 +1,3 @@
-Mac-Growl version 0.60
-======================
-
 Mac::Growl provides an interface for perl scripts to connect to Growl,
 allowing them to register with it, and send it notifications to be
 displayed.
@@ -14,36 +11,52 @@
 To install this module type the following:
 
    perl Makefile.PL
-   make
+   sudo make
    make test
    sudo make install
 
-make test will register "PerlApp" with growl with Growl, with one
-notification, "PerlApp-Test", and then post that notification with a message.
-Note, since there is currently no Growl->Caller communication, there is
+Note that sudo may be required for make, as well as make install.  If you
+get an error from trying to create a glue file during make, make clean
+and try again with sudo.
+
+make test will register "PerlApp" with growl with Growl, with two
+notifications, "a" and "b", and then post to those notification with various
+messages.  Since there is currently no Growl->Caller communication, there is
 no way for the test script to tell if it's working, and therefore will always
-report sucess. If you don't see the notification, check console, wait a while
+report success. If you don't see the notification, check console, wait a while
 and try again, and/or ask in #growl on irc.freenode.net.
 
 DEPENDENCIES
 
 This module should work on any Mac OS X system, although it requires
-the developer tools to build and install.
+the developer tools to build and install.  See the docs for more information.
 
 COPYRIGHT AND LICENCE
 
-Copyright (C) 2004 by Nelson Elhage
+Copyright (C) 2004-2005 The Growl Project.  All rights reserved.
 
-Copyright (c) The Growl Project, 2004 
-All rights reserved.
 
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
 
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
 
+1) Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
 
-1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2) Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
 
-2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
 
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
