Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uImGZ-00B9CJ-Hu for pgsql-hackers@arkaria.postgresql.org; Sat, 24 May 2025 10:38:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uImGY-00As3L-R0 for pgsql-hackers@arkaria.postgresql.org; Sat, 24 May 2025 10:38:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uImGY-00As3D-DG for pgsql-hackers@lists.postgresql.org; Sat, 24 May 2025 10:38:10 +0000 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uImGV-000j8g-0y for pgsql-hackers@postgresql.org; Sat, 24 May 2025 10:38:09 +0000 Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-ad216a5a59cso76070166b.3 for ; Sat, 24 May 2025 03:38:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748083086; x=1748687886; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4z/2/2X+VXNWvt4DRYAADhJkZL8Ehmhj6LfbZ8ZqR5g=; b=f/yqhVubBLtRFZmvG7w7ext+YkiSJpwR0GfN+epVG3OY0AMMUXpn+jl6gPiVR3M19n B4A7MNO2j0qCOUDDwKUqrEc2iQbf1KARMpgiSoOgPAwgcpW0LJdyM7i/yWysD/HYOjai sx7jakpR2rCGx+1WZ4Ls7jwMR+RrhSG5z2aGAe5j0wmsxwh/MMzB54Vv+C1ooZfxsWNl wjbqn5qKmdRXnRVqogD9NwCvxX6P1VzfPgyFzR++BzQKzatBuNIhLytKbd+WPiDHUa/L npxs+7rAWB1OCvVCIsAnMO9uDDp0tlymZf7qWW6fis3oMIJ2HQJ4Lx2wkGOGzUqzJm4B v/5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748083086; x=1748687886; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=4z/2/2X+VXNWvt4DRYAADhJkZL8Ehmhj6LfbZ8ZqR5g=; b=kTkBTp6gBMFBvM4zF4QlEyRYpUrIXXJ8+RX3zUjOMKXpr/v0PqgJ0/AodhGvF1DVo3 s7nZ3qWo+Pli73/SEM+YmCCKVVSE4+FMxIsEt3sUqcNUFtklROdxsw5R6dFF/u0mSnfy TLJVJZb6qp+LM1gYwzm9qUwpM+lTyW11OwlQu6iH/GNyCSC4+dL2eKu+JbZyMBdj4O63 pMWsRSSe0kqljYzgIgEVshL/X8H4B452eNZgYA5Or3I+nen6mjSjpdpvoNS4n68rhF4N o9P45+q/ezB6g2wswPQzJjWGFX1oWICqf1xvTZJaePvh6nlWFojRx7rJzJWKeXCx6v7I mVWQ== X-Gm-Message-State: AOJu0Yzr29tu5fFvD/hnT1Of8HA8SyKB4qVNfgXV0AOaJxBCTLncBUbX 73LC/cx2mhhuxE6y5yca2d1dVGDvyMCFVwjgjeR0b2wAepmjLDRsOYP6AShUPNGL869/DiRR1iG gke31Y024Tq+WMAa32mDHlcgokWQQ8a0= X-Gm-Gg: ASbGncuSq9eWAHwPKMS4ZGs2aYqMptf/X7/l+hGkunSwpJxTUIVo3a8ek4LK6eAAy/h Kw9bBS7aNTSu5gBRSpNWx1cTgsACDJ82e3pxK7pAsGqHhE/eFZ6MZyh1SccDLRvy66LXROOY7kI Rq+zI/MVB28F29/9g/0WL0tv74KknvJg2snubKi1j3/R0= X-Google-Smtp-Source: AGHT+IFH2HsNHr4XbkMR25wHzyxBp0G2Q27g82+HA1hSO63uTHNhY7E8V1P+VeG+VLZTFQUlbET/8Y/5bQsOIkjYgU8= X-Received: by 2002:a17:907:1c10:b0:ad2:e683:a77e with SMTP id a640c23a62f3a-ad85b2122cdmr178722966b.53.1748083085514; Sat, 24 May 2025 03:38:05 -0700 (PDT) MIME-Version: 1.0 References: <1d12d2-67235980-35-19a406a0@63439497> <683f3c82-d38e-436d-88fd-27722af62005@vondra.me> <8679fea7-94ce-4a52-8e48-1a8cd0857fcb@vondra.me> <135e8-675c4600-21-304d7f40@228322535> <1538a2-67c5c700-7-77ec5a80@179382871> <27589a-680a4b80-6d-6e07880@117064404> <3ea6a1-68150580-1-7b53be0@80017081> <309f08-682ca380-25-139bf240@62751029> In-Reply-To: From: Alexander Korotkov Date: Sat, 24 May 2025 13:37:52 +0300 X-Gm-Features: AX0GCFu78-7aiGip5Rg0iPExYVTZE9W-KJykCd8KOSWxxbm1vVVB9AXqkCgFbuk Message-ID: Subject: Re: Slot's restart_lsn may point to removed WAL segment after hard restart unexpectedly To: Vitaly Davydov Cc: pgsql-hackers , Masahiko Sawada , tomas@vondra.me Content-Type: multipart/mixed; boundary="00000000000059cdaa0635df4f7e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000059cdaa0635df4f7e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, May 23, 2025 at 12:10=E2=80=AFAM Alexander Korotkov wrote: > > Hi, Vitaly! > > On Tue, May 20, 2025 at 6:44=E2=80=AFPM Vitaly Davydov wrote: > > > > Thank you very much for the review! > > > > > The patchset doesn't seem to build after 371f2db8b0, which adjusted > > > the signature of the INJECTION_POINT() macro. Could you, please, > > > update the patchset accordingly. > > > > I've updated the patch (see attached). Thanks. > > > > > I see in 0004 patch we're calling XLogGetReplicationSlotMinimumLSN() > > > before slots synchronization then use it for WAL truncation. > > > Generally looks good. But what about the "if > > > (InvalidateObsoleteReplicationSlots(...))" branch? It calls > > > XLogGetReplicationSlotMinimumLSN() again. Why would the value > > > obtained from the latter call reflect slots as they are synchronized > > > to the disk? > > > > In patch 0004 I call XLogGetReplicationSlotMinimumLSN() again to keep t= he old > > behaviour - this function was called in KeepLogSeg prior to my change. = I also > > call CheckPointReplicationSlots at the next line to save the invalidate= d and > > other dirty slots on disk again to make sure, the new oldest LSN is in = sync. > > > > The problem I tried to solve in this if-branch is to fix test > > src/test/recovery/t/019_replslot_limit.pl which was failed because the = WAL was > > not truncated enought for the test to pass ok. In general, this branch = is not > > necessary and we may fix the test by calling checkpoint twice (please, = see the > > alternative.rej patch for this case). If you think, we should incorpora= te this > > new change, I'm ok to do it. But the WAL will be truncating more lazily= . > > > > Furthermore, I think we can save slots on disk right after invalidation= , not in > > CheckPointGuts to avoid saving invalidated slots twice. > > Thank you for the clarification. It's all good. I just missed that > CheckPointReplicationSlots() syncs slots inside the "if" branch. > > I've reordered the patchset. Fix should come first, tests comes > second. So, tests pass after each commit. Also I've joined both > tests and injection points into single commit. I don't see reason to > place tests into src/test/modules, because there is no module. I've > moved them into src/test/recovery. > > I also improved some comments and commit messages. I think 0001 > should go to all supported releases as it fixes material bug, while > 0002 should be backpatched to 17, where injection points fist appears. > 0003 should go to pg19 after branching. I'm continuing reviewing > this. I spend more time on this. The next revision is attached. It contains revised comments and other cosmetic changes. I'm going to backpatch 0001 to all supported branches, and 0002 to 17 where injection points were introduced. ------ Regards, Alexander Korotkov Supabase --00000000000059cdaa0635df4f7e Content-Type: application/octet-stream; name="v5-0003-Remove-redundant-ReplicationSlotsComputeRequiredL.patch" Content-Disposition: attachment; filename="v5-0003-Remove-redundant-ReplicationSlotsComputeRequiredL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb23fefw2 RnJvbSBkYjIwMjY4OTIyMTQyZjhiOGNiZmY4OTNiNzcxZDZjZWQ4MTk3MGM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU2F0LCAyNCBNYXkgMjAyNSAxMzozNDozNiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjUgMy8zXSBSZW1vdmUgcmVkdW5kYW50IFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVx dWlyZWRMU04KIGNhbGxzCgpUaGUgZnVuY3Rpb24gUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1 aXJlZExTTiBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUKb2xkZXN0IHNsb3RzJyByZXF1aXJlZCBM U04uIEl0IGlzIGNhbGxlZCBldmVyeSB0aW1lIHdoZW4gcmVzdGFydF9sc24KdmFsdWUgb2YgYW55 IHNsb3QgaXMgY2hhbmdlZCAoZm9yIGV4YW1wbGUsIHdoZW4gYSBzbG90IGlzIGFkdmFuY2luZyku ClRoZSBzbG90J3Mgb2xkZXN0IHJlcXVpcmVkIExTTiBpcyB1c2VkIHRvIHJlbW90ZSBvbGQgV0FM IHNlZ21lbnRzIGluIHR3bwpwbGFjZXMgLSB3aGVuIGNoZWNrcG9pbnQgb3IgcmVzdGFydCBwb2lu dCBpcyBjcmVhdGVkIChDcmVhdGVDaGVja1BvaW50LApDcmVhdGVSZXN0YXJ0UG9pbnQgZnVuY3Rp b25zKS4gT2xkIFdBTCBzZWdtZW50cyBzZWVtcyB0byBiZSB0cnVuY2F0ZWQgaW4KdGhlc2UgdHdv IGZ1bmN0aW9ucyBvbmx5LgoKVGhlIGlkZWEgb2YgdGhlIHBhdGNoIGlzIHRvIGNhbGwgUmVwbGlj YXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTiBpbgpDcmVhdGVDaGVja1BvaW50IG9yIENyZWF0 ZVJlc3RhcnRQb2ludCBmdW5jdGlvbnMgb25seSwgYmVmb3JlIGNhbGwgb2YKUmVtb3ZlT2xkWGxv Z0ZpbGVzIGZ1bmN0aW9uIHdoZXJlIG9sZCBXQUwgc2VnbWVudHMgYXJlIHJlbW92ZWQuIFRoZXJl CmlzIG5vIG9idmlvdXMgbmVlZCB0byByZWNhbGN1bGF0ZSBvbGRlc3QgcmVxdWlyZWQgTFNOIGV2 ZXJ5IHRpbWUgd2hlbiBhCnNsb3QncyByZXN0YXJ0X2xzbiBpcyBjaGFuZ2VkLgoKVGhlIHZhbHVl IG9mIHRoZSBvbGRlc3QgcmVxdWlyZWQgbHNuIGNhbiBhZmZlY3Qgb24gc2xvdCBpbnZhbGlkYXRp b24uClRoZSBmdW5jdGlvbiBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzIHdpdGgg bm9uIHplcm8gc2Vjb25kCnBhcmFtZXRlciAob2xkZXN0U2Vnbm8pIGlzIGNhbGxlZCBpbiBDcmVh dGVDaGVja1BvaW50LApDcmVhdGVSZXN0YXJ0UG9pbnQgZnVuY3Rpb25zIG9ubHkgd2hlcmUgc2xv dCBpbnZhbGlkYXRpb24gb2NjdXJzIHdpdGgKcmVhc29uIFJTX0lOVkFMX1dBTF9SRU1PVkVELiBP bmNlIHdlIHVwZGF0ZSB0aGUgb2xkZXN0IHNsb3RzJyByZXF1aXJlZApsc24gaW4gdGhlIGJlZ2lu bmluZyBvZiB0aGVzZSBmdW5jdGlvbnMsIHRoZSBwcm9wb3NlZCBwYXRjaCBzaG91bGQgbm90CmJy ZWFrIHRoZSBiZWhhdmlvdXIgb2Ygc2xvdCBpbnZhbGlkYXRpb24gZnVuY3Rpb24gaW4gdGhpcyBj YXNlLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICB8IDQg KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgIHwgMSAtCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgfCA0IC0tLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAgICB8IDUgLS0tLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jICAgICAgICB8IDIgLS0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICB8IDEgLQogNiBmaWxlcyBjaGFuZ2VkLCA0IGlu c2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpp bmRleCAwYTdmN2E3MWQ4Yi4uYmRmZDBhNTlhYjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMKQEAgLTczMjQsNiArNzMyNCw3IEBAIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCSAq IG1pZ2h0IGJlIGFkdmFuY2VkIGNvbmN1cnJlbnRseSwgc28gd2UgY2FsbCB0aGlzIGJlZm9yZQog CSAqIENoZWNrUG9pbnRSZXBsaWNhdGlvblNsb3RzKCkgc3luY2hyb25pemVzIHJlcGxpY2F0aW9u IHNsb3RzLgogCSAqLworCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRMU04oKTsKIAlz bG90c01pblJlcUxTTiA9IFhMb2dHZXRSZXBsaWNhdGlvblNsb3RNaW5pbXVtTFNOKCk7CiAKIAkv KgpAQCAtNzUyOCw2ICs3NTI5LDcgQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpCiAJCSAq IGNsZWFudXAuICBUaGVuLCB3ZSBtdXN0IHN5bmNocm9uaXplIHRoZSByZXBsaWNhdGlvbiBzbG90 cyBhZ2FpbiBpbgogCQkgKiBvcmRlciB0byBtYWtlIHRoaXMgTFNOIHNhZmUgdG8gdXNlLgogCQkg Ki8KKwkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCQlzbG90c01pblJl cUxTTiA9IFhMb2dHZXRSZXBsaWNhdGlvblNsb3RNaW5pbXVtTFNOKCk7CiAJCUNoZWNrUG9pbnRS ZXBsaWNhdGlvblNsb3RzKHNodXRkb3duKTsKIApAQCAtNzkwMSw2ICs3OTAzLDcgQEAgQ3JlYXRl UmVzdGFydFBvaW50KGludCBmbGFncykKIAkgKiBtaWdodCBiZSBhZHZhbmNlZCBjb25jdXJyZW50 bHksIHNvIHdlIGNhbGwgdGhpcyBiZWZvcmUKIAkgKiBDaGVja1BvaW50UmVwbGljYXRpb25TbG90 cygpIHN5bmNocm9uaXplcyByZXBsaWNhdGlvbiBzbG90cy4KIAkgKi8KKwlSZXBsaWNhdGlvblNs b3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CiAJc2xvdHNNaW5SZXFMU04gPSBYTG9nR2V0UmVwbGlj YXRpb25TbG90TWluaW11bUxTTigpOwogCiAJaWYgKGxvZ19jaGVja3BvaW50cykKQEAgLTgwMDEs NiArODAwNCw3IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3MpCiAJCSAqIGNsZWFudXAu ICBUaGVuLCB3ZSBtdXN0IHN5bmNocm9uaXplIHRoZSByZXBsaWNhdGlvbiBzbG90cyBhZ2FpbiBp bgogCQkgKiBvcmRlciB0byBtYWtlIHRoaXMgTFNOIHNhZmUgdG8gdXNlLgogCQkgKi8KKwkJUmVw bGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCQlzbG90c01pblJlcUxTTiA9IFhM b2dHZXRSZXBsaWNhdGlvblNsb3RNaW5pbXVtTFNOKCk7CiAJCUNoZWNrUG9pbnRSZXBsaWNhdGlv blNsb3RzKGZsYWdzICYgQ0hFQ0tQT0lOVF9JU19TSFVURE9XTik7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5kZXggZjFlYjc5OGYzZTkuLjdkMTM2MjEzNzc3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpAQCAtMTkxNyw3 ICsxOTE3LDYgQEAgTG9naWNhbENvbmZpcm1SZWNlaXZlZExvY2F0aW9uKFhMb2dSZWNQdHIgbHNu KQogCQkJU3BpbkxvY2tSZWxlYXNlKCZNeVJlcGxpY2F0aW9uU2xvdC0+bXV0ZXgpOwogCiAJCQlS ZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7Ci0JCQlSZXBsaWNhdGlv blNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CiAJCX0KIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IDY1NmU2NmUwYWUwLi4zMDY2MmMw OTI3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3lu Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAt MzM1LDcgKzMzNSw2IEBAIHVwZGF0ZV9sb2NhbF9zeW5jZWRfc2xvdChSZW1vdGVTbG90ICpyZW1v dGVfc2xvdCwgT2lkIHJlbW90ZV9kYmlkLAogCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4 KTsKIAogCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7Ci0JCVJl cGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRMU04oKTsKIAl9CiAKIAlyZXR1cm4gdXBkYXRl ZF9jb25maWcgfHwgdXBkYXRlZF94bWluX29yX2xzbjsKQEAgLTUwMiw5ICs1MDEsNiBAQCByZXNl cnZlX3dhbF9mb3JfbG9jYWxfc2xvdChYTG9nUmVjUHRyIHJlc3RhcnRfbHNuKQogCQlzbG90LT5k YXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247CiAJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+ bXV0ZXgpOwogCi0JCS8qIFByZXZlbnQgV0FMIHJlbW92YWwgYXMgZmFzdCBhcyBwb3NzaWJsZSAq LwotCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7Ci0KIAkJWExCeXRlVG9T ZWcoc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiwgc2Vnbm8sIHdhbF9zZWdtZW50X3NpemUpOwogCiAJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggNjAwYjg3ZmE5Y2IuLmRkMThmZTEwZjdkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0xMDA4LDcgKzEwMDgsNiBAQCBSZXBsaWNhdGlvblNs b3REcm9wUHRyKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCkKIAkgKiBsaW1pdHMuCiAJICovCiAJUmVw bGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZFhtaW4oZmFsc2UpOwotCVJlcGxpY2F0aW9uU2xv dHNDb21wdXRlUmVxdWlyZWRMU04oKTsKIAogCS8qCiAJICogSWYgcmVtb3ZpbmcgdGhlIGRpcmVj dG9yeSBmYWlscywgdGhlIHdvcnN0IHRoaW5nIHRoYXQgd2lsbCBoYXBwZW4gaXMKQEAgLTE0OTQs OSArMTQ5Myw2IEBAIFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIAkJc2xvdC0+ZGF0 YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwogCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11 dGV4KTsKIAotCQkvKiBwcmV2ZW50IFdBTCByZW1vdmFsIGFzIGZhc3QgYXMgcG9zc2libGUgKi8K LQkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwotCiAJCS8qCiAJCSAqIElm IGFsbCByZXF1aXJlZCBXQUwgaXMgc3RpbGwgdGhlcmUsIGdyZWF0LCBvdGhlcndpc2UgcmV0cnku IFRoZQogCQkgKiBzbG90IHNob3VsZCBwcmV2ZW50IGZ1cnRoZXIgcmVtb3ZhbCBvZiBXQUwsIHVu bGVzcyB0aGVyZSdzIGEKQEAgLTIwMTQsNyArMjAxMCw2IEBAIHJlc3RhcnQ6CiAJaWYgKGludmFs aWRhdGVkKQogCXsKIAkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZFhtaW4oZmFsc2Up OwotCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CiAJfQogCiAJcmV0dXJu IGludmFsaWRhdGVkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwppbmRleCAzNmNjMmVk NGU0NC4uMzMwMGZiOWIxYzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCkBAIC01 ODMsNyArNTgzLDYgQEAgcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKFBHX0ZVTkNUSU9OX0FS R1MpCiAJICogYWR2YW5jaW5nIHBvdGVudGlhbGx5IGRvbmUuCiAJICovCiAJUmVwbGljYXRpb25T bG90c0NvbXB1dGVSZXF1aXJlZFhtaW4oZmFsc2UpOwotCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRl UmVxdWlyZWRMU04oKTsKIAogCVJlcGxpY2F0aW9uU2xvdFJlbGVhc2UoKTsKIApAQCAtODE5LDcg KzgxOCw2IEBAIGNvcHlfcmVwbGljYXRpb25fc2xvdChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywg Ym9vbCBsb2dpY2FsX3Nsb3QpCiAKIAkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CiAJCVJl cGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGZhbHNlKTsKLQkJUmVwbGljYXRpb25T bG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCQlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CiAKICNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmlu ZGV4IDlmYThiZWI2MTAzLi4wNzY3YzI4MDNkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2Vu ZGVyLmMKQEAgLTIzODQsNyArMjM4NCw2IEBAIFBoeXNpY2FsQ29uZmlybVJlY2VpdmVkTG9jYXRp b24oWExvZ1JlY1B0ciBsc24pCiAJaWYgKGNoYW5nZWQpCiAJewogCQlSZXBsaWNhdGlvblNsb3RN YXJrRGlydHkoKTsKLQkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCQlQ aHlzaWNhbFdha2V1cExvZ2ljYWxXYWxTbmQoKTsKIAl9CiAKLS0gCjIuMzkuNSAoQXBwbGUgR2l0 LTE1NCkKCg== --00000000000059cdaa0635df4f7e Content-Type: application/octet-stream; name="v5-0002-Add-TAP-tests-to-check-replication-slot-advance-d.patch" Content-Disposition: attachment; filename="v5-0002-Add-TAP-tests-to-check-replication-slot-advance-d.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb23fefv1 RnJvbSA1ZGQxMzA3MGYyZDdmOWRhN2IzMzVmYTkwNzdkN2ZiOTkyMTA2ZGI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU2F0LCAyNCBNYXkgMjAyNSAxMzoyNjoyOCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjUgMi8zXSBBZGQgVEFQIHRlc3RzIHRvIGNoZWNrIHJlcGxpY2F0aW9uIHNsb3QgYWR2 YW5jZSBkdXJpbmcKIHRoZSBjaGVja3BvaW50CgpUaGUgbmV3IHRlc3RzIHZlcmlmeSB0aGF0IGxv Z2ljYWwgYW5kIHBoeXNpY2FsIHJlcGxpY2F0aW9uIHNsb3RzIGFyZSBzdGlsbAp2YWxpZCBhZnRl ciBhbiBpbW1lZGlhdGUgcmVzdGFydCBvbiBjaGVja3BvaW50IGNvbXBsZXRpb24gd2hlbiB0aGUg c2xvdCB3YXMKYWR2YW5jZWQgZHVyaW5nIHRoZSBjaGVja3BvaW50LgoKVGhpcyBjb21taXQgaW50 cm9kdWNlcyB0d28gbmV3IGluamVjdGlvbiBwb2ludHMgdG8gbWFrZSB0aGVzZSB0ZXN0cyBwb3Nz aWJsZToKCiogY2hlY2twb2ludC1iZWZvcmUtb2xkLXdhbC1yZW1vdmFsIC0gdHJpZ2dlcmVkIGlu IHRoZSBjaGVja3BvaW50ZXIgcHJvY2VzcwogIGp1c3QgYmVmb3JlIG9sZCBXQUwgc2VnbWVudHMg Y2xlYW51cDsKKiBsb2dpY2FsLXJlcGxpY2F0aW9uLXNsb3QtYWR2YW5jZS1zZWdtZW50IC0gdHJp Z2dlcmVkIGluCiAgTG9naWNhbENvbmZpcm1SZWNlaXZlZExvY2F0aW9uKCkgd2hlbiByZXN0YXJ0 X2xzbiB3YXMgY2hhbmdlZCBlbm91Z2ggdG8KICBwb2ludCB0byB0aGUgbmV4dCBXQUwgc2VnbWVu dC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC8xZDEyZDItNjcyMzU5ODAt MzUtMTlhNDA2YTAlNDA2MzQzOTQ5NwpBdXRob3I6IFZpdGFseSBEYXZ5ZG92IDx2LmRhdnlkb3ZA cG9zdGdyZXNwcm8ucnU+CkF1dGhvcjogVG9tYXMgVm9uZHJhIDx0b21hc0B2b25kcmEubWU+ClJl dmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgpCYWNr cGF0Y2gtdGhyb3VnaDogMTcKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMg ICAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsLmMgICAgIHwgIDE4ICsrKwogLi4uL3Rlc3RfcmVwbHNsb3RfcmVxdWlyZWRfbHNuL01ha2Vm aWxlICAgICAgIHwgIDE4ICsrKwogLi4uL3Rlc3RfcmVwbHNsb3RfcmVxdWlyZWRfbHNuL21lc29u LmJ1aWxkICAgIHwgIDE2ICsrCiBzcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCAgICAgICAg ICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDZfbG9naWNhbF9zbG90LnBs ICAgICAgIHwgMTM5ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDdf cGh5c2ljYWxfc2xvdC5wbCAgICAgIHwgMTMzICsrKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNo YW5nZWQsIDMzMCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3JlcGxzbG90X3JlcXVpcmVkX2xzbi9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9yZXBsc2xvdF9yZXF1aXJlZF9sc24vbWVzb24uYnVp bGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWNvdmVyeS90LzA0Nl9sb2dpY2FsX3Ns b3QucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWNvdmVyeS90LzA0N19waHlzaWNh bF9zbG90LnBsCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IGEwZTU4OWU5YzRiLi4w YTdmN2E3MWQ4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNzUwOSw2ICs3NTA5 LDEwIEBAIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCWlmIChQcmlvclJlZG9QdHIgIT0g SW52YWxpZFhMb2dSZWNQdHIpCiAJCVVwZGF0ZUNoZWNrUG9pbnREaXN0YW5jZUVzdGltYXRlKFJl ZG9SZWNQdHIgLSBQcmlvclJlZG9QdHIpOwogCisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMK KwlJTkpFQ1RJT05fUE9JTlQoImNoZWNrcG9pbnQtYmVmb3JlLW9sZC13YWwtcmVtb3ZhbCIsIE5V TEwpOworI2VuZGlmCisKIAkvKgogCSAqIERlbGV0ZSBvbGQgbG9nIGZpbGVzLCB0aG9zZSBubyBs b25nZXIgbmVlZGVkIGZvciBsYXN0IGNoZWNrcG9pbnQgdG8KIAkgKiBwcmV2ZW50IHRoZSBkaXNr IGhvbGRpbmcgdGhlIHhsb2cgZnJvbSBncm93aW5nIGZ1bGwuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbG9naWNhbC5jCmluZGV4IDFkNTZkMGM0ZWYzLi5mMWViNzk4ZjNlOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAgLTI5LDYgKzI5LDcg QEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNp bmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRp bHMuaCIKICNpbmNsdWRlICJmbWdyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC00MSw2 ICs0Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxz L2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAi dXRpbHMvbWVtdXRpbHMuaCIKIApAQCAtMTgyNSw5ICsxODI3LDEzIEBAIExvZ2ljYWxDb25maXJt UmVjZWl2ZWRMb2NhdGlvbihYTG9nUmVjUHRyIGxzbikKIAl7CiAJCWJvb2wJCXVwZGF0ZWRfeG1p biA9IGZhbHNlOwogCQlib29sCQl1cGRhdGVkX3Jlc3RhcnQgPSBmYWxzZTsKKwkJWExvZ1JlY1B0 cglyZXN0YXJ0X2xzbiBwZ19hdHRyaWJ1dGVfdW51c2VkKCk7CiAKIAkJU3BpbkxvY2tBY3F1aXJl KCZNeVJlcGxpY2F0aW9uU2xvdC0+bXV0ZXgpOwogCisJCS8qIHJlbWVtYmVyIHRoZSBvbGQgcmVz dGFydCBsc24gKi8KKwkJcmVzdGFydF9sc24gPSBNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0 YXJ0X2xzbjsKKwogCQkvKgogCQkgKiBQcmV2ZW50IG1vdmluZyB0aGUgY29uZmlybWVkX2ZsdXNo IGJhY2t3YXJkcywgYXMgdGhpcyBjb3VsZCBsZWFkIHRvCiAJCSAqIGRhdGEgZHVwbGljYXRpb24g aXNzdWVzIGNhdXNlZCBieSByZXBsaWNhdGluZyBhbHJlYWR5IHJlcGxpY2F0ZWQKQEAgLTE4ODEs NiArMTg4NywxOCBAQCBMb2dpY2FsQ29uZmlybVJlY2VpdmVkTG9jYXRpb24oWExvZ1JlY1B0ciBs c24pCiAJCS8qIGZpcnN0IHdyaXRlIG5ldyB4bWluIHRvIGRpc2ssIHNvIHdlIGtub3cgd2hhdCdz IHVwIGFmdGVyIGEgY3Jhc2ggKi8KIAkJaWYgKHVwZGF0ZWRfeG1pbiB8fCB1cGRhdGVkX3Jlc3Rh cnQpCiAJCXsKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCQkJWExvZ1NlZ05vCXNlZzEs CisJCQkJCQlzZWcyOworCisJCQlYTEJ5dGVUb1NlZyhyZXN0YXJ0X2xzbiwgc2VnMSwgd2FsX3Nl Z21lbnRfc2l6ZSk7CisJCQlYTEJ5dGVUb1NlZyhNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0 YXJ0X2xzbiwgc2VnMiwgd2FsX3NlZ21lbnRfc2l6ZSk7CisKKwkJCS8qIHRyaWdnZXIgaW5qZWN0 aW9uIHBvaW50LCBidXQgb25seSBpZiBzZWdtZW50IGNoYW5nZXMgKi8KKwkJCWlmIChzZWcxICE9 IHNlZzIpCisJCQkJSU5KRUNUSU9OX1BPSU5UKCJsb2dpY2FsLXJlcGxpY2F0aW9uLXNsb3QtYWR2 YW5jZS1zZWdtZW50IiwgTlVMTCk7CisjZW5kaWYKKwogCQkJUmVwbGljYXRpb25TbG90TWFya0Rp cnR5KCk7CiAJCQlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CiAJCQllbG9nKERFQlVHMSwgInVwZGF0 ZWQgeG1pbjogJXUgcmVzdGFydDogJXUiLCB1cGRhdGVkX3htaW4sIHVwZGF0ZWRfcmVzdGFydCk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmVwbHNsb3RfcmVxdWlyZWRfbHNu L01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JlcGxzbG90X3JlcXVpcmVkX2xzbi9N YWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTVmZjhhZjI1 NWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmVwbHNsb3RfcmVx dWlyZWRfbHNuL01ha2VmaWxlCkBAIC0wLDAgKzEsMTggQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3JlcGxzbG90X3JlcXVpcmVkX2xzbi9NYWtlZmlsZQorCitFWFRSQV9JTlNUQUxMPXNyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cyBcCisJY29udHJpYi90ZXN0X2RlY29kaW5nCisK K2V4cG9ydCBlbmFibGVfaW5qZWN0aW9uX3BvaW50cworVEFQX1RFU1RTID0gMQorCitpZmRlZiBV U0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQoc2hlbGwgJChQR19DT05G SUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGlyID0gc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3JlcGxzbG90X3JlcXVpcmVkX2xzbgordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4v Li4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUg JCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JlcGxzbG90X3JlcXVpcmVkX2xzbi9tZXNvbi5idWls ZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9yZXBsc2xvdF9yZXF1aXJlZF9sc24vbWVzb24uYnVp bGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ0ZDI1NDY2MzJiCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JlcGxzbG90X3JlcXVpcmVk X2xzbi9tZXNvbi5idWlsZApAQCAtMCwwICsxLDE2IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordGVzdHMgKz0geworICAnbmFt ZSc6ICd0ZXN0X3JlcGxzbG90X3JlcXVpcmVkX2xzbicsCisgICdzZCc6IG1lc29uLmN1cnJlbnRf c291cmNlX2RpcigpLAorICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAndGFw JzogeworICAgICdlbnYnOiB7CisgICAgICAgJ2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzJzogZ2V0 X29wdGlvbignaW5qZWN0aW9uX3BvaW50cycpID8gJ3llcycgOiAnbm8nLAorICAgIH0sCisgICAg J3Rlc3RzJzogWworICAgICAgJ3QvMDAxX2xvZ2ljYWxfc2xvdC5wbCcsCisgICAgICAndC8wMDJf cGh5c2ljYWxfc2xvdC5wbCcKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAppbmRl eCBjYjk4Mzc2NmM2Ny4uNWVlNDFjM2NkNGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5 L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC01NCw2 ICs1NCw4IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzA0M19ub19jb250cmVjb3JkX3N3aXRjaC5w bCcsCiAgICAgICAndC8wNDRfaW52YWxpZGF0ZV9pbmFjdGl2ZV9zbG90cy5wbCcsCiAgICAgICAn dC8wNDVfYXJjaGl2ZV9yZXN0YXJ0cG9pbnQucGwnLAorICAgICAgJ3QvMDQ2X2xvZ2ljYWxfc2xv dC5wbCcsCisgICAgICAndC8wNDdfcGh5c2ljYWxfc2xvdC5wbCcKICAgICBdLAogICB9LAogfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDZfbG9naWNhbF9zbG90LnBsIGIvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDZfbG9naWNhbF9zbG90LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5iNDI2NWM0YTZhNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDQ2X2xvZ2ljYWxfc2xvdC5wbApAQCAtMCwwICsxLDEzOSBAQAorIyBD b3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisj CisjIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgY2FzZSB3aGVuIHRoZSBsb2dpY2FsIHNsb3QgaXMg YWR2YW5jZWQgZHVyaW5nCisjIGNoZWNrcG9pbnQuIFRoZSB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBs b2dpY2FsIHNsb3QncyByZXN0YXJ0X2xzbiBzdGlsbCByZWZlcnMKKyMgdG8gYW4gZXhpc3RlZCBX QUwgc2VnbWVudCBhZnRlciBpbW1lZGlhdGUgcmVzdGFydC4KKyMKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOworCit1c2UgVGVzdDo6TW9yZTsKKworaWYg KCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBsYW4gc2tpcF9h bGwgPT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsKK30K KworbXkgKCRub2RlLCAkcmVzdWx0KTsKKworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ21pa2UnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAorCSJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAnaW5qZWN0aW9uX3Bv aW50cyciKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgIndhbF9sZXZl bCA9ICdsb2dpY2FsJyIpOworJG5vZGUtPnN0YXJ0OworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKENSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50cykpOworCisjIENyZWF0ZSBh IHNpbXBsZSB0YWJsZSB0byBnZW5lcmF0ZSBkYXRhIGludG8uCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJcXtjcmVhdGUgdGFibGUgdCAoaWQgc2VyaWFsIHByaW1hcnkga2V5LCBiIHRl eHQpfSk7CisKKyMgQ3JlYXRlIHRoZSB0d28gc2xvdHMgd2UnbGwgbmVlZC4KKyRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwlxe3NlbGVjdCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlv bl9zbG90KCdzbG90X2xvZ2ljYWwnLCAndGVzdF9kZWNvZGluZycpfQorKTsKKyRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwlxe3NlbGVjdCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRp b25fc2xvdCgnc2xvdF9waHlzaWNhbCcsIHRydWUpfSk7CisKKyMgQWR2YW5jZSBib3RoIHNsb3Rz IHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uIGp1c3QgdG8gaGF2ZSBldmVyeXRoaW5nICJ2YWxpZCIu Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtzZWxlY3QgY291bnQoKikgZnJvbSBw Z19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3Nsb3RfbG9naWNhbCcsIG51bGwsIG51bGwpfQor KTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe3NlbGVjdCBwZ19yZXBsaWNhdGlv bl9zbG90X2FkdmFuY2UoJ3Nsb3RfcGh5c2ljYWwnLCBwZ19jdXJyZW50X3dhbF9sc24oKSl9Cisp OworCisjIFJ1biBjaGVja3BvaW50IHRvIGZsdXNoIGN1cnJlbnQgc3RhdGUgdG8gZGlzayBhbmQg c2V0IGEgYmFzZWxpbmUuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7Y2hlY2twb2lu dH0pOworCisjIEdlbmVyYXRlIHNvbWUgdHJhbnNhY3Rpb25zIHRvIGdldCBSVU5OSU5HX1hBQ1RT LgorbXkgJHhhY3RzID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKyR4YWN0 cy0+cXVlcnlfdW50aWwoCisJcXIvcnVuX3hhY3RzLywKKwlxKFxlY2hvIHJ1bl94YWN0cworU0VM RUNUIDEgXHdhdGNoIDAuMQorXHEKKykpOworCisjIEluc2VydCAyTSByb3dzOyB0aGF0J3MgYWJv dXQgMjYwTUIgKH4yMCBzZWdtZW50cykgd29ydGggb2YgV0FMLgorJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7aW5zZXJ0IGludG8gdCAoYikgc2VsZWN0IG1kNShpOjp0ZXh0KSBmcm9t IGdlbmVyYXRlX3NlcmllcygxLDEwMDAwMDApIHMoaSl9CispOworCisjIFJ1biBhbm90aGVyIGNo ZWNrcG9pbnQgdG8gc2V0IGEgbmV3IHJlc3RvcmUgTFNOLgorJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxe2NoZWNrcG9pbnR9KTsKKworIyBBbm90aGVyIDJNIHJvd3M7IHRoYXQncyBhYm91 dCAyNjBNQiAofjIwIHNlZ21lbnRzKSB3b3J0aCBvZiBXQUwuCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJcXtpbnNlcnQgaW50byB0IChiKSBzZWxlY3QgbWQ1KGk6OnRleHQpIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDEsMTAwMDAwMCkgcyhpKX0KKyk7CisKKyMgUnVuIGFub3RoZXIgY2hl Y2twb2ludCwgdGhpcyB0aW1lIGluIHRoZSBiYWNrZ3JvdW5kLCBhbmQgbWFrZSBpdCB3YWl0Cisj IG9uIHRoZSBpbmplY3Rpb24gcG9pbnQpIHNvIHRoYXQgdGhlIGNoZWNrcG9pbnQgc3RvcHMgcmln aHQgYmVmb3JlCisjIHJlbW92aW5nIG9sZCBXQUwgc2VnbWVudHMuCitub3RlKCdzdGFydGluZyBj aGVja3BvaW50XG4nKTsKKworbXkgJGNoZWNrcG9pbnQgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycpOworJGNoZWNrcG9pbnQtPnF1ZXJ5X3NhZmUoCisJcShzZWxlY3QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrcG9pbnQtYmVmb3JlLW9sZC13YWwtcmVtb3ZhbCcsJ3dh aXQnKSkKKyk7CiskY2hlY2twb2ludC0+cXVlcnlfdW50aWwoCisJcXIvc3RhcnRpbmdfY2hlY2tw b2ludC8sCisJcShcZWNobyBzdGFydGluZ19jaGVja3BvaW50CitjaGVja3BvaW50OworXHEKKykp OworCisjIFdhaXQgdW50aWwgdGhlIGNoZWNrcG9pbnQgc3RvcHMgcmlnaHQgYmVmb3JlIHJlbW92 aW5nIFdBTCBzZWdtZW50cy4KK25vdGUoJ3dhaXRpbmcgZm9yIGluamVjdGlvbl9wb2ludFxuJyk7 Ciskbm9kZS0+d2FpdF9mb3JfZXZlbnQoJ2NoZWNrcG9pbnRlcicsICdjaGVja3BvaW50LWJlZm9y ZS1vbGQtd2FsLXJlbW92YWwnKTsKK25vdGUoJ2luamVjdGlvbl9wb2ludCBpcyByZWFjaGVkJyk7 CisKKyMgVHJ5IHRvIGFkdmFuY2UgdGhlIGxvZ2ljYWwgc2xvdCwgYnV0IG1ha2UgaXQgc3RvcCB3 aGVuIGl0IG1vdmVzIHRvIHRoZSBuZXh0CisjIFdBTCBzZWdtZW50ICh0aGlzIGhhcyB0byBoYXBw ZW4gaW4gdGhlIGJhY2tncm91bmQsIHRvbykuCitteSAkbG9naWNhbCA9ICRub2RlLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJyk7CiskbG9naWNhbC0+cXVlcnlfc2FmZSgKKwlxe3NlbGVjdCBp bmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbG9naWNhbC1yZXBsaWNhdGlvbi1zbG90LWFkdmFuY2Ut c2VnbWVudCcsJ3dhaXQnKTt9CispOworJGxvZ2ljYWwtPnF1ZXJ5X3VudGlsKAorCXFyL2dldF9j aGFuZ2VzLywKKwlxKAorXGVjaG8gZ2V0X2NoYW5nZXMKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHBn X2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnc2xvdF9sb2dpY2FsJywgbnVsbCwgbnVsbCkgXHdh dGNoIDEKK1xxCispKTsKKworIyBXYWl0IHVudGlsIHRoZSBzbG90J3MgcmVzdGFydF9sc24gcG9p bnRzIHRvIHRoZSBuZXh0IFdBTCBzZWdtZW50Lgorbm90ZSgnd2FpdGluZyBmb3IgaW5qZWN0aW9u X3BvaW50XG4nKTsKKyRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLAorCSds b2dpY2FsLXJlcGxpY2F0aW9uLXNsb3QtYWR2YW5jZS1zZWdtZW50Jyk7Citub3RlKCdpbmplY3Rp b25fcG9pbnQgaXMgcmVhY2hlZCcpOworCisjIE9LLCB3ZSdyZSBpbiB0aGUgcmlnaHQgc2l0dWF0 aW9uOiB0aW1lIHRvIGFkdmFuY2UgdGhlIHBoeXNpY2FsIHNsb3QsIHdoaWNoCisjIHJlY2FsY3Vs YXRlcyB0aGUgcmVxdWlyZWQgTFNOLCBhbmQgdGhlbiB1bmJsb2NrIHRoZSBjaGVja3BvaW50LCB3 aGljaAorIyByZW1vdmVzIHRoZSBXQUwgc3RpbGwgbmVlZGVkIGJ5IHRoZSBsb2dpY2FsIHNsb3Qu Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtzZWxlY3QgcGdfcmVwbGljYXRpb25f c2xvdF9hZHZhbmNlKCdzbG90X3BoeXNpY2FsJywgcGdfY3VycmVudF93YWxfbHNuKCkpfQorKTsK KworIyBDb250aW51ZSB0aGUgY2hlY2twb2ludC4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxe3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2hlY2twb2ludC1iZWZvcmUt b2xkLXdhbC1yZW1vdmFsJyl9KTsKKworIyBBYnJ1cHRseSBzdG9wIHRoZSBzZXJ2ZXIgKDEgc2Vj b25kIHNob3VsZCBiZSBlbm91Z2ggZm9yIHRoZSBjaGVja3BvaW50CisjIHRvIGZpbmlzaDsgaXQg d291bGQgYmUgYmV0dGVyKS4KKyRub2RlLT5zdG9wKCdpbW1lZGlhdGUnKTsKKworJG5vZGUtPnN0 YXJ0OworCitldmFsIHsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7c2VsZWN0 IGNvdW50KCopIGZyb20gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdzbG90X2xvZ2ljYWwn LCBudWxsLCBudWxsKTt9CisJKTsKK307CitpcygkQCwgJycsICJMb2dpY2FsIHNsb3Qgc3RpbGwg dmFsaWQiKTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVy eS90LzA0N19waHlzaWNhbF9zbG90LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDdfcGh5c2lj YWxfc2xvdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDU0ZTU2 YjliZDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0N19waHlzaWNh bF9zbG90LnBsCkBAIC0wLDAgKzEsMTMzIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyMKKyMgVGhpcyB0ZXN0IHZlcmlmaWVzIHRo ZSBjYXNlIHdoZW4gdGhlIHBoeXNpY2FsIHNsb3QgaXMgYWR2YW5jZWQgZHVyaW5nCisjIGNoZWNr cG9pbnQuIFRoZSB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBwaHlzaWNhbCBzbG90J3MgcmVzdGFydF9s c24gc3RpbGwgcmVmZXJzCisjIHRvIGFuIGV4aXN0ZWQgV0FMIHNlZ21lbnQgYWZ0ZXIgaW1tZWRp YXRlIHJlc3RhcnQuCisjCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwn OworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczsKKwordXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJsZV9pbmplY3Rpb25f cG9pbnRzfSBuZSAneWVzJykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmplY3Rpb24gcG9pbnRz IG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisKK215ICgkbm9kZSwgJHJlc3VsdCk7 CisKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtaWtlJyk7Ciskbm9k ZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkic2hhcmVk X3ByZWxvYWRfbGlicmFyaWVzID0gJ2luamVjdGlvbl9wb2ludHMnIik7Ciskbm9kZS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJ3YWxfbGV2ZWwgPSAncmVwbGljYSciKTsKKyRub2Rl LT5zdGFydDsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9O IGluamVjdGlvbl9wb2ludHMpKTsKKworIyBDcmVhdGUgYSBzaW1wbGUgdGFibGUgdG8gZ2VuZXJh dGUgZGF0YSBpbnRvLgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Y3JlYXRlIHRh YmxlIHQgKGlkIHNlcmlhbCBwcmltYXJ5IGtleSwgYiB0ZXh0KX0pOworCisjIENyZWF0ZSBhIHBo eXNpY2FsIHJlcGxpY2F0aW9uIHNsb3QuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ cXtzZWxlY3QgcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3Nsb3RfcGh5c2lj YWwnLCB0cnVlKX0pOworCisjIEFkdmFuY2Ugc2xvdCB0byB0aGUgY3VycmVudCBwb3NpdGlvbiwg anVzdCB0byBoYXZlIGV2ZXJ5dGhpbmcgInZhbGlkIi4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwlxe3NlbGVjdCBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Nsb3RfcGh5c2lj YWwnLCBwZ19jdXJyZW50X3dhbF9sc24oKSl9CispOworCisjIFJ1biBjaGVja3BvaW50IHRvIGZs dXNoIGN1cnJlbnQgc3RhdGUgdG8gZGlzayBhbmQgc2V0IGEgYmFzZWxpbmUuCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHF7Y2hlY2twb2ludH0pOworCisjIEluc2VydCAyTSByb3dzOyB0 aGF0J3MgYWJvdXQgMjYwTUIgKH4yMCBzZWdtZW50cykgd29ydGggb2YgV0FMLgorJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7aW5zZXJ0IGludG8gdCAoYikgc2VsZWN0IG1kNShpOjp0 ZXh0KSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwMCkgcyhpKX0KKyk7CisKKyMgQWR2YW5j ZSBzbG90IHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBqdXN0IHRvIGhhdmUgZXZlcnl0aGluZyAi dmFsaWQiLgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7c2VsZWN0IHBnX3JlcGxp Y2F0aW9uX3Nsb3RfYWR2YW5jZSgnc2xvdF9waHlzaWNhbCcsIHBnX2N1cnJlbnRfd2FsX2xzbigp KX0KKyk7CisKKyMgUnVuIGFub3RoZXIgY2hlY2twb2ludCB0byBzZXQgYSBuZXcgcmVzdG9yZSBM U04uCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7Y2hlY2twb2ludH0pOworCisjIEFu b3RoZXIgMk0gcm93czsgdGhhdCdzIGFib3V0IDI2ME1CICh+MjAgc2VnbWVudHMpIHdvcnRoIG9m IFdBTC4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe2luc2VydCBpbnRvIHQgKGIp IHNlbGVjdCBtZDUoaTo6dGV4dCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDAwKSBzKGkp fQorKTsKKworbXkgJHJlc3RhcnRfbHNuX2luaXQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJcXtzZWxlY3QgcmVzdGFydF9sc24gZnJvbSBwZ19yZXBsaWNhdGlvbl9zbG90cyB3aGVy ZSBzbG90X25hbWUgPSAnc2xvdF9waHlzaWNhbCd9CispOworY2hvbXAoJHJlc3RhcnRfbHNuX2lu aXQpOworbm90ZSgicmVzdGFydCBsc24gYmVmb3JlIGNoZWNrcG9pbnQ6ICRyZXN0YXJ0X2xzbl9p bml0Iik7CisKKyMgUnVuIGFub3RoZXIgY2hlY2twb2ludCwgdGhpcyB0aW1lIGluIHRoZSBiYWNr Z3JvdW5kLCBhbmQgbWFrZSBpdCB3YWl0CisjIG9uIHRoZSBpbmplY3Rpb24gcG9pbnQpIHNvIHRo YXQgdGhlIGNoZWNrcG9pbnQgc3RvcHMgcmlnaHQgYmVmb3JlCisjIHJlbW92aW5nIG9sZCBXQUwg c2VnbWVudHMuCitub3RlKCdzdGFydGluZyBjaGVja3BvaW50Jyk7CisKK215ICRjaGVja3BvaW50 ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKyRjaGVja3BvaW50LT5xdWVy eV9zYWZlKAorCXF7c2VsZWN0IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVja3BvaW50LWJl Zm9yZS1vbGQtd2FsLXJlbW92YWwnLCd3YWl0Jyl9CispOworJGNoZWNrcG9pbnQtPnF1ZXJ5X3Vu dGlsKAorCXFyL3N0YXJ0aW5nX2NoZWNrcG9pbnQvLAorCXEoXGVjaG8gc3RhcnRpbmdfY2hlY2tw b2ludAorY2hlY2twb2ludDsKK1xxCispKTsKKworIyBXYWl0IHVudGlsIHRoZSBjaGVja3BvaW50 IHN0b3BzIHJpZ2h0IGJlZm9yZSByZW1vdmluZyBXQUwgc2VnbWVudHMuCitub3RlKCd3YWl0aW5n IGZvciBpbmplY3Rpb25fcG9pbnQnKTsKKyRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2hlY2twb2lu dGVyJywgJ2NoZWNrcG9pbnQtYmVmb3JlLW9sZC13YWwtcmVtb3ZhbCcpOworbm90ZSgnaW5qZWN0 aW9uX3BvaW50IGlzIHJlYWNoZWQnKTsKKworIyBPSywgd2UncmUgaW4gdGhlIHJpZ2h0IHNpdHVh dGlvbjogdGltZSB0byBhZHZhbmNlIHRoZSBwaHlzaWNhbCBzbG90LCB3aGljaAorIyByZWNhbGN1 bGF0ZXMgdGhlIHJlcXVpcmVkIExTTiBhbmQgdGhlbiB1bmJsb2NrIHRoZSBjaGVja3BvaW50LCB3 aGljaAorIyByZW1vdmVzIHRoZSBXQUwgc3RpbGwgbmVlZGVkIGJ5IHRoZSBwaHlzaWNhbCBzbG90 LgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7c2VsZWN0IHBnX3JlcGxpY2F0aW9u X3Nsb3RfYWR2YW5jZSgnc2xvdF9waHlzaWNhbCcsIHBnX2N1cnJlbnRfd2FsX2xzbigpKX0KKyk7 CisKKyMgQ29udGludWUgdGhlIGNoZWNrcG9pbnQuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJcXtzZWxlY3QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2NoZWNrcG9pbnQtYmVmb3Jl LW9sZC13YWwtcmVtb3ZhbCcpfSk7CisKK215ICRyZXN0YXJ0X2xzbl9vbGQgPSAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtzZWxlY3QgcmVzdGFydF9sc24gZnJvbSBwZ19yZXBsaWNh dGlvbl9zbG90cyB3aGVyZSBzbG90X25hbWUgPSAnc2xvdF9waHlzaWNhbCd9CispOworY2hvbXAo JHJlc3RhcnRfbHNuX29sZCk7Citub3RlKCJyZXN0YXJ0IGxzbiBiZWZvcmUgc3RvcDogJHJlc3Rh cnRfbHNuX29sZCIpOworCisjIEFicnVwdGx5IHN0b3AgdGhlIHNlcnZlciAoMSBzZWNvbmQgc2hv dWxkIGJlIGVub3VnaCBmb3IgdGhlIGNoZWNrcG9pbnQKKyMgdG8gZmluaXNoOyBpdCB3b3VsZCBi ZSBiZXR0ZXIpLgorJG5vZGUtPnN0b3AoJ2ltbWVkaWF0ZScpOworCiskbm9kZS0+c3RhcnQ7CisK KyMgR2V0IHRoZSByZXN0YXJ0X2xzbiBvZiB0aGUgc2xvdCByaWdodCBhZnRlciByZXN0YXJ0aW5n LgorbXkgJHJlc3RhcnRfbHNuID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7c2Vs ZWN0IHJlc3RhcnRfbHNuIGZyb20gcGdfcmVwbGljYXRpb25fc2xvdHMgd2hlcmUgc2xvdF9uYW1l ID0gJ3Nsb3RfcGh5c2ljYWwnfQorKTsKK2Nob21wKCRyZXN0YXJ0X2xzbik7Citub3RlKCJyZXN0 YXJ0IGxzbjogJHJlc3RhcnRfbHNuIik7CisKKyMgR2V0IHRoZSBXQUwgc2VnbWVudCBuYW1lIGZv ciB0aGUgc2xvdCdzIHJlc3RhcnRfbHNuLgorbXkgJHJlc3RhcnRfbHNuX3NlZ21lbnQgPSAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ193YWxmaWxlX25hbWUoJyRyZXN0 YXJ0X2xzbic6OnBnX2xzbikiKTsKK2Nob21wKCRyZXN0YXJ0X2xzbl9zZWdtZW50KTsKKworIyBD aGVjayBpZiB0aGUgcmVxdWlyZWQgd2FsIHNlZ21lbnQgZXhpc3RzLgorbm90ZSgicmVxdWlyZWQg Ynkgc2xvdCBzZWdtZW50IG5hbWU6ICRyZXN0YXJ0X2xzbl9zZWdtZW50Iik7CitteSAkZGF0YWRp ciA9ICRub2RlLT5kYXRhX2RpcjsKK29rKCAtZiAiJGRhdGFkaXIvcGdfd2FsLyRyZXN0YXJ0X2xz bl9zZWdtZW50IiwKKwkiV0FMIHNlZ21lbnQgJHJlc3RhcnRfbHNuX3NlZ21lbnQgZm9yIHBoeXNp Y2FsIHNsb3QncyByZXN0YXJ0X2xzbiAkcmVzdGFydF9sc24gZXhpc3RzIgorKTsKKworZG9uZV90 ZXN0aW5nKCk7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --00000000000059cdaa0635df4f7e Content-Type: application/octet-stream; name="v5-0001-Keep-WAL-segments-by-the-flushed-value-of-the-slo.patch" Content-Disposition: attachment; filename="v5-0001-Keep-WAL-segments-by-the-flushed-value-of-the-slo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mb23fefr0 RnJvbSBiM2Y4NTM1ODllNTVmNzg4Nzg5MjM0MzQ4MTBiMGM2ZmI4MmMyMzBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU2F0LCAyNCBNYXkgMjAyNSAxMzowOToxNiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjUgMS8zXSBLZWVwIFdBTCBzZWdtZW50cyBieSB0aGUgZmx1c2hlZCB2YWx1ZSBvZiB0 aGUgc2xvdCdzCiByZXN0YXJ0IExTTgoKVGhlIHBhdGNoIGZpeGVzIHRoZSBpc3N1ZSB3aXRoIHRo ZSB1bmV4cGVjdGVkIHJlbW92YWwgb2Ygb2xkIFdBTCBzZWdtZW50cwphZnRlciBjaGVja3BvaW50 LCBmb2xsb3dlZCBieSBhbiBpbW1lZGlhdGUgcmVzdGFydC4gVGhlIGlzc3VlIG9jY3VycyB3aGVu CmEgc2xvdCBpcyBhZHZhbmNlZCBhZnRlciB0aGUgc3RhcnQgb2YgdGhlIGNoZWNrcG9pbnQgYW5k IGJlZm9yZSBvbGQgV0FMCnNlZ21lbnRzIGFyZSByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIGNo ZWNrcG9pbnQuCgpUaGUgaWRlYSBvZiB0aGUgcGF0Y2ggaXMgdG8gZ2V0IHRoZSBtaW5pbWFsIHJl c3RhcnRfbHNuIGF0IHRoZSBiZWdpbm5pbmcKb2YgY2hlY2twb2ludCAob3IgcmVzdGFydCBwb2lu dCkgY3JlYXRpb24gYW5kIHVzZSB0aGlzIHZhbHVlIHdoZW4gY2FsY3VsYXRpbmcKdGhlIG9sZGVz dCBMU04gZm9yIFdBTCBzZWdtZW50cyByZW1vdmFsIGF0IHRoZSBlbmQgb2YgY2hlY2twb2ludC4g VGhpcyBpZGVhCndhcyBwcm9wb3NlZCBieSBUb21hcyBWb25kcmEgaW4gdGhlIGRpc2N1c3Npb24u CgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2ZsYXQvMWQxMmQyLTY3MjM1OTgwLTM1 LTE5YTQwNmEwJTQwNjM0Mzk0OTcKQXV0aG9yOiBWaXRhbHkgRGF2eWRvdiA8di5kYXZ5ZG92QHBv c3RncmVzcHJvLnJ1PgpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhIDx0b21hc0B2b25kcmEubWU+ ClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFla29yb3Rrb3ZAZ21haWwuY29tPgpC YWNrcGF0Y2gtdGhyb3VnaDogMTMKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMgfCA1NSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg NDcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMKaW5kZXggMTkxNDg1OWIyZWUuLmEwZTU4OWU5YzRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jCkBAIC02NzcsNyArNjc3LDggQEAgc3RhdGljIFhMb2dSZWNQdHIgQ3JlYXRlT3Zlcndy aXRlQ29udHJlY29yZFJlY29yZChYTG9nUmVjUHRyIGFib3J0ZWRfbHNuLAogCQkJCQkJCQkJCQkJ ICBYTG9nUmVjUHRyIHBhZ2VQdHIsCiAJCQkJCQkJCQkJCQkgIFRpbWVMaW5lSUQgbmV3VExJKTsK IHN0YXRpYyB2b2lkIENoZWNrUG9pbnRHdXRzKFhMb2dSZWNQdHIgY2hlY2tQb2ludFJlZG8sIGlu dCBmbGFncyk7Ci1zdGF0aWMgdm9pZCBLZWVwTG9nU2VnKFhMb2dSZWNQdHIgcmVjcHRyLCBYTG9n U2VnTm8gKmxvZ1NlZ05vKTsKK3N0YXRpYyB2b2lkIEtlZXBMb2dTZWcoWExvZ1JlY1B0ciByZWNw dHIsIFhMb2dSZWNQdHIgc2xvdHNNaW5MU04sCisJCQkJCSAgIFhMb2dTZWdObyAqbG9nU2VnTm8p Owogc3RhdGljIFhMb2dSZWNQdHIgWExvZ0dldFJlcGxpY2F0aW9uU2xvdE1pbmltdW1MU04odm9p ZCk7CiAKIHN0YXRpYyB2b2lkIEFkdmFuY2VYTEluc2VydEJ1ZmZlcihYTG9nUmVjUHRyIHVwdG8s IFRpbWVMaW5lSUQgdGxpLApAQCAtNzA4Nyw2ICs3MDg4LDcgQEAgQ3JlYXRlQ2hlY2tQb2ludChp bnQgZmxhZ3MpCiAJVmlydHVhbFRyYW5zYWN0aW9uSWQgKnZ4aWRzOwogCWludAkJCW52eGlkczsK IAlpbnQJCQlvbGRYTG9nQWxsb3dlZCA9IDA7CisJWExvZ1JlY1B0cglzbG90c01pblJlcUxTTjsK IAogCS8qCiAJICogQW4gZW5kLW9mLXJlY292ZXJ5IGNoZWNrcG9pbnQgaXMgcmVhbGx5IGEgc2h1 dGRvd24gY2hlY2twb2ludCwganVzdApAQCAtNzMxNSw2ICs3MzE3LDE1IEBAIENyZWF0ZUNoZWNr UG9pbnQoaW50IGZsYWdzKQogCSAqLwogCUVORF9DUklUX1NFQ1RJT04oKTsKIAorCS8qCisJICog R2V0IHRoZSBjdXJyZW50IG1pbmltdW0gTFNOIHRvIGJlIHVzZWQgbGF0ZXIgaW4gdGhlIFdBTCBz ZWdtZW50CisJICogY2xlYW51cC4gIFdlIG1heSBjbGVhbiB1cCBvbmx5IFdBTCBzZWdtZW50cywg d2hpY2ggYXJlIG5vdCBuZWVkZWQKKwkgKiBhY2NvcmRpbmcgdG8gc3luY2hyb25pemVkIExTTnMg b2YgcmVwbGljYXRpb24gc2xvdHMuICBUaGUgc2xvdCdzIExTTgorCSAqIG1pZ2h0IGJlIGFkdmFu Y2VkIGNvbmN1cnJlbnRseSwgc28gd2UgY2FsbCB0aGlzIGJlZm9yZQorCSAqIENoZWNrUG9pbnRS ZXBsaWNhdGlvblNsb3RzKCkgc3luY2hyb25pemVzIHJlcGxpY2F0aW9uIHNsb3RzLgorCSAqLwor CXNsb3RzTWluUmVxTFNOID0gWExvZ0dldFJlcGxpY2F0aW9uU2xvdE1pbmltdW1MU04oKTsKKwog CS8qCiAJICogSW4gc29tZSBjYXNlcyB0aGVyZSBhcmUgZ3JvdXBzIG9mIGFjdGlvbnMgdGhhdCBt dXN0IGFsbCBvY2N1ciBvbiBvbmUKIAkgKiBzaWRlIG9yIHRoZSBvdGhlciBvZiBhIGNoZWNrcG9p bnQgcmVjb3JkLiBCZWZvcmUgZmx1c2hpbmcgdGhlCkBAIC03NTAzLDE3ICs3NTE0LDI1IEBAIENy ZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCSAqIHByZXZlbnQgdGhlIGRpc2sgaG9sZGluZyB0 aGUgeGxvZyBmcm9tIGdyb3dpbmcgZnVsbC4KIAkgKi8KIAlYTEJ5dGVUb1NlZyhSZWRvUmVjUHRy LCBfbG9nU2VnTm8sIHdhbF9zZWdtZW50X3NpemUpOwotCUtlZXBMb2dTZWcocmVjcHRyLCAmX2xv Z1NlZ05vKTsKKwlLZWVwTG9nU2VnKHJlY3B0ciwgc2xvdHNNaW5SZXFMU04sICZfbG9nU2VnTm8p OwogCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFJTX0lOVkFMX1dBTF9S RU1PVkVEIHwgUlNfSU5WQUxfSURMRV9USU1FT1VULAogCQkJCQkJCQkJCSAgIF9sb2dTZWdObywg SW52YWxpZE9pZCwKIAkJCQkJCQkJCQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCkpCiAJeworCQkv KgorCQkgKiBSZWNhbGN1bGF0ZSB0aGUgY3VycmVudCBtaW5pbXVtIExTTiB0byBiZSB1c2VkIGlu IHRoZSBXQUwgc2VnbWVudAorCQkgKiBjbGVhbnVwLiAgVGhlbiwgd2UgbXVzdCBzeW5jaHJvbml6 ZSB0aGUgcmVwbGljYXRpb24gc2xvdHMgYWdhaW4gaW4KKwkJICogb3JkZXIgdG8gbWFrZSB0aGlz IExTTiBzYWZlIHRvIHVzZS4KKwkJICovCisJCXNsb3RzTWluUmVxTFNOID0gWExvZ0dldFJlcGxp Y2F0aW9uU2xvdE1pbmltdW1MU04oKTsKKwkJQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHMoc2h1 dGRvd24pOworCiAJCS8qCiAJCSAqIFNvbWUgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkOyBy ZWNhbGN1bGF0ZSB0aGUgb2xkLXNlZ21lbnQKIAkJICogaG9yaXpvbiwgc3RhcnRpbmcgYWdhaW4g ZnJvbSBSZWRvUmVjUHRyLgogCQkgKi8KIAkJWExCeXRlVG9TZWcoUmVkb1JlY1B0ciwgX2xvZ1Nl Z05vLCB3YWxfc2VnbWVudF9zaXplKTsKLQkJS2VlcExvZ1NlZyhyZWNwdHIsICZfbG9nU2VnTm8p OworCQlLZWVwTG9nU2VnKHJlY3B0ciwgc2xvdHNNaW5SZXFMU04sICZfbG9nU2VnTm8pOwogCX0K IAlfbG9nU2VnTm8tLTsKIAlSZW1vdmVPbGRYbG9nRmlsZXMoX2xvZ1NlZ05vLCBSZWRvUmVjUHRy LCByZWNwdHIsCkBAIC03Nzg4LDYgKzc4MDcsNyBAQCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50IGZs YWdzKQogCVhMb2dSZWNQdHIJZW5kcHRyOwogCVhMb2dTZWdObwlfbG9nU2VnTm87CiAJVGltZXN0 YW1wVHogeHRpbWU7CisJWExvZ1JlY1B0cglzbG90c01pblJlcUxTTjsKIAogCS8qIENvbmN1cnJl bnQgY2hlY2twb2ludC9yZXN0YXJ0cG9pbnQgY2Fubm90IGhhcHBlbiAqLwogCUFzc2VydCghSXNV bmRlclBvc3RtYXN0ZXIgfHwgTXlCYWNrZW5kVHlwZSA9PSBCX0NIRUNLUE9JTlRFUik7CkBAIC03 ODcwLDYgKzc4OTAsMTUgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlNZW1TZXQo JkNoZWNrcG9pbnRTdGF0cywgMCwgc2l6ZW9mKENoZWNrcG9pbnRTdGF0cykpOwogCUNoZWNrcG9p bnRTdGF0cy5ja3B0X3N0YXJ0X3QgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKKwkvKgorCSAq IEdldCB0aGUgY3VycmVudCBtaW5pbXVtIExTTiB0byBiZSB1c2VkIGxhdGVyIGluIHRoZSBXQUwg c2VnbWVudAorCSAqIGNsZWFudXAuICBXZSBtYXkgY2xlYW4gdXAgb25seSBXQUwgc2VnbWVudHMs IHdoaWNoIGFyZSBub3QgbmVlZGVkCisJICogYWNjb3JkaW5nIHRvIHN5bmNocm9uaXplZCBMU05z IG9mIHJlcGxpY2F0aW9uIHNsb3RzLiAgVGhlIHNsb3QncyBMU04KKwkgKiBtaWdodCBiZSBhZHZh bmNlZCBjb25jdXJyZW50bHksIHNvIHdlIGNhbGwgdGhpcyBiZWZvcmUKKwkgKiBDaGVja1BvaW50 UmVwbGljYXRpb25TbG90cygpIHN5bmNocm9uaXplcyByZXBsaWNhdGlvbiBzbG90cy4KKwkgKi8K KwlzbG90c01pblJlcUxTTiA9IFhMb2dHZXRSZXBsaWNhdGlvblNsb3RNaW5pbXVtTFNOKCk7CisK IAlpZiAobG9nX2NoZWNrcG9pbnRzKQogCQlMb2dDaGVja3BvaW50U3RhcnQoZmxhZ3MsIHRydWUp OwogCkBAIC03OTU4LDE3ICs3OTg3LDI1IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3Mp CiAJcmVjZWl2ZVB0ciA9IEdldFdhbFJjdkZsdXNoUmVjUHRyKE5VTEwsIE5VTEwpOwogCXJlcGxh eVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSk7CiAJZW5kcHRyID0gKHJlY2Vp dmVQdHIgPCByZXBsYXlQdHIpID8gcmVwbGF5UHRyIDogcmVjZWl2ZVB0cjsKLQlLZWVwTG9nU2Vn KGVuZHB0ciwgJl9sb2dTZWdObyk7CisJS2VlcExvZ1NlZyhlbmRwdHIsIHNsb3RzTWluUmVxTFNO LCAmX2xvZ1NlZ05vKTsKIAlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhS U19JTlZBTF9XQUxfUkVNT1ZFRCB8IFJTX0lOVkFMX0lETEVfVElNRU9VVCwKIAkJCQkJCQkJCQkg ICBfbG9nU2VnTm8sIEludmFsaWRPaWQsCiAJCQkJCQkJCQkJICAgSW52YWxpZFRyYW5zYWN0aW9u SWQpKQogCXsKKwkJLyoKKwkJICogUmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgbWluaW11bSBMU04g dG8gYmUgdXNlZCBpbiB0aGUgV0FMIHNlZ21lbnQKKwkJICogY2xlYW51cC4gIFRoZW4sIHdlIG11 c3Qgc3luY2hyb25pemUgdGhlIHJlcGxpY2F0aW9uIHNsb3RzIGFnYWluIGluCisJCSAqIG9yZGVy IHRvIG1ha2UgdGhpcyBMU04gc2FmZSB0byB1c2UuCisJCSAqLworCQlzbG90c01pblJlcUxTTiA9 IFhMb2dHZXRSZXBsaWNhdGlvblNsb3RNaW5pbXVtTFNOKCk7CisJCUNoZWNrUG9pbnRSZXBsaWNh dGlvblNsb3RzKGZsYWdzICYgQ0hFQ0tQT0lOVF9JU19TSFVURE9XTik7CisKIAkJLyoKIAkJICog U29tZSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2Vn bWVudAogCQkgKiBob3Jpem9uLCBzdGFydGluZyBhZ2FpbiBmcm9tIFJlZG9SZWNQdHIuCiAJCSAq LwogCQlYTEJ5dGVUb1NlZyhSZWRvUmVjUHRyLCBfbG9nU2VnTm8sIHdhbF9zZWdtZW50X3NpemUp OwotCQlLZWVwTG9nU2VnKGVuZHB0ciwgJl9sb2dTZWdObyk7CisJCUtlZXBMb2dTZWcoZW5kcHRy LCBzbG90c01pblJlcUxTTiwgJl9sb2dTZWdObyk7CiAJfQogCV9sb2dTZWdOby0tOwogCkBAIC04 MDYzLDYgKzgxMDAsNyBAQCBHZXRXQUxBdmFpbGFiaWxpdHkoWExvZ1JlY1B0ciB0YXJnZXRMU04p CiAJWExvZ1NlZ05vCW9sZGVzdFNlZ01heFdhbFNpemU7CS8qIG9sZGVzdCBzZWdpZCBrZXB0IGJ5 IG1heF93YWxfc2l6ZSAqLwogCVhMb2dTZWdObwlvbGRlc3RTbG90U2VnOwkvKiBvbGRlc3Qgc2Vn aWQga2VwdCBieSBzbG90ICovCiAJdWludDY0CQlrZWVwU2VnczsKKwlYTG9nUmVjUHRyCXNsb3Rz TWluUmVxTFNOOwogCiAJLyoKIAkgKiBzbG90IGRvZXMgbm90IHJlc2VydmUgV0FMLiBFaXRoZXIg ZGVhY3RpdmF0ZWQsIG9yIGhhcyBuZXZlciBiZWVuIGFjdGl2ZQpAQCAtODA3Niw4ICs4MTE0LDkg QEAgR2V0V0FMQXZhaWxhYmlsaXR5KFhMb2dSZWNQdHIgdGFyZ2V0TFNOKQogCSAqIG9sZGVzdFNs b3RTZWcgdG8gdGhlIGN1cnJlbnQgc2VnbWVudC4KIAkgKi8KIAljdXJycG9zID0gR2V0WExvZ1dy aXRlUmVjUHRyKCk7CisJc2xvdHNNaW5SZXFMU04gPSBYTG9nR2V0UmVwbGljYXRpb25TbG90TWlu aW11bUxTTigpOwogCVhMQnl0ZVRvU2VnKGN1cnJwb3MsIG9sZGVzdFNsb3RTZWcsIHdhbF9zZWdt ZW50X3NpemUpOwotCUtlZXBMb2dTZWcoY3VycnBvcywgJm9sZGVzdFNsb3RTZWcpOworCUtlZXBM b2dTZWcoY3VycnBvcywgc2xvdHNNaW5SZXFMU04sICZvbGRlc3RTbG90U2VnKTsKIAogCS8qCiAJ ICogRmluZCB0aGUgb2xkZXN0IGV4dGFudCBzZWdtZW50IGZpbGUuIFdlIGdldCAxIHVudGlsIGNo ZWNrcG9pbnQgcmVtb3ZlcwpAQCAtODEzOCw3ICs4MTc3LDcgQEAgR2V0V0FMQXZhaWxhYmlsaXR5 KFhMb2dSZWNQdHIgdGFyZ2V0TFNOKQogICogaW52YWxpZGF0aW9uIGlzIG9wdGlvbmFsbHkgZG9u ZSBoZXJlLCBpbnN0ZWFkLgogICovCiBzdGF0aWMgdm9pZAotS2VlcExvZ1NlZyhYTG9nUmVjUHRy IHJlY3B0ciwgWExvZ1NlZ05vICpsb2dTZWdObykKK0tlZXBMb2dTZWcoWExvZ1JlY1B0ciByZWNw dHIsIFhMb2dSZWNQdHIgc2xvdHNNaW5SZXFMU04sIFhMb2dTZWdObyAqbG9nU2VnTm8pCiB7CiAJ WExvZ1NlZ05vCWN1cnJTZWdObzsKIAlYTG9nU2VnTm8Jc2Vnbm87CkBAIC04MTUxLDcgKzgxOTAs NyBAQCBLZWVwTG9nU2VnKFhMb2dSZWNQdHIgcmVjcHRyLCBYTG9nU2VnTm8gKmxvZ1NlZ05vKQog CSAqIENhbGN1bGF0ZSBob3cgbWFueSBzZWdtZW50cyBhcmUga2VwdCBieSBzbG90cyBmaXJzdCwg YWRqdXN0aW5nIGZvcgogCSAqIG1heF9zbG90X3dhbF9rZWVwX3NpemUuCiAJICovCi0Ja2VlcCA9 IFhMb2dHZXRSZXBsaWNhdGlvblNsb3RNaW5pbXVtTFNOKCk7CisJa2VlcCA9IHNsb3RzTWluUmVx TFNOOwogCWlmIChrZWVwICE9IEludmFsaWRYTG9nUmVjUHRyICYmIGtlZXAgPCByZWNwdHIpCiAJ ewogCQlYTEJ5dGVUb1NlZyhrZWVwLCBzZWdubywgd2FsX3NlZ21lbnRfc2l6ZSk7Ci0tIAoyLjM5 LjUgKEFwcGxlIEdpdC0xNTQpCgo= --00000000000059cdaa0635df4f7e--