Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nZaKu-0007FS-Jb for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Mar 2022 15:34:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nZaJv-0001ac-FQ for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Mar 2022 15:33:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nZaJu-0001aR-Hs for pgsql-hackers@lists.postgresql.org; Wed, 30 Mar 2022 15:33:15 +0000 Received: from mail-40131.protonmail.ch ([185.70.40.131]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nZaJn-0000wr-E7 for pgsql-hackers@lists.postgresql.org; Wed, 30 Mar 2022 15:33:13 +0000 Date: Wed, 30 Mar 2022 15:32:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pm.me; s=protonmail2; t=1648654379; bh=36csVQQoKLmiSQam3QEFryb2xe0WP0JTLqRnIRgnAYU=; h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To: References:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID; b=UUX6bwUeLYhz/oPmPi306xHrGmCCfmkd5TpP0q84KsKT346NDUi1oL3EXnz+GLTNz aCGUjW8peL8AiTxYI3PFR8XNgULSVwKgfg4Mk3WTWWnIKkJNJ1s0UeEMvGEYNh03Tm 4pz0CPr7j6b1M/iQE6pYQnkfmP4F1D04ohTz1r//gwEtQlbIGzsTUCija52vCJpSn3 Tymjj+WFR1iGl2lgkAPM94arg8v/m16byDUmHu16CXpdytLl80+7L5lp61yAhDa7ik WlT2Ixo4AYvK5wEwNjInAS9lZXVwT5/nBqCDQyYWOx8Ez2MuSDVKkCwYNzSYxIHAeg bSN1sPIwLcGwg== To: Michael Paquier From: gkokolatos@pm.me Cc: Justin Pryzby , Rachel Heaton , Greg Stark , pgsql-hackers@lists.postgresql.org Reply-To: gkokolatos@pm.me Subject: Re: Add LZ4 compression in pg_dump Message-ID: In-Reply-To: References: <20220325132253.GD28503@telsasoft.com> <20220326061441.GH28503@telsasoft.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_x9AR1SGzaggd2kko0pcFe9r7F3FzUZvfIVMFbWhiKvM" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --b1_x9AR1SGzaggd2kko0pcFe9r7F3FzUZvfIVMFbWhiKvM Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable ------- Original Message ------- On Wednesday, March 30th, 2022 at 7:54 AM, Michael Paquier wrote: > On Tue, Mar 29, 2022 at 09:46:27AM +0000, gkokolatos@pm.me wrote: > > On Tuesday, March 29th, 2022 at 9:27 AM, Michael Paquier michael@paquie= r.xyz wrote: > > > On Sat, Mar 26, 2022 at 01:14:41AM -0500, Justin Pryzby wrote: > > > + command_fails_like( > > > + [ 'pg_dump', '--compress', '1', '--format', 'tar' ], > > > This addition depending on HAVE_LIBZ is a good thing as a reminder of > > > any work that could be done in 0002. Now that's waiting for 20 years > > > so I would not hold my breath on this support. I think that this > > > could be just applied first, with 0002 on top of it, as a first > > > improvement. > > > > Excellent, thank you. > > I have applied the test for --compress and --format=3Dtar, separating it > from the rest. Thank you. > While moving on with 0002, I have noticed the following in > > _StartBlob(): > if (AH->compression !=3D 0) > sfx =3D ".gz"; > else > sfx =3D ""; > > Shouldn't this bit also be simplified, adding a fatal() like the other > code paths, for safety? Agreed. Fixed. > > > + compress_cmd =3D> [ > > > + $ENV{'GZIP_PROGRAM'}, > > > + '-f', > > > [...] > > > + $ENV{'GZIP_PROGRAM'}, > > > + '-k', '-d', > > > -f and -d are available everywhere I looked at, but is -k/--keep a > > > portable choice with a gzip command? I don't see this option in > > > OpenBSD, for one. So this test is going to cause problems on those > > > buildfarm machines, at least. Couldn't this part be replaced by a > > > simple --test to check that what has been compressed is in correct > > > shape? We know that this works, based on our recent experiences with > > > the other tests. > > > > I would argue that the simple '--test' will not do in this case, as the > > TAP tests do need a file named .sql to compare the contents with. > > This file is generated either directly by pg_dump itself, or by running > > pg_restore on pg_dump's output. In the case of compression pg_dump will > > generate a .sql. which can not be > > used in the comparison tests. So the intention of this block, is not to > > simply test for validity, but to also decompress pg_dump's output for i= t > > to be able to be used. > > Ahh, I see, thanks. I would add a comment about that in the area of > compression_gzip_plain_format. Agreed. Comment added. > + my $supports_compression =3D check_pg_config("#define HAVE_LIBZ 1"); > > This part could be moved within the if block a couple of lines down. I moved it instead out of the for loop above to not have to call it on each iteration. > + my $compress_program =3D $ENV{GZIP_PROGRAM}; > > It seems to me that it is enough to rely on {compress_cmd}, hence > there should be no need for $compress_program, no? Maybe not. We don't want to the tests to fail if the utility is not installed. That becomes even more evident as more methods are added. However I realized that the presence of the environmental variable does not guarrantee that the utility is actually installed. In the attached, the existance of the utility is based on the return value of system_log(). > It seems to me that we should have a description for compress_cmd at > the top of 002_pg_dump.pl (close to "Definition of the pg_dump runs to > make"). There is an order dependency with restore_cmd. Agreed. Comment added. Cheers, //Georgios --b1_x9AR1SGzaggd2kko0pcFe9r7F3FzUZvfIVMFbWhiKvM Content-Type: text/x-patch; name=v4-0002-Remove-unsupported-bitrot-compression-from-pg_dum.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0002-Remove-unsupported-bitrot-compression-from-pg_dum.patch RnJvbSAwNzY4ZjIwOGE5Zjg0NjJkNGIxYWQ4MjEwZWIxYTk3N2FhZDE1YjQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IFdlZCwgMzAgTWFyIDIwMjIgMTU6MDA6MDIgKzAwMDAKU3ViamVjdDogW1BBVENIIHY0 IDIvNF0gUmVtb3ZlIHVuc3VwcG9ydGVkL2JpdHJvdCBjb21wcmVzc2lvbiBmcm9tIHBnX2R1bXAg dGFyCgotLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMgfCA4OSArKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCsp LCA3OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw X3Rhci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF90YXIuYwppbmRleCBjY2ZiZTM0NmJl Li4yNDkxYTA5MWI5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5j CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMKQEAgLTY1LDExICs2NSw2IEBA IHN0YXRpYyB2b2lkIF9FbmRCbG9icyhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKTsK IAogdHlwZWRlZiBzdHJ1Y3QKIHsKLSNpZmRlZiBIQVZFX0xJQloKLQlnekZpbGUJCXpGSDsKLSNl bHNlCi0JRklMRQkgICAqekZIOwotI2VuZGlmCiAJRklMRQkgICAqbkZIOwogCUZJTEUJICAgKnRh ckZIOwogCUZJTEUJICAgKnRtcEZIOwpAQCAtMjQ4LDE0ICsyNDMsNyBAQCBfQXJjaGl2ZUVudHJ5 KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiAJY3R4ID0gKGxjbFRvY0VudHJ5ICop IHBnX21hbGxvYzAoc2l6ZW9mKGxjbFRvY0VudHJ5KSk7CiAJaWYgKHRlLT5kYXRhRHVtcGVyICE9 IE5VTEwpCiAJewotI2lmZGVmIEhBVkVfTElCWgotCQlpZiAoQUgtPmNvbXByZXNzaW9uID09IDAp Ci0JCQlzcHJpbnRmKGZuLCAiJWQuZGF0IiwgdGUtPmR1bXBJZCk7Ci0JCWVsc2UKLQkJCXNwcmlu dGYoZm4sICIlZC5kYXQuZ3oiLCB0ZS0+ZHVtcElkKTsKLSNlbHNlCi0JCXNwcmludGYoZm4sICIl ZC5kYXQiLCB0ZS0+ZHVtcElkKTsKLSNlbmRpZgorCQlzbnByaW50Zihmbiwgc2l6ZW9mKGZuKSwg IiVkLmRhdCIsIHRlLT5kdW1wSWQpOwogCQljdHgtPmZpbGVuYW1lID0gcGdfc3RyZHVwKGZuKTsK IAl9CiAJZWxzZQpAQCAtMzIwLDEwICszMDgsNiBAQCB0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFI LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciBtb2RlKQogCWxjbENvbnRleHQgKmN0eCA9IChs Y2xDb250ZXh0ICopIEFILT5mb3JtYXREYXRhOwogCVRBUl9NRU1CRVIgKnRtOwogCi0jaWZkZWYg SEFWRV9MSUJaCi0JY2hhcgkJZm1vZGVbMTRdOwotI2VuZGlmCi0KIAlpZiAobW9kZSA9PSAncicp CiAJewogCQl0bSA9IF90YXJQb3NpdGlvblRvKEFILCBmaWxlbmFtZSk7CkBAIC0zNDQsMTYgKzMy OCwxMCBAQCB0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwg Y2hhciBtb2RlKQogCQkJfQogCQl9CiAKLSNpZmRlZiBIQVZFX0xJQloKLQogCQlpZiAoQUgtPmNv bXByZXNzaW9uID09IDApCiAJCQl0bS0+bkZIID0gY3R4LT50YXJGSDsKIAkJZWxzZQogCQkJZmF0 YWwoImNvbXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0Iik7 Ci0JCS8qIHRtLT56RkggPSBnemRvcGVuKGR1cChmaWxlbm8oY3R4LT50YXJGSCkpLCAicmIiKTsg Ki8KLSNlbHNlCi0JCXRtLT5uRkggPSBjdHgtPnRhckZIOwotI2VuZGlmCiAJfQogCWVsc2UKIAl7 CkBAIC00MDUsMjEgKzM4MywxMCBAQCB0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBj aGFyICpmaWxlbmFtZSwgY2hhciBtb2RlKQogCiAJCXVtYXNrKG9sZF91bWFzayk7CiAKLSNpZmRl ZiBIQVZFX0xJQloKLQotCQlpZiAoQUgtPmNvbXByZXNzaW9uICE9IDApCi0JCXsKLQkJCXNwcmlu dGYoZm1vZGUsICJ3YiVkIiwgQUgtPmNvbXByZXNzaW9uKTsKLQkJCXRtLT56RkggPSBnemRvcGVu KGR1cChmaWxlbm8odG0tPnRtcEZIKSksIGZtb2RlKTsKLQkJCWlmICh0bS0+ekZIID09IE5VTEwp Ci0JCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIHRlbXBvcmFyeSBmaWxlIik7Ci0JCX0KLQkJZWxz ZQorCQlpZiAoQUgtPmNvbXByZXNzaW9uID09IDApCiAJCQl0bS0+bkZIID0gdG0tPnRtcEZIOwot I2Vsc2UKLQotCQl0bS0+bkZIID0gdG0tPnRtcEZIOwotI2VuZGlmCisJCWVsc2UKKwkJCWZhdGFs KCJjb21wcmVzc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRhciBhcmNoaXZlIGZvcm1hdCIpOwog CiAJCXRtLT5BSCA9IEFIOwogCQl0bS0+dGFyZ2V0RmlsZSA9IHBnX3N0cmR1cChmaWxlbmFtZSk7 CkBAIC00MzQsMTUgKzQwMSw4IEBAIHRhck9wZW4oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNo YXIgKmZpbGVuYW1lLCBjaGFyIG1vZGUpCiBzdGF0aWMgdm9pZAogdGFyQ2xvc2UoQXJjaGl2ZUhh bmRsZSAqQUgsIFRBUl9NRU1CRVIgKnRoKQogewotCS8qCi0JICogQ2xvc2UgdGhlIEdaIGZpbGUg c2luY2Ugd2UgZHVwJ2QuIFRoaXMgd2lsbCBmbHVzaCB0aGUgYnVmZmVycy4KLQkgKi8KIAlpZiAo QUgtPmNvbXByZXNzaW9uICE9IDApCi0JewotCQllcnJubyA9IDA7CQkJCS8qIGluIGNhc2UgZ3pj bG9zZSgpIGRvZXNuJ3Qgc2V0IGl0ICovCi0JCWlmIChHWkNMT1NFKHRoLT56RkgpICE9IDApCi0J CQlmYXRhbCgiY291bGQgbm90IGNsb3NlIHRhciBtZW1iZXI6ICVtIik7Ci0JfQorCQlmYXRhbCgi Y29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQiKTsKIAog CWlmICh0aC0+bW9kZSA9PSAndycpCiAJCV90YXJBZGRGaWxlKEFILCB0aCk7CS8qIFRoaXMgd2ls bCBjbG9zZSB0aGUgdGVtcCBmaWxlICovCkBAIC00NTYsNyArNDE2LDYgQEAgdGFyQ2xvc2UoQXJj aGl2ZUhhbmRsZSAqQUgsIFRBUl9NRU1CRVIgKnRoKQogCQlmcmVlKHRoLT50YXJnZXRGaWxlKTsK IAogCXRoLT5uRkggPSBOVUxMOwotCXRoLT56RkggPSBOVUxMOwogfQogCiAjaWZkZWYgX19OT1Rf VVNFRF9fCkBAIC01NDIsMjkgKzUwMSw5IEBAIF90YXJSZWFkUmF3KEFyY2hpdmVIYW5kbGUgKkFI LCB2b2lkICpidWYsIHNpemVfdCBsZW4sIFRBUl9NRU1CRVIgKnRoLCBGSUxFICpmaCkKIAkJfQog CQllbHNlIGlmICh0aCkKIAkJewotCQkJaWYgKHRoLT56RkgpCi0JCQl7Ci0JCQkJcmVzID0gR1pS RUFEKCYoKGNoYXIgKikgYnVmKVt1c2VkXSwgMSwgbGVuLCB0aC0+ekZIKTsKLQkJCQlpZiAocmVz ICE9IGxlbiAmJiAhR1pFT0YodGgtPnpGSCkpCi0JCQkJewotI2lmZGVmIEhBVkVfTElCWgotCQkJ CQlpbnQJCQllcnJudW07Ci0JCQkJCWNvbnN0IGNoYXIgKmVycm1zZyA9IGd6ZXJyb3IodGgtPnpG SCwgJmVycm51bSk7Ci0KLQkJCQkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmls ZTogJXMiLAotCQkJCQkJICBlcnJudW0gPT0gWl9FUlJOTyA/IHN0cmVycm9yKGVycm5vKSA6IGVy cm1zZyk7Ci0jZWxzZQotCQkJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxl OiAlcyIsCi0JCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7Ci0jZW5kaWYKLQkJCQl9Ci0JCQl9Ci0J CQllbHNlCi0JCQl7Ci0JCQkJcmVzID0gZnJlYWQoJigoY2hhciAqKSBidWYpW3VzZWRdLCAxLCBs ZW4sIHRoLT5uRkgpOwotCQkJCWlmIChyZXMgIT0gbGVuICYmICFmZW9mKHRoLT5uRkgpKQotCQkJ CQlSRUFEX0VSUk9SX0VYSVQodGgtPm5GSCk7Ci0JCQl9CisJCQlyZXMgPSBmcmVhZCgmKChjaGFy ICopIGJ1ZilbdXNlZF0sIDEsIGxlbiwgdGgtPm5GSCk7CisJCQlpZiAocmVzICE9IGxlbiAmJiAh ZmVvZih0aC0+bkZIKSkKKwkJCQlSRUFEX0VSUk9SX0VYSVQodGgtPm5GSCk7CiAJCX0KIAl9CiAK QEAgLTU5NiwxMCArNTM1LDcgQEAgdGFyV3JpdGUoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVu LCBUQVJfTUVNQkVSICp0aCkKIHsKIAlzaXplX3QJCXJlczsKIAotCWlmICh0aC0+ekZIICE9IE5V TEwpCi0JCXJlcyA9IEdaV1JJVEUoYnVmLCAxLCBsZW4sIHRoLT56RkgpOwotCWVsc2UKLQkJcmVz ID0gZndyaXRlKGJ1ZiwgMSwgbGVuLCB0aC0+bkZIKTsKKwlyZXMgPSBmd3JpdGUoYnVmLCAxLCBs ZW4sIHRoLT5uRkgpOwogCiAJdGgtPnBvcyArPSByZXM7CiAJcmV0dXJuIHJlczsKQEAgLTk0OSwx NyArODg1LDE0IEBAIF9TdGFydEJsb2IoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwg T2lkIG9pZCkKIAlsY2xDb250ZXh0ICpjdHggPSAobGNsQ29udGV4dCAqKSBBSC0+Zm9ybWF0RGF0 YTsKIAlsY2xUb2NFbnRyeSAqdGN0eCA9IChsY2xUb2NFbnRyeSAqKSB0ZS0+Zm9ybWF0RGF0YTsK IAljaGFyCQlmbmFtZVsyNTVdOwotCWNoYXIJICAgKnNmeDsKIAogCWlmIChvaWQgPT0gMCkKIAkJ ZmF0YWwoImludmFsaWQgT0lEIGZvciBsYXJnZSBvYmplY3QgKCV1KSIsIG9pZCk7CiAKIAlpZiAo QUgtPmNvbXByZXNzaW9uICE9IDApCi0JCXNmeCA9ICIuZ3oiOwotCWVsc2UKLQkJc2Z4ID0gIiI7 CisJCWZhdGFsKCJjb21wcmVzc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRhciBhcmNoaXZlIGZv cm1hdCIpOwogCi0Jc3ByaW50ZihmbmFtZSwgImJsb2JfJXUuZGF0JXMiLCBvaWQsIHNmeCk7CisJ c3ByaW50ZihmbmFtZSwgImJsb2JfJXUuZGF0Iiwgb2lkKTsKIAogCXRhclByaW50ZihjdHgtPmJs b2JUb2MsICIldSAlc1xuIiwgb2lkLCBmbmFtZSk7CiAKLS0gCjIuMzIuMAoK --b1_x9AR1SGzaggd2kko0pcFe9r7F3FzUZvfIVMFbWhiKvM Content-Type: text/x-patch; name=v4-0001-Extend-compression-coverage-for-pg_dump-pg_restor.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0001-Extend-compression-coverage-for-pg_dump-pg_restor.patch RnJvbSA0ZTMzNTk3NDU1YzhmYTQyMGJjYTViZDg3MDEzOTIyNDc4OTk2MDE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IFdlZCwgMzAgTWFyIDIwMjIgMTQ6NTk6MTAgKzAwMDAKU3ViamVjdDogW1BBVENIIHY0 IDEvNF0gRXh0ZW5kIGNvbXByZXNzaW9uIGNvdmVyYWdlIGZvciBwZ19kdW1wLCBwZ19yZXN0b3Jl CgotLS0KIHNyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZSAgICAgICAgIHwgICAyICsKIHNyYy9iaW4v cGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvTWFrZWZpbGUgYi9zcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUKaW5kZXgg MzAyZjdlMDJkNi4uMmY1MjRiMDliZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL01ha2Vm aWxlCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZQpAQCAtMTYsNiArMTYsOCBAQCBzdWJk aXIgPSBzcmMvYmluL3BnX2R1bXAKIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQo dG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKK2V4cG9ydCBHWklQX1BST0dSQU09 JChHWklQKQorCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQobGlicHFfc3JjZGlyKSAkKENQUEZM QUdTKQogTERGTEFHU19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMg LWxwZ2ZldXRpbHMgJChsaWJwcV9wZ3BvcnQpCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5k ZXggYWY1ZDZmYTVhMy4uOTFjM2I5NzhjNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAg LTI2LDYgKzI2LDEzIEBAIG15ICR0ZW1wZGlyICAgICAgID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM6OnRlbXBkaXI7CiAjIHNwZWNpZmllZCBhbmQgaXMgcHVsbGVkIGZyb20gJFBHUE9SVCwgd2hp Y2ggaXMgc2V0IGJ5IHRoZQogIyBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyIHN5c3RlbS4KICMK KyMgY29tcHJlc3NfY21kIGlzIHRoZSB1dGlsaXR5IGNvbW1hbmQgZm9yIChkZSljb21wcmVzc2lv biwgaWYgYW55LgorIyBOb3RlIHRoYXQgdGhpcyBzaG91bGQgZ2VuZXJhbGx5IGJlIHVzZWQgb24g cGdfZHVtcCdzIG91dHB1dAorIyBlaXRoZXIgdG8gZ2VuZXJhdGUgYSB0ZXh0IGZpbGUgdG8gcnVu IHRoZSB0aHJvdWdoIHRoZSB0ZXN0cywgb3IKKyMgdG8gdGVzdCBwZ19yZXN0b3JlJ3MgYWJpbGl0 eSB0byBwYXJzZSBtYW51YWxseSBjb21wcmVzc2VkIGZpbGVzCisjIHRoYXQgb3RoZXJ3aXNlIHBn X2R1bXAgZG9lcyBub3QgY29tcHJlc3Mgb24gaXQncyBvd24KKyMgKGUuZy4gKi50b2MpLgorIwog IyByZXN0b3JlX2NtZCBpcyB0aGUgcGdfcmVzdG9yZSBjb21tYW5kIHRvIHJ1biwgaWYgYW55LiAg Tm90ZQogIyB0aGF0IHRoaXMgc2hvdWxkIGdlbmVyYWxseSBiZSB1c2VkIHdoZW4gdGhlIHBnX2R1 bXAgZ29lcyB0bwogIyBhIG5vbi10ZXh0IGZpbGUgYW5kIHRoYXQgdGhlIHJlc3RvcmUgY2FuIHRo ZW4gYmUgdXNlZCB0bwpAQCAtNTQsNiArNjEsODIgQEAgbXkgJXBnZHVtcF9ydW5zID0gKAogCQkJ IiR0ZW1wZGlyL2JpbmFyeV91cGdyYWRlLmR1bXAiLAogCQldLAogCX0sCisKKwkjIERvIG5vdCB1 c2UgLS1uby1zeW5jIHRvIGdpdmUgdGVzdCBjb3ZlcmFnZSBmb3IgZGF0YSBzeW5jLgorCWNvbXBy ZXNzaW9uX2d6aXBfY3VzdG9tX2Zvcm1hdCA9PiB7CisJCXRlc3Rfa2V5ID0+ICdjb21wcmVzc2lv bicsCisJCWR1bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wJywKKwkJCSctLWZvcm1hdD1jdXN0b20n LCAnLS1jb21wcmVzcz0xJywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9j dXN0b21fZm9ybWF0LmR1bXAiLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwkJcmVzdG9yZV9jbWQg PT4gWworCQkJJ3BnX3Jlc3RvcmUnLAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9n emlwX2N1c3RvbV9mb3JtYXQuc3FsIiwKKwkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2N1 c3RvbV9mb3JtYXQuZHVtcCIsCisJCV0sCisJfSwKKworCSMgRG8gbm90IHVzZSAtLW5vLXN5bmMg dG8gZ2l2ZSB0ZXN0IGNvdmVyYWdlIGZvciBkYXRhIHN5bmMuCisJY29tcHJlc3Npb25fZ3ppcF9k aXJlY3RvcnlfZm9ybWF0ID0+IHsKKwkJdGVzdF9rZXkgPT4gJ2NvbXByZXNzaW9uJywKKwkJZHVt cF9jbWQgPT4gWworCQkJJ3BnX2R1bXAnLAorCQkJJy0tZm9ybWF0PWRpcmVjdG9yeScsICctLWNv bXByZXNzPTEnLAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2RpcmVjdG9y eV9mb3JtYXQiLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwkJIyBHaXZlIGNvdmVyYWdlIGZvciBt YW51YWxseSBjb21wcmVzc2VkIGJsb2IudG9jIGZpbGVzIGR1cmluZyByZXN0b3JlLgorCQljb21w cmVzc19jbWQgPT4gWworCQkJJEVOVnsnR1pJUF9QUk9HUkFNJ30sCisJCQknLWYnLAorCQkJIiR0 ZW1wZGlyL2NvbXByZXNzaW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdC9ibG9icy50b2MiLAorCQld LAorCQlyZXN0b3JlX2NtZCA9PiBbCisJCQkncGdfcmVzdG9yZScsCisJCQkiLS1maWxlPSR0ZW1w ZGlyL2NvbXByZXNzaW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdC5zcWwiLAorCQkJIiR0ZW1wZGly L2NvbXByZXNzaW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdCIsCisJCV0sCisJfSwKKworCWNvbXBy ZXNzaW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdF9wYXJhbGxlbCA9PiB7CisJCXRlc3Rfa2V5ID0+ ICdjb21wcmVzc2lvbicsCisJCWR1bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wJywgJy0tam9icz0y JywKKwkJCSctLWZvcm1hdD1kaXJlY3RvcnknLCAnLS1jb21wcmVzcz02JywKKwkJCSItLWZpbGU9 JHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVsIiwKKwkJ CSdwb3N0Z3JlcycsCisJCV0sCisJCSMgR2l2ZSBjb3ZlcmFnZSBmb3IgbWFudWFsbHkgY29tcHJl c3NlZCBibG9iLnRvYyBmaWxlcyBkdXJpbmcgcmVzdG9yZS4KKwkJY29tcHJlc3NfY21kID0+IFsK KwkJCSRFTlZ7J0daSVBfUFJPR1JBTSd9LAorCQkJJy1mJywKKwkJCSIkdGVtcGRpci9jb21wcmVz c2lvbl9nemlwX2RpcmVjdG9yeV9mb3JtYXRfcGFyYWxsZWwvYmxvYnMudG9jIiwKKwkJXSwKKwkJ cmVzdG9yZV9jbWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUnLAorCQkJJy0tam9icz0zJywKKwkJCSIt LWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVs LnNxbCIsCisJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0X3Bh cmFsbGVsIiwKKwkJXSwKKwl9LAorCisJIyBDaGVjayB0aGF0IHRoZSBvdXRwdXQgaXMgdmFsaWQg Z3ppcAorCWNvbXByZXNzaW9uX2d6aXBfcGxhaW5fZm9ybWF0ID0+IHsKKwkJdGVzdF9rZXkgPT4g J2NvbXByZXNzaW9uJywKKwkJZHVtcF9jbWQgPT4gWworCQkJJ3BnX2R1bXAnLCAnLS1mb3JtYXQ9 cGxhaW4nLCAnLVoxJywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9wbGFp bl9mb3JtYXQuc3FsLmd6IiwKKwkJCSdwb3N0Z3JlcycsCisJCV0sCisJCSMgRGVjb21wcmVzcyB0 aGUgZ2VuZXJhdGVkIGZpbGUgdG8gcnVuIHRocm91Z2ggdGhlIHRlc3RzCisJCWNvbXByZXNzX2Nt ZCA9PiBbCisJCQkkRU5WeydHWklQX1BST0dSQU0nfSwKKwkJCSctZCcsCisJCQkiJHRlbXBkaXIv Y29tcHJlc3Npb25fZ3ppcF9wbGFpbl9mb3JtYXQuc3FsLmd6IiwKKwkJXSwKKwl9LAogCWNsZWFu ID0+IHsKIAkJZHVtcF9jbWQgPT4gWwogCQkJJ3BnX2R1bXAnLApAQCAtNDI0LDYgKzUwNyw3IEBA IG15ICVmdWxsX3J1bnMgPSAoCiAJYmluYXJ5X3VwZ3JhZGUgICAgICAgICAgID0+IDEsCiAJY2xl YW4gICAgICAgICAgICAgICAgICAgID0+IDEsCiAJY2xlYW5faWZfZXhpc3RzICAgICAgICAgID0+ IDEsCisJY29tcHJlc3Npb24gICAgICAgICAgICAgID0+IDEsCiAJY3JlYXRlZGIgICAgICAgICAg ICAgICAgID0+IDEsCiAJZGVmYXVsdHMgICAgICAgICAgICAgICAgID0+IDEsCiAJZXhjbHVkZV9k dW1wX3Rlc3Rfc2NoZW1hID0+IDEsCkBAIC0zMDk4LDYgKzMxODIsNyBAQCBteSAldGVzdHMgPSAo CiAJCQliaW5hcnlfdXBncmFkZSAgICAgICAgICA9PiAxLAogCQkJY2xlYW4gICAgICAgICAgICAg ICAgICAgPT4gMSwKIAkJCWNsZWFuX2lmX2V4aXN0cyAgICAgICAgID0+IDEsCisJCQljb21wcmVz c2lvbiAgICAgICAgICAgICA9PiAxLAogCQkJY3JlYXRlZGIgICAgICAgICAgICAgICAgPT4gMSwK IAkJCWRlZmF1bHRzICAgICAgICAgICAgICAgID0+IDEsCiAJCQlleGNsdWRlX3Rlc3RfdGFibGUg ICAgICA9PiAxLApAQCAtMzE3MSw2ICszMjU2LDcgQEAgbXkgJXRlc3RzID0gKAogCQkJYmluYXJ5 X3VwZ3JhZGUgICAgICAgICAgID0+IDEsCiAJCQljbGVhbiAgICAgICAgICAgICAgICAgICAgPT4g MSwKIAkJCWNsZWFuX2lmX2V4aXN0cyAgICAgICAgICA9PiAxLAorCQkJY29tcHJlc3Npb24gICAg ICAgICAgICAgID0+IDEsCiAJCQljcmVhdGVkYiAgICAgICAgICAgICAgICAgPT4gMSwKIAkJCWRl ZmF1bHRzICAgICAgICAgICAgICAgICA9PiAxLAogCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1h ID0+IDEsCkBAIC0zOTQxLDYgKzQwMjcsOSBAQCBjb21tYW5kX2ZhaWxzX2xpa2UoCiAKICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFJ1biBhbGwgcnVucworbXkg JHN1cHBvcnRzX2NvbXByZXNzaW9uID0gY2hlY2tfcGdfY29uZmlnKCIjZGVmaW5lIEhBVkVfTElC WiAxIik7CitteSAkY29tcHJlc3NfcHJvZ3JhbV9leGlzdHMgPSAoc3lzdGVtX2xvZygiJEVOVntH WklQX1BST0dSQU19IiwgJy1oJywKKwkJCQkJCQkJCQkgICc+JywgJy9kZXYvbnVsbCcpID09IDAp OwogCiBmb3JlYWNoIG15ICRydW4gKHNvcnQga2V5cyAlcGdkdW1wX3J1bnMpCiB7CkBAIC0zOTUw LDYgKzQwMzksMTcgQEAgZm9yZWFjaCBteSAkcnVuIChzb3J0IGtleXMgJXBnZHVtcF9ydW5zKQog CSRub2RlLT5jb21tYW5kX29rKFxAeyAkcGdkdW1wX3J1bnN7JHJ1bn0tPntkdW1wX2NtZH0gfSwK IAkJIiRydW46IHBnX2R1bXAgcnVucyIpOwogCisJaWYgKGRlZmluZWQoJHBnZHVtcF9ydW5zeyRy dW59LT57Y29tcHJlc3NfY21kfSkpCisJeworCQkjIFNraXAgY29tcHJlc3Npb25fY21kIHRlc3Rz IHdoZW4gY29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCwKKwkJIyBhcyB0aGUgcmVzdWx0IGlz IHVuY29tcHJlc3NlZCBvciB0aGUgdXRpbGl0eSBwcm9ncmFtIGRvZXMgbm90CisJCSMgZXhpc3QK KwkJbmV4dCBpZiAhJHN1cHBvcnRzX2NvbXByZXNzaW9uIHx8ICEkY29tcHJlc3NfcHJvZ3JhbV9l eGlzdHM7CisKKwkJY29tbWFuZF9vayggXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e2NvbXByZXNz X2NtZH0gfSwKKwkJCSIkcnVuOiBjb21wcmVzc2lvbiBjb21tYW5kcyIpOworCX0KKwogCWlmICgk cGdkdW1wX3J1bnN7JHJ1bn0tPntyZXN0b3JlX2NtZH0pCiAJewogCQkkbm9kZS0+Y29tbWFuZF9v ayhcQHsgJHBnZHVtcF9ydW5zeyRydW59LT57cmVzdG9yZV9jbWR9IH0sCi0tIAoyLjMyLjAKCg== --b1_x9AR1SGzaggd2kko0pcFe9r7F3FzUZvfIVMFbWhiKvM Content-Type: text/x-patch; name=v4-0003-Prepare-pg_dump-for-additional-compression-method.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0003-Prepare-pg_dump-for-additional-compression-method.patch RnJvbSA3ZDJlZGYxNzZiMWJhNGM3MDI1M2RiZWVjMGU4NzhiOWVkNTE1MzQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IFdlZCwgMzAgTWFyIDIwMjIgMTU6MDM6NTMgKzAwMDAKU3ViamVjdDogW1BBVENIIHY0 IDMvNF0gUHJlcGFyZSBwZ19kdW1wIGZvciBhZGRpdGlvbmFsIGNvbXByZXNzaW9uIG1ldGhvZHMK ClRoaXMgY29tbW1pdCBkb2VzIHRoZSBoZWF2eSBsaWZ0aW5nIHJlcXVpcmVkIGZvciBhZGRpdGlv bmFsIGNvbXByZXNzaW9uIG1ldGhvZHMuCkNvbW1pdCAgYmY5YWE0OTBkYiBpbnRyb2R1Y2VkIGNm cCBpbiBjb21wcmVzc19pby57YyxofSB3aXRoIHRoZSBpbnRlbnQgb2YKdW5pZnlpbmcgY29tcHJl c3Npb24gcmVsYXRlZCBjb2RlIGFuZCBhbGxvdyBmb3IgdGhlIGludHJvZHVjdGlvbiBvZiBhZGRp dGlvbmFsCmFyY2hpdmUgZm9ybWF0cy4gSG93ZXZlciwgcGdfYmFja3VwX2FyY2hpdmVyLmMgd2Fz IG5vdCB1c2luZyB0aGF0IEFQSS4gVGhpcwpjb21taXQgdGVhY2hlcyBwZ19iYWNrdXBfYXJjaGl2 ZXIuYyBhYm91dCBjZnAgYW5kIGlzIHVzaW5nIGl0IHRocm91Z2ggb3V0LgoKRnVydGhlcm1vcmUs IGNvbXByZXNzaW9uIHdhcyBjaG9zZW4gYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoZSBsZXZlbCBw YXNzZWQKYXMgYW4gYXJndW1lbnQgZHVyaW5nIHRoZSBpbnZvY2F0aW9uIG9mIHBnX2R1bXAgb3Ig c29tZSBoYXJkY29kZWQgZGVmYXVsdHMuIFRoaXMKZG9lcyBub3Qgc2NhbGUgZm9yIG1vcmUgdGhh biBvbmUgY29tcHJlc3Npb24gbWV0aG9kcy4gTm93IHRoZSBtZXRob2QgdXNlZCBmb3IKY29tcHJl c3Npb24gY2FuIGJlIGV4cGxpY2l0bHkgcmVxdWVzdGVkIGR1cmluZyBjb21tYW5kIGludm9jYXRp b24sIG9yIHNldCBkdXJpbmcKaGFyZGNvZGVkIGRlZmF1bHRzLiBUaGVuIGl0IGlzIHN0b3JlZCBp biB0aGUgcmVsZXZhbnQgc3RydWN0cyBhbmQgcGFzc2VkIGluIHRoZQpyZWxldmFudCBmdW5jdGlv bnMsIGFsb25nIHNpZGUgY29tcHJlc3Npb24gbGV2ZWwgd2hpY2ggaGFzIGxvc3QgaXQncyBzcGVj aWFsCm1lYW5pbmcuIFRoZSBtZXRob2QgZm9yIGNvbXByZXNzaW9uIGlzIG5vdCB5ZXQgc3RvcmVk IGluIHRoZSBhY3R1YWwgYXJjaGl2ZS4KVGhpcyBpcyBkb25lIGluIHRoZSBuZXh0IGNvbW1pdCB3 aGljaCBkb2VzIGludHJvZHVjZSBhIG5ldyBtZXRob2QuCgpUaGUgcHJldmlvdXNseSBuYW1lZCBD b21wcmVzc2lvbkFsZ29yaXRobSBlbnVtIGlzIGNoYW5nZWQgZm9yCkNvbXByZXNzaW9uTWV0aG9k IHNvIHRoYXQgaXQgbWF0Y2hlcyBiZXR0ZXIgc2ltaWxhciB2YXJpYWJsZXMgZm91bmQgdGhyb3Vn aCBvdXQKdGhlIGNvZGUgYmFzZS4KCkluIGEgZmFzaGlvbiBzaW1pbGFyIHRvIHRoZSBiaW5hcnkg Zm9yIHBnX2Jhc2ViYWNrdXAsIHRoZSBtZXRob2QgZm9yIGNvbXByZXNzaW9uCmlzIHBhc3NlZCB1 c2luZyB0aGUgYWxyZWFkeSBleGlzdGluZyAtWi8tLWNvbXByZXNzIHBhcmFtZXRlciBvZiBwZ19k dW1wLiBUaGUKbGVnYWN5IGZvcm1hdCBhbmQgYmVoYXZpb3VyIGlzIG1haW50YWluZWQuIEFkZGl0 aW9uYWxseSwgdGhlIHVzZXIgY2FuIGV4cGxpY2l0bHkKcGFzcyBhIHJlcXVlc3RlZCBtZXRob2Qg YW5kIG9wdGlvbmFseSB0aGUgbGV2ZWwgdG8gYmUgdXNlZCBhZnRlciBhIHNlbWljb2xvbiwKZS5n LiAtLWNvbXByZXNzPWd6aXA6NgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sICAg ICAgICAgfCAgMzAgKy0KIHNyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jICAgICAgICAgfCA0 MTYgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19p by5oICAgICAgICAgfCAgMzIgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaCAgICAgICAg ICAgfCAgMTQgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyAgfCAxNzEg KysrKystLS0tLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaCAgfCAgNDYg Ky0tCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2N1c3RvbS5jICAgIHwgIDExICstCiBzcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5jIHwgIDEyICstCiBzcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX3Rhci5jICAgICAgIHwgIDEyICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jICAgICAgICAgICAgIHwgMTU1ICsrKysrKysrLS0KIHNyYy9iaW4vcGdfZHVtcC90LzAwMV9i YXNpYy5wbCAgICAgICAgfCAgMTQgKy0KIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs ICAgICAgfCAgNDUgKystCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgIHwg ICAyICstCiAxMyBmaWxlcyBjaGFuZ2VkLCA2MDMgaW5zZXJ0aW9ucygrKSwgMzU3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wZ19kdW1wLnNnbWwKaW5kZXggMmYwMDQyZmQ5Ni4uOTkyYjczMTJkZiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9wZ19kdW1wLnNnbWwKQEAgLTY0NCwxNyArNjQ0LDMxIEBAIFBvc3RncmVTUUwgZG9jdW1l bnRhdGlvbgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICA8dmFybGlzdGVudHJ5PgotICAg ICAgPHRlcm0+PG9wdGlvbj4tWiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+MC4uOTwv cmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgotICAgICAgPHRlcm0+PG9wdGlvbj4tLWNvbXBy ZXNzPTxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj4wLi45PC9yZXBsYWNlYWJsZT48L29w dGlvbj48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi1aIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5sZXZlbDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRl cm0+PG9wdGlvbj4tWiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWV0aG9kPC9yZXBs YWNlYWJsZT48L29wdGlvbj5bOjxyZXBsYWNlYWJsZT5sZXZlbDwvcmVwbGFjZWFibGU+XTwvdGVy bT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1jb21wcmVzcz08cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bGV2ZWw8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJt PjxvcHRpb24+LS1jb21wcmVzcz08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWV0aG9k PC9yZXBsYWNlYWJsZT48L29wdGlvbj5bOjxyZXBsYWNlYWJsZT5sZXZlbDwvcmVwbGFjZWFibGU+ XTwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgU3BlY2lm eSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgdG8gdXNlLiAgWmVybyBtZWFucyBubyBjb21wcmVzc2lv bi4KKyAgICAgICAgU3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbWV0aG9kIGFuZC9vciB0aGUgY29t cHJlc3Npb24gbGV2ZWwgdG8gdXNlLgorICAgICAgICBUaGUgY29tcHJlc3Npb24gbWV0aG9kIGNh biBiZSBzZXQgdG8gPGxpdGVyYWw+Z3ppcDwvbGl0ZXJhbD4gb3IKKyAgICAgICAgPGxpdGVyYWw+ bm9uZTwvbGl0ZXJhbD4gZm9yIG5vIGNvbXByZXNzaW9uLiBBIGNvbXByZXNzaW9uIGxldmVsIGNh bgorICAgICAgICBiZSBvcHRpb25hbGx5IHNwZWNpZmllZCwgYnkgYXBwZW5kaW5nIHRoZSBsZXZl bCBudW1iZXIgYWZ0ZXIgYSBjb2xvbgorICAgICAgICAoPGxpdGVyYWw+OjwvbGl0ZXJhbD4pLiBJ ZiBubyBsZXZlbCBpcyBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uCisgICAgICAg IGxldmVsIHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2QuIElmIG9ubHkgYSBs ZXZlbCBpcworICAgICAgICBzcGVjaWZpZWQgd2l0aG91dCBtZW50aW9uaW5nIGEgbWV0aG9kLCA8 bGl0ZXJhbD5nemlwPC9saXRlcmFsPiBjb21wcmVzc2lvbgorICAgICAgICB3aWxsIGJlIHVzZWQu CisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CiAgICAgICAgIEZvciB0aGUgY3VzdG9t IGFuZCBkaXJlY3RvcnkgYXJjaGl2ZSBmb3JtYXRzLCB0aGlzIHNwZWNpZmllcyBjb21wcmVzc2lv biBvZgotICAgICAgICBpbmRpdmlkdWFsIHRhYmxlLWRhdGEgc2VnbWVudHMsIGFuZCB0aGUgZGVm YXVsdCBpcyB0byBjb21wcmVzcwotICAgICAgICBhdCBhIG1vZGVyYXRlIGxldmVsLgotICAgICAg ICBGb3IgcGxhaW4gdGV4dCBvdXRwdXQsIHNldHRpbmcgYSBub256ZXJvIGNvbXByZXNzaW9uIGxl dmVsIGNhdXNlcwotICAgICAgICB0aGUgZW50aXJlIG91dHB1dCBmaWxlIHRvIGJlIGNvbXByZXNz ZWQsIGFzIHRob3VnaCBpdCBoYWQgYmVlbgotICAgICAgICBmZWQgdGhyb3VnaCA8YXBwbGljYXRp b24+Z3ppcDwvYXBwbGljYXRpb24+OyBidXQgdGhlIGRlZmF1bHQgaXMgbm90IHRvIGNvbXByZXNz LgorICAgICAgICBpbmRpdmlkdWFsIHRhYmxlLWRhdGEgc2VnbWVudHMsIGFuZCB0aGUgZGVmYXVs dCBpcyB0byBjb21wcmVzcyB1c2luZworICAgICAgICA8bGl0ZXJhbD5nemlwPC9saXRlcmFsPiBh dCBhIG1vZGVyYXRlIGxldmVsLiBGb3IgcGxhaW4gdGV4dCBvdXRwdXQsCisgICAgICAgIHNldHRp bmcgYSBub256ZXJvIGNvbXByZXNzaW9uIGxldmVsIGNhdXNlcyB0aGUgZW50aXJlIG91dHB1dCBm aWxlIHRvIGJlIGNvbXByZXNzZWQsCisgICAgICAgIGFzIHRob3VnaCBpdCBoYWQgYmVlbiBmZWQg dGhyb3VnaCA8YXBwbGljYXRpb24+Z3ppcDwvYXBwbGljYXRpb24+OyBidXQgdGhlIGRlZmF1bHQK KyAgICAgICAgaXMgbm90IHRvIGNvbXByZXNzLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFy YT4KICAgICAgICAgVGhlIHRhciBhcmNoaXZlIGZvcm1hdCBjdXJyZW50bHkgZG9lcyBub3Qgc3Vw cG9ydCBjb21wcmVzc2lvbiBhdCBhbGwuCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRl bT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jIGIvc3JjL2Jpbi9w Z19kdW1wL2NvbXByZXNzX2lvLmMKaW5kZXggOTA3N2ZkYjc0ZC4uNjMwZjllNGIxOCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L2NvbXByZXNzX2lvLmMKQEAgLTY0LDcgKzY0LDcgQEAKIC8qIHR5cGVkZWYgYXBwZWFycyBpbiBj b21wcmVzc19pby5oICovCiBzdHJ1Y3QgQ29tcHJlc3NvclN0YXRlCiB7Ci0JQ29tcHJlc3Npb25B bGdvcml0aG0gY29tcHJBbGc7CisJQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2Q7 CiAJV3JpdGVGdW5jCXdyaXRlRjsKIAogI2lmZGVmIEhBVkVfTElCWgpAQCAtNzQsOSArNzQsNiBA QCBzdHJ1Y3QgQ29tcHJlc3NvclN0YXRlCiAjZW5kaWYKIH07CiAKLXN0YXRpYyB2b2lkIFBhcnNl Q29tcHJlc3Npb25PcHRpb24oaW50IGNvbXByZXNzaW9uLCBDb21wcmVzc2lvbkFsZ29yaXRobSAq YWxnLAotCQkJCQkJCQkgICBpbnQgKmxldmVsKTsKLQogLyogUm91dGluZXMgdGhhdCBzdXBwb3J0 IHpsaWIgY29tcHJlc3NlZCBkYXRhIEkvTyAqLwogI2lmZGVmIEhBVkVfTElCWgogc3RhdGljIHZv aWQgSW5pdENvbXByZXNzb3JabGliKENvbXByZXNzb3JTdGF0ZSAqY3MsIGludCBsZXZlbCk7CkBA IC05Myw1NyArOTAsMzAgQEAgc3RhdGljIHZvaWQgUmVhZERhdGFGcm9tQXJjaGl2ZU5vbmUoQXJj aGl2ZUhhbmRsZSAqQUgsIFJlYWRGdW5jIHJlYWRGKTsKIHN0YXRpYyB2b2lkIFdyaXRlRGF0YVRv QXJjaGl2ZU5vbmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MsCiAJCQkJ CQkJCSAgIGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBkTGVuKTsKIAotLyoKLSAqIEludGVycHJl dHMgYSBudW1lcmljICdjb21wcmVzc2lvbicgdmFsdWUuIFRoZSBhbGdvcml0aG0gaW1wbGllZCBi eSB0aGUKLSAqIHZhbHVlICh6bGliIG9yIG5vbmUgYXQgdGhlIG1vbWVudCksIGlzIHJldHVybmVk IGluICphbGcsIGFuZCB0aGUKLSAqIHpsaWIgY29tcHJlc3Npb24gbGV2ZWwgaW4gKmxldmVsLgot ICovCi1zdGF0aWMgdm9pZAotUGFyc2VDb21wcmVzc2lvbk9wdGlvbihpbnQgY29tcHJlc3Npb24s IENvbXByZXNzaW9uQWxnb3JpdGhtICphbGcsIGludCAqbGV2ZWwpCi17Ci0JaWYgKGNvbXByZXNz aW9uID09IFpfREVGQVVMVF9DT01QUkVTU0lPTiB8fAotCQkoY29tcHJlc3Npb24gPiAwICYmIGNv bXByZXNzaW9uIDw9IDkpKQotCQkqYWxnID0gQ09NUFJfQUxHX0xJQlo7Ci0JZWxzZSBpZiAoY29t cHJlc3Npb24gPT0gMCkKLQkJKmFsZyA9IENPTVBSX0FMR19OT05FOwotCWVsc2UKLQl7Ci0JCWZh dGFsKCJpbnZhbGlkIGNvbXByZXNzaW9uIGNvZGU6ICVkIiwgY29tcHJlc3Npb24pOwotCQkqYWxn ID0gQ09NUFJfQUxHX05PTkU7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQl9Ci0KLQkvKiBU aGUgbGV2ZWwgaXMganVzdCB0aGUgcGFzc2VkLWluIHZhbHVlLiAqLwotCWlmIChsZXZlbCkKLQkJ KmxldmVsID0gY29tcHJlc3Npb247Ci19Ci0KIC8qIFB1YmxpYyBpbnRlcmZhY2Ugcm91dGluZXMg Ki8KIAogLyogQWxsb2NhdGUgYSBuZXcgY29tcHJlc3NvciAqLwogQ29tcHJlc3NvclN0YXRlICoK LUFsbG9jYXRlQ29tcHJlc3NvcihpbnQgY29tcHJlc3Npb24sIFdyaXRlRnVuYyB3cml0ZUYpCitB bGxvY2F0ZUNvbXByZXNzb3IoQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJ CQkJICAgaW50IGNvbXByZXNzaW9uTGV2ZWwsIFdyaXRlRnVuYyB3cml0ZUYpCiB7CiAJQ29tcHJl c3NvclN0YXRlICpjczsKLQlDb21wcmVzc2lvbkFsZ29yaXRobSBhbGc7Ci0JaW50CQkJbGV2ZWw7 Ci0KLQlQYXJzZUNvbXByZXNzaW9uT3B0aW9uKGNvbXByZXNzaW9uLCAmYWxnLCAmbGV2ZWwpOwog CiAjaWZuZGVmIEhBVkVfTElCWgotCWlmIChhbGcgPT0gQ09NUFJfQUxHX0xJQlopCisJaWYgKGNv bXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0daSVApCiAJCWZhdGFsKCJub3QgYnVpbHQg d2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgogCiAJY3MgPSAoQ29tcHJlc3NvclN0YXRlICop IHBnX21hbGxvYzAoc2l6ZW9mKENvbXByZXNzb3JTdGF0ZSkpOwogCWNzLT53cml0ZUYgPSB3cml0 ZUY7Ci0JY3MtPmNvbXByQWxnID0gYWxnOworCWNzLT5jb21wcmVzc2lvbk1ldGhvZCA9IGNvbXBy ZXNzaW9uTWV0aG9kOwogCiAJLyoKIAkgKiBQZXJmb3JtIGNvbXByZXNzaW9uIGFsZ29yaXRobSBz cGVjaWZpYyBpbml0aWFsaXphdGlvbi4KIAkgKi8KICNpZmRlZiBIQVZFX0xJQloKLQlpZiAoYWxn ID09IENPTVBSX0FMR19MSUJaKQotCQlJbml0Q29tcHJlc3NvclpsaWIoY3MsIGxldmVsKTsKKwlp ZiAoY29tcHJlc3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05fR1pJUCkKKwkJSW5pdENvbXByZXNz b3JabGliKGNzLCBjb21wcmVzc2lvbkxldmVsKTsKICNlbmRpZgogCiAJcmV0dXJuIGNzOwpAQCAt MTU0LDIxICsxMjQsMjQgQEAgQWxsb2NhdGVDb21wcmVzc29yKGludCBjb21wcmVzc2lvbiwgV3Jp dGVGdW5jIHdyaXRlRikKICAqIG91dCB3aXRoIGFod3JpdGUoKS4KICAqLwogdm9pZAotUmVhZERh dGFGcm9tQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCwgaW50IGNvbXByZXNzaW9uLCBSZWFkRnVu YyByZWFkRikKK1JlYWREYXRhRnJvbUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNz aW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQlpbnQgY29tcHJlc3Npb25MZXZlbCwg UmVhZEZ1bmMgcmVhZEYpCiB7Ci0JQ29tcHJlc3Npb25BbGdvcml0aG0gYWxnOwotCi0JUGFyc2VD b21wcmVzc2lvbk9wdGlvbihjb21wcmVzc2lvbiwgJmFsZywgTlVMTCk7Ci0KLQlpZiAoYWxnID09 IENPTVBSX0FMR19OT05FKQotCQlSZWFkRGF0YUZyb21BcmNoaXZlTm9uZShBSCwgcmVhZEYpOwot CWlmIChhbGcgPT0gQ09NUFJfQUxHX0xJQlopCisJc3dpdGNoIChjb21wcmVzc2lvbk1ldGhvZCkK IAl7CisJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKKwkJCVJlYWREYXRhRnJvbUFyY2hpdmVOb25l KEFILCByZWFkRik7CisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lPTl9HWklQOgogI2lmZGVm IEhBVkVfTElCWgotCQlSZWFkRGF0YUZyb21BcmNoaXZlWmxpYihBSCwgcmVhZEYpOworCQkJUmVh ZERhdGFGcm9tQXJjaGl2ZVpsaWIoQUgsIHJlYWRGKTsKICNlbHNlCi0JCWZhdGFsKCJub3QgYnVp bHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1 cHBvcnQiKTsKICNlbmRpZgorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlmYXRhbCgiaW52YWxp ZCBjb21wcmVzc2lvbiBtZXRob2QiKTsKKwkJCWJyZWFrOwogCX0KIH0KIApAQCAtMTc5LDE4ICsx NTIsMjEgQEAgdm9pZAogV3JpdGVEYXRhVG9BcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFILCBDb21w cmVzc29yU3RhdGUgKmNzLAogCQkJCSAgIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBkTGVuKQog ewotCXN3aXRjaCAoY3MtPmNvbXByQWxnKQorCXN3aXRjaCAoY3MtPmNvbXByZXNzaW9uTWV0aG9k KQogCXsKLQkJY2FzZSBDT01QUl9BTEdfTElCWjoKKwkJY2FzZSBDT01QUkVTU0lPTl9HWklQOgog I2lmZGVmIEhBVkVfTElCWgogCQkJV3JpdGVEYXRhVG9BcmNoaXZlWmxpYihBSCwgY3MsIGRhdGEs IGRMZW4pOwogI2Vsc2UKIAkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsK ICNlbmRpZgogCQkJYnJlYWs7Ci0JCWNhc2UgQ09NUFJfQUxHX05PTkU6CisJCWNhc2UgQ09NUFJF U1NJT05fTk9ORToKIAkJCVdyaXRlRGF0YVRvQXJjaGl2ZU5vbmUoQUgsIGNzLCBkYXRhLCBkTGVu KTsKIAkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24g bWV0aG9kIik7CisJCQlicmVhazsKIAl9CiB9CiAKQEAgLTIwMCwxMSArMTc2LDIzIEBAIFdyaXRl RGF0YVRvQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcywKIHZv aWQKIEVuZENvbXByZXNzb3IoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3Mp CiB7CisJc3dpdGNoIChjcy0+Y29tcHJlc3Npb25NZXRob2QpCisJeworCQljYXNlIENPTVBSRVNT SU9OX0daSVA6CiAjaWZkZWYgSEFWRV9MSUJaCi0JaWYgKGNzLT5jb21wckFsZyA9PSBDT01QUl9B TEdfTElCWikKLQkJRW5kQ29tcHJlc3NvclpsaWIoQUgsIGNzKTsKKwkJCUVuZENvbXByZXNzb3Ja bGliKEFILCBjcyk7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9y dCIpOwogI2VuZGlmCi0JZnJlZShjcyk7CisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lPTl9O T05FOgorCQkJZnJlZShjcyk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZmF0YWwoImlu dmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKKwl9CiB9CiAKIC8qIFByaXZh dGUgcm91dGluZXMsIHNwZWNpZmljIHRvIGVhY2ggY29tcHJlc3Npb24gbWV0aG9kLiAqLwpAQCAt NDE4LDEwICs0MDYsOCBAQCBXcml0ZURhdGFUb0FyY2hpdmVOb25lKEFyY2hpdmVIYW5kbGUgKkFI LCBDb21wcmVzc29yU3RhdGUgKmNzLAogICovCiBzdHJ1Y3QgY2ZwCiB7Ci0JRklMRQkgICAqdW5j b21wcmVzc2VkZnA7Ci0jaWZkZWYgSEFWRV9MSUJaCi0JZ3pGaWxlCQljb21wcmVzc2VkZnA7Ci0j ZW5kaWYKKwlDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZDsKKwl2b2lkCSAgICpm cDsKIH07CiAKICNpZmRlZiBIQVZFX0xJQloKQEAgLTQ1NSwxOCArNDQxLDE4IEBAIGNmb3Blbl9y ZWFkKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCiAKICNpZmRlZiBIQVZFX0xJ QloKIAlpZiAoaGFzU3VmZml4KHBhdGgsICIuZ3oiKSkKLQkJZnAgPSBjZm9wZW4ocGF0aCwgbW9k ZSwgMSk7CisJCWZwID0gY2ZvcGVuKHBhdGgsIG1vZGUsIENPTVBSRVNTSU9OX0daSVAsIDApOwog CWVsc2UKICNlbmRpZgogCXsKLQkJZnAgPSBjZm9wZW4ocGF0aCwgbW9kZSwgMCk7CisJCWZwID0g Y2ZvcGVuKHBhdGgsIG1vZGUsIENPTVBSRVNTSU9OX05PTkUsIDApOwogI2lmZGVmIEhBVkVfTElC WgogCQlpZiAoZnAgPT0gTlVMTCkKIAkJewogCQkJY2hhcgkgICAqZm5hbWU7CiAKIAkJCWZuYW1l ID0gcHNwcmludGYoIiVzLmd6IiwgcGF0aCk7Ci0JCQlmcCA9IGNmb3BlbihmbmFtZSwgbW9kZSwg MSk7CisJCQlmcCA9IGNmb3BlbihmbmFtZSwgbW9kZSwgQ09NUFJFU1NJT05fR1pJUCwgMCk7CiAJ CQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOwogCQl9CiAjZW5kaWYKQEAgLTQ4NiwxOSArNDcyLDIx IEBAIGNmb3Blbl9yZWFkKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCiAgKiBP biBmYWlsdXJlLCByZXR1cm4gTlVMTCB3aXRoIGFuIGVycm9yIGNvZGUgaW4gZXJybm8uCiAgKi8K IGNmcCAqCi1jZm9wZW5fd3JpdGUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwg aW50IGNvbXByZXNzaW9uKQorY2ZvcGVuX3dyaXRlKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNo YXIgKm1vZGUsCisJCQkgQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJCQkg aW50IGNvbXByZXNzaW9uTGV2ZWwpCiB7CiAJY2ZwCQkgICAqZnA7CiAKLQlpZiAoY29tcHJlc3Np b24gPT0gMCkKLQkJZnAgPSBjZm9wZW4ocGF0aCwgbW9kZSwgMCk7CisJaWYgKGNvbXByZXNzaW9u TWV0aG9kID09IENPTVBSRVNTSU9OX05PTkUpCisJCWZwID0gY2ZvcGVuKHBhdGgsIG1vZGUsIGNv bXByZXNzaW9uTWV0aG9kLCAwKTsKIAllbHNlCiAJewogI2lmZGVmIEhBVkVfTElCWgogCQljaGFy CSAgICpmbmFtZTsKIAogCQlmbmFtZSA9IHBzcHJpbnRmKCIlcy5neiIsIHBhdGgpOwotCQlmcCA9 IGNmb3BlbihmbmFtZSwgbW9kZSwgY29tcHJlc3Npb24pOworCQlmcCA9IGNmb3BlbihmbmFtZSwg bW9kZSwgY29tcHJlc3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2ZWwpOwogCQlmcmVlX2tlZXBf ZXJybm8oZm5hbWUpOwogI2Vsc2UKIAkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9y dCIpOwpAQCAtNTA5LDYwICs0OTcsOTQgQEAgY2ZvcGVuX3dyaXRlKGNvbnN0IGNoYXIgKnBhdGgs IGNvbnN0IGNoYXIgKm1vZGUsIGludCBjb21wcmVzc2lvbikKIH0KIAogLyoKLSAqIE9wZW5zIGZp bGUgJ3BhdGgnIGluICdtb2RlJy4gSWYgJ2NvbXByZXNzaW9uJyBpcyBub24temVybywgdGhlIGZp bGUKLSAqIGlzIG9wZW5lZCB3aXRoIGxpYnogZ3pvcGVuKCksIG90aGVyd2lzZSB3aXRoIHBsYWlu IGZvcGVuKCkuCisgKiBUaGlzIGlzIHRoZSB3b3JraG9yc2UgZm9yIGNmb3BlbigpIG9yIGNmZG9w ZW4oKS4gSXQgb3BlbnMgZmlsZSAncGF0aCcgb3IKKyAqIGFzc29jaWF0ZXMgYSBzdHJlYW0gJ2Zk JywgaWYgJ2ZkJyBpcyBhIHZhbGlkIGRlc2NyaXB0b3IsIGluICdtb2RlJy4gVGhlCisgKiBkZXNj cmlwdG9yIGlzIG5vdCBkdXAnZWQgYW5kIGl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0 eSB0byBkbyBzby4KKyAqIFRoZSBjYWxsZXIgbXVzdCB2ZXJpZnkgdGhhdCB0aGUgJ2NvbXByZXNz aW9uTWV0aG9kJyBpcyBzdXBwb3J0ZWQgYnkgdGhlCisgKiBjdXJyZW50IGJ1aWxkLgogICoKICAq IE9uIGZhaWx1cmUsIHJldHVybiBOVUxMIHdpdGggYW4gZXJyb3IgY29kZSBpbiBlcnJuby4KICAq LwotY2ZwICoKLWNmb3Blbihjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLCBpbnQg Y29tcHJlc3Npb24pCitzdGF0aWMgY2ZwICoKK2Nmb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpw YXRoLCBpbnQgZmQsIGNvbnN0IGNoYXIgKm1vZGUsCisJCQkJQ29tcHJlc3Npb25NZXRob2QgY29t cHJlc3Npb25NZXRob2QsIGludCBjb21wcmVzc2lvbkxldmVsKQogewogCWNmcAkJICAgKmZwID0g cGdfbWFsbG9jKHNpemVvZihjZnApKTsKIAotCWlmIChjb21wcmVzc2lvbiAhPSAwKQorCWZwLT5j b21wcmVzc2lvbk1ldGhvZCA9IGNvbXByZXNzaW9uTWV0aG9kOworCisJc3dpdGNoIChjb21wcmVz c2lvbk1ldGhvZCkKIAl7Ci0jaWZkZWYgSEFWRV9MSUJaCi0JCWlmIChjb21wcmVzc2lvbiAhPSBa X0RFRkFVTFRfQ09NUFJFU1NJT04pCi0JCXsKLQkJCS8qIHVzZXIgaGFzIHNwZWNpZmllZCBhIGNv bXByZXNzaW9uIGxldmVsLCBzbyB0ZWxsIHpsaWIgdG8gdXNlIGl0ICovCi0JCQljaGFyCQltb2Rl X2NvbXByZXNzaW9uWzMyXTsKKwkJY2FzZSBDT01QUkVTU0lPTl9OT05FOgorCQkJaWYgKGZkID49 IDApCisJCQkJZnAtPmZwID0gZmRvcGVuKGZkLCBtb2RlKTsKKwkJCWVsc2UKKwkJCQlmcC0+ZnAg PSBmb3BlbihwYXRoLCBtb2RlKTsKKwkJCWlmIChmcC0+ZnAgPT0gTlVMTCkKKwkJCXsKKwkJCQlm cmVlX2tlZXBfZXJybm8oZnApOworCQkJCWZwID0gTlVMTDsKKwkJCX0KIAotCQkJc25wcmludGYo bW9kZV9jb21wcmVzc2lvbiwgc2l6ZW9mKG1vZGVfY29tcHJlc3Npb24pLCAiJXMlZCIsCi0JCQkJ CSBtb2RlLCBjb21wcmVzc2lvbik7Ci0JCQlmcC0+Y29tcHJlc3NlZGZwID0gZ3pvcGVuKHBhdGgs IG1vZGVfY29tcHJlc3Npb24pOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJLyogZG9uJ3Qgc3BlY2lm eSBhIGxldmVsLCBqdXN0IHVzZSB0aGUgemxpYiBkZWZhdWx0ICovCi0JCQlmcC0+Y29tcHJlc3Nl ZGZwID0gZ3pvcGVuKHBhdGgsIG1vZGUpOwotCQl9CisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVT U0lPTl9HWklQOgorI2lmZGVmIEhBVkVfTElCWgorCQkJaWYgKGNvbXByZXNzaW9uTGV2ZWwgIT0g Wl9ERUZBVUxUX0NPTVBSRVNTSU9OKQorCQkJeworCQkJCS8qCisJCQkJICogdXNlciBoYXMgc3Bl Y2lmaWVkIGEgY29tcHJlc3Npb24gbGV2ZWwsIHNvIHRlbGwgemxpYiB0byB1c2UKKwkJCQkgKiBp dAorCQkJCSAqLworCQkJCWNoYXIJCW1vZGVfY29tcHJlc3Npb25bMzJdOworCisJCQkJc25wcmlu dGYobW9kZV9jb21wcmVzc2lvbiwgc2l6ZW9mKG1vZGVfY29tcHJlc3Npb24pLCAiJXMlZCIsCisJ CQkJCQkgbW9kZSwgY29tcHJlc3Npb25MZXZlbCk7CisJCQkJaWYgKGZkID49IDApCisJCQkJCWZw LT5mcCA9IGd6ZG9wZW4oZmQsIG1vZGVfY29tcHJlc3Npb24pOworCQkJCWVsc2UKKwkJCQkJZnAt PmZwID0gZ3pvcGVuKHBhdGgsIG1vZGVfY29tcHJlc3Npb24pOworCQkJfQorCQkJZWxzZQorCQkJ eworCQkJCS8qIGRvbid0IHNwZWNpZnkgYSBsZXZlbCwganVzdCB1c2UgdGhlIHpsaWIgZGVmYXVs dCAqLworCQkJCWlmIChmZCA+PSAwKQorCQkJCQlmcC0+ZnAgPSBnemRvcGVuKGZkLCBtb2RlKTsK KwkJCQllbHNlCisJCQkJCWZwLT5mcCA9IGd6b3BlbihwYXRoLCBtb2RlKTsKKwkJCX0KIAotCQlm cC0+dW5jb21wcmVzc2VkZnAgPSBOVUxMOwotCQlpZiAoZnAtPmNvbXByZXNzZWRmcCA9PSBOVUxM KQotCQl7Ci0JCQlmcmVlX2tlZXBfZXJybm8oZnApOwotCQkJZnAgPSBOVUxMOwotCQl9CisJCQlp ZiAoZnAtPmZwID09IE5VTEwpCisJCQl7CisJCQkJZnJlZV9rZWVwX2Vycm5vKGZwKTsKKwkJCQlm cCA9IE5VTEw7CisJCQl9CiAjZWxzZQotCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBw b3J0Iik7Ci0jZW5kaWYKLQl9Ci0JZWxzZQotCXsKLSNpZmRlZiBIQVZFX0xJQloKLQkJZnAtPmNv bXByZXNzZWRmcCA9IE5VTEw7CisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0 Iik7CiAjZW5kaWYKLQkJZnAtPnVuY29tcHJlc3NlZGZwID0gZm9wZW4ocGF0aCwgbW9kZSk7Ci0J CWlmIChmcC0+dW5jb21wcmVzc2VkZnAgPT0gTlVMTCkKLQkJewotCQkJZnJlZV9rZWVwX2Vycm5v KGZwKTsKLQkJCWZwID0gTlVMTDsKLQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlmYXRh bCgiaW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2QiKTsKKwkJCWJyZWFrOwogCX0KIAogCXJldHVy biBmcDsKIH0KIAorY2ZwICoKK2Nmb3Blbihjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpt b2RlLAorCSAgIENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCSAgIGludCBj b21wcmVzc2lvbkxldmVsKQoreworCXJldHVybiBjZm9wZW5faW50ZXJuYWwocGF0aCwgLTEsIG1v ZGUsIGNvbXByZXNzaW9uTWV0aG9kLCBjb21wcmVzc2lvbkxldmVsKTsKK30KKworY2ZwICoKK2Nm ZG9wZW4oaW50IGZkLCBjb25zdCBjaGFyICptb2RlLAorCSAgIENvbXByZXNzaW9uTWV0aG9kIGNv bXByZXNzaW9uTWV0aG9kLAorCSAgIGludCBjb21wcmVzc2lvbkxldmVsKQoreworCXJldHVybiBj Zm9wZW5faW50ZXJuYWwoTlVMTCwgZmQsIG1vZGUsIGNvbXByZXNzaW9uTWV0aG9kLCBjb21wcmVz c2lvbkxldmVsKTsKK30KIAogaW50CiBjZnJlYWQodm9pZCAqcHRyLCBpbnQgc2l6ZSwgY2ZwICpm cCkKQEAgLTU3MiwzOCArNTk0LDYxIEBAIGNmcmVhZCh2b2lkICpwdHIsIGludCBzaXplLCBjZnAg KmZwKQogCWlmIChzaXplID09IDApCiAJCXJldHVybiAwOwogCi0jaWZkZWYgSEFWRV9MSUJaCi0J aWYgKGZwLT5jb21wcmVzc2VkZnApCisJc3dpdGNoIChmcC0+Y29tcHJlc3Npb25NZXRob2QpCiAJ ewotCQlyZXQgPSBnenJlYWQoZnAtPmNvbXByZXNzZWRmcCwgcHRyLCBzaXplKTsKLQkJaWYgKHJl dCAhPSBzaXplICYmICFnemVvZihmcC0+Y29tcHJlc3NlZGZwKSkKLQkJewotCQkJaW50CQkJZXJy bnVtOwotCQkJY29uc3QgY2hhciAqZXJybXNnID0gZ3plcnJvcihmcC0+Y29tcHJlc3NlZGZwLCAm ZXJybnVtKTsKKwkJY2FzZSBDT01QUkVTU0lPTl9OT05FOgorCQkJcmV0ID0gZnJlYWQocHRyLCAx LCBzaXplLCBmcC0+ZnApOworCQkJaWYgKHJldCAhPSBzaXplICYmICFmZW9mKGZwLT5mcCkpCisJ CQkJUkVBRF9FUlJPUl9FWElUKGZwLT5mcCk7CiAKLQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBm cm9tIGlucHV0IGZpbGU6ICVzIiwKLQkJCQkgIGVycm51bSA9PSBaX0VSUk5PID8gc3RyZXJyb3Io ZXJybm8pIDogZXJybXNnKTsKLQkJfQotCX0KLQllbHNlCisJCQlicmVhazsKKwkJY2FzZSBDT01Q UkVTU0lPTl9HWklQOgorI2lmZGVmIEhBVkVfTElCWgorCQkJcmV0ID0gZ3pyZWFkKGZwLT5mcCwg cHRyLCBzaXplKTsKKwkJCWlmIChyZXQgIT0gc2l6ZSAmJiAhZ3plb2YoZnAtPmZwKSkKKwkJCXsK KwkJCQlpbnQJCQllcnJudW07CisJCQkJY29uc3QgY2hhciAqZXJybXNnID0gZ3plcnJvcihmcC0+ ZnAsICZlcnJudW0pOworCisJCQkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmls ZTogJXMiLAorCQkJCQkgIGVycm51bSA9PSBaX0VSUk5PID8gc3RyZXJyb3IoZXJybm8pIDogZXJy bXNnKTsKKwkJCX0KKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0 Iik7CiAjZW5kaWYKLQl7Ci0JCXJldCA9IGZyZWFkKHB0ciwgMSwgc2l6ZSwgZnAtPnVuY29tcHJl c3NlZGZwKTsKLQkJaWYgKHJldCAhPSBzaXplICYmICFmZW9mKGZwLT51bmNvbXByZXNzZWRmcCkp Ci0JCQlSRUFEX0VSUk9SX0VYSVQoZnAtPnVuY29tcHJlc3NlZGZwKTsKKwkJCWJyZWFrOworCisJ CWRlZmF1bHQ6CisJCQlmYXRhbCgiaW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2QiKTsKKwkJCWJy ZWFrOwogCX0KKwogCXJldHVybiByZXQ7CiB9CiAKIGludAogY2Z3cml0ZShjb25zdCB2b2lkICpw dHIsIGludCBzaXplLCBjZnAgKmZwKQogeworCWludAkJCXJldCA9IDA7CisKKwlzd2l0Y2ggKGZw LT5jb21wcmVzc2lvbk1ldGhvZCkKKwl7CisJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKKwkJCXJl dCA9IGZ3cml0ZShwdHIsIDEsIHNpemUsIGZwLT5mcCk7CisJCQlicmVhazsKKwkJY2FzZSBDT01Q UkVTU0lPTl9HWklQOgogI2lmZGVmIEhBVkVfTElCWgotCWlmIChmcC0+Y29tcHJlc3NlZGZwKQot CQlyZXR1cm4gZ3p3cml0ZShmcC0+Y29tcHJlc3NlZGZwLCBwdHIsIHNpemUpOwotCWVsc2UKKwkJ CXJldCA9IGd6d3JpdGUoZnAtPmZwLCBwdHIsIHNpemUpOworI2Vsc2UKKwkJCWZhdGFsKCJub3Qg YnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgotCQlyZXR1cm4gZndyaXRlKHB0ciwg MSwgc2l6ZSwgZnAtPnVuY29tcHJlc3NlZGZwKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJ ZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKKwl9CisKKwly ZXR1cm4gcmV0OwogfQogCiBpbnQKQEAgLTYxMSwyNCArNjU2LDMxIEBAIGNmZ2V0YyhjZnAgKmZw KQogewogCWludAkJCXJldDsKIAotI2lmZGVmIEhBVkVfTElCWgotCWlmIChmcC0+Y29tcHJlc3Nl ZGZwKQorCXN3aXRjaCAoZnAtPmNvbXByZXNzaW9uTWV0aG9kKQogCXsKLQkJcmV0ID0gZ3pnZXRj KGZwLT5jb21wcmVzc2VkZnApOwotCQlpZiAocmV0ID09IEVPRikKLQkJewotCQkJaWYgKCFnemVv ZihmcC0+Y29tcHJlc3NlZGZwKSkKLQkJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1 dCBmaWxlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7Ci0JCQllbHNlCi0JCQkJZmF0YWwoImNvdWxk IG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogZW5kIG9mIGZpbGUiKTsKLQkJfQotCX0KLQllbHNl CisJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKKwkJCXJldCA9IGZnZXRjKGZwLT5mcCk7CisJCQlp ZiAocmV0ID09IEVPRikKKwkJCQlSRUFEX0VSUk9SX0VYSVQoZnAtPmZwKTsKKworCQkJYnJlYWs7 CisJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoKKyNpZmRlZiBIQVZFX0xJQloKKwkJCXJldCA9IGd6 Z2V0YygoZ3pGaWxlKWZwLT5mcCk7CisJCQlpZiAocmV0ID09IEVPRikKKwkJCXsKKwkJCQlpZiAo IWd6ZW9mKGZwLT5mcCkpCisJCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZp bGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQllbHNlCisJCQkJCWZhdGFsKCJjb3VsZCBu b3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBvZiBmaWxlIik7CisJCQl9CisjZWxzZQorCQkJ ZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCi0JewotCQlyZXQg PSBmZ2V0YyhmcC0+dW5jb21wcmVzc2VkZnApOwotCQlpZiAocmV0ID09IEVPRikKLQkJCVJFQURf RVJST1JfRVhJVChmcC0+dW5jb21wcmVzc2VkZnApOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJ CQlmYXRhbCgiaW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2QiKTsKKwkJCWJyZWFrOwogCX0KIAog CXJldHVybiByZXQ7CkBAIC02MzcsNjUgKzY4OSwxMDcgQEAgY2ZnZXRjKGNmcCAqZnApCiBjaGFy ICoKIGNmZ2V0cyhjZnAgKmZwLCBjaGFyICpidWYsIGludCBsZW4pCiB7CisJY2hhcgkgICAqcmV0 OworCisJc3dpdGNoIChmcC0+Y29tcHJlc3Npb25NZXRob2QpCisJeworCQljYXNlIENPTVBSRVNT SU9OX05PTkU6CisJCQlyZXQgPSBmZ2V0cyhidWYsIGxlbiwgZnAtPmZwKTsKKworCQkJYnJlYWs7 CisJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoKICNpZmRlZiBIQVZFX0xJQloKLQlpZiAoZnAtPmNv bXByZXNzZWRmcCkKLQkJcmV0dXJuIGd6Z2V0cyhmcC0+Y29tcHJlc3NlZGZwLCBidWYsIGxlbik7 Ci0JZWxzZQorCQkJcmV0ID0gZ3pnZXRzKGZwLT5mcCwgYnVmLCBsZW4pOworI2Vsc2UKKwkJCWZh dGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgotCQlyZXR1cm4gZmdl dHMoYnVmLCBsZW4sIGZwLT51bmNvbXByZXNzZWRmcCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoK KwkJCWZhdGFsKCJpbnZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCIpOworCQkJYnJlYWs7CisJfQor CisJcmV0dXJuIHJldDsKIH0KIAogaW50CiBjZmNsb3NlKGNmcCAqZnApCiB7Ci0JaW50CQkJcmVz dWx0OworCWludAkJCXJldDsKIAogCWlmIChmcCA9PSBOVUxMKQogCXsKIAkJZXJybm8gPSBFQkFE RjsKIAkJcmV0dXJuIEVPRjsKIAl9Ci0jaWZkZWYgSEFWRV9MSUJaCi0JaWYgKGZwLT5jb21wcmVz c2VkZnApCisKKwlzd2l0Y2ggKGZwLT5jb21wcmVzc2lvbk1ldGhvZCkKIAl7Ci0JCXJlc3VsdCA9 IGd6Y2xvc2UoZnAtPmNvbXByZXNzZWRmcCk7Ci0JCWZwLT5jb21wcmVzc2VkZnAgPSBOVUxMOwot CX0KLQllbHNlCisJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKKwkJCXJldCA9IGZjbG9zZShmcC0+ ZnApOworCQkJZnAtPmZwID0gTlVMTDsKKworCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05f R1pJUDoKKyNpZmRlZiBIQVZFX0xJQloKKwkJCXJldCA9IGd6Y2xvc2UoZnAtPmZwKTsKKwkJCWZw LT5mcCA9IE5VTEw7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9y dCIpOwogI2VuZGlmCi0JewotCQlyZXN1bHQgPSBmY2xvc2UoZnAtPnVuY29tcHJlc3NlZGZwKTsK LQkJZnAtPnVuY29tcHJlc3NlZGZwID0gTlVMTDsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJ ZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKIAl9CisKIAlm cmVlX2tlZXBfZXJybm8oZnApOwogCi0JcmV0dXJuIHJlc3VsdDsKKwlyZXR1cm4gcmV0OwogfQog CiBpbnQKIGNmZW9mKGNmcCAqZnApCiB7CisJaW50CQkJcmV0OworCisJc3dpdGNoIChmcC0+Y29t cHJlc3Npb25NZXRob2QpCisJeworCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CisJCQlyZXQgPSBm ZW9mKGZwLT5mcCk7CisKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0daSVA6CiAjaWZk ZWYgSEFWRV9MSUJaCi0JaWYgKGZwLT5jb21wcmVzc2VkZnApCi0JCXJldHVybiBnemVvZihmcC0+ Y29tcHJlc3NlZGZwKTsKLQllbHNlCisJCQlyZXQgPSBnemVvZihmcC0+ZnApOworI2Vsc2UKKwkJ CWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgotCQlyZXR1cm4g ZmVvZihmcC0+dW5jb21wcmVzc2VkZnApOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlmYXRh bCgiaW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2QiKTsKKwkJCWJyZWFrOworCX0KKworCXJldHVy biByZXQ7CiB9CiAKIGNvbnN0IGNoYXIgKgogZ2V0X2NmcF9lcnJvcihjZnAgKmZwKQogewotI2lm ZGVmIEhBVkVfTElCWgotCWlmIChmcC0+Y29tcHJlc3NlZGZwKQorCWlmIChmcC0+Y29tcHJlc3Np b25NZXRob2QgPT0gQ09NUFJFU1NJT05fR1pJUCkKIAl7CisjaWZkZWYgSEFWRV9MSUJaCiAJCWlu dAkJCWVycm51bTsKLQkJY29uc3QgY2hhciAqZXJybXNnID0gZ3plcnJvcihmcC0+Y29tcHJlc3Nl ZGZwLCAmZXJybnVtKTsKKwkJY29uc3QgY2hhciAqZXJybXNnID0gZ3plcnJvcihmcC0+ZnAsICZl cnJudW0pOwogCiAJCWlmIChlcnJudW0gIT0gWl9FUlJOTykKIAkJCXJldHVybiBlcnJtc2c7Ci0J fQorI2Vsc2UKKwkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlm CisJfQorCiAJcmV0dXJuIHN0cmVycm9yKGVycm5vKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL2NvbXByZXNzX2lvLmggYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaApp bmRleCBmNjM1Nzg3NjkyLi5iOGIzNjY2MTZjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv Y29tcHJlc3NfaW8uaAorKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaApAQCAtMTcs MTYgKzE3LDE3IEBACiAKICNpbmNsdWRlICJwZ19iYWNrdXBfYXJjaGl2ZXIuaCIKIAorI2lmZGVm IEhBVkVfTElCWgorI2luY2x1ZGUgPHpsaWIuaD4KKyNlbHNlCisvKiB0aGlzIGlzIGp1c3QgdGhl IHJlZGVmaW5pdGlvbiBvZiBhIGxpYnogY29uc3RhbnQgKi8KKyNkZWZpbmUgWl9ERUZBVUxUX0NP TVBSRVNTSU9OICgtMSkKKyNlbmRpZgorCiAvKiBJbml0aWFsIGJ1ZmZlciBzaXplcyB1c2VkIGlu IHpsaWIgY29tcHJlc3Npb24uICovCiAjZGVmaW5lIFpMSUJfT1VUX1NJWkUJNDA5NgogI2RlZmlu ZSBaTElCX0lOX1NJWkUJNDA5NgogCi10eXBlZGVmIGVudW0KLXsKLQlDT01QUl9BTEdfTk9ORSwK LQlDT01QUl9BTEdfTElCWgotfSBDb21wcmVzc2lvbkFsZ29yaXRobTsKLQogLyogUHJvdG90eXBl IGZvciBjYWxsYmFjayBmdW5jdGlvbiB0byBXcml0ZURhdGFUb0FyY2hpdmUoKSAqLwogdHlwZWRl ZiB2b2lkICgqV3JpdGVGdW5jKSAoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmJ1Ziwg c2l6ZV90IGxlbik7CiAKQEAgLTQ2LDggKzQ3LDEyIEBAIHR5cGVkZWYgc2l6ZV90ICgqUmVhZEZ1 bmMpIChBcmNoaXZlSGFuZGxlICpBSCwgY2hhciAqKmJ1Ziwgc2l6ZV90ICpidWZsZW4pOwogLyog c3RydWN0IGRlZmluaXRpb24gYXBwZWFycyBpbiBjb21wcmVzc19pby5jICovCiB0eXBlZGVmIHN0 cnVjdCBDb21wcmVzc29yU3RhdGUgQ29tcHJlc3NvclN0YXRlOwogCi1leHRlcm4gQ29tcHJlc3Nv clN0YXRlICpBbGxvY2F0ZUNvbXByZXNzb3IoaW50IGNvbXByZXNzaW9uLCBXcml0ZUZ1bmMgd3Jp dGVGKTsKLWV4dGVybiB2b2lkIFJlYWREYXRhRnJvbUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgs IGludCBjb21wcmVzc2lvbiwKK2V4dGVybiBDb21wcmVzc29yU3RhdGUgKkFsbG9jYXRlQ29tcHJl c3NvcihDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJCQkJCQkgICBp bnQgY29tcHJlc3Npb25MZXZlbCwKKwkJCQkJCQkJCQkgICBXcml0ZUZ1bmMgd3JpdGVGKTsKK2V4 dGVybiB2b2lkIFJlYWREYXRhRnJvbUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgsCisJCQkJCQkJ CUNvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQkJCQlpbnQgY29tcHJl c3Npb25MZXZlbCwKIAkJCQkJCQkJUmVhZEZ1bmMgcmVhZEYpOwogZXh0ZXJuIHZvaWQgV3JpdGVE YXRhVG9BcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzLAogCQkJ CQkJCSAgIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBkTGVuKTsKQEAgLTU2LDkgKzYxLDE2IEBA IGV4dGVybiB2b2lkIEVuZENvbXByZXNzb3IoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JT dGF0ZSAqY3MpOwogCiB0eXBlZGVmIHN0cnVjdCBjZnAgY2ZwOwogCi1leHRlcm4gY2ZwICpjZm9w ZW4oY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwgaW50IGNvbXByZXNzaW9uKTsK K2V4dGVybiBjZnAgKmNmb3Blbihjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLAor CQkJCSAgIENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCSAgIGludCBj b21wcmVzc2lvbkxldmVsKTsKK2V4dGVybiBjZnAgKmNmZG9wZW4oaW50IGZkLCBjb25zdCBjaGFy ICptb2RlLAorCQkJCSAgIENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJ CSAgIGludCBjb21wcmVzc2lvbkxldmVsKTsKIGV4dGVybiBjZnAgKmNmb3Blbl9yZWFkKGNvbnN0 IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpOwotZXh0ZXJuIGNmcCAqY2ZvcGVuX3dyaXRl KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsIGludCBjb21wcmVzc2lvbik7Citl eHRlcm4gY2ZwICpjZm9wZW5fd3JpdGUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9k ZSwKKwkJCQkJCSBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJCSBp bnQgY29tcHJlc3Npb25MZXZlbCk7CiBleHRlcm4gaW50CWNmcmVhZCh2b2lkICpwdHIsIGludCBz aXplLCBjZnAgKmZwKTsKIGV4dGVybiBpbnQJY2Z3cml0ZShjb25zdCB2b2lkICpwdHIsIGludCBz aXplLCBjZnAgKmZwKTsKIGV4dGVybiBpbnQJY2ZnZXRjKGNmcCAqZnApOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5o CmluZGV4IGZjYzVmNmJkMDUuLjc2NDVkMzI4NWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKQEAgLTc1LDYg Kzc1LDEzIEBAIGVudW0gX2R1bXBQcmVwYXJlZFF1ZXJpZXMKIAlOVU1fUFJFUF9RVUVSSUVTCQkJ LyogbXVzdCBiZSBsYXN0ICovCiB9OwogCit0eXBlZGVmIGVudW0gX2NvbXByZXNzaW9uTWV0aG9k Cit7CisJQ09NUFJFU1NJT05fSU5WQUxJRCwKKwlDT01QUkVTU0lPTl9OT05FLAorCUNPTVBSRVNT SU9OX0daSVAKK30gQ29tcHJlc3Npb25NZXRob2Q7CisKIC8qIFBhcmFtZXRlcnMgbmVlZGVkIGJ5 IENvbm5lY3REYXRhYmFzZTsgc2FtZSBmb3IgZHVtcCBhbmQgcmVzdG9yZSAqLwogdHlwZWRlZiBz dHJ1Y3QgX2Nvbm5QYXJhbXMKIHsKQEAgLTE0Myw3ICsxNTAsOCBAQCB0eXBlZGVmIHN0cnVjdCBf cmVzdG9yZU9wdGlvbnMKIAogCWludAkJCW5vRGF0YUZvckZhaWxlZFRhYmxlczsKIAlpbnQJCQll eGl0X29uX2Vycm9yOwotCWludAkJCWNvbXByZXNzaW9uOworCUNvbXByZXNzaW9uTWV0aG9kIGNv bXByZXNzaW9uTWV0aG9kOworCWludAkJCWNvbXByZXNzaW9uTGV2ZWw7CiAJaW50CQkJc3VwcHJl c3NEdW1wV2FybmluZ3M7CS8qIFN1cHByZXNzIG91dHB1dCBvZiBXQVJOSU5HIGVudHJpZXMKIAkJ CQkJCQkJCQkgKiB0byBzdGRlcnIgKi8KIAlib29sCQlzaW5nbGVfdHhuOwpAQCAtMzAzLDcgKzMx MSw5IEBAIGV4dGVybiBBcmNoaXZlICpPcGVuQXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywg Y29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQpOwogCiAvKiBDcmVhdGUgYSBuZXcgYXJjaGl2ZSAqLwog ZXh0ZXJuIEFyY2hpdmUgKkNyZWF0ZUFyY2hpdmUoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0 IEFyY2hpdmVGb3JtYXQgZm10LAotCQkJCQkJCSAgY29uc3QgaW50IGNvbXByZXNzaW9uLCBib29s IGRvc3luYywgQXJjaGl2ZU1vZGUgbW9kZSwKKwkJCQkJCQkgIGNvbnN0IENvbXByZXNzaW9uTWV0 aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQkJCSAgY29uc3QgaW50IGNvbXByZXNzaW9uLAor CQkJCQkJCSAgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2RlIG1vZGUsCiAJCQkJCQkJICBTZXR1cFdv cmtlclB0clR5cGUgc2V0dXBEdW1wV29ya2VyKTsKIAogLyogVGhlIC0tbGlzdCBvcHRpb24gKi8K ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwppbmRleCBkNDFhOTlkNmVhLi43ZDk2NDQ2 ZjFhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC0zMSw2ICszMSw3IEBA CiAjZW5kaWYKIAogI2luY2x1ZGUgImNvbW1vbi9zdHJpbmcuaCIKKyNpbmNsdWRlICJjb21wcmVz c19pby5oIgogI2luY2x1ZGUgImR1bXB1dGlscy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmlu Z191dGlscy5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCkBAIC00MywxMyArNDQsNiBA QAogI2RlZmluZSBURVhUX0RVTVBfSEVBREVSICItLVxuLS0gUG9zdGdyZVNRTCBkYXRhYmFzZSBk dW1wXG4tLVxuXG4iCiAjZGVmaW5lIFRFWFRfRFVNUEFMTF9IRUFERVIgIi0tXG4tLSBQb3N0Z3Jl U1FMIGRhdGFiYXNlIGNsdXN0ZXIgZHVtcFxuLS1cblxuIgogCi0vKiBzdGF0ZSBuZWVkZWQgdG8g c2F2ZS9yZXN0b3JlIGFuIGFyY2hpdmUncyBvdXRwdXQgdGFyZ2V0ICovCi10eXBlZGVmIHN0cnVj dCBfb3V0cHV0Q29udGV4dAotewotCXZvaWQJICAgKk9GOwotCWludAkJCWd6T3V0OwotfSBPdXRw dXRDb250ZXh0OwotCiAvKgogICogU3RhdGUgZm9yIHRyYWNraW5nIFRvY0VudHJ5cyB0aGF0IGFy ZSByZWFkeSB0byBwcm9jZXNzIGR1cmluZyBhIHBhcmFsbGVsCiAgKiByZXN0b3JlLiAgKFRoaXMg dXNlZCB0byBiZSBhIGxpc3QsIGFuZCB3ZSBzdGlsbCBjYWxsIGl0IHRoYXQsIHRob3VnaCBub3cK QEAgLTcwLDcgKzY0LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX3BhcmFsbGVsUmVhZHlMaXN0CiAKIAog c3RhdGljIEFyY2hpdmVIYW5kbGUgKl9hbGxvY0FIKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25z dCBBcmNoaXZlRm9ybWF0IGZtdCwKLQkJCQkJCQkgICBjb25zdCBpbnQgY29tcHJlc3Npb24sIGJv b2wgZG9zeW5jLCBBcmNoaXZlTW9kZSBtb2RlLAorCQkJCQkJCSAgIGNvbnN0IENvbXByZXNzaW9u TWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQkJCSAgIGNvbnN0IGludCBjb21wcmVzc2lv bkxldmVsLAorCQkJCQkJCSAgIGJvb2wgZG9zeW5jLCBBcmNoaXZlTW9kZSBtb2RlLAogCQkJCQkJ CSAgIFNldHVwV29ya2VyUHRyVHlwZSBzZXR1cFdvcmtlclB0cik7CiBzdGF0aWMgdm9pZCBfZ2V0 T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBUb2NFbnRyeSAqdGUpOwogc3RhdGlj IHZvaWQgX3ByaW50VG9jRW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9v bCBpc0RhdGEpOwpAQCAtOTgsOSArOTQsMTEgQEAgc3RhdGljIGludAlfZGlzY292ZXJBcmNoaXZl Rm9ybWF0KEFyY2hpdmVIYW5kbGUgKkFIKTsKIHN0YXRpYyBpbnQJUmVzdG9yaW5nVG9EQihBcmNo aXZlSGFuZGxlICpBSCk7CiBzdGF0aWMgdm9pZCBkdW1wX2xvX2J1ZihBcmNoaXZlSGFuZGxlICpB SCk7CiBzdGF0aWMgdm9pZCBkdW1wVGltZXN0YW1wKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBj aGFyICptc2csIHRpbWVfdCB0aW0pOwotc3RhdGljIHZvaWQgU2V0T3V0cHV0KEFyY2hpdmVIYW5k bGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGNvbXByZXNzaW9uKTsKLXN0YXRpYyBP dXRwdXRDb250ZXh0IFNhdmVPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgpOwotc3RhdGljIHZvaWQg UmVzdG9yZU91dHB1dChBcmNoaXZlSGFuZGxlICpBSCwgT3V0cHV0Q29udGV4dCBzYXZlZENvbnRl eHQpOworc3RhdGljIHZvaWQgU2V0T3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFy ICpmaWxlbmFtZSwKKwkJCQkJICBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCwK KwkJCQkJICBpbnQgY29tcHJlc3Npb25MZXZlbCk7CitzdGF0aWMgY2ZwICpTYXZlT3V0cHV0KEFy Y2hpdmVIYW5kbGUgKkFIKTsKK3N0YXRpYyB2b2lkIFJlc3RvcmVPdXRwdXQoQXJjaGl2ZUhhbmRs ZSAqQUgsIGNmcCAqc2F2ZWRPdXRwdXQpOwogCiBzdGF0aWMgaW50CXJlc3RvcmVfdG9jX2VudHJ5 KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIGJvb2wgaXNfcGFyYWxsZWwpOwogc3Rh dGljIHZvaWQgcmVzdG9yZV90b2NfZW50cmllc19wcmVmb3JrKEFyY2hpdmVIYW5kbGUgKkFILApA QCAtMjM5LDEyICsyMzcsMTUgQEAgc2V0dXBSZXN0b3JlV29ya2VyKEFyY2hpdmUgKkFIWCkKIC8q IFB1YmxpYyAqLwogQXJjaGl2ZSAqCiBDcmVhdGVBcmNoaXZlKGNvbnN0IGNoYXIgKkZpbGVTcGVj LCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKLQkJCSAgY29uc3QgaW50IGNvbXByZXNzaW9uLCBi b29sIGRvc3luYywgQXJjaGl2ZU1vZGUgbW9kZSwKKwkJCSAgY29uc3QgQ29tcHJlc3Npb25NZXRo b2QgY29tcHJlc3Npb25NZXRob2QsCisJCQkgIGNvbnN0IGludCBjb21wcmVzc2lvbkxldmVsLAor CQkJICBib29sIGRvc3luYywgQXJjaGl2ZU1vZGUgbW9kZSwKIAkJCSAgU2V0dXBXb3JrZXJQdHJU eXBlIHNldHVwRHVtcFdvcmtlcikKIAogewotCUFyY2hpdmVIYW5kbGUgKkFIID0gX2FsbG9jQUgo RmlsZVNwZWMsIGZtdCwgY29tcHJlc3Npb24sIGRvc3luYywKLQkJCQkJCQkJIG1vZGUsIHNldHVw RHVtcFdvcmtlcik7CisJQXJjaGl2ZUhhbmRsZSAqQUggPSBfYWxsb2NBSChGaWxlU3BlYywgZm10 LAorCQkJCQkJCQkgY29tcHJlc3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2ZWwsCisJCQkJCQkJ CSBkb3N5bmMsIG1vZGUsIHNldHVwRHVtcFdvcmtlcik7CiAKIAlyZXR1cm4gKEFyY2hpdmUgKikg QUg7CiB9CkBAIC0yNTQsNyArMjU1LDggQEAgQ3JlYXRlQXJjaGl2ZShjb25zdCBjaGFyICpGaWxl U3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCiBBcmNoaXZlICoKIE9wZW5BcmNoaXZlKGNv bnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCkKIHsKLQlBcmNoaXZl SGFuZGxlICpBSCA9IF9hbGxvY0FIKEZpbGVTcGVjLCBmbXQsIDAsIHRydWUsIGFyY2hNb2RlUmVh ZCwgc2V0dXBSZXN0b3JlV29ya2VyKTsKKwlBcmNoaXZlSGFuZGxlICpBSCA9IF9hbGxvY0FIKEZp bGVTcGVjLCBmbXQsIENPTVBSRVNTSU9OX05PTkUsIDAsIHRydWUsCisJCQkJCQkJCSBhcmNoTW9k ZVJlYWQsIHNldHVwUmVzdG9yZVdvcmtlcik7CiAKIAlyZXR1cm4gKEFyY2hpdmUgKikgQUg7CiB9 CkBAIC0yNjksMTEgKzI3MSw4IEBAIENsb3NlQXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJQUgtPkNs b3NlUHRyKEFIKTsKIAogCS8qIENsb3NlIHRoZSBvdXRwdXQgKi8KLQllcnJubyA9IDA7CQkJCQkv KiBpbiBjYXNlIGd6Y2xvc2UoKSBkb2Vzbid0IHNldCBpdCAqLwotCWlmIChBSC0+Z3pPdXQpCi0J CXJlcyA9IEdaQ0xPU0UoQUgtPk9GKTsKLQllbHNlIGlmIChBSC0+T0YgIT0gc3Rkb3V0KQotCQly ZXMgPSBmY2xvc2UoQUgtPk9GKTsKKwllcnJubyA9IDA7CisJcmVzID0gY2ZjbG9zZShBSC0+T0Yp OwogCiAJaWYgKHJlcyAhPSAwKQogCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIG91dHB1dCBmaWxl OiAlbSIpOwpAQCAtMzU1LDcgKzM1NCw3IEBAIFJlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkK IAlSZXN0b3JlT3B0aW9ucyAqcm9wdCA9IEFILT5wdWJsaWMucm9wdDsKIAlib29sCQlwYXJhbGxl bF9tb2RlOwogCVRvY0VudHJ5ICAgKnRlOwotCU91dHB1dENvbnRleHQgc2F2OworCWNmcAkJICAg KnNhdjsKIAogCUFILT5zdGFnZSA9IFNUQUdFX0lOSVRJQUxJWklORzsKIApAQCAtMzg0LDcgKzM4 Myw4IEBAIFJlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAkgKiBNYWtlIHN1cmUgd2Ugd29u J3QgbmVlZCAoZGUpY29tcHJlc3Npb24gd2UgaGF2ZW4ndCBnb3QKIAkgKi8KICNpZm5kZWYgSEFW RV9MSUJaCi0JaWYgKEFILT5jb21wcmVzc2lvbiAhPSAwICYmIEFILT5QcmludFRvY0RhdGFQdHIg IT0gTlVMTCkKKwlpZiAoQUgtPmNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0daSVAg JiYKKwkJQUgtPlByaW50VG9jRGF0YVB0ciAhPSBOVUxMKQogCXsKIAkJZm9yICh0ZSA9IEFILT50 b2MtPm5leHQ7IHRlICE9IEFILT50b2M7IHRlID0gdGUtPm5leHQpCiAJCXsKQEAgLTQ1OSw4ICs0 NTksOSBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJICogU2V0dXAgdGhlIG91dHB1 dCBmaWxlIGlmIG5lY2Vzc2FyeS4KIAkgKi8KIAlzYXYgPSBTYXZlT3V0cHV0KEFIKTsKLQlpZiAo cm9wdC0+ZmlsZW5hbWUgfHwgcm9wdC0+Y29tcHJlc3Npb24pCi0JCVNldE91dHB1dChBSCwgcm9w dC0+ZmlsZW5hbWUsIHJvcHQtPmNvbXByZXNzaW9uKTsKKwlpZiAocm9wdC0+ZmlsZW5hbWUgfHwg cm9wdC0+Y29tcHJlc3Npb25NZXRob2QgIT0gQ09NUFJFU1NJT05fTk9ORSkKKwkJU2V0T3V0cHV0 KEFILCByb3B0LT5maWxlbmFtZSwKKwkJCQkgIHJvcHQtPmNvbXByZXNzaW9uTWV0aG9kLCByb3B0 LT5jb21wcmVzc2lvbkxldmVsKTsKIAogCWFocHJpbnRmKEFILCAiLS1cbi0tIFBvc3RncmVTUUwg ZGF0YWJhc2UgZHVtcFxuLS1cblxuIik7CiAKQEAgLTc0MCw3ICs3NDEsNyBAQCBSZXN0b3JlQXJj aGl2ZShBcmNoaXZlICpBSFgpCiAJICovCiAJQUgtPnN0YWdlID0gU1RBR0VfRklOQUxJWklORzsK IAotCWlmIChyb3B0LT5maWxlbmFtZSB8fCByb3B0LT5jb21wcmVzc2lvbikKKwlpZiAocm9wdC0+ ZmlsZW5hbWUgfHwgcm9wdC0+Y29tcHJlc3Npb25NZXRob2QgIT0gQ09NUFJFU1NJT05fTk9ORSkK IAkJUmVzdG9yZU91dHB1dChBSCwgc2F2KTsKIAogCWlmIChyb3B0LT51c2VEQikKQEAgLTk3MCw2 ICs5NzEsNyBAQCBOZXdSZXN0b3JlT3B0aW9ucyh2b2lkKQogCW9wdHMtPmZvcm1hdCA9IGFyY2hV bmtub3duOwogCW9wdHMtPmNwYXJhbXMucHJvbXB0UGFzc3dvcmQgPSBUUklfREVGQVVMVDsKIAlv cHRzLT5kdW1wU2VjdGlvbnMgPSBEVU1QX1VOU0VDVElPTkVEOworCW9wdHMtPmNvbXByZXNzaW9u TWV0aG9kID0gQ09NUFJFU1NJT05fTk9ORTsKIAogCXJldHVybiBvcHRzOwogfQpAQCAtMTExNywx MyArMTExOSwxMyBAQCBQcmludFRPQ1N1bW1hcnkoQXJjaGl2ZSAqQUhYKQogCVJlc3RvcmVPcHRp b25zICpyb3B0ID0gQUgtPnB1YmxpYy5yb3B0OwogCVRvY0VudHJ5ICAgKnRlOwogCXRlU2VjdGlv bgljdXJTZWN0aW9uOwotCU91dHB1dENvbnRleHQgc2F2OworCWNmcAkJICAgKnNhdjsKIAljb25z dCBjaGFyICpmbXROYW1lOwogCWNoYXIJCXN0YW1wX3N0cls2NF07CiAKIAlzYXYgPSBTYXZlT3V0 cHV0KEFIKTsKIAlpZiAocm9wdC0+ZmlsZW5hbWUpCi0JCVNldE91dHB1dChBSCwgcm9wdC0+Zmls ZW5hbWUsIDAgLyogbm8gY29tcHJlc3Npb24gKi8gKTsKKwkJU2V0T3V0cHV0KEFILCByb3B0LT5m aWxlbmFtZSwgQ09NUFJFU1NJT05fTk9ORSwgMCk7CiAKIAlpZiAoc3RyZnRpbWUoc3RhbXBfc3Ry LCBzaXplb2Yoc3RhbXBfc3RyKSwgUEdEVU1QX1NUUkZUSU1FX0ZNVCwKIAkJCQkgbG9jYWx0aW1l KCZBSC0+Y3JlYXRlRGF0ZSkpID09IDApCkBAIC0xMTMyLDcgKzExMzQsNyBAQCBQcmludFRPQ1N1 bW1hcnkoQXJjaGl2ZSAqQUhYKQogCWFocHJpbnRmKEFILCAiO1xuOyBBcmNoaXZlIGNyZWF0ZWQg YXQgJXNcbiIsIHN0YW1wX3N0cik7CiAJYWhwcmludGYoQUgsICI7ICAgICBkYm5hbWU6ICVzXG47 ICAgICBUT0MgRW50cmllczogJWRcbjsgICAgIENvbXByZXNzaW9uOiAlZFxuIiwKIAkJCSBzYW5p dGl6ZV9saW5lKEFILT5hcmNoZGJuYW1lLCBmYWxzZSksCi0JCQkgQUgtPnRvY0NvdW50LCBBSC0+ Y29tcHJlc3Npb24pOworCQkJIEFILT50b2NDb3VudCwgQUgtPmNvbXByZXNzaW9uTGV2ZWwpOwog CiAJc3dpdGNoIChBSC0+Zm9ybWF0KQogCXsKQEAgLTE0ODYsNjAgKzE0ODgsMzUgQEAgYXJjaHBy aW50ZihBcmNoaXZlICpBSCwgY29uc3QgY2hhciAqZm10LC4uLikKICAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwogCiBzdGF0aWMgdm9pZAotU2V0T3V0cHV0KEFyY2hpdmVIYW5kbGUg KkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGNvbXByZXNzaW9uKQorU2V0T3V0cHV0KEFy Y2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwKKwkJICBDb21wcmVzc2lvbk1l dGhvZCBjb21wcmVzc2lvbk1ldGhvZCwgaW50IGNvbXByZXNzaW9uTGV2ZWwpCiB7Ci0JaW50CQkJ Zm47CisJY29uc3QgY2hhciAqbW9kZTsKKwlpbnQJCQlmbiA9IC0xOwogCiAJaWYgKGZpbGVuYW1l KQogCXsKIAkJaWYgKHN0cmNtcChmaWxlbmFtZSwgIi0iKSA9PSAwKQogCQkJZm4gPSBmaWxlbm8o c3Rkb3V0KTsKLQkJZWxzZQotCQkJZm4gPSAtMTsKIAl9CiAJZWxzZSBpZiAoQUgtPkZIKQogCQlm biA9IGZpbGVubyhBSC0+RkgpOwogCWVsc2UgaWYgKEFILT5mU3BlYykKIAl7Ci0JCWZuID0gLTE7 CiAJCWZpbGVuYW1lID0gQUgtPmZTcGVjOwogCX0KIAllbHNlCiAJCWZuID0gZmlsZW5vKHN0ZG91 dCk7CiAKLQkvKiBJZiBjb21wcmVzc2lvbiBleHBsaWNpdGx5IHJlcXVlc3RlZCwgdXNlIGd6b3Bl biAqLwotI2lmZGVmIEhBVkVfTElCWgotCWlmIChjb21wcmVzc2lvbiAhPSAwKQotCXsKLQkJY2hh cgkJZm1vZGVbMTRdOworCWlmIChBSC0+bW9kZSA9PSBhcmNoTW9kZUFwcGVuZCkKKwkJbW9kZSA9 IFBHX0JJTkFSWV9BOworCWVsc2UKKwkJbW9kZSA9IFBHX0JJTkFSWV9XOwogCi0JCS8qIERvbid0 IHVzZSBQR19CSU5BUllfeCBzaW5jZSB0aGlzIGlzIHpsaWIgKi8KLQkJc3ByaW50ZihmbW9kZSwg IndiJWQiLCBjb21wcmVzc2lvbik7Ci0JCWlmIChmbiA+PSAwKQotCQkJQUgtPk9GID0gZ3pkb3Bl bihkdXAoZm4pLCBmbW9kZSk7Ci0JCWVsc2UKLQkJCUFILT5PRiA9IGd6b3BlbihmaWxlbmFtZSwg Zm1vZGUpOwotCQlBSC0+Z3pPdXQgPSAxOwotCX0KKwlpZiAoZm4gPj0gMCkKKwkJQUgtPk9GID0g Y2Zkb3BlbihkdXAoZm4pLCBtb2RlLCBjb21wcmVzc2lvbk1ldGhvZCwgY29tcHJlc3Npb25MZXZl bCk7CiAJZWxzZQotI2VuZGlmCi0JewkJCQkJCQkvKiBVc2UgZm9wZW4gKi8KLQkJaWYgKEFILT5t b2RlID09IGFyY2hNb2RlQXBwZW5kKQotCQl7Ci0JCQlpZiAoZm4gPj0gMCkKLQkJCQlBSC0+T0Yg PSBmZG9wZW4oZHVwKGZuKSwgUEdfQklOQVJZX0EpOwotCQkJZWxzZQotCQkJCUFILT5PRiA9IGZv cGVuKGZpbGVuYW1lLCBQR19CSU5BUllfQSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlpZiAoZm4g Pj0gMCkKLQkJCQlBSC0+T0YgPSBmZG9wZW4oZHVwKGZuKSwgUEdfQklOQVJZX1cpOwotCQkJZWxz ZQotCQkJCUFILT5PRiA9IGZvcGVuKGZpbGVuYW1lLCBQR19CSU5BUllfVyk7Ci0JCX0KLQkJQUgt Pmd6T3V0ID0gMDsKLQl9CisJCUFILT5PRiA9IGNmb3BlbihmaWxlbmFtZSwgbW9kZSwgY29tcHJl c3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2ZWwpOwogCiAJaWYgKCFBSC0+T0YpCiAJewpAQCAt MTU1MCwzMyArMTUyNywyNCBAQCBTZXRPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNo YXIgKmZpbGVuYW1lLCBpbnQgY29tcHJlc3Npb24pCiAJfQogfQogCi1zdGF0aWMgT3V0cHV0Q29u dGV4dAorc3RhdGljIGNmcCAqCiBTYXZlT3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFIKQogewotCU91 dHB1dENvbnRleHQgc2F2OwotCi0Jc2F2Lk9GID0gQUgtPk9GOwotCXNhdi5nek91dCA9IEFILT5n ek91dDsKLQotCXJldHVybiBzYXY7CisJcmV0dXJuIChjZnAgKilBSC0+T0Y7CiB9CiAKIHN0YXRp YyB2b2lkCi1SZXN0b3JlT3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBPdXRwdXRDb250ZXh0IHNh dmVkQ29udGV4dCkKK1Jlc3RvcmVPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgsIGNmcCAqc2F2ZWRP dXRwdXQpCiB7CiAJaW50CQkJcmVzOwogCi0JZXJybm8gPSAwOwkJCQkJLyogaW4gY2FzZSBnemNs b3NlKCkgZG9lc24ndCBzZXQgaXQgKi8KLQlpZiAoQUgtPmd6T3V0KQotCQlyZXMgPSBHWkNMT1NF KEFILT5PRik7Ci0JZWxzZQotCQlyZXMgPSBmY2xvc2UoQUgtPk9GKTsKKwllcnJubyA9IDA7CisJ cmVzID0gY2ZjbG9zZShBSC0+T0YpOwogCiAJaWYgKHJlcyAhPSAwKQogCQlmYXRhbCgiY291bGQg bm90IGNsb3NlIG91dHB1dCBmaWxlOiAlbSIpOwogCi0JQUgtPmd6T3V0ID0gc2F2ZWRDb250ZXh0 Lmd6T3V0OwotCUFILT5PRiA9IHNhdmVkQ29udGV4dC5PRjsKKwlBSC0+T0YgPSBzYXZlZE91dHB1 dDsKIH0KIAogCkBAIC0xNzAwLDIyICsxNjY4LDE2IEBAIGFod3JpdGUoY29uc3Qgdm9pZCAqcHRy LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCBBcmNoaXZlSGFuZGxlICpBSCkKIAogCQlieXRl c193cml0dGVuID0gc2l6ZSAqIG5tZW1iOwogCX0KLQllbHNlIGlmIChBSC0+Z3pPdXQpCi0JCWJ5 dGVzX3dyaXR0ZW4gPSBHWldSSVRFKHB0ciwgc2l6ZSwgbm1lbWIsIEFILT5PRik7CiAJZWxzZSBp ZiAoQUgtPkN1c3RvbU91dFB0cikKIAkJYnl0ZXNfd3JpdHRlbiA9IEFILT5DdXN0b21PdXRQdHIo QUgsIHB0ciwgc2l6ZSAqIG5tZW1iKTsKLQotCWVsc2UKLQl7Ci0JCS8qCi0JCSAqIElmIHdlJ3Jl IGRvaW5nIGEgcmVzdG9yZSwgYW5kIGl0J3MgZGlyZWN0IHRvIERCLCBhbmQgd2UncmUKLQkJICog Y29ubmVjdGVkIHRoZW4gc2VuZCBpdCB0byB0aGUgREIuCi0JCSAqLwotCQlpZiAoUmVzdG9yaW5n VG9EQihBSCkpCisJLyoKKwkgKiBJZiB3ZSdyZSBkb2luZyBhIHJlc3RvcmUsIGFuZCBpdCdzIGRp cmVjdCB0byBEQiwgYW5kIHdlJ3JlCisJICogY29ubmVjdGVkIHRoZW4gc2VuZCBpdCB0byB0aGUg REIuCisJICovCisJZWxzZSBpZiAoUmVzdG9yaW5nVG9EQihBSCkpCiAJCQlieXRlc193cml0dGVu ID0gRXhlY3V0ZVNxbENvbW1hbmRCdWYoJkFILT5wdWJsaWMsIChjb25zdCBjaGFyICopIHB0ciwg c2l6ZSAqIG5tZW1iKTsKLQkJZWxzZQotCQkJYnl0ZXNfd3JpdHRlbiA9IGZ3cml0ZShwdHIsIHNp emUsIG5tZW1iLCBBSC0+T0YpICogc2l6ZTsKLQl9CisJZWxzZQorCQlieXRlc193cml0dGVuID0g Y2Z3cml0ZShwdHIsIHNpemUgKiBubWVtYiwgQUgtPk9GKTsKIAogCWlmIChieXRlc193cml0dGVu ICE9IHNpemUgKiBubWVtYikKIAkJV1JJVEVfRVJST1JfRVhJVDsKQEAgLTIyMDAsNyArMjE2Miw5 IEBAIF9kaXNjb3ZlckFyY2hpdmVGb3JtYXQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAgKi8KIHN0YXRp YyBBcmNoaXZlSGFuZGxlICoKIF9hbGxvY0FIKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBB cmNoaXZlRm9ybWF0IGZtdCwKLQkJIGNvbnN0IGludCBjb21wcmVzc2lvbiwgYm9vbCBkb3N5bmMs IEFyY2hpdmVNb2RlIG1vZGUsCisJCSBjb25zdCBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lv bk1ldGhvZCwKKwkJIGNvbnN0IGludCBjb21wcmVzc2lvbkxldmVsLAorCQkgYm9vbCBkb3N5bmMs IEFyY2hpdmVNb2RlIG1vZGUsCiAJCSBTZXR1cFdvcmtlclB0clR5cGUgc2V0dXBXb3JrZXJQdHIp CiB7CiAJQXJjaGl2ZUhhbmRsZSAqQUg7CkBAIC0yMjUxLDE0ICsyMjE1LDE0IEBAIF9hbGxvY0FI KGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKIAlBSC0+dG9j LT5wcmV2ID0gQUgtPnRvYzsKIAogCUFILT5tb2RlID0gbW9kZTsKLQlBSC0+Y29tcHJlc3Npb24g PSBjb21wcmVzc2lvbjsKKwlBSC0+Y29tcHJlc3Npb25NZXRob2QgPSBjb21wcmVzc2lvbk1ldGhv ZDsKKwlBSC0+Y29tcHJlc3Npb25MZXZlbCA9IGNvbXByZXNzaW9uTGV2ZWw7CiAJQUgtPmRvc3lu YyA9IGRvc3luYzsKIAogCW1lbXNldCgmKEFILT5zcWxwYXJzZSksIDAsIHNpemVvZihBSC0+c3Fs cGFyc2UpKTsKIAogCS8qIE9wZW4gc3Rkb3V0IHdpdGggbm8gY29tcHJlc3Npb24gZm9yIEFIIG91 dHB1dCBoYW5kbGUgKi8KLQlBSC0+Z3pPdXQgPSAwOwotCUFILT5PRiA9IHN0ZG91dDsKKwlBSC0+ T0YgPSBjZmRvcGVuKGR1cChmaWxlbm8oc3Rkb3V0KSksIFBHX0JJTkFSWV9BLCBDT01QUkVTU0lP Tl9OT05FLCAwKTsKIAogCS8qCiAJICogT24gV2luZG93cywgd2UgbmVlZCB0byB1c2UgYmluYXJ5 IG1vZGUgdG8gcmVhZC93cml0ZSBub24tdGV4dCBmaWxlcywKQEAgLTIyNjYsNyArMjIzMCw3IEBA IF9hbGxvY0FIKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwK IAkgKiBGb3JjZSBzdGRpbi9zdGRvdXQgaW50byBiaW5hcnkgbW9kZSBpZiB0aGF0IGlzIHdoYXQg d2UgYXJlIHVzaW5nLgogCSAqLwogI2lmZGVmIFdJTjMyCi0JaWYgKChmbXQgIT0gYXJjaE51bGwg fHwgY29tcHJlc3Npb24gIT0gMCkgJiYKKwlpZiAoKGZtdCAhPSBhcmNoTnVsbCB8fCBjb21wcmVz c2lvbk1ldGhvZCAhPSBDT01QUkVTU0lPTl9OT05FKSAmJgogCQkoQUgtPmZTcGVjID09IE5VTEwg fHwgc3RyY21wKEFILT5mU3BlYywgIiIpID09IDApKQogCXsKIAkJaWYgKG1vZGUgPT0gYXJjaE1v ZGVXcml0ZSkKQEAgLTM3MTYsNyArMzY4MCw3IEBAIFdyaXRlSGVhZChBcmNoaXZlSGFuZGxlICpB SCkKIAlBSC0+V3JpdGVCeXRlUHRyKEFILCBBSC0+aW50U2l6ZSk7CiAJQUgtPldyaXRlQnl0ZVB0 cihBSCwgQUgtPm9mZlNpemUpOwogCUFILT5Xcml0ZUJ5dGVQdHIoQUgsIEFILT5mb3JtYXQpOwot CVdyaXRlSW50KEFILCBBSC0+Y29tcHJlc3Npb24pOworCVdyaXRlSW50KEFILCBBSC0+Y29tcHJl c3Npb25MZXZlbCk7CiAJY3J0bSA9ICpsb2NhbHRpbWUoJkFILT5jcmVhdGVEYXRlKTsKIAlXcml0 ZUludChBSCwgY3J0bS50bV9zZWMpOwogCVdyaXRlSW50KEFILCBjcnRtLnRtX21pbik7CkBAIC0z NzkwLDE4ICszNzU0LDIxIEBAIFJlYWRIZWFkKEFyY2hpdmVIYW5kbGUgKkFIKQogCWlmIChBSC0+ dmVyc2lvbiA+PSBLX1ZFUlNfMV8yKQogCXsKIAkJaWYgKEFILT52ZXJzaW9uIDwgS19WRVJTXzFf NCkKLQkJCUFILT5jb21wcmVzc2lvbiA9IEFILT5SZWFkQnl0ZVB0cihBSCk7CisJCQlBSC0+Y29t cHJlc3Npb25MZXZlbCA9IEFILT5SZWFkQnl0ZVB0cihBSCk7CiAJCWVsc2UKLQkJCUFILT5jb21w cmVzc2lvbiA9IFJlYWRJbnQoQUgpOworCQkJQUgtPmNvbXByZXNzaW9uTGV2ZWwgPSBSZWFkSW50 KEFIKTsKIAl9CiAJZWxzZQotCQlBSC0+Y29tcHJlc3Npb24gPSBaX0RFRkFVTFRfQ09NUFJFU1NJ T047CisJCUFILT5jb21wcmVzc2lvbkxldmVsID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OOwogCisJ aWYgKEFILT5jb21wcmVzc2lvbkxldmVsICE9IElOVF9NSU4pCiAjaWZuZGVmIEhBVkVfTElCWgot CWlmIChBSC0+Y29tcHJlc3Npb24gIT0gMCkKIAkJcGdfbG9nX3dhcm5pbmcoImFyY2hpdmUgaXMg Y29tcHJlc3NlZCwgYnV0IHRoaXMgaW5zdGFsbGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgY29tcHJl c3Npb24gLS0gbm8gZGF0YSB3aWxsIGJlIGF2YWlsYWJsZSIpOworI2Vsc2UKKwkJQUgtPmNvbXBy ZXNzaW9uTWV0aG9kID0gQ09NUFJFU1NJT05fR1pJUDsKICNlbmRpZgogCisKIAlpZiAoQUgtPnZl cnNpb24gPj0gS19WRVJTXzFfNCkKIAl7CiAJCXN0cnVjdCB0bQljcnRtOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2JhY2t1cF9hcmNoaXZlci5oCmluZGV4IDU0MGQ0ZjZhODMuLjgzN2U5ZDczZjUgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAorKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKQEAgLTMyLDMwICszMiw2IEBACiAKICNkZWZpbmUg TE9CQlVGU0laRSAxNjM4NAogCi0jaWZkZWYgSEFWRV9MSUJaCi0jaW5jbHVkZSA8emxpYi5oPgot I2RlZmluZSBHWkNMT1NFKGZoKSBnemNsb3NlKGZoKQotI2RlZmluZSBHWldSSVRFKHAsIHMsIG4s IGZoKSBnendyaXRlKGZoLCBwLCAobikgKiAocykpCi0jZGVmaW5lIEdaUkVBRChwLCBzLCBuLCBm aCkgZ3pyZWFkKGZoLCBwLCAobikgKiAocykpCi0jZGVmaW5lIEdaRU9GKGZoKQlnemVvZihmaCkK LSNlbHNlCi0jZGVmaW5lIEdaQ0xPU0UoZmgpIGZjbG9zZShmaCkKLSNkZWZpbmUgR1pXUklURShw LCBzLCBuLCBmaCkgKGZ3cml0ZShwLCBzLCBuLCBmaCkgKiAocykpCi0jZGVmaW5lIEdaUkVBRChw LCBzLCBuLCBmaCkgZnJlYWQocCwgcywgbiwgZmgpCi0jZGVmaW5lIEdaRU9GKGZoKQlmZW9mKGZo KQotLyogdGhpcyBpcyBqdXN0IHRoZSByZWRlZmluaXRpb24gb2YgYSBsaWJ6IGNvbnN0YW50ICov Ci0jZGVmaW5lIFpfREVGQVVMVF9DT01QUkVTU0lPTiAoLTEpCi0KLXR5cGVkZWYgc3RydWN0IF96 X3N0cmVhbQotewotCXZvaWQJICAgKm5leHRfaW47Ci0Jdm9pZAkgICAqbmV4dF9vdXQ7Ci0Jc2l6 ZV90CQlhdmFpbF9pbjsKLQlzaXplX3QJCWF2YWlsX291dDsKLX0gel9zdHJlYW07Ci10eXBlZGVm IHpfc3RyZWFtICp6X3N0cmVhbXA7Ci0jZW5kaWYKLQogLyogRGF0YSBibG9jayB0eXBlcyAqLwog I2RlZmluZSBCTEtfREFUQSAxCiAjZGVmaW5lIEJMS19CTE9CUyAzCkBAIC0zMTksOCArMjk1LDcg QEAgc3RydWN0IF9hcmNoaXZlSGFuZGxlCiAKIAljaGFyCSAgICpmU3BlYzsJCQkvKiBBcmNoaXZl IEZpbGUgU3BlYyAqLwogCUZJTEUJICAgKkZIOwkJCQkvKiBHZW5lcmFsIHB1cnBvc2UgZmlsZSBo YW5kbGUgKi8KLQl2b2lkCSAgICpPRjsKLQlpbnQJCQlnek91dDsJCQkvKiBPdXRwdXQgZmlsZSAq LworCXZvaWQJICAgKk9GOwkJCQkvKiBPdXRwdXQgZmlsZSAqLwogCiAJc3RydWN0IF90b2NFbnRy eSAqdG9jOwkJLyogSGVhZGVyIG9mIGNpcmN1bGFyIGxpc3Qgb2YgVE9DIGVudHJpZXMgKi8KIAlp bnQJCQl0b2NDb3VudDsJCS8qIE51bWJlciBvZiBUT0MgZW50cmllcyAqLwpAQCAtMzMxLDE0ICsz MDYsMTcgQEAgc3RydWN0IF9hcmNoaXZlSGFuZGxlCiAJRHVtcElkCSAgICp0YWJsZURhdGFJZDsJ LyogVEFCTEUgREFUQSBpZHMsIGluZGV4ZWQgYnkgdGFibGUgZHVtcElkICovCiAKIAlzdHJ1Y3Qg X3RvY0VudHJ5ICpjdXJyVG9jOwkvKiBVc2VkIHdoZW4gZHVtcGluZyBkYXRhICovCi0JaW50CQkJ Y29tcHJlc3Npb247CS8qLS0tLS0tLS0tCi0JCQkJCQkJCSAqIENvbXByZXNzaW9uIHJlcXVlc3Rl ZCBvbiBvcGVuKCkuCi0JCQkJCQkJCSAqIFBvc3NpYmxlIHZhbHVlcyBmb3IgY29tcHJlc3Npb246 Ci0JCQkJCQkJCSAqIC0xCVpfREVGQVVMVF9DT01QUkVTU0lPTgotCQkJCQkJCQkgKiAgMAlDT01Q UkVTU0lPTl9OT05FCi0JCQkJCQkJCSAqIDEtOSBsZXZlbHMgZm9yIGd6aXAgY29tcHJlc3Npb24K LQkJCQkJCQkJICotLS0tLS0tLS0KLQkJCQkJCQkJICovCisJQ29tcHJlc3Npb25NZXRob2QgY29t cHJlc3Npb25NZXRob2Q7IC8qIFJlcXVlc3RlZCBtZXRob2QgZm9yIGNvbXByZXNzaW9uICovCisJ aW50CQkJY29tcHJlc3Npb25MZXZlbDsgLyotLS0tLS0tLS0KKwkJCQkJCQkJICAgKiBSZXF1ZXN0 ZWQgbGV2ZWwgb2YgY29tcHJlc3Npb24gZm9yIG1ldGhvZC4KKwkJCQkJCQkJICAgKiBQb3NzaWJs ZSB2YWx1ZXMgZm9yIGNvbXByZXNzaW9uOgorCQkJCQkJCQkgICAqIElOVF9NSU4gd2hlbiBubyBj b21wcmVzc2lvbiBtZXRob2QgaXMKKwkJCQkJCQkJICAgKiByZXF1ZXN0ZWQuCisJCQkJCQkJCSAg ICogLTEJWl9ERUZBVUxUX0NPTVBSRVNTSU9OIGZvciBnemlwCisJCQkJCQkJCSAgICogY29tcHJl c3Npb24uCisJCQkJCQkJCSAgICogMS05IGxldmVscyBmb3IgZ3ppcCBjb21wcmVzc2lvbi4KKwkJ CQkJCQkJICAgKi0tLS0tLS0tLQorCQkJCQkJCQkgICAqLwogCWJvb2wJCWRvc3luYzsJCQkvKiBk YXRhIHJlcXVlc3RlZCB0byBiZSBzeW5jZWQgb24gc2lnaHQgKi8KIAlBcmNoaXZlTW9kZSBtb2Rl OwkJCS8qIEZpbGUgbW9kZSAtIHIgb3IgdyAqLwogCXZvaWQJICAgKmZvcm1hdERhdGE7CQkvKiBI ZWFkZXIgZGF0YSBzcGVjaWZpYyB0byBmaWxlIGZvcm1hdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9jdXN0b20uYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf Y3VzdG9tLmMKaW5kZXggNzdkNDAyYzMyMy4uN2YzOGVhOWNkNSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9jdXN0b20uYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFj a3VwX2N1c3RvbS5jCkBAIC0yOTgsNyArMjk4LDkgQEAgX1N0YXJ0RGF0YShBcmNoaXZlSGFuZGxl ICpBSCwgVG9jRW50cnkgKnRlKQogCV9Xcml0ZUJ5dGUoQUgsIEJMS19EQVRBKTsJLyogQmxvY2sg dHlwZSAqLwogCVdyaXRlSW50KEFILCB0ZS0+ZHVtcElkKTsJLyogRm9yIHNhbml0eSBjaGVjayAq LwogCi0JY3R4LT5jcyA9IEFsbG9jYXRlQ29tcHJlc3NvcihBSC0+Y29tcHJlc3Npb24sIF9DdXN0 b21Xcml0ZUZ1bmMpOworCWN0eC0+Y3MgPSBBbGxvY2F0ZUNvbXByZXNzb3IoQUgtPmNvbXByZXNz aW9uTWV0aG9kLAorCQkJCQkJCQkgQUgtPmNvbXByZXNzaW9uTGV2ZWwsCisJCQkJCQkJCSBfQ3Vz dG9tV3JpdGVGdW5jKTsKIH0KIAogLyoKQEAgLTM3Nyw3ICszNzksOSBAQCBfU3RhcnRCbG9iKEFy Y2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIE9pZCBvaWQpCiAKIAlXcml0ZUludChBSCwg b2lkKTsKIAotCWN0eC0+Y3MgPSBBbGxvY2F0ZUNvbXByZXNzb3IoQUgtPmNvbXByZXNzaW9uLCBf Q3VzdG9tV3JpdGVGdW5jKTsKKwljdHgtPmNzID0gQWxsb2NhdGVDb21wcmVzc29yKEFILT5jb21w cmVzc2lvbk1ldGhvZCwKKwkJCQkJCQkJIEFILT5jb21wcmVzc2lvbkxldmVsLAorCQkJCQkJCQkg X0N1c3RvbVdyaXRlRnVuYyk7CiB9CiAKIC8qCkBAIC01NjYsNyArNTcwLDggQEAgX1ByaW50VG9j RGF0YShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogc3RhdGljIHZvaWQKIF9Qcmlu dERhdGEoQXJjaGl2ZUhhbmRsZSAqQUgpCiB7Ci0JUmVhZERhdGFGcm9tQXJjaGl2ZShBSCwgQUgt PmNvbXByZXNzaW9uLCBfQ3VzdG9tUmVhZEZ1bmMpOworCVJlYWREYXRhRnJvbUFyY2hpdmUoQUgs IEFILT5jb21wcmVzc2lvbk1ldGhvZCwgQUgtPmNvbXByZXNzaW9uTGV2ZWwsCisJCQkJCQlfQ3Vz dG9tUmVhZEZ1bmMpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGly ZWN0b3J5LmMKaW5kZXggN2Y0ZTM0MGRlYS4uMGU2MGI0NDdkZSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX2RpcmVjdG9yeS5jCkBAIC0zMjcsNyArMzI3LDkgQEAgX1N0YXJ0RGF0YShBcmNoaXZl SGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCiAJc2V0RmlsZVBhdGgoQUgsIGZuYW1lLCB0Y3R4 LT5maWxlbmFtZSk7CiAKLQljdHgtPmRhdGFGSCA9IGNmb3Blbl93cml0ZShmbmFtZSwgUEdfQklO QVJZX1csIEFILT5jb21wcmVzc2lvbik7CisJY3R4LT5kYXRhRkggPSBjZm9wZW5fd3JpdGUoZm5h bWUsIFBHX0JJTkFSWV9XLAorCQkJCQkJCSAgIEFILT5jb21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJ CQkgICBBSC0+Y29tcHJlc3Npb25MZXZlbCk7CiAJaWYgKGN0eC0+ZGF0YUZIID09IE5VTEwpCiAJ CWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwog fQpAQCAtNTgxLDcgKzU4Myw4IEBAIF9DbG9zZUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJ CWN0eC0+cHN0YXRlID0gUGFyYWxsZWxCYWNrdXBTdGFydChBSCk7CiAKIAkJLyogVGhlIFRPQyBp cyBhbHdheXMgY3JlYXRlZCB1bmNvbXByZXNzZWQgKi8KLQkJdG9jRkggPSBjZm9wZW5fd3JpdGUo Zm5hbWUsIFBHX0JJTkFSWV9XLCAwKTsKKwkJdG9jRkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsIFBH X0JJTkFSWV9XLAorCQkJCQkJCSBDT01QUkVTU0lPTl9OT05FLCAwKTsKIAkJaWYgKHRvY0ZIID09 IE5VTEwpCiAJCQlmYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIs IGZuYW1lKTsKIAkJY3R4LT5kYXRhRkggPSB0b2NGSDsKQEAgLTY0NCw3ICs2NDcsNyBAQCBfU3Rh cnRCbG9icyhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCXNldEZpbGVQYXRoKEFI LCBmbmFtZSwgImJsb2JzLnRvYyIpOwogCiAJLyogVGhlIGJsb2IgVE9DIGZpbGUgaXMgbmV2ZXIg Y29tcHJlc3NlZCAqLwotCWN0eC0+YmxvYnNUb2NGSCA9IGNmb3Blbl93cml0ZShmbmFtZSwgImFi IiwgMCk7CisJY3R4LT5ibG9ic1RvY0ZIID0gY2ZvcGVuX3dyaXRlKGZuYW1lLCAiYWIiLCBDT01Q UkVTU0lPTl9OT05FLCAwKTsKIAlpZiAoY3R4LT5ibG9ic1RvY0ZIID09IE5VTEwpCiAJCWZhdGFs KCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwogfQpAQCAt NjYyLDcgKzY2NSw4IEBAIF9TdGFydEJsb2IoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0 ZSwgT2lkIG9pZCkKIAogCXNucHJpbnRmKGZuYW1lLCBNQVhQR1BBVEgsICIlcy9ibG9iXyV1LmRh dCIsIGN0eC0+ZGlyZWN0b3J5LCBvaWQpOwogCi0JY3R4LT5kYXRhRkggPSBjZm9wZW5fd3JpdGUo Zm5hbWUsIFBHX0JJTkFSWV9XLCBBSC0+Y29tcHJlc3Npb24pOworCWN0eC0+ZGF0YUZIID0gY2Zv cGVuX3dyaXRlKGZuYW1lLCBQR19CSU5BUllfVywKKwkJCQkJCQkgICBBSC0+Y29tcHJlc3Npb25N ZXRob2QsIEFILT5jb21wcmVzc2lvbkxldmVsKTsKIAogCWlmIChjdHgtPmRhdGFGSCA9PSBOVUxM KQogCQlmYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1l KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMgYi9zcmMvYmlu L3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jCmluZGV4IDI0OTFhMDkxYjkuLmIyNWI2NDFjYWEgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF90YXIuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHVuaXN0 ZC5oPgogCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKKyNpbmNsdWRlICJjb21wcmVz c19pby5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogI2luY2x1ZGUgInBn X2JhY2t1cF9hcmNoaXZlci5oIgogI2luY2x1ZGUgInBnX2JhY2t1cF90YXIuaCIKQEAgLTE5NCw3 ICsxOTUsNyBAQCBJbml0QXJjaGl2ZUZtdF9UYXIoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCSAqIHBv c3NpYmxlIHNpbmNlIGd6ZG9wZW4gdXNlcyBidWZmZXJlZCBJTyB3aGljaCB0b3RhbGx5IHNjcmV3 cyBmaWxlCiAJCSAqIHBvc2l0aW9uaW5nLgogCQkgKi8KLQkJaWYgKEFILT5jb21wcmVzc2lvbiAh PSAwKQorCQlpZiAoQUgtPmNvbXByZXNzaW9uTWV0aG9kICE9IENPTVBSRVNTSU9OX05PTkUpCiAJ CQlmYXRhbCgiY29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3Jt YXQiKTsKIAl9CiAJZWxzZQpAQCAtMzI4LDcgKzMyOSw3IEBAIHRhck9wZW4oQXJjaGl2ZUhhbmRs ZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyIG1vZGUpCiAJCQl9CiAJCX0KIAotCQlp ZiAoQUgtPmNvbXByZXNzaW9uID09IDApCisJCWlmIChBSC0+Y29tcHJlc3Npb25NZXRob2QgPT0g Q09NUFJFU1NJT05fTk9ORSkKIAkJCXRtLT5uRkggPSBjdHgtPnRhckZIOwogCQllbHNlCiAJCQlm YXRhbCgiY29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQi KTsKQEAgLTM4Myw3ICszODQsNyBAQCB0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBj aGFyICpmaWxlbmFtZSwgY2hhciBtb2RlKQogCiAJCXVtYXNrKG9sZF91bWFzayk7CiAKLQkJaWYg KEFILT5jb21wcmVzc2lvbiA9PSAwKQorCQlpZiAoQUgtPmNvbXByZXNzaW9uTWV0aG9kID09IENP TVBSRVNTSU9OX05PTkUpCiAJCQl0bS0+bkZIID0gdG0tPnRtcEZIOwogCQllbHNlCiAJCQlmYXRh bCgiY29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQiKTsK QEAgLTQwMSw3ICs0MDIsNyBAQCB0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFy ICpmaWxlbmFtZSwgY2hhciBtb2RlKQogc3RhdGljIHZvaWQKIHRhckNsb3NlKEFyY2hpdmVIYW5k bGUgKkFILCBUQVJfTUVNQkVSICp0aCkKIHsKLQlpZiAoQUgtPmNvbXByZXNzaW9uICE9IDApCisJ aWYgKEFILT5jb21wcmVzc2lvbk1ldGhvZCAhPSBDT01QUkVTU0lPTl9OT05FKQogCQlmYXRhbCgi Y29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQiKTsKIAog CWlmICh0aC0+bW9kZSA9PSAndycpCkBAIC04MDEsNyArODAyLDYgQEAgX0Nsb3NlQXJjaGl2ZShB cmNoaXZlSGFuZGxlICpBSCkKIAkJbWVtY3B5KHJvcHQsIEFILT5wdWJsaWMucm9wdCwgc2l6ZW9m KFJlc3RvcmVPcHRpb25zKSk7CiAJCXJvcHQtPmZpbGVuYW1lID0gTlVMTDsKIAkJcm9wdC0+ZHJv cFNjaGVtYSA9IDE7Ci0JCXJvcHQtPmNvbXByZXNzaW9uID0gMDsKIAkJcm9wdC0+c3VwZXJ1c2Vy ID0gTlVMTDsKIAkJcm9wdC0+c3VwcHJlc3NEdW1wV2FybmluZ3MgPSB0cnVlOwogCkBAIC04ODks NyArODg5LDcgQEAgX1N0YXJ0QmxvYihBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBP aWQgb2lkKQogCWlmIChvaWQgPT0gMCkKIAkJZmF0YWwoImludmFsaWQgT0lEIGZvciBsYXJnZSBv YmplY3QgKCV1KSIsIG9pZCk7CiAKLQlpZiAoQUgtPmNvbXByZXNzaW9uICE9IDApCisJaWYgKEFI LT5jb21wcmVzc2lvbk1ldGhvZCAhPSBDT01QUkVTU0lPTl9OT05FKQogCQlmYXRhbCgiY29tcHJl c3Npb24gaXMgbm90IHN1cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQiKTsKIAogCXNwcmlu dGYoZm5hbWUsICJibG9iXyV1LmRhdCIsIG9pZCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA1MzViMTYwMTY1 Li45N2FjMTdlYmZmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJj YXRhbG9nL3BnX3RyaWdnZXJfZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZV9kLmgiCiAj aW5jbHVkZSAiY29tbW9uL2Nvbm5lY3QuaCIKKyNpbmNsdWRlICJjb21wcmVzc19pby5oIgogI2lu Y2x1ZGUgImR1bXB1dGlscy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL29wdGlvbl91dGlscy5oIgog I2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgpAQCAtMTYzLDYgKzE2NCw5IEBAIHN0 YXRpYyB2b2lkIHNldHVwX2Nvbm5lY3Rpb24oQXJjaGl2ZSAqQUgsCiAJCQkJCQkJIGNvbnN0IGNo YXIgKmR1bXBlbmNvZGluZywgY29uc3QgY2hhciAqZHVtcHNuYXBzaG90LAogCQkJCQkJCSBjaGFy ICp1c2Vfcm9sZSk7CiBzdGF0aWMgQXJjaGl2ZUZvcm1hdCBwYXJzZUFyY2hpdmVGb3JtYXQoY29u c3QgY2hhciAqZm9ybWF0LCBBcmNoaXZlTW9kZSAqbW9kZSk7CitzdGF0aWMgYm9vbCBwYXJzZV9j b21wcmVzc2lvbl9vcHRpb24oY29uc3QgY2hhciAqb3B0LAorCQkJCQkJCQkJIENvbXByZXNzaW9u TWV0aG9kICpjb21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJCQkJCSBpbnQgKmNvbXByZXNzTGV2ZWwp Owogc3RhdGljIHZvaWQgZXhwYW5kX3NjaGVtYV9uYW1lX3BhdHRlcm5zKEFyY2hpdmUgKmZvdXQs CiAJCQkJCQkJCQkJU2ltcGxlU3RyaW5nTGlzdCAqcGF0dGVybnMsCiAJCQkJCQkJCQkJU2ltcGxl T2lkTGlzdCAqb2lkcywKQEAgLTMzNiw4ICszNDAsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAljb25zdCBjaGFyICpkdW1wc25hcHNob3QgPSBOVUxMOwogCWNoYXIJICAgKnVzZV9y b2xlID0gTlVMTDsKIAlpbnQJCQludW1Xb3JrZXJzID0gMTsKLQlpbnQJCQljb21wcmVzc0xldmVs ID0gLTE7CiAJaW50CQkJcGxhaW5UZXh0ID0gMDsKKwlpbnQJCQljb21wcmVzc0xldmVsID0gSU5U X01JTjsKKwlDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9O X0lOVkFMSUQ7CiAJQXJjaGl2ZUZvcm1hdCBhcmNoaXZlRm9ybWF0ID0gYXJjaFVua25vd247CiAJ QXJjaGl2ZU1vZGUgYXJjaGl2ZU1vZGU7CiAKQEAgLTU1Nyw5ICs1NjIsOSBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkJCQlkb3B0LmFjbHNTa2lwID0gdHJ1ZTsKIAkJCQlicmVhazsK IAotCQkJY2FzZSAnWic6CQkJLyogQ29tcHJlc3Npb24gTGV2ZWwgKi8KLQkJCQlpZiAoIW9wdGlv bl9wYXJzZV9pbnQob3B0YXJnLCAiLVovLS1jb21wcmVzcyIsIDAsIDksCi0JCQkJCQkJCQkgICZj b21wcmVzc0xldmVsKSkKKwkJCWNhc2UgJ1onOgkJCS8qIENvbXByZXNzaW9uICovCisJCQkJaWYg KCFwYXJzZV9jb21wcmVzc2lvbl9vcHRpb24ob3B0YXJnLCAmY29tcHJlc3Npb25NZXRob2QsCisJ CQkJCQkJCQkJCSAgJmNvbXByZXNzTGV2ZWwpKQogCQkJCQlleGl0X25pY2VseSgxKTsKIAkJCQli cmVhazsKIApAQCAtNjg5LDIzICs2OTQsMjEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJaWYgKGFyY2hpdmVGb3JtYXQgPT0gYXJjaE51bGwpCiAJCXBsYWluVGV4dCA9IDE7CiAKLQkv KiBDdXN0b20gYW5kIGRpcmVjdG9yeSBmb3JtYXRzIGFyZSBjb21wcmVzc2VkIGJ5IGRlZmF1bHQs IG90aGVycyBub3QgKi8KLQlpZiAoY29tcHJlc3NMZXZlbCA9PSAtMSkKKwkvKiBTZXQgZGVmYXVs dCBjb21wcmVzc2lvbk1ldGhvZCB1bmxlc3Mgb25lIGFscmVhZHkgc2V0IGJ5IHRoZSB1c2VyICov CisJaWYgKGNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0lOVkFMSUQpCiAJeworCQlj b21wcmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9OX05PTkU7CisKICNpZmRlZiBIQVZFX0xJQloK KwkJLyogQ3VzdG9tIGFuZCBkaXJlY3RvcnkgZm9ybWF0cyBhcmUgY29tcHJlc3NlZCBieSBkZWZh dWx0ICh6bGliKSAqLwogCQlpZiAoYXJjaGl2ZUZvcm1hdCA9PSBhcmNoQ3VzdG9tIHx8IGFyY2hp dmVGb3JtYXQgPT0gYXJjaERpcmVjdG9yeSkKKwkJeworCQkJY29tcHJlc3Npb25NZXRob2QgPSBD T01QUkVTU0lPTl9HWklQOwogCQkJY29tcHJlc3NMZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lP TjsKLQkJZWxzZQorCQl9CiAjZW5kaWYKLQkJCWNvbXByZXNzTGV2ZWwgPSAwOwogCX0KIAotI2lm bmRlZiBIQVZFX0xJQloKLQlpZiAoY29tcHJlc3NMZXZlbCAhPSAwKQotCQlwZ19sb2dfd2Fybmlu ZygicmVxdWVzdGVkIGNvbXByZXNzaW9uIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBpbnN0YWxsYXRp b24gLS0gYXJjaGl2ZSB3aWxsIGJlIHVuY29tcHJlc3NlZCIpOwotCWNvbXByZXNzTGV2ZWwgPSAw OwotI2VuZGlmCi0KIAkvKgogCSAqIElmIGVtaXR0aW5nIGFuIGFyY2hpdmUgZm9ybWF0LCB3ZSBh bHdheXMgd2FudCB0byBlbWl0IGEgREFUQUJBU0UgaXRlbSwKIAkgKiBpbiBjYXNlIC0tY3JlYXRl IGlzIHNwZWNpZmllZCBhdCBwZ19yZXN0b3JlIHRpbWUuCkBAIC03MTgsOCArNzIxLDkgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWZhdGFsKCJwYXJhbGxlbCBiYWNrdXAgb25seSBz dXBwb3J0ZWQgYnkgdGhlIGRpcmVjdG9yeSBmb3JtYXQiKTsKIAogCS8qIE9wZW4gdGhlIG91dHB1 dCBmaWxlICovCi0JZm91dCA9IENyZWF0ZUFyY2hpdmUoZmlsZW5hbWUsIGFyY2hpdmVGb3JtYXQs IGNvbXByZXNzTGV2ZWwsIGRvc3luYywKLQkJCQkJCSBhcmNoaXZlTW9kZSwgc2V0dXBEdW1wV29y a2VyKTsKKwlmb3V0ID0gQ3JlYXRlQXJjaGl2ZShmaWxlbmFtZSwgYXJjaGl2ZUZvcm1hdCwKKwkJ CQkJCSBjb21wcmVzc2lvbk1ldGhvZCwgY29tcHJlc3NMZXZlbCwKKwkJCQkJCSBkb3N5bmMsIGFy Y2hpdmVNb2RlLCBzZXR1cER1bXBXb3JrZXIpOwogCiAJLyogTWFrZSBkdW1wIG9wdGlvbnMgYWNj ZXNzaWJsZSByaWdodCBhd2F5ICovCiAJU2V0QXJjaGl2ZU9wdGlvbnMoZm91dCwgJmRvcHQsIE5V TEwpOwpAQCAtOTUwLDEwICs5NTQsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAly b3B0LT5zZXF1ZW5jZV9kYXRhID0gZG9wdC5zZXF1ZW5jZV9kYXRhOwogCXJvcHQtPmJpbmFyeV91 cGdyYWRlID0gZG9wdC5iaW5hcnlfdXBncmFkZTsKIAotCWlmIChjb21wcmVzc0xldmVsID09IC0x KQotCQlyb3B0LT5jb21wcmVzc2lvbiA9IDA7Ci0JZWxzZQotCQlyb3B0LT5jb21wcmVzc2lvbiA9 IGNvbXByZXNzTGV2ZWw7CisJcm9wdC0+Y29tcHJlc3Npb25MZXZlbCA9IGNvbXByZXNzTGV2ZWw7 CisJcm9wdC0+Y29tcHJlc3Npb25NZXRob2QgPSBjb21wcmVzc2lvbk1ldGhvZDsKIAogCXJvcHQt PnN1cHByZXNzRHVtcFdhcm5pbmdzID0gdHJ1ZTsJLyogV2UndmUgYWxyZWFkeSBzaG93biB0aGVt ICovCiAKQEAgLTEwMDAsNyArMTAwMiw4IEBAIGhlbHAoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJ cHJpbnRmKF8oIiAgLWosIC0tam9icz1OVU0gICAgICAgICAgICAgICB1c2UgdGhpcyBtYW55IHBh cmFsbGVsIGpvYnMgdG8gZHVtcFxuIikpOwogCXByaW50ZihfKCIgIC12LCAtLXZlcmJvc2UgICAg ICAgICAgICAgICAgdmVyYm9zZSBtb2RlXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0tdmVyc2lv biAgICAgICAgICAgICAgICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiwgdGhlbiBleGl0XG4i KSk7Ci0JcHJpbnRmKF8oIiAgLVosIC0tY29tcHJlc3M9MC05ICAgICAgICAgICBjb21wcmVzc2lv biBsZXZlbCBmb3IgY29tcHJlc3NlZCBmb3JtYXRzXG4iKSk7CisJcHJpbnRmKF8oIiAgLVosIC0t Y29tcHJlc3M9W2d6aXAsbm9uZV1bOkxFVkVMXSBvciBbTEVWRUxdXG4iCisJCQkgIiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzcyBvdXRwdXQgd2l0aCBnaXZlbiBtZXRob2Qg b3IgbGV2ZWxcbiIpKTsKIAlwcmludGYoXygiICAtLWxvY2std2FpdC10aW1lb3V0PVRJTUVPVVQg IGZhaWwgYWZ0ZXIgd2FpdGluZyBUSU1FT1VUIGZvciBhIHRhYmxlIGxvY2tcbiIpKTsKIAlwcmlu dGYoXygiICAtLW5vLXN5bmMgICAgICAgICAgICAgICAgICAgIGRvIG5vdCB3YWl0IGZvciBjaGFu Z2VzIHRvIGJlIHdyaXR0ZW4gc2FmZWx5IHRvIGRpc2tcbiIpKTsKIAlwcmludGYoXygiICAtPywg LS1oZWxwICAgICAgICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwLCB0aGVuIGV4aXRcbiIpKTsK QEAgLTEyNjAsNiArMTI2MywxMTYgQEAgZ2V0X3N5bmNocm9uaXplZF9zbmFwc2hvdChBcmNoaXZl ICpmb3V0KQogCXJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBib29sCitwYXJzZV9jb21wcmVz c2lvbl9tZXRob2QoY29uc3QgY2hhciAqbWV0aG9kLAorCQkJCQkJIENvbXByZXNzaW9uTWV0aG9k ICpjb21wcmVzc2lvbk1ldGhvZCkKK3sKKwlib29sIHJlcyA9IHRydWU7CisKKwlpZiAocGdfc3Ry Y2FzZWNtcChtZXRob2QsICJnemlwIikgPT0gMCkKKwkJKmNvbXByZXNzaW9uTWV0aG9kID0gQ09N UFJFU1NJT05fR1pJUDsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKG1ldGhvZCwgIm5vbmUiKSA9 PSAwKQorCQkqY29tcHJlc3Npb25NZXRob2QgPSBDT01QUkVTU0lPTl9OT05FOworCWVsc2UKKwl7 CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2QgXCIlc1wiIChnemlw LCBub25lKSIsIG1ldGhvZCk7CisJCXJlcyA9IGZhbHNlOworCX0KKworCXJldHVybiByZXM7Cit9 CisKKy8qCisgKiBJbnRlcnByZXRzIGEgY29tcHJlc3Npb24gb3B0aW9uIG9mIHRoZSBmb3JtYXQg J21ldGhvZFs6TEVWRUxdJyBvZiBsZWdhY3kganVzdAorICogJ1tMRVZFTF0nLiBJbiB0aGUgbGF0 ZXIgZm9ybWF0LCBnemlwIGlzIGltcGxpZWQuIFRoZSBwYXJzZWQgbWV0aG9kIGFuZCBsZXZlbAor ICogYXJlIHJldHVybmVkIGluICpjb21wcmVzc2lvbk1ldGhvZCBhbmQgKmNvbXByZXNzaW9uTGV2 ZWwuIEluIGNhc2Ugb2YgZXJyb3IsCisgKiB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSBhbmQg dGhlbiB0aGUgdmFsdWVzIG9mICpjb21wcmVzc2lvbntNZXRob2QsTGV2ZWx9CisgKiBhcmUgbm90 IHRvIGJlIHRydXN0ZWQuCisgKi8KK3N0YXRpYyBib29sCitwYXJzZV9jb21wcmVzc2lvbl9vcHRp b24oY29uc3QgY2hhciAqb3B0LCBDb21wcmVzc2lvbk1ldGhvZCAqY29tcHJlc3Npb25NZXRob2Qs CisJCQkJCQkgaW50ICpjb21wcmVzc0xldmVsKQoreworCWNoYXIJICAgKm1ldGhvZDsKKwljb25z dCBjaGFyICpzZXA7CisJaW50CQkJbWV0aG9kbGVuOworCWJvb2wJCXN1cHBvcnRzX2NvbXByZXNz aW9uID0gdHJ1ZTsKKwlib29sCQlyZXMgPSB0cnVlOworCisJLyogZmluZCB0aGUgc2VwYXJhdG9y IGlmIGV4aXN0cyAqLworCXNlcCA9IHN0cmNocihvcHQsICc6Jyk7CisKKwkvKgorCSAqIElmIHRo ZXJlIGlzIG5vIHNlcGFyYXRvciwgdGhlbiBpdCBpcyBlaXRoZXIgYSBsZWdhY3kgZm9ybWF0LCBv ciBvbmx5IHRoZQorCSAqIG1ldGhvZCBoYXMgYmVlbiBwYXNzZWQuCisJICovCisJaWYgKCFzZXAp CisJeworCQlpZiAoc3Ryc3BuKG9wdCwgIi0wMTIzNDU2Nzg5IikgPT0gc3RybGVuKG9wdCkpCisJ CXsKKwkJCXJlcyA9IG9wdGlvbl9wYXJzZV9pbnQob3B0LCAiLVovLS1jb21wcmVzcyIsIDAsIDks IGNvbXByZXNzTGV2ZWwpOworCQkJKmNvbXByZXNzaW9uTWV0aG9kID0gKCpjb21wcmVzc0xldmVs ID4gMCkgPyBDT01QUkVTU0lPTl9HWklQIDoKKwkJCQkJCQkJCQkJCQkJQ09NUFJFU1NJT05fTk9O RTsKKwkJfQorCQllbHNlCisJCQlyZXMgPSBwYXJzZV9jb21wcmVzc2lvbl9tZXRob2Qob3B0LCBj b21wcmVzc2lvbk1ldGhvZCk7CisJfQorCWVsc2UKKwl7CisJCS8qIG90aGVyd2lzZSwgaXQgc2hv dWxkIGJlIG1ldGhvZDpMRVZFTCAqLworCQltZXRob2RsZW4gPSBzZXAgLSBvcHQgKyAxOworCQlt ZXRob2QgPSBwZ19tYWxsb2MwKG1ldGhvZGxlbik7CisJCXNucHJpbnRmKG1ldGhvZCwgbWV0aG9k bGVuLCAiJS4qcyIsIG1ldGhvZGxlbiAtIDEsIG9wdCk7CisKKwkJcmVzID0gcGFyc2VfY29tcHJl c3Npb25fbWV0aG9kKG1ldGhvZCwgY29tcHJlc3Npb25NZXRob2QpOworCQlpZiAocmVzKQorCQl7 CisJCQlzZXArKzsKKwkJCWlmICgqc2VwID09ICdcMCcpCisJCQl7CisJCQkJcGdfbG9nX2Vycm9y KCJubyBsZXZlbCBkZWZpbmVkIGZvciBjb21wcmVzc2lvbiBcIiVzXCIiLCBtZXRob2QpOworCQkJ CXBnX2ZyZWUobWV0aG9kKTsKKwkJCQlyZXMgPSBmYWxzZTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsK KwkJCQlyZXMgPSBvcHRpb25fcGFyc2VfaW50KHNlcCwgIi1aLy0tY29tcHJlc3MgW0xFVkVMXSIs IDEsIDksCisJCQkJCQkJCQkgICBjb21wcmVzc0xldmVsKTsKKwkJCX0KKwkJfQorCX0KKworCS8q IGlmIHRoZXJlIGlzIGFuIGVycm9yLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIGZ1cnRoZXIg Ki8KKwlpZiAoIXJlcykKKwkJcmV0dXJuIHJlczsKKworCS8qIG9uZSBjYW4gc2V0IGxldmVsIHdo ZW4gbWV0aG9kIGlzIGd6aXAgKi8KKwlpZiAoKmNvbXByZXNzaW9uTWV0aG9kICE9IENPTVBSRVNT SU9OX0daSVAgJiYgKmNvbXByZXNzTGV2ZWwgIT0gSU5UX01JTikKKwl7CisJCXBnX2xvZ19lcnJv cigiY2FuIG9ubHkgc3BlY2lmeSAtWi8tLWNvbXByZXNzIFtMRVZFTF0gd2hlbiBtZXRob2QgaXMg Z3ppcCIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogdmVyaWZ5IHRoYXQgdGhlIHJlcXVl c3RlZCBjb21wcmVzc2lvbiBpcyBzdXBwb3J0ZWQgKi8KKyNpZm5kZWYgSEFWRV9MSUJaCisJaWYg KCpjb21wcmVzc2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9HWklQKQorCQlzdXBwb3J0c19jb21w cmVzc2lvbiA9IGZhbHNlOworI2VuZGlmCisjaWZuZGVmIEhBVkVfTElCTFo0CisJaWYgKCpjb21w cmVzc2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9MWjQpCisJCXN1cHBvcnRzX2NvbXByZXNzaW9u ID0gZmFsc2U7CisjZW5kaWYKKworCWlmICghc3VwcG9ydHNfY29tcHJlc3Npb24pCisJeworCQlw Z19sb2dfd2FybmluZygicmVxdWVzdGVkIGNvbXByZXNzaW9uIG5vdCBhdmFpbGFibGUgaW4gdGhp cyBpbnN0YWxsYXRpb24gLS0gYXJjaGl2ZSB3aWxsIGJlIHVuY29tcHJlc3NlZCIpOworCQkqY29t cHJlc3Npb25NZXRob2QgPSBDT01QUkVTU0lPTl9OT05FOworCQkqY29tcHJlc3NMZXZlbCA9IElO VF9NSU47CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBBcmNoaXZlRm9ybWF0CiBw YXJzZUFyY2hpdmVGb3JtYXQoY29uc3QgY2hhciAqZm9ybWF0LCBBcmNoaXZlTW9kZSAqbW9kZSkK IHsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbCBiL3NyYy9iaW4v cGdfZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCA2NWU2YzAxZmVkLi5kN2E1MmFjMWE4IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC0xMjAsNiArMTIwLDE2IEBAIGNvbW1hbmRfZmFpbHNfbGlr ZSgKIAlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiBjYW5ub3Qgc3BlY2lmeSBib3RoIC0tc2luZ2xl LXRyYW5zYWN0aW9uIGFuZCBtdWx0aXBsZSBqb2JzXEUvLAogCSdwZ19yZXN0b3JlOiBjYW5ub3Qg c3BlY2lmeSBib3RoIC0tc2luZ2xlLXRyYW5zYWN0aW9uIGFuZCBtdWx0aXBsZSBqb2JzJyk7CiAK K2NvbW1hbmRfZmFpbHNfbGlrZSgKKwlbICdwZ19kdW1wJywgJy0tY29tcHJlc3MnLCAnZ2FyYmFn ZScgXSwKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBpbnZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCAi Z2FyYmFnZSIgKGd6aXAsIG5vbmUpXEUvLAorCSdwZ19kdW1wOiBpbnZhbGlkIC0tY29tcHJlc3Mn KTsKKworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ3BnX2R1bXAnLCAnLS1jb21wcmVzcycsICdu b25lOjEnIF0sCisJcXIvXFFwZ19kdW1wOiBlcnJvcjogY2FuIG9ubHkgc3BlY2lmeSAtWlwvLS1j b21wcmVzcyBbTEVWRUxdIHdoZW4gbWV0aG9kIGlzIGd6aXBcRS8sCisJJ3BnX2R1bXA6IGNhbiBv bmx5IHNwZWNpZnkgLVovLS1jb21wcmVzcyBbTEVWRUxdIHdoZW4gbWV0aG9kIGlzIGd6aXAnKTsK KwogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXAnLCAnLVonLCAnLTEnIF0sCiAJcXIv XFFwZ19kdW1wOiBlcnJvcjogLVpcLy0tY29tcHJlc3MgbXVzdCBiZSBpbiByYW5nZSAwLi45XEUv LApAQCAtMTI4LDcgKzEzOCw3IEBAIGNvbW1hbmRfZmFpbHNfbGlrZSgKIGlmIChjaGVja19wZ19j b25maWcoIiNkZWZpbmUgSEFWRV9MSUJaIDEiKSkKIHsKIAljb21tYW5kX2ZhaWxzX2xpa2UoCi0J CVsgJ3BnX2R1bXAnLCAnLS1jb21wcmVzcycsICcxJywgJy0tZm9ybWF0JywgJ3RhcicgXSwKKwkJ WyAncGdfZHVtcCcsICctLWNvbXByZXNzJywgJ2d6aXA6MScsICctLWZvcm1hdCcsICd0YXInIF0s CiAJCXFyL1xRcGdfZHVtcDogZXJyb3I6IGNvbXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkg dGFyIGFyY2hpdmUgZm9ybWF0XEUvLAogCQkncGdfZHVtcDogY29tcHJlc3Npb24gaXMgbm90IHN1 cHBvcnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQnKTsKIH0KQEAgLTEzNiw3ICsxNDYsNyBAQCBl bHNlCiB7CiAJIyAtLWpvYnMgPiAxIGZvcmNlcyBhbiBlcnJvciB3aXRoIHRhciBmb3JtYXQuCiAJ Y29tbWFuZF9mYWlsc19saWtlKAotCQlbICdwZ19kdW1wJywgJy0tY29tcHJlc3MnLCAnMScsICct LWZvcm1hdCcsICd0YXInLCAnLWozJyBdLAorCQlbICdwZ19kdW1wJywgJy0tY29tcHJlc3MnLCAn Z3ppcDoxJywgJy0tZm9ybWF0JywgJ3RhcicsICctajMnIF0sCiAJCXFyL1xRcGdfZHVtcDogd2Fy bmluZzogcmVxdWVzdGVkIGNvbXByZXNzaW9uIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBpbnN0YWxs YXRpb24gLS0gYXJjaGl2ZSB3aWxsIGJlIHVuY29tcHJlc3NlZFxFLywKIAkJJ3BnX2R1bXA6IHdh cm5pbmc6IGNvbXByZXNzaW9uIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBpbnN0YWxsYXRpb24nKTsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggOTFjM2I5NzhjNC4uM2EzZGFkMmNjNyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTgzLDcgKzgzLDcgQEAgbXkgJXBnZHVtcF9y dW5zID0gKAogCQl0ZXN0X2tleSA9PiAnY29tcHJlc3Npb24nLAogCQlkdW1wX2NtZCA9PiBbCiAJ CQkncGdfZHVtcCcsCi0JCQknLS1mb3JtYXQ9ZGlyZWN0b3J5JywgJy0tY29tcHJlc3M9MScsCisJ CQknLS1mb3JtYXQ9ZGlyZWN0b3J5JywgJy0tY29tcHJlc3M9Z3ppcDoxJywKIAkJCSItLWZpbGU9 JHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0IiwKIAkJCSdwb3N0Z3Jl cycsCiAJCV0sCkBAIC0xMDQsNyArMTA0LDcgQEAgbXkgJXBnZHVtcF9ydW5zID0gKAogCQl0ZXN0 X2tleSA9PiAnY29tcHJlc3Npb24nLAogCQlkdW1wX2NtZCA9PiBbCiAJCQkncGdfZHVtcCcsICct LWpvYnM9MicsCi0JCQknLS1mb3JtYXQ9ZGlyZWN0b3J5JywgJy0tY29tcHJlc3M9NicsCisJCQkn LS1mb3JtYXQ9ZGlyZWN0b3J5JywgJy0tY29tcHJlc3M9Z3ppcDo2JywKIAkJCSItLWZpbGU9JHRl bXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVsIiwKIAkJCSdw b3N0Z3JlcycsCiAJCV0sCkBAIC0xMzcsNiArMTM3LDI1IEBAIG15ICVwZ2R1bXBfcnVucyA9ICgK IAkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX3BsYWluX2Zvcm1hdC5zcWwuZ3oiLAogCQld LAogCX0sCisJY29tcHJlc3Npb25fbm9uZV9kaXJfZm9ybWF0ID0+IHsKKwkJdGVzdF9rZXkgPT4g J2NvbXByZXNzaW9uJywKKwkJZHVtcF9jbWQgPT4gWworCQkJJ3BnX2R1bXAnLCAnLUZkJywKKwkJ CSctLWNvbXByZXNzPW5vbmUnLAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9ub25l X2Rpcl9mb3JtYXQiLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwkJZ2xvYl9tYXRjaCA9PiB7CisJ CQlub19tYXRjaCA9PiAiJHRlbXBkaXIvY29tcHJlc3Npb25fbm9uZV9kaXJfZm9ybWF0LyouZGF0 Lmd6IiwKKwkJCW1hdGNoID0+ICIkdGVtcGRpci9jb21wcmVzc2lvbl9ub25lX2Rpcl9mb3JtYXQv Ki5kYXQiLAorCQkJbWF0Y2hfY291bnQgPT4gMiwgIyB0b2MuZGF0IGFuZCBtb3JlCisJCX0sCisJ CXJlc3RvcmVfY21kID0+IFsKKwkJCSdwZ19yZXN0b3JlJywgJy1GZCcsCisJCQkiLS1maWxlPSR0 ZW1wZGlyL2NvbXByZXNzaW9uX25vbmVfZGlyX2Zvcm1hdC5zcWwiLAorCQkJIiR0ZW1wZGlyL2Nv bXByZXNzaW9uX25vbmVfZGlyX2Zvcm1hdCIsCisJCV0sCisJfSwKIAljbGVhbiA9PiB7CiAJCWR1 bXBfY21kID0+IFsKIAkJCSdwZ19kdW1wJywKQEAgLTIzNiw3ICsyNTUsNyBAQCBteSAlcGdkdW1w X3J1bnMgPSAoCiAJZGVmYXVsdHNfZGlyX2Zvcm1hdCA9PiB7CiAJCXRlc3Rfa2V5ID0+ICdkZWZh dWx0cycsCiAJCWR1bXBfY21kID0+IFsKLQkJCSdwZ19kdW1wJywgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICctRmQnLAorCQkJJ3BnX2R1bXAnLCAnLUZkJywKIAkJCSItLWZpbGU9JHRlbXBk aXIvZGVmYXVsdHNfZGlyX2Zvcm1hdCIsICdwb3N0Z3JlcycsCiAJCV0sCiAJCXJlc3RvcmVfY21k ID0+IFsKQEAgLTQwNDgsNiArNDA2NywyNiBAQCBmb3JlYWNoIG15ICRydW4gKHNvcnQga2V5cyAl cGdkdW1wX3J1bnMpCiAKIAkJY29tbWFuZF9vayggXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e2Nv bXByZXNzX2NtZH0gfSwKIAkJCSIkcnVuOiBjb21wcmVzc2lvbiBjb21tYW5kcyIpOworCisJCWlm IChkZWZpbmVkKCRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0Y2h9KSkKKwkJeworCQkJbXkg JG1hdGNoID0gJHBnZHVtcF9ydW5zeyRydW59LT57Z2xvYl9tYXRjaH0tPnttYXRjaH07CisJCQlt eSAkbWF0Y2hfY291bnQgPSBkZWZpbmVkKCRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0Y2h9 LT57bWF0Y2hfY291bnR9KSA/CisJCQkJCQkJCSRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0 Y2h9LT57bWF0Y2hfY291bnR9IDogMTsKKwkJCW15IEBnbG9iX21hdGNoZWQgPSBnbG9iICRtYXRj aDsKKworCQkJY21wX29rKHNjYWxhcihAZ2xvYl9tYXRjaGVkKSwgJz49JywgJG1hdGNoX2NvdW50 LAorCQkJCSJFeHBlY3RlZCBhdCBsZWFzdCAkbWF0Y2hfY291bnQgZmlsZShzKSBtYXRjaGluZyAk bWF0Y2giKTsKKworCQkJaWYgKGRlZmluZWQoJHBnZHVtcF9ydW5zeyRydW59LT57Z2xvYl9tYXRj aH0tPntub19tYXRjaH0pKQorCQkJeworCQkJCW15ICRub19tYXRjaCA9ICRwZ2R1bXBfcnVuc3sk cnVufS0+e2dsb2JfbWF0Y2h9LT57bm9fbWF0Y2h9OworCQkJCW15IEBnbG9iX21hdGNoZWQgPSBn bG9iICRub19tYXRjaDsKKworCQkJCWNtcF9vayhzY2FsYXIoQGdsb2JfbWF0Y2hlZCksICc9PScs IDAsCisJCQkJCSJFeHBlY3RlZCBubyBmaWxlKHMpIG1hdGNoaW5nICRub19tYXRjaCIpOworCQkJ fQorCQl9CiAJfQogCiAJaWYgKCRwZ2R1bXBfcnVuc3skcnVufS0+e3Jlc3RvcmVfY21kfSkKZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNzJmYWZiNzk1Yi4uNWFjOGMxNTZhOSAxMDA2NDQK LS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTQxMiw3ICs0MTIsNyBAQCBDb21waWxlZEV4cHJTdGF0 ZQogQ29tcG9zaXRlSU9EYXRhCiBDb21wb3NpdGVUeXBlU3RtdAogQ29tcG91bmRBZmZpeEZsYWcK LUNvbXByZXNzaW9uQWxnb3JpdGhtCitDb21wcmVzc2lvbk1ldGhvZAogQ29tcHJlc3NvclN0YXRl CiBDb21wdXRlWGlkSG9yaXpvbnNSZXN1bHQKIENvbmRpdGlvblZhcmlhYmxlCi0tIAoyLjMyLjAK Cg== --b1_x9AR1SGzaggd2kko0pcFe9r7F3FzUZvfIVMFbWhiKvM Content-Type: text/x-patch; name=v4-0004-Add-LZ4-compression-in-pg_-dump-restore.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0004-Add-LZ4-compression-in-pg_-dump-restore.patch RnJvbSBkMzEwNGM3Y2MxZmM4NmZhMzZmN2I2N2Y2NDVjNWI3Mjg5OGRlNDhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IFdlZCwgMzAgTWFyIDIwMjIgMTU6MTE6MDEgKzAwMDAKU3ViamVjdDogW1BBVENIIHY0 IDQvNF0gQWRkIExaNCBjb21wcmVzc2lvbiBpbiBwZ197ZHVtcHxyZXN0b3JlfQoKV2l0aGluIGNv bXByZXNzX2lvLntjLGh9IHRoZXJlIGFyZSB0d28gZGlzdGluY3QgQVBJcyBleHBvc2VkLCB0aGUg c3RyZWFtaW5nIEFQSQphbmQgYSBmaWxlIEFQSS4gVGhlIGZpcnN0IG9uZSwgaXMgYWltZWQgYXQg aW5saW5lZCB1c2UgY2FzZXMgYW5kIHRodXMgc2ltcGxlCmx6NC5oIGNhbGxzIGNhbiBiZSB1c2Vk IGRpcmVjdGx5LiBUaGUgc2Vjb25kIG9uZSBpcyBnZW5lcmF0aW5nIG91dHB1dCwgb3IgaXMKcGFy c2luZyBpbnB1dCwgd2hpY2ggY2FuIGJlIHJlYWQvZ2VuZXJhdGVkIHZpYSB0aGUgbHo0IHV0aWxp dHkuCgpJbiB0aGUgbGF0ZXIgY2FzZSwgdGhlIEFQSSBpcyB1c2luZyBhbiBvcGFxdWUgd3JhcHBl ciBhcm91bmQgYSBmaWxlIHN0cmVhbSwKd2hpY2ggYXF1aXJlZCB2aWEgZm9wZW4oKSBvciBnem9w ZW4oKSByZXNwZWN0aXZlbHkuIEl0IHdvdWxkIHRoZW4gcHJvdmlkZQp3cmFwcGVycyBhcm91bmQg ZnJlYWQoKSwgZndyaXRlKCksIGZnZXRzKCksIGZnZXRjKCksIGZlb2YoKSwgYW5kIGZjbG9zZSgp OyBvcgp0aGVpciBneiBlcXVpdmFsbGVudHMuIEhvd2V2ZXIgdGhlIExaNEYgYXBpIGRvZXMgbm90 IHByb3ZpZGUgdGhpcyBmdW5jdGlvbmFsaXR5LgpTbyB0aGlzIGhhcyBiZWVuIGltcGxlbWVudGVk IGxvY2FseS4KCkluIG9yZGVyIHRvIG1haW50YWluIHRoZSBBUEkgY29tcGF0aWJpbGl0eSBhIG5l dyBzdHJ1Y3R1cmUgTFo0RmlsZSBpcwppbnRyb2R1Y2VkLiBJdCBpcyByZXNwb25zaWJsZSBmb3Ig a2VlcGluZyBzdGF0ZSBhbmQgYW55IHlldCB1bnVzZWQgZ2VuZXJhdGVkCmNvbnRlbnQuIFRoZSBs YXRlciBpcyByZXF1aXJlZCB3aGVuIHRoZSBnZW5lcmF0ZWQgZGVjb21wcmVzc2VkIG91dHB1dCwg ZXhjZWVkcwp0aGUgY2FsbGVyJ3MgYnVmZmVyIGNhcGFjaXR5LgoKQ3VzdG9tIGNvbXByZXNzZWQg YXJjaGl2ZXMgbmVlZCB0byBub3cgc3RvcmUgdGhlIGNvbXByZXNzaW9uIG1ldGhvZCBpbiB0aGVp cgpoZWFkZXIuIFRoaXMgcmVxdWlyZXMgYSBidW1wIGluIHRoZSB2ZXJzaW9uIG51bWJlci4gVGhl IGxldmVsIG9mIGNvbXByZXNzaW9uIGlzCnN0aWxsIHN0b3JlZCBpbiB0aGUgZHVtcCwgdGhvdWdo IGFkbWl0dGVkbHkgaXMgb2Ygbm8gYXBwYXJlbnQgdXNlLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYv cGdfZHVtcC5zZ21sICAgICAgICB8ICAyMyArLQogc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jICAgICAgICB8 IDczOCArKysrKysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXAuaCAgICAgICAgICB8ICAgMyArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZl ci5jIHwgIDcxICsrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oIHwgICAz ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9i aW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbCAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ19kdW1w L3QvMDAyX3BnX2R1bXAucGwgICAgIHwgMTg1ICsrKysrLS0KIDkgZmlsZXMgY2hhbmdlZCwgOTAz IGluc2VydGlvbnMoKyksIDEzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL3BnX2R1bXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCmluZGV4 IDk5MmI3MzEyZGYuLjY4YTdjNmEzYmYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdf ZHVtcC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCkBAIC0zMjgsOSAr MzI4LDEwIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgICAgICBtYWNoaW5lLXJl YWRhYmxlIGZvcm1hdCB0aGF0IDxhcHBsaWNhdGlvbj5wZ19yZXN0b3JlPC9hcHBsaWNhdGlvbj4K ICAgICAgICAgICAgY2FuIHJlYWQuIEEgZGlyZWN0b3J5IGZvcm1hdCBhcmNoaXZlIGNhbiBiZSBt YW5pcHVsYXRlZCB3aXRoCiAgICAgICAgICAgIHN0YW5kYXJkIFVuaXggdG9vbHM7IGZvciBleGFt cGxlLCBmaWxlcyBpbiBhbiB1bmNvbXByZXNzZWQgYXJjaGl2ZQotICAgICAgICAgICBjYW4gYmUg Y29tcHJlc3NlZCB3aXRoIHRoZSA8YXBwbGljYXRpb24+Z3ppcDwvYXBwbGljYXRpb24+IHRvb2wu Ci0gICAgICAgICAgIFRoaXMgZm9ybWF0IGlzIGNvbXByZXNzZWQgYnkgZGVmYXVsdCBhbmQgYWxz byBzdXBwb3J0cyBwYXJhbGxlbAotICAgICAgICAgICBkdW1wcy4KKyAgICAgICAgICAgY2FuIGJl IGNvbXByZXNzZWQgd2l0aCB0aGUgPGFwcGxpY2F0aW9uPmd6aXA8L2FwcGxpY2F0aW9uPiBvcgor ICAgICAgICAgICA8YXBwbGljYXRpb24+bHo0PC9hcHBsaWNhdGlvbj50b29sLgorICAgICAgICAg ICBUaGlzIGZvcm1hdCBpcyBjb21wcmVzc2VkIGJ5IGRlZmF1bHQgdXNpbmcgPGxpdGVyYWw+Z3pp cDwvbGl0ZXJhbD4KKyAgICAgICAgICAgYW5kIGFsc28gc3VwcG9ydHMgcGFyYWxsZWwgZHVtcHMu CiAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgPC92YXJs aXN0ZW50cnk+CkBAIC02NTIsMTIgKzY1MywxMiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24K ICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbWV0aG9kIGFu ZC9vciB0aGUgY29tcHJlc3Npb24gbGV2ZWwgdG8gdXNlLgogICAgICAgICBUaGUgY29tcHJlc3Np b24gbWV0aG9kIGNhbiBiZSBzZXQgdG8gPGxpdGVyYWw+Z3ppcDwvbGl0ZXJhbD4gb3IKLSAgICAg ICAgPGxpdGVyYWw+bm9uZTwvbGl0ZXJhbD4gZm9yIG5vIGNvbXByZXNzaW9uLiBBIGNvbXByZXNz aW9uIGxldmVsIGNhbgotICAgICAgICBiZSBvcHRpb25hbGx5IHNwZWNpZmllZCwgYnkgYXBwZW5k aW5nIHRoZSBsZXZlbCBudW1iZXIgYWZ0ZXIgYSBjb2xvbgotICAgICAgICAoPGxpdGVyYWw+Ojwv bGl0ZXJhbD4pLiBJZiBubyBsZXZlbCBpcyBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGNvbXByZXNz aW9uCi0gICAgICAgIGxldmVsIHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2Qu IElmIG9ubHkgYSBsZXZlbCBpcwotICAgICAgICBzcGVjaWZpZWQgd2l0aG91dCBtZW50aW9uaW5n IGEgbWV0aG9kLCA8bGl0ZXJhbD5nemlwPC9saXRlcmFsPiBjb21wcmVzc2lvbgotICAgICAgICB3 aWxsIGJlIHVzZWQuCisgICAgICAgIDxsaXRlcmFsPmx6NDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+ bm9uZTwvbGl0ZXJhbD4gZm9yIG5vIGNvbXByZXNzaW9uLiBBCisgICAgICAgIGNvbXByZXNzaW9u IGxldmVsIGNhbiBiZSBvcHRpb25hbGx5IHNwZWNpZmllZCwgYnkgYXBwZW5kaW5nIHRoZSBsZXZl bAorICAgICAgICBudW1iZXIgYWZ0ZXIgYSBjb2xvbiAoPGxpdGVyYWw+OjwvbGl0ZXJhbD4pLiBJ ZiBubyBsZXZlbCBpcyBzcGVjaWZpZWQsCisgICAgICAgIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9u IGxldmVsIHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2QuIElmCisgICAgICAg IG9ubHkgYSBsZXZlbCBpcyBzcGVjaWZpZWQgd2l0aG91dCBtZW50aW9uaW5nIGEgbWV0aG9kLAor ICAgICAgICA8bGl0ZXJhbD5nemlwPC9saXRlcmFsPiBjb21wcmVzc2lvbiB3aWxsYmUgdXNlZC4K ICAgICAgICA8L3BhcmE+CiAKICAgICAgICA8cGFyYT4KQEAgLTY2NSw4ICs2NjYsOCBAQCBQb3N0 Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgICAgaW5kaXZpZHVhbCB0YWJsZS1kYXRhIHNlZ21l bnRzLCBhbmQgdGhlIGRlZmF1bHQgaXMgdG8gY29tcHJlc3MgdXNpbmcKICAgICAgICAgPGxpdGVy YWw+Z3ppcDwvbGl0ZXJhbD4gYXQgYSBtb2RlcmF0ZSBsZXZlbC4gRm9yIHBsYWluIHRleHQgb3V0 cHV0LAogICAgICAgICBzZXR0aW5nIGEgbm9uemVybyBjb21wcmVzc2lvbiBsZXZlbCBjYXVzZXMg dGhlIGVudGlyZSBvdXRwdXQgZmlsZSB0byBiZSBjb21wcmVzc2VkLAotICAgICAgICBhcyB0aG91 Z2ggaXQgaGFkIGJlZW4gZmVkIHRocm91Z2ggPGFwcGxpY2F0aW9uPmd6aXA8L2FwcGxpY2F0aW9u PjsgYnV0IHRoZSBkZWZhdWx0Ci0gICAgICAgIGlzIG5vdCB0byBjb21wcmVzcy4KKyAgICAgICAg YXMgdGhvdWdoIGl0IGhhZCBiZWVuIGZlZCB0aHJvdWdoIDxhcHBsaWNhdGlvbj5nemlwPC9hcHBs aWNhdGlvbj4gb3IKKyAgICAgICAgPGFwcGxpY2F0aW9uPmx6NDwvYXBwbGljYXRpb24+OyBidXQg dGhlIGRlZmF1bHQgaXMgbm90IHRvIGNvbXByZXNzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8 cGFyYT4KICAgICAgICAgVGhlIHRhciBhcmNoaXZlIGZvcm1hdCBjdXJyZW50bHkgZG9lcyBub3Qg c3VwcG9ydCBjb21wcmVzc2lvbiBhdCBhbGwuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv TWFrZWZpbGUgYi9zcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUKaW5kZXggMmY1MjRiMDliZi4uMjg2 NGNjYWJiOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlCisrKyBiL3NyYy9i aW4vcGdfZHVtcC9NYWtlZmlsZQpAQCAtMTcsNiArMTcsNyBAQCB0b3BfYnVpbGRkaXIgPSAuLi8u Li8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBleHBv cnQgR1pJUF9QUk9HUkFNPSQoR1pJUCkKK2V4cG9ydCBMWjQKIAogb3ZlcnJpZGUgQ1BQRkxBR1Mg Oj0gLUkkKGxpYnBxX3NyY2RpcikgJChDUFBGTEFHUykKIExERkxBR1NfSU5URVJOQUwgKz0gLUwk KHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzICQobGlicHFfcGdwb3J0KQpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMgYi9zcmMvYmluL3BnX2R1 bXAvY29tcHJlc3NfaW8uYwppbmRleCA2MzBmOWU0YjE4Li43OTBmMjI1ZWM0IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uYworKysgYi9zcmMvYmluL3BnX2R1bXAvY29t cHJlc3NfaW8uYwpAQCAtMzgsMTMgKzM4LDE1IEBACiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKgogICoJVGhlIGNvbXByZXNzZWQgc3RyZWFtIEFQSSBpcyBhIHdyYXBwZXIgYXJvdW5kIHRo ZSBDIHN0YW5kYXJkIGZvcGVuKCkgYW5kCi0gKglsaWJ6J3MgZ3pvcGVuKCkgQVBJcy4gSXQgYWxs b3dzIHlvdSB0byB1c2UgdGhlIHNhbWUgZnVuY3Rpb25zIGZvcgotICoJY29tcHJlc3NlZCBhbmQg dW5jb21wcmVzc2VkIHN0cmVhbXMuIGNmb3Blbl9yZWFkKCkgZmlyc3QgdHJpZXMgdG8gb3Blbgot ICoJdGhlIGZpbGUgd2l0aCBnaXZlbiBuYW1lLCBhbmQgaWYgaXQgZmFpbHMsIGl0IHRyaWVzIHRv IG9wZW4gdGhlIHNhbWUKLSAqCWZpbGUgd2l0aCB0aGUgLmd6IHN1ZmZpeC4gY2ZvcGVuX3dyaXRl KCkgb3BlbnMgYSBmaWxlIGZvciB3cml0aW5nLCBhbgotICoJZXh0cmEgYXJndW1lbnQgc3BlY2lm aWVzIGlmIHRoZSBmaWxlIHNob3VsZCBiZSBjb21wcmVzc2VkLCBhbmQgYWRkcyB0aGUKLSAqCS5n eiBzdWZmaXggdG8gdGhlIGZpbGVuYW1lIGlmIHNvLiBUaGlzIGFsbG93cyB5b3UgdG8gZWFzaWx5 IGhhbmRsZSBib3RoCi0gKgljb21wcmVzc2VkIGFuZCB1bmNvbXByZXNzZWQgZmlsZXMuCisgKgls aWJ6J3MgZ3pvcGVuKCkgQVBJcyBhbmQgY3VzdG9tIExaNCBjYWxscyB3aGljaCBwcm92aWRlIHNp bWlsYXIKKyAqCWZ1bmN0aW9uYWxpdHkuIEl0IGFsbG93cyB5b3UgdG8gdXNlIHRoZSBzYW1lIGZ1 bmN0aW9ucyBmb3IgY29tcHJlc3NlZCBhbmQKKyAqCXVuY29tcHJlc3NlZCBzdHJlYW1zLiBjZm9w ZW5fcmVhZCgpIGZpcnN0IHRyaWVzIHRvIG9wZW4gdGhlIGZpbGUgd2l0aCBnaXZlbgorICoJbmFt ZSwgYW5kIGlmIGl0IGZhaWxzLCBpdCB0cmllcyB0byBvcGVuIHRoZSBzYW1lIGZpbGUgd2l0aCB0 aGUgLmd6IHN1ZmZpeCwKKyAqCWZhaWxpbmcgdGhhdCBpdCB0cmllcyB0byBvcGVuIHRoZSBzYW1l IGZpbGUgd2l0aCB0aGUgLmx6NCBzdWZmaXguCisgKgljZm9wZW5fd3JpdGUoKSBvcGVucyBhIGZp bGUgZm9yIHdyaXRpbmcsIGFuIGV4dHJhIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUKKyAqCW1ldGhv ZCB0byB1c2Ugc2hvdWxkIHRoZSBmaWxlIGJlIGNvbXByZXNzZWQsIGFuZCBhZGRzIHRoZSBhcHBy b3ByaWF0ZQorICoJc3VmZml4LCAuZ3ogb3IgLmx6NCwgdG8gdGhlIGZpbGVuYW1lIGlmIHNvLiBU aGlzIGFsbG93cyB5b3UgdG8gZWFzaWx5IGhhbmRsZQorICoJYm90aCBjb21wcmVzc2VkIGFuZCB1 bmNvbXByZXNzZWQgZmlsZXMuCiAgKgogICogSURFTlRJRklDQVRJT04KICAqCSAgIHNyYy9iaW4v cGdfZHVtcC9jb21wcmVzc19pby5jCkBAIC01Niw2ICs1OCwxNCBAQAogI2luY2x1ZGUgImNvbXBy ZXNzX2lvLmgiCiAjaW5jbHVkZSAicGdfYmFja3VwX3V0aWxzLmgiCiAKKyNpZmRlZiBIQVZFX0xJ QkxaNAorI2luY2x1ZGUgImx6NC5oIgorI2luY2x1ZGUgImx6NGZyYW1lLmgiCisKKyNkZWZpbmUg TFo0X09VVF9TSVpFCSg0ICogMTAyNCkKKyNkZWZpbmUgTFo0X0lOX1NJWkUJCSgxNiAqIDEwMjQp CisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBDb21wcmVzc29yIEFQSQog ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02OSw5ICs3OSw5IEBAIHN0cnVjdCBDb21wcmVz c29yU3RhdGUKIAogI2lmZGVmIEhBVkVfTElCWgogCXpfc3RyZWFtcAl6cDsKLQljaGFyCSAgICp6 bGliT3V0OwotCXNpemVfdAkJemxpYk91dFNpemU7CiAjZW5kaWYKKwl2b2lkCSAgICpvdXRidWY7 CisJc2l6ZV90CQlvdXRzaXplOwogfTsKIAogLyogUm91dGluZXMgdGhhdCBzdXBwb3J0IHpsaWIg Y29tcHJlc3NlZCBkYXRhIEkvTyAqLwpAQCAtODUsNiArOTUsMTUgQEAgc3RhdGljIHZvaWQgV3Jp dGVEYXRhVG9BcmNoaXZlWmxpYihBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpj cywKIHN0YXRpYyB2b2lkIEVuZENvbXByZXNzb3JabGliKEFyY2hpdmVIYW5kbGUgKkFILCBDb21w cmVzc29yU3RhdGUgKmNzKTsKICNlbmRpZgogCisvKiBSb3V0aW5lcyB0aGF0IHN1cHBvcnQgTFo0 IGNvbXByZXNzZWQgZGF0YSBJL08gKi8KKyNpZmRlZiBIQVZFX0xJQkxaNAorc3RhdGljIHZvaWQg SW5pdENvbXByZXNzb3JMWjQoQ29tcHJlc3NvclN0YXRlICpjcyk7CitzdGF0aWMgdm9pZCBSZWFk RGF0YUZyb21BcmNoaXZlTFo0KEFyY2hpdmVIYW5kbGUgKkFILCBSZWFkRnVuYyByZWFkRik7Citz dGF0aWMgdm9pZCBXcml0ZURhdGFUb0FyY2hpdmVMWjQoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXBy ZXNzb3JTdGF0ZSAqY3MsCisJCQkJCQkJCSAgY29uc3QgY2hhciAqZGF0YSwgc2l6ZV90IGRMZW4p Oworc3RhdGljIHZvaWQgRW5kQ29tcHJlc3NvckxaNChBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJl c3NvclN0YXRlICpjcyk7CisjZW5kaWYKKwogLyogUm91dGluZXMgdGhhdCBzdXBwb3J0IHVuY29t cHJlc3NlZCBkYXRhIEkvTyAqLwogc3RhdGljIHZvaWQgUmVhZERhdGFGcm9tQXJjaGl2ZU5vbmUo QXJjaGl2ZUhhbmRsZSAqQUgsIFJlYWRGdW5jIHJlYWRGKTsKIHN0YXRpYyB2b2lkIFdyaXRlRGF0 YVRvQXJjaGl2ZU5vbmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MsCkBA IC0xMDMsNiArMTIyLDExIEBAIEFsbG9jYXRlQ29tcHJlc3NvcihDb21wcmVzc2lvbk1ldGhvZCBj b21wcmVzc2lvbk1ldGhvZCwKIAlpZiAoY29tcHJlc3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05f R1pJUCkKIAkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCisj aWZuZGVmIEhBVkVfTElCTFo0CisJaWYgKGNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9O X0xaNCkKKwkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CisjZW5kaWYKKwog CiAJY3MgPSAoQ29tcHJlc3NvclN0YXRlICopIHBnX21hbGxvYzAoc2l6ZW9mKENvbXByZXNzb3JT dGF0ZSkpOwogCWNzLT53cml0ZUYgPSB3cml0ZUY7CkBAIC0xMTUsNiArMTM5LDEwIEBAIEFsbG9j YXRlQ29tcHJlc3NvcihDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCwKIAlpZiAo Y29tcHJlc3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05fR1pJUCkKIAkJSW5pdENvbXByZXNzb3Ja bGliKGNzLCBjb21wcmVzc2lvbkxldmVsKTsKICNlbmRpZgorI2lmZGVmIEhBVkVfTElCTFo0CisJ aWYgKGNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0xaNCkKKwkJSW5pdENvbXByZXNz b3JMWjQoY3MpOworI2VuZGlmCiAKIAlyZXR1cm4gY3M7CiB9CkBAIC0xMzcsNiArMTY1LDEzIEBA IFJlYWREYXRhRnJvbUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzaW9uTWV0aG9k IGNvbXByZXNzaW9uTWV0aG9kLAogCQkJUmVhZERhdGFGcm9tQXJjaGl2ZVpsaWIoQUgsIHJlYWRG KTsKICNlbHNlCiAJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CisjZW5k aWYKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0xaNDoKKyNpZmRlZiBIQVZFX0xJQkxa NAorCQkJUmVhZERhdGFGcm9tQXJjaGl2ZUxaNChBSCwgcmVhZEYpOworI2Vsc2UKKwkJCWZhdGFs KCJub3QgYnVpbHQgd2l0aCBsejQgc3VwcG9ydCIpOwogI2VuZGlmCiAJCQlicmVhazsKIAkJZGVm YXVsdDoKQEAgLTE1OSw2ICsxOTQsMTMgQEAgV3JpdGVEYXRhVG9BcmNoaXZlKEFyY2hpdmVIYW5k bGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzLAogCQkJV3JpdGVEYXRhVG9BcmNoaXZlWmxpYihB SCwgY3MsIGRhdGEsIGRMZW4pOwogI2Vsc2UKIAkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGli IHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05fTFo0Ogor I2lmZGVmIEhBVkVfTElCTFo0CisJCQlXcml0ZURhdGFUb0FyY2hpdmVMWjQoQUgsIGNzLCBkYXRh LCBkTGVuKTsKKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggbHo0IHN1cHBvcnQiKTsK ICNlbmRpZgogCQkJYnJlYWs7CiAJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKQEAgLTE4Myw2ICsy MjUsMTMgQEAgRW5kQ29tcHJlc3NvcihBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRl ICpjcykKIAkJCUVuZENvbXByZXNzb3JabGliKEFILCBjcyk7CiAjZWxzZQogCQkJZmF0YWwoIm5v dCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOworI2VuZGlmCisJCQlicmVhazsKKwkJY2FzZSBD T01QUkVTU0lPTl9MWjQ6CisjaWZkZWYgSEFWRV9MSUJMWjQKKwkJCUVuZENvbXByZXNzb3JMWjQo QUgsIGNzKTsKKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggbHo0IHN1cHBvcnQiKTsK ICNlbmRpZgogCQkJYnJlYWs7CiAJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKQEAgLTIxMywyMCAr MjYyLDIwIEBAIEluaXRDb21wcmVzc29yWmxpYihDb21wcmVzc29yU3RhdGUgKmNzLCBpbnQgbGV2 ZWwpCiAJenAtPm9wYXF1ZSA9IFpfTlVMTDsKIAogCS8qCi0JICogemxpYk91dFNpemUgaXMgdGhl IGJ1ZmZlciBzaXplIHdlIHRlbGwgemxpYiBpdCBjYW4gb3V0cHV0IHRvLiAgV2UKKwkgKiBvdXRz aXplIGlzIHRoZSBidWZmZXIgc2l6ZSB3ZSB0ZWxsIHpsaWIgaXQgY2FuIG91dHB1dCB0by4gIFdl CiAJICogYWN0dWFsbHkgYWxsb2NhdGUgb25lIGV4dHJhIGJ5dGUgYmVjYXVzZSBzb21lIHJvdXRp bmVzIHdhbnQgdG8gYXBwZW5kIGEKIAkgKiB0cmFpbGluZyB6ZXJvIGJ5dGUgdG8gdGhlIHpsaWIg b3V0cHV0LgogCSAqLwotCWNzLT56bGliT3V0ID0gKGNoYXIgKikgcGdfbWFsbG9jKFpMSUJfT1VU X1NJWkUgKyAxKTsKLQljcy0+emxpYk91dFNpemUgPSBaTElCX09VVF9TSVpFOworCWNzLT5vdXRi dWYgPSBwZ19tYWxsb2MoWkxJQl9PVVRfU0laRSArIDEpOworCWNzLT5vdXRzaXplID0gWkxJQl9P VVRfU0laRTsKIAogCWlmIChkZWZsYXRlSW5pdCh6cCwgbGV2ZWwpICE9IFpfT0spCiAJCWZhdGFs KCJjb3VsZCBub3QgaW5pdGlhbGl6ZSBjb21wcmVzc2lvbiBsaWJyYXJ5OiAlcyIsCiAJCQkgIHpw LT5tc2cpOwogCiAJLyogSnVzdCBiZSBwYXJhbm9pZCAtIG1heWJlIEVuZCBpcyBjYWxsZWQgYWZ0 ZXIgU3RhcnQsIHdpdGggbm8gV3JpdGUgKi8KLQl6cC0+bmV4dF9vdXQgPSAodm9pZCAqKSBjcy0+ emxpYk91dDsKLQl6cC0+YXZhaWxfb3V0ID0gY3MtPnpsaWJPdXRTaXplOworCXpwLT5uZXh0X291 dCA9IGNzLT5vdXRidWY7CisJenAtPmF2YWlsX291dCA9IGNzLT5vdXRzaXplOwogfQogCiBzdGF0 aWMgdm9pZApAQCAtMjQzLDcgKzI5Miw3IEBAIEVuZENvbXByZXNzb3JabGliKEFyY2hpdmVIYW5k bGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzKQogCWlmIChkZWZsYXRlRW5kKHpwKSAhPSBaX09L KQogCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIGNvbXByZXNzaW9uIHN0cmVhbTogJXMiLCB6cC0+ bXNnKTsKIAotCWZyZWUoY3MtPnpsaWJPdXQpOworCWZyZWUoY3MtPm91dGJ1Zik7CiAJZnJlZShj cy0+enApOwogfQogCkBAIC0yNTEsNyArMzAwLDcgQEAgc3RhdGljIHZvaWQKIERlZmxhdGVDb21w cmVzc29yWmxpYihBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcywgYm9vbCBm bHVzaCkKIHsKIAl6X3N0cmVhbXAJenAgPSBjcy0+enA7Ci0JY2hhcgkgICAqb3V0ID0gY3MtPnps aWJPdXQ7CisJdm9pZAkgICAqb3V0ID0gY3MtPm91dGJ1ZjsKIAlpbnQJCQlyZXMgPSBaX09LOwog CiAJd2hpbGUgKGNzLT56cC0+YXZhaWxfaW4gIT0gMCB8fCBmbHVzaCkKQEAgLTI1OSw3ICszMDgs NyBAQCBEZWZsYXRlQ29tcHJlc3NvclpsaWIoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JT dGF0ZSAqY3MsIGJvb2wgZmx1c2gpCiAJCXJlcyA9IGRlZmxhdGUoenAsIGZsdXNoID8gWl9GSU5J U0ggOiBaX05PX0ZMVVNIKTsKIAkJaWYgKHJlcyA9PSBaX1NUUkVBTV9FUlJPUikKIAkJCWZhdGFs KCJjb3VsZCBub3QgY29tcHJlc3MgZGF0YTogJXMiLCB6cC0+bXNnKTsKLQkJaWYgKChmbHVzaCAm JiAoenAtPmF2YWlsX291dCA8IGNzLT56bGliT3V0U2l6ZSkpCisJCWlmICgoZmx1c2ggJiYgKHpw LT5hdmFpbF9vdXQgPCBjcy0+b3V0c2l6ZSkpCiAJCQl8fCAoenAtPmF2YWlsX291dCA9PSAwKQog CQkJfHwgKHpwLT5hdmFpbF9pbiAhPSAwKQogCQkJKQpAQCAtMjY5LDE4ICszMTgsMTggQEAgRGVm bGF0ZUNvbXByZXNzb3JabGliKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNz LCBib29sIGZsdXNoKQogCQkJICogY2h1bmsgaXMgdGhlIEVPRiBtYXJrZXIgaW4gdGhlIGN1c3Rv bSBmb3JtYXQuIFRoaXMgc2hvdWxkIG5ldmVyCiAJCQkgKiBoYXBwZW4gYnV0Li4uCiAJCQkgKi8K LQkJCWlmICh6cC0+YXZhaWxfb3V0IDwgY3MtPnpsaWJPdXRTaXplKQorCQkJaWYgKHpwLT5hdmFp bF9vdXQgPCBjcy0+b3V0c2l6ZSkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIEFueSB3cml0ZSBmdW5j dGlvbiBzaG91bGQgZG8gaXRzIG93biBlcnJvciBjaGVja2luZyBidXQgdG8KIAkJCQkgKiBtYWtl IHN1cmUgd2UgZG8gYSBjaGVjayBoZXJlIGFzIHdlbGwuLi4KIAkJCQkgKi8KLQkJCQlzaXplX3QJ CWxlbiA9IGNzLT56bGliT3V0U2l6ZSAtIHpwLT5hdmFpbF9vdXQ7CisJCQkJc2l6ZV90CQlsZW4g PSBjcy0+b3V0c2l6ZSAtIHpwLT5hdmFpbF9vdXQ7CiAKLQkJCQljcy0+d3JpdGVGKEFILCBvdXQs IGxlbik7CisJCQkJY3MtPndyaXRlRihBSCwgKGNoYXIgKilvdXQsIGxlbik7CiAJCQl9Ci0JCQl6 cC0+bmV4dF9vdXQgPSAodm9pZCAqKSBvdXQ7Ci0JCQl6cC0+YXZhaWxfb3V0ID0gY3MtPnpsaWJP dXRTaXplOworCQkJenAtPm5leHRfb3V0ID0gb3V0OworCQkJenAtPmF2YWlsX291dCA9IGNzLT5v dXRzaXplOwogCQl9CiAKIAkJaWYgKHJlcyA9PSBaX1NUUkVBTV9FTkQpCkBAIC0zNjQsNiArNDEz LDcxIEBAIFJlYWREYXRhRnJvbUFyY2hpdmVabGliKEFyY2hpdmVIYW5kbGUgKkFILCBSZWFkRnVu YyByZWFkRikKIH0KICNlbmRpZgkJCQkJCQkvKiBIQVZFX0xJQlogKi8KIAorI2lmZGVmIEhBVkVf TElCTFo0CitzdGF0aWMgdm9pZAorSW5pdENvbXByZXNzb3JMWjQoQ29tcHJlc3NvclN0YXRlICpj cykKK3sKKwkvKiBXaWxsIGJlIGxhenkgaW5pdCdkICovCisJY3MtPm91dGJ1ZiA9IE5VTEw7CisJ Y3MtPm91dHNpemUgPSAwOworfQorCitzdGF0aWMgdm9pZAorRW5kQ29tcHJlc3NvckxaNChBcmNo aXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcykKK3sKKwlwZ19mcmVlKGNzLT5vdXRi dWYpOworCisJY3MtPm91dGJ1ZiA9IE5VTEw7CisJY3MtPm91dHNpemUgPSAwOworfQorCitzdGF0 aWMgdm9pZAorUmVhZERhdGFGcm9tQXJjaGl2ZUxaNChBcmNoaXZlSGFuZGxlICpBSCwgUmVhZEZ1 bmMgcmVhZEYpCit7CisJTFo0X3N0cmVhbURlY29kZV90IGx6NFN0cmVhbURlY29kZTsKKwljaGFy CSAgICpidWY7CisJY2hhcgkgICAqZGVjYnVmOworCXNpemVfdAkJYnVmbGVuOworCXNpemVfdAkJ Y250OworCisJYnVmbGVuID0gKDQgKiAxMDI0KSArIDE7CisJYnVmID0gcGdfbWFsbG9jKGJ1Zmxl bik7CisJZGVjYnVmID0gcGdfbWFsbG9jKGJ1Zmxlbik7CisKKwlMWjRfc2V0U3RyZWFtRGVjb2Rl KCZsejRTdHJlYW1EZWNvZGUsIE5VTEwsIDApOworCisJd2hpbGUgKChjbnQgPSByZWFkRihBSCwg JmJ1ZiwgJmJ1ZmxlbikpKQorCXsKKwkJaW50CQlkZWNCeXRlcyA9IExaNF9kZWNvbXByZXNzX3Nh ZmVfY29udGludWUoJmx6NFN0cmVhbURlY29kZSwKKwkJCQkJCQkJCQkJCQkJYnVmLCBkZWNidWYs CisJCQkJCQkJCQkJCQkJCWNudCwgYnVmbGVuKTsKKworCQlhaHdyaXRlKGRlY2J1ZiwgMSwgZGVj Qnl0ZXMsIEFIKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCitXcml0ZURhdGFUb0FyY2hpdmVMWjQo QXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MsCisJCQkJCSAgY29uc3QgY2hh ciAqZGF0YSwgc2l6ZV90IGRMZW4pCit7CisJc2l6ZV90CQljb21wcmVzc2VkOworCXNpemVfdAkJ cmVxdWlyZWRzaXplID0gTFo0X2NvbXByZXNzQm91bmQoZExlbik7CisKKwlpZiAocmVxdWlyZWRz aXplID4gY3MtPm91dHNpemUpCisJeworCQljcy0+b3V0YnVmID0gcGdfcmVhbGxvYyhjcy0+b3V0 YnVmLCByZXF1aXJlZHNpemUpOworCQljcy0+b3V0c2l6ZSA9IHJlcXVpcmVkc2l6ZTsKKwl9CisK Kwljb21wcmVzc2VkID0gTFo0X2NvbXByZXNzX2RlZmF1bHQoZGF0YSwgY3MtPm91dGJ1ZiwKKwkJ CQkJCQkJCSAgZExlbiwgY3MtPm91dHNpemUpOworCisJaWYgKGNvbXByZXNzZWQgPD0gMCkKKwkJ ZmF0YWwoImZhaWxlZCB0byBMWjQgY29tcHJlc3MgZGF0YSIpOworCisJY3MtPndyaXRlRihBSCwg Y3MtPm91dGJ1ZiwgY29tcHJlc3NlZCk7Cit9CisjZW5kaWYJCQkJCQkJLyogSEFWRV9MSUJMWjQg Ki8KIAogLyoKICAqIEZ1bmN0aW9ucyBmb3IgdW5jb21wcmVzc2VkIG91dHB1dC4KQEAgLTQwMCw5 ICs1MTQsMzYgQEAgV3JpdGVEYXRhVG9BcmNoaXZlTm9uZShBcmNoaXZlSGFuZGxlICpBSCwgQ29t cHJlc3NvclN0YXRlICpjcywKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKKyNpZmRl ZiBIQVZFX0xJQkxaNAogLyoKLSAqIGNmcCByZXByZXNlbnRzIGFuIG9wZW4gc3RyZWFtLCB3cmFw cGluZyB0aGUgdW5kZXJseWluZyBGSUxFIG9yIGd6RmlsZQotICogcG9pbnRlci4gVGhpcyBpcyBv cGFxdWUgdG8gdGhlIGNhbGxlcnMuCisgKiBTdGF0ZSBuZWVkZWQgZm9yIExaNCAoZGUpY29tcHJl c3Npb24gdXNpbmcgdGhlIGNmcCBBUEkuCisgKi8KK3R5cGVkZWYgc3RydWN0IExaNEZpbGUKK3sK KwlGSUxFCSpmcDsKKworCUxaNEZfcHJlZmVyZW5jZXNfdAkJCXByZWZzOworCisJTFo0Rl9jb21w cmVzc2lvbkNvbnRleHRfdAljdHg7CisJTFo0Rl9kZWNvbXByZXNzaW9uQ29udGV4dF90CWR0eDsK KworCWJvb2wJaW5pdGVkOworCWJvb2wJY29tcHJlc3Npbmc7CisKKwlzaXplX3QJYnVmbGVuOwor CWNoYXIgICAqYnVmZmVyOworCisJc2l6ZV90ICBvdmVyZmxvd2FsbG9jbGVuOworCXNpemVfdAlv dmVyZmxvd2xlbjsKKwljaGFyICAgKm92ZXJmbG93YnVmOworCisJc2l6ZV90CWVycmNvZGU7Cit9 IExaNEZpbGU7CisjZW5kaWYKKworLyoKKyAqIGNmcCByZXByZXNlbnRzIGFuIG9wZW4gc3RyZWFt LCB3cmFwcGluZyB0aGUgdW5kZXJseWluZyBGSUxFLCBnekZpbGUKKyAqIHBvaW50ZXIsIG9yIExa NEZpbGUgcG9pbnRlci4gVGhpcyBpcyBvcGFxdWUgdG8gdGhlIGNhbGxlcnMuCiAgKi8KIHN0cnVj dCBjZnAKIHsKQEAgLTQxMCw5ICs1NTEsNyBAQCBzdHJ1Y3QgY2ZwCiAJdm9pZAkgICAqZnA7CiB9 OwogCi0jaWZkZWYgSEFWRV9MSUJaCiBzdGF0aWMgaW50CWhhc1N1ZmZpeChjb25zdCBjaGFyICpm aWxlbmFtZSwgY29uc3QgY2hhciAqc3VmZml4KTsKLSNlbmRpZgogCiAvKiBmcmVlKCkgd2l0aG91 dCBjaGFuZ2luZyBlcnJubzsgdXNlZnVsIGluIHNldmVyYWwgcGxhY2VzIGJlbG93ICovCiBzdGF0 aWMgdm9pZApAQCAtNDI0LDI2ICs1NjMsMzgwIEBAIGZyZWVfa2VlcF9lcnJubyh2b2lkICpwKQog CWVycm5vID0gc2F2ZV9lcnJubzsKIH0KIAorI2lmZGVmIEhBVkVfTElCTFo0CisvKgorICogTFo0 IGVxdWl2YWxlbnQgdG8gZmVvZigpIG9yIGd6ZW9mKCkuIFRoZSBlbmQgb2YgZmlsZQorICogaXMg cmVhY2hlZCBpZiB0aGVyZSBpcyBubyBkZWNvbXByZXNzZWQgb3V0cHV0IGluIHRoZQorICogb3Zl cmZsb3cgYnVmZmVyIGFuZCB0aGUgZW5kIG9mIHRoZSBmaWxlIGlzIHJlYWNoZWQuCisgKi8KK3N0 YXRpYyBpbnQKK0xaNEZpbGVfZW9mKExaNEZpbGUgKmZzKQoreworCXJldHVybiBmcy0+b3ZlcmZs b3dsZW4gPT0gMCAmJiBmZW9mKGZzLT5mcCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK0xa NEZpbGVfZXJyb3IoTFo0RmlsZSAqZnMpCit7CisJY29uc3QgY2hhciAqZXJybXNnOworCisJaWYg KExaNEZfaXNFcnJvcihmcy0+ZXJyY29kZSkpCisJCWVycm1zZyA9IExaNEZfZ2V0RXJyb3JOYW1l KGZzLT5lcnJjb2RlKTsKKwllbHNlCisJCWVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKKworCXJl dHVybiBlcnJtc2c7Cit9CisKKy8qCisgKiBQcmVwYXJlIGFuIGFscmVhZHkgYWxsb2MnZWQgTFo0 RmlsZSBzdHJ1Y3QgZm9yIHN1YnNlcXVlbnQgY2FsbHMuCisgKgorICogSXQgY3JlYXRlcyB0aGUg bmVzc2FyeSBjb250ZXh0cyBmb3IgdGhlIG9wZXJhdGlvbnMuIFdoZW4gY29tcHJlc3NpbmcsCisg KiBpdCBhZGRpdGlvbmFsbHkgd3JpdGVzIHRoZSBMWjQgaGVhZGVyIGluIHRoZSBvdXRwdXQgc3Ry ZWFtLgorICovCitzdGF0aWMgaW50CitMWjRGaWxlX2luaXQoTFo0RmlsZSAqZnMsIGludCBzaXpl LCBib29sIGNvbXByZXNzaW5nKQoreworCXNpemVfdAlzdGF0dXM7CisKKwlpZiAoZnMtPmluaXRl ZCkKKwkJcmV0dXJuIDA7CisKKwlmcy0+Y29tcHJlc3NpbmcgPSBjb21wcmVzc2luZzsKKwlmcy0+ aW5pdGVkID0gdHJ1ZTsKKworCWlmIChmcy0+Y29tcHJlc3NpbmcpCisJeworCQlmcy0+YnVmbGVu ID0gTFo0Rl9jb21wcmVzc0JvdW5kKExaNF9JTl9TSVpFLCAmZnMtPnByZWZzKTsKKwkJaWYgKGZz LT5idWZsZW4gPCBMWjRGX0hFQURFUl9TSVpFX01BWCkKKwkJCWZzLT5idWZsZW4gPSBMWjRGX0hF QURFUl9TSVpFX01BWDsKKworCQlzdGF0dXMgPSBMWjRGX2NyZWF0ZUNvbXByZXNzaW9uQ29udGV4 dCgmZnMtPmN0eCwgTFo0Rl9WRVJTSU9OKTsKKwkJaWYgKExaNEZfaXNFcnJvcihzdGF0dXMpKQor CQl7CisJCQlmcy0+ZXJyY29kZSA9IHN0YXR1czsKKwkJCXJldHVybiAxOworCQl9CisKKwkJZnMt PmJ1ZmZlciA9IHBnX21hbGxvYyhmcy0+YnVmbGVuKTsKKwkJc3RhdHVzID0gTFo0Rl9jb21wcmVz c0JlZ2luKGZzLT5jdHgsIGZzLT5idWZmZXIsIGZzLT5idWZsZW4sICZmcy0+cHJlZnMpOworCisJ CWlmIChMWjRGX2lzRXJyb3Ioc3RhdHVzKSkKKwkJeworCQkJZnMtPmVycmNvZGUgPSBzdGF0dXM7 CisJCQlyZXR1cm4gMTsKKwkJfQorCisJCWlmIChmd3JpdGUoZnMtPmJ1ZmZlciwgMSwgc3RhdHVz LCBmcy0+ZnApICE9IHN0YXR1cykKKwkJeworCQkJZXJybm8gPSBlcnJubyA/IDogRU5PU1BDOwor CQkJcmV0dXJuIDE7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJc3RhdHVzID0gTFo0Rl9jcmVhdGVE ZWNvbXByZXNzaW9uQ29udGV4dCgmZnMtPmR0eCwgTFo0Rl9WRVJTSU9OKTsKKwkJaWYgKExaNEZf aXNFcnJvcihzdGF0dXMpKQorCQl7CisJCQlmcy0+ZXJyY29kZSA9IHN0YXR1czsKKwkJCXJldHVy biAxOworCQl9CisKKwkJZnMtPmJ1ZmxlbiA9IHNpemUgPiBMWjRfT1VUX1NJWkUgPyBzaXplIDog TFo0X09VVF9TSVpFOworCQlmcy0+YnVmZmVyID0gcGdfbWFsbG9jKGZzLT5idWZsZW4pOworCisJ CWZzLT5vdmVyZmxvd2FsbG9jbGVuID0gZnMtPmJ1ZmxlbjsKKwkJZnMtPm92ZXJmbG93YnVmID0g cGdfbWFsbG9jKGZzLT5vdmVyZmxvd2FsbG9jbGVuKTsKKwkJZnMtPm92ZXJmbG93bGVuID0gMDsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFJlYWQgYWxyZWFkeSBkZWNvbXByZXNzZWQg Y29udGVudCBmcm9tIHRoZSBvdmVyZmxvdyBidWZmZXIgaW50byAncHRyJyB1cCB0bworICogJ3Np emUnIGJ5dGVzLCBpZiBhdmFpbGFibGUuIElmIHRoZSBlb2xfZmxhZyBpcyBzZXQsIHRoZW4gc3Rv cCBhdCB0aGUgZmlyc3QKKyAqIG9jY3VyYW5jZSBvZiB0aGUgbmV3IGxpbmUgY2hhciBwcmlvciB0 byAnc2l6ZScgYnl0ZXMuCisgKgorICogQW55IHVucmVhZCBjb250ZW50IGluIHRoZSBvdmVyZmxv dyBidWZmZXIsIGlzIG1vdmVkIHRvIHRoZSBiZWdpbm5pbmcuCisgKi8KK3N0YXRpYyBpbnQKK0xa NEZpbGVfcmVhZF9vdmVyZmxvdyhMWjRGaWxlICpmcywgdm9pZCAqcHRyLCBpbnQgc2l6ZSwgYm9v bCBlb2xfZmxhZykKK3sKKwljaGFyICAgKnA7CisJaW50CQlyZWFkbGVuID0gMDsKKworCWlmIChm cy0+b3ZlcmZsb3dsZW4gPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZnMtPm92ZXJmbG93bGVu ID49IHNpemUpCisJCXJlYWRsZW4gPSBzaXplOworCWVsc2UKKwkJcmVhZGxlbiA9IGZzLT5vdmVy Zmxvd2xlbjsKKworCWlmIChlb2xfZmxhZyAmJiAocCA9IG1lbWNocihmcy0+b3ZlcmZsb3didWYs ICdcbicsIHJlYWRsZW4pKSkKKwkJcmVhZGxlbiA9IHAgLSBmcy0+b3ZlcmZsb3didWYgKyAxOyAv KiBJbmNsdWRlIHRoZSBsaW5lIHRlcm1pbmF0aW5nIGNoYXIgKi8KKworCW1lbWNweShwdHIsIGZz LT5vdmVyZmxvd2J1ZiwgcmVhZGxlbik7CisJZnMtPm92ZXJmbG93bGVuIC09IHJlYWRsZW47CisK KwlpZiAoZnMtPm92ZXJmbG93bGVuID4gMCkKKwkJbWVtbW92ZShmcy0+b3ZlcmZsb3didWYsIGZz LT5vdmVyZmxvd2J1ZiArIHJlYWRsZW4sIGZzLT5vdmVyZmxvd2xlbik7CisKKwlyZXR1cm4gcmVh ZGxlbjsKK30KKworLyoKKyAqIFRoZSB3b3JraG9yc2UgZm9yIHJlYWRpbmcgZGVjb21wcmVzc2Vk IGNvbnRlbnQgb3V0IG9mIGFuIExaNCBjb21wcmVzc2VkCisgKiBzdHJlYW0uCisgKgorICogSXQg d2lsbCByZWFkIHVwIHRvICdwdHJzaXplJyBkZWNvbXByZXNzZWQgY29udGVudCwgb3IgdXAgdG8g dGhlIG5ldyBsaW5lIGNoYXIKKyAqIGlmIGZvdW5kIGZpcnN0IHdoZW4gdGhlIGVvbF9mbGFnIGlz IHNldC4gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgZGVjb21wcmVzc2VkCisgKiBvdXRwdXQgZ2Vu ZXJhdGVkIGJ5IHJlYWRpbmcgYW55IGNvbXByZXNzZWQgaW5wdXQgdmlhIHRoZSBMWjRGIEFQSSwg ZXhjZWVkcworICogJ3B0cnNpemUnLiBBbnkgZXhjZWVkaW5nIGRlY29tcHJlc3NlZCBjb250ZW50 IGlzIHN0b3JlZCBhdCBhbiBvdmVyZmxvdworICogYnVmZmVyIHdpdGhpbiBMWjRGaWxlLiBPZiBj b3Vyc2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgd2lsbCBmaXJzdAorICogdHJ5 IHRvIGNvbnN1bWUgYW55IGRlY29tcHJlc3NlZCBjb250ZW50IGFscmVhZHkgcHJlc2VudCBpbiB0 aGUgb3ZlcmZsb3cKKyAqIGJ1ZmZlciwgYmVmb3JlIGRlY29tcHJlc3NpbmcgbmV3IGNvbnRlbnQu CisgKi8KK3N0YXRpYyBpbnQKK0xaNEZpbGVfcmVhZChMWjRGaWxlICpmcywgdm9pZCAqcHRyLCBp bnQgcHRyc2l6ZSwgYm9vbCBlb2xfZmxhZykKK3sKKwlzaXplX3QJZHNpemUgPSAwOworCXNpemVf dCAgcnNpemU7CisJc2l6ZV90CXNpemUgPSBwdHJzaXplOworCWJvb2wJZW9sX2ZvdW5kID0gZmFs c2U7CisKKwl2b2lkICpyZWFkYnVmOworCisJLyogTGF6eSBpbml0ICovCisJaWYgKCFmcy0+aW5p dGVkICYmIExaNEZpbGVfaW5pdChmcywgc2l6ZSwgZmFsc2UgLyogZGVjb21wcmVzc2luZyAqLykp CisJCXJldHVybiAtMTsKKworCS8qIFZlcmZpeSB0aGF0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBp biB0aGUgb3V0YnVmICovCisJaWYgKHNpemUgPiBmcy0+YnVmbGVuKQorCXsKKwkJZnMtPmJ1Zmxl biA9IHNpemU7CisJCWZzLT5idWZmZXIgPSBwZ19yZWFsbG9jKGZzLT5idWZmZXIsIHNpemUpOwor CX0KKworCS8qIHVzZSBhbHJlYWR5IGRlY29tcHJlc3NlZCBjb250ZW50IGlmIGF2YWlsYWJsZSAq LworCWRzaXplID0gTFo0RmlsZV9yZWFkX292ZXJmbG93KGZzLCBwdHIsIHNpemUsIGVvbF9mbGFn KTsKKwlpZiAoZHNpemUgPT0gc2l6ZSB8fCAoZW9sX2ZsYWcgJiYgbWVtY2hyKHB0ciwgJ1xuJywg ZHNpemUpKSkKKwkJcmV0dXJuIGRzaXplOworCisJcmVhZGJ1ZiA9IHBnX21hbGxvYyhzaXplKTsK KworCWRvCisJeworCQljaGFyICAgKnJwOworCQljaGFyICAgKnJlbmQ7CisKKwkJcnNpemUgPSBm cmVhZChyZWFkYnVmLCAxLCBzaXplLCBmcy0+ZnApOworCQlpZiAocnNpemUgPCBzaXplICYmICFm ZW9mKGZzLT5mcCkpCisJCQlyZXR1cm4gLTE7CisKKwkJcnAgPSAoY2hhciAqKXJlYWRidWY7CisJ CXJlbmQgPSAoY2hhciAqKXJlYWRidWYgKyByc2l6ZTsKKworCQl3aGlsZSAocnAgPCByZW5kKQor CQl7CisJCQlzaXplX3QJc3RhdHVzOworCQkJc2l6ZV90CW91dGxlbiA9IGZzLT5idWZsZW47CisJ CQlzaXplX3QJcmVhZF9yZW1haW4gPSByZW5kIC0gcnA7CisKKwkJCW1lbXNldChmcy0+YnVmZmVy LCAwLCBvdXRsZW4pOworCQkJc3RhdHVzID0gTFo0Rl9kZWNvbXByZXNzKGZzLT5kdHgsIGZzLT5i dWZmZXIsICZvdXRsZW4sCisJCQkJCQkJCQkgcnAsICZyZWFkX3JlbWFpbiwgTlVMTCk7CisJCQlp ZiAoTFo0Rl9pc0Vycm9yKHN0YXR1cykpCisJCQl7CisJCQkJZnMtPmVycmNvZGUgPSBzdGF0dXM7 CisJCQkJcmV0dXJuIC0xOworCQkJfQorCisJCQlycCArPSByZWFkX3JlbWFpbjsKKworCQkJLyoK KwkJCSAqIGZpbGwgaW4gd2hhdCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gcHRyCisJCQkgKiBpZiB0 aGUgZW9sIGZsYWcgaXMgc2V0LCBlaXRoZXIgc2tpcCBpZiBvbmUgYWxyZWFkeSBmb3VuZCBvciBm aWxsIHVwIHRvIEVPTAorCQkJICogaWYgcHJlc2VudCBpbiB0aGUgb3V0YnVmCisJCQkgKi8KKwkJ CWlmIChvdXRsZW4gPiAwICYmIGRzaXplIDwgc2l6ZSAmJiBlb2xfZm91bmQgPT0gZmFsc2UpCisJ CQl7CisJCQkJY2hhciAgICpwOworCQkJCXNpemVfdAlsaWIgPSAoZW9sX2ZsYWcgPT0gMCkgPyBz aXplIC0gZHNpemUgOiBzaXplIC0xIC1kc2l6ZTsKKwkJCQlzaXplX3QJbGVuID0gb3V0bGVuIDwg bGliID8gb3V0bGVuIDogbGliOworCisJCQkJaWYgKGVvbF9mbGFnID09IHRydWUgJiYgKHAgPSBt ZW1jaHIoZnMtPmJ1ZmZlciwgJ1xuJywgb3V0bGVuKSkgJiYKKwkJCQkJKHNpemVfdCkocCAtIGZz LT5idWZmZXIgKyAxKSA8PSBsZW4pCisJCQkJeworCQkJCQlsZW4gPSBwIC0gZnMtPmJ1ZmZlciAr IDE7CisJCQkJCWVvbF9mb3VuZCA9IHRydWU7CisJCQkJfQorCisJCQkJbWVtY3B5KChjaGFyICop cHRyICsgZHNpemUsIGZzLT5idWZmZXIsIGxlbik7CisJCQkJZHNpemUgKz0gbGVuOworCisJCQkJ LyogbW92ZSB3aGF0IGRpZCBub3QgZml0LCBpZiBhbnksIGF0IHRoZSBiZWdpbmluZyBvZiB0aGUg YnVmICovCisJCQkJaWYgKGxlbiA8IG91dGxlbikKKwkJCQkJbWVtbW92ZShmcy0+YnVmZmVyLCBm cy0+YnVmZmVyICsgbGVuLCBvdXRsZW4gLSBsZW4pOworCQkJCW91dGxlbiAtPSBsZW47CisJCQl9 CisKKwkJCS8qIGlmIHRoZXJlIGlzIGF2YWlsYWJsZSBvdXRwdXQsIHNhdmUgaXQgKi8KKwkJCWlm IChvdXRsZW4gPiAwKQorCQkJeworCQkJCXdoaWxlIChmcy0+b3ZlcmZsb3dsZW4gKyBvdXRsZW4g PiBmcy0+b3ZlcmZsb3dhbGxvY2xlbikKKwkJCQl7CisJCQkJCWZzLT5vdmVyZmxvd2FsbG9jbGVu ICo9IDI7CisJCQkJCWZzLT5vdmVyZmxvd2J1ZiA9IHBnX3JlYWxsb2MoZnMtPm92ZXJmbG93YnVm LCBmcy0+b3ZlcmZsb3dhbGxvY2xlbik7CisJCQkJfQorCisJCQkJbWVtY3B5KGZzLT5vdmVyZmxv d2J1ZiArIGZzLT5vdmVyZmxvd2xlbiwgZnMtPmJ1ZmZlciwgb3V0bGVuKTsKKwkJCQlmcy0+b3Zl cmZsb3dsZW4gKz0gb3V0bGVuOworCQkJfQorCQl9CisJfSB3aGlsZSAocnNpemUgPT0gc2l6ZSAm JiBkc2l6ZSA8IHNpemUgJiYgZW9sX2ZvdW5kID09IDApOworCisJcGdfZnJlZShyZWFkYnVmKTsK KworCXJldHVybiAoaW50KWRzaXplOworfQorCisvKgorICogQ29tcHJlc3Mgc2l6ZSBieXRlcyBm cm9tIHB0ciBhbmQgd3JpdGUgdGhlbSB0byB0aGUgc3RyZWFtLgorICovCitzdGF0aWMgaW50CitM WjRGaWxlX3dyaXRlKExaNEZpbGUgKmZzLCBjb25zdCB2b2lkICpwdHIsIGludCBzaXplKQorewor CXNpemVfdAlzdGF0dXM7CisJaW50CQlyZW1haW5pbmcgPSBzaXplOworCisJaWYgKCFmcy0+aW5p dGVkICYmIExaNEZpbGVfaW5pdChmcywgc2l6ZSwgdHJ1ZSkpCisJCXJldHVybiAtMTsKKworCXdo aWxlIChyZW1haW5pbmcgPiAwKQorCXsKKwkJaW50CQljaHVuayA9IHJlbWFpbmluZyA8IExaNF9J Tl9TSVpFID8gcmVtYWluaW5nIDogTFo0X0lOX1NJWkU7CisJCXJlbWFpbmluZyAtPSBjaHVuazsK KworCQlzdGF0dXMgPSBMWjRGX2NvbXByZXNzVXBkYXRlKGZzLT5jdHgsIGZzLT5idWZmZXIsIGZz LT5idWZsZW4sCisJCQkJCQkJCQkgcHRyLCBjaHVuaywgTlVMTCk7CisJCWlmIChMWjRGX2lzRXJy b3Ioc3RhdHVzKSkKKwkJeworCQkJZnMtPmVycmNvZGUgPSBzdGF0dXM7CisJCQlyZXR1cm4gLTE7 CisJCX0KKworCQlpZiAoZndyaXRlKGZzLT5idWZmZXIsIDEsIHN0YXR1cywgZnMtPmZwKSAhPSBz dGF0dXMpCisJCXsKKwkJCWVycm5vID0gZXJybm8gPyA6IEVOT1NQQzsKKwkJCXJldHVybiAxOwor CQl9CisJfQorCisJcmV0dXJuIHNpemU7Cit9CisKKy8qCisgKiBmZ2V0YygpIGFuZCBnemdldGMo KSBlcXVpdmFsZW50IGltcGxlbWVudGF0aW9uIGZvciBMWjQgY29tcHJlc3NlZCBmaWxlcy4KKyAq Lworc3RhdGljIGludAorTFo0RmlsZV9nZXRjKExaNEZpbGUgKmZzKQoreworCXVuc2lnbmVkIGNo YXIgYzsKKworCWlmIChMWjRGaWxlX3JlYWQoZnMsICZjLCAxLCBmYWxzZSkgIT0gMSkKKwkJcmV0 dXJuIEVPRjsKKworCXJldHVybiBjOworfQorCisvKgorICogZmdldHMoKSBhbmQgZ3pnZXRzKCkg ZXF1aXZhbGVudCBpbXBsZW1lbnRhdGlvbiBmb3IgTFo0IGNvbXByZXNzZWQgZmlsZXMuCisgKi8K K3N0YXRpYyBjaGFyICoKK0xaNEZpbGVfZ2V0cyhMWjRGaWxlICpmcywgY2hhciAqYnVmLCBpbnQg bGVuKQoreworCXNpemVfdAlkc2l6ZTsKKworCWRzaXplID0gTFo0RmlsZV9yZWFkKGZzLCBidWYs IGxlbiwgdHJ1ZSk7CisJaWYgKGRzaXplIDwgMCkKKwkJZmF0YWwoImZhaWxlZCB0byByZWFkIGZy b20gYXJjaGl2ZSAlcyIsIExaNEZpbGVfZXJyb3IoZnMpKTsKKworCS8qIERvbmUgcmVhZGluZyAq LworCWlmIChkc2l6ZSA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiBidWY7Cit9CisK Ky8qCisgKiBGaW5hbGl6ZSAoZGUpY29tcHJlc3Npb24gb2YgYSBzdHJlYW0uIFdoZW4gY29tcHJl c3NpbmcgaXQgd2lsbCB3cml0ZSBhbnkKKyAqIHJlbWFpbmluZyBjb250ZW50IGFuZC9vciBnZW5l cmF0ZWQgZm9vdGVyIGZyb20gdGhlIExaNCBBUEkuCisgKi8KK3N0YXRpYyBpbnQKK0xaNEZpbGVf Y2xvc2UoTFo0RmlsZSAqZnMpCit7CisJRklMRQkqZnA7CisJc2l6ZV90CXN0YXR1czsKKwlpbnQJ CXJldDsKKworCWZwID0gZnMtPmZwOworCWlmIChmcy0+aW5pdGVkKQorCXsKKwkJaWYgKGZzLT5j b21wcmVzc2luZykKKwkJeworCQkJc3RhdHVzID0gTFo0Rl9jb21wcmVzc0VuZChmcy0+Y3R4LCBm cy0+YnVmZmVyLCBmcy0+YnVmbGVuLCBOVUxMKTsKKwkJCWlmIChMWjRGX2lzRXJyb3Ioc3RhdHVz KSkKKwkJCQlmYXRhbCgiZmFpbGVkIHRvIGVuZCBjb21wcmVzc2lvbjogJXMiLCBMWjRGX2dldEVy cm9yTmFtZShzdGF0dXMpKTsKKwkJCWVsc2UgaWYgKChyZXQgPSBmd3JpdGUoZnMtPmJ1ZmZlciwg MSwgc3RhdHVzLCBmcy0+ZnApKSAhPSBzdGF0dXMpCisJCQl7CisJCQkJZXJybm8gPSBlcnJubyA/ IDogRU5PU1BDOworCQkJCVdSSVRFX0VSUk9SX0VYSVQ7CisJCQl9CisKKwkJCXN0YXR1cyA9IExa NEZfZnJlZUNvbXByZXNzaW9uQ29udGV4dChmcy0+Y3R4KTsKKwkJCWlmIChMWjRGX2lzRXJyb3Io c3RhdHVzKSkKKwkJCQlmYXRhbCgiZmFpbGVkIHRvIGVuZCBjb21wcmVzc2lvbjogJXMiLCBMWjRG X2dldEVycm9yTmFtZShzdGF0dXMpKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXN0YXR1cyA9IExa NEZfZnJlZURlY29tcHJlc3Npb25Db250ZXh0KGZzLT5kdHgpOworCQkJaWYgKExaNEZfaXNFcnJv cihzdGF0dXMpKQorCQkJCWZhdGFsKCJmYWlsZWQgdG8gZW5kIGRlY29tcHJlc3Npb246ICVzIiwg TFo0Rl9nZXRFcnJvck5hbWUoc3RhdHVzKSk7CisJCQlwZ19mcmVlKGZzLT5vdmVyZmxvd2J1Zik7 CisJCX0KKworCQlwZ19mcmVlKGZzLT5idWZmZXIpOworCX0KKworCXBnX2ZyZWUoZnMpOworCisJ cmV0dXJuIGZjbG9zZShmcCk7Cit9CisjZW5kaWYKKwogLyoKICAqIE9wZW4gYSBmaWxlIGZvciBy ZWFkaW5nLiAncGF0aCcgaXMgdGhlIGZpbGUgdG8gb3BlbiwgYW5kICdtb2RlJyBzaG91bGQKICAq IGJlIGVpdGhlciAiciIgb3IgInJiIi4KICAqCi0gKiBJZiB0aGUgZmlsZSBhdCAncGF0aCcgZG9l cyBub3QgZXhpc3QsIHdlIGFwcGVuZCB0aGUgIi5neiIgc3VmZml4IChpZiAncGF0aCcKLSAqIGRv ZXNuJ3QgYWxyZWFkeSBoYXZlIGl0KSBhbmQgdHJ5IGFnYWluLiBTbyBpZiB5b3UgcGFzcyAiZm9v IiBhcyAncGF0aCcsCi0gKiB0aGlzIHdpbGwgb3BlbiBlaXRoZXIgImZvbyIgb3IgImZvby5neiIu CisgKiBJZiB0aGUgZmlsZSBhdCAncGF0aCcgZG9lcyBub3QgZXhpc3QsIHdlIGFwcGVuZCB0aGUg InsuZ3osLmx6NH0iIHN1ZmZpeCAoaWYKKyAqICdwYXRoJyBkb2Vzbid0IGFscmVhZHkgaGF2ZSBp dCkgYW5kIHRyeSBhZ2Fpbi4gU28gaWYgeW91IHBhc3MgImZvbyIgYXMgJ3BhdGgnLAorICogdGhp cyB3aWxsIG9wZW4gZWl0aGVyICJmb28iIG9yICJmb28uZ3oiIG9yICJmb28ubHo0IiwgdHJ5aW5n IGluIHRoYXQgb3JkZXIuCiAgKgogICogT24gZmFpbHVyZSwgcmV0dXJuIE5VTEwgd2l0aCBhbiBl cnJvciBjb2RlIGluIGVycm5vLgorICoKICAqLwogY2ZwICoKIGNmb3Blbl9yZWFkKGNvbnN0IGNo YXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCiB7Ci0JY2ZwCQkgICAqZnA7CisJY2ZwCQkgICAq ZnAgPSBOVUxMOwogCi0jaWZkZWYgSEFWRV9MSUJaCiAJaWYgKGhhc1N1ZmZpeChwYXRoLCAiLmd6 IikpCiAJCWZwID0gY2ZvcGVuKHBhdGgsIG1vZGUsIENPTVBSRVNTSU9OX0daSVAsIDApOworCWVs c2UgaWYgKGhhc1N1ZmZpeChwYXRoLCAiLmx6NCIpKQorCQlmcCA9IGNmb3BlbihwYXRoLCBtb2Rl LCBDT01QUkVTU0lPTl9MWjQsIDApOwogCWVsc2UKLSNlbmRpZgogCXsKIAkJZnAgPSBjZm9wZW4o cGF0aCwgbW9kZSwgQ09NUFJFU1NJT05fTk9ORSwgMCk7CiAjaWZkZWYgSEFWRV9MSUJaCkBAIC00 NTUsOCArOTQ4LDE5IEBAIGNmb3Blbl9yZWFkKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIg Km1vZGUpCiAJCQlmcCA9IGNmb3BlbihmbmFtZSwgbW9kZSwgQ09NUFJFU1NJT05fR1pJUCwgMCk7 CiAJCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOwogCQl9CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJ QkxaNAorCQlpZiAoZnAgPT0gTlVMTCkKKwkJeworCQkJY2hhcgkgICAqZm5hbWU7CisKKwkJCWZu YW1lID0gcHNwcmludGYoIiVzLmx6NCIsIHBhdGgpOworCQkJZnAgPSBjZm9wZW4oZm5hbWUsIG1v ZGUsIENPTVBSRVNTSU9OX0xaNCwgMCk7CisJCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOworCQl9 CiAjZW5kaWYKIAl9CisKIAlyZXR1cm4gZnA7CiB9CiAKQEAgLTQ2NSw5ICs5NjksMTMgQEAgY2Zv cGVuX3JlYWQoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKICAqIGJlIGEgZmls ZW1vZGUgYXMgYWNjZXB0ZWQgYnkgZm9wZW4oKSBhbmQgZ3pvcGVuKCkgdGhhdCBpbmRpY2F0ZXMg d3JpdGluZwogICogKCJ3IiwgIndiIiwgImEiLCBvciAiYWIiKS4KICAqCi0gKiBJZiAnY29tcHJl c3Npb24nIGlzIG5vbi16ZXJvLCBhIGd6aXAgY29tcHJlc3NlZCBzdHJlYW0gaXMgb3BlbmVkLCBh bmQKLSAqICdjb21wcmVzc2lvbicgaW5kaWNhdGVzIHRoZSBjb21wcmVzc2lvbiBsZXZlbCB1c2Vk LiBUaGUgIi5neiIgc3VmZml4Ci0gKiBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvICdwYXRoJyBp biB0aGF0IGNhc2UuCisgKiBXaGVuICdjb21wcmVzc2lvbk1ldGhvZCcgaW5kaWNhdGVzIGd6aXAs IGEgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbSBpcyBvcGVuZWQsCisgKiBhbmQgJ2NvbXByZXNzaW9u TGV2ZWwnIGlzIHVzZWQuIFRoZSAiLmd6IiBzdWZmaXggaXMgYXV0b21hdGljYWxseSBhZGRlZCB0 bworICogJ3BhdGgnIGluIHRoYXQgY2FzZS4gVGhlIHNhbWUgYXBwbGllcyB3aGVuICdjb21wcmVz c2lvbk1ldGhvZCcgaW5kaWNhdGVzIGx6NCwKKyAqIGJ1dCB0aGVuIHRoZSAiLmx6NCIgc3VmZml4 IGlzIGFkZGVkIGluc3RlYWQuCisgKgorICogSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmls aXR5IHRvIHZlcmlmeSB0aGF0IHRoZSByZXF1ZXN0ZWQKKyAqICdjb21wcmVzc2lvbk1ldGhvZCcg aXMgc3VwcG9ydGVkIGJ5IHRoZSBidWlsZC4KICAqCiAgKiBPbiBmYWlsdXJlLCByZXR1cm4gTlVM TCB3aXRoIGFuIGVycm9yIGNvZGUgaW4gZXJybm8uCiAgKi8KQEAgLTQ3NiwyMyArOTg0LDQ0IEBA IGNmb3Blbl93cml0ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLAogCQkJIENv bXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAogCQkJIGludCBjb21wcmVzc2lvbkxl dmVsKQogewotCWNmcAkJICAgKmZwOworCWNmcAkJICAgKmZwID0gTlVMTDsKIAotCWlmIChjb21w cmVzc2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9OT05FKQotCQlmcCA9IGNmb3BlbihwYXRoLCBt b2RlLCBjb21wcmVzc2lvbk1ldGhvZCwgMCk7Ci0JZWxzZQorCXN3aXRjaCAoY29tcHJlc3Npb25N ZXRob2QpCiAJeworCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CisJCQlmcCA9IGNmb3BlbihwYXRo LCBtb2RlLCBjb21wcmVzc2lvbk1ldGhvZCwgMCk7CisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVT U0lPTl9HWklQOgogI2lmZGVmIEhBVkVfTElCWgotCQljaGFyCSAgICpmbmFtZTsKKwkJCXsKKwkJ CQljaGFyCSAgICpmbmFtZTsKIAotCQlmbmFtZSA9IHBzcHJpbnRmKCIlcy5neiIsIHBhdGgpOwot CQlmcCA9IGNmb3BlbihmbmFtZSwgbW9kZSwgY29tcHJlc3Npb25NZXRob2QsIGNvbXByZXNzaW9u TGV2ZWwpOwotCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOworCQkJCWZuYW1lID0gcHNwcmludGYo IiVzLmd6IiwgcGF0aCk7CisJCQkJZnAgPSBjZm9wZW4oZm5hbWUsIG1vZGUsIGNvbXByZXNzaW9u TWV0aG9kLCBjb21wcmVzc2lvbkxldmVsKTsKKwkJCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOwor CQkJfQogI2Vsc2UKLQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwotCQlm cCA9IE5VTEw7CQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJCWZhdGFsKCJub3QgYnVp bHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJF U1NJT05fTFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQl7CisJCQkJY2hhcgkgICAqZm5hbWU7 CisKKwkJCQlmbmFtZSA9IHBzcHJpbnRmKCIlcy5sejQiLCBwYXRoKTsKKwkJCQlmcCA9IGNmb3Bl bihmbmFtZSwgbW9kZSwgY29tcHJlc3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2ZWwpOworCQkJ CWZyZWVfa2VlcF9lcnJubyhmbmFtZSk7CisJCQl9CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWls dCB3aXRoIExaNCBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJ ZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKIAl9CisKIAly ZXR1cm4gZnA7CiB9CiAKQEAgLTUwOSw3ICsxMDM4LDcgQEAgc3RhdGljIGNmcCAqCiBjZm9wZW5f aW50ZXJuYWwoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkLCBjb25zdCBjaGFyICptb2RlLAogCQkJ CUNvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLCBpbnQgY29tcHJlc3Npb25MZXZl bCkKIHsKLQljZnAJCSAgICpmcCA9IHBnX21hbGxvYyhzaXplb2YoY2ZwKSk7CisJY2ZwCQkgICAq ZnAgPSBwZ19tYWxsb2MwKHNpemVvZihjZnApKTsKIAogCWZwLT5jb21wcmVzc2lvbk1ldGhvZCA9 IGNvbXByZXNzaW9uTWV0aG9kOwogCkBAIC01NjAsNiArMTA4OSwyNyBAQCBjZm9wZW5faW50ZXJu YWwoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkLCBjb25zdCBjaGFyICptb2RlLAogCQkJfQogI2Vs c2UKIAkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJ YnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05fTFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQl7 CisJCQkJTFo0RmlsZSAqbHo0ZnAgPSBwZ19tYWxsb2MwKHNpemVvZigqbHo0ZnApKTsKKwkJCQlp ZiAoZmQgPj0gMCkKKwkJCQkJbHo0ZnAtPmZwID0gZmRvcGVuKGZkLCBtb2RlKTsKKwkJCQllbHNl CisJCQkJCWx6NGZwLT5mcCA9IGZvcGVuKHBhdGgsIG1vZGUpOworCQkJCWlmIChsejRmcC0+ZnAg PT0gTlVMTCkKKwkJCQl7CisJCQkJCWZyZWVfa2VlcF9lcnJubyhsejRmcCk7CisJCQkJCWZwID0g TlVMTDsKKwkJCQl9CisJCQkJaWYgKGNvbXByZXNzaW9uTGV2ZWwgPj0gMCkKKwkJCQkJbHo0ZnAt PnByZWZzLmNvbXByZXNzaW9uTGV2ZWwgPSBjb21wcmVzc2lvbkxldmVsOworCQkJCWZwLT5mcCA9 IGx6NGZwOworCQkJfQorI2Vsc2UKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCBMWjQgc3VwcG9y dCIpOwogI2VuZGlmCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTU4MCw4ICsxMTMwLDggQEAg Y2ZvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsCiAKIGNmcCAqCiBjZmRv cGVuKGludCBmZCwgY29uc3QgY2hhciAqbW9kZSwKLQkgICBDb21wcmVzc2lvbk1ldGhvZCBjb21w cmVzc2lvbk1ldGhvZCwKLQkgICBpbnQgY29tcHJlc3Npb25MZXZlbCkKKwkJQ29tcHJlc3Npb25N ZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJCWludCBjb21wcmVzc2lvbkxldmVsKQogewogCXJl dHVybiBjZm9wZW5faW50ZXJuYWwoTlVMTCwgZmQsIG1vZGUsIGNvbXByZXNzaW9uTWV0aG9kLCBj b21wcmVzc2lvbkxldmVsKTsKIH0KQEAgLTYxNyw3ICsxMTY3LDE2IEBAIGNmcmVhZCh2b2lkICpw dHIsIGludCBzaXplLCBjZnAgKmZwKQogCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3Vw cG9ydCIpOwogI2VuZGlmCiAJCQlicmVhazsKLQorCQljYXNlIENPTVBSRVNTSU9OX0xaNDoKKyNp ZmRlZiBIQVZFX0xJQkxaNAorCQkJcmV0ID0gTFo0RmlsZV9yZWFkKGZwLT5mcCwgcHRyLCBzaXpl LCBmYWxzZSk7CisJCQlpZiAocmV0ICE9IHNpemUgJiYgIUxaNEZpbGVfZW9mKGZwLT5mcCkpCisJ CQkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXMiLAorCQkJCQkgIExa NEZpbGVfZXJyb3IoZnAtPmZwKSk7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIExa NCBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZmF0YWwoImlu dmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7CiAJCQlicmVhazsKQEAgLTY0MSw2ICsxMjAwLDEz IEBAIGNmd3JpdGUoY29uc3Qgdm9pZCAqcHRyLCBpbnQgc2l6ZSwgY2ZwICpmcCkKIAkJCXJldCA9 IGd6d3JpdGUoZnAtPmZwLCBwdHIsIHNpemUpOwogI2Vsc2UKIAkJCWZhdGFsKCJub3QgYnVpbHQg d2l0aCB6bGliIHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJ T05fTFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQlyZXQgPSBMWjRGaWxlX3dyaXRlKGZwLT5m cCwgcHRyLCBzaXplKTsKKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggTFo0IHN1cHBv cnQiKTsKICNlbmRpZgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC02NzYsNiArMTI0MiwyMCBA QCBjZmdldGMoY2ZwICpmcCkKIAkJCX0KICNlbHNlCiAJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGgg emxpYiBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0xa NDoKKyNpZmRlZiBIQVZFX0xJQkxaNAorCQkJcmV0ID0gTFo0RmlsZV9nZXRjKGZwLT5mcCk7CisJ CQlpZiAocmV0ID09IEVPRikKKwkJCXsKKwkJCQlpZiAoIUxaNEZpbGVfZW9mKGZwLT5mcCkpCisJ CQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVzIiwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJCQllbHNlCisJCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0 IGZpbGU6IGVuZCBvZiBmaWxlIik7CisJCQl9CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3 aXRoIExaNCBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtNjk1 LDEzICsxMjc1LDE5IEBAIGNmZ2V0cyhjZnAgKmZwLCBjaGFyICpidWYsIGludCBsZW4pCiAJewog CQljYXNlIENPTVBSRVNTSU9OX05PTkU6CiAJCQlyZXQgPSBmZ2V0cyhidWYsIGxlbiwgZnAtPmZw KTsKLQogCQkJYnJlYWs7CiAJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoKICNpZmRlZiBIQVZFX0xJ QloKIAkJCXJldCA9IGd6Z2V0cyhmcC0+ZnAsIGJ1ZiwgbGVuKTsKICNlbHNlCiAJCQlmYXRhbCgi bm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNl IENPTVBSRVNTSU9OX0xaNDoKKyNpZmRlZiBIQVZFX0xJQkxaNAorCQkJcmV0ID0gTFo0RmlsZV9n ZXRzKGZwLT5mcCwgYnVmLCBsZW4pOworI2Vsc2UKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCBM WjQgc3VwcG9ydCIpOwogI2VuZGlmCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTczNiw2ICsx MzIyLDE0IEBAIGNmY2xvc2UoY2ZwICpmcCkKIAkJCWZwLT5mcCA9IE5VTEw7CiAjZWxzZQogCQkJ ZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOworI2VuZGlmCisJCQlicmVhazsK KwkJY2FzZSBDT01QUkVTU0lPTl9MWjQ6CisjaWZkZWYgSEFWRV9MSUJMWjQKKwkJCXJldCA9IExa NEZpbGVfY2xvc2UoZnAtPmZwKTsKKwkJCWZwLT5mcCA9IE5VTEw7CisjZWxzZQorCQkJZmF0YWwo Im5vdCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQlkZWZh dWx0OgpAQCAtNzY0LDYgKzEzNTgsMTMgQEAgY2Zlb2YoY2ZwICpmcCkKIAkJCXJldCA9IGd6ZW9m KGZwLT5mcCk7CiAjZWxzZQogCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIp OworI2VuZGlmCisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lPTl9MWjQ6CisjaWZkZWYgSEFW RV9MSUJMWjQKKwkJCXJldCA9IExaNEZpbGVfZW9mKGZwLT5mcCk7CisjZWxzZQorCQkJZmF0YWwo Im5vdCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQlkZWZh dWx0OgpAQCAtNzc3LDIzICsxMzc4LDQyIEBAIGNmZW9mKGNmcCAqZnApCiBjb25zdCBjaGFyICoK IGdldF9jZnBfZXJyb3IoY2ZwICpmcCkKIHsKLQlpZiAoZnAtPmNvbXByZXNzaW9uTWV0aG9kID09 IENPTVBSRVNTSU9OX0daSVApCisJY29uc3QgY2hhciAqZXJybXNnID0gTlVMTDsKKworCXN3aXRj aChmcC0+Y29tcHJlc3Npb25NZXRob2QpCiAJeworCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CisJ CQllcnJtc2cgPSBzdHJlcnJvcihlcnJubyk7CisKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNT SU9OX0daSVA6CiAjaWZkZWYgSEFWRV9MSUJaCi0JCWludAkJCWVycm51bTsKLQkJY29uc3QgY2hh ciAqZXJybXNnID0gZ3plcnJvcihmcC0+ZnAsICZlcnJudW0pOworCQkJeworCQkJCWludAkJCWVy cm51bTsKKwkJCQllcnJtc2cgPSBnemVycm9yKGZwLT5mcCwgJmVycm51bSk7CiAKLQkJaWYgKGVy cm51bSAhPSBaX0VSUk5PKQotCQkJcmV0dXJuIGVycm1zZzsKKwkJCQlpZiAoZXJybnVtID09IFpf RVJSTk8pCisJCQkJCWVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKKwkJCX0KICNlbHNlCi0JCWZh dGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKKwkJCWZhdGFsKCJub3QgYnVpbHQg d2l0aCB6bGliIHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJ T05fTFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQllcnJtc2cgPSBMWjRGaWxlX2Vycm9yKGZw LT5mcCk7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CiAj ZW5kaWYKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQgY29tcHJlc3Np b24gbWV0aG9kIik7CisJCQlicmVhazsKIAl9CiAKLQlyZXR1cm4gc3RyZXJyb3IoZXJybm8pOwor CXJldHVybiBlcnJtc2c7CiB9CiAKLSNpZmRlZiBIQVZFX0xJQloKIHN0YXRpYyBpbnQKIGhhc1N1 ZmZpeChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqc3VmZml4KQogewpAQCAtODA3 LDUgKzE0MjcsMyBAQCBoYXNTdWZmaXgoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIg KnN1ZmZpeCkKIAkJCQkgIHN1ZmZpeCwKIAkJCQkgIHN1ZmZpeGxlbikgPT0gMDsKIH0KLQotI2Vu ZGlmCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmggYi9zcmMvYmluL3Bn X2R1bXAvcGdfYmFja3VwLmgKaW5kZXggNzY0NWQzMjg1YS4uMTAzOTNmM2ZjNCAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXAuaApAQCAtNzgsOCArNzgsOSBAQCBlbnVtIF9kdW1wUHJlcGFyZWRRdWVyaWVzCiB0eXBl ZGVmIGVudW0gX2NvbXByZXNzaW9uTWV0aG9kCiB7CiAJQ09NUFJFU1NJT05fSU5WQUxJRCwKKwlD T01QUkVTU0lPTl9HWklQLAogCUNPTVBSRVNTSU9OX05PTkUsCi0JQ09NUFJFU1NJT05fR1pJUAor CUNPTVBSRVNTSU9OX0xaNAogfSBDb21wcmVzc2lvbk1ldGhvZDsKIAogLyogUGFyYW1ldGVycyBu ZWVkZWQgYnkgQ29ubmVjdERhdGFiYXNlOyBzYW1lIGZvciBkdW1wIGFuZCByZXN0b3JlICovCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmlu L3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggN2Q5NjQ0NmYxYS4uZTZmNzI3NTM0 YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtMzUzLDYgKzM1Myw3IEBA IFJlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAlBcmNoaXZlSGFuZGxlICpBSCA9IChBcmNo aXZlSGFuZGxlICopIEFIWDsKIAlSZXN0b3JlT3B0aW9ucyAqcm9wdCA9IEFILT5wdWJsaWMucm9w dDsKIAlib29sCQlwYXJhbGxlbF9tb2RlOworCWJvb2wJCXN1cHBvcnRzX2NvbXByZXNzaW9uOwog CVRvY0VudHJ5ICAgKnRlOwogCWNmcAkJICAgKnNhdjsKIApAQCAtMzgyLDE3ICszODMsMjcgQEAg UmVzdG9yZUFyY2hpdmUoQXJjaGl2ZSAqQUhYKQogCS8qCiAJICogTWFrZSBzdXJlIHdlIHdvbid0 IG5lZWQgKGRlKWNvbXByZXNzaW9uIHdlIGhhdmVuJ3QgZ290CiAJICovCi0jaWZuZGVmIEhBVkVf TElCWgotCWlmIChBSC0+Y29tcHJlc3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05fR1pJUCAmJgor CXN1cHBvcnRzX2NvbXByZXNzaW9uID0gdHJ1ZTsKKwlpZiAoQUgtPmNvbXByZXNzaW9uTWV0aG9k ICE9IENPTVBSRVNTSU9OX05PTkUgJiYKIAkJQUgtPlByaW50VG9jRGF0YVB0ciAhPSBOVUxMKQog CXsKIAkJZm9yICh0ZSA9IEFILT50b2MtPm5leHQ7IHRlICE9IEFILT50b2M7IHRlID0gdGUtPm5l eHQpCiAJCXsKIAkJCWlmICh0ZS0+aGFkRHVtcGVyICYmICh0ZS0+cmVxcyAmIFJFUV9EQVRBKSAh PSAwKQotCQkJCWZhdGFsKCJjYW5ub3QgcmVzdG9yZSBmcm9tIGNvbXByZXNzZWQgYXJjaGl2ZSAo Y29tcHJlc3Npb24gbm90IHN1cHBvcnRlZCBpbiB0aGlzIGluc3RhbGxhdGlvbikiKTsKKwkJCXsK KyNpZm5kZWYgSEFWRV9MSUJaCisJCQkJaWYgKEFILT5jb21wcmVzc2lvbk1ldGhvZCA9PSBDT01Q UkVTU0lPTl9HWklQKQorCQkJCQlzdXBwb3J0c19jb21wcmVzc2lvbiA9IGZhbHNlOworI2VuZGlm CisjaWZuZGVmIEhBVkVfTElCTFo0CisJCQkJaWYgKEFILT5jb21wcmVzc2lvbk1ldGhvZCA9PSBD T01QUkVTU0lPTl9MWjQpCisJCQkJCXN1cHBvcnRzX2NvbXByZXNzaW9uID0gZmFsc2U7CisjZW5k aWYKKwkJCQlpZiAoc3VwcG9ydHNfY29tcHJlc3Npb24gPT0gZmFsc2UpCisJCQkJCWZhdGFsKCJj YW5ub3QgcmVzdG9yZSBmcm9tIGNvbXByZXNzZWQgYXJjaGl2ZSAoY29tcHJlc3Npb24gbm90IHN1 cHBvcnRlZCBpbiB0aGlzIGluc3RhbGxhdGlvbikiKTsKKwkJCX0KIAkJfQogCX0KLSNlbmRpZgog CiAJLyoKIAkgKiBQcmVwYXJlIGluZGV4IGFycmF5cywgc28gd2UgY2FuIGFzc3VtZSB3ZSBoYXZl IHRoZW0gdGhyb3VnaG91dCByZXN0b3JlLgpAQCAtMjAxOSw2ICsyMDMwLDE4IEBAIFJlYWRTdHIo QXJjaGl2ZUhhbmRsZSAqQUgpCiAJcmV0dXJuIGJ1ZjsKIH0KIAorc3RhdGljIGJvb2wKK19maWxl RXhpc3RzSW5EaXJlY3RvcnkoY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmaWxlbmFtZSkK K3sKKwlzdHJ1Y3Qgc3RhdCBzdDsKKwljaGFyCQlidWZbTUFYUEdQQVRIXTsKKworCWlmIChzbnBy aW50ZihidWYsIE1BWFBHUEFUSCwgIiVzLyVzIiwgZGlyLCBmaWxlbmFtZSkgPj0gTUFYUEdQQVRI KQorCQlmYXRhbCgiZGlyZWN0b3J5IG5hbWUgdG9vIGxvbmc6IFwiJXNcIiIsIGRpcik7CisKKwly ZXR1cm4gKHN0YXQoYnVmLCAmc3QpID09IDAgJiYgU19JU1JFRyhzdC5zdF9tb2RlKSk7Cit9CisK IHN0YXRpYyBpbnQKIF9kaXNjb3ZlckFyY2hpdmVGb3JtYXQoQXJjaGl2ZUhhbmRsZSAqQUgpCiB7 CkBAIC0yMDQ2LDMwICsyMDY5LDIxIEBAIF9kaXNjb3ZlckFyY2hpdmVGb3JtYXQoQXJjaGl2ZUhh bmRsZSAqQUgpCiAKIAkJLyoKIAkJICogQ2hlY2sgaWYgdGhlIHNwZWNpZmllZCBhcmNoaXZlIGlz IGEgZGlyZWN0b3J5LiBJZiBzbywgY2hlY2sgaWYKLQkJICogdGhlcmUncyBhICJ0b2MuZGF0IiAo b3IgInRvYy5kYXQuZ3oiKSBmaWxlIGluIGl0LgorCQkgKiB0aGVyZSdzIGEgInRvYy5kYXQiIChv ciAidG9jLmRhdC57Z3osbHo0fSIpIGZpbGUgaW4gaXQuCiAJCSAqLwogCQlpZiAoc3RhdChBSC0+ ZlNwZWMsICZzdCkgPT0gMCAmJiBTX0lTRElSKHN0LnN0X21vZGUpKQogCQl7Ci0JCQljaGFyCQli dWZbTUFYUEdQQVRIXTsKIAotCQkJaWYgKHNucHJpbnRmKGJ1ZiwgTUFYUEdQQVRILCAiJXMvdG9j LmRhdCIsIEFILT5mU3BlYykgPj0gTUFYUEdQQVRIKQotCQkJCWZhdGFsKCJkaXJlY3RvcnkgbmFt ZSB0b28gbG9uZzogXCIlc1wiIiwKLQkJCQkJICBBSC0+ZlNwZWMpOwotCQkJaWYgKHN0YXQoYnVm LCAmc3QpID09IDAgJiYgU19JU1JFRyhzdC5zdF9tb2RlKSkKLQkJCXsKLQkJCQlBSC0+Zm9ybWF0 ID0gYXJjaERpcmVjdG9yeTsKKwkJCUFILT5mb3JtYXQgPSBhcmNoRGlyZWN0b3J5OworCQkJaWYg KF9maWxlRXhpc3RzSW5EaXJlY3RvcnkoQUgtPmZTcGVjLCAidG9jLmRhdCIpKQogCQkJCXJldHVy biBBSC0+Zm9ybWF0OwotCQkJfQotCiAjaWZkZWYgSEFWRV9MSUJaCi0JCQlpZiAoc25wcmludGYo YnVmLCBNQVhQR1BBVEgsICIlcy90b2MuZGF0Lmd6IiwgQUgtPmZTcGVjKSA+PSBNQVhQR1BBVEgp Ci0JCQkJZmF0YWwoImRpcmVjdG9yeSBuYW1lIHRvbyBsb25nOiBcIiVzXCIiLAotCQkJCQkgIEFI LT5mU3BlYyk7Ci0JCQlpZiAoc3RhdChidWYsICZzdCkgPT0gMCAmJiBTX0lTUkVHKHN0LnN0X21v ZGUpKQotCQkJewotCQkJCUFILT5mb3JtYXQgPSBhcmNoRGlyZWN0b3J5OworCQkJaWYgKF9maWxl RXhpc3RzSW5EaXJlY3RvcnkoQUgtPmZTcGVjLCAidG9jLmRhdC5neiIpKQorCQkJCXJldHVybiBB SC0+Zm9ybWF0OworI2VuZGlmCisjaWZkZWYgSEFWRV9MSUJMWjQKKwkJCWlmIChfZmlsZUV4aXN0 c0luRGlyZWN0b3J5KEFILT5mU3BlYywgInRvYy5kYXQubHo0IikpCiAJCQkJcmV0dXJuIEFILT5m b3JtYXQ7Ci0JCQl9CiAjZW5kaWYKIAkJCWZhdGFsKCJkaXJlY3RvcnkgXCIlc1wiIGRvZXMgbm90 IGFwcGVhciB0byBiZSBhIHZhbGlkIGFyY2hpdmUgKFwidG9jLmRhdFwiIGRvZXMgbm90IGV4aXN0 KSIsCiAJCQkJICBBSC0+ZlNwZWMpOwpAQCAtMzY4MSw2ICszNjk1LDcgQEAgV3JpdGVIZWFkKEFy Y2hpdmVIYW5kbGUgKkFIKQogCUFILT5Xcml0ZUJ5dGVQdHIoQUgsIEFILT5vZmZTaXplKTsKIAlB SC0+V3JpdGVCeXRlUHRyKEFILCBBSC0+Zm9ybWF0KTsKIAlXcml0ZUludChBSCwgQUgtPmNvbXBy ZXNzaW9uTGV2ZWwpOworCUFILT5Xcml0ZUJ5dGVQdHIoQUgsIEFILT5jb21wcmVzc2lvbk1ldGhv ZCk7CiAJY3J0bSA9ICpsb2NhbHRpbWUoJkFILT5jcmVhdGVEYXRlKTsKIAlXcml0ZUludChBSCwg Y3J0bS50bV9zZWMpOwogCVdyaXRlSW50KEFILCBjcnRtLnRtX21pbik7CkBAIC0zNzYxLDE0ICsz Nzc2LDIwIEBAIFJlYWRIZWFkKEFyY2hpdmVIYW5kbGUgKkFIKQogCWVsc2UKIAkJQUgtPmNvbXBy ZXNzaW9uTGV2ZWwgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047CiAKLQlpZiAoQUgtPmNvbXByZXNz aW9uTGV2ZWwgIT0gSU5UX01JTikKKwlpZiAoQUgtPnZlcnNpb24gPj0gS19WRVJTXzFfMTUpCisJ CUFILT5jb21wcmVzc2lvbk1ldGhvZCA9IEFILT5SZWFkQnl0ZVB0cihBSCk7CisJZWxzZSBpZiAo QUgtPmNvbXByZXNzaW9uTGV2ZWwgIT0gMCkKKwkJQUgtPmNvbXByZXNzaW9uTWV0aG9kID0gQ09N UFJFU1NJT05fR1pJUDsKKwogI2lmbmRlZiBIQVZFX0xJQloKKwlpZiAoQUgtPmNvbXByZXNzaW9u TWV0aG9kID09IENPTVBSRVNTSU9OX0daSVApCisJewogCQlwZ19sb2dfd2FybmluZygiYXJjaGl2 ZSBpcyBjb21wcmVzc2VkLCBidXQgdGhpcyBpbnN0YWxsYXRpb24gZG9lcyBub3Qgc3VwcG9ydCBj b21wcmVzc2lvbiAtLSBubyBkYXRhIHdpbGwgYmUgYXZhaWxhYmxlIik7Ci0jZWxzZQotCQlBSC0+ Y29tcHJlc3Npb25NZXRob2QgPSBDT01QUkVTU0lPTl9HWklQOworCQlBSC0+Y29tcHJlc3Npb25N ZXRob2QgPSBDT01QUkVTU0lPTl9OT05FOworCQlBSC0+Y29tcHJlc3Npb25MZXZlbCA9IDA7CisJ fQogI2VuZGlmCiAKLQogCWlmIChBSC0+dmVyc2lvbiA+PSBLX1ZFUlNfMV80KQogCXsKIAkJc3Ry dWN0IHRtCWNydG07CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hp dmVyLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKaW5kZXggODM3ZTlk NzNmNS4uMDM3YmZjZjkxMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9h cmNoaXZlci5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaApAQCAt NjUsMTAgKzY1LDExIEBACiAjZGVmaW5lIEtfVkVSU18xXzEzIE1BS0VfQVJDSElWRV9WRVJTSU9O KDEsIDEzLCAwKQkvKiBjaGFuZ2Ugc2VhcmNoX3BhdGgKIAkJCQkJCQkJCQkJCQkgKiBiZWhhdmlv ciAqLwogI2RlZmluZSBLX1ZFUlNfMV8xNCBNQUtFX0FSQ0hJVkVfVkVSU0lPTigxLCAxNCwgMCkJ LyogYWRkIHRhYmxlYW0gKi8KKyNkZWZpbmUgS19WRVJTXzFfMTUgTUFLRV9BUkNISVZFX1ZFUlNJ T04oMSwgMTUsIDApCS8qIGFkZCBjb21wcmVzc2lvbk1ldGhvZCBpbiBoZWFkZXIgKi8KIAogLyog Q3VycmVudCBhcmNoaXZlIHZlcnNpb24gbnVtYmVyICh0aGUgZm9ybWF0IHdlIGNhbiBvdXRwdXQp ICovCiAjZGVmaW5lIEtfVkVSU19NQUpPUiAxCi0jZGVmaW5lIEtfVkVSU19NSU5PUiAxNAorI2Rl ZmluZSBLX1ZFUlNfTUlOT1IgMTUKICNkZWZpbmUgS19WRVJTX1JFViAwCiAjZGVmaW5lIEtfVkVS U19TRUxGIE1BS0VfQVJDSElWRV9WRVJTSU9OKEtfVkVSU19NQUpPUiwgS19WRVJTX01JTk9SLCBL X1ZFUlNfUkVWKQogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA5N2FjMTdlYmZmLi41MzUxYzcxZDJiIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKQEAgLTEwMDIsNyArMTAwMiw3IEBAIGhlbHAoY29uc3QgY2hhciAqcHJvZ25hbWUp CiAJcHJpbnRmKF8oIiAgLWosIC0tam9icz1OVU0gICAgICAgICAgICAgICB1c2UgdGhpcyBtYW55 IHBhcmFsbGVsIGpvYnMgdG8gZHVtcFxuIikpOwogCXByaW50ZihfKCIgIC12LCAtLXZlcmJvc2Ug ICAgICAgICAgICAgICAgdmVyYm9zZSBtb2RlXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0tdmVy c2lvbiAgICAgICAgICAgICAgICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiwgdGhlbiBleGl0 XG4iKSk7Ci0JcHJpbnRmKF8oIiAgLVosIC0tY29tcHJlc3M9W2d6aXAsbm9uZV1bOkxFVkVMXSBv ciBbTEVWRUxdXG4iCisJcHJpbnRmKF8oIiAgLVosIC0tY29tcHJlc3M9W2d6aXAsbHo0LG5vbmVd WzpMRVZFTF0gb3IgW0xFVkVMXVxuIgogCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tcHJlc3Mgb3V0cHV0IHdpdGggZ2l2ZW4gbWV0aG9kIG9yIGxldmVsXG4iKSk7CiAJcHJp bnRmKF8oIiAgLS1sb2NrLXdhaXQtdGltZW91dD1USU1FT1VUICBmYWlsIGFmdGVyIHdhaXRpbmcg VElNRU9VVCBmb3IgYSB0YWJsZSBsb2NrXG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1uby1zeW5jICAg ICAgICAgICAgICAgICAgICBkbyBub3Qgd2FpdCBmb3IgY2hhbmdlcyB0byBiZSB3cml0dGVuIHNh ZmVseSB0byBkaXNrXG4iKSk7CkBAIC0xMjcxLDExICsxMjcxLDEzIEBAIHBhcnNlX2NvbXByZXNz aW9uX21ldGhvZChjb25zdCBjaGFyICptZXRob2QsCiAKIAlpZiAocGdfc3RyY2FzZWNtcChtZXRo b2QsICJnemlwIikgPT0gMCkKIAkJKmNvbXByZXNzaW9uTWV0aG9kID0gQ09NUFJFU1NJT05fR1pJ UDsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKG1ldGhvZCwgImx6NCIpID09IDApCisJCSpjb21w cmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9OX0xaNDsKIAllbHNlIGlmIChwZ19zdHJjYXNlY21w KG1ldGhvZCwgIm5vbmUiKSA9PSAwKQogCQkqY29tcHJlc3Npb25NZXRob2QgPSBDT01QUkVTU0lP Tl9OT05FOwogCWVsc2UKIAl7Ci0JCXBnX2xvZ19lcnJvcigiaW52YWxpZCBjb21wcmVzc2lvbiBt ZXRob2QgXCIlc1wiIChnemlwLCBub25lKSIsIG1ldGhvZCk7CisJCXBnX2xvZ19lcnJvcigiaW52 YWxpZCBjb21wcmVzc2lvbiBtZXRob2QgXCIlc1wiIChnemlwLCBsejQsIG5vbmUpIiwgbWV0aG9k KTsKIAkJcmVzID0gZmFsc2U7CiAJfQogCkBAIC0xMzQ2LDEwICsxMzQ4LDEwIEBAIHBhcnNlX2Nv bXByZXNzaW9uX29wdGlvbihjb25zdCBjaGFyICpvcHQsIENvbXByZXNzaW9uTWV0aG9kICpjb21w cmVzc2lvbk1ldGhvZCwKIAlpZiAoIXJlcykKIAkJcmV0dXJuIHJlczsKIAotCS8qIG9uZSBjYW4g c2V0IGxldmVsIHdoZW4gbWV0aG9kIGlzIGd6aXAgKi8KLQlpZiAoKmNvbXByZXNzaW9uTWV0aG9k ICE9IENPTVBSRVNTSU9OX0daSVAgJiYgKmNvbXByZXNzTGV2ZWwgIT0gSU5UX01JTikKKwkvKiBv bmUgY2FuIHNldCBsZXZlbCB3aGVuIGEgY29tcHJlc3Npb24gbWV0aG9kIGlzIHNldCAqLworCWlm ICgqY29tcHJlc3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05fTk9ORSAmJiAqY29tcHJlc3NMZXZl bCAhPSBJTlRfTUlOKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJjYW4gb25seSBzcGVjaWZ5IC1aLy0t Y29tcHJlc3MgW0xFVkVMXSB3aGVuIG1ldGhvZCBpcyBnemlwIik7CisJCXBnX2xvZ19lcnJvcigi Y2FuIG9ubHkgc3BlY2lmeSAtWi8tLWNvbXByZXNzIFtMRVZFTF0gd2hlbiBtZXRob2QgaXMgc2V0 Iik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90 LzAwMV9iYXNpYy5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCBkN2E1 MmFjMWE4Li4wMDc3Mjg4Mzg4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFz aWMucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC0xMjIsMTIgKzEy MiwxMiBAQCBjb21tYW5kX2ZhaWxzX2xpa2UoCiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdw Z19kdW1wJywgJy0tY29tcHJlc3MnLCAnZ2FyYmFnZScgXSwKLQlxci9cUXBnX2R1bXA6IGVycm9y OiBpbnZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCAiZ2FyYmFnZSIgKGd6aXAsIG5vbmUpXEUvLAor CXFyL1xRcGdfZHVtcDogZXJyb3I6IGludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kICJnYXJiYWdl IiAoZ3ppcCwgbHo0LCBub25lKVxFLywKIAkncGdfZHVtcDogaW52YWxpZCAtLWNvbXByZXNzJyk7 CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wJywgJy0tY29tcHJlc3MnLCAnbm9u ZToxJyBdLAotCXFyL1xRcGdfZHVtcDogZXJyb3I6IGNhbiBvbmx5IHNwZWNpZnkgLVpcLy0tY29t cHJlc3MgW0xFVkVMXSB3aGVuIG1ldGhvZCBpcyBnemlwXEUvLAorCXFyL1xRcGdfZHVtcDogZXJy b3I6IGNhbiBvbmx5IHNwZWNpZnkgLVpcLy0tY29tcHJlc3MgW0xFVkVMXSB3aGVuIG1ldGhvZCBp cyBzZXRcRS8sCiAJJ3BnX2R1bXA6IGNhbiBvbmx5IHNwZWNpZnkgLVovLS1jb21wcmVzcyBbTEVW RUxdIHdoZW4gbWV0aG9kIGlzIGd6aXAnKTsKIAogY29tbWFuZF9mYWlsc19saWtlKApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbAppbmRleCAzYTNkYWQyY2M3Li4zNmJkNzAwNTc2IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbApAQCAtODgsMTEgKzg4LDE0IEBAIG15ICVwZ2R1bXBfcnVucyA9ICgK IAkJCSdwb3N0Z3JlcycsCiAJCV0sCiAJCSMgR2l2ZSBjb3ZlcmFnZSBmb3IgbWFudWFsbHkgY29t cHJlc3NlZCBibG9iLnRvYyBmaWxlcyBkdXJpbmcgcmVzdG9yZS4KLQkJY29tcHJlc3NfY21kID0+ IFsKLQkJCSRFTlZ7J0daSVBfUFJPR1JBTSd9LAotCQkJJy1mJywKLQkJCSIkdGVtcGRpci9jb21w cmVzc2lvbl9nemlwX2RpcmVjdG9yeV9mb3JtYXQvYmxvYnMudG9jIiwKLQkJXSwKKwkJY29tcHJl c3Npb24gPT4geworCQkJbWV0aG9kID0+ICdnemlwJywKKwkJCWNtZCA9PiBbCisJCQkJJEVOVnsn R1pJUF9QUk9HUkFNJ30sCisJCQkJJy1mJywKKwkJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fZ3pp cF9kaXJlY3RvcnlfZm9ybWF0L2Jsb2JzLnRvYyIsCisJCQldLAorCQl9LAogCQlyZXN0b3JlX2Nt ZCA9PiBbCiAJCQkncGdfcmVzdG9yZScsCiAJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXByZXNzaW9u X2d6aXBfZGlyZWN0b3J5X2Zvcm1hdC5zcWwiLApAQCAtMTA4LDEyICsxMTEsMTUgQEAgbXkgJXBn ZHVtcF9ydW5zID0gKAogCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2RpcmVj dG9yeV9mb3JtYXRfcGFyYWxsZWwiLAogCQkJJ3Bvc3RncmVzJywKIAkJXSwKLQkJIyBHaXZlIGNv dmVyYWdlIGZvciBtYW51YWxseSBjb21wcmVzc2VkIGJsb2IudG9jIGZpbGVzIGR1cmluZyByZXN0 b3JlLgotCQljb21wcmVzc19jbWQgPT4gWwotCQkJJEVOVnsnR1pJUF9QUk9HUkFNJ30sCi0JCQkn LWYnLAotCQkJIiR0ZW1wZGlyL2NvbXByZXNzaW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdF9wYXJh bGxlbC9ibG9icy50b2MiLAotCQldLAorCQkjIEdpdmUgY292ZXJhZ2UgZm9yIG1hbnVhbGx5IGNv bXByZXNzZWQgdG9jLmRhdCBmaWxlcyBkdXJpbmcgcmVzdG9yZS4KKwkJY29tcHJlc3Npb24gPT4g eworCQkJbWV0aG9kID0+ICdnemlwJywKKwkJCWNtZCA9PiBbCisJCQkJJEVOVnsnR1pJUF9QUk9H UkFNJ30sCisJCQkJJy1mJywKKwkJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3Rv cnlfZm9ybWF0X3BhcmFsbGVsL3RvYy5kYXQiLAorCQkJXSwKKwkJfSwKIAkJcmVzdG9yZV9jbWQg PT4gWwogCQkJJ3BnX3Jlc3RvcmUnLAogCQkJJy0tam9icz0zJywKQEAgLTEzMSwxMiArMTM3LDk2 IEBAIG15ICVwZ2R1bXBfcnVucyA9ICgKIAkJCSdwb3N0Z3JlcycsCiAJCV0sCiAJCSMgRGVjb21w cmVzcyB0aGUgZ2VuZXJhdGVkIGZpbGUgdG8gcnVuIHRocm91Z2ggdGhlIHRlc3RzCi0JCWNvbXBy ZXNzX2NtZCA9PiBbCi0JCQkkRU5WeydHWklQX1BST0dSQU0nfSwKLQkJCSctZCcsCi0JCQkiJHRl bXBkaXIvY29tcHJlc3Npb25fZ3ppcF9wbGFpbl9mb3JtYXQuc3FsLmd6IiwKKwkJY29tcHJlc3Np b24gPT4geworCQkJbWV0aG9kID0+ICdnemlwJywKKwkJCWNtZCA9PiBbCisJCQkJJEVOVnsnR1pJ UF9QUk9HUkFNJ30sCisJCQkJJy1kJywKKwkJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9w bGFpbl9mb3JtYXQuc3FsLmd6IiwKKwkJCV0sCisJCX0sCisJfSwKKwljb21wcmVzc2lvbl9sejRf Y3VzdG9tX2Zvcm1hdCA9PiB7CisJCXRlc3Rfa2V5ID0+ICdjb21wcmVzc2lvbicsCisJCWR1bXBf Y21kID0+IFsKKwkJCSdwZ19kdW1wJywgJy0tbm8tc3luYycsCisJCQknLS1mb3JtYXQ9Y3VzdG9t JywgJy0tY29tcHJlc3M9bHo0OjknLAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9s ejRfY3VzdG9tX2Zvcm1hdC5kdW1wIiwKKwkJCSdwb3N0Z3JlcycsCisJCV0sCisJCXJlc3RvcmVf Y21kID0+IFsKKwkJCSdwZ19yZXN0b3JlJywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Np b25fbHo0X2N1c3RvbV9mb3JtYXQuc3FsIiwKKwkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9sejRf Y3VzdG9tX2Zvcm1hdC5kdW1wIiwKIAkJXSwKIAl9LAorCWNvbXByZXNzaW9uX2x6NF9kaXJlY3Rv cnlfZm9ybWF0ID0+IHsKKwkJdGVzdF9rZXkgPT4gJ2NvbXByZXNzaW9uJywKKwkJZHVtcF9jbWQg PT4gWworCQkJJ3BnX2R1bXAnLCAnLS1uby1zeW5jJywKKwkJCSctLWZvcm1hdD1kaXJlY3Rvcnkn LCAnLS1jb21wcmVzcz1sejQnLAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9sejRf ZGlyZWN0b3J5X2Zvcm1hdCIsCisJCQkncG9zdGdyZXMnLAorCQldLAorCQkjIEdpdmUgY292ZXJh Z2UgZm9yIG1hbnVhbGx5IGNvbXByZXNzZWQgdG9jLmRhdCBmaWxlcyBkdXJpbmcgcmVzdG9yZS4K KwkJY29tcHJlc3Npb24gPT4geworCQkJbWV0aG9kID0+ICdsejQnLAorCQkJY21kID0+IFsKKwkJ CQkkRU5WeydMWjQnfSwKKwkJCQknLXonLCAnLWYnLCAnLS1ybScsCisJCQkJIiR0ZW1wZGlyL2Nv bXByZXNzaW9uX2x6NF9kaXJlY3RvcnlfZm9ybWF0L3RvYy5kYXQiLAorCQkJCSIkdGVtcGRpci9j b21wcmVzc2lvbl9sejRfZGlyZWN0b3J5X2Zvcm1hdC90b2MuZGF0Lmx6NCIsCisJCQldLAorCQl9 LAorCQlyZXN0b3JlX2NtZCA9PiBbCisJCQkncGdfcmVzdG9yZScsCisJCQkiLS1maWxlPSR0ZW1w ZGlyL2NvbXByZXNzaW9uX2x6NF9kaXJlY3RvcnlfZm9ybWF0LnNxbCIsCisJCQkiJHRlbXBkaXIv Y29tcHJlc3Npb25fbHo0X2RpcmVjdG9yeV9mb3JtYXQiLAorCQldLAorCX0sCisJY29tcHJlc3Np b25fbHo0X2RpcmVjdG9yeV9mb3JtYXRfcGFyYWxsZWwgPT4geworCQl0ZXN0X2tleSA9PiAnY29t cHJlc3Npb24nLAorCQlkdW1wX2NtZCA9PiBbCisJCQkncGdfZHVtcCcsICctLW5vLXN5bmMnLCAn LS1qb2JzPTInLAorCQkJJy0tZm9ybWF0PWRpcmVjdG9yeScsICctLWNvbXByZXNzPWx6NDo5JywK KwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fbHo0X2RpcmVjdG9yeV9mb3JtYXRfcGFy YWxsZWwiLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwkJIyBHaXZlIGNvdmVyYWdlIGZvciBtYW51 YWxseSBjb21wcmVzc2VkIGJsb2IudG9jIGZpbGVzIGR1cmluZyByZXN0b3JlLgorCQljb21wcmVz c2lvbiA9PiB7CisJCQltZXRob2QgPT4gJ2x6NCcsCisJCQljbWQgPT4gWworCQkJCSRFTlZ7J0xa NCd9LAorCQkJCScteicsICctZicsICctLXJtJywKKwkJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25f bHo0X2RpcmVjdG9yeV9mb3JtYXRfcGFyYWxsZWwvYmxvYnMudG9jIiwKKwkJCQkiJHRlbXBkaXIv Y29tcHJlc3Npb25fbHo0X2RpcmVjdG9yeV9mb3JtYXRfcGFyYWxsZWwvYmxvYnMudG9jLmx6NCIs CisJCQldLAorCQl9LAorCQlyZXN0b3JlX2NtZCA9PiBbCisJCQkncGdfcmVzdG9yZScsICctLWpv YnM9MicsCisJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXByZXNzaW9uX2x6NF9kaXJlY3RvcnlfZm9y bWF0X3BhcmFsbGVsLnNxbCIsCisJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fbHo0X2RpcmVjdG9y eV9mb3JtYXRfcGFyYWxsZWwiLAorCQldLAorCX0sCisJIyBDaGVjayB0aGF0IHRoZSBvdXRwdXQg aXMgdmFsaWQgbHo0CisJY29tcHJlc3Npb25fbHo0X3BsYWluX2Zvcm1hdCA9PiB7CisJCXRlc3Rf a2V5ID0+ICdjb21wcmVzc2lvbicsCisJCWR1bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wJywKKwkJ CSctLW5vLXN5bmMnLAorCQkJJy0tZm9ybWF0PXBsYWluJywgJy0tY29tcHJlc3M9bHo0OjEnLAor CQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9sejRfcGxhaW5fZm9ybWF0LnNxbC5sejQi LAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwkJY29tcHJlc3Npb24gPT4geworCQkJbWV0aG9kID0+ ICdsejQnLAorCQkJY21kID0+IFsKKwkJCQkkRU5We0xaNH0sICctZCcsICctZicsCisJCQkJIiR0 ZW1wZGlyL2NvbXByZXNzaW9uX2x6NF9wbGFpbl9mb3JtYXQuc3FsLmx6NCIsCisJCQkJIiR0ZW1w ZGlyL2NvbXByZXNzaW9uX2x6NF9wbGFpbl9mb3JtYXQuc3FsIiwKKwkJCV0sCisJCX0KKwl9LAog CWNvbXByZXNzaW9uX25vbmVfZGlyX2Zvcm1hdCA9PiB7CiAJCXRlc3Rfa2V5ID0+ICdjb21wcmVz c2lvbicsCiAJCWR1bXBfY21kID0+IFsKQEAgLTE0NSwxMCArMjM1LDEzIEBAIG15ICVwZ2R1bXBf cnVucyA9ICgKIAkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fbm9uZV9kaXJfZm9ybWF0 IiwKIAkJCSdwb3N0Z3JlcycsCiAJCV0sCi0JCWdsb2JfbWF0Y2ggPT4gewotCQkJbm9fbWF0Y2gg PT4gIiR0ZW1wZGlyL2NvbXByZXNzaW9uX25vbmVfZGlyX2Zvcm1hdC8qLmRhdC5neiIsCi0JCQlt YXRjaCA9PiAiJHRlbXBkaXIvY29tcHJlc3Npb25fbm9uZV9kaXJfZm9ybWF0LyouZGF0IiwKLQkJ CW1hdGNoX2NvdW50ID0+IDIsICMgdG9jLmRhdCBhbmQgbW9yZQorCQljb21wcmVzc2lvbiA9PiB7 CisJCQltZXRob2QgPT4gJ2d6aXAnLAorCQkJZ2xvYl9tYXRjaCA9PiB7CisJCQkJbm9fbWF0Y2gg PT4gIiR0ZW1wZGlyL2NvbXByZXNzaW9uX25vbmVfZGlyX2Zvcm1hdC8qLmRhdC5neiIsCisJCQkJ bWF0Y2ggPT4gIiR0ZW1wZGlyL2NvbXByZXNzaW9uX25vbmVfZGlyX2Zvcm1hdC8qLmRhdCIsCisJ CQkJbWF0Y2hfY291bnQgPT4gMiwgIyB0b2MuZGF0IGFuZCBtb3JlCisJCQl9LAogCQl9LAogCQly ZXN0b3JlX2NtZCA9PiBbCiAJCQkncGdfcmVzdG9yZScsICctRmQnLApAQCAtMTU2LDYgKzI0OSwy NiBAQCBteSAlcGdkdW1wX3J1bnMgPSAoCiAJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fbm9uZV9k aXJfZm9ybWF0IiwKIAkJXSwKIAl9LAorCWNvbXByZXNzaW9uX2RlZmF1bHRfZGlyX2Zvcm1hdCA9 PiB7CisJCXRlc3Rfa2V5ID0+ICdjb21wcmVzc2lvbicsCisJCWR1bXBfY21kID0+IFsKKwkJCSdw Z19kdW1wJywgJy1GZCcsCisJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXByZXNzaW9uX2RlZmF1bHRf ZGlyX2Zvcm1hdCIsCisJCQkncG9zdGdyZXMnLAorCQldLAorCQljb21wcmVzc2lvbiA9PiB7CisJ CQltZXRob2QgPT4gJ2d6aXAnLAorCQkJZ2xvYl9tYXRjaCA9PiB7CisJCQkJbWF0Y2ggPT4gIiR0 ZW1wZGlyL2NvbXByZXNzaW9uX2RlZmF1bHRfZGlyX2Zvcm1hdC8qLmRhdC5neiIsCisJCQkJbWF0 Y2hfY291bnQgPT4gMSwgIyBkYXRhCisJCQl9LAorCQl9LAorCQlyZXN0b3JlX2NtZCA9PiBbCisJ CQkncGdfcmVzdG9yZScsICctRmQnLAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9k ZWZhdWx0X2Rpcl9mb3JtYXQuc3FsIiwKKwkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9kZWZhdWx0 X2Rpcl9mb3JtYXQiLAorCQldLAorCX0sCiAJY2xlYW4gPT4gewogCQlkdW1wX2NtZCA9PiBbCiAJ CQkncGdfZHVtcCcsCkBAIC00MDQ2LDkgKzQxNTksMTEgQEAgY29tbWFuZF9mYWlsc19saWtlKAog CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBSdW4gYWxsIHJ1 bnMKLW15ICRzdXBwb3J0c19jb21wcmVzc2lvbiA9IGNoZWNrX3BnX2NvbmZpZygiI2RlZmluZSBI QVZFX0xJQlogMSIpOwotbXkgJGNvbXByZXNzX3Byb2dyYW1fZXhpc3RzID0gKHN5c3RlbV9sb2co IiRFTlZ7R1pJUF9QUk9HUkFNfSIsICctaCcsCi0JCQkJCQkJCQkJICAnPicsICcvZGV2L251bGwn KSA9PSAwKTsKK215ICRzdXBwb3J0c19nemlwID0gY2hlY2tfcGdfY29uZmlnKCIjZGVmaW5lIEhB VkVfTElCWiAxIik7CitteSAkZ3ppcF9wcm9ncmFtX2V4aXN0cyA9IChzeXN0ZW1fbG9nKCIkRU5W e0daSVBfUFJPR1JBTX0iLCAnLWgnLAorCQkJCQkJCQkJICAnPicsICcvZGV2L251bGwnKSA9PSAw KTsKK215ICRsejRfcHJvZ3JhbV9leGlzdHMgPSAoc3lzdGVtX2xvZygiJEVOVntMWjR9IiwgJy1o JywKKwkJCQkJCQkJCSAnPicsICcvZGV2L251bGwnKSA9PSAwKTsKIAogZm9yZWFjaCBteSAkcnVu IChzb3J0IGtleXMgJXBnZHVtcF9ydW5zKQogewpAQCAtNDA1OCwyMSArNDE3MywyNyBAQCBmb3Jl YWNoIG15ICRydW4gKHNvcnQga2V5cyAlcGdkdW1wX3J1bnMpCiAJJG5vZGUtPmNvbW1hbmRfb2so XEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e2R1bXBfY21kfSB9LAogCQkiJHJ1bjogcGdfZHVtcCBy dW5zIik7CiAKLQlpZiAoZGVmaW5lZCgkcGdkdW1wX3J1bnN7JHJ1bn0tPntjb21wcmVzc19jbWR9 KSkKKwlpZiAoZGVmaW5lZCgkcGdkdW1wX3J1bnN7JHJ1bn0tPnsnY29tcHJlc3Npb24nfSkpCiAJ ewogCQkjIFNraXAgY29tcHJlc3Npb25fY21kIHRlc3RzIHdoZW4gY29tcHJlc3Npb24gaXMgbm90 IHN1cHBvcnRlZCwKIAkJIyBhcyB0aGUgcmVzdWx0IGlzIHVuY29tcHJlc3NlZCBvciB0aGUgdXRp bGl0eSBwcm9ncmFtIGRvZXMgbm90CiAJCSMgZXhpc3QKLQkJbmV4dCBpZiAhJHN1cHBvcnRzX2Nv bXByZXNzaW9uIHx8ICEkY29tcHJlc3NfcHJvZ3JhbV9leGlzdHM7CisJCW5leHQgaWYgISRzdXBw b3J0c19nemlwICYmICEkc3VwcG9ydHNfbHo0OworCisJCW15ICgkY29tcHJlc3Npb24pID0gJHBn ZHVtcF9ydW5zeyRydW59LT57J2NvbXByZXNzaW9uJ307CiAKLQkJY29tbWFuZF9vayggXEB7ICRw Z2R1bXBfcnVuc3skcnVufS0+e2NvbXByZXNzX2NtZH0gfSwKLQkJCSIkcnVuOiBjb21wcmVzc2lv biBjb21tYW5kcyIpOworCQluZXh0IGlmICR7Y29tcHJlc3Npb259LT57bWV0aG9kfSBlcSAnZ3pp cCcgJiYgKCEkZ3ppcF9wcm9ncmFtX2V4aXN0cyB8fCAhJHN1cHBvcnRzX2d6aXApOworCQluZXh0 IGlmICR7Y29tcHJlc3Npb259LT57bWV0aG9kfSBlcSAnbHo0JyAgJiYgKCEkbHo0X3Byb2dyYW1f ZXhpc3RzIHx8ICEkc3VwcG9ydHNfbHo0KTsKKworCQlpZiAoZGVmaW5lZCgkY29tcHJlc3Npb24t PntjbWR9KSkKKwkJeworCQkJY29tbWFuZF9vayggXEB7ICRjb21wcmVzc2lvbi0+e2NtZH0gfSwg IiRydW46IGNvbXByZXNzaW9uIGNvbW1hbmRzIik7CisJCX0KIAotCQlpZiAoZGVmaW5lZCgkcGdk dW1wX3J1bnN7JHJ1bn0tPntnbG9iX21hdGNofSkpCisJCWlmIChkZWZpbmVkKCRjb21wcmVzc2lv bi0+e2dsb2JfbWF0Y2h9KSkKIAkJewotCQkJbXkgJG1hdGNoID0gJHBnZHVtcF9ydW5zeyRydW59 LT57Z2xvYl9tYXRjaH0tPnttYXRjaH07Ci0JCQlteSAkbWF0Y2hfY291bnQgPSBkZWZpbmVkKCRw Z2R1bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0Y2h9LT57bWF0Y2hfY291bnR9KSA/Ci0JCQkJCQkJ CSRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0Y2h9LT57bWF0Y2hfY291bnR9IDogMTsKKwkJ CW15ICRtYXRjaCA9ICRjb21wcmVzc2lvbi0+e2dsb2JfbWF0Y2h9LT57bWF0Y2h9OworCQkJbXkg JG1hdGNoX2NvdW50ID0gJGNvbXByZXNzaW9uLT57Z2xvYl9tYXRjaH0tPnttYXRjaF9jb3VudH07 CiAJCQlteSBAZ2xvYl9tYXRjaGVkID0gZ2xvYiAkbWF0Y2g7CiAKIAkJCWNtcF9vayhzY2FsYXIo QGdsb2JfbWF0Y2hlZCksICc+PScsICRtYXRjaF9jb3VudCwKQEAgLTQwODEsOSArNDIwMiw5IEBA IGZvcmVhY2ggbXkgJHJ1biAoc29ydCBrZXlzICVwZ2R1bXBfcnVucykKIAkJCWlmIChkZWZpbmVk KCRwZ2R1bXBfcnVuc3skcnVufS0+e2dsb2JfbWF0Y2h9LT57bm9fbWF0Y2h9KSkKIAkJCXsKIAkJ CQlteSAkbm9fbWF0Y2ggPSAkcGdkdW1wX3J1bnN7JHJ1bn0tPntnbG9iX21hdGNofS0+e25vX21h dGNofTsKLQkJCQlteSBAZ2xvYl9tYXRjaGVkID0gZ2xvYiAkbm9fbWF0Y2g7CisJCQkJbXkgQGds b2Jfbm90X21hdGNoZWQgPSBnbG9iICRub19tYXRjaDsKIAotCQkJCWNtcF9vayhzY2FsYXIoQGds b2JfbWF0Y2hlZCksICc9PScsIDAsCisJCQkJY21wX29rKHNjYWxhcihAZ2xvYl9ub3RfbWF0Y2hl ZCksICc9PScsIDAsCiAJCQkJCSJFeHBlY3RlZCBubyBmaWxlKHMpIG1hdGNoaW5nICRub19tYXRj aCIpOwogCQkJfQogCQl9Ci0tIAoyLjMyLjAKCg== --b1_x9AR1SGzaggd2kko0pcFe9r7F3FzUZvfIVMFbWhiKvM--