Date: Thu, 14 Jan 2010 22:00:08 GMT From: "Pedro F. Giffuni" <giffunip@tutopia.com> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/142526: [patch] Cleanups and updates to newfs_msdos(8) Message-ID: <201001142200.o0EM08Rk067741@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/142526; it has been noted by GNATS. 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--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001142200.o0EM08Rk067741>