Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vzZhx-00185X-0D for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Mar 2026 12:27:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vzZhv-00FxQy-1V for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Mar 2026 12:27:35 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vzZhu-00FxQa-1n for pgsql-hackers@lists.postgresql.org; Mon, 09 Mar 2026 12:27:35 +0000 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vzZhs-00000001HVV-0q25 for pgsql-hackers@lists.postgresql.org; Mon, 09 Mar 2026 12:27:34 +0000 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-8297310ce0aso3092633b3a.2 for ; Mon, 09 Mar 2026 05:27:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773059251; cv=none; d=google.com; s=arc-20240605; b=WipT4R4TV37D+0Amj+CxKiBageCNhmWuHkL534IZ8Y+KzQup6Q0hpI1MfsdAfycl9z h3u/N5GgYF+8xOp8ld9qwMDIWtxmb3wdoRahV8sNMCdDGGbKfMJrUrAa6oUSnQnAdDrp 0OolEEHfOgMYcUqrNmHg8l5apHXuWAC82kHDAx8ytkkXw5Bdwe7VzL9ZV9vztPhtV+R4 5me+DYvje46iWBrnzDY6sKby/Am2A0elcBluWKy9/Cn68eGDbcnieNfm3Fnj/ix+ZFE6 ocg0GwJY08TBhsPq0ZKo/4wOivEfAfKklOZs9kUsEDBvy++ONokKJopYvKZ4NlCT00uc UPmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=CZ6WZZFuH9p4tp0qeg9wsVZp96PhzCMT6L6vE6+Ov5M=; fh=HrRHnA65oea9YqaVRCWpuLeshDKfJxM9RFSEEX4AfhY=; b=SJAGyr4CnDK2enOtFa5o12Sxb7wtOFYqRj5ok8UUvxy2I58cvxmGY2Zy9HPw/gsBni dPb8OquyvM2cCd3wm+t5QV2mJICd/94kElWuYTlhnjdSBLvwXJ5btEGQ6QMI5OKC19Vj t3GndUKheO43Kb1cbVjGLN1caC/95RV0d/gWf7yVJSlu9HznZU50YRuR71wsF4qzPFvI TNu9ue9QfvHzsT2YTZW57tE+fSSN58sSExmf2/N4eqUfd83Y52GKfIu+FHfv7hfPzqZv 1FN3Q0NPGv3r7Aow+hklyTUXAJpIJkGzrcriDnDI5jRgXhRVKecVGe+ZTjGDWtDSQeO6 YTKQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773059251; x=1773664051; darn=lists.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=CZ6WZZFuH9p4tp0qeg9wsVZp96PhzCMT6L6vE6+Ov5M=; b=TKALrHl9qb59XJOwSV4HYh7J0gsWEp8xm/q64nC5IVa7FO1CsjyPse+E2GKESmGVE+ Y3muH0g4jy/MYC4t/pKVPm+rRmO+k26WbRgUBIMD2fklqjw+ZrCs2vmGXO0tVy3YcfiG Ff2ksCyvWOtqh5IR0gwj/IJFuKMseiQFjtq81FMDym8wySM4Y7m39phrW3zTbe06xUac E7mbwfoNQnXPRa/j0K0/vS1DWNIYw39TLBSGW0VqGE9MyJxsx6dGbJFIDz97m7xIQ/0b R3/ecTgIOOvDbJF9Gmr3eJCj0sEldVu/H3tOnNTMNjKsXPseGtw3fqXKednczzTE2YhF YHAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773059251; x=1773664051; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CZ6WZZFuH9p4tp0qeg9wsVZp96PhzCMT6L6vE6+Ov5M=; b=GeVLSOYmf08yoh/9Hw+KT4lMocknJCamWv1s2Vfc267AUrP+NuPLDNKHj4fE8e/BSG jdQi/rcmB9MjhVSuZcDSl1E0PkG8bLY7uc/PdQ47uXnWF3wHb233TovfYbmxlShGs7ce ZVxKFUvW9I/bWUloW4HBO9GhSdVQTBcU3gdDXIHJ1xb2eLd69k545Dpt03p5gFPwih2h AzIAMRWT+90XgrxRMwQGCCygnPCyk9yZIDM4oreIB0ZdzW+5JORgIwBspmD2mjfk112B WAig8FuOYKGY1t6Y05TBhsHm31lAYtSQHZU6RLhLHou3d3oVoVj2Hp1TO9nWFL0MKEnA /Zgw== X-Forwarded-Encrypted: i=1; AJvYcCWQUhnpenIDcbBzV/+gY600QE280zoosCCy0ruAFDMG7SsJOEqPrvCPf6l19v9yw2WIVpDucsyg3CWA3LIN@lists.postgresql.org X-Gm-Message-State: AOJu0YyF8lPV07J8DWDuHZCtmyvvHkTzoF6dgQG0cr0jMh9yQJgKbYY7 XNPrrO3YfXTfcTWy5qB/j4WbbXUw4TDmU4TomdmcH/79kZ9r0JkYK1FQZoqEKSyH16aoRogHNEg kXhZ1XaaZpEwTngmVkvKhfDID1OFnfOA= X-Gm-Gg: ATEYQzyKxDDSQKBOOL8isYKj86PVelnb9X2LrUOVJ2vvZEopD50EF842antFILFv+Ek jvU7ZE8KSIq+lC2f43H9XoGZZZbUqC6N2qOo7O/OEfxZFzDPmNs9CX/RsZJpxhuwSBh+AedEFyl 3DCA8US0+Cxd9bIORzDnU0TigQ8zUbduxni7/giAN2FlcXpgoi7Y0cbmUCVDt0LLxe5GpoNV1Us 2Rk85aF7gEpdltxK8HTIrBLrsKZ4NXLk3pEhZ2oQPKcDCg74oEfVGdgO8+y2g8kMnMMUsd58hay RRT2V8zsPg== X-Received: by 2002:a05:6a00:2346:b0:829:6f28:1d6 with SMTP id d2e1a72fcca58-829a2dc08b0mr11037491b3a.13.1773059251058; Mon, 09 Mar 2026 05:27:31 -0700 (PDT) MIME-Version: 1.0 References: <72973471-8946-40c7-8b2d-8f95540d90e2@dunslane.net> In-Reply-To: <72973471-8946-40c7-8b2d-8f95540d90e2@dunslane.net> From: Amul Sul Date: Mon, 9 Mar 2026 17:56:50 +0530 X-Gm-Features: AaiRm51cSKwE9lJ2p70CddzSSmLKlQZBIwjmnw1TMnpKm0yxAklPaX-EBCNCvV0 Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Andrew Dunstan Cc: Robert Haas , Chao Li , Jakub Wartak , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000d375fb064c9686ba" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d375fb064c9686ba Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Mar 7, 2026 at 3:51=E2=80=AFAM Andrew Dunstan = wrote: > > > On 2026-03-04 We 4:50 PM, Andrew Dunstan wrote: > > > > > > On 2026-03-04 We 7:52 AM, Amul Sul wrote: > >> On Wed, Mar 4, 2026 at 6:07=E2=80=AFAM Andrew Dunstan wrote: > >>> On 2026-03-02 Mo 8:00 AM, Amul Sul wrote: > >>>> On Wed, Feb 18, 2026 at 12:28=E2=80=AFPM Amul Sul= wrote: > >>>>> On Tue, Feb 10, 2026 at 3:06=E2=80=AFPM Amul Sul= wrote: > >>>>>> On Wed, Feb 4, 2026 at 6:39=E2=80=AFPM Amul Sul= wrote: > >>>>>>> On Wed, Jan 28, 2026 at 2:41=E2=80=AFAM Robert Haas wrote: > >>>>>>>> On Tue, Jan 27, 2026 at 7:07=E2=80=AFAM Amul Sul wrote: > >>>>>>>>> In the attached version, I am using the WAL segment name as the= hash > >>>>>>>>> key, which is much more straightforward. I have rewritten > >>>>>>>>> read_archive_wal_page(), and it looks much cleaner than before.= The > >>>>>>>>> logic to discard irrelevant WAL files is still within > >>>>>>>>> get_archive_wal_entry. I added an explanation for setting cur_w= al to > >>>>>>>>> NULL, which is now handled in the separate function I mentioned > >>>>>>>>> previously. > >>>>>>>>> > >>>>>>>>> Kindly have a look at the attached version; let me know if you = are > >>>>>>>>> still not happy with the current approach for filtering/discard= ing > >>>>>>>>> irrelevant WAL segments. It isn't much different from the previ= ous > >>>>>>>>> version, but I have tried to keep it in a separate routine for = better > >>>>>>>>> code readability, with comments to make it easier to understand= . I > >>>>>>>>> also added a comment for ArchivedWALFile. > >>>>>>>> I feel like the division of labor between get_archive_wal_entry(= ) and > >>>>>>>> read_archive_wal_page() is odd. I noticed this in the last versi= on, > >>>>>>>> too, and it still seems to be the case. get_archive_wal_entry() = first > >>>>>>>> calls ArchivedWAL_lookup(). If that finds an entry, it just retu= rns. > >>>>>>>> If it doesn't, it loops until an entry for the requested file sh= ows up > >>>>>>>> and then returns it. Then control returns to read_archive_wal_pa= ge() > >>>>>>>> which loops some more until we have all the data we need for the > >>>>>>>> requested file. But it seems odd to me to have two separate loop= s > >>>>>>>> here. I think that the first loop is going to call read_archive_= file() > >>>>>>>> until we find the beginning of the file that we care about and t= hen > >>>>>>>> the second one is going to call read_archive_file() some more un= til we > >>>>>>>> have read enough of it to satisfy the request. It feels odd to m= e to > >>>>>>>> do it that way, as if we told somebody to first wait until 9 o'c= lock > >>>>>>>> and then wait another 30 minutes, instead of just telling them t= o wait > >>>>>>>> until 9:30. I realize it's not quite the same thing, because apa= rt > >>>>>>>> from calling read_archive_file(), the two loops do different thi= ngs, > >>>>>>>> but I still think it looks odd. > >>>>>>>> > >>>>>>>> + /* > >>>>>>>> + * Ignore if the timeline is different or the current segment i= s not > >>>>>>>> + * the desired one. > >>>>>>>> + */ > >>>>>>>> + XLogFromFileName(entry->fname, &curSegTimeline, &curSegNo, Wal= SegSz); > >>>>>>>> + if (privateInfo->timeline !=3D curSegTimeline || > >>>>>>>> + privateInfo->startSegNo > curSegNo || > >>>>>>>> + privateInfo->endSegNo < curSegNo || > >>>>>>>> + segno > curSegNo) > >>>>>>>> + { > >>>>>>>> + free_archive_wal_entry(entry->fname, privateInfo); > >>>>>>>> + continue; > >>>>>>>> + } > >>>>>>>> > >>>>>>>> The comment doesn't match the code. If it did, the test would be > >>>>>>>> (privateInfo->timeline !=3D curSegTimeline || segno !=3D curSegn= o). But > >>>>>>>> instead the segno test is > rather than !=3D, and the checks aga= inst > >>>>>>>> startSegNo and endSegNo aren't explained at all. I think I under= stand > >>>>>>>> why the segno test uses > rather than !=3D, but it's the point o= f the > >>>>>>>> comment to explain things like that, rather than leaving the rea= der to > >>>>>>>> guess. And I don't know why we also need to test startSegNo and > >>>>>>>> endSegNo. > >>>>>>>> > >>>>>>>> I also wonder what the point is of doing XLogFromFileName() on t= he > >>>>>>>> fname provided by the caller and then again on entry->fname. Cou= ldn't > >>>>>>>> you just compare the strings? > >>>>>>>> > >>>>>>>> Again, the division of labor is really odd here. It's the job of > >>>>>>>> astreamer_waldump_content() to skip things that aren't WAL files= at > >>>>>>>> all, but it's the job of get_archive_wal_entry() to skip things = that > >>>>>>>> are WAL files but not the one we want. I disagree with putting t= hose > >>>>>>>> checks in completely separate parts of the code. > >>>>>>>> > >>>>>>> Keeping the timeline and segment start-end range checks inside th= e > >>>>>>> archive streamer creates a circular dependency that cannot be res= olved > >>>>>>> without a 'dirty hack'. We must read the first available WAL file= page > >>>>>>> to determine the wal_segment_size before it can calculate the tar= get > >>>>>>> segment range. Moving the checks inside the streamer would make i= t > >>>>>>> impossible to process that initial file, as the necessary filteri= ng > >>>>>>> parameters -- would still be unknown which would need to be skip= ped > >>>>>>> for the first read somehow. What if later we realized that the fi= rst > >>>>>>> WAL file which was allowed to be streamed by skipping that check = is > >>>>>>> irrelevant and doesn't fall under the start-end segment range? > >>>>>>> > >>>>>> Please have a look at the attached version, specifically patch 000= 5. > >>>>>> In astreamer_waldump_content(), I have moved the WAL file filtrati= on > >>>>>> check from get_archive_wal_entry(). This check will be skipped dur= ing > >>>>>> the initial read in init_archive_reader(), which instead performs = it > >>>>>> explicitly once it determines the WAL segment size and the start/e= nd > >>>>>> segments. > >>>>>> > >>>>>> To access the WAL segment size inside astreamer_waldump_content(),= I > >>>>>> have moved the WAL segment size variable into the XLogDumpPrivate > >>>>>> structure in the separate 0004 patch. > >>>>> Attached is an updated version including the aforesaid changes. It > >>>>> includes a new refactoring patch (0001) that moves the logic for > >>>>> identifying tar archives and their compression types from > >>>>> pg_basebackup and pg_verifybackup into a separate-reusable function= , > >>>>> per a suggestion from Euler [1]. Additionally, I have added a test > >>>>> for the contrecord decoding to the main patch (now 0006). > >>>>> > >>>>> 1]http://postgr.es/m/3c8e7b02-2152-495a-a0b6-e37cf9286a70@app.fastm= ail.com > >>>>> > >>>> Rebased against the latest master, fixed typos in code comments, and > >>>> replaced palloc0 with palloc0_object. > >>>> > >>> Hi Amul. > >>> > >>> > >>> I think this looks in pretty good shape. > >>> > >> Thank you very much for looking at the patch. > >> > >>> Attached are patches for a few things I think could be fixed. They ar= e > >>> mostly self-explanatory. The TAP test fix is the only sane way I coul= d > >>> come up with stopping the skip code you had from reporting a wildly > >>> inaccurate number of tests skipped. The sane way to do this from a > >>> Test::More perspective is a subtest, but unfortunately meson does not > >>> like subtest output, which is why we don't use it elsewhere, so the o= nly > >>> way I could come up with was to split this out into a separate test. = Of > >>> course, we might just say we don't care about the misreport, in which > >>> case we could just live with things as they are. > >>> > >> I agree that the reported skip number was incorrect, and I have > >> corrected it in the attached patch. I haven't applied your patch for > >> the TAP test improvements yet because I wanted to double-check it > >> first with you; the patch as it stood created duplicate tests already > >> present in 001_basic.pl. To avoid this duplication, I have added a > >> loop that performs tests for both plain and tar WAL directory inputs, > >> similar to the approach used in pg_verifybackup for different > >> compression type tests (e.g., 008_untar.pl, 010_client_untar.pl). I > >> don't have any objection to doing so if you feel the duplication is > >> acceptable, but I feel that using a loop for the tests in 001_basic.pl > >> is a bit tidier. Let me know your thoughts. > > > > > > I will take a look. > > > > I'm ok, with doing it this way. It's just a bit fragile - if we add a > test the number will be wrong. But maybe it's not worth worrying about. > > Everything else looks fairly good. The attached fixes a few relatively > minor issues in v15. The main one is that it stops allocating/freeing a > buffer every time we call read_archive_file() and instead adds a > reusable buffer. It also adds back wal-directory as an undocumented > alias of wal-path, to avoid breaking legacy scripts unnecessarily, and > adds constness to the fname argument of pg_tar_compress_algorithm, as > well as fixing some indentation and grammar issues. > > All in all I think we're in good shape. Thanks for the review. I have incorporated your suggested changes, with one exception: I have skipped the buffer reallocation code in read_archive_file(). Since we only handle two specific read sizes -- XLOG_BLCKSZ and READ_CHUNK_SIZE (128 KB, we defined in archive_waldump.c) -- dynamic reallocation seems unnecessary. Instead, I moved the allocation to init_archive_reader(), which now initializes a buffer at READ_CHUNK_SIZE. I also added an assertion in read_archive_file() to ensure that no read request exceeds this allocated capacity. Kindly have a look at the attached version and let me know your thoughts. Regards, Amul --000000000000d375fb064c9686ba Content-Type: application/x-patch; name="v16-0001-Refactor-Move-tar-archive-parsing-into-a-common-.patch" Content-Disposition: attachment; filename="v16-0001-Refactor-Move-tar-archive-parsing-into-a-common-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmj482m60 RnJvbSA1ZjViZTY5NDA2NTFmODllYTg0M2E2ZWU5OGVlYWIwMDg3ZmFiOGZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMTcgRmViIDIwMjYgMTQ6NTE6MTEgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNiAwMS8xMV0g UmVmYWN0b3I6IE1vdmUgdGFyIGFyY2hpdmUgcGFyc2luZyBpbnRvIGEgY29tbW9uCiBsb2NhdGlv bi4KCnBnX2Jhc2ViYWNrdXAgYW5kIHBnX3ZlcmlmeWJhY2t1cCBib3RoIHJlcXVpcmUgbG9naWMg dG8gaWRlbnRpZnkgdGFyCmZpbGVzIGFuZCBkZXRlcm1pbmUgdGhlaXIgY29tcHJlc3Npb24gdHlw ZXMuIFNpbWlsYXIgZnVuY3Rpb25hbGl0eQp3aWxsIGJlIG5lZWRlZCBmb3IgcGdfd2FsZHVtcCB3 aGVuIGl0IGdldHMgdGhlIGNhcGFiaWxpdHkgdG8gZGVjb2RlCldBTCBmaWxlcyBmcm9tIHRhciBh cmNoaXZlcy4gTW92aW5nIHRoaXMgbG9naWMgdG8gYSBjb21tb24gbG9jYXRpb24KYWxsb3dzIGZv ciByZXVzZSBhbmQgcHJldmVudHMgY29kZSBkdXBsaWNhdGlvbi4KLS0tCiBzcmMvYmluL3BnX2Jh c2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jICAgICB8IDM2ICsrKysrKystLS0tLS0tLS0tLS0tLS0t CiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyB8IDEyICstLS0tLS0t CiBzcmMvY29tbW9uL2NvbXByZXNzaW9uLmMgICAgICAgICAgICAgICAgICB8IDMwICsrKysrKysr KysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NvbW1vbi9jb21wcmVzc2lvbi5oICAgICAgICAgIHwg IDIgKysKIDQgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYyBiL3Ny Yy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMKaW5kZXggZmExNjlhOGQ2NDIuLmMx YTQ2NzJhYTZmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1 cC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMKQEAgLTEwNzAs MTIgKzEwNzAsOSBAQCBDcmVhdGVCYWNrdXBTdHJlYW1lcihjaGFyICphcmNoaXZlX25hbWUsIGNo YXIgKnNwY2xvY2F0aW9uLAogCWFzdHJlYW1lciAgKm1hbmlmZXN0X2luamVjdF9zdHJlYW1lciA9 IE5VTEw7CiAJYm9vbAkJaW5qZWN0X21hbmlmZXN0OwogCWJvb2wJCWlzX3RhciwKLQkJCQlpc190 YXJfZ3osCi0JCQkJaXNfdGFyX2x6NCwKLQkJCQlpc190YXJfenN0ZCwKIAkJCQlpc19jb21wcmVz c2VkX3RhcjsKKwlwZ19jb21wcmVzc19hbGdvcml0aG0gY29tcHJlc3NlZF90YXJfYWxnb3JpdGht OwogCWJvb2wJCW11c3RfcGFyc2VfYXJjaGl2ZTsKLQlpbnQJCQlhcmNoaXZlX25hbWVfbGVuID0g c3RybGVuKGFyY2hpdmVfbmFtZSk7CiAKIAkvKgogCSAqIE5vcm1hbGx5LCB3ZSBlbWl0IHRoZSBi YWNrdXAgbWFuaWZlc3QgYXMgYSBzZXBhcmF0ZSBmaWxlLCBidXQgd2hlbgpAQCAtMTA4NCwyNCAr MTA4MSwxMyBAQCBDcmVhdGVCYWNrdXBTdHJlYW1lcihjaGFyICphcmNoaXZlX25hbWUsIGNoYXIg KnNwY2xvY2F0aW9uLAogCSAqLwogCWluamVjdF9tYW5pZmVzdCA9IChmb3JtYXQgPT0gJ3QnICYm IHN0cmNtcChiYXNlZGlyLCAiLSIpID09IDAgJiYgbWFuaWZlc3QpOwogCi0JLyogSXMgdGhpcyBh IHRhciBhcmNoaXZlPyAqLwotCWlzX3RhciA9IChhcmNoaXZlX25hbWVfbGVuID4gNCAmJgotCQkJ ICBzdHJjbXAoYXJjaGl2ZV9uYW1lICsgYXJjaGl2ZV9uYW1lX2xlbiAtIDQsICIudGFyIikgPT0g MCk7Ci0KLQkvKiBJcyB0aGlzIGEgLnRhci5neiBhcmNoaXZlPyAqLwotCWlzX3Rhcl9neiA9IChh cmNoaXZlX25hbWVfbGVuID4gNyAmJgotCQkJCSBzdHJjbXAoYXJjaGl2ZV9uYW1lICsgYXJjaGl2 ZV9uYW1lX2xlbiAtIDcsICIudGFyLmd6IikgPT0gMCk7Ci0KLQkvKiBJcyB0aGlzIGEgLnRhci5s ejQgYXJjaGl2ZT8gKi8KLQlpc190YXJfbHo0ID0gKGFyY2hpdmVfbmFtZV9sZW4gPiA4ICYmCi0J CQkJICBzdHJjbXAoYXJjaGl2ZV9uYW1lICsgYXJjaGl2ZV9uYW1lX2xlbiAtIDgsICIudGFyLmx6 NCIpID09IDApOwotCi0JLyogSXMgdGhpcyBhIC50YXIuenN0IGFyY2hpdmU/ICovCi0JaXNfdGFy X3pzdGQgPSAoYXJjaGl2ZV9uYW1lX2xlbiA+IDggJiYKLQkJCQkgICBzdHJjbXAoYXJjaGl2ZV9u YW1lICsgYXJjaGl2ZV9uYW1lX2xlbiAtIDgsICIudGFyLnpzdCIpID09IDApOworCS8qIENoZWNr IHdoZXRoZXIgaXQgaXMgYSB0YXIgYXJjaGl2ZSBhbmQgaXRzIGNvbXByZXNzaW9uIHR5cGUgKi8K Kwlpc190YXIgPSBwYXJzZV90YXJfY29tcHJlc3NfYWxnb3JpdGhtKGFyY2hpdmVfbmFtZSwKKwkJ CQkJCQkJCQkgICZjb21wcmVzc2VkX3Rhcl9hbGdvcml0aG0pOwogCiAJLyogSXMgdGhpcyBhbnkg a2luZCBvZiBjb21wcmVzc2VkIHRhcj8gKi8KLQlpc19jb21wcmVzc2VkX3RhciA9IGlzX3Rhcl9n eiB8fCBpc190YXJfbHo0IHx8IGlzX3Rhcl96c3RkOworCWlzX2NvbXByZXNzZWRfdGFyID0gKGlz X3RhciAmJgorCQkJCQkJIGNvbXByZXNzZWRfdGFyX2FsZ29yaXRobSAhPSBQR19DT01QUkVTU0lP Tl9OT05FKTsKIAogCS8qCiAJICogSW5qZWN0aW5nIHRoZSBtYW5pZmVzdCBpbnRvIGEgY29tcHJl c3NlZCB0YXIgZmlsZSB3b3VsZCBiZSBwb3NzaWJsZSBpZgpAQCAtMTEyOCw3ICsxMTE0LDcgQEAg Q3JlYXRlQmFja3VwU3RyZWFtZXIoY2hhciAqYXJjaGl2ZV9uYW1lLCBjaGFyICpzcGNsb2NhdGlv biwKIAkJCQkJCSAgKHNwY2xvY2F0aW9uID09IE5VTEwgJiYgd3JpdGVyZWNvdmVyeWNvbmYpKTsK IAogCS8qIEF0IHByZXNlbnQsIHdlIG9ubHkga25vdyBob3cgdG8gcGFyc2UgdGFyIGFyY2hpdmVz LiAqLwotCWlmIChtdXN0X3BhcnNlX2FyY2hpdmUgJiYgIWlzX3RhciAmJiAhaXNfY29tcHJlc3Nl ZF90YXIpCisJaWYgKG11c3RfcGFyc2VfYXJjaGl2ZSAmJiAhaXNfdGFyKQogCXsKIAkJcGdfbG9n X2Vycm9yKCJjYW5ub3QgcGFyc2UgYXJjaGl2ZSBcIiVzXCIiLCBhcmNoaXZlX25hbWUpOwogCQlw Z19sb2dfZXJyb3JfZGV0YWlsKCJPbmx5IHRhciBhcmNoaXZlcyBjYW4gYmUgcGFyc2VkLiIpOwpA QCAtMTI2MywxMyArMTI0OSwxMyBAQCBDcmVhdGVCYWNrdXBTdHJlYW1lcihjaGFyICphcmNoaXZl X25hbWUsIGNoYXIgKnNwY2xvY2F0aW9uLAogCSAqIElmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQg YSBzZXJ2ZXIgY29tcHJlc3NlZCBhcmNoaXZlIGFsb25nIHdpdGgKIAkgKiBhcmNoaXZlIGV4dHJh Y3Rpb24gYXQgY2xpZW50IHRoZW4gd2UgbmVlZCB0byBkZWNvbXByZXNzIGl0LgogCSAqLwotCWlm IChmb3JtYXQgPT0gJ3AnKQorCWlmIChmb3JtYXQgPT0gJ3AnICYmIGlzX2NvbXByZXNzZWRfdGFy KQogCXsKLQkJaWYgKGlzX3Rhcl9neikKKwkJaWYgKGNvbXByZXNzZWRfdGFyX2FsZ29yaXRobSA9 PSBQR19DT01QUkVTU0lPTl9HWklQKQogCQkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfZ3ppcF9kZWNv bXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKLQkJZWxzZSBpZiAoaXNfdGFyX2x6NCkKKwkJZWxzZSBp ZiAoY29tcHJlc3NlZF90YXJfYWxnb3JpdGhtID09IFBHX0NPTVBSRVNTSU9OX0xaNCkKIAkJCXN0 cmVhbWVyID0gYXN0cmVhbWVyX2x6NF9kZWNvbXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKLQkJZWxz ZSBpZiAoaXNfdGFyX3pzdGQpCisJCWVsc2UgaWYgKGNvbXByZXNzZWRfdGFyX2FsZ29yaXRobSA9 PSBQR19DT01QUkVTU0lPTl9aU1REKQogCQkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfenN0ZF9kZWNv bXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdf dmVyaWZ5YmFja3VwLmMKaW5kZXggY2JjOTQ0NzM4NGYuLjMxZjYwNmM0NWIxIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYworKysgYi9zcmMvYmlu L3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwpAQCAtOTQxLDE3ICs5NDEsNyBAQCBw cmVjaGVja190YXJfYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAq cmVscGF0aCwKIAl9CiAKIAkvKiBOb3csIGNoZWNrIHRoZSBjb21wcmVzc2lvbiB0eXBlIG9mIHRo ZSB0YXIgKi8KLQlpZiAoc3RyY21wKHN1ZmZpeCwgIi50YXIiKSA9PSAwKQotCQljb21wcmVzc19h bGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9OT05FOwotCWVsc2UgaWYgKHN0cmNtcChzdWZmaXgs ICIudGd6IikgPT0gMCkKLQkJY29tcHJlc3NfYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fR1pJ UDsKLQllbHNlIGlmIChzdHJjbXAoc3VmZml4LCAiLnRhci5neiIpID09IDApCi0JCWNvbXByZXNz X2FsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0daSVA7Ci0JZWxzZSBpZiAoc3RyY21wKHN1ZmZp eCwgIi50YXIubHo0IikgPT0gMCkKLQkJY29tcHJlc3NfYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJ T05fTFo0OwotCWVsc2UgaWYgKHN0cmNtcChzdWZmaXgsICIudGFyLnpzdCIpID09IDApCi0JCWNv bXByZXNzX2FsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX1pTVEQ7Ci0JZWxzZQorCWlmICghcGFy c2VfdGFyX2NvbXByZXNzX2FsZ29yaXRobShzdWZmaXgsICZjb21wcmVzc19hbGdvcml0aG0pKQog CXsKIAkJcmVwb3J0X2JhY2t1cF9lcnJvcihjb250ZXh0LAogCQkJCQkJCSJmaWxlIFwiJXNcIiBp cyBub3QgZXhwZWN0ZWQgaW4gYSB0YXIgZm9ybWF0IGJhY2t1cCIsCmRpZmYgLS1naXQgYS9zcmMv Y29tbW9uL2NvbXByZXNzaW9uLmMgYi9zcmMvY29tbW9uL2NvbXByZXNzaW9uLmMKaW5kZXggOTJj ZDRlYzdhMGQuLmZiMjc1MDFkMjk3IDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL2NvbXByZXNzaW9u LmMKKysrIGIvc3JjL2NvbW1vbi9jb21wcmVzc2lvbi5jCkBAIC00MSw2ICs0MSwzNiBAQCBzdGF0 aWMgaW50CWV4cGVjdF9pbnRlZ2VyX3ZhbHVlKGNoYXIgKmtleXdvcmQsIGNoYXIgKnZhbHVlLAog c3RhdGljIGJvb2wgZXhwZWN0X2Jvb2xlYW5fdmFsdWUoY2hhciAqa2V5d29yZCwgY2hhciAqdmFs dWUsCiAJCQkJCQkJCSBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uICpyZXN1bHQpOwogCisvKgor ICogTG9vayB1cCBhIGNvbXByZXNzaW9uIGFsZ29yaXRobSBieSBhcmNoaXZlIGZpbGUgZXh0ZW5z aW9uLiBSZXR1cm5zIHRydWUgYW5kCisgKiBzZXRzICphbGdvcml0aG0gaWYgdGhlIG5hbWUgaXMg cmVjb2duaXplZC4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCisgKi8KK2Jvb2wKK3BhcnNlX3Rh cl9jb21wcmVzc19hbGdvcml0aG0oY29uc3QgY2hhciAqZm5hbWUsIHBnX2NvbXByZXNzX2FsZ29y aXRobSAqYWxnb3JpdGhtKQoreworCWludAkJCWZuYW1lX2xlbiA9IHN0cmxlbihmbmFtZSk7CisK KwlpZiAoZm5hbWVfbGVuID49IDQgJiYKKwkJc3RyY21wKGZuYW1lICsgZm5hbWVfbGVuIC0gNCwg Ii50YXIiKSA9PSAwKQorCQkqYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fTk9ORTsKKwllbHNl IGlmIChmbmFtZV9sZW4gPj0gNCAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDQs ICIudGd6IikgPT0gMCkKKwkJKmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0daSVA7CisJZWxz ZSBpZiAoZm5hbWVfbGVuID49IDcgJiYKKwkJCSBzdHJjbXAoZm5hbWUgKyBmbmFtZV9sZW4gLSA3 LCAiLnRhci5neiIpID09IDApCisJCSphbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOwor CWVsc2UgaWYgKGZuYW1lX2xlbiA+PSA4ICYmCisJCQkgc3RyY21wKGZuYW1lICsgZm5hbWVfbGVu IC0gOCwgIi50YXIubHo0IikgPT0gMCkKKwkJKmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0xa NDsKKwllbHNlIGlmIChmbmFtZV9sZW4gPj0gOCAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1l X2xlbiAtIDgsICIudGFyLnpzdCIpID09IDApCisJCSphbGdvcml0aG0gPSBQR19DT01QUkVTU0lP Tl9aU1REOworCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKIC8q CiAgKiBMb29rIHVwIGEgY29tcHJlc3Npb24gYWxnb3JpdGhtIGJ5IG5hbWUuIFJldHVybnMgdHJ1 ZSBhbmQgc2V0cyAqYWxnb3JpdGhtCiAgKiBpZiB0aGUgbmFtZSBpcyByZWNvZ25pemVkLiBPdGhl cndpc2UgcmV0dXJucyBmYWxzZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi9jb21w cmVzc2lvbi5oIGIvc3JjL2luY2x1ZGUvY29tbW9uL2NvbXByZXNzaW9uLmgKaW5kZXggNmM3NDVi OTAwNjYuLmY5OWM3NDdjZGQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tb24vY29tcHJl c3Npb24uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tb24vY29tcHJlc3Npb24uaApAQCAtNDEsNiAr NDEsOCBAQCB0eXBlZGVmIHN0cnVjdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uCiAKIGV4dGVy biB2b2lkIHBhcnNlX2NvbXByZXNzX29wdGlvbnMoY29uc3QgY2hhciAqb3B0aW9uLCBjaGFyICoq YWxnb3JpdGhtLAogCQkJCQkJCQkgICBjaGFyICoqZGV0YWlsKTsKK2V4dGVybiBib29sIHBhcnNl X3Rhcl9jb21wcmVzc19hbGdvcml0aG0oY29uc3QgY2hhciAqZm5hbWUsCisJCQkJCQkJCQkJIHBn X2NvbXByZXNzX2FsZ29yaXRobSAqYWxnb3JpdGhtKTsKIGV4dGVybiBib29sIHBhcnNlX2NvbXBy ZXNzX2FsZ29yaXRobShjaGFyICpuYW1lLCBwZ19jb21wcmVzc19hbGdvcml0aG0gKmFsZ29yaXRo bSk7CiBleHRlcm4gY29uc3QgY2hhciAqZ2V0X2NvbXByZXNzX2FsZ29yaXRobV9uYW1lKHBnX2Nv bXByZXNzX2FsZ29yaXRobSBhbGdvcml0aG0pOwogCi0tIAoyLjQ3LjEKCg== --000000000000d375fb064c9686ba Content-Type: application/x-patch; name="v16-0002-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Disposition: attachment; filename="v16-0002-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmj487qa1 RnJvbSBhOWEwNDRkZjI2ZTFlZDE0ZmU5ZWVhYmU1YTI0NzllNTQ1NmZhN2ZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mjg6MzIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNiAwMi8xMV0g UmVmYWN0b3I6IHBnX3dhbGR1bXA6IE1vdmUgc29tZSBkZWNsYXJhdGlvbnMgdG8gbmV3CiBwZ193 YWxkdW1wLmgKClRoaXMgY2hhbmdlIHByZXBhcmVzIGZvciBhIHNlY29uZCBzb3VyY2UgZmlsZSBp biB0aGlzIGRpcmVjdG9yeSB0bwpzdXBwb3J0IHJlYWRpbmcgV0FMIGZyb20gdGFyIGZpbGVzLiBD b21tb24gc3RydWN0dXJlcywgZGVjbGFyYXRpb25zLAphbmQgZnVuY3Rpb25zIGFyZSBiZWluZyBl eHBvcnRlZCB0aHJvdWdoIHRoaXMgaW5jbHVkZSBmaWxlIHNvCnRoZXkgY2FuIGJlIHVzZWQgaW4g Ym90aCBmaWxlcy4KLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIHwgIDkgKy0t LS0tLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIHwgMjUgKysrKysrKysrKysr KysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1w LmgKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIGIvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwppbmRleCBmMzQ0NjM4NWQ2YS4uNGI3NDExYTY0OTgg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKKysrIGIvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNv bW1vbi9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiY29tbW9uL3JlbHBhdGguaCIKICNpbmNsdWRlICJn ZXRvcHRfbG9uZy5oIgorI2luY2x1ZGUgInBnX3dhbGR1bXAuaCIKICNpbmNsdWRlICJybWdyZGVz Yy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgogCkBAIC00MywxNCArNDQsNiBAQCBz dGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHRpbWVfdG9fc3RvcCA9IGZhbHNlOwogCiBzdGF0 aWMgY29uc3QgUmVsRmlsZUxvY2F0b3IgZW1wdHlSZWxGaWxlTG9jYXRvciA9IHswLCAwLCAwfTsK IAotdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRlCi17Ci0JVGltZUxpbmVJRAl0aW1lbGlu ZTsKLQlYTG9nUmVjUHRyCXN0YXJ0cHRyOwotCVhMb2dSZWNQdHIJZW5kcHRyOwotCWJvb2wJCWVu ZHB0cl9yZWFjaGVkOwotfSBYTG9nRHVtcFByaXZhdGU7Ci0KIHR5cGVkZWYgc3RydWN0IFhMb2dE dW1wQ29uZmlnCiB7CiAJLyogZGlzcGxheSBvcHRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjRhOTEwOTIyOWUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCkBAIC0wLDAg KzEsMjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3dhbGR1bXAuaCAtIGRlY29k ZSBhbmQgZGlzcGxheSBXQUwKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQkgIHNy Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisj aWZuZGVmIFBHX1dBTERVTVBfSAorI2RlZmluZSBQR19XQUxEVU1QX0gKKworI2luY2x1ZGUgImFj Y2Vzcy94bG9nZGVmcy5oIgorCisvKiBDb250YWlucyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9u IHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwordHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRl Cit7CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKwlYTG9nUmVjUHRyCXN0YXJ0cHRyOworCVhMb2dS ZWNQdHIJZW5kcHRyOworCWJvb2wJCWVuZHB0cl9yZWFjaGVkOworfSBYTG9nRHVtcFByaXZhdGU7 CisKKyNlbmRpZgkJCQkJCQkvKiBQR19XQUxEVU1QX0ggKi8KLS0gCjIuNDcuMQoK --000000000000d375fb064c9686ba Content-Type: application/x-patch; name="v16-0003-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Disposition: attachment; filename="v16-0003-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmj48ec72 RnJvbSA2ZGJkMzc5NjliMzk3MmIzNWNlNzU0MmNmODkzY2ZkMmMzOGVjMTM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mzg6MTYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNiAwMy8xMV0g UmVmYWN0b3I6IHBnX3dhbGR1bXA6IFNlcGFyYXRlIGxvZ2ljIHVzZWQgdG8KIGNhbGN1bGF0ZSB0 aGUgcmVxdWlyZWQgcmVhZCBzaXplLgoKVGhpcyByZWZhY3RvcmluZyBwcmVwYXJlcyB0aGUgY29k ZWJhc2UgZm9yIGFuIHVwY29taW5nIHBhdGNoIHRoYXQgd2lsbApzdXBwb3J0IHJlYWRpbmcgV0FM IGZyb20gdGFyIGZpbGVzLiBUaGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIHRoZQpyZXF1aXJlZCBy ZWFkIHNpemUgaGFzIGJlZW4gdXBkYXRlZCB0byBoYW5kbGUgYm90aCBub3JtYWwgV0FMIGZpbGVz CmFuZCBXQUwgZmlsZXMgbG9jYXRlZCBpbnNpZGUgYSB0YXIgYXJjaGl2ZS4KLS0tCiBzcmMvYmlu L3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggNGI3NDExYTY0OTguLjk1OGE3MWEwMWNmIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTMyNiw2ICszMjYsMzIgQEAgaWRlbnRpZnlfdGFy Z2V0X2RpcmVjdG9yeShjaGFyICpkaXJlY3RvcnksIGNoYXIgKmZuYW1lLCBpbnQgKldhbFNlZ1N6 KQogCXJldHVybiBOVUxMOwkJCQkvKiBub3QgcmVhY2hlZCAqLwogfQogCisvKgorICogUmV0dXJu cyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgZGF0YSB0byBiZSByZWFkLiBSZXR1cm5zIC0xIGlm IHRoZSBlbmQKKyAqIHBvaW50IGhhcyBhbHJlYWR5IGJlZW4gcmVhY2hlZC4KKyAqLworc3RhdGlj IGlubGluZSBpbnQKK3JlcXVpcmVkX3JlYWRfbGVuKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZSwg WExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLAorCQkJCSAgaW50IHJlcUxlbikKK3sKKwlpbnQJCQlj b3VudCA9IFhMT0dfQkxDS1NaOworCisJaWYgKFhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUtPmVu ZHB0cikpCisJeworCQlpZiAodGFyZ2V0UGFnZVB0ciArIFhMT0dfQkxDS1NaIDw9IHByaXZhdGUt PmVuZHB0cikKKwkJCWNvdW50ID0gWExPR19CTENLU1o7CisJCWVsc2UgaWYgKHRhcmdldFBhZ2VQ dHIgKyByZXFMZW4gPD0gcHJpdmF0ZS0+ZW5kcHRyKQorCQkJY291bnQgPSBwcml2YXRlLT5lbmRw dHIgLSB0YXJnZXRQYWdlUHRyOworCQllbHNlCisJCXsKKwkJCXByaXZhdGUtPmVuZHB0cl9yZWFj aGVkID0gdHJ1ZTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKworCXJldHVybiBjb3VudDsKK30K KwogLyogcGdfd2FsZHVtcCdzIFhMb2dSZWFkZXJSb3V0aW5lLT5zZWdtZW50X29wZW4gY2FsbGJh Y2sgKi8KIHN0YXRpYyB2b2lkCiBXQUxEdW1wT3BlblNlZ21lbnQoWExvZ1JlYWRlclN0YXRlICpz dGF0ZSwgWExvZ1NlZ05vIG5leHRTZWdObywKQEAgLTM4MywyMSArNDA5LDEyIEBAIFdBTER1bXBS ZWFkUGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIs IGludCByZXFMZW4sCiAJCQkJWExvZ1JlY1B0ciB0YXJnZXRQdHIsIGNoYXIgKnJlYWRCdWZmKQog ewogCVhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZSA9IHN0YXRlLT5wcml2YXRlX2RhdGE7Ci0JaW50 CQkJY291bnQgPSBYTE9HX0JMQ0tTWjsKKwlpbnQJCQljb3VudCA9IHJlcXVpcmVkX3JlYWRfbGVu KHByaXZhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbik7CiAJV0FMUmVhZEVycm9yIGVycmluZm87 CiAKLQlpZiAoWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS0+ZW5kcHRyKSkKLQl7Ci0JCWlmICh0 YXJnZXRQYWdlUHRyICsgWExPR19CTENLU1ogPD0gcHJpdmF0ZS0+ZW5kcHRyKQotCQkJY291bnQg PSBYTE9HX0JMQ0tTWjsKLQkJZWxzZSBpZiAodGFyZ2V0UGFnZVB0ciArIHJlcUxlbiA8PSBwcml2 YXRlLT5lbmRwdHIpCi0JCQljb3VudCA9IHByaXZhdGUtPmVuZHB0ciAtIHRhcmdldFBhZ2VQdHI7 Ci0JCWVsc2UKLQkJewotCQkJcHJpdmF0ZS0+ZW5kcHRyX3JlYWNoZWQgPSB0cnVlOwotCQkJcmV0 dXJuIC0xOwotCQl9Ci0JfQorCS8qIEJhaWwgb3V0IGlmIHRoZSBjb3VudCB0byBiZSByZWFkIGlz IG5vdCB2YWxpZCAqLworCWlmIChjb3VudCA8IDApCisJCXJldHVybiAtMTsKIAogCWlmICghV0FM UmVhZChzdGF0ZSwgcmVhZEJ1ZmYsIHRhcmdldFBhZ2VQdHIsIGNvdW50LCBwcml2YXRlLT50aW1l bGluZSwKIAkJCQkgJmVycmluZm8pKQotLSAKMi40Ny4xCgo= --000000000000d375fb064c9686ba Content-Type: application/x-patch; name="v16-0004-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Disposition: attachment; filename="v16-0004-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmj48kde3 RnJvbSA4MDViYjFhNmRhYzlmMjZlNWQxNDVmYTdlYjg0ZDhjYjM0NzhlYzg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTggRmViIDIwMjYgMTE6MDc6NTcgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNiAwNC8xMV0g UmVmYWN0b3I6IHBnX3dhbGR1bXA6IFJlc3RydWN0dXJlIFRBUCB0ZXN0cy4KClJlc3RydWN0dXJl ZCB0ZXN0cyB0aGF0IGRvIG5vdCBoYXZlIGEgV0FMIGZpbGUgYXJndW1lbnQgdG8gcnVuIHdpdGhp bgphIGxvb3AsIGZhY2lsaXRhdGluZyB0aGVpciByZS1leGVjdXRpb24gZm9yIGRlY29kaW5nIFdB TCBmcm9tIHRhcgphcmNoaXZlcy4KCj09IE5PVEUgPT0KICBUaGlzIGlzIG5vdCBpbnRlbmRlZCB0 byBiZSBjb21taXR0ZWQgc2VwYXJhdGVseS4gSXQgY2FuIGJlIG1lcmdlZAogIHdpdGggdGhlIG5l eHQgcGF0Y2gsIHdoaWNoIGlzIHRoZSBtYWluIHBhdGNoIGltcGxlbWVudGluZyB0aGlzCiAgZmVh dHVyZS4KLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgfCAxNDAgKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygr KSwgNjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAx X2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IDVkYjVk MjAxMzZmLi5mMTJiYTUyY2JmYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAx X2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbApAQCAtMTk4 LDI4ICsxOTgsNiBAQCBjb21tYW5kX2xpa2UoCiAJXSwKIAlxci8uLywKIAkncnVucyB3aXRoIHN0 YXJ0IGFuZCBlbmQgc2VnbWVudCBzcGVjaWZpZWQnKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlb ICdwZ193YWxkdW1wJywgJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyIF0sCi0JcXIvZXJyb3I6 IG5vIHN0YXJ0IFdBTCBsb2NhdGlvbiBnaXZlbi8sCi0JJ3BhdGggb3B0aW9uIHJlcXVpcmVzIHN0 YXJ0IGxvY2F0aW9uJyk7Ci1jb21tYW5kX2xpa2UoCi0JWwotCQkncGdfd2FsZHVtcCcsCi0JCSct LXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciwKLQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24sCi0J CSctLWVuZCcgPT4gJGVuZF9sc24sCi0JXSwKLQlxci8uLywKLQkncnVucyB3aXRoIHBhdGggb3B0 aW9uIGFuZCBzdGFydCBhbmQgZW5kIGxvY2F0aW9ucycpOwotY29tbWFuZF9mYWlsc19saWtlKAot CVsKLQkJJ3BnX3dhbGR1bXAnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCi0JCSct LXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAotCV0sCi0JcXIvZXJyb3I6IGVycm9yIGluIFdBTCByZWNv cmQgYXQvLAotCSdmYWxsaW5nIG9mZiB0aGUgZW5kIG9mIHRoZSBXQUwgcmVzdWx0cyBpbiBhbiBl cnJvcicpOwotCiBjb21tYW5kX2xpa2UoCiAJWwogCQkncGdfd2FsZHVtcCcsICctLXF1aWV0JywK QEAgLTIyNywyMiArMjA1LDE2IEBAIGNvbW1hbmRfbGlrZSgKIAldLAogCXFyL14kLywKIAknbm8g b3V0cHV0IHdpdGggLS1xdWlldCBvcHRpb24nKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlbCi0J CSdwZ193YWxkdW1wJywgJy0tcXVpZXQnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIs Ci0JCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuCi0JXSwKLQlxci9lcnJvcjogZXJyb3IgaW4gV0FM IHJlY29yZCBhdC8sCi0JJ2Vycm9ycyBhcmUgc2hvd24gd2l0aCAtLXF1aWV0Jyk7Ci0KIAogIyBU ZXN0IGZvcjogRGlzcGxheSBhIG1lc3NhZ2UgdGhhdCB3ZSdyZSBza2lwcGluZyBkYXRhIGlmIGBm cm9tYAogIyB3YXNuJ3QgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBhIHJlY29yZC4KK3N1YiB0 ZXN0X3BnX3dhbGR1bXBfc2tpcF9ieXRlcwogeworCW15ICgkcGF0aCwgJHN0YXJ0bHNuLCAkZW5k bHNuKSA9IEBfOworCiAJIyBDb25zdHJ1Y3QgYSBuZXcgTFNOIHRoYXQgaXMgb25lIGJ5dGUgcGFz dCB0aGUgb3JpZ2luYWwKIAkjIHN0YXJ0X2xzbi4KLQlteSAoJHBhcnQxLCAkcGFydDIpID0gc3Bs aXQgcXJ7L30sICRzdGFydF9sc247CisJbXkgKCRwYXJ0MSwgJHBhcnQyKSA9IHNwbGl0IHFyey99 LCAkc3RhcnRsc247CiAJbXkgJGxzbjIgPSBoZXggJHBhcnQyOwogCSRsc24yKys7CiAJbXkgJG5l d19zdGFydCA9IHNwcmludGYoIiVzLyVYIiwgJHBhcnQxLCAkbHNuMik7CkBAIC0yNTIsNyArMjI0 LDggQEAgY29tbWFuZF9mYWlsc19saWtlKAogCW15ICRyZXN1bHQgPSBJUEM6OlJ1bjo6cnVuIFsK IAkJJ3BnX3dhbGR1bXAnLAogCQknLS1zdGFydCcgPT4gJG5ld19zdGFydCwKLQkJJG5vZGUtPmRh dGFfZGlyIC4gJy9wZ193YWwvJyAuICRzdGFydF93YWxmaWxlCisJCSctLWVuZCcgPT4gJGVuZGxz biwKKwkJJy0tcGF0aCcgPT4gJHBhdGgsCiAJICBdLAogCSAgJz4nID0+IFwkc3Rkb3V0LAogCSAg JzI+JyA9PiBcJHN0ZGVycjsKQEAgLTI2NiwxNSArMjM5LDE1IEBAIGNvbW1hbmRfZmFpbHNfbGlr ZSgKIHN1YiB0ZXN0X3BnX3dhbGR1bXAKIHsKIAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwg PSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAxOwotCW15IEBvcHRzID0gQF87CisJbXkgKCRwYXRo LCAkc3RhcnRsc24sICRlbmRsc24sIEBvcHRzKSA9IEBfOwogCiAJbXkgKCRzdGRvdXQsICRzdGRl cnIpOwogCiAJbXkgJHJlc3VsdCA9IElQQzo6UnVuOjpydW4gWwogCQkncGdfd2FsZHVtcCcsCi0J CSctLXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciwKLQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24s Ci0JCSctLWVuZCcgPT4gJGVuZF9sc24sCisJCSctLXN0YXJ0JyA9PiAkc3RhcnRsc24sCisJCSct LWVuZCcgPT4gJGVuZGxzbiwKKwkJJy0tcGF0aCcgPT4gJHBhdGgsCiAJCUBvcHRzCiAJICBdLAog CSAgJz4nID0+IFwkc3Rkb3V0LApAQCAtMjg4LDM4ICsyNjEsODMgQEAgc3ViIHRlc3RfcGdfd2Fs ZHVtcAogCiBteSBAbGluZXM7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcDsKLWlzKGdyZXAo IS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5l cycpOworbXkgQHNjZW5hcmlvcyA9ICgKKwl7CisJCSdwYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIK Kwl9KTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLWxpbWl0JyA9PiA2KTsKLWlzKEBs aW5lcywgNiwgJ2xpbWl0IG9wdGlvbiBvYnNlcnZlZCcpOworZm9yIG15ICRzY2VuYXJpbyAoQHNj ZW5hcmlvcykKK3sKKwlteSAkcGF0aCA9ICRzY2VuYXJpby0+eydwYXRoJ307CiAKLUBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgnLS1mdWxscGFnZScpOwotaXMoZ3JlcCghL15ybWdyOi4qXGJGUFdc Yi8sIEBsaW5lcyksIDAsICdhbGwgb3V0cHV0IGxpbmVzIGFyZSBGUFcnKTsKKwlTS0lQOgorCXsK KwkJY29tbWFuZF9mYWlsc19saWtlKAorCQkJWyAncGdfd2FsZHVtcCcsICctLXBhdGgnID0+ICRw YXRoIF0sCisJCQlxci9lcnJvcjogbm8gc3RhcnQgV0FMIGxvY2F0aW9uIGdpdmVuLywKKwkJCSdw YXRoIG9wdGlvbiByZXF1aXJlcyBzdGFydCBsb2NhdGlvbicpOworCQljb21tYW5kX2xpa2UoCisJ CQlbCisJCQkJJ3BnX3dhbGR1bXAnLAorCQkJCSctLXBhdGgnID0+ICRwYXRoLAorCQkJCSctLXN0 YXJ0JyA9PiAkc3RhcnRfbHNuLAorCQkJCSctLWVuZCcgPT4gJGVuZF9sc24sCisJCQldLAorCQkJ cXIvLi8sCisJCQkncnVucyB3aXRoIHBhdGggb3B0aW9uIGFuZCBzdGFydCBhbmQgZW5kIGxvY2F0 aW9ucycpOworCQljb21tYW5kX2ZhaWxzX2xpa2UoCisJCQlbCisJCQkJJ3BnX3dhbGR1bXAnLAor CQkJCSctLXBhdGgnID0+ICRwYXRoLAorCQkJCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAorCQkJ XSwKKwkJCXFyL2Vycm9yOiBlcnJvciBpbiBXQUwgcmVjb3JkIGF0LywKKwkJCSdmYWxsaW5nIG9m ZiB0aGUgZW5kIG9mIHRoZSBXQUwgcmVzdWx0cyBpbiBhbiBlcnJvcicpOwogCi1AbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJy0tc3RhdHMnKTsKLWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlz dGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOwotaXMoZ3JlcCgvXnJtZ3I6LywgQGxpbmVz KSwgMCwgJ25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7CisJCWNvbW1hbmRfZmFpbHNfbGlrZSgKKwkJ CVsKKwkJCQkncGdfd2FsZHVtcCcsICctLXF1aWV0JywKKwkJCQknLS1wYXRoJyA9PiAkcGF0aCwK KwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbgorCQkJXSwKKwkJCXFyL2Vycm9yOiBlcnJvciBp biBXQUwgcmVjb3JkIGF0LywKKwkJCSdlcnJvcnMgYXJlIHNob3duIHdpdGggLS1xdWlldCcpOwog Ci1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tc3RhdHM9cmVjb3JkJyk7Ci1saWtlKCRsaW5l c1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKLWlzKGdy ZXAoL15ybWdyOi8sIEBsaW5lcyksIDAsICdubyBybWdyIGxpbmVzIG91dHB1dCcpOworCQl0ZXN0 X3BnX3dhbGR1bXBfc2tpcF9ieXRlcygkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOwogCi1A bGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcm1ncicgPT4gJ0J0cmVlJyk7Ci1pcyhncmVwKCEv XnJtZ3I6IEJ0cmVlLywgQGxpbmVzKSwgMCwgJ29ubHkgQnRyZWUgbGluZXMnKTsKKwkJQGxpbmVz ID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbik7CisJCWlzKGdy ZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBs aW5lcycpOwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tZm9yaycgPT4gJ2luaXQnKTsK LWlzKGdyZXAoIS9mb3JrIGluaXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZvcmsgbGluZXMn KTsKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xz biwgJy0tbGltaXQnID0+IDYpOworCQlpcyhAbGluZXMsIDYsICdsaW1pdCBvcHRpb24gb2JzZXJ2 ZWQnKTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKAotCSctLXJlbGF0aW9uJyA9PiAiJGRl ZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9vaWQvJHJlbF90MV9vaWQiKTsKLWlzKGdyZXAoIS9y ZWwgJGRlZmF1bHRfdHNfb2lkXC8kcG9zdGdyZXNfZGJfb2lkXC8kcmVsX3QxX29pZC8sIEBsaW5l cyksCi0JMCwgJ29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIHJlbGF0aW9uJyk7CisJCUBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24sICctLWZ1bGxwYWdl Jyk7CisJCWlzKGdyZXAoIS9ecm1ncjouKlxiRlBXXGIvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1 dCBsaW5lcyBhcmUgRlBXJyk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgKLQknLS1yZWxh dGlvbicgPT4gIiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfaTFhX29pZCIs Ci0JJy0tYmxvY2snID0+IDEpOwotaXMoZ3JlcCghL1xiYmxrIDFcYi8sIEBsaW5lcyksIDAsICdv bmx5IGxpbmVzIGZvciBzZWxlY3RlZCBibG9jaycpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1 bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1zdGF0cycpOworCQlsaWtlKCRsaW5l c1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKKwkJaXMo Z3JlcCgvXnJtZ3I6LywgQGxpbmVzKSwgMCwgJ25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7CiAKKwkJ QGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0t c3RhdHM9cmVjb3JkJyk7CisJCWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJz dGF0aXN0aWNzIG9uIHN0ZG91dCIpOworCQlpcyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAn bm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBh dGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1ybWdyJyA9PiAnQnRyZWUnKTsKKwkJaXMoZ3Jl cCghL15ybWdyOiBCdHJlZS8sIEBsaW5lcyksIDAsICdvbmx5IEJ0cmVlIGxpbmVzJyk7CisKKwkJ QGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0t Zm9yaycgPT4gJ2luaXQnKTsKKwkJaXMoZ3JlcCghL2ZvcmsgaW5pdC8sIEBsaW5lcyksIDAsICdv bmx5IGluaXQgZm9yayBsaW5lcycpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0 aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24sCisJCQknLS1yZWxhdGlvbicgPT4gIiRkZWZhdWx0X3Rz X29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfdDFfb2lkIik7CisJCWlzKGdyZXAoIS9yZWwgJGRl ZmF1bHRfdHNfb2lkXC8kcG9zdGdyZXNfZGJfb2lkXC8kcmVsX3QxX29pZC8sIEBsaW5lcyksCisJ CQkwLCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQgcmVsYXRpb24nKTsKKworCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLAorCQkJJy0tcmVsYXRp b24nID0+ICIkZGVmYXVsdF90c19vaWQvJHBvc3RncmVzX2RiX29pZC8kcmVsX2kxYV9vaWQiLAor CQkJJy0tYmxvY2snID0+IDEpOworCQlpcyhncmVwKCEvXGJibGsgMVxiLywgQGxpbmVzKSwgMCwg J29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIGJsb2NrJyk7CisJfQorfQogCiBkb25lX3Rlc3Rpbmco KTsKLS0gCjIuNDcuMQoK --000000000000d375fb064c9686ba Content-Type: application/x-patch; name="v16-0005-Refactor-pg_waldump-Move-WAL-segment-size-to-XLo.patch" Content-Disposition: attachment; filename="v16-0005-Refactor-pg_waldump-Move-WAL-segment-size-to-XLo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmj48p614 RnJvbSBmNjExYTIwOGNlYTg3OGM0NGMyZjk4Mzg3N2M5NDliMDUxNDQzNjAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgNCBGZWIgMjAyNiAxNTozMTo1MSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDA1LzExXSBS ZWZhY3RvcjogcGdfd2FsZHVtcDogTW92ZSBXQUwgc2VnbWVudCBzaXplIHRvCiBYTG9nRHVtcFBy aXZhdGUuCgpSZWxvY2F0ZSB0aGUgV0FMIHNlZ21lbnQgc2l6ZSB2YXJpYWJsZSB0byB0aGUgWExv Z0R1bXBQcml2YXRlCnN0cnVjdHVyZSBhbmQgcmVuYW1lIGl0IHRvIHNlZ3NpemUgZm9yIGNvbnNp c3RlbmN5LiBUaGlzIGNoYW5nZSBpcwpyZXF1aXJlZCB0byBtYWtlIHRoZSBzZWdtZW50IHNpemUg YWNjZXNzaWJsZSB0byB0aGUgYXJjaGl2ZSBzdHJlYW1lcgpjb2RlLCB3aGVyZSBwYXNzaW5nIGl0 IGFzIGEgZnVuY3Rpb24gYXJndW1lbnQgaXMgbm90IGZlYXNpYmxlLgotLS0KIHNyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmMgfCAyNiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaCB8ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMTQg aW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5k ZXggOTU4YTcxYTAxY2YuLjVkMzFiMTVkYmQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1 bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAg LTgxMSw3ICs4MTEsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlYTG9nUmVjUHRy CWZpcnN0X3JlY29yZDsKIAljaGFyCSAgICp3YWxkaXIgPSBOVUxMOwogCWNoYXIJICAgKmVycm9y bXNnOwotCWludAkJCVdhbFNlZ1N6OwogCiAJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRp b25zW10gPSB7CiAJCXsiYmtwLWRldGFpbHMiLCBub19hcmd1bWVudCwgTlVMTCwgJ2InfSwKQEAg LTg2NSw2ICs4NjQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAltZW1zZXQoJnN0 YXRzLCAwLCBzaXplb2YoWExvZ1N0YXRzKSk7CiAKIAlwcml2YXRlLnRpbWVsaW5lID0gMTsKKwlw cml2YXRlLnNlZ3NpemUgPSAwOwogCXByaXZhdGUuc3RhcnRwdHIgPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAlwcml2YXRlLmVuZHB0ciA9IEludmFsaWRYTG9nUmVjUHRyOwogCXByaXZhdGUuZW5kcHRy X3JlYWNoZWQgPSBmYWxzZTsKQEAgLTExMzgsMTggKzExMzgsMTggQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVz XCI6ICVtIiwgd2FsZGlyKTsKIAkJfQogCi0JCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9kaXJl Y3Rvcnkod2FsZGlyLCBmbmFtZSwgJldhbFNlZ1N6KTsKKwkJd2FsZGlyID0gaWRlbnRpZnlfdGFy Z2V0X2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lLCAmcHJpdmF0ZS5zZWdzaXplKTsKIAkJZmQgPSBv cGVuX2ZpbGVfaW5fZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUpOwogCQlpZiAoZmQgPCAwKQogCQkJ cGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgZm5hbWUpOwogCQljbG9zZShm ZCk7CiAKIAkJLyogcGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCi0JCVhMb2dGcm9tRmlsZU5h bWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmc2Vnbm8sIFdhbFNlZ1N6KTsKKwkJWExvZ0Zy b21GaWxlTmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZzZWdubywgcHJpdmF0ZS5zZWdz aXplKTsKIAogCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuc3RhcnRwdHIpKQotCQkJ WExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8sIDAsIFdhbFNlZ1N6LCBwcml2YXRlLnN0YXJ0 cHRyKTsKLQkJZWxzZSBpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuc3RhcnRwdHIsIHNlZ25vLCBX YWxTZWdTeikpCisJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubywgMCwgcHJpdmF0ZS5z ZWdzaXplLCBwcml2YXRlLnN0YXJ0cHRyKTsKKwkJZWxzZSBpZiAoIVhMQnl0ZUluU2VnKHByaXZh dGUuc3RhcnRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpKQogCQl7CiAJCQlwZ19sb2dfZXJy b3IoInN0YXJ0IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIi LAogCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLnN0YXJ0cHRyKSwKQEAgLTExNTksNyAr MTE1OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJCS8qIG5vIHNlY29uZCBm aWxlIHNwZWNpZmllZCwgc2V0IGVuZCBwb3NpdGlvbiAqLwogCQlpZiAoIShvcHRpbmQgKyAxIDwg YXJnYykgJiYgIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJCVhMb2dTZWdO b09mZnNldFRvUmVjUHRyKHNlZ25vICsgMSwgMCwgV2FsU2VnU3osIHByaXZhdGUuZW5kcHRyKTsK KwkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXpl LCBwcml2YXRlLmVuZHB0cik7CiAKIAkJLyogcGFyc2UgRU5EU0VHIGlmIHBhc3NlZCAqLwogCQlp ZiAob3B0aW5kICsgMSA8IGFyZ2MpCkBAIC0xMTc1LDE0ICsxMTc1LDE0IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCQkJY2xvc2UoZmQpOwogCiAJCQkvKiBwYXJzZSBwb3NpdGlvbiBm cm9tIGZpbGUgKi8KLQkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5l LCAmZW5kc2Vnbm8sIFdhbFNlZ1N6KTsKKwkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2 YXRlLnRpbWVsaW5lLCAmZW5kc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSk7CiAKIAkJCWlmIChlbmRz ZWdubyA8IHNlZ25vKQogCQkJCXBnX2ZhdGFsKCJFTkRTRUcgJXMgaXMgYmVmb3JlIFNUQVJUU0VH ICVzIiwKIAkJCQkJCSBhcmd2W29wdGluZCArIDFdLCBhcmd2W29wdGluZF0pOwogCiAJCQlpZiAo IVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJCQlYTG9nU2VnTm9PZmZzZXRU b1JlY1B0cihlbmRzZWdubyArIDEsIDAsIFdhbFNlZ1N6LAorCQkJCVhMb2dTZWdOb09mZnNldFRv UmVjUHRyKGVuZHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXplLAogCQkJCQkJCQkJCXByaXZh dGUuZW5kcHRyKTsKIAogCQkJLyogc2V0IHNlZ25vIHRvIGVuZHNlZ25vIGZvciBjaGVjayBvZiAt LWVuZCAqLwpAQCAtMTE5MCw4ICsxMTkwLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCX0KIAogCi0JCWlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5lbmRwdHIsIHNlZ25vLCBXYWxT ZWdTeikgJiYKLQkJCXByaXZhdGUuZW5kcHRyICE9IChzZWdubyArIDEpICogV2FsU2VnU3opCisJ CWlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5lbmRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUp ICYmCisJCQlwcml2YXRlLmVuZHB0ciAhPSAoc2Vnbm8gKyAxKSAqIHByaXZhdGUuc2Vnc2l6ZSkK IAkJewogCQkJcGdfbG9nX2Vycm9yKCJlbmQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90IGlu c2lkZSBmaWxlIFwiJXNcIiIsCiAJCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuZW5kcHRy KSwKQEAgLTEyMDAsNyArMTIwMCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9 CiAJfQogCWVsc2UKLQkJd2FsZGlyID0gaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxkaXIs IE5VTEwsICZXYWxTZWdTeik7CisJCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnko d2FsZGlyLCBOVUxMLCAmcHJpdmF0ZS5zZWdzaXplKTsKIAogCS8qIHdlIGRvbid0IGtub3cgd2hh dCB0byBwcmludCAqLwogCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5zdGFydHB0cikp CkBAIC0xMjEzLDcgKzEyMTMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCS8q IHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkLCBzdGFydCByZWFkaW5nICovCiAJeGxvZ3JlYWRl cl9zdGF0ZSA9Ci0JCVhMb2dSZWFkZXJBbGxvY2F0ZShXYWxTZWdTeiwgd2FsZGlyLAorCQlYTG9n UmVhZGVyQWxsb2NhdGUocHJpdmF0ZS5zZWdzaXplLCB3YWxkaXIsCiAJCQkJCQkgICBYTF9ST1VU SU5FKC5wYWdlX3JlYWQgPSBXQUxEdW1wUmVhZFBhZ2UsCiAJCQkJCQkJCQkgIC5zZWdtZW50X29w ZW4gPSBXQUxEdW1wT3BlblNlZ21lbnQsCiAJCQkJCQkJCQkgIC5zZWdtZW50X2Nsb3NlID0gV0FM RHVtcENsb3NlU2VnbWVudCksCkBAIC0xMjM0LDcgKzEyMzQsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkgKiBhIHNlZ21lbnQgKGUuZy4gd2Ugd2VyZSB1c2VkIGluIGZpbGUgbW9k ZSkuCiAJICovCiAJaWYgKGZpcnN0X3JlY29yZCAhPSBwcml2YXRlLnN0YXJ0cHRyICYmCi0JCVhM b2dTZWdtZW50T2Zmc2V0KHByaXZhdGUuc3RhcnRwdHIsIFdhbFNlZ1N6KSAhPSAwKQorCQlYTG9n U2VnbWVudE9mZnNldChwcml2YXRlLnN0YXJ0cHRyLCBwcml2YXRlLnNlZ3NpemUpICE9IDApCiAJ CXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJmaXJzdCByZWNvcmQgaXMgYWZ0ZXIgJVgvJTA4WCwgYXQg JVgvJTA4WCwgc2tpcHBpbmcgb3ZlciAldSBieXRlIiwKIAkJCQkJCQkgImZpcnN0IHJlY29yZCBp cyBhZnRlciAlWC8lMDhYLCBhdCAlWC8lMDhYLCBza2lwcGluZyBvdmVyICV1IGJ5dGVzIiwKIAkJ CQkJCQkgKGZpcnN0X3JlY29yZCAtIHByaXZhdGUuc3RhcnRwdHIpKSwKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5oCmluZGV4IDY0YTkxMDkyMjllLi4wMTNiMDUxNTA2ZiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5oCkBAIC0xNyw2ICsxNyw3IEBACiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcFByaXZhdGUK IHsKIAlUaW1lTGluZUlECXRpbWVsaW5lOworCWludAkJCXNlZ3NpemU7CiAJWExvZ1JlY1B0cglz dGFydHB0cjsKIAlYTG9nUmVjUHRyCWVuZHB0cjsKIAlib29sCQllbmRwdHJfcmVhY2hlZDsKLS0g CjIuNDcuMQoK --000000000000d375fb064c9686ba Content-Type: application/x-patch; name="v16-0006-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Disposition: attachment; filename="v16-0006-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmj48ven5 RnJvbSBmY2YyNWJhMGFkZjllZDE5NzZmMWIyMDVjMTFhMDg4NjZkZWZiNDk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMTAgRmViIDIwMjYgMTE6NDI6MzYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNiAwNi8xMV0g cGdfd2FsZHVtcDogQWRkIHN1cHBvcnQgZm9yIGFyY2hpdmVkIFdBTCBkZWNvZGluZy4KCnBnX3dh bGR1bXAgY2FuIG5vdyBhY2NlcHQgdGhlIHBhdGggdG8gYSB0YXIgYXJjaGl2ZSBjb250YWluaW5n IFdBTApmaWxlcyBhbmQgZGVjb2RlIHRoZW0uIFRoaXMgZmVhdHVyZSB3YXMgYWRkZWQgcHJpbWFy aWx5IGZvcgpwZ192ZXJpZnliYWNrdXAsIHdoaWNoIHByZXZpb3VzbHkgZGlzYWJsZWQgV0FMIHBh cnNpbmcgZm9yCnRhci1mb3JtYXR0ZWQgYmFja3Vwcy4KCk5vdGUgdGhhdCB0aGlzIHBhdGNoIHJl cXVpcmVzIHRoYXQgdGhlIFdBTCBmaWxlcyB3aXRoaW4gdGhlIGFyY2hpdmUgYmUKaW4gc2VxdWVu dGlhbCBvcmRlcjsgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBvdGhlcndpc2UuIFRoZSBuZXh0 CnBhdGNoIGlzIHBsYW5uZWQgdG8gcmVtb3ZlIHRoaXMgcmVzdHJpY3Rpb24uCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwgICAgIHwgICA4ICstCiBzcmMvYmluL3BnX3dhbGR1 bXAvTWFrZWZpbGUgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZl X3dhbGR1bXAuYyB8IDY1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iaW4vcGdf d2FsZHVtcC9tZXNvbi5idWlsZCAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ193YWxkdW1wL3Bn X3dhbGR1bXAuYyAgICAgIHwgMjU3ICsrKysrKysrLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5oICAgICAgfCAgNDUgKysKIHNyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5w bCAgICB8IDEwNSArKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwg ICAzICsKIDggZmlsZXMgY2hhbmdlZCwgMTAxNSBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1w LmMKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCmluZGV4IGQxNzE1ZmY1MTI0Li4xNWZiOGQxMzE5 OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwKQEAgLTE0MSwxMyArMTQxLDE3IEBAIFBvc3Rn cmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgPHRlcm0+PG9wdGlvbj4tLXBhdGg9PHJlcGxhY2Vh YmxlPnBhdGg8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4K ICAgICAgICA8cGFyYT4KLSAgICAgICAgU3BlY2lmaWVzIGEgZGlyZWN0b3J5IHRvIHNlYXJjaCBm b3IgV0FMIHNlZ21lbnQgZmlsZXMgb3IgYQotICAgICAgICBkaXJlY3Rvcnkgd2l0aCBhIDxsaXRl cmFsPnBnX3dhbDwvbGl0ZXJhbD4gc3ViZGlyZWN0b3J5IHRoYXQKKyAgICAgICAgU3BlY2lmaWVz IGEgdGFyIGFyY2hpdmUgb3IgYSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBXQUwgc2VnbWVudCBm aWxlcworICAgICAgICBvciBhIGRpcmVjdG9yeSB3aXRoIGEgPGxpdGVyYWw+cGdfd2FsPC9saXRl cmFsPiBzdWJkaXJlY3RvcnkgdGhhdAogICAgICAgICBjb250YWlucyBzdWNoIGZpbGVzLiAgVGhl IGRlZmF1bHQgaXMgdG8gc2VhcmNoIGluIHRoZSBjdXJyZW50CiAgICAgICAgIGRpcmVjdG9yeSwg dGhlIDxsaXRlcmFsPnBnX3dhbDwvbGl0ZXJhbD4gc3ViZGlyZWN0b3J5IG9mIHRoZQogICAgICAg ICBjdXJyZW50IGRpcmVjdG9yeSwgYW5kIHRoZSA8bGl0ZXJhbD5wZ193YWw8L2xpdGVyYWw+IHN1 YmRpcmVjdG9yeQogICAgICAgICBvZiA8ZW52YXI+UEdEQVRBPC9lbnZhcj4uCiAgICAgICAgPC9w YXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBJZiBhIHRhciBhcmNoaXZlIGlzIHByb3ZpZGVk LCBpdHMgV0FMIHNlZ21lbnQgZmlsZXMgbXVzdCBiZSBpbgorICAgICAgICBzZXF1ZW50aWFsIG9y ZGVyOyBvdGhlcndpc2UsIGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuCisgICAgICAgPC9wYXJh PgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmls ZQppbmRleCA0YzFlZTY0OTUwMS4uYWFiYjg3NTY2YTIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf d2FsZHVtcC9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZpbGUKQEAgLTMs NiArMyw5IEBACiBQR0ZJTEVERVNDID0gInBnX3dhbGR1bXAgLSBkZWNvZGUgYW5kIGRpc3BsYXkg V0FMIgogUEdBUFBJQ09OPXdpbjMyCiAKKyMgbWFrZSB0aGVzZSBhdmFpbGFibGUgdG8gVEFQIHRl c3Qgc2NyaXB0cworZXhwb3J0IFRBUgorCiBzdWJkaXIgPSBzcmMvYmluL3BnX3dhbGR1bXAKIHRv cF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZp bGUuZ2xvYmFsCkBAIC0xMCwxMyArMTMsMTUgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3Jj L01ha2VmaWxlLmdsb2JhbAogT0JKUyA9IFwKIAkkKFJNR1JERVNDT0JKUykgXAogCSQoV0lOMzJS RVMpIFwKKwlhcmNoaXZlX3dhbGR1bXAubyBcCiAJY29tcGF0Lm8gXAogCXBnX3dhbGR1bXAubyBc CiAJcm1ncmRlc2MubyBcCiAJeGxvZ3JlYWRlci5vIFwKIAl4bG9nc3RhdHMubwogCi1vdmVycmlk ZSBDUFBGTEFHUyA6PSAtREZST05URU5EICQoQ1BQRkxBR1MpCitvdmVycmlkZSBDUFBGTEFHUyA6 PSAtREZST05URU5EIC1JJChsaWJwcV9zcmNkaXIpICQoQ1BQRkxBR1MpCitMREZMQUdTX0lOVEVS TkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGlscwogCiBSTUdS REVTQ1NPVVJDRVMgPSAkKHNvcnQgJChub3RkaXIgJCh3aWxkY2FyZCAkKHRvcF9zcmNkaXIpL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy8qZGVzYyouYykpKQogUk1HUkRFU0NPQkpTID0gJChw YXRzdWJzdCAlLmMsJS5vLCQoUk1HUkRFU0NTT1VSQ0VTKSkKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZl X3dhbGR1bXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDkzNmZm YzBhNzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxk dW1wLmMKQEAgLTAsMCArMSw2NTMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGFyY2hp dmVfd2FsZHVtcC5jCisgKgkJQSBnZW5lcmljIGZhY2lsaXR5IGZvciByZWFkaW5nIFdBTCBkYXRh IGZyb20gdGFyIGFyY2hpdmVzIHZpYSBhcmNoaXZlCisgKgkJc3RyZWFtZXIuCisgKgorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hp dmVfd2FsZHVtcC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBv c3RncmVzX2ZlLmgiCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2luY2x1ZGUgImFjY2Vzcy94 bG9nX2ludGVybmFsLmgiCisjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5oIgorI2luY2x1ZGUgImNv bW1vbi9sb2dnaW5nLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvc2ltcGxlX2xpc3QuaCIKKyNpbmNs dWRlICJwZ193YWxkdW1wLmgiCisKKy8qCisgKiBIb3cgbWFueSBieXRlcyBzaG91bGQgd2UgdHJ5 IHRvIHJlYWQgZnJvbSBhIGZpbGUgYXQgb25jZT8KKyAqLworI2RlZmluZSBSRUFEX0NIVU5LX1NJ WkUJCQkJKDEyOCAqIDEwMjQpCisKKy8qCisgKiBDaGVjayBpZiB0aGUgc3RhcnQgc2VnbWVudCBu dW1iZXIgaXMgemVybzsgdGhpcyBpbmRpY2F0ZXMgYSByZXF1ZXN0IHRvIHJlYWQKKyAqIGFueSBX QUwgZmlsZS4KKyAqLworI2RlZmluZSBSRUFEX0FOWV9XQUwocHJpdmF0ZUluZm8pCSgocHJpdmF0 ZUluZm8pLT5zdGFydF9zZWdubyA9PSAwKQorCisvKgorICogSGFzaCBlbnRyeSByZXByZXNlbnRp bmcgYSBXQUwgc2VnbWVudCByZXRyaWV2ZWQgZnJvbSB0aGUgYXJjaGl2ZS4KKyAqCisgKiBXaGls ZSBXQUwgc2VnbWVudHMgYXJlIHR5cGljYWxseSByZWFkIHNlcXVlbnRpYWxseSwgaW5kaXZpZHVh bCBlbnRyaWVzCisgKiBtYWludGFpbiB0aGVpciBvd24gYnVmZmVycyBmb3IgdGhlIGZvbGxvd2lu ZyByZWFzb25zOgorICoKKyAqIDEuIEJvdW5kYXJ5IEhhbmRsaW5nOiBUaGUgYXJjaGl2ZSBzdHJl YW1lciBwcm92aWRlcyBhIGNvbnRpbnVvdXMgYnl0ZQorICogc3RyZWFtLiBBIHNpbmdsZSBzdHJl YW1pbmcgY2h1bmsgbWF5IGNvbnRhaW4gdGhlIGVuZCBvZiBvbmUgV0FMIHNlZ21lbnQKKyAqIGFu ZCB0aGUgc3RhcnQgb2YgdGhlIG5leHQuIFNlcGFyYXRlIGJ1ZmZlcnMgYWxsb3cgdXMgdG8gZWFz aWx5CisgKiBwYXJ0aXRpb24gYW5kIHRyYWNrIHRoZXNlIGJ5dGVzIGJ5IHRoZWlyIHJlc3BlY3Rp dmUgc2VnbWVudHMuCisgKgorICogMi4gT3V0LW9mLU9yZGVyIFN1cHBvcnQ6IERlZGljYXRlZCBi dWZmZXJzIHNpbXBsaWZ5IGxvZ2ljIGlmIHNlZ21lbnRzCisgKiBhcmUgZXZlciBhcmNoaXZlZCBv ciByZXRyaWV2ZWQgb3V0IG9mIHNlcXVlbmNlLgorICoKKyAqIFRvIG1pbmltaXplIHRoZSBtZW1v cnkgZm9vdHByaW50LCBlbnRyaWVzIGFuZCB0aGVpciBhc3NvY2lhdGVkIGJ1ZmZlcnMgYXJlCisg KiBmcmVlZCBpbW1lZGlhdGVseSBvbmNlIGNvbnN1bWVkLiBTaW5jZSBwZ193YWxkdW1wIGRvZXMg bm90IHJlcXVlc3QgdGhlIHNhbWUKKyAqIGJ5dGVzIHR3aWNlLCBhIHNlZ21lbnQgaXMgZGlzY2Fy ZGVkIGFzIHNvb24gYXMgaXQgbW92ZXMgcGFzdCBpdC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXJj aGl2ZWRXQUxGaWxlCit7CisJdWludDMyCQlzdGF0dXM7CQkJLyogaGFzaCBzdGF0dXMgKi8KKwlj b25zdCBjaGFyICpmbmFtZTsJCQkvKiBoYXNoIGtleTogV0FMIHNlZ21lbnQgbmFtZSAqLworCisJ U3RyaW5nSW5mbwlidWY7CQkJLyogaG9sZHMgV0FMIGJ5dGVzIHJlYWQgZnJvbSBhcmNoaXZlICov CisKKwlpbnQJCQlyZWFkX2xlbjsJCS8qIHRvdGFsIGJ5dGVzIG9mIGEgV0FMIHJlYWQgZnJvbSBh cmNoaXZlICovCit9IEFyY2hpdmVkV0FMRmlsZTsKKworc3RhdGljIHVpbnQzMiBoYXNoX3N0cmlu Z19wb2ludGVyKGNvbnN0IGNoYXIgKnMpOworI2RlZmluZSBTSF9QUkVGSVgJCQkJQXJjaGl2ZWRX QUwKKyNkZWZpbmUgU0hfRUxFTUVOVF9UWVBFCQkJQXJjaGl2ZWRXQUxGaWxlCisjZGVmaW5lIFNI X0tFWV9UWVBFCQkJCWNvbnN0IGNoYXIgKgorI2RlZmluZSBTSF9LRVkJCQkJCWZuYW1lCisjZGVm aW5lIFNIX0hBU0hfS0VZKHRiLCBrZXkpCWhhc2hfc3RyaW5nX3BvaW50ZXIoa2V5KQorI2RlZmlu ZSBTSF9FUVVBTCh0YiwgYSwgYikJCShzdHJjbXAoYSwgYikgPT0gMCkKKyNkZWZpbmUgU0hfU0NP UEUJCQkJc3RhdGljIGlubGluZQorI2RlZmluZSBTSF9SQVdfQUxMT0NBVE9SCQlwZ19tYWxsb2Mw CisjZGVmaW5lIFNIX0RFQ0xBUkUKKyNkZWZpbmUgU0hfREVGSU5FCisjaW5jbHVkZSAibGliL3Np bXBsZWhhc2guaCIKKwordHlwZWRlZiBzdHJ1Y3QgYXN0cmVhbWVyX3dhbGR1bXAKK3sKKwlhc3Ry ZWFtZXIJYmFzZTsKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvOworfSBhc3RyZWFtZXJf d2FsZHVtcDsKKworc3RhdGljIEFyY2hpdmVkV0FMRmlsZSAqZ2V0X2FyY2hpdmVfd2FsX2VudHJ5 KGNvbnN0IGNoYXIgKmZuYW1lLAorCQkJCQkJCQkJCQkgIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0 ZUluZm8sCisJCQkJCQkJCQkJCSAgaW50IFdhbFNlZ1N6KTsKK3N0YXRpYyBpbnQJcmVhZF9hcmNo aXZlX2ZpbGUoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgU2l6ZSBjb3VudCk7CisKK3N0 YXRpYyBhc3RyZWFtZXIgKmFzdHJlYW1lcl93YWxkdW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnBy aXZhdGVJbmZvKTsKK3N0YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQoYXN0cmVh bWVyICpzdHJlYW1lciwKKwkJCQkJCQkJCSAgYXN0cmVhbWVyX21lbWJlciAqbWVtYmVyLAorCQkJ CQkJCQkJICBjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuLAorCQkJCQkJCQkJICBhc3RyZWFtZXJf YXJjaGl2ZV9jb250ZXh0IGNvbnRleHQpOworc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1bXBf ZmluYWxpemUoYXN0cmVhbWVyICpzdHJlYW1lcik7CitzdGF0aWMgdm9pZCBhc3RyZWFtZXJfd2Fs ZHVtcF9mcmVlKGFzdHJlYW1lciAqc3RyZWFtZXIpOworCitzdGF0aWMgYm9vbCBtZW1iZXJfaXNf d2FsX2ZpbGUoYXN0cmVhbWVyX3dhbGR1bXAgKm15c3RyZWFtZXIsCisJCQkJCQkJICAgYXN0cmVh bWVyX21lbWJlciAqbWVtYmVyLAorCQkJCQkJCSAgIGNoYXIgKipmbmFtZSk7CisKK3N0YXRpYyBj b25zdCBhc3RyZWFtZXJfb3BzIGFzdHJlYW1lcl93YWxkdW1wX29wcyA9IHsKKwkuY29udGVudCA9 IGFzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQsCisJLmZpbmFsaXplID0gYXN0cmVhbWVyX3dhbGR1 bXBfZmluYWxpemUsCisJLmZyZWUgPSBhc3RyZWFtZXJfd2FsZHVtcF9mcmVlCit9OworCisvKgor ICogSW5pdGlhbGl6ZXMgdGhlIHRhciBhcmNoaXZlIHJlYWRlciwgY3JlYXRlcyBhIGhhc2ggdGFi bGUgZm9yIFdBTCBlbnRyaWVzLAorICogY2hlY2tzIGZvciBleGlzdGluZyB2YWxpZCBXQUwgc2Vn bWVudHMgaW4gdGhlIGFyY2hpdmUgZmlsZSBhbmQgcmV0cmlldmVzIHRoZQorICogc2VnbWVudCBz aXplLCBhbmQgc2V0cyB1cCBmaWx0ZXJzIGZvciByZWxldmFudCBlbnRyaWVzLgorICovCit2b2lk Citpbml0X2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIGNvbnN0 IGNoYXIgKndhbGRpciwKKwkJCQkJaW50ICpXYWxTZWdTeiwgcGdfY29tcHJlc3NfYWxnb3JpdGht IGNvbXByZXNzaW9uKQoreworCWludAkJCWZkOworCWFzdHJlYW1lciAgKnN0cmVhbWVyOworCUFy Y2hpdmVkV0FMRmlsZSAqZW50cnkgPSBOVUxMOworCVhMb2dMb25nUGFnZUhlYWRlciBsb25naGRy OworCVhMb2dTZWdObwlzZWdubzsKKwlUaW1lTGluZUlECXRpbWVsaW5lOworCisJLyogT3BlbiB0 YXIgYXJjaGl2ZSBhbmQgc3RvcmUgaXRzIGZpbGUgZGVzY3JpcHRvciAqLworCWZkID0gb3Blbl9m aWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworCisJ aWYgKGZkIDwgMCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgcHJp dmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisKKwlwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCA9IGZk OworCisJc3RyZWFtZXIgPSBhc3RyZWFtZXJfd2FsZHVtcF9uZXcocHJpdmF0ZUluZm8pOworCisJ LyogQmVmb3JlIHRoYXQgd2UgbXVzdCBwYXJzZSB0aGUgdGFyIGFyY2hpdmUuICovCisJc3RyZWFt ZXIgPSBhc3RyZWFtZXJfdGFyX3BhcnNlcl9uZXcoc3RyZWFtZXIpOworCisJLyogQmVmb3JlIHRo YXQgd2UgbXVzdCBkZWNvbXByZXNzLCBpZiBhcmNoaXZlIGlzIGNvbXByZXNzZWQuICovCisJaWYg KGNvbXByZXNzaW9uID09IFBHX0NPTVBSRVNTSU9OX0daSVApCisJCXN0cmVhbWVyID0gYXN0cmVh bWVyX2d6aXBfZGVjb21wcmVzc29yX25ldyhzdHJlYW1lcik7CisJZWxzZSBpZiAoY29tcHJlc3Np b24gPT0gUEdfQ09NUFJFU1NJT05fTFo0KQorCQlzdHJlYW1lciA9IGFzdHJlYW1lcl9sejRfZGVj b21wcmVzc29yX25ldyhzdHJlYW1lcik7CisJZWxzZSBpZiAoY29tcHJlc3Npb24gPT0gUEdfQ09N UFJFU1NJT05fWlNURCkKKwkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfenN0ZF9kZWNvbXByZXNzb3Jf bmV3KHN0cmVhbWVyKTsKKworCXByaXZhdGVJbmZvLT5hcmNoaXZlX3N0cmVhbWVyID0gc3RyZWFt ZXI7CisKKwkvKgorCSAqIEFsbG9jYXRlIGEgYnVmZmVyIGZvciByZWFkaW5nIHRoZSBhcmNoaXZl IGZpbGUgdG8gZmFjaWxpdGF0ZSBjb250ZW50CisJICogZGVjb2Rpbmc7IHJlYWQgcmVxdWVzdHMg bXVzdCBub3QgZXhjZWVkIHRoZSBhbGxvY2F0ZWQgYnVmZmVyIHNpemUuCisJICovCisJcHJpdmF0 ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYgPSBwZ19tYWxsb2MoUkVBRF9DSFVOS19TSVpFKTsKKwlw cml2YXRlSW5mby0+YXJjaGl2ZV9yZWFkX2J1Zl9zaXplID0gUkVBRF9DSFVOS19TSVpFOworCisJ LyoKKwkgKiBIYXNoIHRhYmxlIHN0b3JpbmcgV0FMIGVudHJpZXMgcmVhZCBmcm9tIHRoZSBhcmNo aXZlIHdpdGggYW4gYXJiaXRyYXJ5CisJICogaW5pdGlhbCBzaXplCisJICovCisJcHJpdmF0ZUlu Zm8tPmFyY2hpdmVfd2FsX2h0YWIgPSBBcmNoaXZlZFdBTF9jcmVhdGUoOCwgTlVMTCk7CisKKwkv KgorCSAqIFZlcmlmeSB0aGF0IHRoZSBhcmNoaXZlIGNvbnRhaW5zIHZhbGlkIFdBTCBmaWxlcyBh bmQgZmV0Y2ggV0FMIHNlZ21lbnQKKwkgKiBzaXplCisJICovCisJd2hpbGUgKGVudHJ5ID09IE5V TEwgfHwgZW50cnktPmJ1Zi0+bGVuIDwgWExPR19CTENLU1opCisJeworCQlpZiAocmVhZF9hcmNo aXZlX2ZpbGUocHJpdmF0ZUluZm8sIFhMT0dfQkxDS1NaKSA9PSAwKQorCQkJcGdfZmF0YWwoImNv dWxkIG5vdCBmaW5kIFdBTCBpbiBhcmNoaXZlIFwiJXNcIiIsCisJCQkJCSBwcml2YXRlSW5mby0+ YXJjaGl2ZV9uYW1lKTsKKworCQllbnRyeSA9IHByaXZhdGVJbmZvLT5jdXJfZmlsZTsKKwl9CisK KwkvKiBTZXQgV2FsU2VnU3ogaWYgV0FMIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IHJlYWQgKi8KKwls b25naGRyID0gKFhMb2dMb25nUGFnZUhlYWRlcikgZW50cnktPmJ1Zi0+ZGF0YTsKKworCWlmICgh SXNWYWxpZFdhbFNlZ1NpemUobG9uZ2hkci0+eGxwX3NlZ19zaXplKSkKKwl7CisJCXBnX2xvZ19l cnJvcihuZ2V0dGV4dCgiaW52YWxpZCBXQUwgc2VnbWVudCBzaXplIGluIFdBTCBmaWxlIGZyb20g YXJjaGl2ZSBcIiVzXCIgKCVkIGJ5dGUpIiwKKwkJCQkJCQkgICJpbnZhbGlkIFdBTCBzZWdtZW50 IHNpemUgaW4gV0FMIGZpbGUgZnJvbSBhcmNoaXZlIFwiJXNcIiAoJWQgYnl0ZXMpIiwKKwkJCQkJ CQkgIGxvbmdoZHItPnhscF9zZWdfc2l6ZSksCisJCQkJCSBwcml2YXRlSW5mby0+YXJjaGl2ZV9u YW1lLCBsb25naGRyLT54bHBfc2VnX3NpemUpOworCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJUaGUg V0FMIHNlZ21lbnQgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIGJldHdlZW4gMSBNQiBhbmQg MSBHQi4iKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkqV2FsU2VnU3ogPSBsb25naGRyLT54bHBfc2Vn X3NpemU7CisKKwkvKgorCSAqIFdpdGggdGhlIFdBTCBzZWdtZW50IHNpemUgYXZhaWxhYmxlLCB3 ZSBjYW4gbm93IGluaXRpYWxpemUgdGhlCisJICogZGVwZW5kZW50IHN0YXJ0IGFuZCBlbmQgc2Vn bWVudCBudW1iZXJzLgorCSAqLworCUFzc2VydCghWExvZ1JlY1B0cklzSW52YWxpZChwcml2YXRl SW5mby0+c3RhcnRwdHIpKTsKKwlYTEJ5dGVUb1NlZyhwcml2YXRlSW5mby0+c3RhcnRwdHIsIHBy aXZhdGVJbmZvLT5zdGFydF9zZWdubywgKldhbFNlZ1N6KTsKKworCWlmICghWExvZ1JlY1B0cklz SW52YWxpZChwcml2YXRlSW5mby0+ZW5kcHRyKSkKKwkJWExCeXRlVG9TZWcocHJpdmF0ZUluZm8t PmVuZHB0ciwgcHJpdmF0ZUluZm8tPmVuZF9zZWdubywgKldhbFNlZ1N6KTsKKworCS8qCisJICog VGhpcyBXQUwgcmVjb3JkIHdhcyBmZXRjaGVkIGJlZm9yZSB0aGUgZmlsdGVyaW5nIHBhcmFtZXRl cnMKKwkgKiAoc3RhcnRfc2Vnbm8gYW5kIGVuZF9zZWdubykgd2VyZSBmdWxseSBpbml0aWFsaXpl ZC4gUGVyZm9ybSB0aGUKKwkgKiByZWxldmFuY2UgY2hlY2sgYWdhaW5zdCB0aGUgdXNlci1wcm92 aWRlZCByYW5nZSBub3c7IGlmIHRoZSBXQUwgZmFsbHMKKwkgKiBvdXRzaWRlIHRoaXMgcmFuZ2Us IHJlbW92ZSBpdCBmcm9tIHRoZSBoYXNoIHRhYmxlLiBTdWJzZXF1ZW50IFdBTCB3aWxsCisJICog YmUgZmlsdGVyZWQgYXV0b21hdGljYWxseSBieSB0aGUgYXJjaGl2ZWQgc3RyZWFtZXIgdXNpbmcg dGhlIHVwZGF0ZWQKKwkgKiBzdGFydF9zZWdubyBhbmQgZW5kX3NlZ25vIHZhbHVlcy4KKwkgKi8K KwlYTG9nRnJvbUZpbGVOYW1lKGVudHJ5LT5mbmFtZSwgJnRpbWVsaW5lLCAmc2Vnbm8sIHByaXZh dGVJbmZvLT5zZWdzaXplKTsKKwlpZiAocHJpdmF0ZUluZm8tPnRpbWVsaW5lICE9IHRpbWVsaW5l IHx8CisJCXByaXZhdGVJbmZvLT5zdGFydF9zZWdubyA+IHNlZ25vIHx8CisJCXByaXZhdGVJbmZv LT5lbmRfc2Vnbm8gPCBzZWdubykKKwkJZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShlbnRyeS0+Zm5h bWUsIHByaXZhdGVJbmZvKTsKK30KKworLyoKKyAqIFJlbGVhc2UgdGhlIGFyY2hpdmUgc3RyZWFt ZXIgY2hhaW4gYW5kIGNsb3NlIHRoZSBhcmNoaXZlIGZpbGUuCisgKi8KK3ZvaWQKK2ZyZWVfYXJj aGl2ZV9yZWFkZXIoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbykKK3sKKwkvKgorCSAqIE5C OiBOb3JtYWxseSwgYXN0cmVhbWVyX2ZpbmFsaXplKCkgaXMgY2FsbGVkIGJlZm9yZSBhc3RyZWFt ZXJfZnJlZSgpIHRvCisJICogZmx1c2ggYW55IHJlbWFpbmluZyBidWZmZXJlZCBkYXRhIG9yIHRv IGVuc3VyZSB0aGUgZW5kIG9mIHRoZSB0YXIKKwkgKiBhcmNoaXZlIGlzIHJlYWNoZWQuIEhvd2V2 ZXIsIHdoZW4gZGVjb2RpbmcgYSBXQUwgZmlsZSwgb25jZSB3ZSBoaXQgdGhlCisJICogZW5kIExT TiwgYW55IHJlbWFpbmluZyBXQUwgZGF0YSBpbiB0aGUgYnVmZmVyIG9yIHRoZSB0YXIgYXJjaGl2 ZSdzCisJICogdW5yZWFjaGVkIGVuZCBjYW4gYmUgc2FmZWx5IGlnbm9yZWQuCisJICovCisJYXN0 cmVhbWVyX2ZyZWUocHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXIpOworCisJLyogRnJlZSB0 aGUgcmV1c2FibGUgcmVhZCBidWZmZXIuICovCisJaWYgKHByaXZhdGVJbmZvLT5hcmNoaXZlX3Jl YWRfYnVmICE9IE5VTEwpCisJeworCQlwZ19mcmVlKHByaXZhdGVJbmZvLT5hcmNoaXZlX3JlYWRf YnVmKTsKKwkJcHJpdmF0ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYgPSBOVUxMOworCX0KKworCS8q IENsb3NlIHRoZSBmaWxlLiAqLworCWlmIChjbG9zZShwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCkg IT0gMCkKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVtIiwK KwkJCQkJIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworfQorCisvKgorICogQ29waWVzIFdB TCBkYXRhIGZyb20gYXN0cmVhbWVyIHRvIHJlYWRCdWZmOyBpZiB1bmF2YWlsYWJsZSwgZmV0Y2hl cyBtb3JlCisgKiBmcm9tIHRoZSB0YXIgYXJjaGl2ZSB2aWEgYXN0cmVhbWVyLgorICovCitpbnQK K3JlYWRfYXJjaGl2ZV93YWxfcGFnZShYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBYTG9n UmVjUHRyIHRhcmdldFBhZ2VQdHIsCisJCQkJCSAgU2l6ZSBjb3VudCwgY2hhciAqcmVhZEJ1ZmYs IGludCBXYWxTZWdTeikKK3sKKwljaGFyCSAgICpwID0gcmVhZEJ1ZmY7CisJU2l6ZQkJbmJ5dGVz ID0gY291bnQ7CisJWExvZ1JlY1B0cglyZWNwdHIgPSB0YXJnZXRQYWdlUHRyOworCVhMb2dTZWdO bwlzZWdubzsKKwljaGFyCQlmbmFtZVtNQVhGTkFNRUxFTl07CisJQXJjaGl2ZWRXQUxGaWxlICpl bnRyeTsKKworCS8qIElkZW50aWZ5IHRoZSBzZWdtZW50IGFuZCBsb2NhdGUgaXRzIGVudHJ5IGlu IHRoZSBhcmNoaXZlIGhhc2ggKi8KKwlYTEJ5dGVUb1NlZyh0YXJnZXRQYWdlUHRyLCBzZWdubywg V2FsU2VnU3opOworCVhMb2dGaWxlTmFtZShmbmFtZSwgcHJpdmF0ZUluZm8tPnRpbWVsaW5lLCBz ZWdubywgV2FsU2VnU3opOworCWVudHJ5ID0gZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KGZuYW1lLCBw cml2YXRlSW5mbywgV2FsU2VnU3opOworCisJd2hpbGUgKG5ieXRlcyA+IDApCisJeworCQljaGFy CSAgICpidWYgPSBlbnRyeS0+YnVmLT5kYXRhOworCQlpbnQJCQlidWZMZW4gPSBlbnRyeS0+YnVm LT5sZW47CisJCVhMb2dSZWNQdHIJZW5kUHRyOworCQlYTG9nUmVjUHRyCXN0YXJ0UHRyOworCisJ CS8qIENhbGN1bGF0ZSB0aGUgTFNOIHJhbmdlIGN1cnJlbnRseSByZXNpZGluZyBpbiB0aGUgYnVm ZmVyICovCisJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCBlbnRyeS0+cmVhZF9sZW4s IFdhbFNlZ1N6LCBlbmRQdHIpOworCQlzdGFydFB0ciA9IGVuZFB0ciAtIGJ1ZkxlbjsKKworCQkv KgorCQkgKiBDb3B5IHRoZSByZXF1ZXN0ZWQgV0FMIHJlY29yZCBpZiBpdCBleGlzdHMgaW4gdGhl IGJ1ZmZlci4KKwkJICovCisJCWlmIChidWZMZW4gPiAwICYmIHN0YXJ0UHRyIDw9IHJlY3B0ciAm JiByZWNwdHIgPCBlbmRQdHIpCisJCXsKKwkJCWludAkJCWNvcHlCeXRlczsKKwkJCWludAkJCW9m ZnNldCA9IHJlY3B0ciAtIHN0YXJ0UHRyOworCisJCQkvKgorCQkJICogR2l2ZW4gc3RhcnRQdHIg PD0gcmVjcHRyIDwgZW5kUHRyIGFuZCBhIHRvdGFsIGJ1ZmZlciBzaXplCisJCQkgKiAnYnVmTGVu JywgdGhlIG9mZnNldCAocmVjcHRyIC0gc3RhcnRQdHIpIHdpbGwgYWx3YXlzIGJlIGxlc3MKKwkJ CSAqIHRoYW4gJ2J1ZkxlbicuCisJCQkgKi8KKwkJCUFzc2VydChvZmZzZXQgPCBidWZMZW4pOwor CisJCQljb3B5Qnl0ZXMgPSBNaW4obmJ5dGVzLCBidWZMZW4gLSBvZmZzZXQpOworCQkJbWVtY3B5 KHAsIGJ1ZiArIG9mZnNldCwgY29weUJ5dGVzKTsKKworCQkJLyogVXBkYXRlIHN0YXRlIGZvciBy ZWFkICovCisJCQlyZWNwdHIgKz0gY29weUJ5dGVzOworCQkJbmJ5dGVzIC09IGNvcHlCeXRlczsK KwkJCXAgKz0gY29weUJ5dGVzOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIEJlZm9y ZSBzdGFydGluZyB0aGUgYWN0dWFsIGRlY29kaW5nIGxvb3AsIHBnX3dhbGR1bXAgdHJpZXMgdG8K KwkJCSAqIGxvY2F0ZSB0aGUgZmlyc3QgdmFsaWQgcmVjb3JkIGZyb20gdGhlIHVzZXItc3BlY2lm aWVkIHN0YXJ0CisJCQkgKiBwb3NpdGlvbiwgd2hpY2ggbWlnaHQgbm90IGJlIHRoZSBzdGFydCBv ZiBhIFdBTCByZWNvcmQgYW5kCisJCQkgKiBjb3VsZCBmYWxsIGluIHRoZSBtaWRkbGUgb2YgYSBy ZWNvcmQgdGhhdCBzcGFucyBtdWx0aXBsZSBwYWdlcy4KKwkJCSAqIENvbnNlcXVlbnRseSwgdGhl IHZhbGlkIHN0YXJ0IHBvc2l0aW9uIHRoZSBkZWNvZGVyIGlzIGxvb2tpbmcKKwkJCSAqIGZvciBj b3VsZCBiZSBmYXIgYXdheSBmcm9tIHRoYXQgaW5pdGlhbCBwb3NpdGlvbi4KKwkJCSAqCisJCQkg KiBUaGlzIG1heSBpbnZvbHZlIHJlYWRpbmcgYWNyb3NzIG11bHRpcGxlIHBhZ2VzLCBhbmQgdGhp cworCQkJICogcHJlLXJlYWRpbmcgZmV0Y2hlcyBkYXRhIGluIG11bHRpcGxlIHJvdW5kcyBmcm9t IHRoZSBhcmNoaXZlCisJCQkgKiBzdHJlYW1lcjsgbm9ybWFsbHksIHdlIHdvdWxkIHRocm93IGF3 YXkgZXhpc3RpbmcgYnVmZmVyCisJCQkgKiBjb250ZW50cyB0byBmZXRjaCB0aGUgbmV4dCBzZXQg b2YgZGF0YSwgYnV0IHRoYXQgZXhpc3RpbmcgZGF0YQorCQkJICogbWlnaHQgYmUgbmVlZGVkIG9u Y2UgdGhlIG1haW4gbG9vcCBzdGFydHMuIEJlY2F1c2UgcHJldmlvdXNseQorCQkJICogcmVhZCBk YXRhIGNhbm5vdCBiZSByZS1yZWFkIGJ5IHRoZSBhcmNoaXZlIHN0cmVhbWVyLCB3ZSBkZWxheQor CQkJICogcmVzZXR0aW5nIHRoZSBidWZmZXIgdW50aWwgdGhlIG1haW4gZGVjb2RpbmcgbG9vcCBp cyBlbnRlcmVkLgorCQkJICoKKwkJCSAqIE9uY2UgcGdfd2FsZHVtcCBoYXMgZW50ZXJlZCB0aGUg bWFpbiBsb29wLCBpdCBtYXkgcmUtcmVhZCB0aGUKKwkJCSAqIGN1cnJlbnRseSBhY3RpdmUgcGFn ZSwgYnV0IG5ldmVyIGFuIG9sZGVyIG9uZTsgdGhlcmVmb3JlLCBhbnkKKwkJCSAqIGZ1bGx5IGNv bnN1bWVkIFdBTCBkYXRhIHByZWNlZGluZyB0aGUgY3VycmVudCBwYWdlIGNhbiB0aGVuIGJlCisJ CQkgKiBzYWZlbHkgZGlzY2FyZGVkLgorCQkJICovCisJCQlpZiAocHJpdmF0ZUluZm8tPmRlY29k aW5nX3N0YXJ0ZWQpCisJCQl7CisJCQkJcmVzZXRTdHJpbmdJbmZvKGVudHJ5LT5idWYpOworCisJ CQkJLyoKKwkJCQkgKiBQdXNoIGJhY2sgdGhlIHBhcnRpYWwgcGFnZSBkYXRhIGZvciB0aGUgY3Vy cmVudCBwYWdlIHRvIHRoZQorCQkJCSAqIGJ1ZmZlciwgZW5zdXJpbmcgaXQgcmVtYWlucyBmdWxs IHBhZ2UgYXZhaWxhYmxlIGZvcgorCQkJCSAqIHJlLXJlYWRpbmcgaWYgcmVxdWVzdGVkLgorCQkJ CSAqLworCQkJCWlmIChwID4gcmVhZEJ1ZmYpCisJCQkJeworCQkJCQlBc3NlcnQoKGNvdW50IC0g bmJ5dGVzKSA+IDApOworCQkJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKGVudHJ5LT5idWYsIHJl YWRCdWZmLCBjb3VudCAtIG5ieXRlcyk7CisJCQkJfQorCQkJfQorCisJCQkvKgorCQkJICogTm93 LCBmZXRjaCBtb3JlIGRhdGE7IHJhaXNlIGFuIGVycm9yIGlmIGl0J3Mgbm90IHRoZSBjdXJyZW50 CisJCQkgKiBzZWdtZW50IGJlaW5nIHJlYWQgYnkgdGhlIGFyY2hpdmUgc3RyZWFtZXIgb3IgaWYg cmVhZGluZyBvZiB0aGUKKwkJCSAqIGFyY2hpdmVkIGZpbGUgaGFzIGZpbmlzaGVkLgorCQkJICov CisJCQlpZiAocHJpdmF0ZUluZm8tPmN1cl9maWxlICE9IGVudHJ5IHx8CisJCQkJcmVhZF9hcmNo aXZlX2ZpbGUocHJpdmF0ZUluZm8sIFJFQURfQ0hVTktfU0laRSkgPT0gMCkKKwkJCQlwZ19mYXRh bCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCIgZnJvbSBhcmNoaXZlIFwiJXNcIjogcmVhZCAl bGxkIG9mICVsbGQiLAorCQkJCQkJIGZuYW1lLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lLAor CQkJCQkJIChsb25nIGxvbmcgaW50KSAoY291bnQgLSBuYnl0ZXMpLAorCQkJCQkJIChsb25nIGxv bmcgaW50KSBjb3VudCk7CisJCX0KKwl9CisKKwkvKgorCSAqIFNob3VsZCBoYXZlIHN1Y2Nlc3Nm dWxseSByZWFkIGFsbCB0aGUgcmVxdWVzdGVkIGJ5dGVzIG9yIHJlcG9ydGVkIGEKKwkgKiBmYWls dXJlIGJlZm9yZSB0aGlzIHBvaW50LgorCSAqLworCUFzc2VydChuYnl0ZXMgPT0gMCk7CisKKwkv KgorCSAqIE5COiBXZSByZXR1cm4gdGhlIGZpeGVkIHZhbHVlIHByb3ZpZGVkIGFzIGlucHV0LiBX ZSBjb3VsZCByZXR1cm4gYQorCSAqIGJvb2xlYW4gc2luY2Ugd2UgZWl0aGVyIHN1Y2Nlc3NmdWxs eSByZWFkIHRoZSBXQUwgcGFnZSBvciByYWlzZSBhbgorCSAqIGVycm9yLCBidXQgdGhlIGNhbGxl ciBleHBlY3RzIHRoaXMgdmFsdWUgdG8gYmUgcmV0dXJuZWQuIFRoZSByb3V0aW5lCisJICogdGhh dCByZWFkcyBXQUwgcGFnZXMgZnJvbSB0aGUgcGh5c2ljYWwgV0FMIGZpbGUgZm9sbG93cyB0aGUg c2FtZQorCSAqIGNvbnZlbnRpb24uCisJICovCisJcmV0dXJuIGNvdW50OworfQorCisvKgorICog Q2xlYXJzIHRoZSBidWZmZXIgb2YgYSBXQUwgZW50cnkgdGhhdCBpcyBiZWluZyBpZ25vcmVkLiAg VGhpcyBmcmVlcyB1cCBtZW1vcnkKKyAqIGFuZCBwcmV2ZW50cyB0aGUgYWNjdW11bGF0aW9uIG9m IGlycmVsZXZhbnQgV0FMIGRhdGEuICBBZGRpdGlvbmFsbHksCisgKiBjb25kaXRpb25hbGx5IHNl dHRpbmcgY3VyX2ZpbGUgd2l0aGluIHByaXZhdGVJbmZvIHRvIE5VTEwgZW5zdXJlcyB0aGUKKyAq IGFyY2hpdmUgc3RyZWFtZXIgc2tpcHMgdW5uZWNlc3NhcnkgY29weSBvcGVyYXRpb25zLgorICov Cit2b2lkCitmcmVlX2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVt cFByaXZhdGUgKnByaXZhdGVJbmZvKQoreworCUFyY2hpdmVkV0FMRmlsZSAqZW50cnk7CisKKwll bnRyeSA9IEFyY2hpdmVkV0FMX2xvb2t1cChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwg Zm5hbWUpOworCisJaWYgKGVudHJ5ID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIERlc3Ryb3kg dGhlIGJ1ZmZlciAqLworCWRlc3Ryb3lTdHJpbmdJbmZvKGVudHJ5LT5idWYpOworCWVudHJ5LT5i dWYgPSBOVUxMOworCisJLyogU2V0IGN1cl9maWxlIHRvIE5VTEwgaWYgaXQgbWF0Y2hlcyB0aGUg ZW50cnkgYmVpbmcgaWdub3JlZCAqLworCWlmIChwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPT0gZW50 cnkpCisJCXByaXZhdGVJbmZvLT5jdXJfZmlsZSA9IE5VTEw7CisKKwlBcmNoaXZlZFdBTF9kZWxl dGVfaXRlbShwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwgZW50cnkpOworfQorCisvKgor ICogUmV0dXJucyB0aGUgYXJjaGl2ZWQgV0FMIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUgaWYg aXQgZXhpc3RzLiAgT3RoZXJ3aXNlLAorICogaXQgaW52b2tlcyB0aGUgcm91dGluZSB0byByZWFk IHRoZSBhcmNoaXZlZCBmaWxlLCB3aGljaCB0aGVuIHBvcHVsYXRlcyB0aGUKKyAqIGVudHJ5IGlu IHRoZSBoYXNoIHRhYmxlIGlmIHRoYXQgV0FMIGV4aXN0cyBpbiB0aGUgYXJjaGl2ZS4KKyAqLwor c3RhdGljIEFyY2hpdmVkV0FMRmlsZSAqCitnZXRfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hh ciAqZm5hbWUsIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sCisJCQkJCSAgaW50IFdhbFNl Z1N6KQoreworCUFyY2hpdmVkV0FMRmlsZSAqZW50cnkgPSBOVUxMOworCisJLyogU2VhcmNoIGhh c2ggdGFibGUgKi8KKwllbnRyeSA9IEFyY2hpdmVkV0FMX2xvb2t1cChwcml2YXRlSW5mby0+YXJj aGl2ZV93YWxfaHRhYiwgZm5hbWUpOworCisJaWYgKGVudHJ5ICE9IE5VTEwpCisJCXJldHVybiBl bnRyeTsKKworCS8qCisJICogVGhlIHJlcXVlc3RlZCBXQUwgZW50cnkgaGFzIG5vdCBiZWVuIHJl YWQgZnJvbSB0aGUgYXJjaGl2ZSB5ZXQ7IGludm9rZQorCSAqIHRoZSBhcmNoaXZlIHN0cmVhbWVy IHRvIHJlYWQgaXQuCisJICovCisJd2hpbGUgKDEpCisJeworCQkvKiBGZXRjaCBtb3JlIGRhdGEg Ki8KKwkJaWYgKHJlYWRfYXJjaGl2ZV9maWxlKHByaXZhdGVJbmZvLCBSRUFEX0NIVU5LX1NJWkUp ID09IDApCisJCQlicmVhazsJCQkJLyogYXJjaGl2ZSBmaWxlIGVuZGVkICovCisKKwkJLyoKKwkJ ICogQXJjaGl2ZWQgc3RyZWFtZXIgaXMgcmVhZGluZyBhIG5vbi1XQUwgZmlsZSBvciBhbiBpcnJl bGV2YW50IFdBTAorCQkgKiBmaWxlLgorCQkgKi8KKwkJaWYgKHByaXZhdGVJbmZvLT5jdXJfZmls ZSA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3VyX2Zp bGU7CisKKwkJLyogRm91bmQgdGhlIHJlcXVpcmVkIGVudHJ5ICovCisJCWlmIChzdHJjbXAoZm5h bWUsIGVudHJ5LT5mbmFtZSkgPT0gMCkKKwkJCXJldHVybiBlbnRyeTsKKworCQkvKiBXQUwgc2Vn bWVudHMgbXVzdCBiZSBhcmNoaXZlZCBpbiBvcmRlciAqLworCQlwZ19sb2dfZXJyb3IoIldBTCBm aWxlcyBhcmUgbm90IGFyY2hpdmVkIGluIHNlcXVlbnRpYWwgb3JkZXIiKTsKKwkJcGdfbG9nX2Vy cm9yX2RldGFpbCgiRXhwZWN0aW5nIHNlZ21lbnQgXCIlc1wiIGJ1dCBmb3VuZCBcIiVzXCIuIiwK KwkJCQkJCQlmbmFtZSwgZW50cnktPmZuYW1lKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKiBSZXF1 ZXN0ZWQgV0FMIHNlZ21lbnQgbm90IGZvdW5kICovCisJcGdfZmF0YWwoImNvdWxkIG5vdCBmaW5k IFdBTCBcIiVzXCIgaW4gYXJjaGl2ZSBcIiVzXCIiLAorCQkJIGZuYW1lLCBwcml2YXRlSW5mby0+ YXJjaGl2ZV9uYW1lKTsKK30KKworLyoKKyAqIFJlYWRzIHRoZSBhcmNoaXZlIGZpbGUgYW5kIHBh c3NlcyBpdCB0byB0aGUgYXJjaGl2ZSBzdHJlYW1lciBmb3IKKyAqIGRlY29tcHJlc3Npb24uCisg Ki8KK3N0YXRpYyBpbnQKK3JlYWRfYXJjaGl2ZV9maWxlKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0 ZUluZm8sIFNpemUgY291bnQpCit7CisJaW50CQkJcmM7CisKKwkvKiBUaGUgcmVhZCByZXF1ZXN0 IG11c3Qgbm90IGV4Y2VlZCB0aGUgYWxsb2NhdGVkIGJ1ZmZlciBzaXplLiAqLworCUFzc2VydChw cml2YXRlSW5mby0+YXJjaGl2ZV9yZWFkX2J1Zl9zaXplID49IGNvdW50KTsKKworCXJjID0gcmVh ZChwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCwgcHJpdmF0ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYs IGNvdW50KTsKKwlpZiAocmMgPCAwKQorCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBc IiVzXCI6ICVtIiwKKwkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisKKwkvKgorCSAq IERlY29tcHJlc3MgKGlmIHJlcXVpcmVkKSwgYW5kIHRoZW4gcGFyc2UgdGhlIHByZXZpb3VzbHkg cmVhZCBjb250ZW50cworCSAqIG9mIHRoZSB0YXIgZmlsZS4KKwkgKi8KKwlpZiAocmMgPiAwKQor CQlhc3RyZWFtZXJfY29udGVudChwcml2YXRlSW5mby0+YXJjaGl2ZV9zdHJlYW1lciwgTlVMTCwK KwkJCQkJCSAgcHJpdmF0ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYsIHJjLAorCQkJCQkJICBBU1RS RUFNRVJfVU5LTk9XTik7CisKKwlyZXR1cm4gcmM7Cit9CisKKy8qCisgKiBDcmVhdGUgYW4gYXN0 cmVhbWVyIHRoYXQgY2FuIHJlYWQgV0FMIGZyb20gYSB0YXIgZmlsZS4KKyAqLworc3RhdGljIGFz dHJlYW1lciAqCithc3RyZWFtZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2YXRl SW5mbykKK3sKKwlhc3RyZWFtZXJfd2FsZHVtcCAqc3RyZWFtZXI7CisKKwlzdHJlYW1lciA9IHBh bGxvYzBfb2JqZWN0KGFzdHJlYW1lcl93YWxkdW1wKTsKKwkqKChjb25zdCBhc3RyZWFtZXJfb3Bz ICoqKSAmc3RyZWFtZXItPmJhc2UuYmJzX29wcykgPQorCQkmYXN0cmVhbWVyX3dhbGR1bXBfb3Bz OworCisJc3RyZWFtZXItPnByaXZhdGVJbmZvID0gcHJpdmF0ZUluZm87CisKKwlyZXR1cm4gJnN0 cmVhbWVyLT5iYXNlOworfQorCisvKgorICogTWFpbiBlbnRyeSBwb2ludCBvZiB0aGUgYXJjaGl2 ZSBzdHJlYW1lciBmb3IgcmVhZGluZyBXQUwgZGF0YSBmcm9tIGEgdGFyCisgKiBmaWxlLiBJZiBh IG1lbWJlciBpcyBpZGVudGlmaWVkIGFzIGEgdmFsaWQgV0FMIGZpbGUsIGEgaGFzaCBlbnRyeSBp cyBjcmVhdGVkCisgKiBmb3IgaXQsIGFuZCBpdHMgY29udGVudHMgYXJlIGNvcGllZCBpbnRvIHRo YXQgZW50cnkncyBidWZmZXIsIG1ha2luZyB0aGVtCisgKiBhY2Nlc3NpYmxlIHRvIHRoZSBkZWNv ZGluZyByb3V0aW5lLgorICovCitzdGF0aWMgdm9pZAorYXN0cmVhbWVyX3dhbGR1bXBfY29udGVu dChhc3RyZWFtZXIgKnN0cmVhbWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJCQkg IGNvbnN0IGNoYXIgKmRhdGEsIGludCBsZW4sCisJCQkJCQkgIGFzdHJlYW1lcl9hcmNoaXZlX2Nv bnRleHQgY29udGV4dCkKK3sKKwlhc3RyZWFtZXJfd2FsZHVtcCAqbXlzdHJlYW1lciA9IChhc3Ry ZWFtZXJfd2FsZHVtcCAqKSBzdHJlYW1lcjsKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZv ID0gbXlzdHJlYW1lci0+cHJpdmF0ZUluZm87CisKKwlBc3NlcnQoY29udGV4dCAhPSBBU1RSRUFN RVJfVU5LTk9XTik7CisKKwlzd2l0Y2ggKGNvbnRleHQpCisJeworCQljYXNlIEFTVFJFQU1FUl9N RU1CRVJfSEVBREVSOgorCQkJeworCQkJCWNoYXIJICAgKmZuYW1lID0gTlVMTDsKKwkJCQlBcmNo aXZlZFdBTEZpbGUgKmVudHJ5OworCQkJCWJvb2wJCWZvdW5kOworCisJCQkJcGdfbG9nX2RlYnVn KCJyZWFkaW5nIFwiJXNcIiIsIG1lbWJlci0+cGF0aG5hbWUpOworCisJCQkJaWYgKCFtZW1iZXJf aXNfd2FsX2ZpbGUobXlzdHJlYW1lciwgbWVtYmVyLCAmZm5hbWUpKQorCQkJCQlicmVhazsKKwor CQkJCS8qCisJCQkJICogRnVydGhlciBjaGVja3MgYXJlIHNraXBwZWQgaWYgYW55IFdBTCBmaWxl IGNhbiBiZSByZWFkLgorCQkJCSAqIFRoaXMgdHlwaWNhbGx5IG9jY3VycyBkdXJpbmcgaW5pdGlh bCB2ZXJpZmljYXRpb24uCisJCQkJICovCisJCQkJaWYgKCFSRUFEX0FOWV9XQUwocHJpdmF0ZUlu Zm8pKQorCQkJCXsKKwkJCQkJWExvZ1NlZ05vCXNlZ25vOworCQkJCQlUaW1lTGluZUlECXRpbWVs aW5lOworCisJCQkJCS8qCisJCQkJCSAqIFNraXAgdGhlIHNlZ21lbnQgaWYgdGhlIHRpbWVsaW5l IGRvZXMgbm90IG1hdGNoLCBpZiBpdAorCQkJCQkgKiBmYWxscyBvdXRzaWRlIHRoZSBjYWxsZXIt c3BlY2lmaWVkIHJhbmdlLgorCQkJCQkgKi8KKwkJCQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwg JnRpbWVsaW5lLCAmc2Vnbm8sIHByaXZhdGVJbmZvLT5zZWdzaXplKTsKKwkJCQkJaWYgKHByaXZh dGVJbmZvLT50aW1lbGluZSAhPSB0aW1lbGluZSB8fAorCQkJCQkJcHJpdmF0ZUluZm8tPnN0YXJ0 X3NlZ25vID4gc2Vnbm8gfHwKKwkJCQkJCXByaXZhdGVJbmZvLT5lbmRfc2Vnbm8gPCBzZWdubykK KwkJCQkJeworCQkJCQkJcGZyZWUoZm5hbWUpOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9 CisKKwkJCQllbnRyeSA9IEFyY2hpdmVkV0FMX2luc2VydChwcml2YXRlSW5mby0+YXJjaGl2ZV93 YWxfaHRhYiwKKwkJCQkJCQkJCQkgICBmbmFtZSwgJmZvdW5kKTsKKworCQkJCS8qCisJCQkJICog U2hvdWxkbid0IGhhcHBlbiwgYnV0IGlmIGl0IGRvZXMsIHNpbXBseSBpZ25vcmUgdGhlCisJCQkJ ICogZHVwbGljYXRlIFdBTCBmaWxlLgorCQkJCSAqLworCQkJCWlmIChmb3VuZCkKKwkJCQl7CisJ CQkJCXBnX2xvZ193YXJuaW5nKCJpZ25vcmluZyBkdXBsaWNhdGUgV0FMIFwiJXNcIiBmb3VuZCBp biBhcmNoaXZlIFwiJXNcIiIsCisJCQkJCQkJCSAgIG1lbWJlci0+cGF0aG5hbWUsIHByaXZhdGVJ bmZvLT5hcmNoaXZlX25hbWUpOworCQkJCQlwZnJlZShmbmFtZSk7CisJCQkJCWJyZWFrOworCQkJ CX0KKworCQkJCWVudHJ5LT5idWYgPSBtYWtlU3RyaW5nSW5mbygpOworCQkJCWVudHJ5LT5yZWFk X2xlbiA9IDA7CisJCQkJcHJpdmF0ZUluZm8tPmN1cl9maWxlID0gZW50cnk7CisJCQl9CisJCQli cmVhazsKKworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfQ09OVEVOVFM6CisJCQlpZiAocHJpdmF0 ZUluZm8tPmN1cl9maWxlKQorCQkJeworCQkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8ocHJpdmF0 ZUluZm8tPmN1cl9maWxlLT5idWYsIGRhdGEsIGxlbik7CisJCQkJcHJpdmF0ZUluZm8tPmN1cl9m aWxlLT5yZWFkX2xlbiArPSBsZW47CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIEFTVFJFQU1F Ul9NRU1CRVJfVFJBSUxFUjoKKwkJCXByaXZhdGVJbmZvLT5jdXJfZmlsZSA9IE5VTEw7CisJCQli cmVhazsKKworCQljYXNlIEFTVFJFQU1FUl9BUkNISVZFX1RSQUlMRVI6CisJCQlicmVhazsKKwor CQlkZWZhdWx0OgorCQkJLyogU2hvdWxkbid0IGhhcHBlbi4gKi8KKwkJCXBnX2ZhdGFsKCJ1bmV4 cGVjdGVkIHN0YXRlIHdoaWxlIHBhcnNpbmcgdGFyIGZpbGUiKTsKKwl9Cit9CisKKy8qCisgKiBF bmQtb2Ytc3RyZWFtIHByb2Nlc3NpbmcgZm9yIGFuIGFzdHJlYW1lcl93YWxkdW1wIHN0cmVhbS4K KyAqLworc3RhdGljIHZvaWQKK2FzdHJlYW1lcl93YWxkdW1wX2ZpbmFsaXplKGFzdHJlYW1lciAq c3RyZWFtZXIpCit7CisJQXNzZXJ0KHN0cmVhbWVyLT5iYnNfbmV4dCA9PSBOVUxMKTsKK30KKwor LyoKKyAqIEZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhIGFzdHJlYW1lcl93YWxkdW1wIHN0 cmVhbS4KKyAqLworc3RhdGljIHZvaWQKK2FzdHJlYW1lcl93YWxkdW1wX2ZyZWUoYXN0cmVhbWVy ICpzdHJlYW1lcikKK3sKKwlBc3NlcnQoc3RyZWFtZXItPmJic19uZXh0ID09IE5VTEwpOworCXBm cmVlKHN0cmVhbWVyKTsKK30KKworLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYXJjaGl2ZSBt ZW1iZXIgbmFtZSBtYXRjaGVzIHRoZSBXQUwgbmFtaW5nIGZvcm1hdC4gSWYKKyAqIHN1Y2Nlc3Nm dWwsIGl0IGFsc28gb3V0cHV0cyB0aGUgV0FMIHNlZ21lbnQgbmFtZS4KKyAqLworc3RhdGljIGJv b2wKK21lbWJlcl9pc193YWxfZmlsZShhc3RyZWFtZXJfd2FsZHVtcCAqbXlzdHJlYW1lciwgYXN0 cmVhbWVyX21lbWJlciAqbWVtYmVyLAorCQkJCSAgIGNoYXIgKipmbmFtZSkKK3sKKwlpbnQJCQlw YXRobGVuOworCWNoYXIJCXBhdGhuYW1lW01BWFBHUEFUSF07CisJY2hhcgkgICAqZmlsZW5hbWU7 CisKKwkvKiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIG5vcm1hbCBmaWxlcy4gKi8KKwlpZiAo bWVtYmVyLT5pc19kaXJlY3RvcnkgfHwgbWVtYmVyLT5pc19saW5rKQorCQlyZXR1cm4gZmFsc2U7 CisKKwlpZiAoc3RybGVuKG1lbWJlci0+cGF0aG5hbWUpIDwgWExPR19GTkFNRV9MRU4pCisJCXJl dHVybiBmYWxzZTsKKworCS8qCisJICogRm9yIGEgY29ycmVjdCBjb21wYXJpc29uLCB3ZSBtdXN0 IHJlbW92ZSBhbnkgJy4nIG9yICcuLicgY29tcG9uZW50cworCSAqIGZyb20gdGhlIG1lbWJlciBw YXRobmFtZS4gU2ltaWxhciB0byBtZW1iZXJfdmVyaWZ5X2hlYWRlcigpLCB3ZSBwcmVwZW5kCisJ ICogJy4vJyB0byB0aGUgcGF0aCBzbyB0aGF0IGNhbm9uaWNhbGl6ZV9wYXRoKCkgY2FuIHByb3Bl cmx5IHJlc29sdmUgYW5kCisJICogc3RyaXAgdGhlc2UgcmVmZXJlbmNlcyBmcm9tIHRoZSB0YXIg bWVtYmVyIG5hbWUKKwkgKi8KKwlzbnByaW50ZihwYXRobmFtZSwgTUFYUEdQQVRILCAiLi8lcyIs IG1lbWJlci0+cGF0aG5hbWUpOworCWNhbm9uaWNhbGl6ZV9wYXRoKHBhdGhuYW1lKTsKKwlwYXRo bGVuID0gc3RybGVuKHBhdGhuYW1lKTsKKworCS8qIFdBTCBmaWxlcyBmcm9tIHRoZSB0b3AtbGV2 ZWwgb3IgcGdfd2FsIGRpcmVjdG9yeSB3aWxsIGJlIGRlY29kZWQgKi8KKwlpZiAocGF0aGxlbiA+ IFhMT0dfRk5BTUVfTEVOICYmCisJCXN0cm5jbXAocGF0aG5hbWUsIFhMT0dESVIsIHN0cmxlbihY TE9HRElSKSkgIT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogV0FMIGZpbGUgY291bGQgYmUg d2l0aCBmdWxsIHBhdGggKi8KKwlmaWxlbmFtZSA9IHBhdGhuYW1lICsgKHBhdGhsZW4gLSBYTE9H X0ZOQU1FX0xFTik7CisJaWYgKCFJc1hMb2dGaWxlTmFtZShmaWxlbmFtZSkpCisJCXJldHVybiBm YWxzZTsKKworCSpmbmFtZSA9IHBuc3RyZHVwKGZpbGVuYW1lLCBYTE9HX0ZOQU1FX0xFTik7CisK KwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZmlsZW1hcCBo YXNoIHRhYmxlLgorICovCitzdGF0aWMgdWludDMyCitoYXNoX3N0cmluZ19wb2ludGVyKGNvbnN0 IGNoYXIgKnMpCit7CisJdW5zaWduZWQgY2hhciAqc3MgPSAodW5zaWduZWQgY2hhciAqKSBzOwor CisJcmV0dXJuIGhhc2hfYnl0ZXMoc3MsIHN0cmxlbihzKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVp bGQKaW5kZXggNjMzYTk4NzRiYjUuLjUyOTZmMjFiODJjIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3dhbGR1bXAvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL21lc29uLmJ1aWxk CkBAIC0xLDYgKzEsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyNiwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKIAogcGdfd2FsZHVtcF9zb3VyY2VzID0gZmlsZXMoCisg ICdhcmNoaXZlX3dhbGR1bXAuYycsCiAgICdjb21wYXQuYycsCiAgICdwZ193YWxkdW1wLmMnLAog ICAncm1ncmRlc2MuYycsCkBAIC0xOCw3ICsxOSw3IEBAIGVuZGlmCiAKIHBnX3dhbGR1bXAgPSBl eGVjdXRhYmxlKCdwZ193YWxkdW1wJywKICAgcGdfd2FsZHVtcF9zb3VyY2VzLAotICBkZXBlbmRl bmNpZXM6IFtmcm9udGVuZF9jb2RlLCBsejQsIHpzdGRdLAorICBkZXBlbmRlbmNpZXM6IFtmcm9u dGVuZF9jb2RlLCBsaWJwcSwgbHo0LCB6c3RkXSwKICAgY19hcmdzOiBbJy1ERlJPTlRFTkQnXSwg IyBuZWVkZWQgZm9yIHhsb2dyZWFkZXIgZXQgYWwKICAga3dhcmdzOiBkZWZhdWx0X2Jpbl9hcmdz LAogKQpAQCAtMjksNiArMzAsNyBAQCB0ZXN0cyArPSB7CiAgICdzZCc6IG1lc29uLmN1cnJlbnRf c291cmNlX2RpcigpLAogICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAogICAndGFw JzogeworICAgICdlbnYnOiB7J1RBUic6IHRhci5mb3VuZCgpID8gdGFyLmZ1bGxfcGF0aCgpIDog Jyd9LAogICAgICd0ZXN0cyc6IFsKICAgICAgICd0LzAwMV9iYXNpYy5wbCcsCiAgICAgICAndC8w MDJfc2F2ZV9mdWxscGFnZS5wbCcsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwppbmRleCA1ZDMxYjE1 ZGJkOC4uZjBiODExNmZmMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxk dW1wLmMKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwpAQCAtMTc2LDcgKzE3 Niw3IEBAIHNwbGl0X3BhdGgoY29uc3QgY2hhciAqcGF0aCwgY2hhciAqKmRpciwgY2hhciAqKmZu YW1lKQogICoKICAqIHJldHVybiBhIHJlYWQgb25seSBmZAogICovCi1zdGF0aWMgaW50CitpbnQK IG9wZW5fZmlsZV9pbl9kaXJlY3RvcnkoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFy ICpmbmFtZSkKIHsKIAlpbnQJCQlmZCA9IC0xOwpAQCAtNDQwLDYgKzQ0MCw4MSBAQCBXQUxEdW1w UmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRy LCBpbnQgcmVxTGVuLAogCXJldHVybiBjb3VudDsKIH0KIAorLyoKKyAqIHBnX3dhbGR1bXAncyBY TG9nUmVhZGVyUm91dGluZS0+c2VnbWVudF9vcGVuIGNhbGxiYWNrIHRvIHN1cHBvcnQgZHVtcGlu ZyBXQUwKKyAqIGZpbGVzIGZyb20gdGFyIGFyY2hpdmVzLgorICovCitzdGF0aWMgdm9pZAorVGFy V0FMRHVtcE9wZW5TZWdtZW50KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dTZWdObyBuZXh0 U2VnTm8sCisJCQkJCSAgVGltZUxpbmVJRCAqdGxpX3ApCit7CisJLyogTm8gYWN0aW9uIG5lZWRl ZCAqLworfQorCisvKgorICogcGdfd2FsZHVtcCdzIFhMb2dSZWFkZXJSb3V0aW5lLT5zZWdtZW50 X2Nsb3NlIGNhbGxiYWNrLgorICovCitzdGF0aWMgdm9pZAorVGFyV0FMRHVtcENsb3NlU2VnbWVu dChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlKQoreworCS8qIE5vIGFjdGlvbiBuZWVkZWQgKi8KK30K KworLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+cGFnZV9yZWFkIGNhbGxi YWNrIHRvIHN1cHBvcnQgZHVtcGluZyBXQUwKKyAqIGZpbGVzIGZyb20gdGFyIGFyY2hpdmVzLgor ICovCitzdGF0aWMgaW50CitUYXJXQUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0 ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAorCQkJCSAgIFhMb2dSZWNQ dHIgdGFyZ2V0UHRyLCBjaGFyICpyZWFkQnVmZikKK3sKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZh dGUgPSBzdGF0ZS0+cHJpdmF0ZV9kYXRhOworCWludAkJCWNvdW50ID0gcmVxdWlyZWRfcmVhZF9s ZW4ocHJpdmF0ZSwgdGFyZ2V0UGFnZVB0ciwgcmVxTGVuKTsKKwlpbnQJCQlXYWxTZWdTeiA9IHN0 YXRlLT5zZWdjeHQud3Nfc2Vnc2l6ZTsKKwlYTG9nU2VnTm8JY3VyU2VnTm87CisKKwkvKiBCYWls IG91dCBpZiB0aGUgY291bnQgdG8gYmUgcmVhZCBpcyBub3QgdmFsaWQgKi8KKwlpZiAoY291bnQg PCAwKQorCQlyZXR1cm4gLTE7CisKKwkvKgorCSAqIElmIHRoZSB0YXJnZXQgcGFnZSBpcyBpbiBh IGRpZmZlcmVudCBzZWdtZW50LCBmcmVlIHRoZSBidWZmZXIgc3BhY2UKKwkgKiBvY2N1cGllZCBi eSB0aGUgcHJldmlvdXMgc2VnbWVudCBkYXRhLiBTaW5jZSBwZ193YWxkdW1wIG5ldmVyIHJlcXVl c3RzCisJICogdGhlIHNhbWUgV0FMIGJ5dGVzIHR3aWNlLCBtb3ZpbmcgdG8gYSBuZXcgc2VnbWVu dCBpbXBsaWVzIHRoZSBwcmV2aW91cworCSAqIGJ1ZmZlcidzIGRhdGEgYW5kIHRoYXQgc2VnbWVu dCB3aWxsIG5vdCBiZSBuZWVkZWQgYWdhaW4uCisJICovCisJY3VyU2VnTm8gPSBzdGF0ZS0+c2Vn LndzX3NlZ25vOworCWlmICghWExCeXRlSW5TZWcodGFyZ2V0UGFnZVB0ciwgY3VyU2VnTm8sIFdh bFNlZ1N6KSkKKwl7CisJCWNoYXIJCWZuYW1lW01BWEZOQU1FTEVOXTsKKwkJWExvZ1NlZ05vCW5l eHRTZWdObzsKKworCQkvKgorCQkgKiBDYWxjdWxhdGUgdGhlIG5leHQgV0FMIHNlZ21lbnQgdG8g YmUgZGVjb2RlZCBmcm9tIHRoZSBnaXZlbiBwYWdlCisJCSAqIHBvaW50ZXIKKwkJICovCisJCVhM Qnl0ZVRvU2VnKHRhcmdldFBhZ2VQdHIsIG5leHRTZWdObywgV2FsU2VnU3opOworCQlzdGF0ZS0+ c2VnLndzX3RsaSA9IHByaXZhdGUtPnRpbWVsaW5lOworCQlzdGF0ZS0+c2VnLndzX3NlZ25vID0g bmV4dFNlZ05vOworCisJCS8qCisJCSAqIElmIGluIHByZS1yZWFkaW5nIG1vZGUgKHByaW9yIHRv IGFjdHVhbCBkZWNvZGluZyksIGRvIG5vdCBkZWxldGUKKwkJICogYW55IGVudHJpZXMgdGhhdCBt aWdodCBiZSByZXF1ZXN0ZWQgYWdhaW4gb25jZSB0aGUgZGVjb2RpbmcgbG9vcAorCQkgKiBzdGFy dHMuIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgaW4KKwkJICogcmVhZF9hcmNo aXZlX3dhbF9wYWdlKCkuCisJCSAqLworCQlpZiAocHJpdmF0ZS0+ZGVjb2Rpbmdfc3RhcnRlZCAm JiBjdXJTZWdObyA8IG5leHRTZWdObykKKwkJeworCQkJWExvZ0ZpbGVOYW1lKGZuYW1lLCBzdGF0 ZS0+c2VnLndzX3RsaSwgY3VyU2VnTm8sIFdhbFNlZ1N6KTsKKwkJCWZyZWVfYXJjaGl2ZV93YWxf ZW50cnkoZm5hbWUsIHByaXZhdGUpOworCQl9CisJfQorCisJLyogUmVhZCB0aGUgV0FMIHBhZ2Ug ZnJvbSB0aGUgYXJjaGl2ZSBzdHJlYW1lciAqLworCXJldHVybiByZWFkX2FyY2hpdmVfd2FsX3Bh Z2UocHJpdmF0ZSwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHJlYWRCdWZmLAorCQkJCQkJCQkgV2Fs U2VnU3opOworfQorCiAvKgogICogQm9vbGVhbiB0byByZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4g V0FMIHJlY29yZCBtYXRjaGVzIGEgc3BlY2lmaWMgcmVsYXRpb24KICAqIGFuZCBvcHRpb25hbGx5 IGJsb2NrLgpAQCAtNzc3LDggKzg1Miw4IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRmKF8oIiAgLUYs IC0tZm9yaz1GT1JLICAgICAgICBvbmx5IHNob3cgcmVjb3JkcyB0aGF0IG1vZGlmeSBibG9ja3Mg aW4gZm9yayBGT1JLO1xuIgogCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgbmFt ZXMgYXJlIG1haW4sIGZzbSwgdm0sIGluaXRcbiIpKTsKIAlwcmludGYoXygiICAtbiwgLS1saW1p dD1OICAgICAgICAgIG51bWJlciBvZiByZWNvcmRzIHRvIGRpc3BsYXlcbiIpKTsKLQlwcmludGYo XygiICAtcCwgLS1wYXRoPVBBVEggICAgICAgIGRpcmVjdG9yeSBpbiB3aGljaCB0byBmaW5kIFdB TCBzZWdtZW50IGZpbGVzIG9yIGFcbiIKLQkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgIGRp cmVjdG9yeSB3aXRoIGEgLi9wZ193YWwgdGhhdCBjb250YWlucyBzdWNoIGZpbGVzXG4iCisJcHJp bnRmKF8oIiAgLXAsIC0tcGF0aD1QQVRIICAgICAgICB0YXIgYXJjaGl2ZSBvciBhIGRpcmVjdG9y eSBpbiB3aGljaCB0byBmaW5kIFdBTCBzZWdtZW50IGZpbGVzIG9yXG4iCisJCQkgIiAgICAgICAg ICAgICAgICAgICAgICAgICBhIGRpcmVjdG9yeSB3aXRoIGEgLi9wZ193YWwgdGhhdCBjb250YWlu cyBzdWNoIGZpbGVzXG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDog Y3VycmVudCBkaXJlY3RvcnksIC4vcGdfd2FsLCAkUEdEQVRBL3BnX3dhbClcbiIpKTsKIAlwcmlu dGYoXygiICAtcSwgLS1xdWlldCAgICAgICAgICAgIGRvIG5vdCBwcmludCBhbnkgb3V0cHV0LCBl eGNlcHQgZm9yIGVycm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1yLCAtLXJtZ3I9Uk1HUiAgICAg ICAgb25seSBzaG93IHJlY29yZHMgZ2VuZXJhdGVkIGJ5IHJlc291cmNlIG1hbmFnZXIgUk1HUjtc biIKQEAgLTgxMCw3ICs4ODUsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlYTG9n UmVjb3JkICpyZWNvcmQ7CiAJWExvZ1JlY1B0cglmaXJzdF9yZWNvcmQ7CiAJY2hhcgkgICAqd2Fs ZGlyID0gTlVMTDsKKwljaGFyCSAgICp3YWxwYXRoID0gTlVMTDsKIAljaGFyCSAgICplcnJvcm1z ZzsKKwlwZ19jb21wcmVzc19hbGdvcml0aG0gY29tcHJlc3Npb24gPSBQR19DT01QUkVTU0lPTl9O T05FOwogCiAJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPSB7CiAJCXsiYmtw LWRldGFpbHMiLCBub19hcmd1bWVudCwgTlVMTCwgJ2InfSwKQEAgLTg2OCw2ICs5NDUsMTAgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJcHJpdmF0ZS5zdGFydHB0ciA9IEludmFsaWRY TG9nUmVjUHRyOwogCXByaXZhdGUuZW5kcHRyID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJcHJpdmF0 ZS5lbmRwdHJfcmVhY2hlZCA9IGZhbHNlOworCXByaXZhdGUuZGVjb2Rpbmdfc3RhcnRlZCA9IGZh bHNlOworCXByaXZhdGUuYXJjaGl2ZV9uYW1lID0gTlVMTDsKKwlwcml2YXRlLnN0YXJ0X3NlZ25v ID0gMDsKKwlwcml2YXRlLmVuZF9zZWdubyA9IFVJTlQ2NF9NQVg7CiAKIAljb25maWcucXVpZXQg PSBmYWxzZTsKIAljb25maWcuYmtwX2RldGFpbHMgPSBmYWxzZTsKQEAgLTk0Myw3ICsxMDI0LDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJfQogCQkJCWJyZWFrOwogCQkJY2Fz ZSAncCc6Ci0JCQkJd2FsZGlyID0gcGdfc3RyZHVwKG9wdGFyZyk7CisJCQkJd2FscGF0aCA9IHBn X3N0cmR1cChvcHRhcmcpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAncSc6CiAJCQkJY29uZmlnLnF1 aWV0ID0gdHJ1ZTsKQEAgLTExMDcsMTIgKzExODgsMjEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJCWdvdG8gYmFkX2FyZ3VtZW50OwogCX0KIAotCWlmICh3YWxkaXIgIT0gTlVMTCkK KwlpZiAod2FscGF0aCAhPSBOVUxMKQogCXsKKwkJLyogdmFsaWRhdGUgcGF0aCBwb2ludHMgdG8g dGFyIGFyY2hpdmUgKi8KKwkJaWYgKHBhcnNlX3Rhcl9jb21wcmVzc19hbGdvcml0aG0od2FscGF0 aCwgJmNvbXByZXNzaW9uKSkKKwkJeworCQkJY2hhcgkgICAqZm5hbWUgPSBOVUxMOworCisJCQlz cGxpdF9wYXRoKHdhbHBhdGgsICZ3YWxkaXIsICZmbmFtZSk7CisKKwkJCXByaXZhdGUuYXJjaGl2 ZV9uYW1lID0gZm5hbWU7CisJCX0KIAkJLyogdmFsaWRhdGUgcGF0aCBwb2ludHMgdG8gZGlyZWN0 b3J5ICovCi0JCWlmICghdmVyaWZ5X2RpcmVjdG9yeSh3YWxkaXIpKQorCQllbHNlIGlmICghdmVy aWZ5X2RpcmVjdG9yeSh3YWxwYXRoKSkKIAkJewotCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg b3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHdhbGRpcik7CisJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgd2FscGF0aCk7CiAJCQlnb3RvIGJh ZF9hcmd1bWVudDsKIAkJfQogCX0KQEAgLTExMjgsNiArMTIxOCwxNyBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAkJaW50CQkJZmQ7CiAJCVhMb2dTZWdObwlzZWdubzsKIAorCQkvKgor CQkgKiBJZiBhIHRhciBhcmNoaXZlIGlzIHBhc3NlZCB1c2luZyB0aGUgLS1wYXRoIG9wdGlvbiwg YWxsIG90aGVyCisJCSAqIGFyZ3VtZW50cyBiZWNvbWUgdW5uZWNlc3NhcnkuCisJCSAqLworCQlp ZiAocHJpdmF0ZS5hcmNoaXZlX25hbWUpCisJCXsKKwkJCXBnX2xvZ19lcnJvcigidW5uZWNlc3Nh cnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBzcGVjaWZpZWQgd2l0aCB0YXIgYXJjaGl2ZSAoZmly c3QgaXMgXCIlc1wiKSIsCisJCQkJCQkgYXJndltvcHRpbmRdKTsKKwkJCWdvdG8gYmFkX2FyZ3Vt ZW50OworCQl9CisKIAkJc3BsaXRfcGF0aChhcmd2W29wdGluZF0sICZkaXJlY3RvcnksICZmbmFt ZSk7CiAKIAkJaWYgKHdhbGRpciA9PSBOVUxMICYmIGRpcmVjdG9yeSAhPSBOVUxMKQpAQCAtMTEz OCw2OSArMTIzOSw3NSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlwZ19mYXRh bCgiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCB3YWxkaXIpOwogCQl9CiAK LQkJd2FsZGlyID0gaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lLCAmcHJp dmF0ZS5zZWdzaXplKTsKLQkJZmQgPSBvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5KHdhbGRpciwgZm5h bWUpOwotCQlpZiAoZmQgPCAwKQotCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIl c1wiIiwgZm5hbWUpOwotCQljbG9zZShmZCk7Ci0KLQkJLyogcGFyc2UgcG9zaXRpb24gZnJvbSBm aWxlICovCi0JCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmc2Vn bm8sIHByaXZhdGUuc2Vnc2l6ZSk7Ci0KLQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRl LnN0YXJ0cHRyKSkKLQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCAwLCBwcml2YXRl LnNlZ3NpemUsIHByaXZhdGUuc3RhcnRwdHIpOwotCQllbHNlIGlmICghWExCeXRlSW5TZWcocHJp dmF0ZS5zdGFydHB0ciwgc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSkpCisJCWlmIChmbmFtZSAhPSBO VUxMICYmIHBhcnNlX3Rhcl9jb21wcmVzc19hbGdvcml0aG0oZm5hbWUsICZjb21wcmVzc2lvbikp CiAJCXsKLQkJCXBnX2xvZ19lcnJvcigic3RhcnQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90 IGluc2lkZSBmaWxlIFwiJXNcIiIsCi0JCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuc3Rh cnRwdHIpLAotCQkJCQkJIGZuYW1lKTsKLQkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQkJcHJpdmF0 ZS5hcmNoaXZlX25hbWUgPSBmbmFtZTsKIAkJfQotCi0JCS8qIG5vIHNlY29uZCBmaWxlIHNwZWNp ZmllZCwgc2V0IGVuZCBwb3NpdGlvbiAqLwotCQlpZiAoIShvcHRpbmQgKyAxIDwgYXJnYykgJiYg IVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJCVhMb2dTZWdOb09mZnNldFRv UmVjUHRyKHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXplLCBwcml2YXRlLmVuZHB0cik7Ci0K LQkJLyogcGFyc2UgRU5EU0VHIGlmIHBhc3NlZCAqLwotCQlpZiAob3B0aW5kICsgMSA8IGFyZ2Mp CisJCWVsc2UKIAkJewotCQkJWExvZ1NlZ05vCWVuZHNlZ25vOwotCi0JCQkvKiBpZ25vcmUgZGly ZWN0b3J5LCBhbHJlYWR5IGhhdmUgdGhhdCAqLwotCQkJc3BsaXRfcGF0aChhcmd2W29wdGluZCAr IDFdLCAmZGlyZWN0b3J5LCAmZm5hbWUpOwotCisJCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRf ZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUsICZwcml2YXRlLnNlZ3NpemUpOwogCQkJZmQgPSBvcGVu X2ZpbGVfaW5fZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUpOwogCQkJaWYgKGZkIDwgMCkKIAkJCQlw Z19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBmbmFtZSk7CiAJCQljbG9zZShm ZCk7CiAKIAkJCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwotCQkJWExvZ0Zyb21GaWxl TmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZlbmRzZWdubywgcHJpdmF0ZS5zZWdzaXpl KTsKKwkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmc2Vnbm8s IHByaXZhdGUuc2Vnc2l6ZSk7CiAKLQkJCWlmIChlbmRzZWdubyA8IHNlZ25vKQotCQkJCXBnX2Zh dGFsKCJFTkRTRUcgJXMgaXMgYmVmb3JlIFNUQVJUU0VHICVzIiwKLQkJCQkJCSBhcmd2W29wdGlu ZCArIDFdLCBhcmd2W29wdGluZF0pOworCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRl LnN0YXJ0cHRyKSkKKwkJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubywgMCwgcHJpdmF0 ZS5zZWdzaXplLCBwcml2YXRlLnN0YXJ0cHRyKTsKKwkJCWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhw cml2YXRlLnN0YXJ0cHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSkKKwkJCXsKKwkJCQlwZ19s b2dfZXJyb3IoInN0YXJ0IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBc IiVzXCIiLAorCQkJCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5zdGFydHB0ciksCisJCQkJ CQkJIGZuYW1lKTsKKwkJCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJCX0KIAotCQkJaWYgKCFYTG9n UmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCi0JCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQ dHIoZW5kc2Vnbm8gKyAxLCAwLCBwcml2YXRlLnNlZ3NpemUsCi0JCQkJCQkJCQkJcHJpdmF0ZS5l bmRwdHIpOworCQkJLyogbm8gc2Vjb25kIGZpbGUgc3BlY2lmaWVkLCBzZXQgZW5kIHBvc2l0aW9u ICovCisJCQlpZiAoIShvcHRpbmQgKyAxIDwgYXJnYykgJiYgIVhMb2dSZWNQdHJJc1ZhbGlkKHBy aXZhdGUuZW5kcHRyKSkKKwkJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAs IHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0ZS5lbmRwdHIpOwogCi0JCQkvKiBzZXQgc2Vnbm8gdG8g ZW5kc2Vnbm8gZm9yIGNoZWNrIG9mIC0tZW5kICovCi0JCQlzZWdubyA9IGVuZHNlZ25vOwotCQl9 CisJCQkvKiBwYXJzZSBFTkRTRUcgaWYgcGFzc2VkICovCisJCQlpZiAob3B0aW5kICsgMSA8IGFy Z2MpCisJCQl7CisJCQkJWExvZ1NlZ05vCWVuZHNlZ25vOwogCisJCQkJLyogaWdub3JlIGRpcmVj dG9yeSwgYWxyZWFkeSBoYXZlIHRoYXQgKi8KKwkJCQlzcGxpdF9wYXRoKGFyZ3Zbb3B0aW5kICsg MV0sICZkaXJlY3RvcnksICZmbmFtZSk7CiAKLQkJaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLmVu ZHB0ciwgc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSkgJiYKLQkJCXByaXZhdGUuZW5kcHRyICE9IChz ZWdubyArIDEpICogcHJpdmF0ZS5zZWdzaXplKQotCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImVuZCBX QUwgbG9jYXRpb24gJVgvJTA4WCBpcyBub3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwKLQkJCQkJCSBM U05fRk9STUFUX0FSR1MocHJpdmF0ZS5lbmRwdHIpLAotCQkJCQkJIGFyZ3ZbYXJnYyAtIDFdKTsK LQkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQkJCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3 YWxkaXIsIGZuYW1lKTsKKwkJCQlpZiAoZmQgPCAwKQorCQkJCQlwZ19mYXRhbCgiY291bGQgbm90 IG9wZW4gZmlsZSBcIiVzXCIiLCBmbmFtZSk7CisJCQkJY2xvc2UoZmQpOworCisJCQkJLyogcGFy c2UgcG9zaXRpb24gZnJvbSBmaWxlICovCisJCQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnBy aXZhdGUudGltZWxpbmUsICZlbmRzZWdubywgcHJpdmF0ZS5zZWdzaXplKTsKKworCQkJCWlmIChl bmRzZWdubyA8IHNlZ25vKQorCQkJCQlwZ19mYXRhbCgiRU5EU0VHICVzIGlzIGJlZm9yZSBTVEFS VFNFRyAlcyIsCisJCQkJCQkJIGFyZ3Zbb3B0aW5kICsgMV0sIGFyZ3Zbb3B0aW5kXSk7CisKKwkJ CQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKKwkJCQkJWExvZ1NlZ05v T2Zmc2V0VG9SZWNQdHIoZW5kc2Vnbm8gKyAxLCAwLCBwcml2YXRlLnNlZ3NpemUsCisJCQkJCQkJ CQkJCXByaXZhdGUuZW5kcHRyKTsKKworCQkJCS8qIHNldCBzZWdubyB0byBlbmRzZWdubyBmb3Ig Y2hlY2sgb2YgLS1lbmQgKi8KKwkJCQlzZWdubyA9IGVuZHNlZ25vOworCQkJfQorCisJCQlpZiAo IVhMQnl0ZUluU2VnKHByaXZhdGUuZW5kcHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSAmJgor CQkJCXByaXZhdGUuZW5kcHRyICE9IChzZWdubyArIDEpICogcHJpdmF0ZS5zZWdzaXplKQorCQkJ eworCQkJCXBnX2xvZ19lcnJvcigiZW5kIFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNp ZGUgZmlsZSBcIiVzXCIiLAorCQkJCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5lbmRwdHIp LAorCQkJCQkJCSBhcmd2W2FyZ2MgLSAxXSk7CisJCQkJZ290byBiYWRfYXJndW1lbnQ7CisJCQl9 CiAJCX0KIAl9Ci0JZWxzZQotCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdh bGRpciwgTlVMTCwgJnByaXZhdGUuc2Vnc2l6ZSk7CisJZWxzZSBpZiAoIXByaXZhdGUuYXJjaGl2 ZV9uYW1lKQorCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbHBhdGgsIE5V TEwsICZwcml2YXRlLnNlZ3NpemUpOwogCiAJLyogd2UgZG9uJ3Qga25vdyB3aGF0IHRvIHByaW50 ICovCiAJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLnN0YXJ0cHRyKSkKQEAgLTEyMTIs MTIgKzEzMTksMzYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJLyogZG9uZSB3aXRo IGFyZ3VtZW50IHBhcnNpbmcsIGRvIHRoZSBhY3R1YWwgd29yayAqLwogCiAJLyogd2UgaGF2ZSBl dmVyeXRoaW5nIHdlIG5lZWQsIHN0YXJ0IHJlYWRpbmcgKi8KLQl4bG9ncmVhZGVyX3N0YXRlID0K LQkJWExvZ1JlYWRlckFsbG9jYXRlKHByaXZhdGUuc2Vnc2l6ZSwgd2FsZGlyLAotCQkJCQkJICAg WExfUk9VVElORSgucGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdlLAotCQkJCQkJCQkJICAuc2Vn bWVudF9vcGVuID0gV0FMRHVtcE9wZW5TZWdtZW50LAotCQkJCQkJCQkJICAuc2VnbWVudF9jbG9z ZSA9IFdBTER1bXBDbG9zZVNlZ21lbnQpLAotCQkJCQkJICAgJnByaXZhdGUpOworCWlmIChwcml2 YXRlLmFyY2hpdmVfbmFtZSkKKwl7CisJCS8qCisJCSAqIEEgTlVMTCBXQUwgZGlyZWN0b3J5IGlu ZGljYXRlcyB0aGF0IHRoZSBhcmNoaXZlIGZpbGUgaXMgbG9jYXRlZCBpbgorCQkgKiB0aGUgY3Vy cmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgcGdfd2FsZHVtcCBleGVjdXRpb24KKwkJICov CisJCWlmICh3YWxkaXIgPT0gTlVMTCkKKwkJCXdhbGRpciA9IHBnX3N0cmR1cCgiLiIpOworCisJ CS8qIFNldCB1cCBmb3IgcmVhZGluZyB0YXIgZmlsZSAqLworCQlpbml0X2FyY2hpdmVfcmVhZGVy KCZwcml2YXRlLCB3YWxkaXIsICZwcml2YXRlLnNlZ3NpemUsIGNvbXByZXNzaW9uKTsKKworCQkv KiBSb3V0aW5lIHRvIGRlY29kZSBXQUwgZmlsZXMgaW4gdGFyIGFyY2hpdmUgKi8KKwkJeGxvZ3Jl YWRlcl9zdGF0ZSA9CisJCQlYTG9nUmVhZGVyQWxsb2NhdGUocHJpdmF0ZS5zZWdzaXplLCB3YWxk aXIsCisJCQkJCQkJICAgWExfUk9VVElORSgucGFnZV9yZWFkID0gVGFyV0FMRHVtcFJlYWRQYWdl LAorCQkJCQkJCQkJCSAgLnNlZ21lbnRfb3BlbiA9IFRhcldBTER1bXBPcGVuU2VnbWVudCwKKwkJ CQkJCQkJCQkgIC5zZWdtZW50X2Nsb3NlID0gVGFyV0FMRHVtcENsb3NlU2VnbWVudCksCisJCQkJ CQkJICAgJnByaXZhdGUpOworCX0KKwllbHNlCisJeworCQl4bG9ncmVhZGVyX3N0YXRlID0KKwkJ CVhMb2dSZWFkZXJBbGxvY2F0ZShwcml2YXRlLnNlZ3NpemUsIHdhbGRpciwKKwkJCQkJCQkgICBY TF9ST1VUSU5FKC5wYWdlX3JlYWQgPSBXQUxEdW1wUmVhZFBhZ2UsCisJCQkJCQkJCQkJICAuc2Vn bWVudF9vcGVuID0gV0FMRHVtcE9wZW5TZWdtZW50LAorCQkJCQkJCQkJCSAgLnNlZ21lbnRfY2xv c2UgPSBXQUxEdW1wQ2xvc2VTZWdtZW50KSwKKwkJCQkJCQkgICAmcHJpdmF0ZSk7CisJfQorCiAJ aWYgKCF4bG9ncmVhZGVyX3N0YXRlKQogCQlwZ19mYXRhbCgib3V0IG9mIG1lbW9yeSB3aGlsZSBh bGxvY2F0aW5nIGEgV0FMIHJlYWRpbmcgcHJvY2Vzc29yIik7CiAKQEAgLTEyNDUsNiArMTM3Niw5 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChjb25maWcuc3RhdHMgPT0gdHJ1 ZSAmJiAhY29uZmlnLnF1aWV0KQogCQlzdGF0cy5zdGFydHB0ciA9IGZpcnN0X3JlY29yZDsKIAor CS8qIEZsYWcgaW5kaWNhdGluZyB0aGF0IHRoZSBkZWNvZGluZyBsb29wIGhhcyBiZWVuIGVudGVy ZWQgKi8KKwlwcml2YXRlLmRlY29kaW5nX3N0YXJ0ZWQgPSB0cnVlOworCiAJZm9yICg7OykKIAl7 CiAJCWlmICh0aW1lX3RvX3N0b3ApCkBAIC0xMzI2LDYgKzE0NjAsOSBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAogCVhMb2dSZWFkZXJGcmVlKHhsb2dyZWFkZXJfc3RhdGUpOwogCisJ aWYgKHByaXZhdGUuYXJjaGl2ZV9uYW1lKQorCQlmcmVlX2FyY2hpdmVfcmVhZGVyKCZwcml2YXRl KTsKKwogCXJldHVybiBFWElUX1NVQ0NFU1M7CiAKIGJhZF9hcmd1bWVudDoKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5oCmluZGV4IDAxM2IwNTE1MDZmLi42MjA1NGJjNzRjMCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5oCkBAIC0xMiw2ICsxMiwxMSBAQAogI2RlZmluZSBQR19XQUxEVU1QX0gKIAogI2lu Y2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2FzdHJlYW1lci5o IgorCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitzdHJ1Y3QgQXJjaGl2ZWRXQUxGaWxlOwor c3RydWN0IEFyY2hpdmVkV0FMX2hhc2g7CiAKIC8qIENvbnRhaW5zIHRoZSBuZWNlc3NhcnkgaW5m b3JtYXRpb24gdG8gZHJpdmUgV0FMIGRlY29kaW5nICovCiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVt cFByaXZhdGUKQEAgLTIxLDYgKzI2LDQ2IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dEdW1wUHJpdmF0 ZQogCVhMb2dSZWNQdHIJc3RhcnRwdHI7CiAJWExvZ1JlY1B0cgllbmRwdHI7CiAJYm9vbAkJZW5k cHRyX3JlYWNoZWQ7CisJYm9vbAkJZGVjb2Rpbmdfc3RhcnRlZDsKKworCS8qIEZpZWxkcyByZXF1 aXJlZCB0byByZWFkIFdBTCBmcm9tIGFyY2hpdmUgKi8KKwljaGFyCSAgICphcmNoaXZlX25hbWU7 CS8qIFRhciBhcmNoaXZlIG5hbWUgKi8KKwlpbnQJCQlhcmNoaXZlX2ZkOwkJLyogRmlsZSBkZXNj cmlwdG9yIGZvciB0aGUgb3BlbiB0YXIgZmlsZSAqLworCisJYXN0cmVhbWVyICAqYXJjaGl2ZV9z dHJlYW1lcjsKKwljaGFyCSAgICphcmNoaXZlX3JlYWRfYnVmOwkvKiBSZXVzYWJsZSByZWFkIGJ1 ZmZlciBmb3IgYXJjaGl2ZSBJL08gKi8KKwlTaXplCQlhcmNoaXZlX3JlYWRfYnVmX3NpemU7CisK KwkvKiBXaGF0IHRoZSBhcmNoaXZlIHN0cmVhbWVyIGlzIGN1cnJlbnRseSByZWFkaW5nICovCisJ c3RydWN0IEFyY2hpdmVkV0FMRmlsZSAqY3VyX2ZpbGU7CisKKwkvKgorCSAqIEhhc2ggdGFibGUg b2YgYWxsIFdBTCBmaWxlcyB0aGF0IHRoZSBhcmNoaXZlIHN0cmVhbSBoYXMgcmVhZCwgaW5jbHVk aW5nCisJICogdGhlIG9uZSBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MuCisJICovCisJc3RydWN0IEFy Y2hpdmVkV0FMX2hhc2ggKmFyY2hpdmVfd2FsX2h0YWI7CisKKwkvKgorCSAqIEFsdGhvdWdoIHRo ZXNlIHZhbHVlcyBjYW4gYmUgZWFzaWx5IGRlcml2ZWQgZnJvbSBzdGFydHB0ciBhbmQgZW5kcHRy LAorCSAqIGRvaW5nIHNvIHJlcGVhdGVkbHkgZm9yIGVhY2ggYXJjaGl2ZWQgbWVtYmVyIHdvdWxk IGJlIGluZWZmaWNpZW50LCBhcworCSAqIGl0IHdvdWxkIGludm9sdmUgcmVjYWxjdWxhdGluZyBh bmQgZmlsdGVyaW5nIG91dCBpcnJlbGV2YW50IFdBTAorCSAqIHNlZ21lbnRzLgorCSAqLworCVhM b2dTZWdObwlzdGFydF9zZWdubzsKKwlYTG9nU2VnTm8JZW5kX3NlZ25vOwogfSBYTG9nRHVtcFBy aXZhdGU7CiAKK2V4dGVybiBpbnQJb3Blbl9maWxlX2luX2RpcmVjdG9yeShjb25zdCBjaGFyICpk aXJlY3RvcnksIGNvbnN0IGNoYXIgKmZuYW1lKTsKKworZXh0ZXJuIHZvaWQgaW5pdF9hcmNoaXZl X3JlYWRlcihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAorCQkJCQkJCQljb25zdCBjaGFy ICp3YWxkaXIsIGludCAqV2FsU2VnU3osCisJCQkJCQkJCXBnX2NvbXByZXNzX2FsZ29yaXRobSBj b21wcmVzc2lvbik7CitleHRlcm4gdm9pZCBmcmVlX2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJp dmF0ZSAqcHJpdmF0ZUluZm8pOworZXh0ZXJuIGludAlyZWFkX2FyY2hpdmVfd2FsX3BhZ2UoWExv Z0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKKwkJCQkJCQkJICBYTG9nUmVjUHRyIHRhcmdldFBh Z2VQdHIsCisJCQkJCQkJCSAgU2l6ZSBjb3VudCwgY2hhciAqcmVhZEJ1ZmYsCisJCQkJCQkJCSAg aW50IFdhbFNlZ1N6KTsKK2V4dGVybiB2b2lkIGZyZWVfYXJjaGl2ZV93YWxfZW50cnkoY29uc3Qg Y2hhciAqZm5hbWUsCisJCQkJCQkJCSAgIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOwor CiAjZW5kaWYJCQkJCQkJLyogUEdfV0FMRFVNUF9IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMu cGwKaW5kZXggZjEyYmE1MmNiZmMuLjZmOGNlMzE5ODQxIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jh c2ljLnBsCkBAIC0zLDEwICszLDEzIEBACiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7Cit1c2UgQ3dkOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorbXkgJHRhciA9 ICRFTlZ7VEFSfTsKKwogcHJvZ3JhbV9oZWxwX29rKCdwZ193YWxkdW1wJyk7CiBwcm9ncmFtX3Zl cnNpb25fb2soJ3BnX3dhbGR1bXAnKTsKIHByb2dyYW1fb3B0aW9uc19oYW5kbGluZ19vaygncGdf d2FsZHVtcCcpOwpAQCAtMTYyLDYgKzE2NSw0MiBAQCBDUkVBVEUgVEFCTEVTUEFDRSB0czEgTE9D QVRJT04gJyR0YmxzcGNfcGF0aCc7CiBEUk9QIFRBQkxFU1BBQ0UgdHMxOwogfSk7CiAKKyMgVGVz dDogRGVjb2RlIGEgY29udGludWF0aW9uIHJlY29yZCAoY29udHJlY29yZCkgdGhhdCBzcGFucyBt dWx0aXBsZSBXQUwKKyMgc2VnbWVudHMuCisjCisjIE5vdyBjb25zdW1lIGFsbCByZW1haW5pbmcg cm9vbSBpbiB0aGUgY3VycmVudCBXQUwgc2VnbWVudCwgbGVhdmluZworIyBzcGFjZSBlbm91Z2gg b25seSBmb3IgdGhlIHN0YXJ0IG9mIGEgbGFyZ2lzaCByZWNvcmQuCiskbm9kZS0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHF7CitETyAkJAorREVDTEFSRQorICAgIHdhbF9zZWdzaXplIGludCA6 PSBzZXR0aW5nOjppbnQgRlJPTSBwZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0gJ3dhbF9zZWdtZW50 X3NpemUnOworICAgIHJlbWFpbiBpbnQ7CisgICAgaXRlcnMgIGludCA6PSAwOworQkVHSU4KKyAg ICBMT09QCisgICAgICAgIElOU0VSVCBpbnRvIHQxKGIpCisgICAgICAgIHNlbGVjdCByZXBlYXQo ZW5jb2RlKHNoYTI1NihnOjp0ZXh0OjpieXRlYSksICdoZXgnKSwgKHJhbmRvbSgpICogMTUgKyAx KTo6aW50KQorICAgICAgICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZzsKKworICAgICAg ICByZW1haW4gOj0gd2FsX3NlZ3NpemUgLSAocGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpIC0g JzAvMCcpICUgd2FsX3NlZ3NpemU7CisgICAgICAgIElGIHJlbWFpbiA8IDIgKiBzZXR0aW5nOjpp bnQgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lID0gJ2Jsb2NrX3NpemUnIFRIRU4KKyAgICAg ICAgICAgIFJBSVNFIGxvZyAnZXhpdGluZyBhZnRlciAlIGl0ZXJhdGlvbnMsICUgYnl0ZXMgdG8g ZW5kIG9mIFdBTCBzZWdtZW50JywgaXRlcnMsIHJlbWFpbjsKKyAgICAgICAgICAgIEVYSVQ7Cisg ICAgICAgIEVORCBJRjsKKyAgICAgICAgaXRlcnMgOj0gaXRlcnMgKyAxOworICAgIEVORCBMT09Q OworRU5ECiskJDsKK30pOworCitteSAkY29udHJlY29yZF9sc24gPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJJ1NFTEVDVCBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCknKTsKKyMg R2VuZXJhdGUgY29udHJlY29yZCByZWNvcmQKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwlxcXtTRUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3Rlc3QgMDI2JywgcmVw ZWF0KCd4eXp4eicsIDEyMzQ1NikpfQorKTsKKwogbXkgKCRlbmRfbHNuLCAkZW5kX3dhbGZpbGUp ID0gc3BsaXQgL1x8LywKICAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXF7U0VMRUNU IHBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24oKSwgcGdfd2FsZmlsZV9uYW1lKHBnX2N1cnJlbnRf d2FsX2luc2VydF9sc24oKSl9CkBAIC0yNTksMTEgKzI5OCw1MCBAQCBzdWIgdGVzdF9wZ193YWxk dW1wCiAJcmV0dXJuIEBsaW5lczsKIH0KIAotbXkgQGxpbmVzOworIyBDcmVhdGUgYSB0YXIgYXJj aGl2ZSwgc29ydGluZyB0aGUgZmlsZSBvcmRlcgorc3ViIGdlbmVyYXRlX2FyY2hpdmUKK3sKKwlt eSAoJGFyY2hpdmUsICRkaXJlY3RvcnksICRjb21wcmVzc2lvbl9mbGFncykgPSBAXzsKKworCW15 IEBmaWxlczsKKwlvcGVuZGlyIG15ICRkaCwgJGRpcmVjdG9yeSBvciBkaWUgIm9wZW5kaXI6ICQh IjsKKwl3aGlsZSAobXkgJGVudHJ5ID0gcmVhZGRpciAkZGgpIHsKKwkJIyBTa2lwICcuJyBhbmQg Jy4uJworCQluZXh0IGlmICRlbnRyeSBlcSAnLicgfHwgJGVudHJ5IGVxICcuLic7CisJCXB1c2gg QGZpbGVzLCAkZW50cnk7CisJfQorCWNsb3NlZGlyICRkaDsKKworCUBmaWxlcyA9IHNvcnQgQGZp bGVzOworCisJIyBtb3ZlIGludG8gdGhlIFdBTCBkaXJlY3RvcnkgYmVmb3JlIGFyY2hpdmluZyBm aWxlcworCW15ICRjd2QgPSBnZXRjd2Q7CisJY2hkaXIoJGRpcmVjdG9yeSkgfHwgZGllICJjaGRp cjogJCEiOworCWNvbW1hbmRfb2soWyR0YXIsICRjb21wcmVzc2lvbl9mbGFncywgJGFyY2hpdmUs IEBmaWxlc10pOworCWNoZGlyKCRjd2QpIHx8IGRpZSAiY2hkaXI6ICQhIjsKK30KKworbXkgJHRt cF9kaXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcl9zaG9ydCgpOwogCiBteSBA c2NlbmFyaW9zID0gKAogCXsKLQkJJ3BhdGgnID0+ICRub2RlLT5kYXRhX2RpcgorCQkncGF0aCcg PT4gJG5vZGUtPmRhdGFfZGlyLAorCQknaXNfYXJjaGl2ZScgPT4gMCwKKwkJJ2VuYWJsZWQnID0+ IDEKKwl9LAorCXsKKwkJJ3BhdGgnID0+ICIkdG1wX2Rpci9wZ193YWwudGFyIiwKKwkJJ2NvbXBy ZXNzaW9uX21ldGhvZCcgPT4gJ25vbmUnLAorCQknY29tcHJlc3Npb25fZmxhZ3MnID0+ICctY2Yn LAorCQknaXNfYXJjaGl2ZScgPT4gMSwKKwkJJ2VuYWJsZWQnID0+IDEKKwl9LAorCXsKKwkJJ3Bh dGgnID0+ICIkdG1wX2Rpci9wZ193YWwudGFyLmd6IiwKKwkJJ2NvbXByZXNzaW9uX21ldGhvZCcg PT4gJ2d6aXAnLAorCQknY29tcHJlc3Npb25fZmxhZ3MnID0+ICctY3pmJywKKwkJJ2lzX2FyY2hp dmUnID0+IDEsCisJCSdlbmFibGVkJyA9PiBjaGVja19wZ19jb25maWcoIiNkZWZpbmUgSEFWRV9M SUJaIDEiKQogCX0pOwogCiBmb3IgbXkgJHNjZW5hcmlvIChAc2NlbmFyaW9zKQpAQCAtMjcyLDYg KzM1MCwxOSBAQCBmb3IgbXkgJHNjZW5hcmlvIChAc2NlbmFyaW9zKQogCiAJU0tJUDoKIAl7CisJ CXNraXAgInRhciBjb21tYW5kIGlzIG5vdCBhdmFpbGFibGUiLCA1NgorCQkgIGlmICFkZWZpbmVk ICR0YXIgJiYgJHNjZW5hcmlvLT57J2lzX2FyY2hpdmUnfTsKKwkJc2tpcCAiJHNjZW5hcmlvLT57 J2NvbXByZXNzaW9uX21ldGhvZCd9IGNvbXByZXNzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBi dWlsZCIsIDU2CisJCSAgaWYgISRzY2VuYXJpby0+eydlbmFibGVkJ30gJiYgJHNjZW5hcmlvLT57 J2lzX2FyY2hpdmUnfTsKKworCQkgICMgY3JlYXRlIHBnX3dhbCBhcmNoaXZlCisJCSAgaWYgKCRz Y2VuYXJpby0+eydpc19hcmNoaXZlJ30pCisJCSAgeworCQkJICBnZW5lcmF0ZV9hcmNoaXZlKCRw YXRoLAorCQkJCSAgJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ193YWwnLAorCQkJCSAgJHNjZW5hcmlv LT57J2NvbXByZXNzaW9uX2ZsYWdzJ30pOworCQkgIH0KKwogCQljb21tYW5kX2ZhaWxzX2xpa2Uo CiAJCQlbICdwZ193YWxkdW1wJywgJy0tcGF0aCcgPT4gJHBhdGggXSwKIAkJCXFyL2Vycm9yOiBu byBzdGFydCBXQUwgbG9jYXRpb24gZ2l2ZW4vLApAQCAtMzA1LDkgKzM5NiwxNCBAQCBmb3IgbXkg JHNjZW5hcmlvIChAc2NlbmFyaW9zKQogCiAJCXRlc3RfcGdfd2FsZHVtcF9za2lwX2J5dGVzKCRw YXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbik7CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1w KCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbik7CisJCW15IEBsaW5lcyA9IHRlc3RfcGdfd2Fs ZHVtcCgkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOwogCQlpcyhncmVwKCEvXnJtZ3I6IFx3 LywgQGxpbmVzKSwgMCwgJ2FsbCBvdXRwdXQgbGluZXMgYXJlIHJtZ3IgbGluZXMnKTsKIAorCQlA bGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRjb250cmVjb3JkX2xzbiwgJGVuZF9sc24p OworCQlpcyhncmVwKCEvXnJtZ3I6IFx3LywgQGxpbmVzKSwgMCwgJ2FsbCBvdXRwdXQgbGluZXMg YXJlIHJtZ3IgbGluZXMnKTsKKworCQl0ZXN0X3BnX3dhbGR1bXBfc2tpcF9ieXRlcygkcGF0aCwg JGNvbnRyZWNvcmRfbHNuLCAkZW5kX2xzbik7CisKIAkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1w KCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0tbGltaXQnID0+IDYpOwogCQlpcyhAbGlu ZXMsIDYsICdsaW1pdCBvcHRpb24gb2JzZXJ2ZWQnKTsKIApAQCAtMzM3LDYgKzQzMyw5IEBAIGZv ciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCiAJCQknLS1yZWxhdGlvbicgPT4gIiRkZWZhdWx0 X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfaTFhX29pZCIsCiAJCQknLS1ibG9jaycgPT4g MSk7CiAJCWlzKGdyZXAoIS9cYmJsayAxXGIvLCBAbGluZXMpLCAwLCAnb25seSBsaW5lcyBmb3Ig c2VsZWN0ZWQgYmxvY2snKTsKKworCQkjIENsZWFudXAuCisJCXVubGluayAkcGF0aCBpZiAkc2Nl bmFyaW8tPnsnaXNfYXJjaGl2ZSd9OwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApp bmRleCAzMjUwNTY0ZDRmZi4uZDg0OTI5M2U2ZmEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC0xNDUsNiArMTQ1LDggQEAgQXJjaGl2ZU9wdHMKIEFyY2hpdmVTaHV0ZG93bkNCCiBBcmNo aXZlU3RhcnR1cENCCiBBcmNoaXZlU3RyZWFtU3RhdGUKK0FyY2hpdmVkV0FMRmlsZQorQXJjaGl2 ZWRXQUxfaGFzaAogQXJjaGl2ZXJPdXRwdXQKIEFyY2hpdmVyU3RhZ2UKIEFycmF5QW5hbHl6ZUV4 dHJhRGF0YQpAQCAtMzUxNCw2ICszNTE2LDcgQEAgYXN0cmVhbWVyX3JlY292ZXJ5X2luamVjdG9y CiBhc3RyZWFtZXJfdGFyX2FyY2hpdmVyCiBhc3RyZWFtZXJfdGFyX3BhcnNlcgogYXN0cmVhbWVy X3ZlcmlmeQorYXN0cmVhbWVyX3dhbGR1bXAKIGFzdHJlYW1lcl96c3RkX2ZyYW1lCiBhdXRoX3Bh c3N3b3JkX2hvb2tfdHlwCiBhdXRvdmFjX3RhYmxlCi0tIAoyLjQ3LjEKCg== --000000000000d375fb064c9686ba Content-Type: application/x-patch; name="v16-0007-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Disposition: attachment; filename="v16-0007-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmj490o36 RnJvbSBiZjNlMDIwMTZkZWNhMDRlYjc5NDhkYWUzMmQyYzgzNjg4ZTBmNGE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjcgSmFuIDIwMjYgMTU6Mzg6MzQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNiAwNy8xMV0g cGdfd2FsZHVtcDogUmVtb3ZlIHRoZSByZXN0cmljdGlvbiBvbiB0aGUgb3JkZXIgb2YKIGFyY2hp dmVkIFdBTCBmaWxlcy4KCldpdGggcHJldmlvdXMgcGF0Y2gsIHBnX3dhbGR1bXAgd291bGQgc3Rv cCBkZWNvZGluZyBpZiBXQUwgZmlsZXMgd2VyZQpub3QgaW4gdGhlIHJlcXVpcmVkIHNlcXVlbmNl LiBXaXRoIHRoaXMgcGF0Y2gsIGRlY29kaW5nIHdpbGwgbm93CmNvbnRpbnVlLiAgQW55IFdBTCBm aWxlIHRoYXQgaXMgb3V0IG9mIG9yZGVyIHdpbGwgYmUgd3JpdHRlbiB0byBhCnRlbXBvcmFyeSBs b2NhdGlvbiwgZnJvbSB3aGljaCBpdCB3aWxsIGJlIHJlYWQgbGF0ZXIuIE9uY2UgYSB0ZW1wb3Jh cnkKZmlsZSBoYXMgYmVlbiByZWFkLCBpdCB3aWxsIGJlIHJlbW92ZWQuCi0tLQogZG9jL3NyYy9z Z21sL3JlZi9wZ193YWxkdW1wLnNnbWwgICAgIHwgIDE5ICsrLQogc3JjL2Jpbi9wZ193YWxkdW1w L2FyY2hpdmVfd2FsZHVtcC5jIHwgMTcyICsrKysrKysrKysrKysrKysrKysrKysrKystLQogc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyAgICAgIHwgIDMyICsrKystCiBzcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5oICAgICAgfCAgIDMgKwogc3JjL2Jpbi9wZ193YWxkdW1wL3Qv MDAxX2Jhc2ljLnBsICAgIHwgICAzICstCiA1IGZpbGVzIGNoYW5nZWQsIDIwOSBpbnNlcnRpb25z KCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dh bGR1bXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCmluZGV4IDE1ZmI4 ZDEzMTk5Li45YmJiNGJkNTc3MiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxk dW1wLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwKQEAgLTE0OSw4 ICsxNDksMTIgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICAgIG9mIDxlbnZhcj5Q R0RBVEE8L2VudmFyPi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIElm IGEgdGFyIGFyY2hpdmUgaXMgcHJvdmlkZWQsIGl0cyBXQUwgc2VnbWVudCBmaWxlcyBtdXN0IGJl IGluCi0gICAgICAgIHNlcXVlbnRpYWwgb3JkZXI7IG90aGVyd2lzZSwgYW4gZXJyb3Igd2lsbCBi ZSByZXBvcnRlZC4KKyAgICAgICAgSWYgYSB0YXIgYXJjaGl2ZSBpcyBwcm92aWRlZCBhbmQgaXRz IFdBTCBzZWdtZW50IGZpbGVzIGFyZSBub3QgaW4KKyAgICAgICAgc2VxdWVudGlhbCBvcmRlciwg dGhvc2UgZmlsZXMgd2lsbCBiZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeQorICAg ICAgICBuYW1lZCBzdGFydGluZyB3aXRoIDxmaWxlbmFtZT53YWxkdW1wX3RtcDwvZmlsZW5hbWU+ LiBUaGlzIGRpcmVjdG9yeSB3aWxsIGJlCisgICAgICAgIGNyZWF0ZWQgaW5zaWRlIHRoZSBkaXJl Y3Rvcnkgc3BlY2lmaWVkIGJ5IHRoZSA8ZW52YXI+VE1QRElSPC9lbnZhcj4KKyAgICAgICAgZW52 aXJvbm1lbnQgdmFyaWFibGUgaWYgaXQgaXMgc2V0OyBvdGhlcndpc2UsIGl0IHdpbGwgYmUgY3Jl YXRlZCB3aXRoaW4KKyAgICAgICAgdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSB0YXIgYXJjaGl2 ZS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KQEAgLTM4Nyw2ICszOTEsMTcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgIDwv cGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0 ZW50cnk+CisgICAgPHRlcm0+PGVudmFyPlRNUERJUjwvZW52YXI+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEaXJlY3RvcnkgaW4gd2hpY2ggdG8gY3JlYXRlIHRl bXBvcmFyeSBmaWxlcyB3aGVuIHJlYWRpbmcgV0FMIGZyb20gYQorICAgICAgdGFyIGFyY2hpdmUg d2l0aCBvdXQtb2Ytb3JkZXIgc2VnbWVudCBmaWxlcy4gSWYgbm90IHNldCwgdGhlIHRlbXBvcmFy eQorICAgICAgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeSBh cyB0aGUgdGFyIGFyY2hpdmUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CiAgIDwvdmFyaWFibGVsaXN0PgogIDwvcmVmc2VjdDE+CiAKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2Fs ZHVtcC9hcmNoaXZlX3dhbGR1bXAuYwppbmRleCAwOTM2ZmZjMGE3NS4uNTQ3YTUxNTRjYjYgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYworKysgYi9zcmMv YmluL3BnX3dhbGR1bXAvYXJjaGl2ZV93YWxkdW1wLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNs dWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCisjaW5j bHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgogI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKICNp bmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3NpbXBsZV9saXN0 LmgiCkBAIC0yNyw2ICsyOCw5IEBACiAgKi8KICNkZWZpbmUgUkVBRF9DSFVOS19TSVpFCQkJCSgx MjggKiAxMDI0KQogCisvKiBUZW1wb3JhcnkgZXhwb3J0ZWQgV0FMIGZpbGUgZGlyZWN0b3J5ICov CitjaGFyCSAgICpUbXBXYWxTZWdEaXIgPSBOVUxMOworCiAvKgogICogQ2hlY2sgaWYgdGhlIHN0 YXJ0IHNlZ21lbnQgbnVtYmVyIGlzIHplcm87IHRoaXMgaW5kaWNhdGVzIGEgcmVxdWVzdCB0byBy ZWFkCiAgKiBhbnkgV0FMIGZpbGUuCkBAIC01Nyw2ICs2MSw4IEBAIHR5cGVkZWYgc3RydWN0IEFy Y2hpdmVkV0FMRmlsZQogCWNvbnN0IGNoYXIgKmZuYW1lOwkJCS8qIGhhc2gga2V5OiBXQUwgc2Vn bWVudCBuYW1lICovCiAKIAlTdHJpbmdJbmZvCWJ1ZjsJCQkvKiBob2xkcyBXQUwgYnl0ZXMgcmVh ZCBmcm9tIGFyY2hpdmUgKi8KKwlib29sCQlzcGlsbGVkOwkJLyogdHJ1ZSBpZiB0aGUgV0FMIGRh dGEgd2FzIHNwaWxsZWQgdG8gYQorCQkJCQkJCQkgKiB0ZW1wb3JhcnkgZmlsZSAqLwogCiAJaW50 CQkJcmVhZF9sZW47CQkvKiB0b3RhbCBieXRlcyBvZiBhIFdBTCByZWFkIGZyb20gYXJjaGl2ZSAq LwogfSBBcmNoaXZlZFdBTEZpbGU7CkBAIC04NCw2ICs5MCwxMSBAQCBzdGF0aWMgQXJjaGl2ZWRX QUxGaWxlICpnZXRfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUsCiAJCQkJCQkJ CQkJCSAgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKIAkJCQkJCQkJCQkJICBpbnQgV2Fs U2VnU3opOwogc3RhdGljIGludAlyZWFkX2FyY2hpdmVfZmlsZShYTG9nRHVtcFByaXZhdGUgKnBy aXZhdGVJbmZvLCBTaXplIGNvdW50KTsKK3N0YXRpYyB2b2lkIHNldHVwX3RtcHdhbF9kaXIoY29u c3QgY2hhciAqd2FsZGlyKTsKK3N0YXRpYyB2b2lkIGNsZWFudXBfdG1wd2FsX2Rpcl9hdGV4aXQo dm9pZCk7CisKK3N0YXRpYyBGSUxFICpwcmVwYXJlX3RtcF93cml0ZShjb25zdCBjaGFyICpmbmFt ZSk7CitzdGF0aWMgdm9pZCBwZXJmb3JtX3RtcF93cml0ZShjb25zdCBjaGFyICpmbmFtZSwgU3Ry aW5nSW5mbyBidWYsIEZJTEUgKmZpbGUpOwogCiBzdGF0aWMgYXN0cmVhbWVyICphc3RyZWFtZXJf d2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyk7CiBzdGF0aWMgdm9pZCBh c3RyZWFtZXJfd2FsZHVtcF9jb250ZW50KGFzdHJlYW1lciAqc3RyZWFtZXIsCkBAIC0xMDYsNyAr MTE3LDkgQEAgc3RhdGljIGNvbnN0IGFzdHJlYW1lcl9vcHMgYXN0cmVhbWVyX3dhbGR1bXBfb3Bz ID0gewogLyoKICAqIEluaXRpYWxpemVzIHRoZSB0YXIgYXJjaGl2ZSByZWFkZXIsIGNyZWF0ZXMg YSBoYXNoIHRhYmxlIGZvciBXQUwgZW50cmllcywKICAqIGNoZWNrcyBmb3IgZXhpc3RpbmcgdmFs aWQgV0FMIHNlZ21lbnRzIGluIHRoZSBhcmNoaXZlIGZpbGUgYW5kIHJldHJpZXZlcyB0aGUKLSAq IHNlZ21lbnQgc2l6ZSwgYW5kIHNldHMgdXAgZmlsdGVycyBmb3IgcmVsZXZhbnQgZW50cmllcy4K KyAqIHNlZ21lbnQgc2l6ZSwgYW5kIHNldHMgdXAgZmlsdGVycyBmb3IgcmVsZXZhbnQgZW50cmll cy4gSXQgYWxzbyBjb25maWd1cmVzIGEKKyAqIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIG91dC1v Zi1vcmRlciBXQUwgZGF0YSBhbmQgcmVnaXN0ZXJzIGFuIGV4aXQgY2FsbGJhY2sKKyAqIHRvIGNs ZWFuIHVwIHRlbXBvcmFyeSBmaWxlcy4KICAqLwogdm9pZAogaW5pdF9hcmNoaXZlX3JlYWRlcihY TG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBjb25zdCBjaGFyICp3YWxkaXIsCkBAIC0yMDYs NiArMjE5LDEzIEBAIGluaXRfYXJjaGl2ZV9yZWFkZXIoWExvZ0R1bXBQcml2YXRlICpwcml2YXRl SW5mbywgY29uc3QgY2hhciAqd2FsZGlyLAogCQlwcml2YXRlSW5mby0+c3RhcnRfc2Vnbm8gPiBz ZWdubyB8fAogCQlwcml2YXRlSW5mby0+ZW5kX3NlZ25vIDwgc2Vnbm8pCiAJCWZyZWVfYXJjaGl2 ZV93YWxfZW50cnkoZW50cnktPmZuYW1lLCBwcml2YXRlSW5mbyk7CisKKwkvKgorCSAqIFNldHVw IHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gc3RvcmUgV0FMIHNlZ21lbnRzIGFuZCBzZXQgdXAgYW4g ZXhpdAorCSAqIGNhbGxiYWNrIHRvIHJlbW92ZSBpdCB1cG9uIGNvbXBsZXRpb24uCisJICovCisJ c2V0dXBfdG1wd2FsX2Rpcih3YWxkaXIpOworCWF0ZXhpdChjbGVhbnVwX3RtcHdhbF9kaXJfYXRl eGl0KTsKIH0KIAogLyoKQEAgLTM3OSw2ICszOTksMTcgQEAgZnJlZV9hcmNoaXZlX3dhbF9lbnRy eShjb25zdCBjaGFyICpmbmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbykKIAlkZXN0 cm95U3RyaW5nSW5mbyhlbnRyeS0+YnVmKTsKIAllbnRyeS0+YnVmID0gTlVMTDsKIAorCS8qIFJl bW92ZSB0ZW1wb3JhcnkgZmlsZSBpZiBhbnkgKi8KKwlpZiAoZW50cnktPnNwaWxsZWQpCisJewor CQljaGFyCQlmcGF0aFtNQVhQR1BBVEhdOworCisJCXNucHJpbnRmKGZwYXRoLCBNQVhQR1BBVEgs ICIlcy8lcyIsIFRtcFdhbFNlZ0RpciwgZm5hbWUpOworCisJCWlmICh1bmxpbmsoZnBhdGgpID09 IDApCisJCQlwZ19sb2dfZGVidWcoInJlbW92ZWQgZmlsZSBcIiVzXCIiLCBmcGF0aCk7CisJfQor CiAJLyogU2V0IGN1cl9maWxlIHRvIE5VTEwgaWYgaXQgbWF0Y2hlcyB0aGUgZW50cnkgYmVpbmcg aWdub3JlZCAqLwogCWlmIChwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPT0gZW50cnkpCiAJCXByaXZh dGVJbmZvLT5jdXJfZmlsZSA9IE5VTEw7CkBAIC0zOTAsMTIgKzQyMSwxNiBAQCBmcmVlX2FyY2hp dmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJ bmZvKQogICogUmV0dXJucyB0aGUgYXJjaGl2ZWQgV0FMIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFi bGUgaWYgaXQgZXhpc3RzLiAgT3RoZXJ3aXNlLAogICogaXQgaW52b2tlcyB0aGUgcm91dGluZSB0 byByZWFkIHRoZSBhcmNoaXZlZCBmaWxlLCB3aGljaCB0aGVuIHBvcHVsYXRlcyB0aGUKICAqIGVu dHJ5IGluIHRoZSBoYXNoIHRhYmxlIGlmIHRoYXQgV0FMIGV4aXN0cyBpbiB0aGUgYXJjaGl2ZS4K KyAqIElmIHRoZSBhcmNoaXZlIHN0cmVhbWVyIGhhcHBlbnMgdG8gYmUgcmVhZGluZyBhCisgKiBX QUwgZnJvbSBhcmNoaXZlIGZpbGUgdGhhdCBpcyBub3QgY3VycmVudGx5IG5lZWRlZCwgdGhhdCBX QUwgZGF0YSBpcyB3cml0dGVuCisgKiB0byBhIHRlbXBvcmFyeSBmaWxlLgogICovCiBzdGF0aWMg QXJjaGl2ZWRXQUxGaWxlICoKIGdldF9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFt ZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKIAkJCQkJICBpbnQgV2FsU2VnU3opCiB7 CiAJQXJjaGl2ZWRXQUxGaWxlICplbnRyeSA9IE5VTEw7CisJRklMRQkgICAqd3JpdGVfZnAgPSBO VUxMOwogCiAJLyogU2VhcmNoIGhhc2ggdGFibGUgKi8KIAllbnRyeSA9IEFyY2hpdmVkV0FMX2xv b2t1cChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiwgZm5hbWUpOwpAQCAtNDA5LDI4ICs0 NDQsNTkgQEAgZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVt cFByaXZhdGUgKnByaXZhdGVJbmZvLAogCSAqLwogCXdoaWxlICgxKQogCXsKKwkJLyoKKwkJICog VGhlIFdBTCBmaWxlIGVudHJ5IGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgbWF5IGNoYW5nZSBk dXJpbmcKKwkJICogYXJjaGl2ZSBzdHJlYW1lciBleGVjdXRpb24uIFRoZXJlZm9yZSwgbWFpbnRh aW4gYSBsb2NhbCB2YXJpYWJsZSB0bworCQkgKiByZWZlcmVuY2UgdGhlIHByZXZpb3VzIGVudHJ5 LCBlbnN1cmluZyB0aGF0IGFueSByZW1haW5pbmcgZGF0YSBpbgorCQkgKiBpdHMgYnVmZmVyIGlz IHN1Y2Nlc3NmdWxseSBmbHVzaGVkIHRvIHRoZSB0ZW1wb3JhcnkgZmlsZSBiZWZvcmUKKwkJICog c3dpdGNoaW5nIHRvIHRoZSBuZXh0IFdBTCBlbnRyeS4KKwkJICovCisJCWVudHJ5ID0gcHJpdmF0 ZUluZm8tPmN1cl9maWxlOworCiAJCS8qIEZldGNoIG1vcmUgZGF0YSAqLwotCQlpZiAocmVhZF9h cmNoaXZlX2ZpbGUocHJpdmF0ZUluZm8sIFJFQURfQ0hVTktfU0laRSkgPT0gMCkKLQkJCWJyZWFr OwkJCQkvKiBhcmNoaXZlIGZpbGUgZW5kZWQgKi8KKwkJaWYgKGVudHJ5ID09IE5VTEwgfHwgZW50 cnktPmJ1Zi0+bGVuID09IDApCisJCXsKKwkJCWlmIChyZWFkX2FyY2hpdmVfZmlsZShwcml2YXRl SW5mbywgUkVBRF9DSFVOS19TSVpFKSA9PSAwKQorCQkJCWJyZWFrOwkJCS8qIGFyY2hpdmUgZmls ZSBlbmRlZCAqLworCQl9CiAKIAkJLyoKIAkJICogQXJjaGl2ZWQgc3RyZWFtZXIgaXMgcmVhZGlu ZyBhIG5vbi1XQUwgZmlsZSBvciBhbiBpcnJlbGV2YW50IFdBTAogCQkgKiBmaWxlLgogCQkgKi8K LQkJaWYgKHByaXZhdGVJbmZvLT5jdXJfZmlsZSA9PSBOVUxMKQorCQlpZiAoZW50cnkgPT0gTlVM TCkKIAkJCWNvbnRpbnVlOwogCi0JCWVudHJ5ID0gcHJpdmF0ZUluZm8tPmN1cl9maWxlOwotCiAJ CS8qIEZvdW5kIHRoZSByZXF1aXJlZCBlbnRyeSAqLwogCQlpZiAoc3RyY21wKGZuYW1lLCBlbnRy eS0+Zm5hbWUpID09IDApCiAJCQlyZXR1cm4gZW50cnk7CiAKLQkJLyogV0FMIHNlZ21lbnRzIG11 c3QgYmUgYXJjaGl2ZWQgaW4gb3JkZXIgKi8KLQkJcGdfbG9nX2Vycm9yKCJXQUwgZmlsZXMgYXJl IG5vdCBhcmNoaXZlZCBpbiBzZXF1ZW50aWFsIG9yZGVyIik7Ci0JCXBnX2xvZ19lcnJvcl9kZXRh aWwoIkV4cGVjdGluZyBzZWdtZW50IFwiJXNcIiBidXQgZm91bmQgXCIlc1wiLiIsCi0JCQkJCQkJ Zm5hbWUsIGVudHJ5LT5mbmFtZSk7Ci0JCWV4aXQoMSk7CisJCS8qCisJCSAqIEFyY2hpdmUgc3Ry ZWFtZXIgaXMgY3VycmVudGx5IHJlYWRpbmcgYSBmaWxlIHRoYXQgaXNuJ3QgdGhlIG9uZQorCQkg KiBhc2tlZCBmb3IsIGJ1dCBpdCdzIHJlcXVpcmVkIGluIHRoZSBmdXR1cmUuIEl0IHNob3VsZCBi ZSB3cml0dGVuIHRvCisJCSAqIGEgdGVtcG9yYXJ5IGxvY2F0aW9uIGZvciByZXRyaWV2YWwgd2hl biBuZWVkZWQuCisJCSAqLworCisJCS8qIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIGlmIG9uZSBk b2VzIG5vdCBhbHJlYWR5IGV4aXN0ICovCisJCWlmICghZW50cnktPnNwaWxsZWQpCisJCXsKKwkJ CXdyaXRlX2ZwID0gcHJlcGFyZV90bXBfd3JpdGUoZW50cnktPmZuYW1lKTsKKwkJCWVudHJ5LT5z cGlsbGVkID0gdHJ1ZTsKKwkJfQorCisJCS8qIEZsdXNoIGRhdGEgZnJvbSB0aGUgYnVmZmVyIHRv IHRoZSBmaWxlICovCisJCXBlcmZvcm1fdG1wX3dyaXRlKGVudHJ5LT5mbmFtZSwgZW50cnktPmJ1 Ziwgd3JpdGVfZnApOworCQlyZXNldFN0cmluZ0luZm8oZW50cnktPmJ1Zik7CisKKwkJLyoKKwkJ ICogVGhlIGNoYW5nZSBpbiB0aGUgY3VycmVudCBzZWdtZW50IGVudHJ5IGluZGljYXRlcyB0aGF0 IHRoZSByZWFkaW5nCisJCSAqIG9mIHRoaXMgZmlsZSBoYXMgZW5kZWQuCisJCSAqLworCQlpZiAo ZW50cnkgIT0gcHJpdmF0ZUluZm8tPmN1cl9maWxlICYmIHdyaXRlX2ZwICE9IE5VTEwpCisJCXsK KwkJCWZjbG9zZSh3cml0ZV9mcCk7CisJCQl3cml0ZV9mcCA9IE5VTEw7CisJCX0KIAl9CiAKIAkv KiBSZXF1ZXN0ZWQgV0FMIHNlZ21lbnQgbm90IGZvdW5kICovCkBAIC00NjgsNyArNTM0LDg4IEBA IHJlYWRfYXJjaGl2ZV9maWxlKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIFNpemUgY291 bnQpCiB9CiAKIC8qCi0gKiBDcmVhdGUgYW4gYXN0cmVhbWVyIHRoYXQgY2FuIHJlYWQgV0FMIGZy b20gYSB0YXIgZmlsZS4KKyAqIFNldCB1cCBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gdGVtcG9y YXJpbHkgc3RvcmUgV0FMIHNlZ21lbnRzLgorICovCitzdGF0aWMgdm9pZAorc2V0dXBfdG1wd2Fs X2Rpcihjb25zdCBjaGFyICp3YWxkaXIpCit7CisJY2hhcgkgICAqdGVtcGxhdGU7CisKKwkvKgor CSAqIFVzZSB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBieSB0aGUgVE1QRElSIGVudmlyb25tZW50 IHZhcmlhYmxlLiBJZiBpdCdzCisJICogbm90IHNldCwgdXNlIHRoZSBwcm92aWRlZCBXQUwgZGly ZWN0b3J5IHRvIGV4dHJhY3QgV0FMIGZpbGUKKwkgKiB0ZW1wb3JhcmlseS4KKwkgKi8KKwl0ZW1w bGF0ZSA9IHBzcHJpbnRmKCIlcy93YWxkdW1wX3RtcC1YWFhYWFgiLAorCQkJCQkJZ2V0ZW52KCJU TVBESVIiKSA/IGdldGVudigiVE1QRElSIikgOiB3YWxkaXIpOworCVRtcFdhbFNlZ0RpciA9IG1r ZHRlbXAodGVtcGxhdGUpOworCisJaWYgKFRtcFdhbFNlZ0RpciA9PSBOVUxMKQorCQlwZ19mYXRh bCgiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHRlbXBsYXRlKTsKKwor CWNhbm9uaWNhbGl6ZV9wYXRoKFRtcFdhbFNlZ0Rpcik7CisKKwlwZ19sb2dfZGVidWcoImNyZWF0 ZWQgZGlyZWN0b3J5IFwiJXNcIiIsIFRtcFdhbFNlZ0Rpcik7Cit9CisKKy8qCisgKiBSZW1vdmUg dGVtcG9yYXJ5IGRpcmVjdG9yeSBhdCBleGl0LCBpZiBhbnkuCisgKi8KK3N0YXRpYyB2b2lkCitj bGVhbnVwX3RtcHdhbF9kaXJfYXRleGl0KHZvaWQpCit7CisJcm10cmVlKFRtcFdhbFNlZ0Rpciwg dHJ1ZSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW4gZW1wdHkgcGxhY2Vob2xkZXIgZmlsZSBhbmQg cmV0dXJuIGl0cyBoYW5kbGUuCisgKi8KK3N0YXRpYyBGSUxFICoKK3ByZXBhcmVfdG1wX3dyaXRl KGNvbnN0IGNoYXIgKmZuYW1lKQoreworCWNoYXIJCWZwYXRoW01BWFBHUEFUSF07CisJRklMRQkg ICAqZmlsZTsKKworCXNucHJpbnRmKGZwYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIsIFRtcFdhbFNl Z0RpciwgZm5hbWUpOworCisJLyogQ3JlYXRlIGFuIGVtcHR5IHBsYWNlaG9sZGVyICovCisJZmls ZSA9IGZvcGVuKGZwYXRoLCBQR19CSU5BUllfVyk7CisJaWYgKGZpbGUgPT0gTlVMTCkKKwkJcGdf ZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVtIiwgZnBhdGgpOworCisjaWZu ZGVmIFdJTjMyCisJaWYgKGNobW9kKGZwYXRoLCBwZ19maWxlX2NyZWF0ZV9tb2RlKSkKKwkJcGdf ZmF0YWwoImNvdWxkIG5vdCBzZXQgcGVybWlzc2lvbnMgb24gZmlsZSBcIiVzXCI6ICVtIiwKKwkJ CQkgZnBhdGgpOworI2VuZGlmCisKKwlwZ19sb2dfZGVidWcoInNwaWxsaW5nIHRvIHRlbXBvcmFy eSBmaWxlIFwiJXNcIiIsIGZwYXRoKTsKKworCXJldHVybiBmaWxlOworfQorCisvKgorICogV3Jp dGUgYnVmZmVyIGRhdGEgdG8gdGhlIGdpdmVuIGZpbGUgaGFuZGxlLgorICovCitzdGF0aWMgdm9p ZAorcGVyZm9ybV90bXBfd3JpdGUoY29uc3QgY2hhciAqZm5hbWUsIFN0cmluZ0luZm8gYnVmLCBG SUxFICpmaWxlKQoreworCUFzc2VydChmaWxlKTsKKworCWVycm5vID0gMDsKKwlpZiAoYnVmLT5s ZW4gPiAwICYmIGZ3cml0ZShidWYtPmRhdGEsIGJ1Zi0+bGVuLCAxLCBmaWxlKSAhPSAxKQorCXsK KwkJLyoKKwkJICogSWYgd3JpdGUgZGlkbid0IHNldCBlcnJubywgYXNzdW1lIHByb2JsZW0gaXMg bm8gZGlzayBzcGFjZQorCQkgKi8KKwkJaWYgKGVycm5vID09IDApCisJCQllcnJubyA9IEVOT1NQ QzsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjogJW0iLCBmbmFt ZSk7CisJfQorfQorCisvKgorICogQ3JlYXRlIGFuIGFzdHJlYW1lciB0aGF0IGNhbiByZWFkIFdB TCBmcm9tIHRhciBmaWxlLgogICovCiBzdGF0aWMgYXN0cmVhbWVyICoKIGFzdHJlYW1lcl93YWxk dW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQpAQCAtNTUyLDYgKzY5OSw3IEBA IGFzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQoYXN0cmVhbWVyICpzdHJlYW1lciwgYXN0cmVhbWVy X21lbWJlciAqbWVtYmVyLAogCQkJCX0KIAogCQkJCWVudHJ5LT5idWYgPSBtYWtlU3RyaW5nSW5m bygpOworCQkJCWVudHJ5LT5zcGlsbGVkID0gZmFsc2U7CiAJCQkJZW50cnktPnJlYWRfbGVuID0g MDsKIAkJCQlwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPSBlbnRyeTsKIAkJCX0KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5jCmluZGV4IGYwYjgxMTZmZjE0Li5lOTcwYjAwNzg4MyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5jCkBAIC00NzgsMTAgKzQ3OCwxNCBAQCBUYXJXQUxEdW1wUmVhZFBhZ2UoWExvZ1Jl YWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAog CQlyZXR1cm4gLTE7CiAKIAkvKgotCSAqIElmIHRoZSB0YXJnZXQgcGFnZSBpcyBpbiBhIGRpZmZl cmVudCBzZWdtZW50LCBmcmVlIHRoZSBidWZmZXIgc3BhY2UKLQkgKiBvY2N1cGllZCBieSB0aGUg cHJldmlvdXMgc2VnbWVudCBkYXRhLiBTaW5jZSBwZ193YWxkdW1wIG5ldmVyIHJlcXVlc3RzCi0J ICogdGhlIHNhbWUgV0FMIGJ5dGVzIHR3aWNlLCBtb3ZpbmcgdG8gYSBuZXcgc2VnbWVudCBpbXBs aWVzIHRoZSBwcmV2aW91cwotCSAqIGJ1ZmZlcidzIGRhdGEgYW5kIHRoYXQgc2VnbWVudCB3aWxs IG5vdCBiZSBuZWVkZWQgYWdhaW4uCisJICogSWYgdGhlIHRhcmdldCBwYWdlIGlzIGluIGEgZGlm ZmVyZW50IHNlZ21lbnQsIGZyZWUgdGhlIGJ1ZmZlciBhbmQvb3IKKwkgKiB0ZW1wb3JhcnkgZmls ZSBkaXNrIHNwYWNlIG9jY3VwaWVkIGJ5IHRoZSBwcmV2aW91cyBzZWdtZW50J3MgZGF0YS4KKwkg KiBTaW5jZSBwZ193YWxkdW1wIG5ldmVyIHJlcXVlc3RzIHRoZSBzYW1lIFdBTCBieXRlcyB0d2lj ZSwgbW92aW5nIHRvIGEKKwkgKiBuZXcgc2VnbWVudCBpbXBsaWVzIHRoZSBwcmV2aW91cyBidWZm ZXIncyBkYXRhIGFuZCB0aGF0IHNlZ21lbnQgd2lsbAorCSAqIG5vdCBiZSBuZWVkZWQgYWdhaW4u CisJICoKKwkgKiBBZnRlcndhcmQsIGNoZWNrIGZvciB0aGUgbmV4dCByZXF1aXJlZCBXQUwgc2Vn bWVudCdzIHBoeXNpY2FsIGV4aXN0ZW5jZQorCSAqIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5 IGZpcnN0IGJlZm9yZSBpbnZva2luZyB0aGUgYXJjaGl2ZSBzdHJlYW1lci4KIAkgKi8KIAljdXJT ZWdObyA9IHN0YXRlLT5zZWcud3Nfc2Vnbm87CiAJaWYgKCFYTEJ5dGVJblNlZyh0YXJnZXRQYWdl UHRyLCBjdXJTZWdObywgV2FsU2VnU3opKQpAQCAtNDk3LDYgKzUwMSwxMyBAQCBUYXJXQUxEdW1w UmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRy LCBpbnQgcmVxTGVuLAogCQlzdGF0ZS0+c2VnLndzX3RsaSA9IHByaXZhdGUtPnRpbWVsaW5lOwog CQlzdGF0ZS0+c2VnLndzX3NlZ25vID0gbmV4dFNlZ05vOwogCisJCS8qIENsb3NlIHRoZSBXQUwg c2VnbWVudCBmaWxlIGlmIGl0IGlzIGN1cnJlbnRseSBvcGVuICovCisJCWlmIChzdGF0ZS0+c2Vn LndzX2ZpbGUgPj0gMCkKKwkJeworCQkJY2xvc2Uoc3RhdGUtPnNlZy53c19maWxlKTsKKwkJCXN0 YXRlLT5zZWcud3NfZmlsZSA9IC0xOworCQl9CisKIAkJLyoKIAkJICogSWYgaW4gcHJlLXJlYWRp bmcgbW9kZSAocHJpb3IgdG8gYWN0dWFsIGRlY29kaW5nKSwgZG8gbm90IGRlbGV0ZQogCQkgKiBh bnkgZW50cmllcyB0aGF0IG1pZ2h0IGJlIHJlcXVlc3RlZCBhZ2FpbiBvbmNlIHRoZSBkZWNvZGlu ZyBsb29wCkBAIC01MDgsOSArNTE5LDIwIEBAIFRhcldBTER1bXBSZWFkUGFnZShYTG9nUmVhZGVy U3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsIGludCByZXFMZW4sCiAJCQlY TG9nRmlsZU5hbWUoZm5hbWUsIHN0YXRlLT5zZWcud3NfdGxpLCBjdXJTZWdObywgV2FsU2VnU3op OwogCQkJZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShmbmFtZSwgcHJpdmF0ZSk7CiAJCX0KKworCQkv KgorCQkgKiBJZiB0aGUgbmV4dCBzZWdtZW50IGV4aXN0cywgb3BlbiBpdCBhbmQgY29udGludWUg cmVhZGluZyBmcm9tIHRoZXJlCisJCSAqLworCQlYTG9nRmlsZU5hbWUoZm5hbWUsIHN0YXRlLT5z ZWcud3NfdGxpLCBuZXh0U2VnTm8sIFdhbFNlZ1N6KTsKKwkJc3RhdGUtPnNlZy53c19maWxlID0g b3Blbl9maWxlX2luX2RpcmVjdG9yeShUbXBXYWxTZWdEaXIsIGZuYW1lKTsKIAl9CiAKLQkvKiBS ZWFkIHRoZSBXQUwgcGFnZSBmcm9tIHRoZSBhcmNoaXZlIHN0cmVhbWVyICovCisJLyogQ29udGlu dWUgcmVhZGluZyBmcm9tIHRoZSBvcGVuIFdBTCBzZWdtZW50LCBpZiBhbnkgKi8KKwlpZiAoc3Rh dGUtPnNlZy53c19maWxlID49IDApCisJCXJldHVybiBXQUxEdW1wUmVhZFBhZ2Uoc3RhdGUsIHRh cmdldFBhZ2VQdHIsIGNvdW50LCB0YXJnZXRQdHIsCisJCQkJCQkJICAgcmVhZEJ1ZmYpOworCisJ LyogT3RoZXJ3aXNlLCByZWFkIHRoZSBXQUwgcGFnZSBmcm9tIHRoZSBhcmNoaXZlIHN0cmVhbWVy ICovCiAJcmV0dXJuIHJlYWRfYXJjaGl2ZV93YWxfcGFnZShwcml2YXRlLCB0YXJnZXRQYWdlUHRy LCBjb3VudCwgcmVhZEJ1ZmYsCiAJCQkJCQkJCSBXYWxTZWdTeik7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dh bGR1bXAuaAppbmRleCA2MjA1NGJjNzRjMC4uMTA5NzM5MGQ1NzUgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dh bGR1bXAuaApAQCAtMTgsNiArMTgsOSBAQAogc3RydWN0IEFyY2hpdmVkV0FMRmlsZTsKIHN0cnVj dCBBcmNoaXZlZFdBTF9oYXNoOwogCisvKiBUZW1wb3JhcnkgZGlyZWN0b3J5ICovCitleHRlcm4g Y2hhciAqVG1wV2FsU2VnRGlyOworCiAvKiBDb250YWlucyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0 aW9uIHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwogdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2 YXRlCiB7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgYi9z cmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKaW5kZXggNmY4Y2UzMTk4NDEuLjY5NjBi ZDQ2YmE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKKysr IGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC03LDYgKzcsNyBAQCB1c2Ug Q3dkOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKK3VzZSBMaXN0OjpVdGlsIHF3KHNodWZmbGUpOwog CiBteSAkdGFyID0gJEVOVntUQVJ9OwogCkBAIC0zMTIsNyArMzEzLDcgQEAgc3ViIGdlbmVyYXRl X2FyY2hpdmUKIAl9CiAJY2xvc2VkaXIgJGRoOwogCi0JQGZpbGVzID0gc29ydCBAZmlsZXM7CisJ QGZpbGVzID0gc2h1ZmZsZSBAZmlsZXM7CiAKIAkjIG1vdmUgaW50byB0aGUgV0FMIGRpcmVjdG9y eSBiZWZvcmUgYXJjaGl2aW5nIGZpbGVzCiAJbXkgJGN3ZCA9IGdldGN3ZDsKLS0gCjIuNDcuMQoK --000000000000d375fb064c9686ba Content-Type: application/x-patch; name="v16-0008-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Disposition: attachment; filename="v16-0008-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmj496re7 RnJvbSBmYWUwMjIzMjllYWY0YzdhMDY3ZGM5NjM3NDAxN2ZjZDI0NTNjODEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTYgSnVsIDIwMjUgMTQ6NDc6NDMgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNiAwOC8xMV0g cGdfdmVyaWZ5YmFja3VwOiBEZWxheSBkZWZhdWx0IFdBTCBkaXJlY3RvcnkKIHByZXBhcmF0aW9u LgoKV2UgYXJlIG5vdCBzdXJlIHdoZXRoZXIgdG8gcGFyc2UgV0FMIGZyb20gYSBkaXJlY3Rvcnkg b3IgYW4gYXJjaGl2ZQp1bnRpbCB0aGUgYmFja3VwIGZvcm1hdCBpcyBrbm93bi4gVGhlcmVmb3Jl LCB3ZSBkZWxheSBwcmVwYXJpbmcgdGhlCmRlZmF1bHQgV0FMIGRpcmVjdG9yeSB1bnRpbCB0aGUg cG9pbnQgb2YgcGFyc2luZy4gVGhpcyBkZWxheSBpcwpoYXJtbGVzcywgYXMgdGhlIFdBTCBkaXJl Y3RvcnkgaXMgbm90IHVzZWQgZWxzZXdoZXJlLgotLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3BnX3ZlcmlmeWJhY2t1cC5jIHwgOCArKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC9wZ192ZXJpZnliYWNrdXAuYyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3Zlcmlm eWJhY2t1cC5jCmluZGV4IDMxZjYwNmM0NWIxLi44Y2MyMDQ3MTllZSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKQEAgLTI4NSwxMCArMjg1LDYgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCW1hbmlmZXN0X3BhdGggPSBwc3ByaW50ZigiJXMvYmFj a3VwX21hbmlmZXN0IiwKIAkJCQkJCQkJIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CiAKLQkv KiBCeSBkZWZhdWx0LCBsb29rIGZvciB0aGUgV0FMIGluIHRoZSBiYWNrdXAgZGlyZWN0b3J5LCB0 b28uICovCi0JaWYgKHdhbF9kaXJlY3RvcnkgPT0gTlVMTCkKLQkJd2FsX2RpcmVjdG9yeSA9IHBz cHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwotCiAJLyoKIAkg KiBUcnkgdG8gcmVhZCB0aGUgbWFuaWZlc3QuIFdlIHRyZWF0IGFueSBlcnJvcnMgZW5jb3VudGVy ZWQgd2hpbGUgcGFyc2luZwogCSAqIHRoZSBtYW5pZmVzdCBhcyBmYXRhbDsgdGhlcmUgZG9lc24n dCBzZWVtIHRvIGJlIG11Y2ggcG9pbnQgaW4gdHJ5aW5nIHRvCkBAIC0zNjgsNiArMzY0LDEwIEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcg JiYgIWNvbnRleHQuc2tpcF9jaGVja3N1bXMpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tzdW1zKCZj b250ZXh0KTsKIAorCS8qIEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhlIGJhY2t1 cCBkaXJlY3RvcnksIHRvby4gKi8KKwlpZiAod2FsX2RpcmVjdG9yeSA9PSBOVUxMKQorCQl3YWxf ZGlyZWN0b3J5ID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVjdG9y eSk7CisKIAkvKgogCSAqIFRyeSB0byBwYXJzZSB0aGUgcmVxdWlyZWQgcmFuZ2VzIG9mIFdBTCBy ZWNvcmRzLCB1bmxlc3Mgd2Ugd2VyZSB0b2xkCiAJICogbm90IHRvIGRvIHNvLgotLSAKMi40Ny4x Cgo= --000000000000d375fb064c9686ba Content-Type: application/x-patch; name="v16-0009-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Disposition: attachment; filename="v16-0009-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmj49btk8 RnJvbSAyYTBjYTRhZjQxOTdlMTNmMTA2Y2JmM2JmYTM1NjAwZGIyZGIzZmY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzI6MTQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNiAwOS8xMV0g cGdfdmVyaWZ5YmFja3VwOiBSZW5hbWUgdGhlIHdhbC1kaXJlY3Rvcnkgc3dpdGNoIHRvCiB3YWwt cGF0aAoKV2l0aCBwcmV2aW91cyBwYXRjaGVzIHRvIHBnX3dhbGR1bXAgY2FuIG5vdyBkZWNvZGUg V0FMIGRpcmVjdGx5IGZyb20KdGFyIGZpbGVzLiAgVGhpcyBtZWFucyB5b3UnbGwgYmUgYWJsZSB0 byBzcGVjaWZ5IGEgdGFyIGFyY2hpdmUgcGF0aAppbnN0ZWFkIG9mIGEgdHJhZGl0aW9uYWwgV0FM IGRpcmVjdG9yeS4KClRvIGtlZXAgdGhpbmdzIGNvbnNpc3RlbnQgYW5kIG1vcmUgdmVyc2F0aWxl LCB3ZSBzaG91bGQgYWxzbwpnZW5lcmFsaXplIHRoZSBpbnB1dCBzd2l0Y2ggZm9yIHBnX3Zlcmlm eWJhY2t1cC4gSXQgc2hvdWxkIGFjY2VwdAplaXRoZXIgYSBkaXJlY3Rvcnkgb3IgYSB0YXIgZmls ZSBwYXRoIHRoYXQgY29udGFpbnMgV0FMcy4gVGhpcyBjaGFuZ2UKd2lsbCBhbHNvIGFsaWduaW5n IGl0IHdpdGggdGhlIGV4aXN0aW5nIG1hbmlmZXN0LXBhdGggc3dpdGNoIG5hbWluZy4KCj09IE5P VEUgPT0KICBUaGUgY29ycmVzcG9uZGluZyBQTyBmaWxlcyByZXF1aXJlIHVwZGF0aW5nIGR1ZSB0 byB0aGlzIGNoYW5nZS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21s ICAgICB8ICAyICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyB8 IDIzICsrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAw N193YWwucGwgICAgICB8ICA0ICsrLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygr KSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJp ZnliYWNrdXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwKaW5k ZXggNjFjMTI5NzVlNGEuLmU5YjhiZmQ1MWIxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L3BnX3ZlcmlmeWJhY2t1cC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFj a3VwLnNnbWwKQEAgLTI2MSw3ICsyNjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAog ICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlvbj4tdyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgotICAg ICAgPHRlcm0+PG9wdGlvbj4tLXdhbC1kaXJlY3Rvcnk9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhdGg8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxv cHRpb24+LS13YWwtcGF0aD08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0aDwvcmVw bGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxwYXJh PgogICAgICAgICBUcnkgdG8gcGFyc2UgV0FMIGZpbGVzIHN0b3JlZCBpbiB0aGUgc3BlY2lmaWVk IGRpcmVjdG9yeSwgcmF0aGVyIHRoYW4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL3BnX3ZlcmlmeWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5 YmFja3VwLmMKaW5kZXggOGNjMjA0NzE5ZWUuLjY4MmMzNjU0MzFmIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYworKysgYi9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9p ZCB2ZXJpZnlfZmlsZV9jaGVja3N1bSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJ CQkgdWludDggKmJ1ZmZlcik7CiBzdGF0aWMgdm9pZCBwYXJzZV9yZXF1aXJlZF93YWwodmVyaWZp ZXJfY29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkgICBjaGFyICpwZ193YWxkdW1wX3BhdGgsCi0J CQkJCQkJICAgY2hhciAqd2FsX2RpcmVjdG9yeSk7CisJCQkJCQkJICAgY2hhciAqd2FsX3BhdGgp Owogc3RhdGljIGFzdHJlYW1lciAqY3JlYXRlX2FyY2hpdmVfdmVyaWZpZXIodmVyaWZpZXJfY29u dGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIGNoYXIgKmFyY2hpdmVfbmFtZSwKIAkJCQkJCQkJ CQkgIE9pZCB0YmxzcGNfb2lkLApAQCAtMTI2LDcgKzEyNiw4IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCQl7InByb2dyZXNzIiwgbm9fYXJndW1lbnQsIE5VTEwsICdQJ30sCiAJCXsi cXVpZXQiLCBub19hcmd1bWVudCwgTlVMTCwgJ3EnfSwKIAkJeyJza2lwLWNoZWNrc3VtcyIsIG5v X2FyZ3VtZW50LCBOVUxMLCAncyd9LAotCQl7IndhbC1kaXJlY3RvcnkiLCByZXF1aXJlZF9hcmd1 bWVudCwgTlVMTCwgJ3cnfSwKKwkJeyJ3YWwtcGF0aCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxM LCAndyd9LAorCQl7IndhbC1kaXJlY3RvcnkiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3cn fSwJLyogZGVwcmVjYXRlZCAqLwogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCkBAIC0xMzUs NyArMTM2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJY2hhcgkgICAqbWFuaWZl c3RfcGF0aCA9IE5VTEw7CiAJYm9vbAkJbm9fcGFyc2Vfd2FsID0gZmFsc2U7CiAJYm9vbAkJcXVp ZXQgPSBmYWxzZTsKLQljaGFyCSAgICp3YWxfZGlyZWN0b3J5ID0gTlVMTDsKKwljaGFyCSAgICp3 YWxfcGF0aCA9IE5VTEw7CiAJY2hhcgkgICAqcGdfd2FsZHVtcF9wYXRoID0gTlVMTDsKIAlESVIJ CSAgICpkaXI7CiAKQEAgLTIyMSw4ICsyMjIsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAkJCQljb250ZXh0LnNraXBfY2hlY2tzdW1zID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCWNh c2UgJ3cnOgotCQkJCXdhbF9kaXJlY3RvcnkgPSBwc3RyZHVwKG9wdGFyZyk7Ci0JCQkJY2Fub25p Y2FsaXplX3BhdGgod2FsX2RpcmVjdG9yeSk7CisJCQkJd2FsX3BhdGggPSBwc3RyZHVwKG9wdGFy Zyk7CisJCQkJY2Fub25pY2FsaXplX3BhdGgod2FsX3BhdGgpOwogCQkJCWJyZWFrOwogCQkJZGVm YXVsdDoKIAkJCQkvKiBnZXRvcHRfbG9uZyBhbHJlYWR5IGVtaXR0ZWQgYSBjb21wbGFpbnQgKi8K QEAgLTM2NSwxNSArMzY2LDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl2ZXJp ZnlfYmFja3VwX2NoZWNrc3VtcygmY29udGV4dCk7CiAKIAkvKiBCeSBkZWZhdWx0LCBsb29rIGZv ciB0aGUgV0FMIGluIHRoZSBiYWNrdXAgZGlyZWN0b3J5LCB0b28uICovCi0JaWYgKHdhbF9kaXJl Y3RvcnkgPT0gTlVMTCkKLQkJd2FsX2RpcmVjdG9yeSA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBj b250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOworCWlmICh3YWxfcGF0aCA9PSBOVUxMKQorCQl3YWxf cGF0aCA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwog CiAJLyoKIAkgKiBUcnkgdG8gcGFyc2UgdGhlIHJlcXVpcmVkIHJhbmdlcyBvZiBXQUwgcmVjb3Jk cywgdW5sZXNzIHdlIHdlcmUgdG9sZAogCSAqIG5vdCB0byBkbyBzby4KIAkgKi8KIAlpZiAoIW5v X3BhcnNlX3dhbCkKLQkJcGFyc2VfcmVxdWlyZWRfd2FsKCZjb250ZXh0LCBwZ193YWxkdW1wX3Bh dGgsIHdhbF9kaXJlY3RvcnkpOworCQlwYXJzZV9yZXF1aXJlZF93YWwoJmNvbnRleHQsIHBnX3dh bGR1bXBfcGF0aCwgd2FsX3BhdGgpOwogCiAJLyoKIAkgKiBJZiBldmVyeXRoaW5nIGxvb2tzIE9L LCB0ZWxsIHRoZSB1c2VyIHRoaXMsIHVubGVzcyB3ZSB3ZXJlIGFza2VkIHRvCkBAIC0xMTg4LDcg KzExODksNyBAQCB2ZXJpZnlfZmlsZV9jaGVja3N1bSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0 LCBtYW5pZmVzdF9maWxlICptLAogICovCiBzdGF0aWMgdm9pZAogcGFyc2VfcmVxdWlyZWRfd2Fs KHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnBnX3dhbGR1bXBfcGF0aCwKLQkJCQkg ICBjaGFyICp3YWxfZGlyZWN0b3J5KQorCQkJCSAgIGNoYXIgKndhbF9wYXRoKQogewogCW1hbmlm ZXN0X2RhdGEgKm1hbmlmZXN0ID0gY29udGV4dC0+bWFuaWZlc3Q7CiAJbWFuaWZlc3Rfd2FsX3Jh bmdlICp0aGlzX3dhbF9yYW5nZSA9IG1hbmlmZXN0LT5maXJzdF93YWxfcmFuZ2U7CkBAIC0xMTk4 LDcgKzExOTksNyBAQCBwYXJzZV9yZXF1aXJlZF93YWwodmVyaWZpZXJfY29udGV4dCAqY29udGV4 dCwgY2hhciAqcGdfd2FsZHVtcF9wYXRoLAogCQljaGFyCSAgICpwZ193YWxkdW1wX2NtZDsKIAog CQlwZ193YWxkdW1wX2NtZCA9IHBzcHJpbnRmKCJcIiVzXCIgLS1xdWlldCAtLXBhdGg9XCIlc1wi IC0tdGltZWxpbmU9JXUgLS1zdGFydD0lWC8lMDhYIC0tZW5kPSVYLyUwOFhcbiIsCi0JCQkJCQkJ CSAgcGdfd2FsZHVtcF9wYXRoLCB3YWxfZGlyZWN0b3J5LCB0aGlzX3dhbF9yYW5nZS0+dGxpLAor CQkJCQkJCQkgIHBnX3dhbGR1bXBfcGF0aCwgd2FsX3BhdGgsIHRoaXNfd2FsX3JhbmdlLT50bGks CiAJCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHRoaXNfd2FsX3JhbmdlLT5zdGFydF9sc24pLAog CQkJCQkJCQkgIExTTl9GT1JNQVRfQVJHUyh0aGlzX3dhbF9yYW5nZS0+ZW5kX2xzbikpOwogCQlm Zmx1c2goTlVMTCk7CkBAIC0xMzY2LDcgKzEzNjcsNyBAQCB1c2FnZSh2b2lkKQogCXByaW50Zihf KCIgIC1QLCAtLXByb2dyZXNzICAgICAgICAgICAgICBzaG93IHByb2dyZXNzIGluZm9ybWF0aW9u XG4iKSk7CiAJcHJpbnRmKF8oIiAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgIGRvIG5vdCBw cmludCBhbnkgb3V0cHV0LCBleGNlcHQgZm9yIGVycm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1z LCAtLXNraXAtY2hlY2tzdW1zICAgICAgICBza2lwIGNoZWNrc3VtIHZlcmlmaWNhdGlvblxuIikp OwotCXByaW50ZihfKCIgIC13LCAtLXdhbC1kaXJlY3Rvcnk9UEFUSCAgICB1c2Ugc3BlY2lmaWVk IHBhdGggZm9yIFdBTCBmaWxlc1xuIikpOworCXByaW50ZihfKCIgIC13LCAtLXdhbC1wYXRoPVBB VEggICAgICAgICB1c2Ugc3BlY2lmaWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIikpOwogCXByaW50 ZihfKCIgIC1WLCAtLXZlcnNpb24gICAgICAgICAgICAgICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1h dGlvbiwgdGhlbiBleGl0XG4iKSk7CiAJcHJpbnRmKF8oIiAgLT8sIC0taGVscCAgICAgICAgICAg ICAgICAgIHNob3cgdGhpcyBoZWxwLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygiXG5SZXBv cnQgYnVncyB0byA8JXM+LlxuIiksIFBBQ0tBR0VfQlVHUkVQT1JUKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL3QvMDA3X3dhbC5wbAppbmRleCA3OTA4N2ExZjZiZS4uOGFkMjIzNDQ1M2QgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5wbAorKysgYi9zcmMvYmluL3Bn X3ZlcmlmeWJhY2t1cC90LzAwN193YWwucGwKQEAgLTQyLDEwICs0MiwxMCBAQCBjb21tYW5kX29r KFsgJ3BnX3ZlcmlmeWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsICRiYWNrdXBfcGF0aCBdLAog Y29tbWFuZF9vaygKIAlbCiAJCSdwZ192ZXJpZnliYWNrdXAnLAotCQknLS13YWwtZGlyZWN0b3J5 JyA9PiAkcmVsb2NhdGVkX3BnX3dhbCwKKwkJJy0td2FsLXBhdGgnID0+ICRyZWxvY2F0ZWRfcGdf d2FsLAogCQkkYmFja3VwX3BhdGgKIAldLAotCSctLXdhbC1kaXJlY3RvcnkgY2FuIGJlIHVzZWQg dG8gc3BlY2lmeSBXQUwgZGlyZWN0b3J5Jyk7CisJJy0td2FsLXBhdGggY2FuIGJlIHVzZWQgdG8g c3BlY2lmeSBXQUwgZGlyZWN0b3J5Jyk7CiAKICMgTW92ZSBkaXJlY3RvcnkgYmFjayB0byBvcmln aW5hbCBsb2NhdGlvbi4KIHJlbmFtZSgkcmVsb2NhdGVkX3BnX3dhbCwgJG9yaWdpbmFsX3BnX3dh bCkgfHwgZGllICJyZW5hbWUgcGdfd2FsIGJhY2s6ICQhIjsKLS0gCjIuNDcuMQoK --000000000000d375fb064c9686ba Content-Type: application/x-patch; name="v16-0010-pg_verifybackup-Enabled-WAL-parsing-for-tar-form.patch" Content-Disposition: attachment; filename="v16-0010-pg_verifybackup-Enabled-WAL-parsing-for-tar-form.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmj49fyo9 RnJvbSBkZGY4MzhkY2ZiMTM3NmQwZmU3NmMwMzI1ZGY3OGY0MDM3YTk0OGIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzQ6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxNiAxMC8xMV0g cGdfdmVyaWZ5YmFja3VwOiBFbmFibGVkIFdBTCBwYXJzaW5nIGZvciB0YXItZm9ybWF0CiBiYWNr dXAKCk5vdyB0aGF0IHBnX3dhbGR1bXAgc3VwcG9ydHMgZGVjb2RpbmcgZnJvbSB0YXIgYXJjaGl2 ZXMsIHdlIHNob3VsZApsZXZlcmFnZSB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gcmVtb3ZlIHRoZSBw cmV2aW91cyByZXN0cmljdGlvbiBvbiBXQUwKcGFyc2luZyBmb3IgdGFyLWJhY2tlZCBmb3JtYXRz LgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwgICAgICAgICB8IDEy ICsrLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jICAgICB8IDY2 ICsrKysrKysrKysrKystLS0tLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29y aXRobS5wbCAgICB8ICA0IC0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0 aW9uLnBsICAgfCAgNCArLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBsICAg ICAgICAgIHwgMTYgKysrKysKIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBs ICAgICAgICB8ICA1ICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50 YXIucGwgfCAgNSArLQogNyBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCA0MiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRleCBlOWI4YmZk NTFiMS4uMTY5NWNmZTkxYzggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5 YmFja3VwLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbApA QCAtMzYsMTAgKzM2LDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICA8bGl0ZXJhbD5i YWNrdXBfbWFuaWZlc3Q8L2xpdGVyYWw+IGdlbmVyYXRlZCBieSB0aGUgc2VydmVyIGF0IHRoZSB0 aW1lCiAgICBvZiB0aGUgYmFja3VwLiBUaGUgYmFja3VwIG1heSBiZSBzdG9yZWQgZWl0aGVyIGlu IHRoZSAicGxhaW4iIG9yIHRoZSAidGFyIgogICAgZm9ybWF0OyB0aGlzIGluY2x1ZGVzIHRhci1m b3JtYXQgYmFja3VwcyBjb21wcmVzc2VkIHdpdGggYW55IGFsZ29yaXRobQotICAgc3VwcG9ydGVk IGJ5IDxhcHBsaWNhdGlvbj5wZ19iYXNlYmFja3VwPC9hcHBsaWNhdGlvbj4uIEhvd2V2ZXIsIGF0 IHByZXNlbnQsCi0gICA8bGl0ZXJhbD5XQUw8L2xpdGVyYWw+IHZlcmlmaWNhdGlvbiBpcyBzdXBw b3J0ZWQgb25seSBmb3IgcGxhaW4tZm9ybWF0Ci0gICBiYWNrdXBzLiBUaGVyZWZvcmUsIGlmIHRo ZSBiYWNrdXAgaXMgc3RvcmVkIGluIHRhci1mb3JtYXQsIHRoZQotICAgPGxpdGVyYWw+LW4sIC0t bm8tcGFyc2Utd2FsPC9saXRlcmFsPiBvcHRpb24gc2hvdWxkIGJlIHVzZWQuCisgICBzdXBwb3J0 ZWQgYnkgPGFwcGxpY2F0aW9uPnBnX2Jhc2ViYWNrdXA8L2FwcGxpY2F0aW9uPi4KICAgPC9wYXJh PgogCiAgIDxwYXJhPgpAQCAtMjY0LDkgKzI2MSwxMCBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRp b24KICAgICAgIDx0ZXJtPjxvcHRpb24+LS13YWwtcGF0aD08cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3Rp dGVtPgogICAgICAgIDxwYXJhPgotICAgICAgICBUcnkgdG8gcGFyc2UgV0FMIGZpbGVzIHN0b3Jl ZCBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSwgcmF0aGVyIHRoYW4KLSAgICAgICAgaW4gPGxp dGVyYWw+cGdfd2FsPC9saXRlcmFsPi4gVGhpcyBtYXkgYmUgdXNlZnVsIGlmIHRoZSBiYWNrdXAg aXMKLSAgICAgICAgc3RvcmVkIGluIGEgc2VwYXJhdGUgbG9jYXRpb24gZnJvbSB0aGUgV0FMIGFy Y2hpdmUuCisgICAgICAgIFRyeSB0byBwYXJzZSBXQUwgZmlsZXMgc3RvcmVkIGluIHRoZSBzcGVj aWZpZWQgZGlyZWN0b3J5IG9yIHRhcgorICAgICAgICBhcmNoaXZlLCByYXRoZXIgdGhhbiBpbiA8 bGl0ZXJhbD5wZ193YWw8L2xpdGVyYWw+LiBUaGlzIG1heSBiZQorICAgICAgICB1c2VmdWwgaWYg dGhlIGJhY2t1cCBpcyBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBsb2NhdGlvbiBmcm9tIHRoZSBXQUwK KyAgICAgICAgYXJjaGl2ZS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Bn X3ZlcmlmeWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3Vw LmMKaW5kZXggNjgyYzM2NTQzMWYuLmRiNzlkZDM5MTAzIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYworKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC9wZ192ZXJpZnliYWNrdXAuYwpAQCAtNzQsNyArNzQsOSBAQCBwZ19ub3JldHVybiBzdGF0 aWMgdm9pZCByZXBvcnRfbWFuaWZlc3RfZXJyb3IoSnNvbk1hbmlmZXN0UGFyc2VDb250ZXh0ICpj b250ZXh0LAogCQkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiAJCQlwZ19hdHRyaWJ1 dGVfcHJpbnRmKDIsIDMpOwogCi1zdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmll cl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpcik7CitzdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2Jh Y2t1cCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpciwKKwkJCQkJCQkgIGNoYXIg KipiYXNlX2FyY2hpdmVfcGF0aCwKKwkJCQkJCQkgIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKTsK IHN0YXRpYyB2b2lkIHZlcmlmeV9wbGFpbl9iYWNrdXBfZGlyZWN0b3J5KHZlcmlmaWVyX2NvbnRl eHQgKmNvbnRleHQsCiAJCQkJCQkJCQkJICBjaGFyICpyZWxwYXRoLCBjaGFyICpmdWxscGF0aCwK IAkJCQkJCQkJCQkgIERJUiAqZGlyKTsKQEAgLTgzLDcgKzg1LDkgQEAgc3RhdGljIHZvaWQgdmVy aWZ5X3BsYWluX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJl bHBhdGgsCiBzdGF0aWMgdm9pZCB2ZXJpZnlfY29udHJvbF9maWxlKGNvbnN0IGNoYXIgKmNvbnRy b2xwYXRoLAogCQkJCQkJCQl1aW50NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIpOwogc3Rh dGljIHZvaWQgcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRl eHQsIGNoYXIgKnJlbHBhdGgsCi0JCQkJCQkJCQkgY2hhciAqZnVsbHBhdGgsIFNpbXBsZVB0ckxp c3QgKnRhcmZpbGVzKTsKKwkJCQkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAq dGFyZmlsZXMsCisJCQkJCQkJCQkgY2hhciAqKmJhc2VfYXJjaGl2ZV9wYXRoLAorCQkJCQkJCQkJ IGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKTsKIHN0YXRpYyB2b2lkIHZlcmlmeV90YXJfZmlsZSh2 ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpyZWxwYXRoLAogCQkJCQkJCWNoYXIgKmZ1 bGxwYXRoLCBhc3RyZWFtZXIgKnN0cmVhbWVyKTsKIHN0YXRpYyB2b2lkIHJlcG9ydF9leHRyYV9i YWNrdXBfZmlsZXModmVyaWZpZXJfY29udGV4dCAqY29udGV4dCk7CkBAIC0xMzcsNiArMTQxLDgg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJYm9vbAkJbm9fcGFyc2Vfd2FsID0gZmFs c2U7CiAJYm9vbAkJcXVpZXQgPSBmYWxzZTsKIAljaGFyCSAgICp3YWxfcGF0aCA9IE5VTEw7CisJ Y2hhcgkgICAqYmFzZV9hcmNoaXZlX3BhdGggPSBOVUxMOworCWNoYXIJICAgKndhbF9hcmNoaXZl X3BhdGggPSBOVUxMOwogCWNoYXIJICAgKnBnX3dhbGR1bXBfcGF0aCA9IE5VTEw7CiAJRElSCQkg ICAqZGlyOwogCkBAIC0zMjgsMTcgKzMzNCw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogCQlwZnJlZShwYXRoKTsKIAl9CiAKLQkvKgotCSAqIFhYWDogSW4gdGhlIGZ1dHVyZSwgd2Ug c2hvdWxkIGNvbnNpZGVyIGVuaGFuY2luZyBwZ193YWxkdW1wIHRvIHJlYWQgV0FMCi0JICogZmls ZXMgZnJvbSBhbiBhcmNoaXZlLgotCSAqLwotCWlmICghbm9fcGFyc2Vfd2FsICYmIGNvbnRleHQu Zm9ybWF0ID09ICd0JykKLQl7Ci0JCXBnX2xvZ19lcnJvcigicGdfd2FsZHVtcCBjYW5ub3QgcmVh ZCB0YXIgZmlsZXMiKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQoIllvdSBtdXN0IHVzZSAtbi8tLW5v LXBhcnNlLXdhbCB3aGVuIHZlcmlmeWluZyBhIHRhci1mb3JtYXQgYmFja3VwLiIpOwotCQlleGl0 KDEpOwotCX0KLQogCS8qCiAJICogUGVyZm9ybSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiB2ZXJp ZmljYXRpb24gYXBwcm9wcmlhdGUgYmFzZWQgb24gdGhlCiAJICogYmFja3VwIGZvcm1hdC4gVGhp cyB3aWxsIGNsb3NlICdkaXInLgpAQCAtMzQ3LDcgKzM0Miw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCQl2ZXJpZnlfcGxhaW5fYmFja3VwX2RpcmVjdG9yeSgmY29udGV4dCwgTlVM TCwgY29udGV4dC5iYWNrdXBfZGlyZWN0b3J5LAogCQkJCQkJCQkJICBkaXIpOwogCWVsc2UKLQkJ dmVyaWZ5X3Rhcl9iYWNrdXAoJmNvbnRleHQsIGRpcik7CisJCXZlcmlmeV90YXJfYmFja3VwKCZj b250ZXh0LCBkaXIsICZiYXNlX2FyY2hpdmVfcGF0aCwgJndhbF9hcmNoaXZlX3BhdGgpOwogCiAJ LyoKIAkgKiBUaGUgIm1hdGNoZWQiIGZsYWcgc2hvdWxkIG5vdyBiZSBzZXQgb24gZXZlcnkgZW50 cnkgaW4gdGhlIGhhc2ggdGFibGUuCkBAIC0zNjUsOSArMzYwLDI4IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcgJiYgIWNvbnRleHQuc2tp cF9jaGVja3N1bXMpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tzdW1zKCZjb250ZXh0KTsKIAotCS8q IEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhlIGJhY2t1cCBkaXJlY3RvcnksIHRv by4gKi8KKwkvKgorCSAqIEJ5IGRlZmF1bHQsIFdBTCBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8gYmUg Zm91bmQgaW4gdGhlIGJhY2t1cCBkaXJlY3RvcnkKKwkgKiBmb3IgcGxhaW4tZm9ybWF0IGJhY2t1 cHMuIEluIHRoZSBjYXNlIG9mIHRhci1mb3JtYXQgYmFja3VwcywgaWYgYQorCSAqIHNlcGFyYXRl IFdBTCBhcmNoaXZlIGlzIG5vdCBmb3VuZCwgdGhlIFdBTCBmaWxlcyBhcmUgbW9zdCBsaWtlbHkK KwkgKiBpbmNsdWRlZCB3aXRoaW4gdGhlIG1haW4gZGF0YSBkaXJlY3RvcnkgYXJjaGl2ZS4KKwkg Ki8KIAlpZiAod2FsX3BhdGggPT0gTlVMTCkKLQkJd2FsX3BhdGggPSBwc3ByaW50ZigiJXMvcGdf d2FsIiwgY29udGV4dC5iYWNrdXBfZGlyZWN0b3J5KTsKKwl7CisJCWlmIChjb250ZXh0LmZvcm1h dCA9PSAncCcpCisJCQl3YWxfcGF0aCA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJh Y2t1cF9kaXJlY3RvcnkpOworCQllbHNlIGlmICh3YWxfYXJjaGl2ZV9wYXRoKQorCQkJd2FsX3Bh dGggPSB3YWxfYXJjaGl2ZV9wYXRoOworCQllbHNlIGlmIChiYXNlX2FyY2hpdmVfcGF0aCkKKwkJ CXdhbF9wYXRoID0gYmFzZV9hcmNoaXZlX3BhdGg7CisJCWVsc2UKKwkJeworCQkJcGdfbG9nX2Vy cm9yKCJXQUwgYXJjaGl2ZSBub3QgZm91bmQiKTsKKwkJCXBnX2xvZ19lcnJvcl9oaW50KCJTcGVj aWZ5IHRoZSBjb3JyZWN0IHBhdGggdXNpbmcgdGhlIG9wdGlvbiAtdy8tLXdhbC1wYXRoLiAgIgor CQkJCQkJCSAgIk9yIHlvdSBtdXN0IHVzZSAtbi8tLW5vLXBhcnNlLXdhbCB3aGVuIHZlcmlmeWlu ZyBhIHRhci1mb3JtYXQgYmFja3VwLiIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KIAogCS8qCiAJ ICogVHJ5IHRvIHBhcnNlIHRoZSByZXF1aXJlZCByYW5nZXMgb2YgV0FMIHJlY29yZHMsIHVubGVz cyB3ZSB3ZXJlIHRvbGQKQEAgLTc4OCw3ICs4MDIsOCBAQCB2ZXJpZnlfY29udHJvbF9maWxlKGNv bnN0IGNoYXIgKmNvbnRyb2xwYXRoLCB1aW50NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIp CiAgKiBjbG9zZSB3aGVuIHdlJ3JlIGRvbmUgd2l0aCBpdC4KICAqLwogc3RhdGljIHZvaWQKLXZl cmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyKQordmVy aWZ5X3Rhcl9iYWNrdXAodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgRElSICpkaXIsIGNoYXIg KipiYXNlX2FyY2hpdmVfcGF0aCwKKwkJCQkgIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKQogewog CXN0cnVjdCBkaXJlbnQgKmRpcmVudDsKIAlTaW1wbGVQdHJMaXN0IHRhcmZpbGVzID0ge05VTEws IE5VTEx9OwpAQCAtODE3LDcgKzgzMiw4IEBAIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2Nv bnRleHQgKmNvbnRleHQsIERJUiAqZGlyKQogCQkJY2hhcgkgICAqZnVsbHBhdGg7CiAKIAkJCWZ1 bGxwYXRoID0gcHNwcmludGYoIiVzLyVzIiwgY29udGV4dC0+YmFja3VwX2RpcmVjdG9yeSwgZmls ZW5hbWUpOwotCQkJcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKGNvbnRleHQsIGZpbGVuYW1lLCBm dWxscGF0aCwgJnRhcmZpbGVzKTsKKwkJCXByZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZShjb250ZXh0 LCBmaWxlbmFtZSwgZnVsbHBhdGgsICZ0YXJmaWxlcywKKwkJCQkJCQkJCSBiYXNlX2FyY2hpdmVf cGF0aCwgd2FsX2FyY2hpdmVfcGF0aCk7CiAJCQlwZnJlZShmdWxscGF0aCk7CiAJCX0KIAl9CkBA IC04NzYsMTEgKzg5MiwxMyBAQCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmllcl9jb250ZXh0ICpj b250ZXh0LCBESVIgKmRpcikKICAqCiAgKiBUaGUgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24g YXJlIG1vc3RseSB0aGUgc2FtZSBhcyB0aGUKICAqIHZlcmlmeV9wbGFpbl9iYWNrdXBfZmlsZS4g VGhlIGFkZGl0aW9uYWwgYXJndW1lbnQgb3V0cHV0cyBhIGxpc3Qgb2YgdmFsaWQKLSAqIHRhciBm aWxlcy4KKyAqIHRhciBmaWxlcywgYWxvbmcgd2l0aCB0aGUgZnVsbCBwYXRocyB0byB0aGUgbWFp biBhcmNoaXZlIGFuZCB0aGUgV0FMCisgKiBkaXJlY3RvcnkgYXJjaGl2ZS4KICAqLwogc3RhdGlj IHZvaWQKIHByZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0 LCBjaGFyICpyZWxwYXRoLAotCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0 YXJmaWxlcykKKwkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFyZmlsZXMs CisJCQkJCQkgY2hhciAqKmJhc2VfYXJjaGl2ZV9wYXRoLCBjaGFyICoqd2FsX2FyY2hpdmVfcGF0 aCkKIHsKIAlzdHJ1Y3Qgc3RhdCBzYjsKIAlPaWQJCQl0YmxzcGNfb2lkID0gSW52YWxpZE9pZDsK QEAgLTkxOSw5ICs5MzcsMTcgQEAgcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2Nv bnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgsCiAJICogZXh0ZW5zaW9uIHN1Y2ggYXMgLmd6 LCAubHo0LCBvciAuenN0LgogCSAqLwogCWlmIChzdHJuY21wKCJiYXNlIiwgcmVscGF0aCwgNCkg PT0gMCkKKwl7CiAJCXN1ZmZpeCA9IHJlbHBhdGggKyA0OworCisJCSpiYXNlX2FyY2hpdmVfcGF0 aCA9IHBzdHJkdXAoZnVsbHBhdGgpOworCX0KIAllbHNlIGlmIChzdHJuY21wKCJwZ193YWwiLCBy ZWxwYXRoLCA2KSA9PSAwKQorCXsKIAkJc3VmZml4ID0gcmVscGF0aCArIDY7CisKKwkJKndhbF9h cmNoaXZlX3BhdGggPSBwc3RyZHVwKGZ1bGxwYXRoKTsKKwl9CiAJZWxzZQogCXsKIAkJLyogRXhw ZWN0ZWQgYSA8dGFibGVzcGFjZW9pZD4udGFyIGZpbGUgaGVyZS4gKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbCBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbAppbmRleCAwNTU2MTkxZWM5ZC4uZWRjNTE1ZDU5 MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5w bAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0aG0ucGwKQEAgLTMw LDEwICszMCw2IEBAIHN1YiB0ZXN0X2NoZWNrc3VtcwogCXsKIAkJIyBBZGQgc3dpdGNoIHRvIGdl dCBhIHRhci1mb3JtYXQgYmFja3VwCiAJCXB1c2ggQGJhY2t1cCwgKCctLWZvcm1hdCcgPT4gJ3Rh cicpOwotCi0JCSMgQWRkIHN3aXRjaCB0byBza2lwIFdBTCB2ZXJpZmljYXRpb24sIHdoaWNoIGlz IG5vdCB5ZXQgc3VwcG9ydGVkIGZvcgotCQkjIHRhci1mb3JtYXQgYmFja3VwcwotCQlwdXNoIEB2 ZXJpZnksICgnLS1uby1wYXJzZS13YWwnKTsKIAl9CiAKIAkjIEEgYmFja3VwIHdpdGggYSBib2d1 cyBhbGdvcml0aG0gc2hvdWxkIGZhaWwuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC90LzAwM19jb3JydXB0aW9uLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNf Y29ycnVwdGlvbi5wbAppbmRleCBiMWQ2NWI4YWEwZi4uODgyZDc1ZDlkYzIgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24ucGwKKysrIGIvc3JjL2Jp bi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbApAQCAtMTkzLDEwICsxOTMsOCBA QCBmb3IgbXkgJHNjZW5hcmlvIChAc2NlbmFyaW8pCiAJCQljb21tYW5kX29rKFsgJHRhciwgJy1j ZicgPT4gIiR0YXJfYmFja3VwX3BhdGgvYmFzZS50YXIiLCAnLicgXSk7CiAJCQljaGRpcigkY3dk KSB8fCBkaWUgImNoZGlyOiAkISI7CiAKLQkJCSMgTm93IGNoZWNrIHRoYXQgdGhlIGJhY2t1cCBu byBsb25nZXIgdmVyaWZpZXMuIFdlIG11c3QgdXNlIC1uCi0JCQkjIGhlcmUsIGJlY2F1c2UgcGdf d2FsZHVtcCBjYW4ndCB5ZXQgcmVhZCBXQUwgZnJvbSBhIHRhcmZpbGUuCiAJCQljb21tYW5kX2Zh aWxzX2xpa2UoCi0JCQkJWyAncGdfdmVyaWZ5YmFja3VwJywgJy0tbm8tcGFyc2Utd2FsJywgJHRh cl9iYWNrdXBfcGF0aCBdLAorCQkJCVsgJ3BnX3ZlcmlmeWJhY2t1cCcsICR0YXJfYmFja3VwX3Bh dGggXSwKIAkJCQkkc2NlbmFyaW8tPnsnZmFpbHNfbGlrZSd9LAogCQkJCSJjb3JydXB0IGJhY2t1 cCBmYWlscyB2ZXJpZmljYXRpb246ICRuYW1lIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3 X3dhbC5wbAppbmRleCA4YWQyMjM0NDUzZC4uMGUwMzc3YmZhY2MgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC90LzAwN193YWwucGwKQEAgLTkwLDQgKzkwLDIwIEBAIGNvbW1hbmRfb2soCiAJWyAncGdf dmVyaWZ5YmFja3VwJywgJGJhY2t1cF9wYXRoMiBdLAogCSd2YWxpZCBiYXNlIGJhY2t1cCB3aXRo IHRpbWVsaW5lID4gMScpOwogCisjIFRlc3QgV0FMIHZlcmlmaWNhdGlvbiBmb3IgYSB0YXItZm9y bWF0IGJhY2t1cCB3aXRoIGEgc2VwYXJhdGUgcGdfd2FsLnRhciwKKyMgYXMgcHJvZHVjZWQgYnkg cGdfYmFzZWJhY2t1cCAtLWZvcm1hdD10YXIgLS13YWwtbWV0aG9kPXN0cmVhbS4KK215ICRiYWNr dXBfcGF0aDMgPSAkcHJpbWFyeS0+YmFja3VwX2RpciAuICcvdGVzdF90YXJfd2FsJzsKKyRwcmlt YXJ5LT5jb21tYW5kX29rKAorCVsKKwkJJ3BnX2Jhc2ViYWNrdXAnLAorCQknLS1wZ2RhdGEnID0+ ICRiYWNrdXBfcGF0aDMsCisJCSctLW5vLXN5bmMnLAorCQknLS1mb3JtYXQnID0+ICd0YXInLAor CQknLS1jaGVja3BvaW50JyA9PiAnZmFzdCcKKwldLAorCSJ0YXIgYmFja3VwIHdpdGggc2VwYXJh dGUgcGdfd2FsLnRhciIpOworY29tbWFuZF9vaygKKwlbICdwZ192ZXJpZnliYWNrdXAnLCAkYmFj a3VwX3BhdGgzIF0sCisJJ1dBTCB2ZXJpZmljYXRpb24gc3VjY2VlZHMgd2l0aCBzZXBhcmF0ZSBw Z193YWwudGFyJyk7CisKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvdC8wMDhfdW50YXIucGwgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAw OF91bnRhci5wbAppbmRleCBhZTY3YWU4NWEzMS4uMTYxYzA4YzE5MGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsCisrKyBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsCkBAIC00Nyw3ICs0Nyw2IEBAIG15ICR0c29pZCA9ICRw cmltYXJ5LT5zYWZlX3BzcWwoCiAJCVNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJF IHNwY25hbWUgPSAncmVncmVzc190czEnKSk7CiAKIG15ICRiYWNrdXBfcGF0aCA9ICRwcmltYXJ5 LT5iYWNrdXBfZGlyIC4gJy9zZXJ2ZXItYmFja3VwJzsKLW15ICRleHRyYWN0X3BhdGggPSAkcHJp bWFyeS0+YmFja3VwX2RpciAuICcvZXh0cmFjdGVkLWJhY2t1cCc7CiAKIG15IEB0ZXN0X2NvbmZp Z3VyYXRpb24gPSAoCiAJewpAQCAtMTIzLDE0ICsxMjIsMTIgQEAgZm9yIG15ICR0YyAoQHRlc3Rf Y29uZmlndXJhdGlvbikKIAkJIyBWZXJpZnkgdGFyIGJhY2t1cC4KIAkJJHByaW1hcnktPmNvbW1h bmRfb2soCiAJCQlbCi0JCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsCi0J CQkJJy0tZXhpdC1vbi1lcnJvcicsICRiYWNrdXBfcGF0aCwKKwkJCQkncGdfdmVyaWZ5YmFja3Vw JywgJy0tZXhpdC1vbi1lcnJvcicsICRiYWNrdXBfcGF0aCwKIAkJCV0sCiAJCQkidmVyaWZ5IGJh Y2t1cCwgY29tcHJlc3Npb24gJG1ldGhvZCIpOwogCiAJCSMgQ2xlYW51cC4KIAkJcm10cmVlKCRi YWNrdXBfcGF0aCk7Ci0JCXJtdHJlZSgkZXh0cmFjdF9wYXRoKTsKIAl9CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbCBiL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbAppbmRleCAxYWM3YjVkYjc1 YS4uOTY3MGZiZTRmZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEw X2NsaWVudF91bnRhci5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGll bnRfdW50YXIucGwKQEAgLTMyLDcgKzMyLDYgQEAgcHJpbnQgJGpmICRqdW5rX2RhdGE7CiBjbG9z ZSAkamY7CiAKIG15ICRiYWNrdXBfcGF0aCA9ICRwcmltYXJ5LT5iYWNrdXBfZGlyIC4gJy9jbGll bnQtYmFja3VwJzsKLW15ICRleHRyYWN0X3BhdGggPSAkcHJpbWFyeS0+YmFja3VwX2RpciAuICcv ZXh0cmFjdGVkLWJhY2t1cCc7CiAKIG15IEB0ZXN0X2NvbmZpZ3VyYXRpb24gPSAoCiAJewpAQCAt MTM3LDEzICsxMzYsMTEgQEAgZm9yIG15ICR0YyAoQHRlc3RfY29uZmlndXJhdGlvbikKIAkJIyBW ZXJpZnkgdGFyIGJhY2t1cC4KIAkJJHByaW1hcnktPmNvbW1hbmRfb2soCiAJCQlbCi0JCQkJJ3Bn X3ZlcmlmeWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsCi0JCQkJJy0tZXhpdC1vbi1lcnJvcics ICRiYWNrdXBfcGF0aCwKKwkJCQkncGdfdmVyaWZ5YmFja3VwJywgJy0tZXhpdC1vbi1lcnJvcics ICRiYWNrdXBfcGF0aCwKIAkJCV0sCiAJCQkidmVyaWZ5IGJhY2t1cCwgY29tcHJlc3Npb24gJG1l dGhvZCIpOwogCiAJCSMgQ2xlYW51cC4KLQkJcm10cmVlKCRleHRyYWN0X3BhdGgpOwogCQlybXRy ZWUoJGJhY2t1cF9wYXRoKTsKIAl9CiB9Ci0tIAoyLjQ3LjEKCg== --000000000000d375fb064c9686ba--