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 1tl2sP-008rTO-Ew for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Feb 2025 09:29:49 +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 1tl2sO-003jNs-02 for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Feb 2025 09:29:48 +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 1tl2sN-003jLA-7f for pgsql-hackers@lists.postgresql.org; Thu, 20 Feb 2025 09:29:47 +0000 Received: from mail-yw1-x1135.google.com ([2607:f8b0:4864:20::1135]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tl2sL-001sHB-11 for pgsql-hackers@postgresql.org; Thu, 20 Feb 2025 09:29:46 +0000 Received: by mail-yw1-x1135.google.com with SMTP id 00721157ae682-6f9625c0fccso5966307b3.1 for ; Thu, 20 Feb 2025 01:29:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1740043784; x=1740648584; 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=YzDmJbjRNhQcTNRmVhJrCE50YTVhtN6shFSWTyDMCm4=; b=AMQAlBvNZwwpyZ/QTY2prLePFWoFk/DISbXNUKviN0k094fPAkSd5+LF3/vlJkVx9p g8+oXjxThCkStH8WyAq9wfv5Jmh6y0sAR5iujQSY4XLYgfLg9rdsYS3Fo0BgLqa7FVv/ Sg9LnDMEf5HLyyLiUrQPKQxzKoPz5+/DnX2Hg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740043784; x=1740648584; 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=YzDmJbjRNhQcTNRmVhJrCE50YTVhtN6shFSWTyDMCm4=; b=e471LuzLOcKGtv9k71WyCwWLmJ8l5b30AdlyIe6prRUeDVrSf9c1GRRxutDW1XR//u 8F9NXpYsxBta6L6qi9c6Z1gbJDnfB/cG+Tr5Czf15+U2KMQOzxaEJ8CUHRS5dLkrgnSi 7A45WU90kXW97V/TeTiX7NuwjhrB2ydlATq1C4Hcrm/TJQvt4RVxxJFSca79IeAUMXAx EJx/kDfHRdlf3CaOKRMywRMMOp0nQg6euqFK+6ZFTKwC23ReoYViaTYhHPa9c7ZlSQ4s N4oWk6zBkBGNqWPlco+b8Na7ZImC/UzjVbhlaow/4h55E6dumq3aAStiCVv01LxktRgB p2zg== X-Forwarded-Encrypted: i=1; AJvYcCWV4M8HSQJk5DvNH6toY2cxKCOqYYdUs2Ga1tQs+gDPwFyYSEZHneunvmUa/SoGSJ2gLZ0x4xNWwUBL0p/Y@postgresql.org X-Gm-Message-State: AOJu0Yzkvc8FrxxGktYDt1vfAPQ1xXUl76pVf8aTFPhqah5pQY8+tkS4 HD3amsLV891JhPdzpF/SP8HcXf1y6IW/aM+MIgLRsakqk3pvGCUywYdLs1c2MRhDCJrngUsL+9M tdJAB4rxqzaO1pYXEQPDOidtUBykXIIVOb2O2yg== X-Gm-Gg: ASbGncvwEqdDpADmZh9AH5xUEbGBMtSy5O3rMnatlB1TYWm+FuVjtm7QR5yUSYUCr0L 9gU1NAbZMYEs6omnpgSHNHIvO4QlpO1uSakaqB6vUE5wEKXBofNg8yu3uJFj0FVjAbfUhu3u+ X-Google-Smtp-Source: AGHT+IF6+EdLAyYvEMyJYmwCiuGkfXFjoWlMbSC5Et6oqNYk020OZEnnL61uyJpdJKRgnnTTV6NqHcsFWqVHcF96DlY= X-Received: by 2002:a05:690c:4d89:b0:6f9:4306:5d0b with SMTP id 00721157ae682-6fb58272257mr190721747b3.6.1740043783947; Thu, 20 Feb 2025 01:29:43 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Anthonin Bonnefoy Date: Thu, 20 Feb 2025 10:29:33 +0100 X-Gm-Features: AWEUYZmwwSwUguEYJoNOYwCVWlpEg5aAcdh9ESrpInnI9Rkd81F4aXHvEdMxueI Message-ID: Subject: Re: Add Pipelining support in psql To: Michael Paquier Cc: Jelte Fennema-Nio , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a3b38d062e8f8368" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a3b38d062e8f8368 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Feb 20, 2025 at 9:02=E2=80=AFAM Michael Paquier wrote: > You have forgotten the expected output. Not a big issue as the input > was sent. I was writing the mail with the missing file when you sent this mail. This is fixed. > While testing, I have been able to run into an assertion failure by > adding some tests in psql.sql to check for the case of inactive > branches for \if. For example: > --- a/src/test/regress/sql/psql.sql > +++ b/src/test/regress/sql/psql.sql > @@ -1047,11 +1047,15 @@ select \if false \\ (bogus \else \\ 42 \endif \\ = forty_two; > \echo arg1 arg2 arg3 arg4 arg5 > \echo arg1 > \encoding arg1 > + \endpipeline > \errverbose > > And the report: > +psql: mainloop.c:513: MainLoop: Assertion `conditional_active(cond_stack= )' failed. > > We should have tests for all new six meta-commands in psql.sql. > MainLoop() is wrong when in pipeline mode for inactive branches. Ha yeah, I forgot about the inactive branches. I've added the new commands and fixed the behaviour. A small issue I've noticed while testing: When a pipeline has at least one queue command, pqClearConnErrorState isn't called in PQsendQueryStart and errors are appended. For example: \startpipeline select 1 \bind \g select 1; PQsendQuery not allowed in pipeline mode select 1; PQsendQuery not allowed in pipeline mode PQsendQuery not allowed in pipeline mode This looks more like an issue on libpq's side as there's no way to reset or advance the errorReported from ExecQueryAndProcessResults (plus PQerrorMessage seems to ignore errorReported). I've added an additional test to track this behaviour for now as this would probably be better discussed in a dedicated thread. --000000000000a3b38d062e8f8368 Content-Type: application/octet-stream; name="v09-0002-Add-prompt-interpolation-and-variables-for-psql-.patch" Content-Disposition: attachment; filename="v09-0002-Add-prompt-interpolation-and-variables-for-psql-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7d51k9c1 RnJvbSA3NGNmZWEyMjNiZDQ2YWY5YWY2MTBkNjE1MDc2MTUxYThkNmY4NzYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA ZGF0YWRvZ2hxLmNvbT4KRGF0ZTogVHVlLCAxOCBGZWIgMjAyNSAxNTozMjozMSArMDEwMApTdWJq ZWN0OiBBZGQgcHJvbXB0IGludGVycG9sYXRpb24gYW5kIHZhcmlhYmxlcyBmb3IgcHNxbCBwaXBl bGluZQoKQWRkICVQIHByb21wdCBpbnRlcnBvbGF0aW9uIHRoYXQgcmVwb3J0cyB0aGUgc3RhdHVz IHBpcGVsaW5lOiBvbiwgb2ZmIG9yCmFib3J0LiBBZGRpdGlvbmFsbHksIDMgbmV3IHNwZWNpYWwg dmFyaWFibGVzIGFyZSBhZGRlZCB0byByZXBvcnQgdGhlCnN0YXR1cyBvZiBhbiBvbmdvaW5nIHBp cGVsaW5lOgotIFBJUEVMSU5FX1NZTkNfQ09VTlQ6IHJlcG9ydHMgdGhlIG51bWJlciBvZiBwaXBl ZCBzeW5jCi0gUElQRUxJTkVfQ09NTUFORF9DT1VOVDogcmVwb3J0cyB0aGUgbnVtYmVyIG9mIHBp cGVkIGNvbW1hbmRzLCBhCiAgY29tbWFuZCBiZWluZyBlaXRoZXIgXGJpbmQsIFxiaW5kX25hbWVk LCBcY2xvc2Ugb3IgXHBhcnNlCi0gUElQRUxJTkVfUkVTVUxUX0NPVU5UOiByZXBvcnRzIHRoZSBy ZXN1bHRzIGF2YWlsYWJsZSB0byByZWFkIHdpdGgKICBcZ2V0cmVzdWx0cwotLS0KIGRvYy9zcmMv c2dtbC9yZWYvcHNxbC1yZWYuc2dtbCB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9iaW4vcHNxbC9jb21tb24uYyAgICAgICAgICB8IDI3ICsrKysrKysrKysrKysr KysrKy0KIHNyYy9iaW4vcHNxbC9wcm9tcHQuYyAgICAgICAgICB8IDEyICsrKysrKysrKwogc3Jj L2Jpbi9wc3FsL3N0YXJ0dXAuYyAgICAgICAgIHwgIDUgKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA5 MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCmluZGV4 IGZkYWUxZWQwNDc5Li4wOTFjYmFlZmMxNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9w c3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbApAQCAtMzcy Myw2ICszNzIzLDEyIEBAIHRlc3RkYj0mZ3Q7IDx1c2VyaW5wdXQ+XHNldGVudiBMRVNTIC1pbXg0 RjwvdXNlcmlucHV0PgogICAgICAgICAgIGdlbmVyYXRlIG9uZSByZXN1bHQgdG8gZ2V0LgogICAg ICAgIDwvcGFyYT4KIAorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBXaGVuIHBpcGVsaW5lIG1v ZGUgaXMgYWN0aXZlLCBhIGRlZGljYXRlZCBwcm9tcHQgdmFyaWFibGUgaXMKKyAgICAgICAgICBh dmFpbGFibGUgdG8gcmVwb3J0IHRoZSBwaXBlbGluZSBzdGF0dXMuIFNlZQorICAgICAgICAgIDx4 cmVmIGxpbmtlbmQ9ImFwcC1wc3FsLXByb21wdGluZy1wLXVjIi8+IGZvciBtb3JlIGRldGFpbHMK KyAgICAgICA8L3BhcmE+CisKICAgICAgICA8cGFyYT4KICAgICAgICAgRXhhbXBsZToKIDxwcm9n cmFtbGlzdGluZz4KQEAgLTQ1MDQsNiArNDUxMCwzOCBAQCBiYXIKICAgICAgICAgPC9saXN0aXRl bT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5IGlkPSJhcHAt cHNxbC12YXJpYWJsZXMtcGlwZWxpbmUtY29tbWFuZC1jb3VudCI+CisgICAgICAgIDx0ZXJtPjx2 YXJuYW1lPlBJUEVMSU5FX0NPTU1BTkRfQ09VTlQ8L3Zhcm5hbWU+PC90ZXJtPgorICAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbnVtYmVyIG9mIGNvbW1hbmRz IGdlbmVyYXRlZCBieSA8bGl0ZXJhbD5cYmluZDwvbGl0ZXJhbD4sCisgICAgICAgIDxsaXRlcmFs PlxiaW5kX25hbWVkPC9saXRlcmFsPiwgPGxpdGVyYWw+XGNsb3NlPC9saXRlcmFsPiBvcgorICAg ICAgICA8bGl0ZXJhbD5ccGFyc2U8L2xpdGVyYWw+IHF1ZXVlZCBpbiBhbiBvbmdvaW5nIHBpcGVs aW5lLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iYXBwLXBzcWwtdmFyaWFibGVzLXBp cGVsaW5lLXJlc3VsdC1jb3VudCI+CisgICAgICAgIDx0ZXJtPjx2YXJuYW1lPlBJUEVMSU5FX1JF U1VMVF9DT1VOVDwvdmFybmFtZT48L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg PHBhcmE+CisgICAgICAgIFRoZSBudW1iZXIgb2YgY29tbWFuZHMgb2YgYW4gb25nb2luZyBwaXBl bGluZSB0aGF0IHdlcmUgZm9sbG93ZWQKKyAgICAgICAgYnkgZWl0aGVyIGEgPGNvbW1hbmQ+XGZs dXNocmVxdWVzdDwvY29tbWFuZD4gb3IgYQorICAgICAgICA8Y29tbWFuZD5cc3luY3BpcGVsaW5l PC9jb21tYW5kPiwgZm9yY2luZyB0aGUgc2VydmVyIHRvIHNlbmQgdGhlCisgICAgICAgIHJlc3Vs dHMgYW5kIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCA8Y29tbWFuZD5cZ2V0cmVzdWx0czwvY29tbWFu ZD4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlz dGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5IGlkPSJhcHAtcHNxbC12YXJpYWJsZXMtcGlw ZWxpbmUtc3luYy1jb3VudCI+CisgICAgICAgIDx0ZXJtPjx2YXJuYW1lPlBJUEVMSU5FX1NZTkNf Q09VTlQ8L3Zhcm5hbWU+PC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJh PgorICAgICAgICBUaGUgbnVtYmVyIG9mIHN5bmNzIHF1ZXVlZCBpbiBhbiBvbmdvaW5nIHBpcGVs aW5lLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iYXBwLXBzcWwtdmFyaWFibGVzLXBv cnQiPgogICAgICAgICA8dGVybT48dmFybmFtZT5QT1JUPC92YXJuYW1lPjwvdGVybT4KICAgICAg ICAgPGxpc3RpdGVtPgpAQCAtNDkwMyw2ICs0OTQxLDE3IEBAIHRlc3RkYj0mZ3Q7IDx1c2VyaW5w dXQ+SU5TRVJUIElOVE8gbXlfdGFibGUgVkFMVUVTICg6J2NvbnRlbnQnKTs8L3VzZXJpbnB1dD4K ICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFy bGlzdGVudHJ5IGlkPSJhcHAtcHNxbC1wcm9tcHRpbmctcC11YyI+CisgICAgICAgIDx0ZXJtPjxs aXRlcmFsPiVQPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8 cGFyYT4KKyAgICAgICAgUGlwZWxpbmUgc3RhdHVzOiA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IHdo ZW4gbm90IGluIGEgcGlwZWxpbmUsCisgICAgICAgIG9yIDxsaXRlcmFsPm9uPC9saXRlcmFsPiB3 aGVuIGluIGFuIG9uZ29pbmcgcGlwZWxpbmUsIG9yCisgICAgICAgIDxsaXRlcmFsPmFib3J0PC9s aXRlcmFsPiB3aGVuIGluIGFuIGFib3J0ZWQgcGlwZWxpbmUuCisgICAgICAgIDwvcGFyYT4KKyAg ICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgICA8dmFybGlz dGVudHJ5IGlkPSJhcHAtcHNxbC1wcm9tcHRpbmctciI+CiAgICAgICAgIDx0ZXJtPjxsaXRlcmFs PiVSPC9saXRlcmFsPjwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2NvbW1vbi5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCmluZGV4IGI3ZmU1NTVk NTZjLi4zZDY3YWQ3OTNiZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCisrKyBi L3NyYy9iaW4vcHNxbC9jb21tb24uYwpAQCAtNTI0LDYgKzUyNCwyNiBAQCBTZXRTaGVsbFJlc3Vs dFZhcmlhYmxlcyhpbnQgd2FpdF9yZXN1bHQpCiB9CiAKIAorLyoKKyAqIFNldCBzcGVjaWFsIHBp cGVsaW5lIHZhcmlhYmxlcworICogLSBQSVBFTElORV9TWU5DX0NPVU5UOiBUaGUgbnVtYmVyIG9m IHBpcGVkIHN5bmNzCisgKiAtIFBJUEVMSU5FX0NPTU1BTkRfQ09VTlQ6IFRoZSBudW1iZXIgb2Yg cGlwZWQgY29tbWFuZHMKKyAqIC0gUElQRUxJTkVfUkVTVUxUX0NPVU5UOiBUaGUgbnVtYmVyIG9m IHJlc3VsdHMgYXZhaWxhYmxlIHRvIHJlYWQKKyAqLworc3RhdGljIHZvaWQKK1NldFBpcGVsaW5l VmFyaWFibGVzKHZvaWQpCit7CisJY2hhcgkJYnVmWzMyXTsKKworCXNucHJpbnRmKGJ1Ziwgc2l6 ZW9mKGJ1ZiksICIlZCIsIHBzZXQucGlwZWRfc3luY3MpOworCVNldFZhcmlhYmxlKHBzZXQudmFy cywgIlBJUEVMSU5FX1NZTkNfQ09VTlQiLCBidWYpOworCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1 ZiksICIlZCIsIHBzZXQucGlwZWRfY29tbWFuZHMpOworCVNldFZhcmlhYmxlKHBzZXQudmFycywg IlBJUEVMSU5FX0NPTU1BTkRfQ09VTlQiLCBidWYpOworCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1 ZiksICIlZCIsIHBzZXQuYXZhaWxhYmxlX3Jlc3VsdHMpOworCVNldFZhcmlhYmxlKHBzZXQudmFy cywgIlBJUEVMSU5FX1JFU1VMVF9DT1VOVCIsIGJ1Zik7Cit9CisKKwogLyoKICAqIENsZWFyT3JT YXZlUmVzdWx0CiAgKgpAQCAtMTY1NSw2ICsxNjc1LDggQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jl c3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAKIAkJQ2hlY2tDb25uZWN0aW9uKCk7CiAKKwkJU2V0 UGlwZWxpbmVWYXJpYWJsZXMoKTsKKwogCQlyZXR1cm4gLTE7CiAJfQogCkBAIC0xNjYzLDggKzE2 ODUsMTAgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAJ ewogCQkvKgogCQkgKiBXZSdyZSBpbiBhIHBpcGVsaW5lIGFuZCBoYXZlbid0IHJlYWNoZWQgdGhl IHBpcGVsaW5lIGVuZCBvciB0aGVyZQotCQkgKiB3YXMgbm8gcmVxdWVzdCB0byByZWFkIHBpcGVs aW5lIHJlc3VsdHMsIGV4aXQuCisJCSAqIHdhcyBubyByZXF1ZXN0IHRvIHJlYWQgcGlwZWxpbmUg cmVzdWx0cywgdXBkYXRlIHBzcWwgdmFyaWFibGVzIGFuZAorCQkgKiBleGl0LgogCQkgKi8KKwkJ U2V0UGlwZWxpbmVWYXJpYWJsZXMoKTsKIAkJcmV0dXJuIDE7CiAJfQogCkBAIC0yMDk3LDYgKzIx MjEsNyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkJ QXNzZXJ0KHBzZXQuYXZhaWxhYmxlX3Jlc3VsdHMgPT0gMCk7CiAJfQogCUFzc2VydChwc2V0LnJl cXVlc3RlZF9yZXN1bHRzID09IDApOworCVNldFBpcGVsaW5lVmFyaWFibGVzKCk7CiAKIAkvKiBt YXkgbmVlZCB0aGlzIHRvIHJlY292ZXIgZnJvbSBjb25uIGxvc3MgZHVyaW5nIENPUFkgKi8KIAlp ZiAoIUNoZWNrQ29ubmVjdGlvbigpKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3Byb21wdC5j IGIvc3JjL2Jpbi9wc3FsL3Byb21wdC5jCmluZGV4IDA4YTE0ZmViM2MzLi43ODUwNTIyMmUwMSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3Byb21wdC5jCisrKyBiL3NyYy9iaW4vcHNxbC9wcm9t cHQuYwpAQCAtMzEsNiArMzEsNyBAQAogICoJCXNvY2tldHMsICJbbG9jYWw6L2Rpci9uYW1lXSIg aWYgbm90IGRlZmF1bHQKICAqICVtIC0gbGlrZSAlTSwgYnV0IGhvc3RuYW1lIG9ubHkgKGJlZm9y ZSBmaXJzdCBkb3QpLCBvciBhbHdheXMgIltsb2NhbF0iCiAgKiAlcCAtIGJhY2tlbmQgcGlkCisg KiAlUCAtIHBpcGVsaW5lIHN0YXR1czogb24sIG9mZiBvciBhYm9ydAogICogJT4gLSBkYXRhYmFz ZSBzZXJ2ZXIgcG9ydCBudW1iZXIKICAqICVuIC0gZGF0YWJhc2UgdXNlciBuYW1lCiAgKiAlcyAt IHNlcnZpY2UKQEAgLTE4MSw3ICsxODIsMTggQEAgZ2V0X3Byb21wdChwcm9tcHRTdGF0dXNfdCBz dGF0dXMsIENvbmRpdGlvbmFsU3RhY2sgY3N0YWNrKQogCQkJCQkJCXNucHJpbnRmKGJ1Ziwgc2l6 ZW9mKGJ1ZiksICIlZCIsIHBpZCk7CiAJCQkJCX0KIAkJCQkJYnJlYWs7CisJCQkJY2FzZSAnUCc6 CisJCQkJCXsKKwkJCQkJCVBHcGlwZWxpbmVTdGF0dXMgc3RhdHVzID0gUFFwaXBlbGluZVN0YXR1 cyhwc2V0LmRiKTsKIAorCQkJCQkJaWYgKHN0YXR1cyA9PSBQUV9QSVBFTElORV9PTikKKwkJCQkJ CQlzdHJsY3B5KGJ1ZiwgIm9uIiwgc2l6ZW9mKGJ1ZikpOworCQkJCQkJZWxzZSBpZiAoc3RhdHVz ID09IFBRX1BJUEVMSU5FX0FCT1JURUQpCisJCQkJCQkJc3RybGNweShidWYsICJhYm9ydCIsIHNp emVvZihidWYpKTsKKwkJCQkJCWVsc2UKKwkJCQkJCQlzdHJsY3B5KGJ1ZiwgIm9mZiIsIHNpemVv ZihidWYpKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CiAJCQkJY2FzZSAnMCc6CiAJCQkJY2FzZSAn MSc6CiAJCQkJY2FzZSAnMic6CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvc3RhcnR1cC5jIGIv c3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYwppbmRleCA3MDNmM2Y1ODJjMS4uNTAxOGVlZGYxZTUgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3N0YXJ0 dXAuYwpAQCAtMjA1LDYgKzIwNSwxMSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ U2V0VmFyaWFibGUocHNldC52YXJzLCAiUFJPTVBUMyIsIERFRkFVTFRfUFJPTVBUMyk7CiAJU2V0 VmFyaWFibGVCb29sKHBzZXQudmFycywgIlNIT1dfQUxMX1JFU1VMVFMiKTsKIAorCS8qIEluaXRp YWxpemUgcGlwZWxpbmUgdmFyaWFibGVzICovCisJU2V0VmFyaWFibGUocHNldC52YXJzLCAiUElQ RUxJTkVfU1lOQ19DT1VOVCIsICIwIik7CisJU2V0VmFyaWFibGUocHNldC52YXJzLCAiUElQRUxJ TkVfQ09NTUFORF9DT1VOVCIsICIwIik7CisJU2V0VmFyaWFibGUocHNldC52YXJzLCAiUElQRUxJ TkVfUkVTVUxUX0NPVU5UIiwgIjAiKTsKKwogCXBhcnNlX3BzcWxfb3B0aW9ucyhhcmdjLCBhcmd2 LCAmb3B0aW9ucyk7CiAKIAkvKgotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000a3b38d062e8f8368 Content-Type: application/octet-stream; name="v09-0001-Add-pipelining-support-in-psql.patch" Content-Disposition: attachment; filename="v09-0001-Add-pipelining-support-in-psql.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7d51k980 RnJvbSBiMGIyODU3NWUyYjJkYTAyN2NmYzBhMzdlOTJkYTRiOWUwNzdiMTM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA ZGF0YWRvZ2hxLmNvbT4KRGF0ZTogVHVlLCA1IE5vdiAyMDI0IDEwOjI2OjU0ICswMTAwClN1Ympl Y3Q6IEFkZCBwaXBlbGluaW5nIHN1cHBvcnQgaW4gcHNxbAoKV2l0aCBcYmluZCwgXHBhcnNlLCBc YmluZF9uYW1lZCBhbmQgXGNsb3NlLCBpdCBpcyBwb3NzaWJsZSB0byBpc3N1ZQpxdWVyaWVzIGZy b20gcHNxbCB1c2luZyB0aGUgZXh0ZW5kZWQgcHJvdG9jb2wuIEhvd2V2ZXIsIGl0IHdhc24ndApw b3NzaWJsZSB0byBzZW5kIHRob3NlIHF1ZXJpZXMgdXNpbmcgcGlwZWxpbmluZyBhbmQgdGhlIG9u bHkgd2F5IHRvIHRlc3QKcGlwZWxpbmVkIHF1ZXJpZXMgd2FzIHRocm91Z2ggcGdiZW5jaCdzIHRh cCB0ZXN0cy4KClRoaXMgcGF0Y2ggYWRkcyBhZGRpdGlvbmFsIHBzcWwgbWV0YS1jb21tYW5kcyB0 byBzdXBwb3J0IHBpcGVsaW5pbmc6ClxzdGFydHBpcGVsaW5lLCBcZW5kcGlwZWxpbmUgYW5kIFxz eW5jcGlwZWxpbmUsIG1pcnJvcmluZyB0aGUgZXhpc3RpbmcKbWV0YS1jb21tYW5kcyBpbiBwZ2Jl bmNoLiBBZGRpdGlvbmFsIG1ldGEtY29tbWFuZHMgYWxsb3cgdG8gZmx1c2ggYW5kCnJlYWQgcmVz dWx0cyBvZiBhbiBvbmdvaW5nIHBpcGVsaW5lOiBcZmx1c2hyZXF1ZXN0LCBcZmx1c2ggYW5kIFxn ZXRyZXN1bHRzCgpcc3RhcnRwaXBlbGluZSBzdGFydHMgYSBuZXcgcGlwZWxpbmUuIEFsbCBleHRl bmRlZCBxdWVyaWVzIHdpbGwgYmUKcXVldWVkIHVudGlsIHRoZSBlbmQgb2YgdGhlIHBpcGVsaW5l IGlzIHJlYWNoZWQuClxlbmRwaXBlbGluZSBlbmRzIGFuIG9uZ29pbmcgcGlwZWxpbmUuIEFsbCBx dWV1ZWQgY29tbWFuZHMgd2lsbCBiZSBzZW50CnRvIHRoZSBzZXJ2ZXIgYW5kIGFsbCByZXNwb25z ZXMgd2lsbCBiZSBwcm9jZXNzZWQgYnkgdGhlIHBzcWwuClxzeW5jcGlwZWxpbmUgcXVldWVzIGEg c3luY2hyb25pc2F0aW9uIHBvaW50IHdpdGhvdXQgZmx1c2hpbmcgdGhlCmNvbW1hbmRzIHRvIHRo ZSBzZXJ2ZXIKXGZsdXNoIENhbGwgUFFmbHVzaCBvbiBwc3FsJ3MgY29ubmVjdGlvbgpcZmx1c2hy ZXF1ZXN0IHF1ZXVlcyBhIGZsdXNocmVxdWVzdApcZ2V0cmVzdWx0cyByZWFkcyBzZXJ2ZXIncyBy ZXN1bHRzLiBVbnNlbnQgZGF0YSBhcmUgYXV0b21hdGljYWxseSBwdXNoZWQKd2hlbiBcZ2V0cmVz dWx0cyBpcyBjYWxsZWQKClRob3NlIG1ldGEtY29tbWFuZHMgd2lsbCBhbGxvdyB0byB0ZXN0IHBp cGVsaW5lIGJlaGF2aW91ciB1c2luZwpwc3FsIHJlZ3Jlc3Npb24gdGVzdHMuCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sICAgICAgICAgICAgICB8ICA3MCArKwogc3JjL2Jpbi9w c3FsL2NvbW1hbmQuYyAgICAgICAgICAgICAgICAgICAgICB8IDE2OSArKysrKwogc3JjL2Jpbi9w c3FsL2NvbW1vbi5jICAgICAgICAgICAgICAgICAgICAgICB8IDI3OSArKysrKysrLQogc3JjL2Jp bi9wc3FsL2hlbHAuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiBzcmMvYmluL3Bz cWwvc2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsKIHNyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQgICAgICAgICAgfCAgIDYgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wc3FsX3BpcGVsaW5lLm91dCB8IDY4NCArKysrKysrKysrKysrKysrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHNxbC5zcWwgICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9wc3FsX3BpcGVsaW5lLnNxbCAgICAgIHwgNDA4ICsrKysrKysrKysrKwogMTEgZmls ZXMgY2hhbmdlZCwgMTY0MCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWxfcGlwZWxpbmUub3V0CiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbF9waXBlbGluZS5zcWwK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL3BzcWwtcmVmLnNnbWwKaW5kZXggZjMwNDRmYWMxZmEuLmZkYWUxZWQwNDc5IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9wc3FsLXJlZi5zZ21sCkBAIC0zNjc0LDYgKzM2NzQsNzYgQEAgdGVzdGRiPSZndDsgPHVz ZXJpbnB1dD5cc2V0ZW52IExFU1MgLWlteDRGPC91c2VyaW5wdXQ+CiAgICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJhcHAt cHNxbC1tZXRhLWNvbW1hbmQtcGlwZWxpbmUiPgorICAgICAgPHRlcm0+PGxpdGVyYWw+XHN0YXJ0 cGlwZWxpbmU8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgPHRlcm0+PGxpdGVyYWw+XHN5bmNwaXBl bGluZTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8dGVybT48bGl0ZXJhbD5cZW5kcGlwZWxpbmU8 L2xpdGVyYWw+PC90ZXJtPgorICAgICAgPHRlcm0+PGxpdGVyYWw+XGZsdXNocmVxdWVzdDwvbGl0 ZXJhbD48L3Rlcm0+CisgICAgICA8dGVybT48bGl0ZXJhbD5cZmx1c2g8L2xpdGVyYWw+PC90ZXJt PgorICAgICAgPHRlcm0+PGxpdGVyYWw+XGdldHJlc3VsdHMgWyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bnVtYmVyX3Jlc3VsdHM8L3JlcGxhY2VhYmxlPiBdPC9saXRlcmFsPjwvdGVy bT4KKworICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGdy b3VwIG9mIGNvbW1hbmRzIGltcGxlbWVudHMgcGlwZWxpbmluZyBvZiBTUUwgc3RhdGVtZW50cy4K KyAgICAgICAgICBBIHBpcGVsaW5lIG11c3QgYmVnaW4gd2l0aCBhIDxjb21tYW5kPlxzdGFydHBp cGVsaW5lPC9jb21tYW5kPgorICAgICAgICAgIGFuZCBlbmQgd2l0aCBhbiA8Y29tbWFuZD5cZW5k cGlwZWxpbmU8L2NvbW1hbmQ+LiBJbiBiZXR3ZWVuIHRoZXJlCisgICAgICAgICAgbWF5IGJlIGFu eSBudW1iZXIgb2YgPGNvbW1hbmQ+XHN5bmNwaXBlbGluZTwvY29tbWFuZD4gY29tbWFuZHMsCisg ICAgICAgICAgd2hpY2ggc2VuZHMgYSA8bGluayBsaW5rZW5kPSJwcm90b2NvbC1mbG93LWV4dC1x dWVyeSI+c3luYyBtZXNzYWdlPC9saW5rPgorICAgICAgICAgIHdpdGhvdXQgZW5kaW5nIHRoZSBv bmdvaW5nIHBpcGVsaW5lIGFuZCBmbHVzaGluZyB0aGUgc2VuZCBidWZmZXIuCisgICAgICAgICAg SW4gcGlwZWxpbmUgbW9kZSwgc3RhdGVtZW50cyBhcmUgc2VudCB0byB0aGUgc2VydmVyIHdpdGhv dXQgd2FpdGluZworICAgICAgICAgIGZvciB0aGUgcmVzdWx0cyBvZiBwcmV2aW91cyBzdGF0ZW1l bnRzLiAgU2VlCisgICAgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtcGlwZWxpbmUtbW9kZSIv PiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAg ICAgICAgICBQaXBlbGluZSBtb2RlIHJlcXVpcmVzIHRoZSB1c2Ugb2YgZXh0ZW5kZWQgcXVlcnkg cHJvdG9jb2wuIEFsbCBxdWVyaWVzIG5lZWQKKyAgICAgICAgICB0byBiZSBzZW50IHVzaW5nIHRo ZSBtZXRhLWNvbW1hbmRzIDxsaXRlcmFsPlxiaW5kPC9saXRlcmFsPiwKKyAgICAgICAgICA8bGl0 ZXJhbD5cYmluZF9uYW1lZDwvbGl0ZXJhbD4sIDxsaXRlcmFsPlxjbG9zZTwvbGl0ZXJhbD4gb3IK KyAgICAgICAgICA8bGl0ZXJhbD5ccGFyc2U8L2xpdGVyYWw+LiBXaGlsZSBhIHBpcGVsaW5lIGlz IG9uZ29pbmcsCisgICAgICAgICAgPGxpdGVyYWw+XGc8L2xpdGVyYWw+IHdpbGwgYXBwZW5kIHRo ZSBjdXJyZW50IHF1ZXJ5IGJ1ZmZlciB0byB0aGUgcGlwZWxpbmUgYW5kCisgICAgICAgICAgb3Ro ZXIgbWV0YS1jb21tYW5kcyBsaWtlIDxsaXRlcmFsPlxneDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+ XGdkZXNjPC9saXRlcmFsPgorICAgICAgICAgIGFyZSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBt b2RlLgorICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8Y29tbWFu ZD5cZmx1c2hyZXF1ZXN0PC9jb21tYW5kPiBhcHBlbmRzIGEgZmx1c2ggY29tbWFuZCB0byB0aGUg cGlwZWxpbmUsCisgICAgICAgICAgYWxsb3dpbmcgdG8gcmVhZCByZXN1bHRzIHdpdGggPGNvbW1h bmQ+XGdldHJlc3VsdHM8L2NvbW1hbmQ+IHdpdGhvdXQgaXNzdWluZworICAgICAgICAgIGEgc3lu YyBvciBlbmRpbmcgdGhlIHBpcGVsaW5lLiA8Y29tbWFuZD5cZ2V0cmVzdWx0czwvY29tbWFuZD4g d2lsbCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgcHVzaCB1bnNlbnQgZGF0YSB0byB0aGUgc2Vy dmVyLiA8Y29tbWFuZD5cZmx1c2g8L2NvbW1hbmQ+IGNhbiBiZSB1c2VkIHRvIG1hbnVhbGx5Cisg ICAgICAgICAgcHVzaCB1bnNlbnQgZGF0YS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBh cmE+CisgICAgICAgICAgPGNvbW1hbmQ+XGdldHJlc3VsdHM8L2NvbW1hbmQ+IGFjY2VwdHMgYW4g b3B0aW9uYWwKKyAgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtYmVy X3Jlc3VsdHM8L3JlcGxhY2VhYmxlPiBwYXJhbWV0ZXIuIElmIHByb3ZpZGVkLAorICAgICAgICAg IG9ubHkgdGhlIGZpcnN0IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1iZXJfcmVz dWx0czwvcmVwbGFjZWFibGU+IHBlbmRpbmcKKyAgICAgICAgICByZXN1bHRzIHdpbGwgYmUgcmVh ZC4gSWYgbm90IHByb3ZpZGVkIG9yIDAsIGFsbCBwZW5kaW5nIHJlc3VsdHMgYXJlIHJlYWQuIFRo ZQorICAgICAgICAgIGNvbW1hbmRzIDxsaXRlcmFsPlxiaW5kPC9saXRlcmFsPiwgPGxpdGVyYWw+ XGJpbmRfbmFtZWQ8L2xpdGVyYWw+LAorICAgICAgICAgIDxsaXRlcmFsPlxjbG9zZTwvbGl0ZXJh bD4sIDxsaXRlcmFsPlxwYXJzZTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPlxzeW5jcGlwZWxpbmU8 L2xpdGVyYWw+CisgICAgICAgICAgZ2VuZXJhdGUgb25lIHJlc3VsdCB0byBnZXQuCisgICAgICAg PC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rp bmc+Citcc3RhcnRwaXBlbGluZQorU0VMRUNUIDEgXGJpbmQgXGcKK1NFTEVDVCAkMSBccGFyc2Ug c3RtdDEKK1xiaW5kX25hbWVkIHN0bXQxIDEgXGcKK1NFTEVDVCBwZ19jdXJyZW50X3hhY3RfaWQo KSBcYmluZCBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMKK1xzeW5jcGlwZWxpbmUKK1NF TEVDVCBwZ19jdXJyZW50X3hhY3RfaWQoKSBcYmluZCBcZworXGZsdXNocmVxdWVzdAorXGdldHJl c3VsdHMgMgorXGNsb3NlIHN0bXQxCitcZW5kcGlwZWxpbmUKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9w YXJhPgorCisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogCiAgICAg ICA8dmFybGlzdGVudHJ5IGlkPSJhcHAtcHNxbC1tZXRhLWNvbW1hbmQtdC1sYyI+CiAgICAgICAg IDx0ZXJtPjxsaXRlcmFsPlx0PC9saXRlcmFsPjwvdGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCmluZGV4IDI2ZGZkZGUxOTVh Li4xYzYyYTU0YzA2YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9z cmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC05MCw5ICs5MCwxMiBAQCBzdGF0aWMgYmFja3NsYXNo UmVzdWx0IGV4ZWNfY29tbWFuZF9lbHNlKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgQ29uZGl0 aW9uYWxTdAogCQkJCQkJCQkJCSBQUUV4cEJ1ZmZlciBxdWVyeV9idWYpOwogc3RhdGljIGJhY2tz bGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZW5kaWYoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBD b25kaXRpb25hbFN0YWNrIGNzdGFjaywKIAkJCQkJCQkJCQkgIFBRRXhwQnVmZmVyIHF1ZXJ5X2J1 Zik7CitzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9lbmRwaXBlbGluZShQc3Fs U2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFja3Ns YXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9lbmNvZGluZyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUs IGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFu ZF9lcnJ2ZXJib3NlKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNo KTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2YoUHNxbFNjYW5TdGF0ZSBz Y2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOworc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBl eGVjX2NvbW1hbmRfZmx1c2goUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9i cmFuY2gpOworc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZmx1c2hyZXF1ZXN0 KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRpYyBi YWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2coUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBi b29sIGFjdGl2ZV9icmFuY2gsCiAJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmNtZCk7CiBzdGF0aWMg YmFja3NsYXNoUmVzdWx0IHByb2Nlc3NfY29tbWFuZF9nX29wdGlvbnMoY2hhciAqZmlyc3Rfb3B0 aW9uLApAQCAtMTAzLDYgKzEwNiw3IEBAIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21t YW5kX2dkZXNjKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfCiBzdGF0aWMg YmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9nZXRlbnYoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0 YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqY21kKTsK IHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2dleGVjKFBzcWxTY2FuU3RhdGUg c2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQg ZXhlY19jb21tYW5kX2dldHJlc3VsdHMoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFj dGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZ3NldChQ c3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFj a3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9oZWxwKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwg Ym9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5k X2h0bWwoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwpAQCAt MTMyLDYgKzEzNiw4IEBAIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX3NldGVu dihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlCiAJCQkJCQkJCQkJICAgY29u c3QgY2hhciAqY21kKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX3NmX3N2 KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJCQkJCQkJ CSAgY29uc3QgY2hhciAqY21kLCBib29sIGlzX2Z1bmMpOworc3RhdGljIGJhY2tzbGFzaFJlc3Vs dCBleGVjX2NvbW1hbmRfc3RhcnRwaXBlbGluZShQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJv b2wgYWN0aXZlX2JyYW5jaCk7CitzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9z eW5jcGlwZWxpbmUoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gp Owogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfdChQc3FsU2NhblN0YXRlIHNj YW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4 ZWNfY29tbWFuZF9UKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNo KTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX3RpbWluZyhQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CkBAIC0zNTEsMTggKzM1NywyNiBA QCBleGVjX2NvbW1hbmQoY29uc3QgY2hhciAqY21kLAogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRf ZWxzZShzY2FuX3N0YXRlLCBjc3RhY2ssIHF1ZXJ5X2J1Zik7CiAJZWxzZSBpZiAoc3RyY21wKGNt ZCwgImVuZGlmIikgPT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2VuZGlmKHNjYW5fc3Rh dGUsIGNzdGFjaywgcXVlcnlfYnVmKTsKKwllbHNlIGlmIChzdHJjbXAoY21kLCAiZW5kcGlwZWxp bmUiKSA9PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZW5kcGlwZWxpbmUoc2Nhbl9zdGF0 ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImVuY29kaW5nIikgPT0g MCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2VuY29kaW5nKHNjYW5fc3RhdGUsIGFjdGl2ZV9i cmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJlcnJ2ZXJib3NlIikgPT0gMCkKIAkJc3Rh dHVzID0gZXhlY19jb21tYW5kX2VycnZlcmJvc2Uoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7 CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImYiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1h bmRfZihzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKKwllbHNlIGlmIChzdHJjbXAoY21kLCAi Zmx1c2giKSA9PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZmx1c2goc2Nhbl9zdGF0ZSwg YWN0aXZlX2JyYW5jaCk7CisJZWxzZSBpZiAoc3RyY21wKGNtZCwgImZsdXNocmVxdWVzdCIpID09 IDApCisJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9mbHVzaHJlcXVlc3Qoc2Nhbl9zdGF0ZSwgYWN0 aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImciKSA9PSAwIHx8IHN0cmNtcChj bWQsICJneCIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9nKHNjYW5fc3RhdGUsIGFj dGl2ZV9icmFuY2gsIGNtZCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImdkZXNjIikgPT0gMCkK IAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2dkZXNjKHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gp OwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJnZXRlbnYiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVj X2NvbW1hbmRfZ2V0ZW52KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gsIGNtZCk7CisJZWxzZSBp ZiAoc3RyY21wKGNtZCwgImdldHJlc3VsdHMiKSA9PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1h bmRfZ2V0cmVzdWx0cyhzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNlIGlmIChzdHJj bXAoY21kLCAiZ2V4ZWMiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZ2V4ZWMoc2Nh bl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImdzZXQiKSA9 PSAwKQpAQCAtNDExLDYgKzQyNSwxMCBAQCBleGVjX2NvbW1hbmQoY29uc3QgY2hhciAqY21kLAog CQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfc2Zfc3Yoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCwg Y21kLCB0cnVlKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAic3YiKSA9PSAwIHx8IHN0cmNtcChj bWQsICJzdisiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfc2Zfc3Yoc2Nhbl9zdGF0 ZSwgYWN0aXZlX2JyYW5jaCwgY21kLCBmYWxzZSk7CisJZWxzZSBpZiAoc3RyY21wKGNtZCwgInN0 YXJ0cGlwZWxpbmUiKSA9PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfc3RhcnRwaXBlbGlu ZShzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKKwllbHNlIGlmIChzdHJjbXAoY21kLCAic3lu Y3BpcGVsaW5lIikgPT0gMCkKKwkJc3RhdHVzID0gZXhlY19jb21tYW5kX3N5bmNwaXBlbGluZShz Y2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAidCIpID09 IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF90KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gp OwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJUIikgPT0gMCkKQEAgLTE1MTUsNiArMTUzMyw0NCBA QCBleGVjX2NvbW1hbmRfZihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2Jy YW5jaCkKIAlyZXR1cm4gc3VjY2VzcyA/IFBTUUxfQ01EX1NLSVBfTElORSA6IFBTUUxfQ01EX0VS Uk9SOwogfQogCisvKgorICogXGZsdXNoIC0tIGNhbGwgUFFmbHVzaCBvbiB0aGUgY29ubmVjdGlv bgorICovCitzdGF0aWMgYmFja3NsYXNoUmVzdWx0CitleGVjX2NvbW1hbmRfZmx1c2goUHNxbFNj YW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpCit7CisJYmFja3NsYXNoUmVz dWx0IHN0YXR1cyA9IFBTUUxfQ01EX1NLSVBfTElORTsKKworCWlmIChhY3RpdmVfYnJhbmNoKQor CXsKKwkJcHNldC5zZW5kX21vZGUgPSBQU1FMX1NFTkRfRkxVU0g7CisJCXN0YXR1cyA9IFBTUUxf Q01EX1NFTkQ7CisJfQorCWVsc2UKKwkJaWdub3JlX3NsYXNoX29wdGlvbnMoc2Nhbl9zdGF0ZSk7 CisKKwlyZXR1cm4gc3RhdHVzOworfQorCisvKgorICogXGZsdXNocmVxdWVzdCAtLSBzZW5kIGEg Zmx1c2ggcmVxdWVzdCB0byB0aGUgc2VydmVyCisgKi8KK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQK K2V4ZWNfY29tbWFuZF9mbHVzaHJlcXVlc3QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29s IGFjdGl2ZV9icmFuY2gpCit7CisJYmFja3NsYXNoUmVzdWx0IHN0YXR1cyA9IFBTUUxfQ01EX1NL SVBfTElORTsKKworCWlmIChhY3RpdmVfYnJhbmNoKQorCXsKKwkJcHNldC5zZW5kX21vZGUgPSBQ U1FMX1NFTkRfRkxVU0hfUkVRVUVTVDsKKwkJc3RhdHVzID0gUFNRTF9DTURfU0VORDsKKwl9CisJ ZWxzZQorCQlpZ25vcmVfc2xhc2hfb3B0aW9ucyhzY2FuX3N0YXRlKTsKKworCXJldHVybiBzdGF0 dXM7Cit9CisKIC8qCiAgKiBcZyAgWyhwc2V0LW9wdGlvbls9cHNldC12YWx1ZV0gLi4uKV0gW2Zp bGVuYW1lL3NoZWxsLWNvbW1hbmRdCiAgKiBcZ3ggWyhwc2V0LW9wdGlvbls9cHNldC12YWx1ZV0g Li4uKV0gW2ZpbGVuYW1lL3NoZWxsLWNvbW1hbmRdCkBAIC0xNTUwLDYgKzE2MDYsMTMgQEAgZXhl Y19jb21tYW5kX2coUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gs IGNvbnN0IGNoYXIgKmNtZCkKIAogCWlmIChzdGF0dXMgPT0gUFNRTF9DTURfU0tJUF9MSU5FICYm IGFjdGl2ZV9icmFuY2gpCiAJeworCQlpZiAoc3RyY21wKGNtZCwgImd4IikgPT0gMCAmJiBQUXBp cGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJeworCQkJcGdfbG9n X2Vycm9yKCJcXGd4IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUiKTsKKwkJCWNsZWFuX2V4 dGVuZGVkX3N0YXRlKCk7CisJCQlyZXR1cm4gUFNRTF9DTURfRVJST1I7CisJCX0KKwogCQlpZiAo IWZuYW1lKQogCQkJcHNldC5nZm5hbWUgPSBOVUxMOwogCQllbHNlCkBAIC0xNzAzLDYgKzE3NjYs NDIgQEAgZXhlY19jb21tYW5kX2dldGVudihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wg YWN0aXZlX2JyYW5jaCwKIAlyZXR1cm4gc3VjY2VzcyA/IFBTUUxfQ01EX1NLSVBfTElORSA6IFBT UUxfQ01EX0VSUk9SOwogfQogCisvKgorICogXGdldHJlc3VsdHMgLS0gcmVhZCByZXN1bHRzCisg Ki8KK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQKK2V4ZWNfY29tbWFuZF9nZXRyZXN1bHRzKFBzcWxT Y2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKQoreworCWJhY2tzbGFzaFJl c3VsdCBzdGF0dXMgPSBQU1FMX0NNRF9TS0lQX0xJTkU7CisKKwlpZiAoYWN0aXZlX2JyYW5jaCkK Kwl7CisJCWNoYXIJICAgKm9wdDsKKwkJaW50CQkJbnVtX3Jlc3VsdHM7CisKKwkJcHNldC5zZW5k X21vZGUgPSBQU1FMX1NFTkRfR0VUX1JFU1VMVFM7CisJCXN0YXR1cyA9IFBTUUxfQ01EX1NFTkQ7 CisJCW9wdCA9IHBzcWxfc2Nhbl9zbGFzaF9vcHRpb24oc2Nhbl9zdGF0ZSwgT1RfTk9STUFMLCBO VUxMLCBmYWxzZSk7CisKKwkJcHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9IDA7CisJCWlmIChvcHQg IT0gTlVMTCkKKwkJeworCQkJbnVtX3Jlc3VsdHMgPSBhdG9pKG9wdCk7CisJCQlpZiAobnVtX3Jl c3VsdHMgPCAwKQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigiXFxnZXRyZXN1bHRzOiBpbnZhbGlk IG51bWJlciBvZiByZXF1ZXN0ZWQgcmVzdWx0cyIpOworCQkJCXJldHVybiBQU1FMX0NNRF9TS0lQ X0xJTkU7CisJCQl9CisJCQlwc2V0LnJlcXVlc3RlZF9yZXN1bHRzID0gbnVtX3Jlc3VsdHM7CisJ CX0KKwl9CisJZWxzZQorCQlpZ25vcmVfc2xhc2hfb3B0aW9ucyhzY2FuX3N0YXRlKTsKKworCXJl dHVybiBzdGF0dXM7Cit9CisKKwogLyoKICAqIFxnZXhlYyAtLSBzZW5kIHF1ZXJ5IGFuZCBleGVj dXRlIGVhY2ggZmllbGQgb2YgcmVzdWx0CiAgKi8KQEAgLTE3MTMsNiArMTgxMiwxMiBAQCBleGVj X2NvbW1hbmRfZ2V4ZWMoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFu Y2gpCiAKIAlpZiAoYWN0aXZlX2JyYW5jaCkKIAl7CisJCWlmIChQUXBpcGVsaW5lU3RhdHVzKHBz ZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJcXGdleGVj IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUiKTsKKwkJCWNsZWFuX2V4dGVuZGVkX3N0YXRl KCk7CisJCQlyZXR1cm4gUFNRTF9DTURfRVJST1I7CisJCX0KIAkJcHNldC5nZXhlY19mbGFnID0g dHJ1ZTsKIAkJc3RhdHVzID0gUFNRTF9DTURfU0VORDsKIAl9CkBAIC0xNzMzLDYgKzE4MzgsMTMg QEAgZXhlY19jb21tYW5kX2dzZXQoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2 ZV9icmFuY2gpCiAJCWNoYXIJICAgKnByZWZpeCA9IHBzcWxfc2Nhbl9zbGFzaF9vcHRpb24oc2Nh bl9zdGF0ZSwKIAkJCQkJCQkJCQkJCQlPVF9OT1JNQUwsIE5VTEwsIGZhbHNlKTsKIAorCQlpZiAo UFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElORV9PRkYpCisJCXsKKwkJCXBn X2xvZ19lcnJvcigiXFxnc2V0IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUiKTsKKwkJCWNs ZWFuX2V4dGVuZGVkX3N0YXRlKCk7CisJCQlyZXR1cm4gUFNRTF9DTURfRVJST1I7CisJCX0KKwog CQlpZiAocHJlZml4KQogCQkJcHNldC5nc2V0X3ByZWZpeCA9IHByZWZpeDsKIAkJZWxzZQpAQCAt MjcxOCw2ICsyODMwLDYzIEBAIGV4ZWNfY29tbWFuZF9zZl9zdihQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAlyZXR1cm4gc3RhdHVzOwogfQogCisvKgorICog XHN0YXJ0cGlwZWxpbmUgLS0gZW50ZXIgcGlwZWxpbmUgbW9kZQorICovCitzdGF0aWMgYmFja3Ns YXNoUmVzdWx0CitleGVjX2NvbW1hbmRfc3RhcnRwaXBlbGluZShQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKK3sKKwliYWNrc2xhc2hSZXN1bHQgc3RhdHVzID0g UFNRTF9DTURfU0tJUF9MSU5FOworCisJaWYgKGFjdGl2ZV9icmFuY2gpCisJeworCQlwc2V0LnNl bmRfbW9kZSA9IFBTUUxfU0VORF9TVEFSVF9QSVBFTElORV9NT0RFOworCQlzdGF0dXMgPSBQU1FM X0NNRF9TRU5EOworCX0KKwllbHNlCisJCWlnbm9yZV9zbGFzaF9vcHRpb25zKHNjYW5fc3RhdGUp OworCisJcmV0dXJuIHN0YXR1czsKK30KKworLyoKKyAqIFxzeW5jcGlwZWxpbmUgLS0gc2VuZCBh IHN5bmMgbWVzc2FnZSB0byBhbiBhY3RpdmUgcGlwZWxpbmUKKyAqLworc3RhdGljIGJhY2tzbGFz aFJlc3VsdAorZXhlY19jb21tYW5kX3N5bmNwaXBlbGluZShQc3FsU2NhblN0YXRlIHNjYW5fc3Rh dGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKK3sKKwliYWNrc2xhc2hSZXN1bHQgc3RhdHVzID0gUFNR TF9DTURfU0tJUF9MSU5FOworCisJaWYgKGFjdGl2ZV9icmFuY2gpCisJeworCQlwc2V0LnNlbmRf bW9kZSA9IFBTUUxfU0VORF9QSVBFTElORV9TWU5DOworCQlzdGF0dXMgPSBQU1FMX0NNRF9TRU5E OworCX0KKwllbHNlCisJCWlnbm9yZV9zbGFzaF9vcHRpb25zKHNjYW5fc3RhdGUpOworCisJcmV0 dXJuIHN0YXR1czsKK30KKworLyoKKyAqIFxlbmRwaXBlbGluZSAtLSBlbmQgcGlwZWxpbmUgbW9k ZQorICovCitzdGF0aWMgYmFja3NsYXNoUmVzdWx0CitleGVjX2NvbW1hbmRfZW5kcGlwZWxpbmUo UHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpCit7CisJYmFja3Ns YXNoUmVzdWx0IHN0YXR1cyA9IFBTUUxfQ01EX1NLSVBfTElORTsKKworCWlmIChhY3RpdmVfYnJh bmNoKQorCXsKKwkJcHNldC5zZW5kX21vZGUgPSBQU1FMX1NFTkRfRU5EX1BJUEVMSU5FX01PREU7 CisJCXN0YXR1cyA9IFBTUUxfQ01EX1NFTkQ7CisJfQorCWVsc2UKKwkJaWdub3JlX3NsYXNoX29w dGlvbnMoc2Nhbl9zdGF0ZSk7CisKKwlyZXR1cm4gc3RhdHVzOworfQorCiAvKgogICogXHQgLS0g dHVybiBvZmYgdGFibGUgaGVhZGVycyBhbmQgcm93IGNvdW50CiAgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwppbmRleCBmMWE1Mjkx YzEzYi4uYjdmZTU1NWQ1NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tb24uYworKysg Yi9zcmMvYmluL3BzcWwvY29tbW9uLmMKQEAgLTEyMSw2ICsxMjEsMTggQEAgQ2xvc2VHT3V0cHV0 KEZJTEUgKmdmaWxlX2ZvdXQsIGJvb2wgaXNfcGlwZSkKIAl9CiB9CiAKKy8qCisgKiBSZXNldCBw c2V0IHBpcGVsaW5lIHN0YXRlCisgKi8KK3N0YXRpYyB2b2lkCitwaXBlbGluZVJlc2V0KHZvaWQp Cit7CisJcHNldC5waXBlZF9zeW5jcyA9IDA7CisJcHNldC5waXBlZF9jb21tYW5kcyA9IDA7CisJ cHNldC5hdmFpbGFibGVfcmVzdWx0cyA9IDA7CisJcHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9IDA7 Cit9CisKIC8qCiAgKiBzZXRRRm91dAogICogLS0gaGFuZGxlciBmb3IgLW8gY29tbWFuZCBsaW5l IG9wdGlvbiBhbmQgXG8gY29tbWFuZApAQCAtMzU0LDYgKzM2Niw3IEBAIENoZWNrQ29ubmVjdGlv bih2b2lkKQogCiAJCWZwcmludGYoc3RkZXJyLCBfKCJUaGUgY29ubmVjdGlvbiB0byB0aGUgc2Vy dmVyIHdhcyBsb3N0LiBBdHRlbXB0aW5nIHJlc2V0OiAiKSk7CiAJCVBRcmVzZXQocHNldC5kYik7 CisJCXBpcGVsaW5lUmVzZXQoKTsKIAkJT0sgPSBDb25uZWN0aW9uVXAoKTsKIAkJaWYgKCFPSykK IAkJewpAQCAtNDE1LDEwICs0MjgsMTIgQEAgQWNjZXB0UmVzdWx0KGNvbnN0IFBHcmVzdWx0ICpy ZXN1bHQsIGJvb2wgc2hvd19lcnJvcikKIAkJCWNhc2UgUEdSRVNfRU1QVFlfUVVFUlk6CiAJCQlj YXNlIFBHUkVTX0NPUFlfSU46CiAJCQljYXNlIFBHUkVTX0NPUFlfT1VUOgorCQkJY2FzZSBQR1JF U19QSVBFTElORV9TWU5DOgogCQkJCS8qIEZpbmUsIGRvIG5vdGhpbmcgKi8KIAkJCQlPSyA9IHRy dWU7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgUEdSRVNfUElQRUxJTkVfQUJPUlRFRDoKIAkJCWNh c2UgUEdSRVNfQkFEX1JFU1BPTlNFOgogCQkJY2FzZSBQR1JFU19OT05GQVRBTF9FUlJPUjoKIAkJ CWNhc2UgUEdSRVNfRkFUQUxfRVJST1I6CkBAIC0xMDUwLDYgKzEwNjUsNyBAQCBQcmludFF1ZXJ5 UmVzdWx0KFBHcmVzdWx0ICpyZXN1bHQsIGJvb2wgbGFzdCwKIAkJCXN1Y2Nlc3MgPSB0cnVlOwog CQkJYnJlYWs7CiAKKwkJY2FzZSBQR1JFU19QSVBFTElORV9BQk9SVEVEOgogCQljYXNlIFBHUkVT X0JBRF9SRVNQT05TRToKIAkJY2FzZSBQR1JFU19OT05GQVRBTF9FUlJPUjoKIAkJY2FzZSBQR1JF U19GQVRBTF9FUlJPUjoKQEAgLTE0MTgsNiArMTQzNCw2MyBAQCBEZXNjcmliZVF1ZXJ5KGNvbnN0 IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykKIAlyZXR1cm4gT0s7CiB9CiAKKy8q CisgKiBSZWFkIGFuZCBkaXNjYXJkIGFsbCByZXN1bHRzIGluIGFuIGFib3J0ZWQgcGlwZWxpbmUu CisgKgorICogSWYgYSBzeW5jaHJvbmlzYXRpb24gcG9pbnQgaXMgZm91bmQsIHdlIGNhbiBzdG9w IGRpc2NhcmRpbmcgcmVzdWx0cyBhcworICogcGlwZWxpbmUgd2lsbCBzd2l0Y2ggYmFjayB0byBh biBPSyBzdGF0ZS4gSWYgbm8gc3luY2hyb25pc2F0aW9uIHBvaW50CisgKiBpcyBhdmFpbGFibGUs IHdlIG5lZWQgdG8gc3RvcCB3aGVuIHRoZXJlJ3Mgbm8gbW9yZSBwZW5kaW5nIHJlc3VsdHMsCisg KiBvdGhlcndpc2UsIGNhbGxpbmcgUFFnZXRSZXN1bHQgd2lsbCBibG9jay4KKyAqLworc3RhdGlj IFBHcmVzdWx0ICoKK2Rpc2NhcmRBYm9ydGVkUGlwZWxpbmVSZXN1bHRzKHZvaWQpCit7CisJZm9y ICg7OykKKwl7CisJCVBHcmVzdWx0ICAgKnJlcyA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOworCQlF eGVjU3RhdHVzVHlwZSByZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMocmVzKTsKKworCQlp ZiAocmVzdWx0X3N0YXR1cyA9PSBQR1JFU19QSVBFTElORV9TWU5DKQorCQl7CisJCQkvKgorCQkJ ICogRm91bmQgYSBzeW5jaHJvbmlzYXRpb24gcG9pbnQuIERlY3JlbWVudGluZyB0aGUgc3luYyBj b3VudGVyCisJCQkgKiB3aWxsIGJlIGRvbmUgYnkgdGhlIGNhbGxlcgorCQkJICovCisJCQlyZXR1 cm4gcmVzOworCQl9CisJCWVsc2UgaWYgKHJlcyA9PSBOVUxMKQorCQl7CisJCQkvKiBBIHF1ZXJ5 IHdhcyBwcm9jZXNzZWQsIGRlY3JlbWVudCB0aGUgY291bnRlcnMgKi8KKwkJCUFzc2VydChwc2V0 LmF2YWlsYWJsZV9yZXN1bHRzID4gMCk7CisJCQlBc3NlcnQocHNldC5yZXF1ZXN0ZWRfcmVzdWx0 cyA+IDApOworCQkJcHNldC5hdmFpbGFibGVfcmVzdWx0cy0tOworCQkJcHNldC5yZXF1ZXN0ZWRf cmVzdWx0cy0tOworCQl9CisKKwkJaWYgKHBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPT0gMCkKKwkJ eworCQkJLyogV2UndmUgcmVhZCBhbGwgcmVxdWVzdGVkIHJlc3VsdHMsIGV4aXQgKi8KKwkJCXJl dHVybiByZXM7CisJCX0KKworCQlpZiAocHNldC5hdmFpbGFibGVfcmVzdWx0cyA9PSAwICYmIHBz ZXQucGlwZWRfc3luY3MgPT0gMCkKKwkJeworCQkJLyoKKwkJCSAqIFRoZXJlJ3Mgbm8gbW9yZSBy ZXN1bHRzIHRvIGdldCBhbmQgdGhlcmUncyBubyBzeW5jaHJvbmlzYXRpb24KKwkJCSAqIHBvaW50 IHRvIHN0b3AgYXQuIFRoaXMgd2lsbCBsZWF2ZSB0aGUgcGlwZWxpbmUgaW4gYW4gYWJvcnRlZAor CQkJICogc3RhdGUuCisJCQkgKi8KKwkJCXJldHVybiByZXM7CisJCX0KKworCQkvKgorCQkgKiBB biBhYm9ydGVkIHBpcGVsaW5lIHdpbGwgaGF2ZSBlaXRoZXIgTlVMTCByZXN1bHRzIG9yIHJlc3Vs dHMgaW4gYW4KKwkJICogUEdSRVNfUElQRUxJTkVfQUJPUlRFRCBzdGF0dXMKKwkJICovCisJCUFz c2VydChyZXMgPT0gTlVMTCB8fCByZXN1bHRfc3RhdHVzID09IFBHUkVTX1BJUEVMSU5FX0FCT1JU RUQpOworCQlQUWNsZWFyKHJlcyk7CisJfQorfQogCiAvKgogICogRXhlY1F1ZXJ5QW5kUHJvY2Vz c1Jlc3VsdHM6IHV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBTZW5kUXVlcnkoKQpAQCAtMTQ1 MSw2ICsxNTI0LDcgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVl cnksCiAJYm9vbAkJdGltaW5nID0gcHNldC50aW1pbmc7CiAJYm9vbAkJc3VjY2VzcyA9IGZhbHNl OwogCWJvb2wJCXJldHVybl9lYXJseSA9IGZhbHNlOworCWJvb2wJCWVuZF9waXBlbGluZSA9IGZh bHNlOwogCWluc3RyX3RpbWUJYmVmb3JlLAogCQkJCWFmdGVyOwogCVBHcmVzdWx0ICAgKnJlc3Vs dDsKQEAgLTE0NjYsOSArMTU0MCwxMyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25z dCBjaGFyICpxdWVyeSwKIAl7CiAJCWNhc2UgUFNRTF9TRU5EX0VYVEVOREVEX0NMT1NFOgogCQkJ c3VjY2VzcyA9IFBRc2VuZENsb3NlUHJlcGFyZWQocHNldC5kYiwgcHNldC5zdG10TmFtZSk7CisJ CQlpZiAoc3VjY2VzcyAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5F X09GRikKKwkJCQlwc2V0LnBpcGVkX2NvbW1hbmRzKys7CiAJCQlicmVhazsKIAkJY2FzZSBQU1FM X1NFTkRfRVhURU5ERURfUEFSU0U6CiAJCQlzdWNjZXNzID0gUFFzZW5kUHJlcGFyZShwc2V0LmRi LCBwc2V0LnN0bXROYW1lLCBxdWVyeSwgMCwgTlVMTCk7CisJCQlpZiAoc3VjY2VzcyAmJiBQUXBp cGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJCQlwc2V0LnBpcGVk X2NvbW1hbmRzKys7CiAJCQlicmVhazsKIAkJY2FzZSBQU1FMX1NFTkRfRVhURU5ERURfUVVFUllf UEFSQU1TOgogCQkJQXNzZXJ0KHBzZXQuc3RtdE5hbWUgPT0gTlVMTCk7CkBAIC0xNDc2LDYgKzE1 NTQsOCBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkJ CQkJCQkJCQlwc2V0LmJpbmRfbnBhcmFtcywgTlVMTCwKIAkJCQkJCQkJCQkoY29uc3QgY2hhciAq Y29uc3QgKikgcHNldC5iaW5kX3BhcmFtcywKIAkJCQkJCQkJCQlOVUxMLCBOVUxMLCAwKTsKKwkJ CWlmIChzdWNjZXNzICYmIFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0gUFFfUElQRUxJTkVf T0ZGKQorCQkJCXBzZXQucGlwZWRfY29tbWFuZHMrKzsKIAkJCWJyZWFrOwogCQljYXNlIFBTUUxf U0VORF9FWFRFTkRFRF9RVUVSWV9QUkVQQVJFRDoKIAkJCUFzc2VydChwc2V0LnN0bXROYW1lICE9 IE5VTEwpOwpAQCAtMTQ4Myw2ICsxNTYzLDgzIEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRz KGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJCQkJCQkJCSAgcHNldC5iaW5kX25wYXJhbXMsCiAJCQkJ CQkJCQkJICAoY29uc3QgY2hhciAqY29uc3QgKikgcHNldC5iaW5kX3BhcmFtcywKIAkJCQkJCQkJ CQkgIE5VTEwsIE5VTEwsIDApOworCQkJaWYgKHN1Y2Nlc3MgJiYgUFFwaXBlbGluZVN0YXR1cyhw c2V0LmRiKSAhPSBQUV9QSVBFTElORV9PRkYpCisJCQkJcHNldC5waXBlZF9jb21tYW5kcysrOwor CQkJYnJlYWs7CisJCWNhc2UgUFNRTF9TRU5EX1NUQVJUX1BJUEVMSU5FX01PREU6CisJCQlzdWNj ZXNzID0gUFFlbnRlclBpcGVsaW5lTW9kZShwc2V0LmRiKTsKKwkJCWJyZWFrOworCQljYXNlIFBT UUxfU0VORF9FTkRfUElQRUxJTkVfTU9ERToKKwkJCXN1Y2Nlc3MgPSBQUXBpcGVsaW5lU3luYyhw c2V0LmRiKTsKKwkJCWlmIChzdWNjZXNzICYmIFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0g UFFfUElQRUxJTkVfT0ZGKQorCQkJeworCQkJCS8qCisJCQkJICogRW5kIG9mIHRoZSBwaXBlbGlu ZSwgYWxsIHF1ZXVlZCBjb21tYW5kcyBuZWVkIHRvIGJlCisJCQkJICogcHJvY2Vzc2VkCisJCQkJ ICovCisJCQkJZW5kX3BpcGVsaW5lID0gdHJ1ZTsKKwkJCQlwc2V0LnBpcGVkX3N5bmNzKys7CisK KwkJCQkvKgorCQkJCSAqIFRoZSBzZXJ2ZXIgd2lsbCBzZW5kIGEgUmVhZHlGb3JRdWVyeSBhZnRl ciBhIFN5bmMgaXMKKwkJCQkgKiBwcm9jZXNzZWQsIGZsdXNoaW5nIGFsbCByZXN1bHRzIHRvIHRo ZSBjbGllbnQKKwkJCQkgKi8KKwkJCQlwc2V0LmF2YWlsYWJsZV9yZXN1bHRzICs9IHBzZXQucGlw ZWRfY29tbWFuZHM7CisJCQkJcHNldC5waXBlZF9jb21tYW5kcyA9IDA7CisJCQkJLyogV2Ugd2Fu dCB0byByZWFkIGFsbCByZXN1bHRzICovCisJCQkJcHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9IHBz ZXQuYXZhaWxhYmxlX3Jlc3VsdHMgKyBwc2V0LnBpcGVkX3N5bmNzOworCQkJfQorCQkJYnJlYWs7 CisJCWNhc2UgUFNRTF9TRU5EX1BJUEVMSU5FX1NZTkM6CisJCQlzdWNjZXNzID0gUFFzZW5kUGlw ZWxpbmVTeW5jKHBzZXQuZGIpOworCQkJaWYgKHN1Y2Nlc3MgJiYgUFFwaXBlbGluZVN0YXR1cyhw c2V0LmRiKSAhPSBQUV9QSVBFTElORV9PRkYpCisJCQl7CisJCQkJcHNldC5waXBlZF9zeW5jcysr OworCisJCQkJLyoKKwkJCQkgKiBUaGUgc2VydmVyIHdpbGwgc2VuZCBhIFJlYWR5Rm9yUXVlcnkg YWZ0ZXIgYSBTeW5jIGlzCisJCQkJICogcHJvY2Vzc2VkLCBmbHVzaGluZyBhbGwgcmVzdWx0cyB0 byB0aGUgY2xpZW50CisJCQkJICovCisJCQkJcHNldC5hdmFpbGFibGVfcmVzdWx0cyArPSBwc2V0 LnBpcGVkX2NvbW1hbmRzOworCQkJCXBzZXQucGlwZWRfY29tbWFuZHMgPSAwOworCQkJfQorCQkJ YnJlYWs7CisJCWNhc2UgUFNRTF9TRU5EX0ZMVVNIOgorCQkJc3VjY2VzcyA9IFBRZmx1c2gocHNl dC5kYik7CisJCQlicmVhazsKKwkJY2FzZSBQU1FMX1NFTkRfRkxVU0hfUkVRVUVTVDoKKwkJCXN1 Y2Nlc3MgPSBQUXNlbmRGbHVzaFJlcXVlc3QocHNldC5kYik7CisJCQlpZiAoc3VjY2VzcyAmJiBQ UXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJCXsKKwkJCQkv KgorCQkJCSAqIFdpdGggdGhlIGZsdXNoIHJlcXVlc3QsIGFsbCBwaXBlZCBjb21tYW5kcyBhcmUg cHVzaGVkIGFuZAorCQkJCSAqIHRoZSBzZXJ2ZXIgd2lsbCBmb3JjZWZ1bGx5IGZsdXNoIHRoZSBy ZXN1bHRzIHRvIHRoZSBjbGllbnQsCisJCQkJICogbWFraW5nIHRoZW0gYXZhaWxhYmxlCisJCQkJ ICovCisJCQkJcHNldC5hdmFpbGFibGVfcmVzdWx0cyArPSBwc2V0LnBpcGVkX2NvbW1hbmRzOwor CQkJCXBzZXQucGlwZWRfY29tbWFuZHMgPSAwOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgUFNR TF9TRU5EX0dFVF9SRVNVTFRTOgorCQkJaWYgKHBzZXQuYXZhaWxhYmxlX3Jlc3VsdHMgPT0gMCAm JiBwc2V0LnBpcGVkX3N5bmNzID09IDApCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJZiBubyBzeW5j IG9yIGZsdXNoIHJlcXVlc3Qgd2VyZSBzZW50LCBQUWdldFJlc3VsdCB3aWxsCisJCQkJICogYmxv Y2suIEZvcmJpZCB0aGUgY2FsbCB0byBcZ2V0cmVzdWx0cyB0byBhdm9pZCBzdGF5aW5nCisJCQkJ ICogc3R1Y2sKKwkJCQkgKi8KKwkJCQlwZ19sb2dfaW5mbygiTm8gcGVuZGluZyByZXN1bHRzIHRv IGdldCIpOworCQkJCXN1Y2Nlc3MgPSBmYWxzZTsKKwkJCQlwc2V0LnJlcXVlc3RlZF9yZXN1bHRz ID0gMDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlzdWNjZXNzID0gdHJ1ZTsKKwkJCQkvKiBD YXAgcmVxdWVzdGVkX3Jlc3VsdHMgdG8gdGhlIG1heGltdW0ga25vd24gcmVzdWx0cyAqLworCQkJ CWlmIChwc2V0LnJlcXVlc3RlZF9yZXN1bHRzID09IDAgfHwKKwkJCQkJcHNldC5yZXF1ZXN0ZWRf cmVzdWx0cyA+IChwc2V0LmF2YWlsYWJsZV9yZXN1bHRzICsgcHNldC5waXBlZF9zeW5jcykpCisJ CQkJCXBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPSBwc2V0LmF2YWlsYWJsZV9yZXN1bHRzICsgcHNl dC5waXBlZF9zeW5jczsKKwkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFBTUUxfU0VORF9RVUVSWToK IAkJCXN1Y2Nlc3MgPSBQUXNlbmRRdWVyeShwc2V0LmRiLCBxdWVyeSk7CkBAIC0xNTAxLDYgKzE2 NTgsMTYgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAJ CXJldHVybiAtMTsKIAl9CiAKKwlpZiAocHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9PSAwICYmICFl bmRfcGlwZWxpbmUgJiYKKwkJUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElO RV9PRkYpCisJeworCQkvKgorCQkgKiBXZSdyZSBpbiBhIHBpcGVsaW5lIGFuZCBoYXZlbid0IHJl YWNoZWQgdGhlIHBpcGVsaW5lIGVuZCBvciB0aGVyZQorCQkgKiB3YXMgbm8gcmVxdWVzdCB0byBy ZWFkIHBpcGVsaW5lIHJlc3VsdHMsIGV4aXQuCisJCSAqLworCQlyZXR1cm4gMTsKKwl9CisKIAkv KgogCSAqIEZldGNoIHRoZSByZXN1bHQgaW4gY2h1bmtzIGlmIEZFVENIX0NPVU5UIGlzIHNldCwg ZXhjZXB0IHdoZW46CiAJICoKQEAgLTE1NDgsNyArMTcxNSw3IEBAIEV4ZWNRdWVyeUFuZFByb2Nl c3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCXsKIAkJRXhlY1N0YXR1c1R5cGUgcmVzdWx0 X3N0YXR1czsKIAkJYm9vbAkJaXNfY2h1bmtlZF9yZXN1bHQgPSBmYWxzZTsKLQkJUEdyZXN1bHQg ICAqbmV4dF9yZXN1bHQ7CisJCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0ID0gTlVMTDsKIAkJYm9v bAkJbGFzdDsKIAogCQlpZiAoIUFjY2VwdFJlc3VsdChyZXN1bHQsIGZhbHNlKSkKQEAgLTE1NzEs NiArMTczOCw5IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5 LAogCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0KTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAor CQkJaWYgKHJlc3VsdF9zdGF0dXMgPT0gUEdSRVNfUElQRUxJTkVfQUJPUlRFRCkKKwkJCQlwZ19s b2dfaW5mbygiUGlwZWxpbmUgYWJvcnRlZCwgY29tbWFuZCBkaWRuJ3QgcnVuIik7CisKIAkJCS8q CiAJCQkgKiBzd2l0Y2ggdG8gbmV4dCByZXN1bHQKIAkJCSAqLwpAQCAtMTU4NSw2ICsxNzU1LDIy IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJCSAq IGlnbm9yZSBtYW51YWxseS4KIAkJCQkgKi8KIAkJCQlyZXN1bHQgPSBOVUxMOworCQkJZWxzZSBp ZiAoKGVuZF9waXBlbGluZSB8fCBwc2V0LnJlcXVlc3RlZF9yZXN1bHRzID4gMCkKKwkJCQkJICYm IFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0gUFFfUElQRUxJTkVfT0ZGKQorCQkJeworCisJ CQkJLyoKKwkJCQkgKiBXZSBoYXZlIGFuIGVycm9yIHdpdGhpbiBhIHBpcGVsaW5lLiBBbGwgY29t bWFuZHMgYXJlCisJCQkJICogYWJvcnRlZCB1bnRpbCB0aGUgbmV4dCBzeW5jaHJvbmlzYXRpb24g cG9pbnQuIFdlIG5lZWQgdG8KKwkJCQkgKiBjb25zdW1lIGFsbCByZXN1bHRzIHVudGlsIHRoaXMg c3luY2hyb25pc2F0aW9uIHBvaW50LCBvcgorCQkJCSAqIHN0b3Agd2hlbiB0aGVyZSdzIG5vIG1v cmUgcmVzdWx0IHRvIGRpc2NhcmQKKwkJCQkgKgorCQkJCSAqIENoZWNraW5nIHBpcGVsaW5lIHN0 YXR1cyBpcyBuZWNlc3NhcnkgaW4gY2FzZSB0aGUKKwkJCQkgKiBjb25uZWN0aW9uIHdhcyByZXNl dC4gVGhlIG5ldyBjb25uZWN0aW9uIGlzbid0IGluIGFueSBraW5kCisJCQkJICogb2YgcGlwZWxp bmUgc3RhdGUgYW5kIHRodXMgaGFzIG5vIHJlc3VsdCB0byBkaXNjYXJkCisJCQkJICovCisJCQkJ cmVzdWx0ID0gZGlzY2FyZEFib3J0ZWRQaXBlbGluZVJlc3VsdHMoKTsKKwkJCX0KIAkJCWVsc2UK IAkJCQlyZXN1bHQgPSBQUWdldFJlc3VsdChwc2V0LmRiKTsKIApAQCAtMTc3MSwxMiArMTk1Nyw2 NiBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkJCX0K IAkJfQogCisJCWlmIChyZXN1bHRfc3RhdHVzID09IFBHUkVTX1BJUEVMSU5FX1NZTkMpCisJCXsK KwkJCUFzc2VydChwc2V0LnBpcGVkX3N5bmNzID4gMCk7CisKKwkJCS8qCisJCQkgKiBXZSBoYXZl IGEgc3luYyByZXNwb25zZSwgZGVjcmVhc2UgdGhlIHN5bmMgYW5kCisJCQkgKiByZXF1ZXN0ZWRf cmVzdWx0cyBjb3VudGVycworCQkJICovCisJCQlwc2V0LnBpcGVkX3N5bmNzLS07CisJCQlwc2V0 LnJlcXVlc3RlZF9yZXN1bHRzLS07CisKKwkJCS8qCisJCQkgKiBBZnRlciBhIHN5bmNocm9uaXNh dGlvbiBwb2ludCwgcmVzZXQgc3VjY2VzcyBzdGF0ZSB0byBwcmludAorCQkJICogcG9zc2libGUg c3VjY2Vzc2Z1bCByZXN1bHRzIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhpcworCQkJ ICovCisJCQlzdWNjZXNzID0gdHJ1ZTsKKworCQkJLyoKKwkJCSAqIElmIGFsbCBzeW5jcyB3ZXJl IHByb2Nlc3NlZCBhbmQgcGlwZWxpbmUgZW5kIHdhcyByZXF1ZXN0ZWQsCisJCQkgKiBleGl0IHBp cGVsaW5lIG1vZGUKKwkJCSAqLworCQkJaWYgKGVuZF9waXBlbGluZSAmJiBwc2V0LnBpcGVkX3N5 bmNzID09IDApCisJCQkJc3VjY2VzcyAmPSBQUWV4aXRQaXBlbGluZU1vZGUocHNldC5kYik7CisJ CX0KKwkJZWxzZSBpZiAoUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElORV9P RkYgJiYKKwkJCQkgcmVzdWx0X3N0YXR1cyAhPSBQR1JFU19QSVBFTElORV9TWU5DKQorCQl7CisJ CQkvKgorCQkJICogV2UgYXJlIGluIGEgcGlwZWxpbmUgYW5kIGhhdmUgYSBub24gc3luYyByZXNw b25zZSwgZGVjcmVhc2UgdGhlCisJCQkgKiByZXN1bHRzIGNvdW50ZXJzCisJCQkgKi8KKwkJCXBz ZXQuYXZhaWxhYmxlX3Jlc3VsdHMtLTsKKwkJCXBzZXQucmVxdWVzdGVkX3Jlc3VsdHMtLTsKKwkJ fQorCiAJCS8qCiAJCSAqIENoZWNrIFBRZ2V0UmVzdWx0KCkgYWdhaW4uICBJbiB0aGUgdHlwaWNh bCBjYXNlIG9mIGEgc2luZ2xlLWNvbW1hbmQKIAkJICogc3RyaW5nLCBpdCB3aWxsIHJldHVybiBO VUxMLiAgT3RoZXJ3aXNlLCB3ZSdsbCBoYXZlIG90aGVyIHJlc3VsdHMKIAkJICogdG8gcHJvY2Vz cy4gIFdlIG5lZWQgdG8gZG8gdGhhdCB0byBjaGVjayB3aGV0aGVyIHRoaXMgaXMgdGhlIGxhc3Qu CiAJCSAqLwotCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOworCQlpZiAoUFFw aXBlbGluZVN0YXR1cyhwc2V0LmRiKSA9PSBQUV9QSVBFTElORV9PRkYpCisJCQluZXh0X3Jlc3Vs dCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOworCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBJbiBw aXBlbGluZSBtb2RlLCBhIE5VTEwgcmVzdWx0IGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZQorCQkJ ICogY3VycmVudCBxdWVyeSBiZWluZyBwcm9jZXNzZWQuIENhbGwgUFFnZXRSZXN1bHQgdG8gY29u c3VtZSB0aGlzCisJCQkgKiBOVUxMCisJCQkgKi8KKwkJCWlmIChyZXN1bHRfc3RhdHVzICE9IFBH UkVTX1BJUEVMSU5FX1NZTkMpCisJCQl7CisJCQkJbmV4dF9yZXN1bHQgPSBQUWdldFJlc3VsdChw c2V0LmRiKTsKKwkJCQlBc3NlcnQobmV4dF9yZXN1bHQgPT0gTlVMTCk7CisJCQl9CisKKwkJCS8q IFdlIGNhbiBub3cgZ2V0IHRoZSBuZXh0IHJlc3VsdCBpbiB0aGUgcGlwZWxpbmUgKi8KKwkJCWlm IChwc2V0LnJlcXVlc3RlZF9yZXN1bHRzID4gMCkKKwkJCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVz dWx0KHBzZXQuZGIpOworCQl9CisKIAkJbGFzdCA9IChuZXh0X3Jlc3VsdCA9PSBOVUxMKTsKIAog CQkvKgpAQCAtMTc5OCw4ICsyMDM4LDEyIEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNv bnN0IGNoYXIgKnF1ZXJ5LAogCQkJKmVsYXBzZWRfbXNlYyA9IElOU1RSX1RJTUVfR0VUX01JTExJ U0VDKGFmdGVyKTsKIAkJfQogCi0JCS8qIHRoaXMgbWF5IG9yIG1heSBub3QgcHJpbnQgc29tZXRo aW5nIGRlcGVuZGluZyBvbiBzZXR0aW5ncyAqLwotCQlpZiAocmVzdWx0ICE9IE5VTEwpCisJCS8q CisJCSAqIFRoaXMgbWF5IG9yIG1heSBub3QgcHJpbnQgc29tZXRoaW5nIGRlcGVuZGluZyBvbiBz ZXR0aW5ncy4gQQorCQkgKiBwaXBlbGluZSBzeW5jIHdpbGwgaGF2ZSBhIG5vbiBudWxsIHJlc3Vs dCBidXQgZG9lc24ndCBoYXZlIGFueXRoaW5nCisJCSAqIHRvIHByaW50LCB0aHVzIGlnbm9yZSB0 aGVtCisJCSAqLworCQlpZiAocmVzdWx0ICE9IE5VTEwgJiYgcmVzdWx0X3N0YXR1cyAhPSBQR1JF U19QSVBFTElORV9TWU5DKQogCQl7CiAJCQkvKgogCQkJICogSWYgcmVzdWx0cyBuZWVkIHRvIGJl IHByaW50ZWQgaW50byB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgXGcsCkBAIC0xODI1LDkgKzIwNjks MTUgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAJCUNs ZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7CiAJCXJlc3VsdCA9IG5leHRfcmVzdWx0OwogCi0JCWlm IChjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKGNhbmNlbF9wcmVzc2VkICYmIFBRcGlwZWxpbmVTdGF0 dXMocHNldC5kYikgPT0gUFFfUElQRUxJTkVfT0ZGKQogCQl7Ci0JCQkvKiBkcm9wIHRoaXMgbmV4 dCByZXN1bHQsIGFzIHdlbGwgYXMgYW55IG90aGVycyBub3QgeWV0IHJlYWQgKi8KKwkJCS8qCisJ CQkgKiBPdXRzaWRlIG9mIGEgcGlwZWxpbmUsIGRyb3AgdGhpcyBuZXh0IHJlc3VsdCwgYXMgd2Vs bCBhcyBhbnkKKwkJCSAqIG90aGVycyBub3QgeWV0IHJlYWQKKwkJCSAqCisJCQkgKiBXaXRoaW4g YSBwaXBlbGluZSwgd2UgY2FuIGxldCB0aGUgb3V0ZXIgbG9vcCBoYW5kbGUgdGhpcyBhcyBhbgor CQkJICogYWJvcnRlZCBwaXBlbGluZSwgd2hpY2ggd2lsbCBkaXNjYXJkIGFsbCByZXN1bHRzCisJ CQkgKi8KIAkJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7CiAJCQlDbGVhck9yU2F2ZUFsbFJl c3VsdHMoKTsKIAkJCWJyZWFrOwpAQCAtMTgzNyw2ICsyMDg3LDE3IEBAIEV4ZWNRdWVyeUFuZFBy b2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCS8qIGNsb3NlIFxnIGZpbGUgaWYgd2Ug b3BlbmVkIGl0ICovCiAJQ2xvc2VHT3V0cHV0KGdmaWxlX2ZvdXQsIGdmaWxlX2lzX3BpcGUpOwog CisJaWYgKGVuZF9waXBlbGluZSkKKwl7CisJCS8qIEFmdGVyIGEgcGlwZWxpbmUgaXMgcHJvY2Vz c2VkLCBwaXBlbGluZSBwaXBlZF9zeW5jcyBzaG91bGQgYmUgMCAqLworCQlBc3NlcnQocHNldC5w aXBlZF9zeW5jcyA9PSAwKTsKKwkJLyogYWxsIGNvbW1hbmRzIHdlcmUgcHJvY2Vzc2VkICovCisJ CUFzc2VydChwc2V0LnBpcGVkX2NvbW1hbmRzID09IDApOworCQkvKiBhbmQgYWxsIHJlc3VsdHMg d2VyZSByZWFkICovCisJCUFzc2VydChwc2V0LmF2YWlsYWJsZV9yZXN1bHRzID09IDApOworCX0K KwlBc3NlcnQocHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9PSAwKTsKKwogCS8qIG1heSBuZWVkIHRo aXMgdG8gcmVjb3ZlciBmcm9tIGNvbm4gbG9zcyBkdXJpbmcgQ09QWSAqLwogCWlmICghQ2hlY2tD b25uZWN0aW9uKCkpCiAJCXJldHVybiAtMTsKQEAgLTIyOTcsNiArMjU1OCwxMiBAQCBjbGVhbl9l eHRlbmRlZF9zdGF0ZSh2b2lkKQogCQkJcHNldC5iaW5kX3BhcmFtcyA9IE5VTEw7CiAJCQlicmVh azsKIAkJY2FzZSBQU1FMX1NFTkRfUVVFUlk6CisJCWNhc2UgUFNRTF9TRU5EX1NUQVJUX1BJUEVM SU5FX01PREU6IC8qIFxzdGFydHBpcGVsaW5lICovCisJCWNhc2UgUFNRTF9TRU5EX0VORF9QSVBF TElORV9NT0RFOgkvKiBcZW5kcGlwZWxpbmUgKi8KKwkJY2FzZSBQU1FMX1NFTkRfUElQRUxJTkVf U1lOQzoJLyogXHN5bmNwaXBlbGluZSAqLworCQljYXNlIFBTUUxfU0VORF9GTFVTSDoJLyogXGZs dXNoICovCisJCWNhc2UgUFNRTF9TRU5EX0dFVF9SRVNVTFRTOiAvKiBcZ2V0cmVzdWx0cyAqLwor CQljYXNlIFBTUUxfU0VORF9GTFVTSF9SRVFVRVNUOgkvKiBcZmx1c2hyZXF1ZXN0ICovCiAJCQli cmVhazsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3Bz cWwvaGVscC5jCmluZGV4IGRhOGUxYWRlNWRmLi43MTRiODYxOTIzMyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL2hlbHAuYworKysgYi9zcmMvYmluL3BzcWwvaGVscC5jCkBAIC0xNjcsMTUgKzE2 NywyMiBAQCBzbGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlIRUxQMCgiICBc XGNsb3NlIFNUTVRfTkFNRSAgICAgICBjbG9zZSBhbiBleGlzdGluZyBwcmVwYXJlZCBzdGF0ZW1l bnRcbiIpOwogCUhFTFAwKCIgIFxcY29weXJpZ2h0ICAgICAgICAgICAgIHNob3cgUG9zdGdyZVNR TCB1c2FnZSBhbmQgZGlzdHJpYnV0aW9uIHRlcm1zXG4iKTsKIAlIRUxQMCgiICBcXGNyb3NzdGFi dmlldyBbQ09MVU1OU10gZXhlY3V0ZSBxdWVyeSBhbmQgZGlzcGxheSByZXN1bHQgaW4gY3Jvc3N0 YWJcbiIpOworCUhFTFAwKCIgIFxcZW5kcGlwZWxpbmUgICAgICAgICAgIGV4aXQgcGlwZWxpbmUg bW9kZVxuIik7CiAJSEVMUDAoIiAgXFxlcnJ2ZXJib3NlICAgICAgICAgICAgc2hvdyBtb3N0IHJl Y2VudCBlcnJvciBtZXNzYWdlIGF0IG1heGltdW0gdmVyYm9zaXR5XG4iKTsKKwlIRUxQMCgiICBc XGZsdXNoICAgICAgICAgICAgICAgICBwdXNoIHVuc2VudCBkYXRhIHRvIHRoZSBzZXJ2ZXJcbiIp OworCUhFTFAwKCIgIFxcZmx1c2hyZXF1ZXN0ICAgICAgICAgIHNlbmQgYSBmbHVzaHJlcXVlc3Qg Y29tbWFuZFxuIik7CiAJSEVMUDAoIiAgXFxnIFsoT1BUSU9OUyldIFtGSUxFXSAgZXhlY3V0ZSBx dWVyeSAoYW5kIHNlbmQgcmVzdWx0IHRvIGZpbGUgb3IgfHBpcGUpO1xuIgogCQkgICIgICAgICAg ICAgICAgICAgICAgICAgICAgXFxnIHdpdGggbm8gYXJndW1lbnRzIGlzIGVxdWl2YWxlbnQgdG8g YSBzZW1pY29sb25cbiIpOwogCUhFTFAwKCIgIFxcZ2Rlc2MgICAgICAgICAgICAgICAgIGRlc2Ny aWJlIHJlc3VsdCBvZiBxdWVyeSwgd2l0aG91dCBleGVjdXRpbmcgaXRcbiIpOworCUhFTFAwKCIg IFxcZ2V0cmVzdWx0cyBbTlVNX1JFU10gIHJlYWQgTlVNX1JFUyBwZW5kaW5nIHJlc3VsdHMuIEFs bCBwZW5kaW5nIHJlc3VsdHMgYXJlXG4iCisJCSAgIiAgICAgICAgICAgICAgICAgICAgICAgICBy ZWFkIGlmIG5vIGFyZ3VtZW50IGlzIHByb3ZpZGVkXG4iKTsKIAlIRUxQMCgiICBcXGdleGVjICAg ICAgICAgICAgICAgICBleGVjdXRlIHF1ZXJ5LCB0aGVuIGV4ZWN1dGUgZWFjaCB2YWx1ZSBpbiBp dHMgcmVzdWx0XG4iKTsKIAlIRUxQMCgiICBcXGdzZXQgW1BSRUZJWF0gICAgICAgICBleGVjdXRl IHF1ZXJ5IGFuZCBzdG9yZSByZXN1bHQgaW4gcHNxbCB2YXJpYWJsZXNcbiIpOwogCUhFTFAwKCIg IFxcZ3ggWyhPUFRJT05TKV0gW0ZJTEVdIGFzIFxcZywgYnV0IGZvcmNlcyBleHBhbmRlZCBvdXRw dXQgbW9kZVxuIik7CiAJSEVMUDAoIiAgXFxwYXJzZSBTVE1UX05BTUUgICAgICAgY3JlYXRlIGEg cHJlcGFyZWQgc3RhdGVtZW50XG4iKTsKIAlIRUxQMCgiICBcXHEgICAgICAgICAgICAgICAgICAg ICBxdWl0IHBzcWxcbiIpOworCUhFTFAwKCIgIFxcc3RhcnRwaXBlbGluZSAgICAgICAgIGVudGVy IHBpcGVsaW5lIG1vZGVcbiIpOworCUhFTFAwKCIgIFxcc3luY3BpcGVsaW5lICAgICAgICAgIGFk ZCBhIHN5bmNocm9uaXNhdGlvbiBwb2ludCB0byBhbiBvbmdvaW5nIHBpcGVsaW5lXG4iKTsKIAlI RUxQMCgiICBcXHdhdGNoIFtbaT1dU0VDXSBbYz1OXSBbbT1NSU5dXG4iCiAJCSAgIiAgICAgICAg ICAgICAgICAgICAgICAgICBleGVjdXRlIHF1ZXJ5IGV2ZXJ5IFNFQyBzZWNvbmRzLCB1cCB0byBO IHRpbWVzLFxuIgogCQkgICIgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCBpZiBsZXNzIHRo YW4gTUlOIHJvd3MgYXJlIHJldHVybmVkXG4iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9z ZXR0aW5ncy5oIGIvc3JjL2Jpbi9wc3FsL3NldHRpbmdzLmgKaW5kZXggMmE4ZmUxMmViNTUuLjAy MmE2ZTkxODNlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvc2V0dGluZ3MuaAorKysgYi9zcmMv YmluL3BzcWwvc2V0dGluZ3MuaApAQCAtNjksNiArNjksMTIgQEAgdHlwZWRlZiBlbnVtCiAJUFNR TF9TRU5EX0VYVEVOREVEX1BBUlNFLAogCVBTUUxfU0VORF9FWFRFTkRFRF9RVUVSWV9QQVJBTVMs CiAJUFNRTF9TRU5EX0VYVEVOREVEX1FVRVJZX1BSRVBBUkVELAorCVBTUUxfU0VORF9QSVBFTElO RV9TWU5DLAorCVBTUUxfU0VORF9TVEFSVF9QSVBFTElORV9NT0RFLAorCVBTUUxfU0VORF9FTkRf UElQRUxJTkVfTU9ERSwKKwlQU1FMX1NFTkRfRkxVU0gsCisJUFNRTF9TRU5EX0ZMVVNIX1JFUVVF U1QsCisJUFNRTF9TRU5EX0dFVF9SRVNVTFRTLAogfSBQU1FMX1NFTkRfTU9ERTsKIAogdHlwZWRl ZiBlbnVtCkBAIC0xMTEsNiArMTE3LDEyIEBAIHR5cGVkZWYgc3RydWN0IF9wc3FsU2V0dGluZ3MK IAljaGFyCSAgKipiaW5kX3BhcmFtczsJLyogcGFyYW1ldGVycyBmb3IgZXh0ZW5kZWQgcXVlcnkg cHJvdG9jb2wgY2FsbCAqLwogCWNoYXIJICAgKnN0bXROYW1lOwkJLyogcHJlcGFyZWQgc3RhdGVt ZW50IG5hbWUgdXNlZCBmb3IgZXh0ZW5kZWQKIAkJCQkJCQkJICogcXVlcnkgcHJvdG9jb2wgY29t bWFuZHMgKi8KKwlpbnQJCQlwaXBlZF9jb21tYW5kczsgLyogbnVtYmVyIG9mIHBpcGVkIGNvbW1h bmRzICovCisJaW50CQkJcGlwZWRfc3luY3M7CS8qIG51bWJlciBvZiBwaXBlZCBzeW5jcyAqLwor CWludAkJCWF2YWlsYWJsZV9yZXN1bHRzOwkvKiBudW1iZXIgb2YgcmVzdWx0cyBhdmFpbGFibGUg dG8gZ2V0ICovCisJaW50CQkJcmVxdWVzdGVkX3Jlc3VsdHM7CS8qIG51bWJlciBvZiByZXF1ZXN0 ZWQgcmVzdWx0cywgaW5jbHVkZQorCQkJCQkJCQkJICogc3luYyBtZXNzYWdlcy4gVXNlZCB0byBy ZWFkIGEgbGltaXRlZAorCQkJCQkJCQkJICogc3Vic2V0IG9mIHRoZSBhdmFpbGFibGVfcmVzdWx0 cyAqLwogCWJvb2wJCWNyb3NzdGFiX2ZsYWc7CS8qIG9uZS1zaG90IHJlcXVlc3QgdG8gY3Jvc3N0 YWIgcmVzdWx0ICovCiAJY2hhcgkgICAqY3R2X2FyZ3NbNF07CS8qIFxjcm9zc3RhYnZpZXcgYXJn dW1lbnRzICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBi L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCBlYjhiYzEyODcyMC4uODQzMmJl NjQxYWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTE4ODUsOSArMTg4NSw5IEBAIHBzcWxf Y29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJcXGRy ZHMiLCAiXFxkcmciLCAiXFxkUnMiLCAiXFxkUnAiLCAiXFxkcyIsCiAJCSJcXGR0IiwgIlxcZFQi LCAiXFxkdiIsICJcXGR1IiwgIlxcZHgiLCAiXFxkWCIsICJcXGR5IiwKIAkJIlxcZWNobyIsICJc XGVkaXQiLCAiXFxlZiIsICJcXGVsaWYiLCAiXFxlbHNlIiwgIlxcZW5jb2RpbmciLAotCQkiXFxl bmRpZiIsICJcXGVycnZlcmJvc2UiLCAiXFxldiIsCi0JCSJcXGYiLAotCQkiXFxnIiwgIlxcZ2Rl c2MiLCAiXFxnZXRlbnYiLCAiXFxnZXhlYyIsICJcXGdzZXQiLCAiXFxneCIsCisJCSJcXGVuZGlm IiwgIlxcZW5kcGlwZWxpbmUiLCAiXFxlcnJ2ZXJib3NlIiwgIlxcZXYiLAorCQkiXFxmIiwgIlxc Zmx1c2giLCAiXFxmbHVzaHJlcXVlc3QiLAorCQkiXFxnIiwgIlxcZ2Rlc2MiLCAiXFxnZXRlbnYi LCAiXFxnZXRyZXN1bHRzIiwgIlxcZ2V4ZWMiLCAiXFxnc2V0IiwgIlxcZ3giLAogCQkiXFxoZWxw IiwgIlxcaHRtbCIsCiAJCSJcXGlmIiwgIlxcaW5jbHVkZSIsICJcXGluY2x1ZGVfcmVsYXRpdmUi LCAiXFxpciIsCiAJCSJcXGxpc3QiLCAiXFxsb19pbXBvcnQiLCAiXFxsb19leHBvcnQiLCAiXFxs b19saXN0IiwgIlxcbG9fdW5saW5rIiwKQEAgLTE4OTUsNyArMTg5NSw3IEBAIHBzcWxfY29tcGxl dGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJcXHBhcnNlIiwg IlxccGFzc3dvcmQiLCAiXFxwcmludCIsICJcXHByb21wdCIsICJcXHBzZXQiLAogCQkiXFxxZWNo byIsICJcXHF1aXQiLAogCQkiXFxyZXNldCIsCi0JCSJcXHMiLCAiXFxzZXQiLCAiXFxzZXRlbnYi LCAiXFxzZiIsICJcXHN2IiwKKwkJIlxccyIsICJcXHNldCIsICJcXHNldGVudiIsICJcXHNmIiwg Ilxcc3RhcnRwaXBlbGluZSIsICJcXHN2IiwgIlxcc3luY3BpcGVsaW5lIiwKIAkJIlxcdCIsICJc XFQiLCAiXFx0aW1pbmciLAogCQkiXFx1bnNldCIsCiAJCSJcXHgiLApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHNxbC5vdXQKaW5kZXggZjlkYjQwMzJlMWYuLjY1NDNlOTBkZTc1IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTQ2NzgsMTEgKzQ2NzgsMTUgQEAgYmFyICdiYXInICJiYXIi CiAJXGVjaG8gYXJnMSBhcmcyIGFyZzMgYXJnNCBhcmc1CiAJXGVjaG8gYXJnMQogCVxlbmNvZGlu ZyBhcmcxCisJXGVuZHBpcGVsaW5lCiAJXGVycnZlcmJvc2UKIAlcZiBhcmcxCisJXGZsdXNoCisJ XGZsdXNocmVxdWVzdAogCVxnIGFyZzEKIAlcZ3ggYXJnMQogCVxnZXhlYworCVxnZXRyZXN1bHRz CiAJU0VMRUNUIDEgQVMgb25lIFxnc2V0CiAJXGgKIAlcPwpAQCAtNDcwNiw2ICs0NzEwLDggQEAg aW52YWxpZCBjb21tYW5kIFxsbwogCVxzZXRlbnYgYXJnMSBhcmcyCiAJXHNmIHdob2xlX2xpbmUK IAlcc3Ygd2hvbGVfbGluZQorCVxzdGFydHBpcGVsaW5lCisJXHN5bmNwaXBlbGluZQogCVx0IGFy ZzEKIAlcVCBhcmcxCiAJXHRpbWluZyBhcmcxCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BzcWxfcGlwZWxpbmUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w c3FsX3BpcGVsaW5lLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MWRhNjNlNDM1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BzcWxfcGlwZWxpbmUub3V0CkBAIC0wLDAgKzEsNjg0IEBACistLQorLS0gVGVzdHMgdXNpbmcg cHNxbCBwaXBlbGluaW5nCistLQorQ1JFQVRFIFRBQkxFIHBzcWxfcGlwZWxpbmUoYSBJTlRFR0VS IFBSSU1BUlkgS0VZLCBzIFRFWFQpOworLS0gc2luZ2xlIHF1ZXJ5Citcc3RhcnRwaXBlbGluZQor U0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgdmFsMQorKDEgcm93KQorCistLSBtdWx0aXBsZSBxdWVyaWVzCitcc3RhcnRwaXBl bGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworU0VMRUNUICQxLCAkMiBcYmluZCAndmFs MicgJ3ZhbDMnIFxnCitTRUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1xlbmRw aXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworID9jb2x1 bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB2YWwyICAgICB8IHZhbDMK KygxIHJvdykKKworID9jb2x1bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyB2YWwyICAgICB8IHZhbDMKKygxIHJvdykKKworLS0gVGVzdCBcZmx1c2gKK1xzdGFydHBpcGVs aW5lCitcZmx1c2gKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xmbHVzaAorU0VMRUNUICQx LCAkMiBcYmluZCAndmFsMicgJ3ZhbDMnIFxnCitTRUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAn dmFsMycgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygx IHJvdykKKworID9jb2x1bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB2 YWwyICAgICB8IHZhbDMKKygxIHJvdykKKworID9jb2x1bW4/IHwgP2NvbHVtbj8gCistLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyB2YWwyICAgICB8IHZhbDMKKygxIHJvdykKKworLS0gc2VuZCBtdWx0 aXBsZSBzeW5jcworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xz eW5jcGlwZWxpbmUKK1xzeW5jcGlwZWxpbmUKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDInICd2 YWwzJyBcZworXHN5bmNwaXBlbGluZQorU0VMRUNUICQxLCAkMiBcYmluZCAndmFsNCcgJ3ZhbDUn IFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cp CisKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdmFsMiAg ICAgfCB2YWwzCisoMSByb3cpCisKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgdmFsNCAgICAgfCB2YWw1CisoMSByb3cpCisKKy0tIHN0YXJ0cGlwZWxpbmUg c2hvdWxkbid0IGhhdmUgYW55IGVmZmVjdCBpZiBhbHJlYWR5IGluIGEgcGlwZWxpbmUKK1xzdGFy dHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGVu ZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdmFsMQorKDEgcm93KQorCistLSBD b252ZXJ0IGFuIGltcGxpY2l0IHR4IGJsb2NrIHRvIGFuIGV4cGxpY2l0IHR4IGJsb2NrCitcc3Rh cnRwaXBlbGluZQorSU5TRVJUIElOVE8gcHNxbF9waXBlbGluZSBWQUxVRVMgKCQxKSBcYmluZCAx IFxnCitCRUdJTiBcYmluZCBcZworSU5TRVJUIElOVE8gcHNxbF9waXBlbGluZSBWQUxVRVMgKCQx KSBcYmluZCAyIFxnCitST0xMQkFDSyBcYmluZCBcZworXGVuZHBpcGVsaW5lCistLSBNdWx0aXBs ZSBleHBsaWNpdCB0cmFuc2FjdGlvbnMKK1xzdGFydHBpcGVsaW5lCitCRUdJTiBcYmluZCBcZwor SU5TRVJUIElOVE8gcHNxbF9waXBlbGluZSBWQUxVRVMgKCQxKSBcYmluZCAxIFxnCitST0xMQkFD SyBcYmluZCBcZworQkVHSU4gXGJpbmQgXGcKK0lOU0VSVCBJTlRPIHBzcWxfcGlwZWxpbmUgVkFM VUVTICgkMSkgXGJpbmQgMSBcZworQ09NTUlUIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKy0tIENP UFkgRlJPTSBTVERJTgorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcK K0NPUFkgcHNxbF9waXBlbGluZSBGUk9NIFNURElOIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKy0tIENPUFkgRlJPTSBTVERJ TiB3aXRoIFxmbHVzaHJlcXVlc3QgKyBcZ2V0cmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1NFTEVD VCAkMSBcYmluZCAndmFsMScgXGcKK0NPUFkgcHNxbF9waXBlbGluZSBGUk9NIFNURElOIFxiaW5k IFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQor IHZhbDEKKygxIHJvdykKKworbWVzc2FnZSB0eXBlIDB4NWEgYXJyaXZlZCBmcm9tIHNlcnZlciB3 aGlsZSBpZGxlCitcZW5kcGlwZWxpbmUKKy0tIENPUFkgRlJPTSBTVERJTiB3aXRoIFxzeW5jcGlw ZWxpbmUgKyBcZ2V0cmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFs MScgXGcKK0NPUFkgcHNxbF9waXBlbGluZSBGUk9NIFNURElOIFxiaW5kIFxnCitcc3luY3BpcGVs aW5lCitcZ2V0cmVzdWx0cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykK KworXGVuZHBpcGVsaW5lCistLSBDT1BZIFRPIFNURE9VVAorXHN0YXJ0cGlwZWxpbmUKK1NFTEVD VCAkMSBcYmluZCAndmFsMScgXGcKK2NvcHkgcHNxbF9waXBlbGluZSBUTyBTVERPVVQgXGJpbmQg XGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykK KworMQlcTgorMgl0ZXN0MgorMwl0ZXN0MworNAl0ZXN0NAorLS0gQ09QWSBUTyBTVERPVVQgd2l0 aCBcZmx1c2hyZXF1ZXN0ICsgXGdldHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEg XGJpbmQgJ3ZhbDEnIFxnCitjb3B5IHBzcWxfcGlwZWxpbmUgVE8gU1RET1VUIFxiaW5kIFxnCitc Zmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEK KygxIHJvdykKKworMQlcTgorMgl0ZXN0MgorMwl0ZXN0MworNAl0ZXN0NAorXGVuZHBpcGVsaW5l CistLSBDT1BZIFRPIFNURE9VVCB3aXRoIFxzeW5jcGlwZWxpbmUgKyBcZ2V0cmVzdWx0cworXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK2NvcHkgcHNxbF9waXBlbGlu ZSBUTyBTVERPVVQgXGJpbmQgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzCisgP2NvbHVt bj8gCistLS0tLS0tLS0tCisgdmFsMQorKDEgcm93KQorCisxCVxOCisyCXRlc3QyCiszCXRlc3Qz Cis0CXRlc3Q0CitcZW5kcGlwZWxpbmUKKy0tIFVzZSBccGFyc2UgYW5kIFxiaW5kX25hbWVkCitc c3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxwYXJzZSAnJworU0VMRUNUICQxLCAkMiBccGFyc2Ug JycKK1NFTEVDVCAkMiBccGFyc2UgcGlwZWxpbmVfMQorXGJpbmRfbmFtZWQgJycgMSAyIFxnCitc YmluZF9uYW1lZCBwaXBlbGluZV8xIDIgXGcKK1xlbmRwaXBlbGluZQorRVJST1I6ICBjb3VsZCBu b3QgZGV0ZXJtaW5lIGRhdGEgdHlwZSBvZiBwYXJhbWV0ZXIgJDEKKy0tIFxnZXRyZXN1bHRzIGRp c3BsYXlzIGFsbCByZXN1bHRzIHByZWNlZGluZyBhIFxmbHVzaHJlcXVlc3QKK1xzdGFydHBpcGVs aW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xmbHVzaHJl cXVlc3QKK1xnZXRyZXN1bHRzCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93KQor CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgorKDEgcm93KQorCitcZW5kcGlwZWxpbmUKKy0t IFxnZXRyZXN1bHRzIGRpc3BsYXlzIGFsbCByZXN1bHRzIHByZWNlZGluZyBhIHN5bmMKK1xzdGFy dHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xz eW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEg cm93KQorCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgorKDEgcm93KQorCitcZW5kcGlwZWxp bmUKKy0tIFxnZXRyZXN1bHRzIGltbWVkaWF0ZWx5IHJldHVybnMgaWYgdGhlcmUncyBubyByZXN1 bHQgdG8gZmV0Y2gKK1xzdGFydHBpcGVsaW5lCitcZ2V0cmVzdWx0cworTm8gcGVuZGluZyByZXN1 bHRzIHRvIGdldAorU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xnZXRyZXN1bHRzCitObyBwZW5kaW5n IHJlc3VsdHMgdG8gZ2V0CitcZmx1c2hyZXF1ZXN0CitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKK1xnZXRyZXN1bHRzCitObyBwZW5kaW5nIHJlc3Vs dHMgdG8gZ2V0CistLSBcZ2V0cmVzdWx0cyBvbmx5IGZldGNoIHJlc3VsdHMgcHJlY2VkaW5nIGEg Zmx1c2hyZXF1ZXN0Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xmbHVz aHJlcXVlc3QKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZ2V0cmVzdWx0cworID9jb2x1bW4/IAor LS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgMgorKDEgcm93KQorCistLSBcZ2V0cmVzdWx0cyBvbmx5IGZldGNoIHJlc3VsdHMg cHJlY2VkaW5nIGEgc3luYyBtZXNzYWdlCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5k IDIgXGcKK1xzeW5jcGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZ2V0cmVzdWx0cwor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworXGVuZHBpcGVsaW5lCisgP2Nv bHVtbj8gCistLS0tLS0tLS0tCisgMgorKDEgcm93KQorCistLSB1c2UgcGlwZWxpbmUgd2l0aCBj aHVua2VkIHJlc3VsdHMgd2l0aCBib3RoIFxnZXRyZXN1bHRzIGFuZCBcZW5kcGlwZWxpbmUKK1xz dGFydHBpcGVsaW5lCitcc2V0IEZFVENIX0NPVU5UIDEwCitTRUxFQ1QgJDEgXGJpbmQgMiBcZwor XGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAyCiso MSByb3cpCisKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKK1x1bnNldCBGRVRDSF9DT1VOVAorLS0gXGdldHJl c3VsdHMgd2l0aCBzcGVjaWZpYyBudW1iZXIgb2YgcmVxdWVzdGVkIHJlc3VsdHMKK1xzdGFydHBp cGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1NFTEVD VCAkMSBcYmluZCAzIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cyAxCisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgMQorKDEgcm93KQorCitTRUxFQ1QgJDEgXGJpbmQgNCBcZworXGdldHJl c3VsdHMgMworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworID9jb2x1bW4/ IAorLS0tLS0tLS0tLQorIDMKKygxIHJvdykKKworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgNAorKDEgcm93KQorCistLSBcc3luY3BpcGVsaW5lIGNvdW50IGFzIG9uZSBj b21tYW5kIHRvIGZldGNoIGZvciBcZ2V0cmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1xzeW5jcGlw ZWxpbmUKK1xzeW5jcGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitcZmx1c2hyZXF1ZXN0 CitcZ2V0cmVzdWx0cyAyCitcZ2V0cmVzdWx0cyAxCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg MQorKDEgcm93KQorCitcZW5kcGlwZWxpbmUKKy0tIFxnZXRyZXN1bHRzIDAgc2hvdWxkIGdldCBh bGwgcmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1Qg JDEgXGJpbmQgMiBcZworU0VMRUNUICQxIFxiaW5kIDMgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRy ZXN1bHRzIDAKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAxCisoMSByb3cpCisKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAz CisoMSByb3cpCisKK1xlbmRwaXBlbGluZQorLS0gcGlwZWxpbmluZyBlcnJvcnMKKy0tIGVuZHBp cGVsaW5lIG91dHNpZGUgb2YgcGlwZWxpbmUgc2hvdWxkIGZhaWwKK1xlbmRwaXBlbGluZQorY2Fu bm90IHNlbmQgcGlwZWxpbmUgd2hlbiBub3QgaW4gcGlwZWxpbmUgbW9kZQorLS0gUXVlcnkgdXNp bmcgc2ltcGxlIHByb3RvY29sIHNob3VsZCBub3QgYmUgc2VudCBhbmQgc2hvdWxkIGxlYXZlIHRo ZSBwaXBlbGluZSB1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMTsKK1BRc2VuZFF1ZXJ5 IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcK K1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykKKwor LS0gQWZ0ZXIgYW4gYWJvcnRlZCBwaXBlbGluZSwgY29tbWFuZHMgYWZ0ZXIgYSBzeW5jIHNob3Vs ZCBiZSBkaXNwbGF5ZWQKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgXGcKK1xzeW5j cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitcZW5kcGlwZWxpbmUKK0VSUk9SOiAgYmlu ZCBtZXNzYWdlIHN1cHBsaWVzIDAgcGFyYW1ldGVycywgYnV0IHByZXBhcmVkIHN0YXRlbWVudCAi IiByZXF1aXJlcyAxCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93KQorCistLSBJ bmNvcnJlY3QgbnVtYmVyIG9mIHBhcmFtZXRlcnMsIHRoZSBwaXBlbGluZSB3aWxsIGJlIGFib3J0 ZWQgYW5kIGZvbGxvd2luZyBxdWVyaWVzIHdvbid0IGJlIGV4ZWN1dGVkCitcc3RhcnRwaXBlbGlu ZQorU0VMRUNUIFxiaW5kICd2YWwxJyBcZworU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGVu ZHBpcGVsaW5lCitFUlJPUjogIGJpbmQgbWVzc2FnZSBzdXBwbGllcyAxIHBhcmFtZXRlcnMsIGJ1 dCBwcmVwYXJlZCBzdGF0ZW1lbnQgIiIgcmVxdWlyZXMgMAorLS0gQW4gZXhwbGljaXQgdHJhbnNh Y3Rpb24gd2l0aCBhbiBlcnJvciBuZWVkcyB0byBiZSByb2xsYmFja2VkIGFmdGVyIHRoZSBwaXBl bGluZQorXHN0YXJ0cGlwZWxpbmUKK0JFR0lOIFxiaW5kIFxnCitJTlNFUlQgSU5UTyBwc3FsX3Bp cGVsaW5lIFZBTFVFUyAoJDEpIFxiaW5kIDEgXGcKK1JPTExCQUNLIFxiaW5kIFxnCitcZW5kcGlw ZWxpbmUKK0VSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3Ry YWludCAicHNxbF9waXBlbGluZV9wa2V5IgorREVUQUlMOiAgS2V5IChhKT0oMSkgYWxyZWFkeSBl eGlzdHMuCitST0xMQkFDSzsKKy0tIFx3YXRjaCBzZW5kcyBhIHNpbXBsZSBxdWVyeSB3aGljaCB3 b24ndCBiZSBhbGxvd2VkIHdpdGhpbiBhIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNU IFxiaW5kIFxnCitcd2F0Y2ggMQorUFFzZW5kUXVlcnkgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUg bW9kZQorCitcZW5kcGlwZWxpbmUKKy0tCisoMSByb3cpCisKKy0tIFxnZGVzYyBzaG91bGQgZmFp bCBhcyBzeW5jaHJvbm91cyBjb21tYW5kcyBhcmUgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUsIHBp cGVsaW5lIHNob3VsZCBzdGlsbCBiZSB1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEg XGJpbmQgMSBcZ2Rlc2MKK3N5bmNocm9ub3VzIGNvbW1hbmQgZXhlY3V0aW9uIGZ1bmN0aW9ucyBh cmUgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorU0VMRUNUICQxIFxiaW5kIDEgXGcKK1xl bmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworLS0gXGdz ZXQgaXMgbm90IGFsbG93ZWQsIHBpcGVsaW5lIHNob3VsZCBzdGlsbCBiZSB1c2FibGUKK1xzdGFy dHBpcGVsaW5lCitTRUxFQ1QgJDEgYXMgaSwgJDIgYXMgaiBccGFyc2UgJycKK1NFTEVDVCAkMSBh cyBrLCAkMiBhcyBsIFxwYXJzZSAnc2Vjb25kJworXGJpbmRfbmFtZWQgJycgMSAyIFxnc2V0Citc Z3NldCBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlCitcYmluZF9uYW1lZCBzZWNvbmQgMSAy IFxnc2V0IHByZWYwMl8gXGVjaG8gOnByZWYwMl9pIDpwcmVmMDJfagorXGdzZXQgbm90IGFsbG93 ZWQgaW4gcGlwZWxpbmUgbW9kZQorXGJpbmRfbmFtZWQgJycgMSAyIFxnCitcZW5kcGlwZWxpbmUK KyBpIHwgaiAKKy0tLSstLS0KKyAxIHwgMgorKDEgcm93KQorCistLSBcZ3ggaXMgbm90IGFsbG93 ZWQsIHBpcGVsaW5lIHNob3VsZCBzdGlsbCBiZSB1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxF Q1QgJDEgXGJpbmQgMSBcZ3gKK1xneCBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlCitccmVz ZXQKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0t LS0tLS0KKyAxCisoMSByb3cpCisKKy0tIFxneCB3YXJuaW5nIHNob3VsZCBiZSBlbWl0dGVkIGlu IGFuIGFib3J0ZWQgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgXGcK K1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCitFUlJPUjogIGJpbmQgbWVzc2FnZSBzdXBwbGll cyAwIHBhcmFtZXRlcnMsIGJ1dCBwcmVwYXJlZCBzdGF0ZW1lbnQgIiIgcmVxdWlyZXMgMQorU0VM RUNUICQxIFxiaW5kIDEgXGd4CitcZ3ggbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorXGVu ZHBpcGVsaW5lCistLSBcZ2V4ZWMgaXMgbm90IGFsbG93ZWQsIHBpcGVsaW5lIHNob3VsZCBzdGls bCBiZSB1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJ0lOU0VSVCBJTlRPIHBzcWxfcGlw ZWxpbmUoYSkgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMCknIFxwYXJzZSAnaW5zZXJ0X3N0 bXQnCitcYmluZF9uYW1lZCBpbnNlcnRfc3RtdCBcZ2V4ZWMKK1xnZXhlYyBub3QgYWxsb3dlZCBp biBwaXBlbGluZSBtb2RlCitcYmluZF9uYW1lZCBpbnNlcnRfc3RtdCBcZworU0VMRUNUIENPVU5U KCopIEZST00gcHNxbF9waXBlbGluZSBcYmluZCBcZworXGVuZHBpcGVsaW5lCisgICAgICAgICAg ICAgICAgICAgICAgICAgID9jb2x1bW4/ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IElOU0VSVCBJTlRPIHBzcWxfcGlwZWxpbmUoYSkgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAx MCkKKygxIHJvdykKKworIGNvdW50IAorLS0tLS0tLQorICAgICA0CisoMSByb3cpCisKKy0tIEFm dGVyIGFuIGVycm9yLCBwaXBlbGluZSBpcyBhYm9ydGVkIGFuZCByZXF1aXJlcyBhIHN5bmMgdG8g YmUgcmV1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgXGcKK1NFTEVDVCAk MSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXHBhcnNlIGEKK1xiaW5kX25hbWVkIGEgMSBcZworXGNs b3NlIGEKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCitFUlJPUjogIGJpbmQgbWVzc2FnZSBz dXBwbGllcyAwIHBhcmFtZXRlcnMsIGJ1dCBwcmVwYXJlZCBzdGF0ZW1lbnQgIiIgcmVxdWlyZXMg MQorLS0gUGlwZWxpbmUgaXMgYWJvcnRlZAorU0VMRUNUICQxIFxiaW5kIDEgXGcKK1NFTEVDVCAk MSBccGFyc2UgYQorXGJpbmRfbmFtZWQgYSAxIFxnCitcY2xvc2UgYQorLS0gU3luYyBhbGxvd3Mg cGlwZWxpbmUgdG8gcmVjb3ZlcgorXHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMKK1BpcGVsaW5l IGFib3J0ZWQsIGNvbW1hbmQgZGlkbid0IHJ1bgorU0VMRUNUICQxIFxiaW5kIDEgXGcKK1NFTEVD VCAkMSBccGFyc2UgYQorXGJpbmRfbmFtZWQgYSAxIFxnCitcY2xvc2UgYQorXGZsdXNocmVxdWVz dAorXGdldHJlc3VsdHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAxCisoMSByb3cpCisKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAxCisoMSByb3cpCisKK1xlbmRwaXBlbGluZQorLS0gSW4g YW4gYWJvcnRlZCBwaXBlbGluZSwgXGdldHJlc3VsdHMgMSBhYm9ydGVkIGNvbW1hbmRzIG9uZSBh dCBhIHRpbWUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgXGcKK1NFTEVDVCAkMSBc YmluZCAxIFxnCitTRUxFQ1QgJDEgXHBhcnNlIGEKK1xiaW5kX25hbWVkIGEgMSBcZworXHN5bmNw aXBlbGluZQorXGdldHJlc3VsdHMgMQorRVJST1I6ICBiaW5kIG1lc3NhZ2Ugc3VwcGxpZXMgMCBw YXJhbWV0ZXJzLCBidXQgcHJlcGFyZWQgc3RhdGVtZW50ICIiIHJlcXVpcmVzIDEKK1xnZXRyZXN1 bHRzIDEKK1BpcGVsaW5lIGFib3J0ZWQsIGNvbW1hbmQgZGlkbid0IHJ1bgorXGdldHJlc3VsdHMg MQorUGlwZWxpbmUgYWJvcnRlZCwgY29tbWFuZCBkaWRuJ3QgcnVuCitcZ2V0cmVzdWx0cyAxCitQ aXBlbGluZSBhYm9ydGVkLCBjb21tYW5kIGRpZG4ndCBydW4KK1xnZXRyZXN1bHRzIDEKK1xlbmRw aXBlbGluZQorLS0gVGVzdCBjaHVua2VkIHJlc3VsdHMgd2l0aCBhbiBhYm9ydGVkIHBpcGVsaW5l Citcc3RhcnRwaXBlbGluZQorXHNldCBGRVRDSF9DT1VOVCAxMAorU0VMRUNUICQxIFxiaW5kIFxn CitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworRVJST1I6ICBiaW5kIG1lc3NhZ2Ugc3VwcGxp ZXMgMCBwYXJhbWV0ZXJzLCBidXQgcHJlcGFyZWQgc3RhdGVtZW50ICIiIHJlcXVpcmVzIDEKK1NF TEVDVCAkMSBcYmluZCBcZworXGVuZHBpcGVsaW5lCitmZXRjaGluZyByZXN1bHRzIGluIGNodW5r ZWQgbW9kZSBmYWlsZWQKK1BpcGVsaW5lIGFib3J0ZWQsIGNvbW1hbmQgZGlkbid0IHJ1bgorXHVu c2V0IEZFVENIX0NPVU5UCistLSBcZ2V0cmVzdWx0cyByZXR1cm5zIGFuIGVycm9yIHdoZW4gYW4g aW5jb3JyZWN0IG51bWJlciBpcyBwcm92aWRlZAorXHN0YXJ0cGlwZWxpbmUKK1xnZXRyZXN1bHRz IC0xCitcZ2V0cmVzdWx0czogaW52YWxpZCBudW1iZXIgb2YgcmVxdWVzdGVkIHJlc3VsdHMKK1xl bmRwaXBlbGluZQorLS0gXGdldHJlc3VsdHMgd2hlbiB0aGVyZSdzIG5vIHJlc3VsdCBzaG91bGRu J3QgaW1wYWN0IHRoZSBmb2xsb3dpbmcgcXVlcnkKK1xnZXRyZXN1bHRzIDEKK05vIHBlbmRpbmcg cmVzdWx0cyB0byBnZXQKK3NlbGVjdCAxOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAg ICAxCisoMSByb3cpCisKKy0tIHBpcGVsaW5pbmcgYW5kIHRyYW5zYWN0aW9uIGJsb2NrIGJlaGF2 aW91cgorLS0gc2V0IGxvY2FsIHdpbGwgaXNzdWUgYSB3YXJuaW5nIHdoZW4gbW9kaWZ5aW5nIGEg R1VDIG91dHNpZGUgb2YgYSB0cmFuc2FjdGlvbiBibG9jaworLS0gVGhlIGNoYW5nZSB3aWxsIHN0 aWxsIGJlIHZhbGlkIGFzIGEgcGlwZWxpbmUgcnVucyB3aXRoaW4gYW4gaW1wbGljaXQgdHJhbnNh Y3Rpb24gYmxvY2sKKy0tIFNlbmRpbmcgYSBzeW5jIHdpbGwgY29tbWl0IHRoZSBpbXBsaWNpdCB0 cmFuc2FjdGlvbiBibG9jay4gVGhlIGZpcnN0IGNvbW1hbmQgYWZ0ZXIgYSBzeW5jCistLSB3b24n dCBiZSBzZWVuIGFzIGJlbG9uZ2luZyB0byBhIHBpcGVsaW5lLgorXHN0YXJ0cGlwZWxpbmUKK1NF VCBMT0NBTCBzdGF0ZW1lbnRfdGltZW91dD0nMWgnIFxiaW5kIFxnCitTSE9XIHN0YXRlbWVudF90 aW1lb3V0IFxiaW5kIFxnCitcc3luY3BpcGVsaW5lCitTSE9XIHN0YXRlbWVudF90aW1lb3V0IFxi aW5kIFxnCitTRVQgTE9DQUwgc3RhdGVtZW50X3RpbWVvdXQ9JzJoJyBcYmluZCBcZworU0hPVyBz dGF0ZW1lbnRfdGltZW91dCBcYmluZCBcZworXGVuZHBpcGVsaW5lCitXQVJOSU5HOiAgU0VUIExP Q0FMIGNhbiBvbmx5IGJlIHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzCisgc3RhdGVtZW50X3Rp bWVvdXQgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgMWgKKygxIHJvdykKKworIHN0YXRlbWVudF90 aW1lb3V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIDAKKygxIHJvdykKKworIHN0YXRlbWVudF90 aW1lb3V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIDJoCisoMSByb3cpCisKKy0tIFJlaW5kZXgg Y29uY3VycmVudGx5IGlzIGZvcmJpZGRlbiBpbiB0aGUgbWlkZGxlIG9mIGEgcGlwZWxpbmUKK1xz dGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworUkVJTkRFWCBUQUJMRSBDT05DVVJS RU5UTFkgcHNxbF9waXBlbGluZSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRw aXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworRVJST1I6ICBS RUlOREVYIENPTkNVUlJFTlRMWSBjYW5ub3QgcnVuIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2Nr CistLSBSZWluZGV4IGNvbmN1cnJlbnRseSB3aWxsIHdvcmsgaWYgaXQncyB0aGUgZmlyc3QgY29t bWFuZCBvZiBhIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorUkVJTkRFWCBUQUJMRSBDT05DVVJS RU5UTFkgcHNxbF9waXBlbGluZSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRw aXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworLS0gc3VidHJh bnNhY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlCitcc3RhcnRwaXBlbGlu ZQorU0FWRVBPSU5UIGEgXGJpbmQgXGcKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitST0xMQkFDSyBU TyBTQVZFUE9JTlQgYSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGlu ZQorRVJST1I6ICBTQVZFUE9JTlQgY2FuIG9ubHkgYmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9j a3MKKy0tIExvY2sgY29tbWFuZCB3aWxsIGZhaWwgYXMgZmlyc3QgcGlwZWxpbmUgY29tbWFuZCBp cyBub3Qgc2VlbiBhcyBhIHRyYW5zYWN0aW9uIGJsb2NrCitcc3RhcnRwaXBlbGluZQorTE9DSyBw c3FsX3BpcGVsaW5lIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGVuZHBpcGVsaW5l CitFUlJPUjogIExPQ0sgVEFCTEUgY2FuIG9ubHkgYmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9j a3MKKy0tIExvY2sgY29tbWFuZCB3aWxsIHN1Y2NlZWQgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hbmQg YXMgcGlwZWxpbmUgd2lsbCBiZSBzZWVuIGFzIGFuIGltcGxpY2l0IHRyYW5zYWN0aW9uIGJsb2Nr Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGcKK0xPQ0sgcHNxbF9waXBlbGlu ZSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/ IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDIK KygxIHJvdykKKworLS0gVmFjdXVtIGNvbW1hbmQgd2lsbCB3b3JrIGFzIHRoZSBmaXJzdCBjb21t YW5kCitcc3RhcnRwaXBlbGluZQorVkFDVVVNIHBzcWxfcGlwZWxpbmUgXGJpbmQgXGcKK1xlbmRw aXBlbGluZQorLS0gVmFjdXVtIGNvbW1hbmQgd2lsbCBmYWlsIHdpdGhpbiBwaXBlbGluZSBpbXBs aWNpdCB0cmFuc2FjdGlvbgorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAxIFxiaW5kIFxnCitWQUNV VU0gcHNxbF9waXBlbGluZSBcYmluZCBcZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgICAgICAgIDEKKygxIHJvdykKKworRVJST1I6ICBWQUNVVU0gY2Fubm90IHJ1biBp bnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jaworLS0gVmFjdXVtIGNvbW1hbmQgd2lsbCB3b3JrIGFm dGVyIGEgc3luYworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAxIFxiaW5kIFxnCitcc3luY3BpcGVs aW5lCitWQUNVVU0gcHNxbF9waXBlbGluZSBcYmluZCBcZworXGVuZHBpcGVsaW5lCisgP2NvbHVt bj8gCistLS0tLS0tLS0tCisgICAgICAgIDEKKygxIHJvdykKKworLS0gRXJyb3IgbWVzc2FnZXMg YXJlIGN1cnJlbnRseSBhY2N1bXVsYXRpbmcgYW5kIHdpbGwgYmUgcmVwZWF0ZWQKK1xzdGFydHBp cGVsaW5lCitTRUxFQ1QgMSBcYmluZCBcZworU0VMRUNUIDE7CitQUXNlbmRRdWVyeSBub3QgYWxs b3dlZCBpbiBwaXBlbGluZSBtb2RlCitTRUxFQ1QgMTsKK1BRc2VuZFF1ZXJ5IG5vdCBhbGxvd2Vk IGluIHBpcGVsaW5lIG1vZGUKK1BRc2VuZFF1ZXJ5IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1v ZGUKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgICAxCisoMSBy b3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IGU2M2VlMmNmMmJiLi4zN2I2 ZDIxZTFmOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC04MSw3ICs4MSw3IEBA IHRlc3Q6IGJyaW5fYmxvb20gYnJpbl9tdWx0aQogdGVzdDogY3JlYXRlX3RhYmxlX2xpa2UgYWx0 ZXJfZ2VuZXJpYyBhbHRlcl9vcGVyYXRvciBtaXNjIGFzeW5jIGRic2l6ZSBtZXJnZSBtaXNjX2Z1 bmN0aW9ucyBzeXN2aWV3cyB0c3JmIHRpZCB0aWRzY2FuIHRpZHJhbmdlc2NhbiBjb2xsYXRlLnV0 ZjggY29sbGF0ZS5pY3UudXRmOCBpbmNyZW1lbnRhbF9zb3J0IGNyZWF0ZV9yb2xlIHdpdGhvdXRf b3ZlcmxhcHMgZ2VuZXJhdGVkX3ZpcnR1YWwKIAogIyBjb2xsYXRlLmxpbnV4LnV0ZjggYW5kIGNv bGxhdGUuaWN1LnV0ZjggdGVzdHMgY2Fubm90IGJlIHJ1biBpbiBwYXJhbGxlbCB3aXRoIGVhY2gg b3RoZXIKLXRlc3Q6IHJ1bGVzIHBzcWwgcHNxbF9jcm9zc3RhYiBhbXV0aWxzIHN0YXRzX2V4dCBj b2xsYXRlLmxpbnV4LnV0ZjggY29sbGF0ZS53aW5kb3dzLndpbjEyNTIKK3Rlc3Q6IHJ1bGVzIHBz cWwgcHNxbF9jcm9zc3RhYiBwc3FsX3BpcGVsaW5lIGFtdXRpbHMgc3RhdHNfZXh0IGNvbGxhdGUu bGludXgudXRmOCBjb2xsYXRlLndpbmRvd3Mud2luMTI1MgogCiAjIC0tLS0tLS0tLS0KICMgUnVu IHRoZXNlIGFsb25lIHNvIHRoZXkgZG9uJ3QgcnVuIG91dCBvZiBwYXJhbGxlbCB3b3JrZXJzCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BzcWwuc3FsCmluZGV4IGM1ODMwOGNlMTRmLi45N2QxYmUzYWFjMyAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHNxbC5zcWwKQEAgLTEwNDcsMTEgKzEwNDcsMTUgQEAgc2VsZWN0IFxpZiBmYWxzZSBcXCAo Ym9ndXMgXGVsc2UgXFwgNDIgXGVuZGlmIFxcIGZvcnR5X3R3bzsKIAlcZWNobyBhcmcxIGFyZzIg YXJnMyBhcmc0IGFyZzUKIAlcZWNobyBhcmcxCiAJXGVuY29kaW5nIGFyZzEKKwlcZW5kcGlwZWxp bmUKIAlcZXJydmVyYm9zZQogCVxmIGFyZzEKKwlcZmx1c2gKKwlcZmx1c2hyZXF1ZXN0CiAJXGcg YXJnMQogCVxneCBhcmcxCiAJXGdleGVjCisJXGdldHJlc3VsdHMKIAlTRUxFQ1QgMSBBUyBvbmUg XGdzZXQKIAlcaAogCVw/CkBAIC0xMDc0LDYgKzEwNzgsOCBAQCBzZWxlY3QgXGlmIGZhbHNlIFxc IChib2d1cyBcZWxzZSBcXCA0MiBcZW5kaWYgXFwgZm9ydHlfdHdvOwogCVxzZXRlbnYgYXJnMSBh cmcyCiAJXHNmIHdob2xlX2xpbmUKIAlcc3Ygd2hvbGVfbGluZQorCVxzdGFydHBpcGVsaW5lCisJ XHN5bmNwaXBlbGluZQogCVx0IGFyZzEKIAlcVCBhcmcxCiAJXHRpbWluZyBhcmcxCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsX3BpcGVsaW5lLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BzcWxfcGlwZWxpbmUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5iZWE0ODU2MGE5MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BzcWxfcGlwZWxpbmUuc3FsCkBAIC0wLDAgKzEsNDA4IEBACistLQorLS0gVGVzdHMg dXNpbmcgcHNxbCBwaXBlbGluaW5nCistLQorCitDUkVBVEUgVEFCTEUgcHNxbF9waXBlbGluZShh IElOVEVHRVIgUFJJTUFSWSBLRVksIHMgVEVYVCk7CisKKy0tIHNpbmdsZSBxdWVyeQorXHN0YXJ0 cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xlbmRwaXBlbGluZQorCistLSBt dWx0aXBsZSBxdWVyaWVzCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBc ZworU0VMRUNUICQxLCAkMiBcYmluZCAndmFsMicgJ3ZhbDMnIFxnCitTRUxFQ1QgJDEsICQyIFxi aW5kICd2YWwyJyAndmFsMycgXGcKK1xlbmRwaXBlbGluZQorCistLSBUZXN0IFxmbHVzaAorXHN0 YXJ0cGlwZWxpbmUKK1xmbHVzaAorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGZsdXNoCitT RUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1NFTEVDVCAkMSwgJDIgXGJpbmQg J3ZhbDInICd2YWwzJyBcZworXGVuZHBpcGVsaW5lCisKKy0tIHNlbmQgbXVsdGlwbGUgc3luY3MK K1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitcc3luY3BpcGVsaW5l Citcc3luY3BpcGVsaW5lCitTRUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1xz eW5jcGlwZWxpbmUKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDQnICd2YWw1JyBcZworXGVuZHBp cGVsaW5lCisKKy0tIHN0YXJ0cGlwZWxpbmUgc2hvdWxkbid0IGhhdmUgYW55IGVmZmVjdCBpZiBh bHJlYWR5IGluIGEgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VM RUNUICQxIFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5lCisKKy0tIENvbnZlcnQgYW4gaW1w bGljaXQgdHggYmxvY2sgdG8gYW4gZXhwbGljaXQgdHggYmxvY2sKK1xzdGFydHBpcGVsaW5lCitJ TlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEpIFxiaW5kIDEgXGcKK0JFR0lOIFxi aW5kIFxnCitJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEpIFxiaW5kIDIgXGcK K1JPTExCQUNLIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKworLS0gTXVsdGlwbGUgZXhwbGljaXQg dHJhbnNhY3Rpb25zCitcc3RhcnRwaXBlbGluZQorQkVHSU4gXGJpbmQgXGcKK0lOU0VSVCBJTlRP IHBzcWxfcGlwZWxpbmUgVkFMVUVTICgkMSkgXGJpbmQgMSBcZworUk9MTEJBQ0sgXGJpbmQgXGcK K0JFR0lOIFxiaW5kIFxnCitJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEpIFxi aW5kIDEgXGcKK0NPTU1JVCBcYmluZCBcZworXGVuZHBpcGVsaW5lCisKKy0tIENPUFkgRlJPTSBT VERJTgorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK0NPUFkgcHNx bF9waXBlbGluZSBGUk9NIFNURElOIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKzIJdGVzdDIKK1wu CisKKy0tIENPUFkgRlJPTSBTVERJTiB3aXRoIFxmbHVzaHJlcXVlc3QgKyBcZ2V0cmVzdWx0cwor XHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK0NPUFkgcHNxbF9waXBl bGluZSBGUk9NIFNURElOIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworMwl0 ZXN0MworXC4KK1xlbmRwaXBlbGluZQorCistLSBDT1BZIEZST00gU1RESU4gd2l0aCBcc3luY3Bp cGVsaW5lICsgXGdldHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3Zh bDEnIFxnCitDT1BZIHBzcWxfcGlwZWxpbmUgRlJPTSBTVERJTiBcYmluZCBcZworXHN5bmNwaXBl bGluZQorXGdldHJlc3VsdHMKKzQJdGVzdDQKK1wuCitcZW5kcGlwZWxpbmUKKworLS0gQ09QWSBU TyBTVERPVVQKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitjb3B5 IHBzcWxfcGlwZWxpbmUgVE8gU1RET1VUIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKworLS0gQ09Q WSBUTyBTVERPVVQgd2l0aCBcZmx1c2hyZXF1ZXN0ICsgXGdldHJlc3VsdHMKK1xzdGFydHBpcGVs aW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitjb3B5IHBzcWxfcGlwZWxpbmUgVE8gU1RE T1VUIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworXGVuZHBpcGVsaW5lCisK Ky0tIENPUFkgVE8gU1RET1VUIHdpdGggXHN5bmNwaXBlbGluZSArIFxnZXRyZXN1bHRzCitcc3Rh cnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworY29weSBwc3FsX3BpcGVsaW5l IFRPIFNURE9VVCBcYmluZCBcZworXHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMKK1xlbmRwaXBl bGluZQorCistLSBVc2UgXHBhcnNlIGFuZCBcYmluZF9uYW1lZAorXHN0YXJ0cGlwZWxpbmUKK1NF TEVDVCAkMSBccGFyc2UgJycKK1NFTEVDVCAkMSwgJDIgXHBhcnNlICcnCitTRUxFQ1QgJDIgXHBh cnNlIHBpcGVsaW5lXzEKK1xiaW5kX25hbWVkICcnIDEgMiBcZworXGJpbmRfbmFtZWQgcGlwZWxp bmVfMSAyIFxnCitcZW5kcGlwZWxpbmUKKworLS0gXGdldHJlc3VsdHMgZGlzcGxheXMgYWxsIHJl c3VsdHMgcHJlY2VkaW5nIGEgXGZsdXNocmVxdWVzdAorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAk MSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGZsdXNocmVxdWVzdAorXGdldHJl c3VsdHMKK1xlbmRwaXBlbGluZQorCistLSBcZ2V0cmVzdWx0cyBkaXNwbGF5cyBhbGwgcmVzdWx0 cyBwcmVjZWRpbmcgYSBzeW5jCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGcK K1NFTEVDVCAkMSBcYmluZCAyIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cworXGVuZHBp cGVsaW5lCisKKy0tIFxnZXRyZXN1bHRzIGltbWVkaWF0ZWx5IHJldHVybnMgaWYgdGhlcmUncyBu byByZXN1bHQgdG8gZmV0Y2gKK1xzdGFydHBpcGVsaW5lCitcZ2V0cmVzdWx0cworU0VMRUNUICQx IFxiaW5kIDIgXGcKK1xnZXRyZXN1bHRzCitcZmx1c2hyZXF1ZXN0CitcZW5kcGlwZWxpbmUKK1xn ZXRyZXN1bHRzCisKKy0tIFxnZXRyZXN1bHRzIG9ubHkgZmV0Y2ggcmVzdWx0cyBwcmVjZWRpbmcg YSBmbHVzaHJlcXVlc3QKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGZs dXNocmVxdWVzdAorU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xnZXRyZXN1bHRzCitcZW5kcGlwZWxp bmUKKworLS0gXGdldHJlc3VsdHMgb25seSBmZXRjaCByZXN1bHRzIHByZWNlZGluZyBhIHN5bmMg bWVzc2FnZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcc3luY3BpcGVs aW5lCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGdldHJlc3VsdHMKK1xlbmRwaXBlbGluZQorCist LSB1c2UgcGlwZWxpbmUgd2l0aCBjaHVua2VkIHJlc3VsdHMgd2l0aCBib3RoIFxnZXRyZXN1bHRz IGFuZCBcZW5kcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitcc2V0IEZFVENIX0NPVU5UIDEwCitT RUxFQ1QgJDEgXGJpbmQgMiBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMKK1NFTEVDVCAk MSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKK1x1bnNldCBGRVRDSF9DT1VOVAorCistLSBcZ2V0 cmVzdWx0cyB3aXRoIHNwZWNpZmljIG51bWJlciBvZiByZXF1ZXN0ZWQgcmVzdWx0cworXHN0YXJ0 cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworU0VM RUNUICQxIFxiaW5kIDMgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzIDEKK1NFTEVDVCAk MSBcYmluZCA0IFxnCitcZ2V0cmVzdWx0cyAzCitcZW5kcGlwZWxpbmUKKworLS0gXHN5bmNwaXBl bGluZSBjb3VudCBhcyBvbmUgY29tbWFuZCB0byBmZXRjaCBmb3IgXGdldHJlc3VsdHMKK1xzdGFy dHBpcGVsaW5lCitcc3luY3BpcGVsaW5lCitcc3luY3BpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQg MSBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMgMgorXGdldHJlc3VsdHMgMQorXGVuZHBp cGVsaW5lCisKKy0tIFxnZXRyZXN1bHRzIDAgc2hvdWxkIGdldCBhbGwgcmVzdWx0cworXHN0YXJ0 cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworU0VM RUNUICQxIFxiaW5kIDMgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzIDAKK1xlbmRwaXBl bGluZQorCistLSBwaXBlbGluaW5nIGVycm9ycworCistLSBlbmRwaXBlbGluZSBvdXRzaWRlIG9m IHBpcGVsaW5lIHNob3VsZCBmYWlsCitcZW5kcGlwZWxpbmUKKworLS0gUXVlcnkgdXNpbmcgc2lt cGxlIHByb3RvY29sIHNob3VsZCBub3QgYmUgc2VudCBhbmQgc2hvdWxkIGxlYXZlIHRoZSBwaXBl bGluZSB1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMTsKK1NFTEVDVCAkMSBcYmluZCAn dmFsMScgXGcKK1xlbmRwaXBlbGluZQorCistLSBBZnRlciBhbiBhYm9ydGVkIHBpcGVsaW5lLCBj b21tYW5kcyBhZnRlciBhIHN5bmMgc2hvdWxkIGJlIGRpc3BsYXllZAorXHN0YXJ0cGlwZWxpbmUK K1NFTEVDVCAkMSBcYmluZCBcZworXHN5bmNwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGcK K1xlbmRwaXBlbGluZQorCistLSBJbmNvcnJlY3QgbnVtYmVyIG9mIHBhcmFtZXRlcnMsIHRoZSBw aXBlbGluZSB3aWxsIGJlIGFib3J0ZWQgYW5kIGZvbGxvd2luZyBxdWVyaWVzIHdvbid0IGJlIGV4 ZWN1dGVkCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIFxiaW5kICd2YWwxJyBcZworU0VMRUNUICQx IFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5lCisKKy0tIEFuIGV4cGxpY2l0IHRyYW5zYWN0 aW9uIHdpdGggYW4gZXJyb3IgbmVlZHMgdG8gYmUgcm9sbGJhY2tlZCBhZnRlciB0aGUgcGlwZWxp bmUKK1xzdGFydHBpcGVsaW5lCitCRUdJTiBcYmluZCBcZworSU5TRVJUIElOVE8gcHNxbF9waXBl bGluZSBWQUxVRVMgKCQxKSBcYmluZCAxIFxnCitST0xMQkFDSyBcYmluZCBcZworXGVuZHBpcGVs aW5lCitST0xMQkFDSzsKKworLS0gXHdhdGNoIHNlbmRzIGEgc2ltcGxlIHF1ZXJ5IHdoaWNoIHdv bid0IGJlIGFsbG93ZWQgd2l0aGluIGEgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1Qg XGJpbmQgXGcKK1x3YXRjaCAxCitcZW5kcGlwZWxpbmUKKworLS0gXGdkZXNjIHNob3VsZCBmYWls IGFzIHN5bmNocm9ub3VzIGNvbW1hbmRzIGFyZSBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSwgcGlw ZWxpbmUgc2hvdWxkIHN0aWxsIGJlIHVzYWJsZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBc YmluZCAxIFxnZGVzYworU0VMRUNUICQxIFxiaW5kIDEgXGcKK1xlbmRwaXBlbGluZQorCistLSBc Z3NldCBpcyBub3QgYWxsb3dlZCwgcGlwZWxpbmUgc2hvdWxkIHN0aWxsIGJlIHVzYWJsZQorXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBhcyBpLCAkMiBhcyBqIFxwYXJzZSAnJworU0VMRUNUICQx IGFzIGssICQyIGFzIGwgXHBhcnNlICdzZWNvbmQnCitcYmluZF9uYW1lZCAnJyAxIDIgXGdzZXQK K1xiaW5kX25hbWVkIHNlY29uZCAxIDIgXGdzZXQgcHJlZjAyXyBcZWNobyA6cHJlZjAyX2kgOnBy ZWYwMl9qCitcYmluZF9uYW1lZCAnJyAxIDIgXGcKK1xlbmRwaXBlbGluZQorCistLSBcZ3ggaXMg bm90IGFsbG93ZWQsIHBpcGVsaW5lIHNob3VsZCBzdGlsbCBiZSB1c2FibGUKK1xzdGFydHBpcGVs aW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZ3gKK1xyZXNldAorU0VMRUNUICQxIFxiaW5kIDEgXGcK K1xlbmRwaXBlbGluZQorCistLSBcZ3ggd2FybmluZyBzaG91bGQgYmUgZW1pdHRlZCBpbiBhbiBh Ym9ydGVkIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIFxnCitcZmx1 c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworU0VMRUNUICQxIFxiaW5kIDEgXGd4CitcZW5kcGlwZWxp bmUKKworLS0gXGdleGVjIGlzIG5vdCBhbGxvd2VkLCBwaXBlbGluZSBzaG91bGQgc3RpbGwgYmUg dXNhYmxlCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICdJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5l KGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApJyBccGFyc2UgJ2luc2VydF9zdG10Jwor XGJpbmRfbmFtZWQgaW5zZXJ0X3N0bXQgXGdleGVjCitcYmluZF9uYW1lZCBpbnNlcnRfc3RtdCBc ZworU0VMRUNUIENPVU5UKCopIEZST00gcHNxbF9waXBlbGluZSBcYmluZCBcZworXGVuZHBpcGVs aW5lCisKKy0tIEFmdGVyIGFuIGVycm9yLCBwaXBlbGluZSBpcyBhYm9ydGVkIGFuZCByZXF1aXJl cyBhIHN5bmMgdG8gYmUgcmV1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQg XGcKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXHBhcnNlIGEKK1xiaW5kX25hbWVk IGEgMSBcZworXGNsb3NlIGEKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCistLSBQaXBlbGlu ZSBpcyBhYm9ydGVkCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNUICQxIFxwYXJzZSBhCitc YmluZF9uYW1lZCBhIDEgXGcKK1xjbG9zZSBhCistLSBTeW5jIGFsbG93cyBwaXBlbGluZSB0byBy ZWNvdmVyCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cworU0VMRUNUICQxIFxiaW5kIDEgXGcK K1NFTEVDVCAkMSBccGFyc2UgYQorXGJpbmRfbmFtZWQgYSAxIFxnCitcY2xvc2UgYQorXGZsdXNo cmVxdWVzdAorXGdldHJlc3VsdHMKK1xlbmRwaXBlbGluZQorCistLSBJbiBhbiBhYm9ydGVkIHBp cGVsaW5lLCBcZ2V0cmVzdWx0cyAxIGFib3J0ZWQgY29tbWFuZHMgb25lIGF0IGEgdGltZQorXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDEgXGcKK1NF TEVDVCAkMSBccGFyc2UgYQorXGJpbmRfbmFtZWQgYSAxIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0 cmVzdWx0cyAxCitcZ2V0cmVzdWx0cyAxCitcZ2V0cmVzdWx0cyAxCitcZ2V0cmVzdWx0cyAxCitc Z2V0cmVzdWx0cyAxCitcZW5kcGlwZWxpbmUKKworLS0gVGVzdCBjaHVua2VkIHJlc3VsdHMgd2l0 aCBhbiBhYm9ydGVkIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorXHNldCBGRVRDSF9DT1VOVCAx MAorU0VMRUNUICQxIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworU0VMRUNU ICQxIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKK1x1bnNldCBGRVRDSF9DT1VOVAorCistLSBcZ2V0 cmVzdWx0cyByZXR1cm5zIGFuIGVycm9yIHdoZW4gYW4gaW5jb3JyZWN0IG51bWJlciBpcyBwcm92 aWRlZAorXHN0YXJ0cGlwZWxpbmUKK1xnZXRyZXN1bHRzIC0xCitcZW5kcGlwZWxpbmUKKworLS0g XGdldHJlc3VsdHMgd2hlbiB0aGVyZSdzIG5vIHJlc3VsdCBzaG91bGRuJ3QgaW1wYWN0IHRoZSBm b2xsb3dpbmcgcXVlcnkKK1xnZXRyZXN1bHRzIDEKK3NlbGVjdCAxOworCistLSBwaXBlbGluaW5n IGFuZCB0cmFuc2FjdGlvbiBibG9jayBiZWhhdmlvdXIKKworLS0gc2V0IGxvY2FsIHdpbGwgaXNz dWUgYSB3YXJuaW5nIHdoZW4gbW9kaWZ5aW5nIGEgR1VDIG91dHNpZGUgb2YgYSB0cmFuc2FjdGlv biBibG9jaworLS0gVGhlIGNoYW5nZSB3aWxsIHN0aWxsIGJlIHZhbGlkIGFzIGEgcGlwZWxpbmUg cnVucyB3aXRoaW4gYW4gaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2sKKy0tIFNlbmRpbmcgYSBz eW5jIHdpbGwgY29tbWl0IHRoZSBpbXBsaWNpdCB0cmFuc2FjdGlvbiBibG9jay4gVGhlIGZpcnN0 IGNvbW1hbmQgYWZ0ZXIgYSBzeW5jCistLSB3b24ndCBiZSBzZWVuIGFzIGJlbG9uZ2luZyB0byBh IHBpcGVsaW5lLgorXHN0YXJ0cGlwZWxpbmUKK1NFVCBMT0NBTCBzdGF0ZW1lbnRfdGltZW91dD0n MWgnIFxiaW5kIFxnCitTSE9XIHN0YXRlbWVudF90aW1lb3V0IFxiaW5kIFxnCitcc3luY3BpcGVs aW5lCitTSE9XIHN0YXRlbWVudF90aW1lb3V0IFxiaW5kIFxnCitTRVQgTE9DQUwgc3RhdGVtZW50 X3RpbWVvdXQ9JzJoJyBcYmluZCBcZworU0hPVyBzdGF0ZW1lbnRfdGltZW91dCBcYmluZCBcZwor XGVuZHBpcGVsaW5lCisKKy0tIFJlaW5kZXggY29uY3VycmVudGx5IGlzIGZvcmJpZGRlbiBpbiB0 aGUgbWlkZGxlIG9mIGEgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQg MSBcZworUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgcHNxbF9waXBlbGluZSBcYmluZCBcZwor U0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorCistLSBSZWluZGV4IGNvbmN1cnJl bnRseSB3aWxsIHdvcmsgaWYgaXQncyB0aGUgZmlyc3QgY29tbWFuZCBvZiBhIHBpcGVsaW5lCitc c3RhcnRwaXBlbGluZQorUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgcHNxbF9waXBlbGluZSBc YmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorCistLSBzdWJ0cmFu c2FjdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUKK1xzdGFydHBpcGVsaW5l CitTQVZFUE9JTlQgYSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDEgXGcKK1JPTExCQUNLIFRP IFNBVkVQT0lOVCBhIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGVuZHBpcGVsaW5l CisKKy0tIExvY2sgY29tbWFuZCB3aWxsIGZhaWwgYXMgZmlyc3QgcGlwZWxpbmUgY29tbWFuZCBp cyBub3Qgc2VlbiBhcyBhIHRyYW5zYWN0aW9uIGJsb2NrCitcc3RhcnRwaXBlbGluZQorTE9DSyBw c3FsX3BpcGVsaW5lIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGVuZHBpcGVsaW5l CisKKy0tIExvY2sgY29tbWFuZCB3aWxsIHN1Y2NlZWQgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hbmQg YXMgcGlwZWxpbmUgd2lsbCBiZSBzZWVuIGFzIGFuIGltcGxpY2l0IHRyYW5zYWN0aW9uIGJsb2Nr Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGcKK0xPQ0sgcHNxbF9waXBlbGlu ZSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorCistLSBWYWN1 dW0gY29tbWFuZCB3aWxsIHdvcmsgYXMgdGhlIGZpcnN0IGNvbW1hbmQKK1xzdGFydHBpcGVsaW5l CitWQUNVVU0gcHNxbF9waXBlbGluZSBcYmluZCBcZworXGVuZHBpcGVsaW5lCisKKy0tIFZhY3V1 bSBjb21tYW5kIHdpbGwgZmFpbCB3aXRoaW4gcGlwZWxpbmUgaW1wbGljaXQgdHJhbnNhY3Rpb24K K1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMSBcYmluZCBcZworVkFDVVVNIHBzcWxfcGlwZWxpbmUg XGJpbmQgXGcKK1xlbmRwaXBlbGluZQorCistLSBWYWN1dW0gY29tbWFuZCB3aWxsIHdvcmsgYWZ0 ZXIgYSBzeW5jCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIDEgXGJpbmQgXGcKK1xzeW5jcGlwZWxp bmUKK1ZBQ1VVTSBwc3FsX3BpcGVsaW5lIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKworLS0gRXJy b3IgbWVzc2FnZXMgYXJlIGN1cnJlbnRseSBhY2N1bXVsYXRpbmcgYW5kIHdpbGwgYmUgcmVwZWF0 ZWQKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMSBcYmluZCBcZworU0VMRUNUIDE7CitTRUxFQ1Qg MTsKK1xlbmRwaXBlbGluZQotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000a3b38d062e8f8368--