[comp.sources.unix] v10i006: Crypt Breaker's Workbench, Part06/11

rs@uunet.UU.NET (Rich Salz) (06/19/87)

Submitted by: Robert W. Baldwin <BALDWIN@XX.LCS.MIT.EDU>
Mod.sources: Volume 10, Issue 6
Archive-name: cbw/Part06

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 6 (of 11)."
# Contents:  foo.perm lpair.c test1.perm
# Wrapped by rs@uunet on Wed Jun 17 18:17:20 1987
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f foo.perm -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"foo.perm\"
else
echo shar: Extracting \"foo.perm\" \(16800 characters\)
sed "s/^X//" >foo.perm <<'END_OF_foo.perm'
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X 96  -1 124 223  97  19  -1  13  43  44 
X -1  38 231   7  -1 207 179 134 133   5 
X -1  -1  48 160 152  93 162  -1 191  -1 
X 65 103 183  -1  -1  -1 243 242  11 180 
X 87 173 154   8   9  99 112  58  22 108 
X199  95  77  66  -1  62 128 190  47  79 
X215 109  55  -1  73  30  53 178 214  82 
X201 138 206  64 240  -1 228  52 140  59 
X197  -1  69 203  -1 111 137  40  -1  -1 
X -1 195 212  25  -1  51   0   4 251  45 
X -1 122 148  31 227 234 167 202  49  61 
X219  85  46 246  -1  -1  -1 254 211 249 
X144  -1 101 218   2 150 186  -1  56  -1 
X -1 247 164  18  17  -1  -1  86  71  -1 
X 78  -1  -1 222 120 216 226 158 102 189 
X125 225  24  -1  42 159 221 188 147 155 
X 23 210  26  -1 132 232 184 106  -1  -1 
X -1 196 253  41 204  -1  -1 235  67  16 
X 39 192  -1  32 166  -1 126  -1 157 149 
X 57  28 181  -1 241  91 171  80  -1  50 
X -1  70 107  83 174  -1  72  15  -1 233 
X161 118  92 244  68  60 145  -1 123 110 
X237 156 143   3  -1 151 146 104  76 239 
X -1  12 165 209 105 177  -1 220  -1 229 
X 74 194  37  36 213  -1 113 131  -1 119 
X -1  98  -1 172 117  -1 
X 20 122 118 119  -1 229 158  -1 223  -1 
X215  -1 197 249  82 126 237  23  87  93 
X  0  -1 252  17  -1  -1  -1 225  -1 163 
X 52 171  -1 155 214  -1  84  -1 216  85 
X 45 152  -1 181  -1  40 241 235 142 210 
X -1  69  30  83  99 134 212 253  70 144 
X -1  -1 234  -1 132 250 173 114  95  51 
X 58  -1  73  72 175 168 211  -1  92 169 
X176 166  14  53  36  39  -1  18 148 117 
X129 255  78  19 110  68 151 154 101  54 
X244  98 242 147 227 204 128 203 188 254 
X 94 217 170 251  67 231  -1  89   2   3 
X206 146   1 183  -1 209  15 150 106  90 
X184 159  64 141  55 238 195  -1 162 205 
X245 133  48  -1  59 165 121 103  88  -1 
X127  96  41  -1  97  33  -1  -1   6 131 
X187 194 138  29 167 145  81 164  75  79 
X112  31 178  66  -1  74  80  -1 172  -1 
X -1  43 224 123 130 236  -1 160 108 246 
X192 230 190 222 161 136  -1  12 200 213 
X198 239 248 107 105 139 120  -1 247 125 
X 49  76  56 199  34  10  38 111 233  -1 
X -1  -1 193   8 182  27  -1 104 240   5 
X191 115  -1 218  62  47 185  16 135 201 
X228  46 102  -1 100 140 189 208 202  13 
X 65 113  22  57 109  91 
X 90  49  26 132 156 140 212 129  -1 122 
X198  -1  97 148  38  79  25 154  80  -1 
X214 216 248 184 161  16   2 107  66 168 
X 33  -1 195  30  -1  -1  65  -1  14  84 
X222  -1 123  53 136  47  69  45  -1   1 
X125  -1 134  43  -1 102 145 126 238 194 
X 78 232 138 246 224  36  28 225  -1  46 
X130 215 120 188 119 105 231 209  60  15 
X 18  87 185 176  39 160 182  81  -1 158 
X  0 151 235 192 183 200 118  12 174  -1 
X106  -1  55  -1  -1  75 100  27 249 187 
X163 242  -1 230 254 205 179 190  96  74 
X 72  -1   9  42 241  50  57 228 142   7 
X 70 206   3 149  52 227  44 220  62 245 
X  5 221 128 186 244  56 204  -1  13 133 
X -1  91 197 165  17  -1   4 180  89  -1 
X 85  24 193 110 199 153  -1  -1  29 255 
X177 247 226  -1  98 252  83 170 237 116 
X157 191  86  94  23  82 143 109  73 219 
X117 181  93 162  59  32  -1 152  10 164 
X 95  -1 250 239 146 115 131  -1 217  77 
X234  -1   6 251  20  71  21 208  -1 189 
X137 141  40 253  64  67 172 135 127 240 
X113  76  61  -1 210  92  -1 178  58 203 
X229 124 111  -1 144 139  63 171  22 108 
X202 213 175 223 114 169 
X 60  -1  26  79 203 204 122  -1  15  97 
X -1 238 133  33 159   8 165 145  27 191 
X192  69 250  -1  -1 183   2  18  50  65 
X218  57 143  13  -1  -1  -1  93 116 213 
X -1 199  -1 171 109  74  -1 177  56  -1 
X 28  -1  -1 196  -1 227  48  31  80 221 
X  0 248 202 103 233  29 140  -1 170  21 
X216 164 137 190  45 189  -1 193 188   3 
X 58 160 155 181 176  -1 186 104 111 225 
X198 125  -1  37  -1  -1 252   9 231 223 
X169  -1 255  63  87 154  -1  -1 152  44 
X201  88  -1  -1 179 118  38  -1 115 161 
X247 123   6 121 187  91  -1 240 241 239 
X197 207  -1  12  -1 185 138  72 136  -1 
X 66  -1 234  32 150  17 254  -1  -1 226 
X144  -1 108  -1 105  82 228 172 173  14 
X 81 119  -1  -1  71  16 208 246 242 100 
X 68  43 157 158  -1  -1  84  47 229 114 
X -1  83  -1  25 230 135  86 124  78  75 
X 73  19  20  77 245  -1  53 130  90  41 
X210 110  62   4   5 244 211 131 166 219 
X200 206 220  39  -1  -1  70  -1  30 209 
X212  59  -1  99 232  89 149  55 156 178 
X184  98 224  64 142 236 235  -1  11 129 
X127 128 168 249 205 194 167 120  61 243 
X 22  -1  96  -1 146 102 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
END_OF_foo.perm
if test 16800 -ne `wc -c <foo.perm`; then
    echo shar: \"foo.perm\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lpair.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lpair.c\"
