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 1rS849-00BaoA-Jh for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jan 2024 04:07:14 +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 1rS848-0098Mo-N4 for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Jan 2024 04:07:12 +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 1rS848-0098Mf-5a for pgsql-hackers@lists.postgresql.org; Tue, 23 Jan 2024 04:07:12 +0000 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rS843-003Eji-QM for pgsql-hackers@lists.postgresql.org; Tue, 23 Jan 2024 04:07:11 +0000 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-6dbbcb1aff8so2456289b3a.3 for ; Mon, 22 Jan 2024 20:07:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1705982825; x=1706587625; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=PplF88oipp2JAEjDWyfh/1hT7N51Ol71mD9xGwLsBg0=; b=k2G1pDzHvRj/ZsdCJu5HBfMv64OCC50xB21bfEJUZqj2tJofTVRMOjik3D0kZHpJTP E2gLYRLgdYQMyym9EQhCk/ibkk+Rtm0QahZBJPYXsV+FIeKGwjsthN23mQhuvDcl3NYi pPBcXwly7p99vFMOuj5aRCxb9sbOUyNQtQe9JqmruGlMbAgxl4hYxOK+woEx8SgcrIys rJDiLvLzr1/Pt9VACH3eU8or9R8Ge4vgWWn4bYKrf79zVQLJVS86DAZo+ygrCJWo0Fdx 8wPv8leuS/ZAjxrqSOBaH6F9ws2pLFnP/z6xvcCdyETtGOAe64sOCfN/i36jm071CHZF hPkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705982825; x=1706587625; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=PplF88oipp2JAEjDWyfh/1hT7N51Ol71mD9xGwLsBg0=; b=cz1Ib2oyl01RJJP9Y6OxOPYzTuloQ3OQMY0RgaOfuE5EEzK8TMbCsGvysWtJrdTKhm Cx/5sktk++46P62uBVe0orrjCIA9dx2pLvLl29WZ9yH4qNwdfNhynf4c6AdpU8ujkSdT 7mp8lYIKhDhM3gRyKtU0BFkIhBScZE6YUyphTeT3bDOeLqhw12IBPSL6Tl+Uyg1dOBO9 lHROT0BzIMCbdriytNdV9D0/I5pN0pB1uhBQL6w4hIXpq8kHpq6ZboSb2ertlod39AL/ beShuVavZfyY5u/Lr0pPAg9QRQDfsbY7iZ+lKKlRLbea94OOTCGdj4TRJhroxYyDbwrT as+Q== X-Gm-Message-State: AOJu0YxGztw2MFg73bhDnC1atsaj7jqdpUe+WadvyEszsBhY1xb7/VCo bD02aP+A1lsBLH+24J+cIoPkuRDXea4Y3jM9stTov1QlfNaxFFyohUoOVvHWwA== X-Google-Smtp-Source: AGHT+IE5srXWta7++pIAKYqd54a/k5ULwwHfliqjFLxF/S9nKv5YIsNLJ5bE3+PDyy6vDOI/W/QY8g== X-Received: by 2002:a05:6a00:130f:b0:6db:af47:6da2 with SMTP id j15-20020a056a00130f00b006dbaf476da2mr3130593pfu.30.1705982825036; Mon, 22 Jan 2024 20:07:05 -0800 (PST) Received: from [172.18.10.37] ([12.126.244.130]) by smtp.gmail.com with ESMTPSA id cm7-20020a056a020a0700b005b7dd356f75sm8047977pgb.32.2024.01.22.20.07.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jan 2024 20:07:04 -0800 (PST) Message-ID: <2b36bf99e762e65db0dafbf8d338756cf5fa6ece.camel@j-davis.com> Subject: Re: Improve WALRead() to suck data directly from WAL buffers when possible From: Jeff Davis To: Andres Freund , Bharath Rupireddy Cc: Dilip Kumar , Kyotaro Horiguchi , pgsql-hackers@lists.postgresql.org, Nathan Bossart , Masahiko Sawada Date: Mon, 22 Jan 2024 20:07:03 -0800 In-Reply-To: <20240122201218.bclrdkwpmuk26fl3@awork3.anarazel.de> References: <20231104004348.zhxzk2p266i3r2z2@awork3.anarazel.de> <20231109205836.zjoawdrn4q77yemv@awork3.anarazel.de> <3750ff9c2a5556808827e7fc5bcc0bd16e9facf4.camel@j-davis.com> <73df9831747b01ced949102610dc44ca6026ee1c.camel@j-davis.com> <20240122201218.bclrdkwpmuk26fl3@awork3.anarazel.de> Content-Type: multipart/mixed; boundary="=-LyGlSaIIEn6d3kh3oXl8" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-LyGlSaIIEn6d3kh3oXl8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 2024-01-22 at 12:12 -0800, Andres Freund wrote: > I still think that anything that requires such checks shouldn't be > merged. It's completely bogus to check page contents for validity > when we > should have metadata telling us which range of the buffers is valid > and which > not. The check seems entirely unnecessary, to me. A leftover from v18? I have attached a new patch (version "19j") to illustrate some of my previous suggestions. I didn't spend a lot of time on it so it's not ready for commit, but I believe my suggestions are easier to understand in code form. Note that, right now, it only works for XLogSendPhysical(). I believe it's best to just make it work for 1-3 callers that we understand well, and we can generalize later if it makes sense. I'm still not clear on why some callers are reading XLOG_BLCKSZ (expecting zeros at the end), and if it's OK to just change them to use the exact byte count. Also, if we've detected that the first requested buffer has been evicted, is there any value in continuing the loop to see if more recent buffers are available? For example, if the requested LSNs range over buffers 4, 5, and 6, and 4 has already been evicted, should we try to return LSN data from 5 and 6 at the proper offset in the dest buffer? If so, we'd need to adjust the API so the caller knows what parts of the dest buffer were filled in. Regards, Jeff Davis --=-LyGlSaIIEn6d3kh3oXl8 Content-Disposition: attachment; filename="v19j-0001-Add-XLogReadFromBuffers.patch" Content-Type: text/x-patch; name="v19j-0001-Add-XLogReadFromBuffers.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAzNGQ4OWQ2Yjg2OWE0NTRmZDE1MDk3ZDhhMGYwYjZkMzk5N2E3NGRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDIyIEphbiAyMDI0IDE2OjIxOjUzIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MTlqIDEvMl0g QWRkIFhMb2dSZWFkRnJvbUJ1ZmZlcnMoKS4KCkFsbG93cyByZWFkaW5nIGRpcmVjdGx5IGZyb20g V0FMIGJ1ZmZlcnMgd2l0aG91dCBhIGxvY2ssIGF2b2lkaW5nIHRoZQpuZWVkIHRvIHdhaXQgZm9y IFdBTCBmbHVzaGluZyBhbmQgcmVhZCBmcm9tIHRoZSBmaWxlc3lzdGVtLgoKRm9yIG5vdywgdGhl IG9ubHkgY2FsbGVyIGlzIHBoeXNpY2FsIHJlcGxpY2F0aW9uLCBidXQgd2UgY2FuIGNvbnNpZGVy CmV4cGFuZGluZyBpdCB0byBvdGhlciBjYWxsZXJzIGFzIG5lZWRlZC4KCkF1dGhvcjogQmhhcmF0 aCBSdXBpcmVkZHkKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICB8IDE0 NSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyB8ICAxNCArKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAgICAgICAg IHwgICAyICsKIDMgZmlsZXMgY2hhbmdlZCwgMTUyIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDQ3ODM3N2M0YTIuLmM5NjE5MTM5 YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTY5OCw3ICs2OTgsNyBAQCBzdGF0 aWMgdm9pZCBSZXNlcnZlWExvZ0luc2VydExvY2F0aW9uKGludCBzaXplLCBYTG9nUmVjUHRyICpT dGFydFBvcywKIAkJCQkJCQkJCSAgWExvZ1JlY1B0ciAqRW5kUG9zLCBYTG9nUmVjUHRyICpQcmV2 UHRyKTsKIHN0YXRpYyBib29sIFJlc2VydmVYTG9nU3dpdGNoKFhMb2dSZWNQdHIgKlN0YXJ0UG9z LCBYTG9nUmVjUHRyICpFbmRQb3MsCiAJCQkJCQkJICBYTG9nUmVjUHRyICpQcmV2UHRyKTsKLXN0 YXRpYyBYTG9nUmVjUHRyIFdhaXRYTG9nSW5zZXJ0aW9uc1RvRmluaXNoKFhMb2dSZWNQdHIgdXB0 byk7CitzdGF0aWMgWExvZ1JlY1B0ciBXYWl0WExvZ0luc2VydGlvbnNUb0ZpbmlzaChYTG9nUmVj UHRyIHVwdG8sIGJvb2wgZW1pdExvZyk7CiBzdGF0aWMgY2hhciAqR2V0WExvZ0J1ZmZlcihYTG9n UmVjUHRyIHB0ciwgVGltZUxpbmVJRCB0bGkpOwogc3RhdGljIFhMb2dSZWNQdHIgWExvZ0J5dGVQ b3NUb1JlY1B0cih1aW50NjQgYnl0ZXBvcyk7CiBzdGF0aWMgWExvZ1JlY1B0ciBYTG9nQnl0ZVBv c1RvRW5kUmVjUHRyKHVpbnQ2NCBieXRlcG9zKTsKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIFdBTElu c2VydExvY2tVcGRhdGVJbnNlcnRpbmdBdChYTG9nUmVjUHRyIGluc2VydGluZ0F0KQogICogdG8g bWFrZSByb29tIGZvciBhIG5ldyBvbmUsIHdoaWNoIGluIHR1cm4gcmVxdWlyZXMgV0FMV3JpdGVM b2NrLgogICovCiBzdGF0aWMgWExvZ1JlY1B0cgotV2FpdFhMb2dJbnNlcnRpb25zVG9GaW5pc2go WExvZ1JlY1B0ciB1cHRvKQorV2FpdFhMb2dJbnNlcnRpb25zVG9GaW5pc2goWExvZ1JlY1B0ciB1 cHRvLCBib29sIGVtaXRMb2cpCiB7CiAJdWludDY0CQlieXRlcG9zOwogCVhMb2dSZWNQdHIJcmVz ZXJ2ZWRVcHRvOwpAQCAtMTUyMSw5ICsxNTIxLDEwIEBAIFdhaXRYTG9nSW5zZXJ0aW9uc1RvRmlu aXNoKFhMb2dSZWNQdHIgdXB0bykKIAkgKi8KIAlpZiAodXB0byA+IHJlc2VydmVkVXB0bykKIAl7 Ci0JCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coInJlcXVlc3QgdG8gZmx1c2ggcGFzdCBlbmQg b2YgZ2VuZXJhdGVkIFdBTDsgcmVxdWVzdCAlWC8lWCwgY3VycmVudCBwb3NpdGlvbiAlWC8lWCIs Ci0JCQkJCQlMU05fRk9STUFUX0FSR1ModXB0byksIExTTl9GT1JNQVRfQVJHUyhyZXNlcnZlZFVw dG8pKSkpOworCQlpZiAoZW1pdExvZykKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQkoZXJybXNnKCJy ZXF1ZXN0IHRvIGZsdXNoIHBhc3QgZW5kIG9mIGdlbmVyYXRlZCBXQUw7IHJlcXVlc3QgJVgvJVgs IGN1cnJlbnQgcG9zaXRpb24gJVgvJVgiLAorCQkJCQkJCUxTTl9GT1JNQVRfQVJHUyh1cHRvKSwg TFNOX0ZPUk1BVF9BUkdTKHJlc2VydmVkVXB0bykpKSk7CiAJCXVwdG8gPSByZXNlcnZlZFVwdG87 CiAJfQogCkBAIC0xNzA1LDYgKzE3MDYsMTMyIEBAIEdldFhMb2dCdWZmZXIoWExvZ1JlY1B0ciBw dHIsIFRpbWVMaW5lSUQgdGxpKQogCXJldHVybiBjYWNoZWRQb3MgKyBwdHIgJSBYTE9HX0JMQ0tT WjsKIH0KIAorLyoKKyAqIFJlYWQgV0FMIGRpcmVjdGx5IGZyb20gV0FMIGJ1ZmZlcnMsIGlmIGF2 YWlsYWJsZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJlYWRzICdjb3VudCcgYnl0ZXMgb2YgV0FM IGZyb20gV0FMIGJ1ZmZlcnMgaW50byAnYnVmJworICogc3RhcnRpbmcgYXQgbG9jYXRpb24gJ3N0 YXJ0cHRyJyBhbmQgcmV0dXJucyB0b3RhbCBieXRlcyByZWFkLgorICoKKyAqIFRoZSBieXRlcyBy ZWFkIG1heSBiZSBmZXdlciB0aGFuIHJlcXVlc3RlZCBpZiBhbnkgb2YgdGhlIFdBTCBidWZmZXJz IGluIHRoZQorICogcmVxdWVzdGVkIHJhbmdlIGhhdmUgYmVlbiBldmljdGVkLCBvciBpZiB0aGUg bGFzdCByZXF1ZXN0ZWQgYnl0ZSBpcyBiZXlvbmQKKyAqIHRoZSBJbnNlcnQgcG9pbnRlci4KKyAq CisgKiBJZiByZWFkaW5nIGJleW9uZCB0aGUgV3JpdGUgcG9pbnRlciwgdGhpcyBmdW5jdGlvbiB3 aWxsIHdhaXQgZm9yIGNvbmN1cmVudAorICogaW5zZXJ0ZXJzIHRvIGZpbmlzaC4gT3RoZXJ3aXNl LCBpdCBkb2VzIG5vdCB3YWl0IGF0IGFsbC4KKyAqCisgKiBUaGUgY2FsbGVyIG11c3QgZW5zdXJl IHRoYXQgaXQncyByZWFzb25hYmxlIHRvIHJlYWQgZnJvbSB0aGUgV0FMIGJ1ZmZlcnMsCisgKiBp LmUuIHRoYXQgdGhlIHJlcXVlc3RlZCBkYXRhIGlzIGZyb20gdGhlIGN1cnJlbnQgdGltZWxpbmUs IHRoYXQgd2UncmUgbm90CisgKiBpbiByZWNvdmVyeSwgZXRjLgorICovCitTaXplCitYTG9nUmVh ZEZyb21CdWZmZXJzKGNoYXIgKmJ1ZiwgWExvZ1JlY1B0ciBzdGFydHB0ciwgU2l6ZSBjb3VudCkK K3sKKwlYTG9nUmVjUHRyCSBwdHIJPSBzdGFydHB0cjsKKwlYTG9nUmVjUHRyCSB1cHRvCT0gc3Rh cnRwdHIgKyBjb3VudDsKKwlTaXplCQkgbmJ5dGVzID0gY291bnQ7CisJU2l6ZQkJIG50b3RhbCA9 IDA7CisJY2hhcgkJKmRzdAk9IGJ1ZjsKKworCUFzc2VydCghUmVjb3ZlcnlJblByb2dyZXNzKCkp OworCUFzc2VydCghWExvZ1JlY1B0cklzSW52YWxpZChzdGFydHB0cikpOworCisJLyoKKwkgKiBD YWxsZXIgcmVxdWVzdGVkIHZlcnkgcmVjZW50IFdBTCBkYXRhLiBXYWl0IGZvciBhbnkgaW4tcHJv Z3Jlc3MgV0FMCisJICogaW5zZXJ0aW9ucyB0byBXQUwgYnVmZmVycyB0byBmaW5pc2guCisJICoK KwkgKiBNb3N0IGNhbGxlcnMgd2lsbCBoYXZlIGFscmVhZHkgdXBkYXRlZCBMb2d3cnRSZXN1bHQg d2hlbiBkZXRlcm1pbmluZworCSAqIGhvdyBmYXIgdG8gcmVhZCwgYnV0IGl0J3MgT0sgaWYgaXQn cyBvdXQgb2YgZGF0ZS4gKFhYWDogaXMgaXQgd29ydGgKKwkgKiB0YWtpbmcgYSBzcGlubG9jayB0 byB1cGRhdGUgTG9nd3J0UmVzdWx0IGFuZCBjaGVjayBhZ2FpbiBiZWZvcmUgY2FsbGluZworCSAq IFdhaXRYTG9nSW5zZXJ0aW9uc1RvRmluaXNoKCk/KQorCSAqLworCWlmICh1cHRvID4gTG9nd3J0 UmVzdWx0LldyaXRlKQorCXsKKwkJWExvZ1JlY1B0ciB3cml0dGVuVXB0byA9IFdhaXRYTG9nSW5z ZXJ0aW9uc1RvRmluaXNoKHVwdG8sIGZhbHNlKTsKKworCQl1cHRvID0gTWluKHVwdG8sIHdyaXR0 ZW5VcHRvKTsKKwkJbmJ5dGVzID0gdXB0byAtIHN0YXJ0cHRyOworCX0KKworCS8qCisJICogTG9v cCB0aHJvdWdoIHRoZSBidWZmZXJzIHdpdGhvdXQgYSBsb2NrLiBGb3IgZWFjaCBidWZmZXIsIGF0 b21pY2FsbHkKKwkgKiByZWFkIGFuZCB2ZXJpZnkgdGhlIGVuZCBwb2ludGVyLCB0aGVuIGNvcHkg dGhlIGRhdGEgb3V0LCBhbmQgZmluYWxseQorCSAqIHJlLXJlYWQgYW5kIHJlLXZlcmlmeSB0aGUg ZW5kIHBvaW50ZXIuCisJICoKKwkgKiBPbmNlIGEgcGFnZSBpcyBldmljdGVkLCBpdCBuZXZlciBy ZXR1cm5zIHRvIHRoZSBXQUwgYnVmZmVycywgc28gaWYgdGhlCisJICogZW5kIHBvaW50ZXIgbWF0 Y2hlcyB0aGUgZXhwZWN0ZWQgZW5kIHBvaW50ZXIgYmVmb3JlIGFuZCBhZnRlciB3ZSBjb3B5CisJ ICogdGhlIGRhdGEsIHRoZW4gdGhlIHJpZ2h0IHBhZ2UgbXVzdCBoYXZlIGJlZW4gcHJlc2VudCBk dXJpbmcgdGhlIGRhdGEKKwkgKiBjb3B5LiBSZWFkIGJhcnJpZXJzIGFyZSBuZWNlc3NhcnkgdG8g ZW5zdXJlIHRoYXQgdGhlIGRhdGEgY29weSBhY3R1YWxseQorCSAqIGhhcHBlbnMgYmV0d2VlbiB0 aGUgdHdvIHZlcmlmaWNhdGlvbiBzdGVwcy4KKwkgKgorCSAqIElmIHRoZSB2ZXJpZmljYXRpb24g ZmFpbHMsIHdlIHNpbXBseSB0ZXJtaW5hdGUgdGhlIGxvb3AgYW5kIHJldHVybiB0aGUKKwkgKiBk YXRhIGhhZCBiZWVuIGFscmVhZHkgY29waWVkIG91dCBzdWNjZXNzZnVsbHkuCisJICovCisJd2hp bGUgKG5ieXRlcyA+IDApCisJeworCQlYTG9nUmVjUHRyCSBleHBlY3RlZEVuZFB0cjsKKwkJWExv Z1JlY1B0cgkgZW5kcHRyOworCQlpbnQJCQkgaWR4OworCQljb25zdCBjaGFyCSpwYWdlOworCQlj b25zdCBjaGFyCSpkYXRhOworCQlTaXplCQkgbnJlYWQ7CisKKwkJaWR4ID0gWExvZ1JlY1B0clRv QnVmSWR4KHB0cik7CisJCWV4cGVjdGVkRW5kUHRyID0gcHRyOworCQlleHBlY3RlZEVuZFB0ciAr PSBYTE9HX0JMQ0tTWiAtIHB0ciAlIFhMT0dfQkxDS1NaOworCisJCS8qCisJCSAqIEZpcnN0IHZl cmlmaWNhdGlvbiBzdGVwOiBjaGVjayB0aGF0IHRoZSBjb3JyZWN0IHBhZ2UgaXMgcHJlc2VudCBp bgorCQkgKiB0aGUgV0FMIGJ1ZmZlcnMKKwkJICovCisJCWVuZHB0ciA9IHBnX2F0b21pY19yZWFk X3U2NCgmWExvZ0N0bC0+eGxibG9ja3NbaWR4XSk7CisJCWlmIChleHBlY3RlZEVuZFB0ciAhPSBl bmRwdHIpCisJCQlicmVhazsKKworCQkvKgorCQkgKiBXZSBmb3VuZCBXQUwgYnVmZmVyIHBhZ2Ug Y29udGFpbmluZyBnaXZlbiBYTG9nUmVjUHRyLiBHZXQgc3RhcnRpbmcKKwkJICogYWRkcmVzcyBv ZiB0aGUgcGFnZSBhbmQgYSBwb2ludGVyIHRvIHRoZSByaWdodCBsb2NhdGlvbiBvZiBnaXZlbgor CQkgKiBYTG9nUmVjUHRyIGluIHRoYXQgcGFnZS4KKwkJICovCisJCXBhZ2UgPSBYTG9nQ3RsLT5w YWdlcyArIGlkeCAqIChTaXplKSBYTE9HX0JMQ0tTWjsKKwkJZGF0YSA9IHBhZ2UgKyBwdHIgJSBY TE9HX0JMQ0tTWjsKKworCQkvKgorCQkgKiBFbnN1cmUgdGhhdCB0aGUgZGF0YSBjb3B5IGFuZCB0 aGUgZmlyc3QgdmVyaWZpY2F0aW9uIHN0ZXAgYXJlIG5vdAorCQkgKiByZW9yZGVyZWQKKwkJICov CisJCXBnX3JlYWRfYmFycmllcigpOworCisJCS8qIGhvdyBtdWNoIGlzIGF2YWlsYWJsZSBvbiB0 aGlzIHBhZ2UgdG8gcmVhZD8gKi8KKwkJbnJlYWQgPSBNaW4obmJ5dGVzLCBYTE9HX0JMQ0tTWiAt IChkYXRhIC0gcGFnZSkpOworCisJCS8qIGRhdGEgY29weSAqLworCQltZW1jcHkoZHN0LCBkYXRh LCBucmVhZCk7CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgdGhlIGRhdGEgY29weSBhbmQgdGhl IHNlY29uZCB2ZXJpZmljYXRpb24gc3RlcCBhcmUgbm90CisJCSAqIHJlb3JkZXJlZC4KKwkJICov CisJCXBnX3JlYWRfYmFycmllcigpOworCisJCS8qCisJCSAqIFNlY29uZCB2ZXJpZmljYXRpb24g c3RlcDogY2hlY2sgdGhhdCB0aGUgcGFnZSB3ZSByZWFkIGZyb20gd2Fzbid0CisJCSAqIGV2aWN0 ZWQgd2hpbGUgd2Ugd2VyZSBjb3B5aW5nIHRoZSBkYXRhLgorCQkgKi8KKwkJZW5kcHRyID0gcGdf YXRvbWljX3JlYWRfdTY0KCZYTG9nQ3RsLT54bGJsb2Nrc1tpZHhdKTsKKwkJaWYgKGV4cGVjdGVk RW5kUHRyICE9IGVuZHB0cikKKwkJCWJyZWFrOworCisJCWRzdCArPSBucmVhZDsKKwkJcHRyICs9 IG5yZWFkOworCQludG90YWwgKz0gbnJlYWQ7CisJCW5ieXRlcyAtPSBucmVhZDsKKwl9CisKKwlB c3NlcnQobnRvdGFsIDw9IGNvdW50KTsKKworCXJldHVybiBudG90YWw7Cit9CisKIC8qCiAgKiBD b252ZXJ0cyBhICJ1c2FibGUgYnl0ZSBwb3NpdGlvbiIgdG8gWExvZ1JlY1B0ci4gQSB1c2FibGUg Ynl0ZSBwb3NpdGlvbgogICogaXMgdGhlIHBvc2l0aW9uIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lu bmluZyBvZiBXQUwsIGV4Y2x1ZGluZyBhbGwgV0FMCkBAIC0xODk1LDcgKzIwMjIsNyBAQCBBZHZh bmNlWExJbnNlcnRCdWZmZXIoWExvZ1JlY1B0ciB1cHRvLCBUaW1lTGluZUlEIHRsaSwgYm9vbCBv cHBvcnR1bmlzdGljKQogCQkJCSAqLwogCQkJCUxXTG9ja1JlbGVhc2UoV0FMQnVmTWFwcGluZ0xv Y2spOwogCi0JCQkJV2FpdFhMb2dJbnNlcnRpb25zVG9GaW5pc2goT2xkUGFnZVJxc3RQdHIpOwor CQkJCVdhaXRYTG9nSW5zZXJ0aW9uc1RvRmluaXNoKE9sZFBhZ2VScXN0UHRyLCB0cnVlKTsKIAog CQkJCUxXTG9ja0FjcXVpcmUoV0FMV3JpdGVMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC0yNjg5 LDcgKzI4MTYsNyBAQCBYTG9nRmx1c2goWExvZ1JlY1B0ciByZWNvcmQpCiAJCSAqIEJlZm9yZSBh Y3R1YWxseSBwZXJmb3JtaW5nIHRoZSB3cml0ZSwgd2FpdCBmb3IgYWxsIGluLWZsaWdodAogCQkg KiBpbnNlcnRpb25zIHRvIHRoZSBwYWdlcyB3ZSdyZSBhYm91dCB0byB3cml0ZSB0byBmaW5pc2gu CiAJCSAqLwotCQlpbnNlcnRwb3MgPSBXYWl0WExvZ0luc2VydGlvbnNUb0ZpbmlzaChXcml0ZVJx c3RQdHIpOworCQlpbnNlcnRwb3MgPSBXYWl0WExvZ0luc2VydGlvbnNUb0ZpbmlzaChXcml0ZVJx c3RQdHIsIHRydWUpOwogCiAJCS8qCiAJCSAqIFRyeSB0byBnZXQgdGhlIHdyaXRlIGxvY2suIElm IHdlIGNhbid0IGdldCBpdCBpbW1lZGlhdGVseSwgd2FpdApAQCAtMjc0MCw3ICsyODY3LDcgQEAg WExvZ0ZsdXNoKFhMb2dSZWNQdHIgcmVjb3JkKQogCQkJICogV2UncmUgb25seSBjYWxsaW5nIGl0 IGFnYWluIHRvIGFsbG93IGluc2VydHBvcyB0byBiZSBtb3ZlZAogCQkJICogZnVydGhlciBmb3J3 YXJkLCBub3QgdG8gYWN0dWFsbHkgd2FpdCBmb3IgYW55b25lLgogCQkJICovCi0JCQlpbnNlcnRw b3MgPSBXYWl0WExvZ0luc2VydGlvbnNUb0ZpbmlzaChpbnNlcnRwb3MpOworCQkJaW5zZXJ0cG9z ID0gV2FpdFhMb2dJbnNlcnRpb25zVG9GaW5pc2goaW5zZXJ0cG9zLCB0cnVlKTsKIAkJfQogCiAJ CS8qIHRyeSB0byB3cml0ZS9mbHVzaCBsYXRlciBhZGRpdGlvbnMgdG8gWExPRyBhcyB3ZWxsICov CkBAIC0yOTE5LDcgKzMwNDYsNyBAQCBYTG9nQmFja2dyb3VuZEZsdXNoKHZvaWQpCiAJU1RBUlRf Q1JJVF9TRUNUSU9OKCk7CiAKIAkvKiBub3cgd2FpdCBmb3IgYW55IGluLXByb2dyZXNzIGluc2Vy dGlvbnMgdG8gZmluaXNoIGFuZCBnZXQgd3JpdGUgbG9jayAqLwotCVdhaXRYTG9nSW5zZXJ0aW9u c1RvRmluaXNoKFdyaXRlUnFzdC5Xcml0ZSk7CisJV2FpdFhMb2dJbnNlcnRpb25zVG9GaW5pc2go V3JpdGVScXN0LldyaXRlLCB0cnVlKTsKIAlMV0xvY2tBY3F1aXJlKFdBTFdyaXRlTG9jaywgTFdf RVhDTFVTSVZFKTsKIAlMb2d3cnRSZXN1bHQgPSBYTG9nQ3RsLT5Mb2d3cnRSZXN1bHQ7CiAJaWYg KFdyaXRlUnFzdC5Xcml0ZSA+IExvZ3dydFJlc3VsdC5Xcml0ZSB8fApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxzZW5kZXIuYwppbmRleCAwODcwMzFlOWRjLi5iMDZmNWU3NWQ2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtMzEyNSw2ICszMTI1LDIwIEBAIFhMb2dTZW5kUGh5c2lj YWwodm9pZCkKIAllbmxhcmdlU3RyaW5nSW5mbygmb3V0cHV0X21lc3NhZ2UsIG5ieXRlcyk7CiAK IHJldHJ5OgorCS8qCisJICogUmVhZCBmcm9tIFdBTCBidWZmZXJzLCBpZiBhdmFpbGFibGUuCisJ ICovCisJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJgorCQl4bG9ncmVhZGVyLT5zZWcud3Nf dGxpID09IEdldFdBTEluc2VydGlvblRpbWVMaW5lKCkpCisJeworCQlTaXplIHJieXRlcyA9IFhM b2dSZWFkRnJvbUJ1ZmZlcnMoCisJCQkmb3V0cHV0X21lc3NhZ2UuZGF0YVtvdXRwdXRfbWVzc2Fn ZS5sZW5dLAorCQkJc3RhcnRwdHIsIG5ieXRlcyk7CisJCW91dHB1dF9tZXNzYWdlLmxlbiArPSBy Ynl0ZXM7CisJCXN0YXJ0cHRyICs9IHJieXRlczsKKwkJbmJ5dGVzIC09IHJieXRlczsKKwl9CisK IAlpZiAoIVdBTFJlYWQoeGxvZ3JlYWRlciwKIAkJCQkgJm91dHB1dF9tZXNzYWdlLmRhdGFbb3V0 cHV0X21lc3NhZ2UubGVuXSwKIAkJCQkgc3RhcnRwdHIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCAzMDFjNWZh MTFmLi41ZjI2MjFiMGI5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTI1Miw2ICsyNTIsOCBAQCBleHRlcm4g WExvZ1JlY1B0ciBHZXRMYXN0SW1wb3J0YW50UmVjUHRyKHZvaWQpOwogCiBleHRlcm4gdm9pZCBT ZXRXYWxXcml0ZXJTbGVlcGluZyhib29sIHNsZWVwaW5nKTsKIAorZXh0ZXJuIFNpemUgWExvZ1Jl YWRGcm9tQnVmZmVycyhjaGFyICpidWYsIFhMb2dSZWNQdHIgc3RhcnRwdHIsIFNpemUgY291bnQp OworCiAvKgogICogUm91dGluZXMgdXNlZCBieSB4bG9ncmVjb3ZlcnkuYyB0byBjYWxsIGJhY2sg aW50byB4bG9nLmMgZHVyaW5nIHJlY292ZXJ5LgogICovCi0tIAoyLjM0LjEKCg== --=-LyGlSaIIEn6d3kh3oXl8 Content-Disposition: attachment; filename*0=v19j-0002-Add-test-module-for-verifying-WAL-read-from-WAL.pat; filename*1=ch Content-Type: text/x-patch; name="v19j-0002-Add-test-module-for-verifying-WAL-read-from-WAL.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBmYzliYmJjMjhjNTlmNWMwYTg4ZDY1OGY3NmJmYzQyMWY5YjllMzRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTAgSmFuIDIwMjQgMTM6MzY6MTUgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxOWogMi8yXSBBZGQgdGVzdCBtb2R1bGUgZm9yIHZlcmlmeWlu ZyBXQUwgcmVhZCBmcm9tIFdBTAogYnVmZmVycwoKVGhpcyBjb21taXQgYWRkcyBhIHRlc3QgbW9k dWxlIHRvIHZlcmlmeSBXQUwgcmVhZCBmcm9tIFdBTApidWZmZXJzLgoKQXV0aG9yOiBCaGFyYXRo IFJ1cGlyZWRkeQpSZXZpZXdlZC1ieTogRGlsaXAgS3VtYXIKRGlzY3Vzc2lvbjogaHR0cHM6Ly93 d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUxqMkFDWEtLSyUzRHdiaUc1X3Q2ZEdhbzVH b2VjTXdSa2hyN0dqVkJNX2pnNTQlMkJOYSUzRFElNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy90 ZXN0L21vZHVsZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy90ZXN0 L21vZHVsZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAxICsKIC4uLi90ZXN0X3dh bF9yZWFkX2Zyb21fYnVmZmVycy8uZ2l0aWdub3JlICAgICB8ICA0ICsrCiAuLi4vdGVzdF93YWxf cmVhZF9mcm9tX2J1ZmZlcnMvTWFrZWZpbGUgICAgICAgfCAyMyArKysrKysrKwogLi4uL3Rlc3Rf d2FsX3JlYWRfZnJvbV9idWZmZXJzL21lc29uLmJ1aWxkICAgIHwgMzMgKysrKysrKysrKysrCiAu Li4vdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdC8wMDFfYmFzaWMucGwgfCA1NCArKysrKysr KysrKysrKysrKysrCiAuLi4vdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMtLTEuMC5zcWwgICAg ICAgfCAxNiArKysrKysKIC4uLi90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy5jICAgICAgICAg ICAgICB8IDM3ICsrKysrKysrKysrKysKIC4uLi90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy5j b250cm9sICAgICAgICB8ICA0ICsrCiA5IGZpbGVzIGNoYW5nZWQsIDE3MyBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21f YnVmZmVycy8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvbWVzb24uYnVpbGQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZm ZXJzL3QvMDAxX2Jhc2ljLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy0tMS4w LnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9m cm9tX2J1ZmZlcnMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdGVzdF93YWxf cmVhZF9mcm9tX2J1ZmZlcnMuY29udHJvbAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv TWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCmluZGV4IGUzMmM4OTI1ZjYuLmM2 ZTFmMDFkY2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQpAQCAtMzQsNiArMzQsNyBAQCBTVUJESVJTID0gXAogCQkg IHRlc3RfcmxzX2hvb2tzIFwKIAkJICB0ZXN0X3NobV9tcSBcCiAJCSAgdGVzdF9zbHJ1IFwKKwkJ ICB0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycyBcCiAJCSAgdW5zYWZlX3Rlc3RzIFwKIAkJICB3 b3JrZXJfc3BpIFwKIAkJICB4aWRfd3JhcGFyb3VuZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKaW5kZXggMzk3 ZTA5MDZlNi4uOTU5NWJiYzM0MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5i dWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC0zMiw2ICszMiw3IEBA IHN1YmRpcigndGVzdF9yZXNvd25lcicpCiBzdWJkaXIoJ3Rlc3RfcmxzX2hvb2tzJykKIHN1YmRp cigndGVzdF9zaG1fbXEnKQogc3ViZGlyKCd0ZXN0X3NscnUnKQorc3ViZGlyKCd0ZXN0X3dhbF9y ZWFkX2Zyb21fYnVmZmVycycpCiBzdWJkaXIoJ3Vuc2FmZV90ZXN0cycpCiBzdWJkaXIoJ3dvcmtl cl9zcGknKQogc3ViZGlyKCd4aWRfd3JhcGFyb3VuZCcpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzLy5naXRpZ25vcmUgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWRjYjNmZjk3MgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvLmdpdGlnbm9yZQpA QCAtMCwwICsxLDQgQEAKKyMgR2VuZXJhdGVkIHN1YmRpcmVjdG9yaWVzCisvbG9nLworL3Jlc3Vs dHMvCisvdG1wX2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9y ZWFkX2Zyb21fYnVmZmVycy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVh ZF9mcm9tX2J1ZmZlcnMvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNzQ3MjQ5NDUwMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvTWFrZWZpbGUKQEAgLTAsMCArMSwyMyBAQAorIyBzcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzL01ha2VmaWxlCisKK01PRFVM RV9iaWcgPSB0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycworT0JKUyA9IFwKKwkkKFdJTjMyUkVT KSBcCisJdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMubworUEdGSUxFREVTQyA9ICJ0ZXN0X3dh bF9yZWFkX2Zyb21fYnVmZmVycyAtIHRlc3QgbW9kdWxlIHRvIHJlYWQgV0FMIGZyb20gV0FMIGJ1 ZmZlcnMiCisKK0VYVEVOU0lPTiA9IHRlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzCitEQVRBID0g dGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMtLTEuMC5zcWwKKworVEFQX1RFU1RTID0gMQorCitp ZmRlZiBVU0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQoc2hlbGwgJChQ R19DT05GSUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGlyID0gc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycwordG9wX2J1aWxkZGlyID0gLi4v Li4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2lu Y2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy9tZXNv bi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvbWVz b24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDBiZDVkY2Qz MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9t X2J1ZmZlcnMvbWVzb24uYnVpbGQKQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQgKGMpIDIw MjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3Rlc3Rfd2FsX3JlYWRf ZnJvbV9idWZmZXJzX3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZm ZXJzLmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycKKyAgdGVzdF93YWxfcmVh ZF9mcm9tX2J1ZmZlcnNfc291cmNlcyArPSByY19saWJfZ2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMs IGV4dHJhX2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJz JywKKyAgICAnLS1GSUxFREVTQycsICd0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycyAtIHRlc3Qg bW9kdWxlIHRvIHJlYWQgV0FMIGZyb20gV0FMIGJ1ZmZlcnMnLF0pCitlbmRpZgorCit0ZXN0X3dh bF9yZWFkX2Zyb21fYnVmZmVycyA9IHNoYXJlZF9tb2R1bGUoJ3Rlc3Rfd2FsX3JlYWRfZnJvbV9i dWZmZXJzJywKKyAgdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnNfc291cmNlcywKKyAga3dhcmdz OiBwZ190ZXN0X21vZF9hcmdzLAorKQordGVzdF9pbnN0YWxsX2xpYnMgKz0gdGVzdF93YWxfcmVh ZF9mcm9tX2J1ZmZlcnMKKwordGVzdF9pbnN0YWxsX2RhdGEgKz0gZmlsZXMoCisgICd0ZXN0X3dh bF9yZWFkX2Zyb21fYnVmZmVycy5jb250cm9sJywKKyAgJ3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZm ZXJzLS0xLjAuc3FsJywKKykKKwordGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X3dhbF9yZWFk X2Zyb21fYnVmZmVycycsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAn YmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAndGFwJzogeworICAgICd0ZXN0cyc6 IFsKKyAgICAgICd0LzAwMV9iYXNpYy5wbCcsCisgICAgXSwKKyAgfSwKK30KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdC8wMDFfYmFzaWMu cGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzL3QvMDAxX2Jh c2ljLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjFkODQyYmIwMmUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9i dWZmZXJzL3QvMDAxX2Jhc2ljLnBsCkBAIC0wLDAgKzEsNTQgQEAKKyMgQ29weXJpZ2h0IChjKSAy MDIxLTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRub2RlID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCd0ZXN0Jyk7CisKKyRub2RlLT5pbml0Owor CisjIEVuc3VyZSBub2JvZHkgaW50ZXJmZXJlcyB3aXRoIHVzIHNvIHRoYXQgdGhlIFdBTCBpbiBX QUwgYnVmZmVycyBkb24ndCBnZXQKKyMgb3ZlcndyaXR0ZW4gd2hpbGUgcnVubmluZyB0ZXN0cy4K KyRub2RlLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCithdXRvdmFjdXVt ID0gb2ZmCitjaGVja3BvaW50X3RpbWVvdXQgPSAxaAord2FsX3dyaXRlcl9kZWxheSA9IDEwMDAw bXMKK3dhbF93cml0ZXJfZmx1c2hfYWZ0ZXIgPSAxR0IKKykpOworJG5vZGUtPnN0YXJ0OworCisj IFNldHVwLgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiB0 ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVyczsnKTsKKworIyBHZXQgY3VycmVudCBpbnNlcnQgTFNO LiBBZnRlciB0aGlzLCB3ZSBnZW5lcmF0ZSBzb21lIFdBTCB3aGljaCBpcyBndXJhbnRlZWQKKyMg dG8gYmUgaW4gV0FMIGJ1ZmZlcnMgYXMgdGhlcmUgaXMgbm8gb3RoZXIgV0FMIGdlbmVyYXRpbmcg YWN0aXZpdHkgaXMKKyMgaGFwcGVuaW5nIG9uIHRoZSBzZXJ2ZXIuIFdlIHRoZW4gdmVyaWZ5IGlm IHdlIGNhbiByZWFkIHRoZSBXQUwgZnJvbSBXQUwKKyMgYnVmZmVycyB1c2luZyB0aGlzIExTTi4K K215ICRsc24gPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgcGdfY3VycmVu dF93YWxfaW5zZXJ0X2xzbigpOycpOworCisjIEdlbmVyYXRlIG1pbmltYWwgV0FMIHNvIHRoYXQg V0FMIGJ1ZmZlcnMgZG9uJ3QgZ2V0IG92ZXJ3cml0dGVuLgorJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdCAoYyBpbnQpOyBJTlNFUlQgSU5UTyB0IFZBTFVFUyAo MSk7Iik7CisKKyMgQ2hlY2sgaWYgV0FMIGlzIHN1Y2Nlc3NmdWxseSByZWFkIGZyb20gV0FMIGJ1 ZmZlcnMuCitteSAkcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFxe1NF TEVDVCB0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycygnJGxzbicpO30pOworaXMoJHJlc3VsdCwg J3QnLCAiV0FMIGlzIHN1Y2Nlc3NmdWxseSByZWFkIGZyb20gV0FMIGJ1ZmZlcnMiKTsKKworIyBD aGVjayB3aXRoIGEgV0FMIHRoYXQgZG9lc24ndCB5ZXQgZXhpc3QuCiskbHNuID0gJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2ZsdXNoX2xzbigpKzgx OTI7Jyk7CiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFxe1NFTEVD VCB0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycygnJGxzbicpO30pOworaXMoJHJlc3VsdCwgJ2Yn LCAiV0FMIHRoYXQgZG9lc24ndCB5ZXQgZXhpc3QgaXMgbm90IHJlYWQgZnJvbSBXQUwgYnVmZmVy cyIpOworCisjIENoZWNrIHdpdGggaW52YWxpZCBpbnB1dC4KKyRyZXN1bHQgPSAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXF7U0VMRUNUIHRlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJz KCcwLzAnKTt9KTsKK2lzKCRyZXN1bHQsICdmJywgIldBTCBpcyBub3QgcmVhZCBmcm9tIFdBTCBi dWZmZXJzIHdpdGggaW52YWxpZCBpbnB1dCIpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdGVzdF93YWxf cmVhZF9mcm9tX2J1ZmZlcnMtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3Jl YWRfZnJvbV9idWZmZXJzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzLS0xLjAuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmM2ZmZiM2ZhNjUKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzL3Rlc3Rf d2FsX3JlYWRfZnJvbV9idWZmZXJzLS0xLjAuc3FsCkBAIC0wLDAgKzEsMTYgQEAKKy8qIHNyYy90 ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdGVzdF93YWxfcmVhZF9mcm9t X2J1ZmZlcnMtLTEuMC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQg aW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JF QVRFIEVYVEVOU0lPTiB0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycyIgdG8gbG9hZCB0aGlzIGZp bGUuIFxxdWl0CisKKy0tCistLSB0ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycygpCistLQorLS0g UmV0dXJucyB0cnVlIGlmIFdBTCBkYXRhIGF0IGEgZ2l2ZW4gTFNOIGNhbiBiZSByZWFkIGZyb20g V0FMIGJ1ZmZlcnMuCistLSBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KKy0tCitDUkVBVEUgRlVO Q1RJT04gdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMoSU4gbHNuIHBnX2xzbiwKKyAgICByZWFk X3N1Y2Nlc3NmdWwgT1VUIGJvb2xlYW4KKykKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAndGVzdF93 YWxfcmVhZF9mcm9tX2J1ZmZlcnMnCitMQU5HVUFHRSBDIFNUUklDVDsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdGVzdF93YWxfcmVhZF9m cm9tX2J1ZmZlcnMuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZl cnMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi41MzY4ZjU5YjE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVy cy5jCkBAIC0wLDAgKzEsMzcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X3dh bF9yZWFkX2Zyb21fYnVmZmVycy5jCisgKgkJVGVzdCBtb2R1bGUgdG8gcmVhZCBXQUwgZnJvbSBX QUwgYnVmZmVycy4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjMsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCXNy Yy90ZXN0L21vZHVsZXMvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMvdGVzdF93YWxfcmVhZF9m cm9tX2J1ZmZlcnMuYworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0 Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisj aW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCisKK1BHX01PRFVMRV9NQUdJQzsKKworLyoKKyAqIFNR TCBmdW5jdGlvbiBmb3IgdmVyaWZ5aW5nIHRoYXQgV0FMIGRhdGEgYXQgYSBnaXZlbiBMU04gY2Fu IGJlIHJlYWQgZnJvbSBXQUwKKyAqIGJ1ZmZlcnMuIFJldHVybnMgdHJ1ZSBpZiByZWFkIGZyb20g V0FMIGJ1ZmZlcnMsIG90aGVyd2lzZSBmYWxzZS4KKyAqLworUEdfRlVOQ1RJT05fSU5GT19WMSh0 ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycyk7CitEYXR1bQordGVzdF93YWxfcmVhZF9mcm9tX2J1 ZmZlcnMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlYTG9nUmVjUHRyCXN0YXJ0cHRyCQkgID0gUEdf R0VUQVJHX0xTTigwKTsKKwljaGFyCQlkYXRhW1hMT0dfQkxDS1NaXSA9IHswfTsKKwlTaXplCQlu cmVhZAkJCSAgPSAwOworCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKHN0YXJ0cHRyKSkKKwkJ bnJlYWQgPSBYTG9nUmVhZEZyb21CdWZmZXJzKGRhdGEsIHN0YXJ0cHRyLCBYTE9HX0JMQ0tTWik7 CisKKwlQR19SRVRVUk5fQk9PTChucmVhZCA+IDApOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVm ZmVycy5jb250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVy cy90ZXN0X3dhbF9yZWFkX2Zyb21fYnVmZmVycy5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLmVkYThkNDc5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9idWZmZXJzL3Rlc3Rfd2FsX3JlYWRfZnJvbV9i dWZmZXJzLmNvbnRyb2wKQEAgLTAsMCArMSw0IEBACitjb21tZW50ID0gJ1Rlc3QgbW9kdWxlIHRv IHJlYWQgV0FMIGZyb20gV0FMIGJ1ZmZlcnMnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9k dWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvdGVzdF93YWxfcmVhZF9mcm9tX2J1ZmZlcnMnCityZWxv Y2F0YWJsZSA9IHRydWUKLS0gCjIuMzQuMQoK --=-LyGlSaIIEn6d3kh3oXl8--