delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2001/04/26/12:03:50

X-Authentication-Warning: acp3bf.physik.rwth-aachen.de: broeker owned process doing -bs
Date: Thu, 26 Apr 2001 14:30:45 +0200 (MET DST)
From: Hans-Bernhard Broeker <broeker AT physik DOT rwth-aachen DOT de>
X-Sender: broeker AT acp3bf
To: djgpp workers list <djgpp-workers AT delorie DOT com>
Subject: sbrk() storing the size of memory blocks
Message-ID: <Pine.LNX.4.10.10104261414430.592-200000@acp3bf>
MIME-Version: 1.0
Reply-To: djgpp-workers AT delorie DOT com

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime AT docserver DOT cac DOT washington DOT edu for more info.

---494318816-847437528-988288245=:592
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello, everyone.

After all this discussion about how sbrk() makes life for the core dumping
code unnecessarily hard by not storing the size of the memory blocks it
got from DPMI, I decided to put on my hacker hat and do something about
it.

So, here is the set of patches needed to do this. Sorry about not
respecting recommended patch style --- this is more of a discussion basis,
not a patch that should be applied to the CVS tree as-is. With these
changes in use, I got a working and apparently correct core dump while, in
the same DOS box, the original code would crash (with progress==12, for a
change. I.e. it crashed while dumping the first memory block, at address
0x0000).

[Attached, you'll find another patch that adds lots of comments to crt0.S.
I wrote those as I dug my way through all this assembly, I could see
what's happening. May be useful for others who want to work on this,
later...]

The first hunk shows how this change can be put to use, in the
core-dumping dpmiexcp.c:

--- nimrod.c	Wed Apr 11 00:48:06 2001
+++ dpmiexcp.c	Thu Apr 26 04:05:12 2001
@@ -248,6 +248,13 @@
 	  if (mem_block_list[j].address - mem_block_list[i].address < mem_block_list[i].size)
 	    mem_block_list[i].size = mem_block_list[j].address - mem_block_list[i].address;
 	
+#ifndef DONT_STORE_BLOCKSIZES
+  /* Get the base addresses, and size */
+  for (i = 0; i < num_mem_blocks; i++)
+  {
+    mem_block_list[i].size = __djgpp_memory_handle_list[i].size;
+  }
+#else
   /* Now try the DPMI call; if it works, we can override the previous 
    * data; however, I have yet to find a DPMI server that supports it
    */
@@ -258,7 +265,7 @@
     if (__dpmi_get_memory_block_size_and_base (&info) != -1)
       if (info.size) mem_block_list[i].size = info.size;
   }
-
+#endif /* DONT_STORE_BLOCKSIZES */
   return num_mem_blocks;
 }
 

Nice and crisp. Next, the extension to the __djgpp_sbrk_handle struct
itself:

--- crt0.h~	Mon Jul 12 16:59:04 1999
+++ crt0.h	Thu Apr 26 03:15:30 2001
@@ -172,6 +172,9 @@ extern int _crt0_startup_flags;
 typedef struct {
   long handle;
   unsigned address;
+#ifndef DONT_STORE_BLOCKSIZES 
+  unsigned size;
+#endif
   } __djgpp_sbrk_handle;
 
 extern __djgpp_sbrk_handle __djgpp_memory_handle_list[256];

A side remark: Debugging is a bit hard in this area, since gdb doesn't
know what the type __djgpp_memory_handle_list is. Probably because the
actual variable is defined in an assembly module, without any type
information. Couldn't we move the definition into some C module, and let
the asm just reference it?

Anyway, here's the core modification. I used some more preprocessor magic
than the original code to make this a bit easier to handle. Also note that
I spotted what feels like a potential bug, in the code that clears the
handle list. It would stop as soon as it finds any block with handle *or*
address equal to zero. OTOH, it does not make sure it doesn't run pase the
end of the array of 256 handles. See the FIXME comment.

--- mycrt0.S.commented	Thu Apr 26 03:12:26 2001
+++ mycrt0.S	Thu Apr 26 04:11:56 2001
@@ -45,7 +45,11 @@
 
 #ifdef MULTIBLOCK
 
-#define MEMORY_HANDLE_SIZE 8		/* Size of a mem. handle, in bytes */
+#ifndef DONT_STORE_BLOCKSIZES /* HBB 20010425: new variant */
+# define MEMORY_HANDLE_SIZE 12		/* Size of a mem. handle, in bytes */
+#else
+# define MEMORY_HANDLE_SIZE 8
+#endif
 #define NUMBER_OF_MEMHANDLES 256	/* number of handles we allow */
 
 ___djgpp_memory_handle_pointer:
@@ -242,7 +246,16 @@ dos_alloc_ok:
 9:	cmpl	%eax, (%edi)		/* handle unused (==0)? */
 	je	10f			/* break out loop */
 	mov	%eax, (%edi)		/* otherwise: make it zero! */
+#if 0	
 	addl	$4, %edi		/* FIXME: checks stored *base* ??? */
+#else
+	mov	%eax, 4(%edi)		/* zero out base address */
+#ifndef DONT_STORE_BLOCKSIZES	
+	mov	%eax, 8(%edi)		/* zero out size */
+#endif
+	addl	$MEMORY_HANDLE_SIZE, %edi	/* move on to next handle */
+	/* FIXME: doesn't make sure we don't overrun the array */
+#endif /* 0/1 */	
 	jmp	9b			/* loop on */
 
 10:	movw	%cs, %bx		/* about code segment */
@@ -258,6 +271,9 @@ dos_alloc_ok:
 	.byte 0x64 /* fs: */
 	movl	STUBINFO_INITIAL_SIZE, %eax
 	movl	%eax, __what_size_dpmi_thinks_we_are
+#ifndef DONT_SAVE_BLOCKSIZES
+	movl	%eax, ___djgpp_memory_handle_list+8
+#endif	
 
 /* Maybe lock the initial block, expects BX:CX */
 	movl	%ecx,%ebx		/* move CX:DX to BX:CX */
@@ -522,6 +538,9 @@ brk_common:
 
 	movl	%edi, ___djgpp_memory_handle_list	/* store new handle */
 	movw	%si, ___djgpp_memory_handle_list+2
+#ifndef DONT_SAVE_BLOCKSIZES
+	movl	%edx, ___djgpp_memory_handle_list+8	/* store new size */
+#endif
 	movl	%ecx, ___djgpp_base_address	/* store new base address */
 	movw	%bx, ___djgpp_base_address+2
 
@@ -580,6 +599,9 @@ brk_common:
 	movl	%edi, (%ebx)		/* store block infos to free handle */
 	movw	%si, 2(%ebx)			/* handle is SI:DI */
 	movl	%ecx, 4(%ebx)			/* block address (was BX:CX) */
+#ifndef DONT_STORE_BLOCKSIZES
+	movl	%edx, 8(%ebx)			/* store block size, too */
+#endif	
 	addl	$MEMORY_HANDLE_SIZE, %ebx	/* point to next free handle */
 	cmpl	$(___djgpp_memory_handle_list+ \
 		(NUMBER_OF_MEMHANDLES-1)*MEMORY_HANDLE_SIZE) \
-- 
Hans-Bernhard Broeker (broeker AT physik DOT rwth-aachen DOT de)
Even if all the snow were burnt, ashes would remain.

---494318816-847437528-988288245=:592
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="crt0.S.commenting.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine DOT LNX DOT 4 DOT 10 DOT 10104261430450 DOT 592 AT acp3bf>
Content-Description: Comments for crt0.S
Content-Disposition: attachment; filename="crt0.S.commenting.diff"