else
echo shar: Extracting \"lpair.c\" \(14095 characters\)
sed "s/^X//" >lpair.c <<'END_OF_lpair.c'
X/*
X * Letter pair and equivalence class guessing.
X *
X * Bob Baldwin, May 1985.
X */
X
X#include	<stdio.h>
X#include	<math.h>
X#include	"window.h"
X#include	"terminal.h"
X#include	"layout.h"
X#include	"specs.h"
X#include	"cipher.h"
X
X
X#define	DEBUG		FALSE
X#define	AUTOREPEAT	1	/* Number of times to repeat guess loop. */
X
X#define	LPBLABEL1	"Bigram guess, level %6.3f, prob %6.3f  -- Wait"
X#define	LPBLABEL2	"Bigram guess, level %6.3f, prob %6.3f  -- Done"
X#define	LPBHELP "F3 enters guess, ^G undoes it."
X
X
Xextern	char	mcbuf[];
Xextern	ecinfo	gecinfo;
Xextern	ec_init();
Xextern	lpbdraw(), lpbfirst(), lpbenter(), lpbundo();
X
X/* Gloabal State. */
Xkeyer	lpbktab[] = {
X		{CACCEPT, lpbenter},
X		{CUNDO, lpbundo},
X		{CGO_UP, jogup},
X		{CGO_DOWN, jogdown},
X		{CGO_LEFT, jogleft},
X		{CGO_RIGHT, jogright},
X		{0, NULL},
X};
X
X/* Routine invoked by user to put up the letter pair equivalence class
X * guessing window.
X * The window is drawn empty, and then filled in with the guess.
X * Return NULL if command completes ok.
X */
Xchar	*lpbguess(str)
Xchar	*str;			/* Command line */
X{
X	ecinfo	*ecbi;
X	int		i;
X	gwindow	*ecb;
X	float	lp_accept_level, lp_prob_cutoff;
X
X	ecb = &gbstore;
X	ecbi = &gecinfo;
X	lp_init(mcbuf, refperm(dbsgetblk(&dbstore)), ecbi);
X
X	if ((i = sscanf(str, "%*[^:]: %f %*[^:]: %f",
X			&lp_accept_level, &lp_prob_cutoff)) != 2)  {
X		return("Could not parameters.");
X		}
X
X	gbsswitch(ecb, ((char *) ecbi), lpbktab, lpbfirst, wl_noop, lpbdraw);
X
X	sprintf(statmsg, LPBLABEL1, lp_accept_level, lp_prob_cutoff);
X	gblset(&gblabel, statmsg);
X	gbsclear(ecb);
X	fflush(stdout);
X
X	lp_autoguess(ecbi, lp_accept_level);
X	decode(ecbi->ciphertext, ecbi->plaintext, ecbi->perm);
X
X	sprintf(statmsg, LPBLABEL2, lp_accept_level, lp_prob_cutoff);
X	gblset(&gblabel, statmsg);
X	lpbdraw(ecb);
X
X	return(NULL);
X}
X
X
X/*  (re) Draw the window.
X */
Xlpbdraw(ecb)
Xgwindow	*ecb;
X{
X	int			i;
X	int			row, col;
X	ecinfo		*ecbi;
X
X	ecbi = ((ecinfo *) ecb->wprivate);
X	row = 1;
X	col = 1;
X
X	for (i = 0 ; i < BLOCKSIZE ; i++)  {
X		if (i%LINELEN == 0) {
X			wl_setcur(ecb, gbspos2row(i), gbspos2col(i));
X			}
X		plnchars(1, char2sym(ecbi->plaintext[i]));
X		}
X
X	for (i = gbspos2row(BLOCKSIZE) ; i <= GBHEIGHT ; i++) {
X		wl_setcur(ecb, i, 1);
X		plnchars(LINELEN, ' ');
X		}
X
X	for (i = 1 ; i <= GBHEIGHT ; i++) {
X		wl_setcur(ecb, i, LINELEN+1);
X		plnchars(ecb->wwidth - LINELEN, ' ');
X		}
X
X	wl_setcur(ecb, row, col);
X}
X
X
X/* First time cursor enters window.
X */
Xlpbfirst(ecb, row, col)
Xgwindow	*ecb;
Xint			row, col;
X{
X	usrhelp(&user, LPBHELP);
X	wl_setcur(ecb, row, col);
X}
X
X
X/* Enter the guess into the decryption block.
X */
Xlpbenter(ecb)
Xgwindow	*ecb;
X{
X	ecinfo		*ecbi;
X
X	ecbi = ((ecinfo *) ecb->wprivate);
X	dbsmerge(&dbstore, ecbi->perm);
X	wl_rcursor(ecb);
X}
X
X
X/* Undo the last guess.
X */
Xlpbundo(ecb)
Xgwindow	*ecb;
X{
X	ecinfo		*ecbi;
X
X	ecbi = ((ecinfo *) ecb->wprivate);
X	dbsundo(&dbstore);
X	wl_rcursor(ecb);
X}
X
X
X
X/* Guess at a block using letter pair statistics.
X * The parameter accept_level is the minimum ratio (of estmated prob
X * that the guess is right over estimate prob that some other guess
X * is right) needed to accept a guess.
X * The parameter prob_cutoff is the minimum probability (density) that
X * the guess is right.  This parameter comes into play when there is one
X * guess which looks much better than the rest (i.e., has a high ratio),
X * but in fact all the guesses look pretty bad, so the program should
X * avoid picking one.
X * Modfies eci.
X */
Xlp_autoguess(eci, accept_level, prob_cutoff)
Xreg	ecinfo	*eci;
X	float	accept_level;
X	float	prob_cutoff;
X{
X	int		i;
Xreg	int		c;
X	int		ntried;
Xreg	int		classpos;
X	int		*permp;
X	int		repeat;
X
Xfor(repeat = 0 ; repeat < AUTOREPEAT ; repeat++)  {
X	ntried = 0;
X	for (ntried = 0 ; ntried < BLOCKSIZE ; ntried++)  {
X		classpos = lp_best_pos(eci, 2);
X		if (classpos == NONE)
X			break;
X		c = lp_best_char(eci, classpos,
X						accept_level - ((repeat == 0) ? 0.0 : 0.0),
X						prob_cutoff);
X		if (c != NONE) {
X			lp_accept(eci, classpos, c);
X			}
X		}
X#if (AUTOREPEAT > 1)
X	for (i = 0 ; i < eci->nclasses ; i++)  {
X		eci->classlist[i].changed = TRUE;
X		}
X#endif
X	}
X}
X
X
X/* Score a guess using letter pair statistics.
X * Bigger scores are better scores.  They range from 0 to 1.
X * A score of zero means the choice is not possible.
X * The result is the probability density that the guess is correct.
X * Actually, the resulting score is the product of the prob densities
X * of the first and second order statistics.
X */
Xfloat	lp_cscore(gsi)
Xreg	gsinfo	*gsi;
X{
X	extern	float	score2_scale, score1_scale;
X	float	score1, score2;
Xreg	float	sdev1, sdev2;		/* Standard Deviation for 1st and 2nd stats. */
X	int		ccount;
X
X	for (ccount = 0 ; gsi->cpos[ccount] != NONE ; ccount++);
X
X	sdev1 = gsi_1score(gsi);
X	if (sdev1 < 0.0)  return(0.0);
X	score1 = fexp(sdev1);
X	score1 = (score1 * isqrt[ccount]) / score1_scale;
X
X	sdev2 = gsi_2score(gsi);
X	if (sdev2 < 0.0)  return(0.0);
X	score2 = fexp(sdev2);
X	score2 = (score2 * isqrt[ccount]) / score2_scale;
X
X	return(score1 * score2);
X}
X
X
X/* Select best plaintext value for a ciphertext equiv class.
X * The class is identified by the position in the block of one
X * of the characters in the class.  The plaintext value for
X * an entire class can be specified by the plaintext value of
X * one of its members.  This routine returns the best plaintext
X * value for the ciphertext character at position firstpos.
X * If there is not a clear best value, NONE is returned.
X */
Xint	lp_best_char(eci, firstpos, alevel, min_prob)
Xreg		ecinfo	*eci;
Xint		firstpos;
Xfloat	alevel;		/* Level to accept a guess ~= prob(right)/prob(wrong) */
Xfloat	min_prob;
X{
X#if DEBUG
X	int		pvec[BLOCKSIZE+1];
X	char	str[BLOCKSIZE+1];
X#endif
X	float	total_score, score;
X	float	best_score;
X	int		best_char;
Xreg	int		c;
X	int		x,y;
X	int		class;
X	float	count;
Xreg	gsinfo	*gsi;
X	gsinfo	tmpgsi;
X	int		gssbuf[BLOCKSIZE+1];
X
X	gsi = &tmpgsi;
X	gsi_init(gsi, eci->plaintext, gssbuf);
X
X	total_score = 0.0;
X	best_score = 0.0;
X	count = 0.0;
X	best_char = NONE;
X
X	for (c = 0 ; c <= MAXCHAR  ; c++)  {
X		gsi_clear(gsi);
X		if (gsi_class_guess(gsi, eci, firstpos, c) == 0)
X			continue;
X		score = lp_cscore(gsi);
X		if (score > 0.0)  {
X			count += 1.0;
X			total_score += score;
X			}
X		if (score > best_score) {
X			best_score = score;
X			best_char = c;
X			}
X		}
X
X#if DEBUG
X	printf("Total score is %7.4f", total_score);
X	printf(".  Count is %4.0f.\n", count);
X#endif
X	if (total_score == 0.0  ||  count == 0.0  ||  best_char == NONE) {
X#if DEBUG
X		printf("NO GUESSES\n");
X#endif
X		return(NONE);
X		}
X#if DEBUG
X	printf("Best score is %7.4f", best_score);
X	printf(", which is %7.4f fraction of total", best_score/total_score);
X	printf(".\n");
X
X	class = eci->posclass[firstpos];
X	printf("Class reliability is %d.",
X		(2 * eci->classlist[class].npairs) + eci->classlist[class].nchars);
X	printf("  ");
X
X	decode_class(eci, firstpos, best_char, pvec);
X	pvec2str(str, pvec);
X	printf("The best chars are '%s'\n", str);
X#endif
X
X	if ((best_score  >  alevel * (total_score - best_score))
X	 && (best_score > min_prob)) {
X		return(best_char);
X		}
X	else {
X		return(NONE);
X		}
X}
X
X
X/* Accept a guess.
X * Updates the eci plaintext to reflect the characters deduced from
X * assuming that the plaintext character at position pos is pchar.
X * It updates the npairs count and used flag in the class info list.
X * The changed flag is set for positions pos-1 and pos+1 (if they exist).
X * The used flag is set for the class(es) that now have an accepted value.
X */
Xlp_accept(eci, firstpos, firstpchar)
Xreg		ecinfo	*eci;
Xint		firstpos;
Xint		firstpchar;
X{
X	int		firstflag;	/* For macro for_pos_in_class. */
X	int		otherpos;
Xreg	int		pos;
X	int		x,y;
X	int		pchar;
X	int		delta;
X	clinfo	*firstclassp, *otherclassp;
Xreg	clinfo	*classp;
X
X	firstpos = firstpos & MODMASK;
X	firstpchar = firstpchar & CHARMASK;
X	x = eci->scipher[firstpos];
X	y = MODMASK & (firstpchar + firstpos);
X
X	eci->perm[x] = y;
X	eci->perm[y] = x;
X
X	firstclassp = &(eci->classlist[eci->posclass[firstpos]]);
X	firstclassp->used = TRUE;
X
X	otherpos = eci->permmap[y];
X	if (otherpos == NONE)  {
X		otherclassp = NULL;
X		}
X  	else  {
X		otherclassp = &(eci->classlist[eci->posclass[otherpos]]);
X		otherclassp->used = TRUE;
X		}
X
X
X	delta = y - x;
X	for_pos_in_class(pos, firstpos)  {
X		pchar = MODMASK & (eci->scipher[pos] + delta - pos);
X		eci->plaintext[pos] = pchar;
X		if ((pos - 1) >= 0)  {
X			classp = &(eci->classlist[eci->posclass[pos - 1]]);
X			if (classp != firstclassp)  {
X				classp->changed = TRUE;
X				classp->npairs++;
X				}
X			}
X		if ((pos + 1) < BLOCKSIZE)  {
X			classp = &(eci->classlist[eci->posclass[pos + 1]]);
X			if (classp != firstclassp)  {
X				classp->changed = TRUE;
X				classp->npairs++;
X				}
X			}
X		}
X
X	if (otherpos != NONE)  {
X		delta = x - y;
X		for_pos_in_class(pos, otherpos)  {
X			pchar = MODMASK & (eci->scipher[pos] + delta - pos);
X			eci->plaintext[pos] = pchar;
X			if ((pos - 1) >= 0)  {
X				classp = &(eci->classlist[eci->posclass[pos - 1]]);
X				if (classp != otherclassp)  {
X					classp->changed = TRUE;
X					classp->npairs++;
X					}
X				}
X			if ((pos + 1) < BLOCKSIZE)  {
X				classp = &(eci->classlist[eci->posclass[pos + 1]]);
X				if (classp != otherclassp)  {
X					classp->changed = TRUE;
X					classp->npairs++;
X					}
X				}
X			}
X		}
X}
X
X
X
X/* Pick the best position to do guessing.
X * Use the class info list to select the unused class that will yield
X * the most reliable guesses.
X * The changed flag is cleared to make sure that a class is not considered
X * again unless the reliability of its guesses has changed.
X * At first, all the changed flags should be set.
X * The changed flag for the selected class is cleared.
X * Returns a position or NONE.
X */
Xint	lp_best_pos(eci, min_reliability)
Xreg		ecinfo	*eci;
Xint		min_reliability;
X{
X	int		score;
X	int		best_score, best_pos;
Xreg	clinfo	*classp;
Xreg	clinfo	*endclassp;
X
X	best_score = 0;
X	best_pos = NONE;
X	endclassp = &(eci->classlist[eci->nclasses]);
X	for (classp = &(eci->classlist[0]) ; classp < endclassp ; classp++)  {
X		if ((classp->used) || (!(classp->changed)))
X			continue;
X		score = (2 * (classp->npairs)) + classp->nchars;
X		if (score > best_score)  {
X			best_score = score;
X			best_pos = classp->firstpos;
X			}
X		}
X	if (best_score < min_reliability)
X		return(NONE);
X
X	if (best_pos != NONE)  {
X		eci->classlist[eci->posclass[best_pos]].changed = FALSE;
X		}
X	return(best_pos);
X}
X
X
X/* Fill in equiv class info from given ciphertext block
X * and permutation.
X */
Xlp_init(cipher, perm, eci)
Xchar	cipher[];
Xint		perm[];
Xreg		ecinfo	*eci;
X{
X	int		firstflag;	/* Used by for_pos_in_class */
X	int		i,j;
X	int		firstpos, char_count, pair_count;
Xreg	int		pos;
Xreg	clinfo	*class;
X
X	ec_init(cipher, perm, eci);
X
X	for (i = 0 ; i < BLOCKSIZE ; i++)  {
X		eci->posclass[i] = NONE;
X		}
X
X	eci->nclasses = 0;
X	for (i = 0 ; i < BLOCKSIZE ; i++)  {
X		if ((firstpos = eci->permmap[i]) == NONE)
X			continue;
X		char_count = 0;
X		pair_count = 0;
X		for_pos_in_class(pos, firstpos) {
X			eci->posclass[pos] = eci->nclasses;
X			char_count++;
X			}
X		for_pos_in_class(pos, firstpos) {
X			if ((pos + 1) < BLOCKSIZE)  {
X			 	if (eci->posclass[pos + 1] == eci->nclasses)  {
X					pair_count++;
X					}
X				else if (eci->perm[eci->scipher[pos + 1]] != NONE)  {
X					pair_count++;
X					}
X				}
X			if ((pos - 1) >= 0)  {
X			 	if (eci->posclass[pos - 1] == eci->nclasses)  {
X					/* Don't double count it. */
X					}
X				else if (eci->perm[eci->scipher[pos - 1]] != NONE)  {
X					pair_count++;
X					}
X				}
X			}
X		class = &(eci->classlist[eci->nclasses]);
X		class->nchars = char_count;
X		class->npairs = pair_count;
X		class->firstpos = firstpos;
X		class->changed = TRUE;
X		if (eci->perm[i] != NONE)
X			class->used = TRUE;
X		else
X			class->used = FALSE;
X
X		eci->nclasses++;
X		}
X}
X
X
X/* Initialize a guess info structure.
X * Also clears the guess buffer.
X */
Xgsi_init(gsi, pbuf, gssbuf)
Xreg		gsinfo	*gsi;
X		int		*pbuf;		/* Accepted characters. */
Xreg		int		*gssbuf;	/* Buffer for new guesses. */
X{
Xreg	int		i;
X
X	gsi->cknown = pbuf;
X	gsi->cpos[0] = NONE;
X	gsi->cguessed = gssbuf;
X	for (i = 0 ; i < BLOCKSIZE ; i++)
X		*gssbuf++ = NONE;
X}
X
X
X/* Clear out a guess from a gsi.
X */
Xgsi_clear(gsi)
Xreg	gsinfo	*gsi;
X{
Xreg	int		*ip;
X
X	for (ip = &(gsi->cpos[0]) ; *ip != NONE ; ip++)  {
X		gsi->cguessed[*ip] = NONE;
X		}
X	gsi->cpos[0] = NONE;
X}
X
X
X/* Add to a gsi with the characters deduced from assuming that
X * the character at firstpos is c.
X * If that asumption conflicts with eci->perm, then nothing is added.
X * Returns the number of characters added.
X */
Xint	gsi_class_guess(gsi, eci, firstpos, c)
Xreg		gsinfo	*gsi;
Xreg		ecinfo	*eci;
X		int		firstpos;
X		int		c;
X{
X	int		firstflag;	/* For macro for_pos_in_class. */
X	int		otherpos;
Xreg	int		pos;
X	int		x,y;
X	int		pchar;
X	int		delta;
X	int		*cposp;
X	int		nchars;
X
X	for (cposp = &(gsi->cpos[0]) ; *cposp != NONE ; cposp++);
X	nchars = 0;
X
X	firstpos = firstpos & MODMASK;
X	c = c & CHARMASK;
X	x = eci->scipher[firstpos];
X	y = MODMASK & (c + firstpos);
X
X	if (perm_conflict(eci->perm, x, y))
X		return(nchars);
X
X	delta = y - x;
X	for_pos_in_class(pos, firstpos)  {
X		pchar = MODMASK & (eci->scipher[pos] + delta - pos);
X		if ((pchar & CHARMASK) != pchar)  {
X			*cposp = NONE;
X			return(0);
X			}
X		gsi->cguessed[pos] = pchar;
X		*cposp++ = pos;
X		nchars++;
X		}
X
X	otherpos = eci->permmap[y];
X	if (otherpos != NONE)  {
X		delta = x - y;
X		for_pos_in_class(pos, otherpos)  {
X			pchar = MODMASK & (eci->scipher[pos] + delta - pos);
X			if ((pchar & CHARMASK) != pchar)  {
X				*cposp = NONE;
X				return(0);
X				}
X			gsi->cguessed[pos] = pchar;
X			*cposp++ = pos;
X			nchars++;
X			}
X		}
X	*cposp = NONE;
X	return(nchars);
X}
X
X
X/* Dump class table onto a stream.
X */
Xlp_dclasses(out, eci)
XFILE	*out;
Xecinfo	*eci;
X{
X	int		i;
X
X	fprintf(out, "\nThere are %d classes.\n", eci->nclasses);
X	for (i = 0 ; i < eci->nclasses ; i++)  {
X		fprintf(out, "Singles: %d, pairs: %d,  First member: %d",
X				eci->classlist[i].nchars, eci->classlist[i].npairs,
X				eci->classlist[i].firstpos);
X		fprintf(out, ", flags:");
X		if (!(eci->classlist[i].used))
X			fprintf(out, " not");
X		fprintf(out, " used");
X		fprintf(out, " and");
X		if (!(eci->classlist[i].changed))
X			fprintf(out, " not");
X		fprintf(out, " changed");
X		fprintf(out, "\n");
X		}
X}
X
X
END_OF_lpair.c
if test 14095 -ne `wc -c <lpair.c`; then
    echo shar: \"lpair.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f test1.perm -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"test1.perm\"
