From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: with ECARTIS (v1.0.0; list xfs); Fri, 21 Mar 2008 22:49:20 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id m2M5n99w006608 for ; Fri, 21 Mar 2008 22:49:11 -0700 Received: from smtp-0-2.linuxrulz.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D6D2F6D34E5 for ; Fri, 21 Mar 2008 22:49:37 -0700 (PDT) Received: from smtp-0-2.linuxrulz.org (smtp-0-2.linuxrulz.org [66.197.170.246]) by cuda.sgi.com with ESMTP id DUV30NYFUlJgEwOm for ; Fri, 21 Mar 2008 22:49:37 -0700 (PDT) Received: from localhost (scranton-0-2 [127.0.0.1]) by smtp-0-2.linuxrulz.org (Postfix) with ESMTP id AD38633F044 for ; Sat, 22 Mar 2008 05:49:05 +0000 (GMT) Received: from [10.254.254.242] (dsl-241-56-67.telkomadsl.co.za [41.241.56.67]) by smtp-0-2.linuxrulz.org (Postfix) with ESMTP id 863D333EFE5 for ; Sat, 22 Mar 2008 05:48:58 +0000 (GMT) Subject: [PATCH] Remove sysv3 legacy functions From: Nigel Kukard Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-NqQpxZTxc9RLiJilMgMP" Date: Sat, 22 Mar 2008 05:48:55 +0000 Message-Id: <1206164935.14300.8.camel@nigel-x60> Mime-Version: 1.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com List-Id: xfs To: xfs@oss.sgi.com --=-NqQpxZTxc9RLiJilMgMP Content-Type: multipart/mixed; boundary="=-zYTwdJq22U6LZJFdfpPz" --=-zYTwdJq22U6LZJFdfpPz Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Remove legacy sysv3 functions. -N --=-zYTwdJq22U6LZJFdfpPz Content-Disposition: attachment; filename=xfsprogs-2.7.11_sysv3-legacy.patch Content-Type: text/x-patch; name=xfsprogs-2.7.11_sysv3-legacy.patch; charset=us-ascii Content-Transfer-Encoding: base64 ZGlmZiAtcnUgeGZzcHJvZ3MtMi43LjExX3ZhbmlsbGEvY29weS94ZnNfY29w eS5jIHhmc3Byb2dzLTIuNy4xMV9zeXN2My1sZWdhY3kvY29weS94ZnNfY29w eS5jDQotLS0geGZzcHJvZ3MtMi43LjExX3ZhbmlsbGEvY29weS94ZnNfY29w eS5jCTIwMDYtMDEtMTcgMDM6NDY6NDYuMDAwMDAwMDAwICswMDAwDQorKysg eGZzcHJvZ3MtMi43LjExX3N5c3YzLWxlZ2FjeS9jb3B5L3hmc19jb3B5LmMJ MjAwOC0wMy0yMSAxNjowMTo1OS4wMDAwMDAwMDAgKzAwMDANCkBAIC05MDMs NyArOTAzLDcgQEANCiANCiAJCS8qIHNhdmUgd2hhdCB3ZSBuZWVkIChhZ2Yp IGluIHRoZSBidHJlZSBidWZmZXIgKi8NCiANCi0JCWJjb3B5KGFnX2hkci54 ZnNfYWdmLCBidHJlZV9idWYuZGF0YSwgc291cmNlX3NlY3RvcnNpemUpOw0K KwkJbWVtbW92ZShidHJlZV9idWYuZGF0YSwgYWdfaGRyLnhmc19hZ2YsIHNv dXJjZV9zZWN0b3JzaXplKTsNCiAJCWFnX2hkci54ZnNfYWdmID0gKHhmc19h Z2ZfdCAqKSBidHJlZV9idWYuZGF0YTsNCiAJCWJ0cmVlX2J1Zi5sZW5ndGgg PSBzb3VyY2VfYmxvY2tzaXplOw0KIA0KZGlmZiAtcnUgeGZzcHJvZ3MtMi43 LjExX3ZhbmlsbGEvZ3Jvd2ZzL3hmc19ncm93ZnMuYyB4ZnNwcm9ncy0yLjcu MTFfc3lzdjMtbGVnYWN5L2dyb3dmcy94ZnNfZ3Jvd2ZzLmMNCi0tLSB4ZnNw cm9ncy0yLjcuMTFfdmFuaWxsYS9ncm93ZnMveGZzX2dyb3dmcy5jCTIwMDYt MDEtMTcgMDM6NDY6NDguMDAwMDAwMDAwICswMDAwDQorKysgeGZzcHJvZ3Mt Mi43LjExX3N5c3YzLWxlZ2FjeS9ncm93ZnMveGZzX2dyb3dmcy5jCTIwMDgt MDMtMjEgMTY6MDY6MjEuMDAwMDAwMDAwICswMDAwDQpAQCAtMjUwLDcgKzI1 MCw3IEBADQogCSAqIE5lZWQgcm9vdCBhY2Nlc3MgZnJvbSBoZXJlIG9uICh1 c2luZyByYXcgZGV2aWNlcykuLi4NCiAJICovDQogDQotCWJ6ZXJvKCZ4aSwg c2l6ZW9mKHhpKSk7DQorCW1lbXNldCgmeGksIDAsIHNpemVvZih4aSkpOw0K IAl4aS5kbmFtZSA9IGRhdGFkZXY7DQogCXhpLmxvZ25hbWUgPSBsb2dkZXY7 DQogCXhpLnJ0bmFtZSA9IHJ0ZGV2Ow0KZGlmZiAtcnUgeGZzcHJvZ3MtMi43 LjExX3ZhbmlsbGEvaW8vYm1hcC5jIHhmc3Byb2dzLTIuNy4xMV9zeXN2My1s ZWdhY3kvaW8vYm1hcC5jDQotLS0geGZzcHJvZ3MtMi43LjExX3ZhbmlsbGEv aW8vYm1hcC5jCTIwMDYtMDEtMTcgMDM6NDY6NDkuMDAwMDAwMDAwICswMDAw DQorKysgeGZzcHJvZ3MtMi43LjExX3N5c3YzLWxlZ2FjeS9pby9ibWFwLmMJ MjAwOC0wMy0yMSAxNjowNjoyMS4wMDAwMDAwMDAgKzAwMDANCkBAIC0xNzUs NyArMTc1LDcgQEANCiANCiAJZG8gewkvKiBsb29wIGEgbWl4aW11bSBvZiB0 d28gdGltZXMgKi8NCiANCi0JCWJ6ZXJvKG1hcCwgc2l6ZW9mKCptYXApKTsJ LyogemVybyBoZWFkZXIgKi8NCisJCW1lbXNldChtYXAsIDAsIHNpemVvZigq bWFwKSk7CS8qIHplcm8gaGVhZGVyICovDQogDQogCQltYXAtPmJtdl9sZW5n dGggPSAtMTsNCiAJCW1hcC0+Ym12X2NvdW50ID0gbWFwX3NpemU7DQpkaWZm IC1ydSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9saWJoYW5kbGUvamRtLmMg eGZzcHJvZ3MtMi43LjExX3N5c3YzLWxlZ2FjeS9saWJoYW5kbGUvamRtLmMN Ci0tLSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9saWJoYW5kbGUvamRtLmMJ MjAwNi0wMS0xNyAwMzo0Njo0OS4wMDAwMDAwMDAgKzAwMDANCisrKyB4ZnNw cm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L2xpYmhhbmRsZS9qZG0uYwkyMDA4 LTAzLTIxIDE2OjA2OjIxLjAwMDAwMDAwMCArMDAwMA0KQEAgLTQ3LDcgKzQ3 LDcgQEANCiB7DQogCWhhbmRsZXAtPmZoX2ZzaGFuZGxlID0gKmZzaGFuZGxl cDsNCiAJaGFuZGxlcC0+Zmhfc3pfZm9sbG93aW5nID0gRklMRUhBTkRMRV9T Wl9GT0xMT1dJTkc7DQotCWJ6ZXJvKGhhbmRsZXAtPmZoX3BhZCwgRklMRUhB TkRMRV9TWl9QQUQpOw0KKwltZW1zZXQoaGFuZGxlcC0+ZmhfcGFkLCAwLCBG SUxFSEFORExFX1NaX1BBRCk7DQogCWhhbmRsZXAtPmZoX2dlbiA9IHN0YXRw LT5ic19nZW47DQogCWhhbmRsZXAtPmZoX2lubyA9IHN0YXRwLT5ic19pbm87 DQogfQ0KZGlmZiAtcnUgeGZzcHJvZ3MtMi43LjExX3ZhbmlsbGEvbG9ncHJp bnQvbG9nX21pc2MuYyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L2xv Z3ByaW50L2xvZ19taXNjLmMNCi0tLSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxs YS9sb2dwcmludC9sb2dfbWlzYy5jCTIwMDYtMDEtMTcgMDM6NDY6NTEuMDAw MDAwMDAwICswMDAwDQorKysgeGZzcHJvZ3MtMi43LjExX3N5c3YzLWxlZ2Fj eS9sb2dwcmludC9sb2dfbWlzYy5jCTIwMDgtMDMtMjEgMTU6MDQ6NTEuMDAw MDAwMDAwICswMDAwDQpAQCAtMTIwLDEwICsxMjAsMTAgQEANCiAgICAgeGxv Z19vcF9oZWFkZXJfdCBoYnVmOw0KIA0KICAgICAvKg0KLSAgICAgKiBiY29w eSBiZWNhdXNlIG9uIDY0L24zMiwgcGFydGlhbCByZWFkcyBjYW4gY2F1c2Ug dGhlIG9wX2hlYWQNCisgICAgICogbWVtbW92ZSBiZWNhdXNlIG9uIDY0L24z MiwgcGFydGlhbCByZWFkcyBjYW4gY2F1c2UgdGhlIG9wX2hlYWQNCiAgICAg ICogcG9pbnRlciB0byBjb21lIGluIHBvaW50aW5nIHRvIGFuIG9kZC1udW1i ZXJlZCBieXRlDQogICAgICAqLw0KLSAgICBiY29weShvcF9oZWFkLCAmaGJ1 Ziwgc2l6ZW9mKHhsb2dfb3BfaGVhZGVyX3QpKTsNCisgICAgbWVtbW92ZSgm aGJ1Ziwgb3BfaGVhZCwgc2l6ZW9mKHhsb2dfb3BfaGVhZGVyX3QpKTsNCiAg ICAgb3BfaGVhZCA9ICZoYnVmOw0KICAgICAqcHRyICs9IHNpemVvZih4bG9n X29wX2hlYWRlcl90KTsNCiAgICAgcHJpbnRmKCJPcGVyICglZCk6IHRpZDog JXggIGxlbjogJWQgIGNsaWVudGlkOiAlcyAgIiwgaSwNCkBAIC0yNTMsMTAg KzI1MywxMCBAQA0KICAgICBsb25nIGxvbmcJCSB4LCB5Ow0KIA0KICAgICAv Kg0KLSAgICAgKiBiY29weSB0byBlbnN1cmUgOC1ieXRlIGFsaWdubWVudCBm b3IgdGhlIGxvbmcgbG9uZ3MgaW4NCisgICAgICogbWVtbW92ZSB0byBlbnN1 cmUgOC1ieXRlIGFsaWdubWVudCBmb3IgdGhlIGxvbmcgbG9uZ3MgaW4NCiAg ICAgICogYnVmX2xvZ19mb3JtYXRfdCBzdHJ1Y3R1cmUNCiAgICAgICovDQot ICAgIGJjb3B5KCpwdHIsICZsYnVmLCBNSU4oc2l6ZW9mKHhmc19idWZfbG9n X2Zvcm1hdF90KSwgbGVuKSk7DQorICAgIG1lbW1vdmUoJmxidWYsICpwdHIs IE1JTihzaXplb2YoeGZzX2J1Zl9sb2dfZm9ybWF0X3QpLCBsZW4pKTsNCiAg ICAgZiA9ICZsYnVmOw0KICAgICAqcHRyICs9IGxlbjsNCiANCkBAIC0zMTks MTUgKzMxOSwxNSBAQA0KIAkJfSBlbHNlIHsNCiAJCQlwcmludGYoIlxuIik7 DQogCQkJLyoNCi0JCQkgKiBiY29weSBiZWNhdXNlICpwdHIgbWF5IG5vdCBi ZSA4LWJ5dGUgYWxpZ25lZA0KKwkJCSAqIG1lbW1vdmUgYmVjYXVzZSAqcHRy IG1heSBub3QgYmUgOC1ieXRlIGFsaWduZWQNCiAJCQkgKi8NCi0JCQliY29w eSgqcHRyLCAmeCwgc2l6ZW9mKGxvbmcgbG9uZykpOw0KLQkJCWJjb3B5KCpw dHIrOCwgJnksIHNpemVvZihsb25nIGxvbmcpKTsNCisJCQltZW1tb3ZlKCZ4 LCAqcHRyLCBzaXplb2YobG9uZyBsb25nKSk7DQorCQkJbWVtbW92ZSgmeSwg KnB0cis4LCBzaXplb2YobG9uZyBsb25nKSk7DQogCQkJcHJpbnRmKCJpY291 bnQ6ICVsbGQgIGlmcmVlOiAlbGxkICAiLA0KIAkJCQlJTlRfR0VUKHgsIEFS Q0hfQ09OVkVSVCksDQogCQkJCUlOVF9HRVQoeSwgQVJDSF9DT05WRVJUKSk7 DQotCQkJYmNvcHkoKnB0cisxNiwgJngsIHNpemVvZihsb25nIGxvbmcpKTsN Ci0JCQliY29weSgqcHRyKzI0LCAmeSwgc2l6ZW9mKGxvbmcgbG9uZykpOw0K KwkJCW1lbW1vdmUoJngsICpwdHIrMTYsIHNpemVvZihsb25nIGxvbmcpKTsN CisJCQltZW1tb3ZlKCZ5LCAqcHRyKzI0LCBzaXplb2YobG9uZyBsb25nKSk7 DQogCQkJcHJpbnRmKCJmZGJsa3M6ICVsbGQgIGZyZXh0OiAlbGxkXG4iLA0K IAkJCQlJTlRfR0VUKHgsIEFSQ0hfQ09OVkVSVCksDQogCQkJCUlOVF9HRVQo eSwgQVJDSF9DT05WRVJUKSk7DQpAQCAtNDc1LDEwICs0NzUsMTAgQEANCiAg ICAgeGZzX2VmZF9sb2dfZm9ybWF0X3QgbGJ1ZjsNCiANCiAgICAgLyoNCi0g ICAgICogYmNvcHkgdG8gZW5zdXJlIDgtYnl0ZSBhbGlnbm1lbnQgZm9yIHRo ZSBsb25nIGxvbmdzIGluDQorICAgICAqIG1lbW1vdmUgdG8gZW5zdXJlIDgt Ynl0ZSBhbGlnbm1lbnQgZm9yIHRoZSBsb25nIGxvbmdzIGluDQogICAgICAq IHhmc19lZmRfbG9nX2Zvcm1hdF90IHN0cnVjdHVyZQ0KICAgICAgKi8NCi0g ICAgYmNvcHkoKnB0ciwgJmxidWYsIGxlbik7DQorICAgIG1lbW1vdmUoJmxi dWYsICpwdHIsIGxlbik7DQogICAgIGYgPSAmbGJ1ZjsNCiAgICAgKnB0ciAr PSBsZW47DQogICAgIGlmIChsZW4gPj0gc2l6ZW9mKHhmc19lZmRfbG9nX2Zv cm1hdF90KSkgew0KQEAgLTUxMSwxMCArNTExLDEwIEBADQogICAgIHhmc19l ZmlfbG9nX2Zvcm1hdF90IGxidWY7DQogDQogICAgIC8qDQotICAgICAqIGJj b3B5IHRvIGVuc3VyZSA4LWJ5dGUgYWxpZ25tZW50IGZvciB0aGUgbG9uZyBs b25ncyBpbg0KKyAgICAgKiBtZW1tb3ZlIHRvIGVuc3VyZSA4LWJ5dGUgYWxp Z25tZW50IGZvciB0aGUgbG9uZyBsb25ncyBpbg0KICAgICAgKiB4ZnNfZWZp X2xvZ19mb3JtYXRfdCBzdHJ1Y3R1cmUNCiAgICAgICovDQotICAgIGJjb3B5 KCpwdHIsICZsYnVmLCBsZW4pOw0KKyAgICBtZW1tb3ZlKCZsYnVmLCAqcHRy LCBsZW4pOw0KICAgICBmID0gJmxidWY7DQogICAgICpwdHIgKz0gbGVuOw0K ICAgICBpZiAobGVuID49IHNpemVvZih4ZnNfZWZpX2xvZ19mb3JtYXRfdCkp IHsNCkBAIC01NDQsNyArNTQ0LDcgQEANCiAgICAgeGZzX3FvZmZfbG9nZm9y bWF0X3QgKmY7DQogICAgIHhmc19xb2ZmX2xvZ2Zvcm1hdF90IGxidWY7DQog DQotICAgIGJjb3B5KCpwdHIsICZsYnVmLCBNSU4oc2l6ZW9mKHhmc19xb2Zm X2xvZ2Zvcm1hdF90KSwgbGVuKSk7DQorICAgIG1lbW1vdmUoJmxidWYsICpw dHIsIE1JTihzaXplb2YoeGZzX3FvZmZfbG9nZm9ybWF0X3QpLCBsZW4pKTsN CiAgICAgZiA9ICZsYnVmOw0KICAgICAqcHRyICs9IGxlbjsNCiAgICAgaWYg KGxlbiA+PSBzaXplb2YoeGZzX3FvZmZfbG9nZm9ybWF0X3QpKSB7DQpAQCAt NTk4LDE0ICs1OTgsMTQgQEANCiANCiAJcHJpbnRmKCJTSE9SVEZPUk0gRElS RUNUT1JZIHNpemUgJWQgY291bnQgJWRcbiIsDQogCSAgICAgICBzaXplLCBz ZnAtPmhkci5jb3VudCk7DQotCWJjb3B5KCYoc2ZwLT5oZHIucGFyZW50KSwg Jmlubywgc2l6ZW9mKGlubykpOw0KKwltZW1tb3ZlKCZpbm8sICYoc2ZwLT5o ZHIucGFyZW50KSwgc2l6ZW9mKGlubykpOw0KIAlwcmludGYoIi4uIGlubyAw eCVsbHhcbiIsICh1bnNpZ25lZCBsb25nIGxvbmcpSU5UX0dFVChpbm8sIEFS Q0hfQ09OVkVSVCkpOw0KIA0KIAljb3VudCA9ICh1aW50KShzZnAtPmhkci5j b3VudCk7DQogCXNmZXAgPSAmKHNmcC0+bGlzdFswXSk7DQogCWZvciAoaSA9 IDA7IGkgPCBjb3VudDsgaSsrKSB7DQotCQliY29weSgmKHNmZXAtPmludW1i ZXIpLCAmaW5vLCBzaXplb2YoaW5vKSk7DQotCQliY29weSgoc2ZlcC0+bmFt ZSksIG5hbWVidWYsIHNmZXAtPm5hbWVsZW4pOw0KKwkJbWVtbW92ZSgmaW5v LCAmKHNmZXAtPmludW1iZXIpLCBzaXplb2YoaW5vKSk7DQorCQltZW1tb3Zl KG5hbWVidWYsIChzZmVwLT5uYW1lKSwgc2ZlcC0+bmFtZWxlbik7DQogCQlu YW1lYnVmW3NmZXAtPm5hbWVsZW5dID0gJ1wwJzsNCiAJCXByaW50ZigiJXMg aW5vIDB4JWxseCBuYW1lbGVuICVkXG4iLA0KIAkJICAgICAgIG5hbWVidWYs ICh1bnNpZ25lZCBsb25nIGxvbmcpaW5vLCBzZmVwLT5uYW1lbGVuKTsNCkBA IC02MjgsMTIgKzYyOCwxMiBAQA0KICAgICAvKg0KICAgICAgKiBwcmludCBp bm9kZSB0eXBlIGhlYWRlciByZWdpb24NCiAgICAgICoNCi0gICAgICogYmNv cHkgdG8gZW5zdXJlIDgtYnl0ZSBhbGlnbm1lbnQgZm9yIHRoZSBsb25nIGxv bmdzIGluDQorICAgICAqIG1lbW1vdmUgdG8gZW5zdXJlIDgtYnl0ZSBhbGln bm1lbnQgZm9yIHRoZSBsb25nIGxvbmdzIGluDQogICAgICAqIHhmc19pbm9k ZV9sb2dfZm9ybWF0X3Qgc3RydWN0dXJlDQogICAgICAqDQogICAgICAqIGxl biBjYW4gYmUgc21hbGxlciB0aGFuIHhmc19pbm9kZV9sb2dfZm9ybWF0X3Qg c29tZXRpbWVzLi4uICg/KQ0KICAgICAgKi8NCi0gICAgYmNvcHkoKnB0ciwg JmxidWYsIE1JTihzaXplb2YoeGZzX2lub2RlX2xvZ19mb3JtYXRfdCksIGxl bikpOw0KKyAgICBtZW1tb3ZlKCZsYnVmLCAqcHRyLCBNSU4oc2l6ZW9mKHhm c19pbm9kZV9sb2dfZm9ybWF0X3QpLCBsZW4pKTsNCiAgICAgdmVyc2lvbiA9 IGxidWYuaWxmX3R5cGU7DQogICAgIGYgPSAmbGJ1ZjsNCiAgICAgKCppKSsr OwkJCQkJLyogYnVtcCBpbmRleCAqLw0KQEAgLTY3OSw3ICs2NzksNyBAQA0K IAlyZXR1cm4gZi0+aWxmX3NpemUtMTsNCiAgICAgfQ0KIA0KLSAgICBiY29w eSgqcHRyLCAmZGlubywgc2l6ZW9mKGRpbm8pKTsNCisgICAgbWVtbW92ZSgm ZGlubywgKnB0ciwgc2l6ZW9mKGRpbm8pKTsNCiAgICAgbW9kZSA9IGRpbm8u ZGlfbW9kZSAmIFNfSUZNVDsNCiAgICAgc2l6ZSA9IChpbnQpZGluby5kaV9z aXplOw0KICAgICB4bG9nX3ByaW50X3RyYW5zX2lub2RlX2NvcmUoJmRpbm8p Ow0KQEAgLTc5OCwxMCArNzk4LDEwIEBADQogICAgIC8qDQogICAgICAqIHBy aW50IGRxdW90IGhlYWRlciByZWdpb24NCiAgICAgICoNCi0gICAgICogYmNv cHkgdG8gZW5zdXJlIDgtYnl0ZSBhbGlnbm1lbnQgZm9yIHRoZSBsb25nIGxv bmdzIGluDQorICAgICAqIG1lbW1vdmUgdG8gZW5zdXJlIDgtYnl0ZSBhbGln bm1lbnQgZm9yIHRoZSBsb25nIGxvbmdzIGluDQogICAgICAqIHhmc19kcV9s b2dmb3JtYXRfdCBzdHJ1Y3R1cmUNCiAgICAgICovDQotICAgIGJjb3B5KCpw dHIsICZsYnVmLCBNSU4oc2l6ZW9mKHhmc19kcV9sb2dmb3JtYXRfdCksIGxl bikpOw0KKyAgICBtZW1tb3ZlKCZsYnVmLCAqcHRyLCBNSU4oc2l6ZW9mKHhm c19kcV9sb2dmb3JtYXRfdCksIGxlbikpOw0KICAgICBmID0gJmxidWY7DQog ICAgICgqaSkrKzsJCQkJCS8qIGJ1bXAgaW5kZXggKi8NCiAgICAgKnB0ciAr PSBsZW47DQpAQCAtODMwLDcgKzgzMCw3IEBADQogCWhlYWQgPSAoeGxvZ19v cF9oZWFkZXJfdCAqKSpwdHI7DQogCXhsb2dfcHJpbnRfb3BfaGVhZGVyKGhl YWQsICppLCBwdHIpOw0KIAlBU1NFUlQoSU5UX0dFVChoZWFkLT5vaF9sZW4s IEFSQ0hfQ09OVkVSVCkgPT0gc2l6ZW9mKHhmc19kaXNrX2RxdW90X3QpKTsN Ci0JYmNvcHkoKnB0ciwgJmRkcSwgc2l6ZW9mKHhmc19kaXNrX2RxdW90X3Qp KTsNCisJbWVtbW92ZSgmZGRxLCAqcHRyLCBzaXplb2YoeGZzX2Rpc2tfZHF1 b3RfdCkpOw0KIAlwcmludGYoIkRRVU9UOiBtYWdpYyAweCVoeCBmbGFncyAw JWhvXG4iLA0KIAkgICAgICAgSU5UX0dFVChkZHEuZF9tYWdpYywgQVJDSF9D T05WRVJUKSwNCiAJICAgICAgIElOVF9HRVQoZGRxLmRfZmxhZ3MsIEFSQ0hf Q09OVkVSVCkpOw0KZGlmZiAtcnUgeGZzcHJvZ3MtMi43LjExX3ZhbmlsbGEv bWtmcy9wcm90by5jIHhmc3Byb2dzLTIuNy4xMV9zeXN2My1sZWdhY3kvbWtm cy9wcm90by5jDQotLS0geGZzcHJvZ3MtMi43LjExX3ZhbmlsbGEvbWtmcy9w cm90by5jCTIwMDYtMDEtMTcgMDM6NDY6NTEuMDAwMDAwMDAwICswMDAwDQor KysgeGZzcHJvZ3MtMi43LjExX3N5c3YzLWxlZ2FjeS9ta2ZzL3Byb3RvLmMJ MjAwOC0wMy0yMSAxNjowNjoyMS4wMDAwMDAwMDAgKzAwMDANCkBAIC0yMzQs NyArMjM0LDcgQEANCiAJaWYgKGRvbG9jYWwgJiYgbGVuIDw9IFhGU19JRk9S S19EU0laRShpcCkpIHsNCiAJCWxpYnhmc19pZGF0YV9yZWFsbG9jKGlwLCBs ZW4sIFhGU19EQVRBX0ZPUkspOw0KIAkJaWYgKGJ1ZikNCi0JCQliY29weShi dWYsIGlwLT5pX2RmLmlmX3UxLmlmX2RhdGEsIGxlbik7DQorCQkJbWVtbW92 ZShpcC0+aV9kZi5pZl91MS5pZl9kYXRhLCBidWYsIGxlbik7DQogCQlpcC0+ aV9kLmRpX3NpemUgPSBsZW47DQogCQlpcC0+aV9kZi5pZl9mbGFncyAmPSB+ WEZTX0lGRVhURU5UUzsNCiAJCWlwLT5pX2RmLmlmX2ZsYWdzIHw9IFhGU19J RklOTElORTsNCkBAIC0yNTcsOSArMjU3LDkgQEANCiAJCWQgPSBYRlNfRlNC X1RPX0RBRERSKG1wLCBtYXAuYnJfc3RhcnRibG9jayk7DQogCQlicCA9IGxp Ynhmc190cmFuc19nZXRfYnVmKGxvZ2l0ID8gdHAgOiAwLCBtcC0+bV9kZXYs IGQsDQogCQkJbmIgPDwgbXAtPm1fYmxrYmJfbG9nLCAwKTsNCi0JCWJjb3B5 KGJ1ZiwgWEZTX0JVRl9QVFIoYnApLCBsZW4pOw0KKwkJbWVtbW92ZShYRlNf QlVGX1BUUihicCksIGJ1ZiwgbGVuKTsNCiAJCWlmIChsZW4gPCBYRlNfQlVG X0NPVU5UKGJwKSkNCi0JCQliemVybyhYRlNfQlVGX1BUUihicCkgKyBsZW4s IFhGU19CVUZfQ09VTlQoYnApIC0gbGVuKTsNCisJCQltZW1zZXQoWEZTX0JV Rl9QVFIoYnApICsgbGVuLCAwLCBYRlNfQlVGX0NPVU5UKGJwKSAtIGxlbik7 DQogCQlpZiAobG9naXQpDQogCQkJbGlieGZzX3RyYW5zX2xvZ19idWYodHAs IGJwLCAwLCBYRlNfQlVGX0NPVU5UKGJwKSAtIDEpOw0KIAkJZWxzZQ0KQEAg LTM3Niw3ICszNzYsNyBAQA0KIAljcmVkX3QJCWNyZWRzOw0KIAljaGFyCQkq dmFsdWU7DQogDQotCWJ6ZXJvKCZjcmVkcywgc2l6ZW9mKGNyZWRzKSk7DQor CW1lbXNldCgmY3JlZHMsIDAsIHNpemVvZihjcmVkcykpOw0KIAltc3RyID0g Z2V0c3RyKHBwKTsNCiAJc3dpdGNoIChtc3RyWzBdKSB7DQogCWNhc2UgJy0n Og0KQEAgLTYzNSw4ICs2MzUsOCBAQA0KIAl0cCA9IGxpYnhmc190cmFuc19h bGxvYyhtcCwgMCk7DQogCWlmICgoaSA9IGxpYnhmc190cmFuc19yZXNlcnZl KHRwLCBNS0ZTX0JMT0NLUkVTX0lOT0RFLCAwLCAwLCAwLCAwKSkpDQogCQly ZXNfZmFpbGVkKGkpOw0KLQliemVybygmY3JlZHMsIHNpemVvZihjcmVkcykp Ow0KLQliemVybygmZnN4YXR0cnMsIHNpemVvZihmc3hhdHRycykpOw0KKwlt ZW1zZXQoJmNyZWRzLCAwLCBzaXplb2YoY3JlZHMpKTsNCisJbWVtc2V0KCZm c3hhdHRycywgMCwgc2l6ZW9mKGZzeGF0dHJzKSk7DQogCWVycm9yID0gbGli eGZzX2lub2RlX2FsbG9jKCZ0cCwgTlVMTCwgU19JRlJFRywgMSwgMCwNCiAJ CQkJCSZjcmVkcywgJmZzeGF0dHJzLCAmcmJtaXApOw0KIAlpZiAoZXJyb3Ip IHsNCmRpZmYgLXJ1IHhmc3Byb2dzLTIuNy4xMV92YW5pbGxhL21rZnMveGZz X21rZnMuYyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L21rZnMveGZz X21rZnMuYw0KLS0tIHhmc3Byb2dzLTIuNy4xMV92YW5pbGxhL21rZnMveGZz X21rZnMuYwkyMDA2LTAxLTE3IDAzOjQ2OjUxLjAwMDAwMDAwMCArMDAwMA0K KysrIHhmc3Byb2dzLTIuNy4xMV9zeXN2My1sZWdhY3kvbWtmcy94ZnNfbWtm cy5jCTIwMDgtMDMtMjEgMTY6MDY6MjEuMDAwMDAwMDAwICswMDAwDQpAQCAt NjMxLDkgKzYzMSw5IEBADQogCWV4dGVudF9mbGFnZ2luZyA9IDE7DQogCWZv cmNlX292ZXJ3cml0ZSA9IDA7DQogCXdvcnN0X2ZyZWVsaXN0ID0gMDsNCi0J Ynplcm8oJmZzeCwgc2l6ZW9mKGZzeCkpOw0KKwltZW1zZXQoJmZzeCwgMCwg c2l6ZW9mKGZzeCkpOw0KIA0KLQliemVybygmeGksIHNpemVvZih4aSkpOw0K KwltZW1zZXQoJnhpLCAwLCBzaXplb2YoeGkpKTsNCiAJeGkubm90dm9sb2sg PSAxOw0KIAl4aS5zZXRibGtzaXplID0gMTsNCiAJeGkuaXNyZWFkb25seSA9 IExJQlhGU19FWENMVVNJVkVMWTsNCkBAIC0xODgyLDcgKzE4ODIsNyBAQA0K IAlic2l6ZSA9IDEgPDwgKGJsb2NrbG9nIC0gQkJTSElGVCk7DQogCW1wID0g Jm1idWY7DQogCXNicCA9ICZtcC0+bV9zYjsNCi0JYnplcm8obXAsIHNpemVv Zih4ZnNfbW91bnRfdCkpOw0KKwltZW1zZXQobXAsIDAsIHNpemVvZih4ZnNf bW91bnRfdCkpOw0KIAlzYnAtPnNiX2Jsb2NrbG9nID0gKF9fdWludDhfdCli bG9ja2xvZzsNCiAJc2JwLT5zYl9zZWN0bG9nID0gKF9fdWludDhfdClzZWN0 b3Jsb2c7DQogCXNicC0+c2JfYWdibGtsb2cgPSAoX191aW50OF90KWxpYnhm c19sb2cyX3JvdW5kdXAoKHVuc2lnbmVkIGludClhZ3NpemUpOw0KQEAgLTIw MjgsMTIgKzIwMjgsMTIgQEANCiAJICogZXh0WzIsM10gYW5kIHJlaXNlcmZz ICg2NGspIC0gYW5kIGhvcGVmdWxseSBhbGwgZWxzZS4NCiAJICovDQogCWJ1 ZiA9IGxpYnhmc19nZXRidWYoeGkuZGRldiwgMCwgQlRPQkIoV0hBQ0tfU0la RSkpOw0KLQliemVybyhYRlNfQlVGX1BUUihidWYpLCBXSEFDS19TSVpFKTsN CisJbWVtc2V0KFhGU19CVUZfUFRSKGJ1ZiksIDAsIFdIQUNLX1NJWkUpOw0K IAlsaWJ4ZnNfd3JpdGVidWYoYnVmLCBMSUJYRlNfRVhJVF9PTl9GQUlMVVJF KTsNCiANCiAJLyogT0ssIG5vdyB3cml0ZSB0aGUgc3VwZXJibG9jayAqLw0K IAlidWYgPSBsaWJ4ZnNfZ2V0YnVmKHhpLmRkZXYsIFhGU19TQl9EQUREUiwg WEZTX0ZTU19UT19CQihtcCwgMSkpOw0KLQliemVybyhYRlNfQlVGX1BUUihi dWYpLCBzZWN0b3JzaXplKTsNCisJbWVtc2V0KFhGU19CVUZfUFRSKGJ1Ziks IDAsIHNlY3RvcnNpemUpOw0KIAlsaWJ4ZnNfeGxhdGVfc2IoWEZTX0JVRl9Q VFIoYnVmKSwgc2JwLCAtMSwgWEZTX1NCX0FMTF9CSVRTKTsNCiAJbGlieGZz X3dyaXRlYnVmKGJ1ZiwgTElCWEZTX0VYSVRfT05fRkFJTFVSRSk7DQogDQpA QCAtMjA1Niw3ICsyMDU2LDcgQEANCiAJaWYgKCF4aS5kaXNmaWxlKSB7DQog CQlidWYgPSBsaWJ4ZnNfZ2V0YnVmKHhpLmRkZXYsICh4aS5kc2l6ZSAtIEJU T0JCKFdIQUNLX1NJWkUpKSwgDQogCQkJCSAgICBCVE9CQihXSEFDS19TSVpF KSk7DQotCQliemVybyhYRlNfQlVGX1BUUihidWYpLCBXSEFDS19TSVpFKTsN CisJCW1lbXNldChYRlNfQlVGX1BUUihidWYpLCAwLCBXSEFDS19TSVpFKTsN CiAJCWxpYnhmc193cml0ZWJ1ZihidWYsIExJQlhGU19FWElUX09OX0ZBSUxV UkUpOw0KIAl9DQogDQpAQCAtMjA4NCw3ICsyMDg0LDcgQEANCiAJCWJ1ZiA9 IGxpYnhmc19nZXRidWYoeGkuZGRldiwNCiAJCQkJWEZTX0FHX0RBRERSKG1w LCBhZ25vLCBYRlNfU0JfREFERFIpLA0KIAkJCQlYRlNfRlNTX1RPX0JCKG1w LCAxKSk7DQotCQliemVybyhYRlNfQlVGX1BUUihidWYpLCBzZWN0b3JzaXpl KTsNCisJCW1lbXNldChYRlNfQlVGX1BUUihidWYpLCAwLCBzZWN0b3JzaXpl KTsNCiAJCWxpYnhmc194bGF0ZV9zYihYRlNfQlVGX1BUUihidWYpLCBzYnAs IC0xLCBYRlNfU0JfQUxMX0JJVFMpOw0KIAkJbGlieGZzX3dyaXRlYnVmKGJ1 ZiwgTElCWEZTX0VYSVRfT05fRkFJTFVSRSk7DQogDQpAQCAtMjA5NSw3ICsy MDk1LDcgQEANCiAJCQkJWEZTX0FHX0RBRERSKG1wLCBhZ25vLCBYRlNfQUdG X0RBRERSKG1wKSksDQogCQkJCVhGU19GU1NfVE9fQkIobXAsIDEpKTsNCiAJ CWFnZiA9IFhGU19CVUZfVE9fQUdGKGJ1Zik7DQotCQliemVybyhhZ2YsIHNl Y3RvcnNpemUpOw0KKwkJbWVtc2V0KGFnZiwgMCwgc2VjdG9yc2l6ZSk7DQog CQlpZiAoYWdubyA9PSBhZ2NvdW50IC0gMSkNCiAJCQlhZ3NpemUgPSBkYmxv Y2tzIC0gKHhmc19kcmZzYm5vX3QpKGFnbm8gKiBhZ3NpemUpOw0KIAkJSU5U X1NFVChhZ2YtPmFnZl9tYWdpY251bSwgQVJDSF9DT05WRVJULCBYRlNfQUdG X01BR0lDKTsNCkBAIC0yMTMwLDcgKzIxMzAsNyBAQA0KIAkJCQlYRlNfQUdf REFERFIobXAsIGFnbm8sIFhGU19BR0lfREFERFIobXApKSwNCiAJCQkJWEZT X0ZTU19UT19CQihtcCwgMSkpOw0KIAkJYWdpID0gWEZTX0JVRl9UT19BR0ko YnVmKTsNCi0JCWJ6ZXJvKGFnaSwgc2VjdG9yc2l6ZSk7DQorCQltZW1zZXQo YWdpLCAwLCBzZWN0b3JzaXplKTsNCiAJCUlOVF9TRVQoYWdpLT5hZ2lfbWFn aWNudW0sIEFSQ0hfQ09OVkVSVCwgWEZTX0FHSV9NQUdJQyk7DQogCQlJTlRf U0VUKGFnaS0+YWdpX3ZlcnNpb25udW0sIEFSQ0hfQ09OVkVSVCwgWEZTX0FH SV9WRVJTSU9OKTsNCiAJCUlOVF9TRVQoYWdpLT5hZ2lfc2Vxbm8sIEFSQ0hf Q09OVkVSVCwgYWdubyk7DQpAQCAtMjE1Miw3ICsyMTUyLDcgQEANCiAJCQkJ WEZTX0FHQl9UT19EQUREUihtcCwgYWdubywgWEZTX0JOT19CTE9DSyhtcCkp LA0KIAkJCQlic2l6ZSk7DQogCQlibG9jayA9IFhGU19CVUZfVE9fU0JMT0NL KGJ1Zik7DQotCQliemVybyhibG9jaywgYmxvY2tzaXplKTsNCisJCW1lbXNl dChibG9jaywgMCwgYmxvY2tzaXplKTsNCiAJCUlOVF9TRVQoYmxvY2stPmJi X21hZ2ljLCBBUkNIX0NPTlZFUlQsIFhGU19BQlRCX01BR0lDKTsNCiAJCUlO VF9TRVQoYmxvY2stPmJiX2xldmVsLCBBUkNIX0NPTlZFUlQsIDApOw0KIAkJ SU5UX1NFVChibG9jay0+YmJfbnVtcmVjcywgQVJDSF9DT05WRVJULCAxKTsN CkBAIC0yMjAyLDcgKzIyMDIsNyBAQA0KIAkJCQlYRlNfQUdCX1RPX0RBRERS KG1wLCBhZ25vLCBYRlNfQ05UX0JMT0NLKG1wKSksDQogCQkJCWJzaXplKTsN CiAJCWJsb2NrID0gWEZTX0JVRl9UT19TQkxPQ0soYnVmKTsNCi0JCWJ6ZXJv KGJsb2NrLCBibG9ja3NpemUpOw0KKwkJbWVtc2V0KGJsb2NrLCAwLCBibG9j a3NpemUpOw0KIAkJSU5UX1NFVChibG9jay0+YmJfbWFnaWMsIEFSQ0hfQ09O VkVSVCwgWEZTX0FCVENfTUFHSUMpOw0KIAkJSU5UX1NFVChibG9jay0+YmJf bGV2ZWwsIEFSQ0hfQ09OVkVSVCwgMCk7DQogCQlJTlRfU0VUKGJsb2NrLT5i Yl9udW1yZWNzLCBBUkNIX0NPTlZFUlQsIDEpOw0KQEAgLTIyMzksNyArMjIz OSw3IEBADQogCQkJCVhGU19BR0JfVE9fREFERFIobXAsIGFnbm8sIFhGU19J QlRfQkxPQ0sobXApKSwNCiAJCQkJYnNpemUpOw0KIAkJYmxvY2sgPSBYRlNf QlVGX1RPX1NCTE9DSyhidWYpOw0KLQkJYnplcm8oYmxvY2ssIGJsb2Nrc2l6 ZSk7DQorCQltZW1zZXQoYmxvY2ssIDAsIGJsb2Nrc2l6ZSk7DQogCQlJTlRf U0VUKGJsb2NrLT5iYl9tYWdpYywgQVJDSF9DT05WRVJULCBYRlNfSUJUX01B R0lDKTsNCiAJCUlOVF9TRVQoYmxvY2stPmJiX2xldmVsLCBBUkNIX0NPTlZF UlQsIDApOw0KIAkJSU5UX1NFVChibG9jay0+YmJfbnVtcmVjcywgQVJDSF9D T05WRVJULCAwKTsNCkBAIC0yMjUzLDcgKzIyNTMsNyBAQA0KIAkgKi8NCiAJ YnVmID0gbGlieGZzX2dldGJ1ZihtcC0+bV9kZXYsDQogCQkoeGZzX2RhZGRy X3QpWEZTX0ZTQl9UT19CQihtcCwgZGJsb2NrcyAtIDFMTCksIGJzaXplKTsN Ci0JYnplcm8oWEZTX0JVRl9QVFIoYnVmKSwgYmxvY2tzaXplKTsNCisJbWVt c2V0KFhGU19CVUZfUFRSKGJ1ZiksIDAsIGJsb2Nrc2l6ZSk7DQogCWxpYnhm c193cml0ZWJ1ZihidWYsIExJQlhGU19FWElUX09OX0ZBSUxVUkUpOw0KIA0K IAkvKg0KQEAgLTIyNjIsNyArMjI2Miw3IEBADQogCWlmIChtcC0+bV9ydGRl diAmJiBydGJsb2NrcyA+IDApIHsNCiAJCWJ1ZiA9IGxpYnhmc19nZXRidWYo bXAtPm1fcnRkZXYsDQogCQkJCVhGU19GU0JfVE9fQkIobXAsIHJ0YmxvY2tz IC0gMUxMKSwgYnNpemUpOw0KLQkJYnplcm8oWEZTX0JVRl9QVFIoYnVmKSwg YmxvY2tzaXplKTsNCisJCW1lbXNldChYRlNfQlVGX1BUUihidWYpLCAwLCBi bG9ja3NpemUpOw0KIAkJbGlieGZzX3dyaXRlYnVmKGJ1ZiwgTElCWEZTX0VY SVRfT05fRkFJTFVSRSk7DQogCX0NCiANCkBAIC0yMjczLDcgKzIyNzMsNyBA QA0KIAkJeGZzX2FsbG9jX2FyZ190CWFyZ3M7DQogCQl4ZnNfdHJhbnNfdAkq dHA7DQogDQotCQliemVybygmYXJncywgc2l6ZW9mKGFyZ3MpKTsNCisJCW1l bXNldCgmYXJncywgMCwgc2l6ZW9mKGFyZ3MpKTsNCiAJCWFyZ3MudHAgPSB0 cCA9IGxpYnhmc190cmFuc19hbGxvYyhtcCwgMCk7DQogCQlhcmdzLm1wID0g bXA7DQogCQlhcmdzLmFnbm8gPSBhZ25vOw0KZGlmZiAtcnUgeGZzcHJvZ3Mt Mi43LjExX3ZhbmlsbGEvcmVwYWlyL2FnaGVhZGVyLmMgeGZzcHJvZ3MtMi43 LjExX3N5c3YzLWxlZ2FjeS9yZXBhaXIvYWdoZWFkZXIuYw0KLS0tIHhmc3By b2dzLTIuNy4xMV92YW5pbGxhL3JlcGFpci9hZ2hlYWRlci5jCTIwMDYtMDEt MTcgMDM6NDY6NTIuMDAwMDAwMDAwICswMDAwDQorKysgeGZzcHJvZ3MtMi43 LjExX3N5c3YzLWxlZ2FjeS9yZXBhaXIvYWdoZWFkZXIuYwkyMDA4LTAzLTIx IDE2OjExOjU0LjAwMDAwMDAwMCArMDAwMA0KQEAgLTE4NCw3ICsxODQsNyBA QA0KIA0KICAqIHRoZSBpbnByb2dyZXNzIGZpZWxkcywgdmVyc2lvbiBudW1i ZXJzLCBhbmQgY291bnRlcnMNCiAgKiBhcmUgYWxsb3dlZCB0byBkaWZmZXIg YXMgd2VsbCBhcyBhbGwgZmllbGRzIGFmdGVyIHRoZQ0KLSAqIGNvdW50ZXJz IHRvIGNvcGUgd2l0aCB0aGUgcHJlLTYuNSBta2ZzIG5vbi1iemVyb2VkDQor ICogY291bnRlcnMgdG8gY29wZSB3aXRoIHRoZSBwcmUtNi41IG1rZnMgbm9u LXplcm9lZA0KICAqIHNlY29uZGFyeSBzdXBlcmJsb2NrIHNlY3RvcnMuDQog ICovDQogDQpAQCAtMjMzLDcgKzIzMyw3IEBADQogCSAqIChlLmcuIHdlcmUg cHJlLTYuNSBiZXRhKSBjb3VsZCBsZWF2ZSBnYXJiYWdlIGluIHRoZSBzZWNv bmRhcnkNCiAJICogc3VwZXJibG9jayBzZWN0b3JzLiAgQW55dGhpbmcgc3Rh bXBpbmcgdGhlIHNoYXJlZCBmcyBiaXQgb3IgYmV0dGVyDQogCSAqIGludG8g dGhlIHNlY29uZGFyaWVzIGlzIG9rIGFuZCBzaG91bGQgZ2VuZXJhdGUgY2xl YW4gc2Vjb25kYXJ5DQotCSAqIHN1cGVyYmxvY2sgc2VjdG9ycy4gIHNvIG9u bHkgcnVuIHRoZSBiemVybyBjaGVjayBvbiB0aGUNCisJICogc3VwZXJibG9j ayBzZWN0b3JzLiAgc28gb25seSBydW4gdGhlIHplcm8gY2hlY2sgb24gdGhl DQogCSAqIHBvdGVudGlhbGx5IGdhcmJhZ2VkIHNlY29uZGFyaWVzLg0KIAkg Ki8NCiAJaWYgKHByZV82NV9iZXRhIHx8DQpAQCAtMjc1LDcgKzI3NSw3IEBA DQogCQkJCWRvX3dhcm4oDQogCQlfKCJ6ZXJvaW5nIHVudXNlZCBwb3J0aW9u IG9mICVzIHN1cGVyYmxvY2sgKEFHICMldSlcbiIpLA0KIAkJCQkJIWkgPyBf KCJwcmltYXJ5IikgOiBfKCJzZWNvbmRhcnkiKSwgaSk7DQotCQkJCWJ6ZXJv KCh2b2lkICopKChfX3BzaW50X3Qpc2IgKyBzaXplKSwNCisJCQkJbWVtc2V0 KCh2b2lkICopKChfX3BzaW50X3Qpc2IgKyBzaXplKSwgMCwNCiAJCQkJCW1w LT5tX3NiLnNiX3NlY3RzaXplIC0gc2l6ZSk7DQogCQkJfSBlbHNlDQogCQkJ CWRvX3dhcm4oDQpAQCAtMjg2LDcgKzI4Niw3IEBADQogDQogCS8qDQogCSAq IG5vdyBsb29rIGZvciB0aGUgZmllbGRzIHdlIGNhbiBtYW5pcHVsYXRlIGRp cmVjdGx5Lg0KLQkgKiBpZiB3ZSBkaWQgYSBiemVybyBhbmQgdGhhdCBiemVy byBjb3VsZCBoYXZlIGluY2x1ZGVkDQorCSAqIGlmIHdlIGRpZCBhIHplcm8g YW5kIHRoYXQgemVybyBjb3VsZCBoYXZlIGluY2x1ZGVkDQogCSAqIHRoZSBm aWVsZCBpbiBxdWVzdGlvbiwganVzdCBzaWxlbnRseSByZXNldCBpdC4gIG90 aGVyd2lzZSwNCiAJICogY29tcGxhaW4uDQogCSAqDQpkaWZmIC1ydSB4ZnNw cm9ncy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIvYXR0cl9yZXBhaXIuYyB4ZnNw cm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3JlcGFpci9hdHRyX3JlcGFpci5j DQotLS0geGZzcHJvZ3MtMi43LjExX3ZhbmlsbGEvcmVwYWlyL2F0dHJfcmVw YWlyLmMJMjAwNi0wMS0xNyAwMzo0Njo1Mi4wMDAwMDAwMDAgKzAwMDANCisr KyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3JlcGFpci9hdHRyX3Jl cGFpci5jCTIwMDgtMDMtMjEgMTY6MDY6MjEuMDAwMDAwMDAwICswMDAwDQpA QCAtODMsNyArODMsNyBAQA0KIGludA0KIHZhbHVlY2hlY2soY2hhciAqbmFt ZXZhbHVlLCBjaGFyICp2YWx1ZSwgaW50IG5hbWVsZW4sIGludCB2YWx1ZWxl bikNCiB7DQotCS8qIGZvciBwcm9wZXIgYWxpZ25tZW50IGlzc3VlcywgZ2V0 IHRoZSBzdHJ1Y3RzIGFuZCBiY29weSB0aGUgdmFsdWVzICovDQorCS8qIGZv ciBwcm9wZXIgYWxpZ25tZW50IGlzc3VlcywgZ2V0IHRoZSBzdHJ1Y3RzIGFu ZCBtZW1tb3ZlIHRoZSB2YWx1ZXMgKi8NCiAJeGZzX21hY19sYWJlbF90IG1h Y2w7DQogCXhmc19hY2xfdCB0aGlzYWNsOw0KIAl2b2lkICp2YWx1ZXA7DQpA QCAtOTMsOCArOTMsOCBAQA0KIAkJCShzdHJuY21wKG5hbWV2YWx1ZSwgU0dJ X0FDTF9ERUZBVUxULA0KIAkJCQlTR0lfQUNMX0RFRkFVTFRfU0laRSkgPT0g MCkpIHsNCiAJCWlmICh2YWx1ZSA9PSBOVUxMKSB7DQotCQkJYnplcm8oJnRo aXNhY2wsIHNpemVvZih4ZnNfYWNsX3QpKTsNCi0JCQliY29weShuYW1ldmFs dWUrbmFtZWxlbiwgJnRoaXNhY2wsIHZhbHVlbGVuKTsNCisJCQltZW1zZXQo JnRoaXNhY2wsIDAsIHNpemVvZih4ZnNfYWNsX3QpKTsNCisJCQltZW1tb3Zl KCZ0aGlzYWNsLCBuYW1ldmFsdWUrbmFtZWxlbiwgdmFsdWVsZW4pOw0KIAkJ CXZhbHVlcCA9ICZ0aGlzYWNsOw0KIAkJfSBlbHNlDQogCQkJdmFsdWVwID0g dmFsdWU7DQpAQCAtMTA3LDggKzEwNyw4IEBADQogCQl9DQogCX0gZWxzZSBp ZiAoc3RybmNtcChuYW1ldmFsdWUsIFNHSV9NQUNfRklMRSwgU0dJX01BQ19G SUxFX1NJWkUpID09IDApIHsNCiAJCWlmICh2YWx1ZSA9PSBOVUxMKSB7DQot CQkJYnplcm8oJm1hY2wsIHNpemVvZih4ZnNfbWFjX2xhYmVsX3QpKTsNCi0J CQliY29weShuYW1ldmFsdWUrbmFtZWxlbiwgJm1hY2wsIHZhbHVlbGVuKTsN CisJCQltZW1zZXQoJm1hY2wsIDAsIHNpemVvZih4ZnNfbWFjX2xhYmVsX3Qp KTsNCisJCQltZW1tb3ZlKCZtYWNsLCBuYW1ldmFsdWUrbmFtZWxlbiwgdmFs dWVsZW4pOw0KIAkJCXZhbHVlcCA9ICZtYWNsOw0KIAkJfSBlbHNlDQogCQkJ dmFsdWVwID0gdmFsdWU7DQpAQCAtMzU3LDcgKzM1Nyw3IEBADQogCQl9DQog CQlBU1NFUlQobXAtPm1fc2Iuc2JfYmxvY2tzaXplID09IFhGU19CVUZfQ09V TlQoYnApKTsNCiAJCWxlbmd0aCA9IE1JTihYRlNfQlVGX0NPVU5UKGJwKSwg dmFsdWVsZW4gLSBhbW91bnRkb25lKTsNCi0JCWJjb3B5KFhGU19CVUZfUFRS KGJwKSwgdmFsdWUsIGxlbmd0aCk7DQorCQltZW1tb3ZlKHZhbHVlLCBYRlNf QlVGX1BUUihicCksIGxlbmd0aCk7DQogCQlhbW91bnRkb25lICs9IGxlbmd0 aDsNCiAJCXZhbHVlICs9IGxlbmd0aDsNCiAJCWkrKzsNCkBAIC04MDMsNyAr ODAzLDcgQEANCiAJICogdGhlIHdheS4gIFRoZW4gd2FsayB0aGUgbGVhZiBi bG9ja3MgbGVmdC10by1yaWdodCwgY2FsbGluZw0KIAkgKiBhIHBhcmVudC12 ZXJpZmljYXRpb24gcm91dGluZSBlYWNoIHRpbWUgd2UgdHJhdmVyc2UgYSBi bG9jay4NCiAJICovDQotCWJ6ZXJvKCZkYV9jdXJzb3IsIHNpemVvZihkYV9i dF9jdXJzb3JfdCkpOw0KKwltZW1zZXQoJmRhX2N1cnNvciwgMCwgc2l6ZW9m KGRhX2J0X2N1cnNvcl90KSk7DQogCWRhX2N1cnNvci5hY3RpdmUgPSAwOw0K IAlkYV9jdXJzb3IudHlwZSA9IDA7DQogCWRhX2N1cnNvci5pbm8gPSBpbm87 DQpkaWZmIC1ydSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIvZGlu b2RlLmMgeGZzcHJvZ3MtMi43LjExX3N5c3YzLWxlZ2FjeS9yZXBhaXIvZGlu b2RlLmMNCi0tLSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIvZGlu b2RlLmMJMjAwNi0wMS0xNyAwMzo0Njo1Mi4wMDAwMDAwMDAgKzAwMDANCisr KyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3JlcGFpci9kaW5vZGUu YwkyMDA4LTAzLTIxIDE2OjA2OjIxLjAwMDAwMDAwMCArMDAwMA0KQEAgLTI5 Niw3ICsyOTYsNyBAQA0KIAkvKiBhbmQgY2xlYXIgdGhlIGZvcmtzICovDQog DQogCWlmIChkaXJ0eSAmJiAhbm9fbW9kaWZ5KQ0KLQkJYnplcm8oJmRpbm8t PmRpX3UsIFhGU19MSVRJTk8obXApKTsNCisJCW1lbXNldCgmZGluby0+ZGlf dSwgMCwgWEZTX0xJVElOTyhtcCkpOw0KIA0KIAlyZXR1cm4oZGlydHkpOw0K IH0NCkBAIC0xNTE2LDggKzE1MTYsOCBAQA0KIAkJICogbG9jYWwgc3ltbGlu aywganVzdCBjb3B5IHRoZSBzeW1saW5rIG91dCBvZiB0aGUNCiAJCSAqIGlu b2RlIGludG8gdGhlIGRhdGEgYXJlYQ0KIAkJICovDQotCQliY29weSgoY2hh ciAqKVhGU19ERk9SS19EUFRSKGRpbm8pLA0KLQkJCXN5bWxpbmssIElOVF9H RVQoZGlub2MtPmRpX3NpemUsIEFSQ0hfQ09OVkVSVCkpOw0KKwkJbWVtbW92 ZShzeW1saW5rLCAoY2hhciAqKVhGU19ERk9SS19EUFRSKGRpbm8pLA0KKwkJ CUlOVF9HRVQoZGlub2MtPmRpX3NpemUsIEFSQ0hfQ09OVkVSVCkpOw0KIAl9 IGVsc2Ugew0KIAkJLyoNCiAJCSAqIHN0b3JlZCBpbiBhIG1ldGEtZGF0YSBm aWxlLCBoYXZlIHRvIGJtYXAgb25lIGJsb2NrDQpAQCAtMTU0Miw3ICsxNTQy LDcgQEANCiAJCQlidWZfZGF0YSA9IChjaGFyICopWEZTX0JVRl9QVFIoYnAp Ow0KIAkJCXNpemUgPSBNSU4oSU5UX0dFVChkaW5vYy0+ZGlfc2l6ZSwgQVJD SF9DT05WRVJUKQ0KIAkJCQktIGFtb3VudGRvbmUsIChpbnQpWEZTX0ZTQl9U T19CQihtcCwgMSkqQkJTSVpFKTsNCi0JCQliY29weShidWZfZGF0YSwgY3B0 ciwgc2l6ZSk7DQorCQkJbWVtbW92ZShjcHRyLCBidWZfZGF0YSwgc2l6ZSk7 DQogCQkJY3B0ciArPSBzaXplOw0KIAkJCWFtb3VudGRvbmUgKz0gc2l6ZTsN CiAJCQlpKys7DQpkaWZmIC1ydSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9y ZXBhaXIvZGlyLmMgeGZzcHJvZ3MtMi43LjExX3N5c3YzLWxlZ2FjeS9yZXBh aXIvZGlyLmMNCi0tLSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIv ZGlyLmMJMjAwNi0wMS0xNyAwMzo0Njo1Mi4wMDAwMDAwMDAgKzAwMDANCisr KyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3JlcGFpci9kaXIuYwky MDA4LTAzLTIxIDE2OjE1OjAyLjAwMDAwMDAwMCArMDAwMA0KQEAgLTMzNCw3 ICszMzQsNyBAQA0KIAkJICogaGFwcGVuZWQuDQogCQkgKi8NCiAJCWlmIChq dW5raXQpICB7DQotCQkJYmNvcHkoc2ZfZW50cnktPm5hbWUsIG5hbWUsIG5h bWVsZW4pOw0KKwkJCW1lbW1vdmUobmFtZSwgc2ZfZW50cnktPm5hbWUsIG5h bWVsZW4pOw0KIAkJCW5hbWVbbmFtZWxlbl0gPSAnXDAnOw0KIA0KIAkJCWlm ICghbm9fbW9kaWZ5KSAgew0KQEAgLTM1Miw3ICszNTIsNyBAQA0KIA0KIAkJ CQlJTlRfTU9EKHNmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCwgLTEpOw0K IAkJCQludW1fZW50cmllcy0tOw0KLQkJCQliemVybygodm9pZCAqKSAoKF9f cHNpbnRfdCkgc2ZfZW50cnkgKyB0bXBfbGVuKSwNCisJCQkJbWVtc2V0KCh2 b2lkICopICgoX19wc2ludF90KSBzZl9lbnRyeSArIHRtcF9sZW4pLCAwLA0K IAkJCQkJdG1wX2VsZW4pOw0KIA0KIAkJCQkvKg0KQEAgLTUxMSw3ICs1MTEs NyBAQA0KIAlpZiAoKGZyZWVtYXAgPSBtYWxsb2MobXAtPm1fc2Iuc2JfYmxv Y2tzaXplKSkgPT0gTlVMTCkNCiAJCXJldHVybihOVUxMKTsNCiANCi0JYnpl cm8oZnJlZW1hcCwgbXAtPm1fc2Iuc2JfYmxvY2tzaXplL05CQlkpOw0KKwlt ZW1zZXQoZnJlZW1hcCwgMCwgbXAtPm1fc2Iuc2JfYmxvY2tzaXplL05CQlkp Ow0KIA0KIAlyZXR1cm4oZnJlZW1hcCk7DQogfQ0KQEAgLTUyMCw3ICs1MjAs NyBAQA0KIHZvaWQNCiBpbml0X2RhX2ZyZWVtYXAoZGFfZnJlZW1hcF90ICpk aXJfZnJlZW1hcCkNCiB7DQotCWJ6ZXJvKGRpcl9mcmVlbWFwLCBzaXplb2Yo ZGFfZnJlZW1hcF90KSAqIERBX0JNQVBfU0laRSk7DQorCW1lbXNldChkaXJf ZnJlZW1hcCwgMCwgc2l6ZW9mKGRhX2ZyZWVtYXBfdCkgKiBEQV9CTUFQX1NJ WkUpOw0KIH0NCiANCiAvKg0KQEAgLTc1Myw3ICs3NTMsNyBAQA0KIAlkYV9o b2xlX21hcF90CWhvbGVtYXA7DQogDQogCWluaXRfZGFfZnJlZW1hcChkaXJf ZnJlZW1hcCk7DQotCWJ6ZXJvKCZob2xlbWFwLCBzaXplb2YoZGFfaG9sZV9t YXBfdCkpOw0KKwltZW1zZXQoJmhvbGVtYXAsIDAsIHNpemVvZihkYV9ob2xl X21hcF90KSk7DQogDQogCXNldF9kYV9mcmVlbWFwKG1wLCBkaXJfZnJlZW1h cCwgMCwgNTApOw0KIAlzZXRfZGFfZnJlZW1hcChtcCwgZGlyX2ZyZWVtYXAs IDEwMCwgMTI2KTsNCkBAIC0xNTI1LDkgKzE1MjUsOSBAQA0KIAkJCQltZW1t b3ZlKGVudHJ5LCBlbnRyeSArIDEsIChJTlRfR0VUKGhkci0+Y291bnQsIEFS Q0hfQ09OVkVSVCkgLSBpKSAqDQogCQkJCQlzaXplb2YoeGZzX2Rpcl9sZWFm X2VudHJ5X3QpKTsNCiAJCQl9DQotCQkJYnplcm8oKHZvaWQgKikgKChfX3Bz aW50X3QpIGVudHJ5ICsNCisJCQltZW1zZXQoKHZvaWQgKikgKChfX3BzaW50 X3QpIGVudHJ5ICsNCiAJCQkJKElOVF9HRVQobGVhZi0+aGRyLmNvdW50LCBB UkNIX0NPTlZFUlQpIC0gaSAtIDEpICoNCi0JCQkJc2l6ZW9mKHhmc19kaXJf bGVhZl9lbnRyeV90KSksDQorCQkJCXNpemVvZih4ZnNfZGlyX2xlYWZfZW50 cnlfdCkpLCAwLA0KIAkJCQlzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3Qp KTsNCiANCiAJCQlzdGFydCA9IChfX3BzaW50X3QpICZsZWFmLT5lbnRyaWVz W0lOVF9HRVQoaGRyLT5jb3VudCwgQVJDSF9DT05WRVJUKV0gLQ0KQEAgLTE2 MjQsOSArMTYyNCw5IEBADQogCQkJCQkJKElOVF9HRVQobGVhZi0+aGRyLmNv dW50LCBBUkNIX0NPTlZFUlQpIC0gaSAtIDEpICoNCiAJCQkJCQlzaXplb2Yo eGZzX2Rpcl9sZWFmX2VudHJ5X3QpKTsNCiAJCQkJfQ0KLQkJCQliemVybygo dm9pZCAqKSAoKF9fcHNpbnRfdCkgZW50cnkgKw0KKwkJCQltZW1zZXQoKHZv aWQgKikgKChfX3BzaW50X3QpIGVudHJ5ICsNCiAJCQkJCShJTlRfR0VUKGxl YWYtPmhkci5jb3VudCwgQVJDSF9DT05WRVJUKSAtIGkgLSAxKSAqDQotCQkJ CQlzaXplb2YoeGZzX2Rpcl9sZWFmX2VudHJ5X3QpKSwNCisJCQkJCXNpemVv Zih4ZnNfZGlyX2xlYWZfZW50cnlfdCkpLCAwLA0KIAkJCQkJc2l6ZW9mKHhm c19kaXJfbGVhZl9lbnRyeV90KSk7DQogDQogCQkJCS8qDQpAQCAtMTgyNSwx MSArMTgyNSwxMSBAQA0KIAkJCQkJICAgIHNpemVvZih4ZnNfZGlyX2xlYWZf ZW50cnlfdCkpICB7DQogCQkJCQkJbWVtbW92ZShlbnRyeSwgZW50cnkgKyAx LA0KIAkJCQkJCQlieXRlcyk7DQotCQkJCQkJYnplcm8oKHZvaWQgKikNCi0J CQkJCQkoKF9fcHNpbnRfdCkgZW50cnkgKyBieXRlcyksDQorCQkJCQkJbWVt c2V0KCh2b2lkICopDQorCQkJCQkJKChfX3BzaW50X3QpIGVudHJ5ICsgYnl0 ZXMpLCAwLA0KIAkJCQkJCXNpemVvZih4ZnNfZGlyX2xlYWZfZW50cnlfdCkp Ow0KIAkJCQkJfSBlbHNlICB7DQotCQkJCQkJYnplcm8oZW50cnksDQorCQkJ CQkJbWVtc2V0KGVudHJ5LCAwLA0KIAkJCQkJCXNpemVvZih4ZnNfZGlyX2xl YWZfZW50cnlfdCkpOw0KIAkJCQkJfQ0KIA0KQEAgLTIwNjcsMTEgKzIwNjcs MTEgQEANCiAJCQkJICovDQogCQkJCWlmIChieXRlcyA+IHNpemVvZih4ZnNf ZGlyX2xlYWZfZW50cnlfdCkpICB7DQogCQkJCQltZW1tb3ZlKGVudHJ5LCBl bnRyeSArIDEsIGJ5dGVzKTsNCi0JCQkJCWJ6ZXJvKCh2b2lkICopDQotCQkJ CQkJKChfX3BzaW50X3QpIGVudHJ5ICsgYnl0ZXMpLA0KKwkJCQkJbWVtc2V0 KCh2b2lkICopDQorCQkJCQkJKChfX3BzaW50X3QpIGVudHJ5ICsgYnl0ZXMp LCAwLA0KIAkJCQkJCXNpemVvZih4ZnNfZGlyX2xlYWZfZW50cnlfdCkpOw0K IAkJCQl9IGVsc2UgIHsNCi0JCQkJCWJ6ZXJvKGVudHJ5LA0KKwkJCQkJbWVt c2V0KGVudHJ5LCAwLA0KIAkJCQkJCXNpemVvZih4ZnNfZGlyX2xlYWZfZW50 cnlfdCkpOw0KIAkJCQl9DQogDQpAQCAtMjEzNiw3ICsyMTM2LDcgQEANCiAJ CSAqIG1ha2luZyBpdCBpbXBvc3NpYmxlIGZvciB0aGUgc3RvcmVkIGxlbmd0 aA0KIAkJICogdmFsdWUgdG8gYmUgb3V0IG9mIHJhbmdlLg0KIAkJICovDQot CQliY29weShuYW1lc3QtPm5hbWUsIGZuYW1lLCBlbnRyeS0+bmFtZWxlbik7 DQorCQltZW1tb3ZlKGZuYW1lLCBuYW1lc3QtPm5hbWUsIGVudHJ5LT5uYW1l bGVuKTsNCiAJCWZuYW1lW2VudHJ5LT5uYW1lbGVuXSA9ICdcMCc7DQogCQlo YXNodmFsID0gbGlieGZzX2RhX2hhc2huYW1lKGZuYW1lLCBlbnRyeS0+bmFt ZWxlbik7DQogDQpAQCAtMjQ2NSw3ICsyNDY1LDcgQEANCiAJICogKFhGU19E SVJfTEVBRl9NQVBTSVpFICgzKSAqIGJpZ2dlc3QgcmVnaW9ucykNCiAJICog YW5kIHNlZSBpZiB0aGV5IG1hdGNoIHdoYXQncyBpbiB0aGUgYmxvY2sNCiAJ ICovDQotCWJ6ZXJvKCZob2xlbWFwLCBzaXplb2YoZGFfaG9sZV9tYXBfdCkp Ow0KKwltZW1zZXQoJmhvbGVtYXAsIDAsIHNpemVvZihkYV9ob2xlX21hcF90 KSk7DQogCXByb2Nlc3NfZGFfZnJlZW1hcChtcCwgZGlyX2ZyZWVtYXAsICZo b2xlbWFwKTsNCiANCiAJaWYgKHplcm9fbGVuX2VudHJpZXMpICB7DQpAQCAt MjUyMiw3ICsyNTIyLDcgQEANCiAJCQkvKg0KIAkJCSAqIGNvcHkgbGVhZiBi bG9jayBoZWFkZXINCiAJCQkgKi8NCi0JCQliY29weSgmbGVhZi0+aGRyLCAm bmV3X2xlYWYtPmhkciwNCisJCQltZW1tb3ZlKCZuZXdfbGVhZi0+aGRyLCAm bGVhZi0+aGRyLA0KIAkJCQlzaXplb2YoeGZzX2Rpcl9sZWFmX2hkcl90KSk7 DQogDQogCQkJLyoNCkBAIC0yNTY4LDggKzI1NjgsOCBAQA0KIAkJCQlkX2Vu dHJ5LT5uYW1lbGVuID0gc19lbnRyeS0+bmFtZWxlbjsNCiAJCQkJZF9lbnRy eS0+cGFkMiA9IDA7DQogDQotCQkJCWJjb3B5KChjaGFyICopIGxlYWYgKyBJ TlRfR0VUKHNfZW50cnktPm5hbWVpZHgsIEFSQ0hfQ09OVkVSVCksDQotCQkJ CQlmaXJzdF9ieXRlLCBieXRlcyk7DQorCQkJCW1lbW1vdmUoZmlyc3RfYnl0 ZSwgKGNoYXIgKikgbGVhZiArIElOVF9HRVQoc19lbnRyeS0+bmFtZWlkeCwg QVJDSF9DT05WRVJUKSwNCisJCQkJCWJ5dGVzKTsNCiANCiAJCQkJbnVtX2Vu dHJpZXMrKzsNCiAJCQkJZF9lbnRyeSsrOw0KQEAgLTI1ODEsNyArMjU4MSw3 IEBADQogCQkJLyoNCiAJCQkgKiB6ZXJvIHNwYWNlIGJldHdlZW4gZW5kIG9m IHRhYmxlIGFuZCB0b3Agb2YgaGVhcA0KIAkJCSAqLw0KLQkJCWJ6ZXJvKGRf ZW50cnksIChfX3BzaW50X3QpIGZpcnN0X2J5dGUNCisJCQltZW1zZXQoZF9l bnRyeSwgMCwgKF9fcHNpbnRfdCkgZmlyc3RfYnl0ZQ0KIAkJCQkJLSAoX19w c2ludF90KSBkX2VudHJ5KTsNCiANCiAJCQkvKg0KQEAgLTI2MTcsNyArMjYx Nyw3IEBADQogCQkJLyoNCiAJCQkgKiBmaW5hbCBzdGVwLCBjb3B5IGJsb2Nr IGJhY2sNCiAJCQkgKi8NCi0JCQliY29weShuZXdfbGVhZiwgbGVhZiwgbXAt Pm1fc2Iuc2JfYmxvY2tzaXplKTsNCisJCQltZW1tb3ZlKGxlYWYsIG5ld19s ZWFmLCBtcC0+bV9zYi5zYl9ibG9ja3NpemUpOw0KIA0KIAkJCSpidWZfZGly dHkgPSAxOw0KIAkJfSBlbHNlICB7DQpAQCAtMjg1Myw3ICsyODUzLDcgQEAN CiAJICogdGhlIHdheS4gIFRoZW4gd2FsayB0aGUgbGVhZiBibG9ja3MgbGVm dC10by1yaWdodCwgY2FsbGluZw0KIAkgKiBhIHBhcmVudC12ZXJpZmljYXRp b24gcm91dGluZSBlYWNoIHRpbWUgd2UgdHJhdmVyc2UgYSBibG9jay4NCiAJ ICovDQotCWJ6ZXJvKCZkYV9jdXJzb3IsIHNpemVvZihkYV9idF9jdXJzb3Jf dCkpOw0KKwltZW1zZXQoJmRhX2N1cnNvciwgMCwgc2l6ZW9mKGRhX2J0X2N1 cnNvcl90KSk7DQogDQogCWRhX2N1cnNvci5hY3RpdmUgPSAwOw0KIAlkYV9j dXJzb3IudHlwZSA9IDA7DQpkaWZmIC1ydSB4ZnNwcm9ncy0yLjcuMTFfdmFu aWxsYS9yZXBhaXIvZGlyMi5jIHhmc3Byb2dzLTIuNy4xMV9zeXN2My1sZWdh Y3kvcmVwYWlyL2RpcjIuYw0KLS0tIHhmc3Byb2dzLTIuNy4xMV92YW5pbGxh L3JlcGFpci9kaXIyLmMJMjAwNi0wMS0xNyAwMzo0Njo1Mi4wMDAwMDAwMDAg KzAwMDANCisrKyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3JlcGFp ci9kaXIyLmMJMjAwOC0wMy0yMSAxNjowNjoyMS4wMDAwMDAwMDAgKzAwMDAN CkBAIC0xMjQsNyArMTI0LDcgQEANCiAJCX0NCiAJCWZvciAoaSA9IG9mZiA9 IDA7IGkgPCBuZXg7IGkrKywgb2ZmICs9IFhGU19CVUZfQ09VTlQoYnApKSB7 DQogCQkJYnAgPSBicGxpc3RbaV07DQotCQkJYmNvcHkoWEZTX0JVRl9QVFIo YnApLCAoY2hhciAqKWRhYnVmLT5kYXRhICsgb2ZmLA0KKwkJCW1lbW1vdmUo KGNoYXIgKilkYWJ1Zi0+ZGF0YSArIG9mZiwgWEZTX0JVRl9QVFIoYnApLA0K IAkJCQlYRlNfQlVGX0NPVU5UKGJwKSk7DQogCQl9DQogCX0NCkBAIC0xNDks NyArMTQ5LDcgQEANCiAJCWRhYnVmLT5kaXJ0eSA9IDA7DQogCQlmb3IgKGk9 b2ZmPTA7IGkgPCBkYWJ1Zi0+bmJ1ZjsgaSsrLCBvZmYgKz0gWEZTX0JVRl9D T1VOVChicCkpIHsNCiAJCQlicCA9IGRhYnVmLT5icHNbaV07DQotCQkJYmNv cHkoKGNoYXIgKilkYWJ1Zi0+ZGF0YSArIG9mZiwgWEZTX0JVRl9QVFIoYnAp LA0KKwkJCW1lbW1vdmUoWEZTX0JVRl9QVFIoYnApLCAoY2hhciAqKWRhYnVm LT5kYXRhICsgb2ZmLA0KIAkJCQlYRlNfQlVGX0NPVU5UKGJwKSk7DQogCQl9 DQogCX0NCkBAIC0xODcsMTAgKzE4NywxMCBAQA0KIAkJCWRvX2Vycm9yKF8o ImNvdWxkbid0IG1hbGxvYyBkaXIyIGJ1ZmZlciBsaXN0XG4iKSk7DQogCQkJ ZXhpdCgxKTsNCiAJCX0NCi0JCWJjb3B5KGRhYnVmLT5icHMsIGJwbGlzdCwg bmJ1ZiAqIHNpemVvZigqYnBsaXN0KSk7DQorCQltZW1tb3ZlKGJwbGlzdCwg ZGFidWYtPmJwcywgbmJ1ZiAqIHNpemVvZigqYnBsaXN0KSk7DQogCQlmb3Ig KGkgPSBvZmYgPSAwOyBpIDwgbmJ1ZjsgaSsrLCBvZmYgKz0gWEZTX0JVRl9D T1VOVChicCkpIHsNCiAJCQlicCA9IGJwbGlzdFtpXTsNCi0JCQliY29weSgo Y2hhciAqKWRhYnVmLT5kYXRhICsgb2ZmLCBYRlNfQlVGX1BUUihicCksDQor CQkJbWVtbW92ZShYRlNfQlVGX1BUUihicCksIChjaGFyICopZGFidWYtPmRh dGEgKyBvZmYsDQogCQkJCVhGU19CVUZfQ09VTlQoYnApKTsNCiAJCX0NCiAJ fQ0KQEAgLTIyMyw3ICsyMjMsNyBAQA0KIAkJCWRvX2Vycm9yKF8oImNvdWxk bid0IG1hbGxvYyBkaXIyIGJ1ZmZlciBsaXN0XG4iKSk7DQogCQkJZXhpdCgx KTsNCiAJCX0NCi0JCWJjb3B5KGRhYnVmLT5icHMsIGJwbGlzdCwgbmJ1ZiAq IHNpemVvZigqYnBsaXN0KSk7DQorCQltZW1tb3ZlKGJwbGlzdCwgZGFidWYt PmJwcywgbmJ1ZiAqIHNpemVvZigqYnBsaXN0KSk7DQogCX0NCiAJZGFfYnVm X2RvbmUoZGFidWYpOw0KIAlmb3IgKGkgPSAwOyBpIDwgbmJ1ZjsgaSsrKQ0K QEAgLTEwNzYsNyArMTA3Niw3IEBADQogCQkgKiBoYXBwZW5lZC4NCiAJCSAq Lw0KIAkJaWYgKGp1bmtpdCkgIHsNCi0JCQliY29weShzZmVwLT5uYW1lLCBu YW1lLCBuYW1lbGVuKTsNCisJCQltZW1tb3ZlKG5hbWUsIHNmZXAtPm5hbWUs IG5hbWVsZW4pOw0KIAkJCW5hbWVbbmFtZWxlbl0gPSAnXDAnOw0KIA0KIAkJ CWlmICghbm9fbW9kaWZ5KSAgew0KQEAgLTEwOTUsNyArMTA5NSw3IEBADQog DQogCQkJCUlOVF9NT0Qoc2ZwLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCwg LTEpOw0KIAkJCQludW1fZW50cmllcy0tOw0KLQkJCQliemVybygodm9pZCAq KSAoKF9fcHNpbnRfdCkgc2ZlcCArIHRtcF9sZW4pLA0KKwkJCQltZW1zZXQo KHZvaWQgKikgKChfX3BzaW50X3QpIHNmZXAgKyB0bXBfbGVuKSwgMCwNCiAJ CQkJCXRtcF9lbGVuKTsNCiANCiAJCQkJLyoNCkBAIC0xOTIxLDcgKzE5MjEs NyBAQA0KIAkgKiBUaGVuIHdhbGsgdGhlIGxlYWYgYmxvY2tzIGxlZnQtdG8t cmlnaHQsIGNhbGxpbmcgYSBwYXJlbnQNCiAJICogdmVyaWZpY2F0aW9uIHJv dXRpbmUgZWFjaCB0aW1lIHdlIHRyYXZlcnNlIGEgYmxvY2suDQogCSAqLw0K LQliemVybygmZGFfY3Vyc29yLCBzaXplb2YoZGFfY3Vyc29yKSk7DQorCW1l bXNldCgmZGFfY3Vyc29yLCAwLCBzaXplb2YoZGFfY3Vyc29yKSk7DQogCWRh X2N1cnNvci5pbm8gPSBpbm87DQogCWRhX2N1cnNvci5kaXAgPSBkaXA7DQog CWRhX2N1cnNvci5ibGttYXAgPSBibGttYXA7DQpkaWZmIC1ydSB4ZnNwcm9n cy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIvZ2xvYmFscy5oIHhmc3Byb2dzLTIu Ny4xMV9zeXN2My1sZWdhY3kvcmVwYWlyL2dsb2JhbHMuaA0KLS0tIHhmc3By b2dzLTIuNy4xMV92YW5pbGxhL3JlcGFpci9nbG9iYWxzLmgJMjAwNi0wMS0x NyAwMzo0Njo1Mi4wMDAwMDAwMDAgKzAwMDANCisrKyB4ZnNwcm9ncy0yLjcu MTFfc3lzdjMtbGVnYWN5L3JlcGFpci9nbG9iYWxzLmgJMjAwOC0wMy0yMSAx NjoxMDoxOS4wMDAwMDAwMDAgKzAwMDANCkBAIC02Niw3ICs2Niw3IEBADQog ICogdGhlIHBhcnRpYWwgc2IgbWFzayBiaXQgc2V0LCB0aGVuIHlvdSBkZXBl bmQgb24gdGhlIGZpZWxkcw0KICAqIGluIGl0IHVwIHRvIGFuZCBpbmNsdWRp bmcgc2JfaW5vYWxpZ25tdCBidXQgdGhlIHVudXNlZCBwYXJ0IG9mIHRoZQ0K ICAqIHNlY3RvciBtYXkgaGF2ZSB0cmFzaCBpbiBpdC4gIElmIHRoZSBzYiBo YXMgYW55IGJpdHMgc2V0IHRoYXQgYXJlIGluDQotICogdGhlIGdvb2QgbWFz aywgdGhlbiB0aGUgZW50aXJlIHNiIGFuZCBzZWN0b3IgYXJlIGdvb2QgKHdh cyBiemVybydlZA0KKyAqIHRoZSBnb29kIG1hc2ssIHRoZW4gdGhlIGVudGly ZSBzYiBhbmQgc2VjdG9yIGFyZSBnb29kICh3YXMgemVybydlZA0KICAqIGJ5 IG1rZnMpLiAgVGhlIHRoaXJkIG1hc2sgaXMgZm9yIGZpbGVzeXN0ZW1zIG1h ZGUgYnkgcHJlLTYuNSBjYW1wdXMNCiAgKiBhbHBoYSBta2ZzJ3MuICBUaG9z ZSBhcmUgcmFyZSBzbyB3ZSdsbCBjaGVjayBmb3IgdGhvc2UgdW5kZXINCiAg KiBhIHNwZWNpYWwgb3B0aW9uLg0KZGlmZiAtcnUgeGZzcHJvZ3MtMi43LjEx X3ZhbmlsbGEvcmVwYWlyL2luY29yZS5jIHhmc3Byb2dzLTIuNy4xMV9zeXN2 My1sZWdhY3kvcmVwYWlyL2luY29yZS5jDQotLS0geGZzcHJvZ3MtMi43LjEx X3ZhbmlsbGEvcmVwYWlyL2luY29yZS5jCTIwMDYtMDEtMTcgMDM6NDY6NTIu MDAwMDAwMDAwICswMDAwDQorKysgeGZzcHJvZ3MtMi43LjExX3N5c3YzLWxl Z2FjeS9yZXBhaXIvaW5jb3JlLmMJMjAwOC0wMy0yMSAxNjowNjoyMS4wMDAw MDAwMDAgKzAwMDANCkBAIC03NCw3ICs3NCw3IEBADQogCQkJCW51bWJsb2Nr cyk7DQogCQkJcmV0dXJuOw0KIAkJfQ0KLQkJYnplcm8oYmFfYm1hcFtpXSwg c2l6ZSk7DQorCQltZW1zZXQoYmFfYm1hcFtpXSwgMCwgc2l6ZSk7DQogCX0N CiANCiAJaWYgKHJ0YmxvY2tzID09IDApICB7DQpkaWZmIC1ydSB4ZnNwcm9n cy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIvaW5jb3JlX2JtYy5jIHhmc3Byb2dz LTIuNy4xMV9zeXN2My1sZWdhY3kvcmVwYWlyL2luY29yZV9ibWMuYw0KLS0t IHhmc3Byb2dzLTIuNy4xMV92YW5pbGxhL3JlcGFpci9pbmNvcmVfYm1jLmMJ MjAwNi0wMS0xNyAwMzo0Njo1Mi4wMDAwMDAwMDAgKzAwMDANCisrKyB4ZnNw cm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3JlcGFpci9pbmNvcmVfYm1jLmMJ MjAwOC0wMy0yMSAxNjowNjoyMS4wMDAwMDAwMDAgKzAwMDANCkBAIC0yOSw3 ICsyOSw3IEBADQogew0KIAlpbnQgaTsNCiANCi0JYnplcm8oY3Vyc29yLCBz aXplb2YoYm1hcF9jdXJzb3JfdCkpOw0KKwltZW1zZXQoY3Vyc29yLCAwLCBz aXplb2YoYm1hcF9jdXJzb3JfdCkpOw0KIAljdXJzb3ItPmlubyA9IE5VTExG U0lOTzsNCiAJY3Vyc29yLT5udW1fbGV2ZWxzID0gbnVtX2xldmVsczsNCiAN CmRpZmYgLXJ1IHhmc3Byb2dzLTIuNy4xMV92YW5pbGxhL3JlcGFpci9pbmNv cmVfaW5vLmMgeGZzcHJvZ3MtMi43LjExX3N5c3YzLWxlZ2FjeS9yZXBhaXIv aW5jb3JlX2luby5jDQotLS0geGZzcHJvZ3MtMi43LjExX3ZhbmlsbGEvcmVw YWlyL2luY29yZV9pbm8uYwkyMDA2LTAxLTE3IDAzOjQ2OjUyLjAwMDAwMDAw MCArMDAwMA0KKysrIHhmc3Byb2dzLTIuNy4xMV9zeXN2My1sZWdhY3kvcmVw YWlyL2luY29yZV9pbm8uYwkyMDA4LTAzLTIxIDE2OjA2OjIxLjAwMDAwMDAw MCArMDAwMA0KQEAgLTUxNSwxMiArNTE1LDExIEBADQogCWlmICghdG1wKQ0K IAkJZG9fZXJyb3IoXygiY291bGRuJ3QgbWVtYWxpZ24gcGVudHJpZXMgdGFi bGVcbiIpKTsNCiANCi0JKHZvaWQpIGJjb3B5KGlyZWMtPmlub191bi5wbGlz dC0+cGVudHJpZXMsIHRtcCwNCisJbWVtbW92ZSh0bXAsIGlyZWMtPmlub191 bi5wbGlzdC0+cGVudHJpZXMsDQogCQkJdGFyZ2V0ICogc2l6ZW9mKHBhcmVu dF9lbnRyeV90KSk7DQogDQogCWlmIChjbnQgPiB0YXJnZXQpDQotCQkodm9p ZCkgYmNvcHkoaXJlYy0+aW5vX3VuLnBsaXN0LT5wZW50cmllcyArIHRhcmdl dCwNCi0JCQkJdG1wICsgdGFyZ2V0ICsgMSwNCisJCW1lbW1vdmUodG1wICsg dGFyZ2V0ICsgMSwgaXJlYy0+aW5vX3VuLnBsaXN0LT5wZW50cmllcyArIHRh cmdldCwNCiAJCQkJKGNudCAtIHRhcmdldCkgKiBzaXplb2YocGFyZW50X2Vu dHJ5X3QpKTsNCiANCiAJZnJlZShpcmVjLT5pbm9fdW4ucGxpc3QtPnBlbnRy aWVzKTsNCkBAIC02NzQsNyArNjczLDcgQEANCiAJaWYgKGJwdHJzX2luZGV4 ID09IEJQVFJfQUxMT0NfTlVNKQ0KIAkJYnB0cnMgPSBOVUxMOw0KIA0KLQli emVybyhicHRyLCBzaXplb2YoYmFja3B0cnNfdCkpOw0KKwltZW1zZXQoYnB0 ciwgMCwgc2l6ZW9mKGJhY2twdHJzX3QpKTsNCiANCiAJcmV0dXJuKGJwdHIp Ow0KIH0NCkBAIC02ODgsNyArNjg3LDcgQEANCiAJaWYgKChwdHIgPSBtYWxs b2Moc2l6ZW9mKGJhY2twdHJzX3QpKSkgPT0gTlVMTCkNCiAJCWRvX2Vycm9y KF8oImNvdWxkIG5vdCBtYWxsb2MgYmFjayBwb2ludGVyIHRhYmxlXG4iKSk7 DQogDQotCWJ6ZXJvKHB0ciwgc2l6ZW9mKGJhY2twdHJzX3QpKTsNCisJbWVt c2V0KHB0ciwgMCwgc2l6ZW9mKGJhY2twdHJzX3QpKTsNCiANCiAJcmV0dXJu KHB0cik7DQogfQ0KQEAgLTgwMiw3ICs4MDEsNyBAQA0KIAlpZiAoKGxhc3Rf cmVjID0gbWFsbG9jKHNpemVvZihpbm9fdHJlZV9ub2RlX3QgKikgKiBhZ2Nv dW50KSkgPT0gTlVMTCkNCiAJCWRvX2Vycm9yKF8oImNvdWxkbid0IG1hbGxv YyB1bmNlcnRhaW4gaW5vZGUgY2FjaGUgYXJlYVxuIikpOw0KIA0KLQliemVy byhsYXN0X3JlYywgc2l6ZW9mKGlub190cmVlX25vZGVfdCAqKSAqIGFnY291 bnQpOw0KKwltZW1zZXQobGFzdF9yZWMsIDAsIHNpemVvZihpbm9fdHJlZV9u b2RlX3QgKikgKiBhZ2NvdW50KTsNCiANCiAJZnVsbF9iYWNrcHRycyA9IDA7 DQogDQpkaWZmIC1ydSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIv cGhhc2U0LmMgeGZzcHJvZ3MtMi43LjExX3N5c3YzLWxlZ2FjeS9yZXBhaXIv cGhhc2U0LmMNCi0tLSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIv cGhhc2U0LmMJMjAwNi0wMS0xNyAwMzo0Njo1Mi4wMDAwMDAwMDAgKzAwMDAN CisrKyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3JlcGFpci9waGFz ZTQuYwkyMDA4LTAzLTIxIDE2OjA2OjIxLjAwMDAwMDAwMCArMDAwMA0KQEAg LTY4LDcgKzY4LDcgQEANCiAJCW5hbWVzdCA9IFhGU19ESVJfTEVBRl9OQU1F U1RSVUNUKGxlYWYsDQogCQkJSU5UX0dFVChlbnRyeS0+bmFtZWlkeCwgQVJD SF9DT05WRVJUKSk7DQogCQlYRlNfRElSX1NGX0dFVF9ESVJJTk8oJm5hbWVz dC0+aW51bWJlciwgJmxpbm8pOw0KLQkJYmNvcHkobmFtZXN0LT5uYW1lLCBm bmFtZSwgZW50cnktPm5hbWVsZW4pOw0KKwkJbWVtbW92ZShmbmFtZSwgbmFt ZXN0LT5uYW1lLCBlbnRyeS0+bmFtZWxlbik7DQogCQlmbmFtZVtlbnRyeS0+ bmFtZWxlbl0gPSAnXDAnOw0KIA0KIAkJaWYgKGZuYW1lWzBdICE9ICcvJyAm JiAhc3RyY21wKGZuYW1lLCBPUlBIQU5BR0UpKSAgew0KQEAgLTMxNiw3ICsz MTYsNyBAQA0KIAkJdG1wX3NmZSA9IE5VTEw7DQogCQlzZl9lbnRyeSA9IG5l eHRfc2ZlOw0KIAkJWEZTX0RJUl9TRl9HRVRfRElSSU5PKCZzZl9lbnRyeS0+ aW51bWJlciwgJmxpbm8pOw0KLQkJYmNvcHkoc2ZfZW50cnktPm5hbWUsIGZu YW1lLCBzZl9lbnRyeS0+bmFtZWxlbik7DQorCQltZW1tb3ZlKGZuYW1lLCBz Zl9lbnRyeS0+bmFtZSwgc2ZfZW50cnktPm5hbWVsZW4pOw0KIAkJZm5hbWVb c2ZfZW50cnktPm5hbWVsZW5dID0gJ1wwJzsNCiANCiAJCWlmICghc3RyY21w KE9SUEhBTkFHRSwgZm5hbWUpKSAgew0KQEAgLTQ0Nyw3ICs0NDcsNyBAQA0K IA0KIAkJCUlOVF9NT0Qoc2YtPmhkci5jb3VudCwgQVJDSF9DT05WRVJULCAt MSk7DQogDQotCQkJYnplcm8oKHZvaWQgKikgKChfX3BzaW50X3QpIHNmX2Vu dHJ5ICsgdG1wX2xlbiksDQorCQkJbWVtc2V0KCh2b2lkICopICgoX19wc2lu dF90KSBzZl9lbnRyeSArIHRtcF9sZW4pLCAwLA0KIAkJCQl0bXBfZWxlbik7 DQogDQogCQkJLyoNCkBAIC01MzQsNyArNTM0LDcgQEANCiAJCX0NCiAJCWRl cCA9ICh4ZnNfZGlyMl9kYXRhX2VudHJ5X3QgKilwdHI7DQogCQlsaW5vID0g SU5UX0dFVChkZXAtPmludW1iZXIsIEFSQ0hfQ09OVkVSVCk7DQotCQliY29w eShkZXAtPm5hbWUsIGZuYW1lLCBkZXAtPm5hbWVsZW4pOw0KKwkJbWVtbW92 ZShmbmFtZSwgZGVwLT5uYW1lLCBkZXAtPm5hbWVsZW4pOw0KIAkJZm5hbWVb ZGVwLT5uYW1lbGVuXSA9ICdcMCc7DQogDQogCQlpZiAoZm5hbWVbMF0gIT0g Jy8nICYmICFzdHJjbXAoZm5hbWUsIE9SUEhBTkFHRSkpICB7DQpAQCAtNzk3 LDcgKzc5Nyw3IEBADQogCQlzZl9lbnRyeSA9IG5leHRfc2ZlOw0KIAkJbGlu byA9IFhGU19ESVIyX1NGX0dFVF9JTlVNQkVSKHNmLA0KIAkJCVhGU19ESVIy X1NGX0lOVU1CRVJQKHNmX2VudHJ5KSk7DQotCQliY29weShzZl9lbnRyeS0+ bmFtZSwgZm5hbWUsIHNmX2VudHJ5LT5uYW1lbGVuKTsNCisJCW1lbW1vdmUo Zm5hbWUsIHNmX2VudHJ5LT5uYW1lLCBzZl9lbnRyeS0+bmFtZWxlbik7DQog CQlmbmFtZVtzZl9lbnRyeS0+bmFtZWxlbl0gPSAnXDAnOw0KIA0KIAkJaWYg KCFzdHJjbXAoT1JQSEFOQUdFLCBmbmFtZSkpICB7DQpAQCAtOTMxLDcgKzkz MSw3IEBADQogCQkJaWYgKGxpbm8gPiBYRlNfRElSMl9NQVhfU0hPUlRfSU5V TSkNCiAJCQkJc2YtPmhkci5pOGNvdW50LS07DQogDQotCQkJYnplcm8oKHZv aWQgKikgKChfX3BzaW50X3QpIHNmX2VudHJ5ICsgdG1wX2xlbiksDQorCQkJ bWVtc2V0KCh2b2lkICopICgoX19wc2ludF90KSBzZl9lbnRyeSArIHRtcF9s ZW4pLCAwLA0KIAkJCQl0bXBfZWxlbik7DQogDQogCQkJLyoNCkBAIC0xMjky LDcgKzEyOTIsNyBAQA0KIAkJLyoNCiAJCSAqIG5vdyByZXNldCB0aGUgYml0 bWFwIGZvciBhbGwgYWdzDQogCQkgKi8NCi0JCWJ6ZXJvKGJhX2JtYXBbaV0s IHJvdW5kdXAobXAtPm1fc2Iuc2JfYWdibG9ja3MvKE5CQlkvWFJfQkIpLA0K KwkJbWVtc2V0KGJhX2JtYXBbaV0sIDAsIHJvdW5kdXAobXAtPm1fc2Iuc2Jf YWdibG9ja3MvKE5CQlkvWFJfQkIpLA0KIAkJCQkJCXNpemVvZihfX3VpbnQ2 NF90KSkpOw0KIAkJZm9yIChqID0gMDsgaiA8IGFnX2hkcl9ibG9jazsgaisr KQ0KIAkJCXNldF9hZ2Jub19zdGF0ZShtcCwgaSwgaiwgWFJfRV9JTlVTRV9G Uyk7DQpkaWZmIC1ydSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIv cGhhc2U1LmMgeGZzcHJvZ3MtMi43LjExX3N5c3YzLWxlZ2FjeS9yZXBhaXIv cGhhc2U1LmMNCi0tLSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIv cGhhc2U1LmMJMjAwNi0wMS0xNyAwMzo0Njo1Mi4wMDAwMDAwMDAgKzAwMDAN CisrKyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3JlcGFpci9waGFz ZTUuYwkyMDA4LTAzLTIxIDE2OjEyOjA2LjAwMDAwMDAwMCArMDAwMA0KQEAg LTkzLDcgKzkzLDcgQEANCiAJICogZXh0ZW50cyBvZiBmcmVlIGJsb2Nrcy4g IEF0IHRoaXMgcG9pbnQsIHdlIGtub3cNCiAJICogdGhhdCBibG9ja3MgaW4g dGhlIGJpdG1hcCBhcmUgZWl0aGVyIHNldCB0byBhbg0KIAkgKiAiaW4gdXNl IiBzdGF0ZSBvciBzZXQgdG8gdW5rbm93biAoMCkgc2luY2UgdGhlDQotCSAq IGJtYXBzIHdlcmUgYnplcm8nZWQgaW4gcGhhc2UgNCBhbmQgb25seSBibG9j a3MNCisJICogYm1hcHMgd2VyZSB6ZXJvJ2VkIGluIHBoYXNlIDQgYW5kIG9u bHkgYmxvY2tzDQogCSAqIGJlaW5nIHVzZWQgYnkgaW5vZGVzLCBpbm9kZSBi bWFwcywgYWcgaGVhZGVycywNCiAJICogYW5kIHRoZSBmaWxlcyB0aGVtc2Vs dmVzIHdlcmUgcHV0IGludG8gdGhlIGJpdG1hcC4NCiAJICoNCkBAIC02NjQs NyArNjY0LDcgQEANCiAJCSAqIGluaXRpYWxpemUgYmxvY2sgaGVhZGVyDQog CQkgKi8NCiAJCWJ0X2hkciA9IFhGU19CVUZfVE9fQUxMT0NfQkxPQ0sobHB0 ci0+YnVmX3ApOw0KLQkJYnplcm8oYnRfaGRyLCBtcC0+bV9zYi5zYl9ibG9j a3NpemUpOw0KKwkJbWVtc2V0KGJ0X2hkciwgMCwgbXAtPm1fc2Iuc2JfYmxv Y2tzaXplKTsNCiANCiAJCUlOVF9TRVQoYnRfaGRyLT5iYl9tYWdpYywgQVJD SF9DT05WRVJULCBtYWdpYyk7DQogCQlJTlRfU0VUKGJ0X2hkci0+YmJfbGV2 ZWwsIEFSQ0hfQ09OVkVSVCwgbGV2ZWwpOw0KQEAgLTc0MSw3ICs3NDEsNyBA QA0KIAkJICogaW5pdGlhbGl6ZSBibG9jayBoZWFkZXINCiAJCSAqLw0KIAkJ YnRfaGRyID0gWEZTX0JVRl9UT19BTExPQ19CTE9DSyhscHRyLT5idWZfcCk7 DQotCQliemVybyhidF9oZHIsIG1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZSk7DQor CQltZW1zZXQoYnRfaGRyLCAwLCBtcC0+bV9zYi5zYl9ibG9ja3NpemUpOw0K IA0KIAkJSU5UX1NFVChidF9oZHItPmJiX21hZ2ljLCBBUkNIX0NPTlZFUlQs IG1hZ2ljKTsNCiAJCUlOVF9TRVQoYnRfaGRyLT5iYl9sZXZlbCwgQVJDSF9D T05WRVJULCBpKTsNCkBAIC03NzIsNyArNzcyLDcgQEANCiAJCSAqIGJsb2Nr IGluaXRpYWxpemF0aW9uLCBsYXkgaW4gYmxvY2sgaGVhZGVyDQogCQkgKi8N CiAJCWJ0X2hkciA9IFhGU19CVUZfVE9fQUxMT0NfQkxPQ0sobHB0ci0+YnVm X3ApOw0KLQkJYnplcm8oYnRfaGRyLCBtcC0+bV9zYi5zYl9ibG9ja3NpemUp Ow0KKwkJbWVtc2V0KGJ0X2hkciwgMCwgbXAtPm1fc2Iuc2JfYmxvY2tzaXpl KTsNCiANCiAJCUlOVF9TRVQoYnRfaGRyLT5iYl9tYWdpYywgQVJDSF9DT05W RVJULCBtYWdpYyk7DQogCQlidF9oZHItPmJiX2xldmVsID0gMDsNCkBAIC0x MDIxLDcgKzEwMjEsNyBAQA0KIAkJICogaW5pdGlhbGl6ZSBibG9jayBoZWFk ZXINCiAJCSAqLw0KIAkJYnRfaGRyID0gWEZTX0JVRl9UT19JTk9CVF9CTE9D SyhscHRyLT5idWZfcCk7DQotCQliemVybyhidF9oZHIsIG1wLT5tX3NiLnNi X2Jsb2Nrc2l6ZSk7DQorCQltZW1zZXQoYnRfaGRyLCAwLCBtcC0+bV9zYi5z Yl9ibG9ja3NpemUpOw0KIA0KIAkJSU5UX1NFVChidF9oZHItPmJiX21hZ2lj LCBBUkNIX0NPTlZFUlQsIFhGU19JQlRfTUFHSUMpOw0KIAkJSU5UX1NFVChi dF9oZHItPmJiX2xldmVsLCBBUkNIX0NPTlZFUlQsIGxldmVsKTsNCkBAIC0x MDYwLDcgKzEwNjAsNyBAQA0KIAkJCVhGU19BR19EQUREUihtcCwgYWdubywg WEZTX0FHSV9EQUREUihtcCkpLA0KIAkJCW1wLT5tX3NiLnNiX3NlY3RzaXpl L0JCU0laRSk7DQogCWFnaSA9IFhGU19CVUZfVE9fQUdJKGFnaV9idWYpOw0K LQliemVybyhhZ2ksIG1wLT5tX3NiLnNiX3NlY3RzaXplKTsNCisJbWVtc2V0 KGFnaSwgMCwgbXAtPm1fc2Iuc2Jfc2VjdHNpemUpOw0KIA0KIAlJTlRfU0VU KGFnaS0+YWdpX21hZ2ljbnVtLCBBUkNIX0NPTlZFUlQsIFhGU19BR0lfTUFH SUMpOw0KIAlJTlRfU0VUKGFnaS0+YWdpX3ZlcnNpb25udW0sIEFSQ0hfQ09O VkVSVCwgWEZTX0FHSV9WRVJTSU9OKTsNCkBAIC0xMTI0LDcgKzExMjQsNyBA QA0KIAkJICogaW5pdGlhbGl6ZSBibG9jayBoZWFkZXINCiAJCSAqLw0KIAkJ YnRfaGRyID0gWEZTX0JVRl9UT19JTk9CVF9CTE9DSyhscHRyLT5idWZfcCk7 DQotCQliemVybyhidF9oZHIsIG1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZSk7DQor CQltZW1zZXQoYnRfaGRyLCAwLCBtcC0+bV9zYi5zYl9ibG9ja3NpemUpOw0K IA0KIAkJSU5UX1NFVChidF9oZHItPmJiX21hZ2ljLCBBUkNIX0NPTlZFUlQs IFhGU19JQlRfTUFHSUMpOw0KIAkJSU5UX1NFVChidF9oZHItPmJiX2xldmVs LCBBUkNIX0NPTlZFUlQsIGkpOw0KQEAgLTExNTIsNyArMTE1Miw3IEBADQog CQkgKiBibG9jayBpbml0aWFsaXphdGlvbiwgbGF5IGluIGJsb2NrIGhlYWRl cg0KIAkJICovDQogCQlidF9oZHIgPSBYRlNfQlVGX1RPX0lOT0JUX0JMT0NL KGxwdHItPmJ1Zl9wKTsNCi0JCWJ6ZXJvKGJ0X2hkciwgbXAtPm1fc2Iuc2Jf YmxvY2tzaXplKTsNCisJCW1lbXNldChidF9oZHIsIDAsIG1wLT5tX3NiLnNi X2Jsb2Nrc2l6ZSk7DQogDQogCQlJTlRfU0VUKGJ0X2hkci0+YmJfbWFnaWMs IEFSQ0hfQ09OVkVSVCwgWEZTX0lCVF9NQUdJQyk7DQogCQlidF9oZHItPmJi X2xldmVsID0gMDsNCkBAIC0xMjM5LDcgKzEyMzksNyBAQA0KIAkJCVhGU19B R19EQUREUihtcCwgYWdubywgWEZTX0FHRl9EQUREUihtcCkpLA0KIAkJCW1w LT5tX3NiLnNiX3NlY3RzaXplL0JCU0laRSk7DQogCWFnZiA9IFhGU19CVUZf VE9fQUdGKGFnZl9idWYpOw0KLQliemVybyhhZ2YsIG1wLT5tX3NiLnNiX3Nl Y3RzaXplKTsNCisJbWVtc2V0KGFnZiwgMCwgbXAtPm1fc2Iuc2Jfc2VjdHNp emUpOw0KIA0KICNpZmRlZiBYUl9CTERfRlJFRV9UUkFDRQ0KIAlmcHJpbnRm KHN0ZGVyciwgImFnZiA9IDB4JXgsIGFnZl9idWYtPmJfdW4uYl9hZGRyID0g MHgleFxuIiwNCkBAIC0xMjg3LDcgKzEyODcsNyBAQA0KIAkJCQlYRlNfQUdf REFERFIobXAsIGFnbm8sIFhGU19BR0ZMX0RBRERSKG1wKSksDQogCQkJCW1w LT5tX3NiLnNiX3NlY3RzaXplL0JCU0laRSk7DQogCQlhZ2ZsID0gWEZTX0JV Rl9UT19BR0ZMKGFnZmxfYnVmKTsNCi0JCWJ6ZXJvKGFnZmwsIG1wLT5tX3Ni LnNiX3NlY3RzaXplKTsNCisJCW1lbXNldChhZ2ZsLCAwLCBtcC0+bV9zYi5z Yl9zZWN0c2l6ZSk7DQogCQkvKg0KIAkJICogb2ssIG5vdyBncmFiIGFzIG1h bnkgYmxvY2tzIGFzIHdlIGNhbg0KIAkJICovDQpkaWZmIC1ydSB4ZnNwcm9n cy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIvcGhhc2U2LmMgeGZzcHJvZ3MtMi43 LjExX3N5c3YzLWxlZ2FjeS9yZXBhaXIvcGhhc2U2LmMNCi0tLSB4ZnNwcm9n cy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIvcGhhc2U2LmMJMjAwNi0wMS0xNyAw Mzo0Njo1Mi4wMDAwMDAwMDAgKzAwMDANCisrKyB4ZnNwcm9ncy0yLjcuMTFf c3lzdjMtbGVnYWN5L3JlcGFpci9waGFzZTYuYwkyMDA4LTAzLTIxIDE2OjA2 OjIxLjAwMDAwMDAwMCArMDAwMA0KQEAgLTM0MSw3ICszNDEsNyBAQA0KIAkJ CWVycm9yKTsNCiAJfQ0KIA0KLQliemVybygmaXAtPmlfZCwgc2l6ZW9mKHhm c19kaW5vZGVfY29yZV90KSk7DQorCW1lbXNldCgmaXAtPmlfZCwgMCwgc2l6 ZW9mKHhmc19kaW5vZGVfY29yZV90KSk7DQogDQogCWlwLT5pX2QuZGlfbWFn aWMgPSBYRlNfRElOT0RFX01BR0lDOw0KIAlpcC0+aV9kLmRpX21vZGUgPSBT X0lGUkVHOw0KQEAgLTQ2MSw3ICs0NjEsNyBAQA0KIAkJCXJldHVybigxKTsN CiAJCX0NCiANCi0JCWJjb3B5KGJtcCwgWEZTX0JVRl9QVFIoYnApLCBtcC0+ bV9zYi5zYl9ibG9ja3NpemUpOw0KKwkJbWVtbW92ZShYRlNfQlVGX1BUUihi cCksIGJtcCwgbXAtPm1fc2Iuc2JfYmxvY2tzaXplKTsNCiANCiAJCWxpYnhm c190cmFuc19sb2dfYnVmKHRwLCBicCwgMCwgbXAtPm1fc2Iuc2JfYmxvY2tz aXplIC0gMSk7DQogDQpAQCAtNTMxLDcgKzUzMSw3IEBADQogCQkJcmV0dXJu KDEpOw0KIAkJfQ0KIA0KLQkJYmNvcHkoc21wLCBYRlNfQlVGX1BUUihicCks IG1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZSk7DQorCQltZW1tb3ZlKFhGU19CVUZf UFRSKGJwKSwgc21wLCBtcC0+bV9zYi5zYl9ibG9ja3NpemUpOw0KIA0KIAkJ bGlieGZzX3RyYW5zX2xvZ19idWYodHAsIGJwLCAwLCBtcC0+bV9zYi5zYl9i bG9ja3NpemUgLSAxKTsNCiANCkBAIC01NzYsNyArNTc2LDcgQEANCiAJCQll cnJvcik7DQogCX0NCiANCi0JYnplcm8oJmlwLT5pX2QsIHNpemVvZih4ZnNf ZGlub2RlX2NvcmVfdCkpOw0KKwltZW1zZXQoJmlwLT5pX2QsIDAsIHNpemVv Zih4ZnNfZGlub2RlX2NvcmVfdCkpOw0KIA0KIAlpcC0+aV9kLmRpX21hZ2lj ID0gWEZTX0RJTk9ERV9NQUdJQzsNCiAJaXAtPmlfZC5kaV9tb2RlID0gU19J RlJFRzsNCkBAIC02NzQsNyArNjc0LDcgQEANCiAJLyoNCiAJICogdGFrZSBj YXJlIG9mIHRoZSBjb3JlIC0tIGluaXRpYWxpemF0aW9uIGZyb20geGZzX2lh bGxvYygpDQogCSAqLw0KLQliemVybygmaXAtPmlfZCwgc2l6ZW9mKHhmc19k aW5vZGVfY29yZV90KSk7DQorCW1lbXNldCgmaXAtPmlfZCwgMCwgc2l6ZW9m KHhmc19kaW5vZGVfY29yZV90KSk7DQogDQogCWlwLT5pX2QuZGlfbWFnaWMg PSBYRlNfRElOT0RFX01BR0lDOw0KIAlpcC0+aV9kLmRpX21vZGUgPSAoX191 aW50MTZfdCkgbW9kZXxTX0lGRElSOw0KQEAgLTEyMzEsNyArMTIzMSw3IEBA DQogCS8qDQogCSAqIHNuYWcgdGhlIGluZm8gd2UgbmVlZCBvdXQgb2YgdGhl IGRpcmVjdG9yeSB0aGVuIHJlbGVhc2UgYWxsIGJ1ZmZlcnMNCiAJICovDQot CWJjb3B5KG5hbWVzdC0+bmFtZSwgZm5hbWUsIGVudHJ5LT5uYW1lbGVuKTsN CisJbWVtbW92ZShmbmFtZSwgbmFtZXN0LT5uYW1lLCBlbnRyeS0+bmFtZWxl bik7DQogCWZuYW1lW2VudHJ5LT5uYW1lbGVuXSA9ICdcMCc7DQogCSpoYXNo dmFsID0gSU5UX0dFVChlbnRyeS0+aGFzaHZhbCwgQVJDSF9DT05WRVJUKTsN CiAJbmFtZWxlbiA9IGVudHJ5LT5uYW1lbGVuOw0KQEAgLTEzNDEsNyArMTM0 MSw3IEBADQogCQlqdW5raXQgPSAwOw0KIA0KIAkJWEZTX0RJUl9TRl9HRVRf RElSSU5PKCZuYW1lc3QtPmludW1iZXIsICZsaW5vKTsNCi0JCWJjb3B5KG5h bWVzdC0+bmFtZSwgZm5hbWUsIGVudHJ5LT5uYW1lbGVuKTsNCisJCW1lbW1v dmUoZm5hbWUsIG5hbWVzdC0+bmFtZSwgZW50cnktPm5hbWVsZW4pOw0KIAkJ Zm5hbWVbZW50cnktPm5hbWVsZW5dID0gJ1wwJzsNCiANCiAJCUFTU0VSVChs aW5vICE9IE5VTExGU0lOTyk7DQpAQCAtMTY1Niw3ICsxNjU2LDcgQEANCiAJ bGlieGZzX3RyYW5zX2lqb2luKHRwLCBpcCwgMCk7DQogCWxpYnhmc190cmFu c19paG9sZCh0cCwgaXApOw0KIAlsaWJ4ZnNfZGFfYmpvaW4odHAsIGJwKTsN Ci0JYnplcm8oJmFyZ3MsIHNpemVvZihhcmdzKSk7DQorCW1lbXNldCgmYXJn cywgMCwgc2l6ZW9mKGFyZ3MpKTsNCiAJWEZTX0JNQVBfSU5JVCgmZmxpc3Qs ICZmaXJzdGJsb2NrKTsNCiAJYXJncy5kcCA9IGlwOw0KIAlhcmdzLnRyYW5z ID0gdHA7DQpAQCAtMTkwNyw3ICsxOTA3LDcgQEANCiAJCQljb250aW51ZTsN CiAJCX0NCiAJCWp1bmtpdCA9IDA7DQotCQliY29weShkZXAtPm5hbWUsIGZu YW1lLCBkZXAtPm5hbWVsZW4pOw0KKwkJbWVtbW92ZShmbmFtZSwgZGVwLT5u YW1lLCBkZXAtPm5hbWVsZW4pOw0KIAkJZm5hbWVbZGVwLT5uYW1lbGVuXSA9 ICdcMCc7DQogCQlBU1NFUlQoSU5UX0dFVChkZXAtPmludW1iZXIsIEFSQ0hf Q09OVkVSVCkgIT0gTlVMTEZTSU5PKTsNCiAJCS8qDQpAQCAtMjM1MCw3ICsy MzUwLDcgQEANCiAJfQ0KIA0KIAkvKiBhbGxvY2F0ZSBibG9ja3MgZm9yIGJ0 cmVlICovDQotCWJ6ZXJvKCZhcmdzLCBzaXplb2YoYXJncykpOw0KKwltZW1z ZXQoJmFyZ3MsIDAsIHNpemVvZihhcmdzKSk7DQogCWFyZ3MudHJhbnMgPSB0 cDsNCiAJYXJncy5kcCA9IGlwOw0KIAlhcmdzLndoaWNoZm9yayA9IFhGU19E QVRBX0ZPUks7DQpAQCAtMjM2NCw3ICsyMzY0LDcgQEANCiAJCS8qIE5PVFJF QUNIRUQgKi8NCiAJfQ0KIAlsZWFmID0gbGJwLT5kYXRhOw0KLQliemVybyhs ZWFmLCBtcC0+bV9kaXJibGtzaXplKTsNCisJbWVtc2V0KGxlYWYsIDAsIG1w LT5tX2RpcmJsa3NpemUpOw0KIAlJTlRfU0VUKGxlYWYtPmhkci5pbmZvLm1h Z2ljLCBBUkNIX0NPTlZFUlQsIFhGU19ESVIyX0xFQUZOX01BR0lDKTsNCiAJ bGlieGZzX2RhX2xvZ19idWYodHAsIGxicCwgMCwgbXAtPm1fZGlyYmxrc2l6 ZSAtIDEpOw0KIAlsaWJ4ZnNfYm1hcF9maW5pc2goJnRwLCAmZmxpc3QsIGZp cnN0YmxvY2ssICZjb21taXR0ZWQpOw0KQEAgLTIzODEsNyArMjM4MSw3IEBA DQogCQlsaWJ4ZnNfdHJhbnNfaWpvaW4odHAsIGlwLCAwKTsNCiAJCWxpYnhm c190cmFuc19paG9sZCh0cCwgaXApOw0KIAkJWEZTX0JNQVBfSU5JVCgmZmxp c3QsICZmaXJzdGJsb2NrKTsNCi0JCWJ6ZXJvKCZhcmdzLCBzaXplb2YoYXJn cykpOw0KKwkJbWVtc2V0KCZhcmdzLCAwLCBzaXplb2YoYXJncykpOw0KIAkJ YXJncy50cmFucyA9IHRwOw0KIAkJYXJncy5kcCA9IGlwOw0KIAkJYXJncy53 aGljaGZvcmsgPSBYRlNfREFUQV9GT1JLOw0KQEAgLTIzOTgsNyArMjM5OCw3 IEBADQogCQkJLyogTk9UUkVBQ0hFRCAqLw0KIAkJfQ0KIAkJZnJlZSA9IGZi cC0+ZGF0YTsNCi0JCWJ6ZXJvKGZyZWUsIG1wLT5tX2RpcmJsa3NpemUpOw0K KwkJbWVtc2V0KGZyZWUsIDAsIG1wLT5tX2RpcmJsa3NpemUpOw0KIAkJSU5U X1NFVChmcmVlLT5oZHIubWFnaWMsIEFSQ0hfQ09OVkVSVCwgWEZTX0RJUjJf RlJFRV9NQUdJQyk7DQogCQlJTlRfU0VUKGZyZWUtPmhkci5maXJzdGRiLCBB UkNIX0NPTlZFUlQsIGkpOw0KIAkJSU5UX1NFVChmcmVlLT5oZHIubnZhbGlk LCBBUkNIX0NPTlZFUlQsIFhGU19ESVIyX01BWF9GUkVFX0JFU1RTKG1wKSk7 DQpAQCAtMjQ3Myw3ICsyNDczLDcgQEANCiAJCQltcC0+bV9kaXJibGtzaXpl KTsNCiAJCWV4aXQoMSk7DQogCX0NCi0JYmNvcHkoYnAtPmRhdGEsIGRhdGEs IG1wLT5tX2RpcmJsa3NpemUpOw0KKwltZW1tb3ZlKGRhdGEsIGJwLT5kYXRh LCBtcC0+bV9kaXJibGtzaXplKTsNCiAJcHRyID0gKGNoYXIgKilkYXRhLT51 Ow0KIAlpZiAoSU5UX0dFVChkYXRhLT5oZHIubWFnaWMsIEFSQ0hfQ09OVkVS VCkgPT0gWEZTX0RJUjJfQkxPQ0tfTUFHSUMpIHsNCiAJCWJ0cCA9IFhGU19E SVIyX0JMT0NLX1RBSUxfUChtcCwgKHhmc19kaXIyX2Jsb2NrX3QgKilkYXRh KTsNCkBAIC0yNDk1LDcgKzI0OTUsNyBAQA0KIAlsaWJ4ZnNfZGFfYmhvbGQo dHAsIGZicCk7DQogCVhGU19CTUFQX0lOSVQoJmZsaXN0LCAmZmlyc3RibG9j ayk7DQogCW5lZWRsb2cgPSBuZWVkc2NhbiA9IDA7DQotCWJ6ZXJvKCgoeGZz X2RpcjJfZGF0YV90ICopKGJwLT5kYXRhKSktPmhkci5iZXN0ZnJlZSwNCisJ bWVtc2V0KCgoeGZzX2RpcjJfZGF0YV90ICopKGJwLT5kYXRhKSktPmhkci5i ZXN0ZnJlZSwgMCwNCiAJCXNpemVvZihkYXRhLT5oZHIuYmVzdGZyZWUpKTsN CiAJbGlieGZzX2RpcjJfZGF0YV9tYWtlX2ZyZWUodHAsIGJwLCAoeGZzX2Rp cjJfZGF0YV9hb2ZmX3Qpc2l6ZW9mKGRhdGEtPmhkciksDQogCQltcC0+bV9k aXJibGtzaXplIC0gc2l6ZW9mKGRhdGEtPmhkciksICZuZWVkbG9nLCAmbmVl ZHNjYW4pOw0KQEAgLTI4NTYsNyArMjg1Niw3IEBADQogCQkJfQ0KIAkJfQ0K IA0KLQkJYmNvcHkoc2ZfZW50cnktPm5hbWUsIGZuYW1lLCBzZl9lbnRyeS0+ bmFtZWxlbik7DQorCQltZW1tb3ZlKGZuYW1lLCBzZl9lbnRyeS0+bmFtZSwg c2ZfZW50cnktPm5hbWVsZW4pOw0KIAkJZm5hbWVbc2ZfZW50cnktPm5hbWVs ZW5dID0gJ1wwJzsNCiANCiAJCUFTU0VSVChub19tb2RpZnkgfHwgbGlubyAh PSBOVUxMRlNJTk8pOw0KQEAgLTI5NjcsNyArMjk2Nyw3IEBADQogCQkJCW1l bW1vdmUoc2ZfZW50cnksIHRtcF9zZmUsIHRtcF9sZW4pOw0KIA0KIAkJCQlJ TlRfTU9EKHNmLT5oZHIuY291bnQsIEFSQ0hfQ09OVkVSVCwgLTEpOw0KLQkJ CQliemVybygodm9pZCAqKSAoKF9fcHNpbnRfdCkgc2ZfZW50cnkgKyB0bXBf bGVuKSwNCisJCQkJbWVtc2V0KCh2b2lkICopICgoX19wc2ludF90KSBzZl9l bnRyeSArIHRtcF9sZW4pLCAwLA0KIAkJCQkJCXRtcF9lbGVuKTsNCiANCiAJ CQkJLyoNCkBAIC0zMDcxLDcgKzMwNzEsNyBAQA0KIA0KIAkJWEZTX0RJUl9T Rl9HRVRfRElSSU5PKCZzZl9lbnRyeS0+aW51bWJlciwgJmxpbm8pOw0KIA0K LQkJYmNvcHkoc2ZfZW50cnktPm5hbWUsIGZuYW1lLCBzZl9lbnRyeS0+bmFt ZWxlbik7DQorCQltZW1tb3ZlKGZuYW1lLCBzZl9lbnRyeS0+bmFtZSwgc2Zf ZW50cnktPm5hbWVsZW4pOw0KIAkJZm5hbWVbc2ZfZW50cnktPm5hbWVsZW5d ID0gJ1wwJzsNCiANCiAJCWlmIChzZl9lbnRyeS0+bmFtZVswXSA9PSAnLycp ICB7DQpAQCAtMzA4Nyw3ICszMDg3LDcgQEANCiAJCQkJbWVtbW92ZShzZl9l bnRyeSwgdG1wX3NmZSwgdG1wX2xlbik7DQogDQogCQkJCUlOVF9NT0Qoc2Yt Pmhkci5jb3VudCwgQVJDSF9DT05WRVJULCAtMSk7DQotCQkJCWJ6ZXJvKCh2 b2lkICopICgoX19wc2ludF90KSBzZl9lbnRyeSArIHRtcF9sZW4pLA0KKwkJ CQltZW1zZXQoKHZvaWQgKikgKChfX3BzaW50X3QpIHNmX2VudHJ5ICsgdG1w X2xlbiksIDAsDQogCQkJCQkJdG1wX2VsZW4pOw0KIA0KIAkJCQkvKg0KQEAg LTMyNDIsNyArMzI0Miw3IEBADQogCQkJfQ0KIAkJfQ0KIA0KLQkJYmNvcHko c2ZlcC0+bmFtZSwgZm5hbWUsIHNmZXAtPm5hbWVsZW4pOw0KKwkJbWVtbW92 ZShmbmFtZSwgc2ZlcC0+bmFtZSwgc2ZlcC0+bmFtZWxlbik7DQogCQlmbmFt ZVtzZmVwLT5uYW1lbGVuXSA9ICdcMCc7DQogDQogCQlBU1NFUlQobm9fbW9k aWZ5IHx8IChsaW5vICE9IE5VTExGU0lOTyAmJiBsaW5vICE9IDApKTsNCkBA IC0zMzYzLDcgKzMzNjMsNyBAQA0KIAkJCQltZW1tb3ZlKHNmZXAsIHRtcF9z ZmVwLCB0bXBfbGVuKTsNCiANCiAJCQkJSU5UX01PRChzZnAtPmhkci5jb3Vu dCwgQVJDSF9DT05WRVJULCAtMSk7DQotCQkJCWJ6ZXJvKCh2b2lkICopICgo X19wc2ludF90KSBzZmVwICsgdG1wX2xlbiksDQorCQkJCW1lbXNldCgodm9p ZCAqKSAoKF9fcHNpbnRfdCkgc2ZlcCArIHRtcF9sZW4pLCAwLA0KIAkJCQkJ CXRtcF9lbGVuKTsNCiANCiAJCQkJLyoNCkBAIC0zODc5LDggKzM4NzksOCBA QA0KIAlpbnQJCQlpOw0KIAlpbnQJCQlqOw0KIA0KLQliemVybygmemVyb2Ny LCBzaXplb2Yoc3RydWN0IGNyZWQpKTsNCi0JYnplcm8oJnplcm9mc3gsIHNp emVvZihzdHJ1Y3QgZnN4YXR0cikpOw0KKwltZW1zZXQoJnplcm9jciwgMCwg c2l6ZW9mKHN0cnVjdCBjcmVkKSk7DQorCW1lbXNldCgmemVyb2ZzeCwgMCwg c2l6ZW9mKHN0cnVjdCBmc3hhdHRyKSk7DQogDQogCWRvX2xvZyhfKCJQaGFz ZSA2IC0gY2hlY2sgaW5vZGUgY29ubmVjdGl2aXR5Li4uXG4iKSk7DQogDQpk aWZmIC1ydSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxsYS9yZXBhaXIvcnQuYyB4 ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3JlcGFpci9ydC5jDQotLS0g eGZzcHJvZ3MtMi43LjExX3ZhbmlsbGEvcmVwYWlyL3J0LmMJMjAwNi0wMS0x NyAwMzo0Njo1Mi4wMDAwMDAwMDAgKzAwMDANCisrKyB4ZnNwcm9ncy0yLjcu MTFfc3lzdjMtbGVnYWN5L3JlcGFpci9ydC5jCTIwMDgtMDMtMjEgMTU6MTQ6 MTMuMDAwMDAwMDAwICswMDAwDQpAQCAtMjc1LDcgKzI3NSw3IEBADQogCQkJ Y29udGludWU7DQogCQl9DQogCQlieXRlcyA9IGJwLT5iX3VuLmJfYWRkcjsN Ci0JCWJjb3B5KGJ5dGVzLCAoY2hhciAqKXN1bWZpbGUgKyBzdW1ibm8gKiBt cC0+bV9zYi5zYl9ibG9ja3NpemUsDQorCQltZW1tb3ZlKChjaGFyICopc3Vt ZmlsZSArIHN1bWJubyAqIG1wLT5tX3NiLnNiX2Jsb2Nrc2l6ZSwgYnl0ZXMs DQogCQkJbXAtPm1fc2Iuc2JfYmxvY2tzaXplKTsNCiAJCWxpYnhmc19wdXRi dWYoYnApOw0KIAl9DQpkaWZmIC1ydSB4ZnNwcm9ncy0yLjcuMTFfdmFuaWxs YS9yZXBhaXIvc2IuYyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3Jl cGFpci9zYi5jDQotLS0geGZzcHJvZ3MtMi43LjExX3ZhbmlsbGEvcmVwYWly L3NiLmMJMjAwNi0wMS0xNyAwMzo0Njo1Mi4wMDAwMDAwMDAgKzAwMDANCisr KyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5L3JlcGFpci9zYi5jCTIw MDgtMDMtMjEgMTY6MTA6MTAuMDAwMDAwMDAwICswMDAwDQpAQCAtNzcsNyAr NzcsNyBAQA0KIAlkZXN0LT5zYl9mZGJsb2NrcyA9IDA7DQogCWRlc3QtPnNi X2ZyZXh0ZW50cyA9IDA7DQogDQotCWJ6ZXJvKHNvdXJjZS0+c2JfZm5hbWUs IDEyKTsNCisJbWVtc2V0KHNvdXJjZS0+c2JfZm5hbWUsIDAsIDEyKTsNCiB9 DQogDQogLyoNCkBAIC0xMDUsNyArMTA1LDcgQEANCiAJCWV4aXQoMSk7DQog CX0NCiANCi0JYnplcm8oJmJ1ZnNiLCBzaXplb2YoeGZzX3NiX3QpKTsNCisJ bWVtc2V0KCZidWZzYiwgMCwgc2l6ZW9mKHhmc19zYl90KSk7DQogCXJldHZh bCA9IDA7DQogCWRpcnR5ID0gMDsNCiAJYnNpemUgPSAwOw0KQEAgLTE0NCw3 ICsxNDQsNyBAQA0KIAkJCSAqIGZvdW5kIG9uZS4gIG5vdyB2ZXJpZnkgaXQg YnkgbG9va2luZw0KIAkJCSAqIGZvciBvdGhlciBzZWNvbmRhcmllcy4NCiAJ CQkgKi8NCi0JCQliY29weSgmYnVmc2IsIHJzYiwgc2l6ZW9mKHhmc19zYl90 KSk7DQorCQkJbWVtbW92ZShyc2IsICZidWZzYiwgc2l6ZW9mKHhmc19zYl90 KSk7DQogCQkJcnNiLT5zYl9pbnByb2dyZXNzID0gMDsNCiAJCQljbGVhcl9z dW5pdCA9IDE7DQogDQpAQCAtNTc2LDcgKzU3Niw3IEBADQogdm9pZA0KIGdl dF9zYl9nZW9tZXRyeShmc19nZW9tZXRyeV90ICpnZW8sIHhmc19zYl90ICpz YnApDQogew0KLQliemVybyhnZW8sIHNpemVvZihmc19nZW9tZXRyeV90KSk7 DQorCW1lbXNldChnZW8sIDAsIHNpemVvZihmc19nZW9tZXRyeV90KSk7DQog DQogCS8qDQogCSAqIGJsaW5kbHkgc2V0IGZpZWxkcyB0aGF0IHdlIGtub3cg YXJlIGFsd2F5cyBnb29kDQpAQCAtNjQzLDcgKzY0Myw3IEBADQogCSAqIHN1 cGVyYmxvY2sgZmllbGRzIGxvY2F0ZWQgYWZ0ZXIgc2Jfd2lkdGhmaWVsZHMg Z2V0IHNldA0KIAkgKiBpbnRvIHRoZSBnZW9tZXRyeSBzdHJ1Y3R1cmUgb25s eSBpZiB3ZSBjYW4gZGV0ZXJtaW5lDQogCSAqIGZyb20gdGhlIGZlYXR1cmVz IGVuYWJsZWQgaW4gdGhpcyBzdXBlcmJsb2NrIHdoZXRoZXINCi0JICogb3Ig bm90IHRoZSBzZWN0b3Igd2FzIGJ6ZXJvJ2QgYXQgbWtmcyB0aW1lLg0KKwkg KiBvciBub3QgdGhlIHNlY3RvciB3YXMgemVybydkIGF0IG1rZnMgdGltZS4N CiAJICovDQogCWlmICgoIXByZV82NV9iZXRhICYmIChzYnAtPnNiX3ZlcnNp b25udW0gJiBYUl9HT09EX1NFQ1NCX1ZOTUFTSykpIHx8DQogCSAgICAocHJl XzY1X2JldGEgJiYgKHNicC0+c2JfdmVyc2lvbm51bSAmIFhSX0FMUEhBX1NF Q1NCX1ZOTUFTSykpKSB7DQpkaWZmIC1ydSB4ZnNwcm9ncy0yLjcuMTFfdmFu aWxsYS9ydGNwL3hmc19ydGNwLmMgeGZzcHJvZ3MtMi43LjExX3N5c3YzLWxl Z2FjeS9ydGNwL3hmc19ydGNwLmMNCi0tLSB4ZnNwcm9ncy0yLjcuMTFfdmFu aWxsYS9ydGNwL3hmc19ydGNwLmMJMjAwNi0wMS0xNyAwMzo0Njo1Mi4wMDAw MDAwMDAgKzAwMDANCisrKyB4ZnNwcm9ncy0yLjcuMTFfc3lzdjMtbGVnYWN5 L3J0Y3AveGZzX3J0Y3AuYwkyMDA4LTAzLTIxIDE2OjA2OjIxLjAwMDAwMDAw MCArMDAwMA0KQEAgLTM2NSw3ICszNjUsNyBAQA0KIAkJCXJldHVybiggLTEg KTsNCiAJCX0NCiANCi0JCWJ6ZXJvKCBmYnVmLCBpb3N6KTsNCisJCW1lbXNl dCggZmJ1ZiwgMCwgaW9zeik7DQogCX0NCiANCiAJY2xvc2UoZnJvbWZkKTsN Cg== --=-zYTwdJq22U6LZJFdfpPz-- --=-NqQpxZTxc9RLiJilMgMP Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (GNU/Linux) iD8DBQBH5J3HKoUGSidwLE4RAkwrAJ97KD68RQQE27bM56FN2iux7dNJwgCaAwSt QbvltoXIg1urmpcd/mR6N88= =9pcy -----END PGP SIGNATURE----- --=-NqQpxZTxc9RLiJilMgMP--