From nobody@FreeBSD.org  Sat Jan  9 15:54:42 2010
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 0B562106566B
	for <freebsd-gnats-submit@FreeBSD.org>; Sat,  9 Jan 2010 15:54:42 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id ED9B98FC08
	for <freebsd-gnats-submit@FreeBSD.org>; Sat,  9 Jan 2010 15:54:41 +0000 (UTC)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id o09FsfLt084811
	for <freebsd-gnats-submit@FreeBSD.org>; Sat, 9 Jan 2010 15:54:41 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id o09FsfJ0084778;
	Sat, 9 Jan 2010 15:54:41 GMT
	(envelope-from nobody)
Message-Id: <201001091554.o09FsfJ0084778@www.freebsd.org>
Date: Sat, 9 Jan 2010 15:54:41 GMT
From: Pedro Giffuni <giffunip@tutopia.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: Cleanups and updates to newfs_msdos
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         142526
>Category:       bin
>Synopsis:       [patch] Cleanups and updates to newfs_msdos(8)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    kib
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jan 09 16:00:12 UTC 2010
>Closed-Date:    Mon Sep 13 20:38:21 UTC 2010
>Last-Modified:  Mon Sep 13 20:38:21 UTC 2010
>Originator:     Pedro Giffuni
>Release:        8.0-RELEASE
>Organization:
>Environment:
FreeBSD mogwai.giffuni.net 8.0-RELEASE FreeBSD 8.0-RELEASE #12: Tue Dec  1 23:31:27 UTC 2009     pedro@mogwai.giffuni.net:/usr/src/sys/i386/compile/GENERIC  i386

>Description:
Some cleanups from NetBSD:
- c99 initializers
- snprintf instead of sprintf
- Change the default volume label from "NO NAME" to "NO_NAME".
And others for compatibility:
- Limit Bytes per Sector to max. 4096 to remain in spec.
- Set OEM String to "BSD4.4  " following the unnamed spacing convention
in that other OS that suggests "MSWIN4.1"



>How-To-Repeat:

>Fix:
diff -ru newfs_msdos.orig/newfs_msdos.8 newfs_msdos/newfs_msdos.8
--- newfs_msdos.orig/newfs_msdos.8	2010-01-06 11:06:02.000000000 +0000
+++ newfs_msdos/newfs_msdos.8	2010-01-09 10:25:12.000000000 +0000
@@ -116,7 +116,7 @@
 .It Fl S Ar sector-size
 Number of bytes per sector.
 Acceptable values are powers of 2
-in the range 128 through 32768.
+in the range 512 through 4096.
 .It Fl a Ar FAT-size
 Number of sectors per FAT.
 .It Fl b Ar block-size
diff -ru newfs_msdos.orig/newfs_msdos.c newfs_msdos/newfs_msdos.c
--- newfs_msdos.orig/newfs_msdos.c	2010-01-06 11:06:02.000000000 +0000
+++ newfs_msdos/newfs_msdos.c	2010-01-09 10:31:00.000000000 +0000
@@ -56,6 +56,7 @@
 
 #define DOSMAGIC  0xaa55	/* DOS magic number */
 #define MINBPS	  512		/* minimum bytes per sector */
+#define MAXBPS	  4096		/* maximum bytes per sector */
 #define MAXSPC	  128		/* maximum sectors per cluster */
 #define MAXNFT	  16		/* maximum number of FATs */
 #define DEFBLK	  4096		/* default block size */
@@ -165,20 +166,23 @@
 
 #define BPBGAP 0, 0, 0, 0, 0, 0
 