else
echo shar: Extracting \"test1.perm\" \(16800 characters\)
sed "s/^X//" >test1.perm <<'END_OF_test1.perm'
X -1  -1 116 150 159  64  -1  -1 200 232 
X -1  -1  63  -1  -1  95  -1 254  -1   8 
X -1  -1 123 117 243 210 179  -1 119  17 
X -1  46  -1 203  -1  12  -1  -1  -1  71 
X -1  -1 204  -1  -1  -1  -1  -1  -1  -1 
X 74  -1 202  -1  11  81  67  -1 141 213 
X 66  94  -1 217  29 154   3  -1  -1  -1 
X -1  -1  -1  93  -1  -1  -1  -1 173  -1 
X -1  -1  -1 196   4  -1  -1  -1  70  -1 
X -1 252  41  43  -1  -1  48  61  -1  38 
X 20  -1 166 208  -1  -1  -1  -1   5  -1 
X -1 130  -1  -1 207  -1 227 190  -1 125 
X -1  -1  -1  -1  -1  -1  51 120  -1  13 
X139  -1 127 246 248  18  -1  -1 136 167 
X -1 113  -1  -1 244 114  -1 198 201 189 
X144  22 140  -1 109  83 131 180  -1  -1 
X -1  50 250  -1  37  -1  -1 242  23 214 
X -1 112  -1  -1  -1 233  -1 161 188 104 
X -1 103  -1  -1  89  80  -1  -1  19  85 
X192 147  -1  65 199  -1 247 245  -1  60 
X -1 102  -1  88 224  -1  -1  45  -1  -1 
X -1  -1  -1 215 230  -1  -1  -1  -1  -1 
X -1 251  -1  14  -1  -1  -1  87  -1  73 
X158  -1 110 168  -1 152 197 108 133 148 
X -1  -1 184 240 100  -1 111 170 183  -1 
X 42  10 218  82  -1  -1 
X 96 114 124 223  97  19  -1  13  43  -1 
X -1  38 231   7 200 207 179 134 133   5 
X100  -1  48 160 152  93 162 168 191 127 
X -1 103 183  -1 252 193 243 242  11 180 
X 87 173 154   8  -1  -1 112  -1  22  -1 
X199  95  -1  66 163  62 128 190  -1  79 
X215 109  55 245  73  -1  53 178 214  82 
X201 138 206  64 240 182 228  -1  -1  59 
X197 248  69 203 175 111  -1  40  -1 139 
X -1 195  -1  25 217  51   0   4 251  -1 
X 20  -1 148  31 227 234 167 202  -1  61 
X219  85  46 246   1 135 142 254 211  -1 
X144  -1  -1 218   2 150 186  29  56 169 
X185 247 164  18  17 115 250  -1  71  89 
X -1 205 116 222 120  -1 226 158 102 189 
X125  -1  24  -1  42 159 221 188 147 155 
X 23 210  26  54 132  -1 184 106  27 129 
X -1 196 253  41 204  84 238 235  67  16 
X 39 192  75  32 166 130 126 224 157 149 
X 57  28 181  35 241  91 171  80 208  50 
X 14  70 107  83 174 141  72  15 198 233 
X161 118  -1 244  68  60  -1  94 123 110 
X237 156 143   3 187  -1 146 104  76 239 
X -1  12  -1 209 105 177  -1 220 176 229 
X 74 194  37  36 213  63 113 131  81  -1 
X136  98  34 172 117  -1 
X -1 122  -1 119  71 229  -1  28 223  -1 
X215  -1 197  -1  82 126 237  23  87  93 
X -1  -1 252  17  -1 177 137  -1   7  -1 
X -1 171  -1 155  -1  -1  -1  60  -1  -1 
X -1 152  -1  -1  -1  -1 241  -1 142  -1 
X243  69  -1  -1  99 134  -1  -1  -1 144 
X 37  63  -1  61  -1 250 173 114  -1  51 
X -1   4  73  72  -1 168 211  -1  92 169 
X176 166  14  -1  -1  -1  -1  18 148 117 
X129  -1  78  19 110  -1 151 154 101  54 
X244  98 242 147 227  -1  -1  -1 188 254 
X 94 217 170 251  67 231 179  89  -1   3 
X -1  -1   1 183  -1 209  15 150  -1  90 
X184 159  -1 141  55 238  -1  26 162  -1 
X245 133  48  -1  59  -1  -1 103  88  -1 
X127  96  41 186  97  33  -1 219  -1 131 
X187 194 138  -1 167  -1  81 164  75  79 
X112  31 178  66  -1  -1  80  25 172 116 
X -1  -1  -1 123 130 236 153 160 108 246 
X192  -1 190  -1 161  -1  -1  12 200 213 
X198 239 248  -1  -1  -1  -1  -1 247 125 
X -1  76  -1 199  -1  10  -1 111 233 157 
X -1  -1  -1   8  -1  -1  -1 104 240   5 
X -1 115  -1 218  -1  -1 185  16 135 201 
X228  46 102  50 100 140 189 208 202  -1 
X 65 113  22  -1 109  -1 
X 90  49  26 132 156 140 212  -1 147  -1 
X198  54  97 148  38  79  25 154  80  -1 
X214  -1 248 184 161  16   2 107  66 168 
X 33 112 195  30 166 236  65 155  14  84 
X222  -1 123  53 136  -1  69  -1 218   1 
X125 243 134  43  11 102 145 126 238 194 
X 78 232 138 246 224  36  28  -1 150  46 
X130 215 120 188 119 105 231 209  60  15 
X 18  87  -1 176  39 160  -1  81 159 158 
X  0 151 235 192 183 200  -1  12 174 101 
X -1  99  55 196 207  75  -1  27  -1 187 
X163 242  31 230 254 205 179 190  -1  74 
X 72 233  -1  42 241  50  57 228 142  -1 
X 70  -1   3 149  52 227  44 220  62 245 
X  5 221 128 186 244  56  -1   8  13 133 
X 68  91 197 165  17  37   4  -1  89  88 
X 85  24 193 110 199 153  34 201  29 255 
X -1 247 226  -1  98 252  83  -1 237 116 
X -1 191  -1  94  23  -1 143 109  73 219 
X117 181  93 162  59  32 103 152  10 164 
X 95 167 250 239  -1 115  -1 104 217  77 
X -1  -1   6 251  20  71  -1 208  48 189 
X137 141  40 253  64  -1 172 135 127  -1 
X113  76  61 121  -1  92  35 178  58 203 
X -1 124 111  51 144 139  63 171  22  -1 
X202 213 175 223 114 169 
X 60  -1  26  -1 203 204 122  -1  15  97 
X -1  -1 133  -1 159   8  -1 145  27 191 
X192  -1 250 117  -1 183   2  18  50  65 
X218  -1 143  -1  -1  -1  -1  93  -1  -1 
X -1 199  -1 171  -1  74  -1  -1  -1  -1 
X 28  -1 162  -1  -1 227  -1  -1  -1 221 
X  0 248  -1 103 233  29 140  95 170  -1 
X -1  -1 137 190  45  -1  -1  -1  -1  -1 
X -1  -1  -1 181  -1  94  -1 104 111  -1 
X198  -1  -1  37  85  67 252   9 231 223 
X169  -1  -1  63  87  -1  -1  -1 152  -1 
X201  88 180  -1 179 118  -1  23 115 161 
X247  -1   6  -1 187  -1  -1 240 241 239 
X197 207  -1  12 151 185  -1  72  -1 148 
X 66 214  -1  32 150  17 254 251 139  -1 
X144 134 108  -1  -1  -1  -1 172 173  14 
X -1 119  52  -1  -1  -1 208 246 242 100 
X 68  43 157 158  -1  -1  -1  -1 229 114 
X112  83  -1  25 230 135  -1 124  -1  -1 
X 73  19  20  -1  -1  -1  -1 130  90  41 
X210 110  -1   4   5 244 211 131 166 219 
X200 206 220  -1 141  -1  -1  -1  30 209 
X212  59  -1  99 232  -1  -1  55  -1 178 
X184  98 224  64  -1 236 235  -1  -1 129 
X127 128 168 249 205  -1 167 120  61 243 
X 22 147  96  -1 146  -1 
X -1  -1  -1 150 223 175  -1  -1  25 204 
X -1 122 181 198  -1  56  -1  -1 202  67 
X -1  -1  49 168  -1   8 145  -1 177  -1 
X 32 211  30  84  57 238  -1  83 217  -1 
X160  -1 108  89  -1  -1 228 225  -1  22 
X207 176  -1  -1  -1  -1  15  34 169 219 
X152 189 107  -1 193 123  95  19  -1  -1 
X -1 253  -1 164  -1  -1  -1  -1 230  -1 
X -1  -1 209  37  33  -1 205 213  -1  43 
X220  -1 194  -1  -1  66  -1 134  -1  -1 
X190  -1 103 102  -1  -1  -1  62  42 240 
X116 236 115  -1 156 112 110 229  -1  -1 
X131 149  11  65  -1  -1 140 196  -1  -1 
X239 120 243 139  97  -1 154 174  -1 133 
X126  -1  -1  -1  -1  26 182  -1 232 121 
X  3 162  60  -1 136 192 114 171  -1 185 
X 40  -1 151  -1  73  -1  -1 233  23  58 
X197 157  -1  -1 137   5  51  28  -1 227 
X -1  12 146  -1  -1 159 255  -1  -1  61 
X100 221 155  64  92  -1 127 170  13  -1 
X244 210  18 246   9  86 208  50 206  82 
X201  31 249  87 242  -1  -1  38  -1  59 
X 90 191  -1   4  -1  47  -1 179  46 117 
X 78  -1 148 167  -1 237 111 235  35 130 
X109  -1 214 132 200  -1 203  -1  -1 212 
X -1  -1  -1  71  -1 186 
X120 146 232  66 217  81 113  -1 144 239 
X 44  49 230  -1 166  60 151 218  34  -1 
X 80 128 193 249  -1 148 116 210 183 165 
X 94  -1 109 133  18 192 163  73 252 158 
X 61  -1 195  46  10 102  43  90 131  11 
X122  -1 135 172  -1 207 188  58  57 227 
X 15  40  77  99 143 138   3 231 226 136 
X221  -1  -1  37 253 104  -1  62 254 185 
X 20   5  -1 132 173 189 124  91 150 255 
X 47  87 212 184  30  -1  -1 149 187  63 
X178  -1  45 228  75 180 177 141 125  32 
X121  -1  -1   6 161  -1  26 244 224 137 
X  0 110  50 157  86 108  -1 156  21 147 
X238  48  83  33 240  52  69 119  65 175 
X -1 107 160  64   8 176   1 129  25  97 
X 88  16 225  -1 243 164 127 123  39  -1 
X142 114  -1  36 155  29  14 169 233 167 
X211  -1  53  84  -1 139 145 106 100 204 
X105 201 223  28  93  79 203  98  56  85 
X -1 251  35  22 205  42  -1 219 213 235 
X -1 181 222 186 179 194  -1  55 246 215 
X 27 170  92 198  -1 209  -1   4  17 197 
X -1  70 202 182 118 152  68  59 103 245 
X 12  67   2 168  -1 199 247 250 130   9 
X134 248  -1 154 117 229 208 236 241  23 
X237 191  38  74  78  89 
X -1 165 187 203   8  -1  -1 168   4 124 
X131  36  86  -1  -1  83  54  -1  -1 150 
X221  56 172 144  65 218  42  33 109 252 
X 58  93 160  27 115 214  11  -1  40 117 
X 38  -1  26 126 228  94 247 152 235 232 
X -1 181  87  -1  16 108  21 138  30 147 
X 66 222 250  84 174  24  60 199 116  90 
X170 245 239 242 213 118  -1 224 209  -1 
X -1 151  98  15  63 193  12  52  -1  -1 
X 69  99 169  31  45 217 156 104  82  91 
X185  -1 223 133  97 143 127  -1  55  28 
X114  -1 134 141 110  34  68  39  75 237 
X -1 179  -1 157   9 130  43 106 167 246 
X125  10 176 103 112 255 251 142  57 200 
X155 113 137 105  23 177 173  59 192 189 
X 19  81  47 161  -1 140  96 123  -1  -1 
X 32 153 220  -1  -1   1 190 128   7  92 
X 70 186  22 146  64 233 132 145 231 121 
X254  51  -1 216 210 100 171   2  -1 149 
X166 198 148  85 206  -1 208 249 191  67 
X139 207  -1   3 241  -1 194 201 196  78 
X184  -1 244  74  35 238 183  95  25 230 
X162  20  61 102  77  -1 236  -1  44  -1 
X219 178  49 175  -1  48 226 119 215  72 
X -1 204  73  -1 212  71 129  46  -1 197 
X 62 136  29  -1 180 135 
X -1  78  -1 188 184  32 151 236 130  16 
X 57  -1 209 240 213  63   9 157 123  84 
X147  -1 172 219 224 242  49  53 220  -1 
X146 196   5  66 231 254 179  -1 210 197 
X227  74 112  -1 160 204  69 193 158  26 
X 59  -1  65  27  77 142 194  10 141  50 
X199 207  -1  15  91  52  33 155 191  46 
X -1  -1 252  -1  41 202 144  54   1  -1 
X100 189 140 103  19  89 234  97 247  85 
X -1  64  -1 225 162 153 206  87 120 104 
X 80 248 117  83  99 124 134 177 135 118 
X -1 119  42 164 148 139 183 102 109 111 
X 98 241 208  18 105 175 192  -1 176  -1 
X  8 235 205 198 106 108  -1 182 221 115 
X 82  58  55 253  76 232  30  20 114  -1 
X168   6  -1  95  -1  67 251  17  48 222 
X 44  -1  94 171 113 174  -1 229 150  -1 
X -1 163  22 201 165 125 128 107  -1  36 
X195 238 137 116   4 203  -1 250   3  81 
X239  68 126  47  56 180  31  39 133  60 
X211 173  75 185  45 132  96  61 122  12 
X 38 200  -1  14  -1 218 255 244 215  23 
X 28 138 159 246  24  93  -1  40  -1 167 
X -1  34 145  -1  86 131   7  -1 181 190 
X 13 121  25  -1 217 249 223  88 101 245 
X187 156  72 143  35 216 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
X -1  -1  -1  -1  -1  -1 
END_OF_test1.perm
if test 16800 -ne `wc -c <test1.perm`; then
    echo shar: \"test1.perm\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 6 \(of 11\).
cp /dev/null ark6isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 11 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0