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 1tVXBf-009K6Q-3d for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jan 2025 14:37:35 +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 1tVXBe-001rZx-Ht for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jan 2025 14:37:34 +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 1tVXBd-001rZV-Qv for pgsql-hackers@lists.postgresql.org; Wed, 08 Jan 2025 14:37:33 +0000 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tVXBa-000X1w-27 for pgsql-hackers@postgresql.org; Wed, 08 Jan 2025 14:37:32 +0000 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-43623f0c574so116501985e9.2 for ; Wed, 08 Jan 2025 06:37:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736347049; x=1736951849; 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=3kvzULH/3u26g0cJBKKHY+oY+1i925kxY8qq92XpSgI=; b=gNuxhjPpc6De+AFIjmBL+asdrNjC9+3lfaaKBlhcZ1yJrAT/2+JFeiC1ETlI8ij+f8 jFCQ1OUechfVb2S+G6iXFu9uHBp+nRsNTp9exUbEozePq26NIgD4FgYCWOLoDkoMYED8 pf5gpZOzCKL5U9gr/Y0x72y+LQD9SJhYFFCxW3OoPTnucxGAYAH6n89Z7MKw2whp6PiV rBY1XRhhA27QuqwjRlsmVavXN6Y0BNQV1pUY05fvD602o4i63mFkFqF9+9EvGC9IIv0+ LsgazOCogkS2ixS/5l0hZOWLI6Mvnn0b6ZnYjaKQ0+HzH+QoBTih8mUqEHQ4n/BcKvKK Wu9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736347049; x=1736951849; 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=3kvzULH/3u26g0cJBKKHY+oY+1i925kxY8qq92XpSgI=; b=uRZnOQlFKMUUv5v68n9AHZFDBZ3dlx4XxDE0CVPEV+hlzPC4oII5bl8VJKwrC8syHS 2nrMt4m68kuTYMFQZSX4BWhfh7qnL6mWWoaLQLkphtUvkUeo6Z9k9nU4AuZLIW2euV17 t87WjT5nQiP/X3cxQiAkrlcxYWaev7e40bm4pc944dx2FqMP6bXsofX0RQyfQ+GiSUcW IrLaiUEIUKkjOSRHWWc8TOHG1x+4+pAAh6JfaDNq2TlaLeW6wsn8uBBQehJIJZ+5G6Sa MlSRRuVCXVSMtFTFR+9TNuIOPRcTuJbU0DqGxyOKUhUb1YXTtqytx8ziNmuKc9ADXmoL GWmw== X-Forwarded-Encrypted: i=1; AJvYcCWuKJoHGHGMa1zdNly+LWlJ9xvdjHUoHeh+8W1/bBaLgF+fY7Tk91zGKqO2qQPpHk/72hYU9JXH+MrtafUf@postgresql.org X-Gm-Message-State: AOJu0Ywex+mq5ZU/eYHZrj6eqxMILQdjZngCqy96nUd3ueyTAzg+xBbj Y/N9kcCgwUo1yhv0VkQrmXH9nM63aEFXG6TQ5OBsOS79hrztFvbh3vYppRECQ5oaQ/p8VbvGNhN BIoNAiV+vX7ZgX3B/Zf9jWf3OewM8ig== X-Gm-Gg: ASbGncvXOVC1oVHFv8KsGn5KN1BBBy/d/dG8FYfT1Aqq26CuOapQBmgHCyE8b0hBfIC PP/Ps+7cKFPS518I7LKM84nrHIQOy5jGV8nXP+bE= X-Google-Smtp-Source: AGHT+IEw+qS6S/trldPD00bvu/AkXPnTBbcF5uPBcA/huTZbr0ATBbdOjiXjQnNlUOOcdWMJ3Icgq2mCvZ3Aw9KdQMs= X-Received: by 2002:a05:6000:1a88:b0:38a:5557:7685 with SMTP id ffacd0b85a97d-38a872f6ee0mr2552899f8f.5.1736347049147; Wed, 08 Jan 2025 06:37:29 -0800 (PST) MIME-Version: 1.0 References: <740696.1718036463@sss.pgh.pa.us> In-Reply-To: From: Mahendra Singh Thalor Date: Wed, 8 Jan 2025 20:07:17 +0530 X-Gm-Features: AbW1kvaD4LqukhZVfuP8vLKuuscLjgA8n85Jf4K0pNRKh5RSgi9mVKx7LHjqk0A Message-ID: Subject: Re: Non-text mode for pg_dumpall To: Nathan Bossart Cc: Magnus Hagander , Tom Lane , Andrew Dunstan , PostgreSQL-development , Dilip Kumar Content-Type: multipart/mixed; boundary="000000000000125a11062b32cd78" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000125a11062b32cd78 Content-Type: multipart/alternative; boundary="000000000000125a10062b32cd76" --000000000000125a10062b32cd76 Content-Type: text/plain; charset="UTF-8" Hi all, On Wed, 8 Jan 2025 at 00:34, Mahendra Singh Thalor wrote: > > On Mon, 6 Jan 2025 at 23:05, Nathan Bossart wrote: > > > > On Thu, Jan 02, 2025 at 02:05:13AM +0530, Mahendra Singh Thalor wrote: > > > Here, I am attaching an updated patch. I fixed some bugs of v01 patch and > > > did some code cleanup also. > > > > Thank you for picking this up! I started to review it, but the > > documentation changes didn't build, and a few tests in check-world are > > failing. Would you mind resolving those issues? Also, if you haven't > > already, please add an entry to the next commitfest [0] to ensure that 1) > > this feature is tracked and 2) the automated tests will run. > > Thanks Nathan for the quick response. > > I fixed bugs of documentation changes and check-world in the latest patch. Now docs are building and check-world is passing. > > I added entry into commitfest for this patch.[0] > > > > > + if (dbfile) > > + { > > + printfPQExpBuffer(&cmd, "\"%s\" %s %s", pg_dump_bin, > > + dbfile, create_opts); > > + appendPQExpBufferStr(&cmd, " -F d "); > > + } > > > > Have you given any thought to allowing a directory of custom format files, > > as discussed upthread [1]? Perhaps that is better handled as a follow-up > > patch, but it'd be good to understand the plan, anyway. > > I will make these changes and will test. I will update my findings after doing some testing. In the latest patch, I added dump and restoring for directory/custom/tar/plain formats. Please consider this patch for review and testing. *Design*: When we give --format=d|c|t then we are dumping all global sql commands in global.dat in plain sql format and we are making a map.dat file with dbname and dboid. For each database, we are making separate subdirectory with dboid under databases directory and dumping as per archive format(d|c|t). While restoring, first we are restoring all global sql commands from global.dat and then we are restoring one by one all databases. As we are supporting --exclude-database with pg_dumpall, the same we are supporting with pg_restore also to skip restoring on some specified database patterns. If we want to restore a single database, then we can specided particular subdirectory from the databases folder. To get file name, we refer dbname into map.file. *TODO*: Now I will work on test cases for these new added options to the pg_dumpall and pg_restore. Here, I am attaching the v04 patch for testing and review. > > Apart from these bugs, I added code to handle --exclude-database= PATTERN. Earlier I was using NAME only to skip databases for restore. > > TODO: .pl test cases for new added options. > > Here, I am attaching an updated patch for review and feedback. > > > > > [0] https://commitfest.postgresql.org > > [1] https://postgr.es/m/CABUevExoQ26jo%2BaQ9QZq%2BUMA1aD6gfpm9xBnh_t5e0DhaCeRYA%40mail.gmail.com > > > > -- > > nathan > > -- > Thanks and Regards > Mahendra Singh Thalor > EnterpriseDB: http://www.enterprisedb.com -- Thanks and Regards Mahendra Singh Thalor EnterpriseDB: http://www.enterprisedb.com --000000000000125a10062b32cd76 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi all,

On Wed, 8 Jan 2025 at 00:= 34, Mahendra Singh Thalor <mahi6ru= n@gmail.com> wrote:
>
> On Mon, 6 Jan 2025 at 23:05, Nat= han Bossart <nathandbossart@= gmail.com> wrote:
> >
> > On Thu, Jan 02, 2025 at = 02:05:13AM +0530, Mahendra Singh Thalor wrote:
> > > Here, I am= attaching an updated patch. I fixed some bugs of v01 patch and
> >= ; > did some code cleanup also.
> >
> > Thank you for = picking this up!=C2=A0 I started to review it, but the
> > documen= tation changes didn't build, and a few tests in check-world are
>= > failing.=C2=A0 Would you mind resolving those issues?=C2=A0 Also, if = you haven't
> > already, please add an entry to the next commi= tfest [0] to ensure that 1)
> > this feature is tracked and 2) the= automated tests will run.
>
> Thanks Nathan for the quick resp= onse.
>
> I fixed bugs of documentation changes and check-world= in the latest patch. Now docs are building and check-world is passing.
= >
> I added entry into commitfest for this patch.[0]
>
&g= t; >
> > + =C2=A0 =C2=A0 =C2=A0 if (dbfile)
> > + =C2= =A0 =C2=A0 =C2=A0 {
> > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 printfPQExpBuffer(&cmd, "\"%s\" %s %s", = pg_dump_bin,
> > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 dbfile, create_opts);
&= gt; > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 appendPQExpBuff= erStr(&cmd, " -F d ");
> > + =C2=A0 =C2=A0 =C2=A0 }<= br>> >
> > Have you given any thought to allowing a director= y of custom format files,
> > as discussed upthread [1]?=C2=A0 Per= haps that is better handled as a follow-up
> > patch, but it'd= be good to understand the plan, anyway.
>
> I will make these = changes and will test. I will update my findings after doing some testing.<= div>
In the latest patch, I added dump and restoring for dire= ctory/custom/tar/plain formats. Please consider this patch for review and t= esting.

Design:
When we give --fo= rmat=3Dd|c|t then we are dumping all global sql commands in global.dat in p= lain sql format and we are making a map.dat file with dbname and dboid. For= each database, we are making separate=C2=A0subdirectory with dboid under d= atabases directory and dumping as per archive format(d|c|t).
Whil= e restoring, first we are restoring all global sql commands=C2=A0from globa= l.dat and then we are restoring=C2=A0one by one all databases.=C2=A0 As we = are supporting --exclude-database with pg_dumpall, the same we are supporti= ng with pg_restore also to skip restoring=C2=A0on some specified=C2=A0datab= ase patterns.
If we want to restore a single database, then we ca= n specided particular subdirectory=C2=A0from the databases folder. To get f= ile name, we refer dbname=C2=A0into map.file.

T= ODO: Now I will work on test cases for these new added options to=C2=A0= the pg_dumpall and pg_restore.

Here, I am attachin= g the v04 patch for testing and review.

>
> Apart fr= om these bugs, I added code to handle --exclude-database=3D PATTERN. Earlie= r I was using NAME only to skip databases for restore.
>
> TODO= : .pl test cases for new added options.
>
> Here, I am attachin= g an updated patch for review and feedback.
>
> >
> &g= t; [0] https://commitfest.pos= tgresql.org
> > [1] https://post= gr.es/m/CABUevExoQ26jo%2BaQ9QZq%2BUMA1aD6gfpm9xBnh_t5e0DhaCeRYA%40mail.gmai= l.com
> >
> > --
> > nathan
>
> = --
> Thanks and Regards
> Mahendra Singh Thalor
> Enterp= riseDB: http://www.enterprisedb.com=



