Fossil SCM

Completed the description of the delta encoder

aku 2007-08-27 04:35 trunk
Commit 59ad045fef5234bfca9e0a83eb1ab98d8214b981
--- a/art/encode10.dia
+++ b/art/encode10.dia
@@ -0,0 +1,657 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
3
+ <dia:diagramdata>
4
+ <dia:attribute name="background">
5
+ <dia:color val="#ffffff"/>
6
+ </dia:attribute>
7
+ <dia:attribute name="pagebreak">
8
+ <dia:color val="#000099"/>
9
+ </dia:attribute>
10
+ <dia:attribute name="paper">
11
+ <dia:composite type="paper">
12
+ <dia:attribute name="name">
13
+ <dia:string>#Letter#</dia:string>
14
+ </dia:attribute>
15
+ <dia:attribute name="tmargin">
16
+ <dia:real val="2.5399999618530273"/>
17
+ </dia:attribute>
18
+ <dia:attribute name="bmargin">
19
+ <dia:real val="2.5399999618530273"/>
20
+ </dia:attribute>
21
+ <dia:attribute name="lmargin">
22
+ <dia:real val="2.5399999618530273"/>
23
+ </dia:attribute>
24
+ <dia:attribute name="rmargin">
25
+ <dia:real val="2.5399999618530273"/>
26
+ </dia:attribute>
27
+ <dia:attribute name="is_portrait">
28
+ <dia:boolean val="true"/>
29
+ </dia:attribute>
30
+ <dia:attribute name="scaling">
31
+ <dia:real val="1"/>
32
+ </dia:attribute>
33
+ <dia:attribute name="fitto">
34
+ <dia:boolean val="false"/>
35
+ </dia:attribute>
36
+ </dia:composite>
37
+ </dia:attribute>
38
+ <dia:attribute name="grid">
39
+ <dia:composite type="grid">
40
+ <dia:attribute name="width_x">
41
+ <dia:real val="1"/>
42
+ </dia:attribute>
43
+ <dia:attribute name="width_y">
44
+ <dia:real val="1"/>
45
+ </dia:attribute>
46
+ <dia:attribute name="visible_x">
47
+ <dia:int val="1"/>
48
+ </dia:attribute>
49
+ <dia:attribute name="visible_y">
50
+ <dia:int val="1"/>
51
+ </dia:attribute>
52
+ <dia:composite type="color"/>
53
+ </dia:composite>
54
+ </dia:attribute>
55
+ <dia:attribute name="color">
56
+ <dia:color val="#d8e5e5"/>
57
+ </dia:attribute>
58
+ <dia:attribute name="guides">
59
+ <dia:composite type="guides">
60
+ <dia:attribute name="hguides"/>
61
+ <dia:attribute name="vguides"/>
62
+ </dia:composite>
63
+ </dia:attribute>
64
+ </dia:diagramdata>
65
+ <dia:layer name="Background" visible="true">
66
+ <dia:group>
67
+ <dia:group>
68
+ <dia:object type="Standard - Box" version="0" id="O0">
69
+ <dia:attribute name="obj_pos">
70
+ <dia:point val="6,2"/>
71
+ </dia:attribute>
72
+ <dia:attribute name="obj_bb">
73
+ <dia:rectangle val="5.975,1.975;12.025,22.025"/>
74
+ </dia:attribute>
75
+ <dia:attribute name="elem_corner">
76
+ <dia:point val="6,2"/>
77
+ </dia:attribute>
78
+ <dia:attribute name="elem_width">
79
+ <dia:real val="6"/>
80
+ </dia:attribute>
81
+ <dia:attribute name="elem_height">
82
+ <dia:real val="20"/>
83
+ </dia:attribute>
84
+ <dia:attribute name="border_width">
85
+ <dia:real val="0.050000000000000003"/>
86
+ </dia:attribute>
87
+ <dia:attribute name="show_background">
88
+ <dia:boolean val="true"/>
89
+ </dia:attribute>
90
+ <dia:attribute name="corner_radius">
91
+ <dia:real val="1.1754943508222875e-38"/>
92
+ </dia:attribute>
93
+ </dia:object>
94
+ <dia:group>
95
+ <dia:object type="Standard - Box" version="0" id="O1">
96
+ <dia:attribute name="obj_pos">
97
+ <dia:point val="6,8"/>
98
+ </dia:attribute>
99
+ <dia:attribute name="obj_bb">
100
+ <dia:rectangle val="5.975,7.975;12.025,9.025"/>
101
+ </dia:attribute>
102
+ <dia:attribute name="elem_corner">
103
+ <dia:point val="6,8"/>
104
+ </dia:attribute>
105
+ <dia:attribute name="elem_width">
106
+ <dia:real val="6"/>
107
+ </dia:attribute>
108
+ <dia:attribute name="elem_height">
109
+ <dia:real val="1"/>
110
+ </dia:attribute>
111
+ <dia:attribute name="border_width">
112
+ <dia:real val="0.050000000000000003"/>
113
+ </dia:attribute>
114
+ <dia:attribute name="inner_color">
115
+ <dia:color val="#ffff00"/>
116
+ </dia:attribute>
117
+ <dia:attribute name="show_background">
118
+ <dia:boolean val="true"/>
119
+ </dia:attribute>
120
+ <dia:attribute name="corner_radius">
121
+ <dia:real val="1.1754943508222875e-38"/>
122
+ </dia:attribute>
123
+ </dia:object>
124
+ <dia:object type="Standard - Text" version="1" id="O2">
125
+ <dia:attribute name="obj_pos">
126
+ <dia:point val="5.95,8.4925"/>
127
+ </dia:attribute>
128
+ <dia:attribute name="obj_bb">
129
+ <dia:rectangle val="5.95,7.95;10.145,8.89"/>
130
+ </dia:attribute>
131
+ <dia:attribute name="text">
132
+ <dia:composite type="text">
133
+ <dia:attribute name="string">
134
+ <dia:string>#Gap =&gt; Insert#</dia:string>
135
+ </dia:attribute>
136
+ <dia:attribute name="font">
137
+ <dia:font family="sans" style="0" name="Helvetica"/>
138
+ </dia:attribute>
139
+ <dia:attribute name="height">
140
+ <dia:real val="0.80000000000000004"/>
141
+ </dia:attribute>
142
+ <dia:attribute name="pos">
143
+ <dia:point val="5.95,8.4925"/>
144
+ </dia:attribute>
145
+ <dia:attribute name="color">
146
+ <dia:color val="#000000"/>
147
+ </dia:attribute>
148
+ <dia:attribute name="alignment">
149
+ <dia:enum val="0"/>
150
+ </dia:attribute>
151
+ </dia:composite>
152
+ </dia:attribute>
153
+ <dia:attribute name="valign">
154
+ <dia:enum val="3"/>
155
+ </dia:attribute>
156
+ </dia:object>
157
+ </dia:group>
158
+ <dia:group>
159
+ <dia:object type="Standard - Box" version="0" id="O3">
160
+ <dia:attribute name="obj_pos">
161
+ <dia:point val="6,2"/>
162
+ </dia:attribute>
163
+ <dia:attribute name="obj_bb">
164
+ <dia:rectangle val="5.975,1.975;12.025,8.025"/>
165
+ </dia:attribute>
166
+ <dia:attribute name="elem_corner">
167
+ <dia:point val="6,2"/>
168
+ </dia:attribute>
169
+ <dia:attribute name="elem_width">
170
+ <dia:real val="6"/>
171
+ </dia:attribute>
172
+ <dia:attribute name="elem_height">
173
+ <dia:real val="6"/>
174
+ </dia:attribute>
175
+ <dia:attribute name="border_width">
176
+ <dia:real val="0.050000000000000003"/>
177
+ </dia:attribute>
178
+ <dia:attribute name="inner_color">
179
+ <dia:color val="#90ee90"/>
180
+ </dia:attribute>
181
+ <dia:attribute name="show_background">
182
+ <dia:boolean val="true"/>
183
+ </dia:attribute>
184
+ <dia:attribute name="corner_radius">
185
+ <dia:real val="1.1754943508222875e-38"/>
186
+ </dia:attribute>
187
+ </dia:object>
188
+ <dia:object type="Standard - Text" version="1" id="O4">
189
+ <dia:attribute name="obj_pos">
190
+ <dia:point val="5.975,2.53456"/>
191
+ </dia:attribute>
192
+ <dia:attribute name="obj_bb">
193
+ <dia:rectangle val="5.975,1.99206;8.91195,2.93206"/>
194
+ </dia:attribute>
195
+ <dia:attribute name="text">
196
+ <dia:composite type="text">
197
+ <dia:attribute name="string">
198
+ <dia:string>#Processed#</dia:string>
199
+ </dia:attribute>
200
+ <dia:attribute name="font">
201
+ <dia:font family="sans" style="0" name="Helvetica"/>
202
+ </dia:attribute>
203
+ <dia:attribute name="height">
204
+ <dia:real val="0.80000000000000004"/>
205
+ </dia:attribute>
206
+ <dia:attribute name="pos">
207
+ <dia:point val="5.975,2.53456"/>
208
+ </dia:attribute>
209
+ <dia:attribute name="color">
210
+ <dia:color val="#000000"/>
211
+ </dia:attribute>
212
+ <dia:attribute name="alignment">
213
+ <dia:enum val="0"/>
214
+ </dia:attribute>
215
+ </dia:composite>
216
+ </dia:attribute>
217
+ <dia:attribute name="valign">
218
+ <dia:enum val="3"/>
219
+ </dia:attribute>
220
+ </dia:object>
221
+ </dia:group>
222
+ <dia:group>
223
+ <dia:object type="Standard - Box" version="0" id="O5">
224
+ <dia:attribute name="obj_pos">
225
+ <dia:point val="6,9"/>
226
+ </dia:attribute>
227
+ <dia:attribute name="obj_bb">
228
+ <dia:rectangle val="5.975,8.975;12.025,18.025"/>
229
+ </dia:attribute>
230
+ <dia:attribute name="elem_corner">
231
+ <dia:point val="6,9"/>
232
+ </dia:attribute>
233
+ <dia:attribute name="elem_width">
234
+ <dia:real val="6"/>
235
+ </dia:attribute>
236
+ <dia:attribute name="elem_height">
237
+ <dia:real val="9"/>
238
+ </dia:attribute>
239
+ <dia:attribute name="border_width">
240
+ <dia:real val="0.050000000000000003"/>
241
+ </dia:attribute>
242
+ <dia:attribute name="inner_color">
243
+ <dia:color val="#ffa500"/>
244
+ </dia:attribute>
245
+ <dia:attribute name="show_background">
246
+ <dia:boolean val="true"/>
247
+ </dia:attribute>
248
+ <dia:attribute name="corner_radius">
249
+ <dia:real val="1.1754943508222875e-38"/>
250
+ </dia:attribute>
251
+ </dia:object>
252
+ <dia:object type="Standard - Text" version="1" id="O6">
253
+ <dia:attribute name="obj_pos">
254
+ <dia:point val="5.975,9.53456"/>
255
+ </dia:attribute>
256
+ <dia:attribute name="obj_bb">
257
+ <dia:rectangle val="5.975,8.99206;11.4275,9.93206"/>
258
+ </dia:attribute>
259
+ <dia:attribute name="text">
260
+ <dia:composite type="text">
261
+ <dia:attribute name="string">
262
+ <dia:string>#Common =&gt; Copy#</dia:string>
263
+ </dia:attribute>
264
+ <dia:attribute name="font">
265
+ <dia:font family="sans" style="0" name="Helvetica"/>
266
+ </dia:attribute>
267
+ <dia:attribute name="height">
268
+ <dia:real val="0.80000000000000004"/>
269
+ </dia:attribute>
270
+ <dia:attribute name="pos">
271
+ <dia:point val="5.975,9.53456"/>
272
+ </dia:attribute>
273
+ <dia:attribute name="color">
274
+ <dia:color val="#000000"/>
275
+ </dia:attribute>
276
+ <dia:attribute name="alignment">
277
+ <dia:enum val="0"/>
278
+ </dia:attribute>
279
+ </dia:composite>
280
+ </dia:attribute>
281
+ <dia:attribute name="valign">
282
+ <dia:enum val="3"/>
283
+ </dia:attribute>
284
+ </dia:object>
285
+ </dia:group>
286
+ <dia:group>
287
+ <dia:object type="Standard - Box" version="0" id="O7">
288
+ <dia:attribute name="obj_pos">
289
+ <dia:point val="5,11"/>
290
+ </dia:attribute>
291
+ <dia:attribute name="obj_bb">
292
+ <dia:rectangle val="4.95,10.95;13.05,15.05"/>
293
+ </dia:attribute>
294
+ <dia:attribute name="elem_corner">
295
+ <dia:point val="5,11"/>
296
+ </dia:attribute>
297
+ <dia:attribute name="elem_width">
298
+ <dia:real val="8"/>
299
+ </dia:attribute>
300
+ <dia:attribute name="elem_height">
301
+ <dia:real val="4"/>
302
+ </dia:attribute>
303
+ <dia:attribute name="inner_color">
304
+ <dia:color val="#bfbfbf"/>
305
+ </dia:attribute>
306
+ <dia:attribute name="show_background">
307
+ <dia:boolean val="true"/>
308
+ </dia:attribute>
309
+ <dia:attribute name="corner_radius">
310
+ <dia:real val="1.1754943508222875e-38"/>
311
+ </dia:attribute>
312
+ </dia:object>
313
+ <dia:object type="Standard - Text" version="1" id="O8">
314
+ <dia:attribute name="obj_pos">
315
+ <dia:point val="4.95,11.9675"/>
316
+ </dia:attribute>
317
+ <dia:attribute name="obj_bb">
318
+ <dia:rectangle val="4.95,10.95;9.26848,12.71"/>
319
+ </dia:attribute>
320
+ <dia:attribute name="text">
321
+ <dia:composite type="text">
322
+ <dia:attribute name="string">
323
+ <dia:string>#Window#</dia:string>
324
+ </dia:attribute>
325
+ <dia:attribute name="font">
326
+ <dia:font family="sans" style="0" name="Helvetica"/>
327
+ </dia:attribute>
328
+ <dia:attribute name="height">
329
+ <dia:real val="1.5"/>
330
+ </dia:attribute>
331
+ <dia:attribute name="pos">
332
+ <dia:point val="4.95,11.9675"/>
333
+ </dia:attribute>
334
+ <dia:attribute name="color">
335
+ <dia:color val="#000000"/>
336
+ </dia:attribute>
337
+ <dia:attribute name="alignment">
338
+ <dia:enum val="0"/>
339
+ </dia:attribute>
340
+ </dia:composite>
341
+ </dia:attribute>
342
+ <dia:attribute name="valign">
343
+ <dia:enum val="3"/>
344
+ </dia:attribute>
345
+ </dia:object>
346
+ </dia:group>
347
+ </dia:group>
348
+ <dia:group>
349
+ <dia:object type="Standard - Box" version="0" id="O9">
350
+ <dia:attribute name="obj_pos">
351
+ <dia:point val="18,2"/>
352
+ </dia:attribute>
353
+ <dia:attribute name="obj_bb">
354
+ <dia:rectangle val="17.975,1.975;24.025,24.025"/>
355
+ </dia:attribute>
356
+ <dia:attribute name="elem_corner">
357
+ <dia:point val="18,2"/>
358
+ </dia:attribute>
359
+ <dia:attribute name="elem_width">
360
+ <dia:real val="6"/>
361
+ </dia:attribute>
362
+ <dia:attribute name="elem_height">
363
+ <dia:real val="22"/>
364
+ </dia:attribute>
365
+ <dia:attribute name="border_width">
366
+ <dia:real val="0.050000000000000003"/>
367
+ </dia:attribute>
368
+ <dia:attribute name="show_background">
369
+ <dia:boolean val="true"/>
370
+ </dia:attribute>
371
+ <dia:attribute name="corner_radius">
372
+ <dia:real val="1.1754943508222875e-38"/>
373
+ </dia:attribute>
374
+ </dia:object>
375
+ <dia:object type="Standard - Box" version="0" id="O10">
376
+ <dia:attribute name="obj_pos">
377
+ <dia:point val="18,5"/>
378
+ </dia:attribute>
379
+ <dia:attribute name="obj_bb">
380
+ <dia:rectangle val="17.975,4.975;24.025,14.025"/>
381
+ </dia:attribute>
382
+ <dia:attribute name="elem_corner">
383
+ <dia:point val="18,5"/>
384
+ </dia:attribute>
385
+ <dia:attribute name="elem_width">
386
+ <dia:real val="6"/>
387
+ </dia:attribute>
388
+ <dia:attribute name="elem_height">
389
+ <dia:real val="9"/>
390
+ </dia:attribute>
391
+ <dia:attribute name="border_width">
392
+ <dia:real val="0.050000000000000003"/>
393
+ </dia:attribute>
394
+ <dia:attribute name="inner_color">
395
+ <dia:color val="#ffa500"/>
396
+ </dia:attribute>
397
+ <dia:attribute name="show_background">
398
+ <dia:boolean val="true"/>
399
+ </dia:attribute>
400
+ <dia:attribute name="corner_radius">
401
+ <dia:real val="1.1754943508222875e-38"/>
402
+ </dia:attribute>
403
+ </dia:object>
404
+ </dia:group>
405
+ <dia:group>
406
+ <dia:object type="Standard - Text" version="1" id="O11">
407
+ <dia:attribute name="obj_pos">
408
+ <dia:point val="14,9"/>
409
+ </dia:attribute>
410
+ <dia:attribute name="obj_bb">
411
+ <dia:rectangle val="14,8.4575;16.8122,9.3975"/>
412
+ </dia:attribute>
413
+ <dia:attribute name="text">
414
+ <dia:composite type="text">
415
+ <dia:attribute name="string">
416
+ <dia:string>#Signature#</dia:string>
417
+ </dia:attribute>
418
+ <dia:attribute name="font">
419
+ <dia:font family="sans" style="0" name="Helvetica"/>
420
+ </dia:attribute>
421
+ <dia:attribute name="height">
422
+ <dia:real val="0.80000000000000004"/>
423
+ </dia:attribute>
424
+ <dia:attribute name="pos">
425
+ <dia:point val="14,9"/>
426
+ </dia:attribute>
427
+ <dia:attribute name="color">
428
+ <dia:color val="#000000"/>
429
+ </dia:attribute>
430
+ <dia:attribute name="alignment">
431
+ <dia:enum val="0"/>
432
+ </dia:attribute>
433
+ </dia:composite>
434
+ </dia:attribute>
435
+ <dia:attribute name="valign">
436
+ <dia:enum val="3"/>
437
+ </dia:attribute>
438
+ </dia:object>
439
+ <dia:object type="Standard - ZigZagLine" version="1" id="O12">
440
+ <dia:attribute name="obj_pos">
441
+ <dia:point val="12,13"/>
442
+ </dia:attribute>
443
+ <dia:attribute name="obj_bb">
444
+ <dia:rectangle val="11.95,9;18.05,13.05"/>
445
+ </dia:attribute>
446
+ <dia:attribute name="orth_points">
447
+ <dia:point val="12,13"/>
448
+ <dia:point val="15,13"/>
449
+ <dia:point val="15,9.5"/>
450
+ <dia:point val="18,9.5"/>
451
+ </dia:attribute>
452
+ <dia:attribute name="orth_orient">
453
+ <dia:enum val="0"/>
454
+ <dia:enum val="1"/>
455
+ <dia:enum val="0"/>
456
+ </dia:attribute>
457
+ <dia:attribute name="autorouting">
458
+ <dia:boolean val="true"/>
459
+ </dia:attribute>
460
+ <dia:attribute name="end_arrow">
461
+ <dia:enum val="22"/>
462
+ </dia:attribute>
463
+ <dia:attribute name="end_arrow_length">
464
+ <dia:real val="0.5"/>
465
+ </dia:attribute>
466
+ <dia:attribute name="end_arrow_width">
467
+ <dia:real val="0.5"/>
468
+ </dia:attribute>
469
+ </dia:object>
470
+ </dia:group>
471
+ <dia:group>
472
+ <dia:object type="Standard - Text" version="1" id="O13">
473
+ <dia:attribute name="obj_pos">
474
+ <dia:point val="2,8"/>
475
+ </dia:attribute>
476
+ <dia:attribute name="obj_bb">
477
+ <dia:rectangle val="2,6.9825;4.6625,8.7425"/>
478
+ </dia:attribute>
479
+ <dia:attribute name="text">
480
+ <dia:composite type="text">
481
+ <dia:attribute name="string">
482
+ <dia:string>#Base#</dia:string>
483
+ </dia:attribute>
484
+ <dia:attribute name="font">
485
+ <dia:font family="sans" style="0" name="Helvetica"/>
486
+ </dia:attribute>
487
+ <dia:attribute name="height">
488
+ <dia:real val="1.5"/>
489
+ </dia:attribute>
490
+ <dia:attribute name="pos">
491
+ <dia:point val="2,8"/>
492
+ </dia:attribute>
493
+ <dia:attribute name="color">
494
+ <dia:color val="#000000"/>
495
+ </dia:attribute>
496
+ <dia:attribute name="alignment">
497
+ <dia:enum val="0"/>
498
+ </dia:attribute>
499
+ </dia:composite>
500
+ </dia:attribute>
501
+ <dia:attribute name="valign">
502
+ <dia:enum val="3"/>
503
+ </dia:attribute>
504
+ </dia:object>
505
+ <dia:object type="Standard - Line" version="0" id="O14">
506
+ <dia:attribute name="obj_pos">
507
+ <dia:point val="5,8"/>
508
+ </dia:attribute>
509
+ <dia:attribute name="obj_bb">
510
+ <dia:rectangle val="4.95,7.5;6.05,8.5"/>
511
+ </dia:attribute>
512
+ <dia:attribute name="conn_endpoints">
513
+ <dia:point val="5,8"/>
514
+ <dia:point val="6,8"/>
515
+ </dia:attribute>
516
+ <dia:attribute name="numcp">
517
+ <dia:int val="1"/>
518
+ </dia:attribute>
519
+ <dia:attribute name="end_arrow">
520
+ <dia:enum val="22"/>
521
+ </dia:attribute>
522
+ <dia:attribute name="end_arrow_length">
523
+ <dia:real val="0.5"/>
524
+ </dia:attribute>
525
+ <dia:attribute name="end_arrow_width">
526
+ <dia:real val="0.5"/>
527
+ </dia:attribute>
528
+ </dia:object>
529
+ </dia:group>
530
+ <dia:group>
531
+ <dia:object type="Standard - Text" version="1" id="O15">
532
+ <dia:attribute name="obj_pos">
533
+ <dia:point val="1,11"/>
534
+ </dia:attribute>
535
+ <dia:attribute name="obj_bb">
536
+ <dia:rectangle val="1,9.9825;3.6725,11.7425"/>
537
+ </dia:attribute>
538
+ <dia:attribute name="text">
539
+ <dia:composite type="text">
540
+ <dia:attribute name="string">
541
+ <dia:string>#Slide#</dia:string>
542
+ </dia:attribute>
543
+ <dia:attribute name="font">
544
+ <dia:font family="sans" style="0" name="Helvetica"/>
545
+ </dia:attribute>
546
+ <dia:attribute name="height">
547
+ <dia:real val="1.5"/>
548
+ </dia:attribute>
549
+ <dia:attribute name="pos">
550
+ <dia:point val="1,11"/>
551
+ </dia:attribute>
552
+ <dia:attribute name="color">
553
+ <dia:color val="#000000"/>
554
+ </dia:attribute>
555
+ <dia:attribute name="alignment">
556
+ <dia:enum val="0"/>
557
+ </dia:attribute>
558
+ </dia:composite>
559
+ </dia:attribute>
560
+ <dia:attribute name="valign">
561
+ <dia:enum val="3"/>
562
+ </dia:attribute>
563
+ </dia:object>
564
+ <dia:object type="Standard - Line" version="0" id="O16">
565
+ <dia:attribute name="obj_pos">
566
+ <dia:point val="4,11"/>
567
+ </dia:attribute>
568
+ <dia:attribute name="obj_bb">
569
+ <dia:rectangle val="3.95,10.5;5.05,11.5"/>
570
+ </dia:attribute>
571
+ <dia:attribute name="conn_endpoints">
572
+ <dia:point val="4,11"/>
573
+ <dia:point val="5,11"/>
574
+ </dia:attribute>
575
+ <dia:attribute name="numcp">
576
+ <dia:int val="1"/>
577
+ </dia:attribute>
578
+ <dia:attribute name="end_arrow">
579
+ <dia:enum val="22"/>
580
+ </dia:attribute>
581
+ <dia:attribute name="end_arrow_length">
582
+ <dia:real val="0.5"/>
583
+ </dia:attribute>
584
+ <dia:attribute name="end_arrow_width">
585
+ <dia:real val="0.5"/>
586
+ </dia:attribute>
587
+ </dia:object>
588
+ </dia:group>
589
+ <dia:object type="Standard - Text" version="1" id="O17">
590
+ <dia:attribute name="obj_pos">
591
+ <dia:point val="6,2"/>
592
+ </dia:attribute>
593
+ <dia:attribute name="obj_bb">
594
+ <dia:rectangle val="6,0.9825;9.38727,2.7425"/>
595
+ </dia:attribute>
596
+ <dia:attribute name="text">
597
+ <dia:composite type="text">
598
+ <dia:attribute name="string">
599
+ <dia:string>#Target#</dia:string>
600
+ </dia:attribute>
601
+ <dia:attribute name="font">
602
+ <dia:font family="sans" style="0" name="Helvetica"/>
603
+ </dia:attribute>
604
+ <dia:attribute name="height">
605
+ <dia:real val="1.5"/>
606
+ </dia:attribute>
607
+ <dia:attribute name="pos">
608
+ <dia:point val="6,2"/>
609
+ </dia:attribute>
610
+ <dia:attribute name="color">
611
+ <dia:color val="#000000"/>
612
+ </dia:attribute>
613
+ <dia:attribute name="alignment">
614
+ <dia:enum val="0"/>
615
+ </dia:attribute>
616
+ </dia:composite>
617
+ </dia:attribute>
618
+ <dia:attribute name="valign">
619
+ <dia:enum val="3"/>
620
+ </dia:attribute>
621
+ </dia:object>
622
+ <dia:object type="Standard - Text" version="1" id="O18">
623
+ <dia:attribute name="obj_pos">
624
+ <dia:point val="18,2"/>
625
+ </dia:attribute>
626
+ <dia:attribute name="obj_bb">
627
+ <dia:rectangle val="18,0.9825;21.3125,2.7425"/>
628
+ </dia:attribute>
629
+ <dia:attribute name="text">
630
+ <dia:composite type="text">
631
+ <dia:attribute name="string">
632
+ <dia:string>#Origin#</dia:string>
633
+ </dia:attribute>
634
+ <dia:attribute name="font">
635
+ <dia:font family="sans" style="0" name="Helvetica"/>
636
+ </dia:attribute>
637
+ <dia:attribute name="height">
638
+ <dia:real val="1.5"/>
639
+ </dia:attribute>
640
+ <dia:attribute name="pos">
641
+ <dia:point val="18,2"/>
642
+ </dia:attribute>
643
+ <dia:attribute name="color">
644
+ <dia:color val="#000000"/>
645
+ </dia:attribute>
646
+ <dia:attribute name="alignment">
647
+ <dia:enum val="0"/>
648
+ </dia:attribute>
649
+ </dia:composite>
650
+ </dia:attribute>
651
+ <dia:attribute name="valign">
652
+ <dia:enum val="3"/>
653
+ </dia:attribute>
654
+ </dia:object>
655
+ </dia:group>
656
+ </dia:layer>
657
+</dia:diagram>
--- a/art/encode10.dia
+++ b/art/encode10.dia
@@ -0,0 +1,657 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/art/encode10.dia
+++ b/art/encode10.dia
@@ -0,0 +1,657 @@
1 <?xml version="1.0" encoding="UTF-8"?>
2 <dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
3 <dia:diagramdata>
4 <dia:attribute name="background">
5 <dia:color val="#ffffff"/>
6 </dia:attribute>
7 <dia:attribute name="pagebreak">
8 <dia:color val="#000099"/>
9 </dia:attribute>
10 <dia:attribute name="paper">
11 <dia:composite type="paper">
12 <dia:attribute name="name">
13 <dia:string>#Letter#</dia:string>
14 </dia:attribute>
15 <dia:attribute name="tmargin">
16 <dia:real val="2.5399999618530273"/>
17 </dia:attribute>
18 <dia:attribute name="bmargin">
19 <dia:real val="2.5399999618530273"/>
20 </dia:attribute>
21 <dia:attribute name="lmargin">
22 <dia:real val="2.5399999618530273"/>
23 </dia:attribute>
24 <dia:attribute name="rmargin">
25 <dia:real val="2.5399999618530273"/>
26 </dia:attribute>
27 <dia:attribute name="is_portrait">
28 <dia:boolean val="true"/>
29 </dia:attribute>
30 <dia:attribute name="scaling">
31 <dia:real val="1"/>
32 </dia:attribute>
33 <dia:attribute name="fitto">
34 <dia:boolean val="false"/>
35 </dia:attribute>
36 </dia:composite>
37 </dia:attribute>
38 <dia:attribute name="grid">
39 <dia:composite type="grid">
40 <dia:attribute name="width_x">
41 <dia:real val="1"/>
42 </dia:attribute>
43 <dia:attribute name="width_y">
44 <dia:real val="1"/>
45 </dia:attribute>
46 <dia:attribute name="visible_x">
47 <dia:int val="1"/>
48 </dia:attribute>
49 <dia:attribute name="visible_y">
50 <dia:int val="1"/>
51 </dia:attribute>
52 <dia:composite type="color"/>
53 </dia:composite>
54 </dia:attribute>
55 <dia:attribute name="color">
56 <dia:color val="#d8e5e5"/>
57 </dia:attribute>
58 <dia:attribute name="guides">
59 <dia:composite type="guides">
60 <dia:attribute name="hguides"/>
61 <dia:attribute name="vguides"/>
62 </dia:composite>
63 </dia:attribute>
64 </dia:diagramdata>
65 <dia:layer name="Background" visible="true">
66 <dia:group>
67 <dia:group>
68 <dia:object type="Standard - Box" version="0" id="O0">
69 <dia:attribute name="obj_pos">
70 <dia:point val="6,2"/>
71 </dia:attribute>
72 <dia:attribute name="obj_bb">
73 <dia:rectangle val="5.975,1.975;12.025,22.025"/>
74 </dia:attribute>
75 <dia:attribute name="elem_corner">
76 <dia:point val="6,2"/>
77 </dia:attribute>
78 <dia:attribute name="elem_width">
79 <dia:real val="6"/>
80 </dia:attribute>
81 <dia:attribute name="elem_height">
82 <dia:real val="20"/>
83 </dia:attribute>
84 <dia:attribute name="border_width">
85 <dia:real val="0.050000000000000003"/>
86 </dia:attribute>
87 <dia:attribute name="show_background">
88 <dia:boolean val="true"/>
89 </dia:attribute>
90 <dia:attribute name="corner_radius">
91 <dia:real val="1.1754943508222875e-38"/>
92 </dia:attribute>
93 </dia:object>
94 <dia:group>
95 <dia:object type="Standard - Box" version="0" id="O1">
96 <dia:attribute name="obj_pos">
97 <dia:point val="6,8"/>
98 </dia:attribute>
99 <dia:attribute name="obj_bb">
100 <dia:rectangle val="5.975,7.975;12.025,9.025"/>
101 </dia:attribute>
102 <dia:attribute name="elem_corner">
103 <dia:point val="6,8"/>
104 </dia:attribute>
105 <dia:attribute name="elem_width">
106 <dia:real val="6"/>
107 </dia:attribute>
108 <dia:attribute name="elem_height">
109 <dia:real val="1"/>
110 </dia:attribute>
111 <dia:attribute name="border_width">
112 <dia:real val="0.050000000000000003"/>
113 </dia:attribute>
114 <dia:attribute name="inner_color">
115 <dia:color val="#ffff00"/>
116 </dia:attribute>
117 <dia:attribute name="show_background">
118 <dia:boolean val="true"/>
119 </dia:attribute>
120 <dia:attribute name="corner_radius">
121 <dia:real val="1.1754943508222875e-38"/>
122 </dia:attribute>
123 </dia:object>
124 <dia:object type="Standard - Text" version="1" id="O2">
125 <dia:attribute name="obj_pos">
126 <dia:point val="5.95,8.4925"/>
127 </dia:attribute>
128 <dia:attribute name="obj_bb">
129 <dia:rectangle val="5.95,7.95;10.145,8.89"/>
130 </dia:attribute>
131 <dia:attribute name="text">
132 <dia:composite type="text">
133 <dia:attribute name="string">
134 <dia:string>#Gap =&gt; Insert#</dia:string>
135 </dia:attribute>
136 <dia:attribute name="font">
137 <dia:font family="sans" style="0" name="Helvetica"/>
138 </dia:attribute>
139 <dia:attribute name="height">
140 <dia:real val="0.80000000000000004"/>
141 </dia:attribute>
142 <dia:attribute name="pos">
143 <dia:point val="5.95,8.4925"/>
144 </dia:attribute>
145 <dia:attribute name="color">
146 <dia:color val="#000000"/>
147 </dia:attribute>
148 <dia:attribute name="alignment">
149 <dia:enum val="0"/>
150 </dia:attribute>
151 </dia:composite>
152 </dia:attribute>
153 <dia:attribute name="valign">
154 <dia:enum val="3"/>
155 </dia:attribute>
156 </dia:object>
157 </dia:group>
158 <dia:group>
159 <dia:object type="Standard - Box" version="0" id="O3">
160 <dia:attribute name="obj_pos">
161 <dia:point val="6,2"/>
162 </dia:attribute>
163 <dia:attribute name="obj_bb">
164 <dia:rectangle val="5.975,1.975;12.025,8.025"/>
165 </dia:attribute>
166 <dia:attribute name="elem_corner">
167 <dia:point val="6,2"/>
168 </dia:attribute>
169 <dia:attribute name="elem_width">
170 <dia:real val="6"/>
171 </dia:attribute>
172 <dia:attribute name="elem_height">
173 <dia:real val="6"/>
174 </dia:attribute>
175 <dia:attribute name="border_width">
176 <dia:real val="0.050000000000000003"/>
177 </dia:attribute>
178 <dia:attribute name="inner_color">
179 <dia:color val="#90ee90"/>
180 </dia:attribute>
181 <dia:attribute name="show_background">
182 <dia:boolean val="true"/>
183 </dia:attribute>
184 <dia:attribute name="corner_radius">
185 <dia:real val="1.1754943508222875e-38"/>
186 </dia:attribute>
187 </dia:object>
188 <dia:object type="Standard - Text" version="1" id="O4">
189 <dia:attribute name="obj_pos">
190 <dia:point val="5.975,2.53456"/>
191 </dia:attribute>
192 <dia:attribute name="obj_bb">
193 <dia:rectangle val="5.975,1.99206;8.91195,2.93206"/>
194 </dia:attribute>
195 <dia:attribute name="text">
196 <dia:composite type="text">
197 <dia:attribute name="string">
198 <dia:string>#Processed#</dia:string>
199 </dia:attribute>
200 <dia:attribute name="font">
201 <dia:font family="sans" style="0" name="Helvetica"/>
202 </dia:attribute>
203 <dia:attribute name="height">
204 <dia:real val="0.80000000000000004"/>
205 </dia:attribute>
206 <dia:attribute name="pos">
207 <dia:point val="5.975,2.53456"/>
208 </dia:attribute>
209 <dia:attribute name="color">
210 <dia:color val="#000000"/>
211 </dia:attribute>
212 <dia:attribute name="alignment">
213 <dia:enum val="0"/>
214 </dia:attribute>
215 </dia:composite>
216 </dia:attribute>
217 <dia:attribute name="valign">
218 <dia:enum val="3"/>
219 </dia:attribute>
220 </dia:object>
221 </dia:group>
222 <dia:group>
223 <dia:object type="Standard - Box" version="0" id="O5">
224 <dia:attribute name="obj_pos">
225 <dia:point val="6,9"/>
226 </dia:attribute>
227 <dia:attribute name="obj_bb">
228 <dia:rectangle val="5.975,8.975;12.025,18.025"/>
229 </dia:attribute>
230 <dia:attribute name="elem_corner">
231 <dia:point val="6,9"/>
232 </dia:attribute>
233 <dia:attribute name="elem_width">
234 <dia:real val="6"/>
235 </dia:attribute>
236 <dia:attribute name="elem_height">
237 <dia:real val="9"/>
238 </dia:attribute>
239 <dia:attribute name="border_width">
240 <dia:real val="0.050000000000000003"/>
241 </dia:attribute>
242 <dia:attribute name="inner_color">
243 <dia:color val="#ffa500"/>
244 </dia:attribute>
245 <dia:attribute name="show_background">
246 <dia:boolean val="true"/>
247 </dia:attribute>
248 <dia:attribute name="corner_radius">
249 <dia:real val="1.1754943508222875e-38"/>
250 </dia:attribute>
251 </dia:object>
252 <dia:object type="Standard - Text" version="1" id="O6">
253 <dia:attribute name="obj_pos">
254 <dia:point val="5.975,9.53456"/>
255 </dia:attribute>
256 <dia:attribute name="obj_bb">
257 <dia:rectangle val="5.975,8.99206;11.4275,9.93206"/>
258 </dia:attribute>
259 <dia:attribute name="text">
260 <dia:composite type="text">
261 <dia:attribute name="string">
262 <dia:string>#Common =&gt; Copy#</dia:string>
263 </dia:attribute>
264 <dia:attribute name="font">
265 <dia:font family="sans" style="0" name="Helvetica"/>
266 </dia:attribute>
267 <dia:attribute name="height">
268 <dia:real val="0.80000000000000004"/>
269 </dia:attribute>
270 <dia:attribute name="pos">
271 <dia:point val="5.975,9.53456"/>
272 </dia:attribute>
273 <dia:attribute name="color">
274 <dia:color val="#000000"/>
275 </dia:attribute>
276 <dia:attribute name="alignment">
277 <dia:enum val="0"/>
278 </dia:attribute>
279 </dia:composite>
280 </dia:attribute>
281 <dia:attribute name="valign">
282 <dia:enum val="3"/>
283 </dia:attribute>
284 </dia:object>
285 </dia:group>
286 <dia:group>
287 <dia:object type="Standard - Box" version="0" id="O7">
288 <dia:attribute name="obj_pos">
289 <dia:point val="5,11"/>
290 </dia:attribute>
291 <dia:attribute name="obj_bb">
292 <dia:rectangle val="4.95,10.95;13.05,15.05"/>
293 </dia:attribute>
294 <dia:attribute name="elem_corner">
295 <dia:point val="5,11"/>
296 </dia:attribute>
297 <dia:attribute name="elem_width">
298 <dia:real val="8"/>
299 </dia:attribute>
300 <dia:attribute name="elem_height">
301 <dia:real val="4"/>
302 </dia:attribute>
303 <dia:attribute name="inner_color">
304 <dia:color val="#bfbfbf"/>
305 </dia:attribute>
306 <dia:attribute name="show_background">
307 <dia:boolean val="true"/>
308 </dia:attribute>
309 <dia:attribute name="corner_radius">
310 <dia:real val="1.1754943508222875e-38"/>
311 </dia:attribute>
312 </dia:object>
313 <dia:object type="Standard - Text" version="1" id="O8">
314 <dia:attribute name="obj_pos">
315 <dia:point val="4.95,11.9675"/>
316 </dia:attribute>
317 <dia:attribute name="obj_bb">
318 <dia:rectangle val="4.95,10.95;9.26848,12.71"/>
319 </dia:attribute>
320 <dia:attribute name="text">
321 <dia:composite type="text">
322 <dia:attribute name="string">
323 <dia:string>#Window#</dia:string>
324 </dia:attribute>
325 <dia:attribute name="font">
326 <dia:font family="sans" style="0" name="Helvetica"/>
327 </dia:attribute>
328 <dia:attribute name="height">
329 <dia:real val="1.5"/>
330 </dia:attribute>
331 <dia:attribute name="pos">
332 <dia:point val="4.95,11.9675"/>
333 </dia:attribute>
334 <dia:attribute name="color">
335 <dia:color val="#000000"/>
336 </dia:attribute>
337 <dia:attribute name="alignment">
338 <dia:enum val="0"/>
339 </dia:attribute>
340 </dia:composite>
341 </dia:attribute>
342 <dia:attribute name="valign">
343 <dia:enum val="3"/>
344 </dia:attribute>
345 </dia:object>
346 </dia:group>
347 </dia:group>
348 <dia:group>
349 <dia:object type="Standard - Box" version="0" id="O9">
350 <dia:attribute name="obj_pos">
351 <dia:point val="18,2"/>
352 </dia:attribute>
353 <dia:attribute name="obj_bb">
354 <dia:rectangle val="17.975,1.975;24.025,24.025"/>
355 </dia:attribute>
356 <dia:attribute name="elem_corner">
357 <dia:point val="18,2"/>
358 </dia:attribute>
359 <dia:attribute name="elem_width">
360 <dia:real val="6"/>
361 </dia:attribute>
362 <dia:attribute name="elem_height">
363 <dia:real val="22"/>
364 </dia:attribute>
365 <dia:attribute name="border_width">
366 <dia:real val="0.050000000000000003"/>
367 </dia:attribute>
368 <dia:attribute name="show_background">
369 <dia:boolean val="true"/>
370 </dia:attribute>
371 <dia:attribute name="corner_radius">
372 <dia:real val="1.1754943508222875e-38"/>
373 </dia:attribute>
374 </dia:object>
375 <dia:object type="Standard - Box" version="0" id="O10">
376 <dia:attribute name="obj_pos">
377 <dia:point val="18,5"/>
378 </dia:attribute>
379 <dia:attribute name="obj_bb">
380 <dia:rectangle val="17.975,4.975;24.025,14.025"/>
381 </dia:attribute>
382 <dia:attribute name="elem_corner">
383 <dia:point val="18,5"/>
384 </dia:attribute>
385 <dia:attribute name="elem_width">
386 <dia:real val="6"/>
387 </dia:attribute>
388 <dia:attribute name="elem_height">
389 <dia:real val="9"/>
390 </dia:attribute>
391 <dia:attribute name="border_width">
392 <dia:real val="0.050000000000000003"/>
393 </dia:attribute>
394 <dia:attribute name="inner_color">
395 <dia:color val="#ffa500"/>
396 </dia:attribute>
397 <dia:attribute name="show_background">
398 <dia:boolean val="true"/>
399 </dia:attribute>
400 <dia:attribute name="corner_radius">
401 <dia:real val="1.1754943508222875e-38"/>
402 </dia:attribute>
403 </dia:object>
404 </dia:group>
405 <dia:group>
406 <dia:object type="Standard - Text" version="1" id="O11">
407 <dia:attribute name="obj_pos">
408 <dia:point val="14,9"/>
409 </dia:attribute>
410 <dia:attribute name="obj_bb">
411 <dia:rectangle val="14,8.4575;16.8122,9.3975"/>
412 </dia:attribute>
413 <dia:attribute name="text">
414 <dia:composite type="text">
415 <dia:attribute name="string">
416 <dia:string>#Signature#</dia:string>
417 </dia:attribute>
418 <dia:attribute name="font">
419 <dia:font family="sans" style="0" name="Helvetica"/>
420 </dia:attribute>
421 <dia:attribute name="height">
422 <dia:real val="0.80000000000000004"/>
423 </dia:attribute>
424 <dia:attribute name="pos">
425 <dia:point val="14,9"/>
426 </dia:attribute>
427 <dia:attribute name="color">
428 <dia:color val="#000000"/>
429 </dia:attribute>
430 <dia:attribute name="alignment">
431 <dia:enum val="0"/>
432 </dia:attribute>
433 </dia:composite>
434 </dia:attribute>
435 <dia:attribute name="valign">
436 <dia:enum val="3"/>
437 </dia:attribute>
438 </dia:object>
439 <dia:object type="Standard - ZigZagLine" version="1" id="O12">
440 <dia:attribute name="obj_pos">
441 <dia:point val="12,13"/>
442 </dia:attribute>
443 <dia:attribute name="obj_bb">
444 <dia:rectangle val="11.95,9;18.05,13.05"/>
445 </dia:attribute>
446 <dia:attribute name="orth_points">
447 <dia:point val="12,13"/>
448 <dia:point val="15,13"/>
449 <dia:point val="15,9.5"/>
450 <dia:point val="18,9.5"/>
451 </dia:attribute>
452 <dia:attribute name="orth_orient">
453 <dia:enum val="0"/>
454 <dia:enum val="1"/>
455 <dia:enum val="0"/>
456 </dia:attribute>
457 <dia:attribute name="autorouting">
458 <dia:boolean val="true"/>
459 </dia:attribute>
460 <dia:attribute name="end_arrow">
461 <dia:enum val="22"/>
462 </dia:attribute>
463 <dia:attribute name="end_arrow_length">
464 <dia:real val="0.5"/>
465 </dia:attribute>
466 <dia:attribute name="end_arrow_width">
467 <dia:real val="0.5"/>
468 </dia:attribute>
469 </dia:object>
470 </dia:group>
471 <dia:group>
472 <dia:object type="Standard - Text" version="1" id="O13">
473 <dia:attribute name="obj_pos">
474 <dia:point val="2,8"/>
475 </dia:attribute>
476 <dia:attribute name="obj_bb">
477 <dia:rectangle val="2,6.9825;4.6625,8.7425"/>
478 </dia:attribute>
479 <dia:attribute name="text">
480 <dia:composite type="text">
481 <dia:attribute name="string">
482 <dia:string>#Base#</dia:string>
483 </dia:attribute>
484 <dia:attribute name="font">
485 <dia:font family="sans" style="0" name="Helvetica"/>
486 </dia:attribute>
487 <dia:attribute name="height">
488 <dia:real val="1.5"/>
489 </dia:attribute>
490 <dia:attribute name="pos">
491 <dia:point val="2,8"/>
492 </dia:attribute>
493 <dia:attribute name="color">
494 <dia:color val="#000000"/>
495 </dia:attribute>
496 <dia:attribute name="alignment">
497 <dia:enum val="0"/>
498 </dia:attribute>
499 </dia:composite>
500 </dia:attribute>
501 <dia:attribute name="valign">
502 <dia:enum val="3"/>
503 </dia:attribute>
504 </dia:object>
505 <dia:object type="Standard - Line" version="0" id="O14">
506 <dia:attribute name="obj_pos">
507 <dia:point val="5,8"/>
508 </dia:attribute>
509 <dia:attribute name="obj_bb">
510 <dia:rectangle val="4.95,7.5;6.05,8.5"/>
511 </dia:attribute>
512 <dia:attribute name="conn_endpoints">
513 <dia:point val="5,8"/>
514 <dia:point val="6,8"/>
515 </dia:attribute>
516 <dia:attribute name="numcp">
517 <dia:int val="1"/>
518 </dia:attribute>
519 <dia:attribute name="end_arrow">
520 <dia:enum val="22"/>
521 </dia:attribute>
522 <dia:attribute name="end_arrow_length">
523 <dia:real val="0.5"/>
524 </dia:attribute>
525 <dia:attribute name="end_arrow_width">
526 <dia:real val="0.5"/>
527 </dia:attribute>
528 </dia:object>
529 </dia:group>
530 <dia:group>
531 <dia:object type="Standard - Text" version="1" id="O15">
532 <dia:attribute name="obj_pos">
533 <dia:point val="1,11"/>
534 </dia:attribute>
535 <dia:attribute name="obj_bb">
536 <dia:rectangle val="1,9.9825;3.6725,11.7425"/>
537 </dia:attribute>
538 <dia:attribute name="text">
539 <dia:composite type="text">
540 <dia:attribute name="string">
541 <dia:string>#Slide#</dia:string>
542 </dia:attribute>
543 <dia:attribute name="font">
544 <dia:font family="sans" style="0" name="Helvetica"/>
545 </dia:attribute>
546 <dia:attribute name="height">
547 <dia:real val="1.5"/>
548 </dia:attribute>
549 <dia:attribute name="pos">
550 <dia:point val="1,11"/>
551 </dia:attribute>
552 <dia:attribute name="color">
553 <dia:color val="#000000"/>
554 </dia:attribute>
555 <dia:attribute name="alignment">
556 <dia:enum val="0"/>
557 </dia:attribute>
558 </dia:composite>
559 </dia:attribute>
560 <dia:attribute name="valign">
561 <dia:enum val="3"/>
562 </dia:attribute>
563 </dia:object>
564 <dia:object type="Standard - Line" version="0" id="O16">
565 <dia:attribute name="obj_pos">
566 <dia:point val="4,11"/>
567 </dia:attribute>
568 <dia:attribute name="obj_bb">
569 <dia:rectangle val="3.95,10.5;5.05,11.5"/>
570 </dia:attribute>
571 <dia:attribute name="conn_endpoints">
572 <dia:point val="4,11"/>
573 <dia:point val="5,11"/>
574 </dia:attribute>
575 <dia:attribute name="numcp">
576 <dia:int val="1"/>
577 </dia:attribute>
578 <dia:attribute name="end_arrow">
579 <dia:enum val="22"/>
580 </dia:attribute>
581 <dia:attribute name="end_arrow_length">
582 <dia:real val="0.5"/>
583 </dia:attribute>
584 <dia:attribute name="end_arrow_width">
585 <dia:real val="0.5"/>
586 </dia:attribute>
587 </dia:object>
588 </dia:group>
589 <dia:object type="Standard - Text" version="1" id="O17">
590 <dia:attribute name="obj_pos">
591 <dia:point val="6,2"/>
592 </dia:attribute>
593 <dia:attribute name="obj_bb">
594 <dia:rectangle val="6,0.9825;9.38727,2.7425"/>
595 </dia:attribute>
596 <dia:attribute name="text">
597 <dia:composite type="text">
598 <dia:attribute name="string">
599 <dia:string>#Target#</dia:string>
600 </dia:attribute>
601 <dia:attribute name="font">
602 <dia:font family="sans" style="0" name="Helvetica"/>
603 </dia:attribute>
604 <dia:attribute name="height">
605 <dia:real val="1.5"/>
606 </dia:attribute>
607 <dia:attribute name="pos">
608 <dia:point val="6,2"/>
609 </dia:attribute>
610 <dia:attribute name="color">
611 <dia:color val="#000000"/>
612 </dia:attribute>
613 <dia:attribute name="alignment">
614 <dia:enum val="0"/>
615 </dia:attribute>
616 </dia:composite>
617 </dia:attribute>
618 <dia:attribute name="valign">
619 <dia:enum val="3"/>
620 </dia:attribute>
621 </dia:object>
622 <dia:object type="Standard - Text" version="1" id="O18">
623 <dia:attribute name="obj_pos">
624 <dia:point val="18,2"/>
625 </dia:attribute>
626 <dia:attribute name="obj_bb">
627 <dia:rectangle val="18,0.9825;21.3125,2.7425"/>
628 </dia:attribute>
629 <dia:attribute name="text">
630 <dia:composite type="text">
631 <dia:attribute name="string">
632 <dia:string>#Origin#</dia:string>
633 </dia:attribute>
634 <dia:attribute name="font">
635 <dia:font family="sans" style="0" name="Helvetica"/>
636 </dia:attribute>
637 <dia:attribute name="height">
638 <dia:real val="1.5"/>
639 </dia:attribute>
640 <dia:attribute name="pos">
641 <dia:point val="18,2"/>
642 </dia:attribute>
643 <dia:attribute name="color">
644 <dia:color val="#000000"/>
645 </dia:attribute>
646 <dia:attribute name="alignment">
647 <dia:enum val="0"/>
648 </dia:attribute>
649 </dia:composite>
650 </dia:attribute>
651 <dia:attribute name="valign">
652 <dia:enum val="3"/>
653 </dia:attribute>
654 </dia:object>
655 </dia:group>
656 </dia:layer>
657 </dia:diagram>
--- www/delta_encoder_algorithm.html
+++ www/delta_encoder_algorithm.html
@@ -92,28 +92,105 @@
9292
</li>
9393
</ol>
9494
9595
<a name="processing"><h3>2.1 Processing the target</h3>
9696
97
-<b>... to be completed ... </b>
97
+<p>This, the main phase of the encoder, processes the target in a loop
98
+from beginning to end. The state of the encoder is captured by two
99
+locations, the "base" and the "slide". "base" points to the first byte
100
+of the target for which no delta output has been generated yet, and
101
+"slide" is the location of the window used to look in the "origin" for
102
+commonalities. This window is NHASH bytes long.</p>
103
+
104
+<p>Initially both "base" and "slide" point to the beginning of the
105
+"target". In each iteration of the loop the encoder decides whether to
106
+<ul>
107
+<li>emit a single instruction
108
+to <a href="delta_format.html#copyrange">copy a range</a>, or
109
+</li>
110
+<li>emit two instructions, first
111
+to <a href="delta_format.html#insertlit">insert a literal</a>, then
112
+to <a href="delta_format.html#copyrange">copy a range</a>, or
113
+</li>
114
+<li>move the window forward one byte.
115
+</li>
116
+</ul>
117
+</p>
118
+
119
+<img src="encode10.gif" align="right" hspace="10">
120
+<p>To make this decision the encoder first computes the hash value for
121
+the NHASH bytes in the window and then looks at all the locations in
122
+the "origin" which have the same signature. This part uses the hash
123
+table created by the pre-processing step to effiently find these
124
+locations.</p>
125
+
126
+<p>For each of the possible candidates the encoder finds the maximal
127
+range of bytes common to both "origin" and "target", going forward and
128
+backward from "slide" in the "target", and the candidate location in
129
+the "origin". This search is constrained on the side of the "target"
130
+by the "base" (backward search), and the end of the "target" (forward
131
+search), and on the side of the "origin" by the beginning and end of
132
+the "origin", respectively.</p>
133
+
134
+<p>From the ranges for all the candidates the best (= largest) common
135
+range is taken and it is determined how many bytes are needed to
136
+encode the bytes between the "base" and the end of that range. If the
137
+range extended back to the "base" then this can be done in a single
138
+copy instruction. Otherwise, i.e if there is a gap between the "base"
139
+and the beginning of the range then two instructions are needed, one
140
+to insert the bytes in the gap as a literal, and a copy instruction
141
+for the range itself. The general situation at this point can be seen
142
+in the picture to the right.</p>
143
+
144
+<p>If the number of bytes needed to encode both gap (if present), and
145
+range is less than the number of bytes we are encoding the encoder
146
+will emit the necessary instructions as described above, set "base"
147
+and "slide" to the end of the encoded range and start the next
148
+iteration at that point.</p>
149
+
150
+<p>If, on the other hand, the encoder either did not find candidate
151
+locations in the origin, or the best range coming out of the search
152
+needed more bytes to encode the range than there were bytes in the
153
+range, then no instructions are emitted and the window is moved one
154
+byte forward. The "base" is left unchanged in that case.</p>
155
+
156
+<p>The processing loop stops at one of two conditions:
157
+<ol>
158
+<li>The encoder decided to move the window forward, but the end of the
159
+window reached the end of the "target".
160
+</li>
161
+<li>After the emission of instructions the new "base" location is
162
+within NHASH bytes of end of the "target", i.e. there are no more than
163
+at most NHASH bytes left.
164
+</li>
165
+</ol>
166
+</p>
167
+
168
+<p>If the processing loop left bytes unencoded, i.e. "base" not
169
+exactly at the end of the "target", as is possible for both end
170
+conditions, then one last insert instruction is emitted to put these
171
+bytes into the delta.<p>
98172
99173
<a name="exceptions"><h2>3.0 Exceptions</h2>
100174
101175
<p>If the "original" is at most NHASH bytes long no compression of
102176
changes is possible, and the segment-list of the delta consists of a
103177
single literal which contains the entire "target".</p>
104178
179
+<p>This is actually equivalent to the second end condition of the
180
+processing loop described in the previous section, just checked before
181
+actually entering the loop.</p>
105182
106183
<a name="rollhash"><h2>4.0 The rolling hash</h2>
107184
108185
<p>The rolling hash described below and used to compute content
109186
signatures was chosen not only for good hashing properties, but also
110187
to enable the easy (incremental) recalculation of its value for a
111
-sliding window, i.e. where the oldest character is removed from the
112
-window and a new character is shifted in.<p>
188
+sliding window, i.e. where the oldest byte is removed from the window
189
+and a new byte is shifted in.<p>
113190
114
-<a name="rhdef"><h2>4.1 Definition</h2>
191
+<a name="rhdef"><h3>4.1 Definition</h3>
115192
116193
<p>Assuming an array Z of NHASH bytes (indexing starting at 0) the
117194
hash V is computed via</p>
118195
119196
<p align=center><table><tr><td>
@@ -123,11 +200,11 @@
123200
</td></tr></table></p>
124201
125202
where A and B are unsigned 16-bit integers (hence the <u>mod</u>), and
126203
V is a 32-bit unsigned integer with B as MSB, A as LSB.
127204
128
-<a name="rhincr"><h2>4.2 Incremental recalculation</h2>
205
+<a name="rhincr"><h3>4.2 Incremental recalculation</h3>
129206
130207
<p>Assuming an array Z of NHASH bytes (indexing starting at 0) with
131208
hash V (and components A and B), the dropped
132209
byte <img src="encode4.gif" align="center">, and the new byte
133210
<img src="encode5.gif" align="center"> , the new hash can
134211
135212
ADDED www/encode10.gif
--- www/delta_encoder_algorithm.html
+++ www/delta_encoder_algorithm.html
@@ -92,28 +92,105 @@
92 </li>
93 </ol>
94
95 <a name="processing"><h3>2.1 Processing the target</h3>
96
97 <b>... to be completed ... </b>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
99 <a name="exceptions"><h2>3.0 Exceptions</h2>
100
101 <p>If the "original" is at most NHASH bytes long no compression of
102 changes is possible, and the segment-list of the delta consists of a
103 single literal which contains the entire "target".</p>
104
 
 
 
