Initial revision
authorRyan C. Gordon <icculus@icculus.org>
Mon, 05 Jan 2004 18:54:18 +0000
changeset 0 31eee864ed5d
child 1 67c84a6508ef
Initial revision
.DS_Store
.gdb_history
Makefile
MojoPatch.app/Contents/Info.plist
MojoPatch.app/Contents/MacOS/mojopatch
MojoPatch.app/Contents/MacOS/xdelta
MojoPatch.app/Contents/PkgInfo
MojoPatch.app/Contents/Resources/English.lproj/InfoPlist.strings
MojoPatch.app/Contents/Resources/mojopatch.icns
MojoPatch.app/Contents/Resources/mojopatch.nib/classes.nib
MojoPatch.app/Contents/Resources/mojopatch.nib/info.nib
MojoPatch.app/Contents/Resources/mojopatch.nib/objects.xib
TODO
md5.c
md5.h
mojopatch.c
platform.h
platform_unix.c
platform_win32.c
test
test.c
tmp.txt
ui.h
ui_carbon.c
ui_stdio.c
x.txt
xdelta-1.1.3/.libs/libxdelta.lai
xdelta-1.1.3/AUTHORS
xdelta-1.1.3/COPYING
xdelta-1.1.3/ChangeLog
xdelta-1.1.3/INSTALL
xdelta-1.1.3/Makefile
xdelta-1.1.3/Makefile.am
xdelta-1.1.3/Makefile.in
xdelta-1.1.3/NEWS
xdelta-1.1.3/README
xdelta-1.1.3/aclocal.m4
xdelta-1.1.3/autogen.sh
xdelta-1.1.3/config.cache
xdelta-1.1.3/config.guess
xdelta-1.1.3/config.h
xdelta-1.1.3/config.h.in
xdelta-1.1.3/config.log
xdelta-1.1.3/config.status
xdelta-1.1.3/config.sub
xdelta-1.1.3/configure
xdelta-1.1.3/configure.in
xdelta-1.1.3/djgpp/Makefile
xdelta-1.1.3/djgpp/Makefile.am
xdelta-1.1.3/djgpp/Makefile.in
xdelta-1.1.3/djgpp/announce.djg
xdelta-1.1.3/djgpp/readme.djg
xdelta-1.1.3/doc/Makefile
xdelta-1.1.3/doc/Makefile.am
xdelta-1.1.3/doc/Makefile.in
xdelta-1.1.3/doc/xdelta.1
xdelta-1.1.3/doc/xdelta.cat
xdelta-1.1.3/getopt.c
xdelta-1.1.3/getopt.h
xdelta-1.1.3/getopt1.c
xdelta-1.1.3/install-sh
xdelta-1.1.3/libedsio/.libs/libedsio.lai
xdelta-1.1.3/libedsio/Makefile
xdelta-1.1.3/libedsio/Makefile.am
xdelta-1.1.3/libedsio/Makefile.in
xdelta-1.1.3/libedsio/base64.c
xdelta-1.1.3/libedsio/base64.lo
xdelta-1.1.3/libedsio/default.c
xdelta-1.1.3/libedsio/default.lo
xdelta-1.1.3/libedsio/edsio-comp
xdelta-1.1.3/libedsio/edsio-comp.in
xdelta-1.1.3/libedsio/edsio.c
xdelta-1.1.3/libedsio/edsio.el
xdelta-1.1.3/libedsio/edsio.h
xdelta-1.1.3/libedsio/edsio.lo
xdelta-1.1.3/libedsio/edsio.prj
xdelta-1.1.3/libedsio/edsio.ser
xdelta-1.1.3/libedsio/edsio_edsio.c
xdelta-1.1.3/libedsio/edsio_edsio.h
xdelta-1.1.3/libedsio/edsio_edsio.lo
xdelta-1.1.3/libedsio/edsiotest
xdelta-1.1.3/libedsio/edsiotest.c
xdelta-1.1.3/libedsio/fh.c
xdelta-1.1.3/libedsio/fh.lo
xdelta-1.1.3/libedsio/generic.c
xdelta-1.1.3/libedsio/generic.lo
xdelta-1.1.3/libedsio/libedsio.la
xdelta-1.1.3/libedsio/library.c
xdelta-1.1.3/libedsio/library.lo
xdelta-1.1.3/libedsio/maketime.c
xdelta-1.1.3/libedsio/maketime.h
xdelta-1.1.3/libedsio/maketime.lo
xdelta-1.1.3/libedsio/md5c.c
xdelta-1.1.3/libedsio/md5c.lo
xdelta-1.1.3/libedsio/partime.c
xdelta-1.1.3/libedsio/partime.h
xdelta-1.1.3/libedsio/partime.lo
xdelta-1.1.3/libedsio/sha.c
xdelta-1.1.3/libedsio/sha.lo
xdelta-1.1.3/libedsio/simple.c
xdelta-1.1.3/libedsio/simple.lo
xdelta-1.1.3/libedsio/stamp-ser1
xdelta-1.1.3/libtool
xdelta-1.1.3/libxdelta.la
xdelta-1.1.3/ltconfig
xdelta-1.1.3/ltmain.sh
xdelta-1.1.3/missing
xdelta-1.1.3/mkinstalldirs
xdelta-1.1.3/stamp-h
xdelta-1.1.3/stamp-h.in
xdelta-1.1.3/stamp-ser
xdelta-1.1.3/test/Makefile
xdelta-1.1.3/test/Makefile.am
xdelta-1.1.3/test/Makefile.in
xdelta-1.1.3/test/README.test
xdelta-1.1.3/test/xdeltatest
xdelta-1.1.3/test/xdeltatest.c
xdelta-1.1.3/xd.ser
xdelta-1.1.3/xd_edsio.c
xdelta-1.1.3/xd_edsio.h
xdelta-1.1.3/xd_edsio.lo
xdelta-1.1.3/xdapply.c
xdelta-1.1.3/xdapply.lo
xdelta-1.1.3/xdelta
xdelta-1.1.3/xdelta-config
xdelta-1.1.3/xdelta-config.in
xdelta-1.1.3/xdelta.c
xdelta-1.1.3/xdelta.dsp
xdelta-1.1.3/xdelta.dsw
xdelta-1.1.3/xdelta.h
xdelta-1.1.3/xdelta.lo
xdelta-1.1.3/xdelta.m4
xdelta-1.1.3/xdelta.magic
xdelta-1.1.3/xdelta.prj
xdelta-1.1.3/xdeltapriv.h
xdelta-1.1.3/xdmain.c
xdelta-1.1.3/xdrsync.c
Binary file .DS_Store has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.gdb_history	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,256 @@
+n
+p window
+n
+p myArray
+p NSApp
+p *NSApp
+q
+c
+q
+b ui_total_progress 
+r
+n
+p window
+n
+q
+r
+q
+b printf
+r
+up
+c
+q
+b ui_total_progress 
+r
+n
+p window
+n
+p myArray
+q
+r
+up
+q
+b chdir_by_identifier 
+r
+n
+p id
+n
+p id
+n
+n
+q
+b chdir_by_identifier 
+r
+n
+n
+n
+p rc
+n
+n
+n
+n
+q
+b chdir_by_identifier 
+r
+n
+q
+b chdir_by_identifier 
+r
+n
+p len
+n
+p len
+p buf
+n
+p buf
+q
+r
+q
+b main
+r
+q
+b main
+r x y
+n
+n
+n
+s
+n
+n
+p statbuf
+q
+b main
+r x y
+n
+n
+n
+s
+n
+n
+p/x statbuf.st_mode
+n
+n
+p S_IFLNK
+n
+n
+s
+n
+p/x statbuf.st_mode
+q
+p 0010000
+p/x 0010000
+p/x 0020000
+p/x 0030000
+p/x 0120000
+p 0x81a4 & 0120000
+p/x 0x81a4 & 0120000
+p 0120000
+q
+p/x 120000
+p/x 0120000
+q
+b chdir_by_identifier 
+r /Users/icculus/Desktop/test.mojopatch 
+n
+p buf
+n
+n
+s
+n
+n
+p mem
+n
+n
+n
+s
+n
+s
+n
+n
+p ptr
+q
+b chdir_by_identifier 
+r /Users/icculus/Desktop/test.mojopatch 
+n
+p buf
+n
+s
+n
+n
+n
+s
+n
+s
+n
+n
+p tag
+p *tag
+n
+n
+q
+b parse_xml
+r /Users/icculus/Desktop/test.mojopatch 
+n
+p tag
+p *tag
+n
+q
+b parse_xml
+r /Users/icculus/Desktop/test.mojopatch 
+n
+p tag
+n
+n
+n
+n
+q
+b parse_xml
+r /Users/icculus/Desktop/test.mojopatch 
+n
+p tag
+p value
+p val
+q
+b parse_xml
+r
+q
+b parse_xml
+r /Users/icculus/Desktop/test.mojopatch 
+n
+p ptr
+n
+q
+b parse_xml
+r /Users/icculus/Desktop/test.mojopatch 
+n
+p tag
+p val
+q
+b find_info_plist_version 
+r /Users/icculus/Desktop/test.mojopatch 
+n
+q
+b find_info_plist_version 
+r /Users/icculus/Desktop/test.mojopatch 
+n
+q
+b find_info_plist_version 
+r /Users/icculus/Desktop/test.mojopatch 
+n
+p tag
+p val
+n
+l
+l
+b 208
+commands 2
+end
+d 2
+l 208
+b 210
+commands 3
+p tag
+p val
+end
+c
+n
+n
+n
+c
+n
+n
+c
+n
+n
+p val
+n
+c
+q
+b main
+r
+s
+q
+b main
+r
+s
+n
+p buf
+n
+s
+n
+p ptr
+n
+cv
+c
+q
+b main
+r
+s
+n
+p buf
+n
+n
+s
+n
+p ptr
+q
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,72 @@
+
+# Quick Makefile by ryan c. gordon. (icculus@clutteredmind.org)
+
+CC := gcc
+LINKER := gcc
+BINDIR := bin
+SRCDIR := .
+
+platform := macosx
+
+ifeq ($(strip $(platform)),macosx)
+PLATFORMDEF := -DPLATFORM_UNIX -DPLATFORM_MACOSX
+PLATFORMSRCS := platform_unix.c ui_carbon.c
+LDFLAGS := -framework Carbon
+endif
+
+ifeq ($(strip $(platform)),win32)
+PLATFORMDEF := -DPLATFORM_WIN32
+PLATFORMSRCS := platform_win32.c ui_stdio.c
+endif
+
+ifeq ($(strip $(platform)),unix)
+PLATFORMDEF := -DPLATFORM_UNIX
+PLATFORMSRCS := platform_unix.c ui_stdio.c
+endif
+
+CFLAGS := $(PLATFORMDEF) -Wall -g -fsigned-char -fno-omit-frame-pointer -Os
+
+
+MOJOPATCHSRCS := mojopatch.c md5.c $(PLATFORMSRCS)
+OBJS1 := $(MOJOPATCHSRCS:.c=.o)
+OBJS2 := $(OBJS1:.cpp=.o)
+OBJS3 := $(OBJS2:.asm=.o)
+OBJS4 := $(OBJS3:.m=.o)
+MOJOPATCHOBJS := $(foreach f,$(OBJS4),$(BINDIR)/$(f))
+MOJOPATCHSRCS := $(foreach f,$(MOJOPATCHSRCS),$(SRCDIR)/$(f))
+
+.PHONY: all mojopatch clean distclean listobjs listsrcs
+
+all : mojopatch
+
+mojopatch : $(BINDIR)/mojopatch
+
+$(BINDIR)/%.o: $(SRCDIR)/%.m
+	$(CC) -c -o $@ $< $(CFLAGS)
+
+$(BINDIR)/%.o: $(SRCDIR)/%.cpp
+	$(CC) -c -o $@ $< $(CFLAGS)
+
+$(BINDIR)/%.o: $(SRCDIR)/%.c
+	$(CC) -c -o $@ $< $(CFLAGS)
+
+$(BINDIR)/mojopatch : $(BINDIR) $(MOJOPATCHOBJS)
+	$(LINKER) $(LDFLAGS) -o $@ $(MOJOPATCHOBJS)
+
+$(BINDIR):
+	mkdir -p $(BINDIR)
+
+distclean : clean
+
+clean:
+	rm -rf $(BINDIR)
+
+listsrcs:
+	@echo $(MOJOPATCHSRCS)
+
+listobjs:
+	@echo $(MOJOPATCHOBJS)
+
+
+# end of Makefile ...
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MojoPatch.app/Contents/Info.plist	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>mojopatch</string>
+	<key>CFBundleIdentifier</key>
+	<string>org.icculus.mojopatch</string>
+	<key>CFBundleIconFile</key>
+	<string>mojopatch.icns</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>0.0.1</string>
+	<key>CSResourcesFileMapped</key>
+	<true/>
+	<key>NSMainNibFile</key>
+	<string>mojopatch</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+	<key>CFBundleName</key>
+	<string>MojoPatch</string>
+</dict>
+</plist>
Binary file MojoPatch.app/Contents/MacOS/mojopatch has changed
Binary file MojoPatch.app/Contents/MacOS/xdelta has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MojoPatch.app/Contents/PkgInfo	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,1 @@
+APPL????
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MojoPatch.app/Contents/Resources/English.lproj/InfoPlist.strings	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,6 @@
+/* Localized versions of Info.plist keys */
+
+CFBundleName = "MojoPatch";
+CFBundleShortVersionString = "mojopatch";
+CFBundleGetInfoString = "MojoPatch";
+
Binary file MojoPatch.app/Contents/Resources/mojopatch.icns has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MojoPatch.app/Contents/Resources/mojopatch.nib/classes.nib	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,4 @@
+{
+IBClasses = ();
+IBVersion = 1;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MojoPatch.app/Contents/Resources/mojopatch.nib/info.nib	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IBDocumentLocation</key>
+	<string>19 92 356 240 0 0 1024 746 </string>
+	<key>IBEditorPositions</key>
+	<dict>
+		<key>29</key>
+		<string>69 323 97 44 0 0 1024 746 </string>
+	</dict>
+	<key>IBFramework Version</key>
+	<string>349.0</string>
+	<key>IBOldestOS</key>
+	<integer>2</integer>
+	<key>IBOpenObjects</key>
+	<array>
+		<integer>29</integer>
+		<integer>166</integer>
+	</array>
+	<key>IBSystem Version</key>
+	<string>7B85</string>
+	<key>targetFramework</key>
+	<string>IBCarbonFramework</string>
+</dict>
+</plist>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MojoPatch.app/Contents/Resources/mojopatch.nib/objects.xib	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" standalone="yes"?>
+<object class="NSIBObjectData">
+  <string name="targetFramework">IBCarbonFramework</string>
+  <object name="rootObject" class="NSCustomObject" id="1">
+    <string name="customClass">NSApplication</string>
+  </object>
+  <array count="8" name="allObjects">
+    <object class="IBCarbonMenu" id="29">
+      <string name="title">mojopatch</string>
+      <array count="1" name="items">
+        <object class="IBCarbonMenuItem" id="185">
+          <string name="title">MojoPatch</string>
+          <object name="submenu" class="IBCarbonMenu" id="184">
+            <string name="title">NewApplication</string>
+            <array count="1" name="items">
+              <object class="IBCarbonMenuItem" id="187">
+                <boolean name="updateSingleItem">TRUE</boolean>
+                <string name="title">About MojoPatch</string>
+                <int name="keyEquivalentModifier">0</int>
+                <ostype name="command">abou</ostype>
+              </object>
+            </array>
+            <string name="name">_NSAppleMenu</string>
+          </object>
+        </object>
+      </array>
+      <string name="name">_NSMainMenu</string>
+    </object>
+    <object class="IBCarbonWindow" id="166">
+      <string name="windowRect">357 253 450 671 </string>
+      <string name="title">MojoPatch</string>
+      <object name="rootControl" class="IBCarbonRootControl" id="167">
+        <string name="bounds">0 0 93 418 </string>
+        <string name="viewFrame">0 0 418 93 </string>
+        <array count="2" name="subviews">
+          <object class="IBCarbonProgressBar" id="193">
+            <string name="bounds">42 19 61 399 </string>
+            <string name="viewFrame">19 42 380 19 </string>
+            <ostype name="controlSignature">mjpt</ostype>
+            <int name="controlID">1</int>
+          </object>
+          <object class="IBCarbonStaticText" id="194">
+            <string name="bounds">14 20 30 398 </string>
+            <string name="viewFrame">20 14 378 16 </string>
+            <ostype name="controlSignature">mjpt</ostype>
+            <string name="title">Patching in progress...</string>
+          </object>
+        </array>
+      </object>
+      <boolean name="receiveUpdates">FALSE</boolean>
+      <boolean name="hasCloseBox">FALSE</boolean>
+      <boolean name="hasHorizontalZoom">FALSE</boolean>
+      <boolean name="isResizable">FALSE</boolean>
+      <boolean name="hasVerticalZoom">FALSE</boolean>
+      <boolean name="liveResize">TRUE</boolean>
+      <boolean name="metal">TRUE</boolean>
+      <boolean name="compositing">TRUE</boolean>
+      <int name="windowPosition">1</int>
+    </object>
+    <reference idRef="167"/>
+    <reference idRef="184"/>
+    <reference idRef="185"/>
+    <reference idRef="187"/>
+    <reference idRef="193"/>
+    <reference idRef="194"/>
+  </array>
+  <array count="8" name="allParents">
+    <reference idRef="1"/>
+    <reference idRef="1"/>
+    <reference idRef="166"/>
+    <reference idRef="185"/>
+    <reference idRef="29"/>
+    <reference idRef="184"/>
+    <reference idRef="167"/>
+    <reference idRef="167"/>
+  </array>
+  <dictionary count="3" name="nameTable">
+    <string>Files Owner</string>
+    <reference idRef="1"/>
+    <string>MainWindow</string>
+    <reference idRef="166"/>
+    <string>MenuBar</string>
+    <reference idRef="29"/>
+  </dictionary>
+  <unsigned_int name="nextObjectID">195</unsigned_int>
+</object>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TODO	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,6 @@
+
+- md5sum of patchfile itself?
+- Move confirm() to UI abstraction.
+- Integrate xdelta into single binary?
+- Lots of tests for dir/notdir or file/notfile...no symlinks support, etc.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/md5.c	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,394 @@
+/*
+  Copyright (C) 1999 Aladdin Enterprises.  All rights reserved.
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  L. Peter Deutsch
+  ghost@@aladdin.com
+
+ */
+/*$Id: md5.c,v 1.1 2004/01/05 18:54:19 icculus Exp $ */
+/*
+  Independent implementation of MD5 (RFC 1321).
+
+  This code implements the MD5 Algorithm defined in RFC 1321.
+  It is derived directly from the text of the RFC and not from the
+  reference implementation.
+
+  The original and principal author of md5.c is L. Peter Deutsch
+  <ghost@@aladdin.com>.  Other authors are noted in the change history
+  that follows (in reverse chronological order):
+
+  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
+  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
+  1999-05-03 lpd Original version.
+ */
+
+#include "md5.h"
+#include <memory.h>
+
+#ifdef TEST
+/*
+ * Compile with -DTEST to create a self-contained executable test program.
+ * The test program should print out the same values as given in section
+ * A.5 of RFC 1321, reproduced below.
+ */
+#include <string.h>
+main()
+{
+    static const char *const test[7] = {
+	"", /*d41d8cd98f00b204e9800998ecf8427e*/
+	"a", /*0cc175b9c0f1b6a831c399e269772661*/
+	"abc", /*900150983cd24fb0d6963f7d28e17f72*/
+	"message digest", /*f96b697d7cb7938d525a2f31aaf161d0*/
+	"abcdefghijklmnopqrstuvwxyz", /*c3fcd3d76192e4007dfb496cca67e13b*/
+	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
+				/*d174ab98d277d9f5a5611c2c9f419d9f*/
+	"12345678901234567890123456789012345678901234567890123456789012345678901234567890" /*57edf4a22be3c955ac49da2e2107b67a*/
+    };
+    int i;
+
+    for (i = 0; i < 7; ++i) {
+	md5_state_t state;
+	md5_byte_t digest[16];
+	int di;
+
+	md5_init(&state);
+	md5_append(&state, (const md5_byte_t *)test[i], strlen(test[i]));
+	md5_finish(&state, digest);
+	printf("MD5 (\"%s\") = ", test[i]);
+	for (di = 0; di < 16; ++di)
+	    printf("%02x", digest[di]);
+	printf("\n");
+    }
+    return 0;
+}
+#endif /* TEST */
+
+
+/*
+ * For reference, here is the program that computed the T values.
+ */
+#if 0
+#include <math.h>
+main()
+{
+    int i;
+    for (i = 1; i <= 64; ++i) {
+	unsigned long v = (unsigned long)(4294967296.0 * fabs(sin((double)i)));
+	printf("#define T%d 0x%08lx\n", i, v);
+    }
+    return 0;
+}
+#endif
+/*
+ * End of T computation program.
+ */
+#define T1 0xd76aa478
+#define T2 0xe8c7b756
+#define T3 0x242070db
+#define T4 0xc1bdceee
+#define T5 0xf57c0faf
+#define T6 0x4787c62a
+#define T7 0xa8304613
+#define T8 0xfd469501
+#define T9 0x698098d8
+#define T10 0x8b44f7af
+#define T11 0xffff5bb1
+#define T12 0x895cd7be
+#define T13 0x6b901122
+#define T14 0xfd987193
+#define T15 0xa679438e
+#define T16 0x49b40821
+#define T17 0xf61e2562
+#define T18 0xc040b340
+#define T19 0x265e5a51
+#define T20 0xe9b6c7aa
+#define T21 0xd62f105d
+#define T22 0x02441453
+#define T23 0xd8a1e681
+#define T24 0xe7d3fbc8
+#define T25 0x21e1cde6
+#define T26 0xc33707d6
+#define T27 0xf4d50d87
+#define T28 0x455a14ed
+#define T29 0xa9e3e905
+#define T30 0xfcefa3f8
+#define T31 0x676f02d9
+#define T32 0x8d2a4c8a
+#define T33 0xfffa3942
+#define T34 0x8771f681
+#define T35 0x6d9d6122
+#define T36 0xfde5380c
+#define T37 0xa4beea44
+#define T38 0x4bdecfa9
+#define T39 0xf6bb4b60
+#define T40 0xbebfbc70
+#define T41 0x289b7ec6
+#define T42 0xeaa127fa
+#define T43 0xd4ef3085
+#define T44 0x04881d05
+#define T45 0xd9d4d039
+#define T46 0xe6db99e5
+#define T47 0x1fa27cf8
+#define T48 0xc4ac5665
+#define T49 0xf4292244
+#define T50 0x432aff97
+#define T51 0xab9423a7
+#define T52 0xfc93a039
+#define T53 0x655b59c3
+#define T54 0x8f0ccc92
+#define T55 0xffeff47d
+#define T56 0x85845dd1
+#define T57 0x6fa87e4f
+#define T58 0xfe2ce6e0
+#define T59 0xa3014314
+#define T60 0x4e0811a1
+#define T61 0xf7537e82
+#define T62 0xbd3af235
+#define T63 0x2ad7d2bb
+#define T64 0xeb86d391
+
+static void
+md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
+{
+    md5_word_t
+	a = pms->abcd[0], b = pms->abcd[1],
+	c = pms->abcd[2], d = pms->abcd[3];
+    md5_word_t t;
+
+#ifndef ARCH_IS_BIG_ENDIAN
+# define ARCH_IS_BIG_ENDIAN 1	/* slower, default implementation */
+#endif
+#if ARCH_IS_BIG_ENDIAN
+
+    /*
+     * On big-endian machines, we must arrange the bytes in the right
+     * order.  (This also works on machines of unknown byte order.)
+     */
+    md5_word_t X[16];
+    const md5_byte_t *xp = data;
+    int i;
+
+    for (i = 0; i < 16; ++i, xp += 4)
+	X[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
+
+#else  /* !ARCH_IS_BIG_ENDIAN */
+
+    /*
+     * On little-endian machines, we can process properly aligned data
+     * without copying it.
+     */
+    md5_word_t xbuf[16];
+    const md5_word_t *X;
+
+    if (!((data - (const md5_byte_t *)0) & 3)) {
+	/* data are properly aligned */
+	X = (const md5_word_t *)data;
+    } else {
+	/* not aligned */
+	memcpy(xbuf, data, 64);
+	X = xbuf;
+    }
+#endif
+
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
+
+    /* Round 1. */
+    /* Let [abcd k s i] denote the operation
+       a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
+#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
+#define SET(a, b, c, d, k, s, Ti)\
+  t = a + F(b,c,d) + X[k] + Ti;\
+  a = ROTATE_LEFT(t, s) + b
+    /* Do the following 16 operations. */
+    SET(a, b, c, d,  0,  7,  T1);
+    SET(d, a, b, c,  1, 12,  T2);
+    SET(c, d, a, b,  2, 17,  T3);
+    SET(b, c, d, a,  3, 22,  T4);
+    SET(a, b, c, d,  4,  7,  T5);
+    SET(d, a, b, c,  5, 12,  T6);
+    SET(c, d, a, b,  6, 17,  T7);
+    SET(b, c, d, a,  7, 22,  T8);
+    SET(a, b, c, d,  8,  7,  T9);
+    SET(d, a, b, c,  9, 12, T10);
+    SET(c, d, a, b, 10, 17, T11);
+    SET(b, c, d, a, 11, 22, T12);
+    SET(a, b, c, d, 12,  7, T13);
+    SET(d, a, b, c, 13, 12, T14);
+    SET(c, d, a, b, 14, 17, T15);
+    SET(b, c, d, a, 15, 22, T16);
+#undef SET
+
+     /* Round 2. */
+     /* Let [abcd k s i] denote the operation
+          a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
+#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
+#define SET(a, b, c, d, k, s, Ti)\
+  t = a + G(b,c,d) + X[k] + Ti;\
+  a = ROTATE_LEFT(t, s) + b
+     /* Do the following 16 operations. */
+    SET(a, b, c, d,  1,  5, T17);
+    SET(d, a, b, c,  6,  9, T18);
+    SET(c, d, a, b, 11, 14, T19);
+    SET(b, c, d, a,  0, 20, T20);
+    SET(a, b, c, d,  5,  5, T21);
+    SET(d, a, b, c, 10,  9, T22);
+    SET(c, d, a, b, 15, 14, T23);
+    SET(b, c, d, a,  4, 20, T24);
+    SET(a, b, c, d,  9,  5, T25);
+    SET(d, a, b, c, 14,  9, T26);
+    SET(c, d, a, b,  3, 14, T27);
+    SET(b, c, d, a,  8, 20, T28);
+    SET(a, b, c, d, 13,  5, T29);
+    SET(d, a, b, c,  2,  9, T30);
+    SET(c, d, a, b,  7, 14, T31);
+    SET(b, c, d, a, 12, 20, T32);
+#undef SET
+
+     /* Round 3. */
+     /* Let [abcd k s t] denote the operation
+          a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
+#define H(x, y, z) ((x) ^ (y) ^ (z))
+#define SET(a, b, c, d, k, s, Ti)\
+  t = a + H(b,c,d) + X[k] + Ti;\
+  a = ROTATE_LEFT(t, s) + b
+     /* Do the following 16 operations. */
+    SET(a, b, c, d,  5,  4, T33);
+    SET(d, a, b, c,  8, 11, T34);
+    SET(c, d, a, b, 11, 16, T35);
+    SET(b, c, d, a, 14, 23, T36);
+    SET(a, b, c, d,  1,  4, T37);
+    SET(d, a, b, c,  4, 11, T38);
+    SET(c, d, a, b,  7, 16, T39);
+    SET(b, c, d, a, 10, 23, T40);
+    SET(a, b, c, d, 13,  4, T41);
+    SET(d, a, b, c,  0, 11, T42);
+    SET(c, d, a, b,  3, 16, T43);
+    SET(b, c, d, a,  6, 23, T44);
+    SET(a, b, c, d,  9,  4, T45);
+    SET(d, a, b, c, 12, 11, T46);
+    SET(c, d, a, b, 15, 16, T47);
+    SET(b, c, d, a,  2, 23, T48);
+#undef SET
+
+     /* Round 4. */
+     /* Let [abcd k s t] denote the operation
+          a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
+#define I(x, y, z) ((y) ^ ((x) | ~(z)))
+#define SET(a, b, c, d, k, s, Ti)\
+  t = a + I(b,c,d) + X[k] + Ti;\
+  a = ROTATE_LEFT(t, s) + b
+     /* Do the following 16 operations. */
+    SET(a, b, c, d,  0,  6, T49);
+    SET(d, a, b, c,  7, 10, T50);
+    SET(c, d, a, b, 14, 15, T51);
+    SET(b, c, d, a,  5, 21, T52);
+    SET(a, b, c, d, 12,  6, T53);
+    SET(d, a, b, c,  3, 10, T54);
+    SET(c, d, a, b, 10, 15, T55);
+    SET(b, c, d, a,  1, 21, T56);
+    SET(a, b, c, d,  8,  6, T57);
+    SET(d, a, b, c, 15, 10, T58);
+    SET(c, d, a, b,  6, 15, T59);
+    SET(b, c, d, a, 13, 21, T60);
+    SET(a, b, c, d,  4,  6, T61);
+    SET(d, a, b, c, 11, 10, T62);
+    SET(c, d, a, b,  2, 15, T63);
+    SET(b, c, d, a,  9, 21, T64);
+#undef SET
+
+     /* Then perform the following additions. (That is increment each
+        of the four registers by the value it had before this block
+        was started.) */
+    pms->abcd[0] += a;
+    pms->abcd[1] += b;
+    pms->abcd[2] += c;
+    pms->abcd[3] += d;
+}
+
+void
+md5_init(md5_state_t *pms)
+{
+    pms->count[0] = pms->count[1] = 0;
+    pms->abcd[0] = 0x67452301;
+    pms->abcd[1] = 0xefcdab89;
+    pms->abcd[2] = 0x98badcfe;
+    pms->abcd[3] = 0x10325476;
+}
+
+void
+md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
+{
+    const md5_byte_t *p = data;
+    int left = nbytes;
+    int offset = (pms->count[0] >> 3) & 63;
+    md5_word_t nbits = (md5_word_t)(nbytes << 3);
+
+    if (nbytes <= 0)
+	return;
+
+    /* Update the message length. */
+    pms->count[1] += nbytes >> 29;
+    pms->count[0] += nbits;
+    if (pms->count[0] < nbits)
+	pms->count[1]++;
+
+    /* Process an initial partial block. */
+    if (offset) {
+	int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
+
+	memcpy(pms->buf + offset, p, copy);
+	if (offset + copy < 64)
+	    return;
+	p += copy;
+	left -= copy;
+	md5_process(pms, pms->buf);
+    }
+
+    /* Process full blocks. */
+    for (; left >= 64; p += 64, left -= 64)
+	md5_process(pms, p);
+
+    /* Process a final partial block. */
+    if (left)
+	memcpy(pms->buf, p, left);
+}
+
+void
+md5_finish(md5_state_t *pms, md5_byte_t digest[16])
+{
+    static const md5_byte_t pad[64] = {
+	0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+    };
+    md5_byte_t data[8];
+    int i;
+
+    /* Save the length before padding. */
+    for (i = 0; i < 8; ++i)
+	data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
+    /* Pad to 56 bytes mod 64. */
+    md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
+    /* Append the length. */
+    md5_append(pms, data, 8);
+    for (i = 0; i < 16; ++i)
+	digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/md5.h	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,115 @@
+/*
+  Copyright (C) 1999 Aladdin Enterprises.  All rights reserved.
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  L. Peter Deutsch
+  ghost@@aladdin.com
+
+ */
+/*$Id: md5.h,v 1.1 2004/01/05 18:54:19 icculus Exp $ */
+/*
+  Independent implementation of MD5 (RFC 1321).
+
+  This code implements the MD5 Algorithm defined in RFC 1321.
+  It is derived directly from the text of the RFC and not from the
+  reference implementation.
+
+  The original and principal author of md5.h is L. Peter Deutsch
+  <ghost@@aladdin.com>.  Other authors are noted in the change history
+  that follows (in reverse chronological order):
+
+  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
+  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
+	added conditionalization for C++ compilation from Martin
+	Purschke <purschke@@bnl.gov>.
+  1999-05-03 lpd Original version.
+ */
+
+#ifndef md5_INCLUDED
+#  define md5_INCLUDED
+
+#if ((PLATFORM_WIN32) || (defined WIN32))
+#define ARCH_IS_BIG_ENDIAN 0
+
+#elif (defined PLATFORM_UNIX)
+
+/* thanks to SDL headers for this. */
+#if  defined(__i386__) || defined(__ia64__) || defined(WIN32) || \
+    (defined(__alpha__) || defined(__alpha)) || \
+     defined(__arm__) || \
+    (defined(__mips__) && defined(__MIPSEL__)) || \
+     defined(__LITTLE_ENDIAN__)
+  #define ARCH_IS_BIG_ENDIAN 0
+#else
+  #define ARCH_IS_BIG_ENDIAN 1
+#endif
+
+#else
+#error Please add your platform.
+#endif
+
+/*
+ * This code has some adaptations for the Ghostscript environment, but it
+ * will compile and run correctly in any environment with 8-bit chars and
+ * 32-bit ints.  Specifically, it assumes that if the following are
+ * defined, they have the same meaning as in Ghostscript: P1, P2, P3,
+ * ARCH_IS_BIG_ENDIAN.
+ */
+
+typedef unsigned char md5_byte_t; /* 8-bit byte */
+typedef unsigned int md5_word_t; /* 32-bit word */
+
+/* Define the state of the MD5 Algorithm. */
+typedef struct md5_state_s {
+    md5_word_t count[2];	/* message length in bits, lsw first */
+    md5_word_t abcd[4];		/* digest buffer */
+    md5_byte_t buf[64];		/* accumulate block */
+} md5_state_t;
+
+#ifdef __cplusplus
+extern "C" 
+{
+#endif
+
+/* Initialize the algorithm. */
+#ifdef P1
+void md5_init(P1(md5_state_t *pms));
+#else
+void md5_init(md5_state_t *pms);
+#endif
+
+/* Append a string to the message. */
+#ifdef P3
+void md5_append(P3(md5_state_t *pms, const md5_byte_t *data, int nbytes));
+#else
+void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
+#endif
+
+/* Finish the message and return the digest. */
+#ifdef P2
+void md5_finish(P2(md5_state_t *pms, md5_byte_t digest[16]));
+#else
+void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
+#endif
+
+#ifdef __cplusplus
+}  /* end extern "C" */
+#endif
+
+#endif /* md5_INCLUDED */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mojopatch.c	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,2010 @@
+/*
+ *----------------------------------------------------------------------------
+ *
+ * mojopatch
+ * Copyright (C) 2003  Ryan C. Gordon.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *----------------------------------------------------------------------------
+ *
+ * (Insert documentation here.)
+ *
+ *----------------------------------------------------------------------------
+ *
+ *  This software was written quickly, is not well-engineered, and may have
+ *   catastrophic bugs. Its method is brute-force, at best. Use at your
+ *   own risk. Don't eat yellow snow.
+ *
+ *   Send patches, improvements, suggestions, etc to Ryan:
+ *    icculus@clutteredmind.org.
+ *
+ *----------------------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <errno.h>
+#include <time.h>
+#include <ctype.h>
+
+#include "platform.h"
+#include "ui.h"
+#include "md5.h"
+
+#define VERSION "0.0.3"
+
+#define DEFAULT_PATCHFILENAME "default.mojopatch"
+
+#define PATCHERROR    0
+#define PATCHSUCCESS  1
+#define MOJOPATCHSIG "mojopatch " VERSION " (icculus@clutteredmind.org)\r\n"
+
+#define OPERATION_DELETE          27
+#define OPERATION_DELETEDIRECTORY 28
+#define OPERATION_ADD             29
+#define OPERATION_ADDDIRECTORY    30
+#define OPERATION_PATCH           31
+#define OPERATION_REPLACE         32
+
+typedef enum
+{
+    COMMAND_NONE = 0,
+    COMMAND_CREATE,
+    COMMAND_INFO,
+    COMMAND_DOPATCHING,
+
+    COMMAND_TOTAL
+} PatchCommands;
+
+static int debug = 0;
+static int interactive = 0;
+static int replace = 0;
+static PatchCommands command = COMMAND_NONE;
+
+static const char *patchfile = NULL;
+static const char *dir1 = NULL;
+static const char *dir2 = NULL;
+
+static char *patchtmpfile = NULL;
+static char *patchtmpfile2 = NULL;
+
+static char product[128] = {0};
+static char identifier[128] = {0};
+static char version[128] = {0};
+static char newversion[128] = {0};
+static char readme[128] = {0};
+static char renamedir[128] = {0};
+
+static char **ignorelist = NULL;
+static int ignorecount = 0;
+
+static unsigned int maxxdeltamem = 128;  /* in megabytes. */
+
+static unsigned char iobuf[512 * 1024];
+
+/* printf-style: makes string for UI to put in the log. */
+void _fatal(const char *fmt, ...)
+{
+    char buf[512];
+    va_list ap;
+    va_start(ap, fmt);
+    vsnprintf(buf, sizeof (buf), fmt, ap);
+    va_end(ap);
+    buf[sizeof(buf)-1] = '\0';
+    ui_fatal(buf);
+    ui_pump();
+} /* _fatal */
+
+/* printf-style: makes string for UI to put in the log. */
+void _log(const char *fmt, ...)
+{
+    char buf[512];
+    va_list ap;
+    va_start(ap, fmt);
+    vsnprintf(buf, sizeof (buf), fmt, ap);
+    va_end(ap);
+    buf[sizeof(buf)-1] = '\0';
+    ui_add_to_log(buf, 0);
+    ui_pump();
+} /* _log */
+
+
+/* printf-style: makes string for UI to put in the log if debugging enabled. */
+void _dlog(const char *fmt, ...)
+{
+    if (debug)
+    {
+        char buf[512];
+        va_list ap;
+        va_start(ap, fmt);
+        vsnprintf(buf, sizeof (buf), fmt, ap);
+        va_end(ap);
+        buf[sizeof(buf)-1] = '\0';
+        ui_add_to_log(buf, 1);
+        ui_pump();
+    } /* if */
+} /* _dlog */
+
+static void _current_operation(const char *fmt, ...)
+{
+    char buf[512];
+    va_list ap;
+    va_start(ap, fmt);
+    vsnprintf(buf, sizeof (buf), fmt, ap);
+    va_end(ap);
+    buf[sizeof(buf)-1] = '\0';
+    ui_status(buf);
+    ui_pump();
+} /* _current_operation */
+
+
+static int _do_xdelta(const char *fmt, ...)
+{
+    char buf[512];
+    va_list ap;
+    va_start(ap, fmt);
+    vsnprintf(buf, sizeof (buf), fmt, ap);
+    va_end(ap);
+    buf[sizeof(buf)-1] = '\0';
+	_dlog("(xdelta call: [%s].)", buf);
+    return(spawn_xdelta(buf));
+} /* _do_xdelta */
+
+
+static int in_ignore_list(const char *fname)
+{
+    int i;
+    for (i = 0; i < ignorecount; i++)
+    {
+        if (strcmp(fname, ignorelist[i]) == 0)
+        {
+            _log("Ignoring %s on user's instructions.", fname);
+            return(1);
+        } /* if */
+    } /* for */
+
+    return(0);
+} /* in_ignore_list */
+
+
+static inline int info_only(void)
+{
+    return(command == COMMAND_INFO);
+} /* info_only */
+
+
+static void free_filelist(file_list *list)
+{
+    file_list *next;
+    while (list != NULL)
+    {
+        next = list->next;
+        free(list->fname);
+        free(list);
+        list = next;
+    } /* while */
+} /* free_filelist */
+
+
+static int write_between_files(FILE *in, FILE *out, long fsize)
+{
+    while (fsize > 0)
+    {
+        int max = sizeof (iobuf);
+        if (max > fsize)
+            max = fsize;
+
+        int br = fread(iobuf, 1, max, in);
+        if (br <= 0)
+        {
+            _fatal("read error: %s.", strerror(errno));
+            return(PATCHERROR);
+        } /* if */
+        ui_pump();
+
+        if (fwrite(iobuf, br, 1, out) != 1)
+        {
+            _fatal("write error: %s.", strerror(errno));
+            return(PATCHERROR);
+        } /* if */
+        ui_pump();
+
+        fsize -= br;
+    } /* while */
+
+    return(PATCHSUCCESS);
+} /* write_between_files */
+
+
+static int do_rename(const char *from, const char *to)
+{
+    FILE *in;
+    FILE *out;
+    long fsize;
+    int rc;
+
+    unlink(to);  /* just in case. */
+    if (rename(from, to) != -1)
+        return(PATCHSUCCESS);
+
+    /* rename() might fail if from and to are on seperate filesystems. */
+
+    rc = get_file_size(from, &fsize);
+    in = fopen(from, "rb");
+    out = fopen(to, "wb");
+    if ((!rc) || (!in) || (!out))
+    {
+        if (in)
+            fclose(in);
+        if (out)
+            fclose(out);
+        unlink(to);
+        _fatal("File copy failed.");
+        return(PATCHERROR);
+    } /* if */
+
+    rc = write_between_files(in, out, fsize);
+
+    fclose(in);
+    if ((fclose(out) == -1) && (rc != PATCHERROR))
+    {
+        _fatal("File copy failed.");
+        return(PATCHERROR);
+    } /* if */
+
+    unlink(from);
+
+    return(rc);
+} /* do_rename */
+
+
+static int md5sum(FILE *in, md5_byte_t *digest, int output)
+{
+    md5_state_t md5state;
+    long br;
+
+    _dlog("md5summing...");
+
+    memset(digest, '\0', 16);
+    md5_init(&md5state);
+
+    if (fseek(in, 0, SEEK_SET) == -1)
+    {
+        _fatal("Couldn't seek in file: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    while (1)
+    {
+        ui_pump();
+
+        br = fread(iobuf, 1, sizeof (iobuf), in);
+        if (br == 0)
+        {
+            int err = errno;
+            if (feof(in))
+                break;
+            else
+            {
+                _fatal("Read error: %s.", strerror(err));
+                return(PATCHERROR);
+            } /* else */
+        } /* if */
+        md5_append(&md5state, (const md5_byte_t *) iobuf, br);
+    } /* while */
+
+    md5_finish(&md5state, digest);
+
+    if ((output) || (debug))
+    {
+      /* ugly, but want to print it all on one line... */
+        _log("  (md5sum: %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x)",
+              digest[0],  digest[1],  digest[2],  digest[3],
+              digest[4],  digest[5],  digest[6],  digest[7],
+              digest[8],  digest[9],  digest[10], digest[11],
+              digest[12], digest[13], digest[14], digest[15]);
+    } /* if */
+
+    if (fseek(in, 0, SEEK_SET) == -1)
+    {
+        _fatal("Couldn't seek in file: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    return(PATCHSUCCESS);
+} /* md5sum */
+
+
+static int verify_md5sum(md5_byte_t *md5, md5_byte_t *result, FILE *in, int isfatal)
+{
+    md5_byte_t thismd5[16];
+
+    if (md5sum(in, thismd5, 0) == PATCHERROR)
+        return(PATCHERROR);
+
+    if (result != NULL)
+		memcpy(result, thismd5, sizeof (thismd5));
+
+    if (memcmp(thismd5, md5, sizeof (thismd5)) != 0)
+    {
+        if (isfatal)
+            _fatal("md5sum doesn't match original!");
+        return(PATCHERROR);
+    } /* if */
+    
+    return(PATCHSUCCESS);
+} /* verify_md5sum */
+
+
+static int read_asciz_string(char *buffer, FILE *in)
+{
+    size_t i = 0;
+    int ch;
+
+    do
+    {
+        if (i >= MAX_PATH)
+        {
+            _fatal("String overflow error.");
+            return(PATCHERROR);
+        } /* if */
+
+        ch = fgetc(in);
+        if (ch == EOF)
+        {
+            if (feof(in))
+                _fatal("Unexpected EOF during read.");
+            else
+                _fatal("Error during read: %s.", strerror(errno));
+            return(PATCHERROR);
+        } /* if */
+
+        buffer[i] = (char) ch;
+    } while (buffer[i++] != '\0');
+
+    return(PATCHSUCCESS);
+} /* read_asciz_string */
+
+
+static int confirm(void)
+{
+    char buf[256];
+    char *ptr;
+
+    if (!interactive)
+        return(1);
+
+    while (1)
+    {
+        printf("Confirm [Y/n] : ");
+        fgets(buf, sizeof (buf) - 1, stdin);
+        if ( (ptr = strchr(buf, '\r')) != NULL )
+            *ptr = '\0';
+        if ( (ptr = strchr(buf, '\n')) != NULL )
+            *ptr = '\0';
+
+        if (strlen(buf) <= 1)
+        {
+            int ch = tolower((int) buf[0]);
+            if ((ch == '\0') || (ch == 'y'))
+            {
+                printf("Answered YES\n");
+                return(1);
+            } /* if */
+            else if (ch == 'n')
+            {
+                printf("Answered NO\n");
+                return(0);
+            } /* else if */
+        } /* if */
+    } /* while */
+} /* confirm */
+
+
+static const char *final_path_element(const char *fname)
+{
+    const char *ptr = (const char *) strrchr(fname, PATH_SEP[0]);
+    assert( (sizeof (PATH_SEP)) == (sizeof (char) * 2) );
+    return(ptr ? ptr + 1 : fname);
+} /* final_path_element */
+
+
+/* put a DELETE operation in the mojopatch file... */
+static int put_delete(const char *fname, FILE *out)
+{
+    unsigned char operation = OPERATION_DELETE;
+
+    _current_operation("DELETE %s", final_path_element(fname));
+    _log("DELETE %s", fname);
+
+    if (in_ignore_list(fname))
+        return(PATCHSUCCESS);
+
+    if (!confirm())
+        return(PATCHSUCCESS);
+
+    if (fwrite(&operation, sizeof (operation), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fwrite(fname, strlen(fname) + 1, 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    return(PATCHSUCCESS);
+} /* put_delete */
+
+
+/* get a DELETE operation from the mojopatch file... */
+static int get_delete(FILE *in)
+{
+    char fname[MAX_PATH];
+
+    if (read_asciz_string(fname, in) == PATCHERROR)
+        return(PATCHERROR);
+
+    _current_operation("DELETE %s", final_path_element(fname));
+    _log("DELETE %s", fname);
+
+    if ( (info_only()) || (!confirm()) )
+        return(PATCHSUCCESS);
+
+    if (in_ignore_list(fname))
+        return(PATCHSUCCESS);
+
+    if (!file_exists(fname))
+    {
+        _log("file seems to be gone already.");
+        return(PATCHSUCCESS);
+    } /* if */
+
+    if (file_is_directory(fname))
+    {
+        _fatal("Expected file, found directory!");
+        return(PATCHERROR);
+    } /* if */
+
+    if (remove(fname) == -1)
+    {
+        _fatal("Error removing [%s]: %s.", fname, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    _log("done DELETE.");
+    return(PATCHSUCCESS);
+} /* get_delete */
+
+
+/* put a DELETEDIRECTORY operation in the mojopatch file... */
+static int put_delete_dir(const char *fname1, const char *fname2, FILE *out)
+{
+    unsigned char operation = OPERATION_DELETEDIRECTORY;
+
+    _current_operation("DELETEDIRECTORY %s", final_path_element(fname2));
+    _log("DELETEDIRECTORY %s", fname2);
+
+    if (!confirm())
+        return(PATCHSUCCESS);
+
+    if (in_ignore_list(fname2))
+        return(PATCHSUCCESS);
+
+    if (fwrite(&operation, sizeof (operation), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fwrite(fname2, strlen(fname2) + 1, 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    return(PATCHSUCCESS);
+} /* put_delete_dir */
+
+
+static int delete_dir_tree(const char *fname)
+{
+    char filebuf[MAX_PATH];
+    file_list *files = make_filelist(fname);
+    file_list *i;
+    int rc = 0;
+
+    _log("Deleting directory tree %s", fname);
+
+    for (i = files; i != NULL; i = i->next)
+    {
+        snprintf(filebuf, sizeof (filebuf), "%s%s%s", fname, PATH_SEP, i->fname);
+        if (file_is_directory(filebuf))
+            rc = delete_dir_tree(filebuf);
+        else
+        {
+            _log("Deleting file %s from dir tree", filebuf);
+            rc = (remove(filebuf) == -1) ? PATCHERROR : PATCHSUCCESS;
+            if (rc == PATCHERROR)
+                _fatal("failed to delete %s: %s.", filebuf, strerror(errno));
+        } /* else */
+
+        if (rc == PATCHERROR)
+        {
+            free_filelist(files);
+            return(PATCHERROR);
+        } /* if */
+    } /* for */
+
+    free_filelist(files);
+
+    if (rmdir(fname) == -1)
+    {
+        _fatal("Error removing directory [%s]: %s.", fname, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    return(PATCHSUCCESS);
+} /* delete_dir_tree */
+
+
+/* get a DELETEDIRECTORY operation from the mojopatch file... */
+static int get_delete_dir(FILE *in)
+{
+    char fname[MAX_PATH];
+
+    if (read_asciz_string(fname, in) == PATCHERROR)
+        return(PATCHERROR);
+
+    _current_operation("DELETEDIRECTORY %s", final_path_element(fname));
+    _log("DELETEDIRECTORY %s", fname);
+
+    if ( (info_only()) || (!confirm()) )
+        return(PATCHSUCCESS);
+
+    if (in_ignore_list(fname))
+        return(PATCHSUCCESS);
+
+    if (!file_exists(fname))
+    {
+        _log("directory seems to be gone already.");
+        return(PATCHSUCCESS);
+    } /* if */
+
+    if (!file_is_directory(fname))
+    {
+        _fatal("Expected directory, found file!");
+        return(PATCHERROR);
+    } /* if */
+
+    if (!delete_dir_tree(fname))
+        return(PATCHERROR);
+
+    _log("done DELETEDIRECTORY.");
+    return(PATCHSUCCESS);
+} /* get_delete_dir */
+
+
+/* put an ADD operation in the mojopatch file... */
+/* !!! FIXME: This really needs compression... */
+static int put_add(const char *fname, FILE *out)
+{
+    md5_byte_t md5[16];
+    unsigned char operation = (replace) ? OPERATION_REPLACE : OPERATION_ADD;
+    long fsize;
+    FILE *in;
+    int rc;
+    struct stat statbuf;
+    mode_t mode;
+
+    _current_operation("%s %s", (replace) ? "ADDORREPLACE" : "ADD",
+                        final_path_element(fname));
+    _log("%s %s", (replace) ? "ADDORREPLACE" : "ADD", fname);
+
+    if (!confirm())
+        return(PATCHSUCCESS);
+
+    if (in_ignore_list(fname))
+        return(PATCHSUCCESS);
+
+    if (fwrite(&operation, sizeof (operation), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fwrite(fname, strlen(fname) + 1, 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (!get_file_size(fname, &fsize))
+        return(PATCHERROR);
+
+    if (fwrite(&fsize, sizeof (fsize), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (stat(fname, &statbuf) == -1)
+    {
+        _fatal("Couldn't stat %s: %s.", fname, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+    mode = (mode_t) statbuf.st_mode;
+
+    in = fopen(fname, "rb");
+    if (in == NULL)
+    {
+        _fatal("failed to open [%s]: %s.", fname, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (md5sum(in, md5, debug) == PATCHERROR)
+    {
+        fclose(in);
+        return(PATCHERROR);
+    } /* if */
+
+    if (fwrite(md5, sizeof (md5), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fwrite(&mode, sizeof (mode), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    rc = write_between_files(in, out, fsize);
+    assert(fgetc(in) == EOF);
+    fclose(in);
+    _dlog("  (%ld bytes in file.)", fsize);
+    return(rc);
+} /* put_add */
+
+
+/* get an ADD or REPLACE operation from the mojopatch file... */
+/* !!! FIXME: This really needs compression... */
+static int get_add(FILE *in, int replace_ok)
+{
+    md5_byte_t md5[16];
+    int retval = PATCHERROR;
+    FILE *io = NULL;
+    char fname[MAX_PATH];
+    long fsize;
+    int rc;
+    mode_t mode;
+
+    if (read_asciz_string(fname, in) == PATCHERROR)
+        goto get_add_done;
+
+    if (fread(&fsize, sizeof (fsize), 1, in) != 1)
+    {
+        _fatal("Read error: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fread(md5, sizeof (md5), 1, in) != 1)
+    {
+        _fatal("Read error: %s.", strerror(errno));
+        goto get_add_done;
+    } /* if */
+
+    if (fread(&mode, sizeof (mode), 1, in) != 1)
+    {
+        _fatal("Read error: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    _current_operation("%s %s", (replace_ok) ? "ADDORREPLACE" : "ADD",
+                          final_path_element(fname));
+    _log("%s %s", (replace_ok) ? "ADDORREPLACE" : "ADD", fname);
+
+    if ( (info_only()) || (!confirm()) || (in_ignore_list(fname)) )
+    {
+        if (fseek(in, fsize, SEEK_CUR) < 0)
+        {
+            _fatal("Seek error: %s.", strerror(errno));
+            return(PATCHERROR);
+        } /* if */
+        return(PATCHSUCCESS);
+    } /* if */
+
+    if (file_exists(fname))
+    {
+        if (replace_ok)
+            unlink(fname);
+        else
+        {
+            if (file_is_directory(fname))
+            {
+                _fatal("Error: [%s] already exists, but it's a directory!", fname);
+                return(PATCHERROR);
+            } /* if */
+
+            _log("[%s] already exists...looking at md5sum...", fname);
+            _current_operation("VERIFY %s", final_path_element(fname));
+            io = fopen(fname, "rb");
+            if (io == NULL)
+            {
+                _fatal("Failed to open added file for read: %s.", strerror(errno));
+                goto get_add_done;
+            } /* if */
+        
+            if (verify_md5sum(md5, NULL, io, 1) == PATCHERROR)
+                goto get_add_done;
+
+            _log("Okay; file matches what we expected.");
+            fclose(io);
+
+            if (fseek(in, fsize, SEEK_CUR) < 0)
+            {
+                _fatal("Seek error: %s.", strerror(errno));
+                return(PATCHERROR);
+            } /* if */
+
+            return(PATCHSUCCESS);
+        } /* else */
+    } /* if */
+
+    io = fopen(fname, "wb");
+    if (io == NULL)
+    {
+        _fatal("Error creating [%s]: %s.", fname, strerror(errno));
+        goto get_add_done;
+    } /* if */
+
+    rc = write_between_files(in, io, fsize);
+    if (rc == PATCHERROR)
+        goto get_add_done;
+
+    if (fclose(io) == EOF)
+    {
+        _fatal("Error: Couldn't flush output: %s.", strerror(errno));
+        goto get_add_done;
+    } /* if */
+
+    chmod(fname, mode);  /* !!! FIXME: Should this be an error condition? */
+
+    _current_operation("VERIFY %s", final_path_element(fname));
+    io = fopen(fname, "rb");
+    if (io == NULL)
+    {
+        _fatal("Failed to open added file for read: %s.", strerror(errno));
+        goto get_add_done;
+    } /* if */
+        
+    if (verify_md5sum(md5, NULL, io, 1) == PATCHERROR)
+        goto get_add_done;
+
+    retval = PATCHSUCCESS;
+    _log("done %s.", (replace_ok) ? "ADDORREPLACE" : "ADD");
+
+get_add_done:
+    if (io != NULL)
+        fclose(io);
+
+    return(retval);
+} /* get_add */
+
+
+static int put_add_for_wholedir(const char *base, FILE *out);
+
+
+/* put an ADDDIRECTORY operation in the mojopatch file... */
+static int put_add_dir(const char *fname, FILE *out)
+{
+    unsigned char operation = OPERATION_ADDDIRECTORY;
+    struct stat statbuf;
+    mode_t mode;
+
+    _current_operation("ADDDIRECTORY %s", final_path_element(fname));
+    _log("ADDDIRECTORY %s", fname);
+
+    if (!confirm())
+        return(PATCHSUCCESS);
+
+    if (in_ignore_list(fname))
+        return(PATCHSUCCESS);
+
+    if (stat(fname, &statbuf) == -1)
+    {
+        _fatal("Couldn't stat %s: %s.", fname, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+    mode = (mode_t) statbuf.st_mode;
+
+    if (fwrite(&operation, sizeof (operation), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fwrite(fname, strlen(fname) + 1, 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fwrite(&mode, sizeof (mode), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    /* must add contents of dir after dir itself... */
+    if (put_add_for_wholedir(fname, out) == PATCHERROR)
+        return(PATCHERROR);
+
+    return(PATCHSUCCESS);
+} /* put_add_dir */
+
+
+/* get an ADDDIRECTORY operation from the mojopatch file... */
+static int get_add_dir(FILE *in)
+{
+    char fname[MAX_PATH];
+    mode_t mode;
+
+    if (read_asciz_string(fname, in) == PATCHERROR)
+        return(PATCHERROR);
+
+    if (fread(&mode, sizeof (mode), 1, in) != 1)
+    {
+        _fatal("Read error: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    _current_operation("ADDDIRECTORY %s", final_path_element(fname));
+    _log("ADDDIRECTORY %s", fname);
+
+    if ( (info_only()) || (!confirm()) || (in_ignore_list(fname)) )
+        return(PATCHSUCCESS);
+
+    if (file_exists(fname))
+    {
+        if (file_is_directory(fname))
+        {
+            _log("[%s] already exists.", fname);
+            return(PATCHSUCCESS);
+        } /* if */
+        else
+        {
+            _fatal("[%s] already exists, but it's a file!", fname);
+            return(PATCHERROR);
+        } /* else */
+    } /* if */
+
+    if (mkdir(fname, S_IRWXU) == -1)
+    {
+        _fatal("Error making directory [%s]: %s.", fname, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+    chmod(fname, mode);  /* !!! FIXME: Should this be an error condition? */
+
+    _log("done ADDDIRECTORY.");
+    return(PATCHSUCCESS);
+} /* get_add_dir */
+
+
+/* put add operations for each file in (base). Recurses into subdirs. */
+static int put_add_for_wholedir(const char *base, FILE *out)
+{
+    char filebuf[MAX_PATH];
+    file_list *files = make_filelist(base);
+    file_list *i;
+    int rc = 0;
+
+    for (i = files; i != NULL; i = i->next)
+    {
+        snprintf(filebuf, sizeof (filebuf), "%s%s%s", base, PATH_SEP, i->fname);
+
+        /* put_add_dir recurses back into this function. */
+        if (file_is_directory(filebuf))
+            rc = put_add_dir(filebuf, out);
+        else
+            rc = put_add(filebuf, out);
+
+        if (rc == PATCHERROR)
+        {
+            free_filelist(files);
+            return(PATCHERROR);
+        } /* if */
+    } /* for */
+
+    free_filelist(files);
+    return(PATCHSUCCESS);
+} /* put_add_for_wholedir */
+
+
+static int md5sums_match(const char *fname1, const char *fname2,
+                         md5_byte_t *md5_1, md5_byte_t *md5_2)
+{
+    FILE *in;
+
+    in = fopen(fname1, "rb");
+    if (in == NULL)
+        return(0);
+
+    if (md5sum(in, md5_1, 0) == PATCHERROR)
+        return(0);
+
+    fclose(in);
+
+    in = fopen(fname2, "rb");
+    if (in == NULL)
+        return(0);
+
+    if (md5sum(in, md5_2, 0) == PATCHERROR)
+        return(0);
+
+    fclose(in);
+
+    return(memcmp(md5_1, md5_2, 16) == 0);
+} /* md5sums_match */
+
+
+/* put a PATCH operation in the mojopatch file... */
+static int put_patch(const char *fname1, const char *fname2, FILE *out)
+{
+    md5_byte_t md5_1[16];
+    md5_byte_t md5_2[16];
+    unsigned char operation = OPERATION_PATCH;
+    long fsize;
+    FILE *deltaio = NULL;
+    int rc;
+    struct stat statbuf;
+    mode_t mode;
+
+    _current_operation("VERIFY %s", final_path_element(fname2));
+	if (md5sums_match(fname1, fname2, md5_1, md5_2))
+        return(PATCHSUCCESS);
+
+    _current_operation("PATCH %s", final_path_element(fname2));
+    _log("PATCH %s", fname2);
+
+    if (!confirm())
+        return(PATCHSUCCESS);
+
+    if (in_ignore_list(fname2))
+        return(PATCHSUCCESS);
+
+    if (fwrite(&operation, sizeof (operation), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fwrite(fname2, strlen(fname2) + 1, 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fwrite(&md5_1, sizeof (md5_1), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fwrite(&md5_2, sizeof (md5_2), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (!get_file_size(fname2, &fsize))
+        return(PATCHERROR);
+
+    if (fwrite(&fsize, sizeof (fsize), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if ( (!_do_xdelta("delta -n --maxmem=%dM \"%s\" \"%s\" \"%s\"", maxxdeltamem, fname1, fname2, patchtmpfile)) ||
+         (!get_file_size(patchtmpfile, &fsize)) )
+    {
+        /* !!! FIXME: Not necessarily true. */
+        _fatal("there was a problem running xdelta.");
+        return(PATCHERROR);
+    } /* if */
+        
+    if (fwrite(&fsize, sizeof (fsize), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (stat(fname2, &statbuf) == -1)
+    {
+        _fatal("Couldn't stat %s: %s.", fname2, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+    mode = (mode_t) statbuf.st_mode;
+
+    if (fwrite(&mode, sizeof (mode), 1, out) != 1)
+    {
+        _fatal("write failure: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    deltaio = fopen(patchtmpfile, "rb");
+    if (deltaio == NULL)
+    {
+        _fatal("couldn't read %s: %s.", patchtmpfile, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    rc = write_between_files(deltaio, out, fsize);
+    assert(fgetc(deltaio) == EOF);
+    fclose(deltaio);
+    unlink(patchtmpfile);
+    _dlog("  (%ld bytes in patch.)", fsize);
+    return(rc);
+} /* put_patch */
+
+
+/* get a PATCH operation from the mojopatch file... */
+static int get_patch(FILE *in)
+{
+    md5_byte_t md5_1[16];
+    md5_byte_t md5_2[16];
+	md5_byte_t md5result[16];
+    long fsize;
+    long deltasize;
+    char fname[MAX_PATH];
+    FILE *f = NULL;
+    FILE *deltaio = NULL;
+    int rc;
+    mode_t mode;
+
+    if (read_asciz_string(fname, in) == PATCHERROR)
+        return(PATCHERROR);
+
+    if (fread(md5_1, sizeof (md5_1), 1, in) != 1)
+    {
+        _fatal("Read error: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fread(md5_2, sizeof (md5_2), 1, in) != 1)
+    {
+        _fatal("Read error: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fread(&fsize, sizeof (fsize), 1, in) != 1)
+    {
+        _fatal("Read error: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fread(&deltasize, sizeof (deltasize), 1, in) != 1)
+    {
+        _fatal("Read error: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (fread(&mode, sizeof (mode), 1, in) != 1)
+    {
+        _fatal("Read error: %s.", strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    _log("PATCH %s", fname);
+
+    if ( (info_only()) || (!confirm()) || (in_ignore_list(fname)) )
+    {
+        if (fseek(in, deltasize, SEEK_CUR) < 0)
+        {
+            _fatal("Seek error: %s.", strerror(errno));
+            return(PATCHERROR);
+        } /* if */
+        return(PATCHSUCCESS);
+    } /* if */
+
+    f = fopen(fname, "rb");
+    if (f == NULL)
+    {
+        _fatal("Failed to open [%s] for read: %s.", fname, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    _current_operation("VERIFY %s", final_path_element(fname));
+    rc = verify_md5sum(md5_1, md5result, f, 0);
+    fclose(f);
+    if (rc == PATCHERROR)
+    {
+        if (memcmp(md5_2, md5result, sizeof (md5_2)) == 0)
+        {
+            _log("Okay; file matches patched md5sum. It's already patched.");
+            if (fseek(in, deltasize, SEEK_CUR) < 0)
+            {
+                _fatal("Seek error: %s.", strerror(errno));
+                return(PATCHERROR);
+            } /* if */
+            return(PATCHSUCCESS);
+        } /* if */
+        return(PATCHERROR);
+    } /* if */
+
+    unlink(patchtmpfile2); /* just in case... */
+
+    _current_operation("PATCH %s", final_path_element(fname));
+    deltaio = fopen(patchtmpfile2, "wb");
+    if (deltaio == NULL)
+    {
+        _fatal("Failed to open [%s] for write: %s.", patchtmpfile2, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    rc = write_between_files(in, deltaio, deltasize);
+    fclose(deltaio);
+    if (rc == PATCHERROR)
+    {
+        unlink(patchtmpfile2);
+        return(PATCHERROR);
+    } /* if */
+
+    if (!_do_xdelta("patch --maxmem=%dM \"%s\" \"%s\" \"%s\"", maxxdeltamem, patchtmpfile2, fname, patchtmpfile))
+    {
+        _fatal("xdelta failed.");
+        return(PATCHERROR);
+    } /* if */
+
+    unlink(patchtmpfile2);  /* ditch temp delta file... */
+
+    f = fopen(patchtmpfile, "rb");
+    if (f == NULL)
+    {
+        _fatal("Failed to open [%s] for read: %s.", patchtmpfile, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    _current_operation("VERIFY %s", final_path_element(fname));
+    rc = verify_md5sum(md5_2, NULL, f, 1);
+    fclose(f);
+    if (rc == PATCHERROR)
+        return(PATCHERROR);
+
+    if (do_rename(patchtmpfile, fname) == -1)
+    {
+        _fatal("Error replacing [%s] with tempfile: %s.", fname, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    chmod(fname, mode);  /* !!! FIXME: fatal error? */
+
+    _log("done PATCH.");
+    return(PATCHSUCCESS);
+} /* get_patch */
+
+
+static int compare_directories(const char *base1, const char *base2, FILE *out)
+{
+    int retval = PATCHERROR;
+    char filebuf1[MAX_PATH];
+    char filebuf2[MAX_PATH]; /* can you feel the stack screaming? */
+    const char *base2checked = *base2 ? base2 : ".";
+    file_list *files1 = make_filelist(base1);
+    file_list *files2 = NULL;
+    file_list *i;
+
+    /* may be recursive compare on deleted dir. */
+    if (file_exists(base2checked))
+        files2 = make_filelist(base2checked);
+
+    assert(*base1);
+
+    _current_operation("Examining %s", final_path_element(base2checked));
+    _dlog("Examining %s and %s", base1, base2checked);
+
+    _dlog("(looking for files that need deletion...)");
+
+    /* check for files removed in newer version... */
+    for (i = files1; i != NULL; i = i->next)
+    {
+        _dlog("([%s]...)", i->fname);
+
+        snprintf(filebuf2, sizeof (filebuf2), "%s%s%s", base2,
+                    *base2 ? PATH_SEP : "", i->fname);
+
+        if (!file_exists(filebuf2))
+        {
+            int rc = 0;
+
+            snprintf(filebuf1, sizeof (filebuf1), "%s%s%s", base1, PATH_SEP, i->fname);
+            if (!file_is_directory(filebuf1))
+                rc = put_delete(filebuf2, out);
+            else
+            {
+                rc = compare_directories(filebuf1, filebuf2, out);
+                if (rc != PATCHERROR)
+                    rc = put_delete_dir(filebuf1, filebuf2, out);
+            } /* else */
+
+            if (rc == PATCHERROR)
+                goto dircompare_done;
+        } /* if */
+    } /* for */
+
+    _dlog("(looking for files that need addition...)");
+
+	/* check for files added in newer version... */
+    for (i = files2; i != NULL; i = i->next)
+    {
+        _dlog("([%s]...)", i->fname);
+
+        snprintf(filebuf1, sizeof (filebuf1), "%s%s%s", base1, PATH_SEP, i->fname);
+        snprintf(filebuf2, sizeof (filebuf2), "%s%s%s", base2,
+                    *base2 ? PATH_SEP : "", i->fname);
+
+        if (file_exists(filebuf1))  /* exists in both dirs; do compare. */
+        {
+            if (file_is_directory(filebuf2))
+            {
+                    /* probably a bad sign ... */
+                if (!file_is_directory(filebuf1))
+                {
+                    _log("%s is a directory, but %s is not!", filebuf2, filebuf1);
+                    if (put_delete(filebuf2, out) == PATCHERROR)
+                        goto dircompare_done;
+
+                    if (put_add_dir(filebuf2, out) == PATCHERROR)
+                        goto dircompare_done;
+                } /* if */
+
+                if (compare_directories(filebuf1, filebuf2, out) == PATCHERROR)
+                    goto dircompare_done;
+            } /* if */
+
+            else  /* new item is not a directory. */
+            {
+                    /* probably a bad sign ... */
+                if (file_is_directory(filebuf1))
+                {
+                    _log("Warning: %s is a directory, but %s is not!", filebuf1, filebuf2);
+                    if (put_delete_dir(filebuf1, filebuf2, out) == PATCHERROR)
+                        goto dircompare_done;
+
+                    if (put_add(filebuf2, out) == PATCHERROR)
+                        goto dircompare_done;
+                } /* if */
+
+                else
+                {
+                    /* may not put anything if files match... */
+                    if (put_patch(filebuf1, filebuf2, out) == PATCHERROR)
+                        goto dircompare_done;
+                } /* else */
+            } /* else */
+        } /* if */
+
+        else  /* doesn't exist in second dir; do add. */
+        {
+            if (file_is_directory(filebuf2))
+            {
+                if (put_add_dir(filebuf2, out) == PATCHERROR)
+                    goto dircompare_done;
+            } /* if */
+
+            else
+            {
+                if (put_add(filebuf2, out) == PATCHERROR)
+                    goto dircompare_done;
+            } /* else */
+        } /* else */
+    } /* for */
+
+    retval = PATCHSUCCESS;
+
+dircompare_done:
+    free_filelist(files1);
+    free_filelist(files2);
+    return(retval);
+} /* compare_directories */
+
+
+static char *read_whole_file(const char *fname)
+{
+    int i;
+    int rc;
+    FILE *io = NULL;
+    long fsize = 0;
+    char *retval = NULL;
+
+    if (!get_file_size(fname, &fsize))
+    {
+        _fatal("Can't get filesize for [%s]...file missing?", fname);
+        return(NULL);
+    } /* if */
+
+    if ( (retval = (char *) malloc(fsize + 1)) == NULL )
+    {
+        _fatal("Out of memory.");
+        return(NULL);
+    } /* if */
+
+    if ( (io = fopen(fname, "r")) == NULL )
+    {
+        _fatal("Can't open [%s].", fname);
+        free(retval);
+        return(NULL);
+    } /* if */
+
+    rc = fread(retval, fsize, 1, io);
+    fclose(io);
+
+    if (rc != 1)
+    {
+        _fatal("Read on [%s] failed: %s", fname, strerror(errno));
+        free(retval);
+        return(NULL);
+    } /* if */
+
+    /* This considers it an error condition to have a null char in the file. */
+    for (i = 0; i < fsize; i++)
+    {
+        if (retval[i] == '\0')
+        {
+            _fatal("null char in read_whole_file.");
+            free(retval);
+            return(NULL);
+        } /* if */
+    } /* for */
+    retval[fsize] = '\0';
+
+    return(retval);
+} /* read_whole_file */
+
+
+static int create_patchfile(void)
+{
+    int retval = PATCHSUCCESS;
+    char *real1 = NULL;
+    char *real2 = NULL;
+    char *real3 = NULL;
+    long fsize;
+    FILE *out;
+    char *readmedata = "";
+    char *readmedataptr = NULL;
+    const char *readmefname = final_path_element(readme);
+
+    if (strcmp(identifier, "") == 0)  /* specified on the commandline. */
+    {
+        ui_fatal("Can't create a patchfile without an identifier.");
+        return(PATCHERROR);
+    } /* if */
+
+    // !!! FIXME: platform should determine this by examining compared dirs.
+    if (strcmp(version, "") == 0)  /* specified on the commandline. */
+    {
+        ui_fatal("Can't create a patchfile without --version.");
+        return(PATCHERROR);
+    } /* if */
+
+    // !!! FIXME: platform should determine this by examining compared dirs.
+    if (strcmp(newversion, "") == 0)  /* specified on the commandline. */
+    {
+        ui_fatal("Can't create a patchfile without --newversion.");
+        return(PATCHERROR);
+    } /* if */
+
+    real1 = get_realpath(dir1);
+    if (real1 == NULL)
+    {
+        _fatal("Couldn't get realpath of [%s].", dir1);
+        return(PATCHERROR);
+    } /* if */
+
+    real2 = get_realpath(dir2);
+    if (real2 == NULL)
+    {
+        _fatal("Couldn't get realpath of [%s].", dir2);
+        return(PATCHERROR);
+    } /* if */
+
+    real3 = get_realpath(patchfile);
+    if (real3 == NULL)
+    {
+        _fatal("Couldn't get realpath of [%s].", patchfile);
+        return(PATCHERROR);
+    } /* if */
+
+    unlink(patchfile);  /* just in case. */
+    out = fopen(patchfile, "wb");
+    if (out == NULL)
+    {
+        free(real1);
+        free(real2);
+        free(real3);
+        _fatal("Couldn't open [%s]: %s.", patchfile, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (chdir(real2) != 0)
+    {
+        fclose(out);
+        free(real1);
+        free(real2);
+        free(real3);
+        _fatal("Couldn't chdir to [%s]: %s.", real2, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+    free(real2);
+
+    if (*readme)
+    {
+        readmedata = readmedataptr = read_whole_file(readme);
+        if (!readmedata)
+        {
+            fclose(out);
+            free(real1);
+            free(real3);
+            return(PATCHERROR);
+        } /* if */
+    } /* if */
+
+    if ( (fwrite(MOJOPATCHSIG, strlen(MOJOPATCHSIG) + 1, 1, out) != 1) ||
+         (fwrite(product, strlen(product) + 1, 1, out) != 1) ||
+         (fwrite(identifier, strlen(identifier) + 1, 1, out) != 1) ||
+         (fwrite(version, strlen(version) + 1, 1, out) != 1) ||
+         (fwrite(newversion, strlen(newversion) + 1, 1, out) != 1) ||
+         (fwrite(readmefname, strlen(readmefname) + 1, 1, out) != 1) ||
+         (fwrite(readmedata, strlen(readmedata) + 1, 1, out) != 1) ||
+         (fwrite(renamedir, strlen(renamedir) + 1, 1, out) != 1) )
+    {
+        _fatal("Couldn't write header [%s]: %s.", patchfile, strerror(errno));
+        fclose(out);
+        free(real1);
+        free(real3);
+        free(readmedataptr);
+        return(PATCHERROR);
+    } /* if */
+
+    free(readmedataptr);
+
+    retval = compare_directories(real1, "", out);
+
+    free(real1);
+
+    if (fclose(out) == EOF)
+    {
+        free(real3);
+        _fatal("Couldn't close [%s]: %s.", patchfile, strerror(errno));
+        retval = PATCHERROR;
+    } /* if */
+
+    if (!get_file_size(real3, &fsize))
+    {
+        _fatal("Couldn't get size of [%s]: %s.", patchfile, strerror(errno));
+        retval = PATCHERROR;
+    } /* if */
+    free(real3);
+
+    if (retval == PATCHERROR)
+        _fatal("THE FILE [%s] IS LIKELY INCOMPLETE. DO NOT USE!", patchfile);
+    else
+    {
+        ui_success("Patchfile successfully created.");
+        _log("%ld bytes in the file [%s].", fsize, patchfile);
+    } /* else */
+
+    return(retval);
+} /* create_patchfile */
+
+
+static int do_patch_operations(FILE *in, int do_progress, long patchfile_size)
+{
+    if (info_only())
+        _log("These are the operations we would perform if patching...");
+
+    while (1)
+    {
+        ui_pump();
+
+        if (do_progress)
+        {
+            long pos = ftell(in);
+            if (pos != -1)
+            {
+                float progress = ((float) pos) / ((float) patchfile_size);
+                ui_total_progress((int) (progress * 100.0f));
+            } /* if */
+            else
+            {
+                do_progress = 0;
+                ui_total_progress(-1);
+            } /* else */
+        } /* if */
+
+        int ch = fgetc(in);
+        if (ch == EOF)
+        {
+            if (feof(in))
+            {                
+                return(PATCHSUCCESS);
+            } /* if */
+            else if (ferror(in))
+            {
+                _fatal("Read error: %s.", strerror(errno));
+                return(PATCHERROR);
+            } /* else if */
+
+            assert(0);  /* wtf?! */
+            _fatal("Odd read error.");
+            return(PATCHERROR);  /* normal EOF. */
+        } /* if */
+
+        switch ((char) ch)
+        {
+            case OPERATION_DELETE:
+                if (get_delete(in) == PATCHERROR)
+                    return(PATCHERROR);
+                break;
+
+            case OPERATION_DELETEDIRECTORY:
+                if (get_delete_dir(in) == PATCHERROR)
+                    return(PATCHERROR);
+                break;
+
+            case OPERATION_ADD:
+                if (get_add(in, 0) == PATCHERROR)
+                    return(PATCHERROR);
+                break;
+
+            case OPERATION_REPLACE:
+                if (get_add(in, 1) == PATCHERROR)
+                    return(PATCHERROR);
+                break;
+
+            case OPERATION_ADDDIRECTORY:
+                if (get_add_dir(in) == PATCHERROR)
+                    return(PATCHERROR);
+                break;
+
+            case OPERATION_PATCH:
+                if (get_patch(in) == PATCHERROR)
+                    return(PATCHERROR);
+                break;
+
+            default:
+                _fatal("Error: Unknown operation (%d).", ch);
+                return(PATCHERROR);
+        } /* switch */
+    } /* while */
+
+    assert(0);  /* shouldn't hit this. */
+    return(PATCHERROR);
+} /* do_patch_operations */
+
+
+static int extract_readme(const char *fname, FILE *in)
+{
+    int retval = PATCHSUCCESS;
+    char *buf = NULL;
+    size_t buflen = 0;
+    size_t br = 0;
+    int ch = 0;
+
+    do
+    {
+        ch = fgetc(in);
+        if (ch == EOF)
+        {
+            _fatal("Unexpected EOF in patchfile.");
+            free(buf);
+            return(PATCHERROR);
+        } /* if */
+
+        if (buflen <= br)
+        {
+            char *ptr;
+            buflen += 1024;
+            ptr = realloc(buf, buflen);
+            if (!ptr)
+            {
+                free(buf);
+                _fatal("Out of memory.");
+                return(PATCHERROR);
+            } /* if */
+            buf = ptr;
+        } /* if */
+
+        buf[br++] = (char) ch;
+    } while (ch != '\0');
+
+    if ( (*buf) && (!info_only()) )
+        retval = show_and_install_readme(fname, buf);
+
+    free(buf);
+    return(retval);
+} /* extract_readme */
+
+
+static int check_patch_header(FILE *in)
+{
+    char buffer[MAX_PATH];
+
+    if (read_asciz_string(buffer, in) == PATCHERROR)
+        return(PATCHERROR);
+
+    if (strcmp(buffer, MOJOPATCHSIG) != 0)
+    {
+        _fatal("[%s] is not a compatible mojopatch file.", patchfile);
+        _log("signature is: %s.", buffer);
+        _log("    expected: %s.", MOJOPATCHSIG);
+        return(PATCHERROR);
+    } /* if */
+
+    if (read_asciz_string(buffer, in) == PATCHERROR)
+        return(PATCHERROR);
+    if (strcmp(product, "") == 0)
+    {
+        if (strcmp(buffer, "") == 0)
+            snprintf(product, sizeof (product) - 1, "MojoPatch %s", VERSION);
+        else
+            strncpy(product, buffer, sizeof (product) - 1);
+    } /* if */
+    product[sizeof (product) - 1] = '\0';  /* just in case. */
+    ui_title(product);
+
+    if (read_asciz_string(buffer, in) == PATCHERROR)
+        return(PATCHERROR);
+    if (strcmp(identifier, "") == 0)
+        strncpy(identifier, buffer, sizeof (identifier) - 1);
+    identifier[sizeof (identifier) - 1] = '\0';  /* just in case. */
+
+    if (read_asciz_string(buffer, in) == PATCHERROR)
+        return(PATCHERROR);
+    if (strcmp(version, "") == 0)
+        strncpy(version, buffer, sizeof (version) - 1);
+    version[sizeof (version) - 1] = '\0';  /* just in case. */
+
+    if (!info_only())
+    {
+        if (!chdir_by_identifier(identifier, version))
+            return(PATCHERROR);
+    } /* if */
+
+    if (read_asciz_string(buffer, in) == PATCHERROR)
+        return(PATCHERROR);
+    if (strcmp(newversion, "") == 0)
+        strncpy(newversion, buffer, sizeof (newversion) - 1);
+    newversion[sizeof (newversion) - 1] = '\0';  /* just in case. */
+
+    if (read_asciz_string(buffer, in) == PATCHERROR)
+        return(PATCHERROR);
+    if (strcmp(readme, "") == 0)
+        strncpy(readme, buffer, sizeof (readme) - 1);
+    readme[sizeof (readme) - 1] = '\0';  /* just in case. */
+
+    if (extract_readme(readme, in) == PATCHERROR)
+        return(PATCHERROR);
+
+    if (read_asciz_string(buffer, in) == PATCHERROR)
+        return(PATCHERROR);
+    if (strcmp(renamedir, "") == 0)
+        strncpy(renamedir, buffer, sizeof (renamedir) - 1);
+    renamedir[sizeof (renamedir) - 1] = '\0';  /* just in case. */
+
+    _log("Product to patch: \"%s\".", product);
+    _log("Product identifier: \"%s\".", identifier);
+    _log("Patch from version: \"%s\".", version);
+    _log("Patch to version: \"%s\".", newversion);
+    _log("Readme: \"%s\".", *readme ? readme : "(none)");
+    _log("Renamedir: \"%s\".", *renamedir ? renamedir : "(none)");
+
+    return(PATCHSUCCESS);
+} /* check_patch_header */
+
+
+static int do_patching(void)
+{
+    int report_error = 0;
+    int retval = PATCHERROR;
+    FILE *in = NULL;
+    long patchfile_size = 0;
+    int do_progress = 0;
+
+    if (strcmp(patchfile, "-") == 0)  /* read from stdin? */
+        in = stdin;
+    else
+	{
+        do_progress = get_file_size(patchfile, &patchfile_size);
+        if (patchfile_size == 0)
+            do_progress = 0;  /* prevent a division by zero. */
+
+        in = fopen(patchfile, "rb");
+	} /* else */
+
+    ui_total_progress(do_progress ? 0 : -1);
+    ui_pump();
+
+    if (in == NULL)
+    {
+        _fatal("Couldn't open [%s]: %s.", patchfile, strerror(errno));
+        return(PATCHERROR);
+    } /* if */
+
+    if (check_patch_header(in) == PATCHERROR)
+        goto do_patching_done;
+
+    report_error = 1;
+    if (do_patch_operations(in, do_progress, patchfile_size) == PATCHERROR)
+        goto do_patching_done;
+
+    if (!info_only())
+    {
+        _current_operation("Updating product version...");
+        ui_total_progress(-1);
+        if ( (strcmp(newversion, "") != 0) && (!update_version(newversion)) )
+            goto do_patching_done;
+
+        if (*renamedir)
+        {
+            char cwdbuf[MAX_PATH];
+            _log("Renaming product's root directory to [%s].", renamedir);
+            if (getcwd(cwdbuf, sizeof (cwdbuf)) != NULL)
+            {
+                chdir("..");
+                rename(cwdbuf, renamedir);
+                chdir(renamedir);  /* just in case */
+            } /* if */
+        } /* if */
+    } /* if */
+
+    retval = PATCHSUCCESS;
+    ui_total_progress(100);
+    if (!info_only())
+        ui_success("Patching successful!");
+
+do_patching_done:
+    if ((in != stdin) && (in != NULL))
+        fclose(in);
+
+    if ((retval == PATCHERROR) && (report_error))
+    {
+        ui_total_progress(-1);
+        _fatal("There were problems, so I'm aborting.");
+        if (!info_only())
+            _fatal("The product is possibly damaged and requires a fresh installation.");
+    } /* if */
+
+    return(retval);
+} /* do_patching */
+
+
+static int do_usage(const char *argv0)
+{
+    _log("");
+    _log("USAGE: %s --create <file.mojopatch> <dir1> <dir2>", argv0);
+    _log("   or: %s --info <file.mojopatch>", argv0);
+    _log("   or: %s <file.mojopatch>", argv0);
+    _log("");
+    _log("  You may also specify:");
+    _log("      --product (Product name for titlebar)");
+    _log("      --identifier (Product identifier for locating installation)");
+    _log("      --version (Product version to patch against)");
+    _log("      --newversion (Product version to patch up to)");
+    _log("      --replace (AT CREATE TIME, specify ADDs can overwrite)");
+    _log("      --readme (README filename to display/install)");
+    _log("      --renamedir (What patched dir should be called)");
+    _log("      --ignore (Ignore specific files/dirs)");
+    _log("      --confirm (Make process confirm each step)");
+    _log("      --debug (spew debugging output)");
+    _log("");
+    return(0);
+} /* do_usage */
+
+
+static int set_command_or_abort(PatchCommands cmd)
+{
+    if (command != COMMAND_NONE)
+    {
+        _fatal("You've specified more than one command!");
+        return(0);
+    } /* if */
+
+    command = cmd;
+    return(1);
+} /* set_command_or_abort */
+
+
+static int parse_cmdline(int argc, char **argv)
+{
+    int i;
+    int nonoptcount = 0;
+    char **nonoptions = (char **) alloca(sizeof (char *) * argc);
+
+    if (nonoptions == NULL)
+    {
+        _fatal("Out of memory!");
+        return(0);
+    } /* if */
+
+    if (argc <= 1)
+    {
+        if (file_exists(DEFAULT_PATCHFILENAME))
+            nonoptions[nonoptcount++] = DEFAULT_PATCHFILENAME;
+        else
+            return(do_usage(argv[0]));
+    } /* if */
+
+    product[0] = '\0';  /* just in case. */
+    identifier[0] = '\0';  /* just in case. */
+
+    for (i = 1; i < argc; i++)
+    {
+        int okay = 1;
+
+        if (strncmp(argv[i], "--", 2) != 0)
+        {
+            nonoptions[nonoptcount++] = argv[i];
+            continue;
+        } /* if */
+
+        if (strcmp(argv[i], "--create") == 0)
+            okay = set_command_or_abort(COMMAND_CREATE);
+        else if (strcmp(argv[i], "--info") == 0)
+            okay = set_command_or_abort(COMMAND_INFO);
+        else if (strcmp(argv[i], "--confirm") == 0)
+            interactive = 1;
+        else if (strcmp(argv[i], "--debug") == 0)
+            debug = 1;
+        else if (strcmp(argv[i], "--replace") == 0)
+            replace = 1;
+        else if (strcmp(argv[i], "--product") == 0)
+            strncpy(product, argv[++i], sizeof (product) - 1);
+        else if (strcmp(argv[i], "--identifier") == 0)
+            strncpy(identifier, argv[++i], sizeof (identifier) - 1);
+        else if (strcmp(argv[i], "--version") == 0)
+            strncpy(version, argv[++i], sizeof (version) - 1);
+        else if (strcmp(argv[i], "--newversion") == 0)
+            strncpy(newversion, argv[++i], sizeof (newversion) - 1);
+        else if (strcmp(argv[i], "--readme") == 0)
+            strncpy(readme, argv[++i], sizeof (readme) - 1);
+        else if (strcmp(argv[i], "--renamedir") == 0)
+            strncpy(renamedir, argv[++i], sizeof (renamedir) - 1);
+        else if (strcmp(argv[i], "--ignore") == 0)
+        {
+            ignorecount++;
+            ignorelist = (char **) realloc(ignorelist, sizeof (char *) * ignorecount);
+            // !!! FIXME: Check retval.
+            ignorelist[ignorecount-1] = argv[++i];
+        } /* else if */
+        else
+        {
+            _fatal("Error: Unknown option [%s].", argv[i]);
+            return(do_usage(argv[0]));
+        } /* else */
+
+        if (!okay)
+            return(0);
+    } /* for */
+
+    product[sizeof (product) - 1] = '\0';  /* just in case. */
+    identifier[sizeof (identifier) - 1] = '\0';  /* just in case. */
+
+    if (command == COMMAND_NONE)
+        command = COMMAND_DOPATCHING;
+
+    switch (command)
+    {
+        case COMMAND_INFO:
+        case COMMAND_DOPATCHING:
+            if (nonoptcount != 1)
+            {
+                _fatal("Error: Wrong arguments.");
+                return(do_usage(argv[0]));
+            } /* if */
+            patchfile = nonoptions[0];
+            break;
+
+        case COMMAND_CREATE:
+            if (nonoptcount != 3)
+            {
+                _fatal("Error: Wrong arguments.");
+                return(do_usage(argv[0]));
+            } /* if */
+                
+            patchfile = nonoptions[0];
+            dir1 = nonoptions[1];
+            dir2 = nonoptions[2];
+            break;
+
+        default:
+            assert(0);
+            break;
+    } /* switch */
+
+    if (debug)
+    {
+        _dlog("debugging enabled.");
+        _dlog("Interactive mode %senabled.", (interactive) ? "" : "NOT ");
+        _dlog("ADDs are %spermitted to REPLACE.", (replace) ? "" : "NOT ");
+        _dlog("command == (%d).", (int) command);
+        _dlog("(%d) nonoptions:", nonoptcount);
+        for (i = 0; i < nonoptcount; i++)
+            _dlog(" [%s]", nonoptions[i]);
+        _dlog("patchfile == [%s].", (patchfile) ? patchfile : "(null)");
+        _dlog("dir1 == [%s].", (dir1) ? dir1 : "(null)");
+        _dlog("dir2 == [%s].", (dir2) ? dir2 : "(null)");
+        for (i = 0; i < ignorecount; i++)
+            _dlog("ignoring [%s].", ignorelist[i]);
+    } /* if */
+
+    return(1);
+} /* parse_cmdline */
+
+
+/* !!! FIXME: signal_cleanup */
+
+
+int mojopatch_main(int argc, char **argv)
+{
+	time_t starttime = time(NULL);
+    int retval = PATCHSUCCESS;
+
+    if (!ui_init())
+    {
+        _fatal("MojoPatch: ui_init() failed!");  /* oh well. */
+        return(PATCHERROR);
+    } /* if */
+
+    _log("MojoPatch %s starting up.", VERSION);
+
+    if (!parse_cmdline(argc, argv))
+    {
+        ui_deinit();
+        return(PATCHERROR);
+    } /* if */
+
+    if (!calc_tmp_filenames(&patchtmpfile, &patchtmpfile2))
+    {
+        _fatal("Internal error: Couldn't find scratch filenames.");
+        ui_deinit();
+        return(PATCHERROR);
+    } /* if */
+    _dlog("Temp filenames are [%s] and [%s].", patchtmpfile, patchtmpfile2);
+
+    if (command == COMMAND_CREATE)
+        retval = create_patchfile();
+    else
+        retval = do_patching();
+
+    unlink(patchtmpfile);  /* just in case. */
+    unlink(patchtmpfile2); /* just in case. */
+
+    _dlog("(Total running time: %ld seconds.)", time(NULL) - starttime);
+
+    ui_deinit();
+    return(retval);
+} /* mojopatch_main */
+
+/* end of mojopatch.c ... */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/platform.h	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,70 @@
+
+#ifndef _INCL_PLATFORM_H_
+#define _INCL_PLATFORM_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if PLATFORM_WIN32
+#  include <io.h>
+#  define PATH_SEP "\\"
+#  if (defined _MSC_VER)
+#    define inline __inline
+#    define snprintf _snprintf
+#    define mkdir(x, y) _mkdir(x)
+#    define chdir(x) _chdir(x)
+#  endif
+#  define MAX_PATH 1024
+#elif PLATFORM_UNIX
+#  include <unistd.h>
+#  include <sys/stat.h>
+#  include <sys/types.h>
+#  include <sys/param.h>
+#  include <fcntl.h>
+#  define PATH_SEP "/"
+#  define MAX_PATH MAXPATHLEN
+#else
+#  #error please define your platform.
+#endif
+
+typedef struct MOJOPATCH_FILELIST
+{
+    char *fname;
+    struct MOJOPATCH_FILELIST *next;
+} file_list;
+
+/* Your mainline calls this. */
+int mojopatch_main(int argc, char **argv);
+
+/* You call this for fatal error messages. */
+void _fatal(const char *fmt, ...);
+
+/* Call this for logging (not debug info). */
+void _log(const char *fmt, ...);
+
+/* Call this for logging (debug info). */
+void _dlog(const char *fmt, ...);
+
+/* platform-specific stuff you implement. */
+int file_exists(const char *fname);
+int file_is_directory(const char *fname);
+int file_is_symlink(const char *fname);
+file_list *make_filelist(const char *base);  /* must use malloc(). */
+int get_file_size(const char *fname, long *fsize);
+char *get_current_dir(void);
+char *get_realpath(const char *path);
+int spawn_xdelta(const char *cmdline);
+int chdir_by_identifier(const char *id, const char *version);
+int update_version(const char *ver);
+int calc_tmp_filenames(char **tmp1, char **tmp2);
+int show_and_install_readme(const char *fname, const char *text);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* include-once blocker. */
+
+/* end of platform.h ... */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/platform_unix.c	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,527 @@
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/param.h>
+#include <errno.h>
+#include <assert.h>
+#include <pthread.h>
+
+#include "platform.h"
+#include "ui.h"
+
+int file_exists(const char *fname)
+{
+    struct stat statbuf;
+    return(stat(fname, &statbuf) == 0);
+} /* file_exists */
+
+int file_is_directory(const char *fname)
+{
+    struct stat statbuf;
+    int retval = 0;
+
+    if (stat(fname, &statbuf) == 0)
+    {
+        if (S_ISDIR(statbuf.st_mode))
+            retval = 1;
+    } /* if */
+    
+    return(retval);
+} /* file_is_directory */
+
+
+int file_is_symlink(const char *fname)
+{
+    struct stat statbuf;
+    int retval = 0;
+
+    if (lstat(fname, &statbuf) == 0)
+    {
+        if (S_ISLNK(statbuf.st_mode))
+            retval = 1;
+    } /* if */
+
+    return(retval);
+} /* file_is_symlink */
+
+
+/* enumerate contents of (base) directory. */
+file_list *make_filelist(const char *base)
+{
+    file_list *retval = NULL;
+    file_list *l = NULL;
+    file_list *prev = NULL;
+    DIR *dir;
+    struct dirent *ent;
+
+    errno = 0;
+    dir = opendir(base);
+    if (dir == NULL)
+    {
+        _fatal("Error: could not read dir %s: %s.", base, strerror(errno));
+        return(NULL);
+    } /* if */
+
+    while (1)
+    {
+        ent = readdir(dir);
+        if (ent == NULL)   /* we're done. */
+            break;
+
+        if (strcmp(ent->d_name, ".") == 0)
+            continue;
+
+        if (strcmp(ent->d_name, "..") == 0)
+            continue;
+
+        /*
+         * !!! FIXME: This is a workaround until symlinks are really
+         * !!! FIXME:  supported...just pretend they don't exist for now.  :(
+         */
+        {
+            char buf[MAXPATHLEN];
+            snprintf(buf, sizeof (buf), "%s/%s", base, ent->d_name);
+            if (file_is_symlink(buf))
+                continue;
+        }
+
+        l = (file_list *) malloc(sizeof (file_list));
+        if (l == NULL)
+        {
+            _fatal("Error: out of memory.");
+            break;
+        } /* if */
+
+        l->fname = (char *) malloc(strlen(ent->d_name) + 1);
+        if (l->fname == NULL)
+        {
+            free(l);
+            _fatal("Error: out of memory.");
+            break;
+        } /* if */
+
+        strcpy(l->fname, ent->d_name);
+
+        if (retval == NULL)
+            retval = l;
+        else
+            prev->next = l;
+
+        prev = l;
+        l->next = NULL;
+    } /* while */
+
+    closedir(dir);
+    return(retval);
+} /* make_filelist */
+
+
+int get_file_size(const char *fname, long *fsize)
+{
+    struct stat statbuf;
+
+    assert(fsize != NULL);
+
+    if (stat(fname, &statbuf) == -1)
+    {
+        _fatal("Error: failed to get filesize of [%s]: %s.",
+                fname, strerror(errno));
+        return(0);
+    } /* if */
+
+    *fsize = statbuf.st_size;
+    return(1);
+} /* get_file_size */
+
+
+char *get_realpath(const char *path)
+{
+    char resolved_path[MAXPATHLEN];
+    char *retval = NULL;
+
+    errno = 0;
+    if (!realpath(path, resolved_path))
+    {
+        _fatal("Can't determine full path of [%s]: %s.",
+                path, strerror(errno));
+        return(NULL);
+    } /* if */
+
+    retval = malloc(strlen(resolved_path) + 1);
+    if (retval == NULL)
+    {
+        _fatal("Error: out of memory.");
+        return(NULL);
+    } /* if */
+
+    strcpy(retval, resolved_path);
+    return(retval);
+} /* get_realpath */
+
+
+#ifdef PLATFORM_MACOSX
+#include <ApplicationServices/ApplicationServices.h>
+
+static char *parse_xml(char *ptr, char **tag, char **val)
+{
+    char *ptr2;
+    while ( (ptr = strchr(ptr, '<')) != NULL )
+    {
+        ptr++;
+        if (*ptr == '/') continue;  // prior endtag.
+        if (*ptr == '!') continue;  // initial crap.
+        if (*ptr == '?') continue;  // initial crap.
+
+        *tag = ptr;
+        *(ptr-1) = '/';
+        ptr2 = strchr(ptr, ' ');
+        if ( (ptr = strchr(ptr, '>')) == NULL ) return(NULL);
+        if ((ptr2) && (ptr2 < ptr)) *ptr2 = '\0';
+        *ptr = '\0';
+        *val = ++ptr;
+        while ( (ptr = strstr(ptr, (*tag)-1)) != NULL )
+        {
+            if (*(ptr-1) != '<') { ptr++; continue; }
+            *(ptr-1) = '\0';
+            break;
+        } /* while */
+
+        return((ptr == NULL) ? NULL : ptr + 1);
+    } /* while */
+
+    return(NULL);
+} /* parse_xml */
+
+
+static char *find_info_plist_version(char *ptr)
+{
+    int have_key = 0;
+    char *tag;
+    char *val;
+
+    while ( (ptr = parse_xml(ptr, &tag, &val)) != NULL )
+    {
+        if (have_key)
+        {
+            have_key = 0;
+            if (strcasecmp(tag, "string") == 0)
+                return(val);
+        } /* if */
+
+        if ((strcasecmp(tag, "plist") == 0) || (strcasecmp(tag, "dict") == 0))
+        {
+            ptr = val;
+            continue;
+        } /* if */
+
+        if ((strcasecmp(tag,"key")==0)&&(strcasecmp(val,"CFBundleVersion")==0))
+            have_key = 1;
+    } /* while */
+    
+    return(NULL);
+} /* find_info_plist_version */
+
+
+static int parse_info_dot_plist(const char *version)
+{
+    const char *fname = "Contents/Info.plist";  // already chdir'd for this.
+    char *mem = NULL;
+    char *ptr;
+    long fsize;
+    int retval = 0;
+    FILE *io = NULL;
+
+    if ( !get_file_size(fname, &fsize) ) goto parse_info_plist_bailed;
+    if ( (mem = malloc(fsize + 1)) == NULL ) goto parse_info_plist_bailed;
+    if ( (io = fopen(fname, "r")) == NULL ) goto parse_info_plist_bailed;
+    if ( (fread(mem, fsize, 1, io)) != 1 ) goto parse_info_plist_bailed;
+    fclose(io);
+    io = NULL;
+    mem[fsize] = '\0';
+
+    ptr = find_info_plist_version(mem);
+    if (ptr != NULL)
+    {
+        if (strcmp(version, ptr) == 0)
+            retval = 1;
+        else
+        {
+            _fatal("This patch applies to version '%s', but you have '%s'.",
+                    version, ptr);
+            free(mem);
+            return(0);
+        } /* else */
+    } /* if */
+
+parse_info_plist_bailed:
+    free(mem);
+    if (io != NULL)
+        fclose(io);
+
+    if (!retval) _fatal("Can't determine product's installed version.");
+    return(retval);
+} /* parse_info_dot_plist */
+
+
+int update_version(const char *ver)
+{
+    const char *fname = "Contents/Info.plist";  // already chdir'd for this.
+    char *mem = NULL;
+    char *ptr;
+    long fsize;
+    int retval = 0;
+    long writestart;
+    long writeend;
+    FILE *io = NULL;
+
+    if ( !get_file_size(fname, &fsize) ) goto update_version_bailed;
+    if ( (mem = malloc(fsize + 1)) == NULL ) goto update_version_bailed;
+    if ( (io = fopen(fname, "r+")) == NULL ) goto update_version_bailed;
+    if ( (fread(mem, fsize, 1, io)) != 1 ) goto update_version_bailed;
+    mem[fsize] = '\0';
+
+    ptr = find_info_plist_version(mem);
+    if (ptr == NULL) goto update_version_bailed;
+    writestart = (long) (ptr - mem);
+    writeend = writestart + strlen(ptr);
+    ptr = mem + writeend;
+    if ( (fseek(io, 0, SEEK_SET) == -1) ) goto update_version_bailed;
+    if ( (fread(mem, fsize, 1, io)) != 1 ) goto update_version_bailed;
+    if ( (fseek(io, writestart, SEEK_SET) == -1) ) goto update_version_bailed;
+    if ( (fwrite(ver, strlen(ver), 1, io)) != 1 ) goto update_version_bailed;
+    if ( (fwrite(ptr, strlen(ptr), 1, io)) != 1 ) goto update_version_bailed;
+    for (fsize = (writeend - writestart); fsize > 0; fsize--)
+        if (fwrite(" ", 1, 1, io) != 1) goto update_version_bailed;
+
+    retval = 1;
+
+update_version_bailed:
+    free(mem);
+    if (io != NULL)
+        fclose(io);
+
+    if (!retval) _fatal("Can't update product's installed version.");
+    return(retval);
+} /* update_version */
+
+
+int chdir_by_identifier(const char *str, const char *version)
+{
+    char buf[MAXPATHLEN];
+    Boolean b;
+    OSStatus rc;
+    CFURLRef url = NULL;
+    CFStringRef id = CFStringCreateWithBytes(NULL, str, strlen(str),
+                                                kCFStringEncodingISOLatin1, 0);
+
+    rc = LSFindApplicationForInfo(kLSUnknownCreator, id, NULL, NULL, &url);
+    CFRelease(id);
+    if (rc != noErr)
+    {
+        _fatal("Couldn't find product. Perhaps it isn't installed?");
+        return(0);
+    } /* if */
+
+    b = CFURLGetFileSystemRepresentation(url, TRUE, buf, sizeof (buf));
+    CFRelease(url);
+    if (!b)
+    {
+        _fatal("Internal error.");
+        return(0);
+    } /* if */
+
+    _log("I think the product is installed at [%s].", buf);
+
+    if (chdir(buf) != 0)
+    {
+        _fatal("Failed to change to product's installation directory.");
+        return(0);
+    } /* if */
+
+    if (strcmp(version, "") != 0)
+        return(parse_info_dot_plist(version));
+
+    return(1);
+} /* chdir_by_identifier */
+
+
+int show_and_install_readme(const char *fname, const char *text)
+{
+    FILE *io;
+    char *cmd;
+    const char *envr = getenv("HOME");
+    if (!envr)
+    {
+        _fatal("HOME environment var not set?");
+        return(0);
+    } /* if */
+
+    cmd = alloca(strlen(fname) + strlen(envr) + 30);
+    strcpy(cmd, "open ");
+    strcat(cmd, envr);
+    if (cmd[strlen(cmd)-1] != '/')
+        strcat(cmd, "/");
+    strcat(cmd, "Desktop/");
+    strcat(cmd, fname);
+
+    io = fopen(cmd + 5, "w");
+    if (!io)
+    {
+        _fatal("Failed to open [%s] for writing.", cmd+5);
+        return(0);
+    } /* if */
+
+    /* !!! FIXME: error checking! */
+    fputs(text, io);
+    fclose(io);
+    system(cmd);
+    return(1);
+} /* show_and_install_readme */
+#endif
+
+
+int calc_tmp_filenames(char **tmp1, char **tmp2)
+{
+    static char _tmp1[MAXPATHLEN];
+    static char _tmp2[MAXPATHLEN];
+    pid_t pid = getpid();
+    snprintf(_tmp1, sizeof (_tmp1), "/tmp/mojopatch.tmp1.%d", (int) pid);
+    snprintf(_tmp2, sizeof (_tmp2), "/tmp/mojopatch.tmp2.%d", (int) pid);
+    *tmp1 = _tmp1;
+    *tmp2 = _tmp2;
+    return(1);
+} /* calc_tmp_filenames */
+
+
+static char *basedir = NULL;
+static volatile int thread_alive = 0;
+
+static void *spawn_thread(void *arg)
+{
+    static int rc;
+    rc = system((char *) arg);
+    thread_alive = 0;
+    return(&rc);
+} /* spawn_thread */
+
+
+int spawn_xdelta(const char *cmdline)
+{
+    pthread_t thr;
+    void *rc;
+    const char *binname = "xdelta";
+    char *cmd = alloca(strlen(cmdline) + strlen(basedir) + strlen(binname) + 2);
+    if (!cmd)
+        return(0);
+
+    sprintf(cmd, "\"%s%s\" %s", basedir, binname, cmdline);
+    thread_alive = 1;
+    if (pthread_create(&thr, NULL, spawn_thread, cmd) != 0)
+        return(0);
+
+    while (thread_alive)
+    {
+        ui_pump();
+        usleep(10000);
+    } /* while */
+
+    pthread_join(thr, &rc);
+    return(1);  /* !!! FIXME    *((int *) rc) == 0 ); */
+} /* spawn_xdelta */
+
+
+static void find_basedir(int *argc, char **argv)
+{
+    const char *argv0 = argv[0];
+    char buf[MAXPATHLEN];
+    char realbuf[MAXPATHLEN];
+
+    if ((argv0 != NULL) && (strchr(argv0, '/') != NULL)) /* path specifed? */
+        strncpy(buf, argv0, sizeof (buf));
+    else
+    {
+        char *ptr;
+        char *envr = getenv("PATH");
+        if (!envr)
+            return;
+
+        while (*envr)
+        {
+            ptr = strchr(envr, ':');
+            if (!ptr)
+                strcpy(buf, envr);
+            else
+            {
+                memcpy(buf, envr, (size_t) (ptr - envr));
+                buf[(size_t) (ptr - envr)] = '\0';
+            } /* else */
+
+            envr = ptr + 1;
+
+            if (*buf == '\0')
+                continue;
+
+            strcat(buf, "/");
+            strcat(buf, argv0);
+
+            if (access(buf, X_OK) == 0)
+                break;
+
+            if (!ptr)
+            {
+                strcpy(buf, ".");  /* oh well. */
+                break;
+            } /* if */
+        } /* while */
+    } /* else */
+
+    buf[sizeof (buf) - 1] = '\0';  /* null terminate, just in case. */
+    if (realpath(buf, realbuf) == NULL)
+        return;
+
+    char *ptr = strrchr(realbuf, '/');  /* chop off binary name. */
+    if (ptr != NULL)
+        *ptr = '\0';
+
+    if (realbuf[strlen(realbuf)-1] != '/')
+        strcat(realbuf, "/");
+
+    basedir = malloc(strlen(realbuf + 1));
+    strcpy(basedir, realbuf);
+
+#if PLATFORM_MACOSX
+    /* Chop off process serial number arg that the Finder adds... */
+    if ( (*argc >= 2) && (strncmp(argv[1], "-psn_", 5) == 0) )
+    {
+        *argc = *argc - 1;
+        argv[1] = NULL;
+
+        /* Now that we know where xdelta will be, chdir out of AppBundle... */
+        ptr = strstr(realbuf, "/Contents/MacOS");
+        if (ptr != NULL)
+        {
+            *ptr = '\0';
+            chdir(realbuf);
+        } /* if */
+    } /* if */
+#endif
+} /* find_basedir */
+
+
+int main(int argc, char **argv)
+{
+    int retval;
+    find_basedir(&argc, argv);
+    retval = mojopatch_main(argc, argv);
+    free(basedir);
+    return(retval);
+} /* unixmain */
+
+/* end of platform_unix.c ... */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/platform_win32.c	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,275 @@
+
+#include <windows.h>
+#include <io.h>
+#include <direct.h>
+
+#include "platform.h"
+
+int file_exists(const char *fname)
+{
+    return(GetFileAttributes(fname) != 0xffffffff);
+} /* file_exists */
+
+
+int file_is_directory(const char *fname)
+{
+    return((GetFileAttributes(fname) & FILE_ATTRIBUTE_DIRECTORY) != 0);
+} /* file_is_directory */
+
+
+int file_is_symlink(const char *fname)
+{
+    return(0);
+} /* file_is_symlink */
+
+
+static const char *win32strerror(void)
+{
+    static TCHAR msgbuf[255];
+
+    FormatMessage(
+        FORMAT_MESSAGE_FROM_SYSTEM |
+        FORMAT_MESSAGE_IGNORE_INSERTS,
+        NULL,
+        GetLastError(),
+        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
+        msgbuf,
+        sizeof (msgbuf) / sizeof (TCHAR),
+        NULL 
+    );
+
+    return((const char *) msgbuf);
+} /* win32strerror */
+
+
+/* enumerate contents of (base) directory. */
+file_list *make_filelist(const char *base)
+{
+    file_list *retval = NULL;
+    file_list *l = NULL;
+    file_list *prev = NULL;
+    HANDLE dir;
+    WIN32_FIND_DATA ent;
+    char wildcard[MAX_PATH];
+    snprintf(wildcard, sizeof (wildcard), "%s\\*", base);
+
+    dir = FindFirstFile(wildcard, &ent);
+    if (dir == INVALID_HANDLE_VALUE)
+    {
+        fprintf(stderr, "Error: Can't list files in %s: %s.\n", base, win32strerror());
+        return(NULL);
+    } /* if */
+
+    while (FindNextFile(dir, &ent) != 0)
+    {
+        if (strcmp(ent.cFileName, ".") == 0)
+            continue;
+
+        if (strcmp(ent.cFileName, "..") == 0)
+            continue;
+
+        l = (file_list *) malloc(sizeof (file_list));
+        if (l == NULL)
+        {
+            fprintf(stderr, "Error: out of memory.\n");
+            break;
+        } /* if */
+
+        l->fname = (char *) malloc(strlen(ent.cFileName) + 1);
+        if (l->fname == NULL)
+        {
+            fprintf(stderr, "Error: out of memory.\n");
+            free(l);
+            break;
+        } /* if */
+
+        strcpy(l->fname, ent.cFileName);
+
+        if (retval == NULL)
+            retval = l;
+        else
+            prev->next = l;
+
+        prev = l;
+        l->next = NULL;
+    } /* while */
+
+    FindClose(dir);
+    return(retval);
+} /* make_filelist */
+
+
+int get_file_size(const char *fname, long *fsize)
+{
+    DWORD FileSz;
+    DWORD FileSzHigh;
+    HANDLE hFil;
+
+    assert(fsize != NULL);
+	
+	hFil = CreateFile(fname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
+    if (hFil == INVALID_HANDLE_VALUE)
+    {
+        fprintf(stderr, "Error: Couldn't get size of [%s]: %s.\n", fname, win32strerror());
+        return(0);
+    } /* if */
+
+    FileSz = GetFileSize(hFil, &FileSzHigh);
+    assert(FileSzHigh == 0);
+    CloseHandle(hFil);
+    *fsize = FileSz;
+    return(1);
+} /* get_file_size */
+
+
+char *get_current_dir(void)
+{
+    LPTSTR retval;
+    DWORD buflen = 0;
+
+    buflen = GetCurrentDirectory(buflen, NULL);
+    retval = (LPTSTR) malloc(sizeof (TCHAR) * (buflen + 2));
+    if (retval == NULL)
+    {
+        fprintf(stderr, "Error: out of memory.\n");
+        return(NULL);
+    } /* if */
+
+    GetCurrentDirectory(buflen, retval);
+
+    if (retval[buflen - 2] != '\\')
+        strcat(retval, "\\");
+
+    return((char *) retval);
+} /* get_current_dir */
+
+
+char *get_realpath(const char *path)
+{
+    char *retval = NULL;
+    char *p = NULL;
+
+    retval = (char *) malloc(MAX_PATH);
+    if (retval == NULL)
+    {
+        fprintf(stderr, "Error: out of memory.\n");
+        return(NULL);
+    } /* if */
+
+        /*
+         * If in \\server\path format, it's already an absolute path.
+         *  We'll need to check for "." and ".." dirs, though, just in case.
+         */
+    if ((path[0] == '\\') && (path[1] == '\\'))
+        strcpy(retval, path);
+
+    else
+    {
+        char *currentDir = get_current_dir();
+        if (currentDir == NULL)
+        {
+            free(retval);
+            fprintf(stderr, "Error: out of memory.\n");
+            return(NULL);
+        } /* if */
+
+        if (path[1] == ':')   /* drive letter specified? */
+        {
+            /*
+             * Apparently, "D:mypath" is the same as "D:\\mypath" if
+             *  D: is not the current drive. However, if D: is the
+             *  current drive, then "D:mypath" is a relative path. Ugh.
+             */
+            if (path[2] == '\\')  /* maybe an absolute path? */
+                strcpy(retval, path);
+            else  /* definitely an absolute path. */
+            {
+                if (path[0] == currentDir[0]) /* current drive; relative. */
+                {
+                    strcpy(retval, currentDir);
+                    strcat(retval, path + 2);
+                } /* if */
+
+                else  /* not current drive; absolute. */
+                {
+                    retval[0] = path[0];
+                    retval[1] = ':';
+                    retval[2] = '\\';
+                    strcpy(retval + 3, path + 2);
+                } /* else */
+            } /* else */
+        } /* if */
+
+        else  /* no drive letter specified. */
+        {
+            if (path[0] == '\\')  /* absolute path. */
+            {
+                retval[0] = currentDir[0];
+                retval[1] = ':';
+                strcpy(retval + 2, path);
+            } /* if */
+            else
+            {
+                strcpy(retval, currentDir);
+                strcat(retval, path);
+            } /* else */
+        } /* else */
+
+        free(currentDir);
+    } /* else */
+
+    /* (whew.) Ok, now take out "." and ".." path entries... */
+
+    p = retval;
+    while ( (p = strstr(p, "\\.")) != NULL)
+    {
+            /* it's a "." entry that doesn't end the string. */
+        if (p[2] == '\\')
+            memmove(p + 1, p + 3, strlen(p + 3) + 1);
+
+            /* it's a "." entry that ends the string. */
+        else if (p[2] == '\0')
+            p[0] = '\0';
+
+            /* it's a ".." entry. */
+        else if (p[2] == '.')
+        {
+            char *prevEntry = p - 1;
+            while ((prevEntry != retval) && (*prevEntry != '\\'))
+                prevEntry--;
+
+            if (prevEntry == retval)  /* make it look like a "." entry. */
+                memmove(p + 1, p + 2, strlen(p + 2) + 1);
+            else
+            {
+                if (p[3] != '\0') /* doesn't end string. */
+                    *prevEntry = '\0';
+                else /* ends string. */
+                    memmove(prevEntry + 1, p + 4, strlen(p + 4) + 1);
+
+                p = prevEntry;
+            } /* else */
+        } /* else if */
+
+        else
+        {
+            p++;  /* look past current char. */
+        } /* else */
+    } /* while */
+
+        /* shrink the retval's memory block if possible... */
+    p = (char *) realloc(retval, strlen(retval) + 1);
+    if (p != NULL)
+        retval = p;
+
+    return(retval);
+} /* get_realpath */
+
+
+int main(int argc, char **argv)   /* !!! FIXME: WinMain, in the future? */
+{
+    return(mojopatch_main(argc, argv));
+} /* main */
+
+/* end of platform_win32.c ... */
+
Binary file test has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test.c	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,69 @@
+#include <Carbon/Carbon.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+
+int chdir_by_identifier(const char *str)
+{
+    char buf[MAXPATHLEN];
+    Boolean b;
+    OSStatus rc;
+    CFIndex len;
+    CFURLRef url = NULL;
+    CFStringRef id = CFStringCreateWithBytes(NULL, str, strlen(str),
+                                                kCFStringEncodingISOLatin1, 0);
+
+    rc = LSFindApplicationForInfo(kLSUnknownCreator, id, NULL, NULL, &url);
+    CFRelease(id);
+    if (rc != noErr)
+        return(0);
+
+    b = CFURLGetFileSystemRepresentation(url, TRUE, buf, sizeof (buf));
+    CFRelease(url);
+    if (!b)
+        return(0);
+
+printf("chdir to %s\n", buf);
+    return(chdir(buf) == 0);
+} /* chdir_by_identifier */
+
+
+int file_is_symlink(const char *fname)
+{
+    struct stat statbuf;
+    int retval = 0;
+
+    if (lstat(fname, &statbuf) == 0)
+    {
+        if (S_ISLNK(statbuf.st_mode))
+            retval = 1;
+    } /* if */
+
+    return(retval);
+} /* file_is_symlink */
+
+
+int main(int argc, char **argv)
+{
+    int i;
+    unsigned char m[16] = { 0x60, 0x5B, 0x8B, 0x7D, 0x5D, 0xC3, 0x27, 0xA9,
+                            0xF3, 0x01, 0x50, 0xB0, 0x4B, 0x12, 0xA7, 0x49 };
+
+    FILE *io = fopen("x.mojopatch", "ab");
+    fseek(io, 287276354, SEEK_SET);
+    fwrite(m, sizeof (m), 1, io);
+    fclose(io);
+    return(0);
+
+
+    for (i = 1; i < argc; i++)
+    {
+        if (!chdir_by_identifier(argv[i]))
+            printf("%s not found.\n", argv[i]);
+        printf("%s is%s a symlink.\n", argv[i], file_is_symlink(argv[i]) ? "" : " NOT");
+    }
+
+
+    return(0);
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tmp.txt	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,2 @@
+[Distribution]
+Partner=20000022
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui.h	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,27 @@
+
+#ifndef _INCL_UI_H_
+#define _INCL_UI_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* user interface stuff you implement. */
+int ui_init(void);
+void ui_deinit(void);
+void ui_pump(void);
+void ui_add_to_log(const char *str, int debugging);
+void ui_fatal(const char *str);
+void ui_success(const char *str);
+void ui_total_progress(int percent);
+void ui_status(const char *str);
+void ui_title(const char *str);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* include-once blocker. */
+
+/* end of ui.h ... */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui_carbon.c	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,130 @@
+#include <Carbon/Carbon.h>
+
+#include "platform.h"
+#include "ui.h"
+
+#define MOJOPATCH_SIG         'mjpt'
+#define MOJOPATCH_STATUS_ID   0
+#define MOJOPATCH_PROGRESS_ID 1
+
+static WindowPtr window;
+static ControlRef progress;
+static ControlRef status;
+
+/* user interface stuff you implement. */
+int ui_init(void)
+{
+    ControlID statusID = { MOJOPATCH_SIG, MOJOPATCH_STATUS_ID };
+    ControlID progressID = { MOJOPATCH_SIG, MOJOPATCH_PROGRESS_ID };
+    IBNibRef nibRef;
+    OSStatus err;
+    Boolean b = TRUE;
+
+    CreateNibReference( CFSTR("mojopatch"), &nibRef );
+    err = SetMenuBarFromNib(nibRef, CFSTR("MenuBar"));
+    CreateWindowFromNib( nibRef, CFSTR("MainWindow"), &window );
+    DisposeNibReference( nibRef );
+    GetControlByID(window, &statusID, &status);
+    GetControlByID(window, &progressID, &progress);
+    ShowWindow( window );
+    ActivateWindow(window, TRUE);
+    SetControlData(progress, kControlEntireControl,
+                    kControlProgressBarAnimatingTag,
+                    sizeof (b), &b);
+    return(1);
+} /* ui_init */
+
+
+void ui_title(const char *str)
+{
+    CFStringRef cfstr = CFStringCreateWithBytes(NULL, str, strlen(str),
+                                                kCFStringEncodingISOLatin1, 0);
+    SetWindowTitleWithCFString(window, cfstr);
+} /* ui_title */
+
+
+void ui_deinit(void)
+{
+    /* !!! FIXME */
+} /* ui_deinit */
+
+
+void ui_pump(void)
+{
+    EventRef theEvent;
+    EventTargetRef theTarget = GetEventDispatcherTarget();
+    if (ReceiveNextEvent(0, NULL, 0, true, &theEvent) == noErr)
+    {
+        SendEventToEventTarget(theEvent, theTarget);
+        ReleaseEvent(theEvent);
+    } /* if */
+} /* ui_pump */
+
+
+void ui_add_to_log(const char *str, int debugging)
+{
+    // !!! FIXME
+    printf("MojoPatch%s: %s\n", debugging ? " [debug]" : "", str);
+} /* ui_add_to_log */
+
+
+static void do_msgbox(const char *str, AlertType alert_type)
+{
+    const char *_title = "MojoPatch";
+    CFStringRef title = CFStringCreateWithBytes(NULL, _title, strlen(_title),
+                                                kCFStringEncodingISOLatin1, 0);
+    CFStringRef msg = CFStringCreateWithBytes(NULL, str, strlen(str),
+                                                kCFStringEncodingISOLatin1, 0);
+    if ((msg != NULL) && (title != NULL))
+    {
+        DialogItemIndex val = 0;
+        DialogRef dlg = NULL;
+
+        if (CreateStandardAlert(alert_type, title, msg, NULL, &dlg) == noErr)
+            RunStandardAlert(dlg, NULL, &val);
+    } /* if */
+
+    if (msg != NULL)
+        CFRelease(msg);
+
+    if (title != NULL)
+        CFRelease(title);
+} /* do_msgbox */
+
+
+void ui_fatal(const char *str)
+{
+    do_msgbox(str, kAlertStopAlert);
+} /* ui_fatal */
+
+
+void ui_success(const char *str)
+{
+    do_msgbox(str, kAlertNoteAlert);
+} /* ui_success */
+
+
+void ui_total_progress(int percent)
+{
+    static int lastpercent = -1;
+    if (percent != lastpercent)
+    {
+        Boolean indeterminate = (percent < 0) ? TRUE : FALSE;
+        SetControlData(progress, kControlEntireControl,
+                        kControlProgressBarIndeterminateTag,
+                        sizeof (indeterminate), &indeterminate);
+        SetControl32BitValue(progress, percent);
+        lastpercent = percent;
+    } /* if */
+} /* ui_total_progress */
+
+
+void ui_status(const char *str)
+{
+    SetControlData(status, kControlEditTextPart, kControlStaticTextTextTag,
+                    strlen(str), str);
+    Draw1Control(status);
+} /* ui_status */
+
+/* end of ui_carbon.c ... */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui_stdio.c	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,67 @@
+
+#include <stdio.h>
+
+#include "platform.h"
+#include "ui.h"
+
+int ui_init(void)
+{
+    return(1); /* always succeeds. */
+} /* ui_init */
+
+
+void ui_title(const char *str)
+{
+} /* ui_title */
+
+
+void ui_deinit(void)
+{
+    printf("\n\nHit enter to quit.\n\n");
+    getchar();
+} /* ui_deinit */
+
+
+void ui_pump(void)
+{
+    /* no-op. */
+} /* ui_pump */
+
+
+void ui_add_to_log(const char *str, int debugging)
+{
+    printf("%s%s\n", debugging ? "debug: " : "", str);
+} /* ui_add_to_log */
+
+
+void ui_fatal(const char *str)
+{
+    fprintf(stderr, "\n%s\n\n", str);
+} /* ui_fatal */
+
+
+void ui_success(const char *str)
+{
+    fprintf(stderr, "\n%s\n\n", str);
+} /* ui_success */
+
+
+void ui_total_progress(int percent)
+{
+    static int lastpercent = -1;
+    if (percent != lastpercent)
+    {
+        lastpercent = percent;
+        printf(".");
+        if (percent == 100)
+            printf("\n");
+    } /* if */
+} /* ui_total_progress */
+
+
+void ui_status(const char *str)
+{
+} /* ui_status */
+
+/* end of ui_stdio.h ... */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x.txt	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,2777 @@
+MojoPatch: MojoPatch 0.0.3 starting up.
+MojoPatch [debug]: debugging enabled.
+MojoPatch [debug]: Interactive mode NOT enabled.
+MojoPatch [debug]: ADDs are permitted to REPLACE.
+MojoPatch [debug]: command == (1).
+MojoPatch [debug]: (3) nonoptions:
+MojoPatch [debug]:  [/Users/icculus/Desktop/default.mojopatch]
+MojoPatch [debug]:  [/Users/icculus/Desktop/aops200.app]
+MojoPatch [debug]:  [/Users/icculus/Desktop/aops200a.app]
+MojoPatch [debug]: patchfile == [/Users/icculus/Desktop/default.mojopatch].
+MojoPatch [debug]: dir1 == [/Users/icculus/Desktop/aops200.app].
+MojoPatch [debug]: dir2 == [/Users/icculus/Desktop/aops200a.app].
+MojoPatch [debug]: Temp filenames are [/tmp/mojopatch.tmp1.2224] and [/tmp/mojopatch.tmp2.2224].
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app and .
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([Animations]...)
+MojoPatch [debug]: ([Briefings]...)
+MojoPatch [debug]: ([Contents]...)
+MojoPatch [debug]: ([Help]...)
+MojoPatch [debug]: ([Maps]...)
+MojoPatch [debug]: ([Movies]...)
+MojoPatch [debug]: ([Music]...)
+MojoPatch [debug]: ([Screenshots]...)
+MojoPatch [debug]: ([Sounds]...)
+MojoPatch [debug]: ([StaticMeshes]...)
+MojoPatch [debug]: ([System]...)
+MojoPatch [debug]: ([Textures]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([Animations]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Animations and Animations
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([A-charactersCiv.ukx]...)
+MojoPatch [debug]: ([A-charactersMil.ukx]...)
+MojoPatch [debug]: ([A-Objects.ukx]...)
+MojoPatch [debug]: ([A-OPFORMods.ukx]...)
+MojoPatch [debug]: ([A-USMods.ukx]...)
+MojoPatch [debug]: ([A-Weapons3P.ukx]...)
+MojoPatch [debug]: ([A-WeaponsOPFOR.ukx]...)
+MojoPatch [debug]: ([A-WeaponsUS.ukx]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([A-charactersCiv.ukx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e34e93288bfca02c98f051515300659d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e34e93288bfca02c98f051515300659d)
+MojoPatch [debug]: ([A-charactersMil.ukx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c52ebfde5797e3f6ee3abfeb7b35b777)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c52ebfde5797e3f6ee3abfeb7b35b777)
+MojoPatch [debug]: ([A-Objects.ukx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3093d23c4c67a8ca9c95c8da6775971a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3093d23c4c67a8ca9c95c8da6775971a)
+MojoPatch [debug]: ([A-OPFORMods.ukx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8e249ee6bc53006b5bf2263a4ed8362b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8e249ee6bc53006b5bf2263a4ed8362b)
+MojoPatch [debug]: ([A-USMods.ukx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b93cb41889a105d5983daa34f0907d59)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b93cb41889a105d5983daa34f0907d59)
+MojoPatch [debug]: ([A-Weapons3P.ukx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: caa19a5a109f08e8f3a86ae9923895f2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: caa19a5a109f08e8f3a86ae9923895f2)
+MojoPatch [debug]: ([A-WeaponsOPFOR.ukx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a62a7d25f8ff19b08eacff3cb9c1917b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a62a7d25f8ff19b08eacff3cb9c1917b)
+MojoPatch [debug]: ([A-WeaponsUS.ukx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 64ff9986f4149d0a4b33b832c99ff10c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 64ff9986f4149d0a4b33b832c99ff10c)
+MojoPatch [debug]: ([Briefings]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Briefings and Briefings
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([10_history.txt]...)
+MojoPatch [debug]: ([172_history.txt]...)
+MojoPatch [debug]: ([75_history.txt]...)
+MojoPatch [debug]: ([82_history.txt]...)
+MojoPatch [debug]: ([airborne_history.txt]...)
+MojoPatch [debug]: ([airborne_tour.txt]...)
+MojoPatch [debug]: ([bct_history.txt]...)
+MojoPatch [debug]: ([bct_tour.txt]...)
+MojoPatch [debug]: ([bridge.txt]...)
+MojoPatch [debug]: ([bridge_se.txt]...)
+MojoPatch [debug]: ([bridge_se_team0.txt]...)
+MojoPatch [debug]: ([bridge_se_team1.txt]...)
+MojoPatch [debug]: ([bridge_team0.txt]...)
+MojoPatch [debug]: ([bridge_team1.txt]...)
+MojoPatch [debug]: ([camp_mackall.txt]...)
+MojoPatch [debug]: ([eande.txt]...)
+MojoPatch [debug]: ([entry.txt]...)
+MojoPatch [debug]: ([entry_team0.txt]...)
+MojoPatch [debug]: ([entry_team1.txt]...)
+MojoPatch [debug]: ([fls.txt]...)
+MojoPatch [debug]: ([fls_team0.txt]...)
+MojoPatch [debug]: ([fls_team1.txt]...)
+MojoPatch [debug]: ([GettingStarted.txt]...)
+MojoPatch [debug]: ([hq_raid.txt]...)
+MojoPatch [debug]: ([hq_raid_team0.txt]...)
+MojoPatch [debug]: ([hq_raid_team1.txt]...)
+MojoPatch [debug]: ([infantry_history.txt]...)
+MojoPatch [debug]: ([infantry_tour.txt]...)
+MojoPatch [debug]: ([insurgent_camp.txt]...)
+MojoPatch [debug]: ([insurgent_camp_team0.txt]...)
+MojoPatch [debug]: ([insurgent_camp_team1.txt]...)
+MojoPatch [debug]: ([jrtc_farm.txt]...)
+MojoPatch [debug]: ([jrtc_farm_team0.txt]...)
+MojoPatch [debug]: ([jrtc_farm_team1.txt]...)
+MojoPatch [debug]: ([jump_tower.txt]...)
+MojoPatch [debug]: ([live_jump.txt]...)
+MojoPatch [debug]: ([M24_range.txt]...)
+MojoPatch [debug]: ([M82_range.txt]...)
+MojoPatch [debug]: ([marksman_history.txt]...)
+MojoPatch [debug]: ([marksman_tour.txt]...)
+MojoPatch [debug]: ([medic_field.txt]...)
+MojoPatch [debug]: ([medic_history.txt]...)
+MojoPatch [debug]: ([medic_tour.txt]...)
+MojoPatch [debug]: ([medic_training1.txt]...)
+MojoPatch [debug]: ([medic_training2.txt]...)
+MojoPatch [debug]: ([medic_training3.txt]...)
+MojoPatch [debug]: ([mission_tour.txt]...)
+MojoPatch [debug]: ([mountain_ambush.txt]...)
+MojoPatch [debug]: ([mountain_ambush_team0.txt]...)
+MojoPatch [debug]: ([mountain_ambush_team1.txt]...)
+MojoPatch [debug]: ([mountain_pass.txt]...)
+MojoPatch [debug]: ([mountain_pass_se.txt]...)
+MojoPatch [debug]: ([mountain_pass_se_team0.txt]...)
+MojoPatch [debug]: ([mountain_pass_se_team1.txt]...)
+MojoPatch [debug]: ([mountain_pass_team0.txt]...)
+MojoPatch [debug]: ([mountain_pass_team1.txt]...)
+MojoPatch [debug]: ([mout_mckenna.txt]...)
+MojoPatch [debug]: ([mout_mckenna_team0.txt]...)
+MojoPatch [debug]: ([mout_mckenna_team1.txt]...)
+MojoPatch [debug]: ([obstacle.txt]...)
+MojoPatch [debug]: ([pipeline.txt]...)
+MojoPatch [debug]: ([pipeline_sf.txt]...)
+MojoPatch [debug]: ([pipeline_sf_team0.txt]...)
+MojoPatch [debug]: ([pipeline_sf_team1.txt]...)
+MojoPatch [debug]: ([pipeline_team0.txt]...)
+MojoPatch [debug]: ([pipeline_team1.txt]...)
+MojoPatch [debug]: ([radio_tower.txt]...)
+MojoPatch [debug]: ([radio_tower_team0.txt]...)
+MojoPatch [debug]: ([radio_tower_team1.txt]...)
+MojoPatch [debug]: ([ranger_history.txt]...)
+MojoPatch [debug]: ([rifle_range.txt]...)
+MojoPatch [debug]: ([river_basin.txt]...)
+MojoPatch [debug]: ([river_basin_team0.txt]...)
+MojoPatch [debug]: ([river_basin_team1.txt]...)
+MojoPatch [debug]: ([sf_history.txt]...)
+MojoPatch [debug]: ([sf_tour.txt]...)
+MojoPatch [debug]: ([sfcsar.txt]...)
+MojoPatch [debug]: ([sfcsar_team0.txt]...)
+MojoPatch [debug]: ([sfcsar_team1.txt]...)
+MojoPatch [debug]: ([sfhospital.txt]...)
+MojoPatch [debug]: ([sfhospital_team0.txt]...)
+MojoPatch [debug]: ([sfhospital_team1.txt]...)
+MojoPatch [debug]: ([sfrecon.txt]...)
+MojoPatch [debug]: ([sfrecon_team0.txt]...)
+MojoPatch [debug]: ([sfrecon_team1.txt]...)
+MojoPatch [debug]: ([swamp_raid.txt]...)
+MojoPatch [debug]: ([swamp_raid_team0.txt]...)
+MojoPatch [debug]: ([swamp_raid_team1.txt]...)
+MojoPatch [debug]: ([tactical_training.txt]...)
+MojoPatch [debug]: ([tunnel.txt]...)
+MojoPatch [debug]: ([tunnel_team0.txt]...)
+MojoPatch [debug]: ([tunnel_team1.txt]...)
+MojoPatch [debug]: ([us_weapons.txt]...)
+MojoPatch [debug]: ([weapons_cache.txt]...)
+MojoPatch [debug]: ([weapons_cache_se.txt]...)
+MojoPatch [debug]: ([weapons_cache_se_team0.txt]...)
+MojoPatch [debug]: ([weapons_cache_se_team1.txt]...)
+MojoPatch [debug]: ([weapons_cache_team0.txt]...)
+MojoPatch [debug]: ([weapons_cache_team1.txt]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([10_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9bd729f83bb4f2145ddf8a240c782804)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9bd729f83bb4f2145ddf8a240c782804)
+MojoPatch [debug]: ([172_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0ed84591663bcd25c7c54f23696ce4fc)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0ed84591663bcd25c7c54f23696ce4fc)
+MojoPatch [debug]: ([75_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 00be993093c9f25e8956e6a3e67479ee)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 00be993093c9f25e8956e6a3e67479ee)
+MojoPatch [debug]: ([82_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9da7647c3fe6bfe416738490832816c0)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9da7647c3fe6bfe416738490832816c0)
+MojoPatch [debug]: ([airborne_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e208b1e3f671dcfd5225bcb22d3bb331)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e208b1e3f671dcfd5225bcb22d3bb331)
+MojoPatch [debug]: ([airborne_tour.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2de0f6a60b618fa5118a8dca6c85cabc)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2de0f6a60b618fa5118a8dca6c85cabc)
+MojoPatch [debug]: ([bct_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6418e0b2c473d8782a504c7761f66132)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6418e0b2c473d8782a504c7761f66132)
+MojoPatch [debug]: ([bct_tour.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fe6974e2e5a5c114058d6e50dccc2425)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fe6974e2e5a5c114058d6e50dccc2425)
+MojoPatch [debug]: ([bridge.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b0027ac1b911b5f815d08cbb09624be7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b0027ac1b911b5f815d08cbb09624be7)
+MojoPatch [debug]: ([bridge_se.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d0926764c16fd6750dbf0f07606d2554)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d0926764c16fd6750dbf0f07606d2554)
+MojoPatch [debug]: ([bridge_se_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2737ea0e0eb8501525043b8527803ab2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2737ea0e0eb8501525043b8527803ab2)
+MojoPatch [debug]: ([bridge_se_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2755473b1111cd0e935f5390989e3832)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2755473b1111cd0e935f5390989e3832)
+MojoPatch [debug]: ([bridge_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e829a7e27922a51d7d3def5a44c4c662)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e829a7e27922a51d7d3def5a44c4c662)
+MojoPatch [debug]: ([bridge_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 636579cb36ffa3f6636ea56c573cdda6)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 636579cb36ffa3f6636ea56c573cdda6)
+MojoPatch [debug]: ([camp_mackall.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: daf6ae6b44d5641224ab1506fdda6758)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: daf6ae6b44d5641224ab1506fdda6758)
+MojoPatch [debug]: ([eande.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2985fd698ae6cb72d7cb8abda180de0b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2985fd698ae6cb72d7cb8abda180de0b)
+MojoPatch [debug]: ([entry.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bd3941cd5c9abb6473a6e276293a3e47)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bd3941cd5c9abb6473a6e276293a3e47)
+MojoPatch [debug]: ([entry_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bd3941cd5c9abb6473a6e276293a3e47)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bd3941cd5c9abb6473a6e276293a3e47)
+MojoPatch [debug]: ([entry_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bd3941cd5c9abb6473a6e276293a3e47)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bd3941cd5c9abb6473a6e276293a3e47)
+MojoPatch [debug]: ([fls.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bb347f19bfb2a86d06b7ebf8eb84e2b5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bb347f19bfb2a86d06b7ebf8eb84e2b5)
+MojoPatch [debug]: ([fls_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e32f10fabe2139a084a46ec2d6f64709)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e32f10fabe2139a084a46ec2d6f64709)
+MojoPatch [debug]: ([fls_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4b8b01318eb66a75490cc10a5a1fbff2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4b8b01318eb66a75490cc10a5a1fbff2)
+MojoPatch [debug]: ([GettingStarted.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4390d51dcb804197f99f960d2b1ba731)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4390d51dcb804197f99f960d2b1ba731)
+MojoPatch [debug]: ([hq_raid.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fbd02a664575e2c74d970ec994b188d8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fbd02a664575e2c74d970ec994b188d8)
+MojoPatch [debug]: ([hq_raid_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b1b34d269d9f7c83296bfa82ac63c54c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b1b34d269d9f7c83296bfa82ac63c54c)
+MojoPatch [debug]: ([hq_raid_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9e318541e221665b46e8e4de99a04030)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9e318541e221665b46e8e4de99a04030)
+MojoPatch [debug]: ([infantry_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 762fe5de41192446934eab94b80db6f6)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 762fe5de41192446934eab94b80db6f6)
+MojoPatch [debug]: ([infantry_tour.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 75494256a0af6df40263c8bfdf1c902e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 75494256a0af6df40263c8bfdf1c902e)
+MojoPatch [debug]: ([insurgent_camp.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1bcad28e8d62e4aede761615220fe6c8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1bcad28e8d62e4aede761615220fe6c8)
+MojoPatch [debug]: ([insurgent_camp_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 95c1f4a1af1f86a16b6fc3c16a28675f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 95c1f4a1af1f86a16b6fc3c16a28675f)
+MojoPatch [debug]: ([insurgent_camp_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a79eaa0187fff00733c8ae08939ff32b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a79eaa0187fff00733c8ae08939ff32b)
+MojoPatch [debug]: ([jrtc_farm.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 86b0909fa82d9295ba06e40bbe02b255)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 86b0909fa82d9295ba06e40bbe02b255)
+MojoPatch [debug]: ([jrtc_farm_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9b8a3f9f4bdade6c1892f5047479097a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9b8a3f9f4bdade6c1892f5047479097a)
+MojoPatch [debug]: ([jrtc_farm_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2bb336b91ba1e55fb90cd68551adf829)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2bb336b91ba1e55fb90cd68551adf829)
+MojoPatch [debug]: ([jump_tower.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 61150fb22e6bbb442a4493c7f3e26595)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 61150fb22e6bbb442a4493c7f3e26595)
+MojoPatch [debug]: ([live_jump.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 34b1447bd938ec11e1878bb668264d04)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 34b1447bd938ec11e1878bb668264d04)
+MojoPatch [debug]: ([M24_range.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 58860b37c8019e1dc3440c861fe98320)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 58860b37c8019e1dc3440c861fe98320)
+MojoPatch [debug]: ([M82_range.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3d84b0da7d5cbab868aca01697ab5656)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3d84b0da7d5cbab868aca01697ab5656)
+MojoPatch [debug]: ([marksman_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 739295245c854f155b2cecd39ae14609)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 739295245c854f155b2cecd39ae14609)
+MojoPatch [debug]: ([marksman_tour.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4c066eea76780304695847bd542ff6ad)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4c066eea76780304695847bd542ff6ad)
+MojoPatch [debug]: ([medic_field.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 61f715cde03d26c68286004cf90d5145)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 61f715cde03d26c68286004cf90d5145)
+MojoPatch [debug]: ([medic_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0f9320fd94c1ba10c1e6111b8bb7e2c4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0f9320fd94c1ba10c1e6111b8bb7e2c4)
+MojoPatch [debug]: ([medic_tour.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a9392fca659c59f9b50a334644b76c40)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a9392fca659c59f9b50a334644b76c40)
+MojoPatch [debug]: ([medic_training1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ca328de2f4764817679601d9e9736fd8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ca328de2f4764817679601d9e9736fd8)
+MojoPatch [debug]: ([medic_training2.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: af16276a3616941fa03d1698b39a21e1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: af16276a3616941fa03d1698b39a21e1)
+MojoPatch [debug]: ([medic_training3.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ca05dfc16c7c83da0379d0216be133a6)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ca05dfc16c7c83da0379d0216be133a6)
+MojoPatch [debug]: ([mission_tour.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4fef981a02e53bb58fa5de7f50451c7f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4fef981a02e53bb58fa5de7f50451c7f)
+MojoPatch [debug]: ([mountain_ambush.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5caef9fb896dc0ca7ef75f38ddd0c960)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5caef9fb896dc0ca7ef75f38ddd0c960)
+MojoPatch [debug]: ([mountain_ambush_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7df9854b7069e36b1fb19269d0dd13db)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7df9854b7069e36b1fb19269d0dd13db)
+MojoPatch [debug]: ([mountain_ambush_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5bc2799102576a1fe2ce47e92d122653)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5bc2799102576a1fe2ce47e92d122653)
+MojoPatch [debug]: ([mountain_pass.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4f05a413ab366dc7fa6e628eb5927a21)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4f05a413ab366dc7fa6e628eb5927a21)
+MojoPatch [debug]: ([mountain_pass_se.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8dcd255b96fe43776a955e5b73de63ba)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8dcd255b96fe43776a955e5b73de63ba)
+MojoPatch [debug]: ([mountain_pass_se_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e38b7fb30e38a3700623947c696fccb6)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e38b7fb30e38a3700623947c696fccb6)
+MojoPatch [debug]: ([mountain_pass_se_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9278fa7d78bb877a502ef9dd5518123b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9278fa7d78bb877a502ef9dd5518123b)
+MojoPatch [debug]: ([mountain_pass_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d6b620e5ff1e6d996226108f49313ef2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d6b620e5ff1e6d996226108f49313ef2)
+MojoPatch [debug]: ([mountain_pass_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a16de5f286f18370d78a2934200e3df9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a16de5f286f18370d78a2934200e3df9)
+MojoPatch [debug]: ([mout_mckenna.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 041593a5ec7cfee6b8b104fe998826e2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 041593a5ec7cfee6b8b104fe998826e2)
+MojoPatch [debug]: ([mout_mckenna_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8a8958c62b3b0cb85837b8beca9be7e8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8a8958c62b3b0cb85837b8beca9be7e8)
+MojoPatch [debug]: ([mout_mckenna_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 719cc5bbd075e98fd9224be9cabe0ca0)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 719cc5bbd075e98fd9224be9cabe0ca0)
+MojoPatch [debug]: ([obstacle.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a4d16e7531367971b4e7eb28322132a2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a4d16e7531367971b4e7eb28322132a2)
+MojoPatch [debug]: ([pipeline.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ec797da1ab61da1b1ad0b078248c9f3b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ec797da1ab61da1b1ad0b078248c9f3b)
+MojoPatch [debug]: ([pipeline_sf.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 58bf9ce3b7588e151fbfd92a6f54c4b4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 58bf9ce3b7588e151fbfd92a6f54c4b4)
+MojoPatch [debug]: ([pipeline_sf_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d0faf86d9b8dbefd0d971dde42e386a3)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d0faf86d9b8dbefd0d971dde42e386a3)
+MojoPatch [debug]: ([pipeline_sf_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6361e9e849ee596fdf11a58047f67a84)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6361e9e849ee596fdf11a58047f67a84)
+MojoPatch [debug]: ([pipeline_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5c08db5f9c5ed767bb28d79f87d4ba13)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5c08db5f9c5ed767bb28d79f87d4ba13)
+MojoPatch [debug]: ([pipeline_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a4d31784c62868953952edc116ea81e8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a4d31784c62868953952edc116ea81e8)
+MojoPatch [debug]: ([radio_tower.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6ae58bafb75ed3dee6c8414d1b1f2eb0)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6ae58bafb75ed3dee6c8414d1b1f2eb0)
+MojoPatch [debug]: ([radio_tower_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 03c5d5b22050968237d86558b8ebf97a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 03c5d5b22050968237d86558b8ebf97a)
+MojoPatch [debug]: ([radio_tower_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b114e57e5db82cd5ce8c09e8af91793b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b114e57e5db82cd5ce8c09e8af91793b)
+MojoPatch [debug]: ([ranger_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3fbfd1ec5bfc11c18c368c08c143b1a1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3fbfd1ec5bfc11c18c368c08c143b1a1)
+MojoPatch [debug]: ([rifle_range.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a13d3be8d67cc174ef6c08b62f363798)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a13d3be8d67cc174ef6c08b62f363798)
+MojoPatch [debug]: ([river_basin.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e96a0fd8e550887312bcd40040cb55ce)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e96a0fd8e550887312bcd40040cb55ce)
+MojoPatch [debug]: ([river_basin_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 11c07b3eb4a231f1e78cf9321144dc31)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 11c07b3eb4a231f1e78cf9321144dc31)
+MojoPatch [debug]: ([river_basin_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ffc90c2bdc3877887cf101939ca7edd5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ffc90c2bdc3877887cf101939ca7edd5)
+MojoPatch [debug]: ([sf_history.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3940e8281a4e9fef679e499422ed632c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3940e8281a4e9fef679e499422ed632c)
+MojoPatch [debug]: ([sf_tour.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fbb0142088d27c6b77023e1509ab02ee)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fbb0142088d27c6b77023e1509ab02ee)
+MojoPatch [debug]: ([sfcsar.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cc49979a2393c858bbe77fa6b105c696)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cc49979a2393c858bbe77fa6b105c696)
+MojoPatch [debug]: ([sfcsar_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 73ba8b0746448b66ee049389683d3a53)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 73ba8b0746448b66ee049389683d3a53)
+MojoPatch [debug]: ([sfcsar_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d948887f1d32510d95a46ebb008a4461)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d948887f1d32510d95a46ebb008a4461)
+MojoPatch [debug]: ([sfhospital.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bce95cbc135071bc137b50edcd7e026d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bce95cbc135071bc137b50edcd7e026d)
+MojoPatch [debug]: ([sfhospital_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ed32baa88277beb7f7cc1ffb282d5868)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ed32baa88277beb7f7cc1ffb282d5868)
+MojoPatch [debug]: ([sfhospital_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a4f4cb5810631e4b42eeac749f7f1549)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a4f4cb5810631e4b42eeac749f7f1549)
+MojoPatch [debug]: ([sfrecon.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 73c73384d7e34a4e111bfdac879486a9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 73c73384d7e34a4e111bfdac879486a9)
+MojoPatch [debug]: ([sfrecon_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4f09f090eea61ae134700cf404743cd5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4f09f090eea61ae134700cf404743cd5)
+MojoPatch [debug]: ([sfrecon_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9ba9de4c9f1b7e5a0c1e0b1cfac9e8a6)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9ba9de4c9f1b7e5a0c1e0b1cfac9e8a6)
+MojoPatch [debug]: ([sfsandstorm.txt]...)
+MojoPatch: ADDORREPLACE Briefings/sfsandstorm.txt
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b6b7004fcf7d408643e05eebc05eb1be)
+MojoPatch [debug]:   (2256 bytes in file.)
+MojoPatch [debug]: ([sfsandstorm_team0.txt]...)
+MojoPatch: ADDORREPLACE Briefings/sfsandstorm_team0.txt
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b91bafd59145687e5fcc294701e2513e)
+MojoPatch [debug]:   (1090 bytes in file.)
+MojoPatch [debug]: ([sfsandstorm_team1.txt]...)
+MojoPatch: ADDORREPLACE Briefings/sfsandstorm_team1.txt
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 63614f2427db9d68394b527b4ca83708)
+MojoPatch [debug]:   (1098 bytes in file.)
+MojoPatch [debug]: ([swamp_raid.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fbe441c76da084028d39954d04a7ab4b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fbe441c76da084028d39954d04a7ab4b)
+MojoPatch [debug]: ([swamp_raid_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f8268cddda406ae0be65613c3e036d04)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f8268cddda406ae0be65613c3e036d04)
+MojoPatch [debug]: ([swamp_raid_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bab893b2aaf26990a7a8c69ebf76a441)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bab893b2aaf26990a7a8c69ebf76a441)
+MojoPatch [debug]: ([tactical_training.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7ce228b3b7d1583021e3d16176fa39d0)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7ce228b3b7d1583021e3d16176fa39d0)
+MojoPatch [debug]: ([tunnel.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 94c14cf92ededaffae6efecfab526b2a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 94c14cf92ededaffae6efecfab526b2a)
+MojoPatch [debug]: ([tunnel_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 678083dd6edfab3a659aef0fbea8e3b6)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 678083dd6edfab3a659aef0fbea8e3b6)
+MojoPatch [debug]: ([tunnel_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7c81865b3af5cc5fc5058857ddc86162)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7c81865b3af5cc5fc5058857ddc86162)
+MojoPatch [debug]: ([us_weapons.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 31e1f7a065c4febf4090abdb1f150aa8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 31e1f7a065c4febf4090abdb1f150aa8)
+MojoPatch [debug]: ([weapons_cache.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a8bc8883f28d8961d96a45d14291c0c9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a8bc8883f28d8961d96a45d14291c0c9)
+MojoPatch [debug]: ([weapons_cache_se.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2cf01f290bde7d8599ae82f54e3cb7bc)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2cf01f290bde7d8599ae82f54e3cb7bc)
+MojoPatch [debug]: ([weapons_cache_se_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ed91306df96428142c7c8bf0d7a67f6c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ed91306df96428142c7c8bf0d7a67f6c)
+MojoPatch [debug]: ([weapons_cache_se_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3a661ff93aa7a0439f16c174e9f74f0c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3a661ff93aa7a0439f16c174e9f74f0c)
+MojoPatch [debug]: ([weapons_cache_team0.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6869039ef8c5e16341b3e78debc07154)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6869039ef8c5e16341b3e78debc07154)
+MojoPatch [debug]: ([weapons_cache_team1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ee3cf726d430ed2d0efe83f18df4e0f7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ee3cf726d430ed2d0efe83f18df4e0f7)
+MojoPatch [debug]: ([Contents]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Contents and Contents
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([Info.plist]...)
+MojoPatch [debug]: ([MacOS]...)
+MojoPatch [debug]: ([PkgInfo]...)
+MojoPatch [debug]: ([Resources]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([Info.plist]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bfd704080f9a9a2255c22e13a444d81f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bfd704080f9a9a2255c22e13a444d81f)
+MojoPatch [debug]: ([MacOS]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Contents/MacOS and Contents/MacOS
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([PkgInfo]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e1e1381eeb88b48dda6cbb66e7f6b29b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e1e1381eeb88b48dda6cbb66e7f6b29b)
+MojoPatch [debug]: ([Resources]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Contents/Resources and Contents/Resources
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([ArmyOps.icns]...)
+MojoPatch [debug]: ([English.lproj]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([ArmyOps.icns]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 250772a3f2bbf5f65341c1fec7e44244)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 250772a3f2bbf5f65341c1fec7e44244)
+MojoPatch [debug]: ([English.lproj]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Contents/Resources/English.lproj and Contents/Resources/English.lproj
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([InfoPlist.strings]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([InfoPlist.strings]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 020b31613141595dd8f2ff326bcca1b4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 020b31613141595dd8f2ff326bcca1b4)
+MojoPatch [debug]: ([Help]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Help and Help
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([AAO.ico]...)
+MojoPatch [debug]: ([AAOMap.ico]...)
+MojoPatch [debug]: ([America's Army Community.url]...)
+MojoPatch [debug]: ([America's Army Support.url]...)
+MojoPatch [debug]: ([America's Army Web Site.url]...)
+MojoPatch [debug]: ([AmericasArmyKeyboardLayout.bmp]...)
+MojoPatch [debug]: ([AmericasArmyManual.pdf]...)
+MojoPatch [debug]: ([AmericasArmyQuickstartGuide.pdf]...)
+MojoPatch [debug]: ([Lease an Official America's Army server.url]...)
+MojoPatch [debug]: ([Official U.S. Army Web Site.url]...)
+MojoPatch [debug]: ([Play America's Army Online With GameSpy Arcade.url]...)
+MojoPatch [debug]: ([UWLogo.bmp]...)
+MojoPatch [debug]: ([View game manuals with Adobe Reader.url]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([AAO.ico]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 44dc63d1559f075f3c7834dac6a75821)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 44dc63d1559f075f3c7834dac6a75821)
+MojoPatch [debug]: ([AAOMap.ico]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 921c124a07f9a14036d066d47fad5683)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 921c124a07f9a14036d066d47fad5683)
+MojoPatch [debug]: ([America's Army Community.url]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d3c8409aa9a1455d2f60a046f30198e3)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d3c8409aa9a1455d2f60a046f30198e3)
+MojoPatch [debug]: ([America's Army Support.url]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 778d4039c0d6d4d835caa401cb02c78d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 778d4039c0d6d4d835caa401cb02c78d)
+MojoPatch [debug]: ([America's Army Web Site.url]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5b5a466fa2e4f0b19fc8b2447fc4d8df)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5b5a466fa2e4f0b19fc8b2447fc4d8df)
+MojoPatch [debug]: ([AmericasArmyKeyboardLayout.bmp]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 45fcef9b6f441b5225f7691cf1b3e972)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 45fcef9b6f441b5225f7691cf1b3e972)
+MojoPatch [debug]: ([AmericasArmyManual.pdf]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5b530e741560913d58171b89a7db0ae1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6e2a1f9849183e53149d9c96e5a7a4d5)
+MojoPatch: PATCH Help/AmericasArmyManual.pdf
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/Help/AmericasArmyManual.pdf" "Help/AmericasArmyManual.pdf" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (1011431 bytes in patch.)
+MojoPatch [debug]: ([AmericasArmyQuickstartGuide.pdf]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d20dcd158be827ff443694080309c5fe)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 88263dcddf6abe04954e8160599a831c)
+MojoPatch: PATCH Help/AmericasArmyQuickstartGuide.pdf
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/Help/AmericasArmyQuickstartGuide.pdf" "Help/AmericasArmyQuickstartGuide.pdf" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (27260 bytes in patch.)
+MojoPatch [debug]: ([Lease an Official America's Army server.url]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f33bd1fe27139015e987f4dbe07f8267)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f33bd1fe27139015e987f4dbe07f8267)
+MojoPatch [debug]: ([Official U.S. Army Web Site.url]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5e595475cce6d20fdc2d3493db01f0db)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5e595475cce6d20fdc2d3493db01f0db)
+MojoPatch [debug]: ([Play America's Army Online With GameSpy Arcade.url]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 922b9ad1329687408c1531196981fc4e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 922b9ad1329687408c1531196981fc4e)
+MojoPatch [debug]: ([UWLogo.bmp]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e0d32cd33100d3fe1dd21362ff367a5c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e0d32cd33100d3fe1dd21362ff367a5c)
+MojoPatch [debug]: ([View game manuals with Adobe Reader.url]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ac695aefcc4ffd0769a28717641612c1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ac695aefcc4ffd0769a28717641612c1)
+MojoPatch [debug]: ([Maps]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Maps and Maps
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([Bridge.aao]...)
+MojoPatch [debug]: ([Bridge_SE.aao]...)
+MojoPatch [debug]: ([camp_mackall.aao]...)
+MojoPatch [debug]: ([EandE.aao]...)
+MojoPatch [debug]: ([Entry.aao]...)
+MojoPatch [debug]: ([Entry2.aao]...)
+MojoPatch [debug]: ([FLS.aao]...)
+MojoPatch [debug]: ([HQ_Raid.aao]...)
+MojoPatch [debug]: ([Insurgent_Camp.aao]...)
+MojoPatch [debug]: ([JRTC_Farm.aao]...)
+MojoPatch [debug]: ([Jump_Tower.aao]...)
+MojoPatch [debug]: ([Leavenworth.aao]...)
+MojoPatch [debug]: ([Live_Jump.aao]...)
+MojoPatch [debug]: ([M24_Range.aao]...)
+MojoPatch [debug]: ([M82_Range.aao]...)
+MojoPatch [debug]: ([Medic_Field.aao]...)
+MojoPatch [debug]: ([Medic_Training1.aao]...)
+MojoPatch [debug]: ([Medic_Training2.aao]...)
+MojoPatch [debug]: ([Medic_Training3.aao]...)
+MojoPatch [debug]: ([Mountain_Ambush.aao]...)
+MojoPatch [debug]: ([Mountain_Pass.aao]...)
+MojoPatch [debug]: ([Mountain_Pass_SE.aao]...)
+MojoPatch [debug]: ([MOUT_McKenna.aao]...)
+MojoPatch [debug]: ([Obstacle.aao]...)
+MojoPatch [debug]: ([Pipeline.aao]...)
+MojoPatch [debug]: ([Pipeline_SF.aao]...)
+MojoPatch [debug]: ([Radio_Tower.aao]...)
+MojoPatch [debug]: ([Rifle_Range.aao]...)
+MojoPatch [debug]: ([River_Basin.aao]...)
+MojoPatch [debug]: ([SFcsar.aao]...)
+MojoPatch [debug]: ([SFhospital.aao]...)
+MojoPatch [debug]: ([SFrecon.aao]...)
+MojoPatch [debug]: ([Swamp_Raid.aao]...)
+MojoPatch [debug]: ([Tactical_Training.aao]...)
+MojoPatch [debug]: ([Tunnel.aao]...)
+MojoPatch [debug]: ([US_Weapons.aao]...)
+MojoPatch [debug]: ([Weapons_Cache.aao]...)
+MojoPatch [debug]: ([Weapons_Cache_SE.aao]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([Bridge.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b814b9464cbfda8b9346bfe5c15749fa)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b814b9464cbfda8b9346bfe5c15749fa)
+MojoPatch [debug]: ([Bridge_SE.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8b43f669ad768070f012e907980e2d98)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8b43f669ad768070f012e907980e2d98)
+MojoPatch [debug]: ([camp_mackall.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4a1a8587874705b5c7796560149270cb)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4a1a8587874705b5c7796560149270cb)
+MojoPatch [debug]: ([EandE.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9074dc28db06797eaef6d87917df0cdc)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9074dc28db06797eaef6d87917df0cdc)
+MojoPatch [debug]: ([Entry.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c60918a45a0f16a5f669a561e706d6b0)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c60918a45a0f16a5f669a561e706d6b0)
+MojoPatch [debug]: ([Entry2.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6c5c3185a65f889c52833d359dcbf3ec)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6c5c3185a65f889c52833d359dcbf3ec)
+MojoPatch [debug]: ([FLS.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4ad1147e5ee5381ed4d4598989d8f1a4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4ad1147e5ee5381ed4d4598989d8f1a4)
+MojoPatch [debug]: ([HQ_Raid.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 41eff16e9e2229554ebfd69664bb5c36)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 41eff16e9e2229554ebfd69664bb5c36)
+MojoPatch [debug]: ([Insurgent_Camp.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d1fc3bc8bad6b9c601539f7d94662de2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d1fc3bc8bad6b9c601539f7d94662de2)
+MojoPatch [debug]: ([JRTC_Farm.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0218cbd4d4f43d9bfa52a778ec2a96b5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0218cbd4d4f43d9bfa52a778ec2a96b5)
+MojoPatch [debug]: ([Jump_Tower.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6da5b3f841cf4994a103c85a3494674b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6da5b3f841cf4994a103c85a3494674b)
+MojoPatch [debug]: ([Leavenworth.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ae24a5eb993b31484e2e27559fc1da11)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ae24a5eb993b31484e2e27559fc1da11)
+MojoPatch [debug]: ([Live_Jump.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8f6c28c42b859f3089370a5c66590b9b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8f6c28c42b859f3089370a5c66590b9b)
+MojoPatch [debug]: ([M24_Range.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7cc763362aa4067cd23bef0a159f54e4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7cc763362aa4067cd23bef0a159f54e4)
+MojoPatch [debug]: ([M82_Range.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 35885fb8393493bec739356c0be656bc)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 35885fb8393493bec739356c0be656bc)
+MojoPatch [debug]: ([Medic_Field.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e7b16429c188d4164c356e83def8026a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e7b16429c188d4164c356e83def8026a)
+MojoPatch [debug]: ([Medic_Training1.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d671b9b4138ae39541b82a66ba13119b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d671b9b4138ae39541b82a66ba13119b)
+MojoPatch [debug]: ([Medic_Training2.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 33c02987b76a30f7f3057b69c6519109)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 33c02987b76a30f7f3057b69c6519109)
+MojoPatch [debug]: ([Medic_Training3.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1c1f3b697ba5392a729a8c4f4e35463f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1c1f3b697ba5392a729a8c4f4e35463f)
+MojoPatch [debug]: ([Mountain_Ambush.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9de8a56971bad72d55f53d352ff97935)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9de8a56971bad72d55f53d352ff97935)
+MojoPatch [debug]: ([Mountain_Pass.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fec1e4c23c1f9d92b15cf2805e81287c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fec1e4c23c1f9d92b15cf2805e81287c)
+MojoPatch [debug]: ([Mountain_Pass_SE.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1abd13373bd9b58860cf954165338110)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1abd13373bd9b58860cf954165338110)
+MojoPatch [debug]: ([MOUT_McKenna.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4f5e632919e06580d31e61c9a01d9c71)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4f5e632919e06580d31e61c9a01d9c71)
+MojoPatch [debug]: ([Obstacle.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d753cad9b17e87cad216bf0e967d71c1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d753cad9b17e87cad216bf0e967d71c1)
+MojoPatch [debug]: ([Pipeline.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9427c874c90589d4caca915c557618f2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9427c874c90589d4caca915c557618f2)
+MojoPatch [debug]: ([Pipeline_SF.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 40e9fd64f76078543c225c9e5b636bbb)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 40e9fd64f76078543c225c9e5b636bbb)
+MojoPatch [debug]: ([Radio_Tower.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ba0db16185b45f55c9742ad6d2777f9d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ba0db16185b45f55c9742ad6d2777f9d)
+MojoPatch [debug]: ([Rifle_Range.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e1b56f8c8a246e57674d2b4e3f49ab98)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e1b56f8c8a246e57674d2b4e3f49ab98)
+MojoPatch [debug]: ([River_Basin.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e01b7a0250c5d49711ad70cecf0f9e65)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e01b7a0250c5d49711ad70cecf0f9e65)
+MojoPatch [debug]: ([SFcsar.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7c9b3f1020e80b8c9dbda70cda4411c7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7c9b3f1020e80b8c9dbda70cda4411c7)
+MojoPatch [debug]: ([SFhospital.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8b2d7fe4cbfaf8140e37d9e4b5a18653)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8b2d7fe4cbfaf8140e37d9e4b5a18653)
+MojoPatch [debug]: ([SFrecon.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a63ae072d60a49028595da27ab7162ad)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a63ae072d60a49028595da27ab7162ad)
+MojoPatch [debug]: ([SFsandstorm.aao]...)
+MojoPatch: ADDORREPLACE Maps/SFsandstorm.aao
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e52561c5cd21da064198fabc75832d5d)
+MojoPatch [debug]:   (22560858 bytes in file.)
+MojoPatch [debug]: ([Swamp_Raid.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9ee70c575042dc4523c04d8234e6b845)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9ee70c575042dc4523c04d8234e6b845)
+MojoPatch [debug]: ([Tactical_Training.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 70e50289cecec72cf2800f23e9aed1aa)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 70e50289cecec72cf2800f23e9aed1aa)
+MojoPatch [debug]: ([Tunnel.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4da04f192e9cb551767fa7c4416c020a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4da04f192e9cb551767fa7c4416c020a)
+MojoPatch [debug]: ([US_Weapons.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8f6f4be8ee9c4c7532470dfb7210b268)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8f6f4be8ee9c4c7532470dfb7210b268)
+MojoPatch [debug]: ([Weapons_Cache.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 78a000c01d79d1b764b64fb8430ac51d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 78a000c01d79d1b764b64fb8430ac51d)
+MojoPatch [debug]: ([Weapons_Cache_SE.aao]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f9355e5f8317ea90153dd390a847bf6c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f9355e5f8317ea90153dd390a847bf6c)
+MojoPatch [debug]: ([Movies]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Movies and Movies
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([op_vert.RoQ]...)
+MojoPatch [debug]: ([sol_vert.RoQ]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([op_vert.RoQ]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3f780d284f792857c290fc7fe9fc55af)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3f780d284f792857c290fc7fe9fc55af)
+MojoPatch [debug]: ([sol_vert.RoQ]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 99ea01ca2f5145c5edff14d0ef5826b8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 99ea01ca2f5145c5edff14d0ef5826b8)
+MojoPatch [debug]: ([Music]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Music and Music
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([EscapeAndEvade.ogg]...)
+MojoPatch [debug]: ([USArmyMainThemeBoostEQ256.ogg]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([EscapeAndEvade.ogg]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cbebbd8cd0391ce62c7a3bb5de90a0ee)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cbebbd8cd0391ce62c7a3bb5de90a0ee)
+MojoPatch [debug]: ([USArmyMainThemeBoostEQ256.ogg]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 49c7e90580aba7ddb1ae1faa582782d0)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 49c7e90580aba7ddb1ae1faa582782d0)
+MojoPatch [debug]: ([Screenshots]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Screenshots and Screenshots
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([Sounds]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Sounds and Sounds
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([S-Aircraft.uax]...)
+MojoPatch [debug]: ([S-Ambient.uax]...)
+MojoPatch [debug]: ([S-Animals.uax]...)
+MojoPatch [debug]: ([S-BCT_RifleRange.uax]...)
+MojoPatch [debug]: ([S-CampMackall.uax]...)
+MojoPatch [debug]: ([S-E3.uax]...)
+MojoPatch [debug]: ([S-EandE.uax]...)
+MojoPatch [debug]: ([S-Explosions.uax]...)
+MojoPatch [debug]: ([S-Foley.uax]...)
+MojoPatch [debug]: ([S-Human.uax]...)
+MojoPatch [debug]: ([S-Jumpschool.uax]...)
+MojoPatch [debug]: ([S-JumpTower.uax]...)
+MojoPatch [debug]: ([S-LandNav.uax]...)
+MojoPatch [debug]: ([S-LiveJump.uax]...)
+MojoPatch [debug]: ([S-Material.uax]...)
+MojoPatch [debug]: ([S-Medic.uax]...)
+MojoPatch [debug]: ([S-MedicField.uax]...)
+MojoPatch [debug]: ([S-MedicTraining.uax]...)
+MojoPatch [debug]: ([S-Menu.uax]...)
+MojoPatch [debug]: ([S-Muffled.uax]...)
+MojoPatch [debug]: ([S-Objective.uax]...)
+MojoPatch [debug]: ([S-ObstacleCourse.uax]...)
+MojoPatch [debug]: ([S-PlayerCommo.uax]...)
+MojoPatch [debug]: ([S-RadioMusic.uax]...)
+MojoPatch [debug]: ([S-SniperRange.uax]...)
+MojoPatch [debug]: ([S-TacticalTraining.uax]...)
+MojoPatch [debug]: ([S-US_Weapons.uax]...)
+MojoPatch [debug]: ([S-WeaponFX.uax]...)
+MojoPatch [debug]: ([S-WeaponsOPFOR.uax]...)
+MojoPatch [debug]: ([S-WeaponsUS.uax]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([S-Aircraft.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 404f64f17ff874d29fa4bd2288b81a6f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 404f64f17ff874d29fa4bd2288b81a6f)
+MojoPatch [debug]: ([S-Ambient.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ebf9297dad90489d1ced181c1163b780)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ebf9297dad90489d1ced181c1163b780)
+MojoPatch [debug]: ([S-Animals.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c67cbfbd1ad63be39bf469de551b9c51)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c67cbfbd1ad63be39bf469de551b9c51)
+MojoPatch [debug]: ([S-BCT_RifleRange.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4fa4281bbb943a88ee49099f15f8a444)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4fa4281bbb943a88ee49099f15f8a444)
+MojoPatch [debug]: ([S-CampMackall.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fcdb262f65ea4940130e8e94d775da7d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fcdb262f65ea4940130e8e94d775da7d)
+MojoPatch [debug]: ([S-E3.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: be8ba4c3c3c4418b446b63a6669c3269)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: be8ba4c3c3c4418b446b63a6669c3269)
+MojoPatch [debug]: ([S-EandE.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2dfa145ae77d3131888ab928913d272e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2dfa145ae77d3131888ab928913d272e)
+MojoPatch [debug]: ([S-Explosions.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 96e93da44cfb77e05c54e873ee869f61)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 96e93da44cfb77e05c54e873ee869f61)
+MojoPatch [debug]: ([S-Foley.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 669f889a96a34e4ebdbc69d85119abdb)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 669f889a96a34e4ebdbc69d85119abdb)
+MojoPatch [debug]: ([S-Human.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e7f3b9701be7e82b80d8934356abf859)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e7f3b9701be7e82b80d8934356abf859)
+MojoPatch [debug]: ([S-Jumpschool.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: de94f55a957f6cf42d5a9b02733472de)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: de94f55a957f6cf42d5a9b02733472de)
+MojoPatch [debug]: ([S-JumpTower.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e9bee1b61589f6b6f63fb30fcefe02de)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e9bee1b61589f6b6f63fb30fcefe02de)
+MojoPatch [debug]: ([S-LandNav.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 02a04fdf7249ef9df26f6bc42986b4b0)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 02a04fdf7249ef9df26f6bc42986b4b0)
+MojoPatch [debug]: ([S-LiveJump.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 432ad662bbf09472303c47641eecc989)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 432ad662bbf09472303c47641eecc989)
+MojoPatch [debug]: ([S-Material.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5d92a928940a949bf4742c8b05924525)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5d92a928940a949bf4742c8b05924525)
+MojoPatch [debug]: ([S-Medic.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4ce7312da87231aac0b8675f7758ef8e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4ce7312da87231aac0b8675f7758ef8e)
+MojoPatch [debug]: ([S-MedicField.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 064a45a3159893b94594d389f445d3d0)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 064a45a3159893b94594d389f445d3d0)
+MojoPatch [debug]: ([S-MedicTraining.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 789027deff5145e3bcc02f8c48aba717)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 789027deff5145e3bcc02f8c48aba717)
+MojoPatch [debug]: ([S-Menu.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a2ea07acad866a03b051353aa36b0990)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a2ea07acad866a03b051353aa36b0990)
+MojoPatch [debug]: ([S-Muffled.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ee0c4fad39fc84595e5b8c4dc126d16a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ee0c4fad39fc84595e5b8c4dc126d16a)
+MojoPatch [debug]: ([S-Objective.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9a767b90cab33ae44bedc4b7661d4ede)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9a767b90cab33ae44bedc4b7661d4ede)
+MojoPatch [debug]: ([S-ObstacleCourse.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 28edd70873532dff74b15a48daad9194)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 28edd70873532dff74b15a48daad9194)
+MojoPatch [debug]: ([S-PlayerCommo.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 622d89101b667d373be912d83e7a6232)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 622d89101b667d373be912d83e7a6232)
+MojoPatch [debug]: ([S-RadioMusic.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f8c30591cf9f6091958ce21e8677e340)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f8c30591cf9f6091958ce21e8677e340)
+MojoPatch [debug]: ([S-SniperRange.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 47ce8ef5f44d2a281c6f1997ad6fc0ba)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 47ce8ef5f44d2a281c6f1997ad6fc0ba)
+MojoPatch [debug]: ([S-TacticalTraining.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b9eab8f17e0c30f01473a608f0090008)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b9eab8f17e0c30f01473a608f0090008)
+MojoPatch [debug]: ([S-US_Weapons.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4f34ccfc4339954fa9828cafbe256e75)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4f34ccfc4339954fa9828cafbe256e75)
+MojoPatch [debug]: ([S-WeaponFX.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ed3c463ff7a33c7720e7405ffb55ac3e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ed3c463ff7a33c7720e7405ffb55ac3e)
+MojoPatch [debug]: ([S-WeaponsOPFOR.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7178e280f22326ce91c14309c1710f8e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7178e280f22326ce91c14309c1710f8e)
+MojoPatch [debug]: ([S-WeaponsUS.uax]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b36bc132fb9b850667fc3074b75d3589)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b36bc132fb9b850667fc3074b75d3589)
+MojoPatch [debug]: ([StaticMeshes]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/StaticMeshes and StaticMeshes
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([M-Architectural.usx]...)
+MojoPatch [debug]: ([M-attachments.usx]...)
+MojoPatch [debug]: ([M-bathroom.usx]...)
+MojoPatch [debug]: ([M-Bridge.usx]...)
+MojoPatch [debug]: ([M-Caves.usx]...)
+MojoPatch [debug]: ([M-Character.usx]...)
+MojoPatch [debug]: ([M-Doors.usx]...)
+MojoPatch [debug]: ([M-Equipment.usx]...)
+MojoPatch [debug]: ([M-Exterior.usx]...)
+MojoPatch [debug]: ([M-Farm.usx]...)
+MojoPatch [debug]: ([M-FLS.usx]...)
+MojoPatch [debug]: ([M-Foliage.usx]...)
+MojoPatch [debug]: ([M-FURNITURE.usx]...)
+MojoPatch [debug]: ([M-FX.usx]...)
+MojoPatch [debug]: ([M-HQ_Raid.usx]...)
+MojoPatch [debug]: ([M-INSCAMP.usx]...)
+MojoPatch [debug]: ([M-LIGHT.usx]...)
+MojoPatch [debug]: ([M-Medical.usx]...)
+MojoPatch [debug]: ([M-Misc.usx]...)
+MojoPatch [debug]: ([M-Mout_McKenna.usx]...)
+MojoPatch [debug]: ([M-Obstacle.usx]...)
+MojoPatch [debug]: ([M-Office.usx]...)
+MojoPatch [debug]: ([M-Pipeline.usx]...)
+MojoPatch [debug]: ([M-RifleRange.usx]...)
+MojoPatch [debug]: ([M-SIGNS.usx]...)
+MojoPatch [debug]: ([M-Sky.usx]...)
+MojoPatch [debug]: ([M-Swamp_Raid.usx]...)
+MojoPatch [debug]: ([M-Tunnel.usx]...)
+MojoPatch [debug]: ([M-Urban_Movement.usx]...)
+MojoPatch [debug]: ([M-vehicles.usx]...)
+MojoPatch [debug]: ([M-weapons.usx]...)
+MojoPatch [debug]: ([M-weapons_cache.usx]...)
+MojoPatch [debug]: ([M2-Architectural.usx]...)
+MojoPatch [debug]: ([M2-Attachments.usx]...)
+MojoPatch [debug]: ([M2-Equipment.usx]...)
+MojoPatch [debug]: ([M2-Farm.usx]...)
+MojoPatch [debug]: ([M2-Foliage.usx]...)
+MojoPatch [debug]: ([M2-Fx.usx]...)
+MojoPatch [debug]: ([M2-Lights.usx]...)
+MojoPatch [debug]: ([M2-vehicles.usx]...)
+MojoPatch [debug]: ([M2-Weapons.usx]...)
+MojoPatch [debug]: ([M2-weapons_cache.usx]...)
+MojoPatch [debug]: ([M3-vehicles.usx]...)
+MojoPatch [debug]: ([M3-weapons.usx]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([M-Architectural.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c5aa9e35694bc2c8a883d9c295e0f880)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c5aa9e35694bc2c8a883d9c295e0f880)
+MojoPatch [debug]: ([M-attachments.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 87c5e810dc12cf91db46cb9dfadf6843)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 87c5e810dc12cf91db46cb9dfadf6843)
+MojoPatch [debug]: ([M-bathroom.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 96a0ea7591ee5a38752a23a9c04d3607)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 96a0ea7591ee5a38752a23a9c04d3607)
+MojoPatch [debug]: ([M-Bridge.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 387abd5046def46cb069c7489c3f291e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 387abd5046def46cb069c7489c3f291e)
+MojoPatch [debug]: ([M-Caves.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1cc060c2685b13e3c99aa8ba8f40742e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1cc060c2685b13e3c99aa8ba8f40742e)
+MojoPatch [debug]: ([M-Character.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 725c6c4eda9c444935978128c99a05e3)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 725c6c4eda9c444935978128c99a05e3)
+MojoPatch [debug]: ([M-Doors.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 23e835a11b17fe44fd57a254bc0582e1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 23e835a11b17fe44fd57a254bc0582e1)
+MojoPatch [debug]: ([M-Equipment.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9b537b8e3d639e0848dd9bfa5457bee1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9b537b8e3d639e0848dd9bfa5457bee1)
+MojoPatch [debug]: ([M-Exterior.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3983a2ab96f2777635a7c3ff5ec16801)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3983a2ab96f2777635a7c3ff5ec16801)
+MojoPatch [debug]: ([M-Farm.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 38cb450b466743af5b18fc2c44394d85)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 38cb450b466743af5b18fc2c44394d85)
+MojoPatch [debug]: ([M-FLS.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 440b361e82e4ffcbf6bb4825b55a1542)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 440b361e82e4ffcbf6bb4825b55a1542)
+MojoPatch [debug]: ([M-Foliage.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: dbc34dd27ea13dc9a88c577e2b0cab79)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: dbc34dd27ea13dc9a88c577e2b0cab79)
+MojoPatch [debug]: ([M-FURNITURE.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ab8ad21986d5ac837da80f21b67bb890)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ab8ad21986d5ac837da80f21b67bb890)
+MojoPatch [debug]: ([M-FX.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 47996d564e6a9ea4280fde9aad1f6171)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 47996d564e6a9ea4280fde9aad1f6171)
+MojoPatch [debug]: ([M-HQ_Raid.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 44e7f9f4a516adf2b98f8a40bfe8fe7c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 44e7f9f4a516adf2b98f8a40bfe8fe7c)
+MojoPatch [debug]: ([M-INSCAMP.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9d4dc90820c34da9bbf65ca276db2f65)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9d4dc90820c34da9bbf65ca276db2f65)
+MojoPatch [debug]: ([M-LIGHT.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3f59eda8b02f03977ef6b5a47bbeaa3e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3f59eda8b02f03977ef6b5a47bbeaa3e)
+MojoPatch [debug]: ([M-Medical.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3cc4418c207c5b068df299d807bbcdb2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3cc4418c207c5b068df299d807bbcdb2)
+MojoPatch [debug]: ([M-Misc.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9fd1754e23fd3fc3e5d711441ecbe167)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9fd1754e23fd3fc3e5d711441ecbe167)
+MojoPatch [debug]: ([M-Mout_McKenna.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 145834f8b2ee4a91fc1cfca1a5b9d202)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 145834f8b2ee4a91fc1cfca1a5b9d202)
+MojoPatch [debug]: ([M-Obstacle.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 24b741903395f1463e02fee460583905)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 24b741903395f1463e02fee460583905)
+MojoPatch [debug]: ([M-Office.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3378ad763fdc2f640125cd5e0aa15636)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3378ad763fdc2f640125cd5e0aa15636)
+MojoPatch [debug]: ([M-Pipeline.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5845ec78b2b72edca203576319d6d406)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5845ec78b2b72edca203576319d6d406)
+MojoPatch [debug]: ([M-RifleRange.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 78154b7625d568820919ba3df0d199ee)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 78154b7625d568820919ba3df0d199ee)
+MojoPatch [debug]: ([M-SIGNS.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c623af57aeb759e39b667264920417b9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c623af57aeb759e39b667264920417b9)
+MojoPatch [debug]: ([M-Sky.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 884abd06edbd296e777e8a72bf235540)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 884abd06edbd296e777e8a72bf235540)
+MojoPatch [debug]: ([M-Swamp_Raid.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 16c65b1fe47affa86beb1750534eb564)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 16c65b1fe47affa86beb1750534eb564)
+MojoPatch [debug]: ([M-Tunnel.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: dfbb75ed69bc1ff78373fd4895a5f414)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: dfbb75ed69bc1ff78373fd4895a5f414)
+MojoPatch [debug]: ([M-Urban_Movement.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2be2664c17f5b03b02fa99952ce4e822)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2be2664c17f5b03b02fa99952ce4e822)
+MojoPatch [debug]: ([M-vehicles.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9df576068ae4e00eecf304ece5796c19)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9df576068ae4e00eecf304ece5796c19)
+MojoPatch [debug]: ([M-weapons.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ad314636ddb76aec3ff472c2e979a620)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ad314636ddb76aec3ff472c2e979a620)
+MojoPatch [debug]: ([M-weapons_cache.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 69ddfbe1e3b5277bb4462f11f8fe4fed)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 69ddfbe1e3b5277bb4462f11f8fe4fed)
+MojoPatch [debug]: ([M2-Architectural.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fb434b204b2984c2cf1eceb9fd684f4b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fb434b204b2984c2cf1eceb9fd684f4b)
+MojoPatch [debug]: ([M2-Attachments.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 984e41fff6ce42f2cfa75b851fa20b2a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 984e41fff6ce42f2cfa75b851fa20b2a)
+MojoPatch [debug]: ([M2-Equipment.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5a775e1964eb1ca50029a35a3b46ed37)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5a775e1964eb1ca50029a35a3b46ed37)
+MojoPatch [debug]: ([M2-Farm.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 06a10adf044e404663304094cfd8b5e2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 06a10adf044e404663304094cfd8b5e2)
+MojoPatch [debug]: ([M2-Foliage.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5e7d52c24d10449f7eb5fd767bdd5107)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5e7d52c24d10449f7eb5fd767bdd5107)
+MojoPatch [debug]: ([M2-Fx.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ac4066be87bafe18a7dc37302cd0d37d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ac4066be87bafe18a7dc37302cd0d37d)
+MojoPatch [debug]: ([M2-Lights.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 08764b6ffa3253acf9d060823ef751ea)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 08764b6ffa3253acf9d060823ef751ea)
+MojoPatch [debug]: ([M2-vehicles.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 50ba4a2afcd5ac798a31716f5363fb6d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 50ba4a2afcd5ac798a31716f5363fb6d)
+MojoPatch [debug]: ([M2-Weapons.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 562ca2789a77efd0010f74a2ab895acd)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 562ca2789a77efd0010f74a2ab895acd)
+MojoPatch [debug]: ([M2-weapons_cache.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d96dc549c7ab68fec860433831b2cefa)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d96dc549c7ab68fec860433831b2cefa)
+MojoPatch [debug]: ([M3-vehicles.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 136339cc3eabfd2ae06bfdfe723be383)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 136339cc3eabfd2ae06bfdfe723be383)
+MojoPatch [debug]: ([M3-weapons.usx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 98c6b5370d662dc0396e63710e862e4d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 98c6b5370d662dc0396e63710e862e4d)
+MojoPatch [debug]: ([System]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/System and System
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([AdditionalCredits.txt]...)
+MojoPatch [debug]: ([AGP.u]...)
+MojoPatch [debug]: ([AGP_AI.u]...)
+MojoPatch [debug]: ([AGP_Characters.u]...)
+MojoPatch [debug]: ([AGP_Effects.u]...)
+MojoPatch [debug]: ([AGP_Gameplay.u]...)
+MojoPatch [debug]: ([AGP_Inventory.u]...)
+MojoPatch [debug]: ([AGP_Objects.u]...)
+MojoPatch [debug]: ([AGP_Script.u]...)
+MojoPatch [debug]: ([AGP_UI.u]...)
+MojoPatch [debug]: ([armyops-bin]...)
+MojoPatch [debug]: ([ArmyOpsGlossary.txt]...)
+MojoPatch [debug]: ([ArmyOpsReadMe.txt]...)
+MojoPatch [debug]: ([BUGSUBMIT.url]...)
+MojoPatch [debug]: ([Config]...)
+MojoPatch [debug]: ([Core.int]...)
+MojoPatch [debug]: ([Core.u]...)
+MojoPatch [debug]: ([credits.ini]...)
+MojoPatch [debug]: ([credits.txt]...)
+MojoPatch [debug]: ([creditsarmy.ini]...)
+MojoPatch [debug]: ([creditsarmy.txt]...)
+MojoPatch [debug]: ([D3DDrv.int]...)
+MojoPatch [debug]: ([Default.ini]...)
+MojoPatch [debug]: ([DefUnrealEd.ini]...)
+MojoPatch [debug]: ([DefUser.ini]...)
+MojoPatch [debug]: ([descriptions]...)
+MojoPatch [debug]: ([Editor.int]...)
+MojoPatch [debug]: ([Editor.u]...)
+MojoPatch [debug]: ([Engine.int]...)
+MojoPatch [debug]: ([Engine.u]...)
+MojoPatch [debug]: ([FanSites.ini]...)
+MojoPatch [debug]: ([Fire.u]...)
+MojoPatch [debug]: ([Gameplay.u]...)
+MojoPatch [debug]: ([Help.ini]...)
+MojoPatch [debug]: ([IpDrv.int]...)
+MojoPatch [debug]: ([IpDrv.u]...)
+MojoPatch [debug]: ([KeyBindings.ini]...)
+MojoPatch [debug]: ([libSDL-1.2.0.dylib]...)
+MojoPatch [debug]: ([lipsincdata]...)
+MojoPatch [debug]: ([openal.dylib]...)
+MojoPatch [debug]: ([overview.txt]...)
+MojoPatch [debug]: ([Partners.ini]...)
+MojoPatch [debug]: ([pb]...)
+MojoPatch [debug]: ([RunServer.bat]...)
+MojoPatch [debug]: ([save]...)
+MojoPatch [debug]: ([server-bin]...)
+MojoPatch [debug]: ([services.ini]...)
+MojoPatch [debug]: ([Setup.int]...)
+MojoPatch [debug]: ([Skins.int]...)
+MojoPatch [debug]: ([splash.bmp]...)
+MojoPatch [debug]: ([Startup.int]...)
+MojoPatch [debug]: ([tours.ini]...)
+MojoPatch [debug]: ([UnrealEd.int]...)
+MojoPatch [debug]: ([UnrealEd.u]...)
+MojoPatch [debug]: ([Window.int]...)
+MojoPatch [debug]: ([WinDrv.int]...)
+MojoPatch [debug]: ([XInterface.u]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([AdditionalCredits.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d797e54cc59d386e558fcbe3a71b070a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d797e54cc59d386e558fcbe3a71b070a)
+MojoPatch [debug]: ([AGP.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4a12e59d3eaddb582934b0202940b8dd)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 337b4f187c370fcd74a3f7c6cbe1dbaf)
+MojoPatch: PATCH System/AGP.u
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/AGP.u" "System/AGP.u" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (904543 bytes in patch.)
+MojoPatch [debug]: ([AGP_AI.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 074c3bec8298c897510953d43c044aea)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 074c3bec8298c897510953d43c044aea)
+MojoPatch [debug]: ([AGP_Characters.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 26d0f42590b09ddea809294409e1552e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 26d0f42590b09ddea809294409e1552e)
+MojoPatch [debug]: ([AGP_Effects.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 61890b9e6ef7ca889280dea7c730beb3)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 61890b9e6ef7ca889280dea7c730beb3)
+MojoPatch [debug]: ([AGP_Gameplay.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 83dbb0bd106f4d83268aaada991a887a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 83dbb0bd106f4d83268aaada991a887a)
+MojoPatch [debug]: ([AGP_Inventory.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9c33c19ed545b9dcc9f7e31b01e65031)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9c33c19ed545b9dcc9f7e31b01e65031)
+MojoPatch [debug]: ([AGP_Objects.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 940a2cd464a7762f8690802896c8779b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 940a2cd464a7762f8690802896c8779b)
+MojoPatch [debug]: ([AGP_Script.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ea6de3d608480d765630bbb6edaf7a0b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ea6de3d608480d765630bbb6edaf7a0b)
+MojoPatch [debug]: ([AGP_UI.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 89eeb003ed0a79ee203cccfaba276540)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 89eeb003ed0a79ee203cccfaba276540)
+MojoPatch [debug]: ([armyops-bin]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a25b27024d52b58a381f6975b5c0ebc8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c55b1445dafa53cdfd7d91d5410dbf01)
+MojoPatch: PATCH System/armyops-bin
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/armyops-bin" "System/armyops-bin" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (1071994 bytes in patch.)
+MojoPatch [debug]: ([ArmyOpsGlossary.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8b85b42c900b206add7be26b80a104d7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8b85b42c900b206add7be26b80a104d7)
+MojoPatch [debug]: ([ArmyOpsReadMe.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 46a037ac5ee2da702d1f82aa0013265f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ef34eadf0991a8c91ef6f484bb80e6ad)
+MojoPatch: PATCH System/ArmyOpsReadMe.txt
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/ArmyOpsReadMe.txt" "System/ArmyOpsReadMe.txt" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (909 bytes in patch.)
+MojoPatch [debug]: ([BUGSUBMIT.url]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c3f7af07175b92f69ff0e94e425d9dc6)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c3f7af07175b92f69ff0e94e425d9dc6)
+MojoPatch [debug]: ([Config]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/System/Config and System/Config
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([Abraxas.txt]...)
+MojoPatch [debug]: ([AceKilla.txt]...)
+MojoPatch [debug]: ([Boston.txt]...)
+MojoPatch [debug]: ([clean.txt]...)
+MojoPatch [debug]: ([Cyan.txt]...)
+MojoPatch [debug]: ([Dossett.txt]...)
+MojoPatch [debug]: ([Ezekiel]...)
+MojoPatch [debug]: ([Ezekiel.txt]...)
+MojoPatch [debug]: ([ltcjay.txt]...)
+MojoPatch [debug]: ([ramm.txt]...)
+MojoPatch [debug]: ([raYGunn.txt]...)
+MojoPatch [debug]: ([RU486.txt]...)
+MojoPatch [debug]: ([SnoopDoug.txt]...)
+MojoPatch [debug]: ([technoloG.txt]...)
+MojoPatch [debug]: ([ZekeDev]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([Abraxas.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 29ff6b90f2fb6dcc1aad2141370795c0)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 29ff6b90f2fb6dcc1aad2141370795c0)
+MojoPatch [debug]: ([AceKilla.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 69929d36ee83e42caa18e104bc661d06)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 69929d36ee83e42caa18e104bc661d06)
+MojoPatch [debug]: ([Boston.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e3f54cbbeca0609220dfd6ac20a02694)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e3f54cbbeca0609220dfd6ac20a02694)
+MojoPatch [debug]: ([clean.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 032b0fd430ce9d59f63899763ab9d3c1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 032b0fd430ce9d59f63899763ab9d3c1)
+MojoPatch [debug]: ([Cyan.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a1608c04a71ca9f64717015e93088ab1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a1608c04a71ca9f64717015e93088ab1)
+MojoPatch [debug]: ([Dossett.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 59ceda94465d0dcdf8deda6c15916ea7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 59ceda94465d0dcdf8deda6c15916ea7)
+MojoPatch [debug]: ([Ezekiel]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ccf3417e77a2c547b772b245f17d65d5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ccf3417e77a2c547b772b245f17d65d5)
+MojoPatch [debug]: ([Ezekiel.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ccf3417e77a2c547b772b245f17d65d5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ccf3417e77a2c547b772b245f17d65d5)
+MojoPatch [debug]: ([ltcjay.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f524eacfe1dd6832a8200d9ba8b4a7cc)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f524eacfe1dd6832a8200d9ba8b4a7cc)
+MojoPatch [debug]: ([ramm.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2a1f2e5121f0422279b9e08ba5be3da2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2a1f2e5121f0422279b9e08ba5be3da2)
+MojoPatch [debug]: ([raYGunn.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: aca24a047be6d4f1c0c0412501f299b9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: aca24a047be6d4f1c0c0412501f299b9)
+MojoPatch [debug]: ([RU486.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 37db757e280eafbce291d59b7b517150)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 37db757e280eafbce291d59b7b517150)
+MojoPatch [debug]: ([SnoopDoug.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: af2a528daf4b7bd95082ebd0c6465491)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: af2a528daf4b7bd95082ebd0c6465491)
+MojoPatch [debug]: ([technoloG.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 28edeb05a93c6840b66664fe253afaf3)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 28edeb05a93c6840b66664fe253afaf3)
+MojoPatch [debug]: ([ZekeDev]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b8209fece30245ef1468de79a2a40bc1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b8209fece30245ef1468de79a2a40bc1)
+MojoPatch [debug]: ([Core.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2fdd666e2aa1cd98accc91bd2c49e438)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2fdd666e2aa1cd98accc91bd2c49e438)
+MojoPatch [debug]: ([Core.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 701ed13505413a26f4c419e94cd77516)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 701ed13505413a26f4c419e94cd77516)
+MojoPatch [debug]: ([credits.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6069b74f5cf630d5b27a858e4627fbcb)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1140cff099294600dfd045fc3c24e1f2)
+MojoPatch: PATCH System/credits.ini
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/credits.ini" "System/credits.ini" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (197 bytes in patch.)
+MojoPatch [debug]: ([credits.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 46759a4c477f869e602c98da075c8b3b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6dfd711a60bbfd3453355a56c40bd01c)
+MojoPatch: PATCH System/credits.txt
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/credits.txt" "System/credits.txt" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (209 bytes in patch.)
+MojoPatch [debug]: ([creditsarmy.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 73147c0f115e0bd14c0cb25f390ead1a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d38931afed03dceef0b71ddb3d5d06bb)
+MojoPatch: PATCH System/creditsarmy.ini
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/creditsarmy.ini" "System/creditsarmy.ini" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (438 bytes in patch.)
+MojoPatch [debug]: ([creditsarmy.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 67ce75ca2ec92e97fe71e05a359df8d7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c1f5130083844fb0c292887b745e43f6)
+MojoPatch: PATCH System/creditsarmy.txt
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/creditsarmy.txt" "System/creditsarmy.txt" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (318 bytes in patch.)
+MojoPatch [debug]: ([D3DDrv.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 351ecc8f84070e0a179660adb3cacfaa)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 351ecc8f84070e0a179660adb3cacfaa)
+MojoPatch [debug]: ([Default.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 75fb4daf6c5834a9c3cd3e9bb9689f93)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 75fb4daf6c5834a9c3cd3e9bb9689f93)
+MojoPatch [debug]: ([DefUnrealEd.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ad5305f7fe9cbb0822314f05b19f2c4f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ad5305f7fe9cbb0822314f05b19f2c4f)
+MojoPatch [debug]: ([DefUser.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 281bf3fe5e435dd8b09f2c6a9c2b90d6)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 281bf3fe5e435dd8b09f2c6a9c2b90d6)
+MojoPatch [debug]: ([descriptions]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/System/descriptions and System/descriptions
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([Mod_Acog_4x.txt]...)
+MojoPatch [debug]: ([Mod_ACOG_Reflex.txt]...)
+MojoPatch [debug]: ([Mod_Harris_Bipod.txt]...)
+MojoPatch [debug]: ([Mod_heatshield.txt]...)
+MojoPatch [debug]: ([Mod_Ironsight.txt]...)
+MojoPatch [debug]: ([Mod_M203A1_Grenade.txt]...)
+MojoPatch [debug]: ([Mod_M4qd_suppressor.txt]...)
+MojoPatch [debug]: ([Mod_M583A1_Flare.txt]...)
+MojoPatch [debug]: ([Mod_M68_Aimpoint.txt]...)
+MojoPatch [debug]: ([Mod_NONE.txt]...)
+MojoPatch [debug]: ([Weapon_M4A1.txt]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([Mod_Acog_4x.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9266e06f56deee0852b9412e2876a0f4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9266e06f56deee0852b9412e2876a0f4)
+MojoPatch [debug]: ([Mod_ACOG_Reflex.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a377688cc3ce3891b9ab08e8456355d3)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a377688cc3ce3891b9ab08e8456355d3)
+MojoPatch [debug]: ([Mod_Harris_Bipod.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0039151c733cb1177770d7fb29a99522)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0039151c733cb1177770d7fb29a99522)
+MojoPatch [debug]: ([Mod_heatshield.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 816a9f6ac4bcb179adba2a632fe23c84)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 816a9f6ac4bcb179adba2a632fe23c84)
+MojoPatch [debug]: ([Mod_Ironsight.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8353066c8ffd6d767bca1e41e7d4a630)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8353066c8ffd6d767bca1e41e7d4a630)
+MojoPatch [debug]: ([Mod_M203A1_Grenade.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 227d3345424927c02bf7656adb0e3843)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 227d3345424927c02bf7656adb0e3843)
+MojoPatch [debug]: ([Mod_M4qd_suppressor.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ebf90d9541343d019bba8ef452eb6844)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ebf90d9541343d019bba8ef452eb6844)
+MojoPatch [debug]: ([Mod_M583A1_Flare.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6e67f07b37e306ca2e45bf0bb2ac8a66)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6e67f07b37e306ca2e45bf0bb2ac8a66)
+MojoPatch [debug]: ([Mod_M68_Aimpoint.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c81bb239a62b73490851d2d73111655a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c81bb239a62b73490851d2d73111655a)
+MojoPatch [debug]: ([Mod_NONE.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ff6d0f19e7e6580545ee7c416badd8f5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ff6d0f19e7e6580545ee7c416badd8f5)
+MojoPatch [debug]: ([Weapon_M4A1.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7a58b34629573602fd106cd5d0c2f451)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7a58b34629573602fd106cd5d0c2f451)
+MojoPatch [debug]: ([Distribution.ini]...)
+MojoPatch: ADDORREPLACE System/Distribution.ini
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 605b8b7d5dc327a9f30150b04b12a749)
+MojoPatch [debug]:   (32 bytes in file.)
+MojoPatch [debug]: ([Editor.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ab1f6420dcfeabed461a8a6907ebc8fc)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ab1f6420dcfeabed461a8a6907ebc8fc)
+MojoPatch [debug]: ([Editor.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d2aded02132568d3bb67c02c6ae92fc9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d2aded02132568d3bb67c02c6ae92fc9)
+MojoPatch [debug]: ([Engine.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 77f9ee17418947bafffb89f778311fa6)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 77f9ee17418947bafffb89f778311fa6)
+MojoPatch [debug]: ([Engine.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 415bc718ea68868951a3c14189e87e1e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 415bc718ea68868951a3c14189e87e1e)
+MojoPatch [debug]: ([FanSites.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 36f28e9b024988b79a5637c48308fff9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1cfed4458fa35406042c28d8129f0921)
+MojoPatch: PATCH System/FanSites.ini
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/FanSites.ini" "System/FanSites.ini" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (368 bytes in patch.)
+MojoPatch [debug]: ([Fire.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d67476d133ebe0942e43975de07a068c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d67476d133ebe0942e43975de07a068c)
+MojoPatch [debug]: ([Gameplay.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 84b6b413f24520c766c7d30671a7f7bb)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 84b6b413f24520c766c7d30671a7f7bb)
+MojoPatch [debug]: ([Help.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 046c2901db8ad0b43261cc01c0027dc8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 956f74c6f7e1723a97cd8aa46e038c61)
+MojoPatch: PATCH System/Help.ini
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/Help.ini" "System/Help.ini" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (366 bytes in patch.)
+MojoPatch [debug]: ([IpDrv.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0f57165391148a0bf7af1d28befdb43d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0f57165391148a0bf7af1d28befdb43d)
+MojoPatch [debug]: ([IpDrv.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 57a7de720ae3c34cd86a4249da676e73)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 01ff1a11c30c0521efcb19c7e81cc718)
+MojoPatch: PATCH System/IpDrv.u
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/IpDrv.u" "System/IpDrv.u" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (76552 bytes in patch.)
+MojoPatch [debug]: ([KeyBindings.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 36ecfbf741ac1994ccf54a64b99b9db9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 36ecfbf741ac1994ccf54a64b99b9db9)
+MojoPatch [debug]: ([libSDL-1.2.0.dylib]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: eab503aeda2e5678b28b9ca5a83898bc)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: eab503aeda2e5678b28b9ca5a83898bc)
+MojoPatch [debug]: ([lipsincdata]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/System/lipsincdata and System/lipsincdata
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([CivDoc_3P.lad]...)
+MojoPatch [debug]: ([Controllers]...)
+MojoPatch [debug]: ([DI-oc3entver.lad]...)
+MojoPatch [debug]: ([DtC6dal.dat]...)
+MojoPatch [debug]: ([DtC6dl.dat]...)
+MojoPatch [debug]: ([Generic_female.lbp]...)
+MojoPatch [debug]: ([Generic_male.lbp]...)
+MojoPatch [debug]: ([Generic_old.lbp]...)
+MojoPatch [debug]: ([Mappings]...)
+MojoPatch [debug]: ([Wt16M9bs.dat]...)
+MojoPatch [debug]: ([Wt16M9fs.dat]...)
+MojoPatch [debug]: ([Wt8S9bs.dat]...)
+MojoPatch [debug]: ([Wt8S9fs.dat]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([CivDoc_3P.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2634840e21cf38669f2abe0429ec8f6b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2634840e21cf38669f2abe0429ec8f6b)
+MojoPatch [debug]: ([Controllers]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/System/lipsincdata/Controllers and System/lipsincdata/Controllers
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([CivDoc_3P.lad]...)
+MojoPatch [debug]: ([COGGruntMesh.lad]...)
+MojoPatch [debug]: ([DI-oc3entver.lad]...)
+MojoPatch [debug]: ([DocF_Nurse.lad]...)
+MojoPatch [debug]: ([DocM_Labcoat.lad]...)
+MojoPatch [debug]: ([George_FlakVest.lad]...)
+MojoPatch [debug]: ([SF_3P.lad]...)
+MojoPatch [debug]: ([SoldierF_Infantry_ClassB.lad]...)
+MojoPatch [debug]: ([SoldierM_Infantry_ClassB.lad]...)
+MojoPatch [debug]: ([SoldierM_Instr_AA.lad]...)
+MojoPatch [debug]: ([SoldierM_Pilot.lad]...)
+MojoPatch [debug]: ([SoldierM_SF_RBA_AdvMarksman.lad]...)
+MojoPatch [debug]: ([SoldierM_SF_RBA_Rifleman.lad]...)
+MojoPatch [debug]: ([SoldierM_SF_RBA_Saw.lad]...)
+MojoPatch [debug]: ([UT-Ref-maya.lad]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([CivDoc_3P.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 29144e19fe49a8769b4d9d283c3f172e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 29144e19fe49a8769b4d9d283c3f172e)
+MojoPatch [debug]: ([COGGruntMesh.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cf5483f26745f18be9f2e84bc2f39f09)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cf5483f26745f18be9f2e84bc2f39f09)
+MojoPatch [debug]: ([DI-oc3entver.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 957435ad0940b5fa1b9a1a4f2034ffa7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 957435ad0940b5fa1b9a1a4f2034ffa7)
+MojoPatch [debug]: ([DocF_Nurse.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bd1608cedfde32441ccb6fe0028481f7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bd1608cedfde32441ccb6fe0028481f7)
+MojoPatch [debug]: ([DocM_Labcoat.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 51558cbc2ea4520058b49dd196e463a4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 51558cbc2ea4520058b49dd196e463a4)
+MojoPatch [debug]: ([George_FlakVest.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: dccba25580f1ec3a8d88400f53fea088)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: dccba25580f1ec3a8d88400f53fea088)
+MojoPatch [debug]: ([SF_3P.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6dfbe92d2ca6fed3211d16f905dd6e0d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6dfbe92d2ca6fed3211d16f905dd6e0d)
+MojoPatch [debug]: ([SoldierF_Infantry_ClassB.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6063260cf85fcd4d9aabdfa64cdc140e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6063260cf85fcd4d9aabdfa64cdc140e)
+MojoPatch [debug]: ([SoldierM_Infantry_ClassB.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1d804db116970bb2ca1608ae50349303)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1d804db116970bb2ca1608ae50349303)
+MojoPatch [debug]: ([SoldierM_Instr_AA.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c9ab6d0f9a93d0a37b89eae8aabb0aa5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c9ab6d0f9a93d0a37b89eae8aabb0aa5)
+MojoPatch [debug]: ([SoldierM_Pilot.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b5ed43a10e0c8c0b928b715b0a19e46c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b5ed43a10e0c8c0b928b715b0a19e46c)
+MojoPatch [debug]: ([SoldierM_SF_RBA_AdvMarksman.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fdd3031b765aaee747ba44a24f453774)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fdd3031b765aaee747ba44a24f453774)
+MojoPatch [debug]: ([SoldierM_SF_RBA_Rifleman.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fdd3031b765aaee747ba44a24f453774)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fdd3031b765aaee747ba44a24f453774)
+MojoPatch [debug]: ([SoldierM_SF_RBA_Saw.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fdd3031b765aaee747ba44a24f453774)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fdd3031b765aaee747ba44a24f453774)
+MojoPatch [debug]: ([UT-Ref-maya.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b35714268a40bd09303e4a661ea493b7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b35714268a40bd09303e4a661ea493b7)
+MojoPatch [debug]: ([DI-oc3entver.lad]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e91acd10ca2c02a9d35c9c2fdcbb0ca5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: e91acd10ca2c02a9d35c9c2fdcbb0ca5)
+MojoPatch [debug]: ([DtC6dal.dat]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6ca9791d3d87ccf58841913adb6dc786)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6ca9791d3d87ccf58841913adb6dc786)
+MojoPatch [debug]: ([DtC6dl.dat]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6023c345eb73ce943a7636209776affa)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6023c345eb73ce943a7636209776affa)
+MojoPatch [debug]: ([Generic_female.lbp]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 979d89de94b14f8b1045f57e8042677f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 979d89de94b14f8b1045f57e8042677f)
+MojoPatch [debug]: ([Generic_male.lbp]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4c38bdd158da906d962d8a30bd2f78d9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 4c38bdd158da906d962d8a30bd2f78d9)
+MojoPatch [debug]: ([Generic_old.lbp]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f1415daf5879ea54113387f74dd35ee9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f1415daf5879ea54113387f74dd35ee9)
+MojoPatch [debug]: ([Mappings]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/System/lipsincdata/Mappings and System/lipsincdata/Mappings
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([CivDoc_3P.map]...)
+MojoPatch [debug]: ([CivDocFemale_3P.map]...)
+MojoPatch [debug]: ([COGGruntMesh.map]...)
+MojoPatch [debug]: ([DI-oc3entver.map]...)
+MojoPatch [debug]: ([SF_3P.map]...)
+MojoPatch [debug]: ([UT-Ref-maya.map]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([CivDoc_3P.map]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0d19e10cfd7a81bd95620a2a6ec81ec5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0d19e10cfd7a81bd95620a2a6ec81ec5)
+MojoPatch [debug]: ([CivDocFemale_3P.map]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 612006fe72dc5d5d7ccf022072fbaf89)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 612006fe72dc5d5d7ccf022072fbaf89)
+MojoPatch [debug]: ([COGGruntMesh.map]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2b7b0ee7dadb9fa45a90824e906de45e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2b7b0ee7dadb9fa45a90824e906de45e)
+MojoPatch [debug]: ([DI-oc3entver.map]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 025b7e49fc862221db227b7ac00d1eea)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 025b7e49fc862221db227b7ac00d1eea)
+MojoPatch [debug]: ([SF_3P.map]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 85ed27c51553135bc6aa33f0367a86b5)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 85ed27c51553135bc6aa33f0367a86b5)
+MojoPatch [debug]: ([UT-Ref-maya.map]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 05864034b49d6f143597cb3ec05789ee)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 05864034b49d6f143597cb3ec05789ee)
+MojoPatch [debug]: ([Wt16M9bs.dat]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 58b43a4c03ca5cbf357bf2108fd420ca)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 58b43a4c03ca5cbf357bf2108fd420ca)
+MojoPatch [debug]: ([Wt16M9fs.dat]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f9e901a5d0c9d29d40b2b8a32b0c5f93)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f9e901a5d0c9d29d40b2b8a32b0c5f93)
+MojoPatch [debug]: ([Wt8S9bs.dat]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 71848f95fb87c7f900fdd265f6a58fe7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 71848f95fb87c7f900fdd265f6a58fe7)
+MojoPatch [debug]: ([Wt8S9fs.dat]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2fc094d6aea105a0345484b58a0fa081)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2fc094d6aea105a0345484b58a0fa081)
+MojoPatch [debug]: ([openal.dylib]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8f78a49ff4c55c673e5f3c3d23593728)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8f78a49ff4c55c673e5f3c3d23593728)
+MojoPatch [debug]: ([overview.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bd459ccfc51f2dd1a9fcf64033592f9c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1895b71f79c609ba0c764b357855c2ad)
+MojoPatch: PATCH System/overview.txt
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/overview.txt" "System/overview.txt" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (249 bytes in patch.)
+MojoPatch [debug]: ([Partners.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7268067ad12b52e22c2c37c3144f8a36)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c3715d7bc1fbad3139d60808655d7be2)
+MojoPatch: PATCH System/Partners.ini
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/Partners.ini" "System/Partners.ini" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (1170 bytes in patch.)
+MojoPatch [debug]: ([pb]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/System/pb and System/pb
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([htm]...)
+MojoPatch [debug]: ([pbag.mac]...)
+MojoPatch [debug]: ([pbags.mac]...)
+MojoPatch [debug]: ([pbcl.db]...)
+MojoPatch [debug]: ([pbcl.mac]...)
+MojoPatch [debug]: ([pbcls.mac]...)
+MojoPatch [debug]: ([pbsv.db]...)
+MojoPatch [debug]: ([pbsv.mac]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([htm]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/System/pb/htm and System/pb/htm
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([la001311.htm]...)
+MojoPatch [debug]: ([lc001032.htm]...)
+MojoPatch [debug]: ([ls001032.htm]...)
+MojoPatch [debug]: ([ma001311.htm]...)
+MojoPatch [debug]: ([mc001032.htm]...)
+MojoPatch [debug]: ([ms001032.htm]...)
+MojoPatch [debug]: ([wa001311.htm]...)
+MojoPatch [debug]: ([wc001032.htm]...)
+MojoPatch [debug]: ([ws001032.htm]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([la001311.htm]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6719a14748a6d86e72bca16338f1514c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6719a14748a6d86e72bca16338f1514c)
+MojoPatch [debug]: ([lc001032.htm]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5193c613753a601ff7d99781acbc4cd9)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5193c613753a601ff7d99781acbc4cd9)
+MojoPatch [debug]: ([ls001032.htm]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 39bf45b7838662b7ad4fccc412489669)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 39bf45b7838662b7ad4fccc412489669)
+MojoPatch [debug]: ([ma001311.htm]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 765d3a07737ff03fefc8e5e80ccc7615)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 765d3a07737ff03fefc8e5e80ccc7615)
+MojoPatch [debug]: ([mc001032.htm]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 689c014c83d2bb29a1e467c4d850a740)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 689c014c83d2bb29a1e467c4d850a740)
+MojoPatch [debug]: ([ms001032.htm]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 62c584db83298f450bed34c1425eabda)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 62c584db83298f450bed34c1425eabda)
+MojoPatch [debug]: ([wa001311.htm]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 868e6460573cd7069fd794f542e8c316)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 868e6460573cd7069fd794f542e8c316)
+MojoPatch [debug]: ([wc001032.htm]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 859aeb0327e48c6fc4aaaa66bf750ea2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 859aeb0327e48c6fc4aaaa66bf750ea2)
+MojoPatch [debug]: ([ws001032.htm]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3d9457528786a38f620f3f292c32e4c3)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3d9457528786a38f620f3f292c32e4c3)
+MojoPatch [debug]: ([pbag.mac]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a2df2d2064df67cea676a4641c0d317c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a2df2d2064df67cea676a4641c0d317c)
+MojoPatch [debug]: ([pbags.mac]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a2df2d2064df67cea676a4641c0d317c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a2df2d2064df67cea676a4641c0d317c)
+MojoPatch [debug]: ([pbcl.db]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3185866ad054fad306842f272c31f83d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3185866ad054fad306842f272c31f83d)
+MojoPatch [debug]: ([pbcl.mac]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5623e6788df1a39d8da063b2d8c3f4dd)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5623e6788df1a39d8da063b2d8c3f4dd)
+MojoPatch [debug]: ([pbcls.mac]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5623e6788df1a39d8da063b2d8c3f4dd)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 5623e6788df1a39d8da063b2d8c3f4dd)
+MojoPatch [debug]: ([pbsv.db]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3185866ad054fad306842f272c31f83d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3185866ad054fad306842f272c31f83d)
+MojoPatch [debug]: ([pbsv.mac]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ff7fc31ded0303428e3a8b5e16b25f90)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ff7fc31ded0303428e3a8b5e16b25f90)
+MojoPatch [debug]: ([RunServer.bat]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f0bae9a57a1f841edd48fa7400187d38)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f0bae9a57a1f841edd48fa7400187d38)
+MojoPatch [debug]: ([save]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/System/save and System/save
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([save.txt]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([save.txt]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 47d1950b7eda82fd973e1ef28a028949)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 47d1950b7eda82fd973e1ef28a028949)
+MojoPatch [debug]: ([server-bin]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: abcbeb6d34609cc46b0b780c1db65c56)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7d5ae3152045b6dfac917b86777b77b2)
+MojoPatch: PATCH System/server-bin
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/server-bin" "System/server-bin" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (980352 bytes in patch.)
+MojoPatch [debug]: ([services.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6115ffaef0a5dc1946a111a42c1d0d4f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 20b1dd9a69ba59805402317e0d9fc25f)
+MojoPatch: PATCH System/services.ini
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/services.ini" "System/services.ini" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (308 bytes in patch.)
+MojoPatch [debug]: ([Setup.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 890435763c236061ec447c81eb0d4ddf)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 890435763c236061ec447c81eb0d4ddf)
+MojoPatch [debug]: ([Skins.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 92a616884a2910d566b78cf01d23735a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 92a616884a2910d566b78cf01d23735a)
+MojoPatch [debug]: ([splash.bmp]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: faf941600d1216fe6385dd9b3eb760e2)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: faf941600d1216fe6385dd9b3eb760e2)
+MojoPatch [debug]: ([Startup.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ba987646e874cb44029c5463b805c204)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ba987646e874cb44029c5463b805c204)
+MojoPatch [debug]: ([tours.ini]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 34b5ee1f856156560ff6c9e808afbcc7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6ab352752137e456cd953d1a482c9a02)
+MojoPatch: PATCH System/tours.ini
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/tours.ini" "System/tours.ini" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (341 bytes in patch.)
+MojoPatch [debug]: ([UnrealEd.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f982011a01b14b7f4dd83885bbb272f8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f982011a01b14b7f4dd83885bbb272f8)
+MojoPatch [debug]: ([UnrealEd.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8284c82703fbc51c899c8ed0c0981da6)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8284c82703fbc51c899c8ed0c0981da6)
+MojoPatch [debug]: ([Window.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 096eb27ee06945d163d3c8e689639520)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 096eb27ee06945d163d3c8e689639520)
+MojoPatch [debug]: ([WinDrv.int]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: af89094be2c9321c8b828fccc8f5be47)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: af89094be2c9321c8b828fccc8f5be47)
+MojoPatch [debug]: ([XInterface.u]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: ea241dbae6dae4247e8fd49ce17d3f57)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8dc61b02f2ad5a259e83c81e57019d7b)
+MojoPatch: PATCH System/XInterface.u
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/System/XInterface.u" "System/XInterface.u" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (100122 bytes in patch.)
+MojoPatch [debug]: ([Textures]...)
+MojoPatch [debug]: Examining /Users/icculus/Desktop/aops200.app/Textures and Textures
+MojoPatch [debug]: (looking for files that need deletion...)
+MojoPatch [debug]: ([Coronas.utx]...)
+MojoPatch [debug]: ([CubeMaps.utx]...)
+MojoPatch [debug]: ([InterfaceContent.utx]...)
+MojoPatch [debug]: ([T-ATTACHMENTS.utx]...)
+MojoPatch [debug]: ([T-BRICK.utx]...)
+MojoPatch [debug]: ([T-CampMackall.utx]...)
+MojoPatch [debug]: ([T-Characters.utx]...)
+MojoPatch [debug]: ([T-CONCRETE.utx]...)
+MojoPatch [debug]: ([T-DOORS.utx]...)
+MojoPatch [debug]: ([T-EDITOR.utx]...)
+MojoPatch [debug]: ([T-EQUIPMENT.utx]...)
+MojoPatch [debug]: ([T-FABRIC.utx]...)
+MojoPatch [debug]: ([T-Facade.utx]...)
+MojoPatch [debug]: ([T-FOLIAGE.utx]...)
+MojoPatch [debug]: ([T-FONTS.utx]...)
+MojoPatch [debug]: ([T-FX.utx]...)
+MojoPatch [debug]: ([T-LIGHTS.utx]...)
+MojoPatch [debug]: ([T-LIQUIDS.utx]...)
+MojoPatch [debug]: ([T-Maps.utx]...)
+MojoPatch [debug]: ([T-MedicTraining.utx]...)
+MojoPatch [debug]: ([T-METAL.utx]...)
+MojoPatch [debug]: ([T-MISC.utx]...)
+MojoPatch [debug]: ([T-SIGN.utx]...)
+MojoPatch [debug]: ([T-SKINS.utx]...)
+MojoPatch [debug]: ([T-SKINS_vehicles.utx]...)
+MojoPatch [debug]: ([T-SKY.utx]...)
+MojoPatch [debug]: ([T-STONE.utx]...)
+MojoPatch [debug]: ([T-TERRAIN.utx]...)
+MojoPatch [debug]: ([T-TILE.utx]...)
+MojoPatch [debug]: ([T-UI.utx]...)
+MojoPatch [debug]: ([T-Weapons.utx]...)
+MojoPatch [debug]: ([T-WINDOWS.utx]...)
+MojoPatch [debug]: ([T-WOOD.utx]...)
+MojoPatch [debug]: ([T2-ATTACHMENTS.utx]...)
+MojoPatch [debug]: ([T2-BRICK.utx]...)
+MojoPatch [debug]: ([T2-CHARACTERS.utx]...)
+MojoPatch [debug]: ([T2-CONCRETE.utx]...)
+MojoPatch [debug]: ([T2-DOORS.utx]...)
+MojoPatch [debug]: ([T2-EQUIPMENT.utx]...)
+MojoPatch [debug]: ([T2-FABRIC.utx]...)
+MojoPatch [debug]: ([T2-FOLIAGE.utx]...)
+MojoPatch [debug]: ([T2-Fonts.utx]...)
+MojoPatch [debug]: ([T2-FX.utx]...)
+MojoPatch [debug]: ([T2-LIGHTS.utx]...)
+MojoPatch [debug]: ([T2-LIQUIDS.utx]...)
+MojoPatch [debug]: ([T2-METAL.utx]...)
+MojoPatch [debug]: ([T2-MISC.utx]...)
+MojoPatch [debug]: ([T2-SIGNS.utx]...)
+MojoPatch [debug]: ([T2-SKINS.utx]...)
+MojoPatch [debug]: ([T2-SKINS_vehicles.utx]...)
+MojoPatch [debug]: ([T2-SKY.utx]...)
+MojoPatch [debug]: ([T2-STONE.utx]...)
+MojoPatch [debug]: ([T2-TERRAIN.utx]...)
+MojoPatch [debug]: ([T2-TILE.utx]...)
+MojoPatch [debug]: ([T2-UI.utx]...)
+MojoPatch [debug]: ([T2-WINDOWS.utx]...)
+MojoPatch [debug]: ([T2-WOOD.utx]...)
+MojoPatch [debug]: ([T3-SKINS_vehicles.utx]...)
+MojoPatch [debug]: ([T_UI2.utx]...)
+MojoPatch [debug]: ([X-TEMP.utx]...)
+MojoPatch [debug]: (looking for files that need addition...)
+MojoPatch [debug]: ([Coronas.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 55484fac70355a26ff36f35c5ac2e784)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 55484fac70355a26ff36f35c5ac2e784)
+MojoPatch [debug]: ([CubeMaps.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bf2b5c767c43b990889d79daad8d2222)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: bf2b5c767c43b990889d79daad8d2222)
+MojoPatch [debug]: ([InterfaceContent.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c965c7a1b5a44e7c7989c73b60843ce4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c965c7a1b5a44e7c7989c73b60843ce4)
+MojoPatch [debug]: ([T-ATTACHMENTS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 80e81bc6c667ed2da0f04d19d262c73e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 80e81bc6c667ed2da0f04d19d262c73e)
+MojoPatch [debug]: ([T-BRICK.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7c26e9774fdaee3ffd4e67c71040c4c4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7c26e9774fdaee3ffd4e67c71040c4c4)
+MojoPatch [debug]: ([T-CampMackall.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f5835aacedff8203f7cbcc076863c022)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: f5835aacedff8203f7cbcc076863c022)
+MojoPatch [debug]: ([T-Characters.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8475165a9bf42f308248a9386c7cc9b4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8475165a9bf42f308248a9386c7cc9b4)
+MojoPatch [debug]: ([T-CONCRETE.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cf859135c18ab4ddd99f2408292c8845)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cf859135c18ab4ddd99f2408292c8845)
+MojoPatch [debug]: ([T-DOORS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d9f1b8da19c2a4fae0e0ac3e142f767a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d9f1b8da19c2a4fae0e0ac3e142f767a)
+MojoPatch [debug]: ([T-EDITOR.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b7cfc7010b765579153652d9a1a1c8d7)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b7cfc7010b765579153652d9a1a1c8d7)
+MojoPatch [debug]: ([T-EQUIPMENT.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2fed5aab73091c0cfb54a8a04c60ce51)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2fed5aab73091c0cfb54a8a04c60ce51)
+MojoPatch [debug]: ([T-FABRIC.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cf7172aa0649d9ca14de5e94a460f3fa)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cf7172aa0649d9ca14de5e94a460f3fa)
+MojoPatch [debug]: ([T-Facade.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3b30f81a9d6388578f6c77ec79a6b318)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3b30f81a9d6388578f6c77ec79a6b318)
+MojoPatch [debug]: ([T-FOLIAGE.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 461527a0608fd36c9700936e63d7090a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 461527a0608fd36c9700936e63d7090a)
+MojoPatch [debug]: ([T-FONTS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8f4bfef62859aae319cb9ef0ee65c73b)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8f4bfef62859aae319cb9ef0ee65c73b)
+MojoPatch [debug]: ([T-FX.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b7889453fb97ffc78743bbdd2a43e530)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b7889453fb97ffc78743bbdd2a43e530)
+MojoPatch [debug]: ([T-LIGHTS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9c6b8e86fe11b6496718a1ded7372a82)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9c6b8e86fe11b6496718a1ded7372a82)
+MojoPatch [debug]: ([T-LIQUIDS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9222ef644cda9244266fe28c9d62e1a8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9222ef644cda9244266fe28c9d62e1a8)
+MojoPatch [debug]: ([T-Maps.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7a97ea6eb635cbc1ec44e1073b713093)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: dee1ac58a88169fb2e062559b904fa36)
+MojoPatch: PATCH Textures/T-Maps.utx
+MojoPatch [debug]: (xdelta call: [delta -n --maxmem=128M "/Users/icculus/Desktop/aops200.app/Textures/T-Maps.utx" "Textures/T-Maps.utx" "/tmp/mojopatch.tmp1.2224"].)
+MojoPatch [debug]:   (42724 bytes in patch.)
+MojoPatch [debug]: ([T-MedicTraining.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b82b99f4ca0c84249c6e311f55afe309)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b82b99f4ca0c84249c6e311f55afe309)
+MojoPatch [debug]: ([T-METAL.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b1fd5007ca00b9b7007fb0a935149889)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b1fd5007ca00b9b7007fb0a935149889)
+MojoPatch [debug]: ([T-MISC.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7e5bfd276448bbb9d152881d39bbb68d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7e5bfd276448bbb9d152881d39bbb68d)
+MojoPatch [debug]: ([T-SIGN.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2a4a58c7d3d574e9a74fb9d5fbcc26da)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 2a4a58c7d3d574e9a74fb9d5fbcc26da)
+MojoPatch [debug]: ([T-SKINS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a90cfd3f72715323bb1f2f43d2548772)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: a90cfd3f72715323bb1f2f43d2548772)
+MojoPatch [debug]: ([T-SKINS_vehicles.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: aa10e2e4d7f8cf8126338cb5aed6d06c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: aa10e2e4d7f8cf8126338cb5aed6d06c)
+MojoPatch [debug]: ([T-SKY.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d7923176867ed1bba03a5c9d026f8270)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: d7923176867ed1bba03a5c9d026f8270)
+MojoPatch [debug]: ([T-STONE.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7a3bdc41f125b51bac76cb65b6b187e8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7a3bdc41f125b51bac76cb65b6b187e8)
+MojoPatch [debug]: ([T-TERRAIN.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 66031c17f76fd8f3ca72eddfc0ec6df8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 66031c17f76fd8f3ca72eddfc0ec6df8)
+MojoPatch [debug]: ([T-TILE.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: aa42730febdf324d894333d39425edff)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: aa42730febdf324d894333d39425edff)
+MojoPatch [debug]: ([T-UI.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3819b1627f2c500ca963d1624086aee8)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3819b1627f2c500ca963d1624086aee8)
+MojoPatch [debug]: ([T-Weapons.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 74565d44462bb9628d3f792aeaba780a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 74565d44462bb9628d3f792aeaba780a)
+MojoPatch [debug]: ([T-WINDOWS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: eb09fa0479a2e418fe44815a9b5fcf9c)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: eb09fa0479a2e418fe44815a9b5fcf9c)
+MojoPatch [debug]: ([T-WOOD.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8a7f59843b465a5bc776963f351fb804)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8a7f59843b465a5bc776963f351fb804)
+MojoPatch [debug]: ([T2-ATTACHMENTS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fc032c24d2c6faaa12c7b9c93caa9754)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fc032c24d2c6faaa12c7b9c93caa9754)
+MojoPatch [debug]: ([T2-BRICK.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0be98a246e0b00df8b3ded6b61010588)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0be98a246e0b00df8b3ded6b61010588)
+MojoPatch [debug]: ([T2-CHARACTERS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 75622363da75781f7b8d1f9c697a53f1)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 75622363da75781f7b8d1f9c697a53f1)
+MojoPatch [debug]: ([T2-CONCRETE.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7576683214d7dcec62bb4c2ba6231e37)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 7576683214d7dcec62bb4c2ba6231e37)
+MojoPatch [debug]: ([T2-DOORS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9b91e79c7e75b26a21c7bbafaf1d0e71)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9b91e79c7e75b26a21c7bbafaf1d0e71)
+MojoPatch [debug]: ([T2-EQUIPMENT.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 20bbaad04f0967c7e31af5c62fcdad0f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 20bbaad04f0967c7e31af5c62fcdad0f)
+MojoPatch [debug]: ([T2-FABRIC.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 665f814a304fc60eeea9752e7c743302)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 665f814a304fc60eeea9752e7c743302)
+MojoPatch [debug]: ([T2-FOLIAGE.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8f4e4d43a51589f1ff0751c9971dd05e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8f4e4d43a51589f1ff0751c9971dd05e)
+MojoPatch [debug]: ([T2-Fonts.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fbc99795c144dade16bff90f90bf0098)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fbc99795c144dade16bff90f90bf0098)
+MojoPatch [debug]: ([T2-FX.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: df6ecb5303181c5bc5e8592b20d990b3)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: df6ecb5303181c5bc5e8592b20d990b3)
+MojoPatch [debug]: ([T2-LIGHTS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8abf847a37527958b1c3a97cb5fb6b2e)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 8abf847a37527958b1c3a97cb5fb6b2e)
+MojoPatch [debug]: ([T2-LIQUIDS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0304bf0f9ea04675d504f24d1b682b8d)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0304bf0f9ea04675d504f24d1b682b8d)
+MojoPatch [debug]: ([T2-METAL.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3bdb7a3bbc37823244e5985e803e9f8a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 3bdb7a3bbc37823244e5985e803e9f8a)
+MojoPatch [debug]: ([T2-MISC.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c213d9cc51db80f46c8409b6e85db54f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: c213d9cc51db80f46c8409b6e85db54f)
+MojoPatch [debug]: ([T2-SIGNS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 846f3a6ffd5dd28b80a70c7d2a1ba474)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 846f3a6ffd5dd28b80a70c7d2a1ba474)
+MojoPatch [debug]: ([T2-SKINS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fe422b32582baab7edc18d314281c767)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: fe422b32582baab7edc18d314281c767)
+MojoPatch [debug]: ([T2-SKINS_vehicles.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b4e8b799992aae02476b92f7424105cb)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: b4e8b799992aae02476b92f7424105cb)
+MojoPatch [debug]: ([T2-SKY.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9d64d29ecb7f3d00906112bc1cd4d2aa)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 9d64d29ecb7f3d00906112bc1cd4d2aa)
+MojoPatch [debug]: ([T2-STONE.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0b4fec36f3dd48d6d7b76caabfca8d1a)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 0b4fec36f3dd48d6d7b76caabfca8d1a)
+MojoPatch [debug]: ([T2-TERRAIN.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6120d113b42d53df4c2e484a871c9dbd)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6120d113b42d53df4c2e484a871c9dbd)
+MojoPatch [debug]: ([T2-TILE.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 81e412d1ac19aea165041b55b8ef3be4)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 81e412d1ac19aea165041b55b8ef3be4)
+MojoPatch [debug]: ([T2-UI.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: dd801f6391fd7e5b9e1612617609868f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: dd801f6391fd7e5b9e1612617609868f)
+MojoPatch [debug]: ([T2-WINDOWS.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1ed184c422ac331f4244e28f08fb83d0)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 1ed184c422ac331f4244e28f08fb83d0)
+MojoPatch [debug]: ([T2-WOOD.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 04acc7697e3f76cde68b23440d639f7f)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 04acc7697e3f76cde68b23440d639f7f)
+MojoPatch [debug]: ([T3-SKINS_vehicles.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 33163b8971396fbf5f2d65c7035b0bdd)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 33163b8971396fbf5f2d65c7035b0bdd)
+MojoPatch [debug]: ([T_UI2.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6d09d0c56f883aa5c2de50975250ed06)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: 6d09d0c56f883aa5c2de50975250ed06)
+MojoPatch [debug]: ([X-TEMP.utx]...)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cdadb7adc59c3e1b2084bdf87118c245)
+MojoPatch [debug]: md5summing...
+MojoPatch:   (md5sum: cdadb7adc59c3e1b2084bdf87118c245)
+MojoPatch: 26787419 bytes in the file [/Users/icculus/Desktop/default.mojopatch].
+MojoPatch [debug]: (Total running time: 254 seconds.)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xdelta-1.1.3/.libs/libxdelta.lai	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,28 @@
+# libxdelta.la - a libtool library file
+# Generated by ltmain.sh - GNU libtool 1.3.3 (1.385.2.181 1999/07/02 15:49:11)
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname=''
+
+# Names of this library.
+library_names=''
+
+# The name of the static archive.
+old_library='libxdelta.a'
+
+# Libraries that this one depends upon.
+dependency_libs=' -L/usr/local/lib -lglib'
+
+# Version information for libxdelta.
+current=2
+age=0
+revision=0
+
+# Is this an already installed library?
+installed=yes
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xdelta-1.1.3/AUTHORS	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,3 @@
+The author is Joshua MacDonald, <jmacd@cs.berkeley.edu>.  The Rsync
+algorithm, which inspired the core delta algorithm, is due to Andrew
+Tridgell and Paul Mackerras.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xdelta-1.1.3/COPYING	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,339 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xdelta-1.1.3/INSTALL	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,217 @@
+-*- Text -*-
+
+XDelta depends on
+
+	glib 1.2.8 or later
+	zlib 1.1.3 or later
+
+You can get glib from
+
+	ftp://ftp.gtk.org/pub/gtk/v1.2
+
+You can get zlib from
+
+	ftp://ftp.cdrom.com/pub/infozip/zlib
+
+To install, make sure these packages are installed and your compiler
+and linker either locates zlib by default or that the CFLAGS
+environment variable contains an appropriate include directive and the
+LDFLAGS environment variable contains a suitable linker directive.
+
+Then run
+
+	./configure
+
+Then run
+
+	make
+
+Then run
+
+	make install
+
+Below follows the standard GNU INSTALL file, which contains general
+troubleshooting tips.
+
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+   The file `configure.in' is used to create `configure' by a program
+called `autoconf'.  You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  You can give `configure'
+initial values for variables by setting them in the environment.  Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory.  After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+     CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+   If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+     Use and save the results of the tests in FILE instead of
+     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
+     debugging `configure'.
+
+`--help'
+     Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--version'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xdelta-1.1.3/Makefile	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,629 @@
+# Generated automatically from Makefile.in by configure.
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+SHELL = /bin/sh
+
+srcdir = .
+top_srcdir = .
+prefix = /usr/local
+exec_prefix = ${prefix}
+
+bindir = ${exec_prefix}/bin
+sbindir = ${exec_prefix}/sbin
+libexecdir = ${exec_prefix}/libexec
+datadir = ${prefix}/share
+sysconfdir = ${prefix}/etc
+sharedstatedir = ${prefix}/com
+localstatedir = ${prefix}/var
+libdir = ${exec_prefix}/lib
+infodir = ${prefix}/info
+mandir = ${prefix}/man
+includedir = ${prefix}/include
+oldincludedir = /usr/include
+
+DESTDIR =
+
+pkgdatadir = $(datadir)/xdelta
+pkglibdir = $(libdir)/xdelta
+pkgincludedir = $(includedir)/xdelta
+
+top_builddir = .
+
+ACLOCAL = aclocal
+AUTOCONF = autoconf
+AUTOMAKE = automake
+AUTOHEADER = autoheader
+
+INSTALL = /usr/bin/install -c
+INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS)
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_SCRIPT = ${INSTALL_PROGRAM}
+transform = s,x,x,
+
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias = powerpc-apple
+host_triplet = powerpc-apple-macos
+AS = @AS@
+CC = gcc
+CPP = gcc -E
+DLLTOOL = @DLLTOOL@
+EMACS = /usr/bin/emacs
+GLIB_CFLAGS = -I/usr/local/include/glib-1.2 -I/usr/local/lib/glib/include
+GLIB_CONFIG = /usr/local/bin/glib-config
+GLIB_LIBS = -L/usr/local/lib -lglib
+LD = /usr/bin/ld
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+MAINT = #
+MAKEINFO = makeinfo
+NM = /usr/bin/nm -p
+OBJDUMP = @OBJDUMP@
+PACKAGE = xdelta
+RANLIB = ranlib
+VERSION = 1.1.3
+top_srcdir_absolute = /Users/icculus/projects/mojopatch/xdelta-1.1.3
+
+INCLUDES = -I$(top_srcdir)/libedsio $(GLIB_CFLAGS)
+
+bin_PROGRAMS = xdelta
+bin_SCRIPTS = xdelta-config
+
+xdelta_SOURCES = xdmain.c getopt.c getopt1.c
+
+xdelta_LDADD = libxdelta.la						  $(top_srcdir)/libedsio/libedsio.la			  $(GLIB_LIBS)						  -lz
+
+
+include_HEADERS = xdelta.h xd_edsio.h
+noinst_HEADERS = xdeltapriv.h getopt.h
+
+lib_LTLIBRARIES = libxdelta.la
+
+libxdelta_la_SOURCES = xdelta.c xdapply.c $(SER_SOURCES)
+libxdelta_la_LIBADD = $(GLIB_LIBS)
+
+EXTRA_DIST = xd.ser $(SER_OUT) xdelta.magic xdelta.prj xdelta.m4		autogen.sh xdelta.dsp xdelta.dsw stamp-ser xdrsync.c
+
+
+SUBDIRS = libedsio . test doc djgpp
+
+m4datadir = $(datadir)/aclocal
+m4data_DATA = xdelta.m4
+
+libxdelta_la_LDFLAGS = -version-info 2:0:0
+
+SER_OUT = xd_edsio.h xd_edsio.c
+
+SER_SOURCES = xd_edsio.c
+BUILT_SOURCES = $(SER_SOURCES)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =  xdelta-config
+LTLIBRARIES =  $(lib_LTLIBRARIES)
+
+
+DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I.
+CPPFLAGS = 
+LDFLAGS = 
+LIBS = 
+libxdelta_la_DEPENDENCIES = 
+libxdelta_la_OBJECTS =  xdelta.lo xdapply.lo xd_edsio.lo
+PROGRAMS =  $(bin_PROGRAMS)
+
+xdelta_OBJECTS =  xdmain.o getopt.o getopt1.o
+xdelta_DEPENDENCIES =  libxdelta.la $(top_srcdir)/libedsio/libedsio.la
+xdelta_LDFLAGS = 
+SCRIPTS =  $(bin_SCRIPTS)
+
+CFLAGS =  -Wall -Os
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
+DATA =  $(m4data_DATA)
+
+HEADERS =  $(include_HEADERS) $(noinst_HEADERS)
+
+DIST_COMMON =  README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
+Makefile.am Makefile.in NEWS aclocal.m4 config.guess config.h.in \
+config.sub configure configure.in install-sh ltconfig ltmain.sh missing \
+mkinstalldirs xdelta-config.in
+
+
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+TAR = tar
+GZIP_ENV = --best
+SOURCES = $(libxdelta_la_SOURCES) $(xdelta_SOURCES)
+OBJECTS = $(libxdelta_la_OBJECTS) $(xdelta_OBJECTS)
+
+all: all-redirect
+.SUFFIXES:
+.SUFFIXES: .S .c .lo .o .s
+$(srcdir)/Makefile.in: # Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+	cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
+
+Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) \
+	  && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(ACLOCAL_M4): # configure.in 
+	cd $(srcdir) && $(ACLOCAL)
+
+config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+$(srcdir)/configure: #$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+	cd $(srcdir) && $(AUTOCONF)
+
+config.h: stamp-h
+	@if test ! -f $@; then \
+		rm -f stamp-h; \
+		$(MAKE) stamp-h; \
+	else :; fi
+stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
+	cd $(top_builddir) \
+	  && CONFIG_FILES= CONFIG_HEADERS=config.h \
+	     $(SHELL) ./config.status
+	@echo timestamp > stamp-h 2> /dev/null
+$(srcdir)/config.h.in: #$(srcdir)/stamp-h.in
+	@if test ! -f $@; then \
+		rm -f $(srcdir)/stamp-h.in; \
+		$(MAKE) $(srcdir)/stamp-h.in; \
+	else :; fi
+$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	@echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
+
+mostlyclean-hdr:
+
+clean-hdr:
+
+distclean-hdr:
+	-rm -f config.h
+
+maintainer-clean-hdr:
+xdelta-config: $(top_builddir)/config.status xdelta-config.in
+	cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+mostlyclean-libLTLIBRARIES:
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+
+distclean-libLTLIBRARIES:
+
+maintainer-clean-libLTLIBRARIES:
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo "$(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
+	    $(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  $(LIBTOOL)  --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+	done
+
+.c.o:
+	$(COMPILE) -c $<
+
+.s.o:
+	$(COMPILE) -c $<
+
+.S.o:
+	$(COMPILE) -c $<
+
+mostlyclean-compile:
+	-rm -f *.o core *.core
+
+clean-compile:
+
+distclean-compile:
+	-rm -f *.tab.c
+
+maintainer-clean-compile:
+
+.c.lo:
+	$(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+.s.lo:
+	$(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+.S.lo:
+	$(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+
+maintainer-clean-libtool:
+
+libxdelta.la: $(libxdelta_la_OBJECTS) $(libxdelta_la_DEPENDENCIES)
+	$(LINK) -rpath $(libdir) $(libxdelta_la_LDFLAGS) $(libxdelta_la_OBJECTS) $(libxdelta_la_LIBADD) $(LIBS)
+
+mostlyclean-binPROGRAMS:
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+distclean-binPROGRAMS:
+
+maintainer-clean-binPROGRAMS:
+
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(bindir)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo " $(LIBTOOL)  --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+	    $(LIBTOOL)  --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+	done
+
+xdelta: $(xdelta_OBJECTS) $(xdelta_DEPENDENCIES)
+	@rm -f xdelta
+	$(LINK) $(xdelta_LDFLAGS) $(xdelta_OBJECTS) $(xdelta_LDADD) $(LIBS)
+
+install-binSCRIPTS: $(bin_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(bindir)
+	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
+	    $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
+	  else if test -f $(srcdir)/$$p; then \
+	    echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
+	    $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
+	  else :; fi; fi; \
+	done
+
+uninstall-binSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	list='$(bin_SCRIPTS)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
+	done
+
+install-m4dataDATA: $(m4data_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(m4datadir)
+	@list='$(m4data_DATA)'; for p in $$list; do \
+	  if test -f $(srcdir)/$$p; then \
+	    echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(m4datadir)/$$p"; \
+	    $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(m4datadir)/$$p; \
+	  else if test -f $$p; then \
+	    echo " $(INSTALL_DATA) $$p $(DESTDIR)$(m4datadir)/$$p"; \
+	    $(INSTALL_DATA) $$p $(DESTDIR)$(m4datadir)/$$p; \
+	  fi; fi; \
+	done
+
+uninstall-m4dataDATA:
+	@$(NORMAL_UNINSTALL)
+	list='$(m4data_DATA)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(m4datadir)/$$p; \
+	done
+
+install-includeHEADERS: $(include_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(includedir)
+	@list='$(include_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+	  echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p"; \
+	  $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p; \
+	done
+
+uninstall-includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	list='$(include_HEADERS)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(includedir)/$$p; \
+	done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+
+
+
+all-recursive install-data-recursive install-exec-recursive \
+installdirs-recursive install-recursive uninstall-recursive  \
+check-recursive installcheck-recursive info-recursive dvi-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	dot_seen=no; \
+	rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
+	  rev="$$subdir $$rev"; \
+	  test "$$subdir" = "." && dot_seen=yes; \
+	done; \
+	test "$$dot_seen" = "no" && rev=". $$rev"; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS)'; \
+	unique=`for i in $$list; do echo $$i; done | \
+	  awk '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	here=`pwd` && cd $(srcdir) \
+	  && mkid -f$$here/ID $$unique $(LISP)
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+   if test "$$subdir" = .; then :; else \
+	    test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+   fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)'; \
+	unique=`for i in $$list; do echo $$i; done | \
+	  awk '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
+	  || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
+
+mostlyclean-tags:
+
+clean-tags:
+
+distclean-tags:
+	-rm -f TAGS ID
+
+maintainer-clean-tags:
+
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	-rm -rf $(distdir)
+	GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
+	mkdir $(distdir)/=build
+	mkdir $(distdir)/=inst
+	dc_install_base=`cd $(distdir)/=inst && pwd`; \
+	cd $(distdir)/=build \
+	  && ../configure --srcdir=.. --prefix=$$dc_install_base \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist
+	-rm -rf $(distdir)
+	@banner="$(distdir).tar.gz is ready for distribution"; \
+	dashes=`echo "$$banner" | sed s/./=/g`; \
+	echo "$$dashes"; \
+	echo "$$banner"; \
+	echo "$$dashes"
+dist: distdir
+	-chmod -R a+r $(distdir)
+	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
+	-rm -rf $(distdir)
+dist-all: distdir
+	-chmod -R a+r $(distdir)
+	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
+	-rm -rf $(distdir)
+distdir: $(DISTFILES)
+	-rm -rf $(distdir)
+	mkdir $(distdir)
+	-chmod 777 $(distdir)
+	@for file in $(DISTFILES); do \
+	  d=$(srcdir); \
+	  if test -d $$d/$$file; then \
+	    cp -pr $$d/$$file $(distdir)/$$file; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+	    || cp -p $$d/$$file $(distdir)/$$file || :; \
+	  fi; \
+	done
+	for subdir in $(SUBDIRS); do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
+	    || exit 1; \
+	    chmod 777 $(distdir)/$$subdir; \
+	    (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+getopt.o: getopt.c config.h
+getopt1.o: getopt1.c config.h getopt.h
+xd_edsio.lo xd_edsio.o : xd_edsio.c xdelta.h xd_edsio.h libedsio/edsio.h \
+	config.h libedsio/edsio_edsio.h
+xdapply.lo xdapply.o : xdapply.c xdelta.h xd_edsio.h libedsio/edsio.h \
+	config.h libedsio/edsio_edsio.h xdeltapriv.h
+xdelta.lo xdelta.o : xdelta.c xdelta.h xd_edsio.h libedsio/edsio.h \
+	config.h libedsio/edsio_edsio.h xdeltapriv.h
+xdmain.o: xdmain.c getopt.h xdelta.h xd_edsio.h libedsio/edsio.h \
+	config.h libedsio/edsio_edsio.h
+
+info-am:
+info: info-recursive
+dvi-am:
+dvi: dvi-recursive
+check-am: all-am
+check: check-recursive
+installcheck-am:
+installcheck: installcheck-recursive
+all-recursive-am: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+install-exec-am: install-libLTLIBRARIES install-binPROGRAMS \
+		install-binSCRIPTS
+install-exec: install-exec-recursive
+
+install-data-am: install-m4dataDATA install-includeHEADERS
+install-data: install-data-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+install: install-recursive
+uninstall-am: uninstall-libLTLIBRARIES uninstall-binPROGRAMS \
+		uninstall-binSCRIPTS uninstall-m4dataDATA \
+		uninstall-includeHEADERS
+uninstall: uninstall-recursive
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \
+		$(HEADERS) config.h
+all-redirect: all-recursive-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+installdirs: installdirs-recursive
+installdirs-am:
+	$(mkinstalldirs)  $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) \
+		$(DESTDIR)$(bindir) $(DESTDIR)$(m4datadir) \
+		$(DESTDIR)$(includedir)
+
+
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f Makefile $(CONFIG_CLEAN_FILES)
+	-rm -f config.cache config.log stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+mostlyclean-am:  mostlyclean-hdr mostlyclean-libLTLIBRARIES \
+		mostlyclean-compile mostlyclean-libtool \
+		mostlyclean-binPROGRAMS mostlyclean-tags \
+		mostlyclean-generic
+
+mostlyclean: mostlyclean-recursive
+
+clean-am:  clean-hdr clean-libLTLIBRARIES clean-compile clean-libtool \
+		clean-binPROGRAMS clean-tags clean-generic \
+		mostlyclean-am
+
+clean: clean-recursive
+
+distclean-am:  distclean-hdr distclean-libLTLIBRARIES distclean-compile \
+		distclean-libtool distclean-binPROGRAMS distclean-tags \
+		distclean-generic clean-am
+	-rm -f libtool
+
+distclean: distclean-recursive
+	-rm -f config.status
+
+maintainer-clean-am:  maintainer-clean-hdr \
+		maintainer-clean-libLTLIBRARIES \
+		maintainer-clean-compile maintainer-clean-libtool \
+		maintainer-clean-binPROGRAMS maintainer-clean-tags \
+		maintainer-clean-generic distclean-am
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f config.status
+
+.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
+mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
+clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
+uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
+distclean-compile clean-compile maintainer-clean-compile \
+mostlyclean-libtool distclean-libtool clean-libtool \
+maintainer-clean-libtool mostlyclean-binPROGRAMS distclean-binPROGRAMS \
+clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
+install-binPROGRAMS uninstall-binSCRIPTS install-binSCRIPTS \
+uninstall-m4dataDATA install-m4dataDATA uninstall-includeHEADERS \
+install-includeHEADERS install-data-recursive uninstall-data-recursive \
+install-exec-recursive uninstall-exec-recursive installdirs-recursive \
+uninstalldirs-recursive all-recursive check-recursive \
+installcheck-recursive info-recursive dvi-recursive \
+mostlyclean-recursive distclean-recursive clean-recursive \
+maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
+distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
+dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
+install-exec-am install-exec install-data-am install-data install-am \
+install uninstall-am uninstall all-redirect all-am all installdirs-am \
+installdirs mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+
+
+#
+# Rules for the generated code
+#
+
+stamp-ser: $(top_srcdir)/libedsio/edsio.el xd.ser
+	$(top_srcdir)/libedsio/edsio-comp xd.ser
+	touch stamp-ser
+
+$(SER_OUT): stamp-ser
+
+#
+#
+#
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xdelta-1.1.3/Makefile.am	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,50 @@
+
+INCLUDES = -I$(top_srcdir)/libedsio $(GLIB_CFLAGS)
+
+bin_PROGRAMS    = xdelta
+bin_SCRIPTS	= xdelta-config
+
+xdelta_SOURCES  = xdmain.c getopt.c getopt1.c
+
+xdelta_LDADD    = libxdelta.la				\
+		  $(top_srcdir)/libedsio/libedsio.la	\
+		  $(GLIB_LIBS)				\
+		  -lz
+
+include_HEADERS = xdelta.h xd_edsio.h
+noinst_HEADERS  = xdeltapriv.h getopt.h
+
+lib_LTLIBRARIES = libxdelta.la
+
+libxdelta_la_SOURCES = xdelta.c xdapply.c $(SER_SOURCES)
+libxdelta_la_LIBADD  = $(GLIB_LIBS)
+
+EXTRA_DIST = xd.ser $(SER_OUT) xdelta.magic xdelta.prj xdelta.m4	\
+	autogen.sh xdelta.dsp xdelta.dsw stamp-ser xdrsync.c
+
+SUBDIRS = libedsio . test doc djgpp
+
+m4datadir = $(datadir)/aclocal
+m4data_DATA = xdelta.m4
+
+## $Format: "libxdelta_la_LDFLAGS = -version-info $LibCurrent$:$LibRevision$:$LibAge$" $
+libxdelta_la_LDFLAGS = -version-info 2:0:0
+
+#
+# Rules for the generated code
+#
+
+stamp-ser: $(top_srcdir)/libedsio/edsio.el xd.ser
+	$(top_srcdir)/libedsio/edsio-comp xd.ser
+	touch stamp-ser
+
+SER_OUT = xd_edsio.h xd_edsio.c
+
+$(SER_OUT): stamp-ser
+
+SER_SOURCES   = xd_edsio.c
+BUILT_SOURCES = $(SER_SOURCES)
+
+#
+#
+#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xdelta-1.1.3/Makefile.in	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,629 @@
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+
+DESTDIR =
+
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+
+top_builddir = .
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+transform = @program_transform_name@
+
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+AS = @AS@
+CC = @CC@
+CPP = @CPP@
+DLLTOOL = @DLLTOOL@
+EMACS = @EMACS@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_CONFIG = @GLIB_CONFIG@
+GLIB_LIBS = @GLIB_LIBS@
+LD = @LD@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+NM = @NM@
+OBJDUMP = @OBJDUMP@
+PACKAGE = @PACKAGE@
+RANLIB = @RANLIB@
+VERSION = @VERSION@
+top_srcdir_absolute = @top_srcdir_absolute@
+
+INCLUDES = -I$(top_srcdir)/libedsio $(GLIB_CFLAGS)
+
+bin_PROGRAMS = xdelta
+bin_SCRIPTS = xdelta-config
+
+xdelta_SOURCES = xdmain.c getopt.c getopt1.c
+
+xdelta_LDADD = libxdelta.la						  $(top_srcdir)/libedsio/libedsio.la			  $(GLIB_LIBS)						  -lz
+
+
+include_HEADERS = xdelta.h xd_edsio.h
+noinst_HEADERS = xdeltapriv.h getopt.h
+
+lib_LTLIBRARIES = libxdelta.la
+
+libxdelta_la_SOURCES = xdelta.c xdapply.c $(SER_SOURCES)
+libxdelta_la_LIBADD = $(GLIB_LIBS)
+
+EXTRA_DIST = xd.ser $(SER_OUT) xdelta.magic xdelta.prj xdelta.m4		autogen.sh xdelta.dsp xdelta.dsw stamp-ser xdrsync.c
+
+
+SUBDIRS = libedsio . test doc djgpp
+
+m4datadir = $(datadir)/aclocal
+m4data_DATA = xdelta.m4
+
+libxdelta_la_LDFLAGS = -version-info 2:0:0
+
+SER_OUT = xd_edsio.h xd_edsio.c
+
+SER_SOURCES = xd_edsio.c
+BUILT_SOURCES = $(SER_SOURCES)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =  xdelta-config
+LTLIBRARIES =  $(lib_LTLIBRARIES)
+
+
+DEFS = @DEFS@ -I. -I$(srcdir) -I.
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+LIBS = @LIBS@
+libxdelta_la_DEPENDENCIES = 
+libxdelta_la_OBJECTS =  xdelta.lo xdapply.lo xd_edsio.lo
+PROGRAMS =  $(bin_PROGRAMS)
+
+xdelta_OBJECTS =  xdmain.o getopt.o getopt1.o
+xdelta_DEPENDENCIES =  libxdelta.la $(top_srcdir)/libedsio/libedsio.la
+xdelta_LDFLAGS = 
+SCRIPTS =  $(bin_SCRIPTS)
+
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
+DATA =  $(m4data_DATA)
+
+HEADERS =  $(include_HEADERS) $(noinst_HEADERS)
+
+DIST_COMMON =  README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \
+Makefile.am Makefile.in NEWS aclocal.m4 config.guess config.h.in \
+config.sub configure configure.in install-sh ltconfig ltmain.sh missing \
+mkinstalldirs xdelta-config.in
+
+
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+TAR = tar
+GZIP_ENV = --best
+SOURCES = $(libxdelta_la_SOURCES) $(xdelta_SOURCES)
+OBJECTS = $(libxdelta_la_OBJECTS) $(xdelta_OBJECTS)
+
+all: all-redirect
+.SUFFIXES:
+.SUFFIXES: .S .c .lo .o .s
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+	cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
+
+Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) \
+	  && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in 
+	cd $(srcdir) && $(ACLOCAL)
+
+config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+	cd $(srcdir) && $(AUTOCONF)
+
+config.h: stamp-h
+	@if test ! -f $@; then \
+		rm -f stamp-h; \
+		$(MAKE) stamp-h; \
+	else :; fi
+stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
+	cd $(top_builddir) \
+	  && CONFIG_FILES= CONFIG_HEADERS=config.h \
+	     $(SHELL) ./config.status
+	@echo timestamp > stamp-h 2> /dev/null
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/stamp-h.in
+	@if test ! -f $@; then \
+		rm -f $(srcdir)/stamp-h.in; \
+		$(MAKE) $(srcdir)/stamp-h.in; \
+	else :; fi
+$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	@echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
+
+mostlyclean-hdr:
+
+clean-hdr:
+
+distclean-hdr:
+	-rm -f config.h
+
+maintainer-clean-hdr:
+xdelta-config: $(top_builddir)/config.status xdelta-config.in
+	cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+mostlyclean-libLTLIBRARIES:
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+
+distclean-libLTLIBRARIES:
+
+maintainer-clean-libLTLIBRARIES:
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo "$(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
+	    $(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  $(LIBTOOL)  --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+	done
+
+.c.o:
+	$(COMPILE) -c $<
+
+.s.o:
+	$(COMPILE) -c $<
+
+.S.o:
+	$(COMPILE) -c $<
+
+mostlyclean-compile:
+	-rm -f *.o core *.core
+
+clean-compile:
+
+distclean-compile:
+	-rm -f *.tab.c
+
+maintainer-clean-compile:
+
+.c.lo:
+	$(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+.s.lo:
+	$(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+.S.lo:
+	$(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+
+maintainer-clean-libtool:
+
+libxdelta.la: $(libxdelta_la_OBJECTS) $(libxdelta_la_DEPENDENCIES)
+	$(LINK) -rpath $(libdir) $(libxdelta_la_LDFLAGS) $(libxdelta_la_OBJECTS) $(libxdelta_la_LIBADD) $(LIBS)
+
+mostlyclean-binPROGRAMS:
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+
+distclean-binPROGRAMS:
+
+maintainer-clean-binPROGRAMS:
+
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(bindir)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo " $(LIBTOOL)  --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+	    $(LIBTOOL)  --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+	done
+
+xdelta: $(xdelta_OBJECTS) $(xdelta_DEPENDENCIES)
+	@rm -f xdelta
+	$(LINK) $(xdelta_LDFLAGS) $(xdelta_OBJECTS) $(xdelta_LDADD) $(LIBS)
+
+install-binSCRIPTS: $(bin_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(bindir)
+	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
+	    $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
+	  else if test -f $(srcdir)/$$p; then \
+	    echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
+	    $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
+	  else :; fi; fi; \
+	done
+
+uninstall-binSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	list='$(bin_SCRIPTS)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
+	done
+
+install-m4dataDATA: $(m4data_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(m4datadir)
+	@list='$(m4data_DATA)'; for p in $$list; do \
+	  if test -f $(srcdir)/$$p; then \
+	    echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(m4datadir)/$$p"; \
+	    $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(m4datadir)/$$p; \
+	  else if test -f $$p; then \
+	    echo " $(INSTALL_DATA) $$p $(DESTDIR)$(m4datadir)/$$p"; \
+	    $(INSTALL_DATA) $$p $(DESTDIR)$(m4datadir)/$$p; \
+	  fi; fi; \
+	done
+
+uninstall-m4dataDATA:
+	@$(NORMAL_UNINSTALL)
+	list='$(m4data_DATA)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(m4datadir)/$$p; \
+	done
+
+install-includeHEADERS: $(include_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(includedir)
+	@list='$(include_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
+	  echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p"; \
+	  $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p; \
+	done
+
+uninstall-includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	list='$(include_HEADERS)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(includedir)/$$p; \
+	done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+
+@SET_MAKE@
+
+all-recursive install-data-recursive install-exec-recursive \
+installdirs-recursive install-recursive uninstall-recursive  \
+check-recursive installcheck-recursive info-recursive dvi-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	dot_seen=no; \
+	rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
+	  rev="$$subdir $$rev"; \
+	  test "$$subdir" = "." && dot_seen=yes; \
+	done; \
+	test "$$dot_seen" = "no" && rev=". $$rev"; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS)'; \
+	unique=`for i in $$list; do echo $$i; done | \
+	  awk '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	here=`pwd` && cd $(srcdir) \
+	  && mkid -f$$here/ID $$unique $(LISP)
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+   if test "$$subdir" = .; then :; else \
+	    test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+   fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)'; \
+	unique=`for i in $$list; do echo $$i; done | \
+	  awk '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
+	  || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
+
+mostlyclean-tags:
+
+clean-tags:
+
+distclean-tags:
+	-rm -f TAGS ID
+
+maintainer-clean-tags:
+
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	-rm -rf $(distdir)
+	GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
+	mkdir $(distdir)/=build
+	mkdir $(distdir)/=inst
+	dc_install_base=`cd $(distdir)/=inst && pwd`; \
+	cd $(distdir)/=build \
+	  && ../configure --srcdir=.. --prefix=$$dc_install_base \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist
+	-rm -rf $(distdir)
+	@banner="$(distdir).tar.gz is ready for distribution"; \
+	dashes=`echo "$$banner" | sed s/./=/g`; \
+	echo "$$dashes"; \
+	echo "$$banner"; \
+	echo "$$dashes"
+dist: distdir
+	-chmod -R a+r $(distdir)
+	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
+	-rm -rf $(distdir)
+dist-all: distdir
+	-chmod -R a+r $(distdir)
+	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
+	-rm -rf $(distdir)
+distdir: $(DISTFILES)
+	-rm -rf $(distdir)
+	mkdir $(distdir)
+	-chmod 777 $(distdir)
+	@for file in $(DISTFILES); do \
+	  d=$(srcdir); \
+	  if test -d $$d/$$file; then \
+	    cp -pr $$d/$$file $(distdir)/$$file; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+	    || cp -p $$d/$$file $(distdir)/$$file || :; \
+	  fi; \
+	done
+	for subdir in $(SUBDIRS); do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
+	    || exit 1; \
+	    chmod 777 $(distdir)/$$subdir; \
+	    (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+getopt.o: getopt.c config.h
+getopt1.o: getopt1.c config.h getopt.h
+xd_edsio.lo xd_edsio.o : xd_edsio.c xdelta.h xd_edsio.h libedsio/edsio.h \
+	config.h libedsio/edsio_edsio.h
+xdapply.lo xdapply.o : xdapply.c xdelta.h xd_edsio.h libedsio/edsio.h \
+	config.h libedsio/edsio_edsio.h xdeltapriv.h
+xdelta.lo xdelta.o : xdelta.c xdelta.h xd_edsio.h libedsio/edsio.h \
+	config.h libedsio/edsio_edsio.h xdeltapriv.h
+xdmain.o: xdmain.c getopt.h xdelta.h xd_edsio.h libedsio/edsio.h \
+	config.h libedsio/edsio_edsio.h
+
+info-am:
+info: info-recursive
+dvi-am:
+dvi: dvi-recursive
+check-am: all-am
+check: check-recursive
+installcheck-am:
+installcheck: installcheck-recursive
+all-recursive-am: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+install-exec-am: install-libLTLIBRARIES install-binPROGRAMS \
+		install-binSCRIPTS
+install-exec: install-exec-recursive
+
+install-data-am: install-m4dataDATA install-includeHEADERS
+install-data: install-data-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+install: install-recursive
+uninstall-am: uninstall-libLTLIBRARIES uninstall-binPROGRAMS \
+		uninstall-binSCRIPTS uninstall-m4dataDATA \
+		uninstall-includeHEADERS
+uninstall: uninstall-recursive
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \
+		$(HEADERS) config.h
+all-redirect: all-recursive-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+installdirs: installdirs-recursive
+installdirs-am:
+	$(mkinstalldirs)  $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) \
+		$(DESTDIR)$(bindir) $(DESTDIR)$(m4datadir) \
+		$(DESTDIR)$(includedir)
+
+
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f Makefile $(CONFIG_CLEAN_FILES)
+	-rm -f config.cache config.log stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+mostlyclean-am:  mostlyclean-hdr mostlyclean-libLTLIBRARIES \
+		mostlyclean-compile mostlyclean-libtool \
+		mostlyclean-binPROGRAMS mostlyclean-tags \
+		mostlyclean-generic
+
+mostlyclean: mostlyclean-recursive
+
+clean-am:  clean-hdr clean-libLTLIBRARIES clean-compile clean-libtool \
+		clean-binPROGRAMS clean-tags clean-generic \
+		mostlyclean-am
+
+clean: clean-recursive
+
+distclean-am:  distclean-hdr distclean-libLTLIBRARIES distclean-compile \
+		distclean-libtool distclean-binPROGRAMS distclean-tags \
+		distclean-generic clean-am
+	-rm -f libtool
+
+distclean: distclean-recursive
+	-rm -f config.status
+
+maintainer-clean-am:  maintainer-clean-hdr \
+		maintainer-clean-libLTLIBRARIES \
+		maintainer-clean-compile maintainer-clean-libtool \
+		maintainer-clean-binPROGRAMS maintainer-clean-tags \
+		maintainer-clean-generic distclean-am
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f config.status
+
+.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
+mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
+clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
+uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
+distclean-compile clean-compile maintainer-clean-compile \
+mostlyclean-libtool distclean-libtool clean-libtool \
+maintainer-clean-libtool mostlyclean-binPROGRAMS distclean-binPROGRAMS \
+clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
+install-binPROGRAMS uninstall-binSCRIPTS install-binSCRIPTS \
+uninstall-m4dataDATA install-m4dataDATA uninstall-includeHEADERS \
+install-includeHEADERS install-data-recursive uninstall-data-recursive \
+install-exec-recursive uninstall-exec-recursive installdirs-recursive \
+uninstalldirs-recursive all-recursive check-recursive \
+installcheck-recursive info-recursive dvi-recursive \
+mostlyclean-recursive distclean-recursive clean-recursive \
+maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
+distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
+dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
+install-exec-am install-exec install-data-am install-data install-am \
+install uninstall-am uninstall all-redirect all-am all installdirs-am \
+installdirs mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+
+
+#
+# Rules for the generated code
+#
+
+stamp-ser: $(top_srcdir)/libedsio/edsio.el xd.ser
+	$(top_srcdir)/libedsio/edsio-comp xd.ser
+	touch stamp-ser
+
+$(SER_OUT): stamp-ser
+
+#
+#
+#
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xdelta-1.1.3/NEWS	Mon Jan 05 18:54:18 2004 +0000
@@ -0,0 +1,208 @@
+XDelta NEWS -- history of user-visible changes. -*- Text -*-
+$Date: 2004/01/05 18:54:21 $
+$ReleaseVersion: 1.1.3 $
+
+Please send bug reports to xdelta-bugs@XCF.Berkeley.EDU.  See the file
+`README' for a description of how to report bugs.
+
+
+** Changes since version 1.1.2
+
+* Correct error message format for the case when gzread fails trying
+  to automatically decompress a corrupted GZIP file.  The situation
+  itself--corrupt GZIP files--should be dealt with the -p (--pristine)
+  option, which disables GZIP file recognition.  Reported by Ben
+  Escoto.
+
+* Apply a patch from Klaus Dittrich for building on HPUX with the
+  native compiler.  There is now a script called "contrib/build_hpux".
+
+
+** Changes since version 1.1.1
+
+* This code release is a distant fork of the 2.0 release.  It will
+  hopefully be replaced.
+
+* When 'patch' supplies its default TO file name recorded in the
+  delta, it still generates a unique file name to avoid overwriting an
+  existing copy.  Use the 'xdelta info' command to see what file names
+  are contained in the delta.
+
+* The code for writing patches to stdout was broken in the case where
+  gzip compression is used.  Writing patches to stdout has therefore
+  been disabled.  The problem is a limitation in the gzdopen/gzwrite
+  functions provided by zlib--you cannot determine how many bytes have
+  been written to the file descriptor without dup-ing the FD
+  beforehand and then lseek-ing afterwards, which does not work
+  correctly if the output file is not seekable.
+
+* By default, Xdelta uses a hard-coded 16 byte block size.  If you're
+  working with large files, try #undef XDELTA_HARDCODE_SIZE in
+  xdelta.h then use -s BLOCKSIZE (--blocksize=BLOCKSIZE), which should
+  be a power of 2.
+
+* New test program in the 'test' subdirectory, which runs comparisons
+  against "diff --rcs -a" and also verifies the "xdelta patch"
+  command.
+
+* Incorporate DJGPP patches from Richard Dawe <richdawe@bigfoot.com>.
+  You can find his versions directly at:
+
+      ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/xdlt112b.zip
+      ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/xdlt112s.zip
+
+* Updated xdelta(1) man page.
+
+* Updated autoconf (2.50), automake (1.4-p4), libtool (1.4) scripts,
+  which includes updated config.guess and config.sub scripts.
+
+* Correct some backward compatibility issues: strcmp() was not being
+  tested == 0 for formats older than 1.0.4.
+
+* Update GLIB version requirement, now 1.2.8.
+
+* We really need support for 64bit file sizes...  perhaps the next
+  version?
+
+
+** Changes since version 1.1.0
+
+* No one was were able to build the 1.1.0 release because it depended
+  on a version of glib which will not be distributed for some time.
+  This version backs out those dependencies and now requires
+  glib-1.2.1.
+
+
+** Changes since version 1.0.6
+
+* The 64M limit on file sizes has been lifted.  File lengths are now
+  limited by the size of a 32-bit integer.
+
+* The internal data structures were changed and some of the
+  experimental bits of the interface have been moved out of libxdelta,
+  resulting in a simpler interface.  Old patch files are still
+  supported.
+
+
+** Changes since version 1.0.5
+
+* There are 8 bytes of space in the patch format's header that are
+  reserved for future use.  They are not currently used, but were also
+  not being initialized, making it possible for two deltas produced in
+  the same manner to differ.  This was exposed by comparing deltas
+  produced between the same files on Windows and Linux.  With this
+  patch, the results should be identical.
+
+
+** Changes since version 1.0.4
+
+* The code now compiles natively under Windows.  I used MS VC++ 5.0.
+  It depends on glib and zlib, but I don't feel like documenting
+  the build process yet.  I have had some trouble with the zlib DLLs
+  and had to build my own, so you can't build it yourself yet.  There
+  is a pre-built version