--
Thanks and Regards
Mahendra Singh Thalor
E= nterpriseDB: http://www.enterprised= b.com
--000000000000125a10062b32cd76-- --000000000000125a11062b32cd78 Content-Type: application/octet-stream; name="v04-pg_dumpall-with-directory-format-and-restore-08_jan.patch" Content-Disposition: attachment; filename="v04-pg_dumpall-with-directory-format-and-restore-08_jan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5o06onx0 RnJvbSBjYTI0Zjc3NWQxMjIyY2Y4NzdiNWYwODRjNDlhOTQwYzA0ZGE2Y2UyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYWhlbmRyYSBTaW5naCBUaGFsb3IgPG1haGk2cnVuQGdtYWls LmNvbT4KRGF0ZTogV2VkLCA4IEphbiAyMDI1IDE5OjUwOjU0ICswNTMwClN1YmplY3Q6IFtQQVRD SF0gcGdfZHVtcGFsbCB3aXRoIGRpcmVjdG9yeS90YXIvY3VzdG9tIGZvcm1hdCBhbmQgcmVzdG9y ZSBpdCBieQogcGdfcmVzdG9yZQoKbmV3IG9wdGlvbiB0byBwZ19kdW1wYWxsOgotRiwgLS1mb3Jt YXQ9ZHx0fGN8cCAgb3V0cHV0IGZpbGUgZm9ybWF0IChkaXJlY3RvcnksIHBsYWluIHRleHQgKGRl ZmF1bHQpKQoKRXg6MSAuL3BnX2R1bXBhbGwgLS1mb3JtYXQ9ZGlyZWN0b3J5IC0tZmlsZT1kdW1w RGlyTmFtZQpFeDoyIC4vcGdfZHVtcGFsbCAtLWZvcm1hdD10YXIgLS1maWxlPWR1bXBEaXJOYW1l CkV4OjMgLi9wZ19kdW1wYWxsIC0tZm9ybWF0PWN1c3RvbSAtLWZpbGU9ZHVtcERpck5hbWUKRXg6 NCAuL3BnX2R1bXBhbGwgLS1mb3JtYXQ9cGxhaW4gLS1maWxlPWR1bXBEaXJOYW1lCgpkdW1wcyBh cmUgYXM6Cmdsb2JhbC5kYXQgOjo6IGdsb2JhbCBzcWwgY29tbWFuZHMgaW4gc2ltcGxlIHBsYWlu IGZvcm1hdAptYXAuZGF0LiAgIDo6OiBkYm9pZCBkYm5hbWUgLS0tZW50cmllcyBmb3IgYWxsIGRh dGFiYXNlcyBpbiBzaW1wbGUgdGV4dCBmb3JtCmRhdGFiYXNlcy4gOjo6CiAgICAgIHN1YmRpciAg ICAgZGJvaWQxICAtPiB0b2MuZGF0IGFuZCBkYXRhIGZpbGVzIGluIGFyY2hpdmUgZm9ybWF0CiAg ICAgIHN1YmRpciAgICAgZGJvaWQyLiAtPiB0b2MuZGF0IGFuZCBkYXRhIGZpbGVzIGluIGFyY2hp dmUgZm9ybWF0CiAgICAgICAgICAgICAgZXRjCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpOT1RFOgppZiBu ZWVkZWQsIHJlc3RvcmUgc2luZ2xlIGRiIGJ5IHBhcnRpY3VsYXIgc3ViZGlyCgpFeDogLi9wZ19y ZXN0b3JlIC0tZm9ybWF0PWRpcmVjdG9yeSAtZCBwb3N0Z3JlcyBkdW1wRGlyTmFtZS9kYXRhYmFz ZXMvNQogICAtLSBoZXJlLCA1IGlzIHRoZSBkYm9pZCBvZiBwb3N0Z3JlcyBkYgogICAtLSB0byBn ZXQgZGJvaWQsIHJlZmVyIGRibmFtZSBpbiBtYXAuZmlsZQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KbmV3 IG9wdGlvbnMgdG8gcGdfcmVzdG9yZToKLWcsIC0tZ2xvYmFscy1vbmx5ICAgICAgICAgICByZXN0 b3JlIG9ubHkgZ2xvYmFsIG9iamVjdHMsIG5vIGRhdGFiYXNlcwotLWV4Y2x1ZGUtZGF0YWJhc2U9 UEFUVEVSTiAgIGV4Y2x1ZGUgZGF0YWJhc2Ugd2hvc2UgbmFtZSBtYXRjaGVzIHBhdHRlcm4KCldo ZW4gd2UgZ2l2ZSAtZy8tLWdsb2JhbHMtb25seSBvcHRpb24sIHRoZW4gb25seSByZXN0b3JlIGds b2JhbHMsIG5vIGRiIHJlc3RvcmluZy4KCkRlc2lnbjoKV2hlbiAtLWZvcm1hdD1kfHR8YyBpcyBz cGVjaWZpZWQgYW5kIHRoZXJlIGlzIG5vIHRvYy5kYXQgaW4gbWFpbiBkaXJlY3RvcnksIHRoZW4g Y2hlY2sKZm9yIGdsb2JhbC5kYXQgYW5kIG1hcC5kYXQgdG8gcmVzdG9yZSBhbGwgZGF0YWJhc2Vz LiBJZiBib3RoIGZpbGVzIGFyZSBleGlzdHMgaW4gZGlyZWN0b3J5LAp0aGVuIGZpcnN0IHJlc3Rv cmUgYWxsIGdsb2JhbHMgZnJvbSBnbG9iYWwuZGF0IGFuZCB0aGVuIHJlc3RvcmUgYWxsIGRhdGFi YXNlcyBvbmUgYnkgb25lCmZyb20gbWFwLmRhdCBsaXN0LgoKVE9ETzogV2UgY2FuIGR1bXAgYW5k IHJlc3RvcmUgZGF0YWJhc2VzIGluIHBhcmFsbGVsIG1vZGUuClRoaXMgbmVlZHMgbW9yZSBzdHVk eS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXBhbGwuc2dtbCB8ICAzNiArKysrKy0KIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgICAgIHwgMTAzICsrKysrKysrKy0tLS0tLQogc3Jj L2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYyAgICAgfCAyMTMgKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyMTQgaW5zZXJ0aW9ucygrKSwgMTM4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcGFsbC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wYWxsLnNnbWwKaW5kZXggNTFkZWFhZTBkMS4uNzdhOGQ2 YTBjNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wYWxsLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wYWxsLnNnbWwKQEAgLTE0MSw3ICsxNDEsMTIgQEAgUG9z dGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICAgICA8dGVybT48bGl0ZXJhbD5kaXJlY3Rvcnk8 L2xpdGVyYWw+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgIDxwYXJhPgot ICAgICAgICAgICBUaGUgYXJjaGl2ZSBpcyBhIGRpcmVjdG9yeSBhcmNoaXZlLgorICAgICAgICAg ICBPdXRwdXQgYSBkaXJlY3RvcnktZm9ybWF0IGFyY2hpdmUgc3VpdGFibGUgZm9yIGlucHV0IGlu dG8gcGdfcmVzdG9yZS4gVGhpcyB3aWxsIGNyZWF0ZSBhIGRpcmVjdG9yeQorICAgICAgICAgICB3 aXRoIG9uZSBmaWxlIGZvciBlYWNoIHRhYmxlIGFuZCBsYXJnZSBvYmplY3QgYmVpbmcgZHVtcGVk LCBwbHVzIGEgc28tY2FsbGVkIFRhYmxlIG9mIENvbnRlbnRzCisgICAgICAgICAgIGZpbGUgZGVz Y3JpYmluZyB0aGUgZHVtcGVkIG9iamVjdHMgaW4gYSBtYWNoaW5lLXJlYWRhYmxlIGZvcm1hdCB0 aGF0IHBnX3Jlc3RvcmUgY2FuIHJlYWQuIEEKKyAgICAgICAgICAgZGlyZWN0b3J5IGZvcm1hdCBh cmNoaXZlIGNhbiBiZSBtYW5pcHVsYXRlZCB3aXRoIHN0YW5kYXJkIFVuaXggdG9vbHM7IGZvciBl eGFtcGxlLCBmaWxlcyBpbiBhbgorICAgICAgICAgICB1bmNvbXByZXNzZWQgYXJjaGl2ZSBjYW4g YmUgY29tcHJlc3NlZCB3aXRoIHRoZSBnemlwLCBsejQsIG9yIHpzdGQgdG9vbHMuIFRoaXMgZm9y bWF0IGlzIGNvbXByZXNzZWQKKyAgICAgICAgICAgYnkgZGVmYXVsdCB1c2luZyBnemlwIGFuZCBh bHNvIHN1cHBvcnRzIHBhcmFsbGVsIGR1bXBzLgogICAgICAgICAgIDwvcGFyYT4KICAgICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTUxLDEwICsxNTYsMzcg QEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICAgICA8dGVybT48bGl0ZXJhbD5wbGFp bjwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgPHBhcmE+ Ci0gICAgICAgICAgIFRoZSBhcmNoaXZlIGlzIGEgcGxhaW4gYXJjaGl2ZS4oYnkgZGVmYXVsdCBh bHNvKQorICAgICAgICAgICBPdXRwdXQgYSBwbGFpbi10ZXh0IFNRTCBzY3JpcHQgZmlsZSAodGhl IGRlZmF1bHQpLgogICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAg ICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICA8 dGVybT48bGl0ZXJhbD5jPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgIDx0ZXJtPjxsaXRlcmFs PmN1c3RvbTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAg PHBhcmE+CisgICAgICAgICAgIE91dHB1dCBhIGN1c3RvbS1mb3JtYXQgYXJjaGl2ZSBzdWl0YWJs ZSBmb3IgaW5wdXQgaW50byBwZ19yZXN0b3JlLiBUb2dldGhlciB3aXRoIHRoZQorICAgICAgICAg ICBkaXJlY3Rvcnkgb3V0cHV0IGZvcm1hdCwgdGhpcyBpcyB0aGUgbW9zdCBmbGV4aWJsZSBvdXRw dXQgZm9ybWF0IGluIHRoYXQgaXQgYWxsb3dzIG1hbnVhbAorICAgICAgICAgICBzZWxlY3Rpb24g YW5kIHJlb3JkZXJpbmcgb2YgYXJjaGl2ZWQgaXRlbXMgZHVyaW5nIHJlc3RvcmUuIFRoaXMgZm9y bWF0IGlzIGFsc28KKyAgICAgICAgICAgY29tcHJlc3NlZCBieSBkZWZhdWx0LgorICAgICAgICAg IDwvcGFyYT4KKyAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5Pgor CisgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgPHRlcm0+PGxpdGVyYWw+dDwvbGl0 ZXJhbD48L3Rlcm0+CisgICAgICAgICA8dGVybT48bGl0ZXJhbD50YXI8L2xpdGVyYWw+PC90ZXJt PgorICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICBPdXRw dXQgYSB0YXItZm9ybWF0IGFyY2hpdmUgc3VpdGFibGUgZm9yIGlucHV0IGludG8gcGdfcmVzdG9y ZS4gVGhlIHRhciBmb3JtYXQgaXMKKyAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBkaXJl Y3RvcnkgZm9ybWF0OiBleHRyYWN0aW5nIGEgdGFyLWZvcm1hdCBhcmNoaXZlIHByb2R1Y2VzIGEg dmFsaWQKKyAgICAgICAgICAgZGlyZWN0b3J5LWZvcm1hdCBhcmNoaXZlLiBIb3dldmVyLCB0aGUg dGFyIGZvcm1hdCBkb2VzIG5vdCBzdXBwb3J0IGNvbXByZXNzaW9uLiBBbHNvLAorICAgICAgICAg ICB3aGVuIHVzaW5nIHRhciBmb3JtYXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHRhYmxlIGRhdGEg aXRlbXMgY2Fubm90IGJlIGNoYW5nZWQgZHVyaW5nIHJlc3RvcmUuCisgICAgICAgICAgPC9wYXJh PgorICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAg ICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXBhbGwuYwppbmRleCBjZWI0YzkwOGQ4Li5jMjZhMTRjNjE3IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w YWxsLmMKQEAgLTY2LDEwICs2NiwxMCBAQCBzdGF0aWMgdm9pZCBkcm9wVGFibGVzcGFjZXMoUEdj b25uICpjb25uKTsKIHN0YXRpYyB2b2lkIGR1bXBUYWJsZXNwYWNlcyhQR2Nvbm4gKmNvbm4pOwog c3RhdGljIHZvaWQgZHJvcERCcyhQR2Nvbm4gKmNvbm4pOwogc3RhdGljIHZvaWQgZHVtcFVzZXJD b25maWcoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICp1c2VybmFtZSk7Ci1zdGF0aWMgdm9pZCBk dW1wRGF0YWJhc2VzKFBHY29ubiAqY29ubiwgYm9vbCBkaXJlY3RvcnlfZm9ybWF0KTsKK3N0YXRp YyB2b2lkIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBBcmNoaXZlRm9ybWF0IGFyY2hEdW1w Rm9ybWF0KTsKIHN0YXRpYyB2b2lkIGR1bXBUaW1lc3RhbXAoY29uc3QgY2hhciAqbXNnKTsKIHN0 YXRpYyBpbnQgcnVuUGdEdW1wKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqY3JlYXRl X29wdHMsCi0JCQkJCSBjaGFyICpkYmZpbGUpOworCQkJCQkgY2hhciAqZGJmaWxlLCBBcmNoaXZl Rm9ybWF0IGFyY2hEdW1wRm9ybWF0KTsKIHN0YXRpYyB2b2lkIGJ1aWxkU2hTZWNMYWJlbHMoUEdj b25uICpjb25uLAogCQkJCQkJCSBjb25zdCBjaGFyICpjYXRhbG9nX25hbWUsIE9pZCBvYmplY3RJ ZCwKIAkJCQkJCQkgY29uc3QgY2hhciAqb2JqdHlwZSwgY29uc3QgY2hhciAqb2JqbmFtZSwKQEAg LTg0LDYgKzg0LDcgQEAgc3RhdGljIHZvaWQgZXhlY3V0ZUNvbW1hbmQoUEdjb25uICpjb25uLCBj b25zdCBjaGFyICpxdWVyeSk7CiBzdGF0aWMgdm9pZCBleHBhbmRfZGJuYW1lX3BhdHRlcm5zKFBH Y29ubiAqY29ubiwgU2ltcGxlU3RyaW5nTGlzdCAqcGF0dGVybnMsCiAJCQkJCQkJCSAgIFNpbXBs ZVN0cmluZ0xpc3QgKm5hbWVzKTsKIHN0YXRpYyB2b2lkIHJlYWRfZHVtcGFsbF9maWx0ZXJzKGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBTaW1wbGVTdHJpbmdMaXN0ICpwYXR0ZXJuKTsKK3N0YXRpYyBB cmNoaXZlRm9ybWF0IHBhcnNlRHVtcEZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQpOwogCiBzdGF0 aWMgY2hhciBwZ19kdW1wX2JpbltNQVhQR1BBVEhdOwogc3RhdGljIGNvbnN0IGNoYXIgKnByb2du YW1lOwpAQCAtMTkyLDEzICsxOTMsMTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CWNoYXIJICAgKnBnZGIgPSBOVUxMOwogCWNoYXIJICAgKnVzZV9yb2xlID0gTlVMTDsKIAljb25z dCBjaGFyICpkdW1wZW5jb2RpbmcgPSBOVUxMOwotCWNvbnN0IGNoYXIgKmZvcm1hdE5hbWUgPSBO VUxMOworCUFyY2hpdmVGb3JtYXQgYXJjaER1bXBGb3JtYXQgPSBhcmNoTnVsbDsKKwljb25zdCBj aGFyICpmb3JtYXROYW1lID0gInAiOwogCXRyaXZhbHVlCXByb21wdF9wYXNzd29yZCA9IFRSSV9E RUZBVUxUOwogCWJvb2wJCWRhdGFfb25seSA9IGZhbHNlOwogCWJvb2wJCWdsb2JhbHNfb25seSA9 IGZhbHNlOwogCWJvb2wJCXJvbGVzX29ubHkgPSBmYWxzZTsKIAlib29sCQl0YWJsZXNwYWNlc19v bmx5ID0gZmFsc2U7Ci0JYm9vbAkJZGlyZWN0b3J5X2Zvcm1hdCA9IGZhbHNlOwogCVBHY29ubgkg ICAqY29ubjsKIAlpbnQJCQllbmNvZGluZzsKIAljb25zdCBjaGFyICpzdGRfc3RyaW5nczsKQEAg LTI3Miw3ICsyNzMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJYXBwZW5k U2hlbGxTdHJpbmcocGdkdW1wb3B0cywgZmlsZW5hbWUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAn Ric6Ci0JCQkJZm9ybWF0TmFtZSA9IG9wdGFyZzsKKwkJCQlmb3JtYXROYW1lID0gcGdfc3RyZHVw KG9wdGFyZyk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdnJzoKIAkJCQlnbG9iYWxzX29ubHkgPSB0 cnVlOwpAQCAtNDIyLDI1ICs0MjMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ CWV4aXRfbmljZWx5KDEpOwogCX0KIAotCWlmIChmb3JtYXROYW1lKQotCXsKLQkJc3dpdGNoIChm b3JtYXROYW1lWzBdKQotCQl7Ci0JCQljYXNlICdkJzoKLQkJCWNhc2UgJ0QnOgotCQkJCWRpcmVj dG9yeV9mb3JtYXQgPSB0cnVlOwotCQkJCWJyZWFrOwotCi0JCQljYXNlICdwJzoKLQkJCWNhc2Ug J1AnOgotCQkJCS8qIERlZmF1bHQgcGxhaW4gZm9ybWF0LiAqLwotCQkJCWJyZWFrOwotCi0JCQlk ZWZhdWx0OgotCQkJCXBnX2ZhdGFsKCJ1bnJlY29nbml6ZWQgZHVtcCBmb3JtYXQgXCIlc1wiOyBw bGVhc2Ugc3BlY2lmeSBcImRcIiwgb3IgXCJwXCIgIiwKLQkJCQkJCWZvcm1hdE5hbWUpOwotCQl9 Ci0JfQorCWFyY2hEdW1wRm9ybWF0ID0gcGFyc2VEdW1wRm9ybWF0KGZvcm1hdE5hbWUpOwogCiAJ LyoKIAkgKiBJZiBwYXNzd29yZCB2YWx1ZXMgYXJlIG5vdCByZXF1aXJlZCBpbiB0aGUgZHVtcCwg c3dpdGNoIHRvIHVzaW5nCkBAIC01MjcsNyArNTEwLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCS8qCiAJICogT3BlbiB0aGUgb3V0cHV0IGZpbGUgaWYgcmVxdWlyZWQsIG90aGVy d2lzZSB1c2Ugc3Rkb3V0LgogCSAqLwotCWlmIChkaXJlY3RvcnlfZm9ybWF0KQorCWlmIChhcmNo RHVtcEZvcm1hdCAhPSBhcmNoTnVsbCkKIAl7CiAJCWNoYXIJdG9jX3BhdGhbTUFYUEdQQVRIXTsK IApAQCAtNjU3LDcgKzY0MCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAK IAlpZiAoIWdsb2JhbHNfb25seSAmJiAhcm9sZXNfb25seSAmJiAhdGFibGVzcGFjZXNfb25seSkK LQkJZHVtcERhdGFiYXNlcyhjb25uLCBkaXJlY3RvcnlfZm9ybWF0KTsKKwkJZHVtcERhdGFiYXNl cyhjb25uLCBhcmNoRHVtcEZvcm1hdCk7CiAKIAlQUWZpbmlzaChjb25uKTsKIApAQCAtNjcwLDcg KzY1Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJZmNsb3NlKE9QRik7CiAK IAkJLyogc3luYyB0aGUgcmVzdWx0aW5nIGZpbGUsIGVycm9ycyBhcmUgbm90IGZhdGFsICovCi0J CWlmIChkb3N5bmMgJiYgIWRpcmVjdG9yeV9mb3JtYXQpCisJCWlmIChkb3N5bmMgJiYgKGFyY2hE dW1wRm9ybWF0ID09IGFyY2hOdWxsKSkKIAkJCSh2b2lkKSBmc3luY19mbmFtZShmaWxlbmFtZSwg ZmFsc2UpOwogCX0KIApAQCAtMTUzOCw3ICsxNTIxLDcgQEAgZXhwYW5kX2RibmFtZV9wYXR0ZXJu cyhQR2Nvbm4gKmNvbm4sCiAgKiBEdW1wIGNvbnRlbnRzIG9mIGRhdGFiYXNlcy4KICAqLwogc3Rh dGljIHZvaWQKLWR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBib29sIGRpcmVjdG9yeV9mb3Jt YXQpCitkdW1wRGF0YWJhc2VzKFBHY29ubiAqY29ubiwgQXJjaGl2ZUZvcm1hdCBhcmNoRHVtcEZv cm1hdCkKIHsKIAlQR3Jlc3VsdCAgICpyZXM7CiAJaW50CQkJaTsKQEAgLTE1NzEsNyArMTU1NCw3 IEBAIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBib29sIGRpcmVjdG9yeV9mb3JtYXQpCiAJ ICogbWFpbiBkaXJlY3RvcnkgYW5kIGVhY2ggZGF0YWJhc2UgZHVtcCBmaWxlIHdpbGwgYmUgY3Jl YXRlZCB1bmRlciB0aGUKIAkgKiBzdWJkaXJlY3RvcnkgaW4gYXJjaGl2ZSBtb2RlIGFzIHBlciBz aW5nbGUgZGIgcGdfZHVtcC4KIAkgKi8KLQlpZiAoZGlyZWN0b3J5X2Zvcm1hdCkKKwlpZiAoYXJj aER1bXBGb3JtYXQgIT0gYXJjaE51bGwpCiAJewogCQljaGFyICAgIG1hcF9maWxlX3BhdGhbTUFY UEdQQVRIXTsKIApAQCAtMTU5Nyw3ICsxNTgwLDcgQEAgZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNv bm4sIGJvb2wgZGlyZWN0b3J5X2Zvcm1hdCkKIAkJaWYgKHN0cmNtcChkYm5hbWUsICJ0ZW1wbGF0 ZTAiKSA9PSAwKQogCQkJY29udGludWU7CiAKLQkJaWYgKGRpcmVjdG9yeV9mb3JtYXQpCisJCWlm IChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVsbCkKIAkJewogCQkJc25wcmludGYoZGJmaWxlcGF0 aCwgTUFYUEdQQVRILCAiLWYgJXMvJXMiLCBkYl9zdWJkaXIsIG9pZCk7CiAKQEAgLTE2MTQsNyAr MTU5Nyw3IEBAIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBib29sIGRpcmVjdG9yeV9mb3Jt YXQpCiAKIAkJcGdfbG9nX2luZm8oImR1bXBpbmcgZGF0YWJhc2UgXCIlc1wiIiwgZGJuYW1lKTsK IAotCQlpZiAoIWRpcmVjdG9yeV9mb3JtYXQpCisJCWlmIChhcmNoRHVtcEZvcm1hdCA9PSBhcmNo TnVsbCkKIAkJCWZwcmludGYoT1BGLCAiLS1cbi0tIERhdGFiYXNlIFwiJXNcIiBkdW1wXG4tLVxu XG4iLCBkYm5hbWUpOwogCiAJCS8qCkBAIC0xNjMzLDIxICsxNjE2LDIxIEBAIGR1bXBEYXRhYmFz ZXMoUEdjb25uICpjb25uLCBib29sIGRpcmVjdG9yeV9mb3JtYXQpCiAJCQl7CiAJCQkJY3JlYXRl X29wdHMgPSAiIjsKIAkJCQkvKiBTaW5jZSBwZ19kdW1wIHdvbid0IGVtaXQgYSBcY29ubmVjdCBj b21tYW5kLCB3ZSBtdXN0ICovCi0JCQkJaWYgKCFkaXJlY3RvcnlfZm9ybWF0KQorCQkJCWlmIChh cmNoRHVtcEZvcm1hdCA9PSBhcmNoTnVsbCkKIAkJCQkJZnByaW50ZihPUEYsICJcXGNvbm5lY3Qg JXNcblxuIiwgZGJuYW1lKTsKIAkJCX0KIAkJfQogCQllbHNlCiAJCQljcmVhdGVfb3B0cyA9ICIt LWNyZWF0ZSI7CiAKLQkJaWYgKCFkaXJlY3RvcnlfZm9ybWF0ICYmIGZpbGVuYW1lKQorCQlpZiAo KGFyY2hEdW1wRm9ybWF0ID09IGFyY2hOdWxsKSAmJiBmaWxlbmFtZSkKIAkJCWZjbG9zZShPUEYp OwogCi0JCXJldCA9IHJ1blBnRHVtcChkYm5hbWUsIGNyZWF0ZV9vcHRzLCBkaXJlY3RvcnlfZm9y bWF0ID8gZGJmaWxlcGF0aCA6IE5VTEwpOworCQlyZXQgPSBydW5QZ0R1bXAoZGJuYW1lLCBjcmVh dGVfb3B0cywgZGJmaWxlcGF0aCwgYXJjaER1bXBGb3JtYXQpOwogCQlpZiAocmV0ICE9IDApCiAJ CQlwZ19mYXRhbCgicGdfZHVtcCBmYWlsZWQgb24gZGF0YWJhc2UgXCIlc1wiLCBleGl0aW5nIiwg ZGJuYW1lKTsKIAotCQlpZiAoIWRpcmVjdG9yeV9mb3JtYXQgJiYgZmlsZW5hbWUpCisJCWlmICgo YXJjaER1bXBGb3JtYXQgPT0gYXJjaE51bGwpICYmIGZpbGVuYW1lKQogCQl7CiAJCQlPUEYgPSBm b3BlbihmaWxlbmFtZSwgUEdfQklOQVJZX0EpOwogCQkJaWYgKCFPUEYpCkBAIC0xNjU2LDggKzE2 MzksOCBAQCBkdW1wRGF0YWJhc2VzKFBHY29ubiAqY29ubiwgYm9vbCBkaXJlY3RvcnlfZm9ybWF0 KQogCQl9CiAJfQogCi0JLyogY2xvc2UgbWFwIGZpbGUgKi8KLQlpZiAoZGlyZWN0b3J5X2Zvcm1h dCkKKwkvKiBDbG9zZSBtYXAgZmlsZSAqLworCWlmIChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVs bCkKIAkJZmNsb3NlKG1hcF9maWxlKTsKIAogCVBRY2xlYXIocmVzKTsKQEAgLTE2NjksNyArMTY1 Miw4IEBAIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBib29sIGRpcmVjdG9yeV9mb3JtYXQp CiAgKiBSdW4gcGdfZHVtcCBvbiBkYm5hbWUsIHdpdGggc3BlY2lmaWVkIG9wdGlvbnMuCiAgKi8K IHN0YXRpYyBpbnQKLXJ1blBnRHVtcChjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNy ZWF0ZV9vcHRzLCBjaGFyICpkYmZpbGUpCitydW5QZ0R1bXAoY29uc3QgY2hhciAqZGJuYW1lLCBj b25zdCBjaGFyICpjcmVhdGVfb3B0cywgY2hhciAqZGJmaWxlLAorCQlBcmNoaXZlRm9ybWF0IGFy Y2hEdW1wRm9ybWF0KQogewogCVBRRXhwQnVmZmVyRGF0YSBjb25uc3RyYnVmOwogCVBRRXhwQnVm ZmVyRGF0YSBjbWQ7CkBAIC0xNjc4LDExICsxNjYyLDIzIEBAIHJ1blBnRHVtcChjb25zdCBjaGFy ICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNyZWF0ZV9vcHRzLCBjaGFyICpkYmZpbGUpCiAJaW5pdFBR RXhwQnVmZmVyKCZjb25uc3RyYnVmKTsKIAlpbml0UFFFeHBCdWZmZXIoJmNtZCk7CiAKLQlpZiAo ZGJmaWxlKQorCS8qCisJICogSWYgdGhpcyBpcyBub3QgYSBwbGFpbiBkdW1wLCB0aGVuIGFwcGVu ZCBmaWxlIG5hbWUgYW5kIGR1bXAgZm9ybWF0IHRvCisJICogdGhlIHBnX2R1bXAgY29tbWFuZC4K KwkgKi8KKwlpZiAoYXJjaER1bXBGb3JtYXQgIT0gYXJjaE51bGwpCiAJewogCQlwcmludGZQUUV4 cEJ1ZmZlcigmY21kLCAiXCIlc1wiICVzICVzIiwgcGdfZHVtcF9iaW4sCiAJCQkJCQkgIGRiZmls ZSwgY3JlYXRlX29wdHMpOwotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY21kLCAiIC1GIGQgIik7 CisKKwkJaWYgKGFyY2hEdW1wRm9ybWF0ID09IGFyY2hEaXJlY3RvcnkpCisJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmY21kLCAiIC1GIGQgIik7CisJCWVsc2UgaWYgKGFyY2hEdW1wRm9ybWF0ID09 IGFyY2hDdXN0b20pCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY21kLCAiIC1GIGMgIik7CisJ CWVsc2UgaWYgKGFyY2hEdW1wRm9ybWF0ID09IGFyY2hUYXIpCisJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cigmY21kLCAiIC1GIHQgIik7CisJCWVsc2UKKwkJCXBnX2ZhdGFsKCJpbnZhbGlkIGR1bXAg Zm9ybWF0ICVkLCBzcGVjaWZpZWQsIHBsZWFzZSB1c2UgZC9jL3Agb25seSIsIGFyY2hEdW1wRm9y bWF0KTsKIAl9CiAJZWxzZQogCXsKQEAgLTIwOTIsMyArMjA4OCwzMCBAQCByZWFkX2R1bXBhbGxf ZmlsdGVycyhjb25zdCBjaGFyICpmaWxlbmFtZSwgU2ltcGxlU3RyaW5nTGlzdCAqcGF0dGVybikK IAogCWZpbHRlcl9mcmVlKCZmc3RhdGUpOwogfQorCitzdGF0aWMgQXJjaGl2ZUZvcm1hdAorcGFy c2VEdW1wRm9ybWF0KGNvbnN0IGNoYXIgKmZvcm1hdCkKK3sKKwlBcmNoaXZlRm9ybWF0CWFyY2hE dW1wRm9ybWF0OworCisJaWYgKHBnX3N0cmNhc2VjbXAoZm9ybWF0LCAiYyIpID09IDApCisJCWFy Y2hEdW1wRm9ybWF0ID0gYXJjaEN1c3RvbTsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKGZvcm1h dCwgImN1c3RvbSIpID09IDApCisJCWFyY2hEdW1wRm9ybWF0ID0gYXJjaEN1c3RvbTsKKwllbHNl IGlmIChwZ19zdHJjYXNlY21wKGZvcm1hdCwgImQiKSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9 IGFyY2hEaXJlY3Rvcnk7CisJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChmb3JtYXQsICJkaXJlY3Rv cnkiKSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hEaXJlY3Rvcnk7CisJZWxzZSBpZiAo cGdfc3RyY2FzZWNtcChmb3JtYXQsICJwIikgPT0gMCkKKwkJYXJjaER1bXBGb3JtYXQgPSBhcmNo TnVsbDsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKGZvcm1hdCwgInBsYWluIikgPT0gMCkKKwkJ YXJjaER1bXBGb3JtYXQgPSBhcmNoTnVsbDsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKGZvcm1h dCwgInQiKSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hUYXI7CisJZWxzZSBpZiAocGdf c3RyY2FzZWNtcChmb3JtYXQsICJ0YXIiKSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hU YXI7CisJZWxzZQorCQlwZ19mYXRhbCgiaW52YWxpZCBkdW1wIGZvcm1hdCBcIiVzXCIgc3BlY2lm aWVkIiwgZm9ybWF0KTsKKworCXJldHVybiBhcmNoRHVtcEZvcm1hdDsKK30KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfZHVtcC9wZ19yZXN0b3JlLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfcmVzdG9y ZS5jCmluZGV4IDI3M2YyMDAyZjEuLmU2YTcwYWRlYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19yZXN0b3JlLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYwpAQCAt NTksOSArNTksOSBAQAogCiB0eXBlZGVmIHN0cnVjdCBTaW1wbGVEYXRhYmFzZU9pZExpc3RDZWxs CiB7Ci0Jc3RydWN0IFNpbXBsZURhdGFiYXNlT2lkTGlzdENlbGwgKm5leHQ7Ci0JT2lkICAgICAg ICAgZGJvaWQ7Ci0JY29uc3QgY2hhciAgKmRibmFtZTsKKwlzdHJ1Y3QgU2ltcGxlRGF0YWJhc2VP aWRMaXN0Q2VsbAkqbmV4dDsKKwlPaWQJCQkJCQkJCQlkYl9vaWQ7CisJY29uc3QgY2hhcgkJCQkJ CQkqZGJfbmFtZTsKIH0gU2ltcGxlRGF0YWJhc2VPaWRMaXN0Q2VsbDsKIAogdHlwZWRlZiBzdHJ1 Y3QgU2ltcGxlRGF0YWJhc2VPaWRMaXN0CkBAIC03MSwxMSArNzEsMTEgQEAgdHlwZWRlZiBzdHJ1 Y3QgU2ltcGxlRGF0YWJhc2VPaWRMaXN0CiB9IFNpbXBsZURhdGFiYXNlT2lkTGlzdDsKIAogc3Rh dGljIHZvaWQKLXNpbXBsZV9kYm9pZF9saXN0X2FwcGVuZChTaW1wbGVEYXRhYmFzZU9pZExpc3Qg Kmxpc3QsIE9pZCBkYm9pZCwgY29uc3QgY2hhciAqZGJuYW1lKTsKK3NpbXBsZV9kYl9vaWRfbGlz dF9hcHBlbmQoU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpsaXN0LCBPaWQgZGJfb2lkLCBjb25zdCBj aGFyICpkYm5hbWUpOwogCiBzdGF0aWMgdm9pZCB1c2FnZShjb25zdCBjaGFyICpwcm9nbmFtZSk7 CiBzdGF0aWMgdm9pZCByZWFkX3Jlc3RvcmVfZmlsdGVycyhjb25zdCBjaGFyICpmaWxlbmFtZSwg UmVzdG9yZU9wdGlvbnMgKm9wdHMpOwotc3RhdGljIGJvb2wgX2ZpbGVFeGlzdHNJbkRpcmVjdG9y eShjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKK3N0YXRpYyBib29sIElz RmlsZUV4aXN0c0luRGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZmlsZW5h bWUpOwogc3RhdGljIGJvb2wgcmVzdG9yZU9uZURhdGFiYXNlKGNvbnN0IGNoYXIgKmlucHV0Rmls ZVNwZWMsCiAJCVJlc3RvcmVPcHRpb25zICpvcHRzLCBpbnQgbnVtV29ya2Vycyk7CiBzdGF0aWMg UEdjb25uICpjb25uZWN0RGF0YWJhc2UoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpj b25uX3N0cmluZywKQEAgLTkwLDEyICs5MCwxMiBAQCBzdGF0aWMgaW50IGZpbHRlcl9kYm5hbWVz X2Zvcl9yZXN0b3JlKFBHY29ubiAqY29ubiwKIAkJU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpkYm5h bWVfb2lkX2xpc3QsIFNpbXBsZVN0cmluZ0xpc3QgZGJfZXhjbHVkZV9wYXR0ZXJucyk7CiBzdGF0 aWMgaW50IGdldF9kYm5hbWVfb2lkX2xpc3RfZnJvbV9tZmlsZShjb25zdCBjaGFyICpkdW1wZGly cGF0aCwKIAkJU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpkYm5hbWVfb2lkX2xpc3QpOwotc3RhdGlj IHZvaWQgc2ltcGxlX2Rib2lkX2xpc3RfYXBwZW5kKFNpbXBsZURhdGFiYXNlT2lkTGlzdCAqbGlz dCwgT2lkIGRib2lkLAorc3RhdGljIHZvaWQgc2ltcGxlX2RiX29pZF9saXN0X2FwcGVuZChTaW1w bGVEYXRhYmFzZU9pZExpc3QgKmxpc3QsIE9pZCBkYl9vaWQsCiAJCWNvbnN0IGNoYXIgKmRibmFt ZSk7CiBzdGF0aWMgYm9vbCBpc19mdWxsX3BhdHRlcm4oUEdjb25uICpjb25uLCBjb25zdCBjaGFy ICpzdHIsIGNvbnN0IGNoYXIgKnB0cm4pOwogc3RhdGljIHZvaWQgc2ltcGxlX3N0cmluZ19saXN0 X2RlbGV0ZShTaW1wbGVTdHJpbmdMaXN0ICpsaXN0LAogCQlTaW1wbGVTdHJpbmdMaXN0Q2VsbCAq Y2VsbCwgU2ltcGxlU3RyaW5nTGlzdENlbGwgKnByZXYpOwotc3RhdGljIHZvaWQgc2ltcGxlX2Ri b2lkX2xpc3RfZGVsZXRlKFNpbXBsZURhdGFiYXNlT2lkTGlzdCAqbGlzdCwKK3N0YXRpYyB2b2lk IHNpbXBsZV9kYl9vaWRfbGlzdF9kZWxldGUoU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpsaXN0LAog CQlTaW1wbGVEYXRhYmFzZU9pZExpc3RDZWxsICpjZWxsLCBTaW1wbGVEYXRhYmFzZU9pZExpc3RD ZWxsICpwcmV2KTsKIAogaW50CkBAIC0zNTIsMTIgKzM1Miw4IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCQkJCW9wdHMtPmV4aXRfb25fZXJyb3IgPSB0cnVlOwogCQkJCWJyZWFrOwog CQkJY2FzZSA2OgotCQkJCS8qIGxpc3Qgb2YgZGF0YWJhc2VzIHRob3NlIG5lZWRzIHRvIHNraXAg d2hpbGUgcmVzdG9yaW5nICovCisJCQkJLyogbGlzdCBvZiBkYXRhYmFzZXMgcGF0dGVybnMgdGhv c2UgbmVlZHMgdG8gc2tpcCB3aGlsZSByZXN0b3JpbmcgKi8KIAkJCQlzaW1wbGVfc3RyaW5nX2xp c3RfYXBwZW5kKCZkYl9leGNsdWRlX3BhdHRlcm5zLCBvcHRhcmcpOwotCQkJCS8qCi0JCQkJICog WFhYOiBUT0RPIGFzIG9mIG5vdywgY29uc2lkZXJpbmcgb25seSBkYiBuYW1lcyBidXQgd2UgY2Fu Ci0JCQkJICogaW1wbGVtZW50IGZvciBwYXR0ZXJucyBhbHNvLgotCQkJCSAqLwogCQkJCWJyZWFr OwogCiAJCQlkZWZhdWx0OgpAQCAtNDc0LDQ5ICs0NzAsNTMgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJfQogCiAJLyoKLQkgKiBJZiBkaXJlY3RvcnkgZm9ybWF0LCB0aGVuIGZpcnN0 IGNoZWNrIHRoYXQgdG9jLmRhdCBmaWxlIGV4aXN0IG9yIG5vdD8KLQkgKgotCSAqIGlmIHRvYy5k YXQgZXhpc3QsIHRoZW4gbm8gbmVlZCB0byBjaGVjayBmb3IgbWFwLmRhdCBhbmQgZ2xvYmFsLmRh dAotCSAqCisJICogSWYgdG9jLmRhdCBmaWxlIGRvZXMgbm90IHByZXNlbnQgaW4gY3VycmVudCBw YXRoLCB0aGVuIGNoZWNrIGZvcgorCSAqIGdsb2JhbC5kYXQgYW5kIG1hcC5kYXQgZmlsZXMuICBJ ZiBib3RoIGZpbGVzIGFyZSBwcmVzZW50LCB0aGVuCisJICogcmVzdG9yZSBhbGwgdGhlIGRhdGFi YXNlcyBmcm9tIG1hcC5kYXQgZmlsZSBsaXN0IGFuZCBza2lwIHJlc3RvcmluZyBmb3IKKwkgKiAt LWV4Y2x1ZGUtZGF0YWJhc2UgcGF0dGVybnMuCiAJICovCi0JaWYgKG9wdHMtPmZvcm1hdCA9PSBh cmNoRGlyZWN0b3J5ICYmCi0JCQlpbnB1dEZpbGVTcGVjICE9IE5VTEwgJiYKLQkJCSFfZmlsZUV4 aXN0c0luRGlyZWN0b3J5KGlucHV0RmlsZVNwZWMsICJ0b2MuZGF0IikpCisJaWYgKGlucHV0Rmls ZVNwZWMgIT0gTlVMTCAmJgorCQkJIUlzRmlsZUV4aXN0c0luRGlyZWN0b3J5KGlucHV0RmlsZVNw ZWMsICJ0b2MuZGF0IikpCiAJewotCQkvKiBpZiBnbG9iYWwuZGF0IGFuZCBtYXAuZGF0IGFyZSBl eGlzdCwgdGhlbiBvcGVuIHRoZW0gKi8KLQkJaWYgKF9maWxlRXhpc3RzSW5EaXJlY3RvcnkocGdf c3RyZHVwKGlucHV0RmlsZVNwZWMpLCAiZ2xvYmFsLmRhdCIpCi0JCQkJJiYgX2ZpbGVFeGlzdHNJ bkRpcmVjdG9yeShwZ19zdHJkdXAoaW5wdXRGaWxlU3BlYyksICJtYXAuZGF0IikpCisJCS8qIElm IGdsb2JhbC5kYXQgYW5kIG1hcC5kYXQgYXJlIGV4aXN0LCB0aGVuIHByb2NlcyB0aGVtLiAqLwor CQlpZiAoSXNGaWxlRXhpc3RzSW5EaXJlY3RvcnkocGdfc3RyZHVwKGlucHV0RmlsZVNwZWMpLCAi Z2xvYmFsLmRhdCIpCisJCQkJJiYgSXNGaWxlRXhpc3RzSW5EaXJlY3RvcnkocGdfc3RyZHVwKGlu cHV0RmlsZVNwZWMpLCAibWFwLmRhdCIpKQogCQl7Ci0JCQkvKiBGb3VuZCB0aGUgZ2xvYmFsLmRh dCBhbmQgbWFwLmRhdCBmaWxlIHNvIHByb2Nlc3MuICovCi0JCQlQR2Nvbm4JCQkJKmNvbm4gPSBO VUxMOworCQkJUEdjb25uCSpjb25uID0gTlVMTDsgLyogQ29ubmVjdGlvbiB0byByZXN0b3JlIGds b2JhbCBzcWwgY29tbWFuZHMuICovCiAKKwkJCS8qCisJCQkgKiBJZiB3ZSBhcmUgcmVzdG9yaW5n IGR1bXAgb2YgbXVsdGlwbGUgZGF0YWJhc2VzLCB0aGVuIGNvbm5lY3Rpb24KKwkJCSAqIHNob3Vs ZCBiZSBnaXZlbi4KKwkJCSAqLwogCQkJaWYgKG9wdHMtPmNwYXJhbXMuZGJuYW1lID09IE5VTEwp Ci0JCQkJcGdfZmF0YWwoIiAtZC8tLWRiYW5tZSBzaG91bGQgYmUgZ2l2ZW4gaWYgdXNpbmcgZHVt cCBvZiBkdW1wYWxsIGFuZCBnbG9iYWwuZGF0Iik7CisJCQkJcGdfZmF0YWwoIiAtZC8tLWRiYW5t ZSBzaG91bGQgYmUgZ2l2ZW4gd2hlbiB1c2luZyBhcmNoaXZlIGR1bXAgb2YgcGdfZHVtcGFsbCIp OwogCisJCQkvKgorCQkJICogVG8gcmVzdG9yZSBtdWx0aXBsZSBkYXRhYmFzZXMsIGNyZWF0ZSBk YXRhYmFzZSBvcHRpb24gc2hvdWxkIGJlCisJCQkgKiBzcGVjaWZpZWQuCisJCQkgKi8KIAkJCWlm IChvcHRzLT5jcmVhdGVEQiAhPSAxKQotCQkJCXBnX2ZhdGFsKCJvcHRpb24gLUMvLS1jcmVhdGUg c2hvdWxkIGJlIHNwZWNpZmllZCBpZiB1c2luZyBkdW1wIG9mIGR1bXBhbGwgd2l0aCBnbG9iYWwu ZGF0Iik7CisJCQkJcGdfZmF0YWwoIm9wdGlvbiAtQy8tLWNyZWF0ZSBzaG91bGQgYmUgc3BlY2lm aWVkIHdoZW4gdXNpbmcgZHVtcCBvZiBwZ19kdW1wYWxsIik7CiAKLQkJCS8qIENvbm5lY3QgdG8g ZGF0YWJhc2Ugc28gdGhhdCB3ZSBjYW4gZXhlY3V0ZSBnbG9iYWwuZGF0ICovCi0JCQljb25uID0g Y29ubmVjdERhdGFiYXNlKG9wdHMtPmNwYXJhbXMuZGJuYW1lLCBOVUxMLAotCQkJCQlvcHRzLT5j cGFyYW1zLnBnaG9zdCwgb3B0cy0+Y3BhcmFtcy5wZ3BvcnQsIG9wdHMtPmNwYXJhbXMudXNlcm5h bWUsCi0JCQkJCVRSSV9ERUZBVUxULCBmYWxzZSk7CisJCQkvKiBDb25uZWN0IHRvIGRhdGFiYXNl IHRvIGV4ZWN1dGUgZ2xvYmFsIHNxbCBjb21tYW5kcyBmcm9tIGdsb2JhbC5kYXQgZmlsZS4gKi8K KwkJCWNvbm4gPSBjb25uZWN0RGF0YWJhc2Uob3B0cy0+Y3BhcmFtcy5kYm5hbWUsIE5VTEwsIG9w dHMtPmNwYXJhbXMucGdob3N0LAorCQkJCQlvcHRzLT5jcGFyYW1zLnBncG9ydCwgb3B0cy0+Y3Bh cmFtcy51c2VybmFtZSwgVFJJX0RFRkFVTFQsIGZhbHNlKTsKIAogCQkJaWYgKCFjb25uKQogCQkJ CXBnX2ZhdGFsKCJjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSBcIiVzXCIiLCBvcHRzLT5j cGFyYW1zLmRibmFtZSk7CiAKLQkJCS8qIE9wZW4gZ2xvYmFsLmRhdCBmaWxlIGFuZCBleGVjdXRl IGFsbCB0aGUgc3FsIGNvbW1hbmRzICovCisJCQkvKiBPcGVuIGdsb2JhbC5kYXQgZmlsZSBhbmQg ZXhlY3V0ZSBhbGwgdGhlIHNxbCBjb21tYW5kcy4gKi8KIAkJCWV4ZWN1dGVfZ2xvYmFsX3NxbF9j b21tYW5kcyhjb25uLCBpbnB1dEZpbGVTcGVjKTsKIAotCQkJLyogaWYgZ2xvYmFscy1vbmx5LCB0 aGVuIHJldHVybiBmcm9tIGhlcmUgKi8KKwkJCS8qIElmIGdsb2JhbHMtb25seSwgdGhlbiByZXR1 cm4gZnJvbSBoZXJlLiAqLwogCQkJaWYgKGdsb2JhbHNfb25seSkKIAkJCXsKIAkJCQlQUWZpbmlz aChjb25uKTsKIAkJCQlyZXR1cm4gMDsKIAkJCX0KIAotCQkJLyogTm93IHJlc3RvcmUgYWxsIHRo ZSBkYXRhYmFzZXMgZnJvbSBtYXAuZGF0IGZpbGUgKi8KLQkJCXJldHVybiByZXN0b3JlQWxsRGF0 YWJhc2VzKGNvbm4sIGlucHV0RmlsZVNwZWMsCi0JCQkJCWRiX2V4Y2x1ZGVfcGF0dGVybnMsCisJ CQkvKiBOb3cgcmVzdG9yZSBhbGwgdGhlIGRhdGFiYXNlcyBmcm9tIG1hcC5kYXQgZmlsZS4gKi8K KwkJCXJldHVybiByZXN0b3JlQWxsRGF0YWJhc2VzKGNvbm4sIGlucHV0RmlsZVNwZWMsIGRiX2V4 Y2x1ZGVfcGF0dGVybnMsCiAJCQkJCW9wdHMsIG51bVdvcmtlcnMpOwogCQl9LyogZW5kIGlmICov CiAJfS8qIGVuZCBpZiAqLwpAQCAtNzU0LDExICs3NTQsMTYgQEAgcmVhZF9yZXN0b3JlX2ZpbHRl cnMoY29uc3QgY2hhciAqZmlsZW5hbWUsIFJlc3RvcmVPcHRpb25zICpvcHRzKQogCWZpbHRlcl9m cmVlKCZmc3RhdGUpOwogfQogCisvKgorICogSXNGaWxlRXhpc3RzSW5EaXJlY3RvcnkKKyAqCisg KiBSZXR1cm5zIHRydWUgaWYgZmlsZSBleGlzdCBpbiBjdXJyZW50IGRpcmVjdG9yeS4KKyAqLwog c3RhdGljIGJvb2wKLV9maWxlRXhpc3RzSW5EaXJlY3RvcnkoY29uc3QgY2hhciAqZGlyLCBjb25z dCBjaGFyICpmaWxlbmFtZSkKK0lzRmlsZUV4aXN0c0luRGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRp ciwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7Ci0Jc3RydWN0IHN0YXQJCXN0OwotCWNoYXIJCQkg YnVmW01BWFBHUEFUSF07CisJc3RydWN0IHN0YXQJCQlzdDsKKwljaGFyCQkJCWJ1ZltNQVhQR1BB VEhdOwogCiAJaWYgKHNucHJpbnRmKGJ1ZiwgTUFYUEdQQVRILCAiJXMvJXMiLCBkaXIsIGZpbGVu YW1lKSA+PSBNQVhQR1BBVEgpCiAJCXBnX2ZhdGFsKCJkaXJlY3RvcnkgbmFtZSB0b28gbG9uZzog XCIlc1wiIiwgZGlyKTsKQEAgLTc2NywyNyArNzcyLDI4IEBAIF9maWxlRXhpc3RzSW5EaXJlY3Rv cnkoY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIH0KIAogLyoKKyAqIGNv bm5lY3REYXRhYmFzZQorICoKICAqIE1ha2UgYSBkYXRhYmFzZSBjb25uZWN0aW9uIHdpdGggdGhl IGdpdmVuIHBhcmFtZXRlcnMuICBBbgogICogaW50ZXJhY3RpdmUgcGFzc3dvcmQgcHJvbXB0IGlz IGF1dG9tYXRpY2FsbHkgaXNzdWVkIGlmIHJlcXVpcmVkLgogICoKICAqIElmIGZhaWxfb25fZXJy b3IgaXMgZmFsc2UsIHdlIHJldHVybiBOVUxMIHdpdGhvdXQgcHJpbnRpbmcgYW55IG1lc3NhZ2UK ICAqIG9uIGZhaWx1cmUsIGJ1dCBwcmVzZXJ2ZSBhbnkgcHJvbXB0ZWQgcGFzc3dvcmQgZm9yIHRo ZSBuZXh0IHRyeS4KLSAqCiAgKi8KIHN0YXRpYyBQR2Nvbm4gKgogY29ubmVjdERhdGFiYXNlKGNv bnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqY29ubmVjdGlvbl9zdHJpbmcsCiAJCQkJY29u c3QgY2hhciAqcGdob3N0LCBjb25zdCBjaGFyICpwZ3BvcnQsIGNvbnN0IGNoYXIgKnBndXNlciwK IAkJCQl0cml2YWx1ZSBwcm9tcHRfcGFzc3dvcmQsIGJvb2wgZmFpbF9vbl9lcnJvcikKIHsKLQlQ R2Nvbm4JICAgKmNvbm47Ci0JYm9vbAkJbmV3X3Bhc3M7Ci0JY29uc3QgY2hhciAqcmVtb3RldmVy c2lvbl9zdHI7Ci0JaW50CQkJbXlfdmVyc2lvbjsKLQljb25zdCBjaGFyICoqa2V5d29yZHMgPSBO VUxMOwotCWNvbnN0IGNoYXIgKip2YWx1ZXMgPSBOVUxMOwotCVBRY29ubmluZm9PcHRpb24gKmNv bm5fb3B0cyA9IE5VTEw7Ci0Jc3RhdGljIGNoYXIgKnBhc3N3b3JkID0gTlVMTDsKLQlzdGF0aWMg aW50ICBzZXJ2ZXJfdmVyc2lvbjsKKwlQR2Nvbm4JCQkJKmNvbm47CisJYm9vbAkJCQluZXdfcGFz czsKKwljb25zdCBjaGFyCQkJKnJlbW90ZXZlcnNpb25fc3RyOworCWludAkJCQkJbXlfdmVyc2lv bjsKKwljb25zdCBjaGFyCQkJKiprZXl3b3JkcyA9IE5VTEw7CisJY29uc3QgY2hhcgkJCSoqdmFs dWVzID0gTlVMTDsKKwlQUWNvbm5pbmZvT3B0aW9uIAkqY29ubl9vcHRzID0gTlVMTDsKKwlzdGF0 aWMgY2hhcgkJCSpwYXNzd29yZCA9IE5VTEw7CisJc3RhdGljIGludAkJCXNlcnZlcl92ZXJzaW9u OwogCiAJaWYgKHByb21wdF9wYXNzd29yZCA9PSBUUklfWUVTICYmICFwYXNzd29yZCkKIAkJcGFz c3dvcmQgPSBzaW1wbGVfcHJvbXB0KCJQYXNzd29yZDogIiwgZmFsc2UpOwpAQCAtNzk4LDEwICs4 MDQsMTAgQEAgY29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAq Y29ubmVjdGlvbl9zdHJpbmcsCiAJICovCiAJZG8KIAl7Ci0JCWludAkJCWFyZ2NvdW50ID0gNjsK LQkJUFFjb25uaW5mb09wdGlvbiAqY29ubl9vcHQ7Ci0JCWNoYXIJICAgKmVycl9tc2cgPSBOVUxM OwotCQlpbnQJCQlpID0gMDsKKwkJaW50CQkJCQlhcmdjb3VudCA9IDY7CisJCVBRY29ubmluZm9P cHRpb24JKmNvbm5fb3B0OworCQljaGFyCQkJCSplcnJfbXNnID0gTlVMTDsKKwkJaW50CQkJCQlp ID0gMDsKIAogCQlmcmVlKGtleXdvcmRzKTsKIAkJZnJlZSh2YWx1ZXMpOwpAQCAtOTQ5LDEyICs5 NTUsMTQgQEAgY29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAq Y29ubmVjdGlvbl9zdHJpbmcsCiB9CiAKIC8qCisgKiBleGVjdXRlUXVlcnkKKyAqCiAgKiBSdW4g YSBxdWVyeSwgcmV0dXJuIHRoZSByZXN1bHRzLCBleGl0IHByb2dyYW0gb24gZmFpbHVyZS4KICAq Lwogc3RhdGljIFBHcmVzdWx0ICoKIGV4ZWN1dGVRdWVyeShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNo YXIgKnF1ZXJ5KQogewotCVBHcmVzdWx0ICAgKnJlczsKKwlQR3Jlc3VsdAkqcmVzOwogCiAJcGdf bG9nX2luZm8oImV4ZWN1dGluZyAlcyIsIHF1ZXJ5KTsKIApAQCAtOTcwLDIwICs5NzgsMTkgQEAg ZXhlY3V0ZVF1ZXJ5KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnkpCiAJcmV0dXJuIHJl czsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLQotICoJUmVhZE9uZVN0YXRlbWVudCgpCisvKgor ICoJUmVhZE9uZVN0YXRlbWVudAogICoKICAqIFRoaXMgd2lsbCBzdGFydCByZWFkaW5nIGZyb20g cGFzc2VkIGZpbGUgcG9pbnRlciB1c2luZyBmZ2V0YyBhbmQgcmVhZCB0aWxsCiAgKiBzZW1pY29s b24oc3FsIHN0YXRlbWVudCB0ZXJtaW5hdG9yIGZvciBnbG9iYWwuc3FsIGZpbGUpCiAgKgogICoJ RU9GIGlzIHJldHVybmVkIGlmIGVuZC1vZi1maWxlIGlucHV0IGlzIHNlZW47IHRpbWUgdG8gc2h1 dCBkb3duLgotICogLS0tLS0tLS0tLS0tLS0tLQogICovCiAKIHN0YXRpYyBpbnQKIFJlYWRPbmVT dGF0ZW1lbnQoU3RyaW5nSW5mbyBpbkJ1ZiwgRklMRSAqZl9nbG8pCiB7Ci0JaW50CQkJYzsJCQkJ LyogY2hhcmFjdGVyIHJlYWQgZnJvbSBnZXRjKCkgKi8KKwlpbnQJCQljOyAvKiBjaGFyYWN0ZXIg cmVhZCBmcm9tIGdldGMoKSAqLwogCiAJcmVzZXRTdHJpbmdJbmZvKGluQnVmKTsKIApAQCAtMTAx NSw2ICsxMDIyLDggQEAgUmVhZE9uZVN0YXRlbWVudChTdHJpbmdJbmZvIGluQnVmLCBGSUxFICpm X2dsbykKIH0KIAogLyoKKyAqIGZpbHRlcl9kYm5hbWVzX2Zvcl9yZXN0b3JlCisgKgogICogVGhp cyB3aWxsIHJlbW92ZSBuYW1lcyBmcm9tIGFsbCBkYmxpc3QgdGhhdCBhcmUgZ2l2ZW4gd2l0aCBl eGNsdWRlLWRhdGFiYXNlCiAgKiBvcHRpb24uCiAgKgpAQCAtMTAyNCwyNCArMTAzMywyNSBAQCBz dGF0aWMgaW50CiBmaWx0ZXJfZGJuYW1lc19mb3JfcmVzdG9yZShQR2Nvbm4gKmNvbm4sIFNpbXBs ZURhdGFiYXNlT2lkTGlzdCAqZGJuYW1lX29pZF9saXN0LAogCQlTaW1wbGVTdHJpbmdMaXN0IGRi X2V4Y2x1ZGVfcGF0dGVybnMpCiB7Ci0JaW50CQkJCQljb3VudGRiID0gMDsKLQlTaW1wbGVEYXRh YmFzZU9pZExpc3RDZWxsCSpjZWxsID0gZGJuYW1lX29pZF9saXN0LT5oZWFkOwotCVNpbXBsZURh dGFiYXNlT2lkTGlzdENlbGwJKnByZWNlbGwgPSBOVUxMOworCVNpbXBsZURhdGFiYXNlT2lkTGlz dENlbGwJKmRib2lkX2NlbGwgPSBkYm5hbWVfb2lkX2xpc3QtPmhlYWQ7CisJU2ltcGxlRGF0YWJh c2VPaWRMaXN0Q2VsbAkqZGJvaWRwcmVjZWxsID0gTlVMTDsKKwlpbnQJCQkJCQkJY291bnRfZGIg PSAwOwogCiAJLyogUmV0dXJuIDAgaWYgdGhlcmUgaXMgbm8gZGIgdG8gcmVzdG9yZS4gKi8KLQlp ZiAoY2VsbCA9PSBOVUxMKQorCWlmIChkYm9pZF9jZWxsID09IE5VTEwpCiAJCXJldHVybiAwOwog Ci0Jd2hpbGUgKGNlbGwgIT0gTlVMTCkKKwkvKiBQcm9jZXNzIG9uZSBieSBvbmUgYWxsIGRibmFt ZXMgYW5kIGlmIG5lZWRzIHRvIHNraXAgcmVzdG9yaW5nLiAqLworCXdoaWxlIChkYm9pZF9jZWxs ICE9IE5VTEwpCiAJewotCQlib29sCQkJCQlza2lwX2RiX3Jlc3RvcmUgPSBmYWxzZTsKLQkJU2lt cGxlU3RyaW5nTGlzdENlbGwJKnByZXYgPSBOVUxMOwotCQlTaW1wbGVEYXRhYmFzZU9pZExpc3RD ZWxsCQkqbmV4dCA9IGNlbGwtPm5leHQ7CisJCWJvb2wJCQkJCQlza2lwX2RiX3Jlc3RvcmUgPSBm YWxzZTsKKwkJU2ltcGxlU3RyaW5nTGlzdENlbGwJCSpwcmV2ID0gTlVMTDsKKwkJU2ltcGxlRGF0 YWJhc2VPaWRMaXN0Q2VsbAkqbmV4dCA9IGRib2lkX2NlbGwtPm5leHQ7CiAKIAkJLyogTm93IG1h dGNoIHRoaXMgZGJuYW1lIHdpdGggZXhjbHVkZS1kYXRhYmFzZSBsaXN0LiAqLwogCQlmb3IgKFNp bXBsZVN0cmluZ0xpc3RDZWxsICpjZWxsZGIgPSBkYl9leGNsdWRlX3BhdHRlcm5zLmhlYWQ7IGNl bGxkYjsgY2VsbGRiID0gY2VsbGRiLT5uZXh0KQogCQl7Ci0JCQlpZiAoaXNfZnVsbF9wYXR0ZXJu KGNvbm4sIGNlbGwtPmRibmFtZSwgY2VsbGRiLT52YWwpKQorCQkJaWYgKGlzX2Z1bGxfcGF0dGVy bihjb25uLCBkYm9pZF9jZWxsLT5kYl9uYW1lLCBjZWxsZGItPnZhbCkpCiAJCQl7CiAJCQkJLyoK IAkJCQkgKiBBcyB3ZSBuZWVkIHRvIHNraXAgdGhpcyBkYm5hbWUgc28gc2V0IGZsYWcgdG8gcmVt b3ZlIGl0IGZyb20KQEAgLTEwNjIsMjIgKzEwNzIsMjUgQEAgZmlsdGVyX2RibmFtZXNfZm9yX3Jl c3RvcmUoUEdjb25uICpjb25uLCBTaW1wbGVEYXRhYmFzZU9pZExpc3QgKmRibmFtZV9vaWRfbGlz dCwKIAogCQkvKiBJbmNyZW1lbnQgY291bnQgaWYgZGIgbmVlZHMgdG8gYmUgcmVzdG9yZWQuICov CiAJCWlmIChza2lwX2RiX3Jlc3RvcmUpCi0JCQlzaW1wbGVfZGJvaWRfbGlzdF9kZWxldGUoZGJu YW1lX29pZF9saXN0LCBjZWxsLCBwcmVjZWxsKTsKKwkJCXNpbXBsZV9kYl9vaWRfbGlzdF9kZWxl dGUoZGJuYW1lX29pZF9saXN0LCBkYm9pZF9jZWxsLCBkYm9pZHByZWNlbGwpOwogCQllbHNlCiAJ CXsKLQkJCWNvdW50ZGIrKzsgLyogSW5jcmVtZW50IGRiIGNvdXRlci4gKi8KLQkJCXByZWNlbGwg PSBjZWxsOworCQkJY291bnRfZGIrKzsgLyogSW5jcmVtZW50IGRiIGNvdXRlci4gKi8KKwkJCWRi b2lkcHJlY2VsbCA9IGRib2lkX2NlbGw7CiAJCX0KIAotCQljZWxsID0gbmV4dDsgLyogUHJvY2Vz cyBuZXh0IGRibmFtZSBmcm9tIGRibmFtZSBsaXN0LiAqLworCQkvKiBQcm9jZXNzIG5leHQgZGJu YW1lIGZyb20gZGJuYW1lIGxpc3QuICovCisJCWRib2lkX2NlbGwgPSBuZXh0OwogCX0KIAotCXJl dHVybiBjb3VudGRiOworCXJldHVybiBjb3VudF9kYjsKIH0KIAogLyoKKyAqIGdldF9kYm5hbWVf b2lkX2xpc3RfZnJvbV9tZmlsZQorICoKICAqIE9wZW4gbWFwLmRhdCBmaWxlIGFuZCByZWFkIGxp bmUgYnkgbGluZSBhbmQgdGhlbiBwcmVwYXJlIGEgbGlzdCBvZiBkYXRhYmFzZQotICogbmFtZXMg YW5kIGNvcnJlc3BvZGluZyBkYm9pZC4KKyAqIG5hbWVzIGFuZCBjb3JyZXNwb2RpbmcgZGJfb2lk LgogICoKICAqIFJldHVybnMsIHRvdGFsIG51bWJlciBvZiBkYXRhYmFzZSBuYW1lcyBpbiBtYXAu ZGF0IGZpbGUuCiAgKi8KQEAgLTEwOTcsMTkgKzExMTAsMTkgQEAgZ2V0X2RibmFtZV9vaWRfbGlz dF9mcm9tX21maWxlKGNvbnN0IGNoYXIgKmR1bXBkaXJwYXRoLCBTaW1wbGVEYXRhYmFzZU9pZExp c3QgKmQKIAlpZiAocGZpbGUgPT0gTlVMTCkKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIG1h cC5kYXQgZmlsZTogJXMiLCBzdHJlcnJvcihlcnJubykpOwogCi0JLyogQXBwZW5kIGFsbCB0aGUg ZGJuYW1lIGFuZCBkYm9pZCB0byB0aGUgbGlzdC4gKi8KKwkvKiBBcHBlbmQgYWxsIHRoZSBkYm5h bWUgYW5kIGRiX29pZCB0byB0aGUgbGlzdC4gKi8KIAl3aGlsZSgoZmdldHMobGluZSwgTUFYUEdQ QVRILCBwZmlsZSkpICE9IE5VTEwpCiAJewotCQlPaWQgICAgICAgICBkYm9pZDsKKwkJT2lkICAg ICAgICAgZGJfb2lkOwogCQljaGFyICAgICAgICBkYm5hbWVbTUFYUEdQQVRIICsgMV07CiAKLQkJ LyogRXh0cmFjdCBkYm5hbWUgYW5kIGRib2lkIGZyb20gbGluZSAqLwotCQlzc2NhbmYobGluZSwg IiV1ICVzIiAsICZkYm9pZCwgZGJuYW1lKTsKKwkJLyogRXh0cmFjdCBkYm5hbWUgYW5kIGRiX29p ZCBmcm9tIGxpbmUgKi8KKwkJc3NjYW5mKGxpbmUsICIldSAlcyIgLCAmZGJfb2lkLCBkYm5hbWUp OwogCi0JCXBnX2xvZ19pbmZvKCJmb3VuZCBkYm5hbWUgYXMgOiVzIGFuZCBkYm9pZDolZCBpbiBt YXAuZGF0IGZpbGUgd2hpbGUgcmVzdG9yaW5nIiwgZGJuYW1lLCBkYm9pZCk7CisJCXBnX2xvZ19p bmZvKCJmb3VuZCBkYm5hbWUgYXMgOiVzIGFuZCBkYl9vaWQ6JWQgaW4gbWFwLmRhdCBmaWxlIHdo aWxlIHJlc3RvcmluZyIsIGRibmFtZSwgZGJfb2lkKTsKIAogCQkvKiBSZXBvcnQgZXJyb3IgaWYg ZmlsZSBoYXMgYW55IGNvcnJ1cHRlZCBkYXRhLiAqLwotCQlpZiAoIU9pZElzVmFsaWQoZGJvaWQp IHx8IHN0cmxlbihkYm5hbWUpID09IDApCisJCWlmICghT2lkSXNWYWxpZChkYl9vaWQpIHx8IHN0 cmxlbihkYm5hbWUpID09IDApCiAJCQlwZ19mYXRhbCgiaW52YWxpZCBlbnRyeSBpbiBtYXAuZGF0 IGZpbGUgYXQgbGluZSA6ICVkIiwgY291bnQgKyAxKTsKIAogCQkvKgpAQCAtMTExNyw3ICsxMTMw LDcgQEAgZ2V0X2RibmFtZV9vaWRfbGlzdF9mcm9tX21maWxlKGNvbnN0IGNoYXIgKmR1bXBkaXJw YXRoLCBTaW1wbGVEYXRhYmFzZU9pZExpc3QgKmQKIAkJICogbmVlZHMgdG8gc2tpcHBlZCBmb3Ig cmVzdG9yZSBvciBub3QgYnV0IGFzIG9mIG5vdywgd2UgYXJlIG1ha2luZwogCQkgKiBhIGxpc3Qg b2YgYWxsIHRoZSBkYXRhYmFzZXMuCiAJCSAqLwotCQlzaW1wbGVfZGJvaWRfbGlzdF9hcHBlbmQo ZGJuYW1lX29pZF9saXN0LCBkYm9pZCwgZGJuYW1lKTsKKwkJc2ltcGxlX2RiX29pZF9saXN0X2Fw cGVuZChkYm5hbWVfb2lkX2xpc3QsIGRiX29pZCwgZGJuYW1lKTsKIAkJY291bnQrKzsKIAl9CiAK QEAgLTExMjgsNiArMTE0MSw4IEBAIGdldF9kYm5hbWVfb2lkX2xpc3RfZnJvbV9tZmlsZShjb25z dCBjaGFyICpkdW1wZGlycGF0aCwgU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpkCiB9CiAKIC8qCisg KiByZXN0b3JlQWxsRGF0YWJhc2VzCisgKgogICogVGhpcyB3aWxsIHJlc3RvcmUgZGF0YWJhc2Vz IHRob3NlIGR1bXBzIGFyZSBwcmVzZW50IGluCiAgKiBkaXJlY3RvcnkgYmFzZWQgb24gbWFwLmRh dCBmaWxlIG1hcHBpbmcuCiAgKgpAQCAtMTE0MCw3ICsxMTU1LDcgQEAgcmVzdG9yZUFsbERhdGFi YXNlcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmR1bXBkaXJwYXRoLAogCQlpbnQgbnVtV29y a2VycykKIHsKIAlTaW1wbGVEYXRhYmFzZU9pZExpc3QJCQlkYm5hbWVfb2lkX2xpc3QgPSB7TlVM TCwgTlVMTH07Ci0JU2ltcGxlRGF0YWJhc2VPaWRMaXN0Q2VsbAkJKmNlbGw7CisJU2ltcGxlRGF0 YWJhc2VPaWRMaXN0Q2VsbAkJKmRib2lkX2NlbGw7CiAJaW50CQkJCQkJCQlleGl0X2NvZGUgPSAw OwogCWludAkJCQkJCQkJbnVtX2RiX3Jlc3RvcmU7CiAJaW50CQkJCQkJCQludW1fdG90YWxfZGI7 CkBAIC0xMTcxLDkgKzExODYsOSBAQCByZXN0b3JlQWxsRGF0YWJhc2VzKFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqZHVtcGRpcnBhdGgsCiAJICogYWZ0ZXIgc2tpcHBpbmcgbmFtZXMgb2YgZXhj bHVkZS1kYXRhYmFzZS4gIE5vdyB3ZSBjYW4gbGF1bmNoIHBhcmFsbGVsCiAJICogd29ya2VycyB0 byByZXN0b3JlIHRoZXNlIGRhdGFiYXNlcy4KIAkgKi8KLQljZWxsID0gZGJuYW1lX29pZF9saXN0 LmhlYWQ7CisJZGJvaWRfY2VsbCA9IGRibmFtZV9vaWRfbGlzdC5oZWFkOwogCi0Jd2hpbGUoY2Vs bCAhPSBOVUxMKQorCXdoaWxlKGRib2lkX2NlbGwgIT0gTlVMTCkKIAl7CiAJCWNoYXIJCXN1YmRp cnBhdGhbTUFYUEdQQVRIXTsKIAkJaW50CQkJZGJleGl0X2NvZGU7CkBAIC0xMTg4LDE2ICsxMjAz LDE2IEBAIHJlc3RvcmVBbGxEYXRhYmFzZXMoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpkdW1w ZGlycGF0aCwKIAkJCW9wdHMtPmNwYXJhbXMub3ZlcnJpZGVfZGJuYW1lID0gTlVMTDsKIAkJfQog Ci0JCXNucHJpbnRmKHN1YmRpcnBhdGgsIE1BWFBHUEFUSCwgIiVzL2RhdGFiYXNlcy8ldSIsIGR1 bXBkaXJwYXRoLCBjZWxsLT5kYm9pZCk7CisJCXNucHJpbnRmKHN1YmRpcnBhdGgsIE1BWFBHUEFU SCwgIiVzL2RhdGFiYXNlcy8ldSIsIGR1bXBkaXJwYXRoLCBkYm9pZF9jZWxsLT5kYl9vaWQpOwog CiAJCS8qCiAJCSAqIERhdGFiYXNlIC1kLy0tZGJuYW1lIGlzIGFscmVhZHkgY3JlYXRlZCBzbyBy ZXNldCBjcmVhdGVEQiB0byBpZ25vcmUKIAkJICogZGF0YWJhc2UgY3JlYXRpb24gZXJyb3IuCiAJ CSAqLwotCQlpZiAoc3RyY21wKGNlbGwtPmRibmFtZSwgb3B0cy0+Y3BhcmFtcy5kYm5hbWUpID09 IDApCisJCWlmIChwZ19zdHJjYXNlY21wKGRib2lkX2NlbGwtPmRiX25hbWUsIG9wdHMtPmNwYXJh bXMuZGJuYW1lKSA9PSAwKQogCQkJb3B0cy0+Y3JlYXRlREIgPSAwOwogCi0JCXBnX2xvZ19pbmZv KCJyZXN0b3JpbmcgZGF0YWJhc2UgXCIlc1wiIiwgY2VsbC0+ZGJuYW1lKTsKKwkJcGdfbG9nX2lu Zm8oInJlc3RvcmluZyBkYXRhYmFzZSBcIiVzXCIiLCBkYm9pZF9jZWxsLT5kYl9uYW1lKTsKIAog CQlkYmV4aXRfY29kZSA9IHJlc3RvcmVPbmVEYXRhYmFzZShzdWJkaXJwYXRoLCBvcHRzLCBudW1X b3JrZXJzKTsKIApAQCAtMTIwNiwxMCArMTIyMSwxMCBAQCByZXN0b3JlQWxsRGF0YWJhc2VzKFBH Y29ubiAqY29ubiwgY29uc3QgY2hhciAqZHVtcGRpcnBhdGgsCiAJCQlleGl0X2NvZGUgPSBkYmV4 aXRfY29kZTsKIAogCQkvKiBTZXQgY3JlYXRlREIgb3B0aW9uIHRvIGNyZWF0ZSBuZXcgZGF0YWJh c2UuICovCi0JCWlmIChzdHJjbXAoY2VsbC0+ZGJuYW1lLCBvcHRzLT5jcGFyYW1zLmRibmFtZSkg PT0gMCkKKwkJaWYgKHBnX3N0cmNhc2VjbXAoZGJvaWRfY2VsbC0+ZGJfbmFtZSwgb3B0cy0+Y3Bh cmFtcy5kYm5hbWUpID09IDApCiAJCQlvcHRzLT5jcmVhdGVEQiA9IDE7CiAKLQkJY2VsbCA9IGNl bGwtPm5leHQ7CisJCWRib2lkX2NlbGwgPSBkYm9pZF9jZWxsLT5uZXh0OwogCX0gLyogZW5kIHdo aWxlICovCiAKIAkvKiBMb2cgbnVtYmVyIG9mIHByb2Nlc3NlZCBkYXRhYmFzZXMuKi8KQEAgLTEy MTksMTAgKzEyMzQsMTEgQEAgcmVzdG9yZUFsbERhdGFiYXNlcyhQR2Nvbm4gKmNvbm4sIGNvbnN0 IGNoYXIgKmR1bXBkaXJwYXRoLAogfQogCiAvKgorICogZXhlY3V0ZV9nbG9iYWxfc3FsX2NvbW1h bmRzCisgKgogICogVGhpcyB3aWxsIG9wZW4gZ2xvYmFsLmRhdCBmaWxlIGFuZCB3aWxsIGV4ZWN1 dGUgYWxsIGdsb2JhbCBzcWwgY29tbWFuZHMgb25lCiAgKiBieSBvbmUgc3RhdGVtZW50LgotICoK LSAqIHNlbWljb2xvbiBpcyBjb25zaWRlcmVkIGFzIHN0YXRlbWVudCB0ZXJtaW5hdG9yLgorICog U2VtaWNvbG9uIGlzIGNvbnNpZGVyZWQgYXMgc3RhdGVtZW50IHRlcm1pbmF0b3IuCiAgKi8KIHN0 YXRpYyB2b2lkCiBleGVjdXRlX2dsb2JhbF9zcWxfY29tbWFuZHMoUEdjb25uICpjb25uLCBjb25z dCBjaGFyICpkdW1wZGlycGF0aCkKQEAgLTEyNTMsNyArMTI2OSw2IEBAIGV4ZWN1dGVfZ2xvYmFs X3NxbF9jb21tYW5kcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmR1bXBkaXJwYXRoKQogCQkJ Y2FzZSBQR1JFU19DT01NQU5EX09LOgogCQkJY2FzZSBQR1JFU19UVVBMRVNfT0s6CiAJCQljYXNl IFBHUkVTX0VNUFRZX1FVRVJZOgotCQkJY2FzZSBQR1JFU19DT1BZX0lOOgogCQkJCWJyZWFrOwog CQkJZGVmYXVsdDoKIAkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBleGVjdXRlIHF1ZXJ5OiAl cyBcbkNvbW1hbmQgd2FzOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pLCBzcWxzdGF0ZW1lbnQu ZGF0YSk7CkBAIC0xMjY1LDE4ICsxMjgwLDIwIEBAIGV4ZWN1dGVfZ2xvYmFsX3NxbF9jb21tYW5k cyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmR1bXBkaXJwYXRoKQogfQogCiAvKgorICogc2lt cGxlX2RiX29pZF9saXN0X2FwcGVuZAorICoKICAqIGFwcGVuZHMgYSBub2RlIHRvIHRoZSBsaXN0 IGluIHRoZSBlbmQuCiAgKi8KIHN0YXRpYyB2b2lkCi1zaW1wbGVfZGJvaWRfbGlzdF9hcHBlbmQo U2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpsaXN0LCBPaWQgZGJvaWQsIGNvbnN0IGNoYXIgKmRibmFt ZSkKK3NpbXBsZV9kYl9vaWRfbGlzdF9hcHBlbmQoU2ltcGxlRGF0YWJhc2VPaWRMaXN0ICpsaXN0 LCBPaWQgZGJfb2lkLCBjb25zdCBjaGFyICpkYm5hbWUpCiB7CiAJU2ltcGxlRGF0YWJhc2VPaWRM aXN0Q2VsbCAqY2VsbDsKIAogCWNlbGwgPSBwZ19tYWxsb2Nfb2JqZWN0KFNpbXBsZURhdGFiYXNl T2lkTGlzdENlbGwpOwogCiAJY2VsbC0+bmV4dCA9IE5VTEw7Ci0JY2VsbC0+ZGJvaWQgPSBkYm9p ZDsKLQljZWxsLT5kYm5hbWUgPSBwZ19zdHJkdXAoZGJuYW1lKTsKKwljZWxsLT5kYl9vaWQgPSBk Yl9vaWQ7CisJY2VsbC0+ZGJfbmFtZSA9IHBnX3N0cmR1cChkYm5hbWUpOwogCiAJaWYgKGxpc3Qt PnRhaWwpCiAJCWxpc3QtPnRhaWwtPm5leHQgPSBjZWxsOwpAQCAtMTI4Niw2ICsxMzAzLDggQEAg c2ltcGxlX2Rib2lkX2xpc3RfYXBwZW5kKFNpbXBsZURhdGFiYXNlT2lkTGlzdCAqbGlzdCwgT2lk IGRib2lkLCBjb25zdCBjaGFyICpkYm4KIH0KIAogLyoKKyAqIHNpbXBsZV9zdHJpbmdfbGlzdF9k ZWxldGUKKyAqCiAgKiBkZWxldGUgY2VsbCBmcm9tIHN0cmluZyBsaXN0LgogICovCiBzdGF0aWMg dm9pZApAQCAtMTMwNSwxMCArMTMyNCwxMiBAQCBzaW1wbGVfc3RyaW5nX2xpc3RfZGVsZXRlKFNp bXBsZVN0cmluZ0xpc3QgKmxpc3QsIFNpbXBsZVN0cmluZ0xpc3RDZWxsICpjZWxsLAogfQogCiAv KgorICogc2ltcGxlX2RiX29pZF9saXN0X2RlbGV0ZQorICoKICAqIGRlbGV0ZSBjZWxsIGZyb20g ZGF0YWJhc2UgYW5kIG9pZCBsaXN0LgogICovCiBzdGF0aWMgdm9pZAotc2ltcGxlX2Rib2lkX2xp c3RfZGVsZXRlKFNpbXBsZURhdGFiYXNlT2lkTGlzdCAqbGlzdCwgU2ltcGxlRGF0YWJhc2VPaWRM aXN0Q2VsbCAqY2VsbCwKK3NpbXBsZV9kYl9vaWRfbGlzdF9kZWxldGUoU2ltcGxlRGF0YWJhc2VP aWRMaXN0ICpsaXN0LCBTaW1wbGVEYXRhYmFzZU9pZExpc3RDZWxsICpjZWxsLAogCQlTaW1wbGVE YXRhYmFzZU9pZExpc3RDZWxsICpwcmV2KQogewogCWlmIChwcmV2ID09IE5VTEwpCkBAIC0xMzQ4 LDcgKzEzNjksNyBAQCBpc19mdWxsX3BhdHRlcm4oUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpz dHIsIGNvbnN0IGNoYXIgKnB0cm4pCiAJewogCQlpZiAoUFFudHVwbGVzKHJlc3VsdCkgPT0gMSkK IAkJewotCQkJY29uc3QgY2hhcgkJKm91dHN0cjsKKwkJCWNvbnN0IGNoYXIJKm91dHN0cjsKIAog CQkJb3V0c3RyID0gUFFnZXR2YWx1ZShyZXN1bHQsIDAsIDApOwogCkBAIC0xMzU5LDcgKzEzODAs NyBAQCBpc19mdWxsX3BhdHRlcm4oUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpzdHIsIGNvbnN0 IGNoYXIgKnB0cm4pCiAJCQkgKiBJZiBvdXRwdXQgc3RyaW5nIG9mIHN1YnN0cmluZyBmdW5jdGlv biBpcyBtYXRjaGVzIHdpdGggc3RyLCB0aGVuCiAJCQkgKiB3ZSBjYW4gY29uc3RydWN0IHN0ciBm cm9tIHBhdHRlcm4uCiAJCQkgKi8KLQkJCWlmIChzdHJjbXAob3V0c3RyLCBzdHIpID09IDApCisJ CQlpZiAocGdfc3RyY2FzZWNtcChvdXRzdHIsIHN0cikgPT0gMCkKIAkJCQlyZXR1cm4gdHJ1ZTsK IAkJCWVsc2UKIAkJCQlyZXR1cm4gZmFsc2U7Ci0tIAoyLjM5LjMKCg== --000000000000125a11062b32cd78--