+#define INIT(a, b, c, d, e, f, g, h, i, j) \
+    { .bps = a, .spc = b, .res = c, .nft = d, .rde = e, \
+      .sec = f, .mid = g, .spf = h, .spt = i, .hds = j, }
 static struct {
     const char *name;
     struct bpb bpb;
 } const stdfmt[] = {
-    {"160",  {512, 1, 1, 2,  64,  320, 0xfe, 1,  8, 1, BPBGAP}},
-    {"180",  {512, 1, 1, 2,  64,  360, 0xfc, 2,  9, 1, BPBGAP}},
-    {"320",  {512, 2, 1, 2, 112,  640, 0xff, 1,  8, 2, BPBGAP}},
-    {"360",  {512, 2, 1, 2, 112,  720, 0xfd, 2,  9, 2, BPBGAP}},
-    {"640",  {512, 2, 1, 2, 112, 1280, 0xfb, 2,  8, 2, BPBGAP}},    
-    {"720",  {512, 2, 1, 2, 112, 1440, 0xf9, 3,  9, 2, BPBGAP}},
-    {"1200", {512, 1, 1, 2, 224, 2400, 0xf9, 7, 15, 2, BPBGAP}},
-    {"1232", {1024,1, 1, 2, 192, 1232, 0xfe, 2,  8, 2, BPBGAP}},    
-    {"1440", {512, 1, 1, 2, 224, 2880, 0xf0, 9, 18, 2, BPBGAP}},
-    {"2880", {512, 2, 1, 2, 240, 5760, 0xf0, 9, 36, 2, BPBGAP}}
+    {"160",  INIT(512, 1, 1, 2,  64,  320, 0xfe, 1,  8, 1)},
+    {"180",  INIT(512, 1, 1, 2,  64,  360, 0xfc, 2,  9, 1)},
+    {"320",  INIT(512, 2, 1, 2, 112,  640, 0xff, 1,  8, 2)},
+    {"360",  INIT(512, 2, 1, 2, 112,  720, 0xfd, 2,  9, 2)},
+    {"640",  INIT(512, 2, 1, 2, 112, 1280, 0xfb, 2,  8, 2)},    
+    {"720",  INIT(512, 2, 1, 2, 112, 1440, 0xf9, 3,  9, 2)},
+    {"1200", INIT(512, 1, 1, 2, 224, 2400, 0xf9, 7, 15, 2)},
+    {"1232", INIT(1024,1, 1, 2, 192, 1232, 0xfe, 2,  8, 2)},    
+    {"1440", INIT(512, 1, 1, 2, 224, 2880, 0xf0, 9, 18, 2)},
+    {"2880", INIT(512, 2, 1, 2, 240, 5760, 0xf0, 9, 36, 2)}
 };
 
 static const u_int8_t bootcode[] = {
@@ -424,6 +428,9 @@
     if (bpb.bps < MINBPS)
 	errx(1, "bytes/sector (%u) is too small; minimum is %u",
 	     bpb.bps, MINBPS);
+    else if (bpb.bps > MAXBPS)
+    	errx(1, "bytes/sector (%u) is too big; maximum is %u",
+	     bpb.bps, MAXBPS);
     if (!(fat = opt_F)) {
 	if (opt_f)
 	    fat = 12;
@@ -533,7 +540,7 @@
     if (!bpb.res)
 	bpb.res = fat == 32 ? MAX(x, MAX(16384 / bpb.bps, 4)) : x;
     else if (bpb.res < x)
-	errx(1, "too few reserved sectors");
+	errx(1, "too few reserved sectors (need %d have %d)", x, bpb.res);
     if (fat != 32 && !bpb.rde)
 	bpb.rde = DEFRDE;
     rds = howmany(bpb.rde, bpb.bps / sizeof(struct de));
@@ -657,8 +664,8 @@
 			 ((u_int)tm->tm_hour << 8 |
 			  (u_int)tm->tm_min));
 		mk4(bsx->volid, x);
-		mklabel(bsx->label, opt_L ? opt_L : "NO NAME");
-		sprintf(buf, "FAT%u", fat);
+		mklabel(bsx->label, opt_L ? opt_L : "NO_NAME");
+		snprintf(buf, sizeof(buf), "FAT%u", fat);
 		setstr(bsx->type, buf, sizeof(bsx->type));
 		if (!opt_B) {
 		    x1 += sizeof(struct bsx);
@@ -666,7 +673,7 @@
 		    mk1(bs->jmp[0], 0xeb);
 		    mk1(bs->jmp[1], x1 - 2);
 		    mk1(bs->jmp[2], 0x90);
-		    setstr(bs->oem, opt_O ? opt_O : "BSD  4.4",
+		    setstr(bs->oem, opt_O ? opt_O : "BSD4.4  ",
 			   sizeof(bs->oem));
 		    memcpy(img + x1, bootcode, sizeof(bootcode));
 		    mk2(img + MINBPS - 2, DOSMAGIC);


>Release-Note:
>Audit-Trail:

From: "Pedro F. Giffuni" <giffunip@tutopia.com>
To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org
Cc:  
Subject: Re: bin/142526: Cleanups and updates to newfs_msdos
Date: Sun, 10 Jan 2010 06:06:57 -0800 (PST)

 --0-1529515083-1263132417=:73967
 Content-Type: text/plain; charset=us-ascii
 
 Update:
 Some people (hi Bruce!) have used non-standard bytes/sector successfully
 in the past so permit formatting of non-standard blocksizes but warn
 about it.
 
 
       
 --0-1529515083-1263132417=:73967
 Content-Type: application/octet-stream; name=patch-newfs_msdos
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename=patch-newfs_msdos
 
 ZGlmZiAtcnUgbmV3ZnNfbXNkb3Mub3JpZy9uZXdmc19tc2Rvcy44IG5ld2Zz
 X21zZG9zL25ld2ZzX21zZG9zLjgKLS0tIG5ld2ZzX21zZG9zLm9yaWcvbmV3
 ZnNfbXNkb3MuOAkyMDEwLTAxLTA2IDExOjA2OjAyLjAwMDAwMDAwMCArMDAw
 MAorKysgbmV3ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuOAkyMDEwLTAxLTA5IDEw
 OjI1OjEyLjAwMDAwMDAwMCArMDAwMApAQCAtMTE2LDcgKzExNiw3IEBACiAu
 SXQgRmwgUyBBciBzZWN0b3Itc2l6ZQogTnVtYmVyIG9mIGJ5dGVzIHBlciBz
 ZWN0b3IuCiBBY2NlcHRhYmxlIHZhbHVlcyBhcmUgcG93ZXJzIG9mIDIKLWlu
 IHRoZSByYW5nZSAxMjggdGhyb3VnaCAzMjc2OC4KK2luIHRoZSByYW5nZSA1
 MTIgdGhyb3VnaCA0MDk2LgogLkl0IEZsIGEgQXIgRkFULXNpemUKIE51bWJl
 ciBvZiBzZWN0b3JzIHBlciBGQVQuCiAuSXQgRmwgYiBBciBibG9jay1zaXpl
 CmRpZmYgLXJ1IG5ld2ZzX21zZG9zLm9yaWcvbmV3ZnNfbXNkb3MuYyBuZXdm
 c19tc2Rvcy9uZXdmc19tc2Rvcy5jCi0tLSBuZXdmc19tc2Rvcy5vcmlnL25l
 d2ZzX21zZG9zLmMJMjAxMC0wMS0wNiAxMTowNjowMi4wMDAwMDAwMDAgKzAw
 MDAKKysrIG5ld2ZzX21zZG9zL25ld2ZzX21zZG9zLmMJMjAxMC0wMS0xMCAw
 ODo1NDoxNS4wMDAwMDAwMDAgKzAwMDAKQEAgLTU1LDYgKzU1LDcgQEAKICNk
 ZWZpbmUgTlBCCSAgMgkJLyogbmliYmxlcyBwZXIgYnl0ZSAqLwogCiAjZGVm
 aW5lIERPU01BR0lDICAweGFhNTUJLyogRE9TIG1hZ2ljIG51bWJlciAqLwor
 I2RlZmluZSBNQVhCUFMJICA0MDk2CQkvKiBtYXhpbXVtIGJ5dGVzIHBlciBz
 ZWN0b3IgKi8KICNkZWZpbmUgTUlOQlBTCSAgNTEyCQkvKiBtaW5pbXVtIGJ5
 dGVzIHBlciBzZWN0b3IgKi8KICNkZWZpbmUgTUFYU1BDCSAgMTI4CQkvKiBt
 YXhpbXVtIHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8KICNkZWZpbmUgTUFYTkZU
 CSAgMTYJCS8qIG1heGltdW0gbnVtYmVyIG9mIEZBVHMgKi8KQEAgLTE2NSwy
 MCArMTY2LDIzIEBACiAKICNkZWZpbmUgQlBCR0FQIDAsIDAsIDAsIDAsIDAs
 IDAKIAorI2RlZmluZSBJTklUKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGks
 IGopIFwKKyAgICB7IC5icHMgPSBhLCAuc3BjID0gYiwgLnJlcyA9IGMsIC5u
 ZnQgPSBkLCAucmRlID0gZSwgXAorICAgICAgLnNlYyA9IGYsIC5taWQgPSBn
 LCAuc3BmID0gaCwgLnNwdCA9IGksIC5oZHMgPSBqLCB9CiBzdGF0aWMgc3Ry
 dWN0IHsKICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBicGIg
 YnBiOwogfSBjb25zdCBzdGRmbXRbXSA9IHsKLSAgICB7IjE2MCIsICB7NTEy
 LCAxLCAxLCAyLCAgNjQsICAzMjAsIDB4ZmUsIDEsICA4LCAxLCBCUEJHQVB9
 fSwKLSAgICB7IjE4MCIsICB7NTEyLCAxLCAxLCAyLCAgNjQsICAzNjAsIDB4
 ZmMsIDIsICA5LCAxLCBCUEJHQVB9fSwKLSAgICB7IjMyMCIsICB7NTEyLCAy
 LCAxLCAyLCAxMTIsICA2NDAsIDB4ZmYsIDEsICA4LCAyLCBCUEJHQVB9fSwK
 LSAgICB7IjM2MCIsICB7NTEyLCAyLCAxLCAyLCAxMTIsICA3MjAsIDB4ZmQs
 IDIsICA5LCAyLCBCUEJHQVB9fSwKLSAgICB7IjY0MCIsICB7NTEyLCAyLCAx
 LCAyLCAxMTIsIDEyODAsIDB4ZmIsIDIsICA4LCAyLCBCUEJHQVB9fSwgICAg
 Ci0gICAgeyI3MjAiLCAgezUxMiwgMiwgMSwgMiwgMTEyLCAxNDQwLCAweGY5
 LCAzLCAgOSwgMiwgQlBCR0FQfX0sCi0gICAgeyIxMjAwIiwgezUxMiwgMSwg
 MSwgMiwgMjI0LCAyNDAwLCAweGY5LCA3LCAxNSwgMiwgQlBCR0FQfX0sCi0g
 ICAgeyIxMjMyIiwgezEwMjQsMSwgMSwgMiwgMTkyLCAxMjMyLCAweGZlLCAy
 LCAgOCwgMiwgQlBCR0FQfX0sICAgIAotICAgIHsiMTQ0MCIsIHs1MTIsIDEs
 IDEsIDIsIDIyNCwgMjg4MCwgMHhmMCwgOSwgMTgsIDIsIEJQQkdBUH19LAot
 ICAgIHsiMjg4MCIsIHs1MTIsIDIsIDEsIDIsIDI0MCwgNTc2MCwgMHhmMCwg
 OSwgMzYsIDIsIEJQQkdBUH19CisgICAgeyIxNjAiLCAgSU5JVCg1MTIsIDEs
 IDEsIDIsICA2NCwgIDMyMCwgMHhmZSwgMSwgIDgsIDEpfSwKKyAgICB7IjE4
 MCIsICBJTklUKDUxMiwgMSwgMSwgMiwgIDY0LCAgMzYwLCAweGZjLCAyLCAg
 OSwgMSl9LAorICAgIHsiMzIwIiwgIElOSVQoNTEyLCAyLCAxLCAyLCAxMTIs
 ICA2NDAsIDB4ZmYsIDEsICA4LCAyKX0sCisgICAgeyIzNjAiLCAgSU5JVCg1
 MTIsIDIsIDEsIDIsIDExMiwgIDcyMCwgMHhmZCwgMiwgIDksIDIpfSwKKyAg
 ICB7IjY0MCIsICBJTklUKDUxMiwgMiwgMSwgMiwgMTEyLCAxMjgwLCAweGZi
 LCAyLCAgOCwgMil9LCAgICAKKyAgICB7IjcyMCIsICBJTklUKDUxMiwgMiwg
 MSwgMiwgMTEyLCAxNDQwLCAweGY5LCAzLCAgOSwgMil9LAorICAgIHsiMTIw
 MCIsIElOSVQoNTEyLCAxLCAxLCAyLCAyMjQsIDI0MDAsIDB4ZjksIDcsIDE1
 LCAyKX0sCisgICAgeyIxMjMyIiwgSU5JVCgxMDI0LDEsIDEsIDIsIDE5Miwg
 MTIzMiwgMHhmZSwgMiwgIDgsIDIpfSwgICAgCisgICAgeyIxNDQwIiwgSU5J
 VCg1MTIsIDEsIDEsIDIsIDIyNCwgMjg4MCwgMHhmMCwgOSwgMTgsIDIpfSwK
 KyAgICB7IjI4ODAiLCBJTklUKDUxMiwgMiwgMSwgMiwgMjQwLCA1NzYwLCAw
 eGYwLCA5LCAzNiwgMil9CiB9OwogCiBzdGF0aWMgY29uc3QgdV9pbnQ4X3Qg
 Ym9vdGNvZGVbXSA9IHsKQEAgLTQyMSw3ICs0MjUsOSBAQAogICAgIH0KICAg
 ICBpZiAoIXBvd2Vyb2YyKGJwYi5icHMpKQogCWVycngoMSwgImJ5dGVzL3Nl
 Y3RvciAoJXUpIGlzIG5vdCBhIHBvd2VyIG9mIDIiLCBicGIuYnBzKTsKLSAg
 ICBpZiAoYnBiLmJwcyA8IE1JTkJQUykKKyAgICBpZiAoYnBiLmJwcyA+IE1B
 WEJQUykKKyAgICAJcHJpbnRmKCAiV0FSTklORzogYnl0ZXMvc2VjdG9yICgl
 dSkgaXMgdG9vIGJpZyIsIGJwYi5icHMpOworICAgIGVsc2UgaWYgKGJwYi5i
 cHMgPCBNSU5CUFMpCiAJZXJyeCgxLCAiYnl0ZXMvc2VjdG9yICgldSkgaXMg
 dG9vIHNtYWxsOyBtaW5pbXVtIGlzICV1IiwKIAkgICAgIGJwYi5icHMsIE1J
 TkJQUyk7CiAgICAgaWYgKCEoZmF0ID0gb3B0X0YpKSB7CkBAIC01MzMsNyAr
 NTM5LDcgQEAKICAgICBpZiAoIWJwYi5yZXMpCiAJYnBiLnJlcyA9IGZhdCA9
 PSAzMiA/IE1BWCh4LCBNQVgoMTYzODQgLyBicGIuYnBzLCA0KSkgOiB4Owog
 ICAgIGVsc2UgaWYgKGJwYi5yZXMgPCB4KQotCWVycngoMSwgInRvbyBmZXcg
 cmVzZXJ2ZWQgc2VjdG9ycyIpOworCWVycngoMSwgInRvbyBmZXcgcmVzZXJ2
 ZWQgc2VjdG9ycyAobmVlZCAlZCBoYXZlICVkKSIsIHgsIGJwYi5yZXMpOwog
 ICAgIGlmIChmYXQgIT0gMzIgJiYgIWJwYi5yZGUpCiAJYnBiLnJkZSA9IERF
 RlJERTsKICAgICByZHMgPSBob3dtYW55KGJwYi5yZGUsIGJwYi5icHMgLyBz
 aXplb2Yoc3RydWN0IGRlKSk7CkBAIC02NTcsOCArNjYzLDggQEAKIAkJCSAo
 KHVfaW50KXRtLT50bV9ob3VyIDw8IDggfAogCQkJICAodV9pbnQpdG0tPnRt
 X21pbikpOwogCQltazQoYnN4LT52b2xpZCwgeCk7Ci0JCW1rbGFiZWwoYnN4
 LT5sYWJlbCwgb3B0X0wgPyBvcHRfTCA6ICJOTyBOQU1FIik7Ci0JCXNwcmlu
 dGYoYnVmLCAiRkFUJXUiLCBmYXQpOworCQlta2xhYmVsKGJzeC0+bGFiZWws
 IG9wdF9MID8gb3B0X0wgOiAiTk9fTkFNRSIpOworCQlzbnByaW50ZihidWYs
 IHNpemVvZihidWYpLCAiRkFUJXUiLCBmYXQpOwogCQlzZXRzdHIoYnN4LT50
 eXBlLCBidWYsIHNpemVvZihic3gtPnR5cGUpKTsKIAkJaWYgKCFvcHRfQikg
 ewogCQkgICAgeDEgKz0gc2l6ZW9mKHN0cnVjdCBic3gpOwpAQCAtNjY2LDcg
 KzY3Miw3IEBACiAJCSAgICBtazEoYnMtPmptcFswXSwgMHhlYik7CiAJCSAg
 ICBtazEoYnMtPmptcFsxXSwgeDEgLSAyKTsKIAkJICAgIG1rMShicy0+am1w
 WzJdLCAweDkwKTsKLQkJICAgIHNldHN0cihicy0+b2VtLCBvcHRfTyA/IG9w
 dF9PIDogIkJTRCAgNC40IiwKKwkJICAgIHNldHN0cihicy0+b2VtLCBvcHRf
 TyA/IG9wdF9PIDogIkJTRDQuNCAgIiwKIAkJCSAgIHNpemVvZihicy0+b2Vt
 KSk7CiAJCSAgICBtZW1jcHkoaW1nICsgeDEsIGJvb3Rjb2RlLCBzaXplb2Yo
 Ym9vdGNvZGUpKTsKIAkJICAgIG1rMihpbWcgKyBNSU5CUFMgLSAyLCBET1NN
 QUdJQyk7Cg==
 
 --0-1529515083-1263132417=:73967--

From: David Naylor <naylor.b.david@gmail.com>
To: bug-followup@freebsd.org,
 giffunip@tutopia.com
Cc:  
Subject: Re: bin/142526: [patch] Cleanups and updates to newfs_msdos(8)
Date: Thu, 14 Jan 2010 18:13:04 +0200

 --nextPart14527654.YHE7cjX8oQ
 Content-Type: multipart/mixed;
   boundary="Boundary-01=_RK0TLGZ7UiF974l"
 Content-Transfer-Encoding: 7bit
 
 
 --Boundary-01=_RK0TLGZ7UiF974l
 Content-Type: Text/Plain;
   charset="us-ascii"
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: inline
 
 Hi,
 
 There is an error in handling of sector size (-S):
 
 # newfs_msdos -S 512 /dev/`mdconfig -a -t swap -s 10m`
 =46loating exception (core dumped)
 
 The attached patch (should) fix this problem. =20
 
 Also clang doesn't like some of the comparisons (u_int vs int).  I've chang=
 ed=20
 some of the #define to fix that. =20
 
 Regards
 
 --Boundary-01=_RK0TLGZ7UiF974l
 Content-Type: text/x-patch;
   charset="ISO-8859-1";
   name="newfs_msdos.diff"
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: attachment;
 	filename="newfs_msdos.diff"
 
 diff -ur /usr/src/sbin/newfs_msdos/newfs_msdos.8 newfs_msdos/newfs_msdos.8
 =2D-- /usr/src/sbin/newfs_msdos/newfs_msdos.8	2009-09-03 08:43:57.000000000=
  +0200
 +++ newfs_msdos/newfs_msdos.8	2010-01-14 16:41:05.000000000 +0200
 @@ -116,7 +116,7 @@
  .It Fl S Ar sector-size
  Number of bytes per sector.
  Acceptable values are powers of 2
 =2Din the range 128 through 32768.
 +in the range 512 through 32768.
  .It Fl a Ar FAT-size
  Number of sectors per FAT.
  .It Fl b Ar block-size
 diff -ur /usr/src/sbin/newfs_msdos/newfs_msdos.c newfs_msdos/newfs_msdos.c
 =2D-- /usr/src/sbin/newfs_msdos/newfs_msdos.c	2009-09-03 08:43:57.000000000=
  +0200
 +++ newfs_msdos/newfs_msdos.c	2010-01-14 18:10:46.000000000 +0200
 @@ -55,6 +55,7 @@
  #define NPB	  2		/* nibbles per byte */
 =20
  #define DOSMAGIC  0xaa55	/* DOS magic number */
 +#define MAXBPS	  4096		/* maximum bytes per sector */
  #define MINBPS	  512		/* minimum bytes per sector */
  #define MAXSPC	  128		/* maximum sectors per cluster */
  #define MAXNFT	  16		/* maximum number of FATs */
 @@ -62,12 +63,12 @@
  #define DEFBLK16  2048		/* default block size FAT16 */
  #define DEFRDE	  512		/* default root directory entries */
  #define RESFTE	  2		/* reserved FAT entries */
 =2D#define MINCLS12  1		/* minimum FAT12 clusters */
 =2D#define MINCLS16  0x1000	/* minimum FAT16 clusters */
 =2D#define MINCLS32  2		/* minimum FAT32 clusters */
 =2D#define MAXCLS12  0xfed 	/* maximum FAT12 clusters */
 =2D#define MAXCLS16  0xfff5	/* maximum FAT16 clusters */
 =2D#define MAXCLS32  0xffffff5	/* maximum FAT32 clusters */
 +#define MINCLS12  1u		/* minimum FAT12 clusters */
 +#define MINCLS16  0x1000u	/* minimum FAT16 clusters */
 +#define MINCLS32  2u		/* minimum FAT32 clusters */
 +#define MAXCLS12  0xfedu 	/* maximum FAT12 clusters */
 +#define MAXCLS16  0xfff5u	/* maximum FAT16 clusters */
 +#define MAXCLS32  0xffffff5u	/* maximum FAT32 clusters */
 =20
  #define mincls(fat)  ((fat) =3D=3D 12 ? MINCLS12 :	\
  		      (fat) =3D=3D 16 ? MINCLS16 :	\
 @@ -165,20 +166,23 @@
 =20
  #define BPBGAP 0, 0, 0, 0, 0, 0
 =20
 +#define INIT(a, b, c, d, e, f, g, h, i, j) \
 +    { .bps =3D a, .spc =3D b, .res =3D c, .nft =3D d, .rde =3D e, \
 +      .sec =3D f, .mid =3D g, .spf =3D h, .spt =3D i, .hds =3D j, }
  static struct {
      const char *name;
      struct bpb bpb;
  } const stdfmt[] =3D {
 =2D    {"160",  {512, 1, 1, 2,  64,  320, 0xfe, 1,  8, 1, BPBGAP}},
 =2D    {"180",  {512, 1, 1, 2,  64,  360, 0xfc, 2,  9, 1, BPBGAP}},
 =2D    {"320",  {512, 2, 1, 2, 112,  640, 0xff, 1,  8, 2, BPBGAP}},
 =2D    {"360",  {512, 2, 1, 2, 112,  720, 0xfd, 2,  9, 2, BPBGAP}},
 =2D    {"640",  {512, 2, 1, 2, 112, 1280, 0xfb, 2,  8, 2, BPBGAP}},   =20
 =2D    {"720",  {512, 2, 1, 2, 112, 1440, 0xf9, 3,  9, 2, BPBGAP}},
 =2D    {"1200", {512, 1, 1, 2, 224, 2400, 0xf9, 7, 15, 2, BPBGAP}},
 =2D    {"1232", {1024,1, 1, 2, 192, 1232, 0xfe, 2,  8, 2, BPBGAP}},   =20
 =2D    {"1440", {512, 1, 1, 2, 224, 2880, 0xf0, 9, 18, 2, BPBGAP}},
 =2D    {"2880", {512, 2, 1, 2, 240, 5760, 0xf0, 9, 36, 2, BPBGAP}}
 +    {"160",  INIT(512, 1, 1, 2,  64,  320, 0xfe, 1,  8, 1)},
 +    {"180",  INIT(512, 1, 1, 2,  64,  360, 0xfc, 2,  9, 1)},
 +    {"320",  INIT(512, 2, 1, 2, 112,  640, 0xff, 1,  8, 2)},
 +    {"360",  INIT(512, 2, 1, 2, 112,  720, 0xfd, 2,  9, 2)},
 +    {"640",  INIT(512, 2, 1, 2, 112, 1280, 0xfb, 2,  8, 2)},   =20
 +    {"720",  INIT(512, 2, 1, 2, 112, 1440, 0xf9, 3,  9, 2)},
 +    {"1200", INIT(512, 1, 1, 2, 224, 2400, 0xf9, 7, 15, 2)},
 +    {"1232", INIT(1024,1, 1, 2, 192, 1232, 0xfe, 2,  8, 2)},   =20
 +    {"1440", INIT(512, 1, 1, 2, 224, 2880, 0xf0, 9, 18, 2)},
 +    {"2880", INIT(512, 2, 1, 2, 240, 5760, 0xf0, 9, 36, 2)}
  };
 =20
  static const u_int8_t bootcode[] =3D {
 @@ -421,7 +425,9 @@
      }
      if (!powerof2(bpb.bps))
  	errx(1, "bytes/sector (%u) is not a power of 2", bpb.bps);
 =2D    if (bpb.bps < MINBPS)
 +    if (bpb.bps > MAXBPS)
 +    	printf( "WARNING: bytes/sector (%u) is too big", bpb.bps);
 +    else if (bpb.bps < MINBPS)
  	errx(1, "bytes/sector (%u) is too small; minimum is %u",
  	     bpb.bps, MINBPS);
      if (!(fat =3D opt_F)) {
 @@ -533,7 +539,7 @@
      if (!bpb.res)
  	bpb.res =3D fat =3D=3D 32 ? MAX(x, MAX(16384 / bpb.bps, 4)) : x;
      else if (bpb.res < x)
 =2D	errx(1, "too few reserved sectors");
 +	errx(1, "too few reserved sectors (need %d have %d)", x, bpb.res);
      if (fat !=3D 32 && !bpb.rde)
  	bpb.rde =3D DEFRDE;
      rds =3D howmany(bpb.rde, bpb.bps / sizeof(struct de));
 @@ -657,8 +663,8 @@
  			 ((u_int)tm->tm_hour << 8 |
  			  (u_int)tm->tm_min));
  		mk4(bsx->volid, x);
 =2D		mklabel(bsx->label, opt_L ? opt_L : "NO NAME");
 =2D		sprintf(buf, "FAT%u", fat);
 +		mklabel(bsx->label, opt_L ? opt_L : "NO_NAME");
 +		snprintf(buf, sizeof(buf), "FAT%u", fat);
  		setstr(bsx->type, buf, sizeof(bsx->type));
  		if (!opt_B) {
  		    x1 +=3D sizeof(struct bsx);
 @@ -666,7 +672,7 @@
  		    mk1(bs->jmp[0], 0xeb);
  		    mk1(bs->jmp[1], x1 - 2);
  		    mk1(bs->jmp[2], 0x90);
 =2D		    setstr(bs->oem, opt_O ? opt_O : "BSD  4.4",
 +		    setstr(bs->oem, opt_O ? opt_O : "BSD4.4  ",
  			   sizeof(bs->oem));
  		    memcpy(img + x1, bootcode, sizeof(bootcode));
  		    mk2(img + MINBPS - 2, DOSMAGIC);
 @@ -794,11 +800,12 @@
 =20
      /* Maybe it's a fixed drive */
      if (lp =3D=3D NULL) {
 +	if (bpb->bps)
 +	    dlp.d_secsize =3D bpb->bps;
  	if (ioctl(fd, DIOCGDINFO, &dlp) =3D=3D -1) {
  	    if (bpb->bps =3D=3D 0 && ioctl(fd, DIOCGSECTORSIZE, &dlp.d_secsize) =
 =3D=3D -1)
  		errx(1, "Cannot get sector size, %s", strerror(errno));
 =20
 =2D	    /* XXX Should we use bpb->bps if it's set? */
  	    dlp.d_secperunit =3D ms / dlp.d_secsize;
 =20
  	    if (bpb->spt =3D=3D 0 && ioctl(fd, DIOCGFWSECTORS, &dlp.d_nsectors) =
 =3D=3D -1) {
 
 --Boundary-01=_RK0TLGZ7UiF974l--
 
 --nextPart14527654.YHE7cjX8oQ
 Content-Type: application/pgp-signature; name=signature.asc 
 Content-Description: This is a digitally signed message part.
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.13 (FreeBSD)
 
 iEYEABECAAYFAktPQpcACgkQUaaFgP9pFrJNXwCgi6v2hLTRMsysqcZZNbgX7XKP
 mdkAni7gdnLgqwXByisCda1Ib7Tf8Av+
 =wsF8
 -----END PGP SIGNATURE-----
 
 --nextPart14527654.YHE7cjX8oQ--

From: "Pedro F. Giffuni" <giffunip@tutopia.com>
To: bug-followup@freebsd.org, David Naylor <naylor.b.david@gmail.com>
Cc:  
Subject: Re: bin/142526: [patch] Cleanups and updates to newfs_msdos(8)
Date: Thu, 14 Jan 2010 13:52:34 -0800 (PST)

 --0-550664387-1263505954=:34069
 Content-Type: text/plain; charset=us-ascii
 
 I integrated the changes into my WIP, thanks!
 
 I now renamed the struct fields to match what is found in the
 msdosfs headers. We could replace a couple of those fields with
 bpb.h and bootsect.h but there are missing fields in newfs so I
 will defer that for later.
 
 
 
 
       
 --0-550664387-1263505954=:34069
 Content-Type: application/octet-stream; name=patch-newfs_msdos
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename=patch-newfs_msdos
 
 ZGlmZiAtcnUgbmV3ZnNfbXNkb3Mub3JpZy9uZXdmc19tc2Rvcy44IG5ld2Zz
 X21zZG9zL25ld2ZzX21zZG9zLjgKLS0tIG5ld2ZzX21zZG9zLm9yaWcvbmV3
 ZnNfbXNkb3MuOAkyMDEwLTAxLTA2IDExOjA2OjAyLjAwMDAwMDAwMCArMDAw
 MAorKysgbmV3ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuOAkyMDEwLTAxLTE0IDEz
 OjMyOjI1LjAwMDAwMDAwMCArMDAwMApAQCAtMTE2LDcgKzExNiw3IEBACiAu
 SXQgRmwgUyBBciBzZWN0b3Itc2l6ZQogTnVtYmVyIG9mIGJ5dGVzIHBlciBz
 ZWN0b3IuCiBBY2NlcHRhYmxlIHZhbHVlcyBhcmUgcG93ZXJzIG9mIDIKLWlu
 IHRoZSByYW5nZSAxMjggdGhyb3VnaCAzMjc2OC4KK2luIHRoZSByYW5nZSA1
 MTIgdGhyb3VnaCAzMjc2OC4KIC5JdCBGbCBhIEFyIEZBVC1zaXplCiBOdW1i
 ZXIgb2Ygc2VjdG9ycyBwZXIgRkFULgogLkl0IEZsIGIgQXIgYmxvY2stc2l6
 ZQpkaWZmIC1ydSBuZXdmc19tc2Rvcy5vcmlnL25ld2ZzX21zZG9zLmMgbmV3
 ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuYwotLS0gbmV3ZnNfbXNkb3Mub3JpZy9u
 ZXdmc19tc2Rvcy5jCTIwMTAtMDEtMDYgMTE6MDY6MDIuMDAwMDAwMDAwICsw
 MDAwCisrKyBuZXdmc19tc2Rvcy9uZXdmc19tc2Rvcy5jCTIwMTAtMDEtMTQg
 MTY6NDI6MzEuMDAwMDAwMDAwICswMDAwCkBAIC01NSw2ICs1NSw3IEBACiAj
 ZGVmaW5lIE5QQgkgIDIJCS8qIG5pYmJsZXMgcGVyIGJ5dGUgKi8KIAogI2Rl
 ZmluZSBET1NNQUdJQyAgMHhhYTU1CS8qIERPUyBtYWdpYyBudW1iZXIgKi8K
 KyNkZWZpbmUgTUFYQlBTCSAgNDA5NgkJLyogbWF4aW11bSBieXRlcyBwZXIg
 c2VjdG9yICovCiAjZGVmaW5lIE1JTkJQUwkgIDUxMgkJLyogbWluaW11bSBi
 eXRlcyBwZXIgc2VjdG9yICovCiAjZGVmaW5lIE1BWFNQQwkgIDEyOAkJLyog
 bWF4aW11bSBzZWN0b3JzIHBlciBjbHVzdGVyICovCiAjZGVmaW5lIE1BWE5G
 VAkgIDE2CQkvKiBtYXhpbXVtIG51bWJlciBvZiBGQVRzICovCkBAIC02Miwx
 MiArNjMsMTIgQEAKICNkZWZpbmUgREVGQkxLMTYgIDIwNDgJCS8qIGRlZmF1
 bHQgYmxvY2sgc2l6ZSBGQVQxNiAqLwogI2RlZmluZSBERUZSREUJICA1MTIJ
 CS8qIGRlZmF1bHQgcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLwogI2RlZmlu
 ZSBSRVNGVEUJICAyCQkvKiByZXNlcnZlZCBGQVQgZW50cmllcyAqLwotI2Rl
 ZmluZSBNSU5DTFMxMiAgMQkJLyogbWluaW11bSBGQVQxMiBjbHVzdGVycyAq
 LwotI2RlZmluZSBNSU5DTFMxNiAgMHgxMDAwCS8qIG1pbmltdW0gRkFUMTYg
 Y2x1c3RlcnMgKi8KLSNkZWZpbmUgTUlOQ0xTMzIgIDIJCS8qIG1pbmltdW0g
 RkFUMzIgY2x1c3RlcnMgKi8KLSNkZWZpbmUgTUFYQ0xTMTIgIDB4ZmVkIAkv
 KiBtYXhpbXVtIEZBVDEyIGNsdXN0ZXJzICovCi0jZGVmaW5lIE1BWENMUzE2
 ICAweGZmZjUJLyogbWF4aW11bSBGQVQxNiBjbHVzdGVycyAqLwotI2RlZmlu
 ZSBNQVhDTFMzMiAgMHhmZmZmZmY1CS8qIG1heGltdW0gRkFUMzIgY2x1c3Rl
 cnMgKi8KKyNkZWZpbmUgTUlOQ0xTMTIgIDF1CQkvKiBtaW5pbXVtIEZBVDEy
 IGNsdXN0ZXJzICovCisjZGVmaW5lIE1JTkNMUzE2ICAweDEwMDB1CS8qIG1p
 bmltdW0gRkFUMTYgY2x1c3RlcnMgKi8KKyNkZWZpbmUgTUlOQ0xTMzIgIDJ1
 CQkvKiBtaW5pbXVtIEZBVDMyIGNsdXN0ZXJzICovCisjZGVmaW5lIE1BWENM
 UzEyICAweGZlZHUgCS8qIG1heGltdW0gRkFUMTIgY2x1c3RlcnMgKi8KKyNk
 ZWZpbmUgTUFYQ0xTMTYgIDB4ZmZmNXUJLyogbWF4aW11bSBGQVQxNiBjbHVz
 dGVycyAqLworI2RlZmluZSBNQVhDTFMzMiAgMHhmZmZmZmY1dQkvKiBtYXhp
 bXVtIEZBVDMyIGNsdXN0ZXJzICovCiAKICNkZWZpbmUgbWluY2xzKGZhdCkg
 ICgoZmF0KSA9PSAxMiA/IE1JTkNMUzEyIDoJXAogCQkgICAgICAoZmF0KSA9
 PSAxNiA/IE1JTkNMUzE2IDoJXApAQCAtOTYsMjMgKzk3LDIzIEBACiAjZGVm
 aW5lIGFyZ3RveChhcmcsIGxvLCBtc2cpICBhcmd0b3UoYXJnLCBsbywgVUlO
 VF9NQVgsIG1zZykKIAogc3RydWN0IGJzIHsKLSAgICB1X2ludDhfdCBqbXBb
 M107CQkvKiBib290c3RyYXAgZW50cnkgcG9pbnQgKi8KLSAgICB1X2ludDhf
 dCBvZW1bOF07CQkvKiBPRU0gbmFtZSBhbmQgdmVyc2lvbiAqLworICAgIHVf
 aW50OF90IGJzSnVtcFszXTsJCS8qIGJvb3RzdHJhcCBlbnRyeSBwb2ludCAq
 LworICAgIHVfaW50OF90IGJzT2VtTmFtZVs4XTsJCS8qIE9FTSBuYW1lIGFu
 ZCB2ZXJzaW9uICovCiB9OwogCiBzdHJ1Y3QgYnNicGIgewotICAgIHVfaW50
 OF90IGJwc1syXTsJCS8qIGJ5dGVzIHBlciBzZWN0b3IgKi8KLSAgICB1X2lu
 dDhfdCBzcGM7CQkvKiBzZWN0b3JzIHBlciBjbHVzdGVyICovCi0gICAgdV9p
 bnQ4X3QgcmVzWzJdOwkJLyogcmVzZXJ2ZWQgc2VjdG9ycyAqLwotICAgIHVf
 aW50OF90IG5mdDsJCS8qIG51bWJlciBvZiBGQVRzICovCi0gICAgdV9pbnQ4
 X3QgcmRlWzJdOwkJLyogcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLwotICAg
 IHVfaW50OF90IHNlY1syXTsJCS8qIHRvdGFsIHNlY3RvcnMgKi8KLSAgICB1
 X2ludDhfdCBtaWQ7CQkvKiBtZWRpYSBkZXNjcmlwdG9yICovCi0gICAgdV9p
 bnQ4X3Qgc3BmWzJdOwkJLyogc2VjdG9ycyBwZXIgRkFUICovCi0gICAgdV9p
 bnQ4X3Qgc3B0WzJdOwkJLyogc2VjdG9ycyBwZXIgdHJhY2sgKi8KLSAgICB1
 X2ludDhfdCBoZHNbMl07CQkvKiBkcml2ZSBoZWFkcyAqLwotICAgIHVfaW50
 OF90IGhpZFs0XTsJCS8qIGhpZGRlbiBzZWN0b3JzICovCi0gICAgdV9pbnQ4
 X3QgYnNlY1s0XTsJCS8qIGJpZyB0b3RhbCBzZWN0b3JzICovCisgICAgdV9p
 bnQ4X3QgYnBiQnl0ZXNQZXJTZWNbMl07CQkvKiBieXRlcyBwZXIgc2VjdG9y
 ICovCisgICAgdV9pbnQ4X3QgYnBiU2VjUGVyQ2x1c3Q7CQkvKiBzZWN0b3Jz
 IHBlciBjbHVzdGVyICovCisgICAgdV9pbnQ4X3QgYnBiUmVzU2VjdG9yc1sy
 XTsJCS8qIHJlc2VydmVkIHNlY3RvcnMgKi8KKyAgICB1X2ludDhfdCBicGJG
 QVRzOwkJCS8qIG51bWJlciBvZiBGQVRzICovCisgICAgdV9pbnQ4X3QgYnBi
 Um9vdERpckVudHNbMl07CQkvKiByb290IGRpcmVjdG9yeSBlbnRyaWVzICov
 CisgICAgdV9pbnQ4X3QgYnBiU2VjdG9yc1syXTsJCS8qIHRvdGFsIHNlY3Rv
 cnMgKi8KKyAgICB1X2ludDhfdCBicGJNZWRpYTsJCQkvKiBtZWRpYSBkZXNj
 cmlwdG9yICovCisgICAgdV9pbnQ4X3QgYnBiRkFUc2Vjc1syXTsJCS8qIHNl
 Y3RvcnMgcGVyIEZBVCAqLworICAgIHVfaW50OF90IGJwYlNlY1BlclRyYWNr
 WzJdOwkJLyogc2VjdG9ycyBwZXIgdHJhY2sgKi8KKyAgICB1X2ludDhfdCBi
 cGJIZWFkc1syXTsJCS8qIGRyaXZlIGhlYWRzICovCisgICAgdV9pbnQ4X3Qg
 YnBiSGlkZGVuU2Vjc1s0XTsJCS8qIGhpZGRlbiBzZWN0b3JzICovCisgICAg
 dV9pbnQ4X3QgYnBiSHVnZVNlY3RvcnNbNF07CQkvKiBiaWcgdG90YWwgc2Vj
 dG9ycyAqLwogfTsKIAogc3RydWN0IGJzeGJwYiB7CkBAIC0xMjIsMTYgKzEy
 MywxNiBAQAogICAgIHVfaW50OF90IHJkY2xbNF07CQkvKiByb290IGRpcmVj
 dG9yeSBzdGFydCBjbHVzdGVyICovCiAgICAgdV9pbnQ4X3QgaW5mc1syXTsJ
 CS8qIGZpbGUgc3lzdGVtIGluZm8gc2VjdG9yICovCiAgICAgdV9pbnQ4X3Qg
 Ymtic1syXTsJCS8qIGJhY2t1cCBib290IHNlY3RvciAqLwotICAgIHVfaW50
 OF90IHJzdmRbMTJdOwkJLyogcmVzZXJ2ZWQgKi8KKyAgICB1X2ludDhfdCBy
 c3ZkWzEyXTsJCQkvKiByZXNlcnZlZCAqLwogfTsKIAogc3RydWN0IGJzeCB7
 Ci0gICAgdV9pbnQ4X3QgZHJ2OwkJLyogZHJpdmUgbnVtYmVyICovCi0gICAg
 dV9pbnQ4X3QgcnN2ZDsJCS8qIHJlc2VydmVkICovCi0gICAgdV9pbnQ4X3Qg
 c2lnOwkJLyogZXh0ZW5kZWQgYm9vdCBzaWduYXR1cmUgKi8KLSAgICB1X2lu
 dDhfdCB2b2xpZFs0XTsJCS8qIHZvbHVtZSBJRCBudW1iZXIgKi8KLSAgICB1
 X2ludDhfdCBsYWJlbFsxMV07IAkvKiB2b2x1bWUgbGFiZWwgKi8KLSAgICB1
 X2ludDhfdCB0eXBlWzhdOwkJLyogZmlsZSBzeXN0ZW0gdHlwZSAqLworICAg
 IHVfaW50OF90IGV4RHJpdmVOdW1iZXI7CQkvKiBkcml2ZSBudW1iZXIgKi8K
 KyAgICB1X2ludDhfdCBleFJlc2VydmVkMTsJCS8qIHJlc2VydmVkICovCisg
 ICAgdV9pbnQ4X3QgZXhCb290U2lnbmF0dXJlOwkJLyogZXh0ZW5kZWQgYm9v
 dCBzaWduYXR1cmUgKi8KKyAgICB1X2ludDhfdCBleFZvbHVtZUlEWzRdOwkJ
 Lyogdm9sdW1lIElEIG51bWJlciAqLworICAgIHVfaW50OF90IGV4Vm9sdW1l
 TGFiZWxbMTFdOyAJLyogdm9sdW1lIGxhYmVsICovCisgICAgdV9pbnQ4X3Qg
 ZXhGaWxlU3lzVHlwZVs4XTsJCS8qIGZpbGUgc3lzdGVtIHR5cGUgKi8KIH07
 CiAKIHN0cnVjdCBkZSB7CkBAIC0xNDUsNDAgKzE0Niw0NCBAQAogfTsKIAog
 c3RydWN0IGJwYiB7Ci0gICAgdV9pbnQgYnBzOwkJCS8qIGJ5dGVzIHBlciBz
 ZWN0b3IgKi8KLSAgICB1X2ludCBzcGM7CQkJLyogc2VjdG9ycyBwZXIgY2x1
 c3RlciAqLwotICAgIHVfaW50IHJlczsJCQkvKiByZXNlcnZlZCBzZWN0b3Jz
 ICovCi0gICAgdV9pbnQgbmZ0OwkJCS8qIG51bWJlciBvZiBGQVRzICovCi0g
 ICAgdV9pbnQgcmRlOwkJCS8qIHJvb3QgZGlyZWN0b3J5IGVudHJpZXMgKi8K
 LSAgICB1X2ludCBzZWM7CQkJLyogdG90YWwgc2VjdG9ycyAqLwotICAgIHVf
 aW50IG1pZDsJCQkvKiBtZWRpYSBkZXNjcmlwdG9yICovCi0gICAgdV9pbnQg
 c3BmOwkJCS8qIHNlY3RvcnMgcGVyIEZBVCAqLwotICAgIHVfaW50IHNwdDsJ
 CQkvKiBzZWN0b3JzIHBlciB0cmFjayAqLwotICAgIHVfaW50IGhkczsJCQkv
 KiBkcml2ZSBoZWFkcyAqLwotICAgIHVfaW50IGhpZDsJCQkvKiBoaWRkZW4g
 c2VjdG9ycyAqLwotICAgIHVfaW50IGJzZWM7IAkJLyogYmlnIHRvdGFsIHNl
 Y3RvcnMgKi8KLSAgICB1X2ludCBic3BmOyAJCS8qIGJpZyBzZWN0b3JzIHBl
 ciBGQVQgKi8KLSAgICB1X2ludCByZGNsOyAJCS8qIHJvb3QgZGlyZWN0b3J5
 IHN0YXJ0IGNsdXN0ZXIgKi8KLSAgICB1X2ludCBpbmZzOyAJCS8qIGZpbGUg
 c3lzdGVtIGluZm8gc2VjdG9yICovCi0gICAgdV9pbnQgYmticzsgCQkvKiBi
 YWNrdXAgYm9vdCBzZWN0b3IgKi8KKyAgICB1X2ludCBicGJCeXRlc1BlclNl
 YzsJCS8qIGJ5dGVzIHBlciBzZWN0b3IgKi8KKyAgICB1X2ludCBicGJTZWNQ
 ZXJDbHVzdDsJCS8qIHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8KKyAgICB1X2lu
 dCBicGJSZXNTZWN0b3JzOwkJLyogcmVzZXJ2ZWQgc2VjdG9ycyAqLworICAg
 IHVfaW50IGJwYkZBVHM7CQkJLyogbnVtYmVyIG9mIEZBVHMgKi8KKyAgICB1
 X2ludCBicGJSb290RGlyRW50czsJCS8qIHJvb3QgZGlyZWN0b3J5IGVudHJp
 ZXMgKi8KKyAgICB1X2ludCBicGJTZWN0b3JzOwkJCS8qIHRvdGFsIHNlY3Rv
 cnMgKi8KKyAgICB1X2ludCBicGJNZWRpYTsJCQkvKiBtZWRpYSBkZXNjcmlw
 dG9yICovCisgICAgdV9pbnQgYnBiRkFUc2VjczsJCQkvKiBzZWN0b3JzIHBl
 ciBGQVQgKi8KKyAgICB1X2ludCBicGJTZWNQZXJUcmFjazsJCS8qIHNlY3Rv
 cnMgcGVyIHRyYWNrICovCisgICAgdV9pbnQgYnBiSGVhZHM7CQkJLyogZHJp
 dmUgaGVhZHMgKi8KKyAgICB1X2ludCBicGJIaWRkZW5TZWNzOwkJLyogaGlk
 ZGVuIHNlY3RvcnMgKi8KKyAgICB1X2ludCBicGJIdWdlU2VjdG9yczsgCQkv
 KiBiaWcgdG90YWwgc2VjdG9ycyAqLworICAgIHVfaW50IGJwYkJpZ0ZBVHNl
 Y3M7IAkJLyogYmlnIHNlY3RvcnMgcGVyIEZBVCAqLworLyogWFhYOiBNaXNz
 aW5nIEVYVEZsYWdzIEZTVmVycyAqLworICAgIHVfaW50IGJwYlJvb3RDbHVz
 dDsgCQkvKiByb290IGRpcmVjdG9yeSBzdGFydCBjbHVzdGVyICovCisgICAg
 dV9pbnQgYnBiRlNJbmZvOyAJCS8qIGZpbGUgc3lzdGVtIGluZm8gc2VjdG9y
 ICovCisgICAgdV9pbnQgYnBiQmFja3VwOyAJCS8qIGJhY2t1cCBib290IHNl
 Y3RvciAqLwogfTsKIAogI2RlZmluZSBCUEJHQVAgMCwgMCwgMCwgMCwgMCwg
 MAogCisjZGVmaW5lIElOSVQoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwg
 aikgXAorICAgIHsgLmJwYkJ5dGVzUGVyU2VjID0gYSwgLmJwYlNlY1BlckNs
 dXN0ID0gYiwgLmJwYlJlc1NlY3RvcnMgPSBjLCAuYnBiRkFUcyA9IGQsIC5i
 cGJSb290RGlyRW50cyA9IGUsIFwKKyAgICAgIC5icGJTZWN0b3JzID0gZiwg
 LmJwYk1lZGlhID0gZywgLmJwYkZBVHNlY3MgPSBoLCAuYnBiU2VjUGVyVHJh
 Y2sgPSBpLCAuYnBiSGVhZHMgPSBqLCB9CiBzdGF0aWMgc3RydWN0IHsKICAg
 ICBjb25zdCBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBicGIgYnBiOwogfSBj
 b25zdCBzdGRmbXRbXSA9IHsKLSAgICB7IjE2MCIsICB7NTEyLCAxLCAxLCAy
 LCAgNjQsICAzMjAsIDB4ZmUsIDEsICA4LCAxLCBCUEJHQVB9fSwKLSAgICB7
 IjE4MCIsICB7NTEyLCAxLCAxLCAyLCAgNjQsICAzNjAsIDB4ZmMsIDIsICA5
 LCAxLCBCUEJHQVB9fSwKLSAgICB7IjMyMCIsICB7NTEyLCAyLCAxLCAyLCAx
 MTIsICA2NDAsIDB4ZmYsIDEsICA4LCAyLCBCUEJHQVB9fSwKLSAgICB7IjM2
 MCIsICB7NTEyLCAyLCAxLCAyLCAxMTIsICA3MjAsIDB4ZmQsIDIsICA5LCAy
 LCBCUEJHQVB9fSwKLSAgICB7IjY0MCIsICB7NTEyLCAyLCAxLCAyLCAxMTIs
 IDEyODAsIDB4ZmIsIDIsICA4LCAyLCBCUEJHQVB9fSwgICAgCi0gICAgeyI3
 MjAiLCAgezUxMiwgMiwgMSwgMiwgMTEyLCAxNDQwLCAweGY5LCAzLCAgOSwg
 MiwgQlBCR0FQfX0sCi0gICAgeyIxMjAwIiwgezUxMiwgMSwgMSwgMiwgMjI0
 LCAyNDAwLCAweGY5LCA3LCAxNSwgMiwgQlBCR0FQfX0sCi0gICAgeyIxMjMy
 IiwgezEwMjQsMSwgMSwgMiwgMTkyLCAxMjMyLCAweGZlLCAyLCAgOCwgMiwg
 QlBCR0FQfX0sICAgIAotICAgIHsiMTQ0MCIsIHs1MTIsIDEsIDEsIDIsIDIy
 NCwgMjg4MCwgMHhmMCwgOSwgMTgsIDIsIEJQQkdBUH19LAotICAgIHsiMjg4
 MCIsIHs1MTIsIDIsIDEsIDIsIDI0MCwgNTc2MCwgMHhmMCwgOSwgMzYsIDIs
 IEJQQkdBUH19CisgICAgeyIxNjAiLCAgSU5JVCg1MTIsIDEsIDEsIDIsICA2
 NCwgIDMyMCwgMHhmZSwgMSwgIDgsIDEpfSwKKyAgICB7IjE4MCIsICBJTklU
 KDUxMiwgMSwgMSwgMiwgIDY0LCAgMzYwLCAweGZjLCAyLCAgOSwgMSl9LAor
 ICAgIHsiMzIwIiwgIElOSVQoNTEyLCAyLCAxLCAyLCAxMTIsICA2NDAsIDB4
 ZmYsIDEsICA4LCAyKX0sCisgICAgeyIzNjAiLCAgSU5JVCg1MTIsIDIsIDEs
 IDIsIDExMiwgIDcyMCwgMHhmZCwgMiwgIDksIDIpfSwKKyAgICB7IjY0MCIs
 ICBJTklUKDUxMiwgMiwgMSwgMiwgMTEyLCAxMjgwLCAweGZiLCAyLCAgOCwg
 Mil9LCAgICAKKyAgICB7IjcyMCIsICBJTklUKDUxMiwgMiwgMSwgMiwgMTEy
 LCAxNDQwLCAweGY5LCAzLCAgOSwgMil9LAorICAgIHsiMTIwMCIsIElOSVQo
 NTEyLCAxLCAxLCAyLCAyMjQsIDI0MDAsIDB4ZjksIDcsIDE1LCAyKX0sCisg
 ICAgeyIxMjMyIiwgSU5JVCgxMDI0LDEsIDEsIDIsIDE5MiwgMTIzMiwgMHhm
 ZSwgMiwgIDgsIDIpfSwgICAgCisgICAgeyIxNDQwIiwgSU5JVCg1MTIsIDEs
 IDEsIDIsIDIyNCwgMjg4MCwgMHhmMCwgOSwgMTgsIDIpfSwKKyAgICB7IjI4
 ODAiLCBJTklUKDUxMiwgMiwgMSwgMiwgMjQwLCA1NzYwLCAweGYwLCA5LCAz
 NiwgMil9CiB9OwogCiBzdGF0aWMgY29uc3QgdV9pbnQ4X3QgYm9vdGNvZGVb
 XSA9IHsKQEAgLTM4MSw0OSArMzg2LDUxIEBACiAgICAgbWVtc2V0KCZicGIs
 IDAsIHNpemVvZihicGIpKTsKICAgICBpZiAob3B0X2YpIHsKIAlnZXRzdGRm
 bXQob3B0X2YsICZicGIpOwotCWJwYi5ic2VjID0gYnBiLnNlYzsKLQlicGIu
 c2VjID0gMDsKLQlicGIuYnNwZiA9IGJwYi5zcGY7Ci0JYnBiLnNwZiA9IDA7
 CisJYnBiLmJwYkh1Z2VTZWN0b3JzID0gYnBiLmJwYlNlY3RvcnM7CisJYnBi
 LmJwYlNlY3RvcnMgPSAwOworCWJwYi5icGJCaWdGQVRzZWNzID0gYnBiLmJw
 YkZBVHNlY3M7CisJYnBiLmJwYkZBVHNlY3MgPSAwOwogICAgIH0KICAgICBp
 ZiAob3B0X2gpCi0JYnBiLmhkcyA9IG9wdF9oOworCWJwYi5icGJIZWFkcyA9
 IG9wdF9oOwogICAgIGlmIChvcHRfdSkKLQlicGIuc3B0ID0gb3B0X3U7CisJ
 YnBiLmJwYlNlY1BlclRyYWNrID0gb3B0X3U7CiAgICAgaWYgKG9wdF9TKQot
 CWJwYi5icHMgPSBvcHRfUzsKKwlicGIuYnBiQnl0ZXNQZXJTZWMgPSBvcHRf
 UzsKICAgICBpZiAob3B0X3MpCi0JYnBiLmJzZWMgPSBvcHRfczsKKwlicGIu
 YnBiSHVnZVNlY3RvcnMgPSBvcHRfczsKICAgICBpZiAob2ZsYWcpCi0JYnBi
 LmhpZCA9IG9wdF9vOworCWJwYi5icGJIaWRkZW5TZWNzID0gb3B0X287CiAg
 ICAgaWYgKCEob3B0X2YgfHwgKG9wdF9oICYmIG9wdF91ICYmIG9wdF9TICYm
 IG9wdF9zICYmIG9mbGFnKSkpIHsKIAlvZmZfdCBkZWx0YTsKIAlnZXRkaXNr
 aW5mbyhmZCwgZm5hbWUsIGR0eXBlLCBvZmxhZywgJmJwYik7Ci0JYnBiLmJz
 ZWMgLT0gKG9wdF9vZnMgLyBicGIuYnBzKTsKLQlkZWx0YSA9IGJwYi5ic2Vj
 ICUgYnBiLnNwdDsKKwlicGIuYnBiSHVnZVNlY3RvcnMgLT0gKG9wdF9vZnMg
 LyBicGIuYnBiQnl0ZXNQZXJTZWMpOworCWRlbHRhID0gYnBiLmJwYkh1Z2VT
 ZWN0b3JzICUgYnBiLmJwYlNlY1BlclRyYWNrOwogCWlmIChkZWx0YSAhPSAw
 KSB7CiAJICAgIHdhcm54KCJ0cmltICVkIHNlY3RvcnMgdG8gYWRqdXN0IHRv
 IGEgbXVsdGlwbGUgb2YgJWQiLAotCQkoaW50KWRlbHRhLCBicGIuc3B0KTsK
 LQkgICAgYnBiLmJzZWMgLT0gZGVsdGE7CisJCShpbnQpZGVsdGEsIGJwYi5i
 cGJTZWNQZXJUcmFjayk7CisJICAgIGJwYi5icGJIdWdlU2VjdG9ycyAtPSBk
 ZWx0YTsKIAl9Ci0JaWYgKGJwYi5zcGMgPT0gMCkgewkvKiBzZXQgZGVmYXVs
 dHMgKi8KLQkgICAgaWYgKGJwYi5ic2VjIDw9IDYwMDApCS8qIGFib3V0IDNN
 QiAtPiA1MTIgYnl0ZXMgKi8KLQkJYnBiLnNwYyA9IDE7Ci0JICAgIGVsc2Ug
 aWYgKGJwYi5ic2VjIDw9ICgxPDwxNykpIC8qIDY0TSAtPiA0ayAqLwotCQli
 cGIuc3BjID0gODsKLQkgICAgZWxzZSBpZiAoYnBiLmJzZWMgPD0gKDE8PDE5
 KSkgLyogMjU2TSAtPiA4ayAqLwotCQlicGIuc3BjID0gMTY7Ci0JICAgIGVs
 c2UgaWYgKGJwYi5ic2VjIDw9ICgxPDwyMSkpIC8qIDFHIC0+IDE2ayAqLwot
 CQlicGIuc3BjID0gMzI7CisJaWYgKGJwYi5icGJTZWNQZXJDbHVzdCA9PSAw
 KSB7CS8qIHNldCBkZWZhdWx0cyAqLworCSAgICBpZiAoYnBiLmJwYkh1Z2VT
 ZWN0b3JzIDw9IDYwMDApCS8qIGFib3V0IDNNQiAtPiA1MTIgYnl0ZXMgKi8K
 KwkJYnBiLmJwYlNlY1BlckNsdXN0ID0gMTsKKwkgICAgZWxzZSBpZiAoYnBi
 LmJwYkh1Z2VTZWN0b3JzIDw9ICgxPDwxNykpIC8qIDY0TSAtPiA0ayAqLwor
 CQlicGIuYnBiU2VjUGVyQ2x1c3QgPSA4OworCSAgICBlbHNlIGlmIChicGIu
 YnBiSHVnZVNlY3RvcnMgPD0gKDE8PDE5KSkgLyogMjU2TSAtPiA4ayAqLwor
 CQlicGIuYnBiU2VjUGVyQ2x1c3QgPSAxNjsKKwkgICAgZWxzZSBpZiAoYnBi
 LmJwYkh1Z2VTZWN0b3JzIDw9ICgxPDwyMSkpIC8qIDFHIC0+IDE2ayAqLwor
 CQlicGIuYnBiU2VjUGVyQ2x1c3QgPSAzMjsKIAkgICAgZWxzZQotCQlicGIu
 c3BjID0gNjQ7CQkvKiBvdGhlcndpc2UgMzJrICovCisJCWJwYi5icGJTZWNQ
 ZXJDbHVzdCA9IDY0OwkJLyogb3RoZXJ3aXNlIDMyayAqLwogCX0KICAgICB9
 Ci0gICAgaWYgKCFwb3dlcm9mMihicGIuYnBzKSkKLQllcnJ4KDEsICJieXRl
 cy9zZWN0b3IgKCV1KSBpcyBub3QgYSBwb3dlciBvZiAyIiwgYnBiLmJwcyk7
 Ci0gICAgaWYgKGJwYi5icHMgPCBNSU5CUFMpCisgICAgaWYgKGJwYi5icGJC
 eXRlc1BlclNlYyA+IE1BWEJQUykKKyAgICAJcHJpbnRmKCIgV0FSTklORzog
 Ynl0ZXMvc2VjdG9yICgldSkgaXMgdG9vIGJpZyIsIGJwYi5icGJCeXRlc1Bl
 clNlYyk7CisgICAgZWxzZSBpZiAoYnBiLmJwYkJ5dGVzUGVyU2VjIDwgTUlO
 QlBTKQogCWVycngoMSwgImJ5dGVzL3NlY3RvciAoJXUpIGlzIHRvbyBzbWFs
 bDsgbWluaW11bSBpcyAldSIsCi0JICAgICBicGIuYnBzLCBNSU5CUFMpOwor
 CSAgICAgYnBiLmJwYkJ5dGVzUGVyU2VjLCBNSU5CUFMpOworICAgIGlmICgh
 cG93ZXJvZjIoYnBiLmJwYkJ5dGVzUGVyU2VjKSkKKwllcnJ4KDEsICJieXRl
 cy9zZWN0b3IgKCV1KSBpcyBub3QgYSBwb3dlciBvZiAyIiwgYnBiLmJwYkJ5
 dGVzUGVyU2VjKTsKICAgICBpZiAoIShmYXQgPSBvcHRfRikpIHsKIAlpZiAo
 b3B0X2YpCiAJICAgIGZhdCA9IDEyOwpAQCAtNDM1LDQ0ICs0NDIsNDQgQEAK
 IAkgICAgIGZhdCA9PSAzMiA/ICdlJyA6IG9wdF9pID8gJ2knIDogJ2snLAog
 CSAgICAgZmF0ID09IDMyID8gIjMyIiA6ICIxMi8xNiIpOwogICAgIGlmIChv
 cHRfZiAmJiBmYXQgPT0gMzIpCi0JYnBiLnJkZSA9IDA7CisJYnBiLmJwYlJv
 b3REaXJFbnRzID0gMDsKICAgICBpZiAob3B0X2IpIHsKIAlpZiAoIXBvd2Vy
 b2YyKG9wdF9iKSkKIAkgICAgZXJyeCgxLCAiYmxvY2sgc2l6ZSAoJXUpIGlz
 IG5vdCBhIHBvd2VyIG9mIDIiLCBvcHRfYik7Ci0JaWYgKG9wdF9iIDwgYnBi
 LmJwcykKKwlpZiAob3B0X2IgPCBicGIuYnBiQnl0ZXNQZXJTZWMpCiAJICAg
 IGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gc21hbGw7IG1pbmlt
 dW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMpOwotCWlmIChvcHRfYiA+
 IGJwYi5icHMgKiBNQVhTUEMpCisJCSBvcHRfYiwgYnBiLmJwYkJ5dGVzUGVy
 U2VjKTsKKwlpZiAob3B0X2IgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBNQVhT
 UEMpCiAJICAgIGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gbGFy
 Z2U7IG1heGltdW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMgKiBNQVhT
 UEMpOwotCWJwYi5zcGMgPSBvcHRfYiAvIGJwYi5icHM7CisJCSBvcHRfYiwg
 YnBiLmJwYkJ5dGVzUGVyU2VjICogTUFYU1BDKTsKKwlicGIuYnBiU2VjUGVy
 Q2x1c3QgPSBvcHRfYiAvIGJwYi5icGJCeXRlc1BlclNlYzsKICAgICB9CiAg
 ICAgaWYgKG9wdF9jKSB7CiAJaWYgKCFwb3dlcm9mMihvcHRfYykpCiAJICAg
 IGVycngoMSwgInNlY3RvcnMvY2x1c3RlciAoJXUpIGlzIG5vdCBhIHBvd2Vy
 IG9mIDIiLCBvcHRfYyk7Ci0JYnBiLnNwYyA9IG9wdF9jOworCWJwYi5icGJT
 ZWNQZXJDbHVzdCA9IG9wdF9jOwogICAgIH0KICAgICBpZiAob3B0X3IpCi0J
 YnBiLnJlcyA9IG9wdF9yOworCWJwYi5icGJSZXNTZWN0b3JzID0gb3B0X3I7
 CiAgICAgaWYgKG9wdF9uKSB7CiAJaWYgKG9wdF9uID4gTUFYTkZUKQogCSAg
 ICBlcnJ4KDEsICJudW1iZXIgb2YgRkFUcyAoJXUpIGlzIHRvbyBsYXJnZTsg
 bWF4aW11bSBpcyAldSIsCiAJCSBvcHRfbiwgTUFYTkZUKTsKLQlicGIubmZ0
 ID0gb3B0X247CisJYnBiLmJwYkZBVHMgPSBvcHRfbjsKICAgICB9CiAgICAg
 aWYgKG9wdF9lKQotCWJwYi5yZGUgPSBvcHRfZTsKKwlicGIuYnBiUm9vdERp
 ckVudHMgPSBvcHRfZTsKICAgICBpZiAobWZsYWcpIHsKIAlpZiAob3B0X20g
 PCAweGYwKQogCSAgICBlcnJ4KDEsICJpbGxlZ2FsIG1lZGlhIGRlc2NyaXB0
 b3IgKCUjeCkiLCBvcHRfbSk7Ci0JYnBiLm1pZCA9IG9wdF9tOworCWJwYi5i
 cGJNZWRpYSA9IG9wdF9tOwogICAgIH0KICAgICBpZiAob3B0X2EpCi0JYnBi
 LmJzcGYgPSBvcHRfYTsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IG9wdF9hOwog
 ICAgIGlmIChvcHRfaSkKLQlicGIuaW5mcyA9IG9wdF9pOworCWJwYi5icGJG
 U0luZm8gPSBvcHRfaTsKICAgICBpZiAob3B0X2spCi0JYnBiLmJrYnMgPSBv
 cHRfazsKKwlicGIuYnBiQmFja3VwID0gb3B0X2s7CiAgICAgYnNzID0gMTsK
 ICAgICBibmFtZSA9IE5VTEw7CiAgICAgZmQxID0gLTE7CkBAIC00ODUsODcg
 KzQ5Miw4NyBAQAogCX0KIAlpZiAoKGZkMSA9IG9wZW4oYm5hbWUsIE9fUkRP
 TkxZKSkgPT0gLTEgfHwgZnN0YXQoZmQxLCAmc2IpKQogCSAgICBlcnIoMSwg
 IiVzIiwgYm5hbWUpOwotCWlmICghU19JU1JFRyhzYi5zdF9tb2RlKSB8fCBz
 Yi5zdF9zaXplICUgYnBiLmJwcyB8fAotCSAgICBzYi5zdF9zaXplIDwgYnBi
 LmJwcyB8fCBzYi5zdF9zaXplID4gYnBiLmJwcyAqIE1BWFUxNikKKwlpZiAo
 IVNfSVNSRUcoc2Iuc3RfbW9kZSkgfHwgc2Iuc3Rfc2l6ZSAlIGJwYi5icGJC
 eXRlc1BlclNlYyB8fAorCSAgICBzYi5zdF9zaXplIDwgYnBiLmJwYkJ5dGVz
 UGVyU2VjIHx8IHNiLnN0X3NpemUgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBN
 QVhVMTYpCiAJICAgIGVycngoMSwgIiVzOiBpbmFwcHJvcHJpYXRlIGZpbGUg
 dHlwZSBvciBmb3JtYXQiLCBibmFtZSk7Ci0JYnNzID0gc2Iuc3Rfc2l6ZSAv
 IGJwYi5icHM7CisJYnNzID0gc2Iuc3Rfc2l6ZSAvIGJwYi5icGJCeXRlc1Bl
 clNlYzsKICAgICB9Ci0gICAgaWYgKCFicGIubmZ0KQotCWJwYi5uZnQgPSAy
 OworICAgIGlmICghYnBiLmJwYkZBVHMpCisJYnBiLmJwYkZBVHMgPSAyOwog
 ICAgIGlmICghZmF0KSB7Ci0JaWYgKGJwYi5ic2VjIDwgKGJwYi5yZXMgPyBi
 cGIucmVzIDogYnNzKSArCi0JICAgIGhvd21hbnkoKFJFU0ZURSArIChicGIu
 c3BjID8gTUlOQ0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCi0JCSAgICAoKGJw
 Yi5zcGMgPyAxNiA6IDEyKSAvIEJQTiksIGJwYi5icHMgKiBOUEIpICoKLQkg
 ICAgYnBiLm5mdCArCi0JICAgIGhvd21hbnkoYnBiLnJkZSA/IGJwYi5yZGUg
 OiBERUZSREUsCi0JCSAgICBicGIuYnBzIC8gc2l6ZW9mKHN0cnVjdCBkZSkp
 ICsKLQkgICAgKGJwYi5zcGMgPyBNSU5DTFMxNiA6IE1BWENMUzEyICsgMSkg
 KgotCSAgICAoYnBiLnNwYyA/IGJwYi5zcGMgOiBob3dtYW55KERFRkJMSywg
 YnBiLmJwcykpKQorCWlmIChicGIuYnBiSHVnZVNlY3RvcnMgPCAoYnBiLmJw
 YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCSAg
 ICBob3dtYW55KChSRVNGVEUgKyAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlO
 Q0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCisJCSAgICAoKGJwYi5icGJTZWNQ
 ZXJDbHVzdCA/IDE2IDogMTIpIC8gQlBOKSwgYnBiLmJwYkJ5dGVzUGVyU2Vj
 ICogTlBCKSAqCisJICAgIGJwYi5icGJGQVRzICsKKwkgICAgaG93bWFueShi
 cGIuYnBiUm9vdERpckVudHMgPyBicGIuYnBiUm9vdERpckVudHMgOiBERUZS
 REUsCisJCSAgICBicGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0
 IGRlKSkgKworCSAgICAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlOQ0xTMTYg
 OiBNQVhDTFMxMiArIDEpICoKKwkgICAgKGJwYi5icGJTZWNQZXJDbHVzdCA/
 IGJwYi5icGJTZWNQZXJDbHVzdCA6IGhvd21hbnkoREVGQkxLLCBicGIuYnBi
 Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTI7Ci0JZWxzZSBpZiAoYnBi
 LnJkZSB8fCBicGIuYnNlYyA8Ci0JCSAoYnBiLnJlcyA/IGJwYi5yZXMgOiBi
 c3MpICsKLQkJIGhvd21hbnkoKFJFU0ZURSArIE1BWENMUzE2KSAqIDIsIGJw
 Yi5icHMpICogYnBiLm5mdCArCi0JCSBob3dtYW55KERFRlJERSwgYnBiLmJw
 cyAvIHNpemVvZihzdHJ1Y3QgZGUpKSArCisJZWxzZSBpZiAoYnBiLmJwYlJv
 b3REaXJFbnRzIHx8IGJwYi5icGJIdWdlU2VjdG9ycyA8CisJCSAoYnBiLmJw
 YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCQkg
 aG93bWFueSgoUkVTRlRFICsgTUFYQ0xTMTYpICogMiwgYnBiLmJwYkJ5dGVz
 UGVyU2VjKSAqIGJwYi5icGJGQVRzICsKKwkJIGhvd21hbnkoREVGUkRFLCBi
 cGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0IGRlKSkgKwogCQkg
 KE1BWENMUzE2ICsgMSkgKgotCQkgKGJwYi5zcGMgPyBicGIuc3BjIDogaG93
 bWFueSg4MTkyLCBicGIuYnBzKSkpCisJCSAoYnBiLmJwYlNlY1BlckNsdXN0
 ID8gYnBiLmJwYlNlY1BlckNsdXN0IDogaG93bWFueSg4MTkyLCBicGIuYnBi
 Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTY7CiAJZWxzZQogCSAgICBm
 YXQgPSAzMjsKICAgICB9CiAgICAgeCA9IGJzczsKICAgICBpZiAoZmF0ID09
 IDMyKSB7Ci0JaWYgKCFicGIuaW5mcykgewotCSAgICBpZiAoeCA9PSBNQVhV
 MTYgfHwgeCA9PSBicGIuYmticykKKwlpZiAoIWJwYi5icGJGU0luZm8pIHsK
 KwkgICAgaWYgKHggPT0gTUFYVTE2IHx8IHggPT0gYnBiLmJwYkJhY2t1cCkK
 IAkJZXJyeCgxLCAibm8gcm9vbSBmb3IgaW5mbyBzZWN0b3IiKTsKLQkgICAg
 YnBiLmluZnMgPSB4OworCSAgICBicGIuYnBiRlNJbmZvID0geDsKIAl9Ci0J
 aWYgKGJwYi5pbmZzICE9IE1BWFUxNiAmJiB4IDw9IGJwYi5pbmZzKQotCSAg
 ICB4ID0gYnBiLmluZnMgKyAxOwotCWlmICghYnBiLmJrYnMpIHsKKwlpZiAo
 YnBiLmJwYkZTSW5mbyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYnBiRlNJbmZv
 KQorCSAgICB4ID0gYnBiLmJwYkZTSW5mbyArIDE7CisJaWYgKCFicGIuYnBi
 QmFja3VwKSB7CiAJICAgIGlmICh4ID09IE1BWFUxNikKIAkJZXJyeCgxLCAi
 bm8gcm9vbSBmb3IgYmFja3VwIHNlY3RvciIpOwotCSAgICBicGIuYmticyA9
 IHg7Ci0JfSBlbHNlIGlmIChicGIuYmticyAhPSBNQVhVMTYgJiYgYnBiLmJr
 YnMgPT0gYnBiLmluZnMpCisJICAgIGJwYi5icGJCYWNrdXAgPSB4OworCX0g
 ZWxzZSBpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYgJiYgYnBiLmJwYkJh
 Y2t1cCA9PSBicGIuYnBiRlNJbmZvKQogCSAgICBlcnJ4KDEsICJiYWNrdXAg
 c2VjdG9yIHdvdWxkIG92ZXJ3cml0ZSBpbmZvIHNlY3RvciIpOwotCWlmIChi
 cGIuYmticyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYmticykKLQkgICAgeCA9
 IGJwYi5ia2JzICsgMTsKKwlpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYg
 JiYgeCA8PSBicGIuYnBiQmFja3VwKQorCSAgICB4ID0gYnBiLmJwYkJhY2t1
 cCArIDE7CiAgICAgfQotICAgIGlmICghYnBiLnJlcykKLQlicGIucmVzID0g
 ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icHMsIDQpKSA6
 IHg7Ci0gICAgZWxzZSBpZiAoYnBiLnJlcyA8IHgpCi0JZXJyeCgxLCAidG9v
 IGZldyByZXNlcnZlZCBzZWN0b3JzIik7Ci0gICAgaWYgKGZhdCAhPSAzMiAm
 JiAhYnBiLnJkZSkKLQlicGIucmRlID0gREVGUkRFOwotICAgIHJkcyA9IGhv
 d21hbnkoYnBiLnJkZSwgYnBiLmJwcyAvIHNpemVvZihzdHJ1Y3QgZGUpKTsK
 LSAgICBpZiAoIWJwYi5zcGMpCi0JZm9yIChicGIuc3BjID0gaG93bWFueShm
 YXQgPT0gMTYgPyBERUZCTEsxNiA6IERFRkJMSywgYnBiLmJwcyk7Ci0JICAg
 ICBicGIuc3BjIDwgTUFYU1BDICYmCi0JICAgICBicGIucmVzICsKKyAgICBp
 ZiAoIWJwYi5icGJSZXNTZWN0b3JzKQorCWJwYi5icGJSZXNTZWN0b3JzID0g
 ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icGJCeXRlc1Bl
 clNlYywgNCkpIDogeDsKKyAgICBlbHNlIGlmIChicGIuYnBiUmVzU2VjdG9y
 cyA8IHgpCisJZXJyeCgxLCAidG9vIGZldyByZXNlcnZlZCBzZWN0b3JzIChu
 ZWVkICVkIGhhdmUgJWQpIiwgeCwgYnBiLmJwYlJlc1NlY3RvcnMpOworICAg
 IGlmIChmYXQgIT0gMzIgJiYgIWJwYi5icGJSb290RGlyRW50cykKKwlicGIu
 YnBiUm9vdERpckVudHMgPSBERUZSREU7CisgICAgcmRzID0gaG93bWFueShi
 cGIuYnBiUm9vdERpckVudHMsIGJwYi5icGJCeXRlc1BlclNlYyAvIHNpemVv
 ZihzdHJ1Y3QgZGUpKTsKKyAgICBpZiAoIWJwYi5icGJTZWNQZXJDbHVzdCkK
 Kwlmb3IgKGJwYi5icGJTZWNQZXJDbHVzdCA9IGhvd21hbnkoZmF0ID09IDE2
 ID8gREVGQkxLMTYgOiBERUZCTEssIGJwYi5icGJCeXRlc1BlclNlYyk7CisJ
 ICAgICBicGIuYnBiU2VjUGVyQ2x1c3QgPCBNQVhTUEMgJiYKKwkgICAgIGJw
 Yi5icGJSZXNTZWN0b3JzICsKIAkgICAgIGhvd21hbnkoKFJFU0ZURSArIG1h
 eGNscyhmYXQpKSAqIChmYXQgLyBCUE4pLAotCQkgICAgIGJwYi5icHMgKiBO
 UEIpICogYnBiLm5mdCArCisJCSAgICAgYnBiLmJwYkJ5dGVzUGVyU2VjICog
 TlBCKSAqIGJwYi5icGJGQVRzICsKIAkgICAgIHJkcyArCi0JICAgICAodV9p
 bnQ2NF90KShtYXhjbHMoZmF0KSArIDEpICogYnBiLnNwYyA8PSBicGIuYnNl
 YzsKLQkgICAgIGJwYi5zcGMgPDw9IDEpOwotICAgIGlmIChmYXQgIT0gMzIg
 JiYgYnBiLmJzcGYgPiBNQVhVMTYpCisJICAgICAodV9pbnQ2NF90KShtYXhj
 bHMoZmF0KSArIDEpICogYnBiLmJwYlNlY1BlckNsdXN0IDw9IGJwYi5icGJI
 dWdlU2VjdG9yczsKKwkgICAgIGJwYi5icGJTZWNQZXJDbHVzdCA8PD0gMSk7
 CisgICAgaWYgKGZhdCAhPSAzMiAmJiBicGIuYnBiQmlnRkFUc2VjcyA+IE1B
 WFUxNikKIAllcnJ4KDEsICJ0b28gbWFueSBzZWN0b3JzL0ZBVCBmb3IgRkFU
 MTIvMTYiKTsKLSAgICB4MSA9IGJwYi5yZXMgKyByZHM7Ci0gICAgeCA9IGJw
 Yi5ic3BmID8gYnBiLmJzcGYgOiAxOwotICAgIGlmICh4MSArICh1X2ludDY0
 X3QpeCAqIGJwYi5uZnQgPiBicGIuYnNlYykKKyAgICB4MSA9IGJwYi5icGJS
 ZXNTZWN0b3JzICsgcmRzOworICAgIHggPSBicGIuYnBiQmlnRkFUc2VjcyA/
 IGJwYi5icGJCaWdGQVRzZWNzIDogMTsKKyAgICBpZiAoeDEgKyAodV9pbnQ2
 NF90KXggKiBicGIuYnBiRkFUcyA+IGJwYi5icGJIdWdlU2VjdG9ycykKIAll
 cnJ4KDEsICJtZXRhIGRhdGEgZXhjZWVkcyBmaWxlIHN5c3RlbSBzaXplIik7
 Ci0gICAgeDEgKz0geCAqIGJwYi5uZnQ7Ci0gICAgeCA9ICh1X2ludDY0X3Qp
 KGJwYi5ic2VjIC0geDEpICogYnBiLmJwcyAqIE5QQiAvCi0JKGJwYi5zcGMg
 KiBicGIuYnBzICogTlBCICsgZmF0IC8gQlBOICogYnBiLm5mdCk7CisgICAg
 eDEgKz0geCAqIGJwYi5icGJGQVRzOworICAgIHggPSAodV9pbnQ2NF90KShi
 cGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgKiBicGIuYnBiQnl0ZXNQZXJTZWMg
 KiBOUEIgLworCShicGIuYnBiU2VjUGVyQ2x1c3QgKiBicGIuYnBiQnl0ZXNQ
 ZXJTZWMgKiBOUEIgKyBmYXQgLyBCUE4gKiBicGIuYnBiRkFUcyk7CiAgICAg
 eDIgPSBob3dtYW55KChSRVNGVEUgKyBNSU4oeCwgbWF4Y2xzKGZhdCkpKSAq
 IChmYXQgLyBCUE4pLAotCQkgYnBiLmJwcyAqIE5QQik7Ci0gICAgaWYgKCFi
 cGIuYnNwZikgewotCWJwYi5ic3BmID0geDI7Ci0JeDEgKz0gKGJwYi5ic3Bm
 IC0gMSkgKiBicGIubmZ0OworCQkgYnBiLmJwYkJ5dGVzUGVyU2VjICogTlBC
 KTsKKyAgICBpZiAoIWJwYi5icGJCaWdGQVRzZWNzKSB7CisJYnBiLmJwYkJp
 Z0ZBVHNlY3MgPSB4MjsKKwl4MSArPSAoYnBiLmJwYkJpZ0ZBVHNlY3MgLSAx
 KSAqIGJwYi5icGJGQVRzOwogICAgIH0KLSAgICBjbHMgPSAoYnBiLmJzZWMg
 LSB4MSkgLyBicGIuc3BjOwotICAgIHggPSAodV9pbnQ2NF90KWJwYi5ic3Bm
 ICogYnBiLmJwcyAqIE5QQiAvIChmYXQgLyBCUE4pIC0gUkVTRlRFOworICAg
 IGNscyA9IChicGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgLyBicGIuYnBiU2Vj
 UGVyQ2x1c3Q7CisgICAgeCA9ICh1X2ludDY0X3QpYnBiLmJwYkJpZ0ZBVHNl
 Y3MgKiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBOUEIgLyAoZmF0IC8gQlBOKSAt
 IFJFU0ZURTsKICAgICBpZiAoY2xzID4geCkKIAljbHMgPSB4OwotICAgIGlm
 IChicGIuYnNwZiA8IHgyKQorICAgIGlmIChicGIuYnBiQmlnRkFUc2VjcyA8
 IHgyKQogCXdhcm54KCJ3YXJuaW5nOiBzZWN0b3JzL0ZBVCBsaW1pdHMgZmls
 ZSBzeXN0ZW0gdG8gJXUgY2x1c3RlcnMiLAogCSAgICAgIGNscyk7CiAgICAg
 aWYgKGNscyA8IG1pbmNscyhmYXQpKQpAQCAtNTczLDc5ICs1ODAsNzkgQEAK
 IAkgICAgbWluY2xzKGZhdCkpOwogICAgIGlmIChjbHMgPiBtYXhjbHMoZmF0
 KSkgewogCWNscyA9IG1heGNscyhmYXQpOwotCWJwYi5ic2VjID0geDEgKyAo
 Y2xzICsgMSkgKiBicGIuc3BjIC0gMTsKKwlicGIuYnBiSHVnZVNlY3RvcnMg
 PSB4MSArIChjbHMgKyAxKSAqIGJwYi5icGJTZWNQZXJDbHVzdCAtIDE7CiAJ
 d2FybngoIndhcm5pbmc6IEZBVCB0eXBlIGxpbWl0cyBmaWxlIHN5c3RlbSB0
 byAldSBzZWN0b3JzIiwKLQkgICAgICBicGIuYnNlYyk7CisJICAgICAgYnBi
 LmJwYkh1Z2VTZWN0b3JzKTsKICAgICB9CiAgICAgcHJpbnRmKCIlczogJXUg
 c2VjdG9yJXMgaW4gJXUgRkFUJXUgY2x1c3RlciVzICIKLQkgICAiKCV1IGJ5
 dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xzICogYnBiLnNwYywKLQkgICBj
 bHMgKiBicGIuc3BjID09IDEgPyAiIiA6ICJzIiwgY2xzLCBmYXQsCi0JICAg
 Y2xzID09IDEgPyAiIiA6ICJzIiwgYnBiLmJwcyAqIGJwYi5zcGMpOwotICAg
 IGlmICghYnBiLm1pZCkKLQlicGIubWlkID0gIWJwYi5oaWQgPyAweGYwIDog
 MHhmODsKKwkgICAiKCV1IGJ5dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xz
 ICogYnBiLmJwYlNlY1BlckNsdXN0LAorCSAgIGNscyAqIGJwYi5icGJTZWNQ
 ZXJDbHVzdCA9PSAxID8gIiIgOiAicyIsIGNscywgZmF0LAorCSAgIGNscyA9
 PSAxID8gIiIgOiAicyIsIGJwYi5icGJCeXRlc1BlclNlYyAqIGJwYi5icGJT
 ZWNQZXJDbHVzdCk7CisgICAgaWYgKCFicGIuYnBiTWVkaWEpCisJYnBiLmJw
 Yk1lZGlhID0gIWJwYi5icGJIaWRkZW5TZWNzID8gMHhmMCA6IDB4Zjg7CiAg
 ICAgaWYgKGZhdCA9PSAzMikKLQlicGIucmRjbCA9IFJFU0ZURTsKLSAgICBp
 ZiAoYnBiLmhpZCArIGJwYi5ic2VjIDw9IE1BWFUxNikgewotCWJwYi5zZWMg
 PSBicGIuYnNlYzsKLQlicGIuYnNlYyA9IDA7CisJYnBiLmJwYlJvb3RDbHVz
 dCA9IFJFU0ZURTsKKyAgICBpZiAoYnBiLmJwYkhpZGRlblNlY3MgKyBicGIu
 YnBiSHVnZVNlY3RvcnMgPD0gTUFYVTE2KSB7CisJYnBiLmJwYlNlY3RvcnMg
 PSBicGIuYnBiSHVnZVNlY3RvcnM7CisJYnBiLmJwYkh1Z2VTZWN0b3JzID0g
 MDsKICAgICB9CiAgICAgaWYgKGZhdCAhPSAzMikgewotCWJwYi5zcGYgPSBi
 cGIuYnNwZjsKLQlicGIuYnNwZiA9IDA7CisJYnBiLmJwYkZBVHNlY3MgPSBi
 cGIuYnBiQmlnRkFUc2VjczsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IDA7CiAg
 ICAgfQogICAgIHByaW50X2JwYigmYnBiKTsKICAgICBpZiAoIW9wdF9OKSB7
 CiAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CiAJbm93ID0gdHYudHZfc2Vj
 OwogCXRtID0gbG9jYWx0aW1lKCZub3cpOwotCWlmICghKGltZyA9IG1hbGxv
 YyhicGIuYnBzKSkpCisJaWYgKCEoaW1nID0gbWFsbG9jKGJwYi5icGJCeXRl
 c1BlclNlYykpKQogCSAgICBlcnIoMSwgTlVMTCk7Ci0JZGlyID0gYnBiLnJl
 cyArIChicGIuc3BmID8gYnBiLnNwZiA6IGJwYi5ic3BmKSAqIGJwYi5uZnQ7
 Ci0JZm9yIChsc24gPSAwOyBsc24gPCBkaXIgKyAoZmF0ID09IDMyID8gYnBi
 LnNwYyA6IHJkcyk7IGxzbisrKSB7CisJZGlyID0gYnBiLmJwYlJlc1NlY3Rv
 cnMgKyAoYnBiLmJwYkZBVHNlY3MgPyBicGIuYnBiRkFUc2VjcyA6IGJwYi5i
 cGJCaWdGQVRzZWNzKSAqIGJwYi5icGJGQVRzOworCWZvciAobHNuID0gMDsg
 bHNuIDwgZGlyICsgKGZhdCA9PSAzMiA/IGJwYi5icGJTZWNQZXJDbHVzdCA6
 IHJkcyk7IGxzbisrKSB7CiAJICAgIHggPSBsc247CiAJICAgIGlmIChvcHRf
 QiAmJgotCQlmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYmCi0J
 CWJzcyA8PSBicGIuYmticyAmJiB4ID49IGJwYi5ia2JzKSB7Ci0JCXggLT0g
 YnBiLmJrYnM7CisJCWZhdCA9PSAzMiAmJiBicGIuYnBiQmFja3VwICE9IE1B
 WFUxNiAmJgorCQlic3MgPD0gYnBiLmJwYkJhY2t1cCAmJiB4ID49IGJwYi5i
 cGJCYWNrdXApIHsKKwkJeCAtPSBicGIuYnBiQmFja3VwOwogCQlpZiAoIXgg
 JiYgbHNlZWsoZmQxLCBvcHRfb2ZzLCBTRUVLX1NFVCkpCiAJCSAgICBlcnIo
 MSwgIiVzIiwgYm5hbWUpOwogCSAgICB9CiAJICAgIGlmIChvcHRfQiAmJiB4
 IDwgYnNzKSB7Ci0JCWlmICgobiA9IHJlYWQoZmQxLCBpbWcsIGJwYi5icHMp
 KSA9PSAtMSkKKwkJaWYgKChuID0gcmVhZChmZDEsIGltZywgYnBiLmJwYkJ5
 dGVzUGVyU2VjKSkgPT0gLTEpCiAJCSAgICBlcnIoMSwgIiVzIiwgYm5hbWUp
 OwotCQlpZiAoKHVuc2lnbmVkKW4gIT0gYnBiLmJwcykKKwkJaWYgKCh1bnNp
 Z25lZCluICE9IGJwYi5icGJCeXRlc1BlclNlYykKIAkJICAgIGVycngoMSwg
 IiVzOiBjYW4ndCByZWFkIHNlY3RvciAldSIsIGJuYW1lLCB4KTsKIAkgICAg
 fSBlbHNlCi0JCW1lbXNldChpbWcsIDAsIGJwYi5icHMpOworCQltZW1zZXQo
 aW1nLCAwLCBicGIuYnBiQnl0ZXNQZXJTZWMpOwogCSAgICBpZiAoIWxzbiB8
 fAotCSAgICAgIChmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYm
 IGxzbiA9PSBicGIuYmticykpIHsKKwkgICAgICAoZmF0ID09IDMyICYmIGJw
 Yi5icGJCYWNrdXAgIT0gTUFYVTE2ICYmIGxzbiA9PSBicGIuYnBiQmFja3Vw
 KSkgewogCQl4MSA9IHNpemVvZihzdHJ1Y3QgYnMpOwogCQlic2JwYiA9IChz
 dHJ1Y3QgYnNicGIgKikoaW1nICsgeDEpOwotCQltazIoYnNicGItPmJwcywg
 YnBiLmJwcyk7Ci0JCW1rMShic2JwYi0+c3BjLCBicGIuc3BjKTsKLQkJbWsy
 KGJzYnBiLT5yZXMsIGJwYi5yZXMpOwotCQltazEoYnNicGItPm5mdCwgYnBi
 Lm5mdCk7Ci0JCW1rMihic2JwYi0+cmRlLCBicGIucmRlKTsKLQkJbWsyKGJz
 YnBiLT5zZWMsIGJwYi5zZWMpOwotCQltazEoYnNicGItPm1pZCwgYnBiLm1p
 ZCk7Ci0JCW1rMihic2JwYi0+c3BmLCBicGIuc3BmKTsKLQkJbWsyKGJzYnBi
 LT5zcHQsIGJwYi5zcHQpOwotCQltazIoYnNicGItPmhkcywgYnBiLmhkcyk7
 Ci0JCW1rNChic2JwYi0+aGlkLCBicGIuaGlkKTsKLQkJbWs0KGJzYnBiLT5i
 c2VjLCBicGIuYnNlYyk7CisJCW1rMihic2JwYi0+YnBiQnl0ZXNQZXJTZWMs
 IGJwYi5icGJCeXRlc1BlclNlYyk7CisJCW1rMShic2JwYi0+YnBiU2VjUGVy
 Q2x1c3QsIGJwYi5icGJTZWNQZXJDbHVzdCk7CisJCW1rMihic2JwYi0+YnBi
 UmVzU2VjdG9ycywgYnBiLmJwYlJlc1NlY3RvcnMpOworCQltazEoYnNicGIt
 PmJwYkZBVHMsIGJwYi5icGJGQVRzKTsKKwkJbWsyKGJzYnBiLT5icGJSb290
 RGlyRW50cywgYnBiLmJwYlJvb3REaXJFbnRzKTsKKwkJbWsyKGJzYnBiLT5i
 cGJTZWN0b3JzLCBicGIuYnBiU2VjdG9ycyk7CisJCW1rMShic2JwYi0+YnBi
 TWVkaWEsIGJwYi5icGJNZWRpYSk7CisJCW1rMihic2JwYi0+YnBiRkFUc2Vj
 cywgYnBiLmJwYkZBVHNlY3MpOworCQltazIoYnNicGItPmJwYlNlY1BlclRy
 YWNrLCBicGIuYnBiU2VjUGVyVHJhY2spOworCQltazIoYnNicGItPmJwYkhl
 YWRzLCBicGIuYnBiSGVhZHMpOworCQltazQoYnNicGItPmJwYkhpZGRlblNl
 Y3MsIGJwYi5icGJIaWRkZW5TZWNzKTsKKwkJbWs0KGJzYnBiLT5icGJIdWdl
 U2VjdG9ycywgYnBiLmJwYkh1Z2VTZWN0b3JzKTsKIAkJeDEgKz0gc2l6ZW9m
 KHN0cnVjdCBic2JwYik7CiAJCWlmIChmYXQgPT0gMzIpIHsKIAkJICAgIGJz
 eGJwYiA9IChzdHJ1Y3QgYnN4YnBiICopKGltZyArIHgxKTsKLQkJICAgIG1r
 NChic3hicGItPmJzcGYsIGJwYi5ic3BmKTsKKwkJICAgIG1rNChic3hicGIt
 PmJzcGYsIGJwYi5icGJCaWdGQVRzZWNzKTsKIAkJICAgIG1rMihic3hicGIt
 PnhmbGcsIDApOwogCQkgICAgbWsyKGJzeGJwYi0+dmVycywgMCk7Ci0JCSAg
 ICBtazQoYnN4YnBiLT5yZGNsLCBicGIucmRjbCk7Ci0JCSAgICBtazIoYnN4
 YnBiLT5pbmZzLCBicGIuaW5mcyk7Ci0JCSAgICBtazIoYnN4YnBiLT5ia2Jz
 LCBicGIuYmticyk7CisJCSAgICBtazQoYnN4YnBiLT5yZGNsLCBicGIuYnBi
 Um9vdENsdXN0KTsKKwkJICAgIG1rMihic3hicGItPmluZnMsIGJwYi5icGJG
 U0luZm8pOworCQkgICAgbWsyKGJzeGJwYi0+YmticywgYnBiLmJwYkJhY2t1
 cCk7CiAJCSAgICB4MSArPSBzaXplb2Yoc3RydWN0IGJzeGJwYik7CiAJCX0K
 IAkJYnN4ID0gKHN0cnVjdCBic3ggKikoaW1nICsgeDEpOwotCQltazEoYnN4
 LT5zaWcsIDB4MjkpOworCQltazEoYnN4LT5leEJvb3RTaWduYXR1cmUsIDB4
 MjkpOwogCQlpZiAoSWZsYWcpCiAJCSAgICB4ID0gb3B0X0k7CiAJCWVsc2UK
 QEAgLTY1NiwzNCArNjYzLDM0IEBACiAJCQkoKHVfaW50KSgxOTAwICsgdG0t
 PnRtX3llYXIpICsKIAkJCSAoKHVfaW50KXRtLT50bV9ob3VyIDw8IDggfAog
 CQkJICAodV9pbnQpdG0tPnRtX21pbikpOwotCQltazQoYnN4LT52b2xpZCwg
 eCk7Ci0JCW1rbGFiZWwoYnN4LT5sYWJlbCwgb3B0X0wgPyBvcHRfTCA6ICJO
 TyBOQU1FIik7Ci0JCXNwcmludGYoYnVmLCAiRkFUJXUiLCBmYXQpOwotCQlz
 ZXRzdHIoYnN4LT50eXBlLCBidWYsIHNpemVvZihic3gtPnR5cGUpKTsKKwkJ
 bWs0KGJzeC0+ZXhWb2x1bWVJRCwgeCk7CisJCW1rbGFiZWwoYnN4LT5leFZv
 bHVtZUxhYmVsLCBvcHRfTCA/IG9wdF9MIDogIk5PX05BTUUiKTsKKwkJc25w
 cmludGYoYnVmLCBzaXplb2YoYnVmKSwgIkZBVCV1IiwgZmF0KTsKKwkJc2V0
 c3RyKGJzeC0+ZXhGaWxlU3lzVHlwZSwgYnVmLCBzaXplb2YoYnN4LT5leEZp
 bGVTeXNUeXBlKSk7CiAJCWlmICghb3B0X0IpIHsKIAkJICAgIHgxICs9IHNp
 emVvZihzdHJ1Y3QgYnN4KTsKIAkJICAgIGJzID0gKHN0cnVjdCBicyAqKWlt
 ZzsKLQkJICAgIG1rMShicy0+am1wWzBdLCAweGViKTsKLQkJICAgIG1rMShi
 cy0+am1wWzFdLCB4MSAtIDIpOwotCQkgICAgbWsxKGJzLT5qbXBbMl0sIDB4
 OTApOwotCQkgICAgc2V0c3RyKGJzLT5vZW0sIG9wdF9PID8gb3B0X08gOiAi
 QlNEICA0LjQiLAotCQkJICAgc2l6ZW9mKGJzLT5vZW0pKTsKKwkJICAgIG1r
 MShicy0+YnNKdW1wWzBdLCAweGViKTsKKwkJICAgIG1rMShicy0+YnNKdW1w
 WzFdLCB4MSAtIDIpOworCQkgICAgbWsxKGJzLT5ic0p1bXBbMl0sIDB4OTAp
 OworCQkgICAgc2V0c3RyKGJzLT5ic09lbU5hbWUsIG9wdF9PID8gb3B0X08g
 OiAiQlNENC40ICAiLAorCQkJICAgc2l6ZW9mKGJzLT5ic09lbU5hbWUpKTsK
 IAkJICAgIG1lbWNweShpbWcgKyB4MSwgYm9vdGNvZGUsIHNpemVvZihib290
 Y29kZSkpOwogCQkgICAgbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01BR0lD
 KTsKIAkJfQotCSAgICB9IGVsc2UgaWYgKGZhdCA9PSAzMiAmJiBicGIuaW5m
 cyAhPSBNQVhVMTYgJiYKLQkJICAgICAgIChsc24gPT0gYnBiLmluZnMgfHwK
 LQkJCShicGIuYmticyAhPSBNQVhVMTYgJiYKLQkJCSBsc24gPT0gYnBiLmJr
 YnMgKyBicGIuaW5mcykpKSB7CisJICAgIH0gZWxzZSBpZiAoZmF0ID09IDMy
 ICYmIGJwYi5icGJGU0luZm8gIT0gTUFYVTE2ICYmCisJCSAgICAgICAobHNu
 ID09IGJwYi5icGJGU0luZm8gfHwKKwkJCShicGIuYnBiQmFja3VwICE9IE1B
 WFUxNiAmJgorCQkJIGxzbiA9PSBicGIuYnBiQmFja3VwICsgYnBiLmJwYkZT
 SW5mbykpKSB7CiAJCW1rNChpbWcsIDB4NDE2MTUyNTIpOwogCQltazQoaW1n
 ICsgTUlOQlBTIC0gMjgsIDB4NjE0MTcyNzIpOwogCQltazQoaW1nICsgTUlO
 QlBTIC0gMjQsIDB4ZmZmZmZmZmYpOwotCQltazQoaW1nICsgTUlOQlBTIC0g
 MjAsIGJwYi5yZGNsKTsKKwkJbWs0KGltZyArIE1JTkJQUyAtIDIwLCBicGIu
 YnBiUm9vdENsdXN0KTsKIAkJbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01B
 R0lDKTsKLQkgICAgfSBlbHNlIGlmIChsc24gPj0gYnBiLnJlcyAmJiBsc24g
 PCBkaXIgJiYKLQkJICAgICAgICEoKGxzbiAtIGJwYi5yZXMpICUKLQkJCSAo
 YnBiLnNwZiA/IGJwYi5zcGYgOiBicGIuYnNwZikpKSB7Ci0JCW1rMShpbWdb
 MF0sIGJwYi5taWQpOworCSAgICB9IGVsc2UgaWYgKGxzbiA+PSBicGIuYnBi
 UmVzU2VjdG9ycyAmJiBsc24gPCBkaXIgJiYKKwkJICAgICAgICEoKGxzbiAt
 IGJwYi5icGJSZXNTZWN0b3JzKSAlCisJCQkgKGJwYi5icGJGQVRzZWNzID8g
 YnBiLmJwYkZBVHNlY3MgOiBicGIuYnBiQmlnRkFUc2VjcykpKSB7CisJCW1r
 MShpbWdbMF0sIGJwYi5icGJNZWRpYSk7CiAJCWZvciAoeCA9IDE7IHggPCBm
 YXQgKiAoZmF0ID09IDMyID8gMyA6IDIpIC8gODsgeCsrKQogCQkgICAgbWsx
 KGltZ1t4XSwgZmF0ID09IDMyICYmIHggJSA0ID09IDMgPyAweDBmIDogMHhm
 Zik7CiAJICAgIH0gZWxzZSBpZiAobHNuID09IGRpciAmJiBvcHRfTCkgewpA
 QCAtNjk5LDkgKzcwNiw5IEBACiAJCSAgICAodV9pbnQpdG0tPnRtX21kYXk7
 CiAJCW1rMihkZS0+ZGF0ZSwgeCk7CiAJICAgIH0KLQkgICAgaWYgKChuID0g
 d3JpdGUoZmQsIGltZywgYnBiLmJwcykpID09IC0xKQorCSAgICBpZiAoKG4g
 PSB3cml0ZShmZCwgaW1nLCBicGIuYnBiQnl0ZXNQZXJTZWMpKSA9PSAtMSkK
 IAkJZXJyKDEsICIlcyIsIGZuYW1lKTsKLQkgICAgaWYgKCh1bnNpZ25lZClu
 ICE9IGJwYi5icHMpCisJICAgIGlmICgodW5zaWduZWQpbiAhPSBicGIuYnBi
 Qnl0ZXNQZXJTZWMpCiAJCWVycngoMSwgIiVzOiBjYW4ndCB3cml0ZSBzZWN0
 b3IgJXUiLCBmbmFtZSwgbHNuKTsKIAl9CiAgICAgfQpAQCAtNzk0LDE4ICs4
 MDEsMTkgQEAKIAogICAgIC8qIE1heWJlIGl0J3MgYSBmaXhlZCBkcml2ZSAq
 LwogICAgIGlmIChscCA9PSBOVUxMKSB7CisJaWYgKGJwYi0+YnBiQnl0ZXNQ
 ZXJTZWMpCisJICAgIGRscC5kX3NlY3NpemUgPSBicGItPmJwYkJ5dGVzUGVy
 U2VjOwogCWlmIChpb2N0bChmZCwgRElPQ0dESU5GTywgJmRscCkgPT0gLTEp
 IHsKLQkgICAgaWYgKGJwYi0+YnBzID09IDAgJiYgaW9jdGwoZmQsIERJT0NH
 U0VDVE9SU0laRSwgJmRscC5kX3NlY3NpemUpID09IC0xKQorCSAgICBpZiAo
 YnBiLT5icGJCeXRlc1BlclNlYyA9PSAwICYmIGlvY3RsKGZkLCBESU9DR1NF
 Q1RPUlNJWkUsICZkbHAuZF9zZWNzaXplKSA9PSAtMSkKIAkJZXJyeCgxLCAi
 Q2Fubm90IGdldCBzZWN0b3Igc2l6ZSwgJXMiLCBzdHJlcnJvcihlcnJubykp
 OwogCi0JICAgIC8qIFhYWCBTaG91bGQgd2UgdXNlIGJwYi0+YnBzIGlmIGl0
 J3Mgc2V0PyAqLwogCSAgICBkbHAuZF9zZWNwZXJ1bml0ID0gbXMgLyBkbHAu
 ZF9zZWNzaXplOwogCi0JICAgIGlmIChicGItPnNwdCA9PSAwICYmIGlvY3Rs
 KGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9PSAtMSkg
 eworCSAgICBpZiAoYnBiLT5icGJTZWNQZXJUcmFjayA9PSAwICYmIGlvY3Rs
 KGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9PSAtMSkg
 ewogCQl3YXJueCgiQ2Fubm90IGdldCBudW1iZXIgb2Ygc2VjdG9ycyBwZXIg
 dHJhY2ssICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAkJZGxwLmRfbnNlY3Rv
 cnMgPSA2MzsKIAkgICAgfQotCSAgICBpZiAoYnBiLT5oZHMgPT0gMCAmJiBp
 b2N0bChmZCwgRElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykgPT0gLTEp
 IHsKKwkgICAgaWYgKGJwYi0+YnBiSGVhZHMgPT0gMCAmJiBpb2N0bChmZCwg
 RElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykgPT0gLTEpIHsKIAkJd2Fy
 bngoIkNhbm5vdCBnZXQgbnVtYmVyIG9mIGhlYWRzLCAlcyIsIHN0cmVycm9y
 KGVycm5vKSk7CiAJCWlmIChkbHAuZF9zZWNwZXJ1bml0IDw9IDYzKjEqMTAy
 NCkKIAkJICAgIGRscC5kX250cmFja3MgPSAxOwpAQCAtODIwLDE2ICs4Mjgs
 MTYgQEAKIAlscCA9ICZkbHA7CiAgICAgfQogCi0gICAgaWYgKGJwYi0+YnBz
 ID09IDApCi0JYnBiLT5icHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX3NlY3Np
 emUsICJieXRlcy9zZWN0b3IiKTsKLSAgICBpZiAoYnBiLT5zcHQgPT0gMCkK
 LQlicGItPnNwdCA9IGNrZ2VvbShmbmFtZSwgbHAtPmRfbnNlY3RvcnMsICJz
 ZWN0b3JzL3RyYWNrIik7Ci0gICAgaWYgKGJwYi0+aGRzID09IDApCi0JYnBi
 LT5oZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJkcml2ZSBo
 ZWFkcyIpOwotICAgIGlmIChicGItPmJzZWMgPT0gMCkKLQlicGItPmJzZWMg
 PSBscC0+ZF9zZWNwZXJ1bml0OwotICAgIGlmIChicGItPmhpZCA9PSAwKQot
 CWJwYi0+aGlkID0gaHM7CisgICAgaWYgKGJwYi0+YnBiQnl0ZXNQZXJTZWMg
 PT0gMCkKKwlicGItPmJwYkJ5dGVzUGVyU2VjID0gY2tnZW9tKGZuYW1lLCBs
 cC0+ZF9zZWNzaXplLCAiYnl0ZXMvc2VjdG9yIik7CisgICAgaWYgKGJwYi0+
 YnBiU2VjUGVyVHJhY2sgPT0gMCkKKwlicGItPmJwYlNlY1BlclRyYWNrID0g
 Y2tnZW9tKGZuYW1lLCBscC0+ZF9uc2VjdG9ycywgInNlY3RvcnMvdHJhY2si
 KTsKKyAgICBpZiAoYnBiLT5icGJIZWFkcyA9PSAwKQorCWJwYi0+YnBiSGVh
 ZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJkcml2ZSBoZWFk
 cyIpOworICAgIGlmIChicGItPmJwYkh1Z2VTZWN0b3JzID09IDApCisJYnBi
 LT5icGJIdWdlU2VjdG9ycyA9IGxwLT5kX3NlY3BlcnVuaXQ7CisgICAgaWYg
 KGJwYi0+YnBiSGlkZGVuU2VjcyA9PSAwKQorCWJwYi0+YnBiSGlkZGVuU2Vj
 cyA9IGhzOwogfQogCiAvKgpAQCAtODM4LDI0ICs4NDYsMjQgQEAKIHN0YXRp
 YyB2b2lkCiBwcmludF9icGIoc3RydWN0IGJwYiAqYnBiKQogewotICAgIHBy
 aW50ZigiYnBzPSV1IHNwYz0ldSByZXM9JXUgbmZ0PSV1IiwgYnBiLT5icHMs
 IGJwYi0+c3BjLCBicGItPnJlcywKLQkgICBicGItPm5mdCk7Ci0gICAgaWYg
 KGJwYi0+cmRlKQotCXByaW50ZigiIHJkZT0ldSIsIGJwYi0+cmRlKTsKLSAg
 ICBpZiAoYnBiLT5zZWMpCi0JcHJpbnRmKCIgc2VjPSV1IiwgYnBiLT5zZWMp
 OwotICAgIHByaW50ZigiIG1pZD0lI3giLCBicGItPm1pZCk7Ci0gICAgaWYg
 KGJwYi0+c3BmKQotCXByaW50ZigiIHNwZj0ldSIsIGJwYi0+c3BmKTsKLSAg
 ICBwcmludGYoIiBzcHQ9JXUgaGRzPSV1IGhpZD0ldSIsIGJwYi0+c3B0LCBi
 cGItPmhkcywgYnBiLT5oaWQpOwotICAgIGlmIChicGItPmJzZWMpCi0JcHJp
 bnRmKCIgYnNlYz0ldSIsIGJwYi0+YnNlYyk7Ci0gICAgaWYgKCFicGItPnNw
 ZikgewotCXByaW50ZigiIGJzcGY9JXUgcmRjbD0ldSIsIGJwYi0+YnNwZiwg
 YnBiLT5yZGNsKTsKLQlwcmludGYoIiBpbmZzPSIpOwotCXByaW50ZihicGIt
 PmluZnMgPT0gTUFYVTE2ID8gIiUjeCIgOiAiJXUiLCBicGItPmluZnMpOwot
 CXByaW50ZigiIGJrYnM9Iik7Ci0JcHJpbnRmKGJwYi0+YmticyA9PSBNQVhV
 MTYgPyAiJSN4IiA6ICIldSIsIGJwYi0+Ymticyk7CisgICAgcHJpbnRmKCJC
 eXRlc1BlclNlYz0ldSBTZWNQZXJDbHVzdD0ldSBSZXNTZWN0b3JzPSV1IEZB
 VHM9JXUiLCBicGItPmJwYkJ5dGVzUGVyU2VjLCBicGItPmJwYlNlY1BlckNs
 dXN0LCBicGItPmJwYlJlc1NlY3RvcnMsCisJICAgYnBiLT5icGJGQVRzKTsK
 KyAgICBpZiAoYnBiLT5icGJSb290RGlyRW50cykKKwlwcmludGYoIiBSb290
 RGlyRW50cz0ldSIsIGJwYi0+YnBiUm9vdERpckVudHMpOworICAgIGlmIChi
 cGItPmJwYlNlY3RvcnMpCisJcHJpbnRmKCIgU2VjdG9ycz0ldSIsIGJwYi0+
 YnBiU2VjdG9ycyk7CisgICAgcHJpbnRmKCIgTWVkaWE9JSN4IiwgYnBiLT5i
 cGJNZWRpYSk7CisgICAgaWYgKGJwYi0+YnBiRkFUc2VjcykKKwlwcmludGYo
 IiBGQVRzZWNzPSV1IiwgYnBiLT5icGJGQVRzZWNzKTsKKyAgICBwcmludGYo
 IiBTZWNQZXJUcmFjaz0ldSBIZWFkcz0ldSBIaWRkZW5TZWNzPSV1IiwgYnBi
 LT5icGJTZWNQZXJUcmFjaywgYnBiLT5icGJIZWFkcywgYnBiLT5icGJIaWRk
 ZW5TZWNzKTsKKyAgICBpZiAoYnBiLT5icGJIdWdlU2VjdG9ycykKKwlwcmlu
 dGYoIiBIdWdlU2VjdG9ycz0ldSIsIGJwYi0+YnBiSHVnZVNlY3RvcnMpOwor
 ICAgIGlmICghYnBiLT5icGJGQVRzZWNzKSB7CisJcHJpbnRmKCIgRkFUc2Vj
 cz0ldSBSb290Q2x1c3Rlcj0ldSIsIGJwYi0+YnBiQmlnRkFUc2VjcywgYnBi
 LT5icGJSb290Q2x1c3QpOworCXByaW50ZigiIEZTSW5mbz0iKTsKKwlwcmlu
 dGYoYnBiLT5icGJGU0luZm8gPT0gTUFYVTE2ID8gIiUjeCIgOiAiJXUiLCBi
 cGItPmJwYkZTSW5mbyk7CisJcHJpbnRmKCIgQmFja3VwPSIpOworCXByaW50
 ZihicGItPmJwYkJhY2t1cCA9PSBNQVhVMTYgPyAiJSN4IiA6ICIldSIsIGJw
 Yi0+YnBiQmFja3VwKTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIpOwogfQo=
 
 
 --0-550664387-1263505954=:34069--

From: "Pedro F. Giffuni" <giffunip@tutopia.com>
To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org
Cc:  
Subject: Re: bin/142526: Cleanups and updates to newfs_msdos
Date: Sun, 17 Jan 2010 12:54:28 -0800 (PST)

 --0-96800579-1263761668=:91781
 Content-Type: text/plain; charset=us-ascii
 
 Yet another update:
 - Remove the MAXBPS warning, I have been convinced the limitation is a
 tactic to move people to other filesystems.
 - Update names in fields for directory access so we can use the same
 terminology and headers from the msdosfs.
 
 (I don't expect to add any new feature) 
 
 
       
 --0-96800579-1263761668=:91781
 Content-Type: application/octet-stream; name=patch-newfs_msdos
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename=patch-newfs_msdos
 
 ZGlmZiAtcnUgbmV3ZnNfbXNkb3Mub3JpZy9uZXdmc19tc2Rvcy44IG5ld2Zz
 X21zZG9zL25ld2ZzX21zZG9zLjgKLS0tIG5ld2ZzX21zZG9zLm9yaWcvbmV3
 ZnNfbXNkb3MuOAkyMDEwLTAxLTA2IDExOjA2OjAyLjAwMDAwMDAwMCArMDAw
 MAorKysgbmV3ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuOAkyMDEwLTAxLTE2IDEw
 OjMxOjAwLjAwMDAwMDAwMCArMDAwMApAQCAtMzgsMTQgKzM4LDE0IEBACiAu
 T3AgRmwgQiBBciBib290CiAuT3AgRmwgQyBBciBjcmVhdGUtc2l6ZQogLk9w
 IEZsIEYgQXIgRkFULXR5cGUKLS5PcCBGbCBJIEFyIHZvbGlkCisuT3AgRmwg
 SSBBciBWb2x1bWVJZAogLk9wIEZsIEwgQXIgbGFiZWwKIC5PcCBGbCBPIEFy
 IE9FTQogLk9wIEZsIFMgQXIgc2VjdG9yLXNpemUKIC5PcCBGbCBhIEFyIEZB
 VC1zaXplCiAuT3AgRmwgYiBBciBibG9jay1zaXplCiAuT3AgRmwgYyBBciBj
 bHVzdGVyLXNpemUKLS5PcCBGbCBlIEFyIGRpcmVudHMKKy5PcCBGbCBlIEFy
 IERpckVudHMKIC5PcCBGbCBmIEFyIGZvcm1hdAogLk9wIEZsIGggQXIgaGVh
 ZHMKIC5PcCBGbCBpIEFyIGluZm8KQEAgLTEwMyw3ICsxMDMsNyBAQAogc21h
 bGxlciB0aGFuIHRoZSBzaXplIHNwZWNpZmllZCBhcyBwYXJhbWV0ZXIuCiAu
 SXQgRmwgRiBBciBGQVQtdHlwZQogRkFUIHR5cGUgKG9uZSBvZiAxMiwgMTYs
 IG9yIDMyKS4KLS5JdCBGbCBJIEFyIHZvbGlkCisuSXQgRmwgSSBBciBWb2x1
 bWVJRAogVm9sdW1lIElELCBhIDMyIGJpdCBudW1iZXIgaW4gZGVjaW1hbCBv
 ciBoZXhhZGVjaW1hbCAoMHguLi4pIGZvcm1hdC4KIC5JdCBGbCBMIEFyIGxh
 YmVsCiBWb2x1bWUgbGFiZWwgKHVwIHRvIDExIGNoYXJhY3RlcnMpLgpAQCAt
 MTE2LDcgKzExNiw3IEBACiAuSXQgRmwgUyBBciBzZWN0b3Itc2l6ZQogTnVt
 YmVyIG9mIGJ5dGVzIHBlciBzZWN0b3IuCiBBY2NlcHRhYmxlIHZhbHVlcyBh
 cmUgcG93ZXJzIG9mIDIKLWluIHRoZSByYW5nZSAxMjggdGhyb3VnaCAzMjc2
 OC4KK2luIHRoZSByYW5nZSA1MTIgdGhyb3VnaCAzMjc2OC4KIC5JdCBGbCBh
 IEFyIEZBVC1zaXplCiBOdW1iZXIgb2Ygc2VjdG9ycyBwZXIgRkFULgogLkl0
 IEZsIGIgQXIgYmxvY2stc2l6ZQpAQCAtMTMwLDcgKzEzMCw3IEBACiBJZiB0
 aGUgYmxvY2sgb3IgY2x1c3RlciBzaXplIGFyZSBub3Qgc3BlY2lmaWVkLCB0
 aGUgY29kZQogdXNlcyBhIGNsdXN0ZXIgYmV0d2VlbiA1MTIgYnl0ZXMgYW5k
 IDMySyBkZXBlbmRpbmcgb24KIHRoZSBmaWxlc3lzdGVtIHNpemUuCi0uSXQg
 RmwgZSBBciBkaXJlbnRzCisuSXQgRmwgZSBBciBEaXJFbnRzCiBOdW1iZXIg
 b2Ygcm9vdCBkaXJlY3RvcnkgZW50cmllcyAoRkFUMTIgYW5kIEZBVDE2IG9u
 bHkpLgogLkl0IEZsIGYgQXIgZm9ybWF0CiBTcGVjaWZ5IGEgc3RhbmRhcmQg
 KGZsb3BweSBkaXNrKSBmb3JtYXQuCmRpZmYgLXJ1IG5ld2ZzX21zZG9zLm9y
 aWcvbmV3ZnNfbXNkb3MuYyBuZXdmc19tc2Rvcy9uZXdmc19tc2Rvcy5jCi0t
 LSBuZXdmc19tc2Rvcy5vcmlnL25ld2ZzX21zZG9zLmMJMjAxMC0wMS0wNiAx
 MTowNjowMi4wMDAwMDAwMDAgKzAwMDAKKysrIG5ld2ZzX21zZG9zL25ld2Zz
 X21zZG9zLmMJMjAxMC0wMS0xNiAxMDoyMjowNy4wMDAwMDAwMDAgKzAwMDAK
 QEAgLTYyLDEyICs2MiwxMiBAQAogI2RlZmluZSBERUZCTEsxNiAgMjA0OAkJ
 LyogZGVmYXVsdCBibG9jayBzaXplIEZBVDE2ICovCiAjZGVmaW5lIERFRlJE
 RQkgIDUxMgkJLyogZGVmYXVsdCByb290IGRpcmVjdG9yeSBlbnRyaWVzICov
 CiAjZGVmaW5lIFJFU0ZURQkgIDIJCS8qIHJlc2VydmVkIEZBVCBlbnRyaWVz
 ICovCi0jZGVmaW5lIE1JTkNMUzEyICAxCQkvKiBtaW5pbXVtIEZBVDEyIGNs
 dXN0ZXJzICovCi0jZGVmaW5lIE1JTkNMUzE2ICAweDEwMDAJLyogbWluaW11
 bSBGQVQxNiBjbHVzdGVycyAqLwotI2RlZmluZSBNSU5DTFMzMiAgMgkJLyog
 bWluaW11bSBGQVQzMiBjbHVzdGVycyAqLwotI2RlZmluZSBNQVhDTFMxMiAg
 MHhmZWQgCS8qIG1heGltdW0gRkFUMTIgY2x1c3RlcnMgKi8KLSNkZWZpbmUg
 TUFYQ0xTMTYgIDB4ZmZmNQkvKiBtYXhpbXVtIEZBVDE2IGNsdXN0ZXJzICov
 Ci0jZGVmaW5lIE1BWENMUzMyICAweGZmZmZmZjUJLyogbWF4aW11bSBGQVQz
 MiBjbHVzdGVycyAqLworI2RlZmluZSBNSU5DTFMxMiAgMXUJCS8qIG1pbmlt
 dW0gRkFUMTIgY2x1c3RlcnMgKi8KKyNkZWZpbmUgTUlOQ0xTMTYgIDB4MTAw
 MHUJLyogbWluaW11bSBGQVQxNiBjbHVzdGVycyAqLworI2RlZmluZSBNSU5D
 TFMzMiAgMnUJCS8qIG1pbmltdW0gRkFUMzIgY2x1c3RlcnMgKi8KKyNkZWZp
 bmUgTUFYQ0xTMTIgIDB4ZmVkdSAJLyogbWF4aW11bSBGQVQxMiBjbHVzdGVy
 cyAqLworI2RlZmluZSBNQVhDTFMxNiAgMHhmZmY1dQkvKiBtYXhpbXVtIEZB
 VDE2IGNsdXN0ZXJzICovCisjZGVmaW5lIE1BWENMUzMyICAweGZmZmZmZjV1
 CS8qIG1heGltdW0gRkFUMzIgY2x1c3RlcnMgKi8KIAogI2RlZmluZSBtaW5j
 bHMoZmF0KSAgKChmYXQpID09IDEyID8gTUlOQ0xTMTIgOglcCiAJCSAgICAg
 IChmYXQpID09IDE2ID8gTUlOQ0xTMTYgOglcCkBAIC05NiwyMyArOTYsMjMg
 QEAKICNkZWZpbmUgYXJndG94KGFyZywgbG8sIG1zZykgIGFyZ3RvdShhcmcs
 IGxvLCBVSU5UX01BWCwgbXNnKQogCiBzdHJ1Y3QgYnMgewotICAgIHVfaW50
 OF90IGptcFszXTsJCS8qIGJvb3RzdHJhcCBlbnRyeSBwb2ludCAqLwotICAg
 IHVfaW50OF90IG9lbVs4XTsJCS8qIE9FTSBuYW1lIGFuZCB2ZXJzaW9uICov
 CisgICAgdV9pbnQ4X3QgYnNKdW1wWzNdOwkJLyogYm9vdHN0cmFwIGVudHJ5
 IHBvaW50ICovCisgICAgdV9pbnQ4X3QgYnNPZW1OYW1lWzhdOwkJLyogT0VN
 IG5hbWUgYW5kIHZlcnNpb24gKi8KIH07CiAKIHN0cnVjdCBic2JwYiB7Ci0g
 ICAgdV9pbnQ4X3QgYnBzWzJdOwkJLyogYnl0ZXMgcGVyIHNlY3RvciAqLwot
 ICAgIHVfaW50OF90IHNwYzsJCS8qIHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8K
 LSAgICB1X2ludDhfdCByZXNbMl07CQkvKiByZXNlcnZlZCBzZWN0b3JzICov
 Ci0gICAgdV9pbnQ4X3QgbmZ0OwkJLyogbnVtYmVyIG9mIEZBVHMgKi8KLSAg
 ICB1X2ludDhfdCByZGVbMl07CQkvKiByb290IGRpcmVjdG9yeSBlbnRyaWVz
 ICovCi0gICAgdV9pbnQ4X3Qgc2VjWzJdOwkJLyogdG90YWwgc2VjdG9ycyAq
 LwotICAgIHVfaW50OF90IG1pZDsJCS8qIG1lZGlhIGRlc2NyaXB0b3IgKi8K
 LSAgICB1X2ludDhfdCBzcGZbMl07CQkvKiBzZWN0b3JzIHBlciBGQVQgKi8K
 LSAgICB1X2ludDhfdCBzcHRbMl07CQkvKiBzZWN0b3JzIHBlciB0cmFjayAq
 LwotICAgIHVfaW50OF90IGhkc1syXTsJCS8qIGRyaXZlIGhlYWRzICovCi0g
 ICAgdV9pbnQ4X3QgaGlkWzRdOwkJLyogaGlkZGVuIHNlY3RvcnMgKi8KLSAg
 ICB1X2ludDhfdCBic2VjWzRdOwkJLyogYmlnIHRvdGFsIHNlY3RvcnMgKi8K
 KyAgICB1X2ludDhfdCBicGJCeXRlc1BlclNlY1syXTsJCS8qIGJ5dGVzIHBl
 ciBzZWN0b3IgKi8KKyAgICB1X2ludDhfdCBicGJTZWNQZXJDbHVzdDsJCS8q
 IHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8KKyAgICB1X2ludDhfdCBicGJSZXNT
 ZWN0b3JzWzJdOwkJLyogcmVzZXJ2ZWQgc2VjdG9ycyAqLworICAgIHVfaW50
 OF90IGJwYkZBVHM7CQkJLyogbnVtYmVyIG9mIEZBVHMgKi8KKyAgICB1X2lu
 dDhfdCBicGJSb290RGlyRW50c1syXTsJCS8qIHJvb3QgZGlyZWN0b3J5IGVu
 dHJpZXMgKi8KKyAgICB1X2ludDhfdCBicGJTZWN0b3JzWzJdOwkJLyogdG90
 YWwgc2VjdG9ycyAqLworICAgIHVfaW50OF90IGJwYk1lZGlhOwkJCS8qIG1l
 ZGlhIGRlc2NyaXB0b3IgKi8KKyAgICB1X2ludDhfdCBicGJGQVRzZWNzWzJd
 OwkJLyogc2VjdG9ycyBwZXIgRkFUICovCisgICAgdV9pbnQ4X3QgYnBiU2Vj
 UGVyVHJhY2tbMl07CQkvKiBzZWN0b3JzIHBlciB0cmFjayAqLworICAgIHVf
 aW50OF90IGJwYkhlYWRzWzJdOwkJLyogZHJpdmUgaGVhZHMgKi8KKyAgICB1
 X2ludDhfdCBicGJIaWRkZW5TZWNzWzRdOwkJLyogaGlkZGVuIHNlY3RvcnMg
 Ki8KKyAgICB1X2ludDhfdCBicGJIdWdlU2VjdG9yc1s0XTsJCS8qIGJpZyB0
 b3RhbCBzZWN0b3JzICovCiB9OwogCiBzdHJ1Y3QgYnN4YnBiIHsKQEAgLTEy
 Miw2MyArMTIyLDY3IEBACiAgICAgdV9pbnQ4X3QgcmRjbFs0XTsJCS8qIHJv
 b3QgZGlyZWN0b3J5IHN0YXJ0IGNsdXN0ZXIgKi8KICAgICB1X2ludDhfdCBp
 bmZzWzJdOwkJLyogZmlsZSBzeXN0ZW0gaW5mbyBzZWN0b3IgKi8KICAgICB1
 X2ludDhfdCBia2JzWzJdOwkJLyogYmFja3VwIGJvb3Qgc2VjdG9yICovCi0g
 ICAgdV9pbnQ4X3QgcnN2ZFsxMl07CQkvKiByZXNlcnZlZCAqLworICAgIHVf
 aW50OF90IHJzdmRbMTJdOwkJCS8qIHJlc2VydmVkICovCiB9OwogCiBzdHJ1
 Y3QgYnN4IHsKLSAgICB1X2ludDhfdCBkcnY7CQkvKiBkcml2ZSBudW1iZXIg
 Ki8KLSAgICB1X2ludDhfdCByc3ZkOwkJLyogcmVzZXJ2ZWQgKi8KLSAgICB1
 X2ludDhfdCBzaWc7CQkvKiBleHRlbmRlZCBib290IHNpZ25hdHVyZSAqLwot
 ICAgIHVfaW50OF90IHZvbGlkWzRdOwkJLyogdm9sdW1lIElEIG51bWJlciAq
 LwotICAgIHVfaW50OF90IGxhYmVsWzExXTsgCS8qIHZvbHVtZSBsYWJlbCAq
 LwotICAgIHVfaW50OF90IHR5cGVbOF07CQkvKiBmaWxlIHN5c3RlbSB0eXBl
 ICovCisgICAgdV9pbnQ4X3QgZXhEcml2ZU51bWJlcjsJCS8qIGRyaXZlIG51
 bWJlciAqLworICAgIHVfaW50OF90IGV4UmVzZXJ2ZWQxOwkJLyogcmVzZXJ2
 ZWQgKi8KKyAgICB1X2ludDhfdCBleEJvb3RTaWduYXR1cmU7CQkvKiBleHRl
 bmRlZCBib290IHNpZ25hdHVyZSAqLworICAgIHVfaW50OF90IGV4Vm9sdW1l
 SURbNF07CQkvKiB2b2x1bWUgSUQgbnVtYmVyICovCisgICAgdV9pbnQ4X3Qg
 ZXhWb2x1bWVMYWJlbFsxMV07IAkvKiB2b2x1bWUgbGFiZWwgKi8KKyAgICB1
 X2ludDhfdCBleEZpbGVTeXNUeXBlWzhdOwkJLyogZmlsZSBzeXN0ZW0gdHlw
 ZSAqLwogfTsKIAogc3RydWN0IGRlIHsKLSAgICB1X2ludDhfdCBuYW1leHRb
 MTFdOwkvKiBuYW1lIGFuZCBleHRlbnNpb24gKi8KLSAgICB1X2ludDhfdCBh
 dHRyOwkJLyogYXR0cmlidXRlcyAqLworICAgIHVfaW50OF90IGRlTmFtZVsx
 MV07CS8qIG5hbWUgYW5kIGV4dGVuc2lvbiAqLworICAgIHVfaW50OF90IGRl
 QXR0cmlidXRlczsJLyogYXR0cmlidXRlcyAqLwogICAgIHVfaW50OF90IHJz
 dmRbMTBdOwkJLyogcmVzZXJ2ZWQgKi8KLSAgICB1X2ludDhfdCB0aW1lWzJd
 OwkJLyogY3JlYXRpb24gdGltZSAqLwotICAgIHVfaW50OF90IGRhdGVbMl07
 CQkvKiBjcmVhdGlvbiBkYXRlICovCi0gICAgdV9pbnQ4X3QgY2x1c1syXTsJ
 CS8qIHN0YXJ0aW5nIGNsdXN0ZXIgKi8KLSAgICB1X2ludDhfdCBzaXplWzRd
 OwkJLyogc2l6ZSAqLworICAgIHVfaW50OF90IGRlQ1RpbWVbMl07CS8qIGNy
 ZWF0aW9uIHRpbWUgKi8KKyAgICB1X2ludDhfdCBkZUNEYXRlWzJdOwkvKiBj
 cmVhdGlvbiBkYXRlICovCisgICAgdV9pbnQ4X3QgZGVTdGFydENsdXN0ZXJb
 Ml07CS8qIHN0YXJ0aW5nIGNsdXN0ZXIgKi8KKyAgICB1X2ludDhfdCBkZUZp
 bGVTaXplWzRdOwkvKiBzaXplICovCiB9OwogCiBzdHJ1Y3QgYnBiIHsKLSAg
 ICB1X2ludCBicHM7CQkJLyogYnl0ZXMgcGVyIHNlY3RvciAqLwotICAgIHVf
 aW50IHNwYzsJCQkvKiBzZWN0b3JzIHBlciBjbHVzdGVyICovCi0gICAgdV9p
 bnQgcmVzOwkJCS8qIHJlc2VydmVkIHNlY3RvcnMgKi8KLSAgICB1X2ludCBu
 ZnQ7CQkJLyogbnVtYmVyIG9mIEZBVHMgKi8KLSAgICB1X2ludCByZGU7CQkJ
 Lyogcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLwotICAgIHVfaW50IHNlYzsJ
 CQkvKiB0b3RhbCBzZWN0b3JzICovCi0gICAgdV9pbnQgbWlkOwkJCS8qIG1l
 ZGlhIGRlc2NyaXB0b3IgKi8KLSAgICB1X2ludCBzcGY7CQkJLyogc2VjdG9y
 cyBwZXIgRkFUICovCi0gICAgdV9pbnQgc3B0OwkJCS8qIHNlY3RvcnMgcGVy
 IHRyYWNrICovCi0gICAgdV9pbnQgaGRzOwkJCS8qIGRyaXZlIGhlYWRzICov
 Ci0gICAgdV9pbnQgaGlkOwkJCS8qIGhpZGRlbiBzZWN0b3JzICovCi0gICAg
 dV9pbnQgYnNlYzsgCQkvKiBiaWcgdG90YWwgc2VjdG9ycyAqLwotICAgIHVf
 aW50IGJzcGY7IAkJLyogYmlnIHNlY3RvcnMgcGVyIEZBVCAqLwotICAgIHVf
 aW50IHJkY2w7IAkJLyogcm9vdCBkaXJlY3Rvcnkgc3RhcnQgY2x1c3RlciAq
 LwotICAgIHVfaW50IGluZnM7IAkJLyogZmlsZSBzeXN0ZW0gaW5mbyBzZWN0
 b3IgKi8KLSAgICB1X2ludCBia2JzOyAJCS8qIGJhY2t1cCBib290IHNlY3Rv
 ciAqLworICAgIHVfaW50IGJwYkJ5dGVzUGVyU2VjOwkJLyogYnl0ZXMgcGVy
 IHNlY3RvciAqLworICAgIHVfaW50IGJwYlNlY1BlckNsdXN0OwkJLyogc2Vj
 dG9ycyBwZXIgY2x1c3RlciAqLworICAgIHVfaW50IGJwYlJlc1NlY3RvcnM7
 CQkvKiByZXNlcnZlZCBzZWN0b3JzICovCisgICAgdV9pbnQgYnBiRkFUczsJ
 CQkvKiBudW1iZXIgb2YgRkFUcyAqLworICAgIHVfaW50IGJwYlJvb3REaXJF
 bnRzOwkJLyogcm9vdCBkaXJlY3RvcnkgZW50cmllcyAqLworICAgIHVfaW50
 IGJwYlNlY3RvcnM7CQkJLyogdG90YWwgc2VjdG9ycyAqLworICAgIHVfaW50
 IGJwYk1lZGlhOwkJCS8qIG1lZGlhIGRlc2NyaXB0b3IgKi8KKyAgICB1X2lu
 dCBicGJGQVRzZWNzOwkJCS8qIHNlY3RvcnMgcGVyIEZBVCAqLworICAgIHVf
 aW50IGJwYlNlY1BlclRyYWNrOwkJLyogc2VjdG9ycyBwZXIgdHJhY2sgKi8K
 KyAgICB1X2ludCBicGJIZWFkczsJCQkvKiBkcml2ZSBoZWFkcyAqLworICAg
 IHVfaW50IGJwYkhpZGRlblNlY3M7CQkvKiBoaWRkZW4gc2VjdG9ycyAqLwor
 ICAgIHVfaW50IGJwYkh1Z2VTZWN0b3JzOyAJCS8qIGJpZyB0b3RhbCBzZWN0
 b3JzICovCisgICAgdV9pbnQgYnBiQmlnRkFUc2VjczsgCQkvKiBiaWcgc2Vj
 dG9ycyBwZXIgRkFUICovCisvKiBYWFg6IE1pc3NpbmcgRVhURmxhZ3MgRlNW
 ZXJzICovCisgICAgdV9pbnQgYnBiUm9vdENsdXN0OyAJCS8qIHJvb3QgZGly
 ZWN0b3J5IHN0YXJ0IGNsdXN0ZXIgKi8KKyAgICB1X2ludCBicGJGU0luZm87
 IAkJLyogZmlsZSBzeXN0ZW0gaW5mbyBzZWN0b3IgKi8KKyAgICB1X2ludCBi
 cGJCYWNrdXA7IAkJLyogYmFja3VwIGJvb3Qgc2VjdG9yICovCiB9OwogCiAj
 ZGVmaW5lIEJQQkdBUCAwLCAwLCAwLCAwLCAwLCAwCiAKKyNkZWZpbmUgSU5J
 VChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqKSBcCisgICAgeyAuYnBi
 Qnl0ZXNQZXJTZWMgPSBhLCAuYnBiU2VjUGVyQ2x1c3QgPSBiLCAuYnBiUmVz
 U2VjdG9ycyA9IGMsIC5icGJGQVRzID0gZCwgLmJwYlJvb3REaXJFbnRzID0g
 ZSwgXAorICAgICAgLmJwYlNlY3RvcnMgPSBmLCAuYnBiTWVkaWEgPSBnLCAu
 YnBiRkFUc2VjcyA9IGgsIC5icGJTZWNQZXJUcmFjayA9IGksIC5icGJIZWFk
 cyA9IGosIH0KIHN0YXRpYyBzdHJ1Y3QgewogICAgIGNvbnN0IGNoYXIgKm5h
 bWU7CiAgICAgc3RydWN0IGJwYiBicGI7CiB9IGNvbnN0IHN0ZGZtdFtdID0g
 ewotICAgIHsiMTYwIiwgIHs1MTIsIDEsIDEsIDIsICA2NCwgIDMyMCwgMHhm
 ZSwgMSwgIDgsIDEsIEJQQkdBUH19LAotICAgIHsiMTgwIiwgIHs1MTIsIDEs
 IDEsIDIsICA2NCwgIDM2MCwgMHhmYywgMiwgIDksIDEsIEJQQkdBUH19LAot
 ICAgIHsiMzIwIiwgIHs1MTIsIDIsIDEsIDIsIDExMiwgIDY0MCwgMHhmZiwg
 MSwgIDgsIDIsIEJQQkdBUH19LAotICAgIHsiMzYwIiwgIHs1MTIsIDIsIDEs
 IDIsIDExMiwgIDcyMCwgMHhmZCwgMiwgIDksIDIsIEJQQkdBUH19LAotICAg
 IHsiNjQwIiwgIHs1MTIsIDIsIDEsIDIsIDExMiwgMTI4MCwgMHhmYiwgMiwg
 IDgsIDIsIEJQQkdBUH19LCAgICAKLSAgICB7IjcyMCIsICB7NTEyLCAyLCAx
 LCAyLCAxMTIsIDE0NDAsIDB4ZjksIDMsICA5LCAyLCBCUEJHQVB9fSwKLSAg
 ICB7IjEyMDAiLCB7NTEyLCAxLCAxLCAyLCAyMjQsIDI0MDAsIDB4ZjksIDcs
 IDE1LCAyLCBCUEJHQVB9fSwKLSAgICB7IjEyMzIiLCB7MTAyNCwxLCAxLCAy
 LCAxOTIsIDEyMzIsIDB4ZmUsIDIsICA4LCAyLCBCUEJHQVB9fSwgICAgCi0g
 ICAgeyIxNDQwIiwgezUxMiwgMSwgMSwgMiwgMjI0LCAyODgwLCAweGYwLCA5
 LCAxOCwgMiwgQlBCR0FQfX0sCi0gICAgeyIyODgwIiwgezUxMiwgMiwgMSwg
 MiwgMjQwLCA1NzYwLCAweGYwLCA5LCAzNiwgMiwgQlBCR0FQfX0KKyAgICB7
 IjE2MCIsICBJTklUKDUxMiwgMSwgMSwgMiwgIDY0LCAgMzIwLCAweGZlLCAx
 LCAgOCwgMSl9LAorICAgIHsiMTgwIiwgIElOSVQoNTEyLCAxLCAxLCAyLCAg
 NjQsICAzNjAsIDB4ZmMsIDIsICA5LCAxKX0sCisgICAgeyIzMjAiLCAgSU5J
 VCg1MTIsIDIsIDEsIDIsIDExMiwgIDY0MCwgMHhmZiwgMSwgIDgsIDIpfSwK
 KyAgICB7IjM2MCIsICBJTklUKDUxMiwgMiwgMSwgMiwgMTEyLCAgNzIwLCAw
 eGZkLCAyLCAgOSwgMil9LAorICAgIHsiNjQwIiwgIElOSVQoNTEyLCAyLCAx
 LCAyLCAxMTIsIDEyODAsIDB4ZmIsIDIsICA4LCAyKX0sICAgIAorICAgIHsi
 NzIwIiwgIElOSVQoNTEyLCAyLCAxLCAyLCAxMTIsIDE0NDAsIDB4ZjksIDMs
 ICA5LCAyKX0sCisgICAgeyIxMjAwIiwgSU5JVCg1MTIsIDEsIDEsIDIsIDIy
 NCwgMjQwMCwgMHhmOSwgNywgMTUsIDIpfSwKKyAgICB7IjEyMzIiLCBJTklU
 KDEwMjQsMSwgMSwgMiwgMTkyLCAxMjMyLCAweGZlLCAyLCAgOCwgMil9LCAg
 ICAKKyAgICB7IjE0NDAiLCBJTklUKDUxMiwgMSwgMSwgMiwgMjI0LCAyODgw
 LCAweGYwLCA5LCAxOCwgMil9LAorICAgIHsiMjg4MCIsIElOSVQoNTEyLCAy
 LCAxLCAyLCAyNDAsIDU3NjAsIDB4ZjAsIDksIDM2LCAyKX0KIH07CiAKIHN0
 YXRpYyBjb25zdCB1X2ludDhfdCBib290Y29kZVtdID0gewpAQCAtMzgxLDQ5
 ICszODUsNDkgQEAKICAgICBtZW1zZXQoJmJwYiwgMCwgc2l6ZW9mKGJwYikp
 OwogICAgIGlmIChvcHRfZikgewogCWdldHN0ZGZtdChvcHRfZiwgJmJwYik7
 Ci0JYnBiLmJzZWMgPSBicGIuc2VjOwotCWJwYi5zZWMgPSAwOwotCWJwYi5i
 c3BmID0gYnBiLnNwZjsKLQlicGIuc3BmID0gMDsKKwlicGIuYnBiSHVnZVNl
 Y3RvcnMgPSBicGIuYnBiU2VjdG9yczsKKwlicGIuYnBiU2VjdG9ycyA9IDA7
 CisJYnBiLmJwYkJpZ0ZBVHNlY3MgPSBicGIuYnBiRkFUc2VjczsKKwlicGIu
 YnBiRkFUc2VjcyA9IDA7CiAgICAgfQogICAgIGlmIChvcHRfaCkKLQlicGIu
 aGRzID0gb3B0X2g7CisJYnBiLmJwYkhlYWRzID0gb3B0X2g7CiAgICAgaWYg
 KG9wdF91KQotCWJwYi5zcHQgPSBvcHRfdTsKKwlicGIuYnBiU2VjUGVyVHJh
 Y2sgPSBvcHRfdTsKICAgICBpZiAob3B0X1MpCi0JYnBiLmJwcyA9IG9wdF9T
 OworCWJwYi5icGJCeXRlc1BlclNlYyA9IG9wdF9TOwogICAgIGlmIChvcHRf
 cykKLQlicGIuYnNlYyA9IG9wdF9zOworCWJwYi5icGJIdWdlU2VjdG9ycyA9
 IG9wdF9zOwogICAgIGlmIChvZmxhZykKLQlicGIuaGlkID0gb3B0X287CisJ
 YnBiLmJwYkhpZGRlblNlY3MgPSBvcHRfbzsKICAgICBpZiAoIShvcHRfZiB8
 fCAob3B0X2ggJiYgb3B0X3UgJiYgb3B0X1MgJiYgb3B0X3MgJiYgb2ZsYWcp
 KSkgewogCW9mZl90IGRlbHRhOwogCWdldGRpc2tpbmZvKGZkLCBmbmFtZSwg
 ZHR5cGUsIG9mbGFnLCAmYnBiKTsKLQlicGIuYnNlYyAtPSAob3B0X29mcyAv
 IGJwYi5icHMpOwotCWRlbHRhID0gYnBiLmJzZWMgJSBicGIuc3B0OworCWJw
 Yi5icGJIdWdlU2VjdG9ycyAtPSAob3B0X29mcyAvIGJwYi5icGJCeXRlc1Bl
 clNlYyk7CisJZGVsdGEgPSBicGIuYnBiSHVnZVNlY3RvcnMgJSBicGIuYnBi
 U2VjUGVyVHJhY2s7CiAJaWYgKGRlbHRhICE9IDApIHsKIAkgICAgd2Fybngo
 InRyaW0gJWQgc2VjdG9ycyB0byBhZGp1c3QgdG8gYSBtdWx0aXBsZSBvZiAl
 ZCIsCi0JCShpbnQpZGVsdGEsIGJwYi5zcHQpOwotCSAgICBicGIuYnNlYyAt
 PSBkZWx0YTsKKwkJKGludClkZWx0YSwgYnBiLmJwYlNlY1BlclRyYWNrKTsK
 KwkgICAgYnBiLmJwYkh1Z2VTZWN0b3JzIC09IGRlbHRhOwogCX0KLQlpZiAo
 YnBiLnNwYyA9PSAwKSB7CS8qIHNldCBkZWZhdWx0cyAqLwotCSAgICBpZiAo
 YnBiLmJzZWMgPD0gNjAwMCkJLyogYWJvdXQgM01CIC0+IDUxMiBieXRlcyAq
 LwotCQlicGIuc3BjID0gMTsKLQkgICAgZWxzZSBpZiAoYnBiLmJzZWMgPD0g
 KDE8PDE3KSkgLyogNjRNIC0+IDRrICovCi0JCWJwYi5zcGMgPSA4OwotCSAg
 ICBlbHNlIGlmIChicGIuYnNlYyA8PSAoMTw8MTkpKSAvKiAyNTZNIC0+IDhr
 ICovCi0JCWJwYi5zcGMgPSAxNjsKLQkgICAgZWxzZSBpZiAoYnBiLmJzZWMg
 PD0gKDE8PDIxKSkgLyogMUcgLT4gMTZrICovCi0JCWJwYi5zcGMgPSAzMjsK
 KwlpZiAoYnBiLmJwYlNlY1BlckNsdXN0ID09IDApIHsJLyogc2V0IGRlZmF1
 bHRzICovCisJICAgIGlmIChicGIuYnBiSHVnZVNlY3RvcnMgPD0gNjAwMCkJ
 LyogYWJvdXQgM01CIC0+IDUxMiBieXRlcyAqLworCQlicGIuYnBiU2VjUGVy
 Q2x1c3QgPSAxOworCSAgICBlbHNlIGlmIChicGIuYnBiSHVnZVNlY3RvcnMg
 PD0gKDE8PDE3KSkgLyogNjRNIC0+IDRrICovCisJCWJwYi5icGJTZWNQZXJD
 bHVzdCA9IDg7CisJICAgIGVsc2UgaWYgKGJwYi5icGJIdWdlU2VjdG9ycyA8
 PSAoMTw8MTkpKSAvKiAyNTZNIC0+IDhrICovCisJCWJwYi5icGJTZWNQZXJD
 bHVzdCA9IDE2OworCSAgICBlbHNlIGlmIChicGIuYnBiSHVnZVNlY3RvcnMg
 PD0gKDE8PDIxKSkgLyogMUcgLT4gMTZrICovCisJCWJwYi5icGJTZWNQZXJD
 bHVzdCA9IDMyOwogCSAgICBlbHNlCi0JCWJwYi5zcGMgPSA2NDsJCS8qIG90
 aGVyd2lzZSAzMmsgKi8KKwkJYnBiLmJwYlNlY1BlckNsdXN0ID0gNjQ7CQkv
 KiBvdGhlcndpc2UgMzJrICovCiAJfQogICAgIH0KLSAgICBpZiAoIXBvd2Vy
 b2YyKGJwYi5icHMpKQotCWVycngoMSwgImJ5dGVzL3NlY3RvciAoJXUpIGlz
 IG5vdCBhIHBvd2VyIG9mIDIiLCBicGIuYnBzKTsKLSAgICBpZiAoYnBiLmJw
 cyA8IE1JTkJQUykKKyAgICBpZiAoIXBvd2Vyb2YyKGJwYi5icGJCeXRlc1Bl
 clNlYykpCisJZXJyeCgxLCAiYnl0ZXMvc2VjdG9yICgldSkgaXMgbm90IGEg
 cG93ZXIgb2YgMiIsIGJwYi5icGJCeXRlc1BlclNlYyk7CisgICAgaWYgKGJw
 Yi5icGJCeXRlc1BlclNlYyA8IE1JTkJQUykKIAllcnJ4KDEsICJieXRlcy9z
 ZWN0b3IgKCV1KSBpcyB0b28gc21hbGw7IG1pbmltdW0gaXMgJXUiLAotCSAg
 ICAgYnBiLmJwcywgTUlOQlBTKTsKKwkgICAgIGJwYi5icGJCeXRlc1BlclNl
 YywgTUlOQlBTKTsKICAgICBpZiAoIShmYXQgPSBvcHRfRikpIHsKIAlpZiAo
 b3B0X2YpCiAJICAgIGZhdCA9IDEyOwpAQCAtNDM1LDQ0ICs0MzksNDQgQEAK
 IAkgICAgIGZhdCA9PSAzMiA/ICdlJyA6IG9wdF9pID8gJ2knIDogJ2snLAog
 CSAgICAgZmF0ID09IDMyID8gIjMyIiA6ICIxMi8xNiIpOwogICAgIGlmIChv
 cHRfZiAmJiBmYXQgPT0gMzIpCi0JYnBiLnJkZSA9IDA7CisJYnBiLmJwYlJv
 b3REaXJFbnRzID0gMDsKICAgICBpZiAob3B0X2IpIHsKIAlpZiAoIXBvd2Vy
 b2YyKG9wdF9iKSkKIAkgICAgZXJyeCgxLCAiYmxvY2sgc2l6ZSAoJXUpIGlz
 IG5vdCBhIHBvd2VyIG9mIDIiLCBvcHRfYik7Ci0JaWYgKG9wdF9iIDwgYnBi
 LmJwcykKKwlpZiAob3B0X2IgPCBicGIuYnBiQnl0ZXNQZXJTZWMpCiAJICAg
 IGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gc21hbGw7IG1pbmlt
 dW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMpOwotCWlmIChvcHRfYiA+
 IGJwYi5icHMgKiBNQVhTUEMpCisJCSBvcHRfYiwgYnBiLmJwYkJ5dGVzUGVy
 U2VjKTsKKwlpZiAob3B0X2IgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBNQVhT
 UEMpCiAJICAgIGVycngoMSwgImJsb2NrIHNpemUgKCV1KSBpcyB0b28gbGFy
 Z2U7IG1heGltdW0gaXMgJXUiLAotCQkgb3B0X2IsIGJwYi5icHMgKiBNQVhT
 UEMpOwotCWJwYi5zcGMgPSBvcHRfYiAvIGJwYi5icHM7CisJCSBvcHRfYiwg
 YnBiLmJwYkJ5dGVzUGVyU2VjICogTUFYU1BDKTsKKwlicGIuYnBiU2VjUGVy
 Q2x1c3QgPSBvcHRfYiAvIGJwYi5icGJCeXRlc1BlclNlYzsKICAgICB9CiAg
 ICAgaWYgKG9wdF9jKSB7CiAJaWYgKCFwb3dlcm9mMihvcHRfYykpCiAJICAg
 IGVycngoMSwgInNlY3RvcnMvY2x1c3RlciAoJXUpIGlzIG5vdCBhIHBvd2Vy
 IG9mIDIiLCBvcHRfYyk7Ci0JYnBiLnNwYyA9IG9wdF9jOworCWJwYi5icGJT
 ZWNQZXJDbHVzdCA9IG9wdF9jOwogICAgIH0KICAgICBpZiAob3B0X3IpCi0J
 YnBiLnJlcyA9IG9wdF9yOworCWJwYi5icGJSZXNTZWN0b3JzID0gb3B0X3I7
 CiAgICAgaWYgKG9wdF9uKSB7CiAJaWYgKG9wdF9uID4gTUFYTkZUKQogCSAg
 ICBlcnJ4KDEsICJudW1iZXIgb2YgRkFUcyAoJXUpIGlzIHRvbyBsYXJnZTsg
 bWF4aW11bSBpcyAldSIsCiAJCSBvcHRfbiwgTUFYTkZUKTsKLQlicGIubmZ0
 ID0gb3B0X247CisJYnBiLmJwYkZBVHMgPSBvcHRfbjsKICAgICB9CiAgICAg
 aWYgKG9wdF9lKQotCWJwYi5yZGUgPSBvcHRfZTsKKwlicGIuYnBiUm9vdERp
 ckVudHMgPSBvcHRfZTsKICAgICBpZiAobWZsYWcpIHsKIAlpZiAob3B0X20g
 PCAweGYwKQogCSAgICBlcnJ4KDEsICJpbGxlZ2FsIG1lZGlhIGRlc2NyaXB0
 b3IgKCUjeCkiLCBvcHRfbSk7Ci0JYnBiLm1pZCA9IG9wdF9tOworCWJwYi5i
 cGJNZWRpYSA9IG9wdF9tOwogICAgIH0KICAgICBpZiAob3B0X2EpCi0JYnBi
 LmJzcGYgPSBvcHRfYTsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IG9wdF9hOwog
 ICAgIGlmIChvcHRfaSkKLQlicGIuaW5mcyA9IG9wdF9pOworCWJwYi5icGJG
 U0luZm8gPSBvcHRfaTsKICAgICBpZiAob3B0X2spCi0JYnBiLmJrYnMgPSBv
 cHRfazsKKwlicGIuYnBiQmFja3VwID0gb3B0X2s7CiAgICAgYnNzID0gMTsK
 ICAgICBibmFtZSA9IE5VTEw7CiAgICAgZmQxID0gLTE7CkBAIC00ODUsODcg
 KzQ4OSw4NyBAQAogCX0KIAlpZiAoKGZkMSA9IG9wZW4oYm5hbWUsIE9fUkRP
 TkxZKSkgPT0gLTEgfHwgZnN0YXQoZmQxLCAmc2IpKQogCSAgICBlcnIoMSwg
 IiVzIiwgYm5hbWUpOwotCWlmICghU19JU1JFRyhzYi5zdF9tb2RlKSB8fCBz
 Yi5zdF9zaXplICUgYnBiLmJwcyB8fAotCSAgICBzYi5zdF9zaXplIDwgYnBi
 LmJwcyB8fCBzYi5zdF9zaXplID4gYnBiLmJwcyAqIE1BWFUxNikKKwlpZiAo
 IVNfSVNSRUcoc2Iuc3RfbW9kZSkgfHwgc2Iuc3Rfc2l6ZSAlIGJwYi5icGJC
 eXRlc1BlclNlYyB8fAorCSAgICBzYi5zdF9zaXplIDwgYnBiLmJwYkJ5dGVz
 UGVyU2VjIHx8IHNiLnN0X3NpemUgPiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBN
 QVhVMTYpCiAJICAgIGVycngoMSwgIiVzOiBpbmFwcHJvcHJpYXRlIGZpbGUg
 dHlwZSBvciBmb3JtYXQiLCBibmFtZSk7Ci0JYnNzID0gc2Iuc3Rfc2l6ZSAv
 IGJwYi5icHM7CisJYnNzID0gc2Iuc3Rfc2l6ZSAvIGJwYi5icGJCeXRlc1Bl
 clNlYzsKICAgICB9Ci0gICAgaWYgKCFicGIubmZ0KQotCWJwYi5uZnQgPSAy
 OworICAgIGlmICghYnBiLmJwYkZBVHMpCisJYnBiLmJwYkZBVHMgPSAyOwog
 ICAgIGlmICghZmF0KSB7Ci0JaWYgKGJwYi5ic2VjIDwgKGJwYi5yZXMgPyBi
 cGIucmVzIDogYnNzKSArCi0JICAgIGhvd21hbnkoKFJFU0ZURSArIChicGIu
 c3BjID8gTUlOQ0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCi0JCSAgICAoKGJw
 Yi5zcGMgPyAxNiA6IDEyKSAvIEJQTiksIGJwYi5icHMgKiBOUEIpICoKLQkg
 ICAgYnBiLm5mdCArCi0JICAgIGhvd21hbnkoYnBiLnJkZSA/IGJwYi5yZGUg
 OiBERUZSREUsCi0JCSAgICBicGIuYnBzIC8gc2l6ZW9mKHN0cnVjdCBkZSkp
 ICsKLQkgICAgKGJwYi5zcGMgPyBNSU5DTFMxNiA6IE1BWENMUzEyICsgMSkg
 KgotCSAgICAoYnBiLnNwYyA/IGJwYi5zcGMgOiBob3dtYW55KERFRkJMSywg
 YnBiLmJwcykpKQorCWlmIChicGIuYnBiSHVnZVNlY3RvcnMgPCAoYnBiLmJw
 YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCSAg
 ICBob3dtYW55KChSRVNGVEUgKyAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlO
 Q0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCisJCSAgICAoKGJwYi5icGJTZWNQ
 ZXJDbHVzdCA/IDE2IDogMTIpIC8gQlBOKSwgYnBiLmJwYkJ5dGVzUGVyU2Vj
 ICogTlBCKSAqCisJICAgIGJwYi5icGJGQVRzICsKKwkgICAgaG93bWFueShi
 cGIuYnBiUm9vdERpckVudHMgPyBicGIuYnBiUm9vdERpckVudHMgOiBERUZS
 REUsCisJCSAgICBicGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0
 IGRlKSkgKworCSAgICAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlOQ0xTMTYg
 OiBNQVhDTFMxMiArIDEpICoKKwkgICAgKGJwYi5icGJTZWNQZXJDbHVzdCA/
 IGJwYi5icGJTZWNQZXJDbHVzdCA6IGhvd21hbnkoREVGQkxLLCBicGIuYnBi
 Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTI7Ci0JZWxzZSBpZiAoYnBi
 LnJkZSB8fCBicGIuYnNlYyA8Ci0JCSAoYnBiLnJlcyA/IGJwYi5yZXMgOiBi
 c3MpICsKLQkJIGhvd21hbnkoKFJFU0ZURSArIE1BWENMUzE2KSAqIDIsIGJw
 Yi5icHMpICogYnBiLm5mdCArCi0JCSBob3dtYW55KERFRlJERSwgYnBiLmJw
 cyAvIHNpemVvZihzdHJ1Y3QgZGUpKSArCisJZWxzZSBpZiAoYnBiLmJwYlJv
 b3REaXJFbnRzIHx8IGJwYi5icGJIdWdlU2VjdG9ycyA8CisJCSAoYnBiLmJw
 YlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2VjdG9ycyA6IGJzcykgKworCQkg
 aG93bWFueSgoUkVTRlRFICsgTUFYQ0xTMTYpICogMiwgYnBiLmJwYkJ5dGVz
 UGVyU2VjKSAqIGJwYi5icGJGQVRzICsKKwkJIGhvd21hbnkoREVGUkRFLCBi
 cGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0IGRlKSkgKwogCQkg
 KE1BWENMUzE2ICsgMSkgKgotCQkgKGJwYi5zcGMgPyBicGIuc3BjIDogaG93
 bWFueSg4MTkyLCBicGIuYnBzKSkpCisJCSAoYnBiLmJwYlNlY1BlckNsdXN0
 ID8gYnBiLmJwYlNlY1BlckNsdXN0IDogaG93bWFueSg4MTkyLCBicGIuYnBi
 Qnl0ZXNQZXJTZWMpKSkKIAkgICAgZmF0ID0gMTY7CiAJZWxzZQogCSAgICBm
 YXQgPSAzMjsKICAgICB9CiAgICAgeCA9IGJzczsKICAgICBpZiAoZmF0ID09
 IDMyKSB7Ci0JaWYgKCFicGIuaW5mcykgewotCSAgICBpZiAoeCA9PSBNQVhV
 MTYgfHwgeCA9PSBicGIuYmticykKKwlpZiAoIWJwYi5icGJGU0luZm8pIHsK
 KwkgICAgaWYgKHggPT0gTUFYVTE2IHx8IHggPT0gYnBiLmJwYkJhY2t1cCkK
 IAkJZXJyeCgxLCAibm8gcm9vbSBmb3IgaW5mbyBzZWN0b3IiKTsKLQkgICAg
 YnBiLmluZnMgPSB4OworCSAgICBicGIuYnBiRlNJbmZvID0geDsKIAl9Ci0J
 aWYgKGJwYi5pbmZzICE9IE1BWFUxNiAmJiB4IDw9IGJwYi5pbmZzKQotCSAg
 ICB4ID0gYnBiLmluZnMgKyAxOwotCWlmICghYnBiLmJrYnMpIHsKKwlpZiAo
 YnBiLmJwYkZTSW5mbyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYnBiRlNJbmZv
 KQorCSAgICB4ID0gYnBiLmJwYkZTSW5mbyArIDE7CisJaWYgKCFicGIuYnBi
 QmFja3VwKSB7CiAJICAgIGlmICh4ID09IE1BWFUxNikKIAkJZXJyeCgxLCAi
 bm8gcm9vbSBmb3IgYmFja3VwIHNlY3RvciIpOwotCSAgICBicGIuYmticyA9
 IHg7Ci0JfSBlbHNlIGlmIChicGIuYmticyAhPSBNQVhVMTYgJiYgYnBiLmJr
 YnMgPT0gYnBiLmluZnMpCisJICAgIGJwYi5icGJCYWNrdXAgPSB4OworCX0g
 ZWxzZSBpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYgJiYgYnBiLmJwYkJh
 Y2t1cCA9PSBicGIuYnBiRlNJbmZvKQogCSAgICBlcnJ4KDEsICJiYWNrdXAg
 c2VjdG9yIHdvdWxkIG92ZXJ3cml0ZSBpbmZvIHNlY3RvciIpOwotCWlmIChi
 cGIuYmticyAhPSBNQVhVMTYgJiYgeCA8PSBicGIuYmticykKLQkgICAgeCA9
 IGJwYi5ia2JzICsgMTsKKwlpZiAoYnBiLmJwYkJhY2t1cCAhPSBNQVhVMTYg
 JiYgeCA8PSBicGIuYnBiQmFja3VwKQorCSAgICB4ID0gYnBiLmJwYkJhY2t1
 cCArIDE7CiAgICAgfQotICAgIGlmICghYnBiLnJlcykKLQlicGIucmVzID0g
 ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icHMsIDQpKSA6
 IHg7Ci0gICAgZWxzZSBpZiAoYnBiLnJlcyA8IHgpCi0JZXJyeCgxLCAidG9v
 IGZldyByZXNlcnZlZCBzZWN0b3JzIik7Ci0gICAgaWYgKGZhdCAhPSAzMiAm
 JiAhYnBiLnJkZSkKLQlicGIucmRlID0gREVGUkRFOwotICAgIHJkcyA9IGhv
 d21hbnkoYnBiLnJkZSwgYnBiLmJwcyAvIHNpemVvZihzdHJ1Y3QgZGUpKTsK
 LSAgICBpZiAoIWJwYi5zcGMpCi0JZm9yIChicGIuc3BjID0gaG93bWFueShm
 YXQgPT0gMTYgPyBERUZCTEsxNiA6IERFRkJMSywgYnBiLmJwcyk7Ci0JICAg
 ICBicGIuc3BjIDwgTUFYU1BDICYmCi0JICAgICBicGIucmVzICsKKyAgICBp
 ZiAoIWJwYi5icGJSZXNTZWN0b3JzKQorCWJwYi5icGJSZXNTZWN0b3JzID0g
 ZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4NCAvIGJwYi5icGJCeXRlc1Bl
 clNlYywgNCkpIDogeDsKKyAgICBlbHNlIGlmIChicGIuYnBiUmVzU2VjdG9y
 cyA8IHgpCisJZXJyeCgxLCAidG9vIGZldyByZXNlcnZlZCBzZWN0b3JzIChu
 ZWVkICVkIGhhdmUgJWQpIiwgeCwgYnBiLmJwYlJlc1NlY3RvcnMpOworICAg
 IGlmIChmYXQgIT0gMzIgJiYgIWJwYi5icGJSb290RGlyRW50cykKKwlicGIu
 YnBiUm9vdERpckVudHMgPSBERUZSREU7CisgICAgcmRzID0gaG93bWFueShi
 cGIuYnBiUm9vdERpckVudHMsIGJwYi5icGJCeXRlc1BlclNlYyAvIHNpemVv
 ZihzdHJ1Y3QgZGUpKTsKKyAgICBpZiAoIWJwYi5icGJTZWNQZXJDbHVzdCkK
 Kwlmb3IgKGJwYi5icGJTZWNQZXJDbHVzdCA9IGhvd21hbnkoZmF0ID09IDE2
 ID8gREVGQkxLMTYgOiBERUZCTEssIGJwYi5icGJCeXRlc1BlclNlYyk7CisJ
 ICAgICBicGIuYnBiU2VjUGVyQ2x1c3QgPCBNQVhTUEMgJiYKKwkgICAgIGJw
 Yi5icGJSZXNTZWN0b3JzICsKIAkgICAgIGhvd21hbnkoKFJFU0ZURSArIG1h
 eGNscyhmYXQpKSAqIChmYXQgLyBCUE4pLAotCQkgICAgIGJwYi5icHMgKiBO
 UEIpICogYnBiLm5mdCArCisJCSAgICAgYnBiLmJwYkJ5dGVzUGVyU2VjICog
 TlBCKSAqIGJwYi5icGJGQVRzICsKIAkgICAgIHJkcyArCi0JICAgICAodV9p
 bnQ2NF90KShtYXhjbHMoZmF0KSArIDEpICogYnBiLnNwYyA8PSBicGIuYnNl
 YzsKLQkgICAgIGJwYi5zcGMgPDw9IDEpOwotICAgIGlmIChmYXQgIT0gMzIg
 JiYgYnBiLmJzcGYgPiBNQVhVMTYpCisJICAgICAodV9pbnQ2NF90KShtYXhj
 bHMoZmF0KSArIDEpICogYnBiLmJwYlNlY1BlckNsdXN0IDw9IGJwYi5icGJI
 dWdlU2VjdG9yczsKKwkgICAgIGJwYi5icGJTZWNQZXJDbHVzdCA8PD0gMSk7
 CisgICAgaWYgKGZhdCAhPSAzMiAmJiBicGIuYnBiQmlnRkFUc2VjcyA+IE1B
 WFUxNikKIAllcnJ4KDEsICJ0b28gbWFueSBzZWN0b3JzL0ZBVCBmb3IgRkFU
 MTIvMTYiKTsKLSAgICB4MSA9IGJwYi5yZXMgKyByZHM7Ci0gICAgeCA9IGJw
 Yi5ic3BmID8gYnBiLmJzcGYgOiAxOwotICAgIGlmICh4MSArICh1X2ludDY0
 X3QpeCAqIGJwYi5uZnQgPiBicGIuYnNlYykKKyAgICB4MSA9IGJwYi5icGJS
 ZXNTZWN0b3JzICsgcmRzOworICAgIHggPSBicGIuYnBiQmlnRkFUc2VjcyA/
 IGJwYi5icGJCaWdGQVRzZWNzIDogMTsKKyAgICBpZiAoeDEgKyAodV9pbnQ2
 NF90KXggKiBicGIuYnBiRkFUcyA+IGJwYi5icGJIdWdlU2VjdG9ycykKIAll
 cnJ4KDEsICJtZXRhIGRhdGEgZXhjZWVkcyBmaWxlIHN5c3RlbSBzaXplIik7
 Ci0gICAgeDEgKz0geCAqIGJwYi5uZnQ7Ci0gICAgeCA9ICh1X2ludDY0X3Qp
 KGJwYi5ic2VjIC0geDEpICogYnBiLmJwcyAqIE5QQiAvCi0JKGJwYi5zcGMg
 KiBicGIuYnBzICogTlBCICsgZmF0IC8gQlBOICogYnBiLm5mdCk7CisgICAg
 eDEgKz0geCAqIGJwYi5icGJGQVRzOworICAgIHggPSAodV9pbnQ2NF90KShi
 cGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgKiBicGIuYnBiQnl0ZXNQZXJTZWMg
 KiBOUEIgLworCShicGIuYnBiU2VjUGVyQ2x1c3QgKiBicGIuYnBiQnl0ZXNQ
 ZXJTZWMgKiBOUEIgKyBmYXQgLyBCUE4gKiBicGIuYnBiRkFUcyk7CiAgICAg
 eDIgPSBob3dtYW55KChSRVNGVEUgKyBNSU4oeCwgbWF4Y2xzKGZhdCkpKSAq
 IChmYXQgLyBCUE4pLAotCQkgYnBiLmJwcyAqIE5QQik7Ci0gICAgaWYgKCFi
 cGIuYnNwZikgewotCWJwYi5ic3BmID0geDI7Ci0JeDEgKz0gKGJwYi5ic3Bm
 IC0gMSkgKiBicGIubmZ0OworCQkgYnBiLmJwYkJ5dGVzUGVyU2VjICogTlBC
 KTsKKyAgICBpZiAoIWJwYi5icGJCaWdGQVRzZWNzKSB7CisJYnBiLmJwYkJp
 Z0ZBVHNlY3MgPSB4MjsKKwl4MSArPSAoYnBiLmJwYkJpZ0ZBVHNlY3MgLSAx
 KSAqIGJwYi5icGJGQVRzOwogICAgIH0KLSAgICBjbHMgPSAoYnBiLmJzZWMg
 LSB4MSkgLyBicGIuc3BjOwotICAgIHggPSAodV9pbnQ2NF90KWJwYi5ic3Bm
 ICogYnBiLmJwcyAqIE5QQiAvIChmYXQgLyBCUE4pIC0gUkVTRlRFOworICAg
 IGNscyA9IChicGIuYnBiSHVnZVNlY3RvcnMgLSB4MSkgLyBicGIuYnBiU2Vj
 UGVyQ2x1c3Q7CisgICAgeCA9ICh1X2ludDY0X3QpYnBiLmJwYkJpZ0ZBVHNl
 Y3MgKiBicGIuYnBiQnl0ZXNQZXJTZWMgKiBOUEIgLyAoZmF0IC8gQlBOKSAt
 IFJFU0ZURTsKICAgICBpZiAoY2xzID4geCkKIAljbHMgPSB4OwotICAgIGlm
 IChicGIuYnNwZiA8IHgyKQorICAgIGlmIChicGIuYnBiQmlnRkFUc2VjcyA8
 IHgyKQogCXdhcm54KCJ3YXJuaW5nOiBzZWN0b3JzL0ZBVCBsaW1pdHMgZmls
 ZSBzeXN0ZW0gdG8gJXUgY2x1c3RlcnMiLAogCSAgICAgIGNscyk7CiAgICAg
 aWYgKGNscyA8IG1pbmNscyhmYXQpKQpAQCAtNTczLDc5ICs1NzcsNzkgQEAK
 IAkgICAgbWluY2xzKGZhdCkpOwogICAgIGlmIChjbHMgPiBtYXhjbHMoZmF0
 KSkgewogCWNscyA9IG1heGNscyhmYXQpOwotCWJwYi5ic2VjID0geDEgKyAo
 Y2xzICsgMSkgKiBicGIuc3BjIC0gMTsKKwlicGIuYnBiSHVnZVNlY3RvcnMg
 PSB4MSArIChjbHMgKyAxKSAqIGJwYi5icGJTZWNQZXJDbHVzdCAtIDE7CiAJ
 d2FybngoIndhcm5pbmc6IEZBVCB0eXBlIGxpbWl0cyBmaWxlIHN5c3RlbSB0
 byAldSBzZWN0b3JzIiwKLQkgICAgICBicGIuYnNlYyk7CisJICAgICAgYnBi
 LmJwYkh1Z2VTZWN0b3JzKTsKICAgICB9CiAgICAgcHJpbnRmKCIlczogJXUg
 c2VjdG9yJXMgaW4gJXUgRkFUJXUgY2x1c3RlciVzICIKLQkgICAiKCV1IGJ5
 dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xzICogYnBiLnNwYywKLQkgICBj
 bHMgKiBicGIuc3BjID09IDEgPyAiIiA6ICJzIiwgY2xzLCBmYXQsCi0JICAg
 Y2xzID09IDEgPyAiIiA6ICJzIiwgYnBiLmJwcyAqIGJwYi5zcGMpOwotICAg
 IGlmICghYnBiLm1pZCkKLQlicGIubWlkID0gIWJwYi5oaWQgPyAweGYwIDog
 MHhmODsKKwkgICAiKCV1IGJ5dGVzL2NsdXN0ZXIpXG4iLCBmbmFtZSwgY2xz
 ICogYnBiLmJwYlNlY1BlckNsdXN0LAorCSAgIGNscyAqIGJwYi5icGJTZWNQ
 ZXJDbHVzdCA9PSAxID8gIiIgOiAicyIsIGNscywgZmF0LAorCSAgIGNscyA9
 PSAxID8gIiIgOiAicyIsIGJwYi5icGJCeXRlc1BlclNlYyAqIGJwYi5icGJT
 ZWNQZXJDbHVzdCk7CisgICAgaWYgKCFicGIuYnBiTWVkaWEpCisJYnBiLmJw
 Yk1lZGlhID0gIWJwYi5icGJIaWRkZW5TZWNzID8gMHhmMCA6IDB4Zjg7CiAg
 ICAgaWYgKGZhdCA9PSAzMikKLQlicGIucmRjbCA9IFJFU0ZURTsKLSAgICBp
 ZiAoYnBiLmhpZCArIGJwYi5ic2VjIDw9IE1BWFUxNikgewotCWJwYi5zZWMg
 PSBicGIuYnNlYzsKLQlicGIuYnNlYyA9IDA7CisJYnBiLmJwYlJvb3RDbHVz
 dCA9IFJFU0ZURTsKKyAgICBpZiAoYnBiLmJwYkhpZGRlblNlY3MgKyBicGIu
 YnBiSHVnZVNlY3RvcnMgPD0gTUFYVTE2KSB7CisJYnBiLmJwYlNlY3RvcnMg
 PSBicGIuYnBiSHVnZVNlY3RvcnM7CisJYnBiLmJwYkh1Z2VTZWN0b3JzID0g
 MDsKICAgICB9CiAgICAgaWYgKGZhdCAhPSAzMikgewotCWJwYi5zcGYgPSBi
 cGIuYnNwZjsKLQlicGIuYnNwZiA9IDA7CisJYnBiLmJwYkZBVHNlY3MgPSBi
 cGIuYnBiQmlnRkFUc2VjczsKKwlicGIuYnBiQmlnRkFUc2VjcyA9IDA7CiAg
 ICAgfQogICAgIHByaW50X2JwYigmYnBiKTsKICAgICBpZiAoIW9wdF9OKSB7
 CiAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CiAJbm93ID0gdHYudHZfc2Vj
 OwogCXRtID0gbG9jYWx0aW1lKCZub3cpOwotCWlmICghKGltZyA9IG1hbGxv
 YyhicGIuYnBzKSkpCisJaWYgKCEoaW1nID0gbWFsbG9jKGJwYi5icGJCeXRl
 c1BlclNlYykpKQogCSAgICBlcnIoMSwgTlVMTCk7Ci0JZGlyID0gYnBiLnJl
 cyArIChicGIuc3BmID8gYnBiLnNwZiA6IGJwYi5ic3BmKSAqIGJwYi5uZnQ7
 Ci0JZm9yIChsc24gPSAwOyBsc24gPCBkaXIgKyAoZmF0ID09IDMyID8gYnBi
 LnNwYyA6IHJkcyk7IGxzbisrKSB7CisJZGlyID0gYnBiLmJwYlJlc1NlY3Rv
 cnMgKyAoYnBiLmJwYkZBVHNlY3MgPyBicGIuYnBiRkFUc2VjcyA6IGJwYi5i
 cGJCaWdGQVRzZWNzKSAqIGJwYi5icGJGQVRzOworCWZvciAobHNuID0gMDsg
 bHNuIDwgZGlyICsgKGZhdCA9PSAzMiA/IGJwYi5icGJTZWNQZXJDbHVzdCA6
 IHJkcyk7IGxzbisrKSB7CiAJICAgIHggPSBsc247CiAJICAgIGlmIChvcHRf
 QiAmJgotCQlmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYmCi0J
 CWJzcyA8PSBicGIuYmticyAmJiB4ID49IGJwYi5ia2JzKSB7Ci0JCXggLT0g
 YnBiLmJrYnM7CisJCWZhdCA9PSAzMiAmJiBicGIuYnBiQmFja3VwICE9IE1B
 WFUxNiAmJgorCQlic3MgPD0gYnBiLmJwYkJhY2t1cCAmJiB4ID49IGJwYi5i
 cGJCYWNrdXApIHsKKwkJeCAtPSBicGIuYnBiQmFja3VwOwogCQlpZiAoIXgg
 JiYgbHNlZWsoZmQxLCBvcHRfb2ZzLCBTRUVLX1NFVCkpCiAJCSAgICBlcnIo
 MSwgIiVzIiwgYm5hbWUpOwogCSAgICB9CiAJICAgIGlmIChvcHRfQiAmJiB4
 IDwgYnNzKSB7Ci0JCWlmICgobiA9IHJlYWQoZmQxLCBpbWcsIGJwYi5icHMp
 KSA9PSAtMSkKKwkJaWYgKChuID0gcmVhZChmZDEsIGltZywgYnBiLmJwYkJ5
 dGVzUGVyU2VjKSkgPT0gLTEpCiAJCSAgICBlcnIoMSwgIiVzIiwgYm5hbWUp
 OwotCQlpZiAoKHVuc2lnbmVkKW4gIT0gYnBiLmJwcykKKwkJaWYgKCh1bnNp
 Z25lZCluICE9IGJwYi5icGJCeXRlc1BlclNlYykKIAkJICAgIGVycngoMSwg
 IiVzOiBjYW4ndCByZWFkIHNlY3RvciAldSIsIGJuYW1lLCB4KTsKIAkgICAg
 fSBlbHNlCi0JCW1lbXNldChpbWcsIDAsIGJwYi5icHMpOworCQltZW1zZXQo
 aW1nLCAwLCBicGIuYnBiQnl0ZXNQZXJTZWMpOwogCSAgICBpZiAoIWxzbiB8
 fAotCSAgICAgIChmYXQgPT0gMzIgJiYgYnBiLmJrYnMgIT0gTUFYVTE2ICYm
 IGxzbiA9PSBicGIuYmticykpIHsKKwkgICAgICAoZmF0ID09IDMyICYmIGJw
 Yi5icGJCYWNrdXAgIT0gTUFYVTE2ICYmIGxzbiA9PSBicGIuYnBiQmFja3Vw
 KSkgewogCQl4MSA9IHNpemVvZihzdHJ1Y3QgYnMpOwogCQlic2JwYiA9IChz
 dHJ1Y3QgYnNicGIgKikoaW1nICsgeDEpOwotCQltazIoYnNicGItPmJwcywg
 YnBiLmJwcyk7Ci0JCW1rMShic2JwYi0+c3BjLCBicGIuc3BjKTsKLQkJbWsy
 KGJzYnBiLT5yZXMsIGJwYi5yZXMpOwotCQltazEoYnNicGItPm5mdCwgYnBi
 Lm5mdCk7Ci0JCW1rMihic2JwYi0+cmRlLCBicGIucmRlKTsKLQkJbWsyKGJz
 YnBiLT5zZWMsIGJwYi5zZWMpOwotCQltazEoYnNicGItPm1pZCwgYnBiLm1p
 ZCk7Ci0JCW1rMihic2JwYi0+c3BmLCBicGIuc3BmKTsKLQkJbWsyKGJzYnBi
 LT5zcHQsIGJwYi5zcHQpOwotCQltazIoYnNicGItPmhkcywgYnBiLmhkcyk7
 Ci0JCW1rNChic2JwYi0+aGlkLCBicGIuaGlkKTsKLQkJbWs0KGJzYnBiLT5i
 c2VjLCBicGIuYnNlYyk7CisJCW1rMihic2JwYi0+YnBiQnl0ZXNQZXJTZWMs
 IGJwYi5icGJCeXRlc1BlclNlYyk7CisJCW1rMShic2JwYi0+YnBiU2VjUGVy
 Q2x1c3QsIGJwYi5icGJTZWNQZXJDbHVzdCk7CisJCW1rMihic2JwYi0+YnBi
 UmVzU2VjdG9ycywgYnBiLmJwYlJlc1NlY3RvcnMpOworCQltazEoYnNicGIt
 PmJwYkZBVHMsIGJwYi5icGJGQVRzKTsKKwkJbWsyKGJzYnBiLT5icGJSb290
 RGlyRW50cywgYnBiLmJwYlJvb3REaXJFbnRzKTsKKwkJbWsyKGJzYnBiLT5i
 cGJTZWN0b3JzLCBicGIuYnBiU2VjdG9ycyk7CisJCW1rMShic2JwYi0+YnBi
 TWVkaWEsIGJwYi5icGJNZWRpYSk7CisJCW1rMihic2JwYi0+YnBiRkFUc2Vj
 cywgYnBiLmJwYkZBVHNlY3MpOworCQltazIoYnNicGItPmJwYlNlY1BlclRy
 YWNrLCBicGIuYnBiU2VjUGVyVHJhY2spOworCQltazIoYnNicGItPmJwYkhl
 YWRzLCBicGIuYnBiSGVhZHMpOworCQltazQoYnNicGItPmJwYkhpZGRlblNl
 Y3MsIGJwYi5icGJIaWRkZW5TZWNzKTsKKwkJbWs0KGJzYnBiLT5icGJIdWdl
 U2VjdG9ycywgYnBiLmJwYkh1Z2VTZWN0b3JzKTsKIAkJeDEgKz0gc2l6ZW9m
 KHN0cnVjdCBic2JwYik7CiAJCWlmIChmYXQgPT0gMzIpIHsKIAkJICAgIGJz
 eGJwYiA9IChzdHJ1Y3QgYnN4YnBiICopKGltZyArIHgxKTsKLQkJICAgIG1r
 NChic3hicGItPmJzcGYsIGJwYi5ic3BmKTsKKwkJICAgIG1rNChic3hicGIt
 PmJzcGYsIGJwYi5icGJCaWdGQVRzZWNzKTsKIAkJICAgIG1rMihic3hicGIt
 PnhmbGcsIDApOwogCQkgICAgbWsyKGJzeGJwYi0+dmVycywgMCk7Ci0JCSAg
 ICBtazQoYnN4YnBiLT5yZGNsLCBicGIucmRjbCk7Ci0JCSAgICBtazIoYnN4
 YnBiLT5pbmZzLCBicGIuaW5mcyk7Ci0JCSAgICBtazIoYnN4YnBiLT5ia2Jz
 LCBicGIuYmticyk7CisJCSAgICBtazQoYnN4YnBiLT5yZGNsLCBicGIuYnBi
 Um9vdENsdXN0KTsKKwkJICAgIG1rMihic3hicGItPmluZnMsIGJwYi5icGJG
 U0luZm8pOworCQkgICAgbWsyKGJzeGJwYi0+YmticywgYnBiLmJwYkJhY2t1
 cCk7CiAJCSAgICB4MSArPSBzaXplb2Yoc3RydWN0IGJzeGJwYik7CiAJCX0K
 IAkJYnN4ID0gKHN0cnVjdCBic3ggKikoaW1nICsgeDEpOwotCQltazEoYnN4
 LT5zaWcsIDB4MjkpOworCQltazEoYnN4LT5leEJvb3RTaWduYXR1cmUsIDB4
 MjkpOwogCQlpZiAoSWZsYWcpCiAJCSAgICB4ID0gb3B0X0k7CiAJCWVsc2UK
 QEAgLTY1Niw1MiArNjYwLDUyIEBACiAJCQkoKHVfaW50KSgxOTAwICsgdG0t
 PnRtX3llYXIpICsKIAkJCSAoKHVfaW50KXRtLT50bV9ob3VyIDw8IDggfAog
 CQkJICAodV9pbnQpdG0tPnRtX21pbikpOwotCQltazQoYnN4LT52b2xpZCwg
 eCk7Ci0JCW1rbGFiZWwoYnN4LT5sYWJlbCwgb3B0X0wgPyBvcHRfTCA6ICJO
 TyBOQU1FIik7Ci0JCXNwcmludGYoYnVmLCAiRkFUJXUiLCBmYXQpOwotCQlz
 ZXRzdHIoYnN4LT50eXBlLCBidWYsIHNpemVvZihic3gtPnR5cGUpKTsKKwkJ
 bWs0KGJzeC0+ZXhWb2x1bWVJRCwgeCk7CisJCW1rbGFiZWwoYnN4LT5leFZv
 bHVtZUxhYmVsLCBvcHRfTCA/IG9wdF9MIDogIk5PX05BTUUiKTsKKwkJc25w
 cmludGYoYnVmLCBzaXplb2YoYnVmKSwgIkZBVCV1IiwgZmF0KTsKKwkJc2V0
 c3RyKGJzeC0+ZXhGaWxlU3lzVHlwZSwgYnVmLCBzaXplb2YoYnN4LT5leEZp
 bGVTeXNUeXBlKSk7CiAJCWlmICghb3B0X0IpIHsKIAkJICAgIHgxICs9IHNp
 emVvZihzdHJ1Y3QgYnN4KTsKIAkJICAgIGJzID0gKHN0cnVjdCBicyAqKWlt
 ZzsKLQkJICAgIG1rMShicy0+am1wWzBdLCAweGViKTsKLQkJICAgIG1rMShi
 cy0+am1wWzFdLCB4MSAtIDIpOwotCQkgICAgbWsxKGJzLT5qbXBbMl0sIDB4
 OTApOwotCQkgICAgc2V0c3RyKGJzLT5vZW0sIG9wdF9PID8gb3B0X08gOiAi
 QlNEICA0LjQiLAotCQkJICAgc2l6ZW9mKGJzLT5vZW0pKTsKKwkJICAgIG1r
 MShicy0+YnNKdW1wWzBdLCAweGViKTsKKwkJICAgIG1rMShicy0+YnNKdW1w
 WzFdLCB4MSAtIDIpOworCQkgICAgbWsxKGJzLT5ic0p1bXBbMl0sIDB4OTAp
 OworCQkgICAgc2V0c3RyKGJzLT5ic09lbU5hbWUsIG9wdF9PID8gb3B0X08g
 OiAiQlNENC40ICAiLAorCQkJICAgc2l6ZW9mKGJzLT5ic09lbU5hbWUpKTsK
 IAkJICAgIG1lbWNweShpbWcgKyB4MSwgYm9vdGNvZGUsIHNpemVvZihib290
 Y29kZSkpOwogCQkgICAgbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01BR0lD
 KTsKIAkJfQotCSAgICB9IGVsc2UgaWYgKGZhdCA9PSAzMiAmJiBicGIuaW5m
 cyAhPSBNQVhVMTYgJiYKLQkJICAgICAgIChsc24gPT0gYnBiLmluZnMgfHwK
 LQkJCShicGIuYmticyAhPSBNQVhVMTYgJiYKLQkJCSBsc24gPT0gYnBiLmJr
 YnMgKyBicGIuaW5mcykpKSB7CisJICAgIH0gZWxzZSBpZiAoZmF0ID09IDMy
 ICYmIGJwYi5icGJGU0luZm8gIT0gTUFYVTE2ICYmCisJCSAgICAgICAobHNu
 ID09IGJwYi5icGJGU0luZm8gfHwKKwkJCShicGIuYnBiQmFja3VwICE9IE1B
 WFUxNiAmJgorCQkJIGxzbiA9PSBicGIuYnBiQmFja3VwICsgYnBiLmJwYkZT
 SW5mbykpKSB7CiAJCW1rNChpbWcsIDB4NDE2MTUyNTIpOwogCQltazQoaW1n
 ICsgTUlOQlBTIC0gMjgsIDB4NjE0MTcyNzIpOwogCQltazQoaW1nICsgTUlO
 QlBTIC0gMjQsIDB4ZmZmZmZmZmYpOwotCQltazQoaW1nICsgTUlOQlBTIC0g
 MjAsIGJwYi5yZGNsKTsKKwkJbWs0KGltZyArIE1JTkJQUyAtIDIwLCBicGIu
 YnBiUm9vdENsdXN0KTsKIAkJbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01B
 R0lDKTsKLQkgICAgfSBlbHNlIGlmIChsc24gPj0gYnBiLnJlcyAmJiBsc24g
 PCBkaXIgJiYKLQkJICAgICAgICEoKGxzbiAtIGJwYi5yZXMpICUKLQkJCSAo
 YnBiLnNwZiA/IGJwYi5zcGYgOiBicGIuYnNwZikpKSB7Ci0JCW1rMShpbWdb
 MF0sIGJwYi5taWQpOworCSAgICB9IGVsc2UgaWYgKGxzbiA+PSBicGIuYnBi
 UmVzU2VjdG9ycyAmJiBsc24gPCBkaXIgJiYKKwkJICAgICAgICEoKGxzbiAt
 IGJwYi5icGJSZXNTZWN0b3JzKSAlCisJCQkgKGJwYi5icGJGQVRzZWNzID8g
 YnBiLmJwYkZBVHNlY3MgOiBicGIuYnBiQmlnRkFUc2VjcykpKSB7CisJCW1r
 MShpbWdbMF0sIGJwYi5icGJNZWRpYSk7CiAJCWZvciAoeCA9IDE7IHggPCBm
 YXQgKiAoZmF0ID09IDMyID8gMyA6IDIpIC8gODsgeCsrKQogCQkgICAgbWsx
 KGltZ1t4XSwgZmF0ID09IDMyICYmIHggJSA0ID09IDMgPyAweDBmIDogMHhm
 Zik7CiAJICAgIH0gZWxzZSBpZiAobHNuID09IGRpciAmJiBvcHRfTCkgewog
 CQlkZSA9IChzdHJ1Y3QgZGUgKilpbWc7Ci0JCW1rbGFiZWwoZGUtPm5hbWV4
 dCwgb3B0X0wpOwotCQltazEoZGUtPmF0dHIsIDA1MCk7CisJCW1rbGFiZWwo
 ZGUtPmRlTmFtZSwgb3B0X0wpOworCQltazEoZGUtPmRlQXR0cmlidXRlcywg
 MDUwKTsKIAkJeCA9ICh1X2ludCl0bS0+dG1faG91ciA8PCAxMSB8CiAJCSAg
 ICAodV9pbnQpdG0tPnRtX21pbiA8PCA1IHwKIAkJICAgICh1X2ludCl0bS0+
 dG1fc2VjID4+IDE7Ci0JCW1rMihkZS0+dGltZSwgeCk7CisJCW1rMihkZS0+
 ZGVDVGltZSwgeCk7CiAJCXggPSAodV9pbnQpKHRtLT50bV95ZWFyIC0gODAp
 IDw8IDkgfAogCQkgICAgKHVfaW50KSh0bS0+dG1fbW9uICsgMSkgPDwgNSB8
 CiAJCSAgICAodV9pbnQpdG0tPnRtX21kYXk7Ci0JCW1rMihkZS0+ZGF0ZSwg
 eCk7CisJCW1rMihkZS0+ZGVDRGF0ZSwgeCk7CiAJICAgIH0KLQkgICAgaWYg
 KChuID0gd3JpdGUoZmQsIGltZywgYnBiLmJwcykpID09IC0xKQorCSAgICBp
 ZiAoKG4gPSB3cml0ZShmZCwgaW1nLCBicGIuYnBiQnl0ZXNQZXJTZWMpKSA9
 PSAtMSkKIAkJZXJyKDEsICIlcyIsIGZuYW1lKTsKLQkgICAgaWYgKCh1bnNp
 Z25lZCluICE9IGJwYi5icHMpCisJICAgIGlmICgodW5zaWduZWQpbiAhPSBi
 cGIuYnBiQnl0ZXNQZXJTZWMpCiAJCWVycngoMSwgIiVzOiBjYW4ndCB3cml0
 ZSBzZWN0b3IgJXUiLCBmbmFtZSwgbHNuKTsKIAl9CiAgICAgfQpAQCAtNzk0
 LDE4ICs3OTgsMTkgQEAKIAogICAgIC8qIE1heWJlIGl0J3MgYSBmaXhlZCBk
 cml2ZSAqLwogICAgIGlmIChscCA9PSBOVUxMKSB7CisJaWYgKGJwYi0+YnBi
 Qnl0ZXNQZXJTZWMpCisJICAgIGRscC5kX3NlY3NpemUgPSBicGItPmJwYkJ5
 dGVzUGVyU2VjOwogCWlmIChpb2N0bChmZCwgRElPQ0dESU5GTywgJmRscCkg
 PT0gLTEpIHsKLQkgICAgaWYgKGJwYi0+YnBzID09IDAgJiYgaW9jdGwoZmQs
 IERJT0NHU0VDVE9SU0laRSwgJmRscC5kX3NlY3NpemUpID09IC0xKQorCSAg
 ICBpZiAoYnBiLT5icGJCeXRlc1BlclNlYyA9PSAwICYmIGlvY3RsKGZkLCBE
 SU9DR1NFQ1RPUlNJWkUsICZkbHAuZF9zZWNzaXplKSA9PSAtMSkKIAkJZXJy
 eCgxLCAiQ2Fubm90IGdldCBzZWN0b3Igc2l6ZSwgJXMiLCBzdHJlcnJvcihl
 cnJubykpOwogCi0JICAgIC8qIFhYWCBTaG91bGQgd2UgdXNlIGJwYi0+YnBz
 IGlmIGl0J3Mgc2V0PyAqLwogCSAgICBkbHAuZF9zZWNwZXJ1bml0ID0gbXMg
 LyBkbHAuZF9zZWNzaXplOwogCi0JICAgIGlmIChicGItPnNwdCA9PSAwICYm
 IGlvY3RsKGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9
 PSAtMSkgeworCSAgICBpZiAoYnBiLT5icGJTZWNQZXJUcmFjayA9PSAwICYm
 IGlvY3RsKGZkLCBESU9DR0ZXU0VDVE9SUywgJmRscC5kX25zZWN0b3JzKSA9
 PSAtMSkgewogCQl3YXJueCgiQ2Fubm90IGdldCBudW1iZXIgb2Ygc2VjdG9y
 cyBwZXIgdHJhY2ssICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAkJZGxwLmRf
 bnNlY3RvcnMgPSA2MzsKIAkgICAgfQotCSAgICBpZiAoYnBiLT5oZHMgPT0g
 MCAmJiBpb2N0bChmZCwgRElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykg
 PT0gLTEpIHsKKwkgICAgaWYgKGJwYi0+YnBiSGVhZHMgPT0gMCAmJiBpb2N0
 bChmZCwgRElPQ0dGV0hFQURTLCAmZGxwLmRfbnRyYWNrcykgPT0gLTEpIHsK
 IAkJd2FybngoIkNhbm5vdCBnZXQgbnVtYmVyIG9mIGhlYWRzLCAlcyIsIHN0
 cmVycm9yKGVycm5vKSk7CiAJCWlmIChkbHAuZF9zZWNwZXJ1bml0IDw9IDYz
 KjEqMTAyNCkKIAkJICAgIGRscC5kX250cmFja3MgPSAxOwpAQCAtODIwLDE2
 ICs4MjUsMTYgQEAKIAlscCA9ICZkbHA7CiAgICAgfQogCi0gICAgaWYgKGJw
 Yi0+YnBzID09IDApCi0JYnBiLT5icHMgPSBja2dlb20oZm5hbWUsIGxwLT5k
 X3NlY3NpemUsICJieXRlcy9zZWN0b3IiKTsKLSAgICBpZiAoYnBiLT5zcHQg
 PT0gMCkKLQlicGItPnNwdCA9IGNrZ2VvbShmbmFtZSwgbHAtPmRfbnNlY3Rv
 cnMsICJzZWN0b3JzL3RyYWNrIik7Ci0gICAgaWYgKGJwYi0+aGRzID09IDAp
 Ci0JYnBiLT5oZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJk
 cml2ZSBoZWFkcyIpOwotICAgIGlmIChicGItPmJzZWMgPT0gMCkKLQlicGIt
 PmJzZWMgPSBscC0+ZF9zZWNwZXJ1bml0OwotICAgIGlmIChicGItPmhpZCA9
 PSAwKQotCWJwYi0+aGlkID0gaHM7CisgICAgaWYgKGJwYi0+YnBiQnl0ZXNQ
 ZXJTZWMgPT0gMCkKKwlicGItPmJwYkJ5dGVzUGVyU2VjID0gY2tnZW9tKGZu
 YW1lLCBscC0+ZF9zZWNzaXplLCAiYnl0ZXMvc2VjdG9yIik7CisgICAgaWYg
 KGJwYi0+YnBiU2VjUGVyVHJhY2sgPT0gMCkKKwlicGItPmJwYlNlY1BlclRy
 YWNrID0gY2tnZW9tKGZuYW1lLCBscC0+ZF9uc2VjdG9ycywgInNlY3RvcnMv
 dHJhY2siKTsKKyAgICBpZiAoYnBiLT5icGJIZWFkcyA9PSAwKQorCWJwYi0+
 YnBiSGVhZHMgPSBja2dlb20oZm5hbWUsIGxwLT5kX250cmFja3MsICJkcml2
 ZSBoZWFkcyIpOworICAgIGlmIChicGItPmJwYkh1Z2VTZWN0b3JzID09IDAp
 CisJYnBiLT5icGJIdWdlU2VjdG9ycyA9IGxwLT5kX3NlY3BlcnVuaXQ7Cisg
 ICAgaWYgKGJwYi0+YnBiSGlkZGVuU2VjcyA9PSAwKQorCWJwYi0+YnBiSGlk
 ZGVuU2VjcyA9IGhzOwogfQogCiAvKgpAQCAtODM4LDI0ICs4NDMsMjQgQEAK
 IHN0YXRpYyB2b2lkCiBwcmludF9icGIoc3RydWN0IGJwYiAqYnBiKQogewot
 ICAgIHByaW50ZigiYnBzPSV1IHNwYz0ldSByZXM9JXUgbmZ0PSV1IiwgYnBi
 LT5icHMsIGJwYi0+c3BjLCBicGItPnJlcywKLQkgICBicGItPm5mdCk7Ci0g
 ICAgaWYgKGJwYi0+cmRlKQotCXByaW50ZigiIHJkZT0ldSIsIGJwYi0+cmRl
 KTsKLSAgICBpZiAoYnBiLT5zZWMpCi0JcHJpbnRmKCIgc2VjPSV1IiwgYnBi
 LT5zZWMpOwotICAgIHByaW50ZigiIG1pZD0lI3giLCBicGItPm1pZCk7Ci0g
 ICAgaWYgKGJwYi0+c3BmKQotCXByaW50ZigiIHNwZj0ldSIsIGJwYi0+c3Bm
 KTsKLSAgICBwcmludGYoIiBzcHQ9JXUgaGRzPSV1IGhpZD0ldSIsIGJwYi0+
 c3B0LCBicGItPmhkcywgYnBiLT5oaWQpOwotICAgIGlmIChicGItPmJzZWMp
 Ci0JcHJpbnRmKCIgYnNlYz0ldSIsIGJwYi0+YnNlYyk7Ci0gICAgaWYgKCFi
 cGItPnNwZikgewotCXByaW50ZigiIGJzcGY9JXUgcmRjbD0ldSIsIGJwYi0+
 YnNwZiwgYnBiLT5yZGNsKTsKLQlwcmludGYoIiBpbmZzPSIpOwotCXByaW50
 ZihicGItPmluZnMgPT0gTUFYVTE2ID8gIiUjeCIgOiAiJXUiLCBicGItPmlu
 ZnMpOwotCXByaW50ZigiIGJrYnM9Iik7Ci0JcHJpbnRmKGJwYi0+YmticyA9
 PSBNQVhVMTYgPyAiJSN4IiA6ICIldSIsIGJwYi0+Ymticyk7CisgICAgcHJp
 bnRmKCJCeXRlc1BlclNlYz0ldSBTZWNQZXJDbHVzdD0ldSBSZXNTZWN0b3Jz
 PSV1IEZBVHM9JXUiLCBicGItPmJwYkJ5dGVzUGVyU2VjLCBicGItPmJwYlNl
 Y1BlckNsdXN0LCBicGItPmJwYlJlc1NlY3RvcnMsCisJICAgYnBiLT5icGJG
 QVRzKTsKKyAgICBpZiAoYnBiLT5icGJSb290RGlyRW50cykKKwlwcmludGYo
 IiBSb290RGlyRW50cz0ldSIsIGJwYi0+YnBiUm9vdERpckVudHMpOworICAg
 IGlmIChicGItPmJwYlNlY3RvcnMpCisJcHJpbnRmKCIgU2VjdG9ycz0ldSIs
 IGJwYi0+YnBiU2VjdG9ycyk7CisgICAgcHJpbnRmKCIgTWVkaWE9JSN4Iiwg
 YnBiLT5icGJNZWRpYSk7CisgICAgaWYgKGJwYi0+YnBiRkFUc2VjcykKKwlw
 cmludGYoIiBGQVRzZWNzPSV1IiwgYnBiLT5icGJGQVRzZWNzKTsKKyAgICBw
 cmludGYoIiBTZWNQZXJUcmFjaz0ldSBIZWFkcz0ldSBIaWRkZW5TZWNzPSV1
 IiwgYnBiLT5icGJTZWNQZXJUcmFjaywgYnBiLT5icGJIZWFkcywgYnBiLT5i
 cGJIaWRkZW5TZWNzKTsKKyAgICBpZiAoYnBiLT5icGJIdWdlU2VjdG9ycykK
 KwlwcmludGYoIiBIdWdlU2VjdG9ycz0ldSIsIGJwYi0+YnBiSHVnZVNlY3Rv
 cnMpOworICAgIGlmICghYnBiLT5icGJGQVRzZWNzKSB7CisJcHJpbnRmKCIg
 RkFUc2Vjcz0ldSBSb290Q2x1c3Rlcj0ldSIsIGJwYi0+YnBiQmlnRkFUc2Vj
 cywgYnBiLT5icGJSb290Q2x1c3QpOworCXByaW50ZigiIEZTSW5mbz0iKTsK
 KwlwcmludGYoYnBiLT5icGJGU0luZm8gPT0gTUFYVTE2ID8gIiUjeCIgOiAi
 JXUiLCBicGItPmJwYkZTSW5mbyk7CisJcHJpbnRmKCIgQmFja3VwPSIpOwor
 CXByaW50ZihicGItPmJwYkJhY2t1cCA9PSBNQVhVMTYgPyAiJSN4IiA6ICIl
 dSIsIGJwYi0+YnBiQmFja3VwKTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIp
 OwogfQo=
 
 --0-96800579-1263761668=:91781--

From: "Pedro F. Giffuni" <giffunip@tutopia.com>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/142526: [patch] Cleanups and updates to newfs_msdos(8)
Date: Sat, 27 Mar 2010 10:43:01 -0700 (PDT)

 --0-1575203411-1269711781=:89501
 Content-Type: text/plain; charset=utf-8
 Content-Transfer-Encoding: quoted-printable
 
 As a reminder before any MFC ...=0A=0AAfter some private discussion with bd=
 e@ and kib@ here=0Ais a patch with cleanups for newfs_msdos.=0A=0A=0A      
 --0-1575203411-1269711781=:89501
 Content-Type: application/octet-stream; name=patch-newfs
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename=patch-newfs
 
 ZGlmZiAtcnUgbmV3ZnNfbXNkb3Mub3JpZy9uZXdmc19tc2Rvcy44IG5ld2Zz
 X21zZG9zL25ld2ZzX21zZG9zLjgKLS0tIG5ld2ZzX21zZG9zLm9yaWcvbmV3
 ZnNfbXNkb3MuOAkyMDEwLTAyLTE0IDE0OjQ3OjM5LjAwMDAwMDAwMCArMDAw
 MAorKysgbmV3ZnNfbXNkb3MvbmV3ZnNfbXNkb3MuOAkyMDEwLTAyLTE1IDEy
 OjIzOjAxLjAwMDAwMDAwMCArMDAwMApAQCAtMTgwLDI3ICsxODAsMjcgQEAK
 IGJlbG93LgogLkJkIC1saXRlcmFsCiBzdHJ1Y3QgYnNicGIgewotICAgIHVf
 aW50MTZfdAlicHM7CQkvKiBbLVNdIGJ5dGVzIHBlciBzZWN0b3IgKi8KLSAg
 ICB1X2ludDhfdAlzcGM7CQkvKiBbLWNdIHNlY3RvcnMgcGVyIGNsdXN0ZXIg
 Ki8KLSAgICB1X2ludDE2X3QJcmVzOwkJLyogWy1yXSByZXNlcnZlZCBzZWN0
 b3JzICovCi0gICAgdV9pbnQ4X3QJbmZ0OwkJLyogWy1uXSBudW1iZXIgb2Yg
 RkFUcyAqLwotICAgIHVfaW50MTZfdAlyZGU7CQkvKiBbLWVdIHJvb3QgZGly
 ZWN0b3J5IGVudHJpZXMgKi8KLSAgICB1X2ludDE2X3QJc2VjOwkJLyogWy1z
 XSB0b3RhbCBzZWN0b3JzICovCi0gICAgdV9pbnQ4X3QJbWlkOwkJLyogWy1t
 XSBtZWRpYSBkZXNjcmlwdG9yICovCi0gICAgdV9pbnQxNl90CXNwZjsJCS8q
 IFstYV0gc2VjdG9ycyBwZXIgRkFUICovCi0gICAgdV9pbnQxNl90CXNwdDsJ
 CS8qIFstdV0gc2VjdG9ycyBwZXIgdHJhY2sgKi8KLSAgICB1X2ludDE2X3QJ
 aGRzOwkJLyogWy1oXSBkcml2ZSBoZWFkcyAqLwotICAgIHVfaW50MzJfdAlo
 aWQ7CQkvKiBbLW9dIGhpZGRlbiBzZWN0b3JzICovCi0gICAgdV9pbnQzMl90
 CWJzZWM7CQkvKiBbLXNdIGJpZyB0b3RhbCBzZWN0b3JzICovCisgICAgdV9p
 bnQxNl90CWJwYkJ5dGVzUGVyU2VjOwkJLyogWy1TXSBieXRlcyBwZXIgc2Vj
 dG9yICovCisgICAgdV9pbnQ4X3QJYnBiU2VjUGVyQ2x1c3Q7CQkvKiBbLWNd
 IHNlY3RvcnMgcGVyIGNsdXN0ZXIgKi8KKyAgICB1X2ludDE2X3QJYnBiUmVz
 U2VjdG9yczsJCS8qIFstcl0gcmVzZXJ2ZWQgc2VjdG9ycyAqLworICAgIHVf
 aW50OF90CWJwYkZBVHM7CQkvKiBbLW5dIG51bWJlciBvZiBGQVRzICovCisg
 ICAgdV9pbnQxNl90CWJwYlJvb3REaXJFbnRzOwkJLyogWy1lXSByb290IGRp
 cmVjdG9yeSBlbnRyaWVzICovCisgICAgdV9pbnQxNl90CWJwYlNlY3RvcnM7
 CQkvKiBbLXNdIHRvdGFsIHNlY3RvcnMgKi8KKyAgICB1X2ludDhfdAlicGJN
 ZWRpYTsJCS8qIFstbV0gbWVkaWEgZGVzY3JpcHRvciAqLworICAgIHVfaW50
 MTZfdAlicGJGQVRzZWNzOwkJLyogWy1hXSBzZWN0b3JzIHBlciBGQVQgKi8K
 KyAgICB1X2ludDE2X3QJYnBiU2VjUGVyVHJhY2s7CQkvKiBbLXVdIHNlY3Rv
 cnMgcGVyIHRyYWNrICovCisgICAgdV9pbnQxNl90CWJwYkhlYWRzOwkJLyog
 Wy1oXSBkcml2ZSBoZWFkcyAqLworICAgIHVfaW50MzJfdAlicGJIaWRkZW5T
 ZWNzOwkJLyogWy1vXSBoaWRkZW4gc2VjdG9ycyAqLworICAgIHVfaW50MzJf
 dAlicGJIdWdlU2VjdG9yczsJCS8qIFstc10gYmlnIHRvdGFsIHNlY3RvcnMg
 Ki8KIH07CiAvKiBGQVQzMiBleHRlbnNpb25zICovCiBzdHJ1Y3QgYnN4YnBi
 IHsKLSAgICB1X2ludDMyX3QJYnNwZjsJCS8qIFstYV0gYmlnIHNlY3RvcnMg
 cGVyIEZBVCAqLwotICAgIHVfaW50MTZfdAl4ZmxnOwkJLyogY29udHJvbCBm
 bGFncyAqLwotICAgIHVfaW50MTZfdAl2ZXJzOwkJLyogZmlsZSBzeXN0ZW0g
 dmVyc2lvbiAqLwotICAgIHVfaW50MzJfdAlyZGNsOwkJLyogcm9vdCBkaXJl
 Y3Rvcnkgc3RhcnQgY2x1c3RlciAqLwotICAgIHVfaW50MTZfdAlpbmZzOwkJ
 LyogWy1pXSBmaWxlIHN5c3RlbSBpbmZvIHNlY3RvciAqLwotICAgIHVfaW50
 MTZfdAlia2JzOwkJLyogWy1rXSBiYWNrdXAgYm9vdCBzZWN0b3IgKi8KKyAg
 ICB1X2ludDMyX3QJYnBiQmlnRkFUc2VjczsJCS8qIFstYV0gYmlnIHNlY3Rv
 cnMgcGVyIEZBVCAqLworICAgIHVfaW50MTZfdAlicGJFeHRGbGFnczsJCS8q
 IGNvbnRyb2wgZmxhZ3MgKi8KKyAgICB1X2ludDE2X3QJYnBiRlNWZXJzOwkJ
 LyogZmlsZSBzeXN0ZW0gdmVyc2lvbiAqLworICAgIHVfaW50MzJfdAlicGJS
 b290Q2x1c3Q7CQkvKiByb290IGRpcmVjdG9yeSBzdGFydCBjbHVzdGVyICov
 CisgICAgdV9pbnQxNl90CWJwYkZTSW5mbzsJCS8qIFstaV0gZmlsZSBzeXN0
 ZW0gaW5mbyBzZWN0b3IgKi8KKyAgICB1X2ludDE2X3QJYnBiQmFja3VwOwkJ
 LyogWy1rXSBiYWNrdXAgYm9vdCBzZWN0b3IgKi8KIH07CiAuRWQKIC5TaCBM
 SU1JVEFUSU9OCmRpZmYgLXJ1IG5ld2ZzX21zZG9zLm9yaWcvbmV3ZnNfbXNk
 b3MuYyBuZXdmc19tc2Rvcy9uZXdmc19tc2Rvcy5jCi0tLSBuZXdmc19tc2Rv
 cy5vcmlnL25ld2ZzX21zZG9zLmMJMjAxMC0wMi0xNCAxNDo0NzozOS4wMDAw
 MDAwMDAgKzAwMDAKKysrIG5ld2ZzX21zZG9zL25ld2ZzX21zZG9zLmMJMjAx
 MC0wMy0wOSAxNjoxNzoyMS4wMDAwMDAwMDAgKzAwMDAKQEAgLTY1LDcgKzY1
 LDcgQEAKICNkZWZpbmUgTUlOQ0xTMTIgIDFVCQkvKiBtaW5pbXVtIEZBVDEy
 IGNsdXN0ZXJzICovCiAjZGVmaW5lIE1JTkNMUzE2ICAweDEwMDBVCS8qIG1p
 bmltdW0gRkFUMTYgY2x1c3RlcnMgKi8KICNkZWZpbmUgTUlOQ0xTMzIgIDJV
 CQkvKiBtaW5pbXVtIEZBVDMyIGNsdXN0ZXJzICovCi0jZGVmaW5lIE1BWENM
 UzEyICAweGZlZFUgCS8qIG1heGltdW0gRkFUMTIgY2x1c3RlcnMgKi8KKyNk
 ZWZpbmUgTUFYQ0xTMTIgIDB4ZmVkVQkvKiBtYXhpbXVtIEZBVDEyIGNsdXN0
 ZXJzICovCiAjZGVmaW5lIE1BWENMUzE2ICAweGZmZjVVCS8qIG1heGltdW0g
 RkFUMTYgY2x1c3RlcnMgKi8KICNkZWZpbmUgTUFYQ0xTMzIgIDB4ZmZmZmZm
 NVUJLyogbWF4aW11bSBGQVQzMiBjbHVzdGVycyAqLwogCkBAIC05Niw3ICs5
 Niw3IEBACiAjZGVmaW5lIGFyZ3RveChhcmcsIGxvLCBtc2cpICBhcmd0b3Uo
 YXJnLCBsbywgVUlOVF9NQVgsIG1zZykKIAogc3RydWN0IGJzIHsKLSAgICB1
 X2ludDhfdCBic0p1bXBbM107CQkvKiBib290c3RyYXAgZW50cnkgcG9pbnQg
 Ki8KKyAgICB1X2ludDhfdCBic0p1bXBbM107CQkJLyogYm9vdHN0cmFwIGVu
 dHJ5IHBvaW50ICovCiAgICAgdV9pbnQ4X3QgYnNPZW1OYW1lWzhdOwkJLyog
 T0VNIG5hbWUgYW5kIHZlcnNpb24gKi8KIH07CiAKQEAgLTEyMiw3ICsxMjIs
 NyBAQAogICAgIHVfaW50OF90IGJwYlJvb3RDbHVzdFs0XTsJCS8qIHJvb3Qg
 ZGlyZWN0b3J5IHN0YXJ0IGNsdXN0ZXIgKi8KICAgICB1X2ludDhfdCBicGJG
 U0luZm9bMl07CQkvKiBmaWxlIHN5c3RlbSBpbmZvIHNlY3RvciAqLwogICAg
 IHVfaW50OF90IGJwYkJhY2t1cFsyXTsJCS8qIGJhY2t1cCBib290IHNlY3Rv
 ciAqLwotICAgIHVfaW50OF90IGJwYlJlc2VydmVkWzEyXTsJCQkvKiByZXNl
 cnZlZCAqLworICAgIHVfaW50OF90IGJwYlJlc2VydmVkWzEyXTsJCS8qIHJl
 c2VydmVkICovCiB9OwogCiBzdHJ1Y3QgYnN4IHsKQEAgLTEzNSwxMyArMTM1
 LDEzIEBACiB9OwogCiBzdHJ1Y3QgZGUgewotICAgIHVfaW50OF90IGRlTmFt
 ZVsxMV07CS8qIG5hbWUgYW5kIGV4dGVuc2lvbiAqLwotICAgIHVfaW50OF90
 IGRlQXR0cmlidXRlczsJLyogYXR0cmlidXRlcyAqLwotICAgIHVfaW50OF90
 IHJzdmRbMTBdOwkJLyogcmVzZXJ2ZWQgKi8KLSAgICB1X2ludDhfdCBkZU1U
 aW1lWzJdOwkvKiBjcmVhdGlvbiB0aW1lICovCi0gICAgdV9pbnQ4X3QgZGVN
 RGF0ZVsyXTsJLyogY3JlYXRpb24gZGF0ZSAqLwotICAgIHVfaW50OF90IGRl
 U3RhcnRDbHVzdGVyWzJdOwkvKiBzdGFydGluZyBjbHVzdGVyICovCi0gICAg
 dV9pbnQ4X3QgZGVGaWxlU2l6ZVs0XTsJLyogc2l6ZSAqLworICAgIHVfaW50
 OF90IGRlTmFtZVsxMV07CQkvKiBuYW1lIGFuZCBleHRlbnNpb24gKi8KKyAg
 ICB1X2ludDhfdCBkZUF0dHJpYnV0ZXM7CQkvKiBhdHRyaWJ1dGVzICovCisg
 ICAgdV9pbnQ4X3QgcnN2ZFsxMF07CQkJLyogcmVzZXJ2ZWQgKi8KKyAgICB1
 X2ludDhfdCBkZU1UaW1lWzJdOwkJLyogY3JlYXRpb24gdGltZSAqLworICAg
 IHVfaW50OF90IGRlTURhdGVbMl07CQkvKiBjcmVhdGlvbiBkYXRlICovCisg
 ICAgdV9pbnQ4X3QgZGVTdGFydENsdXN0ZXJbMl07CQkvKiBzdGFydGluZyBj
 bHVzdGVyICovCisgICAgdV9pbnQ4X3QgZGVGaWxlU2l6ZVs0XTsJCS8qIHNp
 emUgKi8KIH07CiAKIHN0cnVjdCBicGIgewpAQCAtMTU5LDI5ICsxNTksMjQg
 QEAKICAgICB1X2ludCBicGJIdWdlU2VjdG9yczsgCQkvKiBiaWcgdG90YWwg
 c2VjdG9ycyAqLwogICAgIHVfaW50IGJwYkJpZ0ZBVHNlY3M7IAkJLyogYmln
 IHNlY3RvcnMgcGVyIEZBVCAqLwogICAgIHVfaW50IGJwYlJvb3RDbHVzdDsg
 CQkvKiByb290IGRpcmVjdG9yeSBzdGFydCBjbHVzdGVyICovCi0gICAgdV9p
 bnQgYnBiRlNJbmZvOyAJCS8qIGZpbGUgc3lzdGVtIGluZm8gc2VjdG9yICov
 Ci0gICAgdV9pbnQgYnBiQmFja3VwOyAJCS8qIGJhY2t1cCBib290IHNlY3Rv
 ciAqLworICAgIHVfaW50IGJwYkZTSW5mbzsgCQkJLyogZmlsZSBzeXN0ZW0g
 aW5mbyBzZWN0b3IgKi8KKyAgICB1X2ludCBicGJCYWNrdXA7IAkJCS8qIGJh
 Y2t1cCBib290IHNlY3RvciAqLwogfTsKIAotI2RlZmluZSBCUEJHQVAgMCwg
 MCwgMCwgMCwgMCwgMAotCi0jZGVmaW5lIElOSVQoYSwgYiwgYywgZCwgZSwg
 ZiwgZywgaCwgaSwgaikgXAotICAgIHsgLmJwYkJ5dGVzUGVyU2VjID0gYSwg
 LmJwYlNlY1BlckNsdXN0ID0gYiwgLmJwYlJlc1NlY3RvcnMgPSBjLCAuYnBi
 RkFUcyA9IGQsIC5icGJSb290RGlyRW50cyA9IGUsIFwKLSAgICAgIC5icGJT
 ZWN0b3JzID0gZiwgLmJwYk1lZGlhID0gZywgLmJwYkZBVHNlY3MgPSBoLCAu
 YnBiU2VjUGVyVHJhY2sgPSBpLCAuYnBiSGVhZHMgPSBqLCB9CiBzdGF0aWMg
 c3RydWN0IHsKICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBi
 cGIgYnBiOwogfSBjb25zdCBzdGRmbXRbXSA9IHsKLSAgICB7IjE2MCIsICBJ
 TklUKDUxMiwgMSwgMSwgMiwgIDY0LCAgMzIwLCAweGZlLCAxLCAgOCwgMSl9
 LAotICAgIHsiMTgwIiwgIElOSVQoNTEyLCAxLCAxLCAyLCAgNjQsICAzNjAs
 IDB4ZmMsIDIsICA5LCAxKX0sCi0gICAgeyIzMjAiLCAgSU5JVCg1MTIsIDIs
 IDEsIDIsIDExMiwgIDY0MCwgMHhmZiwgMSwgIDgsIDIpfSwKLSAgICB7IjM2
 MCIsICBJTklUKDUxMiwgMiwgMSwgMiwgMTEyLCAgNzIwLCAweGZkLCAyLCAg
 OSwgMil9LAotICAgIHsiNjQwIiwgIElOSVQoNTEyLCAyLCAxLCAyLCAxMTIs
 IDEyODAsIDB4ZmIsIDIsICA4LCAyKX0sICAgIAotICAgIHsiNzIwIiwgIElO
 SVQoNTEyLCAyLCAxLCAyLCAxMTIsIDE0NDAsIDB4ZjksIDMsICA5LCAyKX0s
 Ci0gICAgeyIxMjAwIiwgSU5JVCg1MTIsIDEsIDEsIDIsIDIyNCwgMjQwMCwg
 MHhmOSwgNywgMTUsIDIpfSwKLSAgICB7IjEyMzIiLCBJTklUKDEwMjQsMSwg
 MSwgMiwgMTkyLCAxMjMyLCAweGZlLCAyLCAgOCwgMil9LCAgICAKLSAgICB7
 IjE0NDAiLCBJTklUKDUxMiwgMSwgMSwgMiwgMjI0LCAyODgwLCAweGYwLCA5
 LCAxOCwgMil9LAotICAgIHsiMjg4MCIsIElOSVQoNTEyLCAyLCAxLCAyLCAy
 NDAsIDU3NjAsIDB4ZjAsIDksIDM2LCAyKX0KKyAgICB7IjE2MCIsICB7NTEy
 LCAxLCAxLCAyLCAgNjQsICAzMjAsIDB4ZmUsIDEsICA4LCAxfX0sCisgICAg
 eyIxODAiLCAgezUxMiwgMSwgMSwgMiwgIDY0LCAgMzYwLCAweGZjLCAyLCAg
 OSwgMX19LAorICAgIHsiMzIwIiwgIHs1MTIsIDIsIDEsIDIsIDExMiwgIDY0
 MCwgMHhmZiwgMSwgIDgsIDJ9fSwKKyAgICB7IjM2MCIsICB7NTEyLCAyLCAx
 LCAyLCAxMTIsICA3MjAsIDB4ZmQsIDIsICA5LCAyfX0sCisgICAgeyI2NDAi
 LCAgezUxMiwgMiwgMSwgMiwgMTEyLCAxMjgwLCAweGZiLCAyLCAgOCwgMn19
 LCAgICAKKyAgICB7IjcyMCIsICB7NTEyLCAyLCAxLCAyLCAxMTIsIDE0NDAs
 IDB4ZjksIDMsICA5LCAyfX0sCisgICAgeyIxMjAwIiwgezUxMiwgMSwgMSwg
 MiwgMjI0LCAyNDAwLCAweGY5LCA3LCAxNSwgMn19LAorICAgIHsiMTIzMiIs
 IHsxMDI0LDEsIDEsIDIsIDE5MiwgMTIzMiwgMHhmZSwgMiwgIDgsIDJ9fSwg
 ICAgCisgICAgeyIxNDQwIiwgezUxMiwgMSwgMSwgMiwgMjI0LCAyODgwLCAw
 eGYwLCA5LCAxOCwgMn19LAorICAgIHsiMjg4MCIsIHs1MTIsIDIsIDEsIDIs
 IDI0MCwgNTc2MCwgMHhmMCwgOSwgMzYsIDJ9fQogfTsKIAogc3RhdGljIGNv
 bnN0IHVfaW50OF90IGJvb3Rjb2RlW10gPSB7CkBAIC00ODksNyArNDg0LDgg
 QEAKIAlpZiAoKGZkMSA9IG9wZW4oYm5hbWUsIE9fUkRPTkxZKSkgPT0gLTEg
 fHwgZnN0YXQoZmQxLCAmc2IpKQogCSAgICBlcnIoMSwgIiVzIiwgYm5hbWUp
 OwogCWlmICghU19JU1JFRyhzYi5zdF9tb2RlKSB8fCBzYi5zdF9zaXplICUg
 YnBiLmJwYkJ5dGVzUGVyU2VjIHx8Ci0JICAgIHNiLnN0X3NpemUgPCBicGIu
 YnBiQnl0ZXNQZXJTZWMgfHwgc2Iuc3Rfc2l6ZSA+IGJwYi5icGJCeXRlc1Bl
 clNlYyAqIE1BWFUxNikKKwkgICAgc2Iuc3Rfc2l6ZSA8IGJwYi5icGJCeXRl
 c1BlclNlYyB8fAorCSAgICBzYi5zdF9zaXplID4gYnBiLmJwYkJ5dGVzUGVy
 U2VjICogTUFYVTE2KQogCSAgICBlcnJ4KDEsICIlczogaW5hcHByb3ByaWF0
 ZSBmaWxlIHR5cGUgb3IgZm9ybWF0IiwgYm5hbWUpOwogCWJzcyA9IHNiLnN0
 X3NpemUgLyBicGIuYnBiQnl0ZXNQZXJTZWM7CiAgICAgfQpAQCAtNDk4LDE5
 ICs0OTQsMjMgQEAKICAgICBpZiAoIWZhdCkgewogCWlmIChicGIuYnBiSHVn
 ZVNlY3RvcnMgPCAoYnBiLmJwYlJlc1NlY3RvcnMgPyBicGIuYnBiUmVzU2Vj
 dG9ycyA6IGJzcykgKwogCSAgICBob3dtYW55KChSRVNGVEUgKyAoYnBiLmJw
 YlNlY1BlckNsdXN0ID8gTUlOQ0xTMTYgOiBNQVhDTFMxMiArIDEpKSAqCi0J
 CSAgICAoKGJwYi5icGJTZWNQZXJDbHVzdCA/IDE2IDogMTIpIC8gQlBOKSwg
 YnBiLmJwYkJ5dGVzUGVyU2VjICogTlBCKSAqCisJCShicGIuYnBiU2VjUGVy
 Q2x1c3QgPyAxNiA6IDEyKSAvIEJQTiwKKwkJYnBiLmJwYkJ5dGVzUGVyU2Vj
 ICogTlBCKSAqCiAJICAgIGJwYi5icGJGQVRzICsKIAkgICAgaG93bWFueShi
 cGIuYnBiUm9vdERpckVudHMgPyBicGIuYnBiUm9vdERpckVudHMgOiBERUZS
 REUsCiAJCSAgICBicGIuYnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0
 IGRlKSkgKwogCSAgICAoYnBiLmJwYlNlY1BlckNsdXN0ID8gTUlOQ0xTMTYg
 OiBNQVhDTFMxMiArIDEpICoKLQkgICAgKGJwYi5icGJTZWNQZXJDbHVzdCA/
 IGJwYi5icGJTZWNQZXJDbHVzdCA6IGhvd21hbnkoREVGQkxLLCBicGIuYnBi
 Qnl0ZXNQZXJTZWMpKSkKKwkgICAgKGJwYi5icGJTZWNQZXJDbHVzdCA/IGJw
 Yi5icGJTZWNQZXJDbHVzdCA6CisJICAgICBob3dtYW55KERFRkJMSywgYnBi
 LmJwYkJ5dGVzUGVyU2VjKSkpCiAJICAgIGZhdCA9IDEyOwogCWVsc2UgaWYg
 KGJwYi5icGJSb290RGlyRW50cyB8fCBicGIuYnBiSHVnZVNlY3RvcnMgPAog
 CQkgKGJwYi5icGJSZXNTZWN0b3JzID8gYnBiLmJwYlJlc1NlY3RvcnMgOiBi
 c3MpICsKLQkJIGhvd21hbnkoKFJFU0ZURSArIE1BWENMUzE2KSAqIDIsIGJw
 Yi5icGJCeXRlc1BlclNlYykgKiBicGIuYnBiRkFUcyArCisJCSBob3dtYW55
 KChSRVNGVEUgKyBNQVhDTFMxNikgKiAyLCBicGIuYnBiQnl0ZXNQZXJTZWMp
 ICoKKwkJIGJwYi5icGJGQVRzICsKIAkJIGhvd21hbnkoREVGUkRFLCBicGIu
 YnBiQnl0ZXNQZXJTZWMgLyBzaXplb2Yoc3RydWN0IGRlKSkgKwogCQkgKE1B
 WENMUzE2ICsgMSkgKgotCQkgKGJwYi5icGJTZWNQZXJDbHVzdCA/IGJwYi5i
 cGJTZWNQZXJDbHVzdCA6IGhvd21hbnkoODE5MiwgYnBiLmJwYkJ5dGVzUGVy
 U2VjKSkpCisJCSAoYnBiLmJwYlNlY1BlckNsdXN0ID8gYnBiLmJwYlNlY1Bl
 ckNsdXN0IDoKKwkJICBob3dtYW55KDgxOTIsIGJwYi5icGJCeXRlc1BlclNl
 YykpKQogCSAgICBmYXQgPSAxNjsKIAllbHNlCiAJICAgIGZhdCA9IDMyOwpA
 QCAtNTM0LDIxICs1MzQsMjcgQEAKIAkgICAgeCA9IGJwYi5icGJCYWNrdXAg
 KyAxOwogICAgIH0KICAgICBpZiAoIWJwYi5icGJSZXNTZWN0b3JzKQotCWJw
 Yi5icGJSZXNTZWN0b3JzID0gZmF0ID09IDMyID8gTUFYKHgsIE1BWCgxNjM4
 NCAvIGJwYi5icGJCeXRlc1BlclNlYywgNCkpIDogeDsKKwlicGIuYnBiUmVz
 U2VjdG9ycyA9IGZhdCA9PSAzMiA/IAorCSAgICBNQVgoeCwgTUFYKDE2Mzg0
 IC8gYnBiLmJwYkJ5dGVzUGVyU2VjLCA0KSkgOiB4OwogICAgIGVsc2UgaWYg
 KGJwYi5icGJSZXNTZWN0b3JzIDwgeCkKLQllcnJ4KDEsICJ0b28gZmV3IHJl
 c2VydmVkIHNlY3RvcnMgKG5lZWQgJWQgaGF2ZSAlZCkiLCB4LCBicGIuYnBi
 UmVzU2VjdG9ycyk7CisJZXJyeCgxLCAidG9vIGZldyByZXNlcnZlZCBzZWN0
 b3JzIChuZWVkICVkIGhhdmUgJWQpIiwgeCwKKwkgICAgIGJwYi5icGJSZXNT
 ZWN0b3JzKTsKICAgICBpZiAoZmF0ICE9IDMyICYmICFicGIuYnBiUm9vdERp
 ckVudHMpCiAJYnBiLmJwYlJvb3REaXJFbnRzID0gREVGUkRFOwogICAgIHJk
 cyA9IGhvd21hbnkoYnBiLmJwYlJvb3REaXJFbnRzLCBicGIuYnBiQnl0ZXNQ
 ZXJTZWMgLyBzaXplb2Yoc3RydWN0IGRlKSk7CiAgICAgaWYgKCFicGIuYnBi
 U2VjUGVyQ2x1c3QpCi0JZm9yIChicGIuYnBiU2VjUGVyQ2x1c3QgPSBob3dt
 YW55KGZhdCA9PSAxNiA/IERFRkJMSzE2IDogREVGQkxLLCBicGIuYnBiQnl0
 ZXNQZXJTZWMpOworCWZvciAoYnBiLmJwYlNlY1BlckNsdXN0ID0gaG93bWFu
 eShmYXQgPT0gMTYgPyBERUZCTEsxNiA6CisJCQkJCSAgREVGQkxLLCBicGIu
 YnBiQnl0ZXNQZXJTZWMpOwogCSAgICAgYnBiLmJwYlNlY1BlckNsdXN0IDwg
 TUFYU1BDICYmCiAJICAgICBicGIuYnBiUmVzU2VjdG9ycyArCiAJICAgICBo
 b3dtYW55KChSRVNGVEUgKyBtYXhjbHMoZmF0KSkgKiAoZmF0IC8gQlBOKSwK
 LQkJICAgICBicGIuYnBiQnl0ZXNQZXJTZWMgKiBOUEIpICogYnBiLmJwYkZB
 VHMgKworCQkgICAgIGJwYi5icGJCeXRlc1BlclNlYyAqIE5QQikgKgorCSAg
 ICAgYnBiLmJwYkZBVHMgKwogCSAgICAgcmRzICsKLQkgICAgICh1X2ludDY0
 X3QpKG1heGNscyhmYXQpICsgMSkgKiBicGIuYnBiU2VjUGVyQ2x1c3QgPD0g
 YnBiLmJwYkh1Z2VTZWN0b3JzOwotCSAgICAgYnBiLmJwYlNlY1BlckNsdXN0
 IDw8PSAxKTsKKwkgICAgICh1X2ludDY0X3QpIChtYXhjbHMoZmF0KSArIDEp
 ICoKKwkgICAgIGJwYi5icGJTZWNQZXJDbHVzdCA8PSBicGIuYnBiSHVnZVNl
 Y3RvcnM7CisJICAgICBicGIuYnBiU2VjUGVyQ2x1c3QgPDw9IDEpCisJICAg
 IGNvbnRpbnVlOwogICAgIGlmIChmYXQgIT0gMzIgJiYgYnBiLmJwYkJpZ0ZB
 VHNlY3MgPiBNQVhVMTYpCiAJZXJyeCgxLCAidG9vIG1hbnkgc2VjdG9ycy9G
 QVQgZm9yIEZBVDEyLzE2Iik7CiAgICAgeDEgPSBicGIuYnBiUmVzU2VjdG9y
 cyArIHJkczsKQEAgLTU1Nyw3ICs1NjMsOCBAQAogCWVycngoMSwgIm1ldGEg
 ZGF0YSBleGNlZWRzIGZpbGUgc3lzdGVtIHNpemUiKTsKICAgICB4MSArPSB4
 ICogYnBiLmJwYkZBVHM7CiAgICAgeCA9ICh1X2ludDY0X3QpKGJwYi5icGJI
 dWdlU2VjdG9ycyAtIHgxKSAqIGJwYi5icGJCeXRlc1BlclNlYyAqIE5QQiAv
 Ci0JKGJwYi5icGJTZWNQZXJDbHVzdCAqIGJwYi5icGJCeXRlc1BlclNlYyAq
 IE5QQiArIGZhdCAvIEJQTiAqIGJwYi5icGJGQVRzKTsKKwkoYnBiLmJwYlNl
 Y1BlckNsdXN0ICogYnBiLmJwYkJ5dGVzUGVyU2VjICogTlBCICsgZmF0IC8K
 KwkgQlBOICogYnBiLmJwYkZBVHMpOwogICAgIHgyID0gaG93bWFueSgoUkVT
 RlRFICsgTUlOKHgsIG1heGNscyhmYXQpKSkgKiAoZmF0IC8gQlBOKSwKIAkJ
 IGJwYi5icGJCeXRlc1BlclNlYyAqIE5QQik7CiAgICAgaWYgKCFicGIuYnBi
 QmlnRkFUc2VjcykgewpAQCAtNTY1LDcgKzU3Miw4IEBACiAJeDEgKz0gKGJw
 Yi5icGJCaWdGQVRzZWNzIC0gMSkgKiBicGIuYnBiRkFUczsKICAgICB9CiAg
 ICAgY2xzID0gKGJwYi5icGJIdWdlU2VjdG9ycyAtIHgxKSAvIGJwYi5icGJT
 ZWNQZXJDbHVzdDsKLSAgICB4ID0gKHVfaW50NjRfdClicGIuYnBiQmlnRkFU
 c2VjcyAqIGJwYi5icGJCeXRlc1BlclNlYyAqIE5QQiAvIChmYXQgLyBCUE4p
 IC0gUkVTRlRFOworICAgIHggPSAodV9pbnQ2NF90KWJwYi5icGJCaWdGQVRz
 ZWNzICogYnBiLmJwYkJ5dGVzUGVyU2VjICogTlBCIC8gKGZhdCAvIEJQTikg
 LQorCVJFU0ZURTsKICAgICBpZiAoY2xzID4geCkKIAljbHMgPSB4OwogICAg
 IGlmIChicGIuYnBiQmlnRkFUc2VjcyA8IHgyKQpAQCAtNjAzLDggKzYxMSwx
 MCBAQAogCXRtID0gbG9jYWx0aW1lKCZub3cpOwogCWlmICghKGltZyA9IG1h
 bGxvYyhicGIuYnBiQnl0ZXNQZXJTZWMpKSkKIAkgICAgZXJyKDEsIE5VTEwp
 OwotCWRpciA9IGJwYi5icGJSZXNTZWN0b3JzICsgKGJwYi5icGJGQVRzZWNz
 ID8gYnBiLmJwYkZBVHNlY3MgOiBicGIuYnBiQmlnRkFUc2VjcykgKiBicGIu
 YnBiRkFUczsKLQlmb3IgKGxzbiA9IDA7IGxzbiA8IGRpciArIChmYXQgPT0g
 MzIgPyBicGIuYnBiU2VjUGVyQ2x1c3QgOiByZHMpOyBsc24rKykgeworCWRp
 ciA9IGJwYi5icGJSZXNTZWN0b3JzICsgKGJwYi5icGJGQVRzZWNzID8gYnBi
 LmJwYkZBVHNlY3MgOgorCQkJCSAgIGJwYi5icGJCaWdGQVRzZWNzKSAqIGJw
 Yi5icGJGQVRzOworCWZvciAobHNuID0gMDsgbHNuIDwgZGlyICsgKGZhdCA9
 PSAzMiA/IGJwYi5icGJTZWNQZXJDbHVzdCA6IHJkcyk7CisJICAgICBsc24r
 KykgewogCSAgICB4ID0gbHNuOwogCSAgICBpZiAob3B0X0IgJiYKIAkJZmF0
 ID09IDMyICYmIGJwYi5icGJCYWNrdXAgIT0gTUFYVTE2ICYmCkBAIC02MjEs
 NyArNjMxLDggQEAKIAkgICAgfSBlbHNlCiAJCW1lbXNldChpbWcsIDAsIGJw
 Yi5icGJCeXRlc1BlclNlYyk7CiAJICAgIGlmICghbHNuIHx8Ci0JICAgICAg
 KGZhdCA9PSAzMiAmJiBicGIuYnBiQmFja3VwICE9IE1BWFUxNiAmJiBsc24g
 PT0gYnBiLmJwYkJhY2t1cCkpIHsKKwkJKGZhdCA9PSAzMiAmJiBicGIuYnBi
 QmFja3VwICE9IE1BWFUxNiAmJgorCQkgbHNuID09IGJwYi5icGJCYWNrdXAp
 KSB7CiAJCXgxID0gc2l6ZW9mKHN0cnVjdCBicyk7CiAJCWJzYnBiID0gKHN0
 cnVjdCBic2JwYiAqKShpbWcgKyB4MSk7CiAJCW1rMihic2JwYi0+YnBiQnl0
 ZXNQZXJTZWMsIGJwYi5icGJCeXRlc1BlclNlYyk7CkBAIC02ODUsNyArNjk2
 LDggQEAKIAkJbWsyKGltZyArIE1JTkJQUyAtIDIsIERPU01BR0lDKTsKIAkg
 ICAgfSBlbHNlIGlmIChsc24gPj0gYnBiLmJwYlJlc1NlY3RvcnMgJiYgbHNu
 IDwgZGlyICYmCiAJCSAgICAgICAhKChsc24gLSBicGIuYnBiUmVzU2VjdG9y
 cykgJQotCQkJIChicGIuYnBiRkFUc2VjcyA/IGJwYi5icGJGQVRzZWNzIDog
 YnBiLmJwYkJpZ0ZBVHNlY3MpKSkgeworCQkJIChicGIuYnBiRkFUc2VjcyA/
 IGJwYi5icGJGQVRzZWNzIDoKKwkJCSAgYnBiLmJwYkJpZ0ZBVHNlY3MpKSkg
 ewogCQltazEoaW1nWzBdLCBicGIuYnBiTWVkaWEpOwogCQlmb3IgKHggPSAx
 OyB4IDwgZmF0ICogKGZhdCA9PSAzMiA/IDMgOiAyKSAvIDg7IHgrKykKIAkJ
 ICAgIG1rMShpbWdbeF0sIGZhdCA9PSAzMiAmJiB4ICUgNCA9PSAzID8gMHgw
 ZiA6IDB4ZmYpOwpAQCAtODAwLDE2ICs4MTIsMTkgQEAKIAlpZiAoYnBiLT5i
 cGJCeXRlc1BlclNlYykKIAkgICAgZGxwLmRfc2Vjc2l6ZSA9IGJwYi0+YnBi
 Qnl0ZXNQZXJTZWM7CiAJaWYgKGlvY3RsKGZkLCBESU9DR0RJTkZPLCAmZGxw
 KSA9PSAtMSkgewotCSAgICBpZiAoYnBiLT5icGJCeXRlc1BlclNlYyA9PSAw
 ICYmIGlvY3RsKGZkLCBESU9DR1NFQ1RPUlNJWkUsICZkbHAuZF9zZWNzaXpl
 KSA9PSAtMSkKKwkgICAgaWYgKGJwYi0+YnBiQnl0ZXNQZXJTZWMgPT0gMCAm
 JiBpb2N0bChmZCwgRElPQ0dTRUNUT1JTSVpFLAorCQkJCQkJICAmZGxwLmRf
 c2Vjc2l6ZSkgPT0gLTEpCiAJCWVycngoMSwgIkNhbm5vdCBnZXQgc2VjdG9y
 IHNpemUsICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAogCSAgICBkbHAuZF9z
 ZWNwZXJ1bml0ID0gbXMgLyBkbHAuZF9zZWNzaXplOwogCi0JICAgIGlmIChi
 cGItPmJwYlNlY1BlclRyYWNrID09IDAgJiYgaW9jdGwoZmQsIERJT0NHRldT
 RUNUT1JTLCAmZGxwLmRfbnNlY3RvcnMpID09IC0xKSB7CisJICAgIGlmIChi
 cGItPmJwYlNlY1BlclRyYWNrID09IDAgJiYgaW9jdGwoZmQsIERJT0NHRldT
 RUNUT1JTLAorCQkJCQkJICAmZGxwLmRfbnNlY3RvcnMpID09IC0xKSB7CiAJ
 CXdhcm54KCJDYW5ub3QgZ2V0IG51bWJlciBvZiBzZWN0b3JzIHBlciB0cmFj
 aywgJXMiLCBzdHJlcnJvcihlcnJubykpOwogCQlkbHAuZF9uc2VjdG9ycyA9
 IDYzOwogCSAgICB9Ci0JICAgIGlmIChicGItPmJwYkhlYWRzID09IDAgJiYg
 aW9jdGwoZmQsIERJT0NHRldIRUFEUywgJmRscC5kX250cmFja3MpID09IC0x
 KSB7CisJICAgIGlmIChicGItPmJwYkhlYWRzID09IDAgJiYKKwkgICAgICAg
 IGlvY3RsKGZkLCBESU9DR0ZXSEVBRFMsICZkbHAuZF9udHJhY2tzKSA9PSAt
 MSkgewogCQl3YXJueCgiQ2Fubm90IGdldCBudW1iZXIgb2YgaGVhZHMsICVz
 Iiwgc3RyZXJyb3IoZXJybm8pKTsKIAkJaWYgKGRscC5kX3NlY3BlcnVuaXQg
 PD0gNjMqMSoxMDI0KQogCQkgICAgZGxwLmRfbnRyYWNrcyA9IDE7CkBAIC04
 NDIsNyArODU3LDggQEAKIHN0YXRpYyB2b2lkCiBwcmludF9icGIoc3RydWN0
 IGJwYiAqYnBiKQogewotICAgIHByaW50ZigiQnl0ZXNQZXJTZWM9JXUgU2Vj
 UGVyQ2x1c3Q9JXUgUmVzU2VjdG9ycz0ldSBGQVRzPSV1IiwgYnBiLT5icGJC
 eXRlc1BlclNlYywgYnBiLT5icGJTZWNQZXJDbHVzdCwgYnBiLT5icGJSZXNT
 ZWN0b3JzLAorICAgIHByaW50ZigiQnl0ZXNQZXJTZWM9JXUgU2VjUGVyQ2x1
 c3Q9JXUgUmVzU2VjdG9ycz0ldSBGQVRzPSV1IiwKKwkgICBicGItPmJwYkJ5
 dGVzUGVyU2VjLCBicGItPmJwYlNlY1BlckNsdXN0LCBicGItPmJwYlJlc1Nl
 Y3RvcnMsCiAJICAgYnBiLT5icGJGQVRzKTsKICAgICBpZiAoYnBiLT5icGJS
 b290RGlyRW50cykKIAlwcmludGYoIiBSb290RGlyRW50cz0ldSIsIGJwYi0+
 YnBiUm9vdERpckVudHMpOwpAQCAtODUxLDExICs4NjcsMTMgQEAKICAgICBw
 cmludGYoIiBNZWRpYT0lI3giLCBicGItPmJwYk1lZGlhKTsKICAgICBpZiAo
 YnBiLT5icGJGQVRzZWNzKQogCXByaW50ZigiIEZBVHNlY3M9JXUiLCBicGIt
 PmJwYkZBVHNlY3MpOwotICAgIHByaW50ZigiIFNlY1BlclRyYWNrPSV1IEhl
 YWRzPSV1IEhpZGRlblNlY3M9JXUiLCBicGItPmJwYlNlY1BlclRyYWNrLCBi
 cGItPmJwYkhlYWRzLCBicGItPmJwYkhpZGRlblNlY3MpOworICAgIHByaW50
 ZigiIFNlY1BlclRyYWNrPSV1IEhlYWRzPSV1IEhpZGRlblNlY3M9JXUiLCBi
 cGItPmJwYlNlY1BlclRyYWNrLAorCSAgIGJwYi0+YnBiSGVhZHMsIGJwYi0+
 YnBiSGlkZGVuU2Vjcyk7CiAgICAgaWYgKGJwYi0+YnBiSHVnZVNlY3RvcnMp
 CiAJcHJpbnRmKCIgSHVnZVNlY3RvcnM9JXUiLCBicGItPmJwYkh1Z2VTZWN0
 b3JzKTsKICAgICBpZiAoIWJwYi0+YnBiRkFUc2VjcykgewotCXByaW50Zigi
 IEZBVHNlY3M9JXUgUm9vdENsdXN0ZXI9JXUiLCBicGItPmJwYkJpZ0ZBVHNl
 Y3MsIGJwYi0+YnBiUm9vdENsdXN0KTsKKwlwcmludGYoIiBGQVRzZWNzPSV1
 IFJvb3RDbHVzdGVyPSV1IiwgYnBiLT5icGJCaWdGQVRzZWNzLAorCSAgICAg
 ICBicGItPmJwYlJvb3RDbHVzdCk7CiAJcHJpbnRmKCIgRlNJbmZvPSIpOwog
 CXByaW50ZihicGItPmJwYkZTSW5mbyA9PSBNQVhVMTYgPyAiJSN4IiA6ICIl
 dSIsIGJwYi0+YnBiRlNJbmZvKTsKIAlwcmludGYoIiBCYWNrdXA9Iik7CkBA
 IC05MTIsMzAgKzkzMCwzMCBAQAogCSAgICBlcnJ4KDEsICIlczogYmFkICVz
 IiwgYXJnLCBtc2cpOwogCSAgICAvKiBub3RyZWFjaGVkICovCiAJCi0JY2Fz
 ZSAncyc6CS8qIHNlY3RvciAqLworCWNhc2UgJ3MnOgkJLyogc2VjdG9yICov
 CiAJY2FzZSAnUyc6Ci0JICAgIHggPDw9IDk7CS8qIHRpbWVzIDUxMiAqLwor
 CSAgICB4IDw8PSA5OwkJLyogdGltZXMgNTEyICovCiAJICAgIGJyZWFrOwog
 Ci0JY2FzZSAnayc6CS8qIGtpbG9ieXRlICovCisJY2FzZSAnayc6CQkvKiBr
 aWxvYnl0ZSAqLwogCWNhc2UgJ0snOgotCSAgICB4IDw8PSAxMDsJLyogdGlt
 ZXMgMTAyNCAqLworCSAgICB4IDw8PSAxMDsJCS8qIHRpbWVzIDEwMjQgKi8K
 IAkgICAgYnJlYWs7CiAKLQljYXNlICdtJzoJLyogbWVnYWJ5dGUgKi8KKwlj
 YXNlICdtJzoJCS8qIG1lZ2FieXRlICovCiAJY2FzZSAnTSc6Ci0JICAgIHgg
 PDw9IDIwOwkvKiB0aW1lcyAxMDI0KjEwMjQgKi8KKwkgICAgeCA8PD0gMjA7
 CQkvKiB0aW1lcyAxMDI0KjEwMjQgKi8KIAkgICAgYnJlYWs7CiAKLQljYXNl
 ICdnJzoJLyogZ2lnYWJ5dGUgKi8KKwljYXNlICdnJzoJCS8qIGdpZ2FieXRl
 ICovCiAJY2FzZSAnRyc6Ci0JICAgIHggPDw9IDMwOwkvKiB0aW1lcyAxMDI0
 KjEwMjQqMTAyNCAqLworCSAgICB4IDw8PSAzMDsJCS8qIHRpbWVzIDEwMjQq
 MTAyNCoxMDI0ICovCiAJICAgIGJyZWFrOwogCi0JY2FzZSAncCc6CS8qIHBh
 cnRpdGlvbiBzdGFydCAqLwotCWNhc2UgJ1AnOgkvKiBwYXJ0aXRpb24gc3Rh
 cnQgKi8KLQljYXNlICdsJzoJLyogcGFydGl0aW9uIGxlbmd0aCAqLwotCWNh
 c2UgJ0wnOgkvKiBwYXJ0aXRpb24gbGVuZ3RoICovCisJY2FzZSAncCc6CQkv
 KiBwYXJ0aXRpb24gc3RhcnQgKi8KKwljYXNlICdQJzoKKwljYXNlICdsJzoJ
 CS8qIHBhcnRpdGlvbiBsZW5ndGggKi8KKwljYXNlICdMJzoKIAkgICAgZXJy
 eCgxLCAiJXM6IG5vdCBzdXBwb3J0ZWQgeWV0ICVzIiwgYXJnLCBtc2cpOwog
 CSAgICAvKiBub3RyZWFjaGVkICovCiAJfQo=
 
 --0-1575203411-1269711781=:89501--
State-Changed-From-To: open->feedback 
State-Changed-By: arundel 
State-Changed-When: Mon Sep 13 13:05:34 UTC 2010 
State-Changed-Why:  


http://www.freebsd.org/cgi/query-pr.cgi?pr=142526 
Responsible-Changed-From-To: freebsd-bugs->kib 
Responsible-Changed-By: arundel 
Responsible-Changed-When: Mon Sep 13 13:22:59 UTC 2010 
Responsible-Changed-Why:  
Could you comment on the status of this PR? Have all the issues been fixed by 
your commit (r203868)? 
Thanks. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=142526 
State-Changed-From-To: feedback->closed 
State-Changed-By: kib 
State-Changed-When: Mon Sep 13 20:35:46 UTC 2010 
State-Changed-Why:  
At least some significant parts of the changes are in HEAD and RELENG_8. 
If submitter has some changes that were ommitted unreasonably, please 
open new PR. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=142526 
>Unformatted:
