Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vOtfM-00BpYV-0Z for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Nov 2025 08:17:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vOtfK-009mvL-2Z for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Nov 2025 08:17:19 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vOtfK-009mvB-06 for pgsql-hackers@lists.postgresql.org; Fri, 28 Nov 2025 08:17:18 +0000 Received: from mail-lf1-x12e.google.com ([2a00:1450:4864:20::12e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vOtfG-001sfY-2V for pgsql-hackers@lists.postgresql.org; Fri, 28 Nov 2025 08:17:17 +0000 Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-594270ec7f9so1647636e87.3 for ; Fri, 28 Nov 2025 00:17:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764317832; x=1764922632; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=zfEkSw8Mx4012qlXsvLkH53rx90ab09vEclXduasG3A=; b=JuZ4au33jKlcDX581wPjG0t/kcp4fZfrMNdv3+3ViFtjmB1qcu5BwWGPArufvNedPz odz/IgAJz7OZlijJQUcuIzaALE9AKlVxkb+QM7RnT1RCZVUgmW8rOT4c3XIywhyWuPLn 9FdZD89JeSm0qkUUcGGTSTiWba0tDirW877ThaX5X3fiLzTbSGYUuVeW5OYEw0E5Btf7 qEgNeImdzvOA1kQx1O9vUMUYiwYnr1pm0f0DOISrvZllkdCWnwtWrsA8FHoWUxRtxxn3 whiRTu4Ub97svCt7DXuKHm2r5WvCffePrnTd+HVS3+XqjERbmGi9TwO4WutdZPVs9Lxb KFrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764317832; x=1764922632; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zfEkSw8Mx4012qlXsvLkH53rx90ab09vEclXduasG3A=; b=oWNFY9O7F1G0z87KI/v+0pgp96mRG6S8CeLwC5UuLNBfSwb5KRkBLTNzU91Yx1VBWK it786OoFvROVaQFYq2ounFzggXDZ+fpgomA8S/oV0rVDFs4s355gMljTxB7G9pxh19x8 JSJv7ko4di9XFDRoYyh0hMieacnAaNlc9yFIywWeHSKSEPaK0MlDnLY1VGmYg/zhfLYV bWKnK58iTYbf6K4BZ+oAZ32HFJWXgVqtCXtYJatHIMABesDrLvoLE1hmHL0j7CKTiRX5 kf8eSPlHZftUhB0iwgoZE4mgcwNLscDgYHqMLU+/s8Xt4b62BgAxuVbR/FAKVwHOHRED n0Yg== X-Gm-Message-State: AOJu0YwavyvEBa39DZ7PVS5JWzNAyZHcula7/1l9ohoJS2b0IunzeccA +koBFQYhg3hfeGsxcuvvYGZuS0wPuwKXwjHNfxaXB+U3YEDliVcVB2Ei6hFzkCKOZxrVBYNm3GD VChIyFwlPkEjuNaWPHjQBZCJIVn5B76zqVm1iWRxgcA== X-Gm-Gg: ASbGncvsalIxWxx/jTEuU7FRMn0Y1T6XBwZ/3xnc6ZulmplKIYXJq8343aOUiOD9Fjl lly4nJJKtZrAdH+QQTVvHrWKNw8pa4+pdlQumXVHPPft+QN7sTagKJIHKWF0G2t2EouWHcrHR8T oNKED4MjtCn8F8IPNZvxaBhQFhkZ+3ZXFztmxyOezEOvQMQrJ1FizRgZ2H3Vsj/rNKDm8A0gWie YINrs+gNgWRBvo7QIC1grhanWxEKmGwzwwO3KnN93cZxKbNFDdqGJNIt0SOPP8rJw6WaXo= X-Google-Smtp-Source: AGHT+IGtj16c6SuoK8Xi1ThNS55z0RUgU3hYsjagd+q5fuZnSimHJw6gAQQg/l7z0ie35tUkeDS99vwiCiPDOvy+DVg= X-Received: by 2002:a05:6512:33ce:b0:578:75b3:4326 with SMTP id 2adb3069b0e04-596a3ec076emr10288421e87.29.1764317831703; Fri, 28 Nov 2025 00:17:11 -0800 (PST) MIME-Version: 1.0 From: Chao Li Date: Fri, 28 Nov 2025 16:16:59 +0800 X-Gm-Features: AWmQ_bkFgNT3D6ALRN2OeRrH4CNTpIjJ0Qb7u24Zy0KDBmubtf0Uo_pTv2-D2xM Message-ID: Subject: Cleanup shadows variable warnings, round 1 To: Postgres hackers Content-Type: multipart/mixed; boundary="000000000000a14e9e0644a341d1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a14e9e0644a341d1 Content-Type: multipart/alternative; boundary="000000000000a14e9d0644a341cf" --000000000000a14e9d0644a341cf Content-Type: text/plain; charset="UTF-8" Hi Hackers, While reviewing [1], it makes me recall an experience where I had a patch ready locally, but CommitFest CI failed with a shadows-variable warning. Now I understand that -Wall doesn't by default enable -Wshadows with some compilers like clang. I did a clean build with manually enabling -Wshadow and surprisingly found there are a lot of such warnings in the current code base, roughly ~200 occurrences. As there are too many, I plan to fix them all in 3-4 rounds. For round 1 patch, I'd see any objection, then decide if to proceed more rounds. [1] https://postgr.es/m/CAHut+PsF8R0Bt4J3c92+T2F0mun0rRfK=- GH+iBv2s-O8ahJJw@mail.gmail.com Best regards, Chao Li (Evan) --------------------- HighGo Software Co., Ltd. https://www.highgo.com/ --000000000000a14e9d0644a341cf Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

While reviewing [1], it makes me recall an experience where I had a patch= ready locally, but CommitFest CI failed with a shadows-variable warning. N= ow I understand that -Wall doesn't by default enable -Wshadows with som= e compilers like clang.

I did a clean build with m= anually enabling -Wshadow and surprisingly=C2=A0found there are a lot of su= ch warnings in the current code base, roughly ~200 occurrences.
<= br>
As there are too many, I plan to fix them all in 3-4 rounds. = For round 1 patch, I'd see any objection, then decide if to proceed mor= e rounds.

[1] https://postgr.es/m/CAHut+PsF8R0Bt4J3c92+T2F0mun0rRfK=3D-<= a href=3D"mailto:GH%2BiBv2s-O8ahJJw@mail.gmail.com">GH+iBv2s-O8ahJJw@mail.g= mail.com

Best regards,
Chao Li (Ev= an)
---------------------
HighGo Software Co., Ltd.
https://www.highgo.com/=
--000000000000a14e9d0644a341cf-- --000000000000a14e9e0644a341d1 Content-Type: application/octet-stream; name="v1-0001-Cleanup-shadows-variable-warnings-round-1.patch" Content-Disposition: attachment; filename="v1-0001-Cleanup-shadows-variable-warnings-round-1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miil9ega0 RnJvbSAzOGIzY2E0NjEwZmFlNGRjMjIyZTJhYTEwZGM1ZDA2NTE2MzcyMmY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hhbyBMaSAoRXZhbikiIDxsaWNAaGlnaGdvLmNvbT4KRGF0 ZTogRnJpLCAyOCBOb3YgMjAyNSAxNjowNDo0MCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjFdIENs ZWFudXAgc2hhZG93cyB2YXJpYWJsZSB3YXJuaW5ncywgcm91bmQgMQoKQXV0aG9yOiBDaGFvIExp IDxsaWNAaGlnaGdvLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAg ICAgICAgICAgIHwgIDggKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyAg ICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYyAg ICAgIHwgMTIgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMg ICB8IDc0ICsrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNr dXBfaW5jcmVtZW50YWwuYyB8ICA1ICstCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFw LmMgICAgICAgICAgIHwgIDggKy0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3Mu YyAgICAgICAgIHwgMTggKystLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5j ICAgICAgICAgfCAzMiArKysrLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5j ICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hY21kcy5jICAg ICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdGF0c2NtZHMuYyAgICAgICAg ICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAg fCAyOCArKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAg ICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYyAgICAgICAgICAgICAgICAg fCAxMiArKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jICAgICAgIHwg IDYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYyAgICAgICAgICAgICAgfCAxNiAr Ky0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYyAgICAgICB8ICA0ICst CiBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtY29tbW9uLmMgICAgICAgIHwgMTIgKystLQog c3JjL2JhY2tlbmQvbWFpbi9tYWluLmMgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrLS0KIHNy Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYyAgICAgfCAxMCArLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgfCA0NCArKysrKystLS0tLS0K IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyAgICAgICAgICAgfCAxMCArKy0KIHNy Yy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgfCAgNiArLQogc3JjL2Jh Y2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMuYyAgICAgICB8IDI2ICsrKystLS0tCiBzcmMv YmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMgICAgIHwgIDggKy0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2Fpby9yZWFkX3N0cmVhbS5jICAgICAgIHwgMTQgKystLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvZGF0ZS5jICAgICAgICAgICAgICAgIHwgMTggKystLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9kYXRldGltZS5jICAgICAgICAgICAgfCAyMCArKystLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9mb3JtYXR0aW5nLmMgICAgICAgICAgfCAgOCArLS0KIHNyYy9jb21tb24vY29udHJv bGRhdGFfdXRpbHMuYyAgICAgICAgICAgICAgfCAgOCArLS0KIHNyYy90aW1lem9uZS9wZ3R6LmMg ICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKy0tLQogMzIgZmlsZXMgY2hhbmdlZCwgMjQw IGluc2VydGlvbnMoKyksIDI0MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5k ZXggY2IzMzMxOTIxY2IuLjBhZWUwYzAxM2ZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC02 OTQsMTUgKzY5NCwxNSBAQCBicmluZ2V0Yml0bWFwKEluZGV4U2NhbkRlc2Mgc2NhbiwgVElEQml0 bWFwICp0Ym0pCiAJCSAqLwogCQlpZiAoY29uc2lzdGVudEZuW2tleWF0dG5vIC0gMV0uZm5fb2lk ID09IEludmFsaWRPaWQpCiAJCXsKLQkJCUZtZ3JJbmZvICAgKnRtcDsKKwkJCUZtZ3JJbmZvICAg KnRtcGZpOwogCiAJCQkvKiBGaXJzdCB0aW1lIHdlIHNlZSB0aGlzIGF0dHJpYnV0ZSwgc28gbm8g a2V5L251bGwga2V5cy4gKi8KIAkJCUFzc2VydChua2V5c1trZXlhdHRubyAtIDFdID09IDApOwog CQkJQXNzZXJ0KG5udWxsa2V5c1trZXlhdHRubyAtIDFdID09IDApOwogCi0JCQl0bXAgPSBpbmRl eF9nZXRwcm9jaW5mbyhpZHhSZWwsIGtleWF0dG5vLAotCQkJCQkJCQkJQlJJTl9QUk9DTlVNX0NP TlNJU1RFTlQpOwotCQkJZm1ncl9pbmZvX2NvcHkoJmNvbnNpc3RlbnRGbltrZXlhdHRubyAtIDFd LCB0bXAsCisJCQl0bXBmaSA9IGluZGV4X2dldHByb2NpbmZvKGlkeFJlbCwga2V5YXR0bm8sCisJ CQkJCQkJCQkgIEJSSU5fUFJPQ05VTV9DT05TSVNURU5UKTsKKwkJCWZtZ3JfaW5mb19jb3B5KCZj b25zaXN0ZW50Rm5ba2V5YXR0bm8gLSAxXSwgdG1wZmksCiAJCQkJCQkgICBDdXJyZW50TWVtb3J5 Q29udGV4dCk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dGJ1aWxkLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwppbmRleCBiZTBm ZDViNzUzZC4uN2Q5NzU2NTJhZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3RidWlsZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBA IC0xMTU4LDcgKzExNTgsNyBAQCBnaXN0YnVmZmVyaW5naW5zZXJ0dHVwbGVzKEdJU1RCdWlsZFN0 YXRlICpidWlsZHN0YXRlLCBCdWZmZXIgYnVmZmVyLCBpbnQgbGV2ZWwsCiAJCWkgPSAwOwogCQlm b3JlYWNoKGxjLCBzcGxpdGluZm8pCiAJCXsKLQkJCUdJU1RQYWdlU3BsaXRJbmZvICpzcGxpdGlu Zm8gPSBsZmlyc3QobGMpOworCQkJR0lTVFBhZ2VTcGxpdEluZm8gKnNpID0gbGZpcnN0KGxjKTsK IAogCQkJLyoKIAkJCSAqIFJlbWVtYmVyIHRoZSBwYXJlbnQgb2YgZWFjaCBuZXcgY2hpbGQgcGFn ZSBpbiBvdXIgcGFyZW50IG1hcC4KQEAgLTExNjksNyArMTE2OSw3IEBAIGdpc3RidWZmZXJpbmdp bnNlcnR0dXBsZXMoR0lTVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIEJ1ZmZlciBidWZmZXIsIGlu dCBsZXZlbCwKIAkJCSAqLwogCQkJaWYgKGxldmVsID4gMCkKIAkJCQlnaXN0TWVtb3JpemVQYXJl bnQoYnVpbGRzdGF0ZSwKLQkJCQkJCQkJICAgQnVmZmVyR2V0QmxvY2tOdW1iZXIoc3BsaXRpbmZv LT5idWYpLAorCQkJCQkJCQkgICBCdWZmZXJHZXRCbG9ja051bWJlcihzaS0+YnVmKSwKIAkJCQkJ CQkJICAgQnVmZmVyR2V0QmxvY2tOdW1iZXIocGFyZW50QnVmZmVyKSk7CiAKIAkJCS8qCkBAIC0x MTc5LDE0ICsxMTc5LDE0IEBAIGdpc3RidWZmZXJpbmdpbnNlcnR0dXBsZXMoR0lTVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIEJ1ZmZlciBidWZmZXIsIGludCBsZXZlbCwKIAkJCSAqIGhhcm0pLgog CQkJICovCiAJCQlpZiAobGV2ZWwgPiAxKQotCQkJCWdpc3RNZW1vcml6ZUFsbERvd25saW5rcyhi dWlsZHN0YXRlLCBzcGxpdGluZm8tPmJ1Zik7CisJCQkJZ2lzdE1lbW9yaXplQWxsRG93bmxpbmtz KGJ1aWxkc3RhdGUsIHNpLT5idWYpOwogCiAJCQkvKgogCQkJICogU2luY2UgdGhlcmUncyBubyBj b25jdXJyZW50IGFjY2Vzcywgd2UgY2FuIHJlbGVhc2UgdGhlIGxvd2VyCiAJCQkgKiBsZXZlbCBi dWZmZXJzIGltbWVkaWF0ZWx5LiBUaGlzIGluY2x1ZGVzIHRoZSBvcmlnaW5hbCBwYWdlLgogCQkJ ICovCi0JCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHNwbGl0aW5mby0+YnVmKTsKLQkJCWRvd25saW5r c1tpKytdID0gc3BsaXRpbmZvLT5kb3dubGluazsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoc2kt PmJ1Zik7CisJCQlkb3dubGlua3NbaSsrXSA9IHNpLT5kb3dubGluazsKIAkJfQogCiAJCS8qIElu c2VydCB0aGVtIGludG8gcGFyZW50LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3JtZ3JkZXNjL3hsb2dkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGxvZ2Rl c2MuYwppbmRleCBjZDZjMmEyZjY1MC4uNjg5ZTA1MTc0ZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9ybWdyZGVzYy94bG9nZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy94bG9nZGVzYy5jCkBAIC0zNCwxNyArMzQsMTcgQEAgY29uc3Qgc3RydWN0IGNvbmZp Z19lbnVtX2VudHJ5IHdhbF9sZXZlbF9vcHRpb25zW10gPSB7CiB9OwogCiAvKgotICogRmluZCBh IHN0cmluZyByZXByZXNlbnRhdGlvbiBmb3Igd2FsX2xldmVsCisgKiBGaW5kIGEgc3RyaW5nIHJl cHJlc2VudGF0aW9uIGZvciB3YWxsZXZlbAogICovCiBzdGF0aWMgY29uc3QgY2hhciAqCi1nZXRf d2FsX2xldmVsX3N0cmluZyhpbnQgd2FsX2xldmVsKQorZ2V0X3dhbF9sZXZlbF9zdHJpbmcoaW50 IHdhbGxldmVsKQogewogCWNvbnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSAqZW50cnk7CiAJ Y29uc3QgY2hhciAqd2FsX2xldmVsX3N0ciA9ICI/IjsKIAogCWZvciAoZW50cnkgPSB3YWxfbGV2 ZWxfb3B0aW9uczsgZW50cnktPm5hbWU7IGVudHJ5KyspCiAJewotCQlpZiAoZW50cnktPnZhbCA9 PSB3YWxfbGV2ZWwpCisJCWlmIChlbnRyeS0+dmFsID09IHdhbGxldmVsKQogCQl7CiAJCQl3YWxf bGV2ZWxfc3RyID0gZW50cnktPm5hbWU7CiAJCQlicmVhazsKQEAgLTE2MiwxMCArMTYyLDEwIEBA IHhsb2dfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJfQog CWVsc2UgaWYgKGluZm8gPT0gWExPR19DSEVDS1BPSU5UX1JFRE8pCiAJewotCQlpbnQJCQl3YWxf bGV2ZWw7CisJCWludAkJCXdhbGxldmVsOwogCi0JCW1lbWNweSgmd2FsX2xldmVsLCByZWMsIHNp emVvZihpbnQpKTsKLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJ3YWxfbGV2ZWwgJXMiLCBnZXRf d2FsX2xldmVsX3N0cmluZyh3YWxfbGV2ZWwpKTsKKwkJbWVtY3B5KCZ3YWxsZXZlbCwgcmVjLCBz aXplb2YoaW50KSk7CisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAid2FsX2xldmVsICVzIiwgZ2V0 X3dhbF9sZXZlbF9zdHJpbmcod2FsbGV2ZWwpKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggMjFiOGYxNzliYTAuLjkzZGI5ZjE5NTkwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtMTIwOCw3ICsx MjA4LDcgQEAgdmFsaWRhdGVSZWNvdmVyeVBhcmFtZXRlcnModm9pZCkKICAqIFJldHVybnMgdHJ1 ZSBpZiBhIGJhY2t1cF9sYWJlbCB3YXMgZm91bmQgKGFuZCBmaWxscyB0aGUgY2hlY2twb2ludAog ICogbG9jYXRpb24gYW5kIFRMSSBpbnRvICpjaGVja1BvaW50TG9jIGFuZCAqYmFja3VwTGFiZWxU TEksIHJlc3BlY3RpdmVseSk7CiAgKiByZXR1cm5zIGZhbHNlIGlmIG5vdC4gSWYgdGhpcyBiYWNr dXBfbGFiZWwgY2FtZSBmcm9tIGEgc3RyZWFtZWQgYmFja3VwLAotICogKmJhY2t1cEVuZFJlcXVp cmVkIGlzIHNldCB0byB0cnVlLiBJZiB0aGlzIGJhY2t1cF9sYWJlbCB3YXMgY3JlYXRlZCBkdXJp bmcKKyAqICpiYWNrdXBFbmROZWVkZWQgaXMgc2V0IHRvIHRydWUuIElmIHRoaXMgYmFja3VwX2xh YmVsIHdhcyBjcmVhdGVkIGR1cmluZwogICogcmVjb3ZlcnksICpiYWNrdXBGcm9tU3RhbmRieSBp cyBzZXQgdG8gdHJ1ZS4KICAqCiAgKiBBbHNvIHNldHMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgUmVk b1N0YXJ0TFNOIGFuZCBSZWRvU3RhcnRUTEkgd2l0aCB0aGUgTFNOCkBAIC0xMjE2LDcgKzEyMTYs NyBAQCB2YWxpZGF0ZVJlY292ZXJ5UGFyYW1ldGVycyh2b2lkKQogICovCiBzdGF0aWMgYm9vbAog cmVhZF9iYWNrdXBfbGFiZWwoWExvZ1JlY1B0ciAqY2hlY2tQb2ludExvYywgVGltZUxpbmVJRCAq YmFja3VwTGFiZWxUTEksCi0JCQkJICBib29sICpiYWNrdXBFbmRSZXF1aXJlZCwgYm9vbCAqYmFj a3VwRnJvbVN0YW5kYnkpCisJCQkJICBib29sICpiYWNrdXBFbmROZWVkZWQsIGJvb2wgKmJhY2t1 cEZyb21TdGFuZGJ5KQogewogCWNoYXIJCXN0YXJ0eGxvZ2ZpbGVuYW1lW01BWEZOQU1FTEVOXTsK IAlUaW1lTGluZUlECXRsaV9mcm9tX3dhbHNlZywKQEAgLTEyMzMsNyArMTIzMyw3IEBAIHJlYWRf YmFja3VwX2xhYmVsKFhMb2dSZWNQdHIgKmNoZWNrUG9pbnRMb2MsIFRpbWVMaW5lSUQgKmJhY2t1 cExhYmVsVExJLAogCS8qIHN1cHByZXNzIHBvc3NpYmxlIHVuaW5pdGlhbGl6ZWQtdmFyaWFibGUg d2FybmluZ3MgKi8KIAkqY2hlY2tQb2ludExvYyA9IEludmFsaWRYTG9nUmVjUHRyOwogCSpiYWNr dXBMYWJlbFRMSSA9IDA7Ci0JKmJhY2t1cEVuZFJlcXVpcmVkID0gZmFsc2U7CisJKmJhY2t1cEVu ZE5lZWRlZCA9IGZhbHNlOwogCSpiYWNrdXBGcm9tU3RhbmRieSA9IGZhbHNlOwogCiAJLyoKQEAg LTEyNzcsMTMgKzEyNzcsMTMgQEAgcmVhZF9iYWNrdXBfbGFiZWwoWExvZ1JlY1B0ciAqY2hlY2tQ b2ludExvYywgVGltZUxpbmVJRCAqYmFja3VwTGFiZWxUTEksCiAJICogb3RoZXIgb3B0aW9uIHRv ZGF5IGJlaW5nIGZyb20gcGdfcmV3aW5kKS4gIElmIHRoaXMgd2FzIGEgc3RyZWFtZWQKIAkgKiBi YWNrdXAgdGhlbiB3ZSBrbm93IHRoYXQgd2UgbmVlZCB0byBwbGF5IHRocm91Z2ggdW50aWwgd2Ug Z2V0IHRvIHRoZQogCSAqIGVuZCBvZiB0aGUgV0FMIHdoaWNoIHdhcyBnZW5lcmF0ZWQgZHVyaW5n IHRoZSBiYWNrdXAgKGF0IHdoaWNoIHBvaW50IHdlCi0JICogd2lsbCBoYXZlIHJlYWNoZWQgY29u c2lzdGVuY3kgYW5kIGJhY2t1cEVuZFJlcXVpcmVkIHdpbGwgYmUgcmVzZXQgdG8gYmUKKwkgKiB3 aWxsIGhhdmUgcmVhY2hlZCBjb25zaXN0ZW5jeSBhbmQgYmFja3VwRW5kTmVlZGVkIHdpbGwgYmUg cmVzZXQgdG8gYmUKIAkgKiBmYWxzZSkuCiAJICovCiAJaWYgKGZzY2FuZihsZnAsICJCQUNLVVAg TUVUSE9EOiAlMTlzXG4iLCBiYWNrdXB0eXBlKSA9PSAxKQogCXsKIAkJaWYgKHN0cmNtcChiYWNr dXB0eXBlLCAic3RyZWFtZWQiKSA9PSAwKQotCQkJKmJhY2t1cEVuZFJlcXVpcmVkID0gdHJ1ZTsK KwkJCSpiYWNrdXBFbmROZWVkZWQgPSB0cnVlOwogCX0KIAogCS8qCkBAIC0xOTI3LDE0ICsxOTI3 LDE0IEBAIFBlcmZvcm1XYWxSZWNvdmVyeSh2b2lkKQogICogU3Vicm91dGluZSBvZiBQZXJmb3Jt V2FsUmVjb3ZlcnksIHRvIGFwcGx5IG9uZSBXQUwgcmVjb3JkLgogICovCiBzdGF0aWMgdm9pZAot QXBwbHlXYWxSZWNvcmQoWExvZ1JlYWRlclN0YXRlICp4bG9ncmVhZGVyLCBYTG9nUmVjb3JkICpy ZWNvcmQsIFRpbWVMaW5lSUQgKnJlcGxheVRMSSkKK0FwcGx5V2FsUmVjb3JkKFhMb2dSZWFkZXJT dGF0ZSAqeGxvZ1JlYWRlciwgWExvZ1JlY29yZCAqcmVjb3JkLCBUaW1lTGluZUlEICpyZXBsYXlU TEkpCiB7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CiAJYm9vbAkJc3dpdGNo ZWRUTEkgPSBmYWxzZTsKIAogCS8qIFNldHVwIGVycm9yIHRyYWNlYmFjayBzdXBwb3J0IGZvciBl cmVwb3J0KCkgKi8KIAllcnJjYWxsYmFjay5jYWxsYmFjayA9IHJtX3JlZG9fZXJyb3JfY2FsbGJh Y2s7Ci0JZXJyY2FsbGJhY2suYXJnID0geGxvZ3JlYWRlcjsKKwllcnJjYWxsYmFjay5hcmcgPSB4 bG9nUmVhZGVyOwogCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsK IAllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOwogCkBAIC0xOTYxLDcgKzE5NjEs NyBAQCBBcHBseVdhbFJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNv cmQgKnJlY29yZCwgVGltZUxpbmVJRCAqcmVwbAogCQl7CiAJCQlDaGVja1BvaW50CWNoZWNrUG9p bnQ7CiAKLQkJCW1lbWNweSgmY2hlY2tQb2ludCwgWExvZ1JlY0dldERhdGEoeGxvZ3JlYWRlciks IHNpemVvZihDaGVja1BvaW50KSk7CisJCQltZW1jcHkoJmNoZWNrUG9pbnQsIFhMb2dSZWNHZXRE YXRhKHhsb2dSZWFkZXIpLCBzaXplb2YoQ2hlY2tQb2ludCkpOwogCQkJbmV3UmVwbGF5VExJID0g Y2hlY2tQb2ludC5UaGlzVGltZUxpbmVJRDsKIAkJCXByZXZSZXBsYXlUTEkgPSBjaGVja1BvaW50 LlByZXZUaW1lTGluZUlEOwogCQl9CkBAIC0xOTY5LDcgKzE5NjksNyBAQCBBcHBseVdhbFJlY29y ZChYTG9nUmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNvcmQgKnJlY29yZCwgVGltZUxp bmVJRCAqcmVwbAogCQl7CiAJCQl4bF9lbmRfb2ZfcmVjb3ZlcnkgeGxyZWM7CiAKLQkJCW1lbWNw eSgmeGxyZWMsIFhMb2dSZWNHZXREYXRhKHhsb2dyZWFkZXIpLCBzaXplb2YoeGxfZW5kX29mX3Jl Y292ZXJ5KSk7CisJCQltZW1jcHkoJnhscmVjLCBYTG9nUmVjR2V0RGF0YSh4bG9nUmVhZGVyKSwg c2l6ZW9mKHhsX2VuZF9vZl9yZWNvdmVyeSkpOwogCQkJbmV3UmVwbGF5VExJID0geGxyZWMuVGhp c1RpbWVMaW5lSUQ7CiAJCQlwcmV2UmVwbGF5VExJID0geGxyZWMuUHJldlRpbWVMaW5lSUQ7CiAJ CX0KQEAgLTE5NzcsNyArMTk3Nyw3IEBAIEFwcGx5V2FsUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAq eGxvZ3JlYWRlciwgWExvZ1JlY29yZCAqcmVjb3JkLCBUaW1lTGluZUlEICpyZXBsCiAJCWlmIChu ZXdSZXBsYXlUTEkgIT0gKnJlcGxheVRMSSkKIAkJewogCQkJLyogQ2hlY2sgdGhhdCBpdCdzIE9L IHRvIHN3aXRjaCB0byB0aGlzIFRMSSAqLwotCQkJY2hlY2tUaW1lTGluZVN3aXRjaCh4bG9ncmVh ZGVyLT5FbmRSZWNQdHIsCisJCQljaGVja1RpbWVMaW5lU3dpdGNoKHhsb2dSZWFkZXItPkVuZFJl Y1B0ciwKIAkJCQkJCQkJbmV3UmVwbGF5VExJLCBwcmV2UmVwbGF5VExJLCAqcmVwbGF5VExJKTsK IAogCQkJLyogRm9sbG93aW5nIFdBTCByZWNvcmRzIHNob3VsZCBiZSBydW4gd2l0aCBuZXcgVExJ ICovCkBAIC0zMTUyLDE5ICszMTUyLDE5IEBAIENvbmZpcm1SZWNvdmVyeVBhdXNlZCh2b2lkKQog ICogcmVjb3JkIGlzIGF2YWlsYWJsZS4KICAqLwogc3RhdGljIFhMb2dSZWNvcmQgKgotUmVhZFJl Y29yZChYTG9nUHJlZmV0Y2hlciAqeGxvZ3ByZWZldGNoZXIsIGludCBlbW9kZSwKK1JlYWRSZWNv cmQoWExvZ1ByZWZldGNoZXIgKnhsb2dQcmVmZXRjaGVyLCBpbnQgZW1vZGUsCiAJCSAgIGJvb2wg ZmV0Y2hpbmdfY2twdCwgVGltZUxpbmVJRCByZXBsYXlUTEkpCiB7CiAJWExvZ1JlY29yZCAqcmVj b3JkOwotCVhMb2dSZWFkZXJTdGF0ZSAqeGxvZ3JlYWRlciA9IFhMb2dQcmVmZXRjaGVyR2V0UmVh ZGVyKHhsb2dwcmVmZXRjaGVyKTsKLQlYTG9nUGFnZVJlYWRQcml2YXRlICpwcml2YXRlID0gKFhM b2dQYWdlUmVhZFByaXZhdGUgKikgeGxvZ3JlYWRlci0+cHJpdmF0ZV9kYXRhOworCVhMb2dSZWFk ZXJTdGF0ZSAqeGxvZ1JlYWRlciA9IFhMb2dQcmVmZXRjaGVyR2V0UmVhZGVyKHhsb2dQcmVmZXRj aGVyKTsKKwlYTG9nUGFnZVJlYWRQcml2YXRlICpwcml2YXRlID0gKFhMb2dQYWdlUmVhZFByaXZh dGUgKikgeGxvZ1JlYWRlci0+cHJpdmF0ZV9kYXRhOwogCiAJQXNzZXJ0KEFtU3RhcnR1cFByb2Nl c3MoKSB8fCAhSXNVbmRlclBvc3RtYXN0ZXIpOwogCiAJLyogUGFzcyB0aHJvdWdoIHBhcmFtZXRl cnMgdG8gWExvZ1BhZ2VSZWFkICovCiAJcHJpdmF0ZS0+ZmV0Y2hpbmdfY2twdCA9IGZldGNoaW5n X2NrcHQ7CiAJcHJpdmF0ZS0+ZW1vZGUgPSBlbW9kZTsKLQlwcml2YXRlLT5yYW5kQWNjZXNzID0g IVhMb2dSZWNQdHJJc1ZhbGlkKHhsb2dyZWFkZXItPlJlYWRSZWNQdHIpOworCXByaXZhdGUtPnJh bmRBY2Nlc3MgPSAhWExvZ1JlY1B0cklzVmFsaWQoeGxvZ1JlYWRlci0+UmVhZFJlY1B0cik7CiAJ cHJpdmF0ZS0+cmVwbGF5VExJID0gcmVwbGF5VExJOwogCiAJLyogVGhpcyBpcyB0aGUgZmlyc3Qg YXR0ZW1wdCB0byByZWFkIHRoaXMgcGFnZS4gKi8KQEAgLTMxNzQsNyArMzE3NCw3IEBAIFJlYWRS ZWNvcmQoWExvZ1ByZWZldGNoZXIgKnhsb2dwcmVmZXRjaGVyLCBpbnQgZW1vZGUsCiAJewogCQlj aGFyCSAgICplcnJvcm1zZzsKIAotCQlyZWNvcmQgPSBYTG9nUHJlZmV0Y2hlclJlYWRSZWNvcmQo eGxvZ3ByZWZldGNoZXIsICZlcnJvcm1zZyk7CisJCXJlY29yZCA9IFhMb2dQcmVmZXRjaGVyUmVh ZFJlY29yZCh4bG9nUHJlZmV0Y2hlciwgJmVycm9ybXNnKTsKIAkJaWYgKHJlY29yZCA9PSBOVUxM KQogCQl7CiAJCQkvKgpAQCAtMzE5MCwxMCArMzE5MCwxMCBAQCBSZWFkUmVjb3JkKFhMb2dQcmVm ZXRjaGVyICp4bG9ncHJlZmV0Y2hlciwgaW50IGVtb2RlLAogCQkJICogb3ZlcndyaXRlIGNvbnRy ZWNvcmQgaW4gdGhlIHdyb25nIHBsYWNlLCBicmVha2luZyBldmVyeXRoaW5nLgogCQkJICovCiAJ CQlpZiAoIUFyY2hpdmVSZWNvdmVyeVJlcXVlc3RlZCAmJgotCQkJCVhMb2dSZWNQdHJJc1ZhbGlk KHhsb2dyZWFkZXItPmFib3J0ZWRSZWNQdHIpKQorCQkJCVhMb2dSZWNQdHJJc1ZhbGlkKHhsb2dS ZWFkZXItPmFib3J0ZWRSZWNQdHIpKQogCQkJewotCQkJCWFib3J0ZWRSZWNQdHIgPSB4bG9ncmVh ZGVyLT5hYm9ydGVkUmVjUHRyOwotCQkJCW1pc3NpbmdDb250cmVjUHRyID0geGxvZ3JlYWRlci0+ bWlzc2luZ0NvbnRyZWNQdHI7CisJCQkJYWJvcnRlZFJlY1B0ciA9IHhsb2dSZWFkZXItPmFib3J0 ZWRSZWNQdHI7CisJCQkJbWlzc2luZ0NvbnRyZWNQdHIgPSB4bG9nUmVhZGVyLT5taXNzaW5nQ29u dHJlY1B0cjsKIAkJCX0KIAogCQkJaWYgKHJlYWRGaWxlID49IDApCkBAIC0zMjA5LDI5ICszMjA5 LDI5IEBAIFJlYWRSZWNvcmQoWExvZ1ByZWZldGNoZXIgKnhsb2dwcmVmZXRjaGVyLCBpbnQgZW1v ZGUsCiAJCQkgKiBzaG91bGRuJ3QgbG9vcCBhbnltb3JlIGluIHRoYXQgY2FzZS4KIAkJCSAqLwog CQkJaWYgKGVycm9ybXNnKQotCQkJCWVyZXBvcnQoZW1vZGVfZm9yX2NvcnJ1cHRfcmVjb3JkKGVt b2RlLCB4bG9ncmVhZGVyLT5FbmRSZWNQdHIpLAorCQkJCWVyZXBvcnQoZW1vZGVfZm9yX2NvcnJ1 cHRfcmVjb3JkKGVtb2RlLCB4bG9nUmVhZGVyLT5FbmRSZWNQdHIpLAogCQkJCQkJKGVycm1zZ19p bnRlcm5hbCgiJXMiLCBlcnJvcm1zZykgLyogYWxyZWFkeSB0cmFuc2xhdGVkICovICkpOwogCQl9 CiAKIAkJLyoKIAkJICogQ2hlY2sgcGFnZSBUTEkgaXMgb25lIG9mIHRoZSBleHBlY3RlZCB2YWx1 ZXMuCiAJCSAqLwotCQllbHNlIGlmICghdGxpSW5IaXN0b3J5KHhsb2dyZWFkZXItPmxhdGVzdFBh Z2VUTEksIGV4cGVjdGVkVExFcykpCisJCWVsc2UgaWYgKCF0bGlJbkhpc3RvcnkoeGxvZ1JlYWRl ci0+bGF0ZXN0UGFnZVRMSSwgZXhwZWN0ZWRUTEVzKSkKIAkJewogCQkJY2hhcgkJZm5hbWVbTUFY Rk5BTUVMRU5dOwogCQkJWExvZ1NlZ05vCXNlZ25vOwogCQkJaW50MzIJCW9mZnNldDsKIAotCQkJ WExCeXRlVG9TZWcoeGxvZ3JlYWRlci0+bGF0ZXN0UGFnZVB0ciwgc2Vnbm8sIHdhbF9zZWdtZW50 X3NpemUpOwotCQkJb2Zmc2V0ID0gWExvZ1NlZ21lbnRPZmZzZXQoeGxvZ3JlYWRlci0+bGF0ZXN0 UGFnZVB0ciwKKwkJCVhMQnl0ZVRvU2VnKHhsb2dSZWFkZXItPmxhdGVzdFBhZ2VQdHIsIHNlZ25v LCB3YWxfc2VnbWVudF9zaXplKTsKKwkJCW9mZnNldCA9IFhMb2dTZWdtZW50T2Zmc2V0KHhsb2dS ZWFkZXItPmxhdGVzdFBhZ2VQdHIsCiAJCQkJCQkJCQkgICB3YWxfc2VnbWVudF9zaXplKTsKLQkJ CVhMb2dGaWxlTmFtZShmbmFtZSwgeGxvZ3JlYWRlci0+c2VnLndzX3RsaSwgc2Vnbm8sCisJCQlY TG9nRmlsZU5hbWUoZm5hbWUsIHhsb2dSZWFkZXItPnNlZy53c190bGksIHNlZ25vLAogCQkJCQkJ IHdhbF9zZWdtZW50X3NpemUpOwotCQkJZXJlcG9ydChlbW9kZV9mb3JfY29ycnVwdF9yZWNvcmQo ZW1vZGUsIHhsb2dyZWFkZXItPkVuZFJlY1B0ciksCisJCQllcmVwb3J0KGVtb2RlX2Zvcl9jb3Jy dXB0X3JlY29yZChlbW9kZSwgeGxvZ1JlYWRlci0+RW5kUmVjUHRyKSwKIAkJCQkJZXJybXNnKCJ1 bmV4cGVjdGVkIHRpbWVsaW5lIElEICV1IGluIFdBTCBzZWdtZW50ICVzLCBMU04gJVgvJTA4WCwg b2Zmc2V0ICV1IiwKLQkJCQkJCSAgIHhsb2dyZWFkZXItPmxhdGVzdFBhZ2VUTEksCisJCQkJCQkg ICB4bG9nUmVhZGVyLT5sYXRlc3RQYWdlVExJLAogCQkJCQkJICAgZm5hbWUsCi0JCQkJCQkgICBM U05fRk9STUFUX0FSR1MoeGxvZ3JlYWRlci0+bGF0ZXN0UGFnZVB0ciksCisJCQkJCQkgICBMU05f Rk9STUFUX0FSR1MoeGxvZ1JlYWRlci0+bGF0ZXN0UGFnZVB0ciksCiAJCQkJCQkgICBvZmZzZXQp KTsKIAkJCXJlY29yZCA9IE5VTEw7CiAJCX0KQEAgLTMyNjcsOCArMzI2Nyw4IEBAIFJlYWRSZWNv cmQoWExvZ1ByZWZldGNoZXIgKnhsb2dwcmVmZXRjaGVyLCBpbnQgZW1vZGUsCiAJCQkJaWYgKFN0 YW5kYnlNb2RlUmVxdWVzdGVkKQogCQkJCQlFbmFibGVTdGFuZGJ5TW9kZSgpOwogCi0JCQkJU3dp dGNoSW50b0FyY2hpdmVSZWNvdmVyeSh4bG9ncmVhZGVyLT5FbmRSZWNQdHIsIHJlcGxheVRMSSk7 Ci0JCQkJbWluUmVjb3ZlcnlQb2ludCA9IHhsb2dyZWFkZXItPkVuZFJlY1B0cjsKKwkJCQlTd2l0 Y2hJbnRvQXJjaGl2ZVJlY292ZXJ5KHhsb2dSZWFkZXItPkVuZFJlY1B0ciwgcmVwbGF5VExJKTsK KwkJCQltaW5SZWNvdmVyeVBvaW50ID0geGxvZ1JlYWRlci0+RW5kUmVjUHRyOwogCQkJCW1pblJl Y292ZXJ5UG9pbnRUTEkgPSByZXBsYXlUTEk7CiAKIAkJCQlDaGVja1JlY292ZXJ5Q29uc2lzdGVu Y3koKTsKQEAgLTMzMjEsMTEgKzMzMjEsMTEgQEAgUmVhZFJlY29yZChYTG9nUHJlZmV0Y2hlciAq eGxvZ3ByZWZldGNoZXIsIGludCBlbW9kZSwKICAqIHNsZWVwIGFuZCByZXRyeS4KICAqLwogc3Rh dGljIGludAotWExvZ1BhZ2VSZWFkKFhMb2dSZWFkZXJTdGF0ZSAqeGxvZ3JlYWRlciwgWExvZ1Jl Y1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAorWExvZ1BhZ2VSZWFkKFhMb2dSZWFkZXJT dGF0ZSAqeGxvZ1JlYWRlciwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAog CQkJIFhMb2dSZWNQdHIgdGFyZ2V0UmVjUHRyLCBjaGFyICpyZWFkQnVmKQogewogCVhMb2dQYWdl UmVhZFByaXZhdGUgKnByaXZhdGUgPQotCQkoWExvZ1BhZ2VSZWFkUHJpdmF0ZSAqKSB4bG9ncmVh ZGVyLT5wcml2YXRlX2RhdGE7CisJCShYTG9nUGFnZVJlYWRQcml2YXRlICopIHhsb2dSZWFkZXIt PnByaXZhdGVfZGF0YTsKIAlpbnQJCQllbW9kZSA9IHByaXZhdGUtPmVtb2RlOwogCXVpbnQzMgkJ dGFyZ2V0UGFnZU9mZjsKIAlYTG9nU2VnTm8JdGFyZ2V0U2VnTm8gUEdfVVNFRF9GT1JfQVNTRVJU U19PTkxZOwpAQCAtMzM3Miw3ICszMzcyLDcgQEAgcmV0cnk6CiAJCSBmbHVzaGVkVXB0byA8IHRh cmdldFBhZ2VQdHIgKyByZXFMZW4pKQogCXsKIAkJaWYgKHJlYWRGaWxlID49IDAgJiYKLQkJCXhs b2dyZWFkZXItPm5vbmJsb2NraW5nICYmCisJCQl4bG9nUmVhZGVyLT5ub25ibG9ja2luZyAmJgog CQkJcmVhZFNvdXJjZSA9PSBYTE9HX0ZST01fU1RSRUFNICYmCiAJCQlmbHVzaGVkVXB0byA8IHRh cmdldFBhZ2VQdHIgKyByZXFMZW4pCiAJCQlyZXR1cm4gWExSRUFEX1dPVUxEQkxPQ0s7CkBAIC0z MzgyLDggKzMzODIsOCBAQCByZXRyeToKIAkJCQkJCQkJCQkJcHJpdmF0ZS0+ZmV0Y2hpbmdfY2tw dCwKIAkJCQkJCQkJCQkJdGFyZ2V0UmVjUHRyLAogCQkJCQkJCQkJCQlwcml2YXRlLT5yZXBsYXlU TEksCi0JCQkJCQkJCQkJCXhsb2dyZWFkZXItPkVuZFJlY1B0ciwKLQkJCQkJCQkJCQkJeGxvZ3Jl YWRlci0+bm9uYmxvY2tpbmcpKQorCQkJCQkJCQkJCQl4bG9nUmVhZGVyLT5FbmRSZWNQdHIsCisJ CQkJCQkJCQkJCXhsb2dSZWFkZXItPm5vbmJsb2NraW5nKSkKIAkJewogCQkJY2FzZSBYTFJFQURf V09VTERCTE9DSzoKIAkJCQlyZXR1cm4gWExSRUFEX1dPVUxEQkxPQ0s7CkBAIC0zNDY3LDcgKzM0 NjcsNyBAQCByZXRyeToKIAlBc3NlcnQodGFyZ2V0UGFnZU9mZiA9PSByZWFkT2ZmKTsKIAlBc3Nl cnQocmVxTGVuIDw9IHJlYWRMZW4pOwogCi0JeGxvZ3JlYWRlci0+c2VnLndzX3RsaSA9IGN1ckZp bGVUTEk7CisJeGxvZ1JlYWRlci0+c2VnLndzX3RsaSA9IGN1ckZpbGVUTEk7CiAKIAkvKgogCSAq IENoZWNrIHRoZSBwYWdlIGhlYWRlciBpbW1lZGlhdGVseSwgc28gdGhhdCB3ZSBjYW4gcmV0cnkg aW1tZWRpYXRlbHkgaWYKQEAgLTQxMDQsNyArNDEwNCw3IEBAIGVtb2RlX2Zvcl9jb3JydXB0X3Jl Y29yZChpbnQgZW1vZGUsIFhMb2dSZWNQdHIgUmVjUHRyKQogICogU3Vicm91dGluZSB0byB0cnkg dG8gZmV0Y2ggYW5kIHZhbGlkYXRlIGEgcHJpb3IgY2hlY2twb2ludCByZWNvcmQuCiAgKi8KIHN0 YXRpYyBYTG9nUmVjb3JkICoKLVJlYWRDaGVja3BvaW50UmVjb3JkKFhMb2dQcmVmZXRjaGVyICp4 bG9ncHJlZmV0Y2hlciwgWExvZ1JlY1B0ciBSZWNQdHIsCitSZWFkQ2hlY2twb2ludFJlY29yZChY TG9nUHJlZmV0Y2hlciAqeGxvZ1ByZWZldGNoZXIsIFhMb2dSZWNQdHIgUmVjUHRyLAogCQkJCQkg VGltZUxpbmVJRCByZXBsYXlUTEkpCiB7CiAJWExvZ1JlY29yZCAqcmVjb3JkOwpAQCAtNDExOSw4 ICs0MTE5LDggQEAgUmVhZENoZWNrcG9pbnRSZWNvcmQoWExvZ1ByZWZldGNoZXIgKnhsb2dwcmVm ZXRjaGVyLCBYTG9nUmVjUHRyIFJlY1B0ciwKIAkJcmV0dXJuIE5VTEw7CiAJfQogCi0JWExvZ1By ZWZldGNoZXJCZWdpblJlYWQoeGxvZ3ByZWZldGNoZXIsIFJlY1B0cik7Ci0JcmVjb3JkID0gUmVh ZFJlY29yZCh4bG9ncHJlZmV0Y2hlciwgTE9HLCB0cnVlLCByZXBsYXlUTEkpOworCVhMb2dQcmVm ZXRjaGVyQmVnaW5SZWFkKHhsb2dQcmVmZXRjaGVyLCBSZWNQdHIpOworCXJlY29yZCA9IFJlYWRS ZWNvcmQoeGxvZ1ByZWZldGNoZXIsIExPRywgdHJ1ZSwgcmVwbGF5VExJKTsKIAogCWlmIChyZWNv cmQgPT0gTlVMTCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1 cF9pbmNyZW1lbnRhbC5jIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfaW5jcmVtZW50 YWwuYwppbmRleCA4NTJhYjU3NzA0NS4uY2I5NmI4OTE1ZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2JhY2t1cC9iYXNlYmFja3VwX2luY3JlbWVudGFsLmMKKysrIGIvc3JjL2JhY2tlbmQvYmFj a3VwL2Jhc2ViYWNrdXBfaW5jcmVtZW50YWwuYwpAQCAtNTk2LDE2ICs1OTYsMTUgQEAgUHJlcGFy ZUZvckluY3JlbWVudGFsQmFja3VwKEluY3JlbWVudGFsQmFja3VwSW5mbyAqaWIsCiAJCQl3aGls ZSAoMSkKIAkJCXsKIAkJCQl1bnNpZ25lZAluYmxvY2tzOwotCQkJCXVuc2lnbmVkCWk7CiAKIAkJ CQluYmxvY2tzID0gQmxvY2tSZWZUYWJsZVJlYWRlckdldEJsb2NrcyhyZWFkZXIsIGJsb2NrcywK IAkJCQkJCQkJCQkJCQkgICBCTE9DS1NfUEVSX1JFQUQpOwogCQkJCWlmIChuYmxvY2tzID09IDAp CiAJCQkJCWJyZWFrOwogCi0JCQkJZm9yIChpID0gMDsgaSA8IG5ibG9ja3M7ICsraSkKKwkJCQlm b3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbmJsb2NrczsgKytuKQogCQkJCQlCbG9ja1JlZlRhYmxl TWFya0Jsb2NrTW9kaWZpZWQoaWItPmJydGFiLCAmcmxvY2F0b3IsCi0JCQkJCQkJCQkJCQkgICBm b3JrbnVtLCBibG9ja3NbaV0pOworCQkJCQkJCQkJCQkJICAgZm9ya251bSwgYmxvY2tzW25dKTsK IAkJCX0KIAkJfQogCQlEZXN0cm95QmxvY2tSZWZUYWJsZVJlYWRlcihyZWFkZXIpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQvYm9v dHN0cmFwL2Jvb3RzdHJhcC5jCmluZGV4IGZjODYzOGMxYjYxLi44M2RjMjc1ZDFjZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNrZW5k L2Jvb3RzdHJhcC9ib290c3RyYXAuYwpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQKIEJvb3RzdHJh cE1vZGVNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sIGJvb2wgY2hlY2tfb25seSkKIHsKIAlp bnQJCQlpOwotCWNoYXIJICAgKnByb2duYW1lID0gYXJndlswXTsKKwljaGFyCSAgICpwcm9nTmFt ZSA9IGFyZ3ZbMF07CiAJaW50CQkJZmxhZzsKIAljaGFyCSAgICp1c2VyRG9wdGlvbiA9IE5VTEw7 CiAJdWludDMyCQlib290c3RyYXBfZGF0YV9jaGVja3N1bV92ZXJzaW9uID0gMDsJLyogTm8gY2hl Y2tzdW0gKi8KQEAgLTI5Niw3ICsyOTYsNyBAQCBCb290c3RyYXBNb2RlTWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdLCBib29sIGNoZWNrX29ubHkpCiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0Ogog CQkJCXdyaXRlX3N0ZGVycigiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24u XG4iLAotCQkJCQkJCSBwcm9nbmFtZSk7CisJCQkJCQkJIHByb2dOYW1lKTsKIAkJCQlwcm9jX2V4 aXQoMSk7CiAJCQkJYnJlYWs7CiAJCX0KQEAgLTMwNCwxMiArMzA0LDEyIEBAIEJvb3RzdHJhcE1v ZGVNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sIGJvb2wgY2hlY2tfb25seSkKIAogCWlmIChh cmdjICE9IG9wdGluZCkKIAl7Ci0JCXdyaXRlX3N0ZGVycigiJXM6IGludmFsaWQgY29tbWFuZC1s aW5lIGFyZ3VtZW50c1xuIiwgcHJvZ25hbWUpOworCQl3cml0ZV9zdGRlcnIoIiVzOiBpbnZhbGlk IGNvbW1hbmQtbGluZSBhcmd1bWVudHNcbiIsIHByb2dOYW1lKTsKIAkJcHJvY19leGl0KDEpOwog CX0KIAogCS8qIEFjcXVpcmUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzICovCi0JaWYgKCFTZWxl Y3RDb25maWdGaWxlcyh1c2VyRG9wdGlvbiwgcHJvZ25hbWUpKQorCWlmICghU2VsZWN0Q29uZmln RmlsZXModXNlckRvcHRpb24sIHByb2dOYW1lKSkKIAkJcHJvY19leGl0KDEpOwogCiAJLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggYzc1YjcxMzFlZDcuLmJiZjU5NDE4ZjVm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAtMjExOCw4ICsyMTE4LDggQEAg cGdfZ2V0X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJTm9kZQkgICAqb2Jqbm9k ZSA9IE5VTEw7CiAJT2JqZWN0QWRkcmVzcyBhZGRyOwogCVR1cGxlRGVzYwl0dXBkZXNjOwotCURh dHVtCQl2YWx1ZXNbM107Ci0JYm9vbAkJbnVsbHNbM107CisJRGF0dW0JCXZhbHVlczNbM107CisJ Ym9vbAkJbnVsbHMzWzNdOwogCUhlYXBUdXBsZQlodHVwOwogCVJlbGF0aW9uCXJlbGF0aW9uOwog CkBAIC0yMzcxLDE0ICsyMzcxLDE0IEBAIHBnX2dldF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElP Tl9BUkdTKQogCWlmIChnZXRfY2FsbF9yZXN1bHRfdHlwZShmY2luZm8sIE5VTEwsICZ0dXBkZXNj KSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCiAJCWVsb2coRVJST1IsICJyZXR1cm4gdHlwZSBtdXN0 IGJlIGEgcm93IHR5cGUiKTsKIAotCXZhbHVlc1swXSA9IE9iamVjdElkR2V0RGF0dW0oYWRkci5j bGFzc0lkKTsKLQl2YWx1ZXNbMV0gPSBPYmplY3RJZEdldERhdHVtKGFkZHIub2JqZWN0SWQpOwot CXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0oYWRkci5vYmplY3RTdWJJZCk7Ci0JbnVsbHNbMF0g PSBmYWxzZTsKLQludWxsc1sxXSA9IGZhbHNlOwotCW51bGxzWzJdID0gZmFsc2U7CisJdmFsdWVz M1swXSA9IE9iamVjdElkR2V0RGF0dW0oYWRkci5jbGFzc0lkKTsKKwl2YWx1ZXMzWzFdID0gT2Jq ZWN0SWRHZXREYXR1bShhZGRyLm9iamVjdElkKTsKKwl2YWx1ZXMzWzJdID0gSW50MzJHZXREYXR1 bShhZGRyLm9iamVjdFN1YklkKTsKKwludWxsczNbMF0gPSBmYWxzZTsKKwludWxsczNbMV0gPSBm YWxzZTsKKwludWxsczNbMl0gPSBmYWxzZTsKIAotCWh0dXAgPSBoZWFwX2Zvcm1fdHVwbGUodHVw ZGVzYywgdmFsdWVzLCBudWxscyk7CisJaHR1cCA9IGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2 YWx1ZXMzLCBudWxsczMpOwogCiAJUEdfUkVUVVJOX0RBVFVNKEhlYXBUdXBsZUdldERhdHVtKGh0 dXApKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKaW5kZXggOTk0NGU0YmQyZDEu LmVlNDRkZTlhZTg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwpAQCAtODQ0LDIy ICs4NDQsMjIgQEAgUmVsYXRpb25HZXROb3ROdWxsQ29uc3RyYWludHMoT2lkIHJlbGlkLCBib29s IGNvb2tlZCwgYm9vbCBpbmNsdWRlX25vaW5oKQogCiAJCWlmIChjb29rZWQpCiAJCXsKLQkJCUNv b2tlZENvbnN0cmFpbnQgKmNvb2tlZDsKLQotCQkJY29va2VkID0gKENvb2tlZENvbnN0cmFpbnQg KikgcGFsbG9jKHNpemVvZihDb29rZWRDb25zdHJhaW50KSk7Ci0KLQkJCWNvb2tlZC0+Y29udHlw ZSA9IENPTlNUUl9OT1ROVUxMOwotCQkJY29va2VkLT5jb25vaWQgPSBjb25Gb3JtLT5vaWQ7Ci0J CQljb29rZWQtPm5hbWUgPSBwc3RyZHVwKE5hbWVTdHIoY29uRm9ybS0+Y29ubmFtZSkpOwotCQkJ Y29va2VkLT5hdHRudW0gPSBjb2xudW07Ci0JCQljb29rZWQtPmV4cHIgPSBOVUxMOwotCQkJY29v a2VkLT5pc19lbmZvcmNlZCA9IHRydWU7Ci0JCQljb29rZWQtPnNraXBfdmFsaWRhdGlvbiA9ICFj b25Gb3JtLT5jb252YWxpZGF0ZWQ7Ci0JCQljb29rZWQtPmlzX2xvY2FsID0gdHJ1ZTsKLQkJCWNv b2tlZC0+aW5oY291bnQgPSAwOwotCQkJY29va2VkLT5pc19ub19pbmhlcml0ID0gY29uRm9ybS0+ Y29ubm9pbmhlcml0OwotCi0JCQlub3RudWxscyA9IGxhcHBlbmQobm90bnVsbHMsIGNvb2tlZCk7 CisJCQlDb29rZWRDb25zdHJhaW50ICpjYzsKKworCQkJY2MgPSAoQ29va2VkQ29uc3RyYWludCAq KSBwYWxsb2Moc2l6ZW9mKENvb2tlZENvbnN0cmFpbnQpKTsKKworCQkJY2MtPmNvbnR5cGUgPSBD T05TVFJfTk9UTlVMTDsKKwkJCWNjLT5jb25vaWQgPSBjb25Gb3JtLT5vaWQ7CisJCQljYy0+bmFt ZSA9IHBzdHJkdXAoTmFtZVN0cihjb25Gb3JtLT5jb25uYW1lKSk7CisJCQljYy0+YXR0bnVtID0g Y29sbnVtOworCQkJY2MtPmV4cHIgPSBOVUxMOworCQkJY2MtPmlzX2VuZm9yY2VkID0gdHJ1ZTsK KwkJCWNjLT5za2lwX3ZhbGlkYXRpb24gPSAhY29uRm9ybS0+Y29udmFsaWRhdGVkOworCQkJY2Mt PmlzX2xvY2FsID0gdHJ1ZTsKKwkJCWNjLT5pbmhjb3VudCA9IDA7CisJCQljYy0+aXNfbm9faW5o ZXJpdCA9IGNvbkZvcm0tPmNvbm5vaW5oZXJpdDsKKworCQkJbm90bnVsbHMgPSBsYXBwZW5kKG5v dG51bGxzLCBjYyk7CiAJCX0KIAkJZWxzZQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmlu ZGV4IGViYzIwNGM0NDYyLi45NDhhOTM5ZjY2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMK QEAgLTEyNzQsOCArMTI3NCw4IEBAIGV4ZWN1dGVfZXh0ZW5zaW9uX3NjcmlwdChPaWQgZXh0ZW5z aW9uT2lkLCBFeHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbCwKIAkJCURhdHVtCQlvbGQgPSB0 X3NxbDsKIAkJCWNoYXIJICAgKnJlcWV4dG5hbWUgPSAoY2hhciAqKSBsZmlyc3QobGMpOwogCQkJ T2lkCQkJcmVxc2NoZW1hID0gbGZpcnN0X29pZChsYzIpOwotCQkJY2hhcgkgICAqc2NoZW1hTmFt ZSA9IGdldF9uYW1lc3BhY2VfbmFtZShyZXFzY2hlbWEpOwotCQkJY29uc3QgY2hhciAqcVNjaGVt YU5hbWUgPSBxdW90ZV9pZGVudGlmaWVyKHNjaGVtYU5hbWUpOworCQkJY2hhcgkgICAqc2NoZW1h bmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShyZXFzY2hlbWEpOworCQkJY29uc3QgY2hhciAqcVNj aGVtYU5hbWUgPSBxdW90ZV9pZGVudGlmaWVyKHNjaGVtYW5hbWUpOwogCQkJY2hhcgkgICAqcmVw bHRva2VuOwogCiAJCQlyZXBsdG9rZW4gPSBwc3ByaW50ZigiQGV4dHNjaGVtYTolc0AiLCByZXFl eHRuYW1lKTsKQEAgLTEyODQsNyArMTI4NCw3IEBAIGV4ZWN1dGVfZXh0ZW5zaW9uX3NjcmlwdChP aWQgZXh0ZW5zaW9uT2lkLCBFeHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbCwKIAkJCQkJCQkJ CQkJdF9zcWwsCiAJCQkJCQkJCQkJCUNTdHJpbmdHZXRUZXh0RGF0dW0ocmVwbHRva2VuKSwKIAkJ CQkJCQkJCQkJQ1N0cmluZ0dldFRleHREYXR1bShxU2NoZW1hTmFtZSkpOwotCQkJaWYgKHRfc3Fs ICE9IG9sZCAmJiBzdHJwYnJrKHNjaGVtYU5hbWUsIHF1b3RpbmdfcmVsZXZhbnRfY2hhcnMpKQor CQkJaWYgKHRfc3FsICE9IG9sZCAmJiBzdHJwYnJrKHNjaGVtYW5hbWUsIHF1b3RpbmdfcmVsZXZh bnRfY2hhcnMpKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCiAJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGNoYXJh Y3RlciBpbiBleHRlbnNpb24gXCIlc1wiIHNjaGVtYTogbXVzdCBub3QgY29udGFpbiBhbnkgb2Yg XCIlc1wiIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYWNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYWNtZHMuYwppbmRleCAzY2MxNDcyMTAzYS4uMDFh M2Y5ODI3NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYWNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWFjbWRzLmMKQEAgLTIwNSwxNCArMjA1LDE0 IEBAIENyZWF0ZVNjaGVtYUNvbW1hbmQoQ3JlYXRlU2NoZW1hU3RtdCAqc3RtdCwgY29uc3QgY2hh ciAqcXVlcnlTdHJpbmcsCiAJICovCiAJZm9yZWFjaChwYXJzZXRyZWVfaXRlbSwgcGFyc2V0cmVl X2xpc3QpCiAJewotCQlOb2RlCSAgICpzdG10ID0gKE5vZGUgKikgbGZpcnN0KHBhcnNldHJlZV9p dGVtKTsKKwkJTm9kZQkgICAqcHN0bXQgPSAoTm9kZSAqKSBsZmlyc3QocGFyc2V0cmVlX2l0ZW0p OwogCQlQbGFubmVkU3RtdCAqd3JhcHBlcjsKIAogCQkvKiBuZWVkIHRvIG1ha2UgYSB3cmFwcGVy IFBsYW5uZWRTdG10ICovCiAJCXdyYXBwZXIgPSBtYWtlTm9kZShQbGFubmVkU3RtdCk7CiAJCXdy YXBwZXItPmNvbW1hbmRUeXBlID0gQ01EX1VUSUxJVFk7CiAJCXdyYXBwZXItPmNhblNldFRhZyA9 IGZhbHNlOwotCQl3cmFwcGVyLT51dGlsaXR5U3RtdCA9IHN0bXQ7CisJCXdyYXBwZXItPnV0aWxp dHlTdG10ID0gcHN0bXQ7CiAJCXdyYXBwZXItPnN0bXRfbG9jYXRpb24gPSBzdG10X2xvY2F0aW9u OwogCQl3cmFwcGVyLT5zdG10X2xlbiA9IHN0bXRfbGVuOwogCQl3cmFwcGVyLT5wbGFuT3JpZ2lu ID0gUExBTl9TVE1UX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv c3RhdHNjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdGF0c2NtZHMuYwppbmRleCA3N2Ix YTZlMmRjNS4uOWIxMTM4MzkxMDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N0 YXRzY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N0YXRzY21kcy5jCkBAIC0zMTks MTUgKzMxOSwxNSBAQCBDcmVhdGVTdGF0aXN0aWNzKENyZWF0ZVN0YXRzU3RtdCAqc3RtdCwgYm9v bCBjaGVja19yaWdodHMpCiAJCQlOb2RlCSAgICpleHByID0gc2VsZW0tPmV4cHI7CiAJCQlPaWQJ CQlhdHR0eXBlOwogCQkJVHlwZUNhY2hlRW50cnkgKnR5cGU7Ci0JCQlCaXRtYXBzZXQgICphdHRu dW1zID0gTlVMTDsKKwkJCUJpdG1hcHNldCAgKmF0dG51bXNibXMgPSBOVUxMOwogCQkJaW50CQkJ azsKIAogCQkJQXNzZXJ0KGV4cHIgIT0gTlVMTCk7CiAKLQkJCXB1bGxfdmFyYXR0bm9zKGV4cHIs IDEsICZhdHRudW1zKTsKKwkJCXB1bGxfdmFyYXR0bm9zKGV4cHIsIDEsICZhdHRudW1zYm1zKTsK IAogCQkJayA9IC0xOwotCQkJd2hpbGUgKChrID0gYm1zX25leHRfbWVtYmVyKGF0dG51bXMsIGsp KSA+PSAwKQorCQkJd2hpbGUgKChrID0gYm1zX25leHRfbWVtYmVyKGF0dG51bXNibXMsIGspKSA+ PSAwKQogCQkJewogCQkJCUF0dHJOdW1iZXIJYXR0bnVtID0gayArIEZpcnN0TG93SW52YWxpZEhl YXBBdHRyaWJ1dGVOdW1iZXI7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMjNlYmFh M2YyMzAuLjM0OGQ0MTRhMWRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTU3MDgs MTQgKzE1NzA4LDE0IEBAIEFUUG9zdEFsdGVyVHlwZVBhcnNlKE9pZCBvbGRJZCwgT2lkIG9sZFJl bElkLCBPaWQgcmVmUmVsSWQsIGNoYXIgKmNtZCwKIAogCQkJZm9yZWFjaChsY21kLCBzdG10LT5j bWRzKQogCQkJewotCQkJCUFsdGVyVGFibGVDbWQgKmNtZCA9IGxmaXJzdF9ub2RlKEFsdGVyVGFi bGVDbWQsIGxjbWQpOworCQkJCUFsdGVyVGFibGVDbWQgKmMgPSBsZmlyc3Rfbm9kZShBbHRlclRh YmxlQ21kLCBsY21kKTsKIAotCQkJCWlmIChjbWQtPnN1YnR5cGUgPT0gQVRfQWRkSW5kZXgpCisJ CQkJaWYgKGMtPnN1YnR5cGUgPT0gQVRfQWRkSW5kZXgpCiAJCQkJewogCQkJCQlJbmRleFN0bXQg ICppbmRzdG10OwogCQkJCQlPaWQJCQlpbmRvaWQ7CiAKLQkJCQkJaW5kc3RtdCA9IGNhc3ROb2Rl KEluZGV4U3RtdCwgY21kLT5kZWYpOworCQkJCQlpbmRzdG10ID0gY2FzdE5vZGUoSW5kZXhTdG10 LCBjLT5kZWYpOwogCQkJCQlpbmRvaWQgPSBnZXRfY29uc3RyYWludF9pbmRleChvbGRJZCk7CiAK IAkJCQkJaWYgKCFyZXdyaXRlKQpAQCAtMTU3MjUsOSArMTU3MjUsOSBAQCBBVFBvc3RBbHRlclR5 cGVQYXJzZShPaWQgb2xkSWQsIE9pZCBvbGRSZWxJZCwgT2lkIHJlZlJlbElkLCBjaGFyICpjbWQs CiAJCQkJCQkJCQkJCQkJIFJlbGF0aW9uUmVsYXRpb25JZCwgMCk7CiAJCQkJCWluZHN0bXQtPnJl c2V0X2RlZmF1bHRfdGJsc3BjID0gdHJ1ZTsKIAotCQkJCQljbWQtPnN1YnR5cGUgPSBBVF9SZUFk ZEluZGV4OworCQkJCQljLT5zdWJ0eXBlID0gQVRfUmVBZGRJbmRleDsKIAkJCQkJdGFiLT5zdWJj bWRzW0FUX1BBU1NfT0xEX0lOREVYXSA9Ci0JCQkJCQlsYXBwZW5kKHRhYi0+c3ViY21kc1tBVF9Q QVNTX09MRF9JTkRFWF0sIGNtZCk7CisJCQkJCQlsYXBwZW5kKHRhYi0+c3ViY21kc1tBVF9QQVNT X09MRF9JTkRFWF0sIGMpOwogCiAJCQkJCS8qIHJlY3JlYXRlIGFueSBjb21tZW50IG9uIHRoZSBj b25zdHJhaW50ICovCiAJCQkJCVJlYnVpbGRDb25zdHJhaW50Q29tbWVudCh0YWIsCkBAIC0xNTcz Nyw5ICsxNTczNyw5IEBAIEFUUG9zdEFsdGVyVHlwZVBhcnNlKE9pZCBvbGRJZCwgT2lkIG9sZFJl bElkLCBPaWQgcmVmUmVsSWQsIGNoYXIgKmNtZCwKIAkJCQkJCQkJCQkJIE5JTCwKIAkJCQkJCQkJ CQkJIGluZHN0bXQtPmlkeG5hbWUpOwogCQkJCX0KLQkJCQllbHNlIGlmIChjbWQtPnN1YnR5cGUg PT0gQVRfQWRkQ29uc3RyYWludCkKKwkJCQllbHNlIGlmIChjLT5zdWJ0eXBlID09IEFUX0FkZENv bnN0cmFpbnQpCiAJCQkJewotCQkJCQlDb25zdHJhaW50ICpjb24gPSBjYXN0Tm9kZShDb25zdHJh aW50LCBjbWQtPmRlZik7CisJCQkJCUNvbnN0cmFpbnQgKmNvbiA9IGNhc3ROb2RlKENvbnN0cmFp bnQsIGMtPmRlZik7CiAKIAkJCQkJY29uLT5vbGRfcGt0YWJsZV9vaWQgPSByZWZSZWxJZDsKIAkJ CQkJLyogcmV3cml0aW5nIG5laXRoZXIgc2lkZSBvZiBhIEZLICovCkBAIC0xNTc0Nyw5ICsxNTc0 Nyw5IEBAIEFUUG9zdEFsdGVyVHlwZVBhcnNlKE9pZCBvbGRJZCwgT2lkIG9sZFJlbElkLCBPaWQg cmVmUmVsSWQsIGNoYXIgKmNtZCwKIAkJCQkJCSFyZXdyaXRlICYmIHRhYi0+cmV3cml0ZSA9PSAw KQogCQkJCQkJVHJ5UmV1c2VGb3JlaWduS2V5KG9sZElkLCBjb24pOwogCQkJCQljb24tPnJlc2V0 X2RlZmF1bHRfdGJsc3BjID0gdHJ1ZTsKLQkJCQkJY21kLT5zdWJ0eXBlID0gQVRfUmVBZGRDb25z dHJhaW50OworCQkJCQljLT5zdWJ0eXBlID0gQVRfUmVBZGRDb25zdHJhaW50OwogCQkJCQl0YWIt PnN1YmNtZHNbQVRfUEFTU19PTERfQ09OU1RSXSA9Ci0JCQkJCQlsYXBwZW5kKHRhYi0+c3ViY21k c1tBVF9QQVNTX09MRF9DT05TVFJdLCBjbWQpOworCQkJCQkJbGFwcGVuZCh0YWItPnN1YmNtZHNb QVRfUEFTU19PTERfQ09OU1RSXSwgYyk7CiAKIAkJCQkJLyoKIAkJCQkJICogUmVjcmVhdGUgYW55 IGNvbW1lbnQgb24gdGhlIGNvbnN0cmFpbnQuICBJZiB3ZSBoYXZlCkBAIC0xNTc2OSw3ICsxNTc2 OSw3IEBAIEFUUG9zdEFsdGVyVHlwZVBhcnNlKE9pZCBvbGRJZCwgT2lkIG9sZFJlbElkLCBPaWQg cmVmUmVsSWQsIGNoYXIgKmNtZCwKIAkJCQl9CiAJCQkJZWxzZQogCQkJCQllbG9nKEVSUk9SLCAi dW5leHBlY3RlZCBzdGF0ZW1lbnQgc3VidHlwZTogJWQiLAotCQkJCQkJIChpbnQpIGNtZC0+c3Vi dHlwZSk7CisJCQkJCQkgKGludCkgYy0+c3VidHlwZSk7CiAJCQl9CiAJCX0KIAkJZWxzZSBpZiAo SXNBKHN0bSwgQWx0ZXJEb21haW5TdG10KSkKQEAgLTE1Nzc5LDEyICsxNTc3OSwxMiBAQCBBVFBv c3RBbHRlclR5cGVQYXJzZShPaWQgb2xkSWQsIE9pZCBvbGRSZWxJZCwgT2lkIHJlZlJlbElkLCBj aGFyICpjbWQsCiAJCQlpZiAoc3RtdC0+c3VidHlwZSA9PSBBRF9BZGRDb25zdHJhaW50KQogCQkJ ewogCQkJCUNvbnN0cmFpbnQgKmNvbiA9IGNhc3ROb2RlKENvbnN0cmFpbnQsIHN0bXQtPmRlZik7 Ci0JCQkJQWx0ZXJUYWJsZUNtZCAqY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJ QWx0ZXJUYWJsZUNtZCAqYyA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOwogCi0JCQkJY21kLT5z dWJ0eXBlID0gQVRfUmVBZGREb21haW5Db25zdHJhaW50OwotCQkJCWNtZC0+ZGVmID0gKE5vZGUg Kikgc3RtdDsKKwkJCQljLT5zdWJ0eXBlID0gQVRfUmVBZGREb21haW5Db25zdHJhaW50OworCQkJ CWMtPmRlZiA9IChOb2RlICopIHN0bXQ7CiAJCQkJdGFiLT5zdWJjbWRzW0FUX1BBU1NfT0xEX0NP TlNUUl0gPQotCQkJCQlsYXBwZW5kKHRhYi0+c3ViY21kc1tBVF9QQVNTX09MRF9DT05TVFJdLCBj bWQpOworCQkJCQlsYXBwZW5kKHRhYi0+c3ViY21kc1tBVF9QQVNTX09MRF9DT05TVFJdLCBjKTsK IAogCQkJCS8qIHJlY3JlYXRlIGFueSBjb21tZW50IG9uIHRoZSBjb25zdHJhaW50ICovCiAJCQkJ UmVidWlsZENvbnN0cmFpbnRDb21tZW50KHRhYiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCA1 NzlhYzhkNzZhZS4uZmFmMWZiNGI1YmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTExNjUs NyArMTE2NSw3IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihDcmVhdGVUcmlnU3RtdCAqc3RtdCwg Y29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCXsKIAkJCUNyZWF0ZVRyaWdTdG10ICpjaGlsZFN0 bXQ7CiAJCQlSZWxhdGlvbgljaGlsZFRibDsKLQkJCU5vZGUJICAgKnF1YWw7CisJCQlOb2RlCSAg ICpwcXVhbDsKIAogCQkJY2hpbGRUYmwgPSB0YWJsZV9vcGVuKHBhcnRkZXNjLT5vaWRzW2ldLCBT aGFyZVJvd0V4Y2x1c2l2ZUxvY2spOwogCkBAIC0xMTc4LDE4ICsxMTc4LDE4IEBAIENyZWF0ZVRy aWdnZXJGaXJpbmdPbihDcmVhdGVUcmlnU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcsCiAJCQljaGlsZFN0bXQtPndoZW5DbGF1c2UgPSBOVUxMOwogCiAJCQkvKiBJZiB0aGVyZSBp cyBhIFdIRU4gY2xhdXNlLCBjcmVhdGUgYSBtb2RpZmllZCBjb3B5IG9mIGl0ICovCi0JCQlxdWFs ID0gY29weU9iamVjdCh3aGVuQ2xhdXNlKTsKLQkJCXF1YWwgPSAoTm9kZSAqKQotCQkJCW1hcF9w YXJ0aXRpb25fdmFyYXR0bm9zKChMaXN0ICopIHF1YWwsIFBSUzJfT0xEX1ZBUk5PLAorCQkJcHF1 YWwgPSBjb3B5T2JqZWN0KHdoZW5DbGF1c2UpOworCQkJcHF1YWwgPSAoTm9kZSAqKQorCQkJCW1h cF9wYXJ0aXRpb25fdmFyYXR0bm9zKChMaXN0ICopIHBxdWFsLCBQUlMyX09MRF9WQVJOTywKIAkJ CQkJCQkJCQljaGlsZFRibCwgcmVsKTsKLQkJCXF1YWwgPSAoTm9kZSAqKQotCQkJCW1hcF9wYXJ0 aXRpb25fdmFyYXR0bm9zKChMaXN0ICopIHF1YWwsIFBSUzJfTkVXX1ZBUk5PLAorCQkJcHF1YWwg PSAoTm9kZSAqKQorCQkJCW1hcF9wYXJ0aXRpb25fdmFyYXR0bm9zKChMaXN0ICopIHBxdWFsLCBQ UlMyX05FV19WQVJOTywKIAkJCQkJCQkJCQljaGlsZFRibCwgcmVsKTsKIAogCQkJQ3JlYXRlVHJp Z2dlckZpcmluZ09uKGNoaWxkU3RtdCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCSAgcGFydGRlc2Mt Pm9pZHNbaV0sIHJlZlJlbE9pZCwKIAkJCQkJCQkJICBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLAot CQkJCQkJCQkgIGZ1bmNvaWQsIHRyaWdvaWQsIHF1YWwsCisJCQkJCQkJCSAgZnVuY29pZCwgdHJp Z29pZCwgcHF1YWwsCiAJCQkJCQkJCSAgaXNJbnRlcm5hbCwgdHJ1ZSwgdHJpZ2dlcl9maXJlc193 aGVuKTsKIAogCQkJdGFibGVfY2xvc2UoY2hpbGRUYmwsIE5vTG9jayk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMK aW5kZXggYTM3YmRkYWVmYjIuLjUwMzY5YzhlMGQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy93YWl0LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCkBAIC01MSw3 ICs1MSw3IEBAIEV4ZWNXYWl0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFdhaXRTdG10ICpzdG10 LCBEZXN0UmVjZWl2ZXIgKmRlc3QpCiAJCXsKIAkJCWNoYXIJICAgKnRpbWVvdXRfc3RyOwogCQkJ Y29uc3QgY2hhciAqaGludG1zZzsKLQkJCWRvdWJsZQkJcmVzdWx0OworCQkJZG91YmxlCQlkOwog CiAJCQlpZiAodGltZW91dF9zcGVjaWZpZWQpCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0o ZGVmZWwsIHBzdGF0ZSk7CkBAIC01OSw3ICs1OSw3IEBAIEV4ZWNXYWl0U3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpCiAKIAkJCXRpbWVv dXRfc3RyID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsKIAotCQkJaWYgKCFwYXJzZV9yZWFsKHRpbWVv dXRfc3RyLCAmcmVzdWx0LCBHVUNfVU5JVF9NUywgJmhpbnRtc2cpKQorCQkJaWYgKCFwYXJzZV9y ZWFsKHRpbWVvdXRfc3RyLCAmZCwgR1VDX1VOSVRfTVMsICZoaW50bXNnKSkKIAkJCXsKIAkJCQll cmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKQEAgLTcyLDIwICs3MiwyMCBAQCBFeGVjV2FpdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KQogCQkJICogZG9uJ3QgZmFpbCBv biBqdXN0LW91dC1vZi1yYW5nZSB2YWx1ZXMgdGhhdCB3b3VsZCByb3VuZCBpbnRvCiAJCQkgKiBy YW5nZS4KIAkJCSAqLwotCQkJcmVzdWx0ID0gcmludChyZXN1bHQpOworCQkJZCA9IHJpbnQoZCk7 CiAKIAkJCS8qIFJhbmdlIGNoZWNrICovCi0JCQlpZiAodW5saWtlbHkoaXNuYW4ocmVzdWx0KSB8 fCAhRkxPQVQ4X0ZJVFNfSU5fSU5UNjQocmVzdWx0KSkpCisJCQlpZiAodW5saWtlbHkoaXNuYW4o ZCkgfHwgIUZMT0FUOF9GSVRTX0lOX0lOVDY0KGQpKSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkJZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJCQkJCWVy cm1zZygidGltZW91dCB2YWx1ZSBpcyBvdXQgb2YgcmFuZ2UiKSk7CiAKLQkJCWlmIChyZXN1bHQg PCAwKQorCQkJaWYgKGQgPCAwKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQllcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkJZXJybXNnKCJ0aW1lb3V0IGNh bm5vdCBiZSBuZWdhdGl2ZSIpKTsKIAotCQkJdGltZW91dCA9IChpbnQ2NCkgcmVzdWx0OworCQkJ dGltZW91dCA9IChpbnQ2NCkgZDsKIAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5h bWUsICJub190aHJvdyIpID09IDApCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVy cC5jCmluZGV4IDBlMWE3NDk3NmY3Li40NzhiOWJlNTgzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwckludGVycC5jCkBAIC00NzEsNyArNDcxLDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0 YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJICogVGhp cyBhcnJheSBoYXMgdG8gYmUgaW4gdGhlIHNhbWUgb3JkZXIgYXMgZW51bSBFeHByRXZhbE9wLgog CSAqLwogI2lmIGRlZmluZWQoRUVPX1VTRV9DT01QVVRFRF9HT1RPKQotCXN0YXRpYyBjb25zdCB2 b2lkICpjb25zdCBkaXNwYXRjaF90YWJsZVtdID0geworCXN0YXRpYyBjb25zdCB2b2lkICpjb25z dCBkaXNwYXRjaHRhYmxlW10gPSB7CiAJCSYmQ0FTRV9FRU9QX0RPTkVfUkVUVVJOLAogCQkmJkNB U0VfRUVPUF9ET05FX05PX1JFVFVSTiwKIAkJJiZDQVNFX0VFT1BfSU5ORVJfRkVUQ0hTT01FLApA QCAtNTk1LDExICs1OTUsMTEgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhw ckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCSYmQ0FTRV9FRU9QX0xBU1QKIAl9 OwogCi0JU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihkaXNwYXRjaF90YWJsZSkgPT0gRUVPUF9M QVNUICsgMSwKKwlTdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKGRpc3BhdGNodGFibGUpID09IEVF T1BfTEFTVCArIDEsCiAJCQkJCSAiZGlzcGF0Y2hfdGFibGUgb3V0IG9mIHdoYWNrIHdpdGggRXhw ckV2YWxPcCIpOwogCiAJaWYgKHVubGlrZWx5KHN0YXRlID09IE5VTEwpKQotCQlyZXR1cm4gUG9p bnRlckdldERhdHVtKGRpc3BhdGNoX3RhYmxlKTsKKwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShk aXNwYXRjaHRhYmxlKTsKICNlbHNlCiAJQXNzZXJ0KHN0YXRlICE9IE5VTEwpOwogI2VuZGlmCQkJ CQkJCS8qIEVFT19VU0VfQ09NUFVURURfR09UTyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4 IDBiMDJmZDMyMTA3Li5mMDlhMjliNjZiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwpAQCAtNDA3 MCwxMiArNDA3MCwxMiBAQCBFeGVjSW5pdEFnZyhBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCSAqLwogCWZvciAocGhhc2VpZHggPSAwOyBwaGFzZWlkeCA8IGFnZ3N0YXRl LT5udW1waGFzZXM7IHBoYXNlaWR4KyspCiAJewotCQlBZ2dTdGF0ZVBlclBoYXNlIHBoYXNlID0g JmFnZ3N0YXRlLT5waGFzZXNbcGhhc2VpZHhdOworCQlBZ2dTdGF0ZVBlclBoYXNlIHBocyA9ICZh Z2dzdGF0ZS0+cGhhc2VzW3BoYXNlaWR4XTsKIAkJYm9vbAkJZG9oYXNoID0gZmFsc2U7CiAJCWJv b2wJCWRvc29ydCA9IGZhbHNlOwogCiAJCS8qIHBoYXNlIDAgZG9lc24ndCBuZWNlc3NhcmlseSBl eGlzdCAqLwotCQlpZiAoIXBoYXNlLT5hZ2dub2RlKQorCQlpZiAoIXBocy0+YWdnbm9kZSkKIAkJ CWNvbnRpbnVlOwogCiAJCWlmIChhZ2dzdGF0ZS0+YWdnc3RyYXRlZ3kgPT0gQUdHX01JWEVEICYm IHBoYXNlaWR4ID09IDEpCkBAIC00MDk2LDEzICs0MDk2LDEzIEBAIEV4ZWNJbml0QWdnKEFnZyAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkgKi8KIAkJCWNvbnRpbnVlOwog CQl9Ci0JCWVsc2UgaWYgKHBoYXNlLT5hZ2dzdHJhdGVneSA9PSBBR0dfUExBSU4gfHwKLQkJCQkg cGhhc2UtPmFnZ3N0cmF0ZWd5ID09IEFHR19TT1JURUQpCisJCWVsc2UgaWYgKHBocy0+YWdnc3Ry YXRlZ3kgPT0gQUdHX1BMQUlOIHx8CisJCQkJIHBocy0+YWdnc3RyYXRlZ3kgPT0gQUdHX1NPUlRF RCkKIAkJewogCQkJZG9oYXNoID0gZmFsc2U7CiAJCQlkb3NvcnQgPSB0cnVlOwogCQl9Ci0JCWVs c2UgaWYgKHBoYXNlLT5hZ2dzdHJhdGVneSA9PSBBR0dfSEFTSEVEKQorCQllbHNlIGlmIChwaHMt PmFnZ3N0cmF0ZWd5ID09IEFHR19IQVNIRUQpCiAJCXsKIAkJCWRvaGFzaCA9IHRydWU7CiAJCQlk b3NvcnQgPSBmYWxzZTsKQEAgLTQxMTAsMTEgKzQxMTAsMTEgQEAgRXhlY0luaXRBZ2coQWdnICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJZWxzZQogCQkJQXNzZXJ0KGZhbHNl KTsKIAotCQlwaGFzZS0+ZXZhbHRyYW5zID0gRXhlY0J1aWxkQWdnVHJhbnMoYWdnc3RhdGUsIHBo YXNlLCBkb3NvcnQsIGRvaGFzaCwKLQkJCQkJCQkJCQkJIGZhbHNlKTsKKwkJcGhzLT5ldmFsdHJh bnMgPSBFeGVjQnVpbGRBZ2dUcmFucyhhZ2dzdGF0ZSwgcGhzLCBkb3NvcnQsIGRvaGFzaCwKKwkJ CQkJCQkJCQkgICBmYWxzZSk7CiAKIAkJLyogY2FjaGUgY29tcGlsZWQgZXhwcmVzc2lvbiBmb3Ig b3V0ZXIgc2xvdCB3aXRob3V0IE5VTEwgY2hlY2sgKi8KLQkJcGhhc2UtPmV2YWx0cmFuc19jYWNo ZVswXVswXSA9IHBoYXNlLT5ldmFsdHJhbnM7CisJCXBocy0+ZXZhbHRyYW5zX2NhY2hlWzBdWzBd ID0gcGhzLT5ldmFsdHJhbnM7CiAJfQogCiAJcmV0dXJuIGFnZ3N0YXRlOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVWYWx1ZXNzY2FuLmMKaW5kZXggOGU4NWE1ZjJlOWEuLjBkMzY2NTQ2OTY2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMKQEAgLTE0MSwxMSArMTQxLDExIEBAIFZh bHVlc05leHQoVmFsdWVzU2NhblN0YXRlICpub2RlKQogCQlyZXNpbmQgPSAwOwogCQlmb3JlYWNo KGxjLCBleHByc3RhdGVsaXN0KQogCQl7Ci0JCQlFeHByU3RhdGUgICplc3RhdGUgPSAoRXhwclN0 YXRlICopIGxmaXJzdChsYyk7CisJCQlFeHByU3RhdGUgICpleHByc3RhdGUgPSAoRXhwclN0YXRl ICopIGxmaXJzdChsYyk7CiAJCQlDb21wYWN0QXR0cmlidXRlICphdHRyID0gVHVwbGVEZXNjQ29t cGFjdEF0dHIoc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwKIAkJCQkJCQkJCQkJCQkJICByZXNp bmQpOwogCi0JCQl2YWx1ZXNbcmVzaW5kXSA9IEV4ZWNFdmFsRXhwcihlc3RhdGUsCisJCQl2YWx1 ZXNbcmVzaW5kXSA9IEV4ZWNFdmFsRXhwcihleHByc3RhdGUsCiAJCQkJCQkJCQkJICBlY29udGV4 dCwKIAkJCQkJCQkJCQkgICZpc251bGxbcmVzaW5kXSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2xpYnBxL2JlLXNlY3VyZS1jb21tb24uYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3Vy ZS1jb21tb24uYwppbmRleCBlOGI4MzdkMWZhNy4uOGI2NzQ0MzViZDIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1jb21tb24uYworKysgYi9zcmMvYmFja2VuZC9saWJw cS9iZS1zZWN1cmUtY29tbW9uLmMKQEAgLTExMSwxNyArMTExLDE3IEBAIGVycm9yOgogICogQ2hl Y2sgcGVybWlzc2lvbnMgZm9yIFNTTCBrZXkgZmlsZXMuCiAgKi8KIGJvb2wKLWNoZWNrX3NzbF9r ZXlfZmlsZV9wZXJtaXNzaW9ucyhjb25zdCBjaGFyICpzc2xfa2V5X2ZpbGUsIGJvb2wgaXNTZXJ2 ZXJTdGFydCkKK2NoZWNrX3NzbF9rZXlfZmlsZV9wZXJtaXNzaW9ucyhjb25zdCBjaGFyICpzc2xL ZXlGaWxlLCBib29sIGlzU2VydmVyU3RhcnQpCiB7CiAJaW50CQkJbG9nbGV2ZWwgPSBpc1NlcnZl clN0YXJ0ID8gRkFUQUwgOiBMT0c7CiAJc3RydWN0IHN0YXQgYnVmOwogCi0JaWYgKHN0YXQoc3Ns X2tleV9maWxlLCAmYnVmKSAhPSAwKQorCWlmIChzdGF0KHNzbEtleUZpbGUsICZidWYpICE9IDAp CiAJewogCQllcmVwb3J0KGxvZ2xldmVsLAogCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2Vzcygp LAogCQkJCSBlcnJtc2coImNvdWxkIG5vdCBhY2Nlc3MgcHJpdmF0ZSBrZXkgZmlsZSBcIiVzXCI6 ICVtIiwKLQkJCQkJCXNzbF9rZXlfZmlsZSkpKTsKKwkJCQkJCXNzbEtleUZpbGUpKSk7CiAJCXJl dHVybiBmYWxzZTsKIAl9CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCBjaGVja19zc2xfa2V5X2ZpbGVf cGVybWlzc2lvbnMoY29uc3QgY2hhciAqc3NsX2tleV9maWxlLCBib29sIGlzU2VydmVyU3RhcnQp CiAJCWVyZXBvcnQobG9nbGV2ZWwsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdfRklMRV9F UlJPUiksCiAJCQkJIGVycm1zZygicHJpdmF0ZSBrZXkgZmlsZSBcIiVzXCIgaXMgbm90IGEgcmVn dWxhciBmaWxlIiwKLQkJCQkJCXNzbF9rZXlfZmlsZSkpKTsKKwkJCQkJCXNzbEtleUZpbGUpKSk7 CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBjaGVja19zc2xfa2V5 X2ZpbGVfcGVybWlzc2lvbnMoY29uc3QgY2hhciAqc3NsX2tleV9maWxlLCBib29sIGlzU2VydmVy U3RhcnQpCiAJCWVyZXBvcnQobG9nbGV2ZWwsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdf RklMRV9FUlJPUiksCiAJCQkJIGVycm1zZygicHJpdmF0ZSBrZXkgZmlsZSBcIiVzXCIgbXVzdCBi ZSBvd25lZCBieSB0aGUgZGF0YWJhc2UgdXNlciBvciByb290IiwKLQkJCQkJCXNzbF9rZXlfZmls ZSkpKTsKKwkJCQkJCXNzbEtleUZpbGUpKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTE2 Nyw3ICsxNjcsNyBAQCBjaGVja19zc2xfa2V5X2ZpbGVfcGVybWlzc2lvbnMoY29uc3QgY2hhciAq c3NsX2tleV9maWxlLCBib29sIGlzU2VydmVyU3RhcnQpCiAJCWVyZXBvcnQobG9nbGV2ZWwsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdfRklMRV9FUlJPUiksCiAJCQkJIGVycm1zZygicHJp dmF0ZSBrZXkgZmlsZSBcIiVzXCIgaGFzIGdyb3VwIG9yIHdvcmxkIGFjY2VzcyIsCi0JCQkJCQlz c2xfa2V5X2ZpbGUpLAorCQkJCQkJc3NsS2V5RmlsZSksCiAJCQkJIGVycmRldGFpbCgiRmlsZSBt dXN0IGhhdmUgcGVybWlzc2lvbnMgdT1ydyAoMDYwMCkgb3IgbGVzcyBpZiBvd25lZCBieSB0aGUg ZGF0YWJhc2UgdXNlciwgb3IgcGVybWlzc2lvbnMgdT1ydyxnPXIgKDA2NDApIG9yIGxlc3MgaWYg b3duZWQgYnkgcm9vdC4iKSkpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbWFpbi9tYWluLmMgYi9zcmMvYmFja2VuZC9tYWluL21haW4uYwppbmRleCA3MmFh ZWUzNmE2OC4uMTNmMTMzOTNhY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL21haW4vbWFpbi5j CisrKyBiL3NyYy9iYWNrZW5kL21haW4vbWFpbi5jCkBAIC0yODEsNyArMjgxLDcgQEAgcGFyc2Vf ZGlzcGF0Y2hfb3B0aW9uKGNvbnN0IGNoYXIgKm5hbWUpCiAgKiB3aXRob3V0IGhlbHAuICBBdm9p ZCBhZGRpbmcgbW9yZSBoZXJlLCBpZiB5b3UgY2FuLgogICovCiBzdGF0aWMgdm9pZAotc3RhcnR1 cF9oYWNrcyhjb25zdCBjaGFyICpwcm9nbmFtZSkKK3N0YXJ0dXBfaGFja3MoY29uc3QgY2hhciAq cHJvZ05hbWUpCiB7CiAJLyoKIAkgKiBXaW5kb3dzLXNwZWNpZmljIGV4ZWN1dGlvbiBlbnZpcm9u bWVudCBoYWNraW5nLgpAQCAtMzAwLDcgKzMwMCw3IEBAIHN0YXJ0dXBfaGFja3MoY29uc3QgY2hh ciAqcHJvZ25hbWUpCiAJCWlmIChlcnIgIT0gMCkKIAkJewogCQkJd3JpdGVfc3RkZXJyKCIlczog V1NBU3RhcnR1cCBmYWlsZWQ6ICVkXG4iLAotCQkJCQkJIHByb2duYW1lLCBlcnIpOworCQkJCQkJ IHByb2dOYW1lLCBlcnIpOwogCQkJZXhpdCgxKTsKIAkJfQogCkBAIC0zODUsMTAgKzM4NSwxMCBA QCBpbml0X2xvY2FsZShjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUsIGludCBjYXRlZ29yeSwgY29u c3QgY2hhciAqbG9jYWxlKQogICogTWVzc2FnZXMgZW1pdHRlZCBpbiB3cml0ZV9jb25zb2xlKCkg ZG8gbm90IGV4aGliaXQgdGhpcyBwcm9ibGVtLgogICovCiBzdGF0aWMgdm9pZAotaGVscChjb25z dCBjaGFyICpwcm9nbmFtZSkKK2hlbHAoY29uc3QgY2hhciAqcHJvZ05hbWUpCiB7Ci0JcHJpbnRm KF8oIiVzIGlzIHRoZSBQb3N0Z3JlU1FMIHNlcnZlci5cblxuIiksIHByb2duYW1lKTsKLQlwcmlu dGYoXygiVXNhZ2U6XG4gICVzIFtPUFRJT05dLi4uXG5cbiIpLCBwcm9nbmFtZSk7CisJcHJpbnRm KF8oIiVzIGlzIHRoZSBQb3N0Z3JlU1FMIHNlcnZlci5cblxuIiksIHByb2dOYW1lKTsKKwlwcmlu dGYoXygiVXNhZ2U6XG4gICVzIFtPUFRJT05dLi4uXG5cbiIpLCBwcm9nTmFtZSk7CiAJcHJpbnRm KF8oIk9wdGlvbnM6XG4iKSk7CiAJcHJpbnRmKF8oIiAgLUIgTkJVRkZFUlMgICAgICAgIG51bWJl ciBvZiBzaGFyZWQgYnVmZmVyc1xuIikpOwogCXByaW50ZihfKCIgIC1jIE5BTUU9VkFMVUUgICAg ICBzZXQgcnVuLXRpbWUgcGFyYW1ldGVyXG4iKSk7CkBAIC00NDQsNyArNDQ0LDcgQEAgaGVscChj b25zdCBjaGFyICpwcm9nbmFtZSkKIAogCiBzdGF0aWMgdm9pZAotY2hlY2tfcm9vdChjb25zdCBj aGFyICpwcm9nbmFtZSkKK2NoZWNrX3Jvb3QoY29uc3QgY2hhciAqcHJvZ05hbWUpCiB7CiAjaWZu ZGVmIFdJTjMyCiAJaWYgKGdldGV1aWQoKSA9PSAwKQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIGNoZWNr X3Jvb3QoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJaWYgKGdldHVpZCgpICE9IGdldGV1aWQoKSkK IAl7CiAJCXdyaXRlX3N0ZGVycigiJXM6IHJlYWwgYW5kIGVmZmVjdGl2ZSB1c2VyIElEcyBtdXN0 IG1hdGNoXG4iLAotCQkJCQkgcHJvZ25hbWUpOworCQkJCQkgcHJvZ05hbWUpOwogCQlleGl0KDEp OwogCX0KICNlbHNlCQkJCQkJCS8qIFdJTjMyICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9l cXVpdmNsYXNzLmMKaW5kZXggNDQxZjEyZjZjNTAuLjM4NTE3OWYxNDdjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jCkBAIC04NzYsMjIgKzg3NiwyMiBAQCBnZXRfZWNs YXNzX2Zvcl9zb3J0X2V4cHIoUGxhbm5lckluZm8gKnJvb3QsCiAKIAkJd2hpbGUgKChpID0gYm1z X25leHRfbWVtYmVyKG5ld2VjLT5lY19yZWxpZHMsIGkpKSA+IDApCiAJCXsKLQkJCVJlbE9wdElu Zm8gKnJlbCA9IHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlbaV07CisJCQlSZWxPcHRJbmZvICpyZWxp bmZvID0gcm9vdC0+c2ltcGxlX3JlbF9hcnJheVtpXTsKIAogCQkJLyogaWdub3JlIHRoZSBSVEVf R1JPVVAgUlRFICovCiAJCQlpZiAoaSA9PSByb290LT5ncm91cF9ydGluZGV4KQogCQkJCWNvbnRp bnVlOwogCi0JCQlpZiAocmVsID09IE5VTEwpCS8qIG11c3QgYmUgYW4gb3V0ZXIgam9pbiAqLwor CQkJaWYgKHJlbGluZm8gPT0gTlVMTCkJLyogbXVzdCBiZSBhbiBvdXRlciBqb2luICovCiAJCQl7 CiAJCQkJQXNzZXJ0KGJtc19pc19tZW1iZXIoaSwgcm9vdC0+b3V0ZXJfam9pbl9yZWxzKSk7CiAJ CQkJY29udGludWU7CiAJCQl9CiAKLQkJCUFzc2VydChyZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BU X0JBU0VSRUwpOworCQkJQXNzZXJ0KHJlbGluZm8tPnJlbG9wdGtpbmQgPT0gUkVMT1BUX0JBU0VS RUwpOwogCi0JCQlyZWwtPmVjbGFzc19pbmRleGVzID0gYm1zX2FkZF9tZW1iZXIocmVsLT5lY2xh c3NfaW5kZXhlcywKLQkJCQkJCQkJCQkJCSBlY19pbmRleCk7CisJCQlyZWxpbmZvLT5lY2xhc3Nf aW5kZXhlcyA9IGJtc19hZGRfbWVtYmVyKHJlbGluZm8tPmVjbGFzc19pbmRleGVzLAorCQkJCQkJ CQkJCQkJCSBlY19pbmRleCk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2Ny ZWF0ZXBsYW4uYwppbmRleCA4YWYwOTFiYTY0Ny4uNDM3MjEzNWE4ZjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTEyMzYsMTYgKzEyMzYsMTYgQEAgY3JlYXRl X2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGlu dCBmbGFncykKIAlpZiAoYmVzdF9wYXRoLT5zdWJwYXRocyA9PSBOSUwpCiAJewogCQkvKiBHZW5l cmF0ZSBhIFJlc3VsdCBwbGFuIHdpdGggY29uc3RhbnQtRkFMU0UgZ2F0aW5nIHF1YWwgKi8KLQkJ UGxhbgkgICAqcGxhbjsKKwkJUGxhbgkgICAqcHBsYW47CiAKLQkJcGxhbiA9IChQbGFuICopIG1h a2Vfb25lX3Jvd19yZXN1bHQodGxpc3QsCi0JCQkJCQkJCQkJCShOb2RlICopIGxpc3RfbWFrZTEo bWFrZUJvb2xDb25zdChmYWxzZSwKLQkJCQkJCQkJCQkJCQkJCQkJCQkgIGZhbHNlKSksCi0JCQkJ CQkJCQkJCWJlc3RfcGF0aC0+cGF0aC5wYXJlbnQpOworCQlwcGxhbiA9IChQbGFuICopIG1ha2Vf b25lX3Jvd19yZXN1bHQodGxpc3QsCisJCQkJCQkJCQkJCSAoTm9kZSAqKSBsaXN0X21ha2UxKG1h a2VCb29sQ29uc3QoZmFsc2UsCisJCQkJCQkJCQkJCQkJCQkJCQkJICAgZmFsc2UpKSwKKwkJCQkJ CQkJCQkJIGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQpOwogCi0JCWNvcHlfZ2VuZXJpY19wYXRoX2lu Zm8ocGxhbiwgKFBhdGggKikgYmVzdF9wYXRoKTsKKwkJY29weV9nZW5lcmljX3BhdGhfaW5mbyhw cGxhbiwgKFBhdGggKikgYmVzdF9wYXRoKTsKIAotCQlyZXR1cm4gcGxhbjsKKwkJcmV0dXJuIHBw bGFuOwogCX0KIAogCS8qCkBAIC0yNDA2LDcgKzI0MDYsNyBAQCBjcmVhdGVfbWlubWF4YWdnX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIE1pbk1heEFnZ1BhdGggKmJlc3RfcGF0aCkKIAkJTWluTWF4 QWdnSW5mbyAqbW1pbmZvID0gKE1pbk1heEFnZ0luZm8gKikgbGZpcnN0KGxjKTsKIAkJUGxhbm5l ckluZm8gKnN1YnJvb3QgPSBtbWluZm8tPnN1YnJvb3Q7CiAJCVF1ZXJ5CSAgICpzdWJwYXJzZSA9 IHN1YnJvb3QtPnBhcnNlOwotCQlQbGFuCSAgICpwbGFuOworCQlQbGFuCSAgICpwcGxhbjsKIAog CQkvKgogCQkgKiBHZW5lcmF0ZSB0aGUgcGxhbiBmb3IgdGhlIHN1YnF1ZXJ5LiBXZSBhbHJlYWR5 IGhhdmUgYSBQYXRoLCBidXQgd2UKQEAgLTI0MTQsMjUgKzI0MTQsMjUgQEAgY3JlYXRlX21pbm1h eGFnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNaW5NYXhBZ2dQYXRoICpiZXN0X3BhdGgpCiAJ CSAqIFNpbmNlIHdlIGFyZSBlbnRlcmluZyBhIGRpZmZlcmVudCBwbGFubmVyIGNvbnRleHQgKHN1 YnJvb3QpLAogCQkgKiByZWN1cnNlIHRvIGNyZWF0ZV9wbGFuIG5vdCBjcmVhdGVfcGxhbl9yZWN1 cnNlLgogCQkgKi8KLQkJcGxhbiA9IGNyZWF0ZV9wbGFuKHN1YnJvb3QsIG1taW5mby0+cGF0aCk7 CisJCXBwbGFuID0gY3JlYXRlX3BsYW4oc3Vicm9vdCwgbW1pbmZvLT5wYXRoKTsKIAotCQlwbGFu ID0gKFBsYW4gKikgbWFrZV9saW1pdChwbGFuLAotCQkJCQkJCQkgICBzdWJwYXJzZS0+bGltaXRP ZmZzZXQsCi0JCQkJCQkJCSAgIHN1YnBhcnNlLT5saW1pdENvdW50LAotCQkJCQkJCQkgICBzdWJw YXJzZS0+bGltaXRPcHRpb24sCi0JCQkJCQkJCSAgIDAsIE5VTEwsIE5VTEwsIE5VTEwpOworCQlw cGxhbiA9IChQbGFuICopIG1ha2VfbGltaXQocHBsYW4sCisJCQkJCQkJCQlzdWJwYXJzZS0+bGlt aXRPZmZzZXQsCisJCQkJCQkJCQlzdWJwYXJzZS0+bGltaXRDb3VudCwKKwkJCQkJCQkJCXN1YnBh cnNlLT5saW1pdE9wdGlvbiwKKwkJCQkJCQkJCTAsIE5VTEwsIE5VTEwsIE5VTEwpOwogCiAJCS8q IE11c3QgYXBwbHkgY29ycmVjdCBjb3N0L3dpZHRoIGRhdGEgdG8gTGltaXQgbm9kZSAqLwotCQlw bGFuLT5kaXNhYmxlZF9ub2RlcyA9IG1taW5mby0+cGF0aC0+ZGlzYWJsZWRfbm9kZXM7Ci0JCXBs YW4tPnN0YXJ0dXBfY29zdCA9IG1taW5mby0+cGF0aC0+c3RhcnR1cF9jb3N0OwotCQlwbGFuLT50 b3RhbF9jb3N0ID0gbW1pbmZvLT5wYXRoY29zdDsKLQkJcGxhbi0+cGxhbl9yb3dzID0gMTsKLQkJ cGxhbi0+cGxhbl93aWR0aCA9IG1taW5mby0+cGF0aC0+cGF0aHRhcmdldC0+d2lkdGg7Ci0JCXBs YW4tPnBhcmFsbGVsX2F3YXJlID0gZmFsc2U7Ci0JCXBsYW4tPnBhcmFsbGVsX3NhZmUgPSBtbWlu Zm8tPnBhdGgtPnBhcmFsbGVsX3NhZmU7CisJCXBwbGFuLT5kaXNhYmxlZF9ub2RlcyA9IG1taW5m by0+cGF0aC0+ZGlzYWJsZWRfbm9kZXM7CisJCXBwbGFuLT5zdGFydHVwX2Nvc3QgPSBtbWluZm8t PnBhdGgtPnN0YXJ0dXBfY29zdDsKKwkJcHBsYW4tPnRvdGFsX2Nvc3QgPSBtbWluZm8tPnBhdGhj b3N0OworCQlwcGxhbi0+cGxhbl9yb3dzID0gMTsKKwkJcHBsYW4tPnBsYW5fd2lkdGggPSBtbWlu Zm8tPnBhdGgtPnBhdGh0YXJnZXQtPndpZHRoOworCQlwcGxhbi0+cGFyYWxsZWxfYXdhcmUgPSBm YWxzZTsKKwkJcHBsYW4tPnBhcmFsbGVsX3NhZmUgPSBtbWluZm8tPnBhdGgtPnBhcmFsbGVsX3Nh ZmU7CiAKIAkJLyogQ29udmVydCB0aGUgcGxhbiBpbnRvIGFuIEluaXRQbGFuIGluIHRoZSBvdXRl ciBxdWVyeS4gKi8KLQkJU1NfbWFrZV9pbml0cGxhbl9mcm9tX3BsYW4ocm9vdCwgc3Vicm9vdCwg cGxhbiwgbW1pbmZvLT5wYXJhbSk7CisJCVNTX21ha2VfaW5pdHBsYW5fZnJvbV9wbGFuKHJvb3Qs IHN1YnJvb3QsIHBwbGFuLCBtbWluZm8tPnBhcmFtKTsKIAl9CiAKIAkvKiBHZW5lcmF0ZSB0aGUg b3V0cHV0IHBsYW4gLS0tIGJhc2ljYWxseSBqdXN0IGEgUmVzdWx0ICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdGFyZ2V0LmMKaW5kZXggOTA1Yzk3NWQ4M2IuLjYyNDliOWU4NmYyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3RhcmdldC5jCkBAIC0xNjA5LDEwICsxNjA5LDkgQEAgZXhwYW5kUmVjb3JkVmFyaWFi bGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYXIgKnZhciwgaW50IGxldmVsc3VwKQogCQkJCQkgKiBz dWJzZWxlY3QgbXVzdCBoYXZlIHRoYXQgb3V0ZXIgbGV2ZWwgYXMgcGFyZW50LgogCQkJCQkgKi8K IAkJCQkJUGFyc2VTdGF0ZQlteXBzdGF0ZSA9IHswfTsKLQkJCQkJSW5kZXgJCWxldmVsc3VwOwog CiAJCQkJCS8qIHRoaXMgbG9vcCBtdXN0IHdvcmssIHNpbmNlIEdldFJURUJ5UmFuZ2VUYWJsZVBv c24gZGlkICovCi0JCQkJCWZvciAobGV2ZWxzdXAgPSAwOyBsZXZlbHN1cCA8IG5ldGxldmVsc3Vw OyBsZXZlbHN1cCsrKQorCQkJCQlmb3IgKEluZGV4IGx2bHN1cCA9IDA7IGx2bHN1cCA8IG5ldGxl dmVsc3VwOyBsdmxzdXArKykKIAkJCQkJCXBzdGF0ZSA9IHBzdGF0ZS0+cGFyZW50UGFyc2VTdGF0 ZTsKIAkJCQkJbXlwc3RhdGUucGFyZW50UGFyc2VTdGF0ZSA9IHBzdGF0ZTsKIAkJCQkJbXlwc3Rh dGUucF9ydGFibGUgPSBydGUtPnN1YnF1ZXJ5LT5ydGFibGU7CkBAIC0xNjY3LDEyICsxNjY2LDEx IEBAIGV4cGFuZFJlY29yZFZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgVmFyICp2YXIsIGlu dCBsZXZlbHN1cCkKIAkJCQkJICogY291bGQgYmUgYW4gb3V0ZXIgQ1RFIChjb21wYXJlIFNVQlFV RVJZIGNhc2UgYWJvdmUpLgogCQkJCQkgKi8KIAkJCQkJUGFyc2VTdGF0ZQlteXBzdGF0ZSA9IHsw fTsKLQkJCQkJSW5kZXgJCWxldmVsc3VwOwogCiAJCQkJCS8qIHRoaXMgbG9vcCBtdXN0IHdvcmss IHNpbmNlIEdldENURUZvclJURSBkaWQgKi8KLQkJCQkJZm9yIChsZXZlbHN1cCA9IDA7Ci0JCQkJ CQkgbGV2ZWxzdXAgPCBydGUtPmN0ZWxldmVsc3VwICsgbmV0bGV2ZWxzdXA7Ci0JCQkJCQkgbGV2 ZWxzdXArKykKKwkJCQkJZm9yIChJbmRleCBsdmxzdXAgPSAwOworCQkJCQkJIGx2bHN1cCA8IHJ0 ZS0+Y3RlbGV2ZWxzdXAgKyBuZXRsZXZlbHN1cDsKKwkJCQkJCSBsdmxzdXArKykKIAkJCQkJCXBz dGF0ZSA9IHBzdGF0ZS0+cGFyZW50UGFyc2VTdGF0ZTsKIAkJCQkJbXlwc3RhdGUucGFyZW50UGFy c2VTdGF0ZSA9IHBzdGF0ZTsKIAkJCQkJbXlwc3RhdGUucF9ydGFibGUgPSAoKFF1ZXJ5ICopIGN0 ZS0+Y3RlcXVlcnkpLT5ydGFibGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25p bmcvcGFydGRlc2MuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jCmluZGV4 IDMyOGI0ZDQ1MGU0Li43YmVkMDEyNzY3NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0 aW9uaW5nL3BhcnRkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNj LmMKQEAgLTIyNiwxNSArMjI2LDE1IEBAIHJldHJ5OgogCQl7CiAJCQlSZWxhdGlvbglwZ19jbGFz czsKIAkJCVN5c1NjYW5EZXNjIHNjYW47Ci0JCQlTY2FuS2V5RGF0YSBrZXlbMV07CisJCQlTY2Fu S2V5RGF0YSBrWzFdOwogCiAJCQlwZ19jbGFzcyA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlv bklkLCBBY2Nlc3NTaGFyZUxvY2spOwotCQkJU2NhbktleUluaXQoJmtleVswXSwKKwkJCVNjYW5L ZXlJbml0KCZrWzBdLAogCQkJCQkJQW51bV9wZ19jbGFzc19vaWQsCiAJCQkJCQlCVEVxdWFsU3Ry YXRlZ3lOdW1iZXIsIEZfT0lERVEsCiAJCQkJCQlPYmplY3RJZEdldERhdHVtKGluaHJlbGlkKSk7 CiAJCQlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX2NsYXNzLCBDbGFzc09pZEluZGV4SWQs IHRydWUsCi0JCQkJCQkJCQkgIE5VTEwsIDEsIGtleSk7CisJCQkJCQkJCQkgIE5VTEwsIDEsIGsp OwogCiAJCQkvKgogCQkJICogV2UgY291bGQgZ2V0IG9uZSB0dXBsZSBmcm9tIHRoZSBzY2FuICh0 aGUgbm9ybWFsIGNhc2UpLCBvciB6ZXJvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0 aWNzL2RlcGVuZGVuY2llcy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMu YwppbmRleCA2ZjYzYjRmM2ZmYi4uNWMyMjRiZDQ4MTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9k ZXBlbmRlbmNpZXMuYwpAQCAtMTA5OCwxNyArMTA5OCwxNyBAQCBkZXBlbmRlbmN5X2lzX2NvbXBh dGlibGVfZXhwcmVzc2lvbihOb2RlICpjbGF1c2UsIEluZGV4IHJlbGlkLCBMaXN0ICpzdGF0bGlz dCwgTgogCWlmIChpc19vcGNsYXVzZShjbGF1c2UpKQogCXsKIAkJLyogSWYgaXQncyBhbiBvcGNs YXVzZSwgY2hlY2sgZm9yIFZhciA9IENvbnN0IG9yIENvbnN0ID0gVmFyLiAqLwotCQlPcEV4cHIJ ICAgKmV4cHIgPSAoT3BFeHByICopIGNsYXVzZTsKKwkJT3BFeHByCSAgICpvcGV4cHIgPSAoT3BF eHByICopIGNsYXVzZTsKIAogCQkvKiBPbmx5IGV4cHJlc3Npb25zIHdpdGggdHdvIGFyZ3VtZW50 cyBhcmUgY2FuZGlkYXRlcy4gKi8KLQkJaWYgKGxpc3RfbGVuZ3RoKGV4cHItPmFyZ3MpICE9IDIp CisJCWlmIChsaXN0X2xlbmd0aChvcGV4cHItPmFyZ3MpICE9IDIpCiAJCQlyZXR1cm4gZmFsc2U7 CiAKIAkJLyogTWFrZSBzdXJlIG5vbi1zZWxlY3RlZCBhcmd1bWVudCBpcyBhIHBzZXVkb2NvbnN0 YW50LiAqLwotCQlpZiAoaXNfcHNldWRvX2NvbnN0YW50X2NsYXVzZShsc2Vjb25kKGV4cHItPmFy Z3MpKSkKLQkJCWNsYXVzZV9leHByID0gbGluaXRpYWwoZXhwci0+YXJncyk7Ci0JCWVsc2UgaWYg KGlzX3BzZXVkb19jb25zdGFudF9jbGF1c2UobGluaXRpYWwoZXhwci0+YXJncykpKQotCQkJY2xh dXNlX2V4cHIgPSBsc2Vjb25kKGV4cHItPmFyZ3MpOworCQlpZiAoaXNfcHNldWRvX2NvbnN0YW50 X2NsYXVzZShsc2Vjb25kKG9wZXhwci0+YXJncykpKQorCQkJY2xhdXNlX2V4cHIgPSBsaW5pdGlh bChvcGV4cHItPmFyZ3MpOworCQllbHNlIGlmIChpc19wc2V1ZG9fY29uc3RhbnRfY2xhdXNlKGxp bml0aWFsKG9wZXhwci0+YXJncykpKQorCQkJY2xhdXNlX2V4cHIgPSBsc2Vjb25kKG9wZXhwci0+ YXJncyk7CiAJCWVsc2UKIAkJCXJldHVybiBmYWxzZTsKIApAQCAtMTEyNCw3ICsxMTI0LDcgQEAg ZGVwZW5kZW5jeV9pc19jb21wYXRpYmxlX2V4cHJlc3Npb24oTm9kZSAqY2xhdXNlLCBJbmRleCBy ZWxpZCwgTGlzdCAqc3RhdGxpc3QsIE4KIAkJICogc2VsZWN0aXZpdHkgZnVuY3Rpb25zLCBhbmQg dG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggZGVjaXNpb25zCiAJCSAqIGVsc2V3aGVyZSBpbiB0 aGUgcGxhbm5lci4KIAkJICovCi0JCWlmIChnZXRfb3BycmVzdChleHByLT5vcG5vKSAhPSBGX0VR U0VMKQorCQlpZiAoZ2V0X29wcnJlc3Qob3BleHByLT5vcG5vKSAhPSBGX0VRU0VMKQogCQkJcmV0 dXJuIGZhbHNlOwogCiAJCS8qIE9LIHRvIHByb2NlZWQgd2l0aCBjaGVja2luZyAidmFyIiAqLwpA QCAtMTEzMiw3ICsxMTMyLDcgQEAgZGVwZW5kZW5jeV9pc19jb21wYXRpYmxlX2V4cHJlc3Npb24o Tm9kZSAqY2xhdXNlLCBJbmRleCByZWxpZCwgTGlzdCAqc3RhdGxpc3QsIE4KIAllbHNlIGlmIChJ c0EoY2xhdXNlLCBTY2FsYXJBcnJheU9wRXhwcikpCiAJewogCQkvKiBJZiBpdCdzIGEgc2NhbGFy IGFycmF5IG9wZXJhdG9yLCBjaGVjayBmb3IgVmFyIElOIENvbnN0LiAqLwotCQlTY2FsYXJBcnJh eU9wRXhwciAqZXhwciA9IChTY2FsYXJBcnJheU9wRXhwciAqKSBjbGF1c2U7CisJCVNjYWxhckFy cmF5T3BFeHByICpvcGV4cHIgPSAoU2NhbGFyQXJyYXlPcEV4cHIgKikgY2xhdXNlOwogCiAJCS8q CiAJCSAqIFJlamVjdCBBTEwoKSB2YXJpYW50LCB3ZSBvbmx5IGNhcmUgYWJvdXQgQU5ZL0lOLgpA QCAtMTE0MCwyMSArMTE0MCwyMSBAQCBkZXBlbmRlbmN5X2lzX2NvbXBhdGlibGVfZXhwcmVzc2lv bihOb2RlICpjbGF1c2UsIEluZGV4IHJlbGlkLCBMaXN0ICpzdGF0bGlzdCwgTgogCQkgKiBGSVhN RSBNYXliZSB3ZSBzaG91bGQgY2hlY2sgaWYgYWxsIHRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lLCBh bmQKIAkJICogYWxsb3cgQUxMIGluIHRoYXQgY2FzZT8gRG9lc24ndCBzZWVtIHZlcnkgcHJhY3Rp Y2FsLCB0aG91Z2guCiAJCSAqLwotCQlpZiAoIWV4cHItPnVzZU9yKQorCQlpZiAoIW9wZXhwci0+ dXNlT3IpCiAJCQlyZXR1cm4gZmFsc2U7CiAKIAkJLyogT25seSBleHByZXNzaW9ucyB3aXRoIHR3 byBhcmd1bWVudHMgYXJlIGNhbmRpZGF0ZXMuICovCi0JCWlmIChsaXN0X2xlbmd0aChleHByLT5h cmdzKSAhPSAyKQorCQlpZiAobGlzdF9sZW5ndGgob3BleHByLT5hcmdzKSAhPSAyKQogCQkJcmV0 dXJuIGZhbHNlOwogCiAJCS8qCiAJCSAqIFdlIGtub3cgaXQncyBhbHdheXMgKFZhciBJTiBDb25z dCksIHNvIHdlIGFzc3VtZSB0aGUgdmFyIGlzIHRoZQogCQkgKiBmaXJzdCBhcmd1bWVudCwgYW5k IHBzZXVkb2NvbnN0YW50IGlzIHRoZSBzZWNvbmQgb25lLgogCQkgKi8KLQkJaWYgKCFpc19wc2V1 ZG9fY29uc3RhbnRfY2xhdXNlKGxzZWNvbmQoZXhwci0+YXJncykpKQorCQlpZiAoIWlzX3BzZXVk b19jb25zdGFudF9jbGF1c2UobHNlY29uZChvcGV4cHItPmFyZ3MpKSkKIAkJCXJldHVybiBmYWxz ZTsKIAotCQljbGF1c2VfZXhwciA9IGxpbml0aWFsKGV4cHItPmFyZ3MpOworCQljbGF1c2VfZXhw ciA9IGxpbml0aWFsKG9wZXhwci0+YXJncyk7CiAKIAkJLyoKIAkJICogSWYgaXQncyBub3QgYW4g Ij0iIG9wZXJhdG9yLCBqdXN0IGlnbm9yZSB0aGUgY2xhdXNlLCBhcyBpdCdzIG5vdApAQCAtMTE2 Myw3ICsxMTYzLDcgQEAgZGVwZW5kZW5jeV9pc19jb21wYXRpYmxlX2V4cHJlc3Npb24oTm9kZSAq Y2xhdXNlLCBJbmRleCByZWxpZCwgTGlzdCAqc3RhdGxpc3QsIE4KIAkJICogc2VsZWN0aXZpdHku IFRoYXQncyBhIGJpdCBzdHJhbmdlLCBidXQgaXQncyB3aGF0IG90aGVyIHNpbWlsYXIKIAkJICog cGxhY2VzIGRvLgogCQkgKi8KLQkJaWYgKGdldF9vcHJyZXN0KGV4cHItPm9wbm8pICE9IEZfRVFT RUwpCisJCWlmIChnZXRfb3BycmVzdChvcGV4cHItPm9wbm8pICE9IEZfRVFTRUwpCiAJCQlyZXR1 cm4gZmFsc2U7CiAKIAkJLyogT0sgdG8gcHJvY2VlZCB3aXRoIGNoZWNraW5nICJ2YXIiICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMgYi9zcmMv YmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKaW5kZXggM2MzZDJkMzE1YzYuLjBk OTNiMGFmN2UyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0 YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBAIC0x MDQxLDcgKzEwNDEsNyBAQCBidWlsZF9zb3J0ZWRfaXRlbXMoU3RhdHNCdWlsZERhdGEgKmRhdGEs IGludCAqbml0ZW1zLAogCQlmb3IgKGogPSAwOyBqIDwgbnVtYXR0cnM7IGorKykKIAkJewogCQkJ RGF0dW0JCXZhbHVlOwotCQkJYm9vbAkJaXNudWxsOworCQkJYm9vbAkJaXNfbnVsbDsKIAkJCWlu dAkJCWF0dGxlbjsKIAkJCUF0dHJOdW1iZXIJYXR0bnVtID0gYXR0bnVtc1tqXTsKIApAQCAtMTA1 Nyw3ICsxMDU3LDcgQEAgYnVpbGRfc29ydGVkX2l0ZW1zKFN0YXRzQnVpbGREYXRhICpkYXRhLCBp bnQgKm5pdGVtcywKIAkJCUFzc2VydChpZHggPCBkYXRhLT5uYXR0bnVtcyk7CiAKIAkJCXZhbHVl ID0gZGF0YS0+dmFsdWVzW2lkeF1baV07Ci0JCQlpc251bGwgPSBkYXRhLT5udWxsc1tpZHhdW2ld OworCQkJaXNfbnVsbCA9IGRhdGEtPm51bGxzW2lkeF1baV07CiAJCQlhdHRsZW4gPSB0eXBsZW5b aWR4XTsKIAogCQkJLyoKQEAgLTEwNjksNyArMTA2OSw3IEBAIGJ1aWxkX3NvcnRlZF9pdGVtcyhT dGF0c0J1aWxkRGF0YSAqZGF0YSwgaW50ICpuaXRlbXMsCiAJCQkgKiBvbiB0aGUgYXNzdW1wdGlv biB0aGF0IHRob3NlIGFyZSBzbWFsbCAoYmVsb3cgV0lEVEhfVEhSRVNIT0xEKQogCQkJICogYW5k IHdpbGwgYmUgZGlzY2FyZGVkIGF0IHRoZSBlbmQgb2YgYW5hbHl6ZS4KIAkJCSAqLwotCQkJaWYg KCghaXNudWxsKSAmJiAoYXR0bGVuID09IC0xKSkKKwkJCWlmICgoIWlzX251bGwpICYmIChhdHRs ZW4gPT0gLTEpKQogCQkJewogCQkJCWlmICh0b2FzdF9yYXdfZGF0dW1fc2l6ZSh2YWx1ZSkgPiBX SURUSF9USFJFU0hPTEQpCiAJCQkJewpAQCAtMTA4MSw3ICsxMDgxLDcgQEAgYnVpbGRfc29ydGVk X2l0ZW1zKFN0YXRzQnVpbGREYXRhICpkYXRhLCBpbnQgKm5pdGVtcywKIAkJCX0KIAogCQkJaXRl bXNbbnJvd3NdLnZhbHVlc1tqXSA9IHZhbHVlOwotCQkJaXRlbXNbbnJvd3NdLmlzbnVsbFtqXSA9 IGlzbnVsbDsKKwkJCWl0ZW1zW25yb3dzXS5pc251bGxbal0gPSBpc19udWxsOwogCQl9CiAKIAkJ aWYgKHRvb3dpZGUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9yZWFkX3N0 cmVhbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vcmVhZF9zdHJlYW0uYwppbmRleCAwMzFm ZGU5ZjRjYi4uODk0MDhlOGY0MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlv L3JlYWRfc3RyZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vcmVhZF9zdHJlYW0u YwpAQCAtOTYxLDE5ICs5NjEsMTkgQEAgcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoUmVhZFN0cmVh bSAqc3RyZWFtLCB2b2lkICoqcGVyX2J1ZmZlcl9kYXRhKQogCSAqLwogCWlmIChzdHJlYW0tPnBl cl9idWZmZXJfZGF0YSkKIAl7Ci0JCXZvaWQJICAgKnBlcl9idWZmZXJfZGF0YTsKKwkJdm9pZAkg ICAqZGF0YTsKIAotCQlwZXJfYnVmZmVyX2RhdGEgPSBnZXRfcGVyX2J1ZmZlcl9kYXRhKHN0cmVh bSwKLQkJCQkJCQkJCQkJICBvbGRlc3RfYnVmZmVyX2luZGV4ID09IDAgPwotCQkJCQkJCQkJCQkg IHN0cmVhbS0+cXVldWVfc2l6ZSAtIDEgOgotCQkJCQkJCQkJCQkgIG9sZGVzdF9idWZmZXJfaW5k ZXggLSAxKTsKKwkJZGF0YSA9IGdldF9wZXJfYnVmZmVyX2RhdGEoc3RyZWFtLAorCQkJCQkJCQkg ICBvbGRlc3RfYnVmZmVyX2luZGV4ID09IDAgPworCQkJCQkJCQkgICBzdHJlYW0tPnF1ZXVlX3Np emUgLSAxIDoKKwkJCQkJCQkJICAgb2xkZXN0X2J1ZmZlcl9pbmRleCAtIDEpOwogCiAjaWYgZGVm aW5lZChDTE9CQkVSX0ZSRUVEX01FTU9SWSkKIAkJLyogVGhpcyBhbHNvIHRlbGxzIFZhbGdyaW5k IHRoZSBtZW1vcnkgaXMgIm5vYWNjZXNzIi4gKi8KLQkJd2lwZV9tZW0ocGVyX2J1ZmZlcl9kYXRh LCBzdHJlYW0tPnBlcl9idWZmZXJfZGF0YV9zaXplKTsKKwkJd2lwZV9tZW0oZGF0YSwgc3RyZWFt LT5wZXJfYnVmZmVyX2RhdGFfc2l6ZSk7CiAjZWxpZiBkZWZpbmVkKFVTRV9WQUxHUklORCkKIAkJ LyogVGVsbCBpdCBvdXJzZWx2ZXMuICovCi0JCVZBTEdSSU5EX01BS0VfTUVNX05PQUNDRVNTKHBl cl9idWZmZXJfZGF0YSwKKwkJVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MoZGF0YSwKIAkJCQkJ CQkJICAgc3RyZWFtLT5wZXJfYnVmZmVyX2RhdGFfc2l6ZSk7CiAjZW5kaWYKIAl9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IGYzNzNjZWFkOTVmLi5hZDdkNzIxZTYzOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTExODgsNyArMTE4OCw3IEBAIFJlYWRC dWZmZXJfY29tbW9uKFJlbGF0aW9uIHJlbCwgU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgc21ncl9w ZXJzaXN0ZW5jZSwKIAkgKi8KIAlpZiAodW5saWtlbHkoYmxvY2tOdW0gPT0gUF9ORVcpKQogCXsK LQkJdWludDMyCQlmbGFncyA9IEVCX1NLSVBfRVhURU5TSU9OX0xPQ0s7CisJCXVpbnQzMgkJZmxh ZyA9IEVCX1NLSVBfRVhURU5TSU9OX0xPQ0s7CiAKIAkJLyoKIAkJICogU2luY2Ugbm8tb25lIGVs c2UgY2FuIGJlIGxvb2tpbmcgYXQgdGhlIHBhZ2UgY29udGVudHMgeWV0LCB0aGVyZSBpcwpAQCAt MTE5Niw5ICsxMTk2LDkgQEAgUmVhZEJ1ZmZlcl9jb21tb24oUmVsYXRpb24gcmVsLCBTTWdyUmVs YXRpb24gc21nciwgY2hhciBzbWdyX3BlcnNpc3RlbmNlLAogCQkgKiBsb2NrLgogCQkgKi8KIAkJ aWYgKG1vZGUgPT0gUkJNX1pFUk9fQU5EX0xPQ0sgfHwgbW9kZSA9PSBSQk1fWkVST19BTkRfQ0xF QU5VUF9MT0NLKQotCQkJZmxhZ3MgfD0gRUJfTE9DS19GSVJTVDsKKwkJCWZsYWcgfD0gRUJfTE9D S19GSVJTVDsKIAotCQlyZXR1cm4gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChyZWwpLCBmb3Jr TnVtLCBzdHJhdGVneSwgZmxhZ3MpOworCQlyZXR1cm4gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JF TChyZWwpLCBmb3JrTnVtLCBzdHJhdGVneSwgZmxhZyk7CiAJfQogCiAJaWYgKHJlbCkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRlLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvZGF0ZS5jCmluZGV4IDM0NGY1OGI5MmY3Li5hZjZjMWVjOGRiZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2RhdGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0 ZS5jCkBAIC01NjksMTYgKzU2OSwxNiBAQCBEYXR1bQogZGF0ZV9wbGkoUEdfRlVOQ1RJT05fQVJH UykKIHsKIAlEYXRlQURUCQlkYXRlVmFsID0gUEdfR0VUQVJHX0RBVEVBRFQoMCk7Ci0JaW50MzIJ CWRheXMgPSBQR19HRVRBUkdfSU5UMzIoMSk7CisJaW50MzIJCW5kYXkgPSBQR19HRVRBUkdfSU5U MzIoMSk7CiAJRGF0ZUFEVAkJcmVzdWx0OwogCiAJaWYgKERBVEVfTk9UX0ZJTklURShkYXRlVmFs KSkKIAkJUEdfUkVUVVJOX0RBVEVBRFQoZGF0ZVZhbCk7IC8qIGNhbid0IGNoYW5nZSBpbmZpbml0 eSAqLwogCi0JcmVzdWx0ID0gZGF0ZVZhbCArIGRheXM7CisJcmVzdWx0ID0gZGF0ZVZhbCArIG5k YXk7CiAKIAkvKiBDaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWFsbG93ZWQt cmFuZ2UgKi8KLQlpZiAoKGRheXMgPj0gMCA/IChyZXN1bHQgPCBkYXRlVmFsKSA6IChyZXN1bHQg PiBkYXRlVmFsKSkgfHwKKwlpZiAoKG5kYXkgPj0gMCA/IChyZXN1bHQgPCBkYXRlVmFsKSA6IChy ZXN1bHQgPiBkYXRlVmFsKSkgfHwKIAkJIUlTX1ZBTElEX0RBVEUocmVzdWx0KSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEVUSU1FX1ZBTFVFX09VVF9PRl9SQU5H RSksCkBAIC01OTMsMTMgKzU5MywxMyBAQCBEYXR1bQogZGF0ZV9taWkoUEdfRlVOQ1RJT05fQVJH UykKIHsKIAlEYXRlQURUCQlkYXRlVmFsID0gUEdfR0VUQVJHX0RBVEVBRFQoMCk7Ci0JaW50MzIJ CWRheXMgPSBQR19HRVRBUkdfSU5UMzIoMSk7CisJaW50MzIJCW5kYXkgPSBQR19HRVRBUkdfSU5U MzIoMSk7CiAJRGF0ZUFEVAkJcmVzdWx0OwogCiAJaWYgKERBVEVfTk9UX0ZJTklURShkYXRlVmFs KSkKIAkJUEdfUkVUVVJOX0RBVEVBRFQoZGF0ZVZhbCk7IC8qIGNhbid0IGNoYW5nZSBpbmZpbml0 eSAqLwogCi0JcmVzdWx0ID0gZGF0ZVZhbCAtIGRheXM7CisJcmVzdWx0ID0gZGF0ZVZhbCAtIG5k YXk7CiAKIAkvKiBDaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWFsbG93ZWQt cmFuZ2UgKi8KIAlpZiAoKGRheXMgPj0gMCA/IChyZXN1bHQgPiBkYXRlVmFsKSA6IChyZXN1bHQg PCBkYXRlVmFsKSkgfHwKQEAgLTMyMTAsNyArMzIxMCw3IEBAIHRpbWV0el96b25lKFBHX0ZVTkNU SU9OX0FSR1MpCiAJVGltZVR6QURUICAqdCA9IFBHX0dFVEFSR19USU1FVFpBRFRfUCgxKTsKIAlU aW1lVHpBRFQgICpyZXN1bHQ7CiAJaW50CQkJdHo7Ci0JY2hhcgkJdHpuYW1lW1RaX1NUUkxFTl9N QVggKyAxXTsKKwljaGFyCQl0el9uYW1lW1RaX1NUUkxFTl9NQVggKyAxXTsKIAlpbnQJCQl0eXBl LAogCQkJCXZhbDsKIAlwZ190egkgICAqdHpwOwpAQCAtMzIxOCw5ICszMjE4LDkgQEAgdGltZXR6 X3pvbmUoUEdfRlVOQ1RJT05fQVJHUykKIAkvKgogCSAqIExvb2sgdXAgdGhlIHJlcXVlc3RlZCB0 aW1lem9uZS4KIAkgKi8KLQl0ZXh0X3RvX2NzdHJpbmdfYnVmZmVyKHpvbmUsIHR6bmFtZSwgc2l6 ZW9mKHR6bmFtZSkpOworCXRleHRfdG9fY3N0cmluZ19idWZmZXIoem9uZSwgdHpfbmFtZSwgc2l6 ZW9mKHR6X25hbWUpKTsKIAotCXR5cGUgPSBEZWNvZGVUaW1lem9uZU5hbWUodHpuYW1lLCAmdmFs LCAmdHpwKTsKKwl0eXBlID0gRGVjb2RlVGltZXpvbmVOYW1lKHR6X25hbWUsICZ2YWwsICZ0enAp OwogCiAJaWYgKHR5cGUgPT0gVFpOQU1FX0ZJWEVEX09GRlNFVCkKIAl7CkBAIC0zMjMzLDcgKzMy MzMsNyBAQCB0aW1ldHpfem9uZShQR19GVU5DVElPTl9BUkdTKQogCQlUaW1lc3RhbXBUeiBub3cg PSBHZXRDdXJyZW50VHJhbnNhY3Rpb25TdGFydFRpbWVzdGFtcCgpOwogCQlpbnQJCQlpc2RzdDsK IAotCQl0eiA9IERldGVybWluZVRpbWVab25lQWJicmV2T2Zmc2V0VFMobm93LCB0em5hbWUsIHR6 cCwgJmlzZHN0KTsKKwkJdHogPSBEZXRlcm1pbmVUaW1lWm9uZUFiYnJldk9mZnNldFRTKG5vdywg dHpfbmFtZSwgdHpwLCAmaXNkc3QpOwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2RhdGV0aW1lLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZXRp bWUuYwppbmRleCA2ODBmZWUyYTg0NC4uYzU0ZjE1MDdiNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9kYXRldGltZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRl dGltZS5jCkBAIC02NDIsMTIgKzY0MiwxMiBAQCBBZGp1c3RNaWNyb3NlY29uZHMoaW50NjQgdmFs LCBkb3VibGUgZnZhbCwgaW50NjQgc2NhbGUsCiBzdGF0aWMgYm9vbAogQWRqdXN0RGF5cyhpbnQ2 NCB2YWwsIGludCBzY2FsZSwgc3RydWN0IHBnX2l0bV9pbiAqaXRtX2luKQogewotCWludAkJCWRh eXM7CisJaW50CQkJbmRheTsKIAogCWlmICh2YWwgPCBJTlRfTUlOIHx8IHZhbCA+IElOVF9NQVgp CiAJCXJldHVybiBmYWxzZTsKLQlyZXR1cm4gIXBnX211bF9zMzJfb3ZlcmZsb3coKGludDMyKSB2 YWwsIHNjYWxlLCAmZGF5cykgJiYKLQkJIXBnX2FkZF9zMzJfb3ZlcmZsb3coaXRtX2luLT50bV9t ZGF5LCBkYXlzLCAmaXRtX2luLT50bV9tZGF5KTsKKwlyZXR1cm4gIXBnX211bF9zMzJfb3ZlcmZs b3coKGludDMyKSB2YWwsIHNjYWxlLCAmbmRheSkgJiYKKwkJIXBnX2FkZF9zMzJfb3ZlcmZsb3co aXRtX2luLT50bV9tZGF5LCBuZGF5LCAmaXRtX2luLT50bV9tZGF5KTsKIH0KIAogLyoKQEAgLTMy ODUsNyArMzI4NSw3IEBAIERlY29kZVNwZWNpYWwoaW50IGZpZWxkLCBjb25zdCBjaGFyICpsb3d0 b2tlbiwgaW50ICp2YWwpCiAgKiB0aGUgem9uZSBuYW1lIG9yIHRoZSBhYmJyZXZpYXRpb24ncyB1 bmRlcmx5aW5nIHpvbmUuCiAgKi8KIGludAotRGVjb2RlVGltZXpvbmVOYW1lKGNvbnN0IGNoYXIg KnR6bmFtZSwgaW50ICpvZmZzZXQsIHBnX3R6ICoqdHopCitEZWNvZGVUaW1lem9uZU5hbWUoY29u c3QgY2hhciAqdHpfbmFtZSwgaW50ICpvZmZzZXQsIHBnX3R6ICoqdHopCiB7CiAJY2hhcgkgICAq bG93em9uZTsKIAlpbnQJCQlkdGVyciwKQEAgLTMzMDIsOCArMzMwMiw4IEBAIERlY29kZVRpbWV6 b25lTmFtZShjb25zdCBjaGFyICp0em5hbWUsIGludCAqb2Zmc2V0LCBwZ190eiAqKnR6KQogCSAq LwogCiAJLyogRGVjb2RlVGltZXpvbmVBYmJyZXYgcmVxdWlyZXMgbG93ZXJjYXNlIGlucHV0ICov Ci0JbG93em9uZSA9IGRvd25jYXNlX3RydW5jYXRlX2lkZW50aWZpZXIodHpuYW1lLAotCQkJCQkJ CQkJCSAgIHN0cmxlbih0em5hbWUpLAorCWxvd3pvbmUgPSBkb3duY2FzZV90cnVuY2F0ZV9pZGVu dGlmaWVyKHR6X25hbWUsCisJCQkJCQkJCQkJICAgc3RybGVuKHR6X25hbWUpLAogCQkJCQkJCQkJ CSAgIGZhbHNlKTsKIAogCWR0ZXJyID0gRGVjb2RlVGltZXpvbmVBYmJyZXYoMCwgbG93em9uZSwg JnR5cGUsIG9mZnNldCwgdHosICZleHRyYSk7CkBAIC0zMzIzLDExICszMzIzLDExIEBAIERlY29k ZVRpbWV6b25lTmFtZShjb25zdCBjaGFyICp0em5hbWUsIGludCAqb2Zmc2V0LCBwZ190eiAqKnR6 KQogCWVsc2UKIAl7CiAJCS8qIHRyeSBpdCBhcyBhIGZ1bGwgem9uZSBuYW1lICovCi0JCSp0eiA9 IHBnX3R6c2V0KHR6bmFtZSk7CisJCSp0eiA9IHBnX3R6c2V0KHR6X25hbWUpOwogCQlpZiAoKnR6 ID09IE5VTEwpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkJIGVycm1zZygidGltZSB6b25lIFwiJXNcIiBub3Qg cmVjb2duaXplZCIsIHR6bmFtZSkpKTsKKwkJCQkJIGVycm1zZygidGltZSB6b25lIFwiJXNcIiBu b3QgcmVjb2duaXplZCIsIHR6X25hbWUpKSk7CiAJCXJldHVybiBUWk5BTUVfWk9ORTsKIAl9CiB9 CkBAIC0zMzQwLDEyICszMzQwLDEyIEBAIERlY29kZVRpbWV6b25lTmFtZShjb25zdCBjaGFyICp0 em5hbWUsIGludCAqb2Zmc2V0LCBwZ190eiAqKnR6KQogICogcmVzdWx0IGluIGFsbCBjYXNlcy4K ICAqLwogcGdfdHogKgotRGVjb2RlVGltZXpvbmVOYW1lVG9Ueihjb25zdCBjaGFyICp0em5hbWUp CitEZWNvZGVUaW1lem9uZU5hbWVUb1R6KGNvbnN0IGNoYXIgKnR6X25hbWUpCiB7CiAJcGdfdHoJ ICAgKnJlc3VsdDsKIAlpbnQJCQlvZmZzZXQ7CiAKLQlpZiAoRGVjb2RlVGltZXpvbmVOYW1lKHR6 bmFtZSwgJm9mZnNldCwgJnJlc3VsdCkgPT0gVFpOQU1FX0ZJWEVEX09GRlNFVCkKKwlpZiAoRGVj b2RlVGltZXpvbmVOYW1lKHR6X25hbWUsICZvZmZzZXQsICZyZXN1bHQpID09IFRaTkFNRV9GSVhF RF9PRkZTRVQpCiAJewogCQkvKiBmaXhlZC1vZmZzZXQgYWJicmV2aWF0aW9uLCBnZXQgYSBwZ190 eiBkZXNjcmlwdG9yIGZvciB0aGF0ICovCiAJCXJlc3VsdCA9IHBnX3R6c2V0X29mZnNldCgtb2Zm c2V0KTsJLyogZmxpcCB0byBQT1NJWCBzaWduIGNvbnZlbnRpb24gKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv Zm9ybWF0dGluZy5jCmluZGV4IDViZmVkYTJmZmRlLi43YThjN2FhZjc0MiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvZm9ybWF0dGluZy5jCkBAIC0zMDQxLDEyICszMDQxLDEyIEBAIERDSF90b19jaGFyKEZv cm1hdE5vZGUgKm5vZGUsIGJvb2wgaXNfaW50ZXJ2YWwsIFRtVG9DaGFyICppbiwgY2hhciAqb3V0 LCBPaWQgY29sCiAJCQkJZWxzZQogCQkJCXsKIAkJCQkJaW50CQkJbW9uID0gMDsKLQkJCQkJY29u c3QgY2hhciAqY29uc3QgKm1vbnRoczsKKwkJCQkJY29uc3QgY2hhciAqY29uc3QgKm5tb250aDsK IAogCQkJCQlpZiAobi0+a2V5LT5pZCA9PSBEQ0hfUk0pCi0JCQkJCQltb250aHMgPSBybV9tb250 aHNfdXBwZXI7CisJCQkJCQlubW9udGggPSBybV9tb250aHNfdXBwZXI7CiAJCQkJCWVsc2UKLQkJ CQkJCW1vbnRocyA9IHJtX21vbnRoc19sb3dlcjsKKwkJCQkJCW5tb250aCA9IHJtX21vbnRoc19s b3dlcjsKIAogCQkJCQkvKgogCQkJCQkgKiBDb21wdXRlIHRoZSBwb3NpdGlvbiBpbiB0aGUgcm9t YW4tbnVtZXJhbCBhcnJheS4gIE5vdGUKQEAgLTMwODEsNyArMzA4MSw3IEBAIERDSF90b19jaGFy KEZvcm1hdE5vZGUgKm5vZGUsIGJvb2wgaXNfaW50ZXJ2YWwsIFRtVG9DaGFyICppbiwgY2hhciAq b3V0LCBPaWQgY29sCiAJCQkJCX0KIAogCQkJCQlzcHJpbnRmKHMsICIlKnMiLCBJU19TVUZGSVhf Rk0obi0+c3VmZml4KSA/IDAgOiAtNCwKLQkJCQkJCQltb250aHNbbW9uXSk7CisJCQkJCQkJbm1v bnRoW21vbl0pOwogCQkJCQlzICs9IHN0cmxlbihzKTsKIAkJCQl9CiAJCQkJYnJlYWs7CmRpZmYg LS1naXQgYS9zcmMvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmMgYi9zcmMvY29tbW9uL2NvbnRy b2xkYXRhX3V0aWxzLmMKaW5kZXggZmEzNzVkYzkxMjkuLjc4NDY0ZTgyMzdmIDEwMDY0NAotLS0g YS9zcmMvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmMKKysrIGIvc3JjL2NvbW1vbi9jb250cm9s ZGF0YV91dGlscy5jCkBAIC00OSwxMSArNDksMTEgQEAKICAqIGZpbGUgZGF0YSBpcyBjb3JyZWN0 LgogICovCiBDb250cm9sRmlsZURhdGEgKgotZ2V0X2NvbnRyb2xmaWxlKGNvbnN0IGNoYXIgKkRh dGFEaXIsIGJvb2wgKmNyY19va19wKQorZ2V0X2NvbnRyb2xmaWxlKGNvbnN0IGNoYXIgKmRhdGFf ZGlyLCBib29sICpjcmNfb2tfcCkKIHsKIAljaGFyCQlDb250cm9sRmlsZVBhdGhbTUFYUEdQQVRI XTsKIAotCXNucHJpbnRmKENvbnRyb2xGaWxlUGF0aCwgTUFYUEdQQVRILCAiJXMvJXMiLCBEYXRh RGlyLCBYTE9HX0NPTlRST0xfRklMRSk7CisJc25wcmludGYoQ29udHJvbEZpbGVQYXRoLCBNQVhQ R1BBVEgsICIlcy8lcyIsIGRhdGFfZGlyLCBYTE9HX0NPTlRST0xfRklMRSk7CiAKIAlyZXR1cm4g Z2V0X2NvbnRyb2xmaWxlX2J5X2V4YWN0X3BhdGgoQ29udHJvbEZpbGVQYXRoLCBjcmNfb2tfcCk7 CiB9CkBAIC0xODYsNyArMTg2LDcgQEAgcmV0cnk6CiAgKiByb3V0aW5lIGluIHRoZSBiYWNrZW5k LgogICovCiB2b2lkCi11cGRhdGVfY29udHJvbGZpbGUoY29uc3QgY2hhciAqRGF0YURpciwKK3Vw ZGF0ZV9jb250cm9sZmlsZShjb25zdCBjaGFyICpkYXRhX2RpciwKIAkJCQkgICBDb250cm9sRmls ZURhdGEgKkNvbnRyb2xGaWxlLCBib29sIGRvX3N5bmMpCiB7CiAJaW50CQkJZmQ7CkBAIC0yMTEs NyArMjExLDcgQEAgdXBkYXRlX2NvbnRyb2xmaWxlKGNvbnN0IGNoYXIgKkRhdGFEaXIsCiAJbWVt c2V0KGJ1ZmZlciwgMCwgUEdfQ09OVFJPTF9GSUxFX1NJWkUpOwogCW1lbWNweShidWZmZXIsIENv bnRyb2xGaWxlLCBzaXplb2YoQ29udHJvbEZpbGVEYXRhKSk7CiAKLQlzbnByaW50ZihDb250cm9s RmlsZVBhdGgsIHNpemVvZihDb250cm9sRmlsZVBhdGgpLCAiJXMvJXMiLCBEYXRhRGlyLCBYTE9H X0NPTlRST0xfRklMRSk7CisJc25wcmludGYoQ29udHJvbEZpbGVQYXRoLCBzaXplb2YoQ29udHJv bEZpbGVQYXRoKSwgIiVzLyVzIiwgZGF0YV9kaXIsIFhMT0dfQ09OVFJPTF9GSUxFKTsKIAogI2lm bmRlZiBGUk9OVEVORAogCmRpZmYgLS1naXQgYS9zcmMvdGltZXpvbmUvcGd0ei5jIGIvc3JjL3Rp bWV6b25lL3BndHouYwppbmRleCA1MDRjMDIzNWZmYi4uM2E5MDA2YjIxMTYgMTAwNjQ0Ci0tLSBh L3NyYy90aW1lem9uZS9wZ3R6LmMKKysrIGIvc3JjL3RpbWV6b25lL3BndHouYwpAQCAtMjMxLDcg KzIzMSw3IEBAIGluaXRfdGltZXpvbmVfaGFzaHRhYmxlKHZvaWQpCiAgKiBkZWZhdWx0IHRpbWV6 b25lIHNldHRpbmcgaXMgbGF0ZXIgb3ZlcnJpZGRlbiBmcm9tIHBvc3RncmVzcWwuY29uZi4KICAq LwogcGdfdHogKgotcGdfdHpzZXQoY29uc3QgY2hhciAqdHpuYW1lKQorcGdfdHpzZXQoY29uc3Qg Y2hhciAqdHpfbmFtZSkKIHsKIAlwZ190el9jYWNoZSAqdHpwOwogCXN0cnVjdCBzdGF0ZSB0enN0 YXRlOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHBnX3R6c2V0KGNvbnN0IGNoYXIgKnR6bmFtZSkKIAlj aGFyCQljYW5vbm5hbWVbVFpfU1RSTEVOX01BWCArIDFdOwogCWNoYXIJICAgKnA7CiAKLQlpZiAo c3RybGVuKHR6bmFtZSkgPiBUWl9TVFJMRU5fTUFYKQorCWlmIChzdHJsZW4odHpfbmFtZSkgPiBU Wl9TVFJMRU5fTUFYKQogCQlyZXR1cm4gTlVMTDsJCQkvKiBub3QgZ29pbmcgdG8gZml0ICovCiAK IAlpZiAoIXRpbWV6b25lX2NhY2hlKQpAQCAtMjUzLDggKzI1Myw4IEBAIHBnX3R6c2V0KGNvbnN0 IGNoYXIgKnR6bmFtZSkKIAkgKiBhIFBPU0lYLXN0eWxlIHRpbWV6b25lIHNwZWMuKQogCSAqLwog CXAgPSB1cHBlcm5hbWU7Ci0Jd2hpbGUgKCp0em5hbWUpCi0JCSpwKysgPSBwZ190b3VwcGVyKCh1 bnNpZ25lZCBjaGFyKSAqdHpuYW1lKyspOworCXdoaWxlICgqdHpfbmFtZSkKKwkJKnArKyA9IHBn X3RvdXBwZXIoKHVuc2lnbmVkIGNoYXIpICp0el9uYW1lKyspOwogCSpwID0gJ1wwJzsKIAogCXR6 cCA9IChwZ190el9jYWNoZSAqKSBoYXNoX3NlYXJjaCh0aW1lem9uZV9jYWNoZSwKQEAgLTMyMSw3 ICszMjEsNyBAQCBwZ190enNldF9vZmZzZXQobG9uZyBnbXRvZmZzZXQpCiB7CiAJbG9uZwkJYWJz b2Zmc2V0ID0gKGdtdG9mZnNldCA8IDApID8gLWdtdG9mZnNldCA6IGdtdG9mZnNldDsKIAljaGFy CQlvZmZzZXRzdHJbNjRdOwotCWNoYXIJCXR6bmFtZVsxMjhdOworCWNoYXIJCXR6X25hbWVbMTI4 XTsKIAogCXNucHJpbnRmKG9mZnNldHN0ciwgc2l6ZW9mKG9mZnNldHN0ciksCiAJCQkgIiUwMmxk IiwgYWJzb2Zmc2V0IC8gU0VDU19QRVJfSE9VUik7CkBAIC0zMzgsMTMgKzMzOCwxMyBAQCBwZ190 enNldF9vZmZzZXQobG9uZyBnbXRvZmZzZXQpCiAJCQkJCSAiOiUwMmxkIiwgYWJzb2Zmc2V0KTsK IAl9CiAJaWYgKGdtdG9mZnNldCA+IDApCi0JCXNucHJpbnRmKHR6bmFtZSwgc2l6ZW9mKHR6bmFt ZSksICI8LSVzPislcyIsCisJCXNucHJpbnRmKHR6X25hbWUsIHNpemVvZih0el9uYW1lKSwgIjwt JXM+KyVzIiwKIAkJCQkgb2Zmc2V0c3RyLCBvZmZzZXRzdHIpOwogCWVsc2UKLQkJc25wcmludGYo dHpuYW1lLCBzaXplb2YodHpuYW1lKSwgIjwrJXM+LSVzIiwKKwkJc25wcmludGYodHpfbmFtZSwg c2l6ZW9mKHR6X25hbWUpLCAiPCslcz4tJXMiLAogCQkJCSBvZmZzZXRzdHIsIG9mZnNldHN0cik7 CiAKLQlyZXR1cm4gcGdfdHpzZXQodHpuYW1lKTsKKwlyZXR1cm4gcGdfdHpzZXQodHpfbmFtZSk7 CiB9CiAKIAotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000a14e9e0644a341d1--