105
106 <a name="rollhash"><h2>4.0 The rolling hash</h2>
107
108 <p>The rolling hash described below and used to compute content
109 signatures was chosen not only for good hashing properties, but also
110 to enable the easy (incremental) recalculation of its value for a
111 sliding window, i.e. where the oldest character is removed from the
112 window and a new character is shifted in.<p>
113
114 <a name="rhdef"><h2>4.1 Definition</h2>
115
116 <p>Assuming an array Z of NHASH bytes (indexing starting at 0) the
117 hash V is computed via</p>
118
119 <p align=center><table><tr><td>
@@ -123,11 +200,11 @@
123 </td></tr></table></p>
124
125 where A and B are unsigned 16-bit integers (hence the <u>mod</u>), and
126 V is a 32-bit unsigned integer with B as MSB, A as LSB.
127
128 <a name="rhincr"><h2>4.2 Incremental recalculation</h2>
129
130 <p>Assuming an array Z of NHASH bytes (indexing starting at 0) with
131 hash V (and components A and B), the dropped
132 byte <img src="encode4.gif" align="center">, and the new byte
133 <img src="encode5.gif" align="center"> , the new hash can
134
135 DDED www/encode10.gif
--- www/delta_encoder_algorithm.html
+++ www/delta_encoder_algorithm.html
@@ -92,28 +92,105 @@
92 </li>
93 </ol>
94
95 <a name="processing"><h3>2.1 Processing the target</h3>
96
97 <p>This, the main phase of the encoder, processes the target in a loop
98 from beginning to end. The state of the encoder is captured by two
99 locations, the "base" and the "slide". "base" points to the first byte
100 of the target for which no delta output has been generated yet, and
101 "slide" is the location of the window used to look in the "origin" for
102 commonalities. This window is NHASH bytes long.</p>
103
104 <p>Initially both "base" and "slide" point to the beginning of the
105 "target". In each iteration of the loop the encoder decides whether to
106 <ul>
107 <li>emit a single instruction
108 to <a href="delta_format.html#copyrange">copy a range</a>, or
109 </li>
110 <li>emit two instructions, first
111 to <a href="delta_format.html#insertlit">insert a literal</a>, then
112 to <a href="delta_format.html#copyrange">copy a range</a>, or
113 </li>
114 <li>move the window forward one byte.
115 </li>
116 </ul>
117 </p>
118
119 <img src="encode10.gif" align="right" hspace="10">
120 <p>To make this decision the encoder first computes the hash value for
121 the NHASH bytes in the window and then looks at all the locations in
122 the "origin" which have the same signature. This part uses the hash
123 table created by the pre-processing step to effiently find these
124 locations.</p>
125
126 <p>For each of the possible candidates the encoder finds the maximal
127 range of bytes common to both "origin" and "target", going forward and
128 backward from "slide" in the "target", and the candidate location in
129 the "origin". This search is constrained on the side of the "target"
130 by the "base" (backward search), and the end of the "target" (forward
131 search), and on the side of the "origin" by the beginning and end of
132 the "origin", respectively.</p>
133
134 <p>From the ranges for all the candidates the best (= largest) common
135 range is taken and it is determined how many bytes are needed to
136 encode the bytes between the "base" and the end of that range. If the
137 range extended back to the "base" then this can be done in a single
138 copy instruction. Otherwise, i.e if there is a gap between the "base"
139 and the beginning of the range then two instructions are needed, one
140 to insert the bytes in the gap as a literal, and a copy instruction
141 for the range itself. The general situation at this point can be seen
142 in the picture to the right.</p>
143
144 <p>If the number of bytes needed to encode both gap (if present), and
145 range is less than the number of bytes we are encoding the encoder
146 will emit the necessary instructions as described above, set "base"
147 and "slide" to the end of the encoded range and start the next
148 iteration at that point.</p>
149
150 <p>If, on the other hand, the encoder either did not find candidate
151 locations in the origin, or the best range coming out of the search
152 needed more bytes to encode the range than there were bytes in the
153 range, then no instructions are emitted and the window is moved one
154 byte forward. The "base" is left unchanged in that case.</p>
155
156 <p>The processing loop stops at one of two conditions:
157 <ol>
158 <li>The encoder decided to move the window forward, but the end of the
159 window reached the end of the "target".
160 </li>
161 <li>After the emission of instructions the new "base" location is
162 within NHASH bytes of end of the "target", i.e. there are no more than
163 at most NHASH bytes left.
164 </li>
165 </ol>
166 </p>
167
168 <p>If the processing loop left bytes unencoded, i.e. "base" not
169 exactly at the end of the "target", as is possible for both end
170 conditions, then one last insert instruction is emitted to put these
171 bytes into the delta.<p>
172
173 <a name="exceptions"><h2>3.0 Exceptions</h2>
174
175 <p>If the "original" is at most NHASH bytes long no compression of
176 changes is possible, and the segment-list of the delta consists of a
177 single literal which contains the entire "target".</p>
178
179 <p>This is actually equivalent to the second end condition of the
180 processing loop described in the previous section, just checked before
181 actually entering the loop.</p>
182
183 <a name="rollhash"><h2>4.0 The rolling hash</h2>
184
185 <p>The rolling hash described below and used to compute content
186 signatures was chosen not only for good hashing properties, but also
187 to enable the easy (incremental) recalculation of its value for a
188 sliding window, i.e. where the oldest byte is removed from the window
189 and a new byte is shifted in.<p>
190
191 <a name="rhdef"><h3>4.1 Definition</h3>
192
193 <p>Assuming an array Z of NHASH bytes (indexing starting at 0) the
194 hash V is computed via</p>
195
196 <p align=center><table><tr><td>
@@ -123,11 +200,11 @@
200 </td></tr></table></p>
201
202 where A and B are unsigned 16-bit integers (hence the <u>mod</u>), and
203 V is a 32-bit unsigned integer with B as MSB, A as LSB.
204
205 <a name="rhincr"><h3>4.2 Incremental recalculation</h3>
206
207 <p>Assuming an array Z of NHASH bytes (indexing starting at 0) with
208 hash V (and components A and B), the dropped
209 byte <img src="encode4.gif" align="center">, and the new byte
210 <img src="encode5.gif" align="center"> , the new hash can
211
212 DDED www/encode10.gif

Binary file

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button