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 1qtsh9-00EP4y-U3 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Oct 2023 16:49:56 +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 1qtsh7-004XSn-OV for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Oct 2023 16:49:54 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qtsh7-004XSf-4H for pgsql-hackers@lists.postgresql.org; Fri, 20 Oct 2023 16:49:54 +0000 Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qtsh0-001SN1-Mt for pgsql-hackers@lists.postgresql.org; Fri, 20 Oct 2023 16:49:52 +0000 Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2c501bd6ff1so14941791fa.3 for ; Fri, 20 Oct 2023 09:49:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697820585; x=1698425385; 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=VKp1VPlbkeX3QlXg/xxRJzQExsaJVd1YyTlwIXqSXX4=; b=HT5vV+kolSK4R87lQXlBO9Sfzh0OdHvxZPgzsYwlyl+g1W64gy5NMhtV4UU+OOjaoZ kQVPfZi+I5uSSy/+9WbCEY85LmgvoyW4Fr/+BCA9ZjMxPk1eGk5/VTnkV/YkvH0ahphz m4UwZZ7Z9yhAqcIWjF6Pq6Ioc8HM+BwiLP9U6E2b5J5hGcttDCd+OrTAYIiXpCoGh08b VDkrW0yFVm1PiN41US688qC78CxCBCUJ0fVnMHaMae8jT8ZkRJ/V/ddxQGIrHqBFJu8J jU+yfQASQLXE/dN1Xt4VxOLoBVQ5KxRf9/2g6pgbT1YbvfgHEKuPv7xq3rBvJKdzWdCf D69Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697820585; x=1698425385; 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=VKp1VPlbkeX3QlXg/xxRJzQExsaJVd1YyTlwIXqSXX4=; b=CcnH6vBntCP+o3fbyBFLjy6rk/7P3+XVH3oScLBMh1+iF4uIv5pELTQUJj3ORkvQjh A97NY0GKbH9fMseii9riLwTDhdCIIcwRYgsZueTpSAEzc3/by218XnGTeLlBCynlOY7O AvCKLO5o7xXAKYrVLiMG+8l7wQ+CPUTfhBsgqDy4KTlnZy3u8TGfY9A/mjCF0t8T0m8M 7wgrqF0XCnzNFomaM4n811wQwH0KjHl/xPVmnDZWVMnWMHhiOhfmP2INtPDtBAVrOyrI JgOD7jULZauvRtTbHx1U9DZipTpL8dXfp8OushU8CkE/MvPYB3FvJFL3o/ow080XGKVr Sw3g== X-Gm-Message-State: AOJu0YzebRXpjYEz1Zwd8musLU3r4CxLg8bF6Ga5DKiMohltrXzc34aN rZeofHFCgGLVgN69G0GCWlvxlnVLImD+W0A5B84= X-Google-Smtp-Source: AGHT+IF1Z/W+S0YL4KDUXMPC3AoP6A9kndfvEZ6T0BOOg5TYXegnf+j1D06bRu1rh24+uyroTg8HcUWG4WGaZ/rr5dI= X-Received: by 2002:a2e:a16b:0:b0:2c5:911:db70 with SMTP id u11-20020a2ea16b000000b002c50911db70mr1940162ljl.14.1697820584454; Fri, 20 Oct 2023 09:49:44 -0700 (PDT) MIME-Version: 1.0 References: <20221212.115717.1183698540772933396.horikyota.ntt@gmail.com> <628b07b79743e2614ab1724f516cbd41560d6551.camel@j-davis.com> <20230114203403.4zpg72fw2qb34awf@awork3.anarazel.de> <0d84c025e38673cb575dcf4987d050fe7b1e1a1f.camel@j-davis.com> <20231011224353.cl7c2s222dw3de4j@awork3.anarazel.de> In-Reply-To: <20231011224353.cl7c2s222dw3de4j@awork3.anarazel.de> From: Bharath Rupireddy Date: Fri, 20 Oct 2023 22:19:32 +0530 Message-ID: Subject: Re: Improve WALRead() to suck data directly from WAL buffers when possible To: Andres Freund Cc: Jeff Davis , Dilip Kumar , Kyotaro Horiguchi , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000d44e6c060828a843" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d44e6c060828a843 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Oct 12, 2023 at 4:13=E2=80=AFAM Andres Freund = wrote: > > On 2023-10-03 16:05:32 -0700, Jeff Davis wrote: > > On Sat, 2023-01-14 at 12:34 -0800, Andres Freund wrote: > > > One benefit would be that it'd make it more realistic to use direct > > > IO for WAL > > > - for which I have seen significant performance benefits. But when we > > > afterwards have to re-read it from disk to replicate, it's less > > > clearly a win. > > > > Does this patch still look like a good fit for your (or someone else's) > > plans for direct IO here? If so, would committing this soon make it > > easier to make progress on that, or should we wait until it's actually > > needed? > > I think it'd be quite useful to have. Even with the code as of 16, I see > better performance in some workloads with debug_io_direct=3Dwal, > wal_sync_method=3Dopen_datasync compared to any other configuration. Exce= pt of > course that it makes walsenders more problematic, as they suddenly requir= e > read IO. Thus having support for walsenders to send directly from wal buf= fers > would be beneficial, even without further AIO infrastructure. I'm attaching the v11 patch set with the following changes: - Improved input validation in the function that reads WAL from WAL buffers in 0001 patch. - Improved test module's code in 0002 patch. - Modernized meson build file in 0002 patch. - Added commit messages for both the patches. - Ran pgindent on both the patches. Any thoughts are welcome. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000d44e6c060828a843 Content-Type: application/x-patch; name="v11-0001-Allow-WAL-reading-from-WAL-buffers.patch" Content-Disposition: attachment; filename="v11-0001-Allow-WAL-reading-from-WAL-buffers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lnyuhm4e0 RnJvbSA2NjE1NTkwZDc5NWE2MDY4ODk3YThhYTM0OGQ5ZTY5OTQ0MmJiMDdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjAgT2N0IDIwMjMgMTU6NDk6MjMgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxMV0gQWxsb3cgV0FMIHJlYWRpbmcgZnJvbSBXQUwgYnVmZmVy cwoKVGhpcyBjb21taXQgYWRkcyBXQUxSZWFkKCkgdGhlIGNhcGFiaWxpdHkgdG8gcmVhZCBXQUwg ZnJvbSBXQUwKYnVmZmVycyB3aGVuIHBvc3NpYmxlLiBXaGVuIHJlcXVlc3RlZCBXQUwgaXNuJ3Qg YXZhaWxhYmxlIGluIFdBTApidWZmZXJzLCB0aGUgV0FMIGlzIHJlYWQgZnJvbSB0aGUgV0FMIGZp bGUgYXMgdXN1YWwuIEl0IHJlbGllcyBvbgpXQUxCdWZNYXBwaW5nTG9jayBzbyB0aGF0IG5vIG9u ZSByZXBsYWNlcyB0aGUgV0FMIGJ1ZmZlciBwYWdlIHRoYXQKd2UncmUgcmVhZGluZyBmcm9tLiBJ dCBza2lwcyByZWFkaW5nIGZyb20gV0FMIGJ1ZmZlcnMgaWYKV0FMQnVmTWFwcGluZ0xvY2sgY2Fu J3QgYmUgYWNxdWlyZWQgaW1tZWRpYXRlbHkuIEluIG90aGVyIHdvcmRzLAppdCBkb2Vzbid0IHdh aXQgZm9yIFdBTEJ1Zk1hcHBpbmdMb2NrIHRvIGJlIGF2YWlsYWJsZS4gVGhpcyBoZWxwcwpyZWR1 Y2UgdGhlIGNvbnRlbnRpb24gb24gV0FMQnVmTWFwcGluZ0xvY2suCgpUaGlzIGNvbW1pdCBiZW5l Zml0cyB0aGUgY2FsbGVycyBvZiBXQUxSZWFkKCksIHRoYXQgYXJlIHdhbHNlbmRlcnMKYW5kIHBn X3dhbGluc3BlY3QuIFRoZXkgY2FuIG5vdyBhdm9pZCByZWFkaW5nIFdBTCBmcm9tIHRoZSBXQUwK ZmlsZSAocG9zc2libHkgYXZvaWRpbmcgZGlzayBJTykuIFRlc3RzIHNob3cgdGhhdCB0aGUgV0FM IGJ1ZmZlcnMKaGl0IHJhdGlvIHN0b29kIGF0IDk1JSBmb3IgMSBwcmltYXJ5LCAxIHN5bmMgc3Rh bmRieSwgMSBhc3luYwpzdGFuZGJ5LCB3aXRoIHBnYmVuY2ggLS1zY2FsZT0zMDAgLS1jbGllbnQ9 MzIgLS10aW1lPTkwMC4gSW4gb3RoZXIKd29yZHMsIHRoZSB3YWxzZW5kZXJzIGF2b2lkZWQgOTUl IG9mIHRoZSB0aW1lIHJlYWRpbmcgZnJvbSB0aGUKZmlsZS9hdm9pZGVkIHByZWFkIHN5c3RlbSBj YWxsczoKaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUxqMkFDWEtLSyUz RHdiaUc1X3Q2ZEdhbzVHb2VjTXdSa2hyN0dqVkJNX2pnNTQlMkJOYSUzRFElNDBtYWlsLmdtYWls LmNvbQoKVGhpcyBjb21taXQgYWxzbyBiZW5lZml0cyB3aGVuIGRpcmVjdCBJTyBpcyBlbmFibGVk IGZvciBXQUwuClJlYWRpbmcgV0FMIGZyb20gV0FMIGJ1ZmZlcnMgcHV0cyBiYWNrIHRoZSBwZXJm b3JtYW5jZSBjbG9zZSB0bwp0aGF0IG9mIHdpdGhvdXQgZGlyZWN0IElPIGZvciBXQUw6Cmh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FMajJBQ1Y2clMlMkI3aVp4NSUyQm9B dnlYSmFONEFHLWRqQVFlTTFtck0lM0RZU0RrVnJVczdnJTQwbWFpbC5nbWFpbC5jb20KClRoaXMg Y29tbWl0IGFsc28gcGF2ZXMgdGhlIHdheSBmb3IgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBpbgpm dXR1cmU6Ci0gSW1wcm92ZXMgc3luY2hyb25vdXMgcmVwbGljYXRpb24gcGVyZm9ybWFuY2UgYnkg cmVwbGljYXRpbmcKZGlyZWN0bHkgZnJvbSBXQUwgYnVmZmVycy4KLSBBIG9wdC1pbiB3YXkgZm9y IHRoZSB3YWxyZWNlaXZlcnMgdG8gcmVjZWl2ZSB1bmZsdXNoZWQgV0FMLgpNb3JlIGRldGFpbHMg aGVyZToKaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC8yMDIzMTAxMTIyNDM1 My5jbDdjMnMyMjJkdzNkZTRqJTQwYXdvcmszLmFuYXJhemVsLmRlCgpBdXRob3I6IEJoYXJhdGgg UnVwaXJlZGR5ClJldmlld2VkLWJ5OiBEaWxpcCBLdW1hciwgQW5kcmVzIEZyZXVuZApSZXZpZXdl ZC1ieTogTmF0aGFuIEJvc3NhcnQsIEt1bnRhbCBHaG9zaApEaXNjdXNzaW9uOiBodHRwczovL3d3 dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBTGoyQUNYS0tLJTNEd2JpRzVfdDZkR2FvNUdv ZWNNd1JraHI3R2pWQk1famc1NCUyQk5hJTNEUSU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgIHwgMjA4ICsrKysrKysrKysrKysrKysr KysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlYWRlci5jIHwgIDQ1ICsr KystCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgfCAgIDYgKwogMyBm aWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMKaW5kZXggY2VhMTNlM2Q1OC4uOTU1M2E4ODBmMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtMTcwNiw2ICsxNzA2LDIxNCBAQCBHZXRYTG9nQnVmZmVy KFhMb2dSZWNQdHIgcHRyLCBUaW1lTGluZUlEIHRsaSkKIAlyZXR1cm4gY2FjaGVkUG9zICsgcHRy ICUgWExPR19CTENLU1o7CiB9CiAKKy8qCisgKiBSZWFkIFdBTCBmcm9tIFdBTCBidWZmZXJzLgor ICoKKyAqIFJlYWQgJ2NvdW50JyBieXRlcyBvZiBXQUwgZnJvbSBXQUwgYnVmZmVycyBpbnRvICdi dWYnLCBzdGFydGluZyBhdCBsb2NhdGlvbgorICogJ3N0YXJ0cHRyJywgb24gdGltZWxpbmUgJ3Rs aScgYW5kIHJldHVybiB0b3RhbCByZWFkIGJ5dGVzLgorICoKKyAqIE5vdGUgdGhhdCB0aGlzIGZ1 bmN0aW9uIHJlYWRzIGFzIG11Y2ggYXMgaXQgY2FuIGZyb20gV0FMIGJ1ZmZlcnMsIG1lYW5pbmcs CisgKiBpdCBtYXkgbm90IHJlYWQgYWxsIHRoZSByZXF1ZXN0ZWQgJ2NvdW50JyBieXRlcy4gQ2Fs bGVyIG11c3QgYmUgYXdhcmUgb2YKKyAqIHRoaXMgYW5kIGRlYWwgd2l0aCBpdC4KKyAqCisgKiBO b3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlIGZvciBmcm9udGVuZCBjb2Rl IGFzIFdBTCBidWZmZXJzIGlzCisgKiBhbiBpbnRlcm5hbCBtZWNoYW5pc20gdG8gdGhlIHNlcnZl ci4KKyAqLworU2l6ZQorWExvZ1JlYWRGcm9tQnVmZmVycyhYTG9nUmVhZGVyU3RhdGUgKnN0YXRl LAorCQkJCQlYTG9nUmVjUHRyIHN0YXJ0cHRyLAorCQkJCQlUaW1lTGluZUlEIHRsaSwKKwkJCQkJ U2l6ZSBjb3VudCwKKwkJCQkJY2hhciAqYnVmKQoreworCVhMb2dSZWNQdHIJcHRyOworCVNpemUJ CW5ieXRlczsKKwlTaXplCQludG90YWw7CisJU2l6ZQkJbmJhdGNoOworCWNoYXIJICAgKmJhdGNo c3RhcnQ7CisJVGltZUxpbmVJRAljdXJyZW50X3RpbWVsaW5lOworCisJLyoKKwkgKiBEbyBzb21l IGlucHV0IHBhcmFtZXRlciB2YWxpZGF0aW9ucyB0byBmYWlsIHF1aWNrbHkgd2l0aCBtZWFuaW5n ZnVsCisJICogZXJyb3IgbWVzc2FnZXMgb3IgcmV0dXJuIGltbWVkaWF0ZWx5LgorCSAqLworCWlm ICh1bmxpa2VseShSZWNvdmVyeUluUHJvZ3Jlc3MoKSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2dfaW50 ZXJuYWwoInJlYWRpbmcgV0FMIGZyb20gV0FMIGJ1ZmZlcnMgaXMgbm90IHN1cHBvcnRlZCBkdXJp bmcgcmVjb3ZlcnkiKSkpOworCisJaWYgKHVubGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQoc3Rh cnRwdHIpIHx8CisJCQkJIHN0YXJ0cHRyID4gR2V0Rmx1c2hSZWNQdHIoTlVMTCkpKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoImludmFsaWQgV0FMIHN0YXJ0IExTTiAlWC8lWCBzcGVj aWZpZWQgZm9yIHJlYWRpbmcgZnJvbSBXQUwgYnVmZmVycyIsCisJCQkJCQkJCSBMU05fRk9STUFU X0FSR1Moc3RhcnRwdHIpKSkpOworCisJY3VycmVudF90aW1lbGluZSA9IEdldFdBTEluc2VydGlv blRpbWVMaW5lKCk7CisJaWYgKHVubGlrZWx5KHRsaSAhPSBjdXJyZW50X3RpbWVsaW5lKSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKKwkJCQkgZXJybXNnX2ludGVybmFsKCJyZXF1ZXN0ZWQgV0FMIHRpbWVsaW5lIElEICV1 IGlzIGRpZmZlcmVudCBmcm9tIHRoYXQgb2YgY3VycmVudCBzeXN0ZW0gdGltZWxpbmUgSUQgJXUi LAorCQkJCQkJCQkgdGxpLCBjdXJyZW50X3RpbWVsaW5lKSkpOworCisJaWYgKHVubGlrZWx5KGNv dW50IDw9IDApKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogSG9sZGluZyBXQUxCdWZNYXBwaW5n TG9jayBlbnN1cmVzIGluc2VydGVycyBkb24ndCBvdmVyd3JpdGUgdGhpcyB2YWx1ZQorCSAqIHdo aWxlIHdlIGFyZSByZWFkaW5nIGl0LiBXZSB0cnkgdG8gYWNxdWlyZSBpdCBpbiBzaGFyZWQgbW9k ZSBzbyB0aGF0CisJICogdGhlIGNvbmN1cnJlbnQgV0FMIHJlYWRlcnMgYXJlIGFsc28gYWxsb3dl ZC4gV2UgdHJ5IHRvIGRvIGFzIGxlc3Mgd29yaworCSAqIGFzIHBvc3NpYmxlIHdoaWxlIGhvbGRp bmcgdGhlIGxvY2sgdG8gbm90IGltcGFjdCBjb25jdXJyZW50IFdBTCB3cml0ZXJzCisJICogbXVj aC4gV2UgcXVpY2tseSBleGl0IHRvIG5vdCBjYXVzZSBhbnkgY29udGVudGlvbiwgaWYgdGhlIGxv Y2sgaXNuJ3QKKwkgKiBpbW1lZGlhdGVseSBhdmFpbGFibGUuCisJICovCisJaWYgKCFMV0xvY2tD b25kaXRpb25hbEFjcXVpcmUoV0FMQnVmTWFwcGluZ0xvY2ssIExXX1NIQVJFRCkpCisJCXJldHVy biAwOworCisJcHRyID0gc3RhcnRwdHI7CisJbmJ5dGVzID0gY291bnQ7CQkJCS8qIFRvdGFsIGJ5 dGVzIHJlcXVlc3RlZCB0byBiZSByZWFkIGJ5IGNhbGxlci4gKi8KKwludG90YWwgPSAwOwkJCQkJ LyogVG90YWwgYnl0ZXMgcmVhZC4gKi8KKwluYmF0Y2ggPSAwOwkJCQkJLyogQnl0ZXMgdG8gYmUg cmVhZCBpbiBzaW5nbGUgYmF0Y2guICovCisJYmF0Y2hzdGFydCA9IE5VTEw7CQkJLyogTG9jYXRp b24gdG8gcmVhZCBmcm9tIGZvciBzaW5nbGUgYmF0Y2guICovCisKKwl3aGlsZSAobmJ5dGVzID4g MCkKKwl7CisJCVhMb2dSZWNQdHIJZXhwZWN0ZWRFbmRQdHI7CisJCVhMb2dSZWNQdHIJZW5kcHRy OworCQlpbnQJCQlpZHg7CisJCWNoYXIJICAgKnBhZ2U7CisJCWNoYXIJICAgKmRhdGE7CisJCVhM b2dQYWdlSGVhZGVyIHBoZHI7CisKKwkJaWR4ID0gWExvZ1JlY1B0clRvQnVmSWR4KHB0cik7CisJ CWV4cGVjdGVkRW5kUHRyID0gcHRyOworCQlleHBlY3RlZEVuZFB0ciArPSBYTE9HX0JMQ0tTWiAt IHB0ciAlIFhMT0dfQkxDS1NaOworCQllbmRwdHIgPSBYTG9nQ3RsLT54bGJsb2Nrc1tpZHhdOwor CisJCS8qIFJlcXVlc3RlZCBXQUwgaXNuJ3QgYXZhaWxhYmxlIGluIFdBTCBidWZmZXJzLiAqLwor CQlpZiAoZXhwZWN0ZWRFbmRQdHIgIT0gZW5kcHRyKQorCQkJYnJlYWs7CisKKwkJLyoKKwkJICog V2UgZm91bmQgV0FMIGJ1ZmZlciBwYWdlIGNvbnRhaW5pbmcgZ2l2ZW4gWExvZ1JlY1B0ci4gR2V0 IHN0YXJ0aW5nCisJCSAqIGFkZHJlc3Mgb2YgdGhlIHBhZ2UgYW5kIGEgcG9pbnRlciB0byB0aGUg cmlnaHQgbG9jYXRpb24gb2YgZ2l2ZW4KKwkJICogWExvZ1JlY1B0ciBpbiB0aGF0IHBhZ2UuCisJ CSAqLworCQlwYWdlID0gWExvZ0N0bC0+cGFnZXMgKyBpZHggKiAoU2l6ZSkgWExPR19CTENLU1o7 CisJCWRhdGEgPSBwYWdlICsgcHRyICUgWExPR19CTENLU1o7CisKKwkJLyoKKwkJICogVGhlIGZh Y3QgdGhhdCB3ZSBhY3F1aXJlIFdBTEJ1Zk1hcHBpbmdMb2NrIHdoaWxlIHJlYWRpbmcgdGhlIFdB TAorCQkgKiBidWZmZXIgcGFnZSBpdHNlbGYgZ3VhcmFudGVlcyB0aGF0IG5vIG9uZSBlbHNlIGlu aXRpYWxpemVzIGl0IG9yCisJCSAqIG1ha2VzIGl0IHJlYWR5IGZvciBuZXh0IHVzZSBpbiBBZHZh bmNlWExJbnNlcnRCdWZmZXIoKS4gSG93ZXZlciwgd2UKKwkJICogbmVlZCB0byBlbnN1cmUgdGhh dCB3ZSBhcmUgbm90IHJlYWRpbmcgYSBwYWdlIHRoYXQganVzdCBnb3QKKwkJICogaW5pdGlhbGl6 ZWQuIEZvciB0aGlzLCB3ZSBsb29rIGF0IHRoZSBuZWVkZWQgcGFnZSBoZWFkZXIuCisJCSAqLwor CQlwaGRyID0gKFhMb2dQYWdlSGVhZGVyKSBwYWdlOworCisJCS8qIFJldHVybiwgaWYgV0FMIGJ1 ZmZlciBwYWdlIGRvZXNuJ3QgbG9vayB2YWxpZC4gKi8KKwkJaWYgKCEocGhkci0+eGxwX21hZ2lj ID09IFhMT0dfUEFHRV9NQUdJQyAmJgorCQkJICBwaGRyLT54bHBfcGFnZWFkZHIgPT0gKHB0ciAt IChwdHIgJSBYTE9HX0JMQ0tTWikpICYmCisJCQkgIHBoZHItPnhscF90bGkgPT0gdGxpKSkKKwkJ CWJyZWFrOworCisJCS8qCisJCSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBwZXJmb3JtIGFsbCBwYWdl IGhlYWRlciBjaGVja3MgaGVyZSB0byBhdm9pZAorCQkgKiBleHRyYSB3b3JrIGluIHByb2R1Y3Rp b24gYnVpbGRzOyBjYWxsZXJzIHdpbGwgYW55d2F5IGRvIHRob3NlCisJCSAqIGNoZWNrcyBleHRl bnNpdmVseS4gSG93ZXZlciwgaW4gYW4gYXNzZXJ0LWVuYWJsZWQgYnVpbGQsIHdlIHBlcmZvcm0K KwkJICogYWxsIHRoZSBjaGVja3MgaGVyZSBhbmQgcmFpc2UgYW4gZXJyb3IgaWYgZmFpbGVkLgor CQkgKi8KKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJCWlmICh1bmxpa2VseShzdGF0ZSAh PSBOVUxMICYmCisJCQkJCSAhWExvZ1JlYWRlclZhbGlkYXRlUGFnZUhlYWRlcihzdGF0ZSwgKGVu ZHB0ciAtIFhMT0dfQkxDS1NaKSwKKwkJCQkJCQkJCQkJCSAgIChjaGFyICopIHBoZHIpKSkKKwkJ eworCQkJaWYgKHN0YXRlLT5lcnJvcm1zZ19idWZbMF0pCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5URVJOQUxfRVJST1IpLAorCQkJCQkJIGVycm1zZ19pbnRl cm5hbCgiJXMiLCBzdGF0ZS0+ZXJyb3Jtc2dfYnVmKSkpOworCQkJZWxzZQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVEVSTkFMX0VSUk9SKSwKKwkJCQkJCSBl cnJtc2dfaW50ZXJuYWwoImNvdWxkIG5vdCByZWFkIFdBTCBmcm9tIFdBTCBidWZmZXJzIikpKTsK KwkJfQorI2VuZGlmCisKKwkJLyogQ291bnQgd2hhdCBpcyB3YW50ZWQsIG5vdCB0aGUgd2hvbGUg cGFnZS4gKi8KKwkJaWYgKChkYXRhICsgbmJ5dGVzKSA8PSAocGFnZSArIFhMT0dfQkxDS1NaKSkK KwkJeworCQkJLyogQWxsIHRoZSBieXRlcyBhcmUgaW4gb25lIHBhZ2UuICovCisJCQluYmF0Y2gg Kz0gbmJ5dGVzOworCQkJbnRvdGFsICs9IG5ieXRlczsKKwkJCW5ieXRlcyA9IDA7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQlTaXplCQluYXZhaWxhYmxlOworCisJCQkvKgorCQkJICogQWxsIHRoZSBi eXRlcyBhcmUgbm90IGluIG9uZSBwYWdlLiBEZWR1Y2UgYXZhaWxhYmxlIGJ5dGVzIG9uCisJCQkg KiB0aGUgY3VycmVudCBwYWdlLCBjb3VudCB0aGVtIGFuZCBjb250aW51ZSB0byBsb29rIGZvciBy ZW1haW5pbmcKKwkJCSAqIGJ5dGVzLgorCQkJICovCisJCQluYXZhaWxhYmxlID0gWExPR19CTENL U1ogLSAoZGF0YSAtIHBhZ2UpOworCQkJQXNzZXJ0KG5hdmFpbGFibGUgPiAwICYmIG5hdmFpbGFi bGUgPD0gbmJ5dGVzKTsKKwkJCXB0ciArPSBuYXZhaWxhYmxlOworCQkJbmJ5dGVzIC09IG5hdmFp bGFibGU7CisJCQluYmF0Y2ggKz0gbmF2YWlsYWJsZTsKKwkJCW50b3RhbCArPSBuYXZhaWxhYmxl OworCQl9CisKKwkJLyoKKwkJICogV2UgYXZvaWQgbXVsdGlwbGUgbWVtY3B5IGNhbGxzIHdoaWxl IHJlYWRpbmcgV0FMLiBOb3RlIHRoYXQgd2UKKwkJICogbWVtY3B5IHdoYXQgd2UgaGF2ZSBjb3Vu dGVkIHNvIGZhciB3aGVuZXZlciB3ZSBhcmUgd3JhcHBpbmcgYXJvdW5kCisJCSAqIFdBTCBidWZm ZXJzIChiZWNhdXNlIFdBTCBidWZmZXJzIGFyZSBvcmdhbml6ZWQgYXMgY2lydWN1bGFyIGFycmF5 CisJCSAqIG9mIHBhZ2VzKSBhbmQgY29udGludWUgdG8gbG9vayBmb3IgcmVtYWluaW5nIFdBTC4K KwkJICovCisJCWlmIChiYXRjaHN0YXJ0ID09IE5VTEwpCisJCXsKKwkJCS8qIE1hcmsgd2hlcmUg dGhlIGRhdGEgaW4gV0FMIGJ1ZmZlcnMgc3RhcnRzIGZyb20uICovCisJCQliYXRjaHN0YXJ0ID0g ZGF0YTsKKwkJfQorCisJCS8qCisJCSAqIFdlIGFyZSB3cmFwcGluZyBhcm91bmQgV0FMIGJ1ZmZl cnMsIHNvIHJlYWQgd2hhdCB3ZSBoYXZlIGNvdW50ZWQgc28KKwkJICogZmFyLgorCQkgKi8KKwkJ aWYgKGlkeCA9PSBYTG9nQ3RsLT5YTG9nQ2FjaGVCbGNrKQorCQl7CisJCQlBc3NlcnQoYmF0Y2hz dGFydCAhPSBOVUxMKTsKKwkJCUFzc2VydChuYmF0Y2ggPiAwKTsKKworCQkJbWVtY3B5KGJ1Ziwg YmF0Y2hzdGFydCwgbmJhdGNoKTsKKwkJCWJ1ZiArPSBuYmF0Y2g7CisKKwkJCS8qIFJlc2V0IGZv ciBuZXh0IGJhdGNoLiAqLworCQkJYmF0Y2hzdGFydCA9IE5VTEw7CisJCQluYmF0Y2ggPSAwOwor CQl9CisJfQorCisJLyogUmVhZCB3aGF0IHdlIGhhdmUgY291bnRlZCBzbyBmYXIuICovCisJQXNz ZXJ0KG5iYXRjaCA8PSBudG90YWwpOworCWlmIChiYXRjaHN0YXJ0ICE9IE5VTEwgJiYgbmJhdGNo ID4gMCkKKwkJbWVtY3B5KGJ1ZiwgYmF0Y2hzdGFydCwgbmJhdGNoKTsKKworCUxXTG9ja1JlbGVh c2UoV0FMQnVmTWFwcGluZ0xvY2spOworCisJLyogV2UgbmV2ZXIgcmVhZCBtb3JlIHRoYW4gd2hh dCB0aGUgY2FsbGVyIGhhcyBhc2tlZCBmb3IuICovCisJQXNzZXJ0KG50b3RhbCA8PSBjb3VudCk7 CisKKyNpZmRlZiBXQUxfREVCVUcKKwlpZiAoWExPR19ERUJVRykKKwkJZXJlcG9ydChERUJVRzEs CisJCQkJKGVycm1zZ19pbnRlcm5hbCgicmVhZCAlenUgYnl0ZXMgb3V0IG9mICV6dSBieXRlcyBm cm9tIFdBTCBidWZmZXJzIGZvciBnaXZlbiBzdGFydCBMU04gJVgvJVgsIHRpbWVsaW5lIElEICV1 IiwKKwkJCQkJCQkJIG50b3RhbCwgY291bnQsIExTTl9GT1JNQVRfQVJHUyhzdGFydHB0ciksIHRs aSkpKTsKKyNlbmRpZgorCisJcmV0dXJuIG50b3RhbDsKK30KKwogLyoKICAqIENvbnZlcnRzIGEg InVzYWJsZSBieXRlIHBvc2l0aW9uIiB0byBYTG9nUmVjUHRyLiBBIHVzYWJsZSBieXRlIHBvc2l0 aW9uCiAgKiBpcyB0aGUgcG9zaXRpb24gc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIFdB TCwgZXhjbHVkaW5nIGFsbCBXQUwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2dyZWFkZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWFkZXIu YwppbmRleCBlMGJhYTg2YmQzLi45YzgyMTcyYzQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVhZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ3JlYWRlci5jCkBAIC0xNDczLDggKzE0NzMsNyBAQCBlcnI6CiAgKiBSZXR1cm5zIHRy dWUgaWYgc3VjY2VlZGVkLCBmYWxzZSBpZiBhbiBlcnJvciBvY2N1cnMsIGluIHdoaWNoIGNhc2UK ICAqICdlcnJpbmZvJyByZWNlaXZlcyBlcnJvciBkZXRhaWxzLgogICoKLSAqIFhYWCBwcm9iYWJs eSB0aGlzIHNob3VsZCBiZSBpbXByb3ZlZCB0byBzdWNrIGRhdGEgZGlyZWN0bHkgZnJvbSB0aGUK LSAqIFdBTCBidWZmZXJzIHdoZW4gcG9zc2libGUuCisgKiBXaGVuIHBvc3NpYmxlLCB0aGlzIGZ1 bmN0aW9uIHJlYWRzIGRhdGEgZGlyZWN0bHkgZnJvbSBXQUwgYnVmZmVycy4KICAqLwogYm9vbAog V0FMUmVhZChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLApAQCAtMTQ4NSw2ICsxNDg0LDQ4IEBAIFdB TFJlYWQoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAlTaXpl CQluYnl0ZXM7CiAKKyNpZm5kZWYgRlJPTlRFTkQKKwkvKiBGcm9udGVuZCBjb2RlIGhhcyBubyBp ZGVhIG9mIFdBTCBidWZmZXJzLiAqLworCisJU2l6ZQkJbnJlYWQ7CisKKwkvKgorCSAqIFRyeSBy ZWFkaW5nIFdBTCBmcm9tIFdBTCBidWZmZXJzLiBXZSBza2lwIHRoaXMgc3RlcCBhbmQgY29udGlu dWUgdGhlCisJICogdXN1YWwgd2F5LCB0aGF0IGlzIHRvIHJlYWQgZnJvbSBXQUwgZmlsZSwgZWl0 aGVyIHdoZW4gc2VydmVyIGlzIGluCisJICogcmVjb3ZlcnkgKHN0YW5kYnkgbW9kZSwgYXJjaGl2 ZSBvciBjcmFzaCByZWNvdmVyeSksIGluIHdoaWNoIGNhc2UgdGhlCisJICogV0FMIGJ1ZmZlcnMg YXJlIG5vdCB1c2VkIG9yIHdoZW4gdGhlIHNlcnZlciBpcyBpbnNlcnRpbmcgaW4gYSBkaWZmZXJl bnQKKwkgKiB0aW1lbGluZSBmcm9tIHRoYXQgb2YgdGhlIHRpbWVsaW5lIHRoYXQgd2UncmUgdHJ5 aW5nIHRvIHJlYWQgV0FMIGZyb20uCisJICovCisJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSAm JgorCQl0bGkgPT0gR2V0V0FMSW5zZXJ0aW9uVGltZUxpbmUoKSkKKwl7CisJCW5yZWFkID0gWExv Z1JlYWRGcm9tQnVmZmVycyhzdGF0ZSwgc3RhcnRwdHIsIHRsaSwgY291bnQsIGJ1Zik7CisKKwkJ QXNzZXJ0KG5yZWFkID49IDApOworCisJCS8qCisJCSAqIENoZWNrIGlmIHdlIGhhdmUgcmVhZCBm dWxseSAoaGl0KSwgcGFydGlhbGx5IChwYXJ0aWFsIGhpdCkgb3IKKwkJICogbm90aGluZyAobWlz cykgZnJvbSBXQUwgYnVmZmVycy4gSWYgd2UgaGF2ZSByZWFkIGVpdGhlciBwYXJ0aWFsbHkKKwkJ ICogb3Igbm90aGluZywgdGhlbiBjb250aW51ZSB0byByZWFkIHRoZSByZW1haW5pbmcgYnl0ZXMg dGhlIHVzdWFsCisJCSAqIHdheSwgdGhhdCBpcywgcmVhZCBmcm9tIFdBTCBmaWxlLgorCQkgKgor CQkgKiBYWFg6IEl0IG1pZ2h0IGJlIHdvcnRoIHRvIGV4cG9zZSBXQUwgYnVmZmVyIHJlYWQgc3Rh dHMuCisJCSAqLworCQlpZiAoY291bnQgPT0gbnJlYWQpCisJCQlyZXR1cm4gdHJ1ZTsJCS8qIEJ1 ZmZlciBoaXQsIHNvIHJldHVybi4gKi8KKwkJZWxzZSBpZiAoY291bnQgPiBucmVhZCkKKwkJewor CQkJLyoKKwkJCSAqIEJ1ZmZlciBwYXJ0aWFsIGhpdCwgc28gcmVzZXQgdGhlIHN0YXRlIHRvIGNv dW50IHRoZSByZWFkIGJ5dGVzCisJCQkgKiBhbmQgY29udGludWUuCisJCQkgKi8KKwkJCWJ1ZiAr PSBucmVhZDsKKwkJCXN0YXJ0cHRyICs9IG5yZWFkOworCQkJY291bnQgLT0gbnJlYWQ7CisJCX0K Kwl9CisjZW5kaWYKKwogCXAgPSBidWY7CiAJcmVjcHRyID0gc3RhcnRwdHI7CiAJbmJ5dGVzID0g Y291bnQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3hsb2cuaAppbmRleCA0YWQ1NzJjYjg3Li43NGE5Y2QyMzdhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9n LmgKQEAgLTI1MSw2ICsyNTEsMTIgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgR2V0TGFzdEltcG9ydGFu dFJlY1B0cih2b2lkKTsKIAogZXh0ZXJuIHZvaWQgU2V0V2FsV3JpdGVyU2xlZXBpbmcoYm9vbCBz bGVlcGluZyk7CiAKK2V4dGVybiBTaXplIFhMb2dSZWFkRnJvbUJ1ZmZlcnMoc3RydWN0IFhMb2dS ZWFkZXJTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCVhMb2dSZWNQdHIgc3RhcnRwdHIsCisJCQkJCQkJ CVRpbWVMaW5lSUQgdGxpLAorCQkJCQkJCQlTaXplIGNvdW50LAorCQkJCQkJCQljaGFyICpidWYp OworCiAvKgogICogUm91dGluZXMgdXNlZCBieSB4bG9ncmVjb3ZlcnkuYyB0byBjYWxsIGJhY2sg aW50byB4bG9nLmMgZHVyaW5nIHJlY292ZXJ5LgogICovCi0tIAoyLjM0LjEKCg== --000000000000d44e6c060828a843 Content-Type: application/x-patch; name="v11-0002-Add-test-module-for-verifying-WAL-read-from-WAL-.patch" Content-Disposition: attachment; filename="v11-0002-Add-test-module-for-verifying-WAL-read-from-WAL-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lnyuho6q1 RnJvbSA4MzgxNGU5ZWE0YTA4OTFiOGI0NDY4NjU0NjFjNDc1ODRmMzA4YjM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjAgT2N0IDIwMjMgMTY6Mzg6MjUgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxMV0gQWRkIHRlc3QgbW9kdWxlIGZvciB2ZXJpZnlpbmcgV0FM IHJlYWQgZnJvbSBXQUwgYnVmZmVycwoKVGhpcyBjb21taXQgYWRkcyBhIHRlc3QgbW9kdWxlIHRv IHZlcmlmeSBXQUwgcmVhZCBmcm9tIFdBTApidWZmZXJzLgoKQXV0aG9yOiBCaGFyYXRoIFJ1cGly ZWRkeQpSZXZpZXdlZC1ieTogRGlsaXAgS3VtYXIKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9z dGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUxqMkFDWEtLSyUzRHdiaUc1X3Q2ZEdhbzVHb2VjTXdS a2hyN0dqVkJNX2pnNTQlMkJOYSUzRFElNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy90ZXN0L21v ZHVsZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy90ZXN0L21vZHVs ZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAxICsKIC4uLi90ZXN0X3dhbF9yZWFk X2Zyb21fYnVmZmVycy8uZ2l0aWdub3JlICAgICB8ICA0ICsrCiAuLi4vdGVzdF93YWxfcmVhZF9m cm9tX2J1ZmZlcnMvTWFrZWZpbGUgICAgICAgfCAyMyArKysrKysrCiAuLi4vdGVzdF93YWxfcmVh ZF9mcm9tX2J1ZmZlcnMvbWVzb24uYnVpbGQgICAgfCAzMyArKysrKysrKysrCiAuLi4vdGVzdF93 YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdC8wMDFfYmFzaWMucGwgfCA2NiArKysrKysrKysrKysrKysr KysrCiAuLi4vdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMtLTEuMC5zcWwgICAgICAgfCAxNiAr KysrKwogLi4uL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzLmMgICAgICAgICAgICAgIHwgMzcg KysrKysrKysrKysKIC4uLi90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy5jb250cm9sICAgICAg ICB8ICA0ICsrCiA5IGZpbGVzIGNoYW5nZWQsIDE4NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy8uZ2l0 aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFk X2Zyb21fYnVmZmVycy9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVs ZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzL3QvMDAxX2Jh c2ljLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFk X2Zyb21fYnVmZmVycy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy0tMS4wLnNxbAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMv dGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdGVzdF93YWxfcmVhZF9mcm9tX2J1 ZmZlcnMuY29udHJvbAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgYi9z cmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCmluZGV4IGU4MTg3M2NiNWEuLmY1YWVkYjk1YTQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9NYWtlZmlsZQpAQCAtMzEsNiArMzEsNyBAQCBTVUJESVJTID0gXAogCQkgIHRlc3RfcmxzX2hv b2tzIFwKIAkJICB0ZXN0X3NobV9tcSBcCiAJCSAgdGVzdF9zbHJ1IFwKKwkJICB0ZXN0X3dhbF9y ZWFkX2Zyb21fYnVmZmVycyBcCiAJCSAgdW5zYWZlX3Rlc3RzIFwKIAkJICB3b3JrZXJfc3BpCiAK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1 bGVzL21lc29uLmJ1aWxkCmluZGV4IGZjZDY0M2Y2ZjEuLjg2ZmQ3NGFiNTAgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNv bi5idWlsZApAQCAtMjgsNSArMjgsNiBAQCBzdWJkaXIoJ3Rlc3RfcmVnZXgnKQogc3ViZGlyKCd0 ZXN0X3Jsc19ob29rcycpCiBzdWJkaXIoJ3Rlc3Rfc2htX21xJykKIHN1YmRpcigndGVzdF9zbHJ1 JykKK3N1YmRpcigndGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMnKQogc3ViZGlyKCd1bnNhZmVf dGVzdHMnKQogc3ViZGlyKCd3b3JrZXJfc3BpJykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvLmdpdGlnbm9yZSBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi41ZGNiM2ZmOTcyCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy8uZ2l0aWdub3JlCkBAIC0w LDAgKzEsNCBAQAorIyBHZW5lcmF0ZWQgc3ViZGlyZWN0b3JpZXMKKy9sb2cvCisvcmVzdWx0cy8K Ky90bXBfY2hlY2svCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRf ZnJvbV9idWZmZXJzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zy b21fYnVmZmVycy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li43NDcyNDk0NTAxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dh bF9yZWFkX2Zyb21fYnVmZmVycy9NYWtlZmlsZQpAQCAtMCwwICsxLDIzIEBACisjIHNyYy90ZXN0 L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvTWFrZWZpbGUKKworTU9EVUxFX2Jp ZyA9IHRlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzCitPQkpTID0gXAorCSQoV0lOMzJSRVMpIFwK Kwl0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy5vCitQR0ZJTEVERVNDID0gInRlc3Rfd2FsX3Jl YWRfZnJvbV9idWZmZXJzIC0gdGVzdCBtb2R1bGUgdG8gcmVhZCBXQUwgZnJvbSBXQUwgYnVmZmVy cyIKKworRVhURU5TSU9OID0gdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMKK0RBVEEgPSB0ZXN0 X3dhbF9yZWFkX2Zyb21fYnVmZmVycy0tMS4wLnNxbAorCitUQVBfVEVTVFMgPSAxCisKK2lmZGVm IFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NP TkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8u Li8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVk ZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzL21lc29uLmJ1 aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy9tZXNvbi5i dWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40MGJkNWRjZDMzCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVm ZmVycy9tZXNvbi5idWlsZApAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoYykgMjAyMywg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordGVzdF93YWxfcmVhZF9mcm9t X2J1ZmZlcnNfc291cmNlcyA9IGZpbGVzKAorICAndGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMu YycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICB0ZXN0X3dhbF9yZWFkX2Zy b21fYnVmZmVyc19zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0 cmFfYXJnczogWworICAgICctLU5BTUUnLCAndGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMnLAor ICAgICctLUZJTEVERVNDJywgJ3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzIC0gdGVzdCBtb2R1 bGUgdG8gcmVhZCBXQUwgZnJvbSBXQUwgYnVmZmVycycsXSkKK2VuZGlmCisKK3Rlc3Rfd2FsX3Jl YWRfZnJvbV9idWZmZXJzID0gc2hhcmVkX21vZHVsZSgndGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZl cnMnLAorICB0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVyc19zb3VyY2VzLAorICBrd2FyZ3M6IHBn X3Rlc3RfbW9kX2FyZ3MsCispCit0ZXN0X2luc3RhbGxfbGlicyArPSB0ZXN0X3dhbF9yZWFkX2Zy b21fYnVmZmVycworCit0ZXN0X2luc3RhbGxfZGF0YSArPSBmaWxlcygKKyAgJ3Rlc3Rfd2FsX3Jl YWRfZnJvbV9idWZmZXJzLmNvbnRyb2wnLAorICAndGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMt LTEuMC5zcWwnLAorKQorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rlc3Rfd2FsX3JlYWRfZnJv bV9idWZmZXJzJywKKyAgJ3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6 IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisgICd0YXAnOiB7CisgICAgJ3Rlc3RzJzogWwor ICAgICAgJ3QvMDAxX2Jhc2ljLnBsJywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy90LzAwMV9iYXNpYy5wbCBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdC8wMDFfYmFzaWMu cGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjgzOGQ4YzNjYQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZl cnMvdC8wMDFfYmFzaWMucGwKQEAgLTAsMCArMSw2NiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjEt MjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordXNlIHN0cmljdDsK K3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworbXkgJG5vZGUgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3Rlc3QnKTsKKworJG5vZGUtPmluaXQ7CisKKyMg RW5zdXJlIG5vYm9keSBpbnRlcmZlcmVzIHdpdGggdXMgc28gdGhhdCB0aGUgV0FMIGluIFdBTCBi dWZmZXJzIGRvbid0IGdldAorIyBvdmVyd3JpdHRlbiB3aGlsZSBydW5uaW5nIHRlc3RzLgorJG5v ZGUtPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK2F1dG92YWN1dW0gPSBv ZmYKK2NoZWNrcG9pbnRfdGltZW91dCA9IDFoCit3YWxfd3JpdGVyX2RlbGF5ID0gMTAwMDBtcwor d2FsX3dyaXRlcl9mbHVzaF9hZnRlciA9IDFHQgorKSk7Ciskbm9kZS0+c3RhcnQ7CisKKyMgU2V0 dXAuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIHRlc3Rf d2FsX3JlYWRfZnJvbV9idWZmZXJzOycpOworCisjIEdldCBjdXJyZW50IGluc2VydCBMU04uIEFm dGVyIHRoaXMsIHdlIGdlbmVyYXRlIHNvbWUgV0FMIHdoaWNoIGlzIGd1cmFudGVlZAorIyB0byBi ZSBpbiBXQUwgYnVmZmVycyBhcyB0aGVyZSBpcyBubyBvdGhlciBXQUwgZ2VuZXJhdGluZyBhY3Rp dml0eSBpcworIyBoYXBwZW5pbmcgb24gdGhlIHNlcnZlci4gV2UgdGhlbiB2ZXJpZnkgaWYgd2Ug Y2FuIHJlYWQgdGhlIFdBTCBmcm9tIFdBTAorIyBidWZmZXJzIHVzaW5nIHRoaXMgTFNOLgorbXkg JGxzbiA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCBwZ19jdXJyZW50X3dh bF9pbnNlcnRfbHNuKCk7Jyk7CisKKyMgR2VuZXJhdGUgbWluaW1hbCBXQUwgc28gdGhhdCBXQUwg YnVmZmVycyBkb24ndCBnZXQgb3ZlcndyaXR0ZW4uCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSB0IChjIGludCk7IElOU0VSVCBJTlRPIHQgVkFMVUVTICgxKTsi KTsKKworIyBDaGVjayBpZiBXQUwgaXMgc3VjY2Vzc2Z1bGx5IHJlYWQgZnJvbSBXQUwgYnVmZmVy cy4KK215ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXF7U0VMRUNU IHRlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzKCckbHNuJyk7fSk7CitpcygkcmVzdWx0LCAndCcs ICJXQUwgaXMgc3VjY2Vzc2Z1bGx5IHJlYWQgZnJvbSBXQUwgYnVmZmVycyIpOworCisjIENoZWNr IFdBTCByZWFkIGZyb20gYnVmZmVycyB3aXRoIHNvbWUgaW52YWxpZCBpbnB1dCBMU05zLgorJGxz biA9ICcwLzAnOworCitteSAoJHBzcWxfcmV0LCAkcHNxbF9zdGRvdXQsICRwc3FsX3N0ZGVycikg PSAoJycsJycsICcnKTsKKworIyBNdXN0IG5vdCB1c2Ugc2FmZV9wc3FsIHNpbmNlIHdlIGV4cGVj dCBhbiBlcnJvciBoZXJlLgorKCRwc3FsX3JldCwgJHBzcWxfc3Rkb3V0LCAkcHNxbF9zdGRlcnIp ID0gJG5vZGUtPnBzcWwoCisgICAgJ3Bvc3RncmVzJywKKyAgICBxcXtTRUxFQ1QgdGVzdF93YWxf cmVhZF9mcm9tX2J1ZmZlcnMoJyRsc24nKTt9KTsKK2xpa2UoJHBzcWxfc3RkZXJyLAorCSBxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gaW52YWxpZCBXQUwgc3RhcnQgTFNOICRsc24gc3BlY2lmaWVk IGZvciByZWFkaW5nIGZyb20gV0FMIGJ1ZmZlcnMvLAorICAgICAiV0FMIHJlYWQgZnJvbSBXQUwg YnVmZmVycyBmYWlsZWQgZHVlIHRvIGludmFsaWQgV0FMIHN0YXJ0IExTTiAkbHNuIik7CisKKyRs c24gPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgcGdfY3VycmVudF93YWxf Zmx1c2hfbHNuKCkrMTAwMDsnKTsKKworIyBNdXN0IG5vdCB1c2Ugc2FmZV9wc3FsIHNpbmNlIHdl IGV4cGVjdCBhbiBlcnJvciBoZXJlLgorKCRwc3FsX3JldCwgJHBzcWxfc3Rkb3V0LCAkcHNxbF9z dGRlcnIpID0gJG5vZGUtPnBzcWwoCisgICAgJ3Bvc3RncmVzJywKKyAgICBxcXtTRUxFQ1QgdGVz dF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMoJyRsc24nKTt9KTsKK2xpa2UoJHBzcWxfc3RkZXJyLAor CSBxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gaW52YWxpZCBXQUwgc3RhcnQgTFNOICRsc24gc3Bl Y2lmaWVkIGZvciByZWFkaW5nIGZyb20gV0FMIGJ1ZmZlcnMvLAorICAgICAiV0FMIHJlYWQgZnJv bSBXQUwgYnVmZmVycyBmYWlsZWQgZHVlIHRvIGludmFsaWQgV0FMIHN0YXJ0IExTTiAkbHNuIik7 CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dh bF9yZWFkX2Zyb21fYnVmZmVycy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy0tMS4wLnNxbCBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdGVzdF93YWxfcmVh ZF9mcm9tX2J1ZmZlcnMtLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uYzZmZmIzZmE2NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMtLTEuMC5z cWwKQEAgLTAsMCArMSwxNiBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zy b21fYnVmZmVycy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy0tMS4wLnNxbCAqLworCistLSBj b21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JF QVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3Rfd2FsX3JlYWRf ZnJvbV9idWZmZXJzIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0KKy0tIHRlc3Rfd2Fs X3JlYWRfZnJvbV9idWZmZXJzKCkKKy0tCistLSBSZXR1cm5zIHRydWUgaWYgV0FMIGRhdGEgYXQg YSBnaXZlbiBMU04gY2FuIGJlIHJlYWQgZnJvbSBXQUwgYnVmZmVycy4KKy0tIE90aGVyd2lzZSBy ZXR1cm5zIGZhbHNlLgorLS0KK0NSRUFURSBGVU5DVElPTiB0ZXN0X3dhbF9yZWFkX2Zyb21fYnVm ZmVycyhJTiBsc24gcGdfbHNuLAorICAgIHJlYWRfc3VjY2Vzc2Z1bCBPVVQgYm9vbGVhbgorKQor QVMgJ01PRFVMRV9QQVRITkFNRScsICd0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycycKK0xBTkdV QUdFIEMgU1RSSUNUOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFk X2Zyb21fYnVmZmVycy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy5jIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVy cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjIzMDdjYmZmN2EKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZm ZXJzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzLmMKQEAgLTAsMCArMSwzNyBAQAorLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHRlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzLmMKKyAqCQlU ZXN0IG1vZHVsZSB0byByZWFkIFdBTCBmcm9tIFdBTCBidWZmZXJzLgorICoKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFk X2Zyb21fYnVmZmVycy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy5jCisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3Mv eGxvZy5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKKwor UEdfTU9EVUxFX01BR0lDOworCisvKgorICogU1FMIGZ1bmN0aW9uIGZvciB2ZXJpZnlpbmcgdGhh dCBXQUwgZGF0YSBhdCBhIGdpdmVuIExTTiBjYW4gYmUgcmVhZCBmcm9tIFdBTAorICogYnVmZmVy cy4gUmV0dXJucyB0cnVlIGlmIHJlYWQgZnJvbSBXQUwgYnVmZmVycywgb3RoZXJ3aXNlIGZhbHNl LgorICovCitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzKTsK K0RhdHVtCit0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycyhQR19GVU5DVElPTl9BUkdTKQorewor CWNoYXIJCWRhdGFbWExPR19CTENLU1pdID0gezB9OworCVNpemUJCW5yZWFkOworCisJbnJlYWQg PSBYTG9nUmVhZEZyb21CdWZmZXJzKE5VTEwsIFBHX0dFVEFSR19MU04oMCksCisJCQkJCQkJCUdl dFdBTEluc2VydGlvblRpbWVMaW5lKCksCisJCQkJCQkJCVhMT0dfQkxDS1NaLCBkYXRhKTsKKwor CVBHX1JFVFVSTl9CT09MKG5yZWFkID4gMCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJz LmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzL3Rl c3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzLmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uZWRhOGQ0Nzk1NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZl cnMuY29udHJvbApAQCAtMCwwICsxLDQgQEAKK2NvbW1lbnQgPSAnVGVzdCBtb2R1bGUgdG8gcmVh ZCBXQUwgZnJvbSBXQUwgYnVmZmVycycKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVf cGF0aG5hbWUgPSAnJGxpYmRpci90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycycKK3JlbG9jYXRh YmxlID0gdHJ1ZQotLSAKMi4zNC4xCgo= --000000000000d44e6c060828a843--