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.94.2) (envelope-from ) id 1sm9Do-003b2l-Sq for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Sep 2024 09:56:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sm9Dn-007NXR-48 for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Sep 2024 09:56:11 +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.94.2) (envelope-from ) id 1sm9Dm-007NWH-1W for pgsql-hackers@lists.postgresql.org; Thu, 05 Sep 2024 09:56:11 +0000 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sm9Dh-000G26-Hn for pgsql-hackers@postgresql.org; Thu, 05 Sep 2024 09:56:09 +0000 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-268eec6c7c1so302396fac.3 for ; Thu, 05 Sep 2024 02:56:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725530165; x=1726134965; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=qfqBR6QEJuzxWOQK+gftsy+DXzptsmL0HjAUu3kiOKw=; b=RlQp8J7R1T+mnz2MYP3XmihOuAWnH99QM66v8T6pf7MuV3YY/SVQREbnukukDYcEJZ uiJAd2ltww61BA1lrzYKedXfk9CJtpBnQV7YjR1H0lZxs+LHJDn4dCerlE1CVyNPE2vP 1EyC4E3WOjzxKRIzVUcP0QBdu2/DmTMhsPhWMXcq+5LsIyfl4ssWuTn7Svk/lEmz6cwR treYwp0VbMSGFfLLzrODR9hBQakZ8gaeHrlWflCYUY2bRCF1tmqegOWkDw2agq80EavX qCoGy19lPelsYScBbWxnbApyfvezcBqKGijj57q1g/eBoXYOSlO75lA3MSv9z++96Lw/ tbnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725530165; x=1726134965; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qfqBR6QEJuzxWOQK+gftsy+DXzptsmL0HjAUu3kiOKw=; b=aBvI3dl5fLhf0L5t/QYNte9EmBZGLTAMK2Tsbr1DdyUbLVynNIMRncbdHwJrw1Q2Kr +w5X/1dR6zi5LZt8tbwQuJmvw4QtJk+oGJWythCzbcmLT3T/zB5CFNa8EpnIbdXqTesd E9XTIrkJYssV6Ob4QDZWP/Qh0sxgM5Ii3S2ne5X7knSGDN/+0n7X1Q/GBhKwNjvbgYd6 rN+Pef0gZj/HPs537m9Yhp1umXSt38fiGvtxyzsL5MROI4yqVM6f2lymAAuwsvZfrCTP 6UNqKsuwBvI/CaoSx17AezKUSDFDGFNIxRPySkkvkiT9JFXqFqYy9NQLY8j1fswSb3Ib JtPg== X-Forwarded-Encrypted: i=1; AJvYcCWtdBlCUmHPq9PCotP8GiF86VSAsXFcqyk1YGDz47f8VkzICUEDYNP5DwDy9lPvObFJdoxRUSiMqwINyxgG@postgresql.org X-Gm-Message-State: AOJu0YwtnDO0JI4OaVP3a75aYg/o0yMTqA+0agbryyyKdpVuP99XClKa /tPu/fZvbWsRxP2EGhEzflMArPXa6TSQFemMTsVp/n2BrrBk+QcOq/e+SwPe75qzt3JaWJThOug /QtGzBkFG6JQHQLyT0l7tGJFlGA8= X-Google-Smtp-Source: AGHT+IHPXjrYe3ygegMUimiZY1vTaFzFPwCEbfm5TrbE2xXLFFpC+WKHg1Cq7HXQYcGyZF6TChO2QDWvtcgIyusv9s4= X-Received: by 2002:a05:6871:4f0a:b0:277:d195:ab88 with SMTP id 586e51a60fabf-277d195e35bmr12933805fac.32.1725530164583; Thu, 05 Sep 2024 02:56:04 -0700 (PDT) MIME-Version: 1.0 References: <202406191709.jbvpf7d7hl6g@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Thu, 5 Sep 2024 18:55:47 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Junwang Zhao Cc: Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="00000000000083cd8106215c4cbe" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000083cd8106215c4cbe Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Sep 2, 2024 at 5:19=E2=80=AFPM Amit Langote wrote: > On Sat, Aug 31, 2024 at 9:30=E2=80=AFPM Junwang Zhao = wrote: > > @@ -1241,7 +1244,7 @@ GetCachedPlan(CachedPlanSource *plansource, > > ParamListInfo boundParams, > > if (customplan) > > { > > /* Build a custom plan */ > > - plan =3D BuildCachedPlan(plansource, qlist, boundParams, queryEnv); > > + plan =3D BuildCachedPlan(plansource, qlist, boundParams, queryEnv, tr= ue); > > > > Is the *true* here a typo? Seems it should be *false* for custom plan? > > That's correct, thanks for catching that. Will fix. Done. I've also rewritten the new GetSingleCachedPlan() function in 0003. The most glaring bug in the previous version was that the transient CachedPlan it creates cannot be seen by PlanCacheRelCallback() et al functions because it was intentionally not linked to the CachedPlanSource, so if the CachedPlan would not be invalidated even if some prunable relation got changed before it is locked during ExecutorStart(). I've added a new list standalone_plan_list to add these to and changed the inval callback functions to invalidate any plans contained in them. Another thing I found out through testing is that CachedPlanSource can have become invalid since leaving GetCachedPlan() (actually even before returning from that function) because of PlanCacheSysCallback(), which drops/invalidates *all* plans when a syscache is invalidated. There are comments in plancache.c (see BuildCachedPlan()) saying that such invalidations are, in theory, false positives, but that gave me a pause nonetheless. Finally, instead of calling GetCachedPlan() from GetSingleCachedPlan() to create a plan for only the query whose plan got invalidated, which required a bunch of care to ensure that the CachedPlanSource is not overwritten with the information about this single-query planning, I've made GetSingleCachedPlan() create the PlannedStmt and the detached CachedPlan object on its own, borrowing the minimal necessary code from BuildCachedPlan() to do so. --=20 Thanks, Amit Langote --00000000000083cd8106215c4cbe Content-Type: application/octet-stream; name="v52-0001-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Disposition: attachment; filename="v52-0001-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0p43e920 RnJvbSA3NDkwNmM0YmJjNDJiMzYyZjdhNTYwODc3NGFmNjg2MTVhMjk5OTEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNyBBdWcgMjAyNCAxODoyNTo1MSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjUy IDEvM10gRGVmZXIgbG9ja2luZyBvZiBydW50aW1lLXBydW5hYmxlIHJlbGF0aW9ucyB0bwogZXhl Y3V0b3IKCldoZW4gcHJlcGFyaW5nIGEgY2FjaGVkIHBsYW4gZm9yIGV4ZWN1dGlvbiwgcGxhbmNh Y2hlLmMgbG9ja3MgdGhlCnJlbGF0aW9ucyBjb250YWluZWQgaW4gdGhlIHBsYW4ncyByYW5nZSB0 YWJsZSB0byBlbnN1cmUgaXQgaXMgc2FmZSBmb3IKZXhlY3V0aW9uLiBIb3dldmVyLCB0aGlzIHNp bXBsaXN0aWMgYXBwcm9hY2gsIGltcGxlbWVudGVkIGluCkFjcXVpcmVFeGVjdXRvckxvY2tzKCks IHJlc3VsdHMgaW4gdW5uZWNlc3NhcmlseSBsb2NraW5nIHJlbGF0aW9ucyB0aGF0Cm1pZ2h0IGJl IHBydW5lZCBkdXJpbmcgImluaXRpYWwiIHJ1bnRpbWUgcHJ1bmluZy4KClRvIG9wdGltaXplIHRo aXMsIHRoZSBsb2NraW5nIGlzIG5vdyBkZWZlcnJlZCBmb3IgcmVsYXRpb25zIHRoYXQgYXJlCnN1 YmplY3QgdG8gImluaXRpYWwiIHJ1bnRpbWUgcHJ1bmluZy4gVGhlIHBsYW5uZXIgbm93IHByb3Zp ZGVzIGEgc2V0Cm9mICJ1bnBydW5hYmxlIiByZWxhdGlvbnMsIGF2YWlsYWJsZSB0aHJvdWdoIHRo ZSBuZXcKUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcyBmaWVsZC4gIEFjcXVpcmVFeGVjdXRv ckxvY2tzKCkgd2lsbCBub3cKb25seSBsb2NrIHRob3NlIHJlbGF0aW9ucy4KClBsYW5uZWRTdG10 LnVucHJ1bmFibGVSZWxpZHMgaXMgcG9wdWxhdGVkIGJ5IHN1YnRyYWN0aW5nIHRoZSBzZXQgb2YK aW5pdGlhbGx5IHBydW5hYmxlIHJlbGlkcyBmcm9tIHRoZSBzZXQgb2YgYWxsIFJUIGluZGV4ZXMu IFRoZSBwcnVuYWJsZQpyZWxpZHMgc2V0IGlzIGNvbnN0cnVjdGVkIGJ5IGV4YW1pbmluZyBhbGwg UGFydGl0aW9uUHJ1bmVJbmZvcyBkdXJpbmcKc2V0X3BsYW5fcmVmcygpIGFuZCBzdG9yaW5nIHRo ZSBSVCBpbmRleGVzIG9mIHBhcnRpdGlvbnMgc3ViamVjdCB0bwoiaW5pdGlhbCIgcHJ1bmluZyBz dGVwcy4gV2hpbGUgYXQgaXQsIHNvbWUgZHVwbGljYXRlZCBjb2RlIGluCnNldF9hcHBlbmRfcmVm ZXJlbmNlcygpIGFuZCBzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcygpIHRoYXQKY29uc3RydWN0 cyB0aGUgcHJ1bmFibGUgcmVsaWRzIHNldCBoYXMgYmVlbiByZWZhY3RvcmVkIGludG8gYSBjb21t b24KZnVuY3Rpb24uCgpUbyBlbmFibGUgdGhlIGV4ZWN1dG9yIHRvIGRldGVybWluZSB3aGV0aGVy IHRoZSBwbGFuIHRyZWUgaXQncwpleGVjdXRpbmcgaXMgYSBjYWNoZWQgb25lLCB0aGUgQ2FjaGVk UGxhbiBpcyBub3cgbWFkZSBhdmFpbGFibGUgdmlhCnRoZSBRdWVyeURlc2MuIFRoZSBleGVjdXRv ciBjYW4gY2FsbCBDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nKCksCndoaWNoIHJldHVybnMgdHJ1 ZSBpZiB0aGUgQ2FjaGVkUGxhbiBpcyBhIHJldXNhYmxlIGdlbmVyaWMgcGxhbiB0aGF0Cm1pZ2h0 IGNvbnRhaW4gcmVsYXRpb25zIG5lZWRpbmcgdG8gYmUgbG9ja2VkLiBJZiBzbywgdGhlIGV4ZWN1 dG9yCndpbGwgbG9jayBhbnkgcmVsYXRpb24gdGhhdCBpcyBub3QgaW4gUGxhbm5lZFN0bXQudW5w cnVuYWJsZVJlbGlkcy4KCkZpbmFsbHksIGFuIEFzc2VydCBoYXMgYmVlbiBhZGRlZCBpbiBFeGVj Q2hlY2tQZXJtaXNzaW9ucygpIHRvIGVuc3VyZQp0aGF0IGFsbCByZWxhdGlvbnMgd2hvc2UgcGVy bWlzc2lvbnMgYXJlIGNoZWNrZWQgaGF2ZSBiZWVuIHByb3Blcmx5CmxvY2tlZC4gVGhpcyBoZWxw cyBjYXRjaCBhbnkgYWNjaWRlbnRhbCBvbWlzc2lvbiBvZiByZWxhdGlvbnMgZnJvbSB0aGUKdW5w cnVuYWJsZVJlbGlkcyBzZXQgdGhhdCBzaG91bGQgaGF2ZSB0aGVpciBwZXJtaXNzaW9ucyBjaGVj a2VkLgoKVGhpcyBkZWZlcm1lbnQgaW50cm9kdWNlcyBhIHdpbmRvdyBpbiB3aGljaCBwcnVuYWJs ZSByZWxhdGlvbnMgbWF5IGJlCmFsdGVyZWQgYnkgY29uY3VycmVudCBEREwsIHBvdGVudGlhbGx5 IGNhdXNpbmcgdGhlIHBsYW4gdG8gYmVjb21lCmludmFsaWQuIEFzIGEgcmVzdWx0LCB0aGUgZXhl Y3V0b3IgbWlnaHQgYXR0ZW1wdCB0byBydW4gYW4gaW52YWxpZCBwbGFuLApsZWFkaW5nIHRvIGVy cm9ycyBzdWNoIGFzIGJlaW5nIHVuYWJsZSB0byBsb2NhdGUgYSBwYXJ0aXRpb24tb25seSBpbmRl eApkdXJpbmcgRXhlY0luaXRJbmRleFNjYW4oKS4gRnV0dXJlIGNvbW1pdHMgd2lsbCBpbnRyb2R1 Y2UgY2hhbmdlcyB0bwpyZWFkeSB0aGUgZXhlY3V0b3IgdG8gY2hlY2sgcGxhbiB2YWxpZGl0eSBk dXJpbmcgRXhlY3V0b3JTdGFydCgpIGFuZApyZXRyeSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBwbGFu IGlmIHRoZSBvcmlnaW5hbCBvbmUgYmVjb21lcyBpbnZhbGlkCmFmdGVyIHRha2luZyBkZWZlcnJl ZCBsb2Nrcy4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICB8ICA3ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2V4dGVuc2lvbi5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgfCAg MyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgIHwgMTggKysrKysrKysK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICB8ICA5ICsrKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICB8IDMwICsrKysrKysrKysrKystCiBzcmMvYmFj a2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9zcGkuYyAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMgfCAgMiArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgfCA2MiAr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dHBydW5lLmMgfCAyNCArKysrKysrKysrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3Iu YyAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgIHwgMTAg KysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICB8ICAxIC0KIHNyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICB8IDQwICsrKysrKysrKysrLS0tLS0tLQog c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgIHwgIDUgKystCiBzcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgfCAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCAgICAgICAgfCAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAg ICAgfCAgNiArKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICB8IDExICsr KysrCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgfCAxMCArKysrKwogMjQg ZmlsZXMgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weXRvLmMKaW5kZXggOTFkZTQ0MmY0My4uZGI5NzZmOTI4YSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eXRvLmMKQEAgLTU1Miw3ICs1NTIsNyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUs CiAJCSgoRFJfY29weSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRlOwogCiAJCS8qIENyZWF0ZSBh IFF1ZXJ5RGVzYyByZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQljc3RhdGUtPnF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJY3N0YXRlLT5x dWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRlLT5wX3NvdXJjZXRl eHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRT bmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3Jl YXRlYXMuYwppbmRleCAwYjYyOWIxZjc5Li41N2EzMzc1Y2FkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0 ZWFzLmMKQEAgLTMyNCw3ICszMjQsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENv bW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0 IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo cGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVz YyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlF bnYsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggMTFkZjRhMDRkNC4uYTgzZWEwN2Ri MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNTA3LDcgKzUwNyw3IEBAIHN0YW5kYXJkX0V4 cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCX0KIAogCS8q IHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KLQlFeHBsYWluT25lUGxh bihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCisJRXhwbGFp bk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5 RW52LAogCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5V TEwpLAogCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJzIDogTlVMTCk7CiB9CkBAIC02 MTUsNyArNjE1LDggQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9D bGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAgKiB0byBjYWxsIGl0LgogICovCiB2b2lk Ci1FeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFp blN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZv IHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90 aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsCkBA IC02NzEsNyArNjcyLDcgQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlkZXN0ID0gTm9uZV9SZWNl aXZlcjsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5ICovCi0JcXVlcnlE ZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRzdG10LCBxdWVyeVN0cmluZywKKwlxdWVyeURl c2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIGNwbGFuLCBxdWVyeVN0cmluZywKIAkJ CQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0 LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMKaW5kZXggMTY0M2M4YzY5YS4uM2Y3ZjQzMDZmZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMKQEAgLTc5OCw2ICs3OTgsNyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hh ciAqc3FsKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVy eURlc2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJCQkJCQkJCQlH ZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDAp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IDkxZjBmZDZlYTMuLmE3YTc5NTgzZWMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9tYXR2aWV3LmMKQEAgLTQzOCw3ICs0MzgsNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0 YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25h cHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcg b3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxh biwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFs aWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYwppbmRleCAwNzI1N2Q0ZGI5Li4zMTFiOWViZDViIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFy ZS5jCkBAIC02NTUsNyArNjU1LDggQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAq ZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCVBsYW5uZWRT dG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBwKTsKIAogCQlpZiAocHN0bXQt PmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGlu dG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHF1ZXJ5RW52LAorCQkJRXhwbGFpbk9uZVBs YW4ocHN0bXQsIGNwbGFuLCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAorCQkJCQkJ ICAgcXVlcnlFbnYsCiAJCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVm dXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJzIDogTlVM TCk7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDI5ZTE4NmZhNzMuLjI3MWY5 ZDkzZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2lu Y2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3Iu aCIKICNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNp bmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgpAQCAtNTk3LDYgKzU5OCwyMSBAQCBFeGVj Q2hlY2tQZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpydGVwZXJtaW5mb3MsCiAJ CQkJICAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYKIAkJCQkJcnRlLT5yZWxraW5k ID09IFJFTEtJTkRfVklFVykpOwogCisJCQkvKgorCQkJICogRW5zdXJlIHRoYXQgd2UgaGF2ZSBh dCBsZWFzdCBhbiBBY2Nlc3NTaGFyZUxvY2sgb24gcmVsYXRpb25zCisJCQkgKiB3aG9zZSBwZXJt aXNzaW9ucyBuZWVkIHRvIGJlIGNoZWNrZWQuCisJCQkgKgorCQkJICogU2tpcCB0aGlzIGNoZWNr IGluIGEgcGFyYWxsZWwgd29ya2VyIGJlY2F1c2UgbG9ja3Mgd29uJ3QgYmUKKwkJCSAqIHRha2Vu IHVudGlsIEV4ZWNJbml0Tm9kZSgpIHBlcmZvcm1zIHBsYW4gaW5pdGlhbGl6YXRpb24uCisJCQkg KgorCQkJICogWFhYOiBFeGVjQ2hlY2tQZXJtaXNzaW9ucygpIGluIGEgcGFyYWxsZWwgd29ya2Vy IG1heSBiZQorCQkJICogcmVkdW5kYW50IHdpdGggdGhlIGNoZWNrcyBkb25lIGluIHRoZSBsZWFk ZXIgcHJvY2Vzcywgc28gdGhpcworCQkJICogc2hvdWxkIGJlIHJldmlld2VkIHRvIGVuc3VyZSBp dOKAmXMgbmVjZXNzYXJ5LgorCQkJICovCisJCQlBc3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpIHx8 CisJCQkJICAgQ2hlY2tSZWxhdGlvbk9pZExvY2tlZEJ5TWUocnRlLT5yZWxpZCwgQWNjZXNzU2hh cmVMb2NrLAorCQkJCQkJCQkJCQkgIHRydWUpKTsKKwogCQkJKHZvaWQpIGdldFJURVBlcm1pc3Np b25JbmZvKHJ0ZXBlcm1pbmZvcywgcnRlKTsKIAkJCS8qIE1hbnktdG8tb25lIG1hcHBpbmcgbm90 IGFsbG93ZWQgKi8KIAkJCUFzc2VydCghYm1zX2lzX21lbWJlcihydGUtPnBlcm1pbmZvaW5kZXgs IGluZGV4c2V0KSk7CkBAIC04MjksNiArODQ1LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpCiB7CiAJQ21kVHlwZQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5v cGVyYXRpb247CiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gcXVlcnlEZXNjLT5wbGFubmVk c3RtdDsKKwlDYWNoZWRQbGFuICpjYWNoZWRwbGFuID0gcXVlcnlEZXNjLT5jcGxhbjsKIAlQbGFu CSAgICpwbGFuID0gcGxhbm5lZHN0bXQtPnBsYW5UcmVlOwogCUxpc3QJICAgKnJhbmdlVGFibGUg PSBwbGFubmVkc3RtdC0+cnRhYmxlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5l c3RhdGU7CkBAIC04NDgsNiArODY1LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCiAJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxh bm5lZHN0bXQtPnBlcm1JbmZvcyk7CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5l ZHN0bXQ7CisJZXN0YXRlLT5lc19jYWNoZWRwbGFuID0gY2FjaGVkcGxhbjsKIAogCS8qCiAJICog TmV4dCwgYnVpbGQgdGhlIEV4ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMp LCBpZiBhbnkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGJmYjM0MTllZmIu LjAzYjQ4ZTEyYjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC0xMjU2LDgg KzEyNTYsMTUgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJl Y2VpdmVyICpyZWNlaXZlciwKIAlwYXJhbXNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJB TExFTF9LRVlfUEFSQU1MSVNUSU5GTywgZmFsc2UpOwogCXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1M aXN0KCZwYXJhbXNwYWNlKTsKIAotCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5 LiAqLworCS8qCisJICogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkuICBXZSBwYXNz IE5VTEwgZm9yIGNhY2hlZHBsYW4sIGJlY2F1c2UKKwkgKiB3ZSBkb24ndCBoYXZlIGEgcG9pbnRl ciB0byB0aGUgQ2FjaGVkUGxhbiBpbiB0aGUgbGVhZGVyJ3MgcHJvY2Vzcy4gSXQncworCSAqIGZp bmUgYmVjYXVzZSB0aGUgb25seSByZWFzb24gdGhlIGV4ZWN1dG9yIG5lZWRzIHRvIHNlZSBpdCBp cyB0byBkZWNpZGUKKwkgKiBpZiBpdCBzaG91bGQgdGFrZSBsb2NrcyBvbiBjZXJ0YWluIHJlbGF0 aW9ucywgYnV0IHBhcmFsbGVyIHdvcmtlcnMKKwkgKiBhbHdheXMgdGFrZSBsb2NrcyBhbnl3YXku CisJICovCiAJcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwKKwkJCQkJCSAgIE5VTEwsCiAJ CQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFs aWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50 X29wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCA1NzM3ZjlmNGViLi42ZGZk NWEyNmI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtNzUyLDYgKzc1MiwyNiBAQCBF eGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUsIExpc3QgKnJhbmdlVGFibGUsIExpc3Qg KnBlcm1JbmZvcykKIAllc3RhdGUtPmVzX3Jvd21hcmtzID0gTlVMTDsKIH0KIAorLyoKKyAqIEV4 ZWNTaG91bGRMb2NrUmVsYXRpb24KKyAqCQlEZXRlcm1pbmUgaWYgdGhlIHJlbGF0aW9uIHNob3Vs ZCBiZSBsb2NrZWQuCisgKgorICogVGhlIHJlbGF0aW9uIGRvZXMgbm90IG5lZWQgdG8gYmUgbG9j a2VkIGlmIHdlIGFyZSBub3QgcnVubmluZyBhIGNhY2hlZAorICogcGxhbiBvciBpZiBpdCBoYXMg YWxyZWFkeSBiZWVuIGxvY2tlZCBhcyBhbiB1bnBydW5hYmxlIHJlbGF0aW9uLgorICoKKyAqIExv Y2sgdGhlIHJlbGF0aW9uIGlmIGl0IG1pZ2h0IGJlIG9uZSBvZiB0aGUgcHJ1bmFibGUgcmVsYXRp b25zIG1lbnRpb25lZAorICogaW4gdGhlIGNhY2hlZCBwbGFuLgorICovCitzdGF0aWMgYm9vbAor RXhlY1Nob3VsZExvY2tSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpbmRleCkKK3sK KwlpZiAoZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwgfHwKKwkJYm1zX2lzX21lbWJlcihy dGluZGV4LCBlc3RhdGUtPmVzX3BsYW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzKSkKKwkJcmV0 dXJuIGZhbHNlOworCisJcmV0dXJuIENhY2hlZFBsYW5SZXF1aXJlc0xvY2tpbmcoZXN0YXRlLT5l c19jYWNoZWRwbGFuKTsKK30KKwogLyoKICAqIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24KICAq CQlPcGVuIHRoZSBSZWxhdGlvbiBmb3IgYSByYW5nZSB0YWJsZSBlbnRyeSwgaWYgbm90IGFscmVh ZHkgZG9uZQpAQCAtNzczLDcgKzc5Myw3IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0 YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAogCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9S RUxBVElPTik7CiAKLQkJaWYgKCFJc1BhcmFsbGVsV29ya2VyKCkpCisJCWlmICghSXNQYXJhbGxl bFdvcmtlcigpICYmICFFeGVjU2hvdWxkTG9ja1JlbGF0aW9uKGVzdGF0ZSwgcnRpKSkKIAkJewog CQkJLyoKIAkJCSAqIEluIGEgbm9ybWFsIHF1ZXJ5LCB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIHRo ZSBhcHByb3ByaWF0ZSBsb2NrLApAQCAtNzg5LDkgKzgwOSwxNyBAQCBFeGVjR2V0UmFuZ2VUYWJs ZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAJCWVsc2UKIAkJewogCQkJLyoK KwkJCSAqIExvY2sgcmVsYXRpb24gZWl0aGVyIGlmIHdlIGFyZSBhIHBhcmFsbGVsIHdvcmtlciBv ciBpZgorCQkJICogRXhlY1Nob3VsZExvY2tSZWxhdGlvbigpIHNheXMgd2Ugc2hvdWxkLgorCQkJ ICoKIAkJCSAqIElmIHdlIGFyZSBhIHBhcmFsbGVsIHdvcmtlciwgd2UgbmVlZCB0byBvYnRhaW4g b3VyIG93biBsb2NhbAogCQkJICogbG9jayBvbiB0aGUgcmVsYXRpb24uICBUaGlzIGVuc3VyZXMg c2FuZSBiZWhhdmlvciBpbiBjYXNlIHRoZQogCQkJICogcGFyZW50IHByb2Nlc3MgZXhpdHMgYmVm b3JlIHdlIGRvLgorCQkJICoKKwkJCSAqIEV4ZWNTaG91bGRMb2NrUmVsYXRpb24oKSB3b3VsZCBy ZXR1cm4gdHJ1ZSBpZiB0aGUgUlQgaW5kZXggaXMKKwkJCSAqIHRoYXQgb2YgYSBwcnVuYWJsZSBy ZWxhdGlvbiBhbmQgd2UncmUgcnVubmluZyBhIGNhY2hlZCBnZW5lcmljCisJCQkgKiBwbGFuLiAg QWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBvZiBwbGFuY2FjaGUuYyB3b3VsZCBoYXZlIGxvY2tlZAor CQkJICogb25seSB0aGUgdW5wcnVuYWJsZSByZWxhdGlvbnMgaW4gdGhlIHBsYW4gdHJlZS4KIAkJ CSAqLwogCQkJcmVsID0gdGFibGVfb3BlbihydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsK IAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCA2OTI4NTRlMmIzLi42ZjZmNDVlMGFk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODQwLDYgKzg0MCw3IEBAIHBvc3RxdWVs X3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQog CQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+ c3RtdCwKKwkJCQkJCQkgTlVMTCwKIAkJCQkJCQkgZmNhY2hlLT5zcmMsCiAJCQkJCQkJIEdldEFj dGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5k ZXggZDY1MTZiMWJjYS4uOTAyNzkzYjAyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTI2ODQsNiArMjY4 NCw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0 ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCXNuYXAgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkJCQlx ZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCWNwbGFuLAogCQkJCQkJCQkJ CXBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJCQlzbmFwLCBjcm9zc2NoZWNrX3Nu YXBzaG90LAogCQkJCQkJCQkJCWRlc3QsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK aW5kZXggYjU4MjdkMzk4MC4uY2I5YjZmMDE0NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYwpAQCAtNTQ2LDYgKzU0Niw4IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNl LCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+ cGFyYWxsZWxNb2RlTmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVkOwogCXJlc3VsdC0+ cGxhblRyZWUgPSB0b3BfcGxhbjsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxl OworCXJlc3VsdC0+dW5wcnVuYWJsZVJlbGlkcyA9IGJtc19kaWZmZXJlbmNlKGJtc19hZGRfcmFu Z2UoTlVMTCwgMSwgbGlzdF9sZW5ndGgocmVzdWx0LT5ydGFibGUpKSwKKwkJCQkJCQkJCQkJICBn bG9iLT5wcnVuYWJsZVJlbGlkcyk7CiAJcmVzdWx0LT5wZXJtSW5mb3MgPSBnbG9iLT5maW5hbHJ0 ZXBlcm1pbmZvczsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0 aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCA3YWVkODQ1ODRjLi5iNmJlMGU1 NzMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0xNTQsNiArMTU0LDkg QEAgc3RhdGljIFBsYW4gKnNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwK IHN0YXRpYyBQbGFuICpzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9v dCwKIAkJCQkJCQkJCQlNZXJnZUFwcGVuZCAqbXBsYW4sCiAJCQkJCQkJCQkJaW50IHJ0b2Zmc2V0 KTsKK3N0YXRpYyB2b2lkIHNldF9wYXJ0X3BydW5lX3JlZmVyZW5jZXMoUGFydGl0aW9uUHJ1bmVJ bmZvICpwaW5mbywKKwkJCQkJCQkJCSAgUGxhbm5lckdsb2JhbCAqZ2xvYiwKKwkJCQkJCQkJCSAg aW50IHJ0b2Zmc2V0KTsKIHN0YXRpYyB2b2lkIHNldF9oYXNoX3JlZmVyZW5jZXMoUGxhbm5lcklu Zm8gKnJvb3QsIFBsYW4gKnBsYW4sIGludCBydG9mZnNldCk7CiBzdGF0aWMgUmVsaWRzIG9mZnNl dF9yZWxpZF9zZXQoUmVsaWRzIHJlbGlkcywgaW50IHJ0b2Zmc2V0KTsKIHN0YXRpYyBOb2RlICpm aXhfc2Nhbl9leHByKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlLApAQCAtMTc4MywyMCAr MTc4Niw4IEBAIHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlhcGxh bi0+YXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChhcGxhbi0+YXBwcmVsaWRzLCBydG9mZnNl dCk7CiAKIAlpZiAoYXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKLQl7Ci0JCWZvcmVhY2gobCwgYXBs YW4tPnBhcnRfcHJ1bmVfaW5mby0+cHJ1bmVfaW5mb3MpCi0JCXsKLQkJCUxpc3QJICAgKnBydW5l X2luZm9zID0gbGZpcnN0KGwpOwotCQkJTGlzdENlbGwgICAqbDI7Ci0KLQkJCWZvcmVhY2gobDIs IHBydW5lX2luZm9zKQotCQkJewotCQkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwaW5mbyA9 IGxmaXJzdChsMik7Ci0KLQkJCQlwaW5mby0+cnRpbmRleCArPSBydG9mZnNldDsKLQkJCX0KLQkJ fQotCX0KKwkJc2V0X3BhcnRfcHJ1bmVfcmVmZXJlbmNlcyhhcGxhbi0+cGFydF9wcnVuZV9pbmZv LCByb290LT5nbG9iLAorCQkJCQkJCQkgIHJ0b2Zmc2V0KTsKIAogCS8qIFdlIGRvbid0IG5lZWQg dG8gcmVjdXJzZSB0byBsZWZ0dHJlZSBvciByaWdodHRyZWUgLi4uICovCiAJQXNzZXJ0KGFwbGFu LT5wbGFuLmxlZnR0cmVlID09IE5VTEwpOwpAQCAtMTg1OSwyMCArMTg1MCw4IEBAIHNldF9tZXJn ZWFwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCW1wbGFuLT5hcHByZWxpZHMg PSBvZmZzZXRfcmVsaWRfc2V0KG1wbGFuLT5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKIAogCWlmICht cGxhbi0+cGFydF9wcnVuZV9pbmZvKQotCXsKLQkJZm9yZWFjaChsLCBtcGxhbi0+cGFydF9wcnVu ZV9pbmZvLT5wcnVuZV9pbmZvcykKLQkJewotCQkJTGlzdAkgICAqcHJ1bmVfaW5mb3MgPSBsZmly c3QobCk7Ci0JCQlMaXN0Q2VsbCAgICpsMjsKLQotCQkJZm9yZWFjaChsMiwgcHJ1bmVfaW5mb3Mp Ci0JCQl7Ci0JCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKnBpbmZvID0gbGZpcnN0KGwyKTsK LQotCQkJCXBpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OwotCQkJfQotCQl9Ci0JfQorCQlzZXRf cGFydF9wcnVuZV9yZWZlcmVuY2VzKG1wbGFuLT5wYXJ0X3BydW5lX2luZm8sIHJvb3QtPmdsb2Is CisJCQkJCQkJCSAgcnRvZmZzZXQpOwogCiAJLyogV2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRv IGxlZnR0cmVlIG9yIHJpZ2h0dHJlZSAuLi4gKi8KIAlBc3NlcnQobXBsYW4tPnBsYW4ubGVmdHRy ZWUgPT0gTlVMTCk7CkBAIC0xODgxLDYgKzE4NjAsMzMgQEAgc2V0X21lcmdlYXBwZW5kX3JlZmVy ZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJcmV0dXJuIChQbGFuICopIG1wbGFuOwogfQogCisv KgorICogVXBkYXRlcyBSVCBpbmRleGVzIGluIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyBjb250 YWluZWQgaW4gcGluZm8gYW5kIGFkZHMKKyAqIHRoZSBSVCBpbmRleGVzIG9mICJwcnVuYWJsZSIg cmVsYXRpb25zIGludG8gZ2xvYi0+cHJ1bmFibGVSZWxpZHMuCisgKi8KK3N0YXRpYyB2b2lkCitz ZXRfcGFydF9wcnVuZV9yZWZlcmVuY2VzKFBhcnRpdGlvblBydW5lSW5mbyAqcGluZm8sIFBsYW5u ZXJHbG9iYWwgKmdsb2IsCisJCQkJCQkgIGludCBydG9mZnNldCkKK3sKKwlMaXN0Q2VsbCAgICps OworCisJZm9yZWFjaChsLCBwaW5mby0+cHJ1bmVfaW5mb3MpCisJeworCQlMaXN0CSAgICpwcnVu ZV9pbmZvcyA9IGxmaXJzdChsKTsKKwkJTGlzdENlbGwgICAqbDI7CisKKwkJZm9yZWFjaChsMiwg cHJ1bmVfaW5mb3MpCisJCXsKKwkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwcmVsaW5mbyA9 IGxmaXJzdChsMik7CisKKwkJCXByZWxpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OworCQkJaWYg KHByZWxpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgIT0gTklMKQorCQkJCWdsb2ItPnBydW5h YmxlUmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGdsb2ItPnBydW5hYmxlUmVsaWRzLAorCQkJCQkJ CQkJCQkJCSAgIHByZWxpbmZvLT5wcmVzZW50X3BhcnRfcnRpcyk7CisJCX0KKwl9Cit9CisKIC8q CiAgKiBzZXRfaGFzaF9yZWZlcmVuY2VzCiAgKgkgICBEbyBzZXRfcGxhbl9yZWZlcmVuY2VzIHBy b2Nlc3Npbmcgb24gYSBIYXNoIG5vZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpp bmRleCA5YTFhN2ZhYWM3Li44ZTI3ZTM1ZGYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRw cnVuZS5jCkBAIC02MzQsNiArNjM0LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8o UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJUGFydGl0aW9uZWRS ZWxQcnVuZUluZm8gKnBpbmZvID0gbGZpcnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqc3VicGFydCA9 IGZpbmRfYmFzZV9yZWwocm9vdCwgcGluZm8tPnJ0aW5kZXgpOwogCQlCaXRtYXBzZXQgICpwcmVz ZW50X3BhcnRzOworCQlCaXRtYXBzZXQgICpwcmVzZW50X3BhcnRfcnRpczsKIAkJaW50CQkJbnBh cnRzID0gc3VicGFydC0+bnBhcnRzOwogCQlpbnQJCSAgICpzdWJwbGFuX21hcDsKIAkJaW50CQkg ICAqc3VicGFydF9tYXA7CkBAIC02NTAsNyArNjUxLDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9w cnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJc3Vi cGFydF9tYXAgPSAoaW50ICopIHBhbGxvYyhucGFydHMgKiBzaXplb2YoaW50KSk7CiAJCW1lbXNl dChzdWJwYXJ0X21hcCwgLTEsIG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJcmVsaWRfbWFwID0g KE9pZCAqKSBwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihPaWQpKTsKLQkJcHJlc2VudF9wYXJ0cyA9 IE5VTEw7CisJCXByZXNlbnRfcGFydHMgPSBwcmVzZW50X3BhcnRfcnRpcyA9IE5VTEw7CiAKIAkJ aSA9IC0xOwogCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIoc3VicGFydC0+bGl2ZV9wYXJ0 cywgaSkpID49IDApCkBAIC02NjQsMTUgKzY2NSwzNSBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJc3Vi cGxhbl9tYXBbaV0gPSBzdWJwbGFuaWR4ID0gcmVsaWRfc3VicGxhbl9tYXBbcGFydHJlbC0+cmVs aWRdIC0gMTsKIAkJCXN1YnBhcnRfbWFwW2ldID0gc3VicGFydGlkeCA9IHJlbGlkX3N1YnBhcnRf bWFwW3BhcnRyZWwtPnJlbGlkXSAtIDE7CiAJCQlyZWxpZF9tYXBbaV0gPSBwbGFubmVyX3J0X2Zl dGNoKHBhcnRyZWwtPnJlbGlkLCByb290KS0+cmVsaWQ7CisKKwkJCS8qCisJCQkgKiBUcmFjayB0 aGUgUlQgaW5kZXhlcyBvZiBwYXJ0aXRpb25zIHRvIGVuc3VyZSB0aGV5IGFyZSBpbmNsdWRlZAor CQkJICogaW4gdGhlIHBydW5hYmxlUmVsaWRzIHNldCBvZiByZWxhdGlvbnMgdGhhdCBhcmUgbG9j a2VkIGR1cmluZworCQkJICogZXhlY3V0aW9uLiBUaGlzIGVuc3VyZXMgdGhhdCBpZiB0aGUgcGxh biBpcyBjYWNoZWQsIHRoZXNlCisJCQkgKiBwYXJ0aXRpb25zIGFyZSBsb2NrZWQgd2hlbiB0aGUg cGxhbiBpcyByZXVzZWQuCisJCQkgKgorCQkJICogUGFydGl0aW9ucyB3aXRob3V0IGEgc3VicGxh biBhbmQgc3ViLXBhcnRpdGlvbmVkIHBhcnRpdGlvbnMKKwkJCSAqIHdoZXJlIG5vbmUgb2YgdGhl IHN1Yi1wYXJ0aXRpb25zIGhhdmUgYSBzdWJwbGFuIGR1ZSB0bworCQkJICogY29uc3RyYWludCBl eGNsdXNpb24gYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGlzIHNldC4gSW5zdGVhZCwKKwkJCSAqIHRo ZXkgYXJlIGFkZGVkIHRvIHRoZSB1bnBydW5hYmxlUmVsaWRzIHNldCwgYW5kIHRoZSByZWxhdGlv bnMKKwkJCSAqIGluIHRoaXMgc2V0IGFyZSBsb2NrZWQgYnkgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSBiZWZvcmUKKwkJCSAqIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLgorCQkJICovCiAJCQlpZiAo c3VicGxhbmlkeCA+PSAwKQogCQkJewogCQkJCXByZXNlbnRfcGFydHMgPSBibXNfYWRkX21lbWJl cihwcmVzZW50X3BhcnRzLCBpKTsKKwkJCQlwcmVzZW50X3BhcnRfcnRpcyA9IGJtc19hZGRfbWVt YmVyKHByZXNlbnRfcGFydF9ydGlzLAorCQkJCQkJCQkJCQkJICAgcGFydHJlbC0+cmVsaWQpOwog CiAJCQkJLyogUmVjb3JkIGZpbmRpbmcgdGhpcyBzdWJwbGFuICAqLwogCQkJCXN1YnBsYW5zZm91 bmQgPSBibXNfYWRkX21lbWJlcihzdWJwbGFuc2ZvdW5kLCBzdWJwbGFuaWR4KTsKIAkJCX0KIAkJ CWVsc2UgaWYgKHN1YnBhcnRpZHggPj0gMCkKKwkJCXsKIAkJCQlwcmVzZW50X3BhcnRzID0gYm1z X2FkZF9tZW1iZXIocHJlc2VudF9wYXJ0cywgaSk7CisJCQkJcHJlc2VudF9wYXJ0X3J0aXMgPSBi bXNfYWRkX21lbWJlcihwcmVzZW50X3BhcnRfcnRpcywKKwkJCQkJCQkJCQkJCSAgIHBhcnRyZWwt PnJlbGlkKTsKKwkJCX0KIAkJfQogCiAJCS8qCkBAIC02ODQsNiArNzA1LDcgQEAgbWFrZV9wYXJ0 aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVu dHJlbCwKIAogCQkvKiBSZWNvcmQgdGhlIG1hcHMgYW5kIG90aGVyIGluZm9ybWF0aW9uLiAqLwog CQlwaW5mby0+cHJlc2VudF9wYXJ0cyA9IHByZXNlbnRfcGFydHM7CisJCXBpbmZvLT5wcmVzZW50 X3BhcnRfcnRpcyA9IHByZXNlbnRfcGFydF9ydGlzOwogCQlwaW5mby0+bnBhcnRzID0gbnBhcnRz OwogCQlwaW5mby0+c3VicGxhbl9tYXAgPSBzdWJwbGFuX21hcDsKIAkJcGluZm8tPnN1YnBhcnRf bWFwID0gc3VicGFydF9tYXA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRleCAwOTQ1MjJhY2I0 Li5hMWM4OWY1ZDcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTI2LDYgKzI2LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFs YWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggYTFmOGQwM2RiMS4uNmU4ZjZiMWI4ZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29w L3BxdWVyeS5jCkBAIC0zNiw2ICszNiw3IEBAIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0gTlVMTDsK IAogCiBzdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkJCQkg Q2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJ CSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu diwKQEAgLTY1LDYgKzY2LDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBv cnRhbCk7CiAgKi8KIFF1ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBs YW5uZWRzdG10LAorCQkJCUNhY2hlZFBsYW4gKmNwbGFuLAogCQkJCWNvbnN0IGNoYXIgKnNvdXJj ZVRleHQsCiAJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19z bmFwc2hvdCwKQEAgLTc3LDYgKzc5LDcgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwKIAogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7 CS8qIG9wZXJhdGlvbiAqLwogCXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFu ICovCisJcWQtPmNwbGFuID0gY3BsYW47CQkJLyogQ2FjaGVkUGxhbiBzdXBwbHlpbmcgdGhlIHBs YW5uZWRzdG10ICovCiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0 ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBz aG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTEyMiw2ICsxMjUsNyBAQCBGcmVl UXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKgkJUE9SVEFMX09ORV9SRVRVUk5JTkcsIG9y IFBPUlRBTF9PTkVfTU9EX1dJVEggcG9ydGFsCiAgKgogICoJcGxhbjogdGhlIHBsYW4gdHJlZSBm b3IgdGhlIHF1ZXJ5CisgKgljcGxhbjogQ2FjaGVkUGxhbiBzdXBwbHlpbmcgdGhlIHBsYW4KICAq CXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKICAqCXBhcmFtczogYW55 IHBhcmFtZXRlcnMgbmVlZGVkCiAgKglkZXN0OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEz NCw2ICsxMzgsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRp YyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkgQ2FjaGVkUGxhbiAq Y3BsYW4sCiAJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBh cmFtcywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE0NSw3ICsxNTAsNyBA QCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1 ZXJ5RGVzYyBvYmplY3QKIAkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg c291cmNlVGV4dCwKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgY3BsYW4sIHNv dXJjZVRleHQsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwK IAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKQEAgLTQ5Myw2ICs0OTgsNyBA QCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkg KiB0aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCiAJCQkJICovCiAJCQkJcXVlcnlEZXNjID0g Q3JlYXRlUXVlcnlEZXNjKGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMp LAorCQkJCQkJCQkJCQlwb3J0YWwtPmNwbGFuLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRl eHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRT bmFwc2hvdCwKQEAgLTEyNzYsNiArMTI4Miw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0 YWwsCiAJCQl7CiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAqLwogCQkJCVBy b2Nlc3NRdWVyeShwc3RtdCwKKwkJCQkJCQkgcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkgcG9ydGFs LT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9y dGFsLT5xdWVyeUVudiwKQEAgLTEyODUsNiArMTI5Miw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRh bCBwb3J0YWwsCiAJCQl7CiAJCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQg dGFnICovCiAJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCQkJCSBwb3J0YWwtPmNwbGFuLAog CQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1z LAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUu YwppbmRleCA0OGEyODBkMDg5Li5mNjQ3ODIxMzgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYwpAQCAtMjExMyw3ICsyMTEzLDYgQEAgZ2V0X3JlbF9yZWxhbShPaWQgcmVsaWQpCiAJ cmV0dXJuIHJlc3VsdDsKIH0KIAotCiAvKgkJCQktLS0tLS0tLS0tIFRSQU5TRk9STSBDQUNIRSAt LS0tLS0tLS0tCQkJCQkJICovCiAKIE9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpp bmRleCA1YWYxYTE2OGVjLi41Yjc1ZGFkZjEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2Fj aGUuYwpAQCAtMTA0LDcgKzEwNCw4IEBAIHN0YXRpYyBMaXN0ICpSZXZhbGlkYXRlQ2FjaGVkUXVl cnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJICAgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYpOwogc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKLQkJCQkJCQkJICAgUGFy YW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJ CQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudiwKKwkJCQkJCQkJICAgYm9vbCBnZW5lcmljKTsKIHN0YXRpYyBib29sIGNob29zZV9jdXN0 b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlz dEluZm8gYm91bmRQYXJhbXMpOwogc3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hl ZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKTsKQEAgLTgxNSw4ICs4MTYsMTEgQEAg UmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBD YWxsZXIgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2 ZXJpZnkgdGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEg InRydWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0 aGUgcGxhbi4KLSAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJl IHJhY2UtY29uZGl0aW9uLWZyZWUuKQorICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFj cXVpcmVkIGxvY2tzIG9uIHRoZSAidW5wcnVuYWJsZVJlbGlkcyIgc2V0CisgKiBmb3IgYWxsIHBs YW5zIGluIHBsYW5zb3VyY2UtPnN0bXRfbGlzdC4gVGhlIHBsYW5zIGFyZSBub3QgY29tcGxldGVs eQorICogcmFjZS1jb25kaXRpb24tZnJlZSB1bnRpbCB0aGUgZXhlY3V0b3IgdGFrZXMgbG9ja3Mg b24gdGhlIHNldCBvZiBwcnVuYWJsZQorICogcmVsYXRpb25zIHRoYXQgc3Vydml2ZSBpbml0aWFs IHJ1bnRpbWUgcHJ1bmluZyBkdXJpbmcgZXhlY3V0b3IKKyAqIGluaXRpYWxpemF0aW9uOwogICov CiBzdGF0aWMgYm9vbAogQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UpCkBAIC04OTMsMTAgKzg5NywxMCBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSkKICAqIG9yIGl0IGNhbiBiZSBzZXQgdG8gTklMIGlmIHdlIG5lZWQgdG8g cmUtY29weSB0aGUgcGxhbnNvdXJjZSdzIHF1ZXJ5X2xpc3QuCiAgKgogICogVG8gYnVpbGQgYSBn ZW5lcmljLCBwYXJhbWV0ZXItdmFsdWUtaW5kZXBlbmRlbnQgcGxhbiwgcGFzcyBOVUxMIGZvcgot ICogYm91bmRQYXJhbXMuICBUbyBidWlsZCBhIGN1c3RvbSBwbGFuLCBwYXNzIHRoZSBhY3R1YWwg cGFyYW1ldGVyIHZhbHVlcyB2aWEKLSAqIGJvdW5kUGFyYW1zLiAgRm9yIGJlc3QgZWZmZWN0LCB0 aGUgUEFSQU1fRkxBR19DT05TVCBmbGFnIHNob3VsZCBiZSBzZXQgb24KLSAqIGVhY2ggcGFyYW1l dGVyIHZhbHVlOyBvdGhlcndpc2UgdGhlIHBsYW5uZXIgd2lsbCB0cmVhdCB0aGUgdmFsdWUgYXMg YQotICogaGludCByYXRoZXIgdGhhbiBhIGhhcmQgY29uc3RhbnQuCisgKiBib3VuZFBhcmFtcywg YW5kIHRydWUgZm9yIGdlbmVyaWMuICBUbyBidWlsZCBhIGN1c3RvbSBwbGFuLCBwYXNzIHRoZSBh Y3R1YWwKKyAqIHBhcmFtZXRlciB2YWx1ZXMgdmlhIGJvdW5kUGFyYW1zLCBhbmQgZmFsc2UgZm9y IGdlbmVyaWMuICBGb3IgYmVzdCBlZmZlY3QsCisgKiB0aGUgUEFSQU1fRkxBR19DT05TVCBmbGFn IHNob3VsZCBiZSBzZXQgb24gZWFjaCBwYXJhbWV0ZXIgdmFsdWU7IG90aGVyd2lzZQorICogdGhl IHBsYW5uZXIgd2lsbCB0cmVhdCB0aGUgdmFsdWUgYXMgYSBoaW50IHJhdGhlciB0aGFuIGEgaGFy ZCBjb25zdGFudC4KICAqCiAgKiBQbGFubmluZyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidz IG1lbW9yeSBjb250ZXh0LiAgVGhlIGZpbmlzaGVkIHBsYW4KICAqIGlzIGluIGEgY2hpbGQgbWVt b3J5IGNvbnRleHQsIHdoaWNoIHR5cGljYWxseSBzaG91bGQgZ2V0IHJlcGFyZW50ZWQKQEAgLTkw NCw3ICs5MDgsOCBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSkKICAqLwogc3RhdGljIENhY2hlZFBsYW4gKgogQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAotCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQorCQkJCVBhcmFtTGlzdEluZm8gYm91 bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCWJvb2wgZ2VuZXJpYykK IHsKIAlDYWNoZWRQbGFuICpwbGFuOwogCUxpc3QJICAgKnBsaXN0OwpAQCAtMTAyNiw2ICsxMDMx LDcgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3Qg KnFsaXN0LAogCXBsYW4tPnJlZmNvdW50ID0gMDsKIAlwbGFuLT5jb250ZXh0ID0gcGxhbl9jb250 ZXh0OwogCXBsYW4tPmlzX29uZXNob3QgPSBwbGFuc291cmNlLT5pc19vbmVzaG90OworCXBsYW4t PmlzX2dlbmVyaWMgPSBnZW5lcmljOwogCXBsYW4tPmlzX3NhdmVkID0gZmFsc2U7CiAJcGxhbi0+ aXNfdmFsaWQgPSB0cnVlOwogCkBAIC0xMTk2LDcgKzEyMDIsNyBAQCBHZXRDYWNoZWRQbGFuKENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJ CWVsc2UKIAkJewogCQkJLyogQnVpbGQgYSBuZXcgZ2VuZXJpYyBwbGFuICovCi0JCQlwbGFuID0g QnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudik7CisJCQlw bGFuID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudiwg dHJ1ZSk7CiAJCQkvKiBKdXN0IG1ha2UgcmVhbCBzdXJlIHBsYW5zb3VyY2UtPmdwbGFuIGlzIGNs ZWFyICovCiAJCQlSZWxlYXNlR2VuZXJpY1BsYW4ocGxhbnNvdXJjZSk7CiAJCQkvKiBMaW5rIHRo ZSBuZXcgZ2VuZXJpYyBwbGFuIGludG8gdGhlIHBsYW5zb3VyY2UgKi8KQEAgLTEyNDEsNyArMTI0 Nyw3IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1M aXN0SW5mbyBib3VuZFBhcmFtcywKIAlpZiAoY3VzdG9tcGxhbikKIAl7CiAJCS8qIEJ1aWxkIGEg Y3VzdG9tIHBsYW4gKi8KLQkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFuc291cmNlLCBxbGlz dCwgYm91bmRQYXJhbXMsIHF1ZXJ5RW52KTsKKwkJcGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFu c291cmNlLCBxbGlzdCwgYm91bmRQYXJhbXMsIHF1ZXJ5RW52LCBmYWxzZSk7CiAJCS8qIEFjY3Vt dWxhdGUgdG90YWwgY29zdHMgb2YgY3VzdG9tIHBsYW5zICovCiAJCXBsYW5zb3VyY2UtPnRvdGFs X2N1c3RvbV9jb3N0ICs9IGNhY2hlZF9wbGFuX2Nvc3QocGxhbiwgdHJ1ZSk7CiAKQEAgLTEzODcs OCArMTM5Myw4IEBAIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJfQogCiAJLyoKLQkgKiBSZWplY3QgaWYgQWNxdWlyZUV4 ZWN1dG9yTG9ja3Mgd291bGQgaGF2ZSBhbnl0aGluZyB0byBkby4gIFRoaXMgaXMKLQkgKiBwcm9i YWJseSB1bm5lY2Vzc2FyeSBnaXZlbiB0aGUgcHJldmlvdXMgY2hlY2ssIGJ1dCBsZXQncyBiZSBz YWZlLgorCSAqIFJlamVjdCBpZiB0aGVyZSBhcmUgYW55IGxvY2thYmxlIHJlbGF0aW9ucy4gIFRo aXMgaXMgcHJvYmFibHkKKwkgKiB1bm5lY2Vzc2FyeSBnaXZlbiB0aGUgcHJldmlvdXMgY2hlY2ss IGJ1dCBsZXQncyBiZSBzYWZlLgogCSAqLwogCWZvcmVhY2gobGMsIHBsYW4tPnN0bXRfbGlzdCkK IAl7CkBAIC0xNzc2LDcgKzE3ODIsNyBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10 X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQogCXsKIAkJUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7Ci0J CUxpc3RDZWxsICAgKmxjMjsKKwkJaW50CQkJcnRpbmRleDsKIAogCQlpZiAocGxhbm5lZHN0bXQt PmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQogCQl7CkBAIC0xNzk0LDkgKzE4MDAsMTMgQEAg QWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQlj b250aW51ZTsKIAkJfQogCi0JCWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQorCQly dGluZGV4ID0gLTE7CisJCXdoaWxlICgocnRpbmRleCA9IGJtc19uZXh0X21lbWJlcihwbGFubmVk c3RtdC0+dW5wcnVuYWJsZVJlbGlkcywKKwkJCQkJCQkJCQkgIHJ0aW5kZXgpKSA+PSAwKQogCQl7 Ci0JCQlSYW5nZVRibEVudHJ5ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsK KwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGxpc3RfbnRoX25vZGUoUmFuZ2VUYmxFbnRyeSwKKwkJ CQkJCQkJCQkJICAgcGxhbm5lZHN0bXQtPnJ0YWJsZSwKKwkJCQkJCQkJCQkJICAgcnRpbmRleCAt IDEpOwogCiAJCQlpZiAoIShydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8CiAJCQkJICAo cnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKSkp CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggOWI4YjM1MWQ5YS4uYmYzMjZlZWI3MCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2V4cGxhaW4uaApAQCAtMTAxLDggKzEwMSw5IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5P bmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAg RXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJICBQYXJh bUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogCi1leHRlcm4g dm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2Ug KmludG8sCi0JCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmlu ZywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwg Q2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAorCQkJCQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJh bUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBj b25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkJCQkgICBjb25zdCBCdWZmZXJVc2Fn ZSAqYnVmdXNhZ2UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5o IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAppbmRleCAwYTcyNzRlMjZjLi4wZTcy NDU0MzVkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUXVlcnlEZXNjCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVh dGVRdWVyeURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURf VVBEQVRFLCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mg b3V0cHV0IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJQ2FjaGVkUGxhbiAqY3BsYW47CQkJ LyogQ2FjaGVkUGxhbiB0aGF0IHN1cHBsaWVzIHRoZSBwbGFubmVkc3RtdCAqLwogCWNvbnN0IGNo YXIgKnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hv dAlzbmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAlj cm9zc2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICov CkBAIC01Nyw2ICs1OCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVl cnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwKKwkJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQkJCQkJICBjb25z dCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJ CQkgIFNuYXBzaG90IGNyb3NzY2hlY2tfc25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4 IGFmN2Q4ZmQxZTcuLmVlMDg5NTA1YTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC00Miw2ICs0 Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRl ICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgor I2luY2x1ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIu aCIKICNpbmNsdWRlICJ1dGlscy9zaGFyZWR0dXBsZXN0b3JlLmgiCiAjaW5jbHVkZSAidXRpbHMv c25hcHNob3QuaCIKQEAgLTYzMyw2ICs2MzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJ CQkJCQkJCQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmVz X3J0ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwogCVBsYW5uZWRT dG10ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxhbiB0cmVlICovCisJQ2Fj aGVkUGxhbiAqZXNfY2FjaGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBzdXBwbHlpbmcgdGhlIHBsYW5u ZWRzdG10ICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJv bSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZl bCBqdW5rIGZpbHRlciwgaWYgYW55ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDU0MGQwMjE1 OTIuLjI0NjYxNTdiMjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0xMTYsNiArMTE2LDEyIEBA IHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgcmFuZ2V0YWJsZSBmb3Ig ZXhlY3V0b3IgKi8KIAlMaXN0CSAgICpmaW5hbHJ0YWJsZTsKIAorCS8qCisJICogUlQgaW5kZXhl cyBvZiByZWxhdGlvbnMgc3ViamVjdCB0byByZW1vdmFsIGZyb20gdGhlIHBsYW4gZHVlIHRvIHJ1 bnRpbWUKKwkgKiBwcnVuaW5nIGF0IHBsYW4gaW5pdGlhbGl6YXRpb24gdGltZQorCSAqLworCUJp dG1hcHNldCAgKnBydW5hYmxlUmVsaWRzOworCiAJLyogImZsYXQiIGxpc3Qgb2YgUlRFUGVybWlz c2lvbkluZm9zICovCiAJTGlzdAkgICAqZmluYWxydGVwZXJtaW5mb3M7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKaW5kZXggNjJjZDZhNjY2Ni4uYWU2MDg4MTJmMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgK QEAgLTcxLDYgKzcxLDEwIEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZWRTdG10CiAKIAlMaXN0CSAg ICpydGFibGU7CQkJLyogbGlzdCBvZiBSYW5nZVRibEVudHJ5IG5vZGVzICovCiAKKwlCaXRtYXBz ZXQgICp1bnBydW5hYmxlUmVsaWRzOwkvKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyB0aGF0IGFy ZSBub3QKKwkJCQkJCQkJCSAqIHN1YmplY3QgdG8gcnVudGltZSBwcnVuaW5nOyBmb3IKKwkJCQkJ CQkJCSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgKi8KKwogCUxpc3QJICAgKnBlcm1JbmZvczsJ CS8qIGxpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm8gbm9kZXMgZm9yIHJ0YWJsZQogCQkJCQkJCQkg KiBlbnRyaWVzIG5lZWRpbmcgb25lICovCiAKQEAgLTE0NTksNiArMTQ2MywxMyBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5lSW5mbwogCS8qIEluZGV4ZXMgb2YgYWxsIHBhcnRp dGlvbnMgd2hpY2ggc3VicGxhbnMgb3Igc3VicGFydHMgYXJlIHByZXNlbnQgZm9yICovCiAJQml0 bWFwc2V0ICAqcHJlc2VudF9wYXJ0czsKIAorCS8qCisJICogUlQgaW5kZXhlcyBvZiBhbGwgcGFy dGl0aW9ucyB3aGljaCBzdWJwbGFucyBvciBzdWJwYXJ0cyBhcmUgcHJlc2VudAorCSAqIGZvcjsg b25seSB1c2VkIGR1cmluZyBwbGFubmluZyB0byBoZWxwIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YK KwkgKiBQbGFubmVyR2xvYmFsLnBydW5hYmxlUmVsaWRzLgorCSAqLworCUJpdG1hcHNldCAgKnBy ZXNlbnRfcGFydF9ydGlzOworCiAJLyogTGVuZ3RoIG9mIHRoZSBmb2xsb3dpbmcgYXJyYXlzOiAq LwogCWludAkJCW5wYXJ0czsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNh Y2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCBhOTBkZmRmOTA2Li4w YjVlZTAwN2NhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIHR5cGVk ZWYgc3RydWN0IENhY2hlZFBsYW4KIAlpbnQJCQltYWdpYzsJCQkvKiBzaG91bGQgZXF1YWwgQ0FD SEVEUExBTl9NQUdJQyAqLwogCUxpc3QJICAgKnN0bXRfbGlzdDsJCS8qIGxpc3Qgb2YgUGxhbm5l ZFN0bXRzICovCiAJYm9vbAkJaXNfb25lc2hvdDsJCS8qIGlzIGl0IGEgIm9uZXNob3QiIHBsYW4/ ICovCisJYm9vbAkJaXNfZ2VuZXJpYzsJCS8qIGlzIGl0IGEgcmV1c2FibGUgZ2VuZXJpYyBwbGFu PyAqLwogCWJvb2wJCWlzX3NhdmVkOwkJLyogaXMgQ2FjaGVkUGxhbiBpbiBhIGxvbmctbGl2ZWQg Y29udGV4dD8gKi8KIAlib29sCQlpc192YWxpZDsJCS8qIGlzIHRoZSBzdG10X2xpc3QgY3VycmVu dGx5IHZhbGlkPyAqLwogCU9pZAkJCXBsYW5Sb2xlSWQ7CQkvKiBSb2xlIElEIHRoZSBwbGFuIHdh cyBjcmVhdGVkIGZvciAqLwpAQCAtMjM1LDQgKzIzNiwxMyBAQCBleHRlcm4gYm9vbCBDYWNoZWRQ bGFuSXNTaW1wbHlWYWxpZChDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogZXh0ZXJuIENh Y2hlZEV4cHJlc3Npb24gKkdldENhY2hlZEV4cHJlc3Npb24oTm9kZSAqZXhwcik7CiBleHRlcm4g dm9pZCBGcmVlQ2FjaGVkRXhwcmVzc2lvbihDYWNoZWRFeHByZXNzaW9uICpjZXhwcik7CiAKKy8q CisgKiBDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nOiBzaG91bGQgdGhlIGV4ZWN1dG9yIGFjcXVp cmUgbG9ja3M/CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblJlcXVpcmVzTG9j a2luZyhDYWNoZWRQbGFuICpjcGxhbikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX2dlbmVyaWM7Cit9 CisKICNlbmRpZgkJCQkJCQkvKiBQTEFOQ0FDSEVfSCAqLwotLSAKMi40My4wCgo= --00000000000083cd8106215c4cbe Content-Type: application/octet-stream; name="v52-0002-Assorted-tightening-in-various-ExecEnd-routines.patch" Content-Disposition: attachment; filename="v52-0002-Assorted-tightening-in-various-ExecEnd-routines.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0p43e9c1 RnJvbSBhNDA3N2M0MjVhMTg3NDAzNmQyOTM3YmI5M2E2MTE2Y2ZkMzY0MGNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjggU2VwIDIwMjMgMTY6NTY6MjkgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 MiAyLzNdIEFzc29ydGVkIHRpZ2h0ZW5pbmcgaW4gdmFyaW91cyBFeGVjRW5kKCkqIHJvdXRpbmVz CgpUaGlzIGluY2x1ZGVzIGFkZGluZyBOVUxMbmVzcyBjaGVja3Mgb24gcG9pbnRlcnMgYmVmb3Jl IGNsZWFuaW5nIHRoZW0KdXAuICBNYW55IEV4ZWNFbmQqKCkgcm91dGluZXMgYWxyZWFkeSBwZXJm b3JtIHRoaXMgY2hlY2ssIGJ1dCBhIGZldwphcmUgbWlzc2luZyB0aGVtLiAgVGhlc2UgTlVMTG5l c3MgY2hlY2tzIG1pZ2h0IHNlZW0gcmVkdW5kYW50IGFzCnRoaW5ncyBzdGFuZCBzaW5jZSB0aGUg RXhlY0VuZCooKSByb3V0aW5lcyBvcGVyYXRlIHVuZGVyIHRoZQphc3N1bXB0aW9uIHRoYXQgdGhl aXIgbWF0Y2hpbmcgRXhlY0luaXQqIHJvdXRpbmUgd291bGQgaGF2ZSBmdWxseQpleGVjdXRlZCwg ZW5zdXJpbmcgcG9pbnRlcnMgYXJlIHNldC4gSG93ZXZlciwgdGhhdCBhc3N1bXB0aW9uIHNlZW1z IGEKYml0IHNoYWt5IGluIHRoZSBmYWNlIG9mIGZ1dHVyZSBjaGFuZ2VzLgoKVGhpcyBhbHNvIGFk ZHMgYSBndWFyZCBhdCB0aGUgYmVnaWdnaW5nIG9mIEV2YWxQbGFuUXVhbEVuZCgpIHRvIHJldHVy bgplYXJseSBpZiB0aGUgRVBRU3RhdGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYmVlbiBpbml0 aWFsaXplZC4gIFRoYXQKY2FzZSBjYW4gaGFwcGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIEV4ZWNJ bml0KigpIHJvdXRpbmUgcmV0dXJuZWQKZWFybHkgd2l0aG91dCBjYWxsaW5nIEV2YWxQbGFuUXVh bEluaXQoKS4KCldoaWxlIGF0IGl0LCB0aGlzIGNvbW1pdCBlbnN1cmVzIHRoYXQgcG9pbnRlcnMg YXJlIGNvbnNpc3RlbnRseSBzZXQKdG8gTlVMTCBhZnRlciBjbGVhbnVwIGluIGFsbCBFeGVjRW5k KigpIHJvdXRpbmVzLgoKRmluYWxseSwgZm9yIGVuaGFuY2VkIGNvbnNpc3RlbmN5LCB0aGUgZm9y bWF0IG9mIE5VTExuZXNzIGNoZWNrcyBoYXMKYmVlbiBzdGFuZGFyZGl6ZWQgdG8gImlmIChwb2lu dGVyICE9IE5VTEwpIiwgcmVwbGFjaW5nIHRoZSBwcmV2aW91cwoiaWYgKHBvaW50ZXIpIiBzdHls ZS4KClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcwpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBK0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19tZ0Bt YWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAg ICAgICB8ICA0ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgICAgICAgICAgICAg fCAyNyArKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAg ICAgICAgfCAgMyArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jICAgICAg IHwgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jICB8IDQ2 ICsrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJ bmRleHNjYW4uYyB8IDIzICsrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwT3IuYyAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4u YyAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5j ICAgICB8IDE3ICsrKystLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgICAg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAg fCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyAgICAgICAgICAgfCAgNiAr LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgICAgICAgICAgICB8ICA2ICstLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgICAgICAgIHwgIDQgKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyB8IDEzICsrKysrLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAgIHwgMjUgKysrKysrLS0tLS0tCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgICAgfCAyMyArKysrKystLS0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgICAgICAgICAgIHwgIDEgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgICAgICAgIHwgIDUgKystCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVtb2l6ZS5jICAgICAgICAgfCAgNyArKystCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAgICAgfCAgMyArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlam9pbi5jICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMgICAgIHwgMTEgKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVz dGxvb3AuYyAgICAgICAgfCAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNl dC5jICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24u YyAgfCAyNCArKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAg ICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyAgICAg IHwgIDcgKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgIHwg MTYgKysrLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAgICB8 ICA2ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAgICAgICAgICAgIHwgIDUg KystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgICAgfCAgMSArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jICAgfCAgNCArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgIHwgMTIgKysrKy0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAgfCAgOCArKystCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgfCA0MSArKysrKysrKysrKysrLS0tLS0tCiAzOCBm aWxlcyBjaGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKSwgMTIzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCmluZGV4IDI3MWY5ZDkzZmMuLjBmNmRiZDFlMmIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtMjk5OSw2ICsyOTk5LDEwIEBAIEV2YWxQbGFuUXVhbEVuZChFUFFT dGF0ZSAqZXBxc3RhdGUpCiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCUxpc3RDZWxsICAg Kmw7CiAKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIG5vIEV2YWxQbGFuUXVhbEluaXQoKSB3YXMgZG9u ZSB0byBiZWdpbiB3aXRoLiAqLworCWlmIChlcHFzdGF0ZS0+cGFyZW50ZXN0YXRlID09IE5VTEwp CisJCXJldHVybjsKKwogCXJ0c2l6ZSA9IGVwcXN0YXRlLT5wYXJlbnRlc3RhdGUtPmVzX3Jhbmdl X3RhYmxlX3NpemU7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IDUzZWFkNzdlY2Uu LjBkZmJhNWNhMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTQzMDMsNyArNDMwMyw2IEBA IEdldEFnZ0luaXRWYWwoRGF0dW0gdGV4dEluaXRWYWwsIE9pZCB0cmFuc3R5cGUpCiB2b2lkCiBF eGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAlp bnQJCQl0cmFuc25vOwogCWludAkJCW51bUdyb3VwaW5nU2V0cyA9IE1heChub2RlLT5tYXhzZXRz LCAxKTsKIAlpbnQJCQlzZXRubzsKQEAgLTQzMTMsNyArNDMxMiw3IEBAIEV4ZWNFbmRBZ2coQWdn U3RhdGUgKm5vZGUpCiAJICogd29ya2VyIGJhY2sgaW50byBzaGFyZWQgbWVtb3J5IHNvIHRoYXQg aXQgY2FuIGJlIHBpY2tlZCB1cCBieSB0aGUgbWFpbgogCSAqIHByb2Nlc3MgdG8gcmVwb3J0IGlu IEVYUExBSU4gQU5BTFlaRS4KIAkgKi8KLQlpZiAobm9kZS0+c2hhcmVkX2luZm8gJiYgSXNQYXJh bGxlbFdvcmtlcigpKQorCWlmIChub2RlLT5zaGFyZWRfaW5mbyAhPSBOVUxMICYmIElzUGFyYWxs ZWxXb3JrZXIoKSkKIAl7CiAJCUFnZ3JlZ2F0ZUluc3RydW1lbnRhdGlvbiAqc2k7CiAKQEAgLTQz MjYsMTAgKzQzMjUsMTYgQEAgRXhlY0VuZEFnZyhBZ2dTdGF0ZSAqbm9kZSkKIAogCS8qIE1ha2Ug c3VyZSB3ZSBoYXZlIGNsb3NlZCBhbnkgb3BlbiB0dXBsZXNvcnRzICovCiAKLQlpZiAobm9kZS0+ c29ydF9pbikKKwlpZiAobm9kZS0+c29ydF9pbiAhPSBOVUxMKQorCXsKIAkJdHVwbGVzb3J0X2Vu ZChub2RlLT5zb3J0X2luKTsKLQlpZiAobm9kZS0+c29ydF9vdXQpCisJCW5vZGUtPnNvcnRfaW4g PSBOVUxMOworCX0KKwlpZiAobm9kZS0+c29ydF9vdXQgIT0gTlVMTCkKKwl7CiAJCXR1cGxlc29y dF9lbmQobm9kZS0+c29ydF9vdXQpOworCQlub2RlLT5zb3J0X291dCA9IE5VTEw7CisJfQogCiAJ aGFzaGFnZ19yZXNldF9zcGlsbF9zdGF0ZShub2RlKTsKIApAQCAtNDM0NSwxOSArNDM1MCwyNSBA QCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQogCiAJCWZvciAoc2V0bm8gPSAwOyBzZXRubyA8 IG51bUdyb3VwaW5nU2V0czsgc2V0bm8rKykKIAkJewotCQkJaWYgKHBlcnRyYW5zLT5zb3J0c3Rh dGVzW3NldG5vXSkKKwkJCWlmIChwZXJ0cmFucy0+c29ydHN0YXRlc1tzZXRub10gIT0gTlVMTCkK IAkJCQl0dXBsZXNvcnRfZW5kKHBlcnRyYW5zLT5zb3J0c3RhdGVzW3NldG5vXSk7CiAJCX0KIAl9 CiAKIAkvKiBBbmQgZW5zdXJlIGFueSBhZ2cgc2h1dGRvd24gY2FsbGJhY2tzIGhhdmUgYmVlbiBj YWxsZWQgKi8KIAlmb3IgKHNldG5vID0gMDsgc2V0bm8gPCBudW1Hcm91cGluZ1NldHM7IHNldG5v KyspCisJewogCQlSZVNjYW5FeHByQ29udGV4dChub2RlLT5hZ2djb250ZXh0c1tzZXRub10pOwot CWlmIChub2RlLT5oYXNoY29udGV4dCkKKwkJbm9kZS0+YWdnY29udGV4dHNbc2V0bm9dID0gTlVM TDsKKwl9CisJaWYgKG5vZGUtPmhhc2hjb250ZXh0ICE9IE5VTEwpCisJewogCQlSZVNjYW5FeHBy Q29udGV4dChub2RlLT5oYXNoY29udGV4dCk7CisJCW5vZGUtPmhhc2hjb250ZXh0ID0gTlVMTDsK Kwl9CiAKLQlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShv dXRlclBsYW4pOworCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBs YW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQu YwppbmRleCBjYTBmNTRkNjc2Li44NmQ3NWIxYTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVu ZC5jCkBAIC0zOTksNyArMzk5LDEwIEBAIEV4ZWNFbmRBcHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUp CiAJICogc2h1dCBkb3duIGVhY2ggb2YgdGhlIHN1YnNjYW5zCiAJICovCiAJZm9yIChpID0gMDsg aSA8IG5wbGFuczsgaSsrKQorCXsKIAkJRXhlY0VuZE5vZGUoYXBwZW5kcGxhbnNbaV0pOworCQlh cHBlbmRwbGFuc1tpXSA9IE5VTEw7CisJfQogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwQW5kLmMKaW5kZXggOWM5YzY2Njg3Mi4uYWUzOTEyMjJiZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtMTkyLDggKzE5Miw4IEBAIEV4ZWNFbmRCaXRtYXBBbmQo Qml0bWFwQW5kU3RhdGUgKm5vZGUpCiAJICovCiAJZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsr KQogCXsKLQkJaWYgKGJpdG1hcHBsYW5zW2ldKQotCQkJRXhlY0VuZE5vZGUoYml0bWFwcGxhbnNb aV0pOworCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7CisJCWJpdG1hcHBsYW5zW2ldID0g TlVMTDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMK aW5kZXggM2M2M2JkZDkzZC4uMTlmMThhYjgxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTYyNSw4ICs2MjUsNiBAQCBFeGVjUmVTY2FuQml0bWFwSGVh cFNjYW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIHZvaWQKIEV4ZWNFbmRCaXRtYXBIZWFw U2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogewotCVRhYmxlU2NhbkRlc2Mgc2NhbkRl c2M7Ci0KIAkvKgogCSAqIFdoZW4gZW5kaW5nIGEgcGFyYWxsZWwgd29ya2VyLCBjb3B5IHRoZSBz dGF0aXN0aWNzIGdhdGhlcmVkIGJ5IHRoZQogCSAqIHdvcmtlciBiYWNrIGludG8gc2hhcmVkIG1l bW9yeSBzbyB0aGF0IGl0IGNhbiBiZSBwaWNrZWQgdXAgYnkgdGhlIG1haW4KQEAgLTY1MCwzOCAr NjQ4LDU0IEBAIEV4ZWNFbmRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2Rl KQogCQlzaS0+bG9zc3lfcGFnZXMgKz0gbm9kZS0+c3RhdHMubG9zc3lfcGFnZXM7CiAJfQogCi0J LyoKLQkgKiBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQlzY2FuRGVz YyA9IG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYzsKLQogCS8qCiAJICogY2xvc2UgZG93biBz dWJwbGFucwogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRl clBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAKIAkvKgogCSAqIHJlbGVhc2UgYml0bWFwcyBhbmQg YnVmZmVycyBpZiBhbnkKIAkgKi8KLQlpZiAobm9kZS0+dGJtaXRlcmF0b3IpCisJaWYgKG5vZGUt PnRibWl0ZXJhdG9yICE9IE5VTEwpCisJewogCQl0Ym1fZW5kX2l0ZXJhdGUobm9kZS0+dGJtaXRl cmF0b3IpOwotCWlmIChub2RlLT5wcmVmZXRjaF9pdGVyYXRvcikKKwkJbm9kZS0+dGJtaXRlcmF0 b3IgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+cHJlZmV0Y2hfaXRlcmF0b3IgIT0gTlVMTCkKKwl7 CiAJCXRibV9lbmRfaXRlcmF0ZShub2RlLT5wcmVmZXRjaF9pdGVyYXRvcik7Ci0JaWYgKG5vZGUt PnRibSkKKwkJbm9kZS0+cHJlZmV0Y2hfaXRlcmF0b3IgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+ dGJtICE9IE5VTEwpCisJewogCQl0Ym1fZnJlZShub2RlLT50Ym0pOwotCWlmIChub2RlLT5zaGFy ZWRfdGJtaXRlcmF0b3IpCisJCW5vZGUtPnRibSA9IE5VTEw7CisJfQorCWlmIChub2RlLT5zaGFy ZWRfdGJtaXRlcmF0b3IgIT0gTlVMTCkKKwl7CiAJCXRibV9lbmRfc2hhcmVkX2l0ZXJhdGUobm9k ZS0+c2hhcmVkX3RibWl0ZXJhdG9yKTsKLQlpZiAobm9kZS0+c2hhcmVkX3ByZWZldGNoX2l0ZXJh dG9yKQorCQlub2RlLT5zaGFyZWRfdGJtaXRlcmF0b3IgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+ c2hhcmVkX3ByZWZldGNoX2l0ZXJhdG9yICE9IE5VTEwpCisJewogCQl0Ym1fZW5kX3NoYXJlZF9p dGVyYXRlKG5vZGUtPnNoYXJlZF9wcmVmZXRjaF9pdGVyYXRvcik7CisJCW5vZGUtPnNoYXJlZF9w cmVmZXRjaF9pdGVyYXRvciA9IE5VTEw7CisJfQogCWlmIChub2RlLT5wdm1idWZmZXIgIT0gSW52 YWxpZEJ1ZmZlcikKKwl7CiAJCVJlbGVhc2VCdWZmZXIobm9kZS0+cHZtYnVmZmVyKTsKKwkJbm9k ZS0+cHZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl9CiAKIAkvKgotCSAqIGNsb3NlIGhlYXAg c2NhbgorCSAqIGNsb3NlIGhlYXAgc2NhbiAobm8tb3AgaWYgd2UgZGlkbid0IHN0YXJ0IGl0KQog CSAqLwotCWlmIChzY2FuRGVzYykKLQkJdGFibGVfZW5kc2NhbihzY2FuRGVzYyk7Ci0KKwlpZiAo bm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjICE9IE5VTEwpCisJeworCQl0YWJsZV9lbmRzY2Fu KG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7CisJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2Fu RGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQml0bWFwSW5kZXhzY2FuLmMKaW5kZXggNmRmOGUxN2VjOC4uNDY2OWU4ZDBjZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwpAQCAtMTc0LDIyICsxNzQs MjEgQEAgRXhlY1JlU2NhbkJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9k ZSkKIHZvaWQKIEV4ZWNFbmRCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuU3RhdGUgKm5v ZGUpCiB7Ci0JUmVsYXRpb24JaW5kZXhSZWxhdGlvbkRlc2M7Ci0JSW5kZXhTY2FuRGVzYyBpbmRl eFNjYW5EZXNjOwotCi0JLyoKLQkgKiBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUK LQkgKi8KLQlpbmRleFJlbGF0aW9uRGVzYyA9IG5vZGUtPmJpc3NfUmVsYXRpb25EZXNjOwotCWlu ZGV4U2NhbkRlc2MgPSBub2RlLT5iaXNzX1NjYW5EZXNjOworCS8qIGNsb3NlIHRoZSBzY2FuIChu by1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpICovCisJaWYgKG5vZGUtPmJpc3NfU2NhbkRlc2Mg IT0gTlVMTCkKKwl7CisJCWluZGV4X2VuZHNjYW4obm9kZS0+Ymlzc19TY2FuRGVzYyk7CisJCW5v ZGUtPmJpc3NfU2NhbkRlc2MgPSBOVUxMOworCX0KIAogCS8qCiAJICogY2xvc2UgdGhlIGluZGV4 IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkKIAkgKi8KLQlpZiAoaW5kZXhT Y2FuRGVzYykKLQkJaW5kZXhfZW5kc2NhbihpbmRleFNjYW5EZXNjKTsKLQlpZiAoaW5kZXhSZWxh dGlvbkRlc2MpCi0JCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb25EZXNjLCBOb0xvY2spOworCWlm IChub2RlLT5iaXNzX1JlbGF0aW9uRGVzYyAhPSBOVUxMKQorCXsKKwkJaW5kZXhfY2xvc2Uobm9k ZS0+Ymlzc19SZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUtPmJpc3NfUmVsYXRpb25EZXNj ID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9y LmMKaW5kZXggNzAyOTUzNmM2NC4uZGU0MzkyMzVkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcE9yLmMKQEAgLTIxMCw4ICsyMTAsOCBAQCBFeGVjRW5kQml0bWFwT3IoQml0bWFwT3JTdGF0 ZSAqbm9kZSkKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCiAJewotCQlpZiAo Yml0bWFwcGxhbnNbaV0pCi0JCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7CisJCUV4ZWNF bmROb2RlKGJpdG1hcHBsYW5zW2ldKTsKKwkJYml0bWFwcGxhbnNbaV0gPSBOVUxMOwogCX0KIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMKaW5kZXggODA4MWVlZDg4Ny4uN2NlYTk0Mzk4 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jCkBAIC0yOTAsMTAgKzI5MCwxMSBAQCBF eGVjRW5kQ3RlU2NhbihDdGVTY2FuU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBJZiBJIGFtIHRoZSBs ZWFkZXIsIGZyZWUgdGhlIHR1cGxlc3RvcmUuCiAJICovCi0JaWYgKG5vZGUtPmxlYWRlciA9PSBu b2RlKQorCWlmIChub2RlLT5sZWFkZXIgIT0gTlVMTCAmJiBub2RlLT5sZWFkZXIgPT0gbm9kZSkK IAl7CiAJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPmN0ZV90YWJsZSk7CiAJCW5vZGUtPmN0ZV90YWJs ZSA9IE5VTEw7CisJCW5vZGUtPmxlYWRlciA9IE5VTEw7CiAJfQogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IGZlNGFlNTVjMGYuLjEzNTdjY2YzYzkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCkBAIC0zMDAsMTcgKzMwMCwyMCBAQCBF eGVjRW5kRm9yZWlnblNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAlFU3RhdGUJICAgKmVz dGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCiAJLyogTGV0IHRoZSBGRFcgc2h1dCBkb3duICov Ci0JaWYgKHBsYW4tPm9wZXJhdGlvbiAhPSBDTURfU0VMRUNUKQorCWlmIChub2RlLT5mZHdyb3V0 aW5lICE9IE5VTEwpCiAJewotCQlpZiAoZXN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpCi0J CQlub2RlLT5mZHdyb3V0aW5lLT5FbmREaXJlY3RNb2RpZnkobm9kZSk7CisJCWlmIChwbGFuLT5v cGVyYXRpb24gIT0gQ01EX1NFTEVDVCkKKwkJeworCQkJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2 ZSA9PSBOVUxMKQorCQkJCW5vZGUtPmZkd3JvdXRpbmUtPkVuZERpcmVjdE1vZGlmeShub2RlKTsK KwkJfQorCQllbHNlCisJCQlub2RlLT5mZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsK IAl9Ci0JZWxzZQotCQlub2RlLT5mZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsKIAog CS8qIFNodXQgZG93biBhbnkgb3V0ZXIgcGxhbi4gKi8KLQlpZiAob3V0ZXJQbGFuU3RhdGUobm9k ZSkpCi0JCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVy LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggNWQ0ZmZlOTg5Yy4u Y2FlNWVhMWY5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtMjQ0LDYgKzI0NCw3 IEBAIHZvaWQKIEV4ZWNFbmRHYXRoZXIoR2F0aGVyU3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5v ZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwkvKiBsZXQgY2hpbGRyZW4gY2xlYW4gdXAgZmlyc3Qg Ki8KKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY1NodXRkb3duR2F0aGVyKG5v ZGUpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVy Z2UuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IDQ1ZjYw MTdjMjkuLmIzNmNkODllN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH YXRoZXJNZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5j CkBAIC0yODQsNiArMjg0LDcgQEAgdm9pZAogRXhlY0VuZEdhdGhlck1lcmdlKEdhdGhlck1lcmdl U3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwkvKiBs ZXQgY2hpbGRyZW4gY2xlYW4gdXAgZmlyc3QgKi8KKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5V TEw7CiAJRXhlY1NodXRkb3duR2F0aGVyTWVyZ2Uobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdyb3VwLmMKaW5kZXggZGEzMmJlYzE4MS4uODA3NDI5ZTUwNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdyb3VwLmMKQEAgLTIyNSwxMCArMjI1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kR3JvdXAoR3JvdXBTdGF0 ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBsYW47Ci0KLQlvdXRlclBsYW4gPSBvdXRl clBsYW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOworCUV4ZWNFbmROb2Rl KG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9 CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCmluZGV4IDU3MGE5MGViZTEuLmE5MTNkNWI1 MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwpAQCAtNDI3LDEzICs0MjcsMTEgQEAgRXhlY0lu aXRIYXNoKEhhc2ggKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhl Y0VuZEhhc2goSGFzaFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKLQog CS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCi0Jb3V0ZXJQbGFuID0gb3V0ZXJQ bGFuU3RhdGUobm9kZSk7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKKwlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQog CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggMmY3MTcwNjA0ZC4uOTAxYzll OWJlNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTk1MCw3ICs5NTAsNyBA QCBFeGVjRW5kSGFzaEpvaW4oSGFzaEpvaW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIEZyZWUgaGFz aCB0YWJsZQogCSAqLwotCWlmIChub2RlLT5oal9IYXNoVGFibGUpCisJaWYgKG5vZGUtPmhqX0hh c2hUYWJsZSAhPSBOVUxMKQogCXsKIAkJRXhlY0hhc2hUYWJsZURlc3Ryb3kobm9kZS0+aGpfSGFz aFRhYmxlKTsKIAkJbm9kZS0+aGpfSGFzaFRhYmxlID0gTlVMTDsKQEAgLTk2MCw3ICs5NjAsOSBA QCBFeGVjRW5kSGFzaEpvaW4oSGFzaEpvaW5TdGF0ZSAqbm9kZSkKIAkgKiBjbGVhbiB1cCBzdWJ0 cmVlcwogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBs YW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkp OworCWlubmVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYwppbmRleCAyY2U1ZWQ1ZWM4Li4wMTBiY2ZhZmE4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCkBAIC0xMDc4 LDggKzEwNzgsMTYgQEAgRXhlY0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0 ZSAqbm9kZSkKIHsKIAlTT19wcmludGYoIkV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQ6IHNodXR0aW5n IGRvd24gc29ydCBub2RlXG4iKTsKIAotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9k ZS0+Z3JvdXBfcGl2b3QpOwotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+dHJh bnNmZXJfdHVwbGUpOworCWlmIChub2RlLT5ncm91cF9waXZvdCAhPSBOVUxMKQorCXsKKwkJRXhl Y0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChub2RlLT5ncm91cF9waXZvdCk7CisJCW5vZGUtPmdy b3VwX3Bpdm90ID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPnRyYW5zZmVyX3R1cGxlICE9IE5VTEwp CisJeworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVyX3R1cGxl KTsKKwkJbm9kZS0+dHJhbnNmZXJfdHVwbGUgPSBOVUxMOworCX0KIAogCS8qCiAJICogUmVsZWFz ZSB0dXBsZXNvcnQgcmVzb3VyY2VzLgpAQCAtMTA5OSw2ICsxMTA3LDcgQEAgRXhlY0VuZEluY3Jl bWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0ZSAqbm9kZSkKIAkgKiBTaHV0IGRvd24gdGhl IHN1YnBsYW4uCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91 dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAogCVNPX3ByaW50ZigiRXhlY0VuZEluY3JlbWVu dGFsU29ydDogc29ydCBub2RlIHNodXRkb3duXG4iKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IDYxMmM2NzM4OTUuLjQ4MWQ0Nzk3NjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtMzk3LDE1ICszOTcsNiBAQCBF eGVjUmVTY2FuSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiB2b2lkCiBF eGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JUmVsYXRp b24JaW5kZXhSZWxhdGlvbkRlc2M7Ci0JSW5kZXhTY2FuRGVzYyBpbmRleFNjYW5EZXNjOwotCi0J LyoKLQkgKiBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQlpbmRleFJl bGF0aW9uRGVzYyA9IG5vZGUtPmlvc3NfUmVsYXRpb25EZXNjOwotCWluZGV4U2NhbkRlc2MgPSBu b2RlLT5pb3NzX1NjYW5EZXNjOwotCiAJLyogUmVsZWFzZSBWTSBidWZmZXIgcGluLCBpZiBhbnku ICovCiAJaWYgKG5vZGUtPmlvc3NfVk1CdWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKIAl7CkBAIC00 MTMsMTMgKzQwNCwyMSBAQCBFeGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUg Km5vZGUpCiAJCW5vZGUtPmlvc3NfVk1CdWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCS8q IGNsb3NlIHRoZSBzY2FuIChuby1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpICovCisJaWYgKG5v ZGUtPmlvc3NfU2NhbkRlc2MgIT0gTlVMTCkKKwl7CisJCWluZGV4X2VuZHNjYW4obm9kZS0+aW9z c19TY2FuRGVzYyk7CisJCW5vZGUtPmlvc3NfU2NhbkRlc2MgPSBOVUxMOworCX0KKwogCS8qCiAJ ICogY2xvc2UgdGhlIGluZGV4IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkK IAkgKi8KLQlpZiAoaW5kZXhTY2FuRGVzYykKLQkJaW5kZXhfZW5kc2NhbihpbmRleFNjYW5EZXNj KTsKLQlpZiAoaW5kZXhSZWxhdGlvbkRlc2MpCi0JCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb25E ZXNjLCBOb0xvY2spOworCWlmIChub2RlLT5pb3NzX1JlbGF0aW9uRGVzYyAhPSBOVUxMKQorCXsK KwkJaW5kZXhfY2xvc2Uobm9kZS0+aW9zc19SZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUt Pmlvc3NfUmVsYXRpb25EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCA4MDAwZmVmZjRjLi5hODE3MmQ4YjgyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC03ODQsMjIgKzc4NCwyMSBAQCBFeGVj SW5kZXhBZHZhbmNlQXJyYXlLZXlzKEluZGV4QXJyYXlLZXlJbmZvICphcnJheUtleXMsIGludCBu dW1BcnJheUtleXMpCiB2b2lkCiBFeGVjRW5kSW5kZXhTY2FuKEluZGV4U2NhblN0YXRlICpub2Rl KQogewotCVJlbGF0aW9uCWluZGV4UmVsYXRpb25EZXNjOwotCUluZGV4U2NhbkRlc2MgaW5kZXhT Y2FuRGVzYzsKLQotCS8qCi0JICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0J ICovCi0JaW5kZXhSZWxhdGlvbkRlc2MgPSBub2RlLT5pc3NfUmVsYXRpb25EZXNjOwotCWluZGV4 U2NhbkRlc2MgPSBub2RlLT5pc3NfU2NhbkRlc2M7CisJLyogY2xvc2UgdGhlIHNjYW4gKG5vLW9w IGlmIHdlIGRpZG4ndCBzdGFydCBpdCkgKi8KKwlpZiAobm9kZS0+aXNzX1NjYW5EZXNjICE9IE5V TEwpCisJeworCQlpbmRleF9lbmRzY2FuKG5vZGUtPmlzc19TY2FuRGVzYyk7CisJCW5vZGUtPmlz c19TY2FuRGVzYyA9IE5VTEw7CisJfQogCiAJLyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRp b24gKG5vLW9wIGlmIHdlIGRpZG4ndCBvcGVuIGl0KQogCSAqLwotCWlmIChpbmRleFNjYW5EZXNj KQotCQlpbmRleF9lbmRzY2FuKGluZGV4U2NhbkRlc2MpOwotCWlmIChpbmRleFJlbGF0aW9uRGVz YykKLQkJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJaWYgKG5vZGUt Pmlzc19SZWxhdGlvbkRlc2MgIT0gTlVMTCkKKwl7CisJCWluZGV4X2Nsb3NlKG5vZGUtPmlzc19S ZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUtPmlzc19SZWxhdGlvbkRlc2MgPSBOVUxMOwor CX0KIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCBlNmYxZmIx NTYyLi5lYjdiNmU1MmJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNTM0LDYgKzUz NCw3IEBAIHZvaWQKIEV4ZWNFbmRMaW1pdChMaW1pdFN0YXRlICpub2RlKQogewogCUV4ZWNFbmRO b2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7 CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwppbmRleCA0MTc1NGRkZmVhLi4w ZDM0ODkxOTViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3Mu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwpAQCAtMzg3LDYgKzM4 Nyw3IEBAIEV4ZWNFbmRMb2NrUm93cyhMb2NrUm93c1N0YXRlICpub2RlKQogCS8qIFdlIG1heSBo YXZlIHNodXQgZG93biBFUFEgYWxyZWFkeSwgYnV0IG5vIGhhcm0gaW4gYW5vdGhlciBjYWxsICov CiAJRXZhbFBsYW5RdWFsRW5kKCZub2RlLT5scl9lcHFzdGF0ZSk7CiAJRXhlY0VuZE5vZGUob3V0 ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCmluZGV4IDIyZTE3ODdmYmQuLjg4M2UzZjM5 MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCkBAIC0yNDMsMTMgKzI0MywxNiBA QCBFeGVjRW5kTWF0ZXJpYWwoTWF0ZXJpYWxTdGF0ZSAqbm9kZSkKIAkgKiBSZWxlYXNlIHR1cGxl c3RvcmUgcmVzb3VyY2VzCiAJICovCiAJaWYgKG5vZGUtPnR1cGxlc3RvcmVzdGF0ZSAhPSBOVUxM KQorCXsKIAkJdHVwbGVzdG9yZV9lbmQobm9kZS0+dHVwbGVzdG9yZXN0YXRlKTsKLQlub2RlLT50 dXBsZXN0b3Jlc3RhdGUgPSBOVUxMOworCQlub2RlLT50dXBsZXN0b3Jlc3RhdGUgPSBOVUxMOwor CX0KIAogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCiAJRXhlY0VuZE5vZGUo b3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0K IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9p emUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggZGY4ZTNmZmYw OC4uNjkwZGVlMWRhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9p emUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC0xMTI4LDEy ICsxMTI4LDE3IEBAIEV4ZWNFbmRNZW1vaXplKE1lbW9pemVTdGF0ZSAqbm9kZSkKIAl9CiAKIAkv KiBSZW1vdmUgdGhlIGNhY2hlIGNvbnRleHQgKi8KLQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUt PnRhYmxlQ29udGV4dCk7CisJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCAhPSBOVUxMKQorCXsKKwkJ TWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQpOworCQlub2RlLT50YWJsZUNv bnRleHQgPSBOVUxMOworCX0KIAogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICov CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5v ZGUpID0gTlVMTDsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YwppbmRleCBlMWI5Yjk4NGE3Li4zMjM2NDQ0Y2YxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVyZ2VBcHBlbmQuYwpAQCAtMzMzLDcgKzMzMywxMCBAQCBFeGVjRW5kTWVyZ2VBcHBlbmQoTWVy Z2VBcHBlbmRTdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vic2NhbnMK IAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCisJewogCQlFeGVjRW5kTm9kZSht ZXJnZXBsYW5zW2ldKTsKKwkJbWVyZ2VwbGFuc1tpXSA9IE5VTEw7CisJfQogfQogCiB2b2lkCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggMjljNTRmY2Q3NS4uOTI2ZTYzMWQ4 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAtMTY0Nyw3ICsxNjQ3LDkg QEAgRXhlY0VuZE1lcmdlSm9pbihNZXJnZUpvaW5TdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRvd24g dGhlIHN1YnBsYW5zCiAJICovCiAJRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkpOwor CWlubmVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0 ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogCiAJTUoxX3ByaW50Zigi RXhlY0VuZE1lcmdlSm9pbjogJXNcbiIsCiAJCQkgICAibm9kZSBwcm9jZXNzaW5nIGVuZGVkIik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDhiZjRjODBkNGEuLjll NTZmOWMzNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC00NzI0 LDcgKzQ3MjQsOSBAQCBFeGVjRW5kTW9kaWZ5VGFibGUoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkK IAkJZm9yIChqID0gMDsgaiA8IHJlc3VsdFJlbEluZm8tPnJpX051bVNsb3RzSW5pdGlhbGl6ZWQ7 IGorKykKIAkJewogCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChyZXN1bHRSZWxJbmZv LT5yaV9TbG90c1tqXSk7CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9TbG90c1tqXSA9IE5VTEw7CiAJ CQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHJlc3VsdFJlbEluZm8tPnJpX1BsYW5TbG90 c1tqXSk7CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9QbGFuU2xvdHNbal0gPSBOVUxMOwogCQl9CiAJ fQogCkBAIC00NzMyLDEyICs0NzM0LDE2IEBAIEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJs ZVN0YXRlICpub2RlKQogCSAqIENsb3NlIGFsbCB0aGUgcGFydGl0aW9uZWQgdGFibGVzLCBsZWFm IHBhcnRpdGlvbnMsIGFuZCB0aGVpciBpbmRpY2VzCiAJICogYW5kIHJlbGVhc2UgdGhlIHNsb3Qg dXNlZCBmb3IgdHVwbGUgcm91dGluZywgaWYgc2V0LgogCSAqLwotCWlmIChub2RlLT5tdF9wYXJ0 aXRpb25fdHVwbGVfcm91dGluZykKKwlpZiAobm9kZS0+bXRfcGFydGl0aW9uX3R1cGxlX3JvdXRp bmcgIT0gTlVMTCkKIAl7CiAJCUV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKG5vZGUsIG5vZGUtPm10 X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5nKTsKKwkJbm9kZS0+bXRfcGFydGl0aW9uX3R1cGxlX3Jv dXRpbmcgPSBOVUxMOwogCi0JCWlmIChub2RlLT5tdF9yb290X3R1cGxlX3Nsb3QpCisJCWlmIChu b2RlLT5tdF9yb290X3R1cGxlX3Nsb3QgIT0gTlVMTCkKKwkJewogCQkJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChub2RlLT5tdF9yb290X3R1cGxlX3Nsb3QpOworCQkJbm9kZS0+bXRfcm9v dF90dXBsZV9zbG90ID0gTlVMTDsKKwkJfQogCX0KIAogCS8qCkBAIC00NzQ5LDYgKzQ3NTUsNyBA QCBFeGVjRW5kTW9kaWZ5VGFibGUoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRv d24gc3VicGxhbgogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlv dXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU5lc3Rsb29wLmMKaW5kZXggN2Y0YmY2YzRkYi4uMDFmM2Q1NmEzYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTM2Nyw3ICszNjcsOSBAQCBFeGVjRW5kTmVzdExvb3AoTmVz dExvb3BTdGF0ZSAqbm9kZSkKIAkgKiBjbG9zZSBkb3duIHN1YnBsYW5zCiAJICovCiAJRXhlY0Vu ZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVM TDsKIAlFeGVjRW5kTm9kZShpbm5lclBsYW5TdGF0ZShub2RlKSk7CisJaW5uZXJQbGFuU3RhdGUo bm9kZSkgPSBOVUxMOwogCiAJTkwxX3ByaW50ZigiRXhlY0VuZE5lc3RMb29wOiAlc1xuIiwKIAkJ CSAgICJub2RlIHByb2Nlc3NpbmcgZW5kZWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVj dFNldC5jCmluZGV4IGU0ODM3MzAwMTUuLmNhOWE1ZTJlZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVByb2plY3RTZXQuYwpAQCAtMzMxLDYgKzMzMSw3IEBAIEV4ZWNFbmRQcm9qZWN0U2V0KFBy b2plY3RTZXRTdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRvd24gc3VicGxhbnMKIAkgKi8KIAlFeGVj RW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBO VUxMOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVj dXJzaXZldW5pb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5j CmluZGV4IGM3ZjhhMTlmYTQuLjc2ODAxNDJjN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVSZWN1cnNpdmV1bmlvbi5jCkBAIC0yNzIsMjAgKzI3MiwzNiBAQCB2b2lkCiBFeGVjRW5kUmVj dXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb25TdGF0ZSAqbm9kZSkKIHsKIAkvKiBSZWxlYXNlIHR1 cGxlc3RvcmVzICovCi0JdHVwbGVzdG9yZV9lbmQobm9kZS0+d29ya2luZ190YWJsZSk7Ci0JdHVw bGVzdG9yZV9lbmQobm9kZS0+aW50ZXJtZWRpYXRlX3RhYmxlKTsKKwlpZiAobm9kZS0+d29ya2lu Z190YWJsZSAhPSBOVUxMKQorCXsKKwkJdHVwbGVzdG9yZV9lbmQobm9kZS0+d29ya2luZ190YWJs ZSk7CisJCW5vZGUtPndvcmtpbmdfdGFibGUgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+aW50ZXJt ZWRpYXRlX3RhYmxlICE9IE5VTEwpCisJeworCQl0dXBsZXN0b3JlX2VuZChub2RlLT5pbnRlcm1l ZGlhdGVfdGFibGUpOworCQlub2RlLT5pbnRlcm1lZGlhdGVfdGFibGUgPSBOVUxMOworCX0KIAog CS8qIGZyZWUgc3Vic2lkaWFyeSBzdHVmZiBpbmNsdWRpbmcgaGFzaHRhYmxlICovCi0JaWYgKG5v ZGUtPnRlbXBDb250ZXh0KQorCWlmIChub2RlLT50ZW1wQ29udGV4dCAhPSBOVUxMKQorCXsKIAkJ TWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50ZW1wQ29udGV4dCk7Ci0JaWYgKG5vZGUtPnRhYmxl Q29udGV4dCkKKwkJbm9kZS0+dGVtcENvbnRleHQgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+dGFi bGVDb250ZXh0ICE9IE5VTEwpCisJewogCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxl Q29udGV4dCk7CisJCW5vZGUtPnRhYmxlQ29udGV4dCA9IE5VTEw7CisJfQogCiAJLyoKIAkgKiBj bG9zZSBkb3duIHN1YnBsYW5zCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9k ZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAlFeGVjRW5kTm9kZShpbm5lclBs YW5TdGF0ZShub2RlKSk7CisJaW5uZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKaW5kZXggMzQ4MzYxZTdmNC4uZTNjZmM5 Yjc3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwpAQCAtMjQzLDYgKzI0Myw3IEBAIEV4 ZWNFbmRSZXN1bHQoUmVzdWx0U3RhdGUgKm5vZGUpCiAJICogc2h1dCBkb3duIHN1YnBsYW5zCiAJ ICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRl KG5vZGUpID0gTlVMTDsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNhbXBsZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2Fu LmMKaW5kZXggNzE0YjA3NmU2NC4uNmFiOTEwMDFiYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2FtcGxlc2Nhbi5jCkBAIC0xODEsMTQgKzE4MSwxNyBAQCBFeGVjRW5kU2FtcGxlU2NhbihTYW1w bGVTY2FuU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBUZWxsIHNhbXBsaW5nIGZ1bmN0aW9uIHRoYXQg d2UgZmluaXNoZWQgdGhlIHNjYW4uCiAJICovCi0JaWYgKG5vZGUtPnRzbXJvdXRpbmUtPkVuZFNh bXBsZVNjYW4pCisJaWYgKG5vZGUtPnRzbXJvdXRpbmUgIT0gTlVMTCAmJiBub2RlLT50c21yb3V0 aW5lLT5FbmRTYW1wbGVTY2FuKQogCQlub2RlLT50c21yb3V0aW5lLT5FbmRTYW1wbGVTY2FuKG5v ZGUpOwogCiAJLyoKLQkgKiBjbG9zZSBoZWFwIHNjYW4KKwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5v LW9wIGlmIHdlIGRpZG4ndCBzdGFydCBpdCkKIAkgKi8KIAlpZiAobm9kZS0+c3Muc3NfY3VycmVu dFNjYW5EZXNjKQorCXsKIAkJdGFibGVfZW5kc2Nhbihub2RlLT5zcy5zc19jdXJyZW50U2NhbkRl c2MpOworCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKaW5kZXggN2NiMTJhMTFjMi4uYjA1 Mjc3NWU1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0xODMsMTggKzE4Mywx NCBAQCBFeGVjSW5pdFNlcVNjYW4oU2VxU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiB2b2lkCiBFeGVjRW5kU2VxU2NhbihTZXFTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JVGFi bGVTY2FuRGVzYyBzY2FuRGVzYzsKLQotCS8qCi0JICogZ2V0IGluZm9ybWF0aW9uIGZyb20gbm9k ZQotCSAqLwotCXNjYW5EZXNjID0gbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjOwotCiAJLyoK LQkgKiBjbG9zZSBoZWFwIHNjYW4KKwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5vLW9wIGlmIHdlIGRp ZG4ndCBzdGFydCBpdCkKIAkgKi8KLQlpZiAoc2NhbkRlc2MgIT0gTlVMTCkKLQkJdGFibGVfZW5k c2NhbihzY2FuRGVzYyk7CisJaWYgKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyAhPSBOVUxM KQorCXsKKwkJdGFibGVfZW5kc2Nhbihub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpOworCQlu b2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCBhOGFjNjhiNDgyLi5mZTM0YjIxMzRmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTgzLDEwICs1ODMsMTQgQEAgdm9pZAogRXhlY0Vu ZFNldE9wKFNldE9wU3RhdGUgKm5vZGUpCiB7CiAJLyogZnJlZSBzdWJzaWRpYXJ5IHN0dWZmIGlu Y2x1ZGluZyBoYXNodGFibGUgKi8KLQlpZiAobm9kZS0+dGFibGVDb250ZXh0KQorCWlmIChub2Rl LT50YWJsZUNvbnRleHQgIT0gTlVMTCkKKwl7CiAJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+ dGFibGVDb250ZXh0KTsKKwkJbm9kZS0+dGFibGVDb250ZXh0ID0gTlVMTDsKKwl9CiAKIAlFeGVj RW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBO VUxMOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCmluZGV4IDNmYzkyNWQ3YjQuLmFmODUy NDY0ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwpAQCAtMzA3LDEzICszMDcsMTYgQEAgRXhl Y0VuZFNvcnQoU29ydFN0YXRlICpub2RlKQogCSAqIFJlbGVhc2UgdHVwbGVzb3J0IHJlc291cmNl cwogCSAqLwogCWlmIChub2RlLT50dXBsZXNvcnRzdGF0ZSAhPSBOVUxMKQorCXsKIAkJdHVwbGVz b3J0X2VuZCgoVHVwbGVzb3J0c3RhdGUgKikgbm9kZS0+dHVwbGVzb3J0c3RhdGUpOwotCW5vZGUt PnR1cGxlc29ydHN0YXRlID0gTlVMTDsKKwkJbm9kZS0+dHVwbGVzb3J0c3RhdGUgPSBOVUxMOwor CX0KIAogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCiAJRXhlY0VuZE5vZGUo b3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAog CVNPMV9wcmludGYoIkV4ZWNFbmRTb3J0OiAlc1xuIiwKIAkJCSAgICJzb3J0IG5vZGUgc2h1dGRv d24iKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwppbmRleCA3ODIwOTdl YWYyLi4wYjI2MTIxODNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3Vi cXVlcnlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5j CkBAIC0xNzEsNiArMTcxLDcgQEAgRXhlY0VuZFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW5TdGF0 ZSAqbm9kZSkKIAkgKiBjbG9zZSBkb3duIHN1YnF1ZXJ5CiAJICovCiAJRXhlY0VuZE5vZGUobm9k ZS0+c3VicGxhbik7CisJbm9kZS0+c3VicGxhbiA9IE5VTEw7CiB9CiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCmluZGV4IGY0ODMyMjFiYjguLjc3 OGQyNWQ1MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwpAQCAt MjIzLDggKzIyMywxMCBAQCBFeGVjRW5kVGFibGVGdW5jU2NhbihUYWJsZUZ1bmNTY2FuU3RhdGUg Km5vZGUpCiAJICogUmVsZWFzZSB0dXBsZXN0b3JlIHJlc291cmNlcwogCSAqLwogCWlmIChub2Rl LT50dXBzdG9yZSAhPSBOVUxMKQorCXsKIAkJdHVwbGVzdG9yZV9lbmQobm9kZS0+dHVwc3RvcmUp OwotCW5vZGUtPnR1cHN0b3JlID0gTlVMTDsKKwkJbm9kZS0+dHVwc3RvcmUgPSBOVUxMOworCX0K IH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRp ZHJhbmdlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCmlu ZGV4IDlhYTc2ODNkN2UuLjcwMmVlODg0ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRyYW5nZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlk cmFuZ2VzY2FuLmMKQEAgLTMyNiwxMCArMzI2LDE0IEBAIEV4ZWNSZVNjYW5UaWRSYW5nZVNjYW4o VGlkUmFuZ2VTY2FuU3RhdGUgKm5vZGUpCiB2b2lkCiBFeGVjRW5kVGlkUmFuZ2VTY2FuKFRpZFJh bmdlU2NhblN0YXRlICpub2RlKQogewotCVRhYmxlU2NhbkRlc2Mgc2NhbiA9IG5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYzsKLQotCWlmIChzY2FuICE9IE5VTEwpCi0JCXRhYmxlX2VuZHNjYW4o c2Nhbik7CisJLyoKKwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFy dCBpdCkKKwkgKi8KKwlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjICE9IE5VTEwpCisJ eworCQl0YWJsZV9lbmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7CisJCW5vZGUt PnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwppbmRleCA4NjRhOTAxM2I2Li5mMzc1OTUxNjk5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKQEAgLTQ2OSw4ICs0NjksMTQgQEAgRXhlY1JlU2Nh blRpZFNjYW4oVGlkU2NhblN0YXRlICpub2RlKQogdm9pZAogRXhlY0VuZFRpZFNjYW4oVGlkU2Nh blN0YXRlICpub2RlKQogewotCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpCisJLyoK KwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFydCBpdCkKKwkgKi8K KwlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjICE9IE5VTEwpCisJewogCQl0YWJsZV9l bmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7CisJCW5vZGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VW5pcXVlLmMKaW5kZXggYTEyNTkyM2U5My4uYjgyZDBlOWFkNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVVbmlxdWUuYwpAQCAtMTY4LDYgKzE2OCw3IEBAIHZvaWQKIEV4ZWNFbmRVbmlxdWUoVW5pcXVl U3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91 dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMKaW5kZXggMzIyMWZhMTUyMi4uNTYxZDdlNzMxZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuYwpAQCAtMTM1MSwxMSArMTM1MSwxNCBAQCByZWxlYXNlX3BhcnRpdGlv bihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJICogYW55IGFnZ3JlZ2F0ZSB0ZW1wIGRhdGEp LiAgV2UgZG9uJ3QgcmVseSBvbiByZXRhaWwgcGZyZWUgYmVjYXVzZSBzb21lCiAJICogYWdncmVn YXRlcyBtaWdodCBoYXZlIGFsbG9jYXRlZCBkYXRhIHdlIGRvbid0IGhhdmUgZGlyZWN0IHBvaW50 ZXJzIHRvLgogCSAqLwotCU1lbW9yeUNvbnRleHRSZXNldCh3aW5zdGF0ZS0+cGFydGNvbnRleHQp OwotCU1lbW9yeUNvbnRleHRSZXNldCh3aW5zdGF0ZS0+YWdnY29udGV4dCk7CisJaWYgKHdpbnN0 YXRlLT5wYXJ0Y29udGV4dCAhPSBOVUxMKQorCQlNZW1vcnlDb250ZXh0UmVzZXQod2luc3RhdGUt PnBhcnRjb250ZXh0KTsKKwlpZiAod2luc3RhdGUtPmFnZ2NvbnRleHQgIT0gTlVMTCkKKwkJTWVt b3J5Q29udGV4dFJlc2V0KHdpbnN0YXRlLT5hZ2djb250ZXh0KTsKIAlmb3IgKGkgPSAwOyBpIDwg d2luc3RhdGUtPm51bWFnZ3M7IGkrKykKIAl7Ci0JCWlmICh3aW5zdGF0ZS0+cGVyYWdnW2ldLmFn Z2NvbnRleHQgIT0gd2luc3RhdGUtPmFnZ2NvbnRleHQpCisJCWlmICh3aW5zdGF0ZS0+cGVyYWdn W2ldLmFnZ2NvbnRleHQgIT0gTlVMTCAmJgorCQkJd2luc3RhdGUtPnBlcmFnZ1tpXS5hZ2djb250 ZXh0ICE9IHdpbnN0YXRlLT5hZ2djb250ZXh0KQogCQkJTWVtb3J5Q29udGV4dFJlc2V0KHdpbnN0 YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CiAJfQogCkBAIC0yNjgxLDI0ICsyNjg0LDQwIEBA IEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiB2b2lkCiBFeGVjRW5kV2luZG93QWdnKFdpbmRvd0FnZ1N0YXRlICpub2RlKQogewot CVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAlpbnQJCQlpOwogCiAJcmVsZWFzZV9wYXJ0aXRpb24o bm9kZSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+bnVtYWdnczsgaSsrKQogCXsKLQkJaWYg KG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5vZGUtPmFnZ2NvbnRleHQpCisJCWlmIChu b2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSBOVUxMICYmCisJCQlub2RlLT5wZXJhZ2dbaV0u YWdnY29udGV4dCAhPSBub2RlLT5hZ2djb250ZXh0KQogCQkJTWVtb3J5Q29udGV4dERlbGV0ZShu b2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CiAJfQotCU1lbW9yeUNvbnRleHREZWxldGUobm9k ZS0+cGFydGNvbnRleHQpOwotCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+YWdnY29udGV4dCk7 CisJaWYgKG5vZGUtPnBhcnRjb250ZXh0ICE9IE5VTEwpCisJeworCQlNZW1vcnlDb250ZXh0RGVs ZXRlKG5vZGUtPnBhcnRjb250ZXh0KTsKKwkJbm9kZS0+cGFydGNvbnRleHQgPSBOVUxMOworCX0K KwlpZiAobm9kZS0+YWdnY29udGV4dCAhPSBOVUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dERlbGV0 ZShub2RlLT5hZ2djb250ZXh0KTsKKwkJbm9kZS0+YWdnY29udGV4dCA9IE5VTEw7CisJfQogCi0J cGZyZWUobm9kZS0+cGVyZnVuYyk7Ci0JcGZyZWUobm9kZS0+cGVyYWdnKTsKKwlpZiAobm9kZS0+ cGVyZnVuYyAhPSBOVUxMKQorCXsKKwkJcGZyZWUobm9kZS0+cGVyZnVuYyk7CisJCW5vZGUtPnBl cmZ1bmMgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+cGVyYWdnICE9IE5VTEwpCisJeworCQlwZnJl ZShub2RlLT5wZXJhZ2cpOworCQlub2RlLT5wZXJhZ2cgPSBOVUxMOworCX0KIAotCW91dGVyUGxh biA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CisJRXhl Y0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0g TlVMTDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0KLS0gCjIuNDMuMAoK --00000000000083cd8106215c4cbe Content-Type: application/octet-stream; name="v52-0003-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Disposition: attachment; filename="v52-0003-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0p43e9d2 RnJvbSA1MzNhYmVhYzU4NTdjNGFjMjk1MGM4ZWIxNjk5NDg1YjQ2Y2NlOWM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjIgQXVnIDIwMjQgMTk6Mzg6MTMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 MiAzLzNdIEhhbmRsZSBDYWNoZWRQbGFuIGludmFsaWRhdGlvbiBpbiB0aGUgZXhlY3V0b3IKClRo aXMgY29tbWl0IG1ha2VzIGNoYW5nZXMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIGEgY2FjaGVkIHBs YW4KYmVjb21lcyBpbnZhbGlkIGJlZm9yZSBkZWZlcnJlZCBsb2NrcyBvbiBwcnVuYWJsZSByZWxh dGlvbnMgYXJlIHRha2VuLgoKKiBBZGQgY2hlY2tzIGF0IHZhcmlvdXMgcG9pbnRzIGluIEV4ZWN1 dG9yU3RhcnQoKSBhbmQgaXRzIGNhbGxlZAogIGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUgaWYgdGhl IHBsYW4gYmVjb21lcyBpbnZhbGlkLiBJZiBkZXRlY3RlZCwKICB0aGUgZnVuY3Rpb24gYW5kIGl0 cyBjYWxsZXJzIHJldHVybiBpbW1lZGlhdGVseS4gQSBwcmV2aW91cyBjb21taXQKICBlbnN1cmVz IGFueSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgUGxhblN0YXRlIHRyZWUgb2JqZWN0cyBhcmUgY2xl YW5lZAogIHVwIGFwcHJvcHJpYXRlbHkuCgoqIEludHJvZHVjZSBFeGVjdXRvclN0YXJ0RXh0KCks IGEgd3JhcHBlciBvdmVyIEV4ZWN1dG9yU3RhcnQoKSwgdG8KICBoYW5kbGUgY2FzZXMgd2hlcmUg cGxhbiBpbml0aWFsaXphdGlvbiBpcyBhYm9ydGVkIGR1ZSB0byBpbnZhbGlkYXRpb24uCiAgRXhl Y3V0b3JTdGFydEV4dCgpIGNyZWF0ZXMgYSBuZXcgdHJhbnNpZW50IENhY2hlZFBsYW4gaWYgbmVl ZGVkIGFuZAogIHJldHJpZXMgZXhlY3V0aW9uLiBUaGlzIG5ldyBlbnRyeSBwb2ludCBpcyBvbmx5 IHJlcXVpcmVkIGZvciBzaXRlcwogIHVzaW5nIHBsYW5jYWNoZS5jLiBJdCByZXF1aXJlcyBwYXNz aW5nIHRoZSBRdWVyeURlc2MsIGVmbGFncywKICBDYWNoZWRQbGFuU291cmNlLCBhbmQgcXVlcnlf aW5kZXggKGluZGV4IGluIENhY2hlZFBsYW5Tb3VyY2UucXVlcnlfbGlzdCkuCgoqIEFkZCBHZXRT aW5nbGVDYWNoZWRQbGFuKCkgaW4gcGxhbmNhY2hlLmMgdG8gY3JlYXRlIGEgdHJhbnNpZW50CiAg Q2FjaGVkUGxhbiBmb3IgYSBzcGVjaWZpZWQgcXVlcnkgaW4gdGhlIGdpdmVuIENhY2hlZFBsYW5T b3VyY2UuCiAgU3VjaCBDYWNoZWRQbGFucyBhcmUgdHJhY2tlZCBpbiBhIHNlcGFyYXRlIGdsb2Jh bCBsaXN0IGZvciB0aGUKICBwbGFuY2FjaGUgaW52YWxpZGF0aW9uIGNhbGxiYWNrcyB0byBjaGVj ay4KClRoaXMgYWxzbyBhZGRzIGlzb2xhdGlvbiB0ZXN0cyB1c2luZyB0aGUgZGVsYXlfZXhlY3V0 aW9uIHRlc3QgbW9kdWxlCnRvIHZlcmlmeSBzY2VuYXJpb3Mgd2hlcmUgYSBDYWNoZWRQbGFuIGJl Y29tZXMgaW52YWxpZCBiZWZvcmUgdGhlCmRlZmVycmVkIGxvY2tzIGFyZSB0YWtlbi4KCkFsbCBF eGVjdXRvclN0YXJ0X2hvb2sgaW1wbGVtZW50YXRpb25zIG5vdyBtdXN0IGFkZCB0aGUgZm9sbG93 aW5nCmJsb2NrIGFmdGVyIHRoZSBFeGVjdXRvclN0YXJ0KCkgY2FsbCB0byBlbnN1cmUgaXQgZG9l c24ndCB3b3JrIHdpdGggYW4KaW52YWxpZCBwbGFuOgoKICAgIC8qIFRoZSBwbGFuIG1heSBoYXZl IGJlY29tZSBpbnZhbGlkIGR1cmluZyBFeGVjdXRvclN0YXJ0KCkgKi8KICAgIGlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ZXN0YXRlKSkKICAgICAgICByZXR1cm47CgpSZXZpZXdl ZC1ieTogUm9iZXJ0IEhhYXMKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdx RkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5j b21rCi0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAgIHwg ICA0ICsKIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8ICAg NCArCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgICAgfCAgMzYg KystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAgIDgg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAgMTAgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAxNCArKwog c3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FICAgICAgICAgICAgICAgICAgIHwgIDMyICsrLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDk5ICsrKysr KysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgICA0 ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAgICAgfCAgMTAg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgICAgIHwgICA3ICsK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICA0MiArKyst CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgICAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDEyICstCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgICAgICAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgICAgIHwgICA0ICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyAgICB8ICAgNiArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR3JvdXAuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUhhc2guYyAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVIYXNoam9pbi5jICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5jcmVtZW50YWxTb3J0LmMgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4b25seXNjYW4uYyAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVM aW1pdC5jICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9j a1Jvd3MuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVy aWFsLmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXpl LmMgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBl bmQuYyAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4u YyAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YyAgICAgICAgfCAgMTMgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jICAg ICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMg ICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jICAgICAgICAg fCAgIDMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgICAgIHwg ICAzICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAgICAgICB8ICAg MiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jICAgICAgICAgICAgICAgfCAgIDIg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jICAgICAgIHwgICAyICsK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAgICAgICB8ICAgMiArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgICAgIHwgICAyICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgICAgICB8ICAgMiArCiBzcmMvYmFj a2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAgICAgfCAgMTkgKy0KIHNyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tl bmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgIDMxICsrLQogc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgICAgICAgICAgIHwgMjA2ICsrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAgMTggKysKIHNy Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgMjYgKysrCiBzcmMv aW5jbHVkZS91dGlscy9wb3J0YWwuaCAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlICAgICB8ICAgMyArLQogLi4uL21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIHwgIDYzICsrKysrLQogLi4u L2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dCAgICAgICAgICAgIHwgMTc1ICsrKysrKysr KysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVzb24uYnVpbGQgIHwg ICAxICsKIC4uLi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVjICAgICAgICAgICAgICB8ICA2 NSArKysrKysKIDY2IGZpbGVzIGNoYW5nZWQsIDk2MiBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVj CgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgYi9jb250 cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCA2NzdjMTM1ZjU5Li4zNjc1Y2U5 YTg4IDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYworKysg Yi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwpAQCAtMzAwLDYgKzMwMCwxMCBA QCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiAJZWxzZQogCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAor CS8qIFRoZSBwbGFuIG1heSBoYXZlIGJlY29tZSBpbnZhbGlkIGR1cmluZyBFeGVjdXRvclN0YXJ0 KCkgKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChxdWVyeURlc2MtPmVzdGF0ZSkpCisJCXJl dHVybjsKKwogCWlmIChhdXRvX2V4cGxhaW5fZW5hYmxlZCgpKQogCXsKIAkJLyoKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggMzYyZDIy MmY2My4uOThhMzI4Yjc5ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdf c3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTk5Miw2ICs5OTIsMTAgQEAgcGdzc19FeGVjdXRvclN0YXJ0 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCWVsc2UKIAkJc3RhbmRhcmRfRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAKKwkvKiBUaGUgcGxhbiBtYXkgaGF2ZSBi ZWNvbWUgaW52YWxpZCBkdXJpbmcgRXhlY3V0b3JTdGFydCgpICovCisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQocXVlcnlEZXNjLT5lc3RhdGUpKQorCQlyZXR1cm47CisKIAkvKgogCSAqIElmIHF1 ZXJ5IGhhcyBxdWVyeUlkIHplcm8sIGRvbid0IHRyYWNrIGl0LiAgVGhpcyBwcmV2ZW50cyBkb3Vi bGUKIAkgKiBjb3VudGluZyBvZiBvcHRpbWl6YWJsZSBzdGF0ZW1lbnRzIHRoYXQgYXJlIGRpcmVj dGx5IGNvbnRhaW5lZCBpbgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCBhZGM2 MjU3NmQxLi42NWY0ZmZlNWVlIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAt MjE0NCw3ICsyMTQ0LDExIEBAIHBvc3RncmVzRW5kRm9yZWlnbk1vZGlmeShFU3RhdGUgKmVzdGF0 ZSwKIHsKIAlQZ0Zkd01vZGlmeVN0YXRlICpmbXN0YXRlID0gKFBnRmR3TW9kaWZ5U3RhdGUgKikg cmVzdWx0UmVsSW5mby0+cmlfRmR3U3RhdGU7CiAKLQkvKiBJZiBmbXN0YXRlIGlzIE5VTEwsIHdl IGFyZSBpbiBFWFBMQUlOOyBub3RoaW5nIHRvIGRvICovCisJLyoKKwkgKiBmbXN0YXRlIGNvdWxk IGJlIE5VTEwgdW5kZXIgdHdvIGNvbmRpdGlvbnM6IGR1cmluZyBhbiBFWFBMQUlOCisJICogb3Bl cmF0aW9uIG9yIGlmIEJlZ2luRm9yZWlnbk1vZGlmeSgpIGhhc24ndCBiZWVuIGludm9rZWQuCisJ ICogSW4gZWl0aGVyIGNhc2UsIG5vIGFjdGlvbiBpcyByZXF1aXJlZC4KKwkgKi8KIAlpZiAoZm1z dGF0ZSA9PSBOVUxMKQogCQlyZXR1cm47CiAKQEAgLTI2NTAsOCArMjY1NCw5IEBAIHBvc3RncmVz QmVnaW5EaXJlY3RNb2RpZnkoRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSwgaW50IGVmbGFncykKIHsK IAlGb3JlaWduU2NhbiAqZnNwbGFuID0gKEZvcmVpZ25TY2FuICopIG5vZGUtPnNzLnBzLnBsYW47 CiAJRVN0YXRlCSAgICplc3RhdGUgPSBub2RlLT5zcy5wcy5zdGF0ZTsKKwlSZWxhdGlvbglyZWwg PSBub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb247CiAJUGdGZHdEaXJlY3RNb2RpZnlTdGF0ZSAq ZG1zdGF0ZTsKLQlJbmRleAkJcnRpbmRleDsKKwlJbmRleAkJcnRpbmRleCA9IG5vZGUtPnJlc3Vs dFJlbEluZm8tPnJpX1JhbmdlVGFibGVJbmRleDsKIAlPaWQJCQl1c2VyaWQ7CiAJRm9yZWlnblRh YmxlICp0YWJsZTsKIAlVc2VyTWFwcGluZyAqdXNlcjsKQEAgLTI2NjMsMjQgKzI2NjgsMzIgQEAg cG9zdGdyZXNCZWdpbkRpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpub2RlLCBpbnQgZWZs YWdzKQogCWlmIChlZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKQogCQlyZXR1cm47CiAK KwkvKgorCSAqIE9wZW4gdGhlIGZvcmVpZ24gdGFibGUgdXNpbmcgdGhlIFJUIGluZGV4IGdpdmVu IGluIHRoZSBSZXN1bHRSZWxJbmZvIGlmCisJICogdGhlIFNjYW5TdGF0ZSBkb2Vzbid0IHByb3Zp ZGUgaXQuICBJZiB0aGUgcGxhbiBiZWNvbWVzIGludmFsaWQgYXMgYQorCSAqIHJlc3VsdCBvZiB0 YWtpbmcgYSBsb2NrIGluIEV4ZWNPcGVuU2NhblJlbGF0aW9uKCksIGRvIG5vdGhpbmcsIGluIHdo aWNoCisJICogY2FzZSBub2RlLT5mZHdfc3RhdGUgcmVtYWlucyBOVUxMLgorCSAqLworCWlmIChy ZWwgPT0gTlVMTCkKKwl7CisJCUFzc2VydChmc3BsYW4tPnNjYW4uc2NhbnJlbGlkID09IDApOwor CQlyZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIHJ0aW5kZXgsIGVmbGFncyk7CisJ CWlmICh1bmxpa2VseShyZWwgPT0gTlVMTCB8fCAhRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp KQorCQkJcmV0dXJuOworCX0KKwogCS8qCiAJICogV2UnbGwgc2F2ZSBwcml2YXRlIHN0YXRlIGlu IG5vZGUtPmZkd19zdGF0ZS4KIAkgKi8KIAlkbXN0YXRlID0gKFBnRmR3RGlyZWN0TW9kaWZ5U3Rh dGUgKikgcGFsbG9jMChzaXplb2YoUGdGZHdEaXJlY3RNb2RpZnlTdGF0ZSkpOwogCW5vZGUtPmZk d19zdGF0ZSA9ICh2b2lkICopIGRtc3RhdGU7CisJZG1zdGF0ZS0+cmVsID0gcmVsOwogCiAJLyoK IAkgKiBJZGVudGlmeSB3aGljaCB1c2VyIHRvIGRvIHRoZSByZW1vdGUgYWNjZXNzIGFzLiAgVGhp cyBzaG91bGQgbWF0Y2ggd2hhdAogCSAqIEV4ZWNDaGVja1Blcm1pc3Npb25zKCkgZG9lcy4KIAkg Ki8KIAl1c2VyaWQgPSBPaWRJc1ZhbGlkKGZzcGxhbi0+Y2hlY2tBc1VzZXIpID8gZnNwbGFuLT5j aGVja0FzVXNlciA6IEdldFVzZXJJZCgpOwotCi0JLyogR2V0IGluZm8gYWJvdXQgZm9yZWlnbiB0 YWJsZS4gKi8KLQlydGluZGV4ID0gbm9kZS0+cmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUlu ZGV4OwotCWlmIChmc3BsYW4tPnNjYW4uc2NhbnJlbGlkID09IDApCi0JCWRtc3RhdGUtPnJlbCA9 IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgcnRpbmRleCwgZWZsYWdzKTsKLQllbHNlCi0J CWRtc3RhdGUtPnJlbCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbjsKIAl0YWJsZSA9IEdl dEZvcmVpZ25UYWJsZShSZWxhdGlvbkdldFJlbGlkKGRtc3RhdGUtPnJlbCkpOwogCXVzZXIgPSBH ZXRVc2VyTWFwcGluZyh1c2VyaWQsIHRhYmxlLT5zZXJ2ZXJpZCk7CiAKQEAgLTI4MTEsNyArMjgy NCwxMCBAQCBwb3N0Z3Jlc0VuZERpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpub2RlKQog ewogCVBnRmR3RGlyZWN0TW9kaWZ5U3RhdGUgKmRtc3RhdGUgPSAoUGdGZHdEaXJlY3RNb2RpZnlT dGF0ZSAqKSBub2RlLT5mZHdfc3RhdGU7CiAKLQkvKiBpZiBkbXN0YXRlIGlzIE5VTEwsIHdlIGFy ZSBpbiBFWFBMQUlOOyBub3RoaW5nIHRvIGRvICovCisJLyoKKwkgKiBOb3RoaW5nIHRvIGRvIGlm IGRtc3RhdGUgaXMgTlVMTCwgZWl0aGVyIGJlY2F1c2Ugd2UgYXJlIGluIEVYUExBSU4gb3IKKwkg KiBkbXN0YXRlIHdhc24ndCBpbml0aWFsaXplZCBkdWUgdG8gYWJvcnRlZCBwbGFuIGluaXRpYWxp emF0aW9uLgorCSAqLwogCWlmIChkbXN0YXRlID09IE5VTEwpCiAJCXJldHVybjsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jCmluZGV4IGE4M2VhMDdkYjEuLmE3NjQzMzYwYTcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHBsYWluLmMKQEAgLTUwNyw3ICs1MDcsOCBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVl cnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAl9CiAKIAkvKiBydW4gaXQgKGlmIG5lZWRl ZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JRXhwbGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50 bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCUV4cGxhaW5PbmVQbGFuKHBs YW4sIE5VTEwsIE5VTEwsIC0xLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywKKwkJCQkg ICBxdWVyeUVudiwKIAkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNh Z2UgOiBOVUxMKSwKIAkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwog fQpAQCAtNjE2LDYgKzYxNyw3IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10 LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICovCiB2b2lkCiBFeHBsYWlu T25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJ ICAgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4LAogCQkJICAg SW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1 ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCkBAIC02ODYsOCArNjg4 LDggQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFu ICpjcGxhbiwKIAlpZiAoaW50bykKIAkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7 CiAKLQkvKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0 aW9uICovCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJLyogQ2FsbCBFeGVj dXRvclN0YXJ0RXh0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gKi8KKwlFeGVj dXRvclN0YXJ0RXh0KHF1ZXJ5RGVzYywgZWZsYWdzLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7 CiAKIAkvKiBFeGVjdXRlIHRoZSBwbGFuIGZvciBzdGF0aXN0aWNzIGlmIGFza2VkIGZvciAqLwog CWlmIChlcy0+YW5hbHl6ZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRh bGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCA0ZjZhY2Y2 NzE5Li40YjE1MDNjMDVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0xMDcsNiAr MTA3LDcgQEAgUGVyZm9ybUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWNsYXJlQ3Vy c29yU3RtdCAqY3N0bXQsIFBhcmFtTGlzdEluZm8gcGEKIAkJCQkJICBxdWVyeVN0cmluZywKIAkJ CQkJICBDTURUQUdfU0VMRUNULAkvKiBjdXJzb3IncyBxdWVyeSBpcyBhbHdheXMgYSBTRUxFQ1Qg Ki8KIAkJCQkJICBsaXN0X21ha2UxKHBsYW4pLAorCQkJCQkgIE5VTEwsCiAJCQkJCSAgTlVMTCk7 CiAKIAkvKi0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAzMTFiOWViZDViLi40 Y2Q3OWE2ZTNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0yMDIsNyArMjAyLDggQEAgRXhl Y3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJ CSAgZW50cnktPnBsYW5zb3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgcGxhbl9saXN0LAotCQkJ CQkgIGNwbGFuKTsKKwkJCQkJICBjcGxhbiwKKwkJCQkJICBlbnRyeS0+cGxhbnNvdXJjZSk7CiAK IAkvKgogCSAqIEZvciBDUkVBVEUgVEFCTEUgLi4uIEFTIEVYRUNVVEUsIHdlIG11c3QgdmVyaWZ5 IHRoYXQgdGhlIHByZXBhcmVkCkBAIC01ODMsNiArNTg0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVy eShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudGVyczsKIAlNZW1vcnlDb250ZXh0 IHBsYW5uZXJfY3R4ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IHNhdmVkX2N0eCA9IE5VTEw7CisJ aW50CQkJaSA9IDA7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC02NTUsOCArNjU3LDggQEAg RXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2Rl KFBsYW5uZWRTdG10LCBwKTsKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElM SVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGNwbGFuLCBpbnRvLCBlcywgcXVlcnlfc3Ry aW5nLCBwYXJhbUxJLAotCQkJCQkJICAgcXVlcnlFbnYsCisJCQlFeHBsYWluT25lUGxhbihwc3Rt dCwgY3BsYW4sIGVudHJ5LT5wbGFuc291cmNlLCBpLAorCQkJCQkJICAgaW50bywgZXMsIHF1ZXJ5 X3N0cmluZywgcGFyYW1MSSwgcXVlcnlFbnYsCiAJCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMt PmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVt X2NvdW50ZXJzIDogTlVMTCk7CiAJCWVsc2UKQEAgLTY2OCw2ICs2NzAsOCBAQCBFeHBsYWluRXhl Y3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFp blN0YXRlICplcywKIAkJLyogU2VwYXJhdGUgcGxhbnMgd2l0aCBhbiBhcHByb3ByaWF0ZSBzZXBh cmF0b3IgKi8KIAkJaWYgKGxuZXh0KHBsYW5fbGlzdCwgcCkgIT0gTlVMTCkKIAkJCUV4cGxhaW5T ZXBhcmF0ZVBsYW5zKGVzKTsKKworCQlpKys7CiAJfQogCiAJaWYgKGVzdGF0ZSkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RyaWdnZXIuYwppbmRleCAxNzAzNjBlZGRhLi45MWU0YjgyMWEwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJp Z2dlci5jCkBAIC01MTE5LDYgKzUxMTksMjAgQEAgQWZ0ZXJUcmlnZ2VyRW5kUXVlcnkoRVN0YXRl ICplc3RhdGUpCiAJYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aC0tOwogfQogCisvKiAtLS0tLS0t LS0tCisgKiBBZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KCkKKyAqCisgKiBDYWxsZWQgYnkgRXhlY3V0 b3JFbmQoKSBpZiB0aGUgcXVlcnkgZXhlY3V0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byB0aGUKKyAq IHBsYW4gYmVjb21pbmcgaW52YWxpZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgKiAtLS0tLS0t LS0tCisgKi8KK3ZvaWQKK0FmdGVyVHJpZ2dlckFib3J0UXVlcnkodm9pZCkKK3sKKwkvKiBSZXZl cnQgdGhlIGFjdGlvbnMgb2YgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeSgpLiAqLworCWFmdGVyVHJp Z2dlcnMucXVlcnlfZGVwdGgtLTsKK30KKwogCiAvKgogICogQWZ0ZXJUcmlnZ2VyRnJlZVF1ZXJ5 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9SRUFETUUKaW5kZXggNjQyZDYzYmU2MS4uZTU4M2RmNWJlMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JF QURNRQpAQCAtMjgwLDYgKzI4MCwyOCBAQCBhcmUgdHlwaWNhbGx5IHJlc2V0IHRvIGVtcHR5IG9u Y2UgcGVyIHR1cGxlLiAgUGVyLXR1cGxlIGNvbnRleHRzIGFyZSB1c3VhbGx5CiBhc3NvY2lhdGVk IHdpdGggRXhwckNvbnRleHRzLCBhbmQgY29tbW9ubHkgZWFjaCBQbGFuU3RhdGUgbm9kZSBoYXMg aXRzIG93bgogRXhwckNvbnRleHQgdG8gZXZhbHVhdGUgaXRzIHF1YWwgYW5kIHRhcmdldGxpc3Qg ZXhwcmVzc2lvbnMgaW4uCiAKK1JlbGF0aW9uIExvY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0KKwor VHlwaWNhbGx5LCB3aGVuIHRoZSBleGVjdXRvciBpbml0aWFsaXplcyBhIHBsYW4gdHJlZSBmb3Ig ZXhlY3V0aW9uLCBpdCBkb2Vzbid0Citsb2NrIG5vbi1pbmRleCByZWxhdGlvbnMgaWYgdGhlIHBs YW4gdHJlZSBpcyBmcmVzaGx5IGdlbmVyYXRlZCBhbmQgbm90IGRlcml2ZWQKK2Zyb20gYSBDYWNo ZWRQbGFuLiBUaGlzIGlzIGJlY2F1c2Ugc3VjaCBsb2NrcyBoYXZlIGFscmVhZHkgYmVlbiBlc3Rh Ymxpc2hlZAorZHVyaW5nIHRoZSBxdWVyeSdzIHBhcnNpbmcsIHJld3JpdGluZywgYW5kIHBsYW5u aW5nIHBoYXNlcy4gSG93ZXZlciwgd2l0aCBhCitjYWNoZWQgcGxhbiB0cmVlLCBzb21lIHJlbGF0 aW9ucyBtYXkgcmVtYWluIHVubG9ja2VkLiBUaGUgZnVuY3Rpb24KK0FjcXVpcmVFeGVjdXRvckxv Y2tzKCkgb25seSBsb2NrcyB1bnBydW5hYmxlIHJlbGF0aW9ucyBpbiB0aGUgcGxhbiwgZGVmZXJy aW5nCit0aGUgbG9ja2luZyBvZiBwcnVuYWJsZSBvbmVzIHRvIGV4ZWN1dG9yIGluaXRpYWxpemF0 aW9uLiBUaGlzIGF2b2lkcwordW5uZWNlc3NhcnkgbG9ja2luZyBvZiByZWxhdGlvbnMgdGhhdCB3 aWxsIGJlIHBydW5lZCBkdXJpbmcgImluaXRpYWwiIHJ1bnRpbWUKK3BydW5pbmcgaW4gdGhlIEV4 ZWNJbml0Tm9kZSgpIHJvdXRpbmUgb2Ygbm9kZXMgY29udGFpbmluZyB0aGUgcHJ1bmluZyBpbmZv LgorCitUaGlzIGFwcHJvYWNoIGNyZWF0ZXMgYSB3aW5kb3cgd2hlcmUgYSBjYWNoZWQgcGxhbiB0 cmVlIHdpdGggY2hpbGQgdGFibGVzCitjb3VsZCBiZWNvbWUgb3V0ZGF0ZWQgaWYgYW5vdGhlciBi YWNrZW5kIG1vZGlmaWVzIHRoZXNlIHRhYmxlcyBiZWZvcmUKK0V4ZWNJbml0Tm9kZSgpIGxvY2tz IHRoZW0uIEFzIGEgcmVzdWx0LCB0aGUgZXhlY3V0b3IgaGFzIHRoZSBhZGRlZCBkdXR5IHRvCit2 ZXJpZnkgdGhlIHBsYW4gdHJlZSdzIHZhbGlkaXR5IHdoZW5ldmVyIGl0IGxvY2tzIGEgY2hpbGQg dGFibGUgYWZ0ZXIKK2V4ZWN1dGlvbi1pbml0aWFsaXphdGlvbi1wcnVuaW5nLiBUaGlzIHZhbGlk YXRpb24gaXMgZG9uZSBieSBjaGVja2luZyB0aGUKK0NhY2hlZFBsYW4uaXNfdmFsaWQgYXR0cmli dXRlLiBJZiB0aGUgcGxhbiB0cmVlIGlzIG91dGRhdGVkIChpc192YWxpZD1mYWxzZSksCit0aGUg ZXhlY3V0b3IgaGFsdHMgZnVydGhlciBpbml0aWFsaXphdGlvbiwgY2xlYW5zIHVwIHRoZSBwYXJ0 aWFsbHkgaW5pdGlhbGl6ZWQKK1BsYW5TdGF0ZSB0cmVlLCBhbmQgcmV0cmllcyBleGVjdXRpb24g YWZ0ZXIgY3JlYXRpbmcgYSBuZXcgdHJhbnNpZW50CitDYWNoZWRQbGFuLgogCiBRdWVyeSBQcm9j ZXNzaW5nIENvbnRyb2wgRmxvdwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI4 OCw3ICszMTAsNyBAQCBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBx dWVyeSBwcm9jZXNzaW5nOgogCiAJQ3JlYXRlUXVlcnlEZXNjCiAKLQlFeGVjdXRvclN0YXJ0CisJ RXhlY3V0b3JTdGFydCBvciBFeGVjdXRvclN0YXJ0RXh0CiAJCUNyZWF0ZUV4ZWN1dG9yU3RhdGUK IAkJCWNyZWF0ZXMgcGVyLXF1ZXJ5IGNvbnRleHQKIAkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250 ZXh0IHRvIHJ1biBFeGVjSW5pdE5vZGUKQEAgLTMxNiw3ICszMzgsMTMgQEAgVGhpcyBpcyBhIHNr ZXRjaCBvZiBjb250cm9sIGZsb3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vzc2luZzoKIAogCUZyZWVR dWVyeURlc2MKIAotUGVyIGFib3ZlIGNvbW1lbnRzLCBpdCdzIG5vdCByZWFsbHkgY3JpdGljYWwg Zm9yIEV4ZWNFbmROb2RlIHRvIGZyZWUgYW55CitBcyBtZW50aW9uZWQgaW4gdGhlICJSZWxhdGlv biBMb2NraW5nIiBzZWN0aW9uLCBpZiB0aGUgcGxhbiB0cmVlIGlzIGZvdW5kIHRvCitiZSBzdGFs ZSBkdXJpbmcgb25lIG9mIHRoZSByZWN1cnNpdmUgY2FsbHMgb2YgRXhlY0luaXROb2RlKCkgYWZ0 ZXIgdGFraW5nIGEKK2xvY2sgb24gYSBjaGlsZCB0YWJsZSwgdGhlIGNvbnRyb2wgaXMgaW1tbWVk aWF0ZWx5IHJldHVybmVkIHRvCitFeGVjdXRvclN0YXJ0RXh0KCksIHdoaWNoIHdpbGwgY3JlYXRl IGEgbmV3IHBsYW4gdHJlZSBhbmQgcGVyZm9ybSB0aGUKK3N0ZXBzIHN0YXJ0aW5nIGZyb20gQ3Jl YXRlRXhlY3V0b3JTdGF0ZSgpIGFnYWluLgorCitQZXIgYWJvdmUgY29tbWVudHMsIGl0J3Mgbm90 IHJlYWxseSBjcml0aWNhbCBmb3IgRXhlY0VuZFBsYW4gdG8gZnJlZSBhbnkKIG1lbW9yeTsgaXQn bGwgYWxsIGdvIGF3YXkgaW4gRnJlZUV4ZWN1dG9yU3RhdGUgYW55d2F5LiAgSG93ZXZlciwgd2Ug ZG8gbmVlZCB0bwogYmUgY2FyZWZ1bCB0byBjbG9zZSByZWxhdGlvbnMsIGRyb3AgYnVmZmVyIHBp bnMsIGV0Yywgc28gd2UgZG8gbmVlZCB0byBzY2FuCiB0aGUgcGxhbiBzdGF0ZSB0cmVlIHRvIGZp bmQgdGhlc2Ugc29ydHMgb2YgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXgg MGY2ZGJkMWUyYi4uMDAwZDAyYTMzNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC01OCw2 ICs1OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wYXJ0Y2FjaGUuaCIKKyNpbmNsdWRl ICJ1dGlscy9wbGFuY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRlICJ1 dGlscy9zbmFwbWdyLmgiCiAKQEAgLTEzMyw2ICsxMzQsNjAgQEAgRXhlY3V0b3JTdGFydChRdWVy eURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChx dWVyeURlc2MsIGVmbGFncyk7CiB9CiAKKy8qCisgKiBBIHZhcmlhbnQgb2YgRXhlY3V0b3JTdGFy dCgpIHRoYXQgaGFuZGxlcyBjbGVhbnVwIGFuZCByZXBsYW5uaW5nIGlmIHRoZQorICogaW5wdXQg Q2FjaGVkUGxhbiBiZWNvbWVzIGludmFsaWQgZHVlIHRvIGxvY2tzIGJlaW5nIHRha2VuIGR1cmlu ZworICogRXhlY3V0b3JTdGFydEludGVybmFsKCkuICBJZiB0aGF0IGhhcHBlbnMsIGEgbmV3IENh Y2hlZFBsYW4gaXMgY3JlYXRlZAorICogb25seSBmb3IgdGhlIGF0IHRoZSBpbmRleCAncXVlcnlf aW5kZXgnIGluIHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3QsIHdoaWNoCisgKiBpcyByZWxlYXNlZCBz ZXBhcmF0ZWx5IGZyb20gdGhlIG9yaWdpbmFsIENhY2hlZFBsYW4uCisgKi8KK3ZvaWQKK0V4ZWN1 dG9yU3RhcnRFeHQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MsCisJCQkJIENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJIGludCBxdWVyeV9pbmRleCkKK3sKKwlpZiAo cXVlcnlEZXNjLT5jcGxhbiA9PSBOVUxMKQorCXsKKwkJRXhlY3V0b3JTdGFydChxdWVyeURlc2Ms IGVmbGFncyk7CisJCXJldHVybjsKKwl9CisKKwl3aGlsZSAoMSkKKwl7CisJCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlpZiAoIUNhY2hlZFBsYW5WYWxpZChxdWVyeURlc2Mt PmNwbGFuKSkKKwkJeworCQkJQ2FjaGVkUGxhbiAqY3BsYW47CisKKwkJCS8qCisJCQkgKiBUaGUg cGxhbiBnb3QgaW52YWxpZGF0ZWQsIHNvIHRyeSB3aXRoIGEgbmV3IHVwZGF0ZWQgcGxhbi4KKwkJ CSAqCisJCQkgKiBCdXQgZmlyc3QgdW5kbyB3aGF0IEV4ZWN1dG9yU3RhcnQoKSB3b3VsZCd2ZSBk b25lLiAgTWFyaworCQkJICogZXhlY3V0aW9uIGFzIGFib3J0ZWQgdG8gZW5zdXJlIHRoYXQgQUZU RVIgdHJpZ2dlciBzdGF0ZSBpcworCQkJICogcHJvcGVybHkgcmVzZXQuCisJCQkgKi8KKwkJCXF1 ZXJ5RGVzYy0+ZXN0YXRlLT5lc19hYm9ydGVkID0gdHJ1ZTsKKwkJCUV4ZWN1dG9yRW5kKHF1ZXJ5 RGVzYyk7CisKKwkJCWNwbGFuID0gR2V0U2luZ2xlQ2FjaGVkUGxhbihwbGFuc291cmNlLCBxdWVy eV9pbmRleCwKKwkJCQkJCQkJCQlxdWVyeURlc2MtPnF1ZXJ5RW52KTsKKworCQkJLyoKKwkJCSAq IEluc3RhbGwgdGhlIG5ldyB0cmFuc2llbnQgY3BsYW4gaW50byB0aGUgUXVlcnlEZXNjIHJlcGxh Y2luZworCQkJICogdGhlIG9sZCBvbmUgc28gdGhhdCBleGVjdXRvciBpbml0aWFsaXphdGlvbiBj b2RlIGNhbiBzZWUgaXQuCisJCQkgKiBNYXJrIGl0IGFzIGluIHVzZSBieSB1cyBhbmQgYXNrIEZy ZWVRdWVyeURlc2MoKSB0byByZWxlYXNlIGl0LgorCQkJICovCisJCQljcGxhbi0+cmVmY291bnQg PSAxOworCQkJcXVlcnlEZXNjLT5jcGxhbiA9IGNwbGFuOworCQkJcXVlcnlEZXNjLT5jcGxhbl9y ZWxlYXNlID0gdHJ1ZTsKKwkJCXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQgPSBsaW5pdGlhbF9ub2Rl KFBsYW5uZWRTdG10LAorCQkJCQkJCQkJCQkJICAgcXVlcnlEZXNjLT5jcGxhbi0+c3RtdF9saXN0 KTsKKwkJfQorCQllbHNlCisJCQlicmVhazsJLyogRXhlY3V0b3JTdGFydCgpIHN1Y2NlZWRlZCEg Ki8KKwl9Cit9CisKIHZvaWQKIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpCiB7CkBAIC0zMTYsNiArMzcxLDcgQEAgc3RhbmRhcmRfRXhlY3V0 b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7 CiAKIAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOworCUFzc2VydCghZXN0YXRlLT5lc19hYm9ydGVk KTsKIAlBc3NlcnQoIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9P TkxZKSk7CiAKIAkvKiBjYWxsZXIgbXVzdCBlbnN1cmUgdGhlIHF1ZXJ5J3Mgc25hcHNob3QgaXMg YWN0aXZlICovCkBAIC00MjIsOCArNDc4LDExIEBAIHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNoKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCUFzc2VydChlc3RhdGUgIT0gTlVMTCk7CiAJQXNzZXJ0KCEo ZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpOwogCi0JLyog VGhpcyBzaG91bGQgYmUgcnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0b3IgaW5zdGFu Y2UgKi8KLQlBc3NlcnQoIWVzdGF0ZS0+ZXNfZmluaXNoZWQpOworCS8qCisJICogVGhpcyBzaG91 bGQgYmUgcnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0b3IgaW5zdGFuY2UgYW5kIG5l dmVyCisJICogaWYgdGhlIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KKwkgKi8KKwlBc3NlcnQoIWVz dGF0ZS0+ZXNfZmluaXNoZWQgJiYgIWVzdGF0ZS0+ZXNfYWJvcnRlZCk7CiAKIAkvKiBTd2l0Y2gg aW50byBwZXItcXVlcnkgbWVtb3J5IGNvbnRleHQgKi8KIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKQEAgLTQ4MiwxMSArNTQxLDEwIEBA IHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCUFzc2VydChlc3Rh dGUgIT0gTlVMTCk7CiAKIAkvKgotCSAqIENoZWNrIHRoYXQgRXhlY3V0b3JGaW5pc2ggd2FzIGNh bGxlZCwgdW5sZXNzIGluIEVYUExBSU4tb25seSBtb2RlLiBUaGlzCi0JICogQXNzZXJ0IGlzIG5l ZWRlZCBiZWNhdXNlIEV4ZWN1dG9yRmluaXNoIGlzIG5ldyBhcyBvZiA5LjEsIGFuZCBjYWxsZXJz Ci0JICogbWlnaHQgZm9yZ2V0IHRvIGNhbGwgaXQuCisJICogQ2hlY2sgdGhhdCBFeGVjdXRvckZp bmlzaCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4gRVhQTEFJTi1vbmx5IG1vZGUgb3IgaWYKKwkgKiBl eGVjdXRpb24gd2FzIGFib3J0ZWQuCiAJICovCi0JQXNzZXJ0KGVzdGF0ZS0+ZXNfZmluaXNoZWQg fHwKKwlBc3NlcnQoZXN0YXRlLT5lc19maW5pc2hlZCB8fCBlc3RhdGUtPmVzX2Fib3J0ZWQgfHwK IAkJICAgKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKTsK IAogCS8qCkBAIC01MDAsNiArNTU4LDE0IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjKQogCVVucmVnaXN0ZXJTbmFwc2hvdChlc3RhdGUtPmVzX3NuYXBzaG90KTsK IAlVbnJlZ2lzdGVyU25hcHNob3QoZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90KTsKIAor CS8qCisJICogUmVzZXQgQUZURVIgdHJpZ2dlciBtb2R1bGUgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlv biB3YXMgYWJvcnRlZC4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19hYm9ydGVkICYmCisJCSEoZXN0 YXRlLT5lc190b3BfZWZsYWdzICYKKwkJICAoRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMgfCBFWEVD X0ZMQUdfRVhQTEFJTl9PTkxZKSkpCisJCUFmdGVyVHJpZ2dlckFib3J0UXVlcnkoKTsKKwogCS8q CiAJICogTXVzdCBzd2l0Y2ggb3V0IG9mIGNvbnRleHQgYmVmb3JlIGRlc3Ryb3lpbmcgaXQKIAkg Ki8KQEAgLTgzMiw3ICs4OTgsNiBAQCBFeGVjQ2hlY2tYYWN0UmVhZE9ubHkoUGxhbm5lZFN0bXQg KnBsYW5uZWRzdG10KQogCQlQcmV2ZW50Q29tbWFuZElmUGFyYWxsZWxNb2RlKENyZWF0ZUNvbW1h bmROYW1lKChOb2RlICopIHBsYW5uZWRzdG10KSk7CiB9CiAKLQogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUlu aXRQbGFuCiAgKgpAQCAtODk3LDYgKzk2Miw5IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKQogCQkJCWNhc2UgUk9XX01BUktfS0VZU0hBUkU6CiAJCQkJY2FzZSBS T1dfTUFSS19SRUZFUkVOQ0U6CiAJCQkJCXJlbGF0aW9uID0gRXhlY0dldFJhbmdlVGFibGVSZWxh dGlvbihlc3RhdGUsIHJjLT5ydGkpOworCQkJCQlpZiAodW5saWtlbHkocmVsYXRpb24gPT0gTlVM TCB8fAorCQkJCQkJCQkgIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCQkJCXJldHVy bjsKIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSBST1dfTUFSS19DT1BZOgogCQkJCQkvKiBubyBwaHlz aWNhbCB0YWJsZSBhY2Nlc3MgaXMgcmVxdWlyZWQgKi8KQEAgLTk2Nyw2ICsxMDM1LDggQEAgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAkJZXN0YXRlLT5lc19z dWJwbGFuc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJ CQkJICAgc3VicGxhbnN0YXRlKTsKKwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkpCisJCQlyZXR1cm47CiAKIAkJaSsrOwogCX0KQEAgLTk3Nyw2ICsxMDQ3LDggQEAg SW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICogcHJvY2Vzc2lu ZyB0dXBsZXMuCiAJICovCiAJcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBsYW4sIGVzdGF0ZSwg ZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJ cmV0dXJuOwogCiAJLyoKIAkgKiBHZXQgdGhlIHR1cGxlIGRlc2NyaXB0b3IgZGVzY3JpYmluZyB0 aGUgdHlwZSBvZiB0dXBsZXMgdG8gcmV0dXJuLgpAQCAtMjg1OCw2ICsyOTMwLDcgQEAgRXZhbFBs YW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAlyY2VzdGF0 ZS0+ZXNfcm93bWFya3MgPSBwYXJlbnRlc3RhdGUtPmVzX3Jvd21hcmtzOwogCXJjZXN0YXRlLT5l c19ydGVwZXJtaW5mb3MgPSBwYXJlbnRlc3RhdGUtPmVzX3J0ZXBlcm1pbmZvczsKIAlyY2VzdGF0 ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwYXJlbnRlc3RhdGUtPmVzX3BsYW5uZWRzdG10OworCXJjZXN0 YXRlLT5lc19jYWNoZWRwbGFuID0gcGFyZW50ZXN0YXRlLT5lc19jYWNoZWRwbGFuOwogCXJjZXN0 YXRlLT5lc19qdW5rRmlsdGVyID0gcGFyZW50ZXN0YXRlLT5lc19qdW5rRmlsdGVyOwogCXJjZXN0 YXRlLT5lc19vdXRwdXRfY2lkID0gcGFyZW50ZXN0YXRlLT5lc19vdXRwdXRfY2lkOwogCXJjZXN0 YXRlLT5lc19xdWVyeUVudiA9IHBhcmVudGVzdGF0ZS0+ZXNfcXVlcnlFbnY7CkBAIC0yOTM2LDYg KzMwMDksMTQgQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpw bGFuVHJlZSkKIAkJc3VicGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIHJjZXN0YXRl LCAwKTsKIAkJcmNlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMgPSBsYXBwZW5kKHJjZXN0YXRlLT5l c19zdWJwbGFuc3RhdGVzLAogCQkJCQkJCQkJCQkgc3VicGxhbnN0YXRlKTsKKworCQkvKgorCQkg KiBBbGwgbmVjZXNzYXJ5IGxvY2tzIHNob3VsZCBoYXZlIGJlZW4gdGFrZW4gd2hlbiBpbml0aWFs aXppbmcgdGhlCisJCSAqIHBhcmVudCdzIGNvcHkgb2Ygc3VicGxhbnN0YXRlLCBzbyB0aGUgQ2Fj aGVkUGxhbiwgaWYgYW55LCBzaG91bGQKKwkJICogbm90IGhhdmUgYmVjb21lIGludmFsaWQgZHVy aW5nIHRoZSBhYm92ZSBFeGVjSW5pdE5vZGUoKS4KKwkJICovCisJCWlmICghRXhlY1BsYW5TdGls bFZhbGlkKHJjZXN0YXRlKSkKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGZhaWx1cmUgdG8g aW5pdGlhbGl6ZSBzdWJwbGFuIGluIEV2YWxQbGFuUXVhbFN0YXJ0KCkiKTsKIAl9CiAKIAkvKgpA QCAtMjk3Nyw2ICszMDU4LDEwIEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0 ZSwgUGxhbiAqcGxhblRyZWUpCiAJICovCiAJZXBxc3RhdGUtPnJlY2hlY2twbGFuc3RhdGUgPSBF eGVjSW5pdE5vZGUocGxhblRyZWUsIHJjZXN0YXRlLCAwKTsKIAorCS8qIFNlZSB0aGUgY29tbWVu dCBhYm92ZS4gKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0ZSkpCisJCWVsb2co RVJST1IsICJ1bmV4cGVjdGVkIGZhaWx1cmUgdG8gaW5pdGlhbGl6ZSBtYWluIHBsYW50cmVlIGlu IEV2YWxQbGFuUXVhbFN0YXJ0KCkiKTsKKwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250 ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCAwM2I0OGUxMmI0 Li4yMDE3NDMzYzY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTI2Myw5 ICsxMjYzLDcgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJl Y2VpdmVyICpyZWNlaXZlciwKIAkgKiBpZiBpdCBzaG91bGQgdGFrZSBsb2NrcyBvbiBjZXJ0YWlu IHJlbGF0aW9ucywgYnV0IHBhcmFsbGVyIHdvcmtlcnMKIAkgKiBhbHdheXMgdGFrZSBsb2NrcyBh bnl3YXkuCiAJICovCi0JcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwKLQkJCQkJCSAgIE5V TEwsCi0JCQkJCQkgICBxdWVyeVN0cmluZywKKwlyZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10 LCBOVUxMLCBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFs aWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50 X29wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDc2NTE4 ODYyMjkuLjM4Y2Q5N2I1OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAg LTE3OTQsNiArMTc5NCw5IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0 ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKiBJZiBzdWJwbGFucyBhcmUgaW5kZWVkIHBy dW5lZCwgc3VicGxhbl9tYXAgYXJyYXlzIGNvbnRhaW5lZCBpbiB0aGUgcmV0dXJuZWQKICAqIFBh cnRpdGlvblBydW5lU3RhdGUgYXJlIHJlLXNlcXVlbmNlZCB0byBub3QgY291bnQgdGhvc2UsIHRo b3VnaCBvbmx5IGlmIHRoZQogICogbWFwcyB3aWxsIGJlIG5lZWRlZCBmb3Igc3Vic2VxdWVudCBl eGVjdXRpb24gcHJ1bmluZyBwYXNzZXMuCisgKgorICogUmV0dXJucyBOVUxMIGlmIHRoZSBwbGFu IGhhcyBiZWNvbWUgaW52YWxpZCBhZnRlciB0YWtpbmcgdGhlIGxvY2tzIHRvCisgKiBjcmVhdGUg dGhlIFBhcnRpdGlvblBydW5lU3RhdGUgaW4gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZSgpLgog ICovCiBQYXJ0aXRpb25QcnVuZVN0YXRlICoKIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFu U3RhdGUgKnBsYW5zdGF0ZSwKQEAgLTE4MDksNiArMTgxMiw4IEBAIEV4ZWNJbml0UGFydGl0aW9u UHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAogCS8qIENyZWF0ZSB0aGUgd29ya2luZyBk YXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZyAqLwogCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRp b25QcnVuZVN0YXRlKHBsYW5zdGF0ZSwgcHJ1bmVpbmZvKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogUGVyZm9ybSBhbiBpbml0 aWFsIHBhcnRpdGlvbiBwcnVuZSBwYXNzLCBpZiByZXF1aXJlZC4KQEAgLTE4NjAsNiArMTg2NSw5 IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKICAqIHN0 b3JlZCBpbiBlYWNoIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgY2FuIGJlIHJlLXVzZWQgZWFj aCB0aW1lIHdlCiAgKiByZS1ldmFsdWF0ZSB3aGljaCBwYXJ0aXRpb25zIG1hdGNoIHRoZSBwcnVu aW5nIHN0ZXBzIHByb3ZpZGVkIGluIGVhY2gKICAqIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvLgor ICoKKyAqIFJldHVybnMgTlVMTCBpZiB0aGUgcGxhbiBoYXMgYmVjb21lIGludmFsaWQgYWZ0ZXIg dGFraW5nIGEgbG9jayB0byBjcmVhdGUKKyAqIGEgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YS4K ICAqLwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgogQ3JlYXRlUGFydGl0aW9uUHJ1bmVT dGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8p CkBAIC0xOTM1LDYgKzE5NDMsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0 ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAqIGR1cmF0 aW9uIG9mIHRoaXMgZXhlY3V0b3IgcnVuLgogCQkJICovCiAJCQlwYXJ0cmVsID0gRXhlY0dldFJh bmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHBpbmZvLT5ydGluZGV4KTsKKwkJCWlmICh1bmxpa2Vs eShwYXJ0cmVsID09IE5VTEwgfHwgIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCQly ZXR1cm4gTlVMTDsKIAkJCXBhcnRrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJ0cmVs KTsKIAkJCXBhcnRkZXNjID0gUGFydGl0aW9uRGlyZWN0b3J5TG9va3VwKGVzdGF0ZS0+ZXNfcGFy dGl0aW9uX2RpcmVjdG9yeSwKIAkJCQkJCQkJCQkJCXBhcnRyZWwpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUHJvY25vZGUuYwppbmRleCAzNGYyOGRmZWNlLi43Njg5ZDM0ZGQwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUHJvY25vZGUuYwpAQCAtMTM2LDYgKzEzNiwxMCBAQCBzdGF0aWMgYm9vbCBFeGVj U2h1dGRvd25Ob2RlX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwogICoJ CSAgJ2VmbGFncycgaXMgYSBiaXR3aXNlIE9SIG9mIGZsYWcgYml0cyBkZXNjcmliZWQgaW4gZXhl Y3V0b3IuaAogICoKICAqCQlSZXR1cm5zIGEgUGxhblN0YXRlIG5vZGUgY29ycmVzcG9uZGluZyB0 byB0aGUgZ2l2ZW4gUGxhbiBub2RlLgorICoKKyAqCQlDYWxsZXJzIHNob3VsZCBjaGVjayB1cG9u IHJldHVybmluZyB0aGF0IEV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpCisgKgkJcmV0dXJucyB0 cnVlIGJlZm9yZSBjb250aW51aW5nIGZ1cnRoZXIgd2l0aCBpdHMgcHJvY2Vzc2luZywgYmVjYXVz ZSB0aGUKKyAqCQlyZXR1cm5lZCBQbGFuU3RhdGUgbWlnaHQgYmUgb25seSBwYXJ0aWFsbHkgdmFs aWQgb3RoZXJ3aXNlLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIFBsYW5TdGF0ZSAqCkBAIC0z ODgsNiArMzkyLDkgQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCQkJYnJlYWs7CiAJfQogCisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiByZXN1bHQ7CisKIAlFeGVjU2V0RXhlY1Byb2NOb2Rl KHJlc3VsdCwgcmVzdWx0LT5FeGVjUHJvY05vZGUpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMKaW5kZXggNmRmZDVhMjZiNy4uMzliMzg4ZTZiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMKQEAgLTE0Niw2ICsxNDYsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJZXN0 YXRlLT5lc190b3BfZWZsYWdzID0gMDsKIAllc3RhdGUtPmVzX2luc3RydW1lbnQgPSAwOwogCWVz dGF0ZS0+ZXNfZmluaXNoZWQgPSBmYWxzZTsKKwllc3RhdGUtPmVzX2Fib3J0ZWQgPSBmYWxzZTsK IAogCWVzdGF0ZS0+ZXNfZXhwcmNvbnRleHRzID0gTklMOwogCkBAIC02OTEsNiArNjkyLDggQEAg RXhlY1JlbGF0aW9uSXNUYXJnZXRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggc2NhbnJl bGlkKQogICoKICAqCQlPcGVuIHRoZSBoZWFwIHJlbGF0aW9uIHRvIGJlIHNjYW5uZWQgYnkgYSBi YXNlLWxldmVsIHNjYW4gcGxhbiBub2RlLgogICoJCVRoaXMgc2hvdWxkIGJlIGNhbGxlZCBkdXJp bmcgdGhlIG5vZGUncyBFeGVjSW5pdCByb3V0aW5lLgorICoKKyAqCQlOVUxMIGlzIHJldHVybmVk IGlmIHRoZSByZWxhdGlvbiBpcyBmb3VuZCB0byBoYXZlIGJlZW4gZHJvcHBlZC4KICAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqLwogUmVsYXRpb24KQEAgLTcwMCw2ICs3MDMsOCBAQCBFeGVjT3BlblNjYW5SZWxhdGlv bihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggc2NhbnJlbGlkLCBpbnQgZWZsYWdzKQogCiAJLyogT3Bl biB0aGUgcmVsYXRpb24uICovCiAJcmVsID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3Rh dGUsIHNjYW5yZWxpZCk7CisJaWYgKHVubGlrZWx5KHJlbCA9PSBOVUxMIHx8ICFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiByZWw7CiAKIAkvKgogCSAqIENvbXBsYWluIGlm IHdlJ3JlIGF0dGVtcHRpbmcgYSBzY2FuIG9mIGFuIHVuc2Nhbm5hYmxlIHJlbGF0aW9uLCBleGNl cHQKQEAgLTcxNyw2ICs3MjIsMjYgQEAgRXhlY09wZW5TY2FuUmVsYXRpb24oRVN0YXRlICplc3Rh dGUsIEluZGV4IHNjYW5yZWxpZCwgaW50IGVmbGFncykKIAlyZXR1cm4gcmVsOwogfQogCisvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKgkJRXhlY09wZW5TY2FuSW5kZXhSZWxhdGlvbgorICoKKyAqCQlPcGVuIHRoZSBp bmRleCByZWxhdGlvbiB0byBiZSBzY2FubmVkIGJ5IGFuIGluZGV4IHNjYW4gcGxhbiBub2RlLgor ICoJCVRoaXMgc2hvdWxkIGJlIGNhbGxlZCBkdXJpbmcgdGhlIG5vZGUncyBFeGVjSW5pdCByb3V0 aW5lLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCitSZWxhdGlvbgorRXhlY09wZW5TY2FuSW5kZXhSZWxhdGlv bihFU3RhdGUgKmVzdGF0ZSwgT2lkIGluZGV4aWQsIGludCBsb2NrbW9kZSkKK3sKKwlSZWxhdGlv bglyZWw7CisKKwkvKiBPcGVuIHRoZSBpbmRleC4gKi8KKwlyZWwgPSBpbmRleF9vcGVuKGluZGV4 aWQsIGxvY2ttb2RlKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KSkKKwkJZWxvZyhERUJVRzIsICJDYWNoZWRQbGFuIGludmFsaWRhdGVkIG9uIGxvY2tpbmcgaW5k ZXggJXUiLCBpbmRleGlkKTsKKworCXJldHVybiByZWw7Cit9CisKIC8qCiAgKiBFeGVjSW5pdFJh bmdlVGFibGUKICAqCQlTZXQgdXAgZXhlY3V0b3IncyByYW5nZS10YWJsZS1yZWxhdGVkIGRhdGEK QEAgLTc3Niw4ICs4MDEsMTIgQEAgRXhlY1Nob3VsZExvY2tSZWxhdGlvbihFU3RhdGUgKmVzdGF0 ZSwgSW5kZXggcnRpbmRleCkKICAqIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24KICAqCQlPcGVu IHRoZSBSZWxhdGlvbiBmb3IgYSByYW5nZSB0YWJsZSBlbnRyeSwgaWYgbm90IGFscmVhZHkgZG9u ZQogICoKLSAqIFRoZSBSZWxhdGlvbnMgd2lsbCBiZSBjbG9zZWQgYWdhaW4gaW4gRXhlY0VuZFBs YW4oKS4KKyAqIFRoZSBSZWxhdGlvbnMgd2lsbCBiZSBjbG9zZWQgaW4gRXhlY0VuZFBsYW4oKS4K KyAqCisgKiBUaGUgcmV0dXJuZWQgdmFsdWUgbWF5IGJlIE5VTEwgaWYgdGhlIHJlbGF0aW9uIGlz IGEgcHJ1bmFibGUgcmVsYXRpb24KKyAqIHRoYXQgaGFzIG5vdCBiZWVuIGxvY2tlZCBhbmQgbWF5 IGhhdmUgYmVlbiBjb25jdXJyZW50bHkgZHJvcHBlZC4KICAqLworCiBSZWxhdGlvbgogRXhlY0dl dFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQogewpAQCAtODIw LDggKzg0OSwxNCBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJ bmRleCBydGkpCiAJCQkgKiB0aGF0IG9mIGEgcHJ1bmFibGUgcmVsYXRpb24gYW5kIHdlJ3JlIHJ1 bm5pbmcgYSBjYWNoZWQgZ2VuZXJpYwogCQkJICogcGxhbi4gIEFjcXVpcmVFeGVjdXRvckxvY2tz KCkgb2YgcGxhbmNhY2hlLmMgd291bGQgaGF2ZSBsb2NrZWQKIAkJCSAqIG9ubHkgdGhlIHVucHJ1 bmFibGUgcmVsYXRpb25zIGluIHRoZSBwbGFuIHRyZWUuCisJCQkgKgorCQkJICogTm90ZSB0aGF0 IHdlIHVzZSB0cnlfdGFibGVfb3BlbigpIGhlcmUsIGJlY2F1c2Ugd2l0aG91dCBhIGxvY2sKKwkJ CSAqIGhlbGQgb24gdGhlIHJlbGF0aW9uLCBpdCBtYXkgaGF2ZSBkaXNhcHBlYXJlZCBmcm9tIHVu ZGVyIHVzLgogCQkJICovCi0JCQlyZWwgPSB0YWJsZV9vcGVuKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVs bG9ja21vZGUpOworCQkJcmVsID0gdHJ5X3RhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxs b2NrbW9kZSk7CisJCQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkK KwkJCQllbG9nKERFQlVHMiwgIkNhY2hlZFBsYW4gaW52YWxpZGF0ZWQgb24gbG9ja2luZyByZWxh dGlvbiAldSIsCisJCQkJCSBydGUtPnJlbGlkKTsKIAkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRp b25zW3J0aSAtIDFdID0gcmVsOwpAQCAtODQ1LDYgKzg4MCw5IEBAIEV4ZWNJbml0UmVzdWx0UmVs YXRpb24oRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJUmVs YXRpb24JcmVzdWx0UmVsYXRpb25EZXNjOwogCiAJcmVzdWx0UmVsYXRpb25EZXNjID0gRXhlY0dl dFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHJ0aSk7CisJaWYgKHVubGlrZWx5KHJlc3VsdFJl bGF0aW9uRGVzYyA9PSBOVUxMIHx8CisJCQkJICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybjsKIAlJbml0UmVzdWx0UmVsSW5mbyhyZXN1bHRSZWxJbmZvLAogCQkJCQkgIHJl c3VsdFJlbGF0aW9uRGVzYywKIAkJCQkJICBydGksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKaW5kZXgg MGRmYmE1Y2ExNi4uOGM0MGQ4YzUyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwpAQCAtMzMwMyw2 ICszMzAzLDggQEAgRXhlY0luaXRBZ2coQWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdfUkVXSU5EOwogCW91dGVyUGxhbiA9IG91dGVy UGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShhZ2dzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0 ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkpCisJCXJldHVybiBhZ2dzdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBz b3VyY2UgdHVwbGUgdHlwZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB cHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCA4NmQ3NWIx YTdlLi4zYzgyYTFjZWFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xNDcsNiAr MTQ3LDggQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCiAJ CQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1 YnBsYW5zKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBh cHBlbmRzdGF0ZTsKIAkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsK IAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCkBAIC0xODUsOCAr MTg3LDEwIEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJYXBwZW5kc3RhdGUtPnBzLnJlc3VsdG9wc3NldCA9IHRydWU7CiAJYXBwZW5k c3RhdGUtPnBzLnJlc3VsdG9wc2ZpeGVkID0gZmFsc2U7CiAKLQlhcHBlbmRwbGFuc3RhdGVzID0g KFBsYW5TdGF0ZSAqKikgcGFsbG9jKG5wbGFucyAqCi0JCQkJCQkJCQkJCSBzaXplb2YoUGxhblN0 YXRlICopKTsKKwlhcHBlbmRwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jMChucGxh bnMgKgorCQkJCQkJCQkJCQkgIHNpemVvZihQbGFuU3RhdGUgKikpOworCWFwcGVuZHN0YXRlLT5h cHBlbmRwbGFucyA9IGFwcGVuZHBsYW5zdGF0ZXM7CisJYXBwZW5kc3RhdGUtPmFzX25wbGFucyA9 IG5wbGFuczsKIAogCS8qCiAJICogY2FsbCBFeGVjSW5pdE5vZGUgb24gZWFjaCBvZiB0aGUgdmFs aWQgcGxhbnMgdG8gYmUgZXhlY3V0ZWQgYW5kIHNhdmUKQEAgLTIyMSwxMSArMjI1LDExIEBAIEV4 ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CQlmaXJzdHZhbGlkID0gajsKIAogCQlhcHBlbmRwbGFuc3RhdGVzW2orK10gPSBFeGVjSW5pdE5v ZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkpCisJCQlyZXR1cm4gYXBwZW5kc3RhdGU7CiAJfQogCiAJYXBwZW5k c3RhdGUtPmFzX2ZpcnN0X3BhcnRpYWxfcGxhbiA9IGZpcnN0dmFsaWQ7Ci0JYXBwZW5kc3RhdGUt PmFwcGVuZHBsYW5zID0gYXBwZW5kcGxhbnN0YXRlczsKLQlhcHBlbmRzdGF0ZS0+YXNfbnBsYW5z ID0gbnBsYW5zOwogCiAJLyogSW5pdGlhbGl6ZSBhc3luYyBzdGF0ZSAqLwogCWFwcGVuZHN0YXRl LT5hc19hc3luY3BsYW5zID0gYXN5bmNwbGFuczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBBbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBB bmQuYwppbmRleCBhZTM5MTIyMmJmLi4xNjhjNDQwNjkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEFuZC5jCkBAIC04OSw2ICs4OSw4IEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFu ZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJewogCQlpbml0Tm9kZSA9IChQ bGFuICopIGxmaXJzdChsKTsKIAkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShp bml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKSkKKwkJCXJldHVybiBiaXRtYXBhbmRzdGF0ZTsKIAkJaSsrOwogCX0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCAxOWYxOGFiODE3 Li5iMTNjYWUxY2JiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YwpAQCAtNzU0LDExICs3NTQsMTUgQEAgRXhlY0luaXRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFw U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2Nh biByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9u KGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KGN1 cnJlbnRSZWxhdGlvbiA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJ CXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkg Ki8KIAlvdXRlclBsYW5TdGF0ZShzY2Fuc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihu b2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyoKIAkgKiBnZXQgdGhlIHNjYW4g dHlwZSBmcm9tIHRoZSByZWxhdGlvbiBkZXNjcmlwdG9yLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcEluZGV4c2Nhbi5jCmluZGV4IDQ2NjllOGQwY2UuLmYwNGE1M2U5YmUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKQEAgLTI1Miw3ICsyNTIs MTEgQEAgRXhlY0luaXRCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAq LwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRl KS0+cmVsbG9ja21vZGU7Ci0JaW5kZXhzdGF0ZS0+Ymlzc19SZWxhdGlvbkRlc2MgPSBpbmRleF9v cGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlpbmRleHN0YXRlLT5iaXNzX1JlbGF0aW9u RGVzYyA9IEV4ZWNPcGVuU2NhbkluZGV4UmVsYXRpb24oZXN0YXRlLAorCQkJCQkJCQkJCQkJCQkJ ICBub2RlLT5pbmRleGlkLAorCQkJCQkJCQkJCQkJCQkJICBsb2NrbW9kZSk7CisJaWYgKHVubGlr ZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBpbmRleHN0YXRlOwog CiAJLyoKIAkgKiBJbml0aWFsaXplIGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcE9yLmMKaW5kZXggZGU0MzkyMzVkMi4uOTgwYjY4ZGQ4MiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKQEAgLTkwLDYgKzkwLDggQEAgRXhlY0luaXRCaXRt YXBPcihCaXRtYXBPciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJewogCQlp bml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChsKTsKIAkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4 ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAodW5saWtlbHkoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCXJldHVybiBiaXRtYXBvcnN0YXRlOwogCQlp Kys7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggZTU1OWNkMjM0Ni4uMmE3 YzVkY2NkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtNTgsNiArNTgsOCBAQCBF eGVjSW5pdEN1c3RvbVNjYW4oQ3VzdG9tU2NhbiAqY3NjYW4sIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJc2Nhbl9yZWwgPSBFeGVjT3BlblNj YW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKHVubGlrZWx5KHNj YW5fcmVsID09IE5VTEwgfHwgIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCXJldHVy biBjc3M7CiAJCWNzcy0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gc2Nhbl9yZWw7CiAJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IDEzNTdjY2YzYzkuLjkwZDU4 NzhhZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCkBAIC0xNzIsNiAr MTcyLDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKHNjYW5yZWxpZCA+IDApCiAJewogCQljdXJyZW50UmVs YXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsK KwkJaWYgKHVubGlrZWx5KGN1cnJlbnRSZWxhdGlvbiA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCQlyZXR1cm4gc2NhbnN0YXRlOwogCQlzY2Fuc3RhdGUtPnNzLnNz X2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAkJZmR3cm91dGluZSA9IEdldEZk d1JvdXRpbmVGb3JSZWxhdGlvbihjdXJyZW50UmVsYXRpb24sIHRydWUpOwogCX0KQEAgLTI2Myw2 ICsyNjUsOCBAQCBFeGVjSW5pdEZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAob3V0ZXJQbGFuKG5vZGUpKQogCQlvdXRlclBsYW5T dGF0ZShzY2Fuc3RhdGUpID0KIAkJCUV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0 ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkK KwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJICogVGVsbCB0aGUgRkRXIHRvIGluaXRpYWxp emUgdGhlIHNjYW4uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVy LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggY2FlNWVhMWY5Mi4u Njc1NDhhYTdiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtODQsNiArODQsOCBA QCBFeGVjSW5pdEdhdGhlcihHYXRoZXIgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqLwogCW91dGVyTm9kZSA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShn YXRoZXJzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJ aWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBnYXRo ZXJzdGF0ZTsKIAl0dXBEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoZ2F0 aGVyc3RhdGUpKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl R2F0aGVyTWVyZ2UuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmlu ZGV4IGIzNmNkODllN2QuLmNmMGUwNzQzNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVHYXRoZXJNZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRo ZXJNZXJnZS5jCkBAIC0xMDMsNiArMTAzLDggQEAgRXhlY0luaXRHYXRoZXJNZXJnZShHYXRoZXJN ZXJnZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2Rl ID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGdtX3N0YXRlKSA9IEV4ZWNJbml0 Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIGdtX3N0YXRlOwogCiAJLyoKIAkgKiBMZWFk ZXIgbWF5IGFjY2VzcyBFeGVjUHJvY05vZGUgcmVzdWx0IGRpcmVjdGx5IChpZgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlR3JvdXAuYwppbmRleCA4MDc0MjllNTA0Li42ZDBmZDllN2I0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlR3JvdXAuYwpAQCAtMTg0LDYgKzE4NCw4IEBAIEV4ZWNJbml0R3JvdXAoR3JvdXAgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9k ZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShncnBzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQ bGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBncnBzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6 ZSBzY2FuIHNsb3QgYW5kIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSGFzaC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCBhOTEzZDVi NTBjLi5lNzFkMTMxZDE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAgLTM5Niw2ICszOTYs OCBAQCBFeGVjSW5pdEhhc2goSGFzaCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKGhhc2hz dGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJ aWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBoYXNo c3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgb3VyIHJlc3VsdCBzbG90IGFuZCB0eXBlLiBO byBuZWVkIHRvIGJ1aWxkIHByb2plY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVIYXNoam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMK aW5kZXggOTAxYzllOWJlNy4uM2M4NzBkZTFjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hq b2luLmMKQEAgLTc1OCw4ICs3NTgsMTIgQEAgRXhlY0luaXRIYXNoSm9pbihIYXNoSm9pbiAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaGFzaE5vZGUgPSAoSGFzaCAqKSBpbm5l clBsYW4obm9kZSk7CiAKIAlvdXRlclBsYW5TdGF0ZShoanN0YXRlKSA9IEV4ZWNJbml0Tm9kZShv dXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIGhqc3RhdGU7CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJl c3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoaGpzdGF0ZSkpOwogCWlubmVyUGxhblN0YXRlKGhqc3Rh dGUpID0gRXhlY0luaXROb2RlKChQbGFuICopIGhhc2hOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJ aWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBoanN0 YXRlOwogCWlubmVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKGhqc3Rh dGUpKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVt ZW50YWxTb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMK aW5kZXggMDEwYmNmYWZhOC4uYWY3MjNlYTc1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmNyZW1lbnRhbFNvcnQuYwpAQCAtMTA0MCw2ICsxMDQwLDggQEAgRXhlY0luaXRJbmNyZW1l bnRhbFNvcnQoSW5jcmVtZW50YWxTb3J0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKiBub2RlcyBtYXkgYmUgYWJsZSB0byBkbyBzb21ldGhpbmcgbW9yZSB1c2VmdWwuCiAJ ICovCiAJb3V0ZXJQbGFuU3RhdGUoaW5jcnNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQ bGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBpbmNyc29ydHN0YXRlOwogCiAJLyoKIAkgKiBJbml0 aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhv bmx5c2Nhbi5jCmluZGV4IDQ4MWQ0Nzk3NjAuLjBmYmE4ZjdkNWEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtNTMxLDYgKzUzMSw4IEBAIEV4ZWNJbml0SW5k ZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0g RXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdz KTsKKwlpZiAodW5saWtlbHkoY3VycmVudFJlbGF0aW9uID09IE5VTEwgfHwgIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAlpbmRleHN0YXRlLT5z cy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJaW5kZXhzdGF0ZS0+c3Mu c3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gaGVhcCBzY2FuIGhlcmUgKi8KQEAgLTU4 Myw5ICs1ODUsMTIgQEAgRXhlY0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRp b24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBl c3RhdGUpLT5yZWxsb2NrbW9kZTsKLQlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3Blbihub2RlLT5p bmRleGlkLCBsb2NrbW9kZSk7CisJaW5kZXhSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhbkluZGV4UmVs YXRpb24oZXN0YXRlLCBub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CiAJaW5kZXhzdGF0ZS0+aW9z c19SZWxhdGlvbkRlc2MgPSBpbmRleFJlbGF0aW9uOwogCisJaWYgKHVubGlrZWx5KCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBpbmRleHN0YXRlOworCiAJLyoKIAkgKiBJ bml0aWFsaXplIGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUKIAkgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYwppbmRleCBhODE3MmQ4YjgyLi5kYjI4YWViM2Q2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC05MDcsNiArOTA3LDggQEAgRXhlY0luaXRJbmRl eFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBv cGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5T Y2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAo dW5saWtlbHkoY3VycmVudFJlbGF0aW9uID09IE5VTEwgfHwgIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJy ZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVu dFNjYW5EZXNjID0gTlVMTDsJLyogbm8gaGVhcCBzY2FuIGhlcmUgKi8KQEAgLTk1MSw3ICs5NTMs MTEgQEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2Rl ID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21v ZGU7Ci0JaW5kZXhzdGF0ZS0+aXNzX1JlbGF0aW9uRGVzYyA9IGluZGV4X29wZW4obm9kZS0+aW5k ZXhpZCwgbG9ja21vZGUpOworCWluZGV4c3RhdGUtPmlzc19SZWxhdGlvbkRlc2MgPSBFeGVjT3Bl blNjYW5JbmRleFJlbGF0aW9uKGVzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJCSBub2RlLT5pbmRleGlk LAorCQkJCQkJCQkJCQkJCQkJIGxvY2ttb2RlKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIGluZGV4c3RhdGU7CiAKIAkvKgogCSAqIEluaXRp YWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpp bmRleCBlYjdiNmU1MmJlLi4zNjljOTA0NTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTGltaXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpA QCAtNDc1LDYgKzQ3NSw4IEBAIEV4ZWNJbml0TGltaXQoTGltaXQgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlv dXRlclBsYW5TdGF0ZShsaW1pdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0 ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkK KwkJcmV0dXJuIGxpbWl0c3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hpbGQgZXhwcmVz c2lvbnMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKaW5kZXggMGQzNDg5MTk1Yi4uOTA3 Nzg1ODQxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTMyMiw2ICszMjIs OCBAQCBFeGVjSW5pdExvY2tSb3dzKExvY2tSb3dzICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkgKiB0aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVyUGxh blN0YXRlKGxyc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3Mp OworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4g bHJzdGF0ZTsKIAogCS8qIG5vZGUgcmV0dXJucyB1bm1vZGlmaWVkIHNsb3RzIGZyb20gdGhlIG91 dGVyIHBsYW4gKi8KIAlscnN0YXRlLT5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWF0ZXJpYWwuYwppbmRleCA4ODNlM2YzOTMzLi45NzI5NjJkNDRkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpAQCAtMjE0LDYgKzIxNCw4IEBAIEV4ZWNJbml0TWF0 ZXJpYWwoTWF0ZXJpYWwgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJb3V0 ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKG1hdHN0YXRlKSA9IEV4 ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG1hdHN0YXRlOwogCiAJLyoKIAkg KiBJbml0aWFsaXplIHJlc3VsdCB0eXBlIGFuZCBzbG90LiBObyBuZWVkIHRvIGluaXRpYWxpemUg cHJvamVjdGlvbiBpbmZvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVt b2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA2OTBkZWUx ZGFhLi42YWFhYjc0M2I1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVt b2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTk3Myw2 ICs5NzMsOCBAQCBFeGVjSW5pdE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAKIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFu U3RhdGUobXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsK KwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG1z dGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXR1cm4gc2xvdCBhbmQgdHlwZS4gTm8gbmVl ZCB0byBpbml0aWFsaXplIHByb2plY3Rpb24gaW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2VBcHBlbmQuYwppbmRleCAzMjM2NDQ0Y2YxLi5hODJmMGE3MWEwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtOTUsNiArOTUsOCBAQCBFeGVjSW5pdE1lcmdlQXBw ZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJ CQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5tZXJnZXBsYW5zKSwKIAkJCQkJCQkJCQkJICBub2Rl LT5wYXJ0X3BydW5lX2luZm8sCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIG1lcmdlc3RhdGU7CiAJCW1l cmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251 bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCkBAIC0xMjAsNyArMTIyLDcgQEAgRXhlY0luaXRN ZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gTlVMTDsKIAl9CiAKLQltZXJnZXBsYW5z dGF0ZXMgPSAoUGxhblN0YXRlICoqKSBwYWxsb2MobnBsYW5zICogc2l6ZW9mKFBsYW5TdGF0ZSAq KSk7CisJbWVyZ2VwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jMChucGxhbnMgKiBz aXplb2YoUGxhblN0YXRlICopKTsKIAltZXJnZXN0YXRlLT5tZXJnZXBsYW5zID0gbWVyZ2VwbGFu c3RhdGVzOwogCW1lcmdlc3RhdGUtPm1zX25wbGFucyA9IG5wbGFuczsKIApAQCAtMTUxLDYgKzE1 Myw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQlQbGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRo KG5vZGUtPm1lcmdlcGxhbnMsIGkpOwogCiAJCW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0lu aXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCWlmICh1bmxpa2VseSghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJcmV0dXJuIG1lcmdlc3RhdGU7CiAJfQogCiAJbWVy Z2VzdGF0ZS0+cHMucHNfUHJvakluZm8gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdl am9pbi5jCmluZGV4IDkyNmU2MzFkODguLjUzY2IxZmYyMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWVyZ2Vqb2luLmMKQEAgLTE0OTAsMTEgKzE0OTAsMTUgQEAgRXhlY0luaXRNZXJnZUpvaW4o TWVyZ2VKb2luICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRl LT5tal9Ta2lwTWFya1Jlc3RvcmUgPSBub2RlLT5za2lwX21hcmtfcmVzdG9yZTsKIAogCW91dGVy UGxhblN0YXRlKG1lcmdlc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0 YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp KQorCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShv dXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkg PSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsCiAJCQkJCQkJCQkJCSAgbWVy Z2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID8KIAkJCQkJCQkJCQkJICBlZmxhZ3MgOgogCQkJ CQkJCQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZMQUdfTUFSSykpOworCWlmICh1bmxpa2VseSghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlpbm5lckRl c2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA5ZTU2ZjljMzZjLi44 ZGViZmJkM2VjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNDI3 Nyw2ICs0Mjc3LDEzIEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCSAgIGxpbml0aWFsX2ludChub2RlLT5y ZXN1bHRSZWxhdGlvbnMpKTsKIAl9CiAKKwkvKgorCSAqIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24o KSBtYXkgaGF2ZSByZXR1cm5lZCB3aXRob3V0IGluaXRpYWxpemluZworCSAqIHJvb3RSZXN1bHRS ZWxJbmZvIGlmIHRoZSBwbGFuIGdvdCBpbnZhbGlkYXRlZCwgc28gY2hlY2suCisJICovCisJaWYg KHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBtdHN0YXRl OworCiAJLyogc2V0IHVwIGVwcXN0YXRlIHdpdGggZHVtbXkgc3VicGxhbiBkYXRhIGZvciB0aGUg bW9tZW50ICovCiAJRXZhbFBsYW5RdWFsSW5pdCgmbXRzdGF0ZS0+bXRfZXBxc3RhdGUsIGVzdGF0 ZSwgTlVMTCwgTklMLAogCQkJCQkgbm9kZS0+ZXBxUGFyYW0sIG5vZGUtPnJlc3VsdFJlbGF0aW9u cyk7CkBAIC00MzA5LDYgKzQzMTYsMTAgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJs ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCXsKIAkJCUV4ZWNJbml0UmVz dWx0UmVsYXRpb24oZXN0YXRlLCByZXN1bHRSZWxJbmZvLCByZXN1bHRSZWxhdGlvbik7CiAKKwkJ CS8qIFNlZSB0aGUgY29tbWVudCBhYm92ZS4gKi8KKwkJCWlmICh1bmxpa2VseSghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJCXJldHVybiBtdHN0YXRlOworCiAJCQkvKgogCQkJICog Rm9yIGNoaWxkIHJlc3VsdCByZWxhdGlvbnMsIHN0b3JlIHRoZSByb290IHJlc3VsdCByZWxhdGlv bgogCQkJICogcG9pbnRlci4gIFdlIGRvIHNvIGZvciB0aGUgY29udmVuaWVuY2Ugb2YgcGxhY2Vz IHRoYXQgd2FudCB0bwpAQCAtNDMzNSw2ICs0MzQ2LDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShN b2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogTm93IHdl IG1heSBpbml0aWFsaXplIHRoZSBzdWJwbGFuLgogCSAqLwogCW91dGVyUGxhblN0YXRlKG10c3Rh dGUpID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtl bHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG10c3RhdGU7CiAKIAkv KgogCSAqIERvIGFkZGl0aW9uYWwgcGVyLXJlc3VsdC1yZWxhdGlvbiBpbml0aWFsaXphdGlvbi4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKaW5kZXggMDFmM2Q1NmEzYi4uMzRlYWZiYjZl MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTI5NCwxMSArMjk0LDE1IEBA IEV4ZWNJbml0TmVzdExvb3AoTmVzdExvb3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCSAqIHZhbHVlcy4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShubHN0YXRlKSA9IEV4ZWNJ bml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHko IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG5sc3RhdGU7CiAJaWYgKG5v ZGUtPm5lc3RQYXJhbXMgPT0gTklMKQogCQllZmxhZ3MgfD0gRVhFQ19GTEFHX1JFV0lORDsKIAll bHNlCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlpbm5lclBsYW5TdGF0ZShubHN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShpbm5lclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG5sc3Rh dGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QsIHR5cGUgYW5kIHByb2plY3Rp b24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCBjYTlhNWUyZWQyLi5m ODM0NDk5NDc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNl dC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKQEAgLTI1NCw2 ICsyNTQsOCBAQCBFeGVjSW5pdFByb2plY3RTZXQoUHJvamVjdFNldCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91 dGVyUGxhblN0YXRlKHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0 ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkK KwkJcmV0dXJuIHN0YXRlOwogCiAJLyoKIAkgKiB3ZSBkb24ndCB1c2UgaW5uZXIgcGxhbgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwppbmRleCA3NjgwMTQyYzdiLi41 ZGQzMjg1YzQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZl dW5pb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpA QCAtMjQ0LDcgKzI0NCwxMSBAQCBFeGVjSW5pdFJlY3Vyc2l2ZVVuaW9uKFJlY3Vyc2l2ZVVuaW9u ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxk IG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUocnVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0 ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBydXN0YXRlOwogCWlubmVyUGxhblN0YXRlKHJ1 c3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gcnVz dGF0ZTsKIAogCS8qCiAJICogSWYgaGFzaGluZywgcHJlY29tcHV0ZSBmbWdyIGxvb2t1cCBkYXRh IGZvciBpbm5lciBsb29wLCBhbmQgY3JlYXRlIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVJlc3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5j CmluZGV4IGUzY2ZjOWI3NzIuLjdkN2MyYWE3ODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVSZXN1bHQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0 LmMKQEAgLTIwNyw2ICsyMDcsOCBAQCBFeGVjSW5pdFJlc3VsdChSZXN1bHQgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8K IAlvdXRlclBsYW5TdGF0ZShyZXNzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUp LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkpCisJCXJldHVybiByZXNzdGF0ZTsKIAogCS8qCiAJICogd2UgZG9uJ3QgdXNlIGlubmVy IHBsYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCmluZGV4IDZhYjkxMDAxYmMu LjNhZmRhZWVjZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYwpAQCAtMTIx LDYgKzEyMSw5IEBAIEV4ZWNJbml0U2FtcGxlU2NhbihTYW1wbGVTY2FuICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLAogCQkJ CQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdzKTsKKwlpZiAodW5saWtl bHkoc2NhbnN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPT0gTlVMTCB8fAorCQkJCSAhRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJLyogd2Ug d29uJ3Qgc2V0IHVwIHRoZSBIZWFwU2NhbkRlc2MgdGlsbCBsYXRlciAqLwogCXNjYW5zdGF0ZS0+ c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5j CmluZGV4IGIwNTI3NzVlNWIuLmY3ZmI2NGE0YTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNj YW4uYwpAQCAtMTUzLDYgKzE1Myw5IEBAIEV4ZWNJbml0U2VxU2NhbihTZXFTY2FuICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRl LAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdzKTsKKwlpZiAo dW5saWtlbHkoc2NhbnN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPT0gTlVMTCB8fAorCQkJ CSAhRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gc2NhbnN0YXRlOwogCiAJ LyogYW5kIGNyZWF0ZSBzbG90IHdpdGggdGhlIGFwcHJvcHJpYXRlIHJvd3R5cGUgKi8KIAlFeGVj SW5pdFNjYW5UdXBsZVNsb3QoZXN0YXRlLCAmc2NhbnN0YXRlLT5zcywKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMKaW5kZXggZmUzNGIyMTM0Zi4uMjIzMWQ4YjgyZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMKQEAgLTUyOCw2ICs1MjgsOCBAQCBFeGVjSW5pdFNldE9wKFNldE9wICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAobm9kZS0+c3RyYXRlZ3kgPT0gU0VUT1Bf SEFTSEVEKQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJTkQ7CiAJb3V0ZXJQbGFuU3RhdGUo c2V0b3BzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFn cyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVy biBzZXRvcHN0YXRlOwogCW91dGVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0 YXRlKHNldG9wc3RhdGUpKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwppbmRleCBhZjg1 MjQ2NGQwLi5mYjc2ZTRjMDFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKQEAgLTI2Myw2ICsy NjMsOCBAQCBFeGVjSW5pdFNvcnQoU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJZWZsYWdzICY9IH4oRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRCB8 IEVYRUNfRkxBR19NQVJLKTsKIAogCW91dGVyUGxhblN0YXRlKHNvcnRzdGF0ZSkgPSBFeGVjSW5p dE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBzb3J0c3RhdGU7CiAKIAkvKgog CSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVN1YnF1ZXJ5c2Nhbi5jCmluZGV4IDBiMjYxMjE4M2EuLmI1YjUzOGZhOTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKQEAgLTEyNCw2ICsxMjQsOCBAQCBFeGVjSW5p dFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCSAqIGluaXRpYWxpemUgc3VicXVlcnkKIAkgKi8KIAlzdWJxdWVyeXN0YXRlLT5zdWJw bGFuID0gRXhlY0luaXROb2RlKG5vZGUtPnN1YnBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo dW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHN1YnF1ZXJ5 c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlIChuZWVkZWQg YnkgRXhlY0Fzc2lnblNjYW5Qcm9qZWN0aW9uSW5mbykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU aWRyYW5nZXNjYW4uYwppbmRleCA3MDJlZTg4NGQyLi5hNzY4MzZkMDIxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBAIC0zNzcsNiArMzc3LDggQEAgRXhlY0luaXRU aWRSYW5nZVNjYW4oVGlkUmFuZ2VTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0g RXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdz KTsKKwlpZiAodW5saWtlbHkoY3VycmVudFJlbGF0aW9uID09IE5VTEwgfHwgIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIHRpZHJhbmdlc3RhdGU7CiAKIAl0aWRyYW5nZXN0 YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkcmFuZ2Vz dGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gdGFibGUgc2NhbiBoZXJl ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwppbmRleCBmMzc1OTUxNjk5Li4wODhiYWJm NTcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKQEAgLTUyMiw2ICs1MjIsOCBAQCBF eGVjSW5pdFRpZFNjYW4oVGlkU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4 ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7 CisJaWYgKHVubGlrZWx5KGN1cnJlbnRSZWxhdGlvbiA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiB0aWRzdGF0ZTsKIAogCXRpZHN0YXRlLT5zcy5zc19j dXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYyA9IE5VTEw7IC8qIG5vIGhlYXAgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlVW5pcXVlLmMKaW5kZXggYjgyZDBlOWFkNS4uY2I0NmIyZDVkMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVVbmlxdWUuYwpAQCAtMTM1LDYgKzEzNSw4IEBAIEV4ZWNJbml0VW5pcXVlKFVuaXF1ZSAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdGhlbiBpbml0aWFsaXplIG91 dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZSh1bmlxdWVzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiB1bmlxdWVzdGF0ZTsKIAogCS8qCiAJ ICogSW5pdGlhbGl6ZSByZXN1bHQgc2xvdCBhbmQgdHlwZS4gVW5pcXVlIG5vZGVzIGRvIG5vIHBy b2plY3Rpb25zLCBzbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDU2MWQ3 ZTczMWQuLjFiOTZmNTFmZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVX aW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAg LTI0NjQsNiArMjQ2NCw4IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5v ZGUpOwogCW91dGVyUGxhblN0YXRlKHdpbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4s IGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKSkKKwkJcmV0dXJuIHdpbnN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIHNvdXJjZSB0 dXBsZSB0eXBlICh3aGljaCBpcyBhbHNvIHRoZSB0dXBsZSB0eXBlIHRoYXQgd2UnbGwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv c3BpLmMKaW5kZXggOTAyNzkzYjAyYi4uYjc1NDgyNzAxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTcw LDcgKzcwLDggQEAgc3RhdGljIGludAlfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4s IGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlzdEluZm8g X1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJCQkJCQkJ IERhdHVtICpWYWx1ZXMsIGNvbnN0IGNoYXIgKk51bGxzKTsKIAotc3RhdGljIGludAlfU1BJX3Bx dWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNv dW50KTsKK3N0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wg ZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCwKKwkJCQkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIGludCBxdWVyeV9pbmRleCk7CiAKIHN0YXRpYyB2b2lkIF9TUElfZXJyb3JfY2Fs bGJhY2sodm9pZCAqYXJnKTsKIApAQCAtMTY4Miw3ICsxNjgzLDggQEAgU1BJX2N1cnNvcl9vcGVu X2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkJCQkJICBxdWVy eV9zdHJpbmcsCiAJCQkJCSAgcGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBzdG10X2xp c3QsCi0JCQkJCSAgY3BsYW4pOworCQkJCQkgIGNwbGFuLAorCQkJCQkgIHBsYW5zb3VyY2UpOwog CiAJLyoKIAkgKiBTZXQgdXAgb3B0aW9ucyBmb3IgcG9ydGFsLiAgRGVmYXVsdCBTQ1JPTEwgdHlw ZSBpcyBjaG9zZW4gdGhlIHNhbWUgd2F5CkBAIC0yNDk0LDYgKzI0OTYsNyBAQCBfU1BJX2V4ZWN1 dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25z LAogCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlID0gKENhY2hlZFBsYW5Tb3VyY2UgKikg bGZpcnN0KGxjMSk7CiAJCUxpc3QJICAgKnN0bXRfbGlzdDsKIAkJTGlzdENlbGwgICAqbGMyOwor CQlpbnQJCQlpID0gMDsKIAogCQlzcGljYWxsYmFja2FyZy5xdWVyeSA9IHBsYW5zb3VyY2UtPnF1 ZXJ5X3N0cmluZzsKIApAQCAtMjY5MSw4ICsyNjk0LDkgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJ UGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJCQkJ CQlvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKIAkJ CQkJCQkJCQkwKTsKLQkJCQlyZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmlnZ2VycywK LQkJCQkJCQkJICBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKKworCQkJCXJlcyA9 IF9TUElfcHF1ZXJ5KHFkZXNjLCBmaXJlX3RyaWdnZXJzLCBjYW5TZXRUYWcgPyBvcHRpb25zLT50 Y291bnQgOiAwLAorCQkJCQkJCQkgIHBsYW5zb3VyY2UsIGkpOwogCQkJCUZyZWVRdWVyeURlc2Mo cWRlc2MpOwogCQkJfQogCQkJZWxzZQpAQCAtMjc4OSw2ICsyNzkzLDggQEAgX1NQSV9leGVjdXRl X3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywK IAkJCQlteV9yZXMgPSByZXM7CiAJCQkJZ290byBmYWlsOwogCQkJfQorCisJCQlpKys7CiAJCX0K IAogCQkvKiBEb25lIHdpdGggdGhpcyBwbGFuLCBzbyByZWxlYXNlIHJlZmNvdW50ICovCkBAIC0y ODY2LDcgKzI4NzIsOCBAQCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0 eXBlcywKIH0KIAogc3RhdGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2Ms IGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQsCisJCQlDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgpCiB7CiAJaW50CQkJb3Bl cmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJaW50CQkJZWZsYWdzOwpAQCAtMjkyMiw3 ICsyOTI5LDcgQEAgX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90 cmlnZ2VycywgdWludDY0IHRjb3VudCkKIAllbHNlCiAJCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQ X1RSSUdHRVJTOwogCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJRXhlY3V0 b3JTdGFydEV4dChxdWVyeURlc2MsIGVmbGFncywgcGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgpOwog CiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgdGNvdW50LCB0 cnVlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDhiYzZiZWExMTMuLmNjYmMyN2I1NzUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKQEAgLTEyMzcsNiArMTIzNyw3IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0 IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAkJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkJICBjb21t YW5kVGFnLAogCQkJCQkJICBwbGFudHJlZV9saXN0LAorCQkJCQkJICBOVUxMLAogCQkJCQkJICBO VUxMKTsKIAogCQkvKgpAQCAtMjAyNyw3ICsyMDI4LDggQEAgZXhlY19iaW5kX21lc3NhZ2UoU3Ry aW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBwc3Jj LT5jb21tYW5kVGFnLAogCQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCi0JCQkJCSAgY3BsYW4pOwor CQkJCQkgIGNwbGFuLAorCQkJCQkgIHBzcmMpOwogCiAJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hv dCB1c2VkIGZvciBwYXJhbWV0ZXIgSS9PIGFuZCBwYXJzaW5nL3BsYW5uaW5nICovCiAJaWYgKHNu YXBzaG90X3NldCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMv YmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDZlOGY2YjFiOGYuLmMyZWJkZGFhODQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9w cXVlcnkuYwpAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNp bmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2Mu aCIKICNpbmNsdWRlICJleGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCkBAIC0zNyw2ICszOCw4IEBAIFBvcnRhbAkJ QWN0aXZlUG9ydGFsID0gTlVMTDsKIAogc3RhdGljIHZvaWQgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRT dG10ICpwbGFuLAogCQkJCQkJIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJIENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJCQkgaW50IHF1ZXJ5X2luZGV4LAogCQkJCQkJIGNvbnN0 IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCkBAIC04MCw2ICs4Myw3IEBAIENyZWF0ZVF1ZXJ5 RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRz dG10LT5jb21tYW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxh bm5lZHN0bXQ7CS8qIHBsYW4gKi8KIAlxZC0+Y3BsYW4gPSBjcGxhbjsJCQkvKiBDYWNoZWRQbGFu IHN1cHBseWluZyB0aGUgcGxhbm5lZHN0bXQgKi8KKwlxZC0+Y3BsYW5fcmVsZWFzZSA9IGZhbHNl OwogCXFkLT5zb3VyY2VUZXh0ID0gc291cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwogCXFkLT5z bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAqLwogCS8q IFJJIGNoZWNrIHNuYXBzaG90ICovCkBAIC0xMTQsNiArMTE4LDEzIEBAIEZyZWVRdWVyeURlc2Mo UXVlcnlEZXNjICpxZGVzYykKIAlVbnJlZ2lzdGVyU25hcHNob3QocWRlc2MtPnNuYXBzaG90KTsK IAlVbnJlZ2lzdGVyU25hcHNob3QocWRlc2MtPmNyb3NzY2hlY2tfc25hcHNob3QpOwogCisJLyoK KwkgKiBSZWxlYXNlIENhY2hlZFBsYW4gaWYgcmVxdWVzdGVkLiAgVGhlIENhY2hlZFBsYW4gaXMg bm90IGFzc29jaWF0ZWQgd2l0aAorCSAqIGEgUmVzb3VyY2VPd25lciB3aGVuIHJlbGVhc2VfY3Bs YW4gaXMgdHJ1ZTsgc2VlIEV4ZWN1dG9yU3RhcnRFeHQoKS4KKwkgKi8KKwlpZiAocWRlc2MtPmNw bGFuX3JlbGVhc2UpCisJCVJlbGVhc2VDYWNoZWRQbGFuKHFkZXNjLT5jcGxhbiwgTlVMTCk7CisK IAkvKiBPbmx5IHRoZSBRdWVyeURlc2MgaXRzZWxmIG5lZWQgYmUgZnJlZWQgKi8KIAlwZnJlZShx ZGVzYyk7CiB9CkBAIC0xMjYsNiArMTM3LDggQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFk ZXNjKQogICoKICAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQogICoJY3BsYW46 IENhY2hlZFBsYW4gc3VwcGx5aW5nIHRoZSBwbGFuCisgKglwbGFuc291cmNlOiBDYWNoZWRQbGFu U291cmNlIHN1cHBseWluZyB0aGUgY3BsYW4KKyAqCXF1ZXJ5X2luZGV4OiBpbmRleCBvZiB0aGUg cXVlcnkgaW4gcGxhbnNvdXJjZS0+cXVlcnlfbGlzdAogICoJc291cmNlVGV4dDogdGhlIHNvdXJj ZSB0ZXh0IG9mIHRoZSBxdWVyeQogICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKICAq CWRlc3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwpAQCAtMTM5LDYgKzE1Miw4IEBAIEZyZWVRdWVy eURlc2MoUXVlcnlEZXNjICpxZGVzYykKIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5l ZFN0bXQgKnBsYW4sCiAJCQkgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkgQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwKKwkJCSBpbnQgcXVlcnlfaW5kZXgsCiAJCQkgY29uc3QgY2hhciAqc291 cmNlVGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVudmlyb25tZW50 ICpxdWVyeUVudiwKQEAgLTE1Nyw3ICsxNzIsNyBAQCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQg KnBsYW4sCiAJLyoKIAkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBm b3IgZXhlY3V0aW9uCiAJICovCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOworCUV4ZWN1 dG9yU3RhcnRFeHQocXVlcnlEZXNjLCAwLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAKIAkv KgogCSAqIFJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9uLgpAQCAtNTE4LDkgKzUzMywxMiBAQCBQ b3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJbXll ZmxhZ3MgPSBlZmxhZ3M7CiAKIAkJCQkvKgotCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBw cmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkJCQkgKiBFeGVjdXRvclN0YXJ0RXh0KCkg dG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAgSWYKKwkJCQkgKiB0aGUgcG9ydGFs IGlzIHVzaW5nIGEgY2FjaGVkIHBsYW4sIGl0ICBtYXkgZ2V0IGludmFsaWRhdGVkCisJCQkJICog ZHVyaW5nIHBsYW4gaW50aWFsaXphdGlvbiwgaW4gd2hpY2ggY2FzZSBhIG5ldyBvbmUgaXMKKwkJ CQkgKiBjcmVhdGVkIGFuZCBzYXZlZCBpbiB0aGUgUXVlcnlEZXNjLgogCQkJCSAqLwotCQkJCUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncyk7CisJCQkJRXhlY3V0b3JTdGFydEV4dChx dWVyeURlc2MsIG15ZWZsYWdzLCBwb3J0YWwtPnBsYW5zb3VyY2UsIDApOwogCiAJCQkJLyoKIAkJ CQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgpA QCAtMTIwMSw2ICsxMjE5LDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIHsKIAli b29sCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFsc2U7CiAJTGlzdENlbGwgICAqc3RtdGxpc3Rf aXRlbTsKKwlpbnQJCQlpID0gMDsKIAogCS8qCiAJICogSWYgdGhlIGRlc3RpbmF0aW9uIGlzIERl c3RSZW1vdGVFeGVjdXRlLCBjaGFuZ2UgdG8gRGVzdE5vbmUuICBUaGUKQEAgLTEyODMsNiArMTMw Miw4IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQkJLyogc3RhdGVtZW50IGNh biBzZXQgdGFnIHN0cmluZyAqLwogCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKIAkJCQkJCQkgcG9y dGFsLT5jcGxhbiwKKwkJCQkJCQkgcG9ydGFsLT5wbGFuc291cmNlLAorCQkJCQkJCSBpLAogCQkJ CQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAog CQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApAQCAtMTI5Myw2ICsxMzE0LDggQEAgUG9ydGFsUnVu TXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90 IHNldCB0YWcgKi8KIAkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCiAJCQkJCQkJIHBvcnRhbC0+Y3Bs YW4sCisJCQkJCQkJIHBvcnRhbC0+cGxhbnNvdXJjZSwKKwkJCQkJCQkgaSwKIAkJCQkJCQkgcG9y dGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkg cG9ydGFsLT5xdWVyeUVudiwKQEAgLTEzNTcsNiArMTM4MCw4IEBAIFBvcnRhbFJ1bk11bHRpKFBv cnRhbCBwb3J0YWwsCiAJCSAqLwogCQlpZiAobG5leHQocG9ydGFsLT5zdG10cywgc3RtdGxpc3Rf aXRlbSkgIT0gTlVMTCkKIAkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkJaSsrOwog CX0KIAogCS8qIFBvcCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9uZS4gKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggNWI3NWRhZGYxMy4uZDMzZjg3MWVhMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTk0LDYgKzk0LDE0IEBACiAgKi8KIHN0YXRp YyBkbGlzdF9oZWFkIHNhdmVkX3BsYW5fbGlzdCA9IERMSVNUX1NUQVRJQ19JTklUKHNhdmVkX3Bs YW5fbGlzdCk7CiAKKy8qCisgKiBIZWFkIG9mIHRoZSBiYWNrZW5kJ3MgbGlzdCBvZiAic3RhbmRh bG9uZSIgQ2FjaGVkUGxhbnMgdGhhdCBhcmUgbm90CisgKiBhc3NvY2lhdGVkIHdpdGggYSBDYWNo ZWRQbGFuU291cmNlLCBjcmVhdGVkIGJ5IEdldFNpbmdsZUNhY2hlZFBsYW4oKSBmb3IKKyAqIHRy YW5zaWVudCB1c2UgYnkgdGhlIGV4ZWN1dG9yIGluIGNlcnRhaW4gc2NlbmFyaW9zIHdoZXJlIHRo ZXkncmUgbmVlZGVkCisgKiBvbmx5IGZvciBvbmUgZXhlY3V0aW9uIG9mIHRoZSBwbGFuLgorICov CitzdGF0aWMgZGxpc3RfaGVhZCBzdGFuZGFsb25lX3BsYW5fbGlzdCA9IERMSVNUX1NUQVRJQ19J TklUKHN0YW5kYWxvbmVfcGxhbl9saXN0KTsKKwogLyoKICAqIFRoaXMgaXMgdGhlIGhlYWQgb2Yg dGhlIGJhY2tlbmQncyBsaXN0IG9mIENhY2hlZEV4cHJlc3Npb25zLgogICovCkBAIC05MDUsNiAr OTEzLDggQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAg KiBQbGFubmluZyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LiAg VGhlIGZpbmlzaGVkIHBsYW4KICAqIGlzIGluIGEgY2hpbGQgbWVtb3J5IGNvbnRleHQsIHdoaWNo IHR5cGljYWxseSBzaG91bGQgZ2V0IHJlcGFyZW50ZWQKICAqICh1bmxlc3MgdGhpcyBpcyBhIG9u ZS1zaG90IHBsYW4sIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgY29weSB0aGUgcGxhbikuCisgKgor ICogTm90ZTogV2hlbiBjaGFuZ2luZyB0aGlzLCB5b3Ugc2hvdWxkIGFsc28gbG9vayBhdCBHZXRT aW5nbGVDYWNoZWRQbGFuKCkuCiAgKi8KIHN0YXRpYyBDYWNoZWRQbGFuICoKIEJ1aWxkQ2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKQEAgLTEwMzQs NiArMTA0NCw3IEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LCBMaXN0ICpxbGlzdCwKIAlwbGFuLT5pc19nZW5lcmljID0gZ2VuZXJpYzsKIAlwbGFuLT5pc19z YXZlZCA9IGZhbHNlOwogCXBsYW4tPmlzX3ZhbGlkID0gdHJ1ZTsKKwlwbGFuLT5pc19zdGFuZGFs b25lID0gZmFsc2U7CiAKIAkvKiBhc3NpZ24gZ2VuZXJhdGlvbiBudW1iZXIgdG8gbmV3IHBsYW4g Ki8KIAlwbGFuLT5nZW5lcmF0aW9uID0gKysocGxhbnNvdXJjZS0+Z2VuZXJhdGlvbik7CkBAIC0x MjgyLDYgKzEyOTMsMTIxIEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAlyZXR1cm4gcGxhbjsKIH0KIAorLyoK KyAqIENyZWF0ZSBhIGZyZXNoIENhY2hlZFBsYW4gZm9yIHRoZSBxdWVyeV9pbmRleCd0aCBxdWVy eSBpbiB0aGUgcHJvdmlkZWQKKyAqIENhY2hlZFBsYW5Tb3VyY2UuCisgKgorICogVGhlIGNyZWF0 ZWQgQ2FjaGVkUGxhbiBpcyBzdGFuZGFsb25lLCBtZWFuaW5nIGl0IGlzIG5vdCB0cmFja2VkIGlu IHRoZQorICogQ2FjaGVkUGxhblNvdXJjZS4gVGhlIENhY2hlZFBsYW4gYW5kIGl0cyBwbGFuIHRy ZWVzIGFyZSBhbGxvY2F0ZWQgaW4gYQorICogY2hpbGQgY29udGV4dCBvZiB0aGUgY2FsbGVyJ3Mg bWVtb3J5IGNvbnRleHQuIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhleQorICogcmVtYWluIHZh bGlkIHVudGlsIGV4ZWN1dGlvbiBpcyBjb21wbGV0ZSwgYWZ0ZXIgd2hpY2ggdGhlIHBsYW4gc2hv dWxkIGJlCisgKiByZWxlYXNlZCBieSBjYWxsaW5nIFJlbGVhc2VDYWNoZWRQbGFuKCkuCisgKgor ICogVGhpcyBmdW5jdGlvbiBwcmltYXJpbHkgc3VwcG9ydHMgRXhlY3V0b3JTdGFydEV4dCgpLCB3 aGljaCBoYW5kbGVzIGNhc2VzCisgKiB3aGVyZSB0aGUgb3JpZ2luYWwgZ2VuZXJpYyBDYWNoZWRQ bGFuIGJlY29tZXMgaW52YWxpZCBhZnRlciBwcnVuYWJsZQorICogcmVsYXRpb25zIGFyZSBsb2Nr ZWQuCisgKi8KK0NhY2hlZFBsYW4gKgorR2V0U2luZ2xlQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgsCisJCQkJCVF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KQoreworCUxpc3QgKnF1ZXJ5X2xpc3QgPSBwbGFuc291cmNlLT5xdWVyeV9saXN0 LAorCQkgKnBsYW5fbGlzdDsKKwlDYWNoZWRQbGFuICpwbGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47 CisJTWVtb3J5Q29udGV4dCBvbGRjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJcGxhbl9j b250ZXh0OworCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsKKworCUFzc2VydChBY3RpdmVTbmFw c2hvdFNldCgpKTsKKworCS8qIFNhbml0eSBjaGVja3MgKi8KKwlpZiAocGxhbiA9PSBOVUxMKQor CQllbG9nKEVSUk9SLCAiR2V0U2luZ2xlQ2FjaGVkUGxhbigpIGNhbGxlZCBpbiB0aGUgd3Jvbmcg Y29udGV4dDogcGxhbnNvdXJjZS0+Z3BsYW4gaXMgTlVMTCIpOworCWVsc2UgaWYgKHBsYW4tPmlz X3ZhbGlkKQorCQllbG9nKEVSUk9SLCAiR2V0U2luZ2xlQ2FjaGVkUGxhbigpIGNhbGxlZCBpbiB0 aGUgd3JvbmcgY29udGV4dDogcGxhbnNvdXJjZS0+Z3BsYW4tPmlzX3ZhbGlkIik7CisKKwkvKgor CSAqIFRoZSBwbGFuc291cmNlIG1pZ2h0IGhhdmUgYmVjb21lIGludmFsaWQgc2luY2UgR2V0Q2Fj aGVkUGxhbigpLiBTZWUgdGhlCisJICogY29tbWVudCBpbiBCdWlsZENhY2hlZFBsYW4oKSBmb3Ig ZGV0YWlscyBvbiB3aHkgdGhpcyBtaWdodCBoYXBwZW4uCisJICoKKwkgKiBUaGUgcmlzayBpcyBn cmVhdGVyIGhlcmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZQorCSAq IGV4ZWN1dG9yLCBtZWFuaW5nIG11Y2ggbW9yZSBwcm9jZXNzaW5nIG1heSBoYXZlIG9jY3VycmVk IGNvbXBhcmVkIHRvCisJICogd2hlbiBCdWlsZENhY2hlZFBsYW4oKSBpcyBjYWxsZWQgZnJvbSBH ZXRDYWNoZWRQbGFuKCkuCisJICovCisJaWYgKCFwbGFuc291cmNlLT5pc192YWxpZCkKKwkJcXVl cnlfbGlzdCA9IFJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudik7CisJ QXNzZXJ0KHF1ZXJ5X2xpc3QgIT0gTklMKTsKKworCS8qCisJICogQnVpbGQgYSBuZXcgZ2VuZXJp YyBwbGFuIGZvciB0aGUgcXVlcnlfaW5kZXgndGggcXVlcnksIGJ1dCBtYWtlIGEgY29weQorCSAq IHRvIGJlIHNjcmliYmxlZCBvbiBieSB0aGUgcGxhbm5lcgorCSAqLworCXF1ZXJ5X2xpc3QgPSBs aXN0X21ha2UxKGNvcHlPYmplY3QobGlzdF9udGhfbm9kZShRdWVyeSwgcXVlcnlfbGlzdCwKKwkJ CQkJCQkJCQkJCQkgcXVlcnlfaW5kZXgpKSk7CisJcGxhbl9saXN0ID0gcGdfcGxhbl9xdWVyaWVz KHF1ZXJ5X2xpc3QsIHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywKKwkJCQkJCQkJcGxhbnNvdXJj ZS0+Y3Vyc29yX29wdGlvbnMsIE5VTEwpOworCisJbGlzdF9mcmVlX2RlZXAocXVlcnlfbGlzdCk7 CisKKwkvKgorCSAqIE1ha2UgYSBkZWRpY2F0ZWQgbWVtb3J5IGNvbnRleHQgZm9yIHRoZSBDYWNo ZWRQbGFuIGFuZCBpdHMgc3Vic2lkaWFyeQorCSAqIGRhdGEgc28gdGhhdCB3ZSBjYW4gcmVsZWFz ZSBpdCBpbiBSZWxlYXNlQ2FjaGVkUGxhbigpIHRoYXQgd2lsbCBiZQorCSAqIGNhbGxlZCBpbiBG cmVlUXVlcnlEZXNjKCkuCisJICovCisJcGxhbl9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3Jl YXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCSAiU3RhbmRhbG9uZSBDYWNoZWRQ bGFuIiwKKwkJCQkJCQkJCQkgQUxMT0NTRVRfU1RBUlRfU01BTExfU0laRVMpOworCU1lbW9yeUNv bnRleHRDb3B5QW5kU2V0SWRlbnRpZmllcihwbGFuX2NvbnRleHQsIHBsYW5zb3VyY2UtPnF1ZXJ5 X3N0cmluZyk7CisKKwkvKgorCSAqIENvcHkgcGxhbiBpbnRvIHRoZSBuZXcgY29udGV4dC4KKwkg Ki8KKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbl9jb250ZXh0KTsKKwlwbGFuX2xpc3QgPSBj b3B5T2JqZWN0KHBsYW5fbGlzdCk7CisKKwkvKgorCSAqIENyZWF0ZSBhbmQgZmlsbCB0aGUgQ2Fj aGVkUGxhbiBzdHJ1Y3Qgd2l0aGluIHRoZSBuZXcgY29udGV4dC4KKwkgKi8KKwlwbGFuID0gKENh Y2hlZFBsYW4gKikgcGFsbG9jKHNpemVvZihDYWNoZWRQbGFuKSk7CisJcGxhbi0+bWFnaWMgPSBD QUNIRURQTEFOX01BR0lDOworCXBsYW4tPnN0bXRfbGlzdCA9IHBsYW5fbGlzdDsKKworCXBsYW4t PnBsYW5Sb2xlSWQgPSBHZXRVc2VySWQoKTsKKwlBc3NlcnQobGlzdF9sZW5ndGgocGxhbl9saXN0 KSA9PSAxKTsKKwlwbGFubmVkc3RtdCA9IGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBsYW5f bGlzdCk7CisKKwkvKgorCSAqIENhY2hlZFBsYW4gaXMgZGVwZW5kZW50IG9uIHJvbGUgZWl0aGVy IGlmIFJMUyBhZmZlY3RlZCB0aGUgcmV3cml0ZQorCSAqIHBoYXNlIG9yIGlmIGEgcm9sZSBkZXBl bmRlbmN5IHdhcyBpbmplY3RlZCBkdXJpbmcgcGxhbm5pbmcuICBBbmQgaXQncworCSAqIHRyYW5z aWVudCBpZiBhbnkgcGxhbiBpcyBtYXJrZWQgc28uCisJICovCisJcGxhbi0+ZGVwZW5kc09uUm9s ZSA9IHBsYW5zb3VyY2UtPmRlcGVuZHNPblJMUyB8fCBwbGFubmVkc3RtdC0+ZGVwZW5kc09uUm9s ZTsKKwlpZiAocGxhbm5lZHN0bXQtPnRyYW5zaWVudFBsYW4pCisJeworCQlBc3NlcnQoVHJhbnNh Y3Rpb25JZElzTm9ybWFsKFRyYW5zYWN0aW9uWG1pbikpOworCQlwbGFuLT5zYXZlZF94bWluID0g VHJhbnNhY3Rpb25YbWluOworCX0KKwllbHNlCisJCXBsYW4tPnNhdmVkX3htaW4gPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKKwlwbGFuLT5yZWZjb3VudCA9IDA7CisJcGxhbi0+Y29udGV4dCA9IHBs YW5fY29udGV4dDsKKwlwbGFuLT5pc19vbmVzaG90ID0gZmFsc2U7CisJcGxhbi0+aXNfZ2VuZXJp YyA9IHRydWU7CisJcGxhbi0+aXNfc2F2ZWQgPSBmYWxzZTsKKwlwbGFuLT5pc192YWxpZCA9IHRy dWU7CisJcGxhbi0+aXNfc3RhbmRhbG9uZSA9IHRydWU7CisJcGxhbi0+Z2VuZXJhdGlvbiA9IDE7 CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisKKwkvKgorCSAqIEFkZCB0aGUgZW50 cnkgdG8gdGhlIGdsb2JhbCBsaXN0IG9mICJzdGFuZGFsb25lIiBjYWNoZWQgcGxhbnMuICBJdCBp cworCSAqIHJlbW92ZWQgZnJvbSB0aGUgbGlzdCBieSBSZWxlYXNlQ2FjaGVkUGxhbigpLgorCSAq LworCWRsaXN0X3B1c2hfdGFpbCgmc3RhbmRhbG9uZV9wbGFuX2xpc3QsICZwbGFuLT5ub2RlKTsK KworCXJldHVybiBwbGFuOworfQorCiAvKgogICogUmVsZWFzZUNhY2hlZFBsYW46IHJlbGVhc2Ug YWN0aXZlIHVzZSBvZiBhIGNhY2hlZCBwbGFuLgogICoKQEAgLTEzMDksNiArMTQzNSwxMCBAQCBS ZWxlYXNlQ2FjaGVkUGxhbihDYWNoZWRQbGFuICpwbGFuLCBSZXNvdXJjZU93bmVyIG93bmVyKQog CQkvKiBNYXJrIGl0IG5vIGxvbmdlciB2YWxpZCAqLwogCQlwbGFuLT5tYWdpYyA9IDA7CiAKKwkJ LyogUmVtb3ZlIGZyb20gdGhlIGdsb2JhbCBsaXN0IGlmIHdlIGFyZSBhIHN0YW5kYWxvbmUgcGxh bi4gKi8KKwkJaWYgKHBsYW4tPmlzX3N0YW5kYWxvbmUpCisJCQlkbGlzdF9kZWxldGUoJnBsYW4t Pm5vZGUpOworCiAJCS8qIE9uZS1zaG90IHBsYW5zIGRvIG5vdCBvd24gdGhlaXIgY29udGV4dCwg c28gd2UgY2FuJ3QgZnJlZSB0aGVtICovCiAJCWlmICghcGxhbi0+aXNfb25lc2hvdCkKIAkJCU1l bW9yeUNvbnRleHREZWxldGUocGxhbi0+Y29udGV4dCk7CkBAIC0yMDY2LDYgKzIxOTYsMzMgQEAg UGxhbkNhY2hlUmVsQ2FsbGJhY2soRGF0dW0gYXJnLCBPaWQgcmVsaWQpCiAJCQljZXhwci0+aXNf dmFsaWQgPSBmYWxzZTsKIAkJfQogCX0KKworCS8qIEZpbmFsbHksIGludmFsaWRhdGUgYW55IHN0 YW5kYWxvbmUgY2FjaGVkIHBsYW5zICovCisJZGxpc3RfZm9yZWFjaChpdGVyLCAmc3RhbmRhbG9u ZV9wbGFuX2xpc3QpCisJeworCQlDYWNoZWRQbGFuICpjcGxhbiA9IGRsaXN0X2NvbnRhaW5lcihD YWNoZWRQbGFuLAorCQkJCQkJCQkJCQlub2RlLCBpdGVyLmN1cik7CisKKwkJQXNzZXJ0KGNwbGFu LT5tYWdpYyA9PSBDQUNIRURQTEFOX01BR0lDKTsKKworCQlpZiAoY3BsYW4tPmlzX3ZhbGlkKQor CQl7CisJCQlMaXN0Q2VsbCAgICpsYzsKKworCQkJZm9yZWFjaChsYywgY3BsYW4tPnN0bXRfbGlz dCkKKwkJCXsKKwkJCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFu bmVkU3RtdCwgbGMpOworCisJCQkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBDTURf VVRJTElUWSkKKwkJCQkJY29udGludWU7CS8qIElnbm9yZSB1dGlsaXR5IHN0YXRlbWVudHMgKi8K KwkJCQlpZiAoKHJlbGlkID09IEludmFsaWRPaWQpID8gcGxhbm5lZHN0bXQtPnJlbGF0aW9uT2lk cyAhPSBOSUwgOgorCQkJCQlsaXN0X21lbWJlcl9vaWQocGxhbm5lZHN0bXQtPnJlbGF0aW9uT2lk cywgcmVsaWQpKQorCQkJCQljcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKKwkJCQlpZiAoIWNwbGFu LT5pc192YWxpZCkKKwkJCQkJYnJlYWs7CQkvKiBvdXQgb2Ygc3RtdF9saXN0IHNjYW4gKi8KKwkJ CX0KKwkJfQorCX0KIH0KIAogLyoKQEAgLTIxNzYsNiArMjMzMyw0NCBAQCBQbGFuQ2FjaGVPYmpl Y3RDYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogCQkJ fQogCQl9CiAJfQorCisJLyogRmluYWxseSwgaW52YWxpZGF0ZSBhbnkgc3RhbmRhbG9uZSBjYWNo ZWQgcGxhbnMgKi8KKwlkbGlzdF9mb3JlYWNoKGl0ZXIsICZzdGFuZGFsb25lX3BsYW5fbGlzdCkK Kwl7CisJCUNhY2hlZFBsYW4gKmNwbGFuID0gZGxpc3RfY29udGFpbmVyKENhY2hlZFBsYW4sCisJ CQkJCQkJCQkJCW5vZGUsIGl0ZXIuY3VyKTsKKworCQlBc3NlcnQoY3BsYW4tPm1hZ2ljID09IENB Q0hFRFBMQU5fTUFHSUMpOworCisJCWlmIChjcGxhbi0+aXNfdmFsaWQpCisJCXsKKwkJCUxpc3RD ZWxsICAgKmxjOworCisJCQlmb3JlYWNoKGxjLCBjcGxhbi0+c3RtdF9saXN0KQorCQkJeworCQkJ CVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7 CisJCQkJTGlzdENlbGwgICAqbGMzOworCisJCQkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlw ZSA9PSBDTURfVVRJTElUWSkKKwkJCQkJY29udGludWU7CS8qIElnbm9yZSB1dGlsaXR5IHN0YXRl bWVudHMgKi8KKwkJCQlmb3JlYWNoKGxjMywgcGxhbm5lZHN0bXQtPmludmFsSXRlbXMpCisJCQkJ eworCQkJCQlQbGFuSW52YWxJdGVtICppdGVtID0gKFBsYW5JbnZhbEl0ZW0gKikgbGZpcnN0KGxj Myk7CisKKwkJCQkJaWYgKGl0ZW0tPmNhY2hlSWQgIT0gY2FjaGVpZCkKKwkJCQkJCWNvbnRpbnVl OworCQkJCQlpZiAoaGFzaHZhbHVlID09IDAgfHwKKwkJCQkJCWl0ZW0tPmhhc2hWYWx1ZSA9PSBo YXNodmFsdWUpCisJCQkJCXsKKwkJCQkJCWNwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCQkJCQkJ YnJlYWs7CS8qIG91dCBvZiBpbnZhbEl0ZW1zIHNjYW4gKi8KKwkJCQkJfQorCQkJCX0KKwkJCQlp ZiAoIWNwbGFuLT5pc192YWxpZCkKKwkJCQkJYnJlYWs7CQkvKiBvdXQgb2Ygc3RtdF9saXN0IHNj YW4gKi8KKwkJCX0KKwkJfQorCX0KIH0KIAogLyoKQEAgLTIyMzUsNiArMjQzMCwxNyBAQCBSZXNl dFBsYW5DYWNoZSh2b2lkKQogCiAJCWNleHByLT5pc192YWxpZCA9IGZhbHNlOwogCX0KKworCS8q IEZpbmFsbHksIGludmFsaWRhdGUgYW55IHN0YW5kYWxvbmUgY2FjaGVkIHBsYW5zICovCisJZGxp c3RfZm9yZWFjaChpdGVyLCAmc3RhbmRhbG9uZV9wbGFuX2xpc3QpCisJeworCQlDYWNoZWRQbGFu ICpjcGxhbiA9IGRsaXN0X2NvbnRhaW5lcihDYWNoZWRQbGFuLAorCQkJCQkJCQkJCQlub2RlLCBp dGVyLmN1cik7CisKKwkJQXNzZXJ0KGNwbGFuLT5tYWdpYyA9PSBDQUNIRURQTEFOX01BR0lDKTsK KworCQljcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9wb3J0YWxtZW0uYwppbmRleCA0YTI0NjEzNTM3Li5iZjcwZmQ0Y2U3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvcG9ydGFsbWVtLmMKQEAgLTI4NCw3ICsyODQsOCBAQCBQb3J0YWxEZWZpbmVRdWVyeShQ b3J0YWwgcG9ydGFsLAogCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkgIENvbW1h bmRUYWcgY29tbWFuZFRhZywKIAkJCQkgIExpc3QgKnN0bXRzLAotCQkJCSAgQ2FjaGVkUGxhbiAq Y3BsYW4pCisJCQkJICBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkgIENhY2hlZFBsYW5Tb3VyY2Ug KnBsYW5zb3VyY2UpCiB7CiAJQXNzZXJ0KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CiAJQXNzZXJ0 KHBvcnRhbC0+c3RhdHVzID09IFBPUlRBTF9ORVcpOwpAQCAtMjk5LDYgKzMwMCw3IEBAIFBvcnRh bERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJcG9ydGFsLT5jb21tYW5kVGFnID0gY29tbWFu ZFRhZzsKIAlwb3J0YWwtPnN0bXRzID0gc3RtdHM7CiAJcG9ydGFsLT5jcGxhbiA9IGNwbGFuOwor CXBvcnRhbC0+cGxhbnNvdXJjZSA9IHBsYW5zb3VyY2U7CiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JU QUxfREVGSU5FRDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFp bi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCmluZGV4IGJmMzI2ZWViNzAuLjY1 MmUxYWZiZjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBleHRl cm4gdm9pZCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAq aW50bywKIAkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudik7CiAKIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkgICBDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLCBpbnQgcGxhbl9pbmRleCwKIAkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4 cGxhaW5TdGF0ZSAqZXMsCiAJCQkJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJ CSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3RyaWdnZXIuaAppbmRleCA4YTVhOWZlNjQyLi5kYjIxNTYxYzhjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdHJpZ2dlci5oCkBAIC0yNTgsNiArMjU4LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0FTVHJ1bmNh dGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2lu WGFjdCh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luUXVlcnkodm9pZCk7CiBl eHRlcm4gdm9pZCBBZnRlclRyaWdnZXJFbmRRdWVyeShFU3RhdGUgKmVzdGF0ZSk7CitleHRlcm4g dm9pZCBBZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmln Z2VyRmlyZURlZmVycmVkKHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRW5kWGFjdChi b29sIGlzQ29tbWl0KTsKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luU3ViWGFjdCh2b2lk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4IDBlNzI0NTQzNWQuLmY2Y2I2NDc5YzAgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMzYsNiArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBR dWVyeURlc2MKIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRF LCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0 IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2Fj aGVkUGxhbiB0aGF0IHN1cHBsaWVzIHRoZSBwbGFubmVkc3RtdCAqLworCWJvb2wJCWNwbGFuX3Jl bGVhc2U7CS8qIFNob3VsZCBGcmVlUXVlcnlEZXNjKCkgcmVsZWFzZSBjcGxhbj8gKi8KIAljb25z dCBjaGFyICpzb3VyY2VUZXh0OwkJLyogc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25h cHNob3QJc25hcHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNo b3QJY3Jvc3NjaGVja19zbmFwc2hvdDsJLyogY3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0 ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNjljM2ViZmYwMC4uMDg0ZDhkNWQ5MSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibm9k ZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKIAogCiAv KgpAQCAtMTk4LDYgKzE5OSw4IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90 ICpzbG90LCBBdHRyTnVtYmVyIGF0dG5vLCBib29sICppc051bGwpCiAgKiBwcm90b3R5cGVzIGZy b20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFy dChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitleHRlcm4gdm9pZCBFeGVjdXRv clN0YXJ0RXh0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzLAorCQkJCQkJCSBDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgpOwogZXh0ZXJuIHZvaWQg c3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7 CiBleHRlcm4gdm9pZCBFeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCVNj YW5EaXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsK QEAgLTI2MSw2ICsyNjQsMjAgQEAgZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxhblN0YXRlICpu b2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4 dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0 ZSAqY2hpbGRfbm9kZSk7CiAKKy8qCisgKiBJcyB0aGUgQ2FjaGVkUGxhbiBpbiBlc19jYWNoZWRw bGFuIHN0aWxsIHZhbGlkPworICoKKyAqIENhbGxlZCBhdCB2YXJpb3VzIHBvaW50cyBkdXJpbmcg RXhlY3V0b3JTdGFydCgpIGJlY2F1c2UgaW52YWxpZGF0aW9uCisgKiBtZXNzYWdlcyB0aGF0IGFm ZmVjdCB0aGUgcGxhbiBtaWdodCBiZSByZWNlaXZlZCBhZnRlciBsb2NrcyBoYXZlIGJlZW4KKyAq IHRha2VuIG9uIHJ1bnRpbWUtcHJ1bmFibGUgcmVsYXRpb25zLiBUaGUgY2FsbGVyIHNob3VsZCB0 YWtlIGFwcHJvcHJpYXRlCisgKiBhY3Rpb24gaWYgdGhlIHBsYW4gaGFzIGJlY29tZSBpbnZhbGlk LgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3RpbGxWYWxpZChFU3RhdGUgKmVz dGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwgPyB0cnVlIDoK KwkJQ2FjaGVkUGxhblZhbGlkKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbik7Cit9CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCQlFeGVjUHJvY05vZGUKQEAgLTU4OSw2ICs2MDYsNyBAQCBleHRlcm4gdm9pZCBFeGVj Q3JlYXRlU2NhblNsb3RGcm9tT3V0ZXJQbGFuKEVTdGF0ZSAqZXN0YXRlLAogZXh0ZXJuIGJvb2wg RXhlY1JlbGF0aW9uSXNUYXJnZXRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggc2NhbnJl bGlkKTsKIAogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNPcGVuU2NhblJlbGF0aW9uKEVTdGF0ZSAqZXN0 YXRlLCBJbmRleCBzY2FucmVsaWQsIGludCBlZmxhZ3MpOworZXh0ZXJuIFJlbGF0aW9uIEV4ZWNP cGVuU2NhbkluZGV4UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIE9pZCBpbmRleGlkLCBpbnQgbG9j a21vZGUpOwogCiBleHRlcm4gdm9pZCBFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUs IExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBlcm1JbmZvcyk7CiBleHRlcm4gdm9pZCBFeGVjQ2xv c2VSYW5nZVRhYmxlUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK aW5kZXggZWUwODk1MDVhMC4uMmE4ZTViZDc4NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTY4 MCw2ICs2ODAsNyBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlpbnQJCQllc190b3BfZWZsYWdz OwkvKiBlZmxhZ3MgcGFzc2VkIHRvIEV4ZWN1dG9yU3RhcnQgKi8KIAlpbnQJCQllc19pbnN0cnVt ZW50OwkvKiBPUiBvZiBJbnN0cnVtZW50T3B0aW9uIGZsYWdzICovCiAJYm9vbAkJZXNfZmluaXNo ZWQ7CS8qIHRydWUgd2hlbiBFeGVjdXRvckZpbmlzaCBpcyBkb25lICovCisJYm9vbAkJZXNfYWJv cnRlZDsJCS8qIHRydWUgd2hlbiBleGVjdXRpb24gd2FzIGFib3J0ZWQgKi8KIAogCUxpc3QJICAg KmVzX2V4cHJjb250ZXh0czsJLyogTGlzdCBvZiBFeHByQ29udGV4dHMgd2l0aGluIEVTdGF0ZSAq LwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IDBiNWVlMDA3Y2EuLjE1NGY2OGY2NzEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL3BsYW5jYWNoZS5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3R1cGRl c2MuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJhbXMuaCIK KyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidGNvcC9jbWR0YWcuaCIK ICNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAidXRpbHMvcmVz b3duZXIuaCIKQEAgLTE1Miw2ICsxNTMsOCBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiAJ Ym9vbAkJaXNfZ2VuZXJpYzsJCS8qIGlzIGl0IGEgcmV1c2FibGUgZ2VuZXJpYyBwbGFuPyAqLwog CWJvb2wJCWlzX3NhdmVkOwkJLyogaXMgQ2FjaGVkUGxhbiBpbiBhIGxvbmctbGl2ZWQgY29udGV4 dD8gKi8KIAlib29sCQlpc192YWxpZDsJCS8qIGlzIHRoZSBzdG10X2xpc3QgY3VycmVudGx5IHZh bGlkPyAqLworCWJvb2wJCWlzX3N0YW5kYWxvbmU7CS8qIGlzIGl0IG5vdCBhc3NvY2lhdGVkIHdp dGggYQorCQkJCQkJCQkgKiBDYWNoZWRQbGFuU291cmNlPyAqLwogCU9pZAkJCXBsYW5Sb2xlSWQ7 CQkvKiBSb2xlIElEIHRoZSBwbGFuIHdhcyBjcmVhdGVkIGZvciAqLwogCWJvb2wJCWRlcGVuZHNP blJvbGU7CS8qIGlzIHBsYW4gc3BlY2lmaWMgdG8gdGhhdCByb2xlPyAqLwogCVRyYW5zYWN0aW9u SWQgc2F2ZWRfeG1pbjsJLyogaWYgdmFsaWQsIHJlcGxhbiB3aGVuIFRyYW5zYWN0aW9uWG1pbgpA QCAtMTU5LDYgKzE2MiwxMiBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiAJaW50CQkJZ2Vu ZXJhdGlvbjsJCS8qIHBhcmVudCdzIGdlbmVyYXRpb24gbnVtYmVyIGZvciB0aGlzIHBsYW4gKi8K IAlpbnQJCQlyZWZjb3VudDsJCS8qIGNvdW50IG9mIGxpdmUgcmVmZXJlbmNlcyB0byB0aGlzIHN0 cnVjdCAqLwogCU1lbW9yeUNvbnRleHQgY29udGV4dDsJCS8qIGNvbnRleHQgY29udGFpbmluZyB0 aGlzIENhY2hlZFBsYW4gKi8KKworCS8qCisJICogSWYgdGhlIHBsYW4gaXMgbm90IGFzc29jaWF0 ZWQgd2l0aCBhIENhY2hlZFBsYW5Tb3VyY2UsIGl0IGlzIHNhdmVkIGluCisJICogYSBzZXBhcmF0 ZSBnbG9iYWwgbGlzdC4KKwkgKi8KKwlkbGlzdF9ub2RlCW5vZGU7CQkJLyogbGlzdCBsaW5rLCBp ZiBpc19zdGFuZGFsb25lICovCiB9IENhY2hlZFBsYW47CiAKIC8qCkBAIC0yMjQsNiArMjMzLDEw IEBAIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkg UmVzb3VyY2VPd25lciBvd25lciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52 KTsKK2V4dGVybiBDYWNoZWRQbGFuICpHZXRTaW5nbGVDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsCisJCQkJCQkJCQkgICBpbnQgcXVlcnlfaW5kZXgsCisJCQkJCQkJCQkg ICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisKIGV4dGVybiB2b2lkIFJlbGVhc2VDYWNo ZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBleHRlcm4g Ym9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLApAQCAtMjQ1LDQgKzI1OCwxNyBAQCBDYWNoZWRQbGFuUmVxdWlyZXNMb2Nr aW5nKENhY2hlZFBsYW4gKmNwbGFuKQogCXJldHVybiBjcGxhbi0+aXNfZ2VuZXJpYzsKIH0KIAor LyoKKyAqIENhY2hlZFBsYW5WYWxpZAorICogICAgICBSZXR1cm5zIHdoZXRoZXIgYSBjYWNoZWQg Z2VuZXJpYyBwbGFuIGlzIHN0aWxsIHZhbGlkLgorICoKKyAqIEludm9rZWQgYnkgdGhlIGV4ZWN1 dG9yIHRvIGNoZWNrIGlmIHRoZSBwbGFuIGhhcyBub3QgYmVlbiBpbnZhbGlkYXRlZCBhZnRlcgor ICogdGFraW5nIGxvY2tzIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsYW4uCisg Ki8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblZhbGlkKENhY2hlZFBsYW4gKmNwbGFu KQoreworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7Cit9CisKICNlbmRpZgkJCQkJCQkvKiBQTEFO Q0FDSEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMv aW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCAyOWY0OTgyOWYyLi41OGMzODI4ZDJjIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9wb3J0YWwuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRhbERhdGEK IAlRdWVyeUNvbXBsZXRpb24gcWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRhdGEgZm9yIGV4 ZWN1dGVkIHF1ZXJ5ICovCiAJTGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQbGFubmVkU3Rt dHMgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUg ZnJvbSBvbmUgKi8KKwlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlOwkvKiBDYWNoZWRQbGFu U291cmNlLCBmb3IgY3BsYW4gKi8KIAogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBw YXJhbXMgdG8gcGFzcyB0byBxdWVyeSAqLwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAv KiBlbnZpcm9ubWVudCBmb3IgcXVlcnkgKi8KQEAgLTI0MSw3ICsyNDIsOCBAQCBleHRlcm4gdm9p ZCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCQkJCQkJCSAgY29uc3QgY2hhciAq c291cmNlVGV4dCwKIAkJCQkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywKIAkJCQkJCQkgIExp c3QgKnN0bXRzLAotCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4pOworCQkJCQkJCSAgQ2FjaGVk UGxhbiAqY3BsYW4sCisJCQkJCQkJICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIGV4 dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBl eHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4g dm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvZGVs YXlfZXhlY3V0aW9uL01ha2VmaWxlCmluZGV4IDcwZjI0ZTg0NmQuLjNlZWIwOTdmZGUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCkBAIC04LDcgKzgsOCBAQCBP QkpTID0gXAogCWRlbGF5X2V4ZWN1dGlvbi5vCiAKIElTT0xBVElPTiA9IHBhcnRpdGlvbi1hZGRp dGlvbiBcCi0JICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEKKwkgICAgcGFydGl0aW9uLXJlbW92YWwt MSBcCisJCWNhY2hlZC1wbGFuLWludmFsCiAKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05GSUcgPSBw Z19jb25maWcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2Rl bGF5X2V4ZWN1dGlvbi5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlf ZXhlY3V0aW9uLmMKaW5kZXggMTU1YzhhOGQ1NS4uMzA0Y2E3N2Y3YiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKQEAgLTEsMTQg KzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIGRlbGF5X2V4ZWN1dGlvbi5jCi0g KgkJVGVzdCBtb2R1bGUgdG8gYWxsb3cgZGVsYXkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRp b24gb2YgYSBxdWVyeS4KKyAqCQlUZXN0IG1vZHVsZSB0byBpbnRyb2R1Y2UgZGVsYXkgYXQgdmFy aW91cyBwb2ludHMgZHVyaW5nIGV4ZWN1dGlvbiBvZiBhCisgKgkJcXVlcnkgdG8gdGVzdCB0aGF0 IGV4ZWN1dGlvbiBwcm9jZWVkcyBzYWZlbHkgaW4gbGlnaHQgb2YgY29uY3VycmVudAorICoJCWNo YW5nZXMuCiAgKgogICogVGhlIGRlbGF5IGlzIGltcGxlbWVudGVkIGJ5IHRha2luZyBhbmQgaW1t ZWRpYXRlbHkgcmVsZWFzaW5nIGEgc3BlY2lmaWVkCiAgKiBhZHZpc29yeSBsb2NrLiAgSWYgYW5v dGhlciBwcm9jZXNzIGhhcyBwcmV2aW91c2x5IHRha2VuIHRoYXQgbG9jaywgdGhlCiAgKiBjdXJy ZW50IHByb2Nlc3Mgd2lsbCBiZSBibG9ja2VkIHVudGlsIHRoZSBsb2NrIGlzIHJlbGVhc2VkOyBv dGhlcndpc2UsCiAgKiB0aGVyZSdzIG5vIGVmZmVjdC4gIFRoaXMgYWxsb3dzIGFuIGlzb2xhdGlv bnRlc3RlciBzY3JpcHQgdG8gcmVsaWFibHkKLSAqIHRlc3QgYmVoYXZpb3JzIHdoZXJlIHNvbWUg c3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIgYmFja2VuZAotICogYmV0d2VlbiBw YXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkuCisgKiB0ZXN0IGJlaGF2 aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tl bmQgaW4KKyAqIGEgY291cGxlIG9mIGNhc2VzOiAxKSBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4ZWN1 dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeQorICogd2hlbiB1c2luZyB0aGUgcGxhbm5lcl9ob29r LCAyKSBiZXR3ZWVuIFJldmFsaWRhdGVDYWNoZWRRdWVyeSgpIGFuZAorICogRXhlY3V0b3JTdGFy dCgpIHdoZW4gdXNpbmcgdGhlIEV4ZWN1dG9yU3RhcnRfaG9vay4KICAqCiAgKiBDb3B5cmlnaHQg KGMpIDIwMjAtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqCkBA IC0yMiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorI2luY2x1ZGUgImV4ZWN1 dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMzIsOSArMzcs MTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5IGxvY2sgSUQgdG8gdXNl LiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBpbnQJcG9zdF9wbGFubmlu Z19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDA7CiAK LS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUgYSBnb29kIGNpdGl6ZW4g Ki8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0aXplbiAqLwog c3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVMTDsKK3N0YXRp YyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayA9IE5VTEw7 CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVs YXkgKi8KQEAgLTcwLDExICs3Nyw0MSBAQCBkZWxheV9leGVjdXRpb25fcGxhbm5lcihRdWVyeSAq cGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4gcmVzdWx0OwogfQogCisv KiBFeGVjdXRvclN0YXJ0X2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVzaXJlZCBkZWxh eSAqLworc3RhdGljIHZvaWQKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQoreworCS8qIElmIGVuYWJsZWQsIGRlbGF5IGJ5IHRh a2luZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZpZWQgbG9jayAqLworCWlmIChleGVjdXRvcl9z dGFydF9sb2NrX2lkICE9IDApCisJeworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5 X2xvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X3VubG9ja19pbnQ4 LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7 CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ugbm90aWNlIGFueSBwZW5kaW5nIGludmFsaWRh dGlvbnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkgKiBsb2NrIGZ1bmN0aW9ucyBkb24ndCBkbyB0 aGlzLgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwl9CisKKwkvKiBO b3cgc3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJseSB2aWEgYSBwcmV2aW91cyBob29rIHVzZXIg Ki8KKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hvb2spCisJCXByZXZfRXhlY3V0b3JTdGFydF9o b29rKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQo cXVlcnlEZXNjLCBlZmxhZ3MpOworCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgIT0gMCkK KwkJZWxvZyhOT1RJQ0UsICJGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg JXMiLAorCQkJIENhY2hlZFBsYW5WYWxpZChxdWVyeURlc2MtPmNwbGFuKSA/ICJ2YWxpZCIgOiAi bm90IHZhbGlkIik7Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0aW9uICovCiB2b2lkCiBfUEdf aW5pdCh2b2lkKQogewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBp cyB1c2VkICovCisJLyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQg Ki8KIAlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLnBvc3RfcGxhbm5p bmdfbG9ja19pZCIsCiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9j a2VkL3VubG9ja2VkIGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhl IGRlbGF5LiIsCkBAIC04NiwxMCArMTIzLDIyIEBAIF9QR19pbml0KHZvaWQpCiAJCQkJCQkJTlVM TCwKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5VTEwpOwotCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFi bGUoImRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkIiwKKwkJCQkJCQkiU2V0 cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYmVmb3JlIHN0YXJ0 aW5nIGV4ZWN1dGlvbi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxheS4iLAorCQkJ CQkJCSZleGVjdXRvcl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAsCisJCQkJCQkJMCwgSU5UX01B WCwKKwkJCQkJCQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJ TlVMTCwKKwkJCQkJCQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoImRlbGF5X2V4ZWN1 dGlvbiIpOwogCi0JLyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8qIEluc3RhbGwgb3VyIGhvb2tz LiAqLwogCXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwogCXBsYW5uZXJfaG9vayA9 IGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0b3JTdGFydF9ob29rID0gRXhl Y3V0b3JTdGFydF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9F eGVjdXRvclN0YXJ0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVj dXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU4ZWZiNmQ5ZDkKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1p bnZhbC5vdXQKQEAgLTAsMCArMSwxNzUgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Np b25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAgczJsb2NrIHMxZXhlYyBzMmRyb3Bp IHMydW5sb2NrCitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVy aWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAk MSBGT1IgVVBEQVRFOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsKK1FV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMb2NrUm93cyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzEy XzEgZm9vXzEgICAKKyAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9ICQxKSAgICAgICAg ICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hCisg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJDEpICAgICAgICAKKyg3IHJvd3Mp CisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZp c29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisK K3N0ZXAgczFleGVjOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVj dXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RT IE9GRikgRVhFQ1VURSBxICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElO REVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2so MTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAg ICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogPC4uLiBjb21wbGV0ZWQ+CitzMTog Tk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxp ZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2 YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTG9ja1Jvd3MgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBT dWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9v MTJfMSBmb29fMQorICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAgICAgIAorKDUgcm93 cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMiBzMmxvY2sgczFleGVjMiBzMmRy b3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDI6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9n ZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUg YSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUg cTI7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlz IHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0Fw cGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBs YW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAKKyAgICAgICAgUmVjaGVjayBD b25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgICAgICAgIC0+ICBCaXRtYXBPciAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IHR3bygp KSAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAg ICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAor KDExIHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7 CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCiso MSByb3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQg ZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBM QUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTog RFJPUCBJTkRFWCBmb28xMl8xX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlf dW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0 ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiA8Li4uIGNvbXBsZXRl ZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg bm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQ bGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6 IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29f MSAgICAgICAgICAgICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28o KSkpCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgIAorICAgICAg ICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKyg2IHJvd3MpCisKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDMgczJsb2NrIHMxZXhlYzMgczJkcm9waSBzMnVubG9j aworc3RlcCBzMXByZXAzOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFu OworCQkgIFBSRVBBUkUgcTMgQVMgVVBEQVRFIGZvb3YgU0VUIGEgPSBhIFdIRVJFIGEgPSBvbmUo KSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOworczE6 IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAor czE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxp ZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAg ICAgICAgCisgICAgICAgIFJlY2hlY2sgQ29uZDogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkp KSAgICAgIAorICAgICAgICAtPiAgQml0bWFwT3IgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFf YSAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJf MV9hICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSB0d28oKSkg ICAgICAgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygp KSkgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCitVcGRhdGUgb24gZm9vICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgIFVwZGF0ZSBvbiBmb28zIGZvbyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZv bzEyXzEgZm9vXzEgICAgICAgICAgIAorICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoYSA9 IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6IChhID0gdHdvKCkpICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9v MTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEg PSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAgCisoMjcgcm93cykKKworc3RlcCBzMmxvY2s6 IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMzOiBM T0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jf c3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx MzsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0 ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNv cnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93 KQorCitzdGVwIHMxZXhlYzM6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVk IEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBG aW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK3MxOiBOT1RJQ0U6 ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTog Tk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92 ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgU2VxIFNjYW4gb24gZm9v MTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUo KSkgT1IgKGEgPSB0d28oKSkpICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18y ICAgICAgICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9 IHR3bygpKSkgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCitVcGRhdGUgb24gZm9vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICBVcGRhdGUgb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgVXBkYXRlIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFVw ZGF0ZSBvbiBmb28zIGZvbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBw ZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3VicGxh bnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgo YSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEy XzIgZm9vXzIgICAgICAgICAgICAgCisgICAgICAgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkp IE9SIChhID0gdHdvKCkpKQorKDE3IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9l eGVjdXRpb24vbWVzb24uYnVpbGQKaW5kZXggNDFmM2FjMGI4OS4uNWE3MGIxODNkMCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVzb24uYnVpbGQKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVzb24uYnVpbGQKQEAgLTI0LDYgKzI0 LDcgQEAgdGVzdHMgKz0gewogICAgICdzcGVjcyc6IFsKICAgICAgICdwYXJ0aXRpb24tYWRkaXRp b24nLAogICAgICAgJ3BhcnRpdGlvbi1yZW1vdmFsLTEnLAorICAgICAgJ2NhY2hlZC1wbGFuLWlu dmFsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYyBiL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLWludmFsLnNwZWMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWIxZjcyYjRhOAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLWlu dmFsLnNwZWMKQEAgLTAsMCArMSw2NSBAQAorIyBUZXN0IHRvIGNoZWNrIHRoYXQgaW52YWxpZGF0 aW9uIG9mIGNhY2hlZCBnZW5lcmljIHBsYW5zIGR1cmluZyBFeGVjdXRvclN0YXJ0CisjIGNvcnJl Y3RseSB0cmlnZ2VycyByZXBsYW5uaW5nIGFuZCByZS1leGVjdXRpb24uCisKK3NldHVwCit7Cisg IENSRUFURSBUQUJMRSBmb28gKGEgaW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOwor ICBDUkVBVEUgVEFCTEUgZm9vMTIgUEFSVElUSU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgxLCAy KSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CisgIENSRUFURSBUQUJMRSBmb28xMl8xIFBBUlRJVElP TiBPRiBmb28xMiBGT1IgVkFMVUVTIElOICgxKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzEyXzIgUEFS VElUSU9OIE9GIGZvbzEyIEZPUiBWQUxVRVMgSU4gKDIpOworICBDUkVBVEUgSU5ERVggZm9vMTJf MV9hIE9OIGZvbzEyXzEgKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMyBQQVJUSVRJT04gT0YgZm9v IEZPUiBWQUxVRVMgSU4gKDMpOworICBDUkVBVEUgVklFVyBmb292IEFTIFNFTEVDVCAqIEZST00g Zm9vOworICBDUkVBVEUgRlVOQ1RJT04gb25lICgpIFJFVFVSTlMgaW50IEFTICQkIEJFR0lOIFJF VFVSTiAxOyBFTkQ7ICQkIExBTkdVQUdFIFBMUEdTUUwgU1RBQkxFOworICBDUkVBVEUgRlVOQ1RJ T04gdHdvICgpIFJFVFVSTlMgaW50IEFTICQkIEJFR0lOIFJFVFVSTiAyOyBFTkQ7ICQkIExBTkdV QUdFIFBMUEdTUUwgU1RBQkxFOworICBDUkVBVEUgUlVMRSB1cGRhdGVfZm9vIEFTIE9OIFVQREFU RSBUTyBmb28gRE8gQUxTTyBTRUxFQ1QgMTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBWSUVX IGZvb3Y7CisgIERST1AgUlVMRSB1cGRhdGVfZm9vIE9OIGZvbzsKKyAgRFJPUCBUQUJMRSBmb287 CisgIERST1AgRlVOQ1RJT04gb25lKCksIHR3bygpOworfQorCitzZXNzaW9uICJzMSIKKyMgQXBw ZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZworc3RlcCAiczFwcmVwIiAgIHsgU0VUIHBsYW5fY2Fj aGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICog RlJPTSBmb292IFdIRVJFIGEgPSAkMSBGT1IgVVBEQVRFOworCQkgIEVYUExBSU4gKENPU1RTIE9G RikgRVhFQ1VURSBxICgxKTsgfQorCisjIEFub3RoZXIgY2FzZSB3aXRoIEFwcGVuZCB3aXRoIHJ1 bi10aW1lIHBydW5pbmcKK3N0ZXAgInMxcHJlcDIiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0g Zm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNUICogRlJPTSBmb292 IFdIRVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBF WEVDVVRFIHEyOyB9CisKKyMgQ2FzZSB3aXRoIGEgcnVsZSBhZGRpbmcgYW5vdGhlciBxdWVyeQor c3RlcCAiczFwcmVwMyIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3Bs YW47CisJCSAgUFJFUEFSRSBxMyBBUyBVUERBVEUgZm9vdiBTRVQgYSA9IGEgV0hFUkUgYSA9IG9u ZSgpIG9yIGEgPSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0K KworIyBFeGVjdXRlcyBhIGdlbmVyaWMgcGxhbgorc3RlcCAiczFleGVjIgl7IExPQUQgJ2RlbGF5 X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2Nr X2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9Citz dGVwICJzMWV4ZWMyIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4 ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09T VFMgT0ZGKSBFWEVDVVRFIHEyOyB9CitzdGVwICJzMWV4ZWMzIgl7IExPQUQgJ2RlbGF5X2V4ZWN1 dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0g MTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyB9CisKK3Nlc3Npb24g InMyIgorc3RlcCAiczJsb2NrIgl7IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsgfQor c3RlcCAiczJ1bmxvY2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7IH0KK3N0 ZXAgInMyZHJvcGkiCXsgRFJPUCBJTkRFWCBmb28xMl8xX2E7IH0KKworIyBXaGlsZSAiczFleGVj IiwgZXRjLiB3YWl0IHRvIGFjcXVpcmUgdGhlIGFkdmlzb3J5IGxvY2ssICJzMmRyb3AiIGlzIGFi bGUgdG8KKyMgZHJvcCB0aGUgaW5kZXggYmVpbmcgdXNlZCBpbiB0aGUgY2FjaGVkIHBsYW4uICBX aGVuICJzMWV4ZWMiIGlzIHRoZW4KKyMgdW5ibG9ja2VkIGFuZCBpbml0aWFsaXplcyB0aGUgY2Fj aGVkIHBsYW4gZm9yIGV4ZWN1dGlvbiwgaXQgZGV0ZWN0cyB0aGUKKyMgY29uY3VycmVudCBpbmRl eCBkcm9wIGFuZCBjYXVzZXMgdGhlIGNhY2hlZCBwbGFuIHRvIGJlIGRpc2NhcmRlZCBhbmQKKyMg cmVjcmVhdGVkIHdpdGhvdXQgdGhlIGluZGV4LgorcGVybXV0YXRpb24gInMxcHJlcCIgInMybG9j ayIgInMxZXhlYyIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXByZXAyIiAi czJsb2NrIiAiczFleGVjMiIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXBy ZXAzIiAiczJsb2NrIiAiczFleGVjMyIgInMyZHJvcGkiICJzMnVubG9jayIKLS0gCjIuNDMuMAoK --00000000000083cd8106215c4cbe--