LS0tIGNydDAuUwlUaHUgTWFyICAxIDE0OjU1OjEyIDIwMDENCisrKyBteWNy
dDAuUy5jb21tZW50ZWQJVGh1IEFwciAyNiAwMzoxMjoyNiAyMDAxDQpAQCAt
MzcsMTQgKzM3LDI2IEBADQogCS5sY29tbQlzZWxfYnVmLCA4DQogCS8qIF9f
X2RqZ3BwX2RzX2FsaWFzIGRlZmluZWQgaW4gZ28zMi9leGNlcHRuLlMgKi8N
CiANCisvKiBUaGlzICNpZmRlZiBlbmNsb3NlcyBhbGwgdGhlIGNvZGUgZm9y
IHRoZSBtdWx0aWJsb2NrIGEuay5hLiBub24tbW92aW5nDQorICogc2Jyaygp
IGFsZ29yaXRobSAqLyANCiAjZGVmaW5lIE1VTFRJQkxPQ0sgMQ0KIA0KIAku
ZGF0YQ0KIA0KICNpZmRlZiBNVUxUSUJMT0NLDQorDQorI2RlZmluZSBNRU1P
UllfSEFORExFX1NJWkUgOAkJLyogU2l6ZSBvZiBhIG1lbS4gaGFuZGxlLCBp
biBieXRlcyAqLw0KKyNkZWZpbmUgTlVNQkVSX09GX01FTUhBTkRMRVMgMjU2
CS8qIG51bWJlciBvZiBoYW5kbGVzIHdlIGFsbG93ICovDQorDQogX19fZGpn
cHBfbWVtb3J5X2hhbmRsZV9wb2ludGVyOg0KLQkubG9uZwlfX19kamdwcF9t
ZW1vcnlfaGFuZGxlX2xpc3QrOAkJLyogTmV4dCBmcmVlLCBmaXJzdCBmb3Ig
c3R1YiAqLw0KLQkuY29tbQlfX19kamdwcF9tZW1vcnlfaGFuZGxlX2xpc3Qs
IDIwNDgJLyogRW5vdWdoIGZvciAyNTYgaGFuZGxlcyAqLw0KKy8qIFBvaW50
IHRvIG5leHQgZnJlZSBlbnRyeSBpbiB0aGUgbGlzdCBvZiBoYW5kbGVzIChm
aXJzdCBpcyB1c2VkIGJ5IHN0dWIpICovDQorCS5sb25nCV9fX2RqZ3BwX21l
bW9yeV9oYW5kbGVfbGlzdCtNRU1PUllfSEFORExFX1NJWkUNCisNCisvKiBU
aGUgbGlzdCBvZiBtZW1vcnkgaGFuZGxlcyBpdHNlbGYuICovDQorCS5jb21t
CV9fX2RqZ3BwX21lbW9yeV9oYW5kbGVfbGlzdCwgXA0KKwkJKE5VTUJFUl9P
Rl9NRU1IQU5ETEVTKk1FTU9SWV9IQU5ETEVfU0laRSkNCisNCisJDQogI2Vu
ZGlmDQogDQogc2JyazE2X2ZpcnN0X2J5dGU6DQpAQCAtMTEzLDMxICsxMjUs
MzMgQEAgc3RhcnQ6DQogI2VuZGlmDQogDQogLyogRW5hYmxlIE5VTEwgcG9p
bnRlciBwcm90ZWN0aW9uIGlmIERQTUkgc3VwcG9ydHMgaXQgKi8NCi0JdGVz
dGIJJDB4MSwgX19jcnQwX3N0YXJ0dXBfZmxhZ3MrMQkJLyogaW5jbHVkZS9j
cnQwLmggKi8NCi0Jam56CTFmDQotCW1vdmwJJHN0YXJ0LCAlZWF4DQorCXRl
c3RiCSQweDEsIF9fY3J0MF9zdGFydHVwX2ZsYWdzKzEgLyogX0NSVDBfRkxB
R19OVUxMT0sgKi8NCisJam56CTFmCQkJLyogZGlzYWJsZWQgYnkgZmxhZz8g
Ki8NCisJbW92bAkkc3RhcnQsICVlYXgJLyogc3RhcnQgc3ltYm9sIHdpdGhp
biBOVUxMIHBhZ2U/ICovDQogCWNtcGwJJDB4MTAwMCwgJWVheA0KLQlqbAkx
Zg0KLQltb3Z3CSQweDUwNywgJWF4DQorCWpsCTFmCQkvKiAtLT4gZG9uJ3Qg
cHJvdGVjdCAqLw0KKwltb3Z3CSQweDUwNywgJWF4CQkvKiBEUE1JIDEuMCBz
ZXRfcGFnZV9hdHRyaWJ1dGVzICovDQogCS5ieXRlIDB4NjQgLyogZnM6ICov
DQogCW1vdmwJU1RVQklORk9fTUVNT1JZX0hBTkRMRSwgJWVzaQ0KIAl4b3Js
CSVlYngsICVlYngJCQkvKiBPZmZzZXQgMCBpbiBtZW0gYmxvY2sgKi8NCiAJ
bW92bAkkMSwgJWVjeAkJCS8qIFNldCBvbmUgcGFnZSAqLw0KIAltb3ZsCSR6
ZXJvLCAlZWR4DQogCWludAkkMHgzMQkJCS8qIE1ha2UgbnVsbCBwYWdlIHVu
Y29tbWl0dGVkICovDQorDQogMToNCi0vKiBDcmVhdGUgYW4gYWxpYXMgZm9y
IERTIHRvIGJlIHVzZWQgYnkgcmVhbC1tb2RlIGNhbGxiYWNrcyAoZXhjZXB0
aW9uIGhhbmRsZXIgbWVzc2VzIHdpdGggRFMgaXRzZWxmKSAqLw0KKwkvKiBD
cmVhdGUgYW4gYWxpYXMgZm9yIERTIHRvIGJlIHVzZWQgYnkgcmVhbC1tb2Rl
IGNhbGxiYWNrcw0KKyAgICAgICAgICogKGV4Y2VwdGlvbiBoYW5kbGVyIG1l
c3NlcyB3aXRoIERTIGl0c2VsZikgKi8NCiANCiAJbW92dwklZHMsICVieA0K
LQltb3Z3CSQweDAwMGEsICVheA0KKwltb3Z3CSQweDAwMGEsICVheAkJLyog
RFBNSSBjcmVhdGVfYWxpYXNfc2VsZWN0b3IgKi8NCiAJaW50CSQweDMxDQog
CWpuYwlkc19hbGlhc19vaw0KLQltb3ZiCSQweDRjLCAlYWgNCisJbW92Ygkk
MHg0YywgJWFoCQkvKiBET1MgX2V4aXQgKi8NCiAJaW50CSQweDIxDQogZHNf
YWxpYXNfb2s6DQogCW1vdncJJWF4LCBfX19kamdwcF9kc19hbGlhcw0KIAlt
b3ZsCSVlYXgsICVlYngNCi0JbW92dwkkMHgwMDA5LCAlYXgNCisJbW92dwkk
MHgwMDA5LCAlYXgJCS8qIERQTUkgc2V0X2Rlc2NyaXB0b3JfYWNjZXNzX3Jp
Z2h0cyAqLw0KIAltb3Z3CSVjcywgJWN4CS8qIGdldCBDUEwgZnJvbSAlY3Mg
Ki8NCiAJYW5kbAkkMywgJWVjeA0KIAlzaGxsCSQ1LCAlZWN4CQkvKiBtb3Zl
IGl0IGludG8gcGxhY2UgKi8NCkBAIC0xNDUsODkgKzE1OSwxMDAgQEAgZHNf
YWxpYXNfb2s6DQogCWludAkkMHgzMQkJLyogc2V0IGFjY2VzcyByaWdodHMg
Zm9yIGFsaWFzICovDQogDQogLyogTWF5YmUgc2V0IG91ciBEUyBsaW1pdCB0
byA0R2IgaW4gc2l6ZSBpZiBmbGFnIHNldCAqLw0KLQl0ZXN0YgkkMHg4MCwg
X19jcnQwX3N0YXJ0dXBfZmxhZ3MJCS8qIGluY2x1ZGUvY3J0MC5oICovDQot
CWp6CTJmDQorCXRlc3RiCSQweDgwLCBfX2NydDBfc3RhcnR1cF9mbGFncyAv
KiBfQ1JUMF9GTEFHX05FQVJQVFIgKi8NCisJanoJMmYJCQkvKiBqdW1wIG92
ZXIgaXQgaWYgdW53YW50ZWQgKi8NCiAJbW92dwkkMHhmZmZmLCAlY3gNCi0J
bW92bAklZWN4LCAlZWR4DQotCW1vdncJJDB4MDAwOCwgJWF4CQkJCS8qIHJl
c2V0IGFsaWFzIGxpbWl0IHRvIC0xICovDQorCW1vdmwJJWVjeCwgJWVkeAkJ
LyogcmVzZXQgYWxpYXMgbGltaXQgdG8gLTEgKi8NCisJbW92dwkkMHgwMDA4
LCAlYXgJCS8qIERQTUkgc2V0X3NlZ21lbnRfbGltaXQgKi8NCiAJaW50CSQw
eDMxDQotCW1vdncJJWNzLCAlYngNCi0JbW92dwkkMHgwMDA4LCAlYXgJCQkJ
LyogcmVzZXQgQ1MgbGltaXQgdG8gLTEgKi8NCisJbW92dwklY3MsICVieAkJ
LyogcmVzZXQgQ1MgbGltaXQgdG8gLTEgKi8NCisJbW92dwkkMHgwMDA4LCAl
YXgJCS8qIERQTUkgc2V0X3NlZ21lbnRfbGltaXQgKi8NCiAJaW50CSQweDMx
DQotCW1vdncJJWRzLCAlYngNCi0JbW92dwkkMHgwMDA4LCAlYXgJCQkJLyog
cmVzZXQgRFMgbGltaXQgdG8gLTEgKi8NCisJbW92dwklZHMsICVieAkJLyog
cmVzZXQgRFMgbGltaXQgdG8gLTEgKi8NCisJbW92dwkkMHgwMDA4LCAlYXgJ
CS8qIERQTUkgc2V0X3NlZ21lbnRfbGltaXQgKi8NCiAJaW50CSQweDMxDQog
CWxzbAklZWJ4LCAlZWJ4CQkJCS8qIFNob3VsZCBiZSAtMSAqLw0KLQlpbmNs
CSVlYngNCi0JanoJMmYNCi0JYW5kYgkkMHg3ZiwgX19jcnQwX3N0YXJ0dXBf
ZmxhZ3MJCS8qIGNsZWFyIGl0IGlmIGZhaWx1cmUgKi8NCisJaW5jbAklZWJ4
CQkJLyogLTEgKyAxID09IDAgKi8NCisJanoJMmYJCQkvKiBqdW1wIGlmIGFs
bCBPSyAqLw0KKwlhbmRiCSQweDdmLCBfX2NydDBfc3RhcnR1cF9mbGFncyAv
KiBfQ1JUMF9GTEFHX05FQVJQVFIgb2ZmISovDQorDQogMjoNCiAjaWZkZWYg
TVVMVElCTE9DSw0KLQl0ZXN0YgkkMHg4LCBfX2NydDBfc3RhcnR1cF9mbGFn
cysxCQkvKiBpbmNsdWRlL2NydDAuaCAqLw0KLQlqegk4Zg0KKwl0ZXN0Ygkk
MHg4LCBfX2NydDBfc3RhcnR1cF9mbGFncysxIC8qIF9DUlQwX0ZMQUdfVU5J
WF9TQlJLICovDQorCWp6CThmCQkJLyogZG9uJ3QgZG8gVU5JWHkgc2JyayBp
bml0ICovDQogI2VuZGlmDQotLyogQWxsb2NhdGUgc29tZSBET1MgbWVtb3J5
IGFuZCBjb3B5IG91ciBzYnJrIGhlbHBlciBpbnRvIGl0LiAqLw0KLQltb3Zs
CSRzYnJrMTZfZmlyc3RfYnl0ZSwgJWVzaQ0KKw0KKy8qIC0tLS0tLS0tLSBT
ZXQgdXAgZm9yIHRoZSBVTklYeSBzYnJrIGFsZ29yaXRobSAtLS0tLS0tLSAq
Lw0KKy8qIEFsbG9jYXRlIHNvbWUgRE9TIG1lbW9yeSBhbmQgY29weSBvdXIg
c2JyayBoZWxwZXIgMTZiaXQgY29kZSBmcmFnbWVudCANCisgKiBpbnRvIGl0
LiAqLw0KKwltb3ZsCSRzYnJrMTZfZmlyc3RfYnl0ZSwgJWVzaQkvKiB0YWtl
IGFkZHJlc3Mgb2YgaXQgKi8NCiAJbW92endsCTgoJWVzaSksICVlYngNCi0J
c2hybAkkNCwgJWVieA0KLQltb3Z3CSQweDAxMDAsICVheA0KKwlzaHJsCSQ0
LCAlZWJ4CQkvKiBjb252ZXJ0IGludG8gcGFyYWdyYXBocyAqLw0KKwltb3Z3
CSQweDAxMDAsICVheAkJLyogRFBNSSBhbGxvY2F0ZV9kb3NfbWVtb3J5ICov
DQogCWludAkkMHgzMQ0KLQlqbmMJZG9zX2FsbG9jX29rDQotCW1vdmIJJDB4
NGMsICVhaA0KKwlqbmMJZG9zX2FsbG9jX29rCQkvKiBpZiBjYWxsIGZhaWxl
ZDogKi8NCisJbW92YgkkMHg0YywgJWFoCQkvKiBET1M6CV9leGl0ICovDQog
CWludAkkMHgyMQ0KIGRvc19hbGxvY19vazoNCisJLyogcGF0Y2ggY29kZSBi
ZWZvcmUgY29weWluZyBpdCAqLw0KIAltb3Z3CSVjcywgMiglZXNpKQkJCS8q
IHN0b3JlIEFQSSBpbmZvcm1hdGlvbiAqLw0KIAltb3Z3CSVkcywgNCglZXNp
KQ0KIAltb3Z3CSVkeCwgNiglZXNpKQkJCS8qIHNlbGVjdG9yIGZvciBhbGxv
Y2F0ZWQgYmxvY2sgKi8NCiANCiAJbW92endsCSglZXNpKSwgJWVheAkJCS8q
IGNhbGN1bGF0ZSBBUEkgYWRkcmVzcyAqLw0KLQltb3ZsCSVlYXgsIHNicmsx
Nl9hcGlfb2ZzDQorCW1vdmwJJWVheCwgc2JyazE2X2FwaV9vZnMJLyogYW5k
IG1lbW9yaXplIGl0ICovDQogDQotCXB1c2hsCSVlcwkJCQkvKiBtb3ZlIHRo
ZSBkYXRhICovDQotCW1vdncJJWR4LCAlZXMNCi0JbW92bAkkKHNicmsxNl9s
YXN0X2J5dGUgLSBzYnJrMTZfZmlyc3RfYnl0ZSksICVlY3gNCi0Jc2hybAkk
MiwlZWN4DQotCXhvcmwJJWVkaSwgJWVkaQ0KLQljbGQNCi0JcmVwDQorCXB1
c2hsCSVlcwkJCS8qIG1vdmUgdGhlIGNvZGUgZnJhZ21lbnQ6ICovDQorCW1v
dncJJWR4LCAlZXMJCS8qIHRhcmdldCBzZWdtZW50ICovDQorCW1vdmwJJChz
YnJrMTZfbGFzdF9ieXRlIC0gc2JyazE2X2ZpcnN0X2J5dGUpLCAlZWN4CS8q
IHNpemUgKi8NCisJc2hybAkkMiwlZWN4CQkJLyogdHJhbnNsYXRlIGludG8g
d29yZCBjb3VudCAqLw0KKwl4b3JsCSVlZGksICVlZGkJCS8qIHRhcmdldCBv
ZmZzZXQgPSAwICovDQorCWNsZAkJCQkvKiBmb3J3YXJkIGNvcHkgKi8NCisJ
cmVwCQkJCS8qIG1vb292ZSBpdCAqLw0KIAltb3ZzbA0KLQlwb3BsCSVlcw0K
Kwlwb3BsCSVlcwkJCS8qIHJlc3RvcmUgZXMgKi8NCiANCisJLyogVHVybiBE
T1MgbWVtb3J5IGludG8gYSAiY29kZTE2IiBzZWdtZW50ICovDQogCW1vdmwJ
JWVkeCwgJWVieAkJCS8qIGRvcyBtZW1vcnkgc2VsZWN0b3IgKi8NCi0JbW92
dwkkMHgwMDBiLCAlYXgJCQkvKiBnZXQgZGVzY3JpcHRvciAqLw0KLQltb3Zs
CSRzZWxfYnVmLCAlZWRpDQorCW1vdncJJDB4MDAwYiwgJWF4CQkvKiBEUE1J
IGdldF9kZXNjcmlwdG9yICovDQorCW1vdmwJJHNlbF9idWYsICVlZGkJCS8q
IHN0b3JhZ2UgZm9yIHRoaXMgc2VsZWN0b3IgKi8NCiAJaW50CSQweDMxDQog
DQogCWFuZGIJJDB4YmYsIHNlbF9idWYrNgkJLyogbWFrZSAxNi1iaXQgKi8N
CiAJYW5kYgkkMHhmMCwgc2VsX2J1Zis1CQkvKiByZW1vdmUgb2xkIHR5cGUg
Ki8NCiAJb3JiCSQweDBhLCBzZWxfYnVmKzUJCS8qIHNldCBuZXcgdHlwZSB0
byBjb2RlL3JlYWQgKi8NCiANCi0JeG9ybAklZWF4LCAlZWF4CQkJLyogYWxs
b2NhdGUgbmV3IHNlbGVjdG9yICovDQotCW1vdncJJDB4MDAwMSwgJWN4DQor
CXhvcmwJJWVheCwgJWVheAkJLyogRFBNSSBhbGxvY2F0ZV9sZHRfZGVzY3Jp
cHRvcnMgKi8NCisJbW92dwkkMHgwMDAxLCAlY3gJCS8qIG9uZSBzZWxlY3Rv
ciB3YW50ZWQgKi8NCiAJaW50CSQweDMxDQotCW1vdncJJWF4LCBzYnJrMTZf
YXBpX3NlZw0KKwltb3Z3CSVheCwgc2JyazE2X2FwaV9zZWcJLyogbWVtb3Jp
emUgaXQgZm9yIGxhdGVyICovDQogDQotCW1vdmwJJWVheCwgJWVieA0KLQlt
b3Z3CSQweDAwMGMsICVheAkJCS8qIHNldCBkZXNjcmlwdG9yICovDQorCW1v
dmwJJWVheCwgJWVieAkJLyogYW5kIHNldCB1cCBjb2RlMTYgc2VnbWVudCAq
Lw0KKwltb3Z3CSQweDAwMGMsICVheAkJLyogRFBNSSBzZXRfZGVzY3JpcHRv
ciAqLw0KIAltb3ZsCSRzZWxfYnVmLCAlZWRpDQogCWludAkkMHgzMQ0KKw0K
ICNpZmRlZiBNVUxUSUJMT0NLDQotODoJbW92bAkkX19fZGpncHBfbWVtb3J5
X2hhbmRsZV9saXN0KzgsICVlZGkNCisJLyogSW5pdGlhbGl6ZSBwb2ludGVy
IHRvIG5leHQgZnJlZSBtZW1vcnkgYmxvY2sgaGFuZGxlLiBQb2ludHMNCisJ
ICogYXQgbWVtb3J5X2hhbmRsZV9saXN0WzFdICovDQorODoJbW92bAkkX19f
ZGpncHBfbWVtb3J5X2hhbmRsZV9saXN0K01FTU9SWV9IQU5ETEVfU0laRSwg
JWVkaQ0KIAltb3ZsCSVlZGksIF9fX2RqZ3BwX21lbW9yeV9oYW5kbGVfcG9p
bnRlcg0KKwkvKiBDbGVhbiB1cCBtZW1vcnlfaGFuZGxlX2xpc3RbXSAqLw0K
IAl4b3JsCSVlYXgsICVlYXgNCi05OgljbXBsCSVlYXgsICglZWRpKQ0KLQlq
ZQkxMGYNCi0JbW92CSVlYXgsICglZWRpKQ0KLQlhZGRsCSQ0LCAlZWRpDQot
CWptcAk5Yg0KLTEwOgltb3Z3CSVjcywgJWJ4DQotCW1vdncJJDB4MDAwNiwl
YXgNCis5OgljbXBsCSVlYXgsICglZWRpKQkJLyogaGFuZGxlIHVudXNlZCAo
PT0wKT8gKi8NCisJamUJMTBmCQkJLyogYnJlYWsgb3V0IGxvb3AgKi8NCisJ
bW92CSVlYXgsICglZWRpKQkJLyogb3RoZXJ3aXNlOiBtYWtlIGl0IHplcm8h
ICovDQorCWFkZGwJJDQsICVlZGkJCS8qIEZJWE1FOiBjaGVja3Mgc3RvcmVk
ICpiYXNlKiA/Pz8gKi8NCisJam1wCTliCQkJLyogbG9vcCBvbiAqLw0KKw0K
KzEwOgltb3Z3CSVjcywgJWJ4CQkvKiBhYm91dCBjb2RlIHNlZ21lbnQgKi8N
CisJbW92dwkkMHgwMDA2LCVheAkJLyogRFBNSSBnZXRfc2VnbWVudF9iYXNl
X2FkZHJlc3MgKi8NCiAJaW50CSQweDMxDQotCW1vdmwJJWVkeCxfX19kamdw
cF9iYXNlX2FkZHJlc3MNCisJbW92bAklZWR4LF9fX2RqZ3BwX2Jhc2VfYWRk
cmVzcyAvKiBtZW1vcml6ZSBpdCBmb3IgbGF0ZXIgKi8NCiAJbW92dwklY3gs
X19fZGpncHBfYmFzZV9hZGRyZXNzKzINCiAjZW5kaWYJLyogTVVMVElCTE9D
SyAqLw0KIA0KLS8qIEluaXRpYWxpemUgdGhlIGJyay9zYnJrIHZhcmlhYmxl
cyAqLw0KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0gSW5pdGlhbGl6ZSB0aGUg
YnJrL3NicmsgdmFyaWFibGVzICovDQogDQogLyoJbW92bAkkZW5kLCBfX3do
YXRfc2l6ZV9hcHBfdGhpbmtzX2l0X2lzICovDQogCS5ieXRlIDB4NjQgLyog
ZnM6ICovDQpAQCAtMjM1LDM4ICsyNjAsNDEgQEAgZG9zX2FsbG9jX29rOg0K
IAltb3ZsCSVlYXgsIF9fd2hhdF9zaXplX2RwbWlfdGhpbmtzX3dlX2FyZQ0K
IA0KIC8qIE1heWJlIGxvY2sgdGhlIGluaXRpYWwgYmxvY2ssIGV4cGVjdHMg
Qlg6Q1ggKi8NCi0JbW92bAklZWN4LCVlYngNCisJbW92bAklZWN4LCVlYngJ
CS8qIG1vdmUgQ1g6RFggdG8gQlg6Q1ggKi8NCiAJbW92bAklZWR4LCVlY3gN
CiAJYWRkdwkkNDA5NiwlY3gJCQkvKiBTa2lwIG51bGwgcGFnZSAqLw0KIAlh
ZGNsCSQwLCVlYngNCi0Jc3VibAkkNDA5NiwlZWF4DQorCXN1YmwJJDQwOTYs
JWVheAkJLyogcmVkdWNlIHNpemUgYWNjb3JkaW5nbHkgKi8NCiAJcHVzaGwJ
JWVheA0KIAljYWxsCWxvY2tfbWVtb3J5DQogDQorCS8qIFN0b3JlIHRoZSBz
dHViJ3MgaGFuZGxlIGFzIHRoZSBtZW1vcnlfaGFuZGxlX2xpc3RbMF0gKi8N
CiAJLmJ5dGUgMHg2NCAvKiBmczogKi8NCiAJbW92bAlTVFVCSU5GT19NRU1P
UllfSEFORExFLCAlZWF4DQogCW1vdmwJJWVheCwgX19fZGpncHBfbWVtb3J5
X2hhbmRsZV9saXN0DQogDQotCS5ieXRlIDB4NjQgLyogZnM6ICovCQkJLyog
Y29weSBzdHViaW5mbyBpbnRvIGxvY2FsIG1lbW9yeSAqLw0KKwkvKiBjb3B5
IHN0dWJpbmZvIGludG8gbG9jYWwgbWVtb3J5ICovDQorCS5ieXRlIDB4NjQg
LyogZnM6ICovDQogCW1vdmwJU1RVQklORk9fU0laRSwgJWVheA0KIAlwdXNo
bAklZWF4DQotCWNhbGwJX19fc2Jyaw0KLQltb3ZsCSVlYXgsIF9fc3R1Ymlu
Zm8NCi0JbW92bAklZWF4LCAlZWRpDQorCWNhbGwJX19fc2JyawkJCS8qIGFs
bG9jYXRlIHNwYWNlIGZvciBpdCAqLw0KKwltb3ZsCSVlYXgsIF9fc3R1Ymlu
Zm8JLyogbWVtb3JpemUgaXRzIHBvc2l0aW9uICovDQorCW1vdmwJJWVheCwg
JWVkaQkJLyogbWVtY29weSgpICovDQogCS5ieXRlIDB4NjQgLyogZnM6ICov
DQotCW1vdmwJU1RVQklORk9fU0laRSwgJWVjeA0KLQlzaHJsCSQyLCAlZWN4
DQotCXhvcmwJJWVzaSwgJWVzaQkJCS8qIFplcm8gKi8NCi0JcHVzaGwJJWRz
DQorCW1vdmwJU1RVQklORk9fU0laRSwgJWVjeAkvKiBnZXQgc2l6ZSAqLw0K
KwlzaHJsCSQyLCAlZWN4CQkvKiBhZGp1c3Qgc2l6ZSB0byAzMmJpdCB3b3Jk
cyAqLw0KKwl4b3JsCSVlc2ksICVlc2kJCS8qIHNvdXJjZSBvZmZzZXQ6IDAg
Ki8NCisJcHVzaGwJJWRzCQkJLyogc2F2ZSBkcyAqLw0KIAlwdXNobAklZnMN
Ci0JcG9wbAklZHMNCisJcG9wbAklZHMJCQkvKiBzb3VyY2Ugc2VnbWVudDog
c3R1YiBzZWdtZW50ICovDQogCWNsZA0KIAlyZXANCi0JbW92c2wNCi0JcG9w
bAklZHMNCisJbW92c2wJCQkJLyogbW9vdmUgaXQgKi8NCisJcG9wbAklZHMJ
CQkvKiByZXN0b3JlIGRzICovDQogDQotI2lmIDAJCQkJCQkvKiBkb25lIGlu
IGNydDEuYyAqLw0KLQkuYnl0ZSAweDY0IC8qIGZzOiAqLwkJCS8qIHNldCB1
cCBfZ28zMl9pbmZvX2Jsb2NrIHN0cnVjdHVyZSAqLw0KKyNpZiAwCQkJCQkv
KiBub3cgZG9uZSBpbiBjcnQxLmMgKi8NCisJLyogc2V0IHVwIF9nbzMyX2lu
Zm9fYmxvY2sgc3RydWN0dXJlOiAqLw0KKwkuYnl0ZSAweDY0IC8qIGZzOiAq
LwkJCQ0KIAltb3Z6d2wJU1RVQklORk9fTUlOS0VFUCwgJWVheA0KIAltb3Zs
CSVlYXgsIF9fZ28zMl9pbmZvX2Jsb2NrKzE2CS8qIC5zaXplX29mX3RyYW5z
ZmVyX2J1ZmZlciAqLw0KIAkuYnl0ZSAweDY0IC8qIGZzOiAqLw0KQEAgLTI5
NiwxNyArMzI0LDE3IEBAIG5vX3NlbGVjdG9yOg0KIHVzZV9zdHViaW5mb19z
dGFja19zaXplOg0KIAlwdXNobAklZWF4DQogCWNhbGwJX19fc2JyawkJCS8q
IGFsbG9jYXRlIHRoZSBtZW1vcnkgKi8NCi0JY21wbAkkLTEsICVlYXgNCisJ
Y21wbAkkLTEsICVlYXgJCS8qIGJhaWwgb3V0IGlmIHNicmsoKSBmYWlsZWQg
Ki8NCiAJamUJbm9fbWVtb3J5DQogCW1vdmwJJWVheCwgX19fZGpncHBfc3Rh
Y2tfbGltaXQJLyogQm90dG9tIG9mIHN0YWNrICovDQotCWFkZGwJX19zdGts
ZW4sICVlYXgNCi0JbW92dwklZHMsICVkeAkJLyogc2V0IHN0YWNrICovDQor
CWFkZGwJX19zdGtsZW4sICVlYXgJCS8qIHBsdXMgbGVuZ3RoIC0tPiB0b3Ag
b2Ygc3RhY2sgKi8NCisJbW92dwklZHMsICVkeAkJLyogc2V0IHN0YWNrIHNl
Z21lbnQgKi8NCiAJbW92dwklZHgsICVzcw0KLQlhbmRiCSQweGY4LCAlYWwJ
CS8qIGFsaWduIHRvIDgtYnl0ZSBib3VuZGFyeSAqLw0KLQltb3ZsCSVlYXgs
ICVlc3ANCisJYW5kYgkkMHhmOCwgJWFsCQkvKiBhbGlnbiBTUCB0byA4LWJ5
dGUgYm91bmRhcnkgKi8NCisJbW92bAklZWF4LCAlZXNwCQkvKiAuLi4gYW5k
IHNldCBpdCAqLw0KIA0KLQl4b3JsCSVlYnAsICVlYnANCi0gICAgICAgIHB1
c2hsICAgJF9mcmFtZV9zdHJ1Y3QNCisJeG9ybAklZWJwLCAlZWJwCQkvKiBz
dGFydCB3aXRoIGZyYW1lIHBvaW50ZXIgPSAwICovDQorICAgICAgICBwdXNo
bCAgICRfZnJhbWVfc3RydWN0CQkvKiBzZXQgdXAgYSB0b3Atb2Ytc3RhY2sg
Y2FsbCBmcmFtZSAqLw0KICAgICAgICAgcHVzaGwgICAkX0NSVDBfRUhfRlJB
TUVfQkVHSU5fDQogICAgICAgICBjYWxsICAgIF9fX3JlZ2lzdGVyX2ZyYW1l
X2luZm8NCiAgICAgICAgIGFkZGwgICAgJDgsICVlc3ANCkBAIC0zMTcsOCAr
MzQ1LDkgQEAgbm9fbWVtb3J5Og0KIAltb3ZiCSQweGZmLCAlYWwNCiAJam1w
CWV4aXQNCiANCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCisv
KiBtYWNybyBlcXVpdmFsZW50IG9mIF9fZHBtaV9mcmVlX2xkdF9kZXNjcmlw
dG9yKCkgKi8NCiAjZGVmaW5lIEZSRUVTRUwoeCkgbW92dyB4LCAlYng7IG1v
dncgJDB4MDAwMSwgJWF4OyBpbnQgJDB4MzENCiANCiAJLmdsb2JhbAlfX19l
eGl0DQpAQCAtMzMxLDEyICszNjAsMTQgQEAgZXhpdDoNCiAJbW92dwklYXgs
JWZzDQogCW1vdncJJWF4LCVncw0KIAljbGkJCQkJLyogSnVzdCBpbiBjYXNl
IHRoZXkgZGlkbid0IHVuaG9vayBpbnRzICovDQorCQ0KIAlGUkVFU0VMKF9f
Z28zMl9pbmZvX2Jsb2NrKzI2KQkvKiBzZWxlY3RvciBmb3IgbGluZWFyIG1l
bW9yeSAqLw0KIAlGUkVFU0VMKF9fX2RqZ3BwX2RzX2FsaWFzKQkvKiBEUyBh
bGlhcyBmb3Igcm1jYiBleGNlcHRpb25zICovDQogI2lmZGVmIE1VTFRJQkxP
Q0sNCi0JdGVzdGIJJDB4OCwgX19jcnQwX3N0YXJ0dXBfZmxhZ3MrMQkJLyog
aW5jbHVkZS9jcnQwLmggKi8NCi0JanoJOWYNCisJdGVzdGIJJDB4OCwgX19j
cnQwX3N0YXJ0dXBfZmxhZ3MrMSAvKiBfQ1JUMF9GTEFHX1VOSVhfU0JSSyAq
Lw0KKwlqegk5ZgkJLyoganVtcCBpZiBVTklYeSBzYnJrIG5vdCBpbiB1c2Ug
Ki8NCiAjZW5kaWYNCisJLyogRnJlZSBjb2RlMTYgc2VnbWVudCB1c2VkIGJ5
IHNicmsgMTZiaXQgaGVscGVyIGNvZGUgKi8NCiAJRlJFRVNFTChzYnJrMTZf
YXBpX3NlZykJCS8qIHNicmsgY3MgKi8NCiAJbW92dwlzYnJrMTZfZmlyc3Rf
Ynl0ZSs2LCVkeCAvKiBzZWxlY3RvciBmb3IgYWxsb2NhdGVkIERPUyBtZW0g
Ki8NCiAJbW92dwkkMHgxMDEsICVheA0KQEAgLTM2MiwxNCArMzkzLDE0IEBA
IGV4aXQ6DQogDQogI2lmZGVmIE1VTFRJQkxPQ0sNCiAJbW92bAlfX19kamdw
cF9tZW1vcnlfaGFuZGxlX3BvaW50ZXIsICVlYngNCi0Jam1wCTdmDQotNjoJ
c3VibAkkOCwgJWVieA0KLQltb3ZsCSglZWJ4KSwgJWVkaQ0KKwlqbXAJN2YJ
CQkvKiBkbyB7ICovDQorNjoJc3VibAkkTUVNT1JZX0hBTkRMRV9TSVpFLCAl
ZWJ4IC8qIGhhbmRsZV9wb2ludGVyIG1vdmVzIGJhY2t3YXJkcyAqLw0KKwlt
b3ZsCSglZWJ4KSwgJWVkaQkJLyogc3RvcmVkIGhhbmRsZSAtLT4gU0k6REkg
Ki8NCiAJbW92dwkyKCVlYngpLCAlc2kNCi0JbW92dwkkMHg1MDIsICVheA0K
Kwltb3Z3CSQweDUwMiwgJWF4CQkvKiBEUE1JIGZyZWVfbWVtb3J5X2Jsb2Nr
ICovDQogCWludAkkMHgzMQ0KLTc6CWNtcGwJJF9fX2RqZ3BwX21lbW9yeV9o
YW5kbGVfbGlzdCs4LCAlZWJ4DQotCWpuZQk2Yg0KKzc6CWNtcGwJJF9fX2Rq
Z3BwX21lbW9yeV9oYW5kbGVfbGlzdCtNRU1PUllfSEFORExFX1NJWkUsICVl
YngNCisJam5lCTZiCQkJLyogfXdoaWxlKG5vdCBmaXJzdCBibG9jaykgKi8N
CiAjZW5kaWYgLyogTVVMVElCTE9DSyAqLw0KIAl4b3JsCSVlYnAsICVlYnAJ
CQkJLyogVjEuMTAgYnVnIGZpeCAqLw0KIAltb3ZsCV9fX2RqZ3BwX21lbW9y
eV9oYW5kbGVfbGlzdCwgJWVkaQ0KQEAgLTM3NywxMSArNDA4LDEyIEBAIGV4
aXQ6DQogDQogCUZSRUVTRUwoJWRzKQ0KIAltb3Z3CSVjcywgJWJ4DQotLyog
Q2FsbCBleGl0IHByb2NlZHVyZSB3aXRoIEJYPTMyLWJpdCBDUzsgU0krREk9
MzItYml0IGhhbmRsZTsgREw9ZXhpdCBzdGF0dXMgKi8NCisvKiBDYWxsIGV4
aXQgcHJvY2VkdXJlIHdpdGggQlg9MzItYml0IENTOyBTSStEST0zMi1iaXQg
aGFuZGxlOyANCisgKiBETD1leGl0IHN0YXR1cyAqLw0KIAkuYnl0ZSAweDJl
DQogCUxKTVAoc2JyazE2X2FwaV9vZnMpDQogDQotLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0qLw0KIA0KIC8qCS5sY29tbQlfX3doYXRfc2l6ZV9hcHBf
dGhpbmtzX2l0X2lzLCA0ICovDQogLmRhdGENCkBAIC0zOTMsMTYgKzQyNSwx
NiBAQCBfX3doYXRfc2l6ZV9hcHBfdGhpbmtzX2l0X2lzOg0KIA0KIGxvY2tf
bWVtb3J5Og0KIAkvKiBCWDpDWCBzaG91bGQgYmUgbGluZWFyIGFkZHJlc3M7
IHNpemUgaXMgcHVzaGVkIG9uIHN0YWNrICovDQotCXRlc3RiCSQweDEwLCBf
X2NydDBfc3RhcnR1cF9mbGFncysxCQkvKiBpbmNsdWRlL2NydDAuaCAqLw0K
LQlqegkxM2YNCi0JcHVzaGwJJWVzaQ0KKwl0ZXN0YgkkMHgxMCwgX19jcnQw
X3N0YXJ0dXBfZmxhZ3MrMSAvKiBfQ1JUMF9GTEFHX0xPQ0tfTUVNT1JZICov
DQorCWp6CTEzZgkJCS8qIG5vIGxvY2tpbmcgd2FudGVkPyAtLT4gcmV0dXJu
ICovDQorCXB1c2hsCSVlc2kJCQkvKiBzYXZlIHNvbWUgcmVnaXN0ZXJzICov
DQogCXB1c2hsCSVlZGkNCiAJcHVzaGwJJWVheA0KLQltb3ZsCTE2KCVlc3Ap
LCVlZGkNCisJbW92bAkxNiglZXNwKSwlZWRpCQkvKiBhcmc6CXNpemUgdG8g
YmUgbG9ja2VkICovDQogCW1vdncJMTgoJWVzcCksJXNpDQotCW1vdncJJDB4
NjAwLCVheA0KKwltb3Z3CSQweDYwMCwlYXgJCS8qIERQTUkgbG9ja19saW5l
YXJfcmVnaW9uICovDQogCWludAkkMHgzMQ0KLQlwb3BsCSVlYXgNCisJcG9w
bAklZWF4CQkJLyogcmVzdG9yZSBzYXZlZCByZWdzICovDQogCXBvcGwJJWVk
aQ0KIAlwb3BsCSVlc2kNCiAxMzoJcmV0CSQ0CQkJLyogUG9wIHRoZSBhcmd1
bWVudCAqLw0KQEAgLTQyMiwxNyArNDU0LDE5IEBAIF9fX3Nicms6DQogCW1v
dmwJX193aGF0X3NpemVfYXBwX3RoaW5rc19pdF9pcywgJWVheA0KIAltb3Zs
CTQoJWVzcCksICVlY3gJCQkvKiBJbmNyZW1lbnQgc2l6ZSAqLw0KIAlhZGRs
CSVlY3gsICVlYXgNCi0Jam5jCWJya19jb21tb24NCisJam5jCWJya19jb21t
b24JCS8qIHJlbWFpbnMgYmVsb3cgNEdCPyBPSywgZG8gaXQgKi8NCiAJLyog
Q2FycnkgaXMgb25seSBzZXQgaWYgYSBuZWdhdGl2ZSBpbmNyZW1lbnQgb3Ig
d3JhcCBoYXBwZW5zLiAgTmVnYXRpdmUNCi0JICAgaW5jcmVtZW50IGlzIHNl
bWktT0ssIHdyYXAgKG9ubHkgZm9yIG11bHRpcGxlIHpvbmUgc2JyaykgaXNu
J3QuICovDQorICogaW5jcmVtZW50IGlzIHNlbWktT0ssIHdyYXAgKG9ubHkg
Zm9yIG11bHRpcGxlIHpvbmUgc2JyaykgaXNuJ3QuICovDQogCXRlc3QJJDB4
ODAwMDAwMDAsICVlY3gJCS8qIENsZWFycyBjYXJyeSAqLw0KLQlqbnoJYnJr
X2NvbW1vbg0KLQlzdGMJCQkJCS8qIFB1dCBjYXJyeSBiYWNrICovDQotCWpt
cAlicmtfY29tbW9uDQorCWpueglicmtfY29tbW9uCQkvKiBpbmNyZW1lbnQg
PDA/IE9LLCBkbyBpdCAqLw0KKwlzdGMJCQkJLyogUmFpc2UgY2FycnkgdG8g
c2lnbmFsIHdyYXBhcm91bmQgKi8NCisJam1wCWJya19jb21tb24JCS8qIC4u
LiBhbmQgZG8gaXQgYW55d2F5ICovDQogDQogCS5nbG9ibAlfX19icmsNCiAJ
LmJhbGlnbgkxNiwsNw0KIF9fX2JyazoNCisvKiBGSVhNRSBIQkIgMjAwMTA0
MjU6IHNob3VsZG4ndCB3ZSB6ZXJvIG91dCAlZWN4PyBOb24tbW92aW5nIHNi
cmsgYXNzdW1lcw0KKyAqIHRoYXQgJWVjeCBob2xkcyB0aGUgc2l6ZSwgYnV0
IGNhbGxpbmcgYnJrKCkgZGlyZWN0bHkgZG9lc24ndCBzZXQgaXQhICovDQog
CW1vdmwJNCglZXNwKSwgJWVheA0KIAljbGMNCiANCkBAIC00NDYsMTQgKzQ4
MCwyMSBAQCBicmtfY29tbW9uOg0KIAltb3ZsCSVlZHgsIF9fd2hhdF93ZV9y
ZXR1cm5fdG9fYXBwX2FzX29sZF9zaXplDQogCW1vdmwJJWVheCwgX193aGF0
X3NpemVfYXBwX3RoaW5rc19pdF9pcw0KIA0KKy8qIEZJWE1FIEhCQiAyMDAx
MDQyNToganVtcHMgZnJvbSBvdXRzaWRlIGludG8gYW4gI2lmZGVmIE1VTFRJ
QkxPQ0sgY29kZQ0KKyAqIGFyZWEuLi4gKi8JDQogCWpjCTEwZgkJCQkJCS8q
IFdyYXAgZm9yIG11bHRpLXpvbmUgKi8NCi0JY21wbAlfX3doYXRfc2l6ZV9k
cG1pX3RoaW5rc193ZV9hcmUsICVlYXgJCS8qIGRvbid0IGJvdGhlciBzaHJp
bmtpbmcgKi8NCi0JamJlCWJya19ub2NoYW5nZQ0KKwljbXBsCV9fd2hhdF9z
aXplX2RwbWlfdGhpbmtzX3dlX2FyZSwgJWVheCAvKiBpcyBuZXcgc2l6ZSBz
bWFsbGVyPyAqLw0KKwlqYmUJYnJrX25vY2hhbmdlCQkJLyogZG9uJ3QgYm90
aGVyIHNocmlua2luZyAqLw0KIA0KICNpZmRlZiBNVUxUSUJMT0NLDQotCXRl
c3RiCSQweDgsIF9fY3J0MF9zdGFydHVwX2ZsYWdzKzEJCS8qIGluY2x1ZGUv
Y3J0MC5oICovDQotCWp6CTEwZg0KKwl0ZXN0YgkkMHg4LCBfX2NydDBfc3Rh
cnR1cF9mbGFncysxCS8qIF9DUlQwX0ZMQUdfVU5JWF9TQlJLICovDQorCWp6
CTEwZgkJCQkvKiBqdW1wIGlmIG5vdCBVTklYeSBzYnJrICovDQogI2VuZGlm
DQorLyogLS0tLS0tLS0tLS0tLS0gVU5JWHkgc2JyayBhbGdvcml0aG0gLS0t
LS0tLS0tLS0gKi8NCisJLyogUmVhbGxvY2F0ZSBibG9jayB0byBuZXcgc2l6
ZS4gSXQgbWF5IG1vdmUgdG8gYSBuZXcgYmFzZSANCisJICogYWRkcmVzcyB3
aGlsZSBkb2luZyBzbyAtLT4gaGF2ZSB0byBnbyBpbnRvIDE2Yml0IG1vZGUg
Zm9yIGENCisJICogd2hpbGUsIGFuZCBvbmx5IHJldHVybiBpbnRvIHBtb2Rl
IGFmdGVyIGFsbCBpcyBzZXQgdXAgDQorCSAqIGNvcnJlY3RseSwgYWdhaW4g
Ki8NCiAJYWRkbAkkMHgwMDAwZmZmZiwgJWVheAkJCQkvKiByb3VuZCB1cCB0
byA2NEsgYmxvY2sgKi8NCiAJYW5kbAkkMHhmZmZmMDAwMCwgJWVheA0KIAlw
dXNoCSVlYXgJCQkJCQkvKiBzaXplIC0gc2F2ZSBmb3IgbGF0ZXIgKi8NCkBA
IC00NjQsMTI3ICs1MDUsMTQ0IEBAIGJya19jb21tb246DQogCW1vdmwJJWVh
eCwgJWVieAkJCQkJLyogc2l6ZSBub3QgbGltaXQgKi8NCiAJc2hybAkkMTYs
ICVlYngJCQkJCS8qIEJYOkNYIHNpemUgKi8NCiANCi0JbW92dwkkMHgwOTAw
LCAlYXgJCQkJCS8qIGRpc2FibGUgaW50ZXJydXB0cyAqLw0KKwltb3Z3CSQw
eDA5MDAsICVheAkJLyogRFBNSSBkaXNhYmxlX3ZpcnR1YWxfaW50ZXJydXB0
cyAqLw0KIAlpbnQJJDB4MzENCi0JcHVzaGwJJWVheA0KKwlwdXNobAklZWF4
CQkJCS8qIHNhdmUgb2xkIGludGVycnVwdCBzdGF0dXMgKi8NCiANCi0JTENB
TEwoc2JyazE2X2FwaV9vZnMpDQorCUxDQUxMKHNicmsxNl9hcGlfb2ZzKQkJ
CS8qIGNhbGwgdGhlIDE2Yml0IGhlbHBlciAqLw0KIA0KIAlzZXRjCSVkbAkJ
CQkJCS8qIFNhdmUgY2FycnkgKi8NCiANCi0JcG9wbAklZWF4CQkJCQkvKiBy
ZXN0b3JlIGludGVycnVwdHMgKi8NCisJcG9wbAklZWF4CQkJCS8qIERQTUk6
IHJlc3RvcmUgaW50ZXJydXB0cyAqLw0KIAlpbnQJJDB4MzENCiANCi0JdGVz
dAklZGwsJWRsDQotCXBvcGwJJWVkeA0KLQlqbmUJYnJrX2Vycm9yDQorCXRl
c3QJJWRsLCVkbAkJCQkvKiBzYnJrMTYgZmFpbGVkPyAqLw0KKwlwb3BsCSVl
ZHgJCQkJLyogcG9wIHNhdmVkIG5ldyBzaXplICovDQorCWpuZQlicmtfZXJy
b3IJCQkvKiBicmFuY2ggaWYgc2JyazE2IGZhaWxlZCAqLw0KIA0KIAltb3Zs
CSVlZGksIF9fX2RqZ3BwX21lbW9yeV9oYW5kbGVfbGlzdAkJLyogc3RvcmUg
bmV3IGhhbmRsZSAqLw0KIAltb3Z3CSVzaSwgX19fZGpncHBfbWVtb3J5X2hh
bmRsZV9saXN0KzINCiAJbW92bAklZWN4LCBfX19kamdwcF9iYXNlX2FkZHJl
c3MJCQkvKiBzdG9yZSBuZXcgYmFzZSBhZGRyZXNzICovDQogCW1vdncJJWJ4
LCBfX19kamdwcF9iYXNlX2FkZHJlc3MrMg0KIA0KLQltb3ZsCSVlZHgsICVl
YXgNCisJLyogTG9jayBtZW1vcnkgYmV0d2VlbiBvbGQgYW5kIG5ldyBlbmQg
Ki8NCisJbW92bAklZWR4LCAlZWF4CQkJLyogbmV3IHNpemUgLSBvbGQgc2l6
ZSAqLw0KIAltb3ZsCV9fd2hhdF9zaXplX2RwbWlfdGhpbmtzX3dlX2FyZSwg
JWVjeA0KIAlzdWJsCSVlY3gsICVlYXgNCi0NCi0JYWRkbAlfX19kamdwcF9i
YXNlX2FkZHJlc3MsICVlY3gNCisJYWRkbAlfX19kamdwcF9iYXNlX2FkZHJl
c3MsICVlY3gJLyogc3RhcnQ6IG9sZF9zdGFydCtvbGRfc2l6ZSAqLw0KIAlt
b3ZsCSVlY3gsICVlYngNCi0Jc2hybAkkMTYsICVlYngJCQkJCS8qIEJYOkNY
IGFkZHIgKi8NCi0JcHVzaGwJJWVheAkJCQkJCS8qIFNpemUgKi8NCi0JY2Fs
bAlsb2NrX21lbW9yeQ0KKwlzaHJsCSQxNiwgJWVieAkJCS8qIGhpZ2h3b3Jk
IHRvIEJYICovDQorCXB1c2hsCSVlYXgJCQkJLyogc2l6ZSBvZiByZWdpb24g
dG8gbG9jayAqLw0KKwljYWxsCWxvY2tfbWVtb3J5CQkJLyogbG9jayBpZiBh
Y3RpdmF0ZWQgKi8NCiANCiAJZGVjbAklZWR4CQkJCQkJLyogbGltaXQgbm93
LCBub3Qgc2l6ZSAqLw0KICNpZmRlZiBNVUxUSUJMT0NLDQotCWptcAk1Zg0K
KwlqbXAJNWYJCQkvKiBqdW1wIG92ZXIgbm9uLW1vdmluZyBzYnJrKCkgY29k
ZSAqLw0KKw0KKy8qIC0tLS0tLS0tLSBub24tbW92aW5nIC8gTVVMVElCTE9D
SyBzYnJrIGFsZ29yaXRobSAtLS0tLS0tLSAqLwkNCiAvKiBDdXJyZW50IGFs
bG9jYXRpb24gbm90IGxhcmdlIGVub3VnaCwgZ2V0IGFub3RoZXIgYmxvY2sg
Ki8NCi0xMDoJbW92bAklZWN4LCAlZWF4CQkJCQkvKiBBZGQgYW10ICovDQot
CXB1c2hsCSVlYXgJCQkJCQkvKiBTYXZlIG9yaWcgKi8NCisxMDoJbW92bAkl
ZWN4LCAlZWF4CQkvKiBUYWtlIHJlcXVlc3RlZCBjaGFuZ2UgKi8NCisJcHVz
aGwJJWVheAkJCS8qIFNhdmUgaXQgKi8NCiAJYWRkbAkkMHgwMDAwZmZmZiwg
JWVheAkJCQkvKiByb3VuZCB1cCB0byA2NEsgYmxvY2sgKi8NCiAJYW5kbAkk
MHhmZmZmMDAwMCwgJWVheA0KIAltb3ZsCSVlYXgsICVlZHgJCQkJCS8qIFNh
dmUgc2l6ZSAqLw0KIAltb3ZsCSVlYXgsICVlY3gNCi0JbW92bAklZWF4LCAl
ZWJ4DQotCXNocmwJJDE2LCAlZWJ4CQkJCQkvKiBCWDpDWCBzaXplICovDQot
CW1vdncJJDB4NTAxLCVheA0KKwltb3ZsCSVlYXgsICVlYngJCS8qIGhpZ2h3
b3JkIHRvIEJYICovDQorCXNocmwJJDE2LCAlZWJ4CQkJDQorCW1vdncJJDB4
NTAxLCVheAkJLyogRFBNSTogYWxsb2NhdGVfbWVtb3J5X2Jsb2NrICovDQog
CWludAkkMHgzMQ0KLQlwb3BsCSVlYXgJCQkJCQkvKiBPcmlnIHNpemUgKi8N
Ci0JamMJYnJrX2Vycm9yDQorCXBvcGwJJWVheAkJCS8qIHBvcCBvcmlnaW5h
bCByZXF1ZXN0ZWQgc2l6ZSAqLw0KKwlqYwlicmtfZXJyb3IJCS8qIGJhaWwg
b3V0IGlmIERQTUkgZmFpbGVkICovDQogDQotCXB1c2hsCSVlZHgJCQkJCQkv
KiBTaXplICovDQotCWNhbGwJbG9ja19tZW1vcnkNCisJcHVzaGwJJWVkeAkJ
CS8qIHJvdW5kZWQgc2l6ZSAqLw0KKwljYWxsCWxvY2tfbWVtb3J5CQkvKiBM
b2NrIG5ldyByZWdpb24gKi8NCiANCi0JcHVzaHcJJWJ4DQorLyogSWYgbmV3
IGJsb2NrIGlzIG5vdCBjb25uZWN0ZWQgdG8gdXBwZXIgZW5kIG9mIGV4aXN0
aW5nIGFyZW5hLA0KKyAqIG1vdmUgdGhlIGFyZW5hJ3MgZW5kIGFjY29yZGlu
Z2x5ICovDQorCXB1c2h3CSVieAkJCS8qIHB1c2ggYWRkcmVzcyBvZiBmcmVz
aCBibG9jayAqLw0KIAlwdXNodwklY3gNCi0JcG9wbAklZWN4CQkJCQkJLyog
TGluZWFyIGFkZHJlc3MgKi8NCisJcG9wbAklZWN4CQkJLyogcG9wIGJhY2sg
YXMgb25lIGxpbmVhciBhZGRyZXNzICovDQogCXN1YmwJX19fZGpncHBfYmFz
ZV9hZGRyZXNzLCAlZWN4CQkJLyogTmV3IGRwbWkgc2l6ZSAqLw0KLQljbXBs
CSVlY3gsIF9fd2hhdF9zaXplX2RwbWlfdGhpbmtzX3dlX2FyZQkJLyogQmFj
ayB0byBiYWNrID8gKi8NCi0JamUJNGYNCi0JbW92bAklZWN4LCBfX3doYXRf
c2l6ZV9kcG1pX3RoaW5rc193ZV9hcmUNCisJY21wbAklZWN4LCBfX3doYXRf
c2l6ZV9kcG1pX3RoaW5rc193ZV9hcmUJLyogY29tcGFyZSBvbGQgZW5kICov
DQorCWplCTRmCQkJCS8qIEJhY2sgdG8gYmFjayA/IC0tPiBPSyAqLw0KKy8q
IEhCQiAyMDAxMDQyNTogPlRISVM8IGlzIHRoZSBwbGFjZSB3aGVyZSBob2xl
cyBhcmUgZHJpbGxlZCBpbnRvIGFkZHJlc3MNCisgKiBzcGFjZS4gVGhleSBh
cmUgYmV0d2VlbiB0aGUgcHJldmlvdXMgYW5kIG5ldyB2YWx1ZXMgb2YgdGhl
c2UgdHdvDQorICogcGFyYW1ldGVycywgZWZmZWN0aXZlbHkgKi8NCisJbW92
bAklZWN4LCBfX3doYXRfc2l6ZV9kcG1pX3RoaW5rc193ZV9hcmUJLyogbm8g
LS0+IGNoYW5nZSAqLw0KIAltb3ZsCSVlY3gsIF9fd2hhdF93ZV9yZXR1cm5f
dG9fYXBwX2FzX29sZF9zaXplDQorDQogNDoNCiAJbW92bAlfX3doYXRfd2Vf
cmV0dXJuX3RvX2FwcF9hc19vbGRfc2l6ZSwgJWVieAkvKiBCYXNlIGZvciBu
ZXcgYmxvY2sgKi8NCi0JYWRkbAklZWJ4LCAlZWF4CQkJCQkvKiBGaW5hbCBh
ZGRyZXNzICovDQotCW1vdmwJJWVheCwgX193aGF0X3NpemVfYXBwX3RoaW5r
c19pdF9pcw0KKwlhZGRsCSVlYngsICVlYXgJCQkJLyogYWRkIHJlcXVlc3Rl
ZCAqLw0KKwltb3ZsCSVlYXgsIF9fd2hhdF9zaXplX2FwcF90aGlua3NfaXRf
aXMJLyogc3RvcmUgYXMgbmV3IHNpemUgKi8NCiAvKiBOb3RlIC0gc2F2ZSBh
ZGp1c3RlZCBtZW1vcnkgYmFzZSBhbmQgbWVtb3J5IGhhbmRsZSBTSTpESSBo
ZXJlICovDQogCW1vdmwJX19fZGpncHBfbWVtb3J5X2hhbmRsZV9wb2ludGVy
LCAlZWJ4DQotCW1vdmwJJWVkaSwgKCVlYngpDQotCW1vdncJJXNpLCAyKCVl
YngpDQotCW1vdmwJJWVjeCwgNCglZWJ4KQ0KLQlhZGRsCSQ4LCAlZWJ4DQot
CWNtcGwJJF9fX2RqZ3BwX21lbW9yeV9oYW5kbGVfbGlzdCsyMDQwLCAlZWJ4
CQkvKiBBdCBlbmQ/ICovDQotCWplCTExZg0KLQltb3ZsCSVlYngsIF9fX2Rq
Z3BwX21lbW9yeV9oYW5kbGVfcG9pbnRlcgkJLyogT25seSBpZiBub3QgYXQg
ZW5kICovDQorCW1vdmwJJWVkaSwgKCVlYngpCQkvKiBzdG9yZSBibG9jayBp
bmZvcyB0byBmcmVlIGhhbmRsZSAqLw0KKwltb3Z3CSVzaSwgMiglZWJ4KQkJ
CS8qIGhhbmRsZSBpcyBTSTpESSAqLw0KKwltb3ZsCSVlY3gsIDQoJWVieCkJ
CQkvKiBibG9jayBhZGRyZXNzICh3YXMgQlg6Q1gpICovDQorCWFkZGwJJE1F
TU9SWV9IQU5ETEVfU0laRSwgJWVieAkvKiBwb2ludCB0byBuZXh0IGZyZWUg
aGFuZGxlICovDQorCWNtcGwJJChfX19kamdwcF9tZW1vcnlfaGFuZGxlX2xp
c3QrIFwNCisJCShOVU1CRVJfT0ZfTUVNSEFORExFUy0xKSpNRU1PUllfSEFO
RExFX1NJWkUpIFwNCisJCSwgJWVieAkJLyogQXQgZW5kIG9mIGhhbmRsZV9s
aXN0W10/ICovDQorCWplCTExZgkJCS8qIE9ubHkgaWYgbm90IGF0IGVuZCAq
Lw0KKwltb3ZsCSVlYngsIF9fX2RqZ3BwX21lbW9yeV9oYW5kbGVfcG9pbnRl
ciAvKiB3cml0ZSBiYWNrIHBvaW50ZXIgKi8NCisNCiAxMToNCiAJYWRkbAkl
ZWN4LCAlZWR4CQkJCQkvKiBGaW5hbCBhZGRyZXNzICovDQogCWRlY2wJJWVk
eAkJCQkJCS8qIExpbWl0IHRvIGVuZCAqLw0KIC8qIElmIHdlIGdldCBhIGJs
b2NrIGF0IGEgbG93ZXIgYWRkcmVzcyB3ZSBtdXN0IHNraXAgdGhlIGxpbWl0
IGNoYW5nZSAqLw0KLQljbXBsCV9fX2RqZ3BwX3NlbGVjdG9yX2xpbWl0LCAl
ZWR4DQorCWNtcGwJX19fZGpncHBfc2VsZWN0b3JfbGltaXQsICVlZHgJLyog
Y29tcGFyZSBvbGQgdG8gbmV3IGxpbWl0ICovDQogCWpiZQkxMmYNCi0jZW5k
aWYNCi01Ogltb3ZsCSVlZHgsIF9fX2RqZ3BwX3NlbGVjdG9yX2xpbWl0DQor
I2VuZGlmIC8qIE1VTFRJQkxPQ0sgKi8NCisNCisvKiBDaGFuZ2UgdmFyaW91
cyBzZXR0aW5ncyBhbmQgdmFyaWFibGVzIHRvIHJlZmxlY3QgbmV3IG92ZXJh
bGwgc2l6ZSBvZg0KKyAqIHRoZSBwcm9ncmFtJ3MgYXJlbmEuIEV4cGVjdHMg
bmV3IGxpbWl0IGluICVlZHggICovDQorNToJbW92bAklZWR4LCBfX19kamdw
cF9zZWxlY3Rvcl9saW1pdAkvKiBjaGFuZ2UgdXNlciB2YXJpYWJsZSAqLw0K
IAlvcncJJDB4MGZmZiwgJWR4CQkJCQkvKiBsb3cgYml0cyBzZXQgKi8NCi0J
bW92dwkkMHgwMDA4LCAlYXgJCQkJCS8qIHJlc2V0IENTIGxpbWl0ICovDQot
CW1vdncJJWNzLCAlYngNCi0JbW92bAklZWR4LCAlZWN4DQorCW1vdncJJDB4
MDAwOCwgJWF4CQkJLyogRFBNSSBzZXRfc2VnbWVudF9saW1pdCAqLw0KKwlt
b3Z3CSVjcywgJWJ4CQkJLyogcmVzZXQgQ1MgbGltaXQgKi8NCisJbW92bAkl
ZWR4LCAlZWN4CQkJLyogaGlnaHdvcmQgdG8gQ1ggKi8NCiAJc2hybAkkMTYs
ICVlY3gNCiAJaW50CSQweDMxCQkJCQkJLyogQ1g6RFggaXMgbGltaXQgKi8N
CiANCi0JdGVzdGIJJDB4ODAsIF9fY3J0MF9zdGFydHVwX2ZsYWdzCQkJLyog
aW5jbHVkZS9jcnQwLmggKi8NCi0Jam56CTNmDQotCW1vdncJJDB4MDAwOCwg
JWF4CQkJCQkvKiByZXNldCBEUyBsaW1pdCAqLw0KLQltb3Z3CSVkcywgJWJ4
DQorCXRlc3RiCSQweDgwLCBfX2NydDBfc3RhcnR1cF9mbGFncwkvKiBfQ1JU
MF9GTEFHX05FQVJQVFIgKi8NCisJam56CTNmCQkJCS8qIGRvbid0IHRvdWNo
IGRzIGlmIG5lYXJwdHIgKi8NCisJbW92dwkkMHgwMDA4LCAlYXgJCQkvKiBE
UE1JIHNldF9zZWdtZW50X2xpbWl0ICovDQorCW1vdncJJWRzLCAlYngJCQkv
KiByZXNldCBEUyBsaW1pdCAqLw0KIAlpbnQJJDB4MzENCiANCi0JbW92dwkk
MHgwMDA4LCAlYXgJCQkJCS8qIHJlc2V0IERTIGFsaWFzIGxpbWl0ICovDQot
CW1vdmwJX19fZGpncHBfZHNfYWxpYXMsICVlYngNCisJbW92dwkkMHgwMDA4
LCAlYXgJCQkvKiBEUE1JIHNldF9zZWdtZW50X2xpbWl0ICovDQorCW1vdmwJ
X19fZGpncHBfZHNfYWxpYXMsICVlYngJCS8qIHJlc2V0IERTIGFsaWFzIGxp
bWl0ICovDQogCWludAkkMHgzMQ0KIDM6DQotCW1vdncJJDB4MDAwNywgJWF4
CQkJCQkvKiByZXNldCBEUyBhbGlhcyBiYXNlICovDQotCW1vdmwJX19fZGpn
cHBfZHNfYWxpYXMsICVlYngNCi0JbW92bAlfX19kamdwcF9iYXNlX2FkZHJl
c3MsICVlZHgNCisJbW92dwkkMHgwMDA3LCAlYXgJCS8qIERQTUkgc2V0X3Nl
Z21lbnRfYmFzZV9hZGRyZXNzICovDQorCW1vdmwJX19fZGpncHBfZHNfYWxp
YXMsICVlYngJCS8qIHJlc2V0IERTIGFsaWFzIGJhc2UgKi8NCisJbW92bAlf
X19kamdwcF9iYXNlX2FkZHJlc3MsICVlZHgJLyogbmV3IGJhc2UgYWRkcmVz
cyAqLw0KIAltb3Z3CV9fX2RqZ3BwX2Jhc2VfYWRkcmVzcysyLCAlY3gNCiAJ
aW50CSQweDMxDQogDQogCW1vdmwJX19fZGpncHBfc2VsZWN0b3JfbGltaXQs
ICVlZHgNCisNCiAxMjoJaW5jbAklZWR4CQkJCQkJLyogU2l6ZSBub3QgbGlt
aXQgKi8NCi0JdGVzdGIJJDB4NjAsIF9fY3J0MF9zdGFydHVwX2ZsYWdzCS8q
IGluY2x1ZGUvY3J0MC5oICovDQotCWp6CW5vX2ZpbGxfc2Jya19tZW1vcnkN
CisJLyogX0NSVDBfRkxBR19GSUxMX1NCUktfTUVNT1JZIHwgX0NSVDBfRkxB
R19GSUxMX0RFQURCRUVGICovDQorCXRlc3RiCSQweDYwLCBfX2NydDBfc3Rh
cnR1cF9mbGFncyANCisJanoJbm9fZmlsbF9zYnJrX21lbW9yeQkJLyogYnJh
bmNoIGlmIG5vIGZpbGxpbmcgKi8NCiAJcHVzaGwJJWRzDQogCXBvcGwJJWVz
DQogDQotCW1vdmwJX193aGF0X3NpemVfZHBtaV90aGlua3Nfd2VfYXJlLCAl
ZWRpCQkvKiBzZXQgYWxsIG5ld2x5IHJlc2l6ZWQgYnl0ZXMgemVybyAqLw0K
KwkvKiBzZXQgYWxsIG5ld2x5IHJlc2l6ZWQgYnl0ZXMgemVybyAqLw0KKwlt
b3ZsCV9fd2hhdF9zaXplX2RwbWlfdGhpbmtzX3dlX2FyZSwgJWVkaQkJDQog
CW1vdmwJJWVkeCwgJWVjeAkJCQkJLyogTGltaXQgKi8NCiAJc3VibAklZWRp
LCAlZWN4CQkJLyogQWRqdXN0IGNvdW50IGZvciBiYXNlICovDQogCXhvcmwJ
JWVheCwgJWVheA0KLQl0ZXN0YgkkMHg0MCwgX19jcnQwX3N0YXJ0dXBfZmxh
Z3MNCi0JanoJbm9fZGVhZGJlZWYNCi0JbW92bAkkMHhkZWFkYmVlZiwgJWVh
eAkJLyogc29tZXRoaW5nIHJlYWxseSBlYXN5IHRvIHNwb3QgKi8NCisJdGVz
dGIJJDB4NDAsIF9fY3J0MF9zdGFydHVwX2ZsYWdzCS8qIF9DUlQwX0ZMQUdf
RklMTF9ERUFEQkVFRiAqLw0KKwlqeglub19kZWFkYmVlZgkJCS8qIGZpbGwg
d2l0aCAwIG9yIERFQURCRUVGID8gKi8NCisJbW92bAkkMHhkZWFkYmVlZiwg
JWVheAkJLyogbmljZWx5IHNwb3R0YWJsZSBwYXR0ZXJuICovDQogbm9fZGVh
ZGJlZWY6DQogCXNocmwJJDIsICVlY3gJCQkvKiBkaXYgNCBMb25nd29yZHMg
bm90IGJ5dGVzICovDQogCWNsZA0KIAlyZXANCi0Jc3Rvc2wNCisJc3Rvc2wJ
CQkJCS8qIGZpbGxsbGwgaXQgKi8NCiBub19maWxsX3NicmtfbWVtb3J5Og0K
IAltb3ZsCSVlZHgsIF9fd2hhdF9zaXplX2RwbWlfdGhpbmtzX3dlX2FyZQ0K
IA0K
---494318816-847437528-988288245=:592--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019