--- bittorrent-3.4.2.orig/BitTorrent/RawServer.py
+++ bittorrent-3.4.2/BitTorrent/RawServer.py
@@ -129,6 +129,10 @@
             handler = self.handler
         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         sock.setblocking(0)
+        try:
+            sock.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, 32)
+        except:
+            pass
         sock.bind((self.bindaddr, 0))
         try:
             sock.connect_ex(dns)
--- bittorrent-3.4.2.orig/BitTorrent/Storage.py
+++ bittorrent-3.4.2/BitTorrent/Storage.py
@@ -88,7 +88,7 @@
             h.seek(begin)
             h.write(s[total: total + end - begin])
             total += end - begin
-
+   
     def close(self):
         for h in self.handles.values():
             h.close()
--- bittorrent-3.4.2.orig/BitTorrent/track.py
+++ bittorrent-3.4.2/BitTorrent/track.py
@@ -258,7 +258,7 @@
                             szt = sz * n   # Transferred for this torrent
                             tt = tt + szt
                             if self.allow_get == 1:
-                                linkname = '<a href="/file?info_hash=' + quote(name) + '">' + self.allowed[name]['name'] + '</a>'
+                                linkname = '<a href="/file?info_hash=' + b2a_hex(name) + '">' + self.allowed[name]['name'] + '</a>'
                             else:
                                 linkname = self.allowed[name]['name']
                             s.write('<tr><td><code>%s</code></td><td>%s</td><td align="right">%s</td><td align="right">%i</td><td align="right">%i</td><td align="right">%i</td><td align="right">%s</td></tr>\n' \
@@ -308,8 +308,8 @@
                     fs[name]['name'] = self.allowed[name]['name']
             r = {'files': fs}
             return (200, 'OK', {'Content-Type': 'text/plain'}, bencode(r))
-        elif (path == 'file') and (self.allow_get == 1) and params.has_key('info_hash') and self.allowed.has_key(params['info_hash']):
-            hash = params['info_hash']
+        elif (path == 'file') and (self.allow_get == 1) and params.has_key('info_hash') and self.allowed.has_key(a2b_hex(params['info_hash'])):
+            hash = a2b_hex(params['info_hash'])
             fname = self.allowed[hash]['file']
             fpath = self.allowed[hash]['path']
             return (200, 'OK', {'Content-Type': 'application/x-bittorrent', 'Content-Disposition': 'attachment; filename=' + fname}, open(fpath, 'rb').read())
--- bittorrent-3.4.2.orig/BitTorrent/spewout.py
+++ bittorrent-3.4.2/BitTorrent/spewout.py
@@ -0,0 +1,44 @@
+
+# This file created for Debian because btdownloadcurses can't 
+# find btdownloadheadless because we rename it.
+
+def print_spew(spew):
+    s = StringIO()
+    s.write('\n\n\n')
+    for c in spew:
+        s.write('%20s ' % c['ip'])
+        if c['initiation'] == 'local':
+            s.write('l')
+        else:
+            s.write('r')
+        rate, interested, choked = c['upload']
+        s.write(' %10s ' % str(int(rate)))
+        if c['is_optimistic_unchoke']:
+            s.write('*')
+        else:
+            s.write(' ')
+        if interested:
+            s.write('i')
+        else:
+            s.write(' ')
+        if choked:
+            s.write('c')
+        else:
+            s.write(' ')
+
+        rate, interested, choked, snubbed = c['download']
+        s.write(' %10s ' % str(int(rate)))
+        if interested:
+            s.write('i')
+        else:
+            s.write(' ')
+        if choked:
+            s.write('c')
+        else:
+            s.write(' ')
+        if snubbed:
+            s.write('s')
+        else:
+            s.write(' ')
+        s.write('\n')
+    print s.getvalue()
--- bittorrent-3.4.2.orig/btdownloadgui.py
+++ bittorrent-3.4.2/btdownloadgui.py
@@ -3,14 +3,27 @@
 # Written by Bram Cohen and Myers Carpenter
 # see LICENSE.txt for license information
 
-from sys import argv
+from sys import argv, exit
 from BitTorrent import version
 from BitTorrent.download import download
-from btdownloadheadless import print_spew
+from BitTorrent.spewout import print_spew
 from threading import Event, Thread
 from os.path import join, split, exists
 from os import getcwd
-from wxPython.wx import *
+try:
+   from wxPython.wx import *
+   wxEVT_INVOKE = wxNewEventType()
+except:
+   print 'Could not load wxPython. In order to use this script,'
+   print 'you must have wxPython installed.  It is available in'
+   print 'the package libwxgtk2.4-python.'
+   print
+   print 'I am now going to attempt to run xmessage to alert'
+   print 'GUI users.'
+   from os import system
+   system("xmessage -file /usr/share/bittorrent/nowxmsg")
+   sys.exit(-1)
+
 from time import strftime, time
 from webbrowser import open_new
 from traceback import print_exc
@@ -163,13 +176,13 @@
             if timeEst is not None:
                 self.timeEstText.SetLabel(hours(timeEst))
             if downRate is not None:
-                self.downRateText.SetLabel('%.0f KiB/s' % (float(downRate) / (1 << 10)))
+                self.downRateText.SetLabel('%.0f kB/s' % (float(downRate) / (1 << 10)))
             if upRate is not None:
-                self.upRateText.SetLabel('%.0f KiB/s' % (float(upRate) / (1 << 10)))
+                self.upRateText.SetLabel('%.0f kB/s' % (float(upRate) / (1 << 10)))
             if downTotal is not None:
-                self.downTotalText.SetLabel('%.1f M' % (downTotal))
+                self.downTotalText.SetLabel('%.1f MB' % (downTotal))
             if upTotal is not None:
-                self.upTotalText.SetLabel('%.1f M' % (upTotal))
+                self.upTotalText.SetLabel('%.1f MB' % (upTotal))
             self.last_update_time = time()
         except:
             print_exc()
@@ -266,30 +279,6 @@
 
 def next(params, d, doneflag):
     try:
-        p = join(split(argv[0])[0], 'donated')
-        if not exists(p) and long(time()) % 3 == 0:
-            open_new('http://bitconjurer.org/BitTorrent/donate.html')
-            dlg = wxMessageDialog(d.frame, 'BitTorrent is Donation supported software. ' + 
-                'Please go to the donation page (which should be appearing for you now) and make a donation from there. ' + 
-                'Or you can click no and donate later.\n\nHave you made a donation yet?',
-                'Donate!', wxYES_NO | wxICON_INFORMATION | wxNO_DEFAULT)
-            if dlg.ShowModal() == wxID_YES:
-                dlg.Destroy()
-                dlg = wxMessageDialog(d.frame, 'Thanks for your donation! You will no longer be shown donation requests.\n\n' + 
-                    "If you haven't actually made a donation and are feeling guilty (as you should!) you can always get to " + 
-                    "the donation page by clicking the 'about' link in the upper-right corner of the main BitTorrent window and " + 
-                    'donating from there.', 'Thanks!', wxOK)
-                dlg.ShowModal()
-                dlg.Destroy()
-                try:
-                    open(p, 'wb').close()
-                except IOError, e:
-                    dlg = wxMessageDialog(d.frame, "Sorry, but I couldn't set the flag to not ask you for donations in the future - " + str(e),
-                        'Sorry!', wxOK | wxICON_ERROR)
-                    dlg.ShowModal()
-                    dlg.Destroy()
-            else:
-                dlg.Destroy()
         download(params, d.chooseFile, d.updateStatus, d.finished, d.error, doneflag, 100, d.newpath)
         if not d.fin:
             d.failed()
--- bittorrent-3.4.2.orig/btlaunchmany.py
+++ bittorrent-3.4.2/btlaunchmany.py
@@ -28,7 +28,7 @@
     return '%d:%02d:%02d' % (h, m, s)
 
 def fmtsize(n, baseunit = 0, padded = 1):
-    unit = [' B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
+    unit = [' B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
     i = baseunit
     while i + 1 < len(unit) and n >= 999:
         i += 1
@@ -124,7 +124,9 @@
         totaldown = 0
         totaluptotal = 0.0
         totaldowntotal = 0.0
-        for file, threadinfo in threads.items(): 
+        tdis = threads.items()
+        tdis.sort()
+        for file, threadinfo in tdis: 
             uprate = threadinfo.get('uprate', 0)
             downrate = threadinfo.get('downrate', 0)
             uptxt = fmtsize(uprate, padded = 0)
@@ -140,7 +142,7 @@
                 print '%s: try %d died, retry in %d' % (filename, trys, timeout)
             else:
                 status = threadinfo.get('status','')
-                print '%s: Spd: %s/%s Tot: %s/%s [%s]' % (filename, uptxt, downtxt, uptotaltxt, downtotaltxt, status)
+                print '%s: Spd: %s/s:%s/s Tot: %s:%s [%s]' % (filename, uptxt, downtxt, uptotaltxt, downtotaltxt, status)
             totalup += uprate
             totaldown += downrate
             totaluptotal += uptotal
@@ -150,7 +152,7 @@
         totaldowntxt = fmtsize(totaldown, padded = 0)
         totaluptotaltxt = fmtsize(totaluptotal, baseunit = 2, padded = 0)
         totaldowntotaltxt = fmtsize(totaldowntotal, baseunit = 2, padded = 0)
-        print 'All: Spd: %s/%s Tot: %s/%s' % (totaluptxt, totaldowntxt, totaluptotaltxt, totaldowntotaltxt)
+        print 'All: Spd: %s/s:%s/s Tot: %s:%s' % (totaluptxt, totaldowntxt, totaluptotaltxt, totaldowntotaltxt)
         print
         stdout.flush()
         sleep(interval)
@@ -176,7 +178,7 @@
         self.done = 1
         self.myinfo['done'] = 1
         self.activity = 'complete'
-        self.display({'fractionDone' : 1})
+        self.display({'fractionDone' : 1, 'downRate' : 0})
 
     def err(self, msg): 
         self.myinfo['errors'].append(msg)
@@ -187,20 +189,21 @@
         self.display() 
 
     def choose(self, default, size, saveas, dir):
+        global filecheck
         self.myinfo['downfile'] = default
         self.myinfo['filesize'] = fmtsize(size)
         if saveas == '': 
             saveas = default
         # it asks me where I want to save it before checking the file.. 
-        self.myinfo['savefile'] = self.file[:-len(ext)]
         if exists(self.file[:-len(ext)]) and (getsize(self.file[:-len(ext)]) > 0):
             # file will get checked
             while (not filecheck.acquire(0) and not self.myinfo['kill'].isSet()):
                 self.myinfo['status'] = 'disk wait'
                 sleep(0.1)
             if not self.myinfo['kill'].isSet():
-                self.myinfo['checking'] = 1
                 self.checking = 1
+                self.myinfo['checking'] = 1
+        self.myinfo['savefile'] = self.file[:-len(ext)]
         return self.file[:-len(ext)]
     
     def display(self, dict = {}):
--- bittorrent-3.4.2.orig/btlaunchmanycurses.py
+++ bittorrent-3.4.2/btlaunchmanycurses.py
@@ -29,7 +29,7 @@
     return 'finishing in %d:%02d:%02d' % (h, m, s)
 
 def fmtsize(n, baseunit = 0, padded = 1):
-    unit = [' B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
+    unit = [' B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
     i = baseunit
     while i + 1 < len(unit) and n >= 999:
         i += 1
@@ -142,7 +142,9 @@
         totaldown = 0
         totaluptotal = 0.0
         totaldowntotal = 0.0
-        for file, threadinfo in threads.items(): 
+        tdis = threads.items()
+        tdis.sort()
+        for file, threadinfo in tdis: 
             uprate = threadinfo.get('uprate', 0)
             downrate = threadinfo.get('downrate', 0)
             uptxt = '%s/s' % fmtsize(uprate)
--- bittorrent-3.4.2.orig/btreannounce.py
+++ bittorrent-3.4.2/btreannounce.py
@@ -1,11 +1,11 @@
 #!/usr/bin/env python
-
+
 # Written by Henry 'Pi' James and Bram Cohen
 # see LICENSE.txt for license information
-
+
 from sys import argv
 from BitTorrent.bencode import bencode, bdecode
-
+
 if len(argv) < 3:
     print '%s http://new.uri:port/announce file1.torrent file2.torrent' % argv[0]
     print
--- bittorrent-3.4.2.orig/btrename.py
+++ bittorrent-3.4.2/btrename.py
@@ -1,33 +1,33 @@
 #!/usr/bin/env python
-
-# Written by Henry 'Pi' James
-# see LICENSE.txt for license information
-
-from sys import *
-from os.path import *
-from sha import *
-from BitTorrent.bencode import *
-
-NAME, EXT = splitext(basename(argv[0]))
-VERSION = '20021119'
-
-print '%s %s - change the suggested filename in a .torrent file' % (NAME, VERSION)
-print
-
-if len(argv) != 3:
-  print '%s file.torrent new.filename.ext' % argv[0]
-  print
-  exit(2) # common exit code for syntax error
-
-metainfo_file = open(argv[1], 'rb')
-metainfo = bdecode(metainfo_file.read())
-metainfo_file.close()
-print 'old filename: %s' % metainfo['info']['name']
-metainfo['info']['name'] = argv[2]
-print 'new filename: %s' % metainfo['info']['name']
-metainfo_file = open(argv[1], 'wb')
-metainfo_file.write(bencode(metainfo))
-metainfo_file.close
-print
-print 'done.'
-print
+
+# Written by Henry 'Pi' James
+# see LICENSE.txt for license information
+
+from sys import *
+from os.path import *
+from sha import *
+from BitTorrent.bencode import *
+
+NAME, EXT = splitext(basename(argv[0]))
+VERSION = '20021119'
+
+print '%s %s - change the suggested filename in a .torrent file' % (NAME, VERSION)
+print
+
+if len(argv) != 3:
+  print '%s file.torrent new.filename.ext' % argv[0]
+  print
+  exit(2) # common exit code for syntax error
+
+metainfo_file = open(argv[1], 'rb')
+metainfo = bdecode(metainfo_file.read())
+metainfo_file.close()
+print 'old filename: %s' % metainfo['info']['name']
+metainfo['info']['name'] = argv[2]
+print 'new filename: %s' % metainfo['info']['name']
+metainfo_file = open(argv[1], 'wb')
+metainfo_file.write(bencode(metainfo))
+metainfo_file.close
+print
+print 'done.'
+print
--- bittorrent-3.4.2.orig/setup.py
+++ bittorrent-3.4.2/setup.py
@@ -18,9 +18,8 @@
     
     packages = ["BitTorrent"],
 
-    scripts = ["btdownloadgui.py", "btdownloadheadless.py", "btdownloadlibrary.py", 
-        "bttrack.py", "btmakemetafile.py", "btlaunchmany.py", "btcompletedir.py",
-        "btdownloadcurses.py", "btcompletedirgui.py", "btlaunchmanycurses.py", 
-        "btmakemetafile.py", "btreannounce.py", "btrename.py", "btshowmetainfo.py",
-        "bttest.py"]
+    scripts = ["btdownloadgui.py", "btdownloadheadless.py", 
+        "bttrack.py", "btmakemetafile.py", "btlaunchmany.py",
+        "btdownloadcurses.py", "btlaunchmanycurses.py", 
+        "btmakemetafile.py", "btreannounce.py", "btrename.py", "btshowmetainfo.py", "btcompletedir.py", "btcompletedirgui.py"]
     )
--- bittorrent-3.4.2.orig/debian/changelog
+++ bittorrent-3.4.2/debian/changelog
@@ -0,0 +1,193 @@
+bittorrent (3.4.2-3) unstable; urgency=low
+
+  * Split bittorrent package into bittorrent and bittorrent-gui
+    to be compliant with Policy 11.8.1. closes: #180396
+    + Falling back to btdownloadcurses from btdownloadgui
+      is pointless if it isn't installed. closes: #219466
+    + This also solves the problem with the obsolete
+      message, it doesn't exist anymore. closes: #278583
+  * Use the alternatives system so that we can all get along,
+    and be installed together in harmony. closes: #263003
+  * Apply patch so that --allow_get uses hex for it's URLs
+    instead of raw SHA-1 binary hashes. closes: #275637
+  * Fix typo in btlaunchmany. closes: #262974
+  * Fix problem with guide.html. closes: #265506
+
+ -- Michael Janssen <jamuraa@debian.org>  Sun,  7 Nov 2004 00:16:07 -0600
+
+bittorrent (3.4.2-2) unstable; urgency=low
+
+  * Changed KiB/s and KB/s to kB/s, changed / to : in btlaunchmany,
+    added "/s" to transfer rates.  closes: #247236
+  * Sort display of files on btlaunchmany, btlaunchmanycurses to be
+    sorted by torrent file name. closes: #247237
+  * Set download rate to 0 when complete with file (btlaunchmany).
+    closes: #247239
+  * Add TOS setting code to outgoing as well as incomign connections. 
+    closes: #253499
+
+ -- Michael Janssen <jamuraa@debian.org>  Fri, 16 Jul 2004 09:57:43 -0500
+
+bittorrent (3.4.2-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Michael Janssen <jamuraa@debian.org>  Mon,  5 Apr 2004 01:23:54 -0500
+
+bittorrent (3.4.1a-1) unstable; urgency=low
+
+  * The "not enough time in the day" release.
+  * New upstream release. closes: #236740
+    + Tracker problems don't popup error messages if the transfer
+      is still working anymore. closes: #217572
+  * Use dh_python to get python deps and postinst handled, yay!
+    closes: #215119
+  * Remove empty usr/sbin directory from the package. closes: #219382
+  * Fix btreannounce manpage. closes: #228116
+  * Add some html documentation to the package. (thanks Javier) 
+    closes: #219038
+
+ -- Michael Janssen <jamuraa@debian.org>  Fri, 26 Mar 2004 15:01:00 -0600
+
+bittorrent (3.3-4) unstable; urgency=low
+
+  * Made btdownloadgui exit cleanly when we can't find wxpython.
+  * Remove some useless code that got included from backport patches
+    when the 3.2.1 -> 3.3 switch happened.
+
+ -- Michael Janssen <jamuraa@debian.org>  Fri, 26 Mar 2004 13:36:40 -0600
+
+bittorrent (3.3-3) unstable; urgency=low
+
+  * Removed annoying and unreliable, non-policy compliant donation
+    asking code. closes: #215983, #212940
+  * Re-add warning code for people who don't have wxpython. 
+  * Fix manpage because btdownloadprefetched doesn't exist anymore. 
+    closes: #213388
+
+ -- Michael Janssen <jamuraa@debian.org>  Wed, 15 Oct 2003 21:13:47 -0500
+
+bittorrent (3.3-2) unstable; urgency=low
+
+  * The "test before you upload" release. 
+  * Fixed problem with btdownloadgui because of executable renaming.
+    closes: #212662
+
+ -- Michael Janssen <jamuraa@debian.org>  Wed, 24 Sep 2003 23:05:02 -0500
+
+bittorrent (3.3-1) unstable; urgency=low
+
+  * New upstream release
+    + Files/URLs accepted on command line now. closes: #200267
+    + New allocation method. closes: #193455
+    + Major curses updates. closes: #212172
+  * Fixed typo in bittorrent-downloader page. closes: #211377
+
+ -- Michael Janssen <jamuraa@debian.org>  Wed, 24 Sep 2003 21:51:19 -0500
+
+bittorrent (3.2.1b-5) unstable; urgency=low
+
+  * The "DOH!" release.
+  * Fix syntax error in btlaunchmanycurses. closes: #206135
+
+ -- Michael Janssen <jamuraa@base0.net>  Mon, 18 Aug 2003 22:07:27 -0500
+
+bittorrent (3.2.1b-4) unstable; urgency=low
+
+  * The "why oh why am I not following CVS" release.
+  * Import the system function before we use it. closes: #196305
+  * Release the lock if a thread dies while checking the file(s).
+    closes: #196397
+  * Call WINCH handler when an error happens in btlaunchmanycurses,
+    so that the screen doesn't get as garbled. closes: #200559
+  * Add ^L parsing to btdownloadcurses so that people can get rid of
+    annoying urllib bugs. closes: #200648, #195605
+  * Repackage against new python. closes: #205850
+  * Change error time displayed by btdownloadcurses to use the appropriate
+    locale's representation. closes: #196395
+
+ -- Michael Janssen <jamuraa@base0.net>  Sun, 17 Aug 2003 19:23:33 -0500
+
+bittorrent (3.2.1b-3) unstable; urgency=low
+
+  * The "summer is finally here" release.
+  * Change btdownloadcurses to display only as many errors that can fit
+    on the screen. closes: #189371
+  * Remove .py manpages I forgot about last time. closes: #191801
+  * Fix mailcap so it doesn't point to a nonexistent script.
+    closes: #193502
+  * Change the non-X11 entry to start the curses version
+  * Make files get closed cleanly. closes: #193624
+  * Change the mass downloaders so they only check one torrent at a time
+    so we don't step on each other for disk accesses. closes: #193302
+  
+ -- Michael Janssen <jamuraa@base0.net>  Thu, 22 May 2003 18:19:08 -0500
+
+bittorrent (3.2.1b-2) unstable; urgency=low
+
+  * The "didn't I do this once already?" release.
+  * Change shebang line to use python2.2 (again). 
+    closes: #190089, #190150
+  * Rename scripts without .py and removed links. closes: #189304
+  * Change recommends to libwxgtk2.4-python. closes: #189570
+  * Fixed mailcap. closes: #189015, #188691
+
+ -- Michael Janssen <jamuraa@base0.net>  Tue, 22 Apr 2003 08:51:37 -0500
+
+bittorrent (3.2.1b-1) unstable; urgency=low
+
+  * New Upstream Release. closes: #187054
+  * Wrote manpages for bittorrent-multi-downloader, btrename,
+    btreannounce, btshowmetainfo
+
+ -- Michael Janssen <jamuraa@base0.net>  Fri, 11 Apr 2003 00:23:27 -0500
+
+bittorrent (3.1-5) unstable; urgency=low
+
+  * Change '/usr/bin/env python' to '/usr/bin/env python2.2' since
+    we depend on python > 2.2 | python2.2, and python2.2 doesn't
+    have 'python' in it.
+  * Call python2.2 in postinst as well. closes: #185852
+
+ -- Michael Janssen <jamuraa@base0.net>  Sun, 23 Mar 2003 00:13:48 -0600
+
+bittorrent (3.1-4) unstable; urgency=low
+
+  * Add optional depend on python2.2 so we can get into testing.
+  * Add options --max_upload_rate, --check_hashes, --alloc_pause, and
+    --snub_time to bittorrent-downloaders.1. closes: #182634
+  * Make btdownloadcurses die nicely and display the list of
+    arguments like btdownloadheadless does. closes: #183289
+  * Change the filename in FAQ.txt to a unix-like filename.
+    closes: #179159
+  * Update to Standards-Version 3.5.9.
+  * Update to debhelper 4, change depends line appropriately.
+  * Install btlaunchmany.py too.
+
+ -- Michael Janssen <jamuraa@base0.net>  Mon, 17 Mar 2003 02:03:32 -0600
+
+bittorrent (3.1-3) unstable; urgency=low
+
+  * Added python-dev to build-depends. closes: #179035
+  * Changed wxGtk test to fail instead of pass when
+    libwxgtk2.2-python is installed, which bittorrent doesn't work
+    with. closes: #179047
+  * Changed wxGtk failure message to note that libwxgtk2.2-python is
+    insufficient.
+
+ -- Michael Janssen <jamuraa@base0.net>  Thu, 30 Jan 2003 10:46:29 -0600
+
+bittorrent (3.1-2) unstable; urgency=low
+
+  * Don't ship .pyc.  Compile .pyc and .pyo when installed.
+  * libwxgtk2.3-python isn't in testing, tell people this.
+  * Added mime-support to Suggests.
+
+ -- Michael Janssen <jamuraa@base0.net>  Fri, 24 Jan 2003 20:56:08 -0600
+
+bittorrent (3.1-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Michael Janssen <jamuraa@debian.org>  Sat, 18 Jan 2003 02:23:11 -0600
+
--- bittorrent-3.4.2.orig/debian/bittorrent.links
+++ bittorrent-3.4.2/debian/bittorrent.links
@@ -0,0 +1,4 @@
+usr/share/man/man1/bittorrent-downloader.bittorrent.1.gz usr/share/man/man1/btdownloadcurses.bittorrent.1.gz
+usr/share/man/man1/bittorrent-downloader.bittorrent.1.gz usr/share/man/man1/btdownloadheadless.bittorrent.1.gz
+usr/share/man/man1/bittorrent-multi-downloader.bittorrent.1.gz usr/share/man/man1/btlaunchmany.bittorrent.1.gz 
+usr/share/man/man1/bittorrent-multi-downloader.bittorrent.1.gz usr/share/man/man1/btlaunchmanycurses.bittorrent.1.gz 
--- bittorrent-3.4.2.orig/debian/rules
+++ bittorrent-3.4.2/debian/rules
@@ -0,0 +1,94 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+configure: configure-stamp
+configure-stamp:
+	dh_testdir
+	# Add here commands to configure the package.
+
+	touch configure-stamp
+
+
+build: build-stamp fix-doc
+
+build-stamp: configure-stamp 
+	dh_testdir
+
+	# Add here commands to compile the package.
+	#$(MAKE)
+	#/usr/bin/docbook-to-man debian/bittorrent.sgml > bittorrent.1
+
+	touch build-stamp
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+
+	# Add here commands to clean up after the build process.
+	#-$(MAKE) clean
+	rm -rf build/ BitTorrent/*.pyc *.pyc
+	rm -rf www-doc/bittorrent_logo.png
+
+	dh_clean
+
+update-doc:
+	if [ ! -d www-doc ] ; then mkdir www-doc ; fi
+	cd www-doc && /usr/bin/wget --proxy=off -L -nd -A html,png,gif -k --no-parent -q -m -r -l 1 http://bitconjurer.org/BitTorrent/documentation.html 
+	find www-doc -type f -a \( -name "*.gif" -o -name "*.png" \) | \
+	while read file ; do cat www-doc/`basename $$file` | uuencode `basename $$file` > www-doc/`basename $$file`.uu ; done
+	-rm -f www-doc/robots.txt www-doc/*.{gif,png}
+
+clean-doc:
+	-rm -f www-doc/*
+
+fix-doc:
+# We do this in order to prevent dpkg-source from breaking
+	cd www-doc/ && for i in *.uu; do uudecode $$i; done
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+
+	# Add here commands to install the package into debian/bittorrent.
+	./setup.py install --prefix=$(CURDIR)/debian/tmp/usr
+
+
+# Build architecture-independent files here.
+binary-arch: build install
+# We have nothing to do by default.
+	
+
+# Build architecture-dependent files here.
+binary-indep: build install
+	dh_testdir
+	dh_testroot
+	dh_installdocs
+	dh_installexamples
+	dh_installmenu
+	dh_installmime
+	dh_installman
+	# .bittorrent for alternatives
+	( cd debian/tmp/usr/bin && \
+	  for i in btdownloadgui btdownloadheadless bttrack btmakemetafile btlaunchmany btdownloadcurses btlaunchmanycurses btreannounce btrename btshowmetainfo btcompletedir btcompletedirgui; \
+	  do mv $$i.py $$i.bittorrent; done )
+	rm debian/tmp/usr/lib/python2.3/site-packages/BitTorrent/*.pyc
+	dh_installchangelogs 
+	dh_install --sourcedir=debian/tmp
+	dh_link
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_python
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
--- bittorrent-3.4.2.orig/debian/compat
+++ bittorrent-3.4.2/debian/compat
@@ -0,0 +1 @@
+4
--- bittorrent-3.4.2.orig/debian/btreannounce.bittorrent.1
+++ bittorrent-3.4.2/debian/btreannounce.bittorrent.1
@@ -0,0 +1,43 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH "BTREANNOUNCE" 1 "Jan 18 2003"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+btreannounce \- change the announce address of a torrent file.
+.SH SYNOPSIS
+\fBbtreannounce\fP \fIurl\fP \fItorrent\fP [ \fItorrent\fP ... ]
+.SH DESCRIPTION
+This manual page documents briefly the \fBbtreannounce\fP
+command.
+This manual page was written for the Debian distribution
+because the original program does not have a manual page.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+\fBbtreannounce\fP is a program which will change the announce 
+address of one or more existing torrent files.  
+The torrent files will be modified to use the new 
+announce url given by the \fIurl\fP argument.
+
+.SH SEE ALSO
+.BR bittorrent-downloader (1),
+.BR btmakemetafile (1),
+.BR btrename (1).
+.br
+.SH AUTHOR
+This manual page was written by Michael Janssen <jamuraa@debian.org>,
+for the Debian GNU/Linux system (but may be used by others).
--- bittorrent-3.4.2.orig/debian/control
+++ bittorrent-3.4.2/debian/control
@@ -0,0 +1,44 @@
+Source: bittorrent
+Section: net
+Priority: optional
+Maintainer: Michael Janssen <jamuraa@debian.org>
+Build-Depends-Indep: debhelper (>> 4.0.0), python, python-dev, sharutils
+Standards-Version: 3.6.1
+
+Package: bittorrent
+Architecture: all
+Depends: ${python:Depends}
+Suggests: bittorrent-gui
+Recommends: mime-support
+Description: Scatter-gather network file transfer
+ BitTorrent is a tool for distributing files. It's extremely   
+ easy to use - downloads are started by clicking on hyperlinks.
+ Whenever more than one person is downloading at once
+ they send pieces of the file(s) to each other, thus relieving
+ the central server's bandwidth burden. Even with many
+ simultaneous downloads, the upload burden on the central server
+ remains quite small, since each new downloader introduces new
+ upload capacity.
+ .
+ This package contains the tools which are used for console-only 
+ downloading.  If you want the GUI interface, install the 
+ bittorrent-gui package.
+ .
+  Homepage: http://bitconjurer.org/BitTorrent/
+
+Package: bittorrent-gui
+Architecture: all
+Depends: ${python:Depends}, bittorrent (>= 3.4.2-1), libwxgtk2.4-python
+Description: Scatter-gather network file transfer (GUI files)
+ BitTorrent is a tool for distributing files. It's extremely   
+ easy to use - downloads are started by clicking on hyperlinks.
+ Whenever more than one person is downloading at once
+ they send pieces of the file(s) to each other, thus relieving
+ the central server's bandwidth burden. Even with many
+ simultaneous downloads, the upload burden on the central server
+ remains quite small, since each new downloader introduces new
+ upload capacity.
+ .
+ This package contains the GUI interface to downloading.
+ .
+  Homepage: http://bitconjurer.org/BitTorrent/
--- bittorrent-3.4.2.orig/debian/dirs
+++ bittorrent-3.4.2/debian/dirs
@@ -0,0 +1,2 @@
+usr/bin
+usr/share/bittorrent
--- bittorrent-3.4.2.orig/debian/bittorrent-gui.postinst
+++ bittorrent-3.4.2/debian/bittorrent-gui.postinst
@@ -0,0 +1,63 @@
+#! /bin/sh
+# postinst script for bittorrent
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+#
+# quoting from the policy:
+#     Any necessary prompting should almost always be confined to the
+#     post-installation script, and should be protected with a conditional
+#     so that unnecessary prompting doesn't happen if a package's
+#     installation fails and the `postinst' is called with `abort-upgrade',
+#     `abort-remove' or `abort-deconfigure'.
+
+case "$1" in
+    configure) 
+      # Run mimetypes to add mimetypes
+      if [ -e /etc/init.d/mimetypes ]; then
+        /etc/init.d/mimetypes
+      fi
+
+      for i in btcompletedirgui btdownloadgui ; do 
+        update-alternatives \
+        --install /usr/bin/$i $i /usr/bin/$i.bittorrent 110 \
+        --slave /usr/share/man/man1/$i.1.gz $i.1.gz /usr/share/man/man1/$i.bittorrent.1.gz
+      done
+    
+    ;; 
+    
+    abort-upgrade|abort-remove|abort-deconfigure)
+      for i in btcompletedirgui btdownloadgui ; do
+        update-alternatives \
+        --install /usr/bin/$i $i /usr/bin/$i.bittornado 110 \
+        --slave /usr/share/man/man1/$i.1.gz $i.1.gz /usr/share/man/man1/$i.bittorrent.1.gz
+      done
+                                                                  
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- bittorrent-3.4.2.orig/debian/bittorrent.postinst
+++ bittorrent-3.4.2/debian/bittorrent.postinst
@@ -0,0 +1,63 @@
+#! /bin/sh
+# postinst script for bittorrent
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+#
+# quoting from the policy:
+#     Any necessary prompting should almost always be confined to the
+#     post-installation script, and should be protected with a conditional
+#     so that unnecessary prompting doesn't happen if a package's
+#     installation fails and the `postinst' is called with `abort-upgrade',
+#     `abort-remove' or `abort-deconfigure'.
+
+case "$1" in
+    configure)
+      # Run the mimetypes program to add mimetypes into Netscape.
+      if [ -e /etc/init.d/mimetypes ]; then
+        /etc/init.d/mimetypes
+      fi
+
+      for i in btcompletedir btdownloadcurses btdownloadheadless btlaunchmany btlaunchmanycurses btmakemetafile btreannounce btrename btshowmetainfo bttrack ; do
+        update-alternatives \
+        --install /usr/bin/$i $i /usr/bin/$i.bittorrent 110 \
+        --slave /usr/share/man/man1/$i.1.gz $i.1.gz /usr/share/man/man1/$i.bittorrent.1.gz
+      done
+   
+    ;;
+    
+    abort-upgrade|abort-remove|abort-deconfigure)
+      for i in btcompletedir btdownloadcurses btdownloadheadless btlaunchmany btlaunchmanycurses btmakemetafile btreannounce btrename btshowmetainfo bttrack ; do
+        update-alternatives \
+        --install /usr/bin/$i $i /usr/bin/$i.bittorrent 110 \
+        --slave /usr/share/man/man1/$i.1.gz $i.1.gz /usr/share/man/man1/$i.bittorrent.1.gz
+      done
+
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- bittorrent-3.4.2.orig/debian/bittorrent.mime
+++ bittorrent-3.4.2/debian/bittorrent.mime
@@ -0,0 +1 @@
+application/x-bittorrent; /usr/bin/btdownloadcurses --responsefile %s; test=test -z "$DISPLAY"; needsterminal
--- bittorrent-3.4.2.orig/debian/btmakemetafile.bittorrent.1
+++ bittorrent-3.4.2/debian/btmakemetafile.bittorrent.1
@@ -0,0 +1,52 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH "BTMAKEMETAFILE" 1 "Jan 18 2003"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+btmakemetafile \- program to generate torrent info files for bittorrent
+.SH SYNOPSIS
+.B btmakemetafile \fIfile\fP \fItracker_announce_address\fP [ option ... ] 
+.SH DESCRIPTION
+This manual page documents briefly the \fBbtmakemetafile\fP
+command.
+This manual page was written for the Debian distribution
+because the original program does not have a manual page.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+\fBbtmakemetafile\fP is a program that generates the torrent info files
+which are distributed to bittorrent clients (usually via the WWW) in order
+to inform them where the designated tracker for the torrent is located, and 
+to allow them to verify the file's contents.
+.PP
+\fBbtmakemetafile\fP takes two arguments.  Both are required.  The first
+is the file that the torrent info file will be generated for.  The second is 
+the "announce" address of a tracker (ex. http://127.0.0.1:6969/announce).
+.SH OPTIONS
+.TP
+.B \-\-piece_size_pow2 \fIarg\fP
+which power of 2 to set the piece size to (default: 18)
+
+.SH SEE ALSO
+.BR bittorrent-downloader (1),
+.BR btrename (1),
+.BR btreannounce (1),
+.BR bttrack (1).
+.br
+.SH AUTHOR
+This manual page was written by Michael Janssen <jamuraa@debian.org>,
+for the Debian GNU/Linux system (but may be used by others).
--- bittorrent-3.4.2.orig/debian/bittorrent-gui.links
+++ bittorrent-3.4.2/debian/bittorrent-gui.links
@@ -0,0 +1 @@
+usr/share/man/man1/bittorrent-downloader.bittorrent.1.gz usr/share/man/man1/btdownloadgui.bittorrent.1.gz 
--- bittorrent-3.4.2.orig/debian/postinst
+++ bittorrent-3.4.2/debian/postinst
@@ -0,0 +1,44 @@
+#! /bin/sh
+# postinst script for bittorrent
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+#
+# quoting from the policy:
+#     Any necessary prompting should almost always be confined to the
+#     post-installation script, and should be protected with a conditional
+#     so that unnecessary prompting doesn't happen if a package's
+#     installation fails and the `postinst' is called with `abort-upgrade',
+#     `abort-remove' or `abort-deconfigure'.
+
+case "$1" in
+    configure|abort-upgrade|abort-remove|abort-deconfigure)
+
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- bittorrent-3.4.2.orig/debian/bittorrent.docs
+++ bittorrent-3.4.2/debian/bittorrent.docs
@@ -0,0 +1,3 @@
+README.txt
+credits.txt
+www-doc/*.{html,png,gif}
--- bittorrent-3.4.2.orig/debian/postrm
+++ bittorrent-3.4.2/debian/postrm
@@ -0,0 +1,38 @@
+#! /bin/sh
+# postrm script for bittorrent
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+       purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+
+
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
--- bittorrent-3.4.2.orig/debian/bittorrent-gui.mime
+++ bittorrent-3.4.2/debian/bittorrent-gui.mime
@@ -0,0 +1 @@
+application/x-bittorrent; /usr/bin/btdownloadgui --responsefile %s; test=test -n "$DISPLAY"
--- bittorrent-3.4.2.orig/debian/bittorrent-multi-downloader.bittorrent.1
+++ bittorrent-3.4.2/debian/bittorrent-multi-downloader.bittorrent.1
@@ -0,0 +1,31 @@
+.TH "BITTORRENT-MULTI-DOWNLOADER" 1 "Jan 18 2003"
+.SH NAME
+bittorrent-multi-downloader \- multiple file clients for bittorrent
+.SH SYNOPSIS
+.nf
+.B btlaunchmany \fIdirname\fP [ option ... ]
+.B btlaunchmanycurses \fIdirname\fP [ option ... ]
+.fi
+.SH DESCRIPTION
+This manual page documents briefly the \fBbtlaunchmany\fP and 
+\fBbtlaunchmanycurses\fP commands.
+This manual page was written for the Debian distribution
+because the original program does not have a manual page.
+.PP
+\fBbtlaunchmany\fP is a program that eases the use of 
+bittorrent in multiple-downloader situations.  The program checks
+a directory for torrent files.  When it finds any, it starts a 
+separate downloader thread for each file.
+.SH OPTIONS
+
+These programs have the exact same options as the normal 
+downloaders, which are documented in \fBbittorrent-downloader\fP(1).
+
+.SH SEE ALSO
+.BR bittorrent-downloader (1),
+.BR btmakemetafile (1),
+.BR bttrack (1).
+.br
+.SH AUTHOR
+This manual page was written by Michael Janssen <jamuraa@debian.org>,
+for the Debian GNU/Linux system (but may be used by others).
--- bittorrent-3.4.2.orig/debian/bittorrent.install
+++ bittorrent-3.4.2/debian/bittorrent.install
@@ -0,0 +1,11 @@
+usr/bin/btcompletedir.bittorrent
+usr/bin/btdownloadcurses.bittorrent
+usr/bin/btdownloadheadless.bittorrent
+usr/bin/btlaunchmany.bittorrent
+usr/bin/btlaunchmanycurses.bittorrent
+usr/bin/btmakemetafile.bittorrent
+usr/bin/btreannounce.bittorrent
+usr/bin/btrename.bittorrent
+usr/bin/btshowmetainfo.bittorrent
+usr/bin/bttrack.bittorrent
+usr/lib
--- bittorrent-3.4.2.orig/debian/bittorrent.manpages
+++ bittorrent-3.4.2/debian/bittorrent.manpages
@@ -0,0 +1,7 @@
+debian/bittorrent-downloader.bittorrent.1
+debian/bttrack.bittorrent.1
+debian/btmakemetafile.bittorrent.1
+debian/bittorrent-multi-downloader.bittorrent.1
+debian/btreannounce.bittorrent.1
+debian/btrename.bittorrent.1
+debian/btshowmetainfo.bittorrent.1
--- bittorrent-3.4.2.orig/debian/btrename.bittorrent.1
+++ bittorrent-3.4.2/debian/btrename.bittorrent.1
@@ -0,0 +1,44 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH "BTRENAME" 1 "Jan 18 2003"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+btrename \- change the suggested filename inside a bittorrent file
+.SH SYNOPSIS
+\fBbttrack\fP \fItorrent\fP \fInewfilename\fP
+.SH DESCRIPTION
+This manual page documents briefly the \fBbtrename\fP
+command.
+This manual page was written for the Debian distribution
+because the original program does not have a manual page.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+\fBbtrename\fP is a program which will change the suggested 
+filename presented to the user for a bittorrent file. This 
+will make the downloader save it as a different name by default.
+The torrent specified by the \fItorrent\fP option is modified 
+in-place, changing the suggested filename to \fInewfilename\fP.
+
+.SH SEE ALSO
+.BR bittorrent-downloader (1),
+.BR btmakemetafile (1),
+.BR btreannounce (1).
+.br
+.SH AUTHOR
+This manual page was written by Michael Janssen <jamuraa@debian.org>,
+for the Debian GNU/Linux system (but may be used by others).
--- bittorrent-3.4.2.orig/debian/copyright
+++ bittorrent-3.4.2/debian/copyright
@@ -0,0 +1,33 @@
+This package was debianized by Michael Janssen <jamuraa@debian.org> on
+Sat, 18 Jan 2003 02:23:11 -0600.
+
+It was downloaded from http://bitconjurer.org/BitTorrent/
+
+Upstream Author: Bram Cohen <bram@bitconjurer.org>
+
+Copyright:
+
+Unless otherwise noted, all files are released under the MIT
+license, exceptions contain licensing information in them.
+
+Copyright (C) 2001-2002 Bram Cohen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation files
+(the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+The Software is provided "AS IS", without warranty of any kind,
+express or implied, including but not limited to the warranties of
+merchantability,  fitness for a particular purpose and
+noninfringement. In no event shall the  authors or copyright holders
+be liable for any claim, damages or other liability, whether in an
+action of contract, tort or otherwise, arising from, out of or in
+connection with the Software or the use or other dealings in the
+Software.
--- bittorrent-3.4.2.orig/debian/bittorrent-downloader.bittorrent.1
+++ bittorrent-3.4.2/debian/bittorrent-downloader.bittorrent.1
@@ -0,0 +1,136 @@
+.TH "BITTORRENT-DOWNLOADER" 1 "Sep 24 2003"
+.SH NAME
+bittorrent-downloader \- download files using a scatter-gather network
+.SH SYNOPSIS
+.nf
+.B btdownloadheadless [ option ... ] \fIURL\fB
+.B btdownloadheadless [ option ... ] \fIfilename\fB
+.B btdownloadcurses   [ option ... ] \fIURL\fB
+.B btdownloadcurses   [ option ... ] \fIfilename\fB
+.B btdownloadgui      [ option ... ] \fIURL\fB
+.B btdownloadgui      [ option ... ] \fIfilename\fB
+.fi
+.br
+.B 
+.SH DESCRIPTION
+This manual page documents briefly the \fBbtdownloadheadless\fP,
+\fBbtdownloadcurses\fP, and \fBbtdownloadgui\fP commands.
+This manual page was written for the Debian distribution
+because the original program does not have a manual page.
+.PP
+These are all programs that allow a user to download files using
+bittorrent, a peer to peer, scatter-gather network protocol.
+They all have the same options.
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+.TP
+.B \-\-responsefile \fIfilename\fP
+treat \fIfilename\fP as a file which the server reponse was stored in. If this
+option is used, no filename or URL should be present on the command line.
+.TP
+.B \-\-url \fIurl\fP
+retrieve the torrent info file from \fIurl\fP.  If this option is used, no
+filename or URL should be present on the command line.
+.TP
+.B \-i \fIip\fP | \-\-ip \fIip\fP
+report \fIip\fP as your IP to the tracker
+.TP
+.B \-\-bind \fIip\fP
+bind to \fIip\fP instead of the default
+.TP
+.B \-\-minport \fIportnum\fP
+set \fIportnum\fP as the minimum port to listen on, counts up if unavailable (default 6881)
+.TP
+.B \-\-maxport \fIportnum\fP
+set \fIportnum\fP as the maximum port to listen on (default 6889)
+.TP
+.B \-\-saveas \fIfilename\fP
+store the downloaded file to \fIfilename\fP, instead of querying user (gui) or 
+using the filename stored in the torrent info file
+.TP
+.B \-\-max_uploads \fInum\fP
+Only allow \fInum\fP uploads at once (default 4)
+.TP 
+.B \-\-max_upload_rate \fIkbytes\fP
+maximum rate to upload at in kilobytes, 0 means no limit (default 0)
+.TP
+.B \-\-keepalive_interval \fIsecs\fP
+pause \fIsecs\fP seconds between sending keepalives (default 120.0)
+.TP
+.B \-\-download_slice_size \fIbytes\fP
+query for \fIbytes\fP bytes per request (default 32768)
+.TP
+.B \-\-request_backlog \fInum\fP
+keep \fInum\fP requests in a single pipe at once (default 5)
+.TP
+.B \-\-max_message_length \fIbytes\fP
+set \fIbytes\fP to the maximum length prefix encoding you'll accept over the wire - larger values get the connection dropped (default 8388608)
+.TP
+.B \-\-timeout \fIsecs\fP
+wait \fIsecs\fP before closing sockets which nothing has been recieved on (default 300.0)
+.TP
+.B \-\-timeout_check_interval \fIsecs\fP
+check whether connections have timed out every \fIsecs\fP seconds (default 60.0)
+.TP
+.B \-\-max_slice_length \fIbytes\fP
+requests from peers larger than \fIbytes\fP bytes are ignored (default 131072)
+.TP
+.B \-\-max_rate_recalculate_interval \fIsecs\fP
+connections that pause longer than \fIsecs\fP seconds are given reduced rate (default 15.0)
+.TP
+.B \-\-max_rate_period \fIsecs\fP
+set \fIsecs\fP to the maximum amount of time to guess the current rate estimate represents (default 20.0)
+.TP
+.B \-\-upload_rate_fudge \fIsecs\fP
+set the time equivalent of writing to kernel-level TCP buffer to \fIsecs\fP (default 5.0)
+.TP
+.B \-\-display_interval \fIsecs\fP
+update displayed information every \fIsecs\fP seconds (default 0.1)
+.TP
+.B \-\-rerequest_interval \fIsecs\fP
+request more peers every \fIsecs\fP seconds (default 300)
+.TP
+.B \-\-min_peers \fInum\fP
+do not rerequest if we have \fInum\fP peers already (default 20)
+.TP
+.B \-\-http_timeout \fIsecs\fP
+wait \fIsecs\fP seconds before assuming a http connection has timed out (default 60)
+.TP
+.B \-\-snub_time \fIsecs\fP
+wait \fIsecs\fP seconds for data to come in over a connection before assuming it's semi-permanently choked (default 30.0)
+.TP
+.B \-\-spew \fI 1 | 0 \fP
+whether to display diagnostic info to stdout.  This option is not useful when
+using btdownloadcurses or btdownloadgui. (default 0)
+.B \-\-max_initiate \fInum\fP
+stop initiating new connections when we have \fInum\fP peers (default 40)
+.TP
+.B \-\-check_hashes \fI 1 | 0 \fP
+whether to check hashes on disk (defaults to 1)
+.TP
+.B \-\-report_hash_failures \fI 1 | 0 \fP
+whether to report to the user that hash failuers occur (non-fatal, common error) (default 0)
+.TP 
+.B \-\-rarest_first_priority_cutoff \fInum\fP
+the number of peers which need to have a piece before other partials take
+priority over rarest first (default 3)
+
+.SH SEE ALSO
+.BR bttrack (1),
+.BR btmakemetafile (1),
+.BR btlaunchmany (1).
+
+More information on the \fBBitTorrent\fR protocol used for distributing files is available
+at
+.B http://bitconjurer.org/BitTorrent/protocol.html
+
+You will also find a full description on the advantages of the protocol in the academic paper
+.B "Incentives Build Robustness in BitTorrent"
+available at
+.B http://bitconjurer.org/BitTorrent/bittorrentecon.pdf
+.br
+.SH AUTHOR
+This manual page was written by Michael Janssen <jamuraa@debian.org>,
+for the Debian GNU/Linux system (but may be used by others).
--- bittorrent-3.4.2.orig/debian/btshowmetainfo.bittorrent.1
+++ bittorrent-3.4.2/debian/btshowmetainfo.bittorrent.1
@@ -0,0 +1,40 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH "BTSHOWMETAINFO" 1 "Jan 18 2003"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+btshowmetainfo \- display information in bittorrent files
+.SH SYNOPSIS
+\fBbtshowmetainfo\fP \fIfile\fP [ file ... ] 
+.SH DESCRIPTION
+This manual page documents briefly the \fBbtshowmetainfo\fP
+command.
+This manual page was written for the Debian distribution
+because the original program does not have a manual page.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+\fBbtshowmetainfo\fP is a program which will display the information
+stored in a bittorrent file. 
+
+.SH SEE ALSO
+.BR bittorrent-downloader (1),
+.BR btmakemetafile (1).
+.br
+.SH AUTHOR
+This manual page was written by Michael Janssen <jamuraa@debian.org>,
+for the Debian GNU/Linux system (but may be used by others).
--- bittorrent-3.4.2.orig/debian/prerm
+++ bittorrent-3.4.2/debian/prerm
@@ -0,0 +1,46 @@
+#! /bin/sh
+# prerm script for #PACKAGE#
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+PACKAGE="bittorrent"
+
+dpkg --listfiles $PACKAGE |
+        awk '$0~/\.py$/ {print $0"c\n" $0"o"}' |
+        xargs rm -f >&2
+
+
+
+case "$1" in
+    remove|upgrade|deconfigure)
+#       install-info --quiet --remove /usr/info/#PACKAGE#.info.gz
+        ;;
+    failed-upgrade)
+        ;;
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- bittorrent-3.4.2.orig/debian/bttrack.bittorrent.1
+++ bittorrent-3.4.2/debian/bttrack.bittorrent.1
@@ -0,0 +1,88 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH "BTTRACK" 1 "Jan 18 2003"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+bttrack \- tracker for bittorrent
+.SH SYNOPSIS
+.B bttrack \fI [ option ... ]
+.SH DESCRIPTION
+This manual page documents briefly the \fIbttrack\fP
+command.
+This manual page was written for the Debian distribution
+because the original program does not have a manual page.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+\fBbttrack\fP is a program that serves as a "tracker" for 
+bittorrent clients.  This program keeps track of the completion
+of each client, and communcates that information when requested
+to other clients.
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+.TP
+.B \-\-port \fIportnum\fP
+listen on port \fIportnum\fP (default 80)
+.TP
+.B \-\-dfile \fIfilename\fP
+store recent downloader info in \fIfilename\fP
+.TP
+.B \-\-bind \fIip\fP
+bind to \fIip\fP instead of the default
+.TP
+.B \-\-socket_timeout \fIsecs\fP
+timeout for closing connections (default 15)
+.TP
+.B \-\-save_dfile_interval \fIsecs\fP
+seconds between saving dfile (default 300)
+.TP
+.B \-\-timeout_downloaders_interval \fIsecs\fP
+seconds between expiring downloaders (default 2700)
+.TP
+.B \-\-reannounce_interval \fIsecs\fP
+seconds downloaders should wait between reannouncements (default 1800)
+.TP
+.B \-\-response_size \fInum\fP
+number of peers to send in an info message (default 50)
+.TP
+.B \-\-timeout_check_interval \fIsecs\fP
+time to wait between checking if any connections have timed out (default 5)
+.TP
+.B \-\-nat_check \fI[ 1 | 0 ]\fP
+whether to check back and ban downloaders behind NAT (default 1)
+.TP
+.B \-\-min_time_between_log_flushes \fIsecs\fP
+minimum time it must have been since the last flush to do another one (default 3.0)
+.TP
+.B \-\-allowed_dir \fIpath\fP
+only allow downloads for .torrents in this directory (default '')
+.TP
+.B \-\-parse_allowed_interval \fImins\fP
+minutes between reloading of allowed_dir (default 15)
+.TP
+.B \-\-show_names \fI[ 1 | 0 ]\fP
+whether to display names from alowed dir (default 1)
+
+.SH SEE ALSO
+.BR bittorrent-downloader (1),
+.BR btmakemetafile (1).
+.br
+.SH AUTHOR
+This manual page was written by Michael Janssen <jamuraa@debian.org>,
+for the Debian GNU/Linux system (but may be used by others).
--- bittorrent-3.4.2.orig/debian/bittorrent-gui.install
+++ bittorrent-3.4.2/debian/bittorrent-gui.install
@@ -0,0 +1 @@
+/usr/bin/*gui*
--- bittorrent-3.4.2.orig/tracker_hex.patch
+++ bittorrent-3.4.2/tracker_hex.patch
@@ -0,0 +1,30 @@
+--- BitTorrent/track.py.saved	2004-03-21 11:33:17.000000000 -0800
++++ BitTorrent/track.py	2004-10-09 01:58:25.000000000 -0700
+@@ -256,11 +256,11 @@
+                             sz = self.allowed[name]['length']  # size
+                             ts = ts + sz
+                             szt = sz * n   # Transferred for this torrent
+                             tt = tt + szt
+                             if self.allow_get == 1:
+-                                linkname = '<a href="/file?info_hash=' + quote(name) + '">' + self.allowed[name]['name'] + '</a>'
++                                linkname = '<a href="/file?info_hash=' + b2a_hex(name) + '">' + self.allowed[name]['name'] + '</a>'
+                             else:
+                                 linkname = self.allowed[name]['name']
+                             s.write('<tr><td><code>%s</code></td><td>%s</td><td align="right">%s</td><td align="right">%i</td><td align="right">%i</td><td align="right">%i</td><td align="right">%s</td></tr>\n' \
+                                 % (b2a_hex(name), linkname, size_format(sz), c, d, n, size_format(szt)))
+                     else:
+@@ -306,12 +306,12 @@
+                 fs[name] = {'complete': c, 'incomplete': d, 'downloaded': n}
+                 if (self.allowed is not None) and self.allowed.has_key(name) and self.show_names:
+                     fs[name]['name'] = self.allowed[name]['name']
+             r = {'files': fs}
+             return (200, 'OK', {'Content-Type': 'text/plain'}, bencode(r))
+-        elif (path == 'file') and (self.allow_get == 1) and params.has_key('info_hash') and self.allowed.has_key(params['info_hash']):
+-            hash = params['info_hash']
++        elif (path == 'file') and (self.allow_get == 1) and params.has_key('info_hash') and self.allowed.has_key(a2b_hex(params['info_hash'])):
++            hash = a2b_hex(params['info_hash'])
+             fname = self.allowed[hash]['file']
+             fpath = self.allowed[hash]['path']
+             return (200, 'OK', {'Content-Type': 'application/x-bittorrent', 'Content-Disposition': 'attachment; filename=' + fname}, open(fpath, 'rb').read())
+         elif path == 'favicon.ico' and self.favicon != None:
+             return (200, 'OK', {'Content-Type' : 'image/x-icon'}, self.favicon)
--- bittorrent-3.4.2.orig/www-doc/documentation.html
+++ bittorrent-3.4.2/www-doc/documentation.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+  <link rel="stylesheet" type="text/css" href="http://bitconjurer.org/BitTorrent/default.css" />
+  <link rel="shortcut icon" href="http://bitconjurer.org/BitTorrent/favicon.ico" />
+  <title>BitTorrent: Documentation</title>
+</head>
+
+<body>
+  <div id="side">
+    <img id="logo" src="bittorrent_logo.png" alt="BitTorrent Logo" />
+    <ul id="menu">
+      <li><a href="index.html">News</a></li>
+      <li><a href="introduction.html">Introduction</a></li>
+      <li><a href="download.html">Download</a></li>
+      <li><a href="FAQ.html">FAQ</a></li>
+      <li><a class="current">Documentation</a>
+        <ul class="submenu">
+          <li><a href="guide.html">Guide</a></li>
+          <li><a href="protocol.html">Protocol</a></li>
+          <li><a href="http://bitconjurer.org/BitTorrent/bittorrentecon.pdf">Paper</a></li>
+        </ul>
+      </li>
+      <li><a href="press.html">Press</a></li>
+      <li><a href="donate.html">Donate!</a></li>
+    </ul>
+  </div><!-- #side -->
+  <div id="main">
+    <p>For common users:</p>
+    <ul>
+      <li><a href="FAQ.html">Frequently asked questions</a></li>
+    </ul>
+    <p>For content distributors:</p>
+    <ul>
+      <li><a href="guide.html">File server's guide</a></li>
+    </ul>
+    <p>For developers:</p>
+    <ul>
+      <li><a href="protocol.html">BitTorrent protocol specification</a></li>
+    </ul>
+    <p>For academics:</p>
+    <ul>
+      <li><a href="http://bitconjurer.org/BitTorrent/bittorrentecon.pdf">BitTorrent Economics Paper</a> (PDF)</li>
+    </ul>
+  </div><!-- #main -->
+</body>
+</html>
--- bittorrent-3.4.2.orig/www-doc/guide.html
+++ bittorrent-3.4.2/www-doc/guide.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+  <link rel="stylesheet" type="text/css" href="http://bitconjurer.org/BitTorrent/default.css" />
+  <link rel="shortcut icon" href="http://bitconjurer.org/BitTorrent/favicon.ico" />
+  <title>BitTorrent: File Server's Guide</title>
+</head>
+
+<body>
+  <div id="side">
+    <img id="logo" src="bittorrent_logo.png" alt="BitTorrent Logo" />
+    <ul id="menu">
+      <li><a href="index.html">News</a></li>
+      <li><a href="introduction.html">Introduction</a></li>
+      <li><a href="download.html">Download</a></li>
+      <li><a href="FAQ.html">FAQ</a></li>
+      <li><a href="documentation.html">Documentation</a>
+        <ul class="submenu">
+          <li><a class="current">Guide</a></li>
+          <li><a href="protocol.html">Protocol</a></li>
+          <li><a href="http://bitconjurer.org/BitTorrent/bittorrentecon.pdf">Paper</a></li>
+        </ul>
+      </li>
+      <li><a href="press.html">Press</a></li>
+      <li><a href="donate.html">Donate!</a></li>
+    </ul>
+  </div><!-- #side -->
+  <div id="main">
+    <p>This is a how-to for making files publicly available via BitTorrent, and it's primarily written for people running Windows. But even if you're not running Windows, the steps you need to do are quite similar, and you can find further instructions in <code>README.txt</code> in the source distribution.</p>
+    <ol>
+      <li><p>Get a tracker</p>
+        <p>You need a tracker for downloaders to be able to find each other. Because of this central role, a tracker should be on a very reliable Internet connection. Therefore it's <em>strongly</em> recommended that you use a tracker running on a <em>stable</em> <em>server</em> system (as opposed to your <em>unstable</em> Windows <em>desktop</em> system).</p>
+        <p>Everyone else making files available via BitTorrent is using a tracker, and a single tracker can handle a huge number of files with very little load. So you could ask others for the URL of their trackers. (Tracker URL is contained in .torrent files.) However, you should <em>never</em> use anyone's tracker without the owner's permission. That would be intrusive, for the least.</p>
+        <p>If you want to set up your own tracker, follow the instructions in the <code>README.txt</code> in the source distribution.</p>
+      </li>
+      <li><p>Get a web server</p>
+        <p>Any web server will do, but you must associate the extension <code>.torrent</code> with the mimetype <code>application/x-bittorrent</code>. You should ask your web server's administrator to set it up.</p>
+        <p>If you are the web server administrator, either add the line</p>
+        <blockquote><p><code>AddType application/x-bittorrent .torrent</code></p></blockquote>
+        <p>To <code>httpd.conf</code>, or</p>
+        <blockquote><p><code>application/x-bittorrent torrent</code></p></blockquote>
+        <p>to <code>mime.types</code>.</p>
+      </li>
+      <li><p>Make the .torrent files</p>
+        <p>Download and install CompleteDir from the <a href="download.html">download page</a>. It will install under <code>Start > All Programs > CompleteDir</code>.</p>
+        <p>Next, take all the files you would like to make .torrent's for and put them in a single directory. If there's a whole directory you'd like to make a single .torrent for, make it a subdirectory. If you only want to make a .torrent of one file, put it in a directory by itself.</p>
+        <p>Then run CompleteDir. Click on 'Select' and select the directory which you put all the files in. Enter the URL of the tracker you're using in the 'Announce URL' field. You can leave the piece size at the default value. (Smaller piece sizes cause better performance, but make bigger .torrent files.)</p>
+        <p>Click 'Make' and .torrent files will be created. For a file named <code>spam</code>, a file named <code>spam.torrent</code> will be created.</p>
+        <p>If you want to create more .torrent files, you don't have to remove the old ones, just add the new files to the directory and click 'Make' again. CompleteDir checks for existing .torrent's and doesn't regenerate them.</p>
+      </li>
+      <li><p>Put the .torrent files on your web server</p>
+        <p>Do this however you normally put files on your web server, for .torrent files are just ordinary static files.</p>
+      </li>
+      <li><p>Install BitTorrent on your machine</p>
+        <p>Given that you're reading this you've probably installed BitTorrent already, but if not get it from the <a href="download.html">download page</a>.</p>
+      </li>
+      <li><p>Start a complete downloader</p>
+        <p>For people to be able to download it is necessary that there be at least one downloader which has everything to begin with. Enter the URL you put the .torrent file at into your web browser, and select the complete local file (or directory) as the location to save to. After checking that the integrity of the file(s), the downloader will report that the download has succeeded, and wait for peers to upload to.</p>
+        <p>If there are multiple files you'd like to distribute, and they're not grouped into a single .torrent, you have to start a separate downloader for each .torrent file.</p>
+        <p>It is essential that your complete downloader be able to receive incoming connections. If you're behind a firewall or NAT, you should forward ports 6881 through 6889 to your machine. (The first downloader uses 6881, the next 6882, etc. The range is configurable.)</p>
+      </li>
+      <li><p>Link to the .torrent file</p>
+        <p>You can link to the .torrent file using an ordinary hyperlink. Sending the URL in email also works.</p>
+      </li>
+    </ol>
+    <p>Have fun!</p>
+  </div><!-- #main -->
+</body>
+</html>
--- bittorrent-3.4.2.orig/www-doc/index.html
+++ bittorrent-3.4.2/www-doc/index.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+  <link rel="stylesheet" type="text/css" href="http://bitconjurer.org/BitTorrent/default.css" />
+  <link rel="shortcut icon" href="http://bitconjurer.org/BitTorrent/favicon.ico" />
+  <title>The Official BitTorrent Home Page</title>
+</head>
+
+<body>
+  <div id="side">
+    <img id="logo" src="bittorrent_logo.png" alt="BitTorrent Logo" />
+    <ul id="menu">
+      <li><a class="current">News</a></li>
+      <li><a href="introduction.html">Introduction</a></li>
+      <li><a href="download.html">Download</a></li>
+      <li><a href="FAQ.html">FAQ</a></li>
+      <li><a href="documentation.html">Documentation</a></li>
+      <li><a href="press.html">Press</a></li>
+      <li><a href="donate.html">Donate!</a></li>
+    </ul>
+  </div><!-- #side -->
+  <div id="main">
+
+    <p>Welcome to the <strong>official</strong>
+BitTorrent web site!</p>
+    <ul>
+      <li>2004-04-04: 3.4.2, probably the last release before 3.5, is now out, download <a
+href="download.html">here</a>.
+      <li>2004-03-11: 3.4.1, which fixes all the major problems in 3.4 and has yet even more tracker bandwidth
+savings, 
+is now out.
+      <li>2003-09-24: Long awaited release 3.3 is out. Everybody please upgrade</li>
+      <li>2003-09-24: New website launched</li>
+    </ul>
+    <p>If you are new to BitTorrent, be sure to read the <a href="introduction.html">Introduction</a> to understand how BitTorrent works. If you have any questions, please refer to the <a href="FAQ.html">FAQ</a>.</p>
+    <hr />
+    <p class="notes">BitTorrent, its logo and its web site are all copyright &copy; 2001-2003 <a href="http://bitconjurer.org/">Bram Cohen</a>. The logo and the web site are designed by 
+<!-- <a href="http://henrypijames.tripod.com/">Henry 'Pi' James</a>-->
+Henry 'Pi' James. The web site is compliant to XHTML 1.1 and CSS 2.</p>
+  </div><!-- #main -->
+</body>
+</html>
--- bittorrent-3.4.2.orig/www-doc/introduction.html
+++ bittorrent-3.4.2/www-doc/introduction.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+  <link rel="stylesheet" type="text/css" href="http://bitconjurer.org/BitTorrent/default.css" />
+  <link rel="shortcut icon" href="http://bitconjurer.org/BitTorrent/favicon.ico" />
+  <title>BitTorrent: Introduction</title>
+</head>
+
+<body>
+  <div id="side">
+    <img id="logo" src="bittorrent_logo.png" alt="BitTorrent Logo" />
+    <ul id="menu">
+      <li><a href="index.html">News</a></li>
+      <li><a class="current">Introduction</a></li>
+      <li><a href="download.html">Download</a></li>
+      <li><a href="FAQ.html">FAQ</a></li>
+      <li><a href="documentation.html">Documentation</a></li>
+      <li><a href="press.html">Press</a></li>
+      <li><a href="donate.html">Donate!</a></li>
+    </ul>
+  </div><!-- #side -->
+  <div id="main">
+    <p>You have a <em>great product,</em> many
+customers, and are delivering your product to hordes of happy customers online. Serving large files creates problems of scaling, flash crowds, and reliability. As you grow, they become more central to your business, but your bandwidth costs go up as well. It's a <em>vicious cycle.</em></p>
+    <p>There is a solution. <em>BitTorrent</em> is a simple software product which addresses all of these problems.</p>
+    <p>The key to cheap file distribution is to tap the unutilized upload capacity of your customers. It's <em>free.</em> Their contribution grows at the same rate as their demand, creating <em>limitless scalability</em> for a fixed cost.</p>
+    <div class="center">
+      <p class="notes">Problem: more customers require more bandwidth</p>
+      <img src="http://f.scarywater.net/bram/central.png" alt="Problem" longdesc="more customers require more bandwidth" />
+      <p class="notes">The BitTorrent Solution: customers help distribute content</p>
+      <img src="http://f.scarywater.net/bram/torrent.png" alt="Solution" longdesc="customers help distribute content" />
+    </div><!-- .center -->
+    <p>BitTorrent is not just a concept, but has a <a href="download.html">functioning implementation</a>, already capable of swarming downloads across unreliable networks. This is the result of over two years of intensive development.</p>
+  </div><!-- #main -->
+</body>
+</html>
--- bittorrent-3.4.2.orig/www-doc/download.html
+++ bittorrent-3.4.2/www-doc/download.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+  <link rel="stylesheet" type="text/css" href="http://bitconjurer.org/BitTorrent/default.css" />
+  <link rel="shortcut icon" href="http://bitconjurer.org/BitTorrent/favicon.ico" />
+  <title>BitTorrent: Download</title>
+</head>
+
+<body>
+  <div id="side">
+    <img id="logo" src="bittorrent_logo.png" alt="BitTorrent Logo" />
+    <ul id="menu">
+      <li><a href="index.html">News</a></li>
+      <li><a href="introduction.html">Introduction</a></li>
+      <li><a class="current">Download</a></li>
+      <li><a href="FAQ.html">FAQ</a></li>
+      <li><a href="documentation.html">Documentation</a></li>
+      <li><a href="press.html">Press</a></li>
+      <li><a href="donate.html">Donate!</a></li>
+    </ul>
+  </div><!-- #side -->
+  <div id="main">
+        <p>Current version: <strong>3.4.2</strong>, released on April 4, 2004.</p>
+    <p>Available downloads:</p>
+    <ul>
+      <li><a href="http://prdownloads.sourceforge.net/bittorrent/BitTorrent-3.4.2.exe?download">Windows
+installer</a> (If you don't know what you want, you probably want this).
+<center>
+<script type="text/javascript"><!--
+google_ad_client = "pub-5952109563565748";
+google_ad_width = 468;
+google_ad_height = 60;
+google_ad_format = "468x60_as";
+google_ad_channel ="";
+google_color_bg = "FFFFDF";
+google_ad_type = "text_image";
+//--></script>
+<script type="text/javascript"
+  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
+</script>
+</center>
+</li>
+      <li><a href="http://prdownloads.sourceforge.net/bittorrent/BitTorrent_OSX_3.4.2.dmg?download">Mac OS X
+image</a></li>
+      <li>Debian package: <a href="http://packages.debian.org/testing/net/bittorrent.html">testing</a> or
+        <a href="http://packages.debian.org/unstable/net/bittorrent.html">unstable</a></li>
+      <li>Red Hat package: try a <a href="http://rpmfind.net/linux/rpm2html/search.php?query=BitTorrent">search</a></li>
+      <li>Python source: 
+        <a href="http://prdownloads.sourceforge.net/bittorrent/BitTorrent-3.4.2.zip?download">zip</a>, <a
+href="http://prdownloads.sourceforge.net/bittorrent/BitTorrent-3.4.2.tar.gz?download">tar</a> or
+        <a href="http://sourceforge.net/cvs/?group_id=33044">cvs</a></li>
+      <li>To create .torrent files under Windows: <a
+href="http://prdownloads.sourceforge.net/bittorrent/completedir-1.1.exe?download">CompleteDir</a></li>      
+    </ul>
+    <p>New in 3.4.2:</p>
+    <ul>
+      <li>Fixed some bugs, including an important tracker bug
+      <li>Added 'warning message' so trackers can send non-fatal human readable messages to clients
+      <li>Fixed problem where some users got 'could not find file' message
+    </ul>
+    <p>New in 3.4.1:</p>
+    <ul>
+      <li>Client no longer complains of connection to tracker problems when transfers are still working
+      <li>Lots and lots of bandwidth savings (the 'compact' tracker parameter)
+      <li>Better support for peers with dynamic IPs (the 'key' tracker parameter)
+      <li>Lots of bug fixes
+    </ul>
+    <p>New in 3.3:</p>
+    <ul>
+      <li>Files now only get allocated as they're downloaded and don't fragment the hard drive</li>
+      <li>Large torrents no longer hose the CPU</li>
+      <li>Better network utilization and more consistent download rates</li>
+      <li>Poorly seeded torrents get out faster</li>
+      <li>Several important bug fixes</li>
+    </ul>
+    <p>New in 3.2:</p>
+    <ul>
+      <li>Better network utilization</li>
+      <li>More even and consistent download rates</li>
+      <li>Read-only files now supported for seeding</li>
+      <li>The Windows build now takes command line arguments</li>
+      <li>Several bug fixes</li>
+    </ul>
+  </div><!-- #main -->
+</body>
+</html>
--- bittorrent-3.4.2.orig/www-doc/FAQ.html
+++ bittorrent-3.4.2/www-doc/FAQ.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+  <link rel="stylesheet" type="text/css" href="http://bitconjurer.org/BitTorrent/default.css" />
+  <link rel="shortcut icon" href="http://bitconjurer.org/BitTorrent/favicon.ico" />
+  <title>BitTorrent: Frequently Asked Questions</title>
+</head>
+
+<body>
+  <div id="side">
+    <img id="logo" src="bittorrent_logo.png" alt="BitTorrent Logo" />
+    <ul id="menu">
+      <li><a href="index.html">News</a></li>
+      <li><a href="introduction.html">Introduction</a></li>
+      <li><a href="download.html">Download</a></li>
+      <li><a class="current">FAQ</a></li>
+      <li><a href="documentation.html">Documentation</a></li>
+      <li><a href="press.html">Press</a></li>
+      <li><a href="donate.html">Donate!</a></li>
+    </ul>
+  </div><!-- #side -->
+  <div id="main">
+    <dl>
+      <dt>Where can I find stuff to download using BitTorrent?</dt>
+      <dd>
+        <p>You can find lots of things <a href="http://bt.etree.org/">here</a> and from <a
+href="http://smiler.no-ip.org/BT/BTlinks.php">Smiler's BitTorrent links</a>.</p>
+      </dd>
+      <dt>Help! My download isn't working!</dt>
+      <dd>
+        <p>Please read this FAQ to see if it solves your problem, and if that doesn't work try <a
+href="http://btfaq.com/">this FAQ</a>. If that doesn't help, post a question to the <a
+href="http://groups.yahoo.com/group/BitTorrent_help/">technical support mailing list</a>. Be sure to mention what
+operating system you're running, the url of the file you're trying to download, what version of BitTorrent you're running, and explain <em>exactly</em> what behavior you're seeing.</p>
+        <p>Do <em>not</em> post questions about where to find files or announcements of files being avialable to this
+mailing list. For that, try using a search engine.</p>
+      </dd>
+      <dt>BitTorrent is great! How can I help?</dt>
+      <dd>
+        <p>You can give a <a href="donate.html">donation</a>.</p>
+      </dd>
+      <dt>What is BitTorrent uploading from my machine?</dt>
+      <dd>
+        <p>Pieces of the file you're currently downloading. BitTorrent trades pieces you have with pieces your
+peers have.</p>
+      </dd>
+      <dt>I don't want you stealing my bandwidth! How can I stop it from uploading?</dt>
+      <dd>
+        <p>You could hack the source to not upload, but then your download rate would suck. BitTorrent downloaders engage in tit-for-tat with their peers, so leeches have very little success downloading.</p>
+      </dd>
+      <dt>I get an error message starting with 'problem connecting to tracker', what should I do?</dt>
+      <dd>
+        <p>The tracker for the one particular file you're trying to download is probably down. Try to download again later.</p>
+        <p>Alternately, this error message may indicate that your net connection is down or doesn't allow arbitrary outgoing connections, which is necessary for BitTorrent to work.</p>
+      </dd>
+      <dt>BitTorrent makes my machine blue screen! What should I do?</dt>
+      <dd>
+        <p>If you have a DSL modem, especially an Alcatel, you should <a href="http://www.fastaccess.drivers.bellsouth.net/#alcatel">upgrade your drivers</a>. If you have a Linksys network card, you may have to <a href="http://groups.yahoo.com/group/BitTorrent/message/1365">upgrade your network card drivers</a> as well.</p>
+      </dd>
+      <dt>When I click on BitTorrent links is says 'file not found'. What do I do?</dt>
+      <dd>
+        <p>This problem was recently fixed. You should install the <a href="download.html">latest version</a>.</p>
+      </dd>
+      <dt>Can I use BitTorrent on Mac OS 9?</dt>
+      <dd>
+        <p>After installing <a href="http://www.cwi.nl/~jack/macpython.html">MacPython</a>, you should be able to use <code>btdownloadheadless.py</code> from the source.</p>
+      </dd>
+      <dt>Does BitTorrent support resuming?</dt>
+      <dd>
+        <p>Yes, just save your download to the same location as the existing partial download. BitTorrent will resume where it left off after checking the partial download.</p>
+      </dd>
+      <dt>How can I contribute to a file distribution without downloading?</dt>
+      <dd>
+        <p>Just leave BitTorrent running after it's done downloading. If you already have the complete file(s), restart downloading and resume to the existing file(s).</p>
+      </dd>
+      <dt>How do I know the download isn't corrupted?</dt>
+      <dd>
+        <p>BitTorrent does cryptographic hashing (SHA1) of all data. When you see "Download succeeded!" you can be sure that BitTorrent has already verified the integrity of the data. The integrity and authenticity of a BitTorrent download is as good as the original request to the tracker. Checking the MD5/CRC32/other hash of a file downloaded via BitTorrent is redundant.</p>
+      </dd>
+      <dt>I'm behind a firewall/NAT, can I use BitTorrent?</dt>
+      <dd>
+        <p>Yes, but you will get better performance if other peers can connect to you. <a href="http://knowbuddy.dyndns.org:81/torrent/btclientconfig.html#FWConfig">See here</a> for
+detailed instructions on how to allow incoming BitTorrent connections.</p>
+      </dd>
+      <dt>How many downloads can BitTorrent support?</dt>
+      <dd>
+        <p>For very popular files, BitTorrent can support roughly a thousand times as many downloads as http
+can. Recent changes may change this to ten thousand.</p>
+      </dd>
+      <dt>I published a file but whenever I try to download it hangs saying "connecting to peers" and/or the download just never starts.</dt>
+      <dd>
+        <p>You need to leave at least one downloader running which already has the whole file. Make sure other peers can connect to this downloader (preferably not behind firewall or NAT!)</p>
+      </dd>
+      <dt>I started a complete downloader but still noone can download, what gives?</dt>
+      <dd>
+        <p>If your tracker and downloader are on the same machine or within the same private IP range, you need to start the downloader with the <code>--ip</code> parameter, followed by it's public IP. Otherwise "localhost" could be assumed.</p>
+      </dd>
+      <dt>What language is BitTorrent written in?</dt>
+      <dd>
+        <p><a href="http://www.python.org/">Python.</a> And it uses <a href="http://www.wxwindows.org/">wxWindows</a>
+for its GUI.</p>
+      </dd>
+      <dt>When is the Java/C/whatever implementation going to be ready?</dt>
+      <dd>
+        <p>See the <a href="http://groups.yahoo.com/group/btports/">BitTorrent ports mailing list</a>.</p>
+      </dd>
+      <dt>How do I limit the amount of bandwidth consumed by BitTorrent?</dt>
+      <dd>
+        <p>Use the <code>--max_upload_rate</code> command line parameter, which takes an upload rate in kilobytes/sec.</p>
+      </dd>
+      <dt>Does BitTorrent contain spyware or adware?</dt>
+      <dd>
+        <p>No, BitTorrent contains no spyware, adware, or any other kind of -ware.</p>
+        <p>Some warez sites are distributing spyware-wrapped versions of the BitTorrent installer. Please only download
+the BitTorrent installer from this site.</p>
+      </dd>
+      <dt>What license is BitTorrent released under?</dt>
+      <dd>
+        <p><a href="http://opensource.org/licenses/mit-license.php">MIT License</a>, which basically lets you do anything you want with it so long as you leave the license notification in the source.</p>
+      </dd>
+      <dt>How can I download on a headless machine?</dt>
+      <dd>
+        <p>There are <code>btdownloadheadless.py</code>, <code>btdownloadcurses.py</code> and others available in the source distribution.</p>
+      </dd>
+      <dt>I can't use Paypal, can I still make a donation?</dt>
+      <dd>
+        <p>You can send a check or money order to:
+<blockquote>Bram Cohen<br>
+227 Bellevue Way NE Suite 152<br>
+Bellevue, WA 98004</blockquote></p>
+      </dd>
+      <dt>Where can I find more information about BitTorrent?</dt>
+      <dd>
+        <p>If you're looking for information on where to find files downloadable using BitTorrent, try using a
+<a href="http://google.com/">search engine</a>.</p>
+        <p>If you have a development or technical support question, see the <a href="documentation.html">documentation page</a>, the <a href="http://groups.yahoo.com/group/BitTorrent/">development mailing list</a>, or join #bittorrent on irc.freenode.net. (I repeat, this channel is <em>not</em> for file distribution!)</p>
+      </dd>
+    </dl>
+  </div><!-- #main -->
+</body>
+</html>
--- bittorrent-3.4.2.orig/www-doc/protocol.html
+++ bittorrent-3.4.2/www-doc/protocol.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+  <link rel="stylesheet" type="text/css" href="http://bitconjurer.org/BitTorrent/default.css" />
+  <link rel="shortcut icon" href="http://bitconjurer.org/BitTorrent/favicon.ico" />
+  <title>BitTorrent: Protocol Specification</title>
+</head>
+
+<body>
+  <div id="side">
+    <img id="logo" src="bittorrent_logo.png" alt="BitTorrent Logo" />
+    <ul id="menu">
+      <li><a href="index.html">News</a></li>
+      <li><a href="introduction.html">Introduction</a></li>
+      <li><a href="download.html">Download</a></li>
+      <li><a href="FAQ.html">FAQ</a></li>
+      <li><a href="documentation.html">Documentation</a>
+        <ul class="submenu">
+          <li><a href="guide.html">Guide</a></li>
+          <li><a class="current">Protocol</a></li>
+          <li><a href="http://bitconjurer.org/BitTorrent/bittorrentecon.pdf">Paper</a></li>
+        </ul>
+      </li>
+      <li><a href="press.html">Press</a></li>
+      <li><a href="donate.html">Donate!</a></li>
+    </ul>
+  </div><!-- #side -->
+  <div id="main">
+    <p>BitTorrent is a protocol for distributing files. It identifies content by URL and is designed to integrate seamlessly with the web. Its advantage over plain HTTP is that when multiple downloads of the same file happen concurrently, the downloaders upload to each other, making it possible for the file source to support very large numbers of downloaders with only a modest increase in its load.</p>
+    <p>A BitTorrent file distribution consists of these entities:</p>
+    <ul>
+      <li>An ordinary web server</li>
+      <li>A static 'metainfo' file</li>
+      <li>A BitTorrent tracker</li>
+      <li>An 'original' downloader</li>
+      <li>The end user web browsers</li>
+      <li>The end user downloaders</li>
+    </ul>
+    <p>There are ideally many end users for a single file.</p>
+    <p>To start serving, a host goes through the following steps:</p>
+    <ol>
+      <li>Start running a tracker (or, more likely, have one running already).</li>
+      <li>Start running an ordinary web server, such as apache, or have one already.</li>
+      <li>Associate the extension <code>.torrent</code> with mimetype <code>application/x-bittorrent</code> on their web server (or have done so already).</li>
+      <li>Generate a metainfo (.torrent) file using the complete file to be served and the URL of the tracker.</li>
+      <li>Put the metainfo file on the web server.</li>
+      <li>Link to the metainfo (.torrent) file from some other web page.</li>
+      <li>Start a downloader which already has the complete file (the 'origin').</li>
+    </ol>
+    <p>To start downloading, a user does the following:</p>
+    <ol>
+      <li>Install BitTorrent (or have done so already).</li>
+      <li>Surf the web.</li>
+      <li>Click on a link to a .torrent file.</li>
+      <li>Select where to save the file locally, or select a partial download to resume.</li>
+      <li>Wait for download to complete.</li>
+      <li>Tell downloader to exit (it keeps uploading until this happens).</li>
+    </ol>
+    <p>The connectivity is as follows:</p>
+    <ul>
+      <li>The web site is serving up static files as normal, but kicking off the BitTorrent helper app on the clients.</li>
+      <li>The tracker is receiving information from all downloaders and giving them random lists of peers. This is done over HTTP or HTTPS.</li>
+      <li>Downloaders are periodically checking in with the tracker to keep it informed of their progress, and are uploading to and downloading from each other via direct connections. These connections use the BitTorrent peer protocol, which operates over TCP.</li>
+      <li>The origin is uploading but not downloading at all, since it has the entire file. The origin is necessary to get the entire file into the network. Often for popular downloads the origin can be taken down after a while since several downloads may have completed and been left running indefinitely.</li>
+    </ul>
+    <p>Metainfo file and tracker responses are both sent in a simple, efficient, and extensible format called bencoding (pronounced 'bee encoding'). Bencoded messages are nested dictionaries and lists (as in Python), which can contain strings and integers. Extensibility is supported by ignoring unexpected dictionary keys, so additional optional ones can be added later.</p>
+    <p>Bencoding is done as follows:</p>
+    <ul>
+      <li>Strings are length-prefixed base ten followed by a colon and the string. For example <code>4:spam</code> corresponds to 'spam'.</li>
+      <li>Integers are represented by an 'i' followed by the number in base 10 followed by an 'e'. For example <code>i3e</code> corresponds to 3 and <code>i-3e</code> corresponds to -3. Integers have no size limitation. <code>i-0e</code> is invalid. All encodings with a leading zero, such as <code>i03e</code>, are invalid, other than <code>i0e</code>, which of course corresponds to 0.</li>
+      <li>Lists are encoded as an 'l' followed by their elements (also bencoded) followed by an 'e'. For example <code>l4:spam4:eggse</code> corresponds to ['spam', 'eggs'].</li>
+      <li>Dictionaries are encoded as a 'd' followed by a list of alternating keys and their corresponding values followed by an 'e'. For example, <code>d3:cow3:moo4:spam4:eggse</code> corresponds to {'cow': 'moo', 'spam': 'eggs'} and <code>d4:spaml1:a1:bee</code> corresponds to {'spam': ['a', 'b']} . Keys must be strings and appear in sorted order (sorted as raw strings, not alphanumerics).</li>
+    </ul>
+    <p>Metainfo files are bencoded dictionaries with the following keys:</p>
+    <dl>
+      <dt><code>announce</code></dt>
+      <dd>
+        <p>The URL of the tracker.</p>
+      </dd>
+    <dt><code>info</code></dt>
+    <dd>
+      <p>This maps to a dictionary, with keys described below.</p>
+      <p>The <code>name</code> key maps to a string which is the suggested name to save the file (or directory) as. It is purely advisory.</p>
+      <p><code>piece length</code> maps to the number of bytes in each piece the file is split into. For the purposes of transfer, files are split into fixed-size pieces which are all the same length except for possibly the last one which may be truncated. Piece length is almost always a power of two, most commonly 2<sup>18</sup> = 256 K (BitTorrent prior to version 3.2 uses 2<sup>20</sup> = 1 M as default).</p>
+      <p><code>pieces</code> maps to a string whose length is a multiple of 20. It is to be subdivided into strings of length 20, each of which is the SHA1 hash of the piece at the corresponding index.</p>
+      <p>There is also a key <code>length</code> or a key <code>files</code>, but not both or neither. If <code>length</code> is present then the download represents a single file, otherwise it represents a set of files which go in a directory structure.</p>
+      <p>In the single file case, <code>length</code> maps to the length of the file in bytes.</p>
+      <p>For the purposes of the other keys, the multi-file case is treated as only having a single file by concatenating the files in the order they appear in the files list. The files list is the value <code>files</code> maps to, and is a list of dictionaries containing the following keys:</p>
+      <dl>
+        <dt><code>length</code></dt>
+        <dd>The length of the file, in bytes.</dd>
+        <dt><code>path</code></dt>
+        <dd>A list of strings corresponding to subdirectory names, the last of which is the actual file name (a zero length list is an error case).</dd>
+      </dl>
+      <p>In the single file case, the <code>name</code> key is the name of a file, in the muliple file case, it's the name of a directory.</p>
+    </dd>
+    </dl>
+    <p>Tracker queries are two way. The tracker receives information via HTTP GET parameters and returns a bencoded message. Note that although the current tracker implementation has its own web server, the tracker could run very nicely as, for example, an apache module.</p>
+    <p>Tracker GET requests have the following keys:</p>
+    <dl>
+      <dt><code>info_hash</code></dt>
+      <dd>
+        <p>The 20 byte sha1 hash of the bencoded form of the <code>info</code> value from the metainfo file. Note that this is a substring of the metainfo file. This value will almost certainly have to be escaped.</p>
+      </dd>
+      <dt><code>peer_id</code></dt>
+      <dd>
+        <p>A string of length 20 which this downloader uses as its id. Each downloader generates its own id at random at the start of a new download. This value will also almost certainly have to be escaped.</p>
+      </dd>
+      <dt><code>ip</code></dt>
+      <dd>
+        <p>An optional parameter giving the IP (or dns name) which this peer is at. Generally used for the origin if it's on the same machine as the tracker.</p>
+      </dd>
+      <dt><code>port</code></dt>
+      <dd>
+        <p>The port number this peer is listening on. Common behavior is for a downloader to try to listen on port 6881 and if that port is taken try 6882, then 6883, etc. and give up after 6889.</p>
+      </dd>
+      <dt><code>uploaded</code></dt>
+      <dd>
+        <p>The total amount uploaded so far, encoded in base ten ascii.</p>
+      </dd>
+      <dt><code>downloaded</code></dt>
+      <dd>
+        <p>The total amount downloaded so far, encoded in base ten ascii.</p>
+      </dd>
+      <dt><code>left</code></dt>
+      <dd>
+        <p>The number of bytes this peer still has to download, encoded in base ten ascii. Note that this can't be computed from downloaded and the file length since it might be a resume, and there's a chance that some of the downloaded data failed an integrity check and had to be re-downloaded.</p>
+      </dd>
+      <dt><code>event</code></dt>
+      <dd>
+        <p>This is an optional key which maps to <code>started</code>, <code>completed</code>, or <code>stopped</code> (or empty, which is the same as not being present). If not present, this is one of the announcements done at regular intervals. An announcement using <code>started</code> is sent when a download first begins, and one using <code>completed</code> is sent when the download is complete. No <code>completed</code> is sent if the file was complete when started. Downloaders send an announcement using 'stopped' when they cease downloading.</p>
+      </dd>
+    </dl>
+    <p>Tracker responses are bencoded dictionaries. If a tracker response has a key <code>failure reason</code>, then that maps to a human readable string which explains why the query failed, and no other keys are required. Otherwise, it must have two keys: <code>interval</code>, which maps to the number of seconds the downloader should wait between regular rerequests, and <code>peers</code>. <code>peers</code> maps to a list of dictionaries corresponding to peers, each of which contains the keys <code>peer id</code>, <code>ip</code>, and <code>port</code>, which map to the peer's self-selected ID, IP address or dns name as a string, and port number, respectively. Note that downloaders may rerequest on nonscheduled times if an event happens or they need more peers.</p>
+    <p>If you want to make any extensions to metainfo files or tracker queries, please coordinate with Bram Cohen to make sure that all extensions are done compatibly.</p>
+    <p>BitTorrent's peer protocol operates over TCP. It performs efficiently without setting any socket options.</p>
+    <p>Peer connections are symmetrical. Messages sent in both directions look the same, and data can flow in either direction.</p>
+    <p>The peer protocol refers to pieces of the file by index as described in the metainfo file, starting at zero. When a peer finishes downloading a piece and checks that the hash matches, it announces that it has that piece to all of its peers.</p>
+    <p>Connections contain two bits of state on either end: choked or not, and interested or not. Choking is a notification that no data will be sent until unchoking happens. The reasoning and common techniques behind choking are explained later in this document.</p>
+    <p>Data transfer takes place whenever one side is interested and the other side is not choking. Interest state must be kept up to date at all times - whenever a downloader doesn't have something they currently would ask a peer for in unchoked, they must express lack of interest, despite being choked. Implementing this properly is tricky, but makes it possible for downloaders to know which peers will start downloading immediately if unchoked.</p>
+    <p>Connections start out choked and not interested.</p>
+    <p>When data is being transferred, downloaders should keep several piece requests queued up at once in order to get good TCP performance (this is called 'pipelining'.) On the other side, requests which can't be written out to the TCP buffer immediately should be queued up in memory rather than kept in an application-level network buffer, so they can all be thrown out when a choke happens.</p>
+    <p>The peer wire protocol consists of a handshake followed by a never-ending stream of length-prefixed messages. The handshake starts with character ninteen (decimal) followed by the string 'BitTorrent protocol'. The leading character is a length prefix, put there in the hope that other new protocols may do the same and thus be trivially distinguishable from each other.</p>
+    <p>All later integers sent in the protocol are encoded as four bytes big-endian.</p>
+    <p>After the fixed headers come eight reserved bytes, which are all zero in all current implementations. If you wish to extend the protocol using these bytes, please coordinate with Bram Cohen to make sure all extensions are done compatibly.</p>
+    <p>Next comes the 20 byte sha1 hash of the bencoded form of the <code>info</code> value from the metainfo file. (This is the same value which is announced as info_hash to the tracker, only here it's raw instead of quoted here). If both sides don't send the same value, they sever the connection. The one possible exception is if a downloader wants to do multiple downloads over a single port, they may wait for incoming connections to give a download hash first, and respond with the same one if it's in their list.</p>
+    <p>After the download hash comes the 20-byte peer id which is reported in tracker requests and contained in peer lists in tracker responses. If the receiving side's peer id doesn't match the one the initiating side expects, it severs the connection.</p>
+    <p>That's it for handshaking, next comes an alternating stream of length prefixes and messages. Messages of length zero are keepalives, and ignored. Keepalives are generally sent once every two minutes, but note that timeouts can be done much more quickly when data is expected.</p>
+    <p>All non-keepalive messages start with a single byte which gives their type. The possible values are:</p>
+    <ul>
+      <li>0 - choke</li>
+      <li>1 - unchoke</li>
+      <li>2 - interested</li>
+      <li>3 - not interested</li>
+      <li>4 - have</li>
+      <li>5 - bitfield</li>
+      <li>6 - request</li>
+      <li>7 - piece</li>
+      <li>8 - cancel</li>
+    </ul>
+    <p>'choke', 'unchoke', 'interested', and 'not interested' have no payload.</p>
+    <p>'bitfield' is only ever sent as the first message. Its payload is a bitfield with each index that downloader has sent set to one and the rest set to zero. Downloaders which don't have anything yet may skip the 'bitfield' message. The first byte of the bitfield corresponds to indices 0 - 7 from high bit to low bit, respectively. The next one 8-15, etc. Spare bits at the end are set to zero.</p>
+    <p>The 'have' message's payload is a single number, the index which that downloader just completed and checked the hash of.</p>
+    <p>'request' messages contain an index, begin, and length. The last two are byte offsets. Length is generally a power of two unless it gets truncated by the end of the file. All current implementations use 2<sup>15</sup>, and close connections which request an amount greater than 2<sup>17</sup>.</p>
+    <p>'cancel' messages have the same payload as request messages. They are generally only sent towards the end of a download, during what's called 'endgame mode'. When a download is almost complete, there's a tendency for the last few pieces to all be downloaded off a single hosed modem line, taking a very long time. To make sure the last few pieces come in quickly, once requests for all pieces a given downloader doesn't have yet are currently pending, it sends requests for everything to everyone it's downloading from. To keep this from becoming horribly inefficient, it sends cancels to everyone else every time a piece arrives.</p>
+    <p>'piece' messages contain an index, begin, and piece. Note that they are correlated with request messages implicitly. It's possible for an unexpected piece to arrive if choke and unchoke messages are sent in quick succession and/or transfer is going very slowly.</p>
+    <p>Downloaders generally download pieces in random order, which does a reasonably good job of keeping them from having a strict subset or superset of the pieces of any of their peers.</p>
+    <p>Choking is done for several reasons. TCP congestion control behaves very poorly when sending over many connections at once. Also, choking lets each peer use a tit-for-tat-ish algorithm to ensure that they get a consistent download rate.</p>
+    <p>The choking algorithm described below is the currently deployed one. It is very important that all new algorithms work well both in a network consisting entirely of themselves and in a network consisting mostly of this one.</p>
+    <p>There are several criteria a good choking algorithm should meet. It should cap the number of simultaneous uploads for good TCP performance. It should avoid choking and unchoking quickly, known as 'fibrillation'. It should reciprocate to peers who let it download. Finally, it should try out unused connections once in a while to find out if they might be better than the currently used ones, known as optimistic unchoking.</p>
+    <p>The currently deployed choking algorithm avoids fibrillation by only changing who's choked once every ten seconds. It does reciprocation and number of uploads capping by unchoking the four peers which it has the best download rates from and are interested. Peers which have a better upload rate but aren't interested get unchoked and if they become interested the worst uploader gets choked. If a downloader has a complete file, it uses its upload rate rather than its download rate to decide who to unchoke.</p>
+    <p>For optimistic unchoking, at any one time there is a single peer which is unchoked regardless of it's upload rate (if interested, it counts as one of the four allowed downloaders.) Which peer is optimistically unchoked rotates every 30 seconds. To give them a decent chance of getting a complete piece to upload, new connections are three times as likely to start as the current optimistic unchoke as anywhere else in the rotation.</p>
+  </div><!-- #main -->
+</body>
+</html>
--- bittorrent-3.4.2.orig/www-doc/press.html
+++ bittorrent-3.4.2/www-doc/press.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+  <link rel="stylesheet" type="text/css" href="http://bitconjurer.org/BitTorrent/default.css" />
+  <link rel="shortcut icon" href="http://bitconjurer.org/BitTorrent/favicon.ico" />
+  <title>BitTorrent: Press</title>
+</head>
+
+<body>
+  <div id="side">
+    <img id="logo" src="bittorrent_logo.png" alt="BitTorrent Logo" />
+    <ul id="menu">
+      <li><a href="index.html">News</a></li>
+      <li><a href="introduction.html">Introduction</a></li>
+      <li><a href="download.html">Download</a></li>
+      <li><a href="FAQ.html">FAQ</a></li>
+      <li><a href="documentation.html">Documentation</a></li>
+      <li><a class="current">Press</a></li>
+      <li><a href="donate.html">Donate!</a></li>
+    </ul>
+  </div><!-- #side -->
+  <div id="main">
+    <ul>
+      <li><p>2003-03-31: "Red Hat Linux 9 is out, and as of today the ISOs are officially available to Red Hat Network subscribers ($60/yr). Or, as of right now, you can grab the same ISOs using BitTorrent." - <a href="http://slashdot.org/article.pl?sid=03/03/31/1256236">slashdot</a></p></li>
+      <li><p>2002-07-26: "How do you simulate a slashdotting? Especially when you've already shrugged off one bona fide, slashdot.org appearence?" - <a href="http://www.ntk.net/2002/07/26/">NTK</a></p></li>
+      <li><p>2002-03-19: "Finally, real P2P with brains" - <a href="http://slashdot.org/article.pl?sid=02/03/20/0143248">slashdot</a></p></li>
+      <li><p>2002-01-09: "Two new services that aim to allow the burden of file downloads to be shared between web surfers" - <a href="http://www.newscientist.com/news/news.jsp?id=ns99991761">New Scientist</a></p></li>
+      <li><p>2001-11-19: BitTorrent has received a grant from <a href="http://linuxfund.org/">linuxfund</a>.</p></li>
+      <li><p>2001-07-16: "Bram Cohen's latest project is nothing if not ambitious: a novel way to share files that he hopes will best rivals like Napster, Freenet, and Gnutella." - <a href="http://wired.com/news/culture/0,1284,45248,00.html">Wired Online</a></p></li>
+    </ul>
+  </div><!-- #main -->
+</body>
+</html>
--- bittorrent-3.4.2.orig/www-doc/donate.html
+++ bittorrent-3.4.2/www-doc/donate.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+  <link rel="stylesheet" type="text/css" href="http://bitconjurer.org/BitTorrent/default.css" />
+  <link rel="shortcut icon" href="http://bitconjurer.org/BitTorrent/favicon.ico" />
+  <title>BitTorrent: Donate!</title>
+</head>
+
+<body>
+  <div id="side">
+    <img id="logo" src="bittorrent_logo.png" alt="BitTorrent Logo" />
+    <ul id="menu">
+      <li><a href="index.html">News</a></li>
+      <li><a href="introduction.html">Introduction</a></li>
+      <li><a href="download.html">Download</a></li>
+      <li><a href="FAQ.html">FAQ</a></li>
+      <li><a href="documentation.html">Documentation</a></li>
+      <li><a href="press.html">Press</a></li>
+      <li><a class="current">Donate!</a></li>
+    </ul>
+  </div><!-- #side -->
+  <div id="main">
+    <img align="right" src="http://f.scarywater.net/bram/greet10.jpg" alt="Bram Cohen" />
+    <p>Hi! I'm Bram Cohen, the author of BitTorrent.</p>
+    <p>I maintain BitTorrent for a living. This is my only job.</p>
+    <p>If you use BitTorrent and would like to help support it please make a donation.</p>
+    <form id="donate" action="https://www.paypal.com/cgi-bin/webscr" method="post">
+      <p>
+        Donate (via PayPal):
+        <input type="radio" name="amount" value="20.00" checked="checked" /> $20
+        <input type="radio" name="amount" value="10.00" /> $10
+        <input type="radio" name="amount" value="" /> other
+        <input class="button" type="submit" value="Donate!" />
+        <input type="hidden" name="cmd" value="_xclick" />
+        <input type="hidden" name="business" value="donate@bitconjurer.org" />
+        <input type="hidden" name="item_name" value="BitTorrent" />
+        <input type="hidden" name="no_shipping" value="1" />
+      </p>
+    </form>
+    <p>If you can't use Paypal, you can send a check or money order to:</p>
+    <p>Bram Cohen<br>
+       227 Bellevue Way NE #152<br>
+       Bellevue, WA 98004</p><br clear="both">
+    <p><img align="right" src="http://bitconjurer.org/BitTorrent/bittorrent_shirt.jpg"><center><font color="red" size="+3" />New! New!</font><br>
+    Now you can get a cool-looking <a href="http://www.jinx.com/scripts/details.asp?affid=-1&productID=291">BitTorrent shirt</a>! Only $14.95, it
+helps support BitTorrent and you get a shirt too! <a href="http://www.jinx.com/scripts/details.asp?affid=-1&productID=291">Order
+here</a>.</center></p>
+  </div><!-- #main -->
+</body>
+</html>
--- bittorrent-3.4.2.orig/www-doc/bittorrent_logo.png.uu
+++ bittorrent-3.4.2/www-doc/bittorrent_logo.png.uu
@@ -0,0 +1,113 @@
+begin 644 bittorrent_logo.png
+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
+;`)X`'O7QO]BVR,66=S/3`````$E%3D2N0F""
+`